ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGFhNWY3NDIuLmRmMTc0ZWQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNjYsNiArNjYsNyBAQAogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogbGlidG9vbAogbG9jYWwvc25tcGNoZWNrCitsb2NhbC9zbm1wY29uZgogTWFrZWZpbGUKIG1hbi8qLlsxMzU4XQogbWFuL2RlZmF1bHRfc3RvcmUuMy5oCmRpZmYgLS1naXQgYS9DSEFOR0VTIGIvQ0hBTkdFUwppbmRleCBkMDI1NzhmLi4xMjA2YTRhIDEwMDY0NAotLS0gYS9DSEFOR0VTCisrKyBiL0NIQU5HRVMKQEAgLTMsMTE4ICszLDYzMSBAQAogYSBzdW1tYXJ5IG9mIHRoZSBtYWpvciBjaGFuZ2VzLCBhbmQgdGhlIENoYW5nZUxvZyBmaWxlIGZvciBhIGNvbXByZWhlbnNpdmUKIGxpc3Rpbmcgb2YgYWxsIGNoYW5nZXMgbWFkZSB0byB0aGUgY29kZS4KIAotCi0qNS42LjIqCi0KKyo1LjcuMyoKICAgICBzbm1wbGliOgotICAgICAgLSBbUEFUQ0ggMjgzNTU3N106IFJlcGxhY2UgU05NUF9aRVJPIG9mIGFycmF5cyB3aXRoIGEgbWVtc2V0LgotICAgICAgLSBbUEFUQ0ggMzUxMDQ1NF06IEFsbG93IHRoZSB1c2Ugb2YgMC4wLjAuMC8wIGFzIGFsaWFzIGZvciBkZWZhdWx0Ci0gICAgICAtIFtQQVRDSCAzNTI2NTk5XTogRG9uJ3QgaGFuZyBvbiByZXRyaWVkIGZhaWxpbmcgU05NUHYzIHJlc3BvbnNlcwotICAgICAgLSBbQlVHIDMxMzQzMjNdOiBGaXggY3Jhc2ggd2hlbiBjb21wYXJpbmcgaW52YWxpZCBPSURzCi0gICAgICAtIEF2b2lkIHVubmVjZXNzYXJ5IGNhc3RzIHdoZW4gdXNpbmcgbmV0c25tcF9zZXRfcm93X2NvbHVtbigpCi0gICAgICAtIEVsaW1pbmF0ZSBhc3NvcnRlZCBkZWFkIHZhcmlhYmxlcworICAgICAgLSBGaXhlZCBjcmFzaCB3aGVuIE1ENSBoYXNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgT3BlblNTTC4KKyAgICAgIC0gRml4ZWQgcGFyc2luZyBvZiBzZXF1ZW5jZXMuIERvbid0IG92ZXJ3cml0ZSAnZGF0YScgdmFyaWFibGUsIGl0J3MKKwl1c2VkIHdoZW4gcGFyc2luZyBidWxrIHJlc3BvbnNlcy4KKyAgICAgIC0gW0JVRyAxMjY3IF06IHNubXBsaWI6IHJlZ2lzdGVyX21pYl9jb250ZXh0KCkgZml4IGZvciByZWFkLW9ubHkKKwl2YXJpYWJsZXMgICBUaGlzIGlzIGEgc2xpZ2h0bHkgbW9kaWZpZWQgdmVyc2lvbiBvZiBhIHBhdGNoIGZyb20KKwlIYXJzaGEgU2hpdmFubmEuCisKKyAgICBzbm1wOgorICAgICAgLSBVc20tZGgtb2JqZWN0cy1taWI6IEF2b2lkIHRyaWdnZXJpbmcgYW4gYXNzZXJ0IHN0YXRlbWVudCBpbgorCW5ldHNubXBfcmVhZHlfbW9ub3RvbmljKCkgVGhlIGNhY2hlIHRpbWVvdXQgZm9yCisJc25tcC11c20tZGgtb2JqZWN0cy1taWIgaXMgLTEuIEFueSBjYWNoZSB0aW1lb3V0IHZhbHVlIDwgMCBkaXNhYmxlcworCWNhY2hpbmcuIEhvd2V2ZXIsIHN0cmljdGx5IG5lZ2F0aXZlIHZhbHVlcyB0cmlnZ2VyIHRoZSBhc3NlcnQKKwlzdGF0ZW1lbnQgaW4gbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKS4gQXZvaWQgdHJpZ2dlcmluZyB0aGF0CisJYXNzZXJ0IHN0YXRlbWVudC4KKyAgICAgIC0gRml4ZWQgbW9uaXRvcmluZyBiYXNlZCBvbiBub24tZGVsdGEgdHJpZ2dlci4gICBzbm1wZCBjcmFzaGVkIHdpdAorCWZvbGxvd2luZyBzbm1wZC5jb25mOiBtb25pdG9yIC1zIC1EIC1yIDEwIC1lIExPR01BVENIIC1vCisJbG9nTWF0Y2hDdXJyZW50Q291bnQgIkxvZyBNYXRjaCIgIT0gbG9nTWF0Y2hDdXJyZW50Q291bnQgbG9nbWF0Y2gKKwlMb2dpbkZhaWx1cmUxIC92YXIvbG9nL3NlY3VyZSAxMCBzdTogLipmYWlsLiogVGhlIHJlYXNvbiB3YXMKKwl1bml0aWFsaXplZCB2YXJpYWJsZSBzeXNVVF92YXIgaW4gbXRlVHJpZ2dlcl9ydW4oKSwgaXQgd2FzIGZpbGxlZAorCW9ubHkgaWYgdGhlIHRyaWdnZXIgd2FzIGRlbHRhLXZhbHVlZCwgd2hpbGUgaXRzIHZhbHVlIHdhcyB1c2VkIGZvcgorCWFsbCB0cmlnZ2Vycy4gV2l0aCB0aGlzIHBhdGNoLCBzeXNVVF92YXIgaXMgZmlsbGVkIGZvciBhbGwgY29kZQorCWJyYW5jaGVzIHdoZXJlIGl0IGlzIG5lZWRlZC4KIAogICAgIHNubXBkOgotICAgICAgLSBbUEFUQ0ggMjk0MTgxMV06IEhhbmRsZSBzdWNjZXNzZnVsIHJlcXVlc3RzIHdpdGggcmVxSUQgMAotICAgICAgLSBbUEFUQ0ggMzA5NjcyNV06IHN5c09SVGFibGUgcmVnaXN0YXRpb24gZm9yIG5vdGlmaWNhdGlvbiBsb2cgbWliCi0gICAgICAtIFtQQVRDSCAzNDc5NzQwXTogRml4IGhyU1dSdW5QZXJmIHN0YXRpc3RpY3MKLSAgICAgIC0gW1BBVENIIDM0ODc4NjddOiBEb24ndCBza2lwIG1pc3NpbmcgaWZYVGFibGUgZW50cmllcyAoaWZDb25uZWN0b3JQcmVzZW50IEZBTFNFKQotICAgICAgLSBbUEFUQ0ggMzQ4NzkxOV06IEZpeCBjb21waWxhdGlvbiB3aGVuIGNhY2hpbmcgaXMgZGlzYWJsZWQKLSAgICAgIC0gW1BBVENIIDM0OTU2OTddOiBTdG9yZSBwZXJzaXN0ZW50IHNubXBUYXJnZXQgdGFibGUgY2hhbmdlcwotICAgICAgLSBbQlVHIDM1MjY1NDldOiBDVkUtMjAxMi0yMTQxIEFycmF5IGluZGV4IGVycm9yIGxlYWRpbmcgdG8gY3Jhc2gKLSAgICAgIC0gW0JVRyAzNTMyMDkwXTogRml4IGhpZ2ggaWZJbmRleCB2YWx1ZXMgY3Jhc2hpbmcgaHJEZXZpY2VEZXNjcgotICAgICAgLSBBZGRlZCBPQ0ZTMiAoT3JhY2xlIENsdXN0ZXIgRlMpIHRvIGhyU3RvcmFnZVRhYmxlIGFuZCBockZTVGFibGUKLSAgICAgIC0gRWxpbWluYXRlIGFzc29ydGVkIGRlYWQgdmFyaWFibGVzCi0gICAgICAtIFVEUC1NSUI6IFJlcG9ydCBwcm9wZXIgdWRwTG9jYWxBZGRyZXNzIChpbnN0ZWFkIG9mIDAuMC4wLjApCisgICAgICAtIEFkZCBhIG1pc3NpbmcgZnVuY3Rpb24gZGVjbGFyYXRpb24KKyAgICAgIC0gQWRkZWQgYnRyZnMgc3VwcG9ydCB0byBockZTVGFibGUKKyAgICAgIC0gQ29ycmVjdCB0aGUgc2l6ZSBvZiBvZiB0aGUgRVhBTVBMRUlQQUREUkVTUyB2YWx1ZSBvbiBMNjQgaG9zdHMKKyAgICAgIC0gRml4ZWQgY3Jhc2ggaW4gVUNELVNOTVAtTUlCOjpleHRUYWJsZSBzbm1wZCBjcmFzaGVkIHdoZW4gdGhlCisJY29tbWFuZCB0byBleGVjdXRlIGhhZCBubyBhcmd1bWVudHMsIGkuZS4gZXh0ZW5kLT5hcmdzIHdhcyBOVUxMLgorICAgICAgLSBGaXhlZCB2YWx1ZSBvZiBVQ0QtU05NUC1NSUI6OmV4dENvbW1hbmQgdG8gY29udGFpbiBmdWxsIGNvbW1hbmQKKwlsaW5lLiBNSUIgZGVzY3JpcHRpb24gb2YgVUNELVNOTVAtTUlCOjpleHRDb21tYW5kIHN1Z2dlc3RzIGl0CisJc2hvdWxkIGNvbnRhaWwgZnVsbCBjb21tYW5kIGxpbmUuIEFsc28gaW4gTmV0LVNOTVAgNS4zLjIuMiwgd2hvbGUKKwljb21tYW5kIGxpbmUgd2FzIHNob3duLgorICAgICAgLSBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBOVUwgY2hhcmFjdGVycyBpbiB0aGUgaW5kaWNlcyBmb3IKKwlzbm1wVGFyZ2V0QWRkclRhYmxlCisgICAgICAtIFBBVENIIDI0NzI6IGZyb20gU3VuaWw6IGRvbid0IHVzZSBIQktUIGFzIGhlYXJ0YmVhdCBpbnRlcnZhbCBpbgorCVNDVFAtTUlCOjpzY3RwQXNzb2NUYWJsZS4KKyAgICAgIC0gUmVtb3ZlIHNvbWUgdW51c2VkIGluY2x1ZGVzCisgICAgICAtIFNob3cgTGludXgga2VybmVsIHRocmVhZHMgaW4gaHJTV1J1blRhYmxlLgorICAgICAgLSBVc2UgMCBmb3IgdGhlIGlnbm9yZWQgbnVtdmFycyBhcmd1bWVudCB0byBuZXRzbm1wX3JlZ2lzdGVyX21pYiBUaGUKKwludW12YXJzIGFyZ3VtZW50IG9mIG5ldHNubXBfcmVnaXN0ZXJfbWliIGlzIGlnbm9yZWQgaWYgdGhlIHZhcgorCWFyZ3VtZW50IGlzIE5VTEwuIEluIG9yZGVyIHRvIHVuaWZ5IHRoaXMgdXNlIG9mIGl0IHdpdGggYWxsIG90aGVyCisJb25lcywgY2hhbmdlIGl0IGZyb20gMSB0byAwCisgICAgICAtIFNFQ1VSSVRZOiBhIGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFjayB2ZWN0b3Igd2FzIGRpc2NvdmVyZWQgb24KKyAgICAgICAgdGhlIGxpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBJQ01QLU1JQi4gIFRoaXMgcmVsZWFzZSBmaXhlcworICAgICAgICB0aGlzIGJ1ZyBhbmQgYWxsIHVzZXJzIGFyZSBlbmNvdXJhZ2VkIHRvIHVwZGF0ZSB0aGVpciBTTk1QCisgICAgICAgIGFnZW50IGlmIHRoZXkgbWFrZSB1c2Ugb2YgdGhlIElDTVAtTUlCIHRhYmxlIG9iamVjdHMuCisgICAgICAtIFBBVENIOiAxMjc1OiBmcm9tIFZpbGlhbSBQw7rEjWlrOiBmaXhlZCBQZXJsIHRyYXAgaGFuZGxlciB3aGVuCisJcHJvY2Vzc2luZyB0cmFwIHdpdGggZW1wdHkgY29tbXVuaXR5IHN0cmluZy4KIAotICAgIHNubXBkeDoKLSAgICAgIC0gW1BBVENIIDM0NDU0MzddOiBMb2cgQWdlbnRYIGRpc2Nvbm5lY3Rpb25zIChpbiBsaW5lIHdpdGggY29ubmVjdGlvbnMpCisgICAgc25tcGQsIHNubXB0cmFwZCBhbmQgYXBwczoKKyAgICAgIC0gTWFrZSBFTlZfU0VQQVJBVE9SX0NIQVIgY29uZmlndXJhYmxlCiAKICAgICBzbm1wdHJhcGQ6Ci0gICAgICAtIFtCVUcgMzE1MTI1NF06IEZpeCBjcmFzaCB3aXRoIGludmFsaWQgdHJhcGhhbmRsZSBkaXJlY3RpdmUKLSAgICAgIC0gQXZvaWQgY3Jhc2ggZHVyaW5nIHNodXRkb3duIGR1ZSB0byBpbnZva2luZyBwZXJsX2Rlc3RydWN0KE5VTEwpCi0gICAgICAtIERvbid0IGludm9rZSBzaHV0ZG93bl9wZXJsKCkgZnJvbSBTSUdURVJNIGhhbmRsZXIKLSAgICAgIC0gSGFuZGxlIGNoYW5nZXMgdG8gbGlibXlzcWxjbGllbnQgQVBJIChhZmZlY3RzIEZlZG9yYSAxNS8xNikKLSAgICAgIC0gUmVtb3ZlIHN1cGVyZmx1b3VzIGNhc3RzCiAKICAgICBhcHBzOgotICAgICAgLSBbUEFUQ0ggMjgzNTU3N106IFJlcGxhY2UgU05NUF9aRVJPIG9mIGFycmF5cyB3aXRoIGEgbWVtc2V0LgorICAgICAgLSBTdG9wIGFnZW50eHRyYXAgZnJvbSBhY2Nlc3NpbmcgdGhlIHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbiBUaGlzIGlzCisJbmVlZGVkIHRvIHByZXZlbnQgbW9hbmluZyBhYm91dCBub3QgYmVlaW5nIGFsbG93ZWQgdG8gd3JpdGUgdGhvc2UKKwlmaWxlcyBkdWUgdG8gYmFkIHBlcm1pc3Npb25zLgorICAgICAgLSBTdG9wIHVzaW5nIHNubXBfcGVycm9yIHdoZW4gbG9nZ2luZyBhZnRlciBmdW5jdGlvbnMgdGhhdCBkb24ndCBzZXQKKwlzbm1wX2Vycm5vLgogCi0gICAgYnVpbGQvaW5zdGFsbDoKLSAgICAgIC0gW0JVRyAzMTUyODQxXTogSW5zdGFsbCB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMKLSAgICAgIC0gT3BlbkJTRDogRml4IG9yZGVyIG9mIGhlYWRlcnMgd2hlbiBjaGVja2luZyA8bmV0aW5ldC9pbl9wY2IuaD4KLSAgICAgIC0gQWRkIHRhcmdldCB0byBidWlsZCBhZ2VudHh0cmFwIGZyb20gdGhlIHRvcGxldmVsCi0gICAgICAtIEJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkIG1zZ19jb250cm9sIGluIHN0cnVjdCBtc2doZHIKLSAgICAgIC0gRml4IHN0YXRpYyBidWlsZHMgdXNpbmcgbmV0LXNubXAtY29uZmlnIGFuZCAtKmxpYnMgZmxhZ3MKKyAgICBidWlsZGluZzoKKyAgICAgIC0gTWFrZSB0aGUgLXdpdGhvdXQgb3B0aW9ucyB0byBycG1idWlsZCB3b3JrCisgICAgICAtIEF2b2lkIGR1cGxpY2F0ZSBhbmQgdHJhaWxpbmcgc3BhY2VzIGluIHRoZSBkZXBlbmRlbmN5IGZpbGVzLgogCi0gICAgbWFuOgotICAgICAgLSBbQlVHIDMxOTA3MjVdOiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kCi0KLSAgICBtaWIyYzoKLSAgICAgIC0gTWFrZSB0aGUgbWliMmMgZm9yZWFjaCByYW5nZXMgd29yayBhcyBhZHZlcnRpc2VkIGluIHRoZSBjb21tZW50cy4KKyAgICBkb2N1bWVudGF0aW9uOgorICAgICAgLSBGcm9tICJFcmljIFMuIFJheW1vbmQiOiBDb3JyZWN0IG1hbiBwYWdlIG1hcmt1cCBwcm9ibGVtIEFtYmlndW91cworCW9yIGludmFsaWQgYmFja3NsYXNoLiAgVGhpcyBkb2Vzbid0IGNhdXNlIGdyb2ZmIGEgcHJvYmxlbS4gYnV0IGl0CisJY29uZnVzZXMgZG9jbGlmdGVyIGFuZCBtYXkgY29uZnVzZSBvbGRlciB0cm9mZiBpbXBsZW1lbnRhdGlvbnMuCiAKICAgICBwZXJsOgotICAgICAgLSBGaXggc3BlbGxpbmcgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIFNOTVAgbW9kdWxlCi0gICAgICAtIEZpeGVkIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGhhbmRsZXIgcmVnaXN0cmF0aW9uIGZhaWxzLgotICAgICAgLSBEb24ndCBvcGVuIHN0ZGVyciB1bm5lY2Vzc2FyaWx5IChhZmZlY3RzIGVtYmVkZGVkIGFnZW50KQorICAgICAgLSBCVUc6IDI0MDI6IEFkZCBzdXBwb3J0IGZvciBTTk1QdjMgdHJhcHMKIAogICAgIHB5dGhvbjoKLSAgICAgIC0gW1BBVENIIDMxODUwODVdOiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKyAgICAgIC0gRml4ZWQgSVBBRERSRVNTIHNpemUgb24gNjRiaXQgc3lzdGVtcy4KKyAgICAgIC0gRml4ZWQgcmV0dXJuaW5nIG9mIGVtcHR5IHN0cmluZ3MuIFZhcmJpbmQgdHlwZSAoU05NUF9OT1NVQ0hPQkpFQ1QKKwlldGMuKSBzaG91bGQgYmUgdXNlZCB0byBkZXRlY3QgZXJyb3JzIGluc3RlYWQgb2YgbGVuZ3RoIG9mIHRoZQorCXZhcmlhYmxlIC0gaXQgY2FuIGJlIGVtcHR5IHN0cmluZy4KKyAgICAgIC0gW1BBVENIIDEyMzldOiBGaXggbWVtb3J5IGxlYWsKIAogICAgIHRlc3Rpbmc6Ci0gICAgICAtIFtCVUcgMzQ3NDU5MF06IERvbid0IG1hdGNoIHVuZGVyc2NvcmVzIHdpdGhpbiB0aGUgc291cmNlIHJvb3QgZmlsZW5hbWUKLSAgICAgIC0gQWRkIGEgdGVzdCBmb3Igc2Vfc3RvcmVfbGlzdCgpCi0gICAgICAtIEZpeCBQZXJsIHJlZ3Jlc3Npb24gdGVzdCBmYWlsdXJlcwotICAgICAgLSBEb24ndCBmYWlsIHNraXBwZWQgUGVybCB0ZXN0cy4KLSAgICAgIC0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKKyAgICAgIC0gTWFrZSBzdXJlIFRlc3Q6Okhhcm5lc3MgaXMgb2YgYXQgbGVhc3QgdmVyc2lvbiAxLjIxIFRlc3Q6Okhhcm5lc3MKKwkxLjIxIGlzIHRoZSBmaXJzdCB2ZXJzaW9uIHRoYXQgaW1wbGVtZW50cyBUQVAgdjEyIHdoaWNoIGFsbG93cworCXB1dHRpbmcgdGhlIGhlYWRlciAoMS4uTikgYWZ0ZXIgdGhlIHRlc3RzIGFuZCBzaW5jZSBvdXIgdGVzdHMKKwl1dGlsaXplIHRoYXQgd2Ugc2hvdWxkIG1ha2Ugc3VyZSB0aGF0IHRoZSB0ZXN0IHJ1bm5lciBzdXBwb3J0cyBpdC4KIAogICAgIEFJWDoKLSAgICAgIC0gRWxpbWluYXRlIGNvbmZpZ3VyZSB3YXJuaW5nIHJlZ2FyZGluZyBsaWJwZXJmc3RhdC5oIChBSVggNi4xZmYpCisgICAgICAtIE1ha2UgdGNwLW1pYiBidWlsZAorICAgICAgLSBNYWtlIHVkcC1taWIgYnVpbGQKKworICAgIExpbnV4OgorICAgICAgLSBCVUc6IDIyMzg6IEFkZCBsaWJubDMgc3VwcG9ydAorICAgICAgLSBSRVNPVVJDRVMtTUlCLCBoclNXUnVuIHRhYmxlOiBQYXJzZSAvcHJvYy88cGlkPi9zdGF0IGNvcnJlY3RseSBvbgorCUxpbnV4IFRoaXMgaXNzdWUgd2FzIHJlcG9ydGVkIGJ5IFZpbmNlbnQgQmVybmF0CisJPHZpbmNlbnQuYmVybmF0QGRhaWx5bW90aW9uLmNvbT4uIFNlZSBhbHNvCisJaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1Ny8uCisKKyAgICBXaW4zMjoKKyAgICAgIC0gUGVybDogQlVHOiAyNDg4OiBBdm9pZCAiRnJlZSB0byB3cm9uZyBwb29sIiBlcnJvcgorICAgICAgLSBQZXJsOiBCVUc6IDI0ODg6IEF2b2lkICJGcmVlIHRvIHdyb25nIHBvb2wiIGVycm9yIiBUaGlzIHJldmVydHMKKwljb21taXQgYjI3MjU5NjRiZGU5MjFiNjI4NWUzYTU5YTUxMjU1MmNhZTBhMGNhNS4KKworICAgIFdpbmRvd3M6CisgICAgICAtIEFkZCBtdWx0aWhvbWluZyBzdXBwb3J0IE9uIFdpbmRvd3MgVmlzdGEgLyBXaW5kb3dzIFNlcnZlciAyMDA4IGFuZAorCWxhdGVyIGl0IGlzIHBvc3NpYmxlIHRvIGFkZCBtdWx0aWhvbWluZyBzdXBwb3J0IGJ5IHVzaW5nIHRoZQorCUlQX1BLVElORk8gc29ja2V0IG9wdGlvbi4gQ29uZmxpY3RzOgorCXNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jCisgICAgICAtIE1ha2Ugd2luRXh0RExMIHdvcmsgb24gNjQtYml0IFdpbmRvd3Mgc3lzdGVtcworICAgICAgLSBQb3J0IGJhdGNoIGJ1aWxkIGluZnJhc3RydWN0dXJlIHRvIFZpc3VhbCBTdHVkaW8gMjAxMCBhbmQgbGF0ZXIKKwlGcm9tIFZpc3VhbCBTdHVkaW8gMjAxMCBvbiBpdCBpcyBubyBsb25nZXIgcG9zc2libGUgdG8gc3BlY2lmeQorCWluY2x1ZGUgb3IgbGlicmFyeSBkaXJlY3RvcmllcyBnbG9iYWxseSAtIHRoZXNlIGhhdmUgdG8gYmUKKwlzcGVjaWZpZWQgcGVyIHByb2plY3QuIEhlbmNlIHR3byBhZGRpdGlvbmFsIG1lbnUgZW50cmllcyBpbgorCWJ1aWxkLmJhdCB0aGF0IGFsbG93IHRvIHNwZWNpZnkgdGhlc2UgZGlyZWN0b3JpZXMuCisgICAgICAtIFBvcnRlZCB1Y2Qtc25tcC9kbG1vZCB0byBNaW5HVyAvIE1TVkMKKworICAgIE1pbkdXOgorICAgICAgLSBQb3J0IFQwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYi5jIHRvIE1pbkdXCisKKyAgICB1bnNwZWNpZmllZDoKKyAgICAgIC0gQWRkZWQgc2ltZnMgKE9wZW5WWiBmaWxlc3lzdGVtKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlLgorICAgICAgLSBVcHBvcnQgbmV3IE1JQiBzdHJ1Y3R1cmVzIGFuZCBNRkQgcmV3cml0ZXMgdW5kZXIgRGFyd2luCisgICAgICAtIFtCVUcgMjQ3MF06IEFjY2VwdCA2NTUzNSBhcyBhIHZhbGlkIElQdjYgcG9ydCBudW1iZXIKKyAgICAgIC0gW0JVRyAyNDc2XTogc25tcGQgZmFpbHMgdG8gc3RhcnQgb24gQUlYIE9uIGFuIEFJWCBzeXN0ZW0gdGhlcmUgaXMKKwlubyA8a3ZtLmg+IGhlYWRlciBmaWxlIG5vciBkbyB0aGUgL2Rldi9kbWVtIG9yIC9kZXYvZHJ1bSBkZXZpY2VzCisJZXhpc3QgYW5kIGhlbmNlIERNRU1fTE9DIGlzIG5vdCBkZWZpbmVkLiBBdm9pZCB0aGF0IGluaXRfa21lbSgpCisJZmFpbHMgaW4gdGhhdCBjYXNlLgorICAgICAgLSBbQlVHIDI1NjhdOiBBdm9pZCB0aGF0IGZpbGUgZGVzY3JpcHRvcnMgYWJvdmUgRkRfU0VUU0laRSB0cmlnZ2VyCisJYWJvcnQoKQorCisqNS43LjIqCisKKyAgICBzbm1wbGliOgorICAgICAgLSBBZGQgRG94eWdlbi1zdHlsZSBmdW5jdGlvbiBoZWFkZXIgZm9yCisJbmV0c25tcF9yZWdpc3Rlcl9kZWZhdWx0X3RhcmdldCgpIGFuZAorCW5ldHNubXBfY2xlYXJfZGVmYXVsdF90YXJnZXQoKS4KKyAgICAgIC0gQWRkIG5ldHNubXBfc2V0ZW52KCkuCisgICAgICAtIEF2b2lkIHRoYXQgc3lzdGVtIGNsb2NrIGNoYW5nZXMgKGUuZy4gYnkgbnRwZCkgYWZmZWN0IGNvZGUgdGhhdAorCW5lZWRzIHJlbGF0aXZlIHRpbWUgTWFrZSBzdXJlIHRoYXQgdGhlIHJhbmdlIG9mIHRoZSBTTk1QdjMgdmFyaWFibGUKKwlzbm1wRW5naW5lVGltZSBpcyAwLi4yMTQ3NDgzNjQ3IG9uIGFsbCBzdXBwb3J0ZWQgc3lzdGVtcyBpbnN0ZWFkIG9mCisJMC4uNDI5NDk2NzIgb24gc29tZSBzeXN0ZW1zIChpLmUuIHdyYXBhcm91bmQgYWZ0ZXIgNDk3IGRheXMpIEFkZAorCW5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygpLCBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCksCisJbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKSwgbmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpCisgICAgICAtIEF2b2lkIHRoYXQgc3lzdGVtIGNsb2NrIGNoYW5nZXMgKGUuZy4gYnkgbnRwZCkgYWZmZWN0IGNvZGUgdGhhdAorCW5lZWRzIHJlbGF0aXZlIHRpbWUgTWFrZSBzdXJlIHRoYXQgdGhlIHJhbmdlIG9mIHRoZSBTTk1QdjMgdmFyaWFibGUKKwlzbm1wRW5naW5lVGltZSBpcyAwLi4yMTQ3NDgzNjQ3IG9uIGFsbCBzdXBwb3J0ZWQgc3lzdGVtcyBpbnN0ZWFkIG9mCisJMC4uNDI5NDk2NzIgb24gc29tZSBzeXN0ZW1zIChpLmUuIHdyYXBhcm91bmQgYWZ0ZXIgNDk3IGRheXMpIEFkZAorCW5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygpLCBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCksCisJbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKSwgbmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpIERlcHJlY2F0ZQorCWF0aW1lX2RpZmYoKSwgYXRpbWVfbmV3TWFya2VyKCksIGF0aW1lX3JlYWR5KCksIGF0aW1lX3NldE1hcmtlcigpLAorCW1hcmtlcl90dGlja3MoKSwgbmV0c25tcF9tYXJrZXJfdXB0aW1lKCksIG5ldHNubXBfdGltZXZhbF91cHRpbWUoKSwKKwl0aW1ldmFsX3R0aWNrcygpLCB1YXRpbWVfZGlmZigpLCB1YXRpbWVfaGRpZmYoKSBhbmQgdWF0aW1lX3JlYWR5KCkuCisgICAgICAtIEF2b2lkIHdhaXRpbmcgaW5kZWZpbml0ZWx5IGlmIGEgc2Vzc2lvbiBoYXMgdGltZW91dCB6ZXJvCisgICAgICAtIERlY2xhcmUgInR5cGUiIGFyZ3VtZW50IG9mIHNlX3N0b3JlX2xpc3QoKSAvIHNlX3N0b3JlX3NsaXN0KCkgLworCXNlX3N0b3JlX2VudW1fbGlzdCgpIGNvbnN0CisgICAgICAtIE1ha2UgaXQgZXhwbGljaXQgdGhhdCBNQVhfU1VCSUQgaXMgYW4gdW5zaWduZWQgY29uc3RhbnQKKyAgICAgIC0gTWFrZSBuZXRzbm1wX2NhbGxiYWNrX2FjY2VwdCgpIHJldHVybiAtMSAoZmFpbHVyZSkgaW5zdGVhZCBvZiAwCisJKFNURElOX0ZJTEVOTykKKyAgICAgIC0gTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSByb2J1c3QgYWdhaW5zdCBtZW1vcnkgYWxsb2NhdGlvbgorCWZhaWx1cmVzLiBNYWtlIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygpIHVzZSBtZW1zZXQoKSBvbiBVbml4IHN5c3RlbXMKKwlpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGxvb3AuCisgICAgICAtIE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgcm9idXN0IGFnYWluc3QgbWVtb3J5IGFsbG9jYXRpb24KKwlmYWlsdXJlcy4gTWFrZSBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oKSB1c2UgbWVtc2V0KCkgb24gVW5peCBzeXN0ZW1zCisJaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBsb29wLiBNYWtlIHN1cmUgdGhhdCBvbiBVbml4IHN5c3RlbXMKKwluZXRzbm1wX2xhcmdlX2ZkX2NscigpIGRvZXNuJ3QgdHJ5IHRvIHJlYWQgbWVtb3J5IGl0IGlzbid0IGFsbG93ZWQKKwl0byByZWFkIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBlcXVhbHMgLTEgKGEgdmFsdWUgdGhhdCBzaG91bGRuJ3QgYmUKKwlwYXNzZWQgYnkgdGhlIGNhbGxlcikuCisgICAgICAtIE1lcmdlIHRvZ2V0aGVyIHRoZSBMaW51eCBhbmQgKkJTRCB2ZXJzaW9uIG9mIHNyYyBwb3J0IHNlbmRpbmcuCisgICAgICAtIE9ubHkgdHJhbnNmb3JtIHRoZSBhZGRyZXNzIHRvIHByaW50YWJsZSBmb3JtIHdoZW4gbmVlZGVkLgorICAgICAgLSBQQVRDSCAzNTEwNDU0OiBBbGxvdyB0aGUgdXNlIG9mIDAuMC4wLjAvMCBhcyBhbGlhcyBmb3IgZGVmYXVsdAorICAgICAgLSBQcmV2ZW50IGdjYyBwZWQtd2FybmluZyBmb3IgTkVUU05NUF9SRU1PVkVfQ09OU1QgZ2l0LXN2bi1pZDoKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxCisJODA1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICAgIC0gUmVkdWNlIG92ZXJoZWFkIG9mIGNvbmZpZyBmaWxlIHBhcnNpbmcKKyAgICAgIC0gUmVtb3ZlIG9ic29sZXRlIHNubXBfZ2V0X2ZkX2Zvcl9zZXNzaW9uKCkgZGVjbGFyYXRpb24KKyAgICAgIC0gU2VwYXJhdGUgb3V0IHRoZSBjbWVzZyBidWZmZXIgc2l6ZQorICAgICAgLSBTZXQgdGhlIHJwYXRoIGZvciBsaWJwZXJsLnNvIGluIGxpYm5ldHNubXBtaWJzLnNvIHN1Y2ggdGhhdCB0aGUKKwlkeW5hbWljIGxpbmtlciBjYW4gZmluZCBsaWJwZXJsLnNvIHdpdGhvdXQgcmVxdWlyaW5nIHRoZSB1c2VyIHRvCisJbW9kaWZ5IHRoZSBkeW5hbWljIGxpbmtlciBzZXR0aW5ncy4gVGhpcyBjaGFuZ2UgaW4KKwlhZ2VudC9NYWtlZmlsZS5pbiBpcyBuZWNlc3Nhcnkgb24gdGhlIDUuNSBicmFuY2ggYW5kIGxhdGVyIGJ1dCBub3QKKwlvbiB0aGUgNS40IGJyYW5jaC4gVGhhdCBpcyBiZWNhdXNlIHRoZSA1LjQgYnJhbmNoIHVzZXMgYW4gb2xkZXIKKwl2ZXJzaW9uIG9mIGxpYnRvb2wgdGhhdCBwcm9wYWdhdGVzIHRoZSBycGF0aCBvZiBkZXBlbmRlbnQKKwlsaWJyYXJpZXMuIFRoaXMgaXMgY2FsbGVkIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jeSB0cmFja2luZyBpbiB0aGUKKwlsaWJ0b29sIG1hbnVhbC4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQgaW4gbGlidG9vbCB2ZXJzaW9uIDEKKwlidXQgbm90IGluIGxpYnRvb2wgdmVyc2lvbiAyLiBGb3IgbW9yZSBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGFib3V0CisJZHluYW1pYyBsaWJyYXJpZXMgYW5kIHJwYXRocywgc2VlIGFsc28gdGhlIGRvY3VtZW50IHdpdGggdGhlIHRpdGxlCisJIlJwYXRoSXNzdWUiIG9uIHRoZSBEZWJpYW4gd2lraQorCShodHRwOi8vd2lraS5kZWJpYW4ub3JnL1JwYXRoSXNzdWUpLgorICAgICAgLSBTaW1wbGlmeSBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgbWFuaXB1bGF0aW5nIDY0LWJpdCBudW1iZXJzLgorICAgICAgLSBTaW1wbGlmeSB0aGUgc2Vfc3RvcmVfZW51bV9saXN0KCkgaW1wbGVtZW50YXRpb24KKyAgICAgIC0gVXNlIFNOTVBfQUxMT0NfVFlQRURFRiB0byBhbGxvY2F0ZSB0cmFuc3BvcnRzIGluIG9yZGVyIHRvIGF2b2lkIHRoZQorCXNlcGFyYXRlIGNhbGwgdG8gbWVtc2V0LgorICAgICAgLSBbUEFUQ0ggMzQxNDc3M106IEVuY29kZSBpbnRlZ2VyIHZhbHVlIHVzaW5nIEFTTl9JTlRFR0VSCisgICAgICAtIFtQQVRDSCAzNTI2NTk5XTogRG9uJ3QgaGFuZyBvbiByZXRyaWVkIGZhaWxpbmcgU05NUHYzIHJlc3BvbnNlcworICAgICAgLSBQQVRDSCAzNTYwNDczOiBmcm9tIGZlbm5lcjogSGFuZGxlIFRpbWVUaWNrcyB3aGVuIHByZXR0eS1wcmludGluZworCU9JRCAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgICAgLSBBZGQgdGhlIHN5bWJvbCBORVRTTk1QX1BSSW8gdG8gaGVscCBpbiBwcmludGluZyBvaWQgdmFsdWVzLgorICAgICAgLSBEbyBub3QgY3Jhc2ggZnJvbSBlbXB0eSB2YWx1ZXMgaW4gLS10b2tlbj12YWx1ZSBhcmd1bWVudHMKKyAgICAgIC0gRG8gbm90IGNyYXNoIG9uIGluY29tcGxldGUgY29uZmlndXJhdGlvbiB0b2tlbnMuCisgICAgICAtIERvIG5vdCB0cnVuY2F0ZSBzaW5nbGUgZGVmYXVsdCB0cmFuc3BvcnQgZG9tYWlucworICAgICAgLSBNb3ZlIHRoZSBjaGVjayB0aGF0IHRoZSBwZHUgdmFyaWFibGUgaXMgbm9uLU5VTEwgdG8gYmVmb3JlIHRoZQorCWZpcnN0IGRlcmVmZXJlbmNlIG9mIGl0LgorCisgICAgc25tcGxpYiArIHNubXBkICsgc25tcHdhbGs6CisgICAgICAtIEF2b2lkIHRoYXQgc3lzdGVtIGNsb2NrIGNoYW5nZXMgKGUuZy4gYnkgbnRwZCkgYWZmZWN0IGNvZGUgdGhhdAorCW5lZWRzIHJlbGF0aXZlIHRpbWUKKworICAgIHNubXBsaWIsIHNubXBkLCBwZXJsOgorICAgICAgLSBFbGltaW5hdGUgZGVhZCB2YXJpYWJsZXMgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jCisJYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYworCWFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2MKKwllc3MuYyBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMKKwlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYworCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCisJYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKKwlhZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMKKwlhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzCisJLmMgYXBwcy9zbm1wdGxzLmMgYXBwcy9zbm1wdHJhcGRfbG9nLmMgc25tcGxpYi9kaXJfdXRpbHMuYworCXNubXBsaWIvc25tcF9jbGllbnQuYyBzbm1wbGliL3NubXBfb3BlbnNzbC5jCisJc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYworICAgICAgLSBCVUc6IDM1MTcwMzA6IEVuc3VyZSBsYXJnZSB0YWJsZXMgYXJlIHdhbGtlZCBwcm9wZXJseQorICAgICAgLSBCVUc6IDM1NDEwMTI6IEZpeCBoYW5kbGluZyBvZiBnZXR0YWJsZSBjb2x1bW5zCisgICAgICAtIFtQQVRDSCAzNTI5NTQxXTogRG9uJ3QgcmVmZXIgdG8gaW50ZXJuYWwgJ215JyB2YXJpYWJsZXMgZnJvbQorCWV4dGVybmFsIHNjcmlwdHMgRml4IHByb3ZpZGVkIGJ5IExlenogR2lsZXMKKworICAgIHNubXA6CisgICAgICAtIEJyaWRnZS1taWI6IEZpeCBpbmRleCBpbnRlcnByZXRhdGlvbi4gVGhpcyBwYXRjaCBjb3JyZWN0cyBhIHdyb25nCisJZGF0YSBpbnRlcnByZXRhdGlvbi4gc25tcC1icmlkZ2UtbWliIG9idGFpbnMgdGhlIGlmaW5kZXggdmFsdWUgZnJvbQorCXRoZSBzeXNmcyBhdHRyaWJ1dGUgJ2lmaW5kZXgnIFRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgc3lzZnMKKwlhdHRyaWJ1dGUgaXMgYW4gaW50ZWdlciwgd2hpY2ggaXMgaGFuZGxlZCBhcyBoZXggYW5kIGxlYWRzIHRvCisJaW5jb3JyZWN0IGRhdGEgZGlzcGxheWVkIHRvIHRoZSB1c2VyLiBlLmcuICQgPiBzbm1wd2FsayBsb2NhbGhvc3QKKwlCUklER0UtTUlCOjpkb3QxZEJhc2VQb3J0SWZJbmRleC4yCisJQlJJREdFLU1JQjo6ZG90MWRCYXNlUG9ydElmSW5kZXguMiA9IElOVEVHRVI6IDU0IGFjY29yZGluZyB0byB0aGUKKwlzeXNmcyBhdHRyaWJ1dGUgdGhlIHZhbHVlIGlzIDM2ICQgPiBjYXQKKwkvc3lzL2NsYXNzL25ldC88ZGV2aWNlPi9pZmluZGV4IDM2IFNpZ25lZC1vZmYtYnk6IE1pam8gU2FmcmFkaW4KKwk8c2FmcmFkaW5AbGludXgudm5ldC5pYm0uY29tPgorCisgICAgc25tcGQ6CisgICAgICAtIExvd2VyZWQgc2V2ZXJpdHkgb2YgJ0Vycm9yIGV4cGFuZGluZyBYWFggdG8gNjRiaXRzJyBtZXNzYWdlcy4KKyAgICAgIC0gUmVtb3ZlZCBlcnJvciBsb2cgbWVzc2FnZXMgd2hlbiBJUHY2IGlzIGRpc2FibGVkLgorICAgICAgLSBBZGQgbWlzc2luZyBkZWJ1ZyB0YWcKKyAgICAgIC0gQWRkIG5ldHNubXBfZ2V0X25leHRfYWxhcm1fdGltZSgpCisgICAgICAtIEF2b2lkIHRoYXQgc3lzdGVtIGNsb2NrIGNoYW5nZXMgKGUuZy4gYnkgbnRwZCkgYWZmZWN0IGNvZGUgdGhhdAorCW5lZWRzIHJlbGF0aXZlIHRpbWUgTWFrZSBzdXJlIHRoYXQgdGhlIHJhbmdlIG9mIHRoZSBTTk1QdjMgdmFyaWFibGUKKwlzbm1wRW5naW5lVGltZSBpcyAwLi4yMTQ3NDgzNjQ3IG9uIGFsbCBzdXBwb3J0ZWQgc3lzdGVtcyBpbnN0ZWFkIG9mCisJMC4uNDI5NDk2NzIgb24gc29tZSBzeXN0ZW1zIChpLmUuIHdyYXBhcm91bmQgYWZ0ZXIgNDk3IGRheXMpCisgICAgICAtIEJVRyAzNTQyMTg4OiBDb3JyZWN0IHN5c09SRGVzY3IgZm9yIHNubXBVc21NSUIuIFRoYW5rcyB0byBEYXZlCisJVnVjaWNoIGZvciByZXBvcnRpbmcgdGhpcy4KKyAgICAgIC0gQlVHIDM1NDIzMDc6IENvcnJlY3Qgc3lzT1JJRCBmb3Igc25tcE1QRFN0YXRzLiBUaGFua3MgdG8gRGF2ZQorCVZ1Y2ljaCBmb3IgcmVwb3J0aW5nIHRoaXMuCisgICAgICAtIEJVRzogMzQzOTIzNDogQ29ycmVjdCB0aGUgZGVwZW5kZW5jaWVzIG9mIHVjZC1zbm1wL3Bhc3MgYW5kCisJdWNkLXNubXAvcGFzc19wZXJzaXN0CisgICAgICAtIEJVRzogMzQzOTIzNDogTW92ZSBuZXRzbm1wX3Bhc3Nfc3RyX3RvX2Vycm5vIHRvIHBhc3NfY29tbW9uIGFuZAorCXJlbmFtZSBpdCB0byBuZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vCisgICAgICAtIEJVRzogMzQ2Mzc2NzogSGFuZGxlIHBhcnNpbmcgc3ViaWRlbnRpZmllcnMgPiAyXjMxCisgICAgICAtIEJVRzogMzUzMjA5MDogRml4IGhpZ2ggaWZJbmRleCB2YWx1ZXMgY3Jhc2hpbmcgaHJEZXZpY2VEZXNjcgorICAgICAgLSBDYWxsIHNubXBfb2lkdHJlZV9jb21wYXJlIGluc3RlYWQgb2Ygc25tcF9vaWRfbWluX2NvbXBhcmUKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBBdm9pZCBkYW5nbGluZyBwb2ludGVycyAoYmFzZWQgb24gcGF0Y2ggMzUwMzI1OSkKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBBdm9pZCByZWFkaW5nIGZyZWVkIG1lbW9yeSB3aGVuIGRlbGV0aW5nIGEgcm93CisJZnJvbSBhIHRhYmxlCisgICAgICAtIERJU01BTi1QSU5HLU1JQjogRG8gbm90IHNlbmQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdGFjayBvdmVyIHRoZQorCW5ldHdvcmsKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBEb24ndCBjYWxsIGV4aXQoKSB1cG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBGaXggSVB2NiBzb2NrZXQgbGVhayBpbiBlcnJvciBwYXRocworICAgICAgLSBESVNNQU4tUElORy1NSUI6IEZpeCBhIHNvY2tldCBsZWFrIHRyaWdnZXJlZCBieSBwaW5naW5nIGEgcmVtb3RlCisJaG9zdAorICAgICAgLSBESVNNQU4tUElORy1NSUI6IEZpeCBtb3JlIG1lbW9yeSBsZWFrcworICAgICAgLSBESVNNQU4tUElORy1NSUI6IEZpeCBzZXZlcmFsIG1lbW9yeSBsZWFrcworICAgICAgLSBESVNNQU4tUElORy1NSUI6IE1ha2UgcGluZyBpbXBsZW1lbnRhdGlvbiBpbmRlcGVuZGVudCBvZiBudHBkIGNsb2NrCisJanVtcHMKKyAgICAgIC0gRElTTUFOLVBJTkctTUlCOiBNYWtlIHBpbmdpbmcgbG9jYWwgaW50ZXJmYWNlIGFkZHJlc3NlcyB3b3JrCisgICAgICAtIERJU01BTi1TQ0hFRFVMRVItTUlCOiBIYW5kbGUgMzItY2hhcmFjdGVyIHNjaGVkQ29udGV4dE5hbWUgdmFsdWVzCisJY29ycmVjdGx5LiBTZWUgYWxzbyBjb21taXQKKwliM2M0OTgyNTQyZTBhYjE1MWZiMzg4NDc1NGNkZmJjYjQ3MmRhNTJkLgorICAgICAgLSBEaXNhYmxlIHRoZSBzdXBwb3J0IGZvciBpbnRlZ2VyNjQgaW4gcGFzcyBzY3JpcHRzIGlmIGNvbXBpbGluZworCXdpdGhvdXQgb3BhcXVlLXNwZWNpYWwtdHlwZXMuCisgICAgICAtIEZhY3RvciBvdXQgYXNjMmJpbiBhbmQgYmluMmFzYy4gQWRkIGEgbmV0c25tcF9pbnRlcm5hbF8gcHJlZml4IHRvCisJdGhlbQorICAgICAgLSBGaXhlZCBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIGFmdGVyIDMwIGRheXMgb2YgdXB0aW1lLiBBZnRlciAzMAorCWRheXMsIHZhbHVlcyBmcm9tIC9wcm9jL3N0YXQgKG9uIExpbnV4KSBjYW4gZ2V0IGJpZ2dlciB0aGFuIDMyYml0cworCWFuZCBzbm1wZCBjYWxjdWxhdGlvbnMgbWlnaHQgcmVuZGVyIGNvdW50ZXJzIGxpa2Ugc3NDcHVVc2VyCisJbmVnYXRpdmUgb3IgemVybywgd2hpbGUgdGhlIHJlYWwgdmFsdWUgaXMgaGlnaGVyLiBUaGVyZWZvcmUgdGhlCisJY291bnRlcnMgc2hvdWxkIGJlIHRyYWNrZWQgYXMgdGhlIGxhcmdlc3QgaW50ZWdlciBhdmFpbGFibGUuCisgICAgICAtIEZpeGVkIHNubXBkICctZCcgb3B0aW9uLiBOb3cgaXQgZHVtcHMgcGFja2V0cyBhZ2Fpbi4KKyAgICAgIC0gSUYtTUlCOjppZlR5cGU6IFJlcG9ydCB0eXBlICJpbmZpbmliYW5kICgxOTkpIiBmb3IgSW5maW5pQmFuZAorCWludGVyZmFjZXMgaW5zdGVhZCBvZiB0eXBlICJvdGhlciAoMSkiLgorICAgICAgLSBJbml0X2FnZW50KCkgKyBpbml0X2ttZW0oKTogUmV0dXJuIGFuIGVycm9yIHZhbHVlIGluc3RlYWQgb2YKKwlpbnZva2luZyBleGl0KCkgaWYgYWNjZXNzIHRvIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBpcyBkZW5pZWQKKyAgICAgIC0gTWFrZSB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZGxtb2QgbW9kdWxlIGZhaWwgcmF0aGVyIHRoYW4KKwlnZW5lcmF0ZSBhIGR1bW15IG1vZHVsZSBpZiB0aGUgZGxvcGVuIGZ1bmN0aW9uIGlzbid0IGF2YWlsYWJsZS4KKyAgICAgIC0gTWF0Y2ggZWFjaCBnZXRwd25hbSgpL2dldHB3dWlkKCkgY2FsbCB3aXRoIGFuIGVuZHB3ZW50KCkgY2FsbCBhbmQKKwllYWNoIGdldGdyZW50KCkgY2FsbCB3aXRoIGFuIGVuZGdyZW50KCkgY2FsbC4KKyAgICAgIC0gUEFUQ0ggMzQwMjM3NjogZnJvbSBMZW9uYXJkbyBDaGlxdWl0dG86IFJlY29nbmlzZSBSZWlzZXJGUyBBbHNvCisJbW92ZSB2YXJpb3VzIEZTVHlwZSBkZWZpbml0aW9ucyB0byB0aGUgYXBwcm9wcmlhdGUgYmxvY2tzCisgICAgICAtIFBBVENIIDM0NTM4Njg6IGZyb20gIkJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPiI6IEZhY3RvciBjb21tb24KKwljb2RlIGludG8gcGFzc19jb21tb24gTW92ZSB0aGUgY29kZSBmb3IgcG9ybWF0dGluZyBhbmQgcHJpbnRpbmcKKwl2YWx1ZXMgZnJvbSBwYXNzIGFuZCBwYXNzX3BlcnNpc3QgaW50byBwYXNzX2NvbW1vbi4KKyAgICAgIC0gUEFUQ0g6IDM0ODc4Njc6IERvbid0IHNraXAgbWlzc2luZyBpZlhUYWJsZSBlbnRyaWVzCisJKGlmQ29ubmVjdG9yUHJlc2VudCBGQUxTRSkKKyAgICAgIC0gUGFzc19wZXJzaXN0OiAgRml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbnRyb2R1Y2VkIGluIGNvbW1pdAorCTMxZmEwN2NkOWZmZGU0NmQ0MWQyYjU4MzhjM2ZjNGQwMTU0OGJmYjUuIFRoZSBmb2xsb3dpbmcgcmFjZQorCWNvbmRpdGlvbiBjb3VsZCBoYXBwZW46IC0gQSBzeXN0ZW0gY2FsbCBmYWlscyBhbmQgZXJybm8gaXMgc2V0CisJYWNjb3JkaW5nbHkgYnkgdGhlIEMgbGlicmFyeS4gLSBTSUdDSExEIGhhbmRsZXIgaW52b2tlcyBhIHN5c3RlbQorCWNhbGwgdGhhdCBmYWlscyBhbmQgaGVuY2Ugb3ZlcndyaXRlcyBlcnJuby4gLSBTSUdDSExEIGhhbmRsZXIKKwlsZWF2ZXMuIC0gb3JpZ2luYWwgY29udGV4dCBjaGVja3MgZXJybm8gYW5kIGZpbmRzIHRoZSB2YWx1ZSBmcm9tCisJdGhlIHN5c3RlbSBjYWxsIGludm9rZWQgYnkgdGhlIFNJR0NITEQgaGFuZGxlciBpbnN0ZWFkIG9mIHRoZQorCXN5c3RlbSBjYWxsIHRoYXQgZmFpbGVkIG9yaWdpbmFsbHkuIE90aGVyIGZpeGVzIGluY2x1ZGVkIGluIHRoaXMKKwlwYXRjaDogLSBSZW5hbWVkIGRlaW5pdF9wYXNzX3BlcnNpc3QoKSBpbnRvIHNodXRkb3duX3Bhc3NfcGVyc2lzdCgpCisJc3VjaCB0aGF0IHRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZHVyaW5nIGFnZW50IHNodXRkb3duLiAtIE1hZGUKKwlzdXJlIHRoYXQgc2h1dGRvd25fcGFzc19wZXJzaXN0KCkgaXMgY2FsbGVkIGJ5IHRoZSBXaW5kb3dzCisJc25tcGQuZXhlIHRvby4gLSBXaW5kb3dzOiBhdm9pZCBjYWxsaW5nCisJQ2xvc2VIYW5kbGUoSU5WQUxJRF9IQU5ETEVfVkFMVUUpLiAtIFdpbmRvd3M6IGF2b2lkIHRoYXQgY2xvc2luZyBhCisJcGFzc19wZXJzaXN0IHBpcGUgdHJpZ2dlcnMgYSBjcmFzaC4gLSBXaW5kb3dzOiBwYXNzX3BlcnNpc3Q6IGNsb3NlCisJaGFuZGxlcyBvZiBmaW5pc2hlZCBwcm9jZXNzZXMuCisJYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMgd2luMzIvbWliX21vZHVsZV9zaHV0ZG93bi5oCisgICAgICAtIFNtdXg6IHNpbXBsaWZ5IHNtdXhfbGlzdF9kZXRhY2goKQorICAgICAgLSBVRFAtTUlCOiBSZXBvcnQgdGhlIHByb3BlciBhZGRyZXNzIGluIHVkcExvY2FsQWRkcmVzcyBpbnN0ZWFkIG9mCisJMC4wLjAuMC4gTWFrZXMgdGVzdCBUMTYwc25tcG5ldHN0YXQgcGFzcyBhZ2Fpbi4gRml4ZXMgYSBidWcKKwlpbnRyb2R1Y2VkIGluIGNvbW1pdCBjNzZmYjk2ZjY1ZTMzYmEyZmQyMTJhOTIxZThjMzg2MTU1ZWU1YzdhLgorICAgICAgLSBbQlVHIDM0NjAzNjRdOiBGaXggdXNlIG9mIGJsb2NrIGZhY3RvciB3aGVuIGRldGVjdGluZyBlcnJvcgorCWNvbmRpdGlvbnMKKyAgICAgIC0gW0JVRyAzNDg5NjMxXTogRml4IGluY29ycmVjdCBoYW5kbGluZyBvZiBVQ0QgbW9uaXRvcmluZyBmbGFnCisgICAgICAtIFtQQVRDSCAzNDEwMDUwXTogU2tpcCBhbHJlYWR5LSdwcm9jZXNzZWQnIHZhcmJpbmRzIEJhc2VkIG9uIG1pYjJjCisJcGF0Y2ggcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKyAgICAgIC0gW1BBVENIIDM0MTAwNTldOiBGaXggc3BhcnNlbHkgYXVnbWVudGluZyB0cmlnZ2VyIHRhYmxlcyBQYXRjaAorCXByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisgICAgICAtIFtQQVRDSCAzNDQ3NDQ0XTogRml4IFNJR19QSVBFIGhhbmRsaW5nIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwKKwlGZW5uZXIKKyAgICAgIC0gW1BBVENIIDM0NDc2NzFdOiBGaXggb3ZlcnJpZGUgaGFuZGxpbmcgb2YgT0lEIHZhbHVlcyBQYXRjaCBzdXBwbGllZAorCWJ5IFBoaWxsaXAgTydEb25uZWxsCisgICAgICAtIFtQQVRDSCAzNDc5NzQwXTogRml4IGhyU1dSdW5QZXJmIHN0YXRpc3RpY3MKKyAgICAgIC0gW1BBVENIIDM0ODc5MTldOiBGaXggY29tcGlsYXRpb24gd2hlbiBjYWNoaW5nIGlzIGRpc2FibGVkCisgICAgICAtIFtQQVRDSCAzNDk1Njk3XTogU3RvcmUgcGVyc2lzdGVudCBzbm1wVGFyZ2V0IHRhYmxlIGNoYW5nZXMKKyAgICAgIC0gQlVHIDM1NDIxODg6IENvcnJlY3Qgc3lzT1JEZXNjciBmb3Igc25tcFVzbU1JQi4gVGhhbmtzIHRvIERhdmUKKwlWdWNpY2ggZm9yIHJlcG9ydGluZyB0aGlzLgorICAgICAgLSBCVUcgMzU0MjMwNzogQ29ycmVjdCBzeXNPUklEIGZvciBzbm1wTVBEU3RhdHMuIFRoYW5rcyB0byBEYXZlCisJVnVjaWNoIGZvciByZXBvcnRpbmcgdGhpcy4KKyAgICAgIC0gQlVHOiAzNTQzODY0OiBSZW1vdmUgZXh0cmFuZW91cyBmdW5jdGlvbiB0eXBlIChhbmQgZml4IGEgcmVsYXRlZAorCXR5cG8pCisgICAgICAtIFJlbW92ZWQgbGltaXQgb2YgJ2V4ZWMnIGFuZCAnc2gnIGVudHJpZXMgaW4gc25tcGQuY29uZiBVc2UgZHluYW1pYworCShyZSlhbGxvY2F0aW9uIGluc3RlYWQuCisgICAgICAtIFtQQVRDSCAzNTQzMDAwXTogVmFyaW91cyBmaXhlcyB0byBSbW9uIGNvZGUgU3VwcGxpZWQgYnkgUGF0cmljaworCVJpdHRlcgorCisgICAgc25tcGR4OgorICAgICAgLSBbUEFUQ0ggMzQ0NTQzN106IExvZyBBZ2VudFggZGlzY29ubmVjdGlvbnMgKGluIGxpbmUgd2l0aAorCWNvbm5lY3Rpb25zKSBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCisgICAgc25tcHRyYXBkOgorICAgICAgLSBBdm9pZCBjcmFzaCBkdXJpbmcgc2h1dGRvd24gZHVlIHRvIGludm9raW5nIHBlcmxfZGVzdHJ1Y3QoTlVMTCkKKyAgICAgIC0gRG8gbm90IGludm9rZSBzaHV0ZG93bl9wZXJsKCkgZnJvbSBpbnNpZGUgdGhlIFNJR1RFUk0gaGFuZGxlciBzaW5jZQorCXRoYXQgZmFpbHMgaWYgU0lHVEVSTSBpcyByZWNlaXZlZCB3aGlsZSBhIFBlcmwgaGFuZGxlciBpcyBhY3RpdmUuCisJQmFzZWQgb24gYSBwYXRjaCBwb3N0ZWQgYnkgSm9lbCBBdm5pIDxqYXZuaUBhcnViYW5ldHdvcmtzLmNvbT4KKyAgICAgIC0gRWxpbWluYXRlIGFuIHVudXNlZCB2YXJpYWJsZSAoTm93KQorICAgICAgLSBNb3ZlIHRoZSBtYWluIGxvb3AgY29kZSBpbnRvIGEgbmV3IGZ1bmN0aW9uCisgICAgICAtIFJlbW92ZSBzdXBlcmZsdW91cyBjYXN0cworCisgICAgc25tcHRyYXBkX3NxbDoKKyAgICAgIC0gQXZvaWQgdGhhdCBhIGxpbmtlciBlcnJvciBpcyB0cmlnZ2VyZWQgb24gc3lzdGVtcyB3aGVyZSBteV9wcm9nbmFtZQorCWlzIG1pc3NpbmcgaW4gbGlibXlzcWxjbGllbnQgKGUuZy4gRmVkb3JhIDE1IGFuZCAxNikuIFRoaXMgaXMgYQorCWJhY2twb3J0IG9mIGNvbW1pdCA5ZjY1M2Y3LgorCisgICAgYWl4OgorICAgICAgLSBFbGltaW5hdGUgY29uZmlndXJlIHdhcm5pbmcgcmVnYXJkaW5nIGxpYnBlcmZzdGF0Lmggb24gQUlYIDYuMSBhbmQKKwl1cAorICAgICAgLSBQQVRDSCAzNDAzNDMzOiBmcm9tIGJsZW50ejogSXNzdWVzIHdpdGggaHJTV1J1bk5hbWUgYW5kIFBhcmFtZXRlcnMKKwlvbiBBSVgJIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlcgorCTxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICBhcHBzLCBzbm1wbGliOgorICAgICAgLSBQQVRDSDogMjgzNTU3NzogaWRlbnRpZmllZCBieSAiQmFydCBWYW4gQXNzY2hlIjogUmVwbGFjZSBTTk1QX1pFUk8KKwlvZiBhcnJheXMgd2l0aCBhIG1lbXNldC4gZ2l0LXN2bi1pZDoKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxCisJNzc5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICAgIC0gQlVHOiAzNTI5NzY4OiBCZSBtb3JlIGNhcmVmdWwgd2hlbiBzdHJpcHBpbmcgb2ZmIG51bWVyaWMgc3VmZml4ZXMKKworICAgIGJ1aWxkOgorICAgICAgLSBEbyBub3QgZ2VuZXJhdGUgYW4gb3V0cHV0IGZpbGUgb24gZmFpbHVyZSBtYWtlIHN1cHBvc2VzIHRoYXQgbm8KKwlvdXRwdXQgaXMgZ2VuZXJhdGVkIGlmIHRoZSBjb21tYW5kIGZhaWxlZC4gQ2hhbmdlIGZlYXR1cmUtcmVtb3ZlIHRvCisJZm9sbG93IHRoYXQgcHJlc3VtcHRpb24uCisgICAgICAtIEJVRzogMzUzMjIzNDogRml4IHR5cG8gaW4gbGlidG9vbCBzY3JpcHQgKGFkZHJlc3NlZCBwcm9wZXJseSBpbgorCWxpYnRvb2wgMi40LjIpCisKKyAgICBidWlsZGluZzoKKyAgICAgIC0gQWRkIGRlcGVuZGVuY2llcyBvbiBARkVBVFVSRVRBUkdTQCB0byBtYWtlIHRoZSBzdWJ0YXJnZXQgd29yayBhcworCXdlbGwuCisgICAgICAtIEFkZCBtaXNzaW5nIGVuZCBjb21tZW50cyB0byBmZWF0dXJlIGlmbmRlZnMuCisgICAgICAtIEFkZCB0YXJnZXQgdG8gYnVpbGQgYWdlbnR4dHJhcCBmcm9tIHRoZSB0b3BsZXZlbAorICAgICAgLSBCdWlsZCBmaXggZm9yIHN5c3RlbXMgbGFja2luZyBmaWVsZCBtc2dfZmxhZ3MgaW4gc3RydWN0IG1zZ2hkcgorCShlLmcuIElSSVgpCisgICAgICAtIEJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkcyBtc2dfY29udHJvbC9tc2dfZmxhZ3MgaW4KKwlzdHJ1Y3QgbXNnaGRyIChiYWNrcG9ydCkKKyAgICAgIC0gQ29ycmVjdCBkZXBlbmRlbmNpZXMgLSBzaW5jZQorCWJmNzRmZWE2OWYyNGRjNmU4NWY5MDhmM2Y0MWQxNDI2YjJlMDk2ODggc25tcGNvbmYgaXMgbG9jYXRlZCBpbgorCWJ1aWxkZGlyLCBub3Qgc3JjZGlyCisgICAgICAtIENvcnJlY3QgZGVwZW5kZW5jaWVzIC0gc2luY2UKKwliZjc0ZmVhNjlmMjRkYzZlODVmOTA4ZjNmNDFkMTQyNmIyZTA5Njg4IHNubXBjb25mIGlzIGxvY2F0ZWQgaW4KKwlidWlsZGRpciwgbm90IHNyY2RpciIgVGhpcyByZXZlcnRzIGNvbW1pdAorCTllZmE0NjdhOTcyYmI2ZTFjN2ZiZGFmMmUyNzQyOWQyOWY0YWI4OWUuCisgICAgICAtIE1ha2UgdGhlIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIGNvZGUgd29yayBhZ2FpbiBQcmV2aW91c2x5IHRoZQorCXRyYW5zcG9ydCBpbmhlcml0YW5jZSBwcm9jZXNzaW5nIGNvZGUgcmFuIHdpdGgKKwlORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgc2V0LiBJbiB0aGlzIG1vZGUgdGhlIGZpbGUKKwluZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaCBpcyByZXF1aWVyZWQuIFRoYXQgZmlsZSBpcyBjcmVhdGVkCisJZHVyaW5nIHRoZSBmaXJzdCBtYWtlIHJ1biwgYW5kIHRoYXQgaGFwcGVucyBhZnRlciBjb25maWd1cmUgaXMgcnVuLgorCUNoYW5nZSB0aGlzIHRvIHVuZGVmaW5lIE5FVFNOTVBfTUlOSU1BTF9DT0RFLCBlZmZlY3RpdmVseSB0dXJuaW5nCisJb2ZmIGZlYXR1cmUgc3VwcG9ydCBkdXJpbmcgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gaW4gb3JkZXIgdG8gbWFrZQorCWl0IHdvcmsgYXQgYWxsLgorICAgICAgLSBSdW4gbGlidG9vbCAtLW1vZGU9ZmluaXNoIG9uIHRoZSByaWdodCBkaXJlY3RvcnkKKworICAgIGxpYm5ldHNubXA6CisgICAgICAtIFBBVENIIDMzOTQ1ODY6IGZyb20gcndhLWNvOiBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiByZWFkX2NvbmZpZworCSgrZml4KSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgIGxpYnNubXA6CisgICAgICAtIENoYW5nZWQgdGhlIHR5cGUgb2YgdGhlIGZvdXJ0aCBhcmd1bWVudCBvZiBuZXRzbm1wX3NldF9yb3dfY29sdW1uKCkKKwlmcm9tIGNvbnN0IGNoYXIqIHRvIGNvbnN0IHZvaWQqIHN1Y2ggdGhhdCBubyBjYXN0IGlzIG5lY2Vzc2FyeSB3aGVuCisJcGFzc2luZyBhbm90aGVyIGRhdGF0eXBlIHRoZW4gY2hhciogb3IgY29uc3QgY2hhciouCisKKyAgICBtYW46CisgICAgICAtIFtCVUcgMzQ5MDcwOF06IENsYXJpZnkgdXNlIG9mIGNvbW1vbiBjb21tYW5kLWxpbmUgb3B0aW9ucworICAgICAgLSBCVUc6IDM1MzUyNjk6IERvY3VtZW50IHVzZSBvZiBbc25tcF0gZm9yIGNsaWVudC1zaWRlIHRvb2xzLgorCisgICAgcGFzczoKKworICAgIHBlcmw6CisgICAgICAtIEFkZCBhZ2VudDo6dXB0aW1lKCkKKyAgICAgIC0gRW5hYmxlIHNlbmRpbmcgU05NUHYyIHRyYXBzIHdpdGggYW4gZW1wdHkgdmFyYmluZCBsaXN0CisgICAgICAtIEZpeCBzcGVsbGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgU05NUCBtb2R1bGUKKyAgICAgIC0gRml4ZWQgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbHMuIFdoZW4KKwluZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIgZmFpbHMsIGl0IGZyZWVzIGl0cyByZWdpbmZvIC0+CisJbnNhaHJfREVTVFJPWSAoYW5kIGFueSBvdGhlciBmdW5jdGlvbikgbXVzdCBub3QgZGVyZWZlcmVuY2UgaXQuCisgICAgICAtIFBlcmw6IE1ha2Ugc3VyZSB0aGF0IHRoZSBjb25zdGFudCBTTk1QX0RFRkFVTFRfUkVUUklFUyBpcworCXJlY29nbml6ZWQuIFNOTVAgbW9kdWxlOiBBZGQgY29uc3RhbnRzCisJTkVUU05NUF9DQUxMQkFDS19PUF9SRUNFSVZFRF9NRVNTQUdFIGFuZAorCU5FVFNOTVBfQ0FMTEJBQ0tfT1BfVElNRURfT1VULiBXaGVuIHRoZSBOZXQtU05NUCBQZXJsIG1vZHVsZXMgYXJlCisJYnVpbHQgb24gV2luZG93cyB3aXRoIE1TVkMgb3IgTWluR1cgaXQgaXMgcG9zc2libGUgdGhhdCBlYWNoIHRoZXNlCisJYXJlIGxpbmtlZCB3aXRoIGFub3RoZXIgdmVyc2lvbiBvZiB0aGUgTVNWQyBydW50aW1lIGxpYnJhcnkgdGhhbgorCXRoZSBQZXJsIGludGVycHJldGVyIGl0c2VsZi4gSW4gdGhhdCBjYXNlIHRoZSAiZXJybm8iIHZhcmlhYmxlIHVzZWQKKwlpbnNpZGUgLnhzIHNvdXJjZSBmaWxlcyBpcyBhbm90aGVyIHZhcmlhYmxlIHRoYW4gdGhlICQhIHZhcmlhYmxlIGluCisJLnBtIGZpbGVzLiBPcjogYXNzaWdubWVudHMgdG8gImVycm5vIiBpbiBhIC54cyBmaWxlIGRvIG5vdCBtb2RpZnkKKwl0aGUgIiQhIiBQZXJsIHZhcmlhYmxlIFRoaXMgcGF0Y2ggYXZvaWRzIHVzaW5nICJlcnJubyIgYnkgbW9kaWZ5aW5nCisJdGhlIGRpZmZlcmVudCBjb25zdGFudCgpIGZ1bmN0aW9ucyBzdWNoIHRoYXQgdGhlc2UgcmV0dXJuIGEKKwl0d28tZWxlbWVudCBhcnJheSBpbnN0ZWFkIG9mIHJldHVybmluZyBhIHNjYWxhciBhbmQgc2V0dGluZyBlcnJuby4KKworICAgIHB5dGhvbjoKKyAgICAgIC0gQXZvaWQgdGhhdCBhbiBTTk1QIHNldCB3aXRoIFVzZUVudW1zIGVuYWJsZWQgY2F1c2VzIGEgc2VnbWVudGF0aW9uCisJZmF1bHQKKyAgICAgIC0gW1BBVENIIDM0MzM4NDZdOiBGaXggZm9yIHVzZSB3aXRoIHB5dGhvbiAyLjQKKyAgICAgIC0gQlVHOiAzNTM1OTY3OiBGaXggbWVtb3J5IGxlYWsgLSBzbm1wX3tzZXNzX31lcnJvciBhbGxvY2F0ZXMgdGhlCisJb3V0cHV0IGJ1ZmZlcgorCisgICAgdGVzdGluZzoKKyAgICAgIC0gQWRkIGEgdGVzdCBmb3Igc2Vfc3RvcmVfbGlzdCgpCisgICAgICAtIEFkZCB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNTRkaXNtYW5waW5nbWliX3NpbXBsZQorICAgICAgLSBBdm9pZCBmYWxzZSBuZWdhdGl2ZSBmb3IgVDExNGFnZW50eGFnZW50eHRyYXBfc2ltcGxlIGNhdXNlZCBieSB0aGUKKwl0ZXN0IHJlc3VsdCBiZWluZyBwcmVzZW50IGluIHRoZSBoZXggZHVtcCAoIm1vc3RseV9oYXJtbGVzcyIpCisgICAgICAtIENvbnZlcnQgc25tcGxpYi90ZXN0X2JpbmFyeV9hcnJheS5jIGludG8gdHdvIHVuaXQgdGVzdHMKKyAgICAgIC0gRml4IFBlcmwgcmVncmVzc2lvbiB0ZXN0IGZhaWx1cmVzIEFsbCBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcworCW5vdyBvbiBMaW51eCBhbmQgb24gV2luZG93cyAoTVNWQykuCisgICAgICAtIE1ha2UgdGhlIGFzbjEgdGVzdCBwYXNzIGV2ZW4gaWYgc3VwcG9ydCBmb3Igb3BhcXVlIHR5cGVzIGFyZQorCXJlbW92ZWQuCisgICAgICAtIFBlcmwgcmVncmVzc2lvbiB0ZXN0czogRG9uJ3QgZmFpbCBza2lwcGVkIHRlc3RzLgorICAgICAgLSBQcm90ZWN0IHRoZSB1c2Ugb2YgJE9TVFlQRSB0byBlbnN1cmUgdGhhdCAndGVzdCcgZ2V0IGVub3VnaAorCXBhcmFtZXRlcnMuCisgICAgICAtIFJlbW92ZSBhbiBpbmNvcnJlY3QgY29tbWVudCBmcm9tIHNpbXBsZV9ldmFsX3Rvb2xzLnNoCisgICAgICAtIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKyAgICAgIC0gUmVxdWlyZSBhIHNlbWljb2xvbiBhZnRlciBPSygpLCBPS0YoKSBhbmQgUExBTigpIEFsc28sIGxldCBPS0YoKQorCWVtaXQgYSBzaW5nbGUgbGluZSBvZiBvdXRwdXQgc3VjaCB0aGF0IGFsbCBvdXRwdXQgaXQgcHJvZHVjZXMgaXMKKwl2aXNpYmxlIGluIHRoZSBvdXRwdXQgb2YgIm1ha2UgdGVzdCIuCisgICAgICAtIFtCVUcgMzQ3NDU5MF06IERvbid0IG1hdGNoIHVuZGVyc2NvcmVzIHdpdGhpbiB0aGUgc291cmNlIHJvb3QKKwlmaWxlbmFtZQorICAgICAgLSBBZGQgdGVzdCBjYXNlcyBmb3Igc25tcF9zZXJ2aWNlCisKKyAgICB1bnNwZWNpZmllZDoKKyAgICAgIC0gQWRkZWQgQ1ZGUyAoQ2VudHJhVmlzaW9uIEZpbGUgU3lzdGVtKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQKKwlockZTVGFibGUuCisgICAgICAtIFJlbW92ZWQgY291bnRlci02NCBlcnJvciBtZXNzYWdlcy4gICBUaGVzZSBtZXNzYWdlcyBkbyBub3Qgc2F5CisJZW55dGhpbmcgdXNlZnVsLCBjYWxsZXIgc2hvdWxkIGNoZWNrIHRoZWlyIHJldHVybiB2YWx1ZSBhbmQgcmVwb3J0CisJaXQuCisgICAgICAtIEFkZGVkIE9DRlMyIChPcmFjbGUgQ2x1c3RlciBGUykgdG8gaHJTdG9yYWdlVGFibGUgYW5kIGhyRlNUYWJsZQorICAgICAgLSBbQlVHIDM0NDQ5MzldOiBCVUc6IDE3OTY4ODY6IHNubXBsaWI6IEF2b2lkIHRoYXQKKwlzcHJpbnRfcmVhbGxvY19vY3RldF9zdHJpbmcoKSBlbWJlZHMgdW5wcmludGFibGUgY29udHJvbCBjaGFyYWN0ZXJzCisJb3IgYmluYXJ5IHplcm9lcyBpbiBpdHMgb3V0cHV0LiBUaGlzIGJlaGF2aW9yIGNvdWxkIGNhdXNlIHRydW5jYXRlZAorCW91dHB1dCBpbiBzbm1wdHJhcGQuCisgICAgICAtIFtCVUcgMzQ1MjA2OV06IEZpeCBzbm1wdHJhcF9vaWQgZGVjbGFyYXRpb24gaW4gbWliMmMgZ2VuZXJhdGVkIGNvZGUKKwlUaGlzIGJ1ZyB3YXMgaW50cm9kdWNlZCBjb25zaWRlcmFibGUgdGltZSBhZ28uIEl0IGRpZCBhbHJlYWR5IGV4aXN0CisJYXQgdGhlIHRpbWUgdGhlIDUuNiBicmFuY2ggd2FzIGNyZWF0ZWQgKHNlZSBhbHNvIGNvbW1pdAorCTBlYzA4OGFmYTI3Y2ZkYTRlNmVhNzhhYWU3Y2ZjNTUwNzU2NGVkZGUpLgorICAgICAgLSBbQlVHIDM0NTQxNjhdOiBjb25maWd1cmU6IEZpeCBidWlsZGluZyB3aXRoIC0tZW5hYmxlLXJlYWQtb25seQorICAgICAgLSBbUEFUQ0ggMzQxODY0OV06IEhPU1QtUkVTT1VSQ0VTLU1JQjogVXNlIHBjbG9zZSgpIGluc3RlYWQgb2YKKwlmY2xvc2UoKSB0byBjbG9zZSBhIHBpcGUuCisgICAgICAtIFtCVUcgMzU0MDYyMV06IGRpc3Q6IEFkZCBtaXNzaW5nIFByb3ZpZGVzOiB0byBuZXQtc25tcC1wZXJsbW9kcyBSUE0KKwlzcGVjCisKKyAgICBCU0Q6CisKKyAgICBCdWcgMzE1Mjg0MToKKyAgICAgIC0gRG8gbm90IGluc3RhbGwgdGhlIHV0aWxfZnVuY3Mgc3ViaGVhZGVycyB0aGF0IHdlcmUgcmVtb3ZlZCBpbiA1LjcKKyAgICAgIC0gSW5zdGFsbCB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMKKyAgICAgIC0gSW5zdGFsbCB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMgaW50cm9kdWNlZCBpbiA1LjYKIAogICAgIEN5Z3dpbjoKICAgICAgIC0gTWFrZSBkYXRlX25fdGltZSgpIHByb2R1Y2UgdGltZSB6b25lIGluZm9ybWF0aW9uCi0gICAgICAtIEZpeCBnZXRfdXB0aW1lKCkgLyBoclN5c3RlbVVwdGltZSBpbXBsZW1lbnRhdGlvbgorCisgICAgQ3l3aW46CisgICAgICAtIEFnZW50OiBJbXBsZW1lbnQgZ2V0X3VwdGltZSgpIHN1Y2ggdGhhdCBxdWVyeWluZworCUhPU1QtUkVTT1VSQ0VTLU1JQjo6aHJTeXN0ZW1VcHRpbWUgcmV0dXJucyBhIG5vbi16ZXJvIHZhbHVlLgogCiAgICAgRnJlZUJTRDoKLSAgICAgIC0gW1BBVENIIDM0ODkzODddOiBJbnN0YWxsIEZyZWVCU0QgMTAgaGVhZGVyIGZpbGUgKHBsdXMgb3RoZXIgbWlzc2luZyB2ZXJzaW9ucykKICAgICAgIC0gUmVzdG9yZSBJUF9SRUNWRFNUQUREUiBmdW5jdGlvbmFsaXR5LgorICAgICAgLSBTbm1wZCArIGFwcHM6IFNlbmRpbmcgVURQIHBhY2tldHMgd29ya3MgYWdhaW4gZm9yIG5vbi1yb290IHVzZXJzCisgICAgICAtIFtQQVRDSCAzNDg5Mzg3XTogSW5zdGFsbCBGcmVlQlNEIDEwIGhlYWRlciBmaWxlIChwbHVzIG90aGVyIG1pc3NpbmcKKwl2ZXJzaW9ucykKIAogICAgIExpbnV4OgotICAgICAgLSBbUEFUQ0ggMzIwNTgxMV06IE9wdGlvbiB0byBza2lwIGZkL2xvb3AvcmFtIGRldmljZXMgaW4gZGlza0lPVGFibGUKLSAgICAgIC0gW1BBVENIIDM1MjU5OThdOiBEb24ndCB1c2UgYW4gdW5pbml0aWFsaXNlZCB2YWx1ZSBpbiBlcnJvciBtZXNzYWdlCisgICAgICAtIFBBVENIOiAzNTI1OTk4OiBEb24ndCB1c2UgYW4gdW5pbml0aWFsaXNlZCB2YWx1ZSBpbiBlcnJvciBtZXNzYWdlCisgICAgICAtIFtQQVRDSCAzNTM2NDIwXTogRW5zdXJlIHNuZC9yY3YgbWVtb3J5IGJ1ZmZlcnMgYXJlIHN1aXRhYmx5IGFsaWduZWQKKwlQYXRjaCBwcm92aWRlZCBieSBUeWxlciBPbG1zdGVhZAogCiAgICAgTWluR1c6Ci0gICAgICAtIEF2b2lkICJwcmFnbWEgY29tbWVudCIgd2FybmluZ3MgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgotICAgICAgLSBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgV2luZG93cyByZWdpc3RyeSBzZXR0aW5ncworICAgICAgLSBOZXQtU05NUCBQZXJsIG1vZHVsZXMgYnVpbGQgYWdhaW4uCisgICAgICAtIFN1cHBvcnQgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgb2YgcmVjZW50IFNoaW5pbmcgTGlnaHQgT3BlblNTTAorCWJpbmFyeSBkaXN0cmlidXRpb25zCisgICAgICAtIFRlc3Rpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0ZXN0IGZyYW1ld29yaworICAgICAgLSBUZXN0aW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdCBydW5uZXIKKyAgICAgIC0gVGVzdGluZzogTWFrZSB0ZXN0IFQxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZSBwYXNzCisgICAgICAtIFRlc3Rpbmc6IE1ha2UgdGhvc2UgcmVncmVzc2lvbiB0ZXN0cyBwYXNzIGZvciB3aGljaCBTTk1QQ09ORlBBVEgKKwlhbmQvb3IgU05NUF9QRVJTSVNURU5UX0RJUiBtYXR0ZXIKKyAgICAgIC0gVGVzdGluZzogTWFrZSB1bml0LXRlc3RzL1QwMTRnZXRob3N0YnlhZGRyX2NsaWIgcGFzcworICAgICAgLSBUZXN0aW5nOiBNYWtlIHVuaXQtdGVzdHMvVDEwMnBkdV9idWlsZF9jbGliIHBhc3MuCisgICAgICAtIFRlc3Rpbmc6IE9idGFpbiB0aGUgTVNZUyBwYXRoIGZyb20gdGhlIGVudmlyb25tZW50CiAKLSAgICBOZXRCU0Q6Ci0gICAgICAtIFVwZGF0ZSBtZW1vcnkgYW5kIENQVSBzdGF0aXN0aWNzIGhhbmRsaW5nCi0KLSAgICBPcGVuQlNEOgotICAgICAgLSBTdXBwb3J0IHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlCisgICAgV2luMzI6CisgICAgICAtIEF2b2lkIHRoYXQgY29tcGlsaW5nIHRoZSBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisJd2l0aCB0aGUgTWluR1cgZ2NjIGNvbXBpbGVyIHRyaWdnZXJzIHdhcm5pbmdzIGFib3V0ICJwcmFnbWEKKwljb21tZW50Ii4KKyAgICAgIC0gQXZvaWQgdGhhdCB0aGUgUEFDS0FHRV8qIG1hY3JvcyBkZWZpbmVkIGluCisJPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYXVzZSB0cm91YmxlIHdoZW4gaW5jbHVkaW5nIHRoaXMKKwloZWFkZXIgaW4gYSBwYWNrYWdlIHRoYXQgdXNlcyB0aGUgR05VIGF1dG90b29scy4KKyAgICAgIC0gQnVpbGRpbmc6IEJ1aWxkcyBub3cgY29ycmVjdGx5IHdpdGggYSA2NC1iaXQgY29tcGlsZXIuIGdpdC1zdm4taWQ6CisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMQorCTk0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgICAtIFNubXBkOiBSZW1vdmUgZGxtb2QKIAogICAgIFdpbmRvd3M6Ci0gICAgICAtIEF2b2lkIHByb2JsZW1zIGlmIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBhcmUgYnVpbHQgd2l0aCBhIGRpZmZlcmVudAotCXZlcnNpb24gb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gdGhhbiB0aGF0IHVzZWQgZm9yIEFjdGl2ZVBlcmwKLSAgICAgIC0gQXZvaWQgcHJvYmxlbXMgd2l0aCBQQUNLQUdFXyogbWFjcm9zIHdoZW4gdXNpbmcgR05VIGF1dG90b29scy4KLSAgICAgIC0gTm93IGJ1aWxkcyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdCBjb21waWxlci4KLSAgICAgIC0gYnVpbGQuYmF0OiBHZW5lcmF0ZSBQREIgZmlsZXMgaW4gcmVsZWFzZSBtb2RlLgotICAgICAgLSBidWlsZC5iYXQ6IEluc3RhbGwgbmV0c25tcC5kbGwgYmVmb3JlIHJ1bm5pbmcgUGVybCByZWdyZXNzaW9uIHRlc3RzCi0gICAgICAtIERlcHJlY2F0ZWQgbGlic25tcC5kZWYgLSB1c2UgTkVUU05NUF9JTVBPUlQgaW5zdGVhZAotICAgICAgLSBGaXggd2luRXh0RExMIGNvbXBpbGVyIHdhcm5pbmdzIChmb2xsb3dpbmcgdV9sb25nIG9pZCB0eXBlZGVmKQotICAgICAgLSBNYWtlIGxpbmtpbmcgd2l0aCByZWNlbnQgT3BlblNTTCBiaW5hcmllcyBzdWNjZWVkLgotICAgICAgLSBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHJvYnVzdCBhZ2FpbnN0IG1lbWFsbG9jIGZhaWx1cmVzLgotICAgICAgLSBQZXJsIG1vZHVsZXMgYnVpbGQgbm93IHdpdGggSVB2NiBlbmFibGVkLgotICAgICAgLSBTbm1wZDogUmVtb3ZlIGRsbW9kCisgICAgICAtIEJ1aWxkaW5nIChidWlsZC5iYXQpOiBJbnN0YWxsIG5ldHNubXAuZGxsIGJlZm9yZSBydW5uaW5nIHRoZSBQZXJsCisJcmVncmVzc2lvbiB0ZXN0cyBzdWNoIHRoYXQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgYXJlIHJ1biB3aXRoIHRoZQorCWNvcnJlY3QgdmVyc2lvbiBvZiBuZXRzbm1wLmRsbC4KKyAgICAgIC0gTVNWQzogQXZvaWQgdGhhdCB0aGUgdHlwZWRlZnMgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCWNvbmZsaWN0IHdpdGggdGhvc2UgaW4gPHN0ZGludC5oPiBmcm9tIHRoZSBtc2ludHR5cGVzIHByb2plY3QKKyAgICAgIC0gTVNWQzogTGluayB3aXRoIHByb3BlciBsaWJlYXkzMiBsaWJyYXJ5CisgICAgICAtIE1TVkM6IFdoZW4gbGlua2luZyB3aXRoIE9wZW5TU0wsIGxpbmsgd2l0aCB1c2VyMzIubGliIHRvbworICAgICAgLSBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHJvYnVzdCBhZ2FpbnN0IG1lbW9yeSBhbGxvY2F0aW9uCisJZmFpbHVyZXMuIE1ha2UgTkVUU05NUF9MQVJHRV9GRF9aRVJPKCkgdXNlIG1lbXNldCgpIG9uIFVuaXggc3lzdGVtcworCWluc3RlYWQgb2YgYW4gZXhwbGljaXQgbG9vcC4gTWFrZSBzdXJlIHRoYXQgb24gVW5peCBzeXN0ZW1zCisJbmV0c25tcF9sYXJnZV9mZF9jbHIoKSBkb2Vzbid0IHRyeSB0byByZWFkIG1lbW9yeSBpdCBpc24ndCBhbGxvd2VkCisJdG8gcmVhZCBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlCisJcGFzc2VkIGJ5IHRoZSBjYWxsZXIpLiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KCkgcmV0dXJuIGZhbHNlCisJb24gVW5peCBzeXN0ZW1zIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBlcXVhbHMgLTEgKGEgdmFsdWUgdGhhdAorCXNob3VsZG4ndCBiZSBwYXNzZWQgYnkgdGhlIGNhbGxlcikuIE1ha2UKKwluZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBzaHJpbmsgYmVoYXZpb3IgY29ycmVjdC4KKyAgICAgIC0gUGVybCAoYnVpbGQuYmF0KTogV2hlbiBpbnN0YWxsaW5nIGRldmVsb3BtZW50IGZpbGVzLCBpbnN0YWxsIHRoZQorCVBEQiBmaWxlcyB0b28uCisgICAgICAtIFJlbW92ZSBzdXBlcmZsdW91cyBsaW5rIGxpYnJhcmllcyBmcm9tIHByb2plY3QgZmlsZXMgKCouZHNwKQogICAgICAgLSBTbm1wdHJhcGQ6IE1ha2UgdGhlIElQIGFkZHJlc3MgdG8gaG9zdG5hbWUgY29udmVyc2lvbiB3b3JrCisgICAgICAtIFRlc3Rpbmc6IHBlcmw6IEZpeCBhbiBpbmNvcnJlY3QgbWVzc2FnZSBwcmludGVkIHdoaWxlIHJ1bm5pbmcgdGhlCisJUGVybCBtb2R1bGUgcmVncmVzc2lvbiB0ZXN0cwogCiAKLSo1LjYuMSoKIAotICAgIGdlbmVyYWw6Ci0gICAgICAtIFVwZ3JhZGVkIERUTFMgc3VwcG9ydCBmcm9tIGFscGhhIHRvIGZ1bGw7IG1lbnRpb24gdGhhdCB0c20gaXMKLQluZWVkZWQgZm9yIFRMUyB0b28KIAorKjUuNy4xKgorCisgICAgc25tcGxpYjoKKyAgICAgIC0gRml4IGEgY3Jhc2ggdGhhdCBjb3VsZCBiZQorICAgICAgLSB0d2VhayBwYXRjaCAzMDQ0ODg4IHRvIHJlc3RvcmUKKworICAgIHNubXBkOgorICAgICAgLSBbUEFUQ0ggMzM4NjYzM106IGZpeCBpbnRlZ2VyIG92ZXJmbG93IGluIGRpc2sgcGVyY2VudCBjYWxjdWxhdGlvbnMKKyAgICAgIC0gTWFrZQorICAgICAgLSBSZXN0b3JlIHN0b3JhZ2UgdGFibGVzIG9uIExpbnV4CisgICAgICAtIHJ1biBzaWduYWwgaGFuZGxlcnMgd2hlbiBzZWxlY3QoKQorCisgICAgc25tcHRyYXBkOgorICAgICAgLSBBZGQgbWlzc2luZyBuZXdsaW5lCisgICAgICAtIEludm9rZSBzaHV0ZG93bl9wZXJsKCkgd2hlbgorCisgICAgYnVpbGRpbmc6CisgICAgICAtIFtQQVRDSCAzMzgzOTUxXTogRml4IC1XdW51c2VkIGNvbXBpbGUgd2FybmluZ3Mgd2l0aCBGcmVlQlNEL05ldEJTRAorCVNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgICAgLSBidWlsZCBmaXgKKyAgICAgIC0gYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcKKworICAgIGxpYm5ldHNubXA6CisgICAgICAtIFtQQVRDSCAzMzg3MTM5XTogZnJvbQorCisgICAgbWFuOgorICAgICAgLSBbUEFUQ0ggMzMxMjg2MV06IE1hbiBwYWdlcworCisgICAgdGVzdGluZzoKKyAgICAgIC0gQ2hhbmdlZAorICAgICAgLSBDaGVjayBQSUQgZmlsZSBleGlzdGVuY2UgYWZ0ZXIgaGF2aW5nIHJlYWQgaXQgaW5zdGVhZCBvZiBiZWZvcmUuCisJVGhpcyBmaXhlcyB0aGUgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlIFBJRCBmaWxlIGRpc2FwcGVhcmVkIGFmdGVyCisJdGhlIGV4aXN0ZW5jZSBjaGVjayBhbmQgYmVmb3JlIGl0IHdhcyByZWFkLgorICAgICAgLSBNYWtlIHRoZSBTTk1QX1ZFUkJPU0U9MSBvdXRwdXQgZXZlbiBtb3JlIHZlcmJvc2UuCisKKyAgICB1bnNwZWNpZmllZDoKKyAgICAgIC0gbWlub3IgTkVXUyBwb2xpc2gKKworICAgIFBlcmw6CisgICAgICAtIFJlbW92ZSBmaWxlIHBlcmwvTmV0U05NUC54cworCisgICAgV2luMzI6CisgICAgICAtIEFkZCBzdXBwb3J0IGZvcgorICAgICAgLSBEb2N1bWVudCBob3cgdG8gYnVpbGQgNjQtYml0CisgICAgICAtIERvY3VtZW50ZWQgaG93IHRvIHVzZSBidWlsZC5iYXQgd2l0aAorICAgICAgLSB3aW5FeHRETEw6IEludm9rZQorCisgICAgV2luZG93czoKKyAgICAgIC0gQXZvaWQgdGhhdCBpZgorICAgICAgLSBSZW1vdmUgb3V0ZGF0ZWQgaW5zdHJ1Y3Rpb25zIGFib3V0CisKKyo1LjcqCiAgICAgc25tcGxpYjoKICAgICAgIC0gQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4KICAgICAgIC0gQWRkZWQgZnVuY3Rpb24gbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKS4gQWRkZWQgZGVjbGFyYXRpb24KQEAgLTEyMywyMCArNjM2LDM5IEBACiAgICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuIEFkZGVkIGRlY2xhcmF0aW9uCiAJZm9yIHRoZSBmdW5jdGlvbiBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkgaW4gYSBwdWJsaWMKIAlhZ2VudCBoZWFkZXIgZmlsZS4gRml4ZWQgbWVtb3J5IGxlYWsgaW4KLQluZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkuIChCYWNrcG9ydGVkIHIxOTQ1MCBhbmQgcjE5NDU0Ci0JZnJvbSB0cnVuay4pCisJbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpLgorICAgICAgLSBBZGRlZCBmdW5jdGlvbiBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCgpLiBBZGRlZCBkZWNsYXJhdGlvbgorCWZvciB0aGUgZnVuY3Rpb24gbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpIGluIGEgcHVibGljCisJYWdlbnQgaGVhZGVyIGZpbGUuIEZpeGVkIG1lbW9yeSBsZWFrIGluCisJbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpLiBGaXhlZCBtZW1vcnkgbGVhayB0cmlnZ2VyZWQgYnkKKwl1bnJlZ2lzdGVyaW5nIGEgdGFibGUgaGFuZGxlci4KICAgICAgIC0gQWRkZWQgbWFjcm8gbmV0c25tcF9zdGF0aWNfYXNzZXJ0KCkuCisgICAgICAtIEFkZGVkIG5ldHNubXBfbWliX2hhbmRsZXIuZGF0YV9jbG9uZSwgYSBmdW5jdGlvbiBwb2ludGVyIHRoYXQKKwlkZWZpbmVzIGhvdyB0byBjbG9uZSBuZXRzbm1wX21pYl9oYW5kbGVyLm15dm9pZC4gTXVzdCBiZSBkZWZpbmVkIGlmCisJYW5kIG9ubHkgaWYgZGF0YV9mcmVlIGlzIHNldC4gVGhlIGZ1bmN0aW9uIG5ldHNubXBfaGFuZGxlcl9kdXAoKQorCWRvZXMgbm93IGNsb25lIE1JQiBoYW5kbGVyIHByaXZhdGUgZGF0YSBpZiBkYXRhX2Nsb25lKCkgaXMgc2V0LgorCVByZXZpb3VzbHkgYWZ0ZXIgZHVwbGljYXRpbmcgYSBNSUIgaGFuZGxlciBhbmQgdW5yZWdpc3RlcmluZyBvbmUgb2YKKwl0aGUgdHdvIE1JQiBoYW5kbGVycywgdGhlIHByaXZhdGUgZGF0YSBwb2ludGVyIChteXZvaWQpIG9mIHRoZQorCW90aGVyIGJlY2FtZSBhIGRhbmdsaW5nIHBvaW50ZXIuIE5vdGU6IGFkZGl0aW9uIG9mCisJbmV0c25tcF9taWJfaGFuZGxlci5kYXRhX2Nsb25lIGlzIGFuIEFCSSBjaGFuZ2UuCiAgICAgICAtIEFkZGVkIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCgpLgorICAgICAgLSBBZGRlZCB0aGUgZnVuY3Rpb24gbmV0c25tcF9jaGVja19kZWZpbmVkbmVzcygpLCB3aGljaCBoZWxwcyB0byBmaW5kCisJdGhlIGNhdXNlIG9mIHVuZGVmaW5lZCB2YWx1ZSBlcnJvcnMgYXMgcmVwb3J0ZWQgYnkgVmFsZ3JpbmQuCiAgICAgICAtIEF2b2lkIHRoYXQgVmFsZ3JpbmQgY29tcGxhaW5zIGFib3V0IHVuaW5pdGlhbGl6ZWQgZGF0YSBmb3IgdGhlCiAJYnVmZmVycyByZXR1cm5lZCBieSBuZXRzbm1wX2NhbGxiYWNrX3JlY3YoKSBhbmQKIAluZXRzbm1wX2NhbGxiYWNrX2hvb2tfYnVpbGQoKS4KICAgICAgIC0gQmUgY29uc3QgY29ycmVjdCBvdmVyIGNhbGxzIHRvIHN0ciogZnVuY3Rpb25zLgogICAgICAgLSBDaGFuZ2VkIHRoZSBhcmd1bWVudCB0eXBlIG9mIGRlYnVnX3JlZ2lzdGVyX3Rva2VucygpIGZyb20gY2hhciAqCi0JaW50byBjb25zdCBjaGFyICouIChCYWNrcG9ydGVkIHIxOTY2NSBhbmQgcjE5NjY2IGZyb20gdGhlIHRydW5rLikKKwlpbnRvIGNvbnN0IGNoYXIgKi4KKyAgICAgIC0gQ2hlY2sgdGhhdCB0aGUgYXJndW1lbnQgdG8gbmV0c25tcF90cmFuc3BvcnRfY29weSBpcyBub24tTlVMTAogICAgICAgLSBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHN0cmR1cCBpbiBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QgYW5kCiAJZmFpbCBpZiBzdHJkdXAgZmFpbHMuCiAgICAgICAtIENvcnJlY3QgdGhlIGV4dGVybiAiQyIgZGVjbGFyYXRpb25zIHRvIGJlIGNvbnNpc3RlbnQuIFJlbW92ZQogCWNvbW1lbnRlZCBvdXQgY29kZS4KKyAgICAgIC0gRmVubmVyOiBmaXggc2VuZGluZyBvZiBVRFAgcmVzcG9uc2VzIGZyb20gbXVsdGlob21lZCBhZ2VudHMuIFRyeSB0bworCXNlbmQgdGhlIHJlc3BvbnNlIGFzIGl0IHdhcyBiZWZvcmUgTmV0LVNOTVAgNS42IChhc3N1bWluZyB0aGUKKwlhcHByb3ByaWF0ZSByZXF1ZXN0IHdhcyB1bmljYXN0KSBhbmQgb25seSBpZiBpdCBmYWlscyB0cnkgdG8gc2V0CisJaWZfaW5kZXggKHRoZSByZXF1ZXN0IG11c3QgYmUgYnJvYWRjYXN0KS4KICAgICAgIC0gRml4ZWQgYnVncyBpbiBhc25fcGFyc2VfdW5zaWduZWRfaW50NjQoKSwKIAlhc25fYnVpbGRfdW5zaWduZWRfaW50NjQoKSwgYXNuX3BhcnNlX3NpZ25lZF9pbnQ2NCgpIGFuZAogCWFzbl9idWlsZF9zaWduZWRfaW50NjQoKS4gTW9zdCBidXQgbm90IGFsbCBvZiB0aGVzZSBidWdzIHdlcmUKQEAgLTE2MSwyNCArNjkzLDEwMSBAQAogCWJ5IHRoZSAodW5kb2N1bWVudGVkKSBzbm1wZC5jb25mICJlbnVtIiBrZXl3b3JkIGhhbmRsZXIgLSBzdG9yaW5nCiAJcG9pbnRlcnMgdG8gc3RyaW5ncyBhbGxvY2F0ZWQgb24gdGhlIHN0YWNrIGluIGEgZ2xvYmFsIGxpc3QgZG9lcwogCW5vdCB3b3JrLgotICAgICAgLSBJbnZva2luZyBzZV9jbGVhcl9zbGlzdCgpIGRvZXMgbm8gbG9uZ2VyIGNyZWF0ZSBhIGRhbmdsaW5nIHBvaW50ZXIuCi0JRml4ZWQgbGVha3MtYXQtZXhpdCB0cmlnZ2VyZWQgYnkgdXNpbmcgdGhlIHNubXBfZW51bSBjb2RlLgotCURvY3VtZW50ZWQgYmVoYXZpb3Igb2Ygc2VfYWRkX3BhaXIoKSwgc2VfYWRkX3BhaXJfdG9fc2xpc3QoKSBhbmQKLQljbGVhcl9zbm1wX2VudW0oKS4gTWFkZSBzbm1wX2VudW0gZXhhbXBsZSBjb25zaXN0ZW50IHdpdGggdGhlIHJlc3QKLQlvZiB0aGUgY29kZSBieSBhZGRpbmcgc3RyZHVwKCkgY2FsbHMgYW5kIGFkZGVkIGEgY2FsbCB0bwotCXNlX2NsZWFyX2FsbF9saXN0cygpLiBGaXhlZCBhIG1lbW9yeSBjb3JydXB0aW9uIHByb2JsZW0gdHJpZ2dlcmVkCi0JYnkgdGhlICh1bmRvY3VtZW50ZWQpIHNubXBkLmNvbmYgImVudW0iIGtleXdvcmQgaGFuZGxlciAtIHN0b3JpbmcKLQlwb2ludGVycyB0byBzdHJpbmdzIGFsbG9jYXRlZCBvbiB0aGUgc3RhY2sgaW4gYSBnbG9iYWwgbGlzdCBkb2VzCi0Jbm90IHdvcmsuIAorICAgICAgLSBSZW1vdmUgdGhlIHN1cHBvcnQgZm9yIENNVSBjb21wYXRpYmlsaXR5IHNpbmNlIHRoZXJlIGlzIG5vIHdheSB0bworCWVuYWJsZSBpdCBhbmQgbm9ib2R5IGhhdmUgbWlzc2VkIGl0LgorICAgICAgLSBbQlVHIDMxMzQzMjNdOiBGaXggY3Jhc2ggd2hlbiBjb21wYXJpbmcgaW52YWxpZCBPSURzCisgICAgICAtIFtQQVRDSCAzMTY1ODc4XTogQ2F0Y2ggYnVmZmVyIG92ZXJydW4gb24gNjQtYml0IHN5c3RlbXMKKyAgICAgIC0gW1BBVENIIDMxOTU1MzddOiBNaW5vciBiaW5hcnlfYXJyYXkgY29udGFpbmVyIHNvcnQgb3B0aW1pemF0aW9uCisgICAgICAtIFtQQVRDSCAzMjAzODA2XTogQWRkIHRoZSBmdW5jdGlvbiBuZXRzbm1wX2xhcmdlX3NlbGVjdCgpLgorICAgICAgLSBbUEFUQ0ggMzIwMzgwNl06IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgY2xlYXIgYWxsCisJcmVsZXZhbnQgZmlsZSBkZXNjcmlwdG9ycy4KKyAgICAgIC0gW1BBVENIIDMyMDM4MDZdOiBNaW5vciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb2YKKwluZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKS4KKyAgICAgIC0gYWRkIElQdjYgc3VwcG9ydCB0byBEVExTVURQIHRyYW5zcG9ydAorICAgICAgLSBhZGQgSVB2NiBzdXBwb3J0IHRvIERUTFNVRFAgdHJhbnNwb3J0IHVzZSBuZXcKKwluZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgaW4gbmV0c25tcF9hZGRyX3BhaXIKKyAgICAgIC0gYWRkIElQdjYgc3VwcG9ydCB0byBEVExTVURQIHRyYW5zcG9ydCB1c2UgbmV3CisJbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlIGluIG5ldHNubXBfYWRkcl9wYWlyIGFkZCBiYXNlX3RyYW5zcG9ydAorCXB0ciBmb3IgdHVubmVsZWQgdHJhbnNwb3J0cworICAgICAgLSBhZGQgbW9yZSBvcGVuc3NsIGVycm9yIGNhc2VzIHdoZXJlIHdlIGNoZWNrIGZvciBsb2NhbCBjZXJ0CisgICAgICAtIGFkZCBuZXcgdHJhbnNwb3J0IGNvbmZpZyB0b2tlbnMgbG9jYWxDZXJ0L3BlZXJDZXJ0LCBkZXByZWNhdGUKKwlvdXJfaWRlbnRpdHksIHRoZWlyX2lkZW50aXR5CisgICAgICAtIGFkZCBvcHRpb25hbCBzdXBwb3J0IGZvciBsb2NhbCBETlNTRUMgdmFsaWRhdGlvbiBvZiBob3N0bmFtZXMJLQorCW9wdGlvbmFsIGF0IGNvbmZpZ3VyZSB0aW1lOiAtLXdpdGgtbG9jYWwtZG5zc2VjLXZhbGlkYXRpb24gLQorCXJlcXVpcmVzIEROU1NFQy1Ub29sIHZhbGlkYXRpb24gbGlicmFyaWVzIC0gaW5pdGlhbCBzdXBwb3J0LCBmb3IKKwlzeXN0ZW1zIHdpdGggZ2V0YWRkcmluZm8uIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgcmVzb2x2ZXIKKwlpbnRlcmZhY2VzIGNvbWluZyBzb29uLiAtIGFsc28gVE9ETzogZmxhZyBmb3IgaWdub3JpbmcgdmFsaWRhdG9pbgorCWVycm9ycyAobG9nICYgY29udGludWUpCisgICAgICAtIGRvbnQgcmV0dXJuIGVtcHR5IGFycmF5CiAgICAgICAtIGZvcmNlIGEgOyBhdCB0aGUgZW5kIG9mIHRoZSBzdGF0aWNfYXNzZXJ0IG1hY3JvLgorICAgICAgLSBpbnRyb2R1Y2UgbmV3IGxvY2FsQ2VydC9wZWVyQ2VydCwgZGVwcmVjYXRlIHNlcnZlckNlcnQsIGNsaWVudENlcnQsCisJZGVmWDUwOVNlcnZlclB1YiwgZGVmWDUwOUNsaWVudFB1YgogICAgICAgLSBuZXRzbm1wX2hhbmRsZXJfZHVwKCk6IGZyZWVpbmcgdGhlIGR1cGxpY2F0ZWQgaGFuZGxlciBubyBsb25nZXIKIAljYXVzZXMgYSBjcmFzaCAoZG91YmxlIGZyZWUpIHdoZW4gaGFuZGxlci0+bXl2b2lkIG9mIHRoZSBvcmlnaW5hbAogCWhhbmRsZXIgd2FzIG5vbi1OVUxMLgorICAgICAgLSByZWFsbG9jK2luaXQgaW5zdGVhZCBvZiBjYWxsb2MgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tCisJU3RlcGhlbiBIZW1taW5nZXIKKyAgICAgIC0gcmVmaW5lIGNlcnQgZGVidWdnaW5nOyByZW1vdmUgdW51c2VkIGZ1bmN0aW9uCisgICAgICAtIHJlbW92ZSBpbmxpbmUgdmVyc2lvbnMgb2YgY29udGFpbmVyIGZ1bmNzCisgICAgICAtIHNubXBfc2h1dGRvd24oKTogYWRkZWQgY2FsbCB0byBuZXRzbm1wX2NlcnRzX3NodXRkb3duKCkuCisgICAgICAtIDAgQXBwbGllZCB0aGUgaW50ZW50IG9mIHBhdGNoIDMwNDQ4ODggdG8gYWxsb3cgYXBwbGljYXRpb25zIHRvIHJlYWQKKwl0aGUgZXJyb3IgbWVzc2FnZXMgb2YgYSBNSUIgcGFyc2luZyBmYWlsdXJlLgorICAgICAgLSBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHNubXBfZnJlZV9zZXNzaW9uKCkuCisgICAgICAtIFtCVUcgMzE4NDY5N106IERvbid0IHJlZmVyZW5jZSBpbnRlcm5hbCBNRDUgd2hlbiBpdCdzIGV4cGxpY2l0bHkKKwlkaXNhYmxlZAorICAgICAgLSBbQlVHIDMyMzQ3NTRdOiBFbnN1cmUgb2xkIGZfY3JlYXRlX2Zyb21fdHN0cmluZyBob29rIGlzIGluaXRpYWxpemVkCisJdG8gTlVMTAorICAgICAgLSBbQlVHIDMyNjQ4NTJdOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMKKwkoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpCisgICAgICAtIF9taWJpbmRleF9hZGQoKSBubyBsb25nZXIgcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBkeW5hbWljYWxseQorCWFsbG9jYXRlZCBhcnJheSBfbWliaW5kZXhlcy4KKyAgICAgIC0gW0JVRyAzMTUxODQ1XTogZml4IG11bHRpcGxlIHJlZ2lzdHJhdGlvbnMgb2Ygc25tcCB0cmFuc3BvcnQgaGFuZGxlcgorCisgICAgc25tcDoKKyAgICAgIC0gcGF0Y2g6IDMwOTY3MjU6IHN5c09SVGFibGUgcmVnaXN0YXRpb24gZm9yIG5vdGlmaWNhdGlvbiBsb2cgbWliCisJb3JpZ2luYWwgcGF0Y2ggZml4ZWQgc2V2ZXJhbCBpc3N1ZXMsIG90aGVyIHBhcnRzIGFwcGxpZWQgZWFybGllcgogCiAgICAgc25tcGQ6Ci0gICAgICAtIFBhdGNoIDMxNDE0NjI6IGZyb20gZmVubmVyOiBmaXggYWdlbnR4IHN1YmFnZW50IGlzc3VlcyB3aXRoCi0JbXVsdGlwbGUtb2JqZWN0IHJlcXVlc3RzCi0gICAgICAtIFBhdGNoIGZyb20gTmllbHMgdG8gZml4IFZBQ00gcGVyc2lzdGFudCBzdG9yYWdlLgorICAgICAgLSBBZGQgbWlzc2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbgorICAgICAgLSBBZGRlZCBmdW5jdGlvbnMgbmV0c25tcF9oYW5kbGVyX293bnNfdGFicmVxKCksCisJbmV0c25tcF9yZWdpc3RyYXRpb25fb3duc190YWJyZXEoKSwgbmV0c25tcF9pdGVyYXRvcl9jbG9uZSgpLgorCUV4cG9ydGVkIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fY2xvbmUoKS4KKyAgICAgIC0gQWRkZWQgZnVuY3Rpb25zIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYnJlcSgpLAorCW5ldHNubXBfcmVnaXN0cmF0aW9uX293bnNfdGFicmVxKCksIG5ldHNubXBfaXRlcmF0b3JfY2xvbmUoKS4KKwlFeHBvcnRlZCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2Nsb25lKCkuIE1vZGlmaWVkCisJbmV0c25tcF9pdGVyYXRvcl9kZWxldGVfdGFibGUoKSBzdWNoIHRoYXQgaXQgZnJlZXMgdGhlIHRhYmxlCisJcmVnaXN0cmF0aW9uIGluZm9ybWF0aW9uIHN0b3JlZCBpbiBhIHRhYmxlIGl0ZXJhdG9yIHRvby4gTW9kaWZpZWQKKwluZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcl9oYW5kbGVyKCkgc3VjaCB0aGF0IHRoZSB0YWJsZSBpdGVyYXRvcgorCXBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGlzIGZyZWVkIHdoZW4gdGhlIGFzc29jaWF0ZWQgaGFuZGxlciBpcworCWZyZWVkLiBSZXN0b3JlZCB0aGUgYmVoYXZpb3Igb2YgbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcigpIHRvIHRoYXQKKwlvZiByMTk0NDksIHRoYXQgaXMsIG5vdCBzZXR0aW5nIHVwIHRoZSBkYXRhX2ZyZWUgcG9pbnRlciBiZWNhdXNlCisJbm90IGFsbCBjYWxsZXJzIG9mIG5ldHNubXBfZ2V0X3RhYmxlX2hhbmRsZXIoKSBleHBlY3QgdGhhdCB0YWJsZQorCXJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBpcyBmcmVlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIGhhbmRsZXIgaXMKKwlmcmVlZC4KKyAgICAgIC0gQWRkZWQgbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3IyKCkuCisgICAgICAtIEFkZGVkIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yMigpLiBBZGRlZAorCW5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKCkuCisgICAgICAtIEFkZGVkIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yMigpLiBBZGRlZAorCW5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKCkuIEFkZGVkCisJbmV0c25tcF9oYW5kbGVyX293bnNfaXRlcmF0b3JfaW5mbygpLgorICAgICAgLSBBZGRlZCBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcjIoKS4gQWRkZWQKKwluZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMigpLiBBZGRlZAorCW5ldHNubXBfaGFuZGxlcl9vd25zX2l0ZXJhdG9yX2luZm8oKS4gRml4ZWQgbGVhay1hdC1leGl0IHRyaWdnZXJlZAorCWJ5IHNubXBOb3RpZnlUYWJsZS4KKyAgICAgIC0gQWRkZWQgbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3IyKCkuIEFkZGVkCisJbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIoKS4gQWRkZWQKKwluZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKCkuIEZpeGVkIGxlYWstYXQtZXhpdCB0cmlnZ2VyZWQKKwlieSBzbm1wTm90aWZ5VGFibGUuIEZpeGVkIGxlYWstYXQtZXhpdCB0cmlnZ2VyZWQgYnkKKwlzbm1wVGFyZ2V0QWRkclRhYmxlLiBBbHNvLCByZXN0b3JlZCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBvZgorCW5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IoKS4KKyAgICAgIC0gQWRkZWQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigpLAorCW5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKCksIG5ldHNubXBfY2xvbmVfd2F0Y2hlcl9pbmZvKCkKKwlhbmQgbmV0c25tcF9vd25zX3dhdGNoZXJfaW5mbygpLiBTZWUgYWxzbyB0aGUgRG94eWdlbiBjb21tZW50cyBmb3IKKwltb3JlIGluZm8uCisgICAgICAtIEFkZGVkIG5ldHNubXBfdW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUoKS4KKyAgICAgIC0gQWRkZWQgcmVmZXJlbmNlIGNvdW50IGluIHRoZSBuZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXMgZGF0YQorCXN0cnVjdHVyZSBhbmQgbWFkZSBzdXJlIHRoYXQgdGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBhdXRvbWF0aWNhbGx5CisJZnJlZWQgd2hlbiB0aGUgaGFuZGxlciB0aGF0IG93bnMgaXQgaXMgdW5yZWdpc3RlcmVkLgogICAgICAgLSBBZGRlZCBzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAoKS4gQ2FsbCBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQoKSBhbmQKIAlzaHV0ZG93bl9hZ2VudCgpIGR1cmluZyBzaHV0ZG93bi4KICAgICAgIC0gQWRkZWQgc25tcF9zZXNzX3Nlc3Npb25fbG9va3VwKCkuIENhbGwgc2h1dGRvd25fbWFzdGVyX2FnZW50KCkgYW5kCkBAIC0yMDMsMTAgKzgxMiw2OSBAQAogCXN1Y2ggdGhhdCBpdCBuZXZlciBleGFtaW5lcyBzZXNzaW9ucyB0aGF0IGFscmVhZHkgaGF2ZSBiZWVuIGNsb3NlZC4KIAlJdCBpcyBmb3IgdGhpcyBjaGFuZ2UgdGhhdCBpdCB3YXMgbmVjZXNzYXJ5IHRvIGludHJvZHVjZSB0aGUgbmV3CiAJZnVuY3Rpb24gc25tcF9zZXNzX3Nlc3Npb25fbG9va3VwKCkuCisgICAgICAtIEFkZGVkIHRoZSBmdW5jdGlvbnMgbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoKSBhbmQKKwluZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZSgpLgorICAgICAgLSBBZGRlZCB0aGUgZnVuY3Rpb25zIG5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlKCkgYW5kCisJbmV0c25tcF9jYWNoZV9oYW5kbGVyX293bnNfY2FjaGUoKS4gTWVtb3J5IGFsbG9jYXRlZCBieQorCW5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpIGZvciBzdG9yaW5nIFNOTVAgdmFyaWFibGVzIGlzIG5vdyBmcmVlZAorCXdoZW4gdGhlIGFzc29jaWF0ZWQgaGFuZGxlciBpcyB1bnJlZ2lzdGVyZWQuCisgICAgICAtIEFkZGVkIHRoZSBmdW5jdGlvbnMgbmV0c25tcF9kdXBsaWNhdGVfdmFyaWFibGUoKSBhbmQKKwluZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZSgpLiBNZW1vcnkgYWxsb2NhdGVkIGJ5CisJbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkgZm9yIHN0b3JpbmcgU05NUCB2YXJpYWJsZXMgaXMgbm93IGZyZWVkCisJd2hlbiB0aGUgYXNzb2NpYXRlZCBoYW5kbGVyIGlzIHVucmVnaXN0ZXJlZC4gQ2FsbGJhY2sgZnVuY3Rpb24gZGF0YQorCWRlYWxsb2NhdGlvbiBkb2VzIG5vIGxvbmdlciBmcmVlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUKKwlBZ2VudFggc2Vzc2lvbiAtIHRoZSBtZW1vcnkgdGhhdCB3YXMgYWxsb2NhdGVkIGZvciBBZ2VudFggc2Vzc2lvbnMKKwlpcyBub3cgZGVhbGxvY2F0ZWQganVzdCBhcyB0aGF0IGZvciBhbnkgb3RoZXIgc2Vzc2lvbi4gVGhpcyBmaXhlcyBhCisJbGVhay1hdC1leGl0LgorICAgICAgLSBBZGRlZCB0aGUgZnVuY3Rpb25zIG5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlKCkgYW5kCisJbmV0c25tcF9jYWNoZV9oYW5kbGVyX293bnNfY2FjaGUoKS4gTWVtb3J5IGFsbG9jYXRlZCBieQorCW5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpIGZvciBzdG9yaW5nIFNOTVAgdmFyaWFibGVzIGlzIG5vdyBmcmVlZAorCXdoZW4gdGhlIGFzc29jaWF0ZWQgaGFuZGxlciBpcyB1bnJlZ2lzdGVyZWQuIENhbGxiYWNrIGZ1bmN0aW9uIGRhdGEKKwlkZWFsbG9jYXRpb24gZG9lcyBubyBsb25nZXIgZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlCisJQWdlbnRYIHNlc3Npb24gLSB0aGUgbWVtb3J5IHRoYXQgd2FzIGFsbG9jYXRlZCBmb3IgQWdlbnRYIHNlc3Npb25zCisJaXMgbm93IGRlYWxsb2NhdGVkIGp1c3QgYXMgdGhhdCBmb3IgYW55IG90aGVyIHNlc3Npb24uIFRoaXMgZml4ZXMgYQorCWxlYWstYXQtZXhpdC4gTm90aWZ5IGZpbHRlciB0YWJsZTogQ2FsbGJhY2sgZnVuY3Rpb24gZGF0YQorCWRlYWxsb2NhdGlvbiBkb2VzIG5vIGxvbmdlciBmcmVlIHRoZSBkYXRhIGluICoJICAKKwkqc25tcE5vdGlmeUZpbHRlclRhYmxlX2lmX2N0eC5jb250YWluZXIgLSB0aGlzIGlzIG5vdyBkb25lIGJ5ICAKKwlzaHV0ZG93bl9zbm1wTm90aWZ5RmlsdGVyVGFibGUoKSBhbmQKKyAgICAgIC0gQXV0b21hdGljYWxseSBmcmVlIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0dXJlIGFsbG9jYXRlZCBieQorCW5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0KCkuCisgICAgICAtIEJ1aWxkcyB3aXRoIG1vc3QgcmVjZW50IE1pbkdXIChoYXZpbmcgI2RlZmluZSBsb2NhbHRpbWVfcikuCisgICAgICAtIENvdW50IHRoZSBudW1iZXIgb2YgdXNlcnMgb2YgYSBuZXRzbm1wX2NhY2hlIGRhdGEgc3RydWN0dXJlIGluc3RlYWQKKwlvZiBkdXBsaWNhdGluZyBpdC4KKyAgICAgIC0gRGVjbGFyZSB0aGUgT0lEIGFyZ3VtZW50IHR5cGUgb2YgTUlCIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXMKKwknY29uc3Qgb2lkIConIGluc3RlYWQgb2YgJ29pZCAqJyBzaW5jZSB0aGVzZSBmdW5jdGlvbnMgZG8gbm90CisJbW9kaWZ5IHRoZSBPSUQuCisgICAgICAtIERvIG5vdCBsZWFrIHRoZSBsaW1pdHMgb2Ygc2NhbGFyX2dyb3VwIG9iamVjdHMgb24gc2h1dGRvd24uCisgICAgICAtIEV4dGVuZCB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZGF0YV9jbG9uZSBhbmQgZGF0YV9mcmVlCisgICAgICAtIEZhY3RvciBvdXQgY29tbW9uIGNvbmZpZ19hZGRfbWliIHN0YXRtZW50cworICAgICAgLSBGaW5kIG91dCB3aGV0aGVyIGxpYnJwbSBpcyBhdmFpbGFibGUgYmVmb3JlIGNvbmZpZ3VyaW5nIHRoZSBhZ2VudAorCW1vZHVsZXMgYmVjYXVzZSBob3N0L2RhdGEvYWNjZXNzL3N3aW5zdCBuZWVkcyBzeW1ib2wgSEFWRV9MSUJSUE0uCisJQXMgYSByZXN1bHQsIGNvbmZpZ3VyZSBoYXMgdG8gYmUgcnVuIG9ubHkgb25jZSBpbnN0ZWFkIG9mIHR3aWNlIHRvCisJZW5hYmxlIHRoZSBoclNXSW5zdGFsbGVkIHRhYmxlIG9uIHN5c3RlbXMgdGhhdCBoYXZlIGxpYnJwbS4KICAgICAgIC0gRml4ZWQgYSBkb3VibGUgZnJlZSBhdCBleGl0IHRoYXQgd2FzIHRyaWdnZXJlZCBieSBjbGVhbmluZyB1cCB0aGUKIAlkYXRhIHN0cnVjdHVyZXMgdXNlZCBmb3IgZW1iZWRkZWQgUGVybCBzdXBwb3J0LgotICAgICAgLSBGaXhlZCBvcmRlciBvZiBycG1saWIgZGV0ZWN0aW9uIGFuZCBhZ2VudCBtb2R1bGUgY29uZmlndXJhdGlvbgotCShiYWNrcG9ydGVkIHIxOTYyMSBmcm9tIHRydW5rKS4KKyAgICAgIC0gRml4ZWQgYSB5ZWFyLTIwMzggYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBpcFJvdXRlVGFibGUuCisgICAgICAtIEludHJvZHVjZWQgbmV0c25tcF9waWRfdC4KKyAgICAgIC0gTUlCLXNwZWNpZmljIGxlYWstYXQtZXhpdCBmaXhlcy4KKyAgICAgIC0gTWFrZSBpdCBwb3NzaWJsZSB0byBjb3B5IHdhdGNoZWQgZGF0YSBpdGVtcyB3aXRob3V0IG1lbW9yeSBsZWFrcy4KKyAgICAgIC0gTWFrZSB0aGUgc2V0dGluZyBvZiB0aGUgYXJndnJlc3RhcnQqIHZhcmlhYmxlcyBvcHRpb25hbCBvbgorCVVTSU5HX1VUSUxfRlVOQ1NfUkVTVEFSVF9NT0RVTEUuCisgICAgICAtIE1ha2UgdGhlIHNldHRpbmcgb2YgdGhlIGFyZ3ZyZXN0YXJ0KiB2YXJpYWJsZXMgb3B0aW9uYWwgb24KKwlVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFLiBSZW1vdmUgdXRpbF9mdW5jcy9yZXN0YXJ0IGZyb20gdGhlCisJcmVxdWlyZW1lbnQgc2V0cyBvZiB1dGlsX2Z1bmNzIGFuZCBkZWZhdWx0X21vZHVsZXMuCisgICAgICAtIE1ha2UgdGhlIHNldHRpbmcgb2YgdGhlIGFyZ3ZyZXN0YXJ0KiB2YXJpYWJsZXMgb3B0aW9uYWwgb24KKwlVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFLiBSZW1vdmUgdXRpbF9mdW5jcy9yZXN0YXJ0IGZyb20gdGhlCisJcmVxdWlyZW1lbnQgc2V0cyBvZiB1dGlsX2Z1bmNzIGFuZCBkZWZhdWx0X21vZHVsZXMuIEFkZAorCXV0aWxfZnVuY3MvcmVzdGFydCB0byB0aGUgcmVxdWlyZW1lbnQgc2V0IG9mIHVjZC1zbm1wL3ZlcnNpb25pbmZvLgorICAgICAgLSBQYXRjaCAzMTQxNDYyOiBmcm9tIGZlbm5lcjogZml4IGFnZW50eCBzdWJhZ2VudCBpc3N1ZXMgd2l0aAorCW11bHRpcGxlLW9iamVjdCByZXF1ZXN0cworICAgICAgLSBQYXRjaCBmcm9tIE5pZWxzIHRvIGZpeCBWQUNNIHBlcnNpc3RhbnQgc3RvcmFnZS4KKyAgICAgIC0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBjbXAKKyAgICAgIC0gUmVtb3ZlIHV0aWxfZnVuY3MvRXhpdCBmcm9tIHRoZSByZXF1aXJlbWVudCBzZXRzIG9mIHV0aWxfZnVuY3MgYW5kCisJZGVmYXVsdF9tb2R1bGVzLgorICAgICAgLSBSZW1vdmUgdXRpbF9mdW5jcy9FeGl0IGZyb20gdGhlIHJlcXVpcmVtZW50IHNldHMgb2YgdXRpbF9mdW5jcyBhbmQKKwlkZWZhdWx0X21vZHVsZXMuIE5ldmVyIHVzZSBFeGl0IHRvIHRlcm1pbmF0ZSB0aGUgYWdlbnQuCiAgICAgICAtIFJlbW92aW5nIHRoZSBsYXN0IGNhY2hlIHZpYSBuZXRzbm1wX2NhY2hlX3JlbW92ZSgpIGRvZXMgbm8gbG9uZ2VyCiAJdHJpZ2dlciBhIGNyYXNoLgogICAgICAgLSBVcGRhdGUgdGhlIGxlbmd0aCBvZiBzeXNPYmplY3RJRCBhcyB3ZWxsIGFzIHRoZSBkYXRhIHdoZW4gaXQgaXMgc2V0CkBAIC0yMTgsMjYgKzg4Niw1NCBAQAogICAgICAgLSBbQlVHIDMwNTgxMDFdOiBXcml0ZWFibGUgJ2xvbmcnIGluc3RhbmNlcyB3b3JrIG9uIDY0LWJpdCBzeXN0ZW1zLAogCWJ1dCBub3Qgd3JpdGFibGUgJ2ludCdzCiAgICAgICAtIFtCVUcgMzA2MjUzOF06IEZpeCBjb20yc2VjKiBoYW5kbGluZyBvZiBub24tZGVmYXVsdCBjb250ZXh0cworICAgICAgLSBbQlVHIDMyMDU3NjVdOiBoYW5kbGUgcmVjb25maWcgZm9yIGNlcnRTZWNOYW1lIHRva2VuCiAgICAgICAtIFtCVUcgXTogZW5mb3JjZSBtYXggbGVuZ3RoIG9uIFRMUyBzZWNOYW1lIG1hcHMKKyAgICAgIC0gW0JVRyBdOiBlbmZvcmNlIG1heCBsZW5ndGggb24gVExTIHNlY05hbWUgbWFwcyBhZGQgcHJpb3JpdHkgdG8KKwlzZWNuYW1lIGRlYnVnZ2luZwogICAgICAgLSBbUEFUQ0ggMjExOTcyNV06IEZpeCBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzIGhhbmRsaW5nIG9mCiAJaHJTdG9yYWdlVGFibGUKKyAgICAgIC0gW1BBVENIIDI5NDE4MTFdOiBIYW5kbGUgc3VjY2Vzc2Z1bCByZXF1ZXN0cyB3aXRoIHJlcUlEIDAKKyAgICAgIC0gW1BBVENIIDI5NzUyNTRdOiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zIFFuOgorCVNob3VsZCB0aGlzIGFsc28gYmUgYXBwbGllZCB3aGVuIG1haW4gc2Vzc2lvbiBpcyBOVUxMPwogICAgICAgLSBbUEFUQ0ggMzA1MzQzNl06IGZyb206IHRha2V2b3M6IGZpeDogdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzCiAJaW52YWxpZCBtZW1vcnkgYWNjZXNzCiAgICAgICAtIFtQQVRDSCAzMDU3MDkwXTogbWFrZSBldGh0b29sIHN1cHBvcnQgb24gbGludXggdXNlIHRoZSBoaWdoIHNwZWVkCiAJc3RydWN0IGluZm8gZm9yIDEwMEcrLgorICAgICAgLSBbUEFUQ0ggMzA1NzA5M106IGFsbG93IGxpbnV4IHRvIHVzZSBsaWJwY2kgZm9yIGNyZWF0aW5nIHVzZWZ1bAorCWlmRGVzY3Igc3RyaW5ncwogICAgICAgLSBbUEFUQ0ggMzA5NjcyNV06IERvbid0IHJlZ2lzdGVyIHYxVHJhcCBjYWxsYmFjaywgaWYgU05NUHYxIGlzIG5vdAogCXN1cHBvcnRlZAogICAgICAgLSBbUEFUQ0ggMzA5NjcyNV06IEluY2x1ZGUgU05NUHYxIHRyYXAgT0lEcyBpbiBubG1Mb2dOb3RpZmljYXRpb25JRAogCWNvbHVtbgorICAgICAgLSBbUEFUQ0ggMzEyNTk2XTogbGlzdGVuIGZvciBuZXRsaW5rIGNoYW5nZSBldmVudHMgZm9yIHRoZQorCWFycC1yZWxhdGVkIHRhYmxlcworICAgICAgLSBbUEFUQ0ggMzE1MjQxMl06IEhhbmRsZSAoYW5kIHJlcG9ydCkgcHJvYmxlbXMgcmVhZGluZyAvcHJvYy92bXN0YXQKKyAgICAgIC0gW1BBVENIIDMyMDM4MDZdOiBBdm9pZCB0aGF0IHRoZSBtYWluIGFnZW50IHByb2Nlc3NpbmcgbG9vcCAtIHdoZW4KKwl1c2luZyBtb3JlIHRoYW4gRkRfU0VUU0laRSBmaWxlIGRlc2NyaXB0b3JzIC0gY2FuIGNhdXNlIG1lbW9yeQorCWNvcnJ1cHRpb24gYnkgaW52b2tpbmcgc2VsZWN0KCkuCisgICAgICAtIFtQQVRDSCBdOiBvcHRpbWl6YXRpb25zIGZvciBsYXJnZSByb3V0ZSB0YWJsZXMgZnJvbSBTdGVwaGVuCisJSGVtbWluZ2VyIGFwcGxpZWQgcGFydHMgMS0zIG9mIDQgZnJvbSBoaW0gKG1zZ3MgdG8gY29kZXJzIG9uCisJMi8yOC8xMTsgc3ViamVjdCBpcC1mb3J3YXJkLW1pYiBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHM7IHBhcnQgNAorCW5lZWRzIG1vcmUgd29yawogICAgICAgLSBhZGQgZGVidWcgZm9yIGNlcnQgZmluZCBoaW50IGFzIHN0cmluZy9pbnQKLSAgICAgIC0gYWRkIGRlYnVnIGZvciBzc2wgY2lwaGVycywgY2xhcmlmeSBmaW5nZXJwcmludCBtYXRjaCBkZWJ1ZworICAgICAgLSBhZGQgbmV3bHkgY3JlYXRlZC9kZXN0cm95ZWQgaW50ZXJmYWNlcyB0byBpcHY2SWZUYWJsZSBUaGUgbGlzdCBvZgorCWludGVyZmFjZXMgd2FzIG5ldmVyIHJlZnJlc2hlZCwgbm93IGl0IGlzIHJlbG9hZGVkIGV2ZXJ5IHRpbWUgdGhlCisJdGFibGUgaXMgYWNjZXNzZWQuIEkndmUgYWxzbyBmaXhlZCBhIG1lbW9yeSBsZWFrIGFuZCBvcHRpbWl6ZWQgdGhlCisJbG9hZGluZyBvZiB0aGUgbGlzdCBhIGJpdC4KICAgICAgIC0gY29tMnNlYzYgZGlyZWN0aXZlOiBJZiBjb25maWd1cmUgaGFzIG5vdCBmb3VuZCBnZXRhZGRyaW5mbygpLAogCW5vbi1udW1lcmljIElQdjYgYWRkcmVzc2VzIGRvIG5vdyB0cmlnZ2VyIGFuIGVycm9yIG1lc3NhZ2UuCi0JKEJhY2twb3J0ZWQgcjE5NjUwLikKLSAgICAgIC0gZG9uJ3Qgc2Vjb25kLWd1ZXNzIGNhY2hlIGhhbmRsZXIgICAod2F2ZXMgaGFuZCkgdGhpcyBpcyBub3QgdGhlCisgICAgICAtIGRvbid0IHNlY29uZC1ndWVzcyBjYWNoZSBoYW5kbGVyICh3YXZlcyBoYW5kKSB0aGlzIGlzIG5vdCB0aGUKIAlmdW5jdGlvbiB5b3UgYXJlIGxvb2tpbmcgZm9yLiBuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKCkgaXMgbm90IG1lYW50CiAJZm9yIG1pYiBtb2R1bGVzCisgICAgICAtIGV4YW1wbGUgTUlCOiBBZGRlZCBzaHV0ZG93biBmdW5jdGlvbiB0aGF0IGZyZWVzIGFsbCBtZW1vcnkgb3duZWQgYnkKKwl0aGlzIE1JQiBpbXBsZW1lbnRhdGlvbi4KICAgICAgIC0gZml4IGRvdWJsZSBmcmVlIGluIFRMUyBlcnJvciBoYW5kbGluZworICAgICAgLSBmaXhlZCB0aGUgYWdlbnQgd3JpdGluZyAnbG9va3MgbGlrZSBhIDY0Yml0IHdyYXAsIGJ1dCBwcmV2IT1uZXcnIGluCisJc3lzbG9nIHdoZW4gY29tcHV0aW5nIGlwU3lzdGVtU3RhdHMgV2l0aG91dCB0aGUgbWVtY3B5LAorCXByZXZfdmFscy0+c3RhdHMgYW5kIG5ld192YWxzLT5zdGF0cyBjb3VsZCBnZXQgZGlmZmVyZW50LCB3aGljaAorCWNvdWxkIG11Y2ggbXVjaCBsYXRlciAod2hlbiBhIGNvdW50ZXIgZ2V0cyBiaWdnZXIgdGhhbiAzMiBiaXRzKQorCXJlc3VsdCBpbiAncHJldiE9bmV3JyBtZXNzYWdlIGluIHN5c2xvZy4gVHlwaWNhbGx5IHRoaXMgaGFwcGVucworCWFmdGVyIGxvbmcgdGltZSBvZiB1cHRpbWUgYW5kIGl0IGlzIHZlcnkgaGFyZCB0byByZXByb2R1Y2UuCiAgICAgICAtIGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbTogRml4ZWQgYSBtZW1vcnkgbGVhayBpbgogCW5ldHNubV9zd2luc3RfYXJjaF9pbml0KCkuCiAgICAgICAtIGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbTogUGFzcyBjb3JyZWN0IHBhdGggdG8gcnBtZGJPcGVuKCkgc3VjaApAQCAtMjQ5LDE3ICs5NDUsNDEgQEAKIAlpbml0cyB0byBuZXcgYWdlbnQgY2VydCBpbml0IGZ1bmN0aW9uLCBjYWxsZWQgZnJvbSBpbml0X2FnZW50LgogICAgICAgLSBuZXRzbm1wX2NhY2hlX2ZyZWUoKTogQSBtb3JlIGRldGFpbGVkIG1lc3NhZ2UgaXMgbm93IGxvZ2dlZCB3aGVuCiAJYXR0ZW1wdGluZyB0byBmcmVlIGEgY2FjaGUgdGhhdCBpcyBzdGlsbCBpbiB0aGUgY2FjaGUgbGlzdC4KLQkoQmFja3BvcnRlZCByMTk1MjQuKQorICAgICAgLSByZXdvcmtlZCBoclN0b3JhZ2VUYWJsZSB0byBzdXBwb3J0IGxhcmdlIGZpbGVzeXN0ZW1zLiBUaGUKKwloclN0b3JhZ2VBbGxvY2F0aW9uVW5pdHMgZG9lcyBub3QgcmVwb3J0IHJlYWwgYWxsb2NhdGlvbiB1bml0IHNpemUsCisJYnV0IHNvbWUgY2FsY3VsYXRlZCB2YWx1ZSBzbyBoclN0b3JhZ2VBbGxvY2F0aW9uVW5pdHMgKgorCWhyU3RvcmFnZVNpemUgZ2l2ZXMgcmVhbCBzaXplIG9mIHRoZSBmaWxlc3lzdGVtLiBUaGlzIGNhbGN1bGF0aW9uCisJaGFwcGVucyBvbmx5IHdoZW4gaHJTdG9yYWdlU2l6ZSBpcyB0b28gc21hbGwgKDMyYml0cykgZm9yCisJZmlsZXN5c3RlbSBzaXplLCBlLmcuIGZpbGVzeXN0ZW1zIGxhcmdlciB0aGFuIDhUQiB3aXRoIDQwOTYgYnl0ZXMKKwlibG9jayBzaXplLiBUaGlzIGNhbGN1bGF0aW9uIGNhbiBiZSB0dXJuZWQgb2ZmIGJ5CisJJ3JlYWxTdG9yYWdlVW5pdHMnIGNvbmZpZyBvcHRpb24uCisgICAgICAtIHNraXAgbm9uLUFGX0lORVQgaW50ZXJmYWNlcyB3aGVuIGxvYWRpbmcgaXB2NCBhZGRycwogICAgICAgLSBzbm1wZCBpcyBhZ2FpbiBzaW5nbGUtdGhyZWFkZWQuIFtQQVRDSCAyOTU5ODExXTogU2FmcmFuZWs6CiAJUmVpbXBsZW1lbnQgTGludXggTmV0bGluayBJUHY2IHByZWZpeCBsaXN0ZW5lci4KLSAgICAgIC0gdXNlIGNhY2hlLXVuaXF1ZSBpZCBpbnN0ZWFkIG9mIGhhbmRsZXIgbmFtZSBmb3Igc2hhcmVkIGNhY2hlIHJlbG9hZAotCXByb3RlY3Rpb24KLSAgICAgIC0gUGF0Y2ggZnJvbSBDbGF1cyBLbGVpbiB0byBmaXggZW5naW5laWQgZ2VuZXJhdGlvbiBvbiBvdXRnb2luZyB2MwotCXRyYXBzIGZyb20gdGhlIGFnZW50Ci0gICAgICAtIGFkZCBuZXdseSBjcmVhdGVkL2Rlc3Ryb3llZCBpbnRlcmZhY2VzIHRvIGlwdjZJZlRhYmxlCVRoZSBsaXN0IG9mCi0JaW50ZXJmYWNlcyB3YXMgbmV2ZXIgcmVmcmVzaGVkLCBub3cgaXQgaXMgcmVsb2FkZWQgZXZlcnkgdGltZSB0aGUKLQl0YWJsZSBpcyBhY2Nlc3NlZC4gSSd2ZSBhbHNvIGZpeGVkIGEgbWVtb3J5IGxlYWsgYW5kIG9wdGltaXplZCB0aGUKLQlsb2FkaW5nIG9mIHRoZSBsaXN0IGEgYml0LgorICAgICAgLSBGaXhlZCBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCIHRhYmxlcyBpbnRyb2R1Y2VkIGJ5IHBhdGNoICMzMDUzNDM2LgorICAgICAgLSBGaXhlZCBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCIHRhYmxlcyBpbnRyb2R1Y2VkIGJ5IHBhdGNoICMzMDUzNDM2LiIKKwlbUEFUQ0ggMzA1MzQzNl06IGZyb206IHRha2V2b3M6IGZpeDogdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzCisJaW52YWxpZCBtZW1vcnkgYWNjZXNzIiB0aGUgYnVnIDMwNTM0MzYgaXMgZml4aW5nIHdhcyBpbnRyb2R1Y2VkIGluCisJcjE3NzE5LCBhbmQgZml4ZWQgaW4gcjE3ODYxLgorICAgICAgLSBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cyBmb3IgcHJpbnRpbmcgdmFsdWVzCisJb2YgdHlwZSAnb2lkJy4KKyAgICAgIC0gW1BBVENIIDMwNjY4NjJdOiBmaXggdGhlIGFnZW50IGZvciBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcworCW9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLgorICAgICAgLSBmaXhlZCBoclNXUnVuUGF0aCBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguICAgZmdldHMoKQorCXJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZCBvdXQpCisJYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCisJL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLgorICAgICAgLSBmaXhlZCByYWNlIGNvbmRpdGlvbiBpbiBoclNXUnVuVGFibGUgVHJlYXQgdGhlIHJlYWRzIGZyb20KKwkvcHJvYy88cGlkPi8qIGNhcmVmdWx5LCBwcm9jZXNzZXMgY2FuIGV4aXQgaW4gdGhlIG1pZGRsZSBvZgorCXByb2Nlc3NpbmcuIChhbHJlYWR5IGZpeGVkIGluIFY1LTUtcGF0Y2hlcyBhbmQgVjUtNC1wYXRjaGVzIGluIFNWTgorCXJldi4gMjAxMTUsIGR1bm5vIHdoeSBJIGRpZCBub3QgcGF0Y2ggdHJ1bmspCisgICAgICAtIHBhdGNoIDMxMzEzOTc6IGZyb20gdGFrZXZvczogaHVnZSBzcGVlZHVwcyBvZiB0aGUgVENQL1VEUCBUYWJsZXMKKyAgICAgIC0gcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28gdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4KKyAgICAgIC0gcGF0Y2ggMzMwNjQ3NjogZnJvbSB0aW55cHlyYW1pZHM6IGZpeCBtZW1vcnkgbGVhayBpbiB0aGUgc3dydW4KKwljb250YWluZXIgbG9hZGluZworICAgICAgLSB1Y2Rfc25tcCBidWlsZHMgYWdhaW4gb24gTWluR1cgYW5kIEN5Z3dpbi4KKyAgICAgIC0gcGF0Y2ggMzMxMDI1MDogZnJvbSBmZW5uZXI6IG1pc2MgZml4ZXMgZm9yIGRlYnVnZ2luZyBvdXRwdXQgb2YKKwlhZ2VudHgKIAogICAgIHNubXB0cmFwZDoKICAgICAgIC0gRml4ZWQgYSBkb3VibGUgZnJlZSBhdCBleGl0IHRoYXQgd2FzIHRyaWdnZXJlZCBieSBjbGVhbmluZyB1cCB0aGUKQEAgLTI3NiwyMiArOTk2LDkzIEBACiAJX19zZWxlY3Rfbm9jYW5jZWwgKGluIC9saWI2NC9saWJjLTIuMTEuMi5zbykgYnkgMHg0MDRFMjA6IG1haW4KIAkoc25tcHRyYXBkLmM6MTI1OCkKIAotICAgIHNubXBpbmZvcm06Ci0gICAgICAtIGZpeCBjb250ZXh0RW5naW5lSURzIGZvciBvdXRnb2luZyBpbmZvcm1zIGZyb20gc25tcGluZm9ybSB0bwotICAgICAgICBiZSB0aGUgbG9jYWwgZW5naW5lSUQKKyAgICBhcHBzOgorICAgICAgLSBbUEFUQ0ggMzA1NDgxN106IEFkZHMgcGVyLXZhcmlhYmxlIHRpbWVkIG91dHB1dCBzdXBwb3J0IHRvIHNubXB3YWxrCisJdXNpbmcgLUNUCisgICAgICAtIGFkZCBzbm1wLmNvbmYgdG9rZW5zIGZvciB0aW1lb3V0cyBhbmQgcmV0cmllcwogCiAgICAgYnVpbGQ6CiAgICAgICAtIFtCVUcgMzA4ODM2MF06IEVuc3VyZSBweXRob24gbW9kdWxlcyBhcmUgYnVpbHQgYWdhaW5zdCB0aGUgY29ycmVjdAogCWxpYnJhcmllcwogCiAgICAgYnVpbGRpbmc6CisgICAgICAtIEZpeCAtLXdpdGgtc2VjdXJpdHktbW9kdWxlcyBoYW5kbGluZyBBbGxvdyByZXBlYXRlZCBtb2R1bGVzCisJKHRzbSx0c20pIGFzIHdlbGwgYXMgZGVmYWlsdCBtb2R1bGVzICh1c20pIE1vdmUgdGhlIGdlbmVyYXRpb24gb2YKKwl0aGUgZmlsZXMgYWZ0ZXIgdGhlIGNoZWNraW5nCisgICAgICAtIE1ha2UgaXQgcG9zc2libGUgdG8gcmVnZW5lcmF0ZSB1c2luZyBhdXRvY29uZiAyLjY4LgogICAgICAgLSBTb21lIHN5c3RlbXMgZG8gbm90IHN1cHBvcnQgdGhlIC1FIGZsYWcgdG8gZ3JlcCwgdXNlIGF1dG9jb25mIHRvCiAJZmluZCB0aGUgcmlnaHQgZWdyZXAgYXQgYWxsIHRpbWVzLgorICAgICAgLSBjaGVjayBmb3IgL2Rldi9rbWVtIGluc3RlYWQgb2YgYXNzdW1pbmcgaXQgZXhpc3RzIGFuZCBoYXJkY29kaW5nCisJd2hlbiBpdCBpcyBub3QgdGhlcmUKKworICAgIGxpYm5ldHNubXA6CisgICAgICAtIG1hZGUgdGhlIFNTSCB0cmFuc3BvcnQgY29uZmlndXJhYmxlIGFzIGl0IHNob3VsZCBiZS4KKworICAgIGxpYm5ldHNubXBtaWJzOgorICAgICAgLSBNYWtlIGFsbCBmdW5jdGlvbnMgaW4gdGhlIGRsbW9kIG1vZHVsZSB0aGF0IGRvbid0IGhhdmUgdG8gYmUgcHVibGljCisJc3RhdGljCisKKyAgICBtaWIyYzoKKyAgICAgIC0gW1BBVENIIDMxNzUzMjNdOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknIGJsb2NrcworICAgICAgLSBbUEFUQ0ggMzIwNDg4M106IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUgb2JqZWN0cyBuYW1lZCBmb29UYWJsZQorICAgICAgLSBbUEFUQ0ggMzIxMTQ4NF06IFN1cHBvcnQgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcworICAgICAgLSBtYWtlIHRoZSBtaWIyYyBmb3JlYWNoIHJhbmdlcyB3b3JrIGFzIGFkdmVydGlzZWQgaW4gdGhlIGNvbW1lbnRzLgorCisgICAgcGFja2FnaW5nOgorICAgICAgLSBFbmFibGUgbWljcm8tYW5kLW1hY3JvLWZlYXR1cmUgbWFuYWdlbWVudCB3aXRoaW4gTmV0LVNOTVA7IHRoaXMKKwlhZGRzIGEgbnVtYmVyIG9mIG5ldyBmbGFncyB0byBjb25maWd1cmUgKC0tZW5hYmxlLW1pbmltYWxpc3QgYW5kCisJLS1lbmFibGUtcmVhZC1vbmx5KS4gVGhlc2UgY2hhbmdlcyBhcmUgZGVzaWduZWQgdG8gcmVtb3ZlIG11Y2ggb2YKKwl0aGUgaW5saW5lIGNvZGUgdGhhdCBpc24ndCBhbHdheXMgbmVjZXNzYXJ5IG9yIGRlc2lyZWQuIFNjcmlwdHMKKwlleGlzdCAoYW5kIHdpbGwgYmUgaW1wcm92ZWQpIHRvIHN0aXAgb3V0IHVudXNlZCBjb21wb25lbnRzIGZyb20gdGhlCisJY29kZSBlbnRpcmVseSB0byBlbmFibGUgYSBzaG9ydGVyIHJldmlldyBwcm9jZXNzIGZvciB1cGdyYWRpbmcgdG8KKwluZXcgcmVsZWFzZXMuIFRoaXMgd29yayB3YXMgZG9uZSBieSBXZXMgSGFyZGFrZXIgYW5kIE1pY2hhZWwgQmFlcgorCWZyb20gU1BBUlRBLCBJbmMuIGJ1dCBpcyBiZWluZyBjaGVja2VkIGluIGFzIGEgbGFyZ2UgcGF0Y2ggc2luY2UKKwljb252ZXJ0aW5nIHRoZSBtaWNybyBwYXRjaGVzIGZyb20gZ2l0IHRvIHN2biB0dXJlbmQgb3V0IHRvIGJlCisJaW1wb3NzaWJsZQorCisgICAgcGF0Y2ggMzE0MDgzMzoKKyAgICAgIC0gZml4IHByb3h5IEdFVE5FWFQgcmVxdWVzdHMgV2hlbiBPSURzIHJlcXVlc3RlZCBhcmUgYmVsb3cgdGhlIHByb3h5CisJcmVxdWVzdCByZW1hcCwgd2UgbmVlZCB0byBub3QgaW5jbHVkZSBhbnkgT0lEcyB0aGF0IG1pZ2h0IGJlIGluIHRoZQorCXNwYWNlIGJldHdlZW4gdGhlIG9yaWdpbmFsIE9JRCBhbmQgdGhlIHJlbWFwcGVkIE9JRC4gVGhpcyBwYXRjaAorCWZ1ZGdlcyB0aGUgcmVxdWVzdCBzbyB0aGF0IGl0IGZpeGVzIHRoZSByZXF1ZXN0IE9JRCBzbyBpdCdzIGp1c3QKKwliZWZvcmUgdGhlIHJlbWFwcGVkIHByb3h5IHJhbmdlLgorCisgICAgcGF0Y2ggMzE4NDAyNjoKKyAgICAgIC0gQXZvaWQgY29uc3RhbnQgcmVmcmVzaCBvZiBpbnRlcmZhY2Ugc3RhdGlzdGljcwogCiAgICAgcGVybDoKLSAgICAgIC0gMCBwYXRjaCAzMDQ5MDI5OiBmcm9tIGZlbm5lYzogZml4IGEgbWVtb3J5IGxlYWsgd2l0aCBzbm1wIGJ1bGt3YWxrcworICAgICAgLSBwYXRjaCAzMDQ5MDI5OiBmcm9tIGZlbm5lYzogZml4IGEgbWVtb3J5IGxlYWsgd2l0aCBzbm1wIGJ1bGt3YWxrcworICAgICAgLSBwYXRjaCBmcm9tIE1hcnRpbiBCdWNrOiBkb24ndCBhbHdheXMgb3BlbiBzdGRlcnIgYXMgdGhlIGNhbGxzIHRvCisJc25tcF9sb2cgYWxyZWFkeSBkbyB0aGlzIGFuZCBpdCBtZXNzZXMgdXAgdGhlIGFnZW50IHdoZW4gZW1iZWRkZWQKKworICAgIHB5dGhvbjoKKyAgICAgIC0gW1BBVENIIDMxODUwODVdOiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKyAgICAgIC0gW0JVRyAzMjk1NDA3XTogRml4IGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlcgogCiAgICAgdGVzdGluZzoKKyAgICAgIC0gQWRkIG1pc3NpbmcgcHJlY29uZGl0aW9ucworICAgICAgLSBBZGRlZCBmdW5jdGlvbiBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCgpLiBBZGRlZCBkZWNsYXJhdGlvbgorCWZvciB0aGUgZnVuY3Rpb24gbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpIGluIGEgcHVibGljCisJYWdlbnQgaGVhZGVyIGZpbGUuIEZpeGVkIG1lbW9yeSBsZWFrIGluCisJbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpLiBGaXhlZCBtZW1vcnkgbGVhayB0cmlnZ2VyZWQgYnkKKwl1bnJlZ2lzdGVyaW5nIGEgdGFibGUgaGFuZGxlci4gVW5pdCB0ZXN0cyBjYW4gbm93IGludm9rZSBmdW5jdGlvbnMKKwlmcm9tIGxpYmFnZW50LgorICAgICAgLSBBZGRlZCBmdW5jdGlvbiBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCgpLiBBZGRlZCBkZWNsYXJhdGlvbgorCWZvciB0aGUgZnVuY3Rpb24gbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpIGluIGEgcHVibGljCisJYWdlbnQgaGVhZGVyIGZpbGUuIEZpeGVkIG1lbW9yeSBsZWFrIGluCisJbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpLiBGaXhlZCBtZW1vcnkgbGVhayB0cmlnZ2VyZWQgYnkKKwl1bnJlZ2lzdGVyaW5nIGEgdGFibGUgaGFuZGxlci4gVW5pdCB0ZXN0cyBjYW4gbm93IGludm9rZSBmdW5jdGlvbnMKKwlmcm9tIGxpYmFnZW50LiBBZGRlZCB1bml0IHRlc3QgZm9yIHRhYmxlX2RhdGFzZXQuCisgICAgICAtIEFkZGVkIGluZXRfbnRvcCgpIGFuZCBpbmV0X3B0b24oKSB1bml0IHRlc3QuCisgICAgICAtIEFkZGVkIG5ldHNubXBfbWliX2hhbmRsZXIuZGF0YV9jbG9uZSwgYSBmdW5jdGlvbiBwb2ludGVyIHRoYXQKKwlkZWZpbmVzIGhvdyB0byBjbG9uZSBuZXRzbm1wX21pYl9oYW5kbGVyLm15dm9pZC4gTXVzdCBiZSBkZWZpbmVkIGlmCisJYW5kIG9ubHkgaWYgZGF0YV9mcmVlIGlzIHNldC4gVGhlIGZ1bmN0aW9uIG5ldHNubXBfaGFuZGxlcl9kdXAoKQorCWRvZXMgbm93IGNsb25lIE1JQiBoYW5kbGVyIHByaXZhdGUgZGF0YSBpZiBkYXRhX2Nsb25lKCkgaXMgc2V0LgorCVByZXZpb3VzbHkgYWZ0ZXIgZHVwbGljYXRpbmcgYSBNSUIgaGFuZGxlciBhbmQgdW5yZWdpc3RlcmluZyBvbmUgb2YKKwl0aGUgdHdvIE1JQiBoYW5kbGVycywgdGhlIHByaXZhdGUgZGF0YSBwb2ludGVyIChteXZvaWQpIG9mIHRoZQorCW90aGVyIGJlY2FtZSBhIGRhbmdsaW5nIHBvaW50ZXIuIE5vdGU6IGFkZGl0aW9uIG9mCisJbmV0c25tcF9taWJfaGFuZGxlci5kYXRhX2Nsb25lIGlzIGFuIEFCSSBjaGFuZ2UuIGFkZGVkIG1vcmUgdGVzdAorCWNhc2VzIHRvIHRoZSBoYW5kbGVyIHJlZ2lzdHJhdGlvbiB0ZXN0LgogICAgICAgLSBHZW5lcmF0ZSBhIG5vcm1hbCAjbGluZSBkaXJlY3RpdmUgYXMgcGVyIEM5OSBpbnN0ZWFkIG9mIHRoZQogCWNvbXBpbGVyLXNwZWNpZmljICM8bj4tZGlyZWN0aXZlLgogICAgICAgLSBJbnRyb2R1Y2VkIG5ldyB0ZXN0IHR5cGUgbmV4dCB0byBjYXBwIGFuZCBjbGliOiBjYWdlbnRsaWIuCkBAIC0zMDMsMjMgKzEwOTQsMzIgQEAKIAlEWU5BTUlDX0FOQUxZWkVSPSJ2YWxncmluZCAtLXRyYWNlLWNoaWxkcmVuPXllcyAtLWxlYWstY2hlY2s9ZnVsbCI7CiAJY2QgdGVzdGluZyAmJiAuL1JVTkZVTExURVNUUyAtZyB1bml0LXRlc3RzKQogICAgICAgLSBUZXN0IDcxIChjb20yc2VjNl9zaW1wbGUpIGRvZXMgbm93IHN1Y2NlZWQgZXZlbiBpZiBJUHY2IEROUwotCXJlc29sdXRpb24gaXMgbm90IGF2YWlsYWJsZS4gKEJhY2twb3J0ZWQgcjE5NjQ4LikKKwlyZXNvbHV0aW9uIGlzIG5vdCBhdmFpbGFibGUuCiAgICAgICAtIFRlc3QgVDAzMCBkb2VzIG5vdyBwYXNzIG9uIE1pbkdXLgotICAgICAgLSBVbml0IHRlc3RzIGNhbiBub3cgaW52b2tlIGZ1bmN0aW9ucyBmcm9tIGxpYmFnZW50LgotICAgICAgLSBVbml0IHRlc3RzIGNhbiBub3cgaW52b2tlIGZ1bmN0aW9ucyBmcm9tIGxpYmFnZW50LiBBZGRlZCB1bml0IHRlc3QKLQlmb3IgdGFibGVfZGF0YXNldC4gKEJhY2twb3J0ZWQgZnJvbSByMTk0NTAgZnJvbSB0aGUgdHJ1bmsuKQorICAgICAgLSBhdXRvLWNyZWF0ZSB1c2VyIHNwZWNpZmllZCBTTk1QX1RNUERJUiBhbmQgU05NUF9UTVBfUEVSU0lTVEVOVERJUgorCXRvbzsgZGVmYXVsdCBTTk1QX1RNUF9QRVJTSVNURU5ESVIgYmFzZWQgb24gU05NUF9UTVBESVIgZm9yIHVzZXIKKwlzcGVjaWZpZWQgU05NUF9UTVBESVIKIAotICAgIHVuc3BlY2lmaWVkOgorICAgIG1hbjoKKyAgICAgIC0gW0JVRyAzMTkwNzI1XTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kCisJc25tcF9hc3luY19zZW5kCisKKyAgICBHZW5lcmljOgorICAgICAgLSBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHN0YXRpYyBhcHBsaWNhdGlvbnMgdXNpbmcgbmV0LXNubXAtY29uZmlnCisJYW5kIHRoZSAtKmxpYnMgZmxhZ3Mgb25jZSBtb3JlLgogICAgICAgLSBbQlVHIDMxMDI5MDRdOiBBbGwgTmV0LVNOTVAgQyBzb3VyY2UgZmlsZXMgYXJlIG5vdyBjb21waWxlZCB3aXRoCiAJLWZuby1zdCByaWN0LWFsaWFzaW5nLCBhdCBsZWFzdCBpZiB0aGUgY29uZmlndXJlZCBjb21waWxlciBzdXBwb3J0cwogCXRoaXMgZmxhZy4KICAgICAgIC0gW1BBVENIIDMwNzQ5MThdOiBmcm9tIHdlaXpoZW5nOiBjaGVjayBmb3IgQ09OVEFJTkVSX0lOU0VSVCBmYWlsdXJlcwogCWFuZCByZWFjdCBhcHByb3ByaWF0ZWx5IHRvIGF2b2lkIG1lbW9yeSBsZWFrcworICAgICAgLSBbUEFUQ0ggMzE2NzMyNV06IGZyb20ga3Jpc3p0b2Zvcm86IFVDRC1TTk1QL1N5c3RlbVN0YXRzOiBhZGQKKwl2YXJpYWJsZXMgdG8gcmVwb3J0IGNwdXN0ZWFsLCBjcHVndWVzdCwgY3B1Z3Vlc3RuaWNlCiAKICAgICBDeWd3aW46CiAKICAgICBMaW51eDoKICAgICAgIC0gW1BBVENIIDMwODMwMjddOiBGaXggUlBNIHNwZWMgZmlsZSB0byBzdXBwb3J0IENlbnRPUworICAgICAgLSBbUEFUQ0ggMzIwNTgxMV06IE9wdGlvbiB0byBza2lwIGZkL2xvb3AvcmFtIGRldmljZXMgaW4gZGlza0lPVGFibGUKICAgICAgIC0gYWdlbnQ6IGlwTmV0VG9QaHlzaWNhbFRhYmxlOiBEbyBub3QgbG9nIGFuIGVycm9yIG1lc3NhZ2UgaWYgb25lIG9yCiAJbW9yZSBpbnRlcmZhY2VzIGFyZSBwcmVzZW50IHRoYXQgZG8gbm90IGhhdmUgc3VjaCBpbmZvcm1hdGlvbgogCShOVURfTk9BUlApLCBlLmcuIHR1bm5lbHMuIFJlcG9ydGVkIGJ5IFN0ZXBoZW4gSGVtbWluZ2VyLiBTZWUgYWxzbwpAQCAtMzI3LDMwICsxMTI3LDU0IEBACiAgICAgICAtIHNubXBkIGlzIGFnYWluIHNpbmdsZS10aHJlYWRlZC4KIAogICAgIE1pbkdXOgorICAgICAgLSBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIE5ldC1TTk1QIHZhcmlhYmxlcworCWRlZmluZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuIFNvbWUgdGVzdHMgdGhhdCBmYWlsZWQgcHJldmlvdXNseQorCWFmdGVyIHRoZSBOZXQtU05NUCBiaW5hcmllcyAoTVNWQyBidWlsZCkgaGFkIGJlZW4gaW5zdGFsbGVkIGRvIG5vdworCXBhc3MuCiAgICAgICAtIGNvbmZpZ3VyZTogRGV0ZWN0aW9uIG9mIHRoZSBmdW5jdGlvbnMgZ2FpX3N0cmVycm9yKCksCi0JZ2V0YWRkcmluZm8oKSwgZ2V0aG9zdG5hbWUoKSBhbmQgZ2V0aG9zdG5hbWUoKSBkb2VzIG5vdyBzdWNjZWVkLgotCShCYWNrcG9ydGVkIHIxOTY0NiBmcm9tIHRoZSB0cnVuay4pCisJZ2V0YWRkcmluZm8oKSwgZ2V0aG9zdGJ5bmFtZSgpIGFuZCBnZXRob3N0bmFtZSgpIGRvZXMgbm93IHN1Y2NlZWQuCiAgICAgICAtIHRlc3Rpbmc6IElmIHRoZSBhZ2VudCBoYXMgYmVlbiBhc2tlZCB0byBzdG9wLCB3YWl0IHVudGlsIHRoZSBzbm1wZAogCXByb2Nlc3MgZGlzYXBwZWFyZWQgYmVmb3JlIHByb2NlZWRpbmcuCisgICAgICAtIFRlc3RzIDAyNSBhbmQgMDI2IHBhc3Mgb24gTWluR1cgZXZlbiBpZiB3aW5FeHRETEwgaGFzIGJlZW4gZW5hYmxlZC4KKworICAgIE5ldEJTRDoKKyAgICAgIC0gRHJhZ29uRmx5IHN1cHBvcnQgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKyAgICBPcGVuQlNEOgorICAgICAgLSBVcGRhdGUgU1dSdW4gY29kZSB0byB1c2Uga3ZtX2dldHByb2MyIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KIAogICAgIFdpbjMyOgogICAgICAgLSBBdm9pZCB0aGF0IE1TVkMgcmVwb3J0cyBhIHdhcm5pbmcgbWVzc2FnZSBhYm91dCByZWRlZmluaXRpb24gb2YgdGhlCiAJbWFsbG9jKCkgbWFjcm8gZHVyaW5nIGJ1aWxkaW5nIHRoZSBOZXQtU05NUCBzb3VyY2UgY29kZS4KKyAgICAgIC0gRGVwcmVjYXRlZCBsaWJzbm1wLmRlZiAtIGFkZCBORVRTTk1QX0lNUE9SVCB0byBmdW5jdGlvbgorCWRlY2xhcmF0aW9ucyBpbnN0ZWFkIHRvIGV4cG9ydCBhIGZ1bmN0aW9uIGZyb20gbmV0c25tcC5kbGwuCisgICAgICAtIEd1YXJkIG5ldHNubXBfdWRwX3JlY3Zmcm9tKCkgZXRjLiBkZWNsYXJhdGlvbnMgY29uc2lzdGVudGx5LiBCdWlsZHMKKwl3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4KKyAgICAgIC0gSW50cm9kdWNlZCBuZXRzbm1wX3BpZF90LiBFbGltaW5hdGVkIGNhc3RzIGJldHdlZW4gaW50IGFuZCBIQU5ETEUKKwlpbiBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMgYW5kCisJYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMuCiAgICAgICAtIFdoZW4gc25tcGQuZXhlIGlzIHN0YXJ0ZWQgaW4gYSBjb21tYW5kIHByb21wdCB3aW5kb3csIHRoZSBzbm1wZAogCXByb2Nlc3Mgbm93IHN0b3BzIHVwb24gdGhlIGZpcnN0IGtleSBwcmVzcy4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8KIAlkZWJ1ZyBzbm1wZC5leGUgZm9yIG1lbW9yeSBsZWFrcy4KICAgICAgIC0gW1BBVENIIDMwODUxODddOiBCdWlsZGluZyB2aWEgdGhlIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHByb2plY3QKIAlmaWxlICguZHN3Ly5kc3ApIHdvcmtzIGFnYWluLgorICAgICAgLSBbUEFUQ0ggMzI5Mzg0Ml06IEVsaW1pbmF0ZSByZWdpc3RyeSBhcmd1bWVudCBsaW1pdCBvZiAxMjcKKwljaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCiAgICAgICAtIGJ1aWxkaW5nOiBBdm9pZCB0aGF0IE1TVkMgMjAxMCBwcmludHMgYSB3YXJuaW5nIG1lc3NhZ2UgYWJvdXQKIAlyZWRlZmluaW5nIEVBRERSSU5VU0UuCiAgICAgICAtIGJ1aWxkaW5nOiBCdWlsZHMgbm93IGNvcnJlY3RseSB3aXRoIGEgNjQtYml0IGNvbXBpbGVyLgogICAgICAgLSBidWlsZGluZzogYmF0Y2ggYnVpbGQgd2l0aCBPcGVuU1NMIGVuYWJsZWQgYW5kIHdpdGggcmVjZW50IE9wZW5TU0wKIAlkZXZlbG9wbWVudCBmaWxlcyB3b3JrcyBhZ2Fpbi4KLSAgICAgIC0gc2h1dGRvd25fc25tcE5vdGlmeUZpbHRlclRhYmxlKCkgYW5kIHNodXRkb3duX3dpbkV4dERMTCgpIGFyZSBub3cKLQlpbnZva2VkIHdoZW4gdGhlIE5ldC1TTk1QIHNlcnZpY2UgaXMgc3RvcHBlZC4gKFBhcnRpYWxseSBiYWNrcG9ydGVkCi0JcjE5NTE1IGZyb20gdGhlIHRydW5rLikKKyAgICAgIC0gaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYW4gbm93IGJlIHVzZWQgaW4gdGhlCisJTWluR1cgZW52aXJvbm1lbnQuCiAgICAgICAtIHRlc3Rpbmc6IEF2b2lkIHRoYXQgVDIwMCBmYWlscyBvbiBrbm93biBNaWNyb3NvZnQgU05NUCBleHRlbnNpb24KIAlETEwgYnVncy4KKyAgICAgIC0gQnVpbGQgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jIG9ubHkgaWYKKwlORVRTTk1QX0VOQUJMRV9JUFY2IGhhcyBiZWVuIGRlZmluZWQuCisgICAgICAtIEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbgorCW9mIHRoZSBNSUItSUkgaXBOZXRUb01lZGlhVGFibGUuCisgICAgICAtIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvOiBMaW5rIHdpdGggZ2RpMzIubGliIGlmIE9wZW5TU0wgaGFzIGJlZW4KKwllbmFibGVkIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLgogCiAqNS42KgogCkBAIC0xNjIzLDYgKzI0NDcsNyBAQAogICAgICAgLSBbUEFUQ0ggMTYwMDQ1M106IE9TIFggY29tcGlsZS10aW1lIGVuZGlhbiBkZXRlcm1pbmF0aW9uCiAgICAgICAtIFtQQVRDSCAxNjAwNTIyXTogQ1BVIEhBTCBpbXBsZW1lbnRhdGlvbiBmb3IgbWFjaC9kYXJ3aW4KICAgICAgIC0gSW1wcm92ZSBtZW1vcnkgcmVwb3J0aW5nIChwYXRjaCBmcm9tIEFwcGxlKQorICAgICAgLSBQYXRjaDogMzUxNDA0OSBmcm9tIHR3b2JpdHMtZ2l0aHViOiBmaXggY29tcGlsYXRpb24gb24gZGFyd2luMTEKIAogICAgIFNvbGFyaXM6CiAgICAgICAtIFtCVUcgMTYyNjE1M106IE5vIGhyU1dSdW4gaW5mb3JtYXRpb25zIG9uIFNvbGFyaXMgem9uZXMKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3OWY5NDhiLi5lNjViMThjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDYgKzEsNDA0MCBAQAorIyAtKi0gdGV4dCAtKi0KKwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DaGFuZ2VzOiBWNS42LjEgLT4gVjUuNi4yCitDaGFuZ2VzOiBWNS43LjMucHJlNSAtPiBWNS43LjMucmMxCisKK2NvbW1pdCA4ZmM3NTE0YjU5ZGM0NmI4ZjNlMzZjODFhOTJhZjAwOGRjOGRjMTg4CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDEgMDk6NTk6MjYgMjAxNCAtMDcwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNy4zLnJjMQorCitjb21taXQgM2VhNTE0NDIzZDkzNzNhZjc3Y2JjNGI4MzM2YjE3MDE0Mzg2NDM4OQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIFNlcCAzMCAyMzoxMjo0MCAyMDE0IC0wNzAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNy1wYXRjaGVzCisKK2NvbW1pdCBhYmI3ZjJlZWMxNzNjOGQyNjJiZjZlZjFiN2RlYjViNzA4MzlkMTVmCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDMwIDIzOjEyOjM5IDIwMTQgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjMucmMxCisKK2NvbW1pdCBiY2FhYjQ4ZDlkNDk4MzYxZmRkNDUxNjUyNzczYjNiOTU2YzdmMTBjCitBdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QGxvY2FsaG9zdD4KK0RhdGU6ICAgVGh1IFNlcCAyNSAwOTozNjowMCAyMDE0IC0wNDAwCisKKyAgICByZW1vdmUgYmFkIGFzc2VydCBjaGVjaworCitjb21taXQgNWQxZWNmNmQxNTkxYTUzZTcxMWM1ZmVlYTE1OGQxMGRkOTBmYWIzYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIFNlcCAxIDE0OjQ2OjUwIDIwMTQgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiBQb3J0IFQwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYi5jIHRvIE1pbkdXCisKK2NvbW1pdCBhZjhjMTdlNjQ4MmNiNTUyMDZjNTAyNzA5ODM2NmY2MGFkOGY3Y2M3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gU2VwIDEgMTM6MjQ6MTggMjAxNCArMDIwMAorCisgICAgQ0hBTkdFUzogQlVHOiAyNTY4OiBBdm9pZCB0aGF0IGZpbGUgZGVzY3JpcHRvcnMgYWJvdmUgRkRfU0VUU0laRSB0cmlnZ2VyIGFib3J0KCkKKworY29tbWl0IDQyMjRjYWJjYjExMmQwZDQzN2Y5Y2E5ZjRkMzQzMDUwMWQxYzg3NTAKK0F1dGhvcjogQmlsbCBGZW5uZXIgPGZlbm5lckBnbWFpbC5jb20+CitEYXRlOiAgIFR1ZSBKdWwgMjIgMDY6NDk6MjggMjAxNCAtMDcwMAorCisgICAgV2hlbiBlbmxhcmdpbmcgYSBsYXJnZV9mZF9zZXQsIHVzZSBGRF9aRVJPIGlmIHBvc3NpYmxlCisgICAgCisgICAgVGhlIG1vc3QgY29tbW9uIGNhc2Ugb2YgY3JlYXRpbmcgYSBsYXJnZV9mZF9zZXQgb24gVU5JWAorICAgIGlzIHRvIGNyZWF0ZSBpdCB3aXRoIHNpemUgemVybywgYW5kIHRoZW4gaW1tZWRpYXRlbHkgZW5sYXJnZQorICAgIGl0IHRvIHNpemUgRkRfU0VUU0laRS4gIEluc3RlYWQgb2YgbG9vcGluZyBhbmQgY2FsbGluZworICAgIEZEX0NMUigpLCB3ZSBjYW4gb3B0aW1pemUgdGhpcyBjb21tb24gY2FzZSB3aXRoIHRoZSBPUydzCisgICAgRkRfWkVSTy4KKworY29tbWl0IDM1MjRhOTJmMjI3ZWIzZTczNjkwOGIxZjFmNTI1ZGEyZGM5NDlkMjIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKYW4gMjMgMTc6NDI6NDEgMjAxMCArMDAwMAorCisgICAgRml4ZWQgYSBTb2xhcmlzLXNwZWNpZmljIGNvbXBpbGVyIHdhcm5pbmcuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTgwMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA5NTRlYTRkNzA4NDBhYTVmNzUzYTA2ZTVkZjc2NTJiMjU4ZDkyMDQyCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKdW4gMjEgMDg6MDE6NDMgMjAxMCArMDAwMAorCisgICAgRW5zdXJlIHRoYXQgZmRzZXQgc3RydWN0dXJlIGlzIHJlc2l6ZWQgc3VmZmljaWVudGx5CisgICAgdG8gYWNjb21vZGF0ZSB0aGUgc3BlY2lmaWVkIHNvY2tldCBJRC4KKyAgICBQcm9ibGVtIHJlcG9ydGVkIGJ5IFNoaXlhbGVpLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5MDY2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgM2RhMGMzNzhiNWNiMWJiZjM1ZDA1YTYyMTJhNDgzYWJkYTg0YTIwMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAxIDA4OjU5OjA0IDIwMTQgKzAyMDAKKworICAgIEZpeCBjb21taXQgN2Y0YTdiODkxMzMyODk5Y2VhMjZlOTViZTAzMzdhYWUwMTY0ODc0MjogZG9udCBtaXggY29kZSBhbmQgZGVjbGFyYXRpb25zLgorCitjb21taXQgMDgzN2IyMWU3OThhOTg1NmMwYTlmNDM4ZWM0NGE4M2JlZDFmODUzNgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIEF1ZyAyOSAwODoxODoyMCAyMDE0ICswMjAwCisKKyAgICBFbXB0eSBpbml0aWFsaXplcnMgYXJlIChzYWRseSkgbm90IHBhcnQgb2YgQy4KKyAgICBTdG9wIHVzaW5nIHRoZW0uCisKK2NvbW1pdCA1ZTRmNmUzZjQzMDM1YTY4OWM5ZmEyODkwMjdlZWQ2MGEyMmRiZmFmCitBdXRob3I6IEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorRGF0ZTogICBUaHUgQXVnIDI4IDEyOjEyOjIxIDIwMTQgLTA0MDAKKworICAgIEFkZCBhIGRlYnVnIG1lc3NhZ2Ugd2hlbiBza2lwcGluZyBhIGtleQorCitjb21taXQgZTU3MDYxNTBjNDUzMmQ3ZmMxODMyNzE4NTY4YmI1MGJiMGZmYzAxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgMzEgMTU6NDQ6MzEgMjAxNCArMDIwMAorCisgICAgQWRkZWQgdGVzdCBmb3Igc3ByaW50X3JlYWxsb2NfdmFyaWFibGUgd2l0aCAtT1EgY21kbGluZSBhcmd1bWVudC4KKworY29tbWl0IDdmNGE3Yjg5MTMzMjg5OWNlYTI2ZTk1YmUwMzM3YWFlMDE2NDg3NDIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDMxIDEzOjQ2OjQ5IDIwMTQgKzAyMDAKKworICAgIEFkZGVkIGNoZWNrcyBmb3IgcHJpbnRpbmcgdmFyaWFibGVzIHdpdGggd3JvbmcgdHlwZXMuCisgICAgCisgICAgV2hlbiAtT1EgY29tbWFuZCBsaW5lIGFyZ3VtZW50IGlzIHVzZWQsIHZhcmlhYmxlIGZvcm1hdHRlciBwcmVmZmVycyB0aGUgdHlwZQorICAgIG9mIHRoZSB2YXJpYmxlIHBhcnNlZCBmcm9tIGEgTUlCIGZpbGUgaW5zdGVhZCBvZiBjaGVja2luZyB0eXBlIG9mIHRoZSB2YXJpYWJsZQorICAgIGFzIHBhcnNlZCBmcm9tIFNOTVAgbWVzc2FnZS4KKyAgICAKKyAgICBUaGlzIGNhbiBsZWFkIHRvIGNyYXNoZXMgd2hlbiBpbmNvbWluZyBwYWNrZXRzIGNvbnRhaW5zIGEgdmFyaWFibGUgd2l0aAorICAgIE5VTEwgdHlwZSwgd2hpbGUgdGhlIE1JQiBzYXlzIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUgbm9uLU5VTEwsIGxpa2UgSW50ZWdlci4KKyAgICBUaGUgZm9ybWF0dGVyIHRoZW4gdHJpZXMgdG8gaW50ZXJwcmV0IHRoZSBOVUxMIChmcm9tIHBhY2tldCkgYXMgSW50ZWdlciAoZnJvbQorICAgIE1JQiBmaWxlKS4KKworY29tbWl0IDljNGRkY2E5NjA4MmMxMzljZmNlOTI4ZWVhM2NmZTc5M2QzNGY1YzIKK0F1dGhvcjogSmVmZiBHZWhsYmFjaCA8amVmZmdAb3Blbm5tcy5vcmc+CitEYXRlOiAgIFRodSBKdWwgMzEgMTE6NTI6MTggMjAxNCAtMDQwMAorCisgICAgQWRkIGEgc2NhbGFyIG9iamVjdCBjb250YWluaW5nIHRoZSBudW1iZXIgb2YgcHJvY2Vzc29ycyBzZWVuIGJ5IHRoZSBhZ2VudC4gUGxhY2VkIHRoaXMgaW4gdGhlIHN5c3RlbVN0YXRzIGdyb3VwIGZvciBsYWNrIG9mIGFuIG9idmlvdXNseSBiZXR0ZXIgbG9jYXRpb24uIFVwZGF0ZWQgVUNELVNOTVAtTUlCIGFjY29yZGluZ2x5LgorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNjY0ZWQ5NDNmNjNkZmU5MzkzZTk1OTg0MGVjZDIzYzMxYzlkOGY4OQorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgV2VkIEF1ZyAyNyAxNjowMjo1NyAyMDE0IC0wNDAwCisKKyAgICBIYW5kbGUgZHVwbGljYXRlcyBpbiBhIGJpbmFyeV9hcnJheSBjb250YWluZXIKKyAgICAKKyAgICBUaGUgQ09OVEFJTkVSX0tFWV9BTExPV19EVVBMSUNBVEVTIHNldHRpbmcgaXMgZnVuZGFtZW50YWxseSBmbGF3ZWQ7CisgICAgaXQgcmVhbGx5IGVmZmVjdGl2ZWx5IG1lYW50ICJJIHByb21pc2UgSSB3b24ndCBpbnNlcnQgZHVwbGljYXRlcworICAgIHNvIGRvbid0IGNoZWNrIGF0IGluc2VydCB0aW1lIi4gIEhvd2V2ZXIsIHRoZSBpcC1mb3J3YXJkLW1pYgorICAgIHNldHMgdGhpcyBmbGFnIGJ1dCByZWxpZXMgb24gdGhlIGR1cGxpY2F0ZSBwcmV2ZW50aW9uIGF0IGluc2VydAorICAgIHRpbWUgdW5kZXIgY2VydGFpbiBzY2VuYXJpb3MgKGUuZy4sIG11bHRpcGxlIGF0dGFjaG1lbnRzIHRvIHRoZQorICAgIHNhbWUgc3VibmV0IG9uIE1hY09TKSwgcmVzdWx0aW5nIGluIGEgbG9vcCBpbiBpcC1mb3J3YXJkLW1pYgorICAgIGluIHRoZXNlIHNjZW5hcmlvcy4gIFNvLCBub3cgaXQgbWVhbnMgImNoZWNrIGZvciBkdXBsaWNhdGVzIGF0CisgICAgZ2V0bmV4dCB0aW1lIiAtIHRoZSBiaW5hcnkgc2VhcmNoIHdpbGwgZmluZCBhbiBhcmJpdHJhcnkgb25lCisgICAgb2YgdGhlIGVudHJpZXMgd2l0aCB0aGUgc2FtZSBrZXksIGFuZCB3aGVuIHdlJ3ZlIGluY3JlbWVudGVkCisgICAgd2UgaGF2ZSB0byBjaGVjayB3aGV0aGVyIG9yIG5vdCB3ZSd2ZSBhY3R1YWxseSBpbmNyZW1lbnRlZCBwYXN0CisgICAgYW55IGR1cGxpY2F0ZXMuICBUaGlzIGNvc3RzIGFuIGV4dHJhIGtleSBjb21wYXJlIHBlciBnZXRuZXh0LgorICAgIAorICAgIElmIHRoZXJlJ3MgYSBzY2VuYXJpbyBpbiB0aGUgZnV0dXJlIHdoZXJlIGEgTUlCIGltcGxlbWVudGF0aW9uCisgICAgY2FuIHJlYWxseSBndWFyYW50ZWUgdGhhdCBpdCBpc24ndCBpbnNlcnRpbmcgZHVwbGljYXRlcywgd2UKKyAgICBtaWdodCB3YW50IHRvIGFkZCBhICJDT05UQUlORVJfS0VZX0lfUFJPTUlTRV9JX1dPTlRfSU5TRVJUX0RVUExJQ0FURVMiLAorICAgIHRoYXQgZGlzYWJsZXMgdGhlIGluc2VydGlvbiBjaGVjayBidXQgZG9lc24ndCBwZXJmb3JtIHRoZSBnZXRuZXh0CisgICAgY2hlY2suCisKK2NvbW1pdCBmODJkMmQ2MzQ5M2Y0MDc5YzE2N2JhMzZiMjAzZTQ5Y2RhM2JkZThkCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDE4IDIxOjU1OjA0IDIwMTQgKzAyMDAKKworICAgIEZpeCBmb3IgRnJlZUJTRDkgbG9zaW5nIG1pYi1tb2R1bGVzIGxpc3QgYmVjYXVzZSBvZiBtaXNzaW5nIE5MIGluIHNlZCBpbnB1dC4KKworY29tbWl0IDUyYjA3MmJjZmYzMmUzNTEyZmJmOTU2YjcyZDFhMzUzZTUwYTk2MmIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMTggMjE6NTM6MzggMjAxNCArMDIwMAorCisgICAgVXBkYXRlcyBmb3IgQkZEIG1pYnMuCisKK2NvbW1pdCAwM2RiNjdiMzIyZDc2ZDcxN2JlMTdhODdlNzc3YzkxZGQwZmRkM2FjCitBdXRob3I6IEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorRGF0ZTogICBUdWUgQXVnIDEyIDIzOjU1OjA3IDIwMTQgLTA0MDAKKworICAgIElmIHNkbF9hbGVuIGlzIHRvbyBsb25nIGZvciB0aGUgc3RhdGljIGJ1ZmZlciwgY2FsbCBpdCBpbmNvbXBsZXRlIGluc3RlYWQgb2Ygb3ZlcnJ1bm5pbmcgdGhlIGJ1ZmZlcgorCitjb21taXQgOGFlNzhkYTM5MWQ1YjZiNjFjYzI1MTZlYjFhNjUyMGIwZGFiYjZiZgorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgVHVlIEF1ZyAxMiAyMjo1NTo0NSAyMDE0IC0wNDAwCisKKyAgICBVc2Ugdm1fcmVnaW9uXzY0IG9uIDY0LWJpdCBhcmNoOyBjYWNoZSBtZW1vcnkgZm9yIGxvbmdlcgorICAgIAorICAgIFRoaXMgaXMgYSBwb3J0IG9mIHRoZSBBcHBsZSBwYXRjaGVzIGF0CisgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLmFwcGxlLmNvbS9zb3VyY2UvbmV0X3NubXAvbmV0X3NubXAtMTQwLjEvcGF0Y2hlcy9kYXJ3aW42NC5wYXRjaAorICAgIDEuIFVzZSB2bV9yZWdpb25fNjQgaW5zdGVhZCBvZiB2bV9yZWdpb24gb24gX19wcGM2NF9fIG9yIF9feDg2XzY0X18KKyAgICAyLiBVc2UgMzAwIHNlY29uZCB0aW1lb3V0IGZvciB0aGUgY2FjaGUuCisgICAgCisgICAgVGhpcyBjb21tZW50IGFib3V0IHRoZSBjb2RlIGJlaW5nIGluY3JlZGlibHkgZXhwZW5zaXZlIGlzCisgICAgdmVyeSB0cnVlOiBvbiBhIDEuNyBHSHogaTcgd2l0aCA4IEdCIG9mIFJBTSAoYWRtaXR0ZWRseSBhCisgICAgc21hbGwgbWFjaGluZSkgaXQgdG9vayAxNyBzZWNvbmRzIHRvIGNhbGN1bGF0ZSBhbmQKKyAgICByZXR1cm4gSE9TVC1SRVNPVVJDRVMtTUlCOjpock1lbW9yeVNpemUuMC4gIE1vc3QgU05NUAorICAgIGNsaWVudHMgd291bGQgZ2l2ZSB1cCBsb25nIGJlZm9yZSBnZXR0aW5nIHRoaXMgYW5zd2VyLgorCitjb21taXQgNjEzZTkzNzA0YmE5NWYzYzY0NDAxMTRlYjczYmYwOWY3Nzc1NTYwZQorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgVHVlIEF1ZyAxMiAyMjozNDowNiAyMDE0IC0wNDAwCisKKyAgICBkYXJ3aW4xMyBhbHNvIHVzZXMga2VybmVsX3N5c2N0bAorCitjb21taXQgYzEzZGQ5N2Q3YmRkZTczMDJkMDAyNzg3ZWVmMDNkNzcyZjI5YmNkNAorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgVHVlIEF1ZyAxMiAxMjozMDoyMyAyMDE0IC0wNzAwCisKKyAgICBVc2UgdGhlIHJpZ2h0IGhlYWRlciBndWFyZC4KKyAgICAKKyAgICBCZWxpZXZlIGl0IG9yIG5vdCwgY2xhbmcgZm91bmQgdGhpcyBkZXRhaWwgd2l0aCAtV2hlYWRlci1ndWFyZC4KKworY29tbWl0IGQ1ZDQwMzAyYjBhYjM0MGUyMTFhZDc2ZDdmMTk1YjgwN2YzODdlZjMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMTEgMTI6MzM6NTAgMjAxNCAtMDcwMAorCisgICAgdXBkYXRlIHRvIG5ldyBrZXkgSUQKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjMucHJlNCAtPiBWNS43LjMucHJlNQorCitjb21taXQgZjNmMzcxYjI3NmQyNjViNDU1ZmM0OTBmY2UxOTQ3ZGFkZjg5ZTljMgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyA4IDE5OjQ5OjA2IDIwMTQgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMy5wcmU1CisKK2NvbW1pdCA0MTgxMzJmNDNjYzQzMjMxOTY2YThiOTY3MmM2MjZmNjBiOTkxMDM5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgQXVnIDggMTQ6MjQ6NTIgMjAxNCAtMDcwMAorCisgICAgZml4IHRoZSBydW4tYXV0b2NvbmYgcHJvZ3JhbQorCitjb21taXQgN2RiNzk1OTQ5MDc1ZWZiNDg5MzczZjUxZjcwNjYzNmZlNTRhOTgzNQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyA4IDE0OjI0OjUyIDIwMTQgLTA3MDAKKworICAgIGZpeCB0aGUgcnVuLWF1dG9jb25mIHByb2dyYW0KKworY29tbWl0IDc4ZjFlZjgxNmRkYWQwOGU3ZDdjOWUxYjExZTRiNGFiMjZmNmU0YjAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBdWcgOCAxMzoyODo0NyAyMDE0IC0wNzAwCisKKyAgICB1c2VkIHRoZSByaWdodCBhdXRvY29uZgorCitjb21taXQgMWVhZWFjODAxYTM2MjViNzJiMDljN2RhNTgwMzg0MDljZDhkYzY4MQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyA4IDEzOjI2OjExIDIwMTQgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjMucHJlNQorCitjb21taXQgN2VjZmQzZWRlMTllOWMyMjE4YzliZjU5NTljMDk1Y2U5ZmE2YzhhYgorQXV0aG9yOiBCcmlhbiBTaXBvcyA8YnNpcG9zcmtmQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyA2IDEwOjMwOjU0IDIwMTQgLTA3MDAKKworICAgIEZpeCBkZXRlY3Rpb24gb2Ygc2hhMjI0IGFuZCBzaGEzODQsIHBhdGNoIGZyb20gQnJpYW4gU2lwb3MKKyAgICAKKyAgICBodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL2J1Z3MvMjU2NC8KKyAgICAKKyAgICBMdWNraWx5IG5vYm9keSdzIG5lZWRlZCB0byBidWlsZCB1c2luZyBhbiBPcGVuU1NMIHZlcnNpb24KKyAgICB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBzaGEyMjQgb3Igc2hhMzg0LCBzaW5jZSB0aGUgaW52ZXJzaW9uCisgICAgb2YgdGhlIHRlc3QgaGVyZSB3b3VsZCB0cnkgdG8gdXNlIHNoYTIyNC9zaGEzODQgc3VwcG9ydCBvbmx5CisgICAgb24gT3BlblNTTCB2ZXJzaW9ucyB0aGF0IGRvbid0IHN1cHBvcnQgdGhlbSEKKworY29tbWl0IGE5Mzk5MWVhZjUzYjE5OWIxOWM1ODJiNjMwZGEyNTE1ODMwMGE5ZDEKK0F1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAbG9jYWxob3N0PgorRGF0ZTogICBGcmkgQXVnIDEgMTA6MDc6NDUgMjAxNCAtMDQwMAorCisgICAgZml4ICMyNDgyIHNubXAgcmVzcG9uc2U6IFRvbyBsb25nCisKK2NvbW1pdCA5ZjQxZDMwYjA5ZTdjODViODI2ODEwM2NhMzIwYWM2Y2MzMmQ1YjA0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVsIDI2IDA4OjI4OjQzIDIwMTQgKzAyMDAKKworICAgIEZpeCBidWcgMjU0NjogbmV0c25tcF90ZG9tYWluX3RyYW5zcG9ydF9mdWxsIHVzZXMgd3JvbmcgcG9ydCBmb3Igc25tcHRyYXAgKyB1ZHA2CisKK2NvbW1pdCBkYjFmMjE3NTQxZTAwYjUzODEzZDk0ZjZiZWZiOWE0MmQ0ODM4ZTk1CitBdXRob3I6IEplZmYgR2VobGJhY2ggPGplZmZnQG9wZW5ubXMub3JnPgorRGF0ZTogICBGcmkgSnVsIDI1IDE2OjExOjIzIDIwMTQgLTA0MDAKKworICAgIEZpeCBidWcgMjU2MjogV2luZG93cyB4NjQgYnVpbGQgYnJva2VuIG9uIDUuNy4zLnByZTQKKworY29tbWl0IDk3NDFmMDhlNzViNDE2MmJiM2M4YjQ0OTI3OWYxODJkOTQ5ZGEzNzMKK0F1dGhvcjogQmlsbCBGZW5uZXIgPGZlbm5lckBnbWFpbC5jb20+CitEYXRlOiAgIFRodSBKdWwgMjQgMDg6MTA6NDAgMjAxNCAtMDQwMAorCisgICAgVXNlIHRoZSBzdGFuZGFyZCBleHByICI6IiBzeW50YXgKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjMucHJlMyAtPiBWNS43LjMucHJlNAorCitjb21taXQgODY0YWJiNWJhMWViMzI0ZTQyMzE1N2RiNWZiMTcyM2Y4NTU5NzNiMgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAyMyAxNTowNzo0MSAyMDE0IC0wNzAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS43LjMucHJlNAorCitjb21taXQgNWZjOGY5OWM5Zjc3ZGRhZGVlYWNlZGFlN2YwNmZlYTE3NjdkNGE5ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAyMyAxNTowMjoxOSAyMDE0IC0wNzAwCisKKyAgICBmaXggQysrIHN0eWxlIGNvbW1lbnQKKworY29tbWl0IDU0YTRhOTBhNTUyOWVhNThhZGQ5ZTZhZjZhN2U4YWQwNjU0NDA4MjgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdWwgMjMgMTQ6NDk6NDEgMjAxNCAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMy5wcmU0CisKK2NvbW1pdCBjMGQ2NjgyNmI3MWYwNTQwM2YzNmM3ZjgyMzRmZjhmN2VjYmQxNTkwCitBdXRob3I6IEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorRGF0ZTogICBUdWUgSnVsIDIyIDA2OjQ5OjI4IDIwMTQgLTA3MDAKKworICAgIFdoZW4gZW5sYXJnaW5nIGEgbGFyZ2VfZmRfc2V0LCB1c2UgRkRfWkVSTyBpZiBwb3NzaWJsZQorICAgIAorICAgIFRoZSBtb3N0IGNvbW1vbiBjYXNlIG9mIGNyZWF0aW5nIGEgbGFyZ2VfZmRfc2V0IG9uIFVOSVgKKyAgICBpcyB0byBjcmVhdGUgaXQgd2l0aCBzaXplIHplcm8sIGFuZCB0aGVuIGltbWVkaWF0ZWx5IGVubGFyZ2UKKyAgICBpdCB0byBzaXplIEZEX1NFVFNJWkUuICBJbnN0ZWFkIG9mIGxvb3BpbmcgYW5kIGNhbGxpbmcKKyAgICBGRF9DTFIoKSwgd2UgY2FuIG9wdGltaXplIHRoaXMgY29tbW9uIGNhc2Ugd2l0aCB0aGUgT1MncworICAgIEZEX1pFUk8uCisKK2NvbW1pdCBkY2FkMzFhZWI0NDIzNjlhNmZiNTJmNGRjN2Q0Zjc4MWJjNTYwMDZjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDE3IDIzOjQwOjEzIDIwMTQgKzAyMDAKKworICAgIFNvbGFyaXMgZG9lcyBub3QgbGlrZSAiZ3JlcCAtRSIgb3IgImlmICEiLgorICAgIFByb3BhZ2F0ZSBjb25maWd1cmVzIEVHUkVQIHRvIG1hbi9NYWtlZmlsZS5pbiBhbmQgYWxzbyB1c2VkIGNvbmZpZ3VyZWQgU0VELgorCitjb21taXQgYTUxY2JlZGY3ZDFkNDI0MzQyYWI1Y2EzYTRiNjcyMTdhMzY0NDA5YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAxNSAyMTo0NTo1NCAyMDE0ICswMjAwCisKKyAgICBzbm1wbmV0c3RhdC9pZi5jOiBwcm9wZXJseSBkZXRlY3Qgc25tcCBleGNlcHRpb25zCisKK2NvbW1pdCBlZWU5MjUxOWYzOGU5MzdmMjI3YmVhNzcwMWRkYjExNTdjOGJjY2NjCitBdXRob3I6IEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorRGF0ZTogICBUdWUgSnVsIDE1IDA3OjI3OjE4IDIwMTQgLTA3MDAKKworICAgIENsb3NlIHBpcGVzIHdoZW4gZnJlZWluZyBjb25maWcgYW5kIGtpbGwgY2hpbGQgcHJvY2VzcyBvbiBlcnJvcgorICAgIAorICAgIFdoZW4gZnJlZWluZyB0aGUgY29uZmlnLCBjbG9zZSB0aGUgcGlwZXMgY29ycmVzcG9uZGluZyB0byB0aGF0CisgICAgY29uZmlnLCBzbyB0aGV5IGRvbid0IGdldCBsZWFrZWQuICBBbHNvLCBpZiB3ZSBoYXZlIGFuIGVycm9yLAorICAgIHNlbmQgYSBTSUdLSUxMIHRvIHRoZSBjaGlsZCBwcm9jZXNzIGluIGNhc2UgaXQgaXMgYmxvY2tlZCBhbmQKKyAgICB3b24ndCBkaWUganVzdCBiZWNhdXNlIHdlIGNsb3NlZCB0aGUgcGlwZXMgdG8gaXQuCisKK2NvbW1pdCA4NDMxZjkxMzU1NGUwY2NjYzQ4YmVkY2UxZmQ0YThhMjg4YjZjMjdkCitBdXRob3I6IEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorRGF0ZTogICBUdWUgSnVsIDE1IDA3OjE5OjMzIDIwMTQgLTA3MDAKKworICAgIElmIHRoZSBhc3AgbG9va3VwIHJldHVybnMgTlVMTCwgZG9uJ3QgdHJ5IHRvIHVzZSBpdAorICAgIAorICAgIElmIHRoZXJlIGlzIG5vIGNvcnJlc3BvbmRpbmcgYXNwLCB3ZSBzZXQgdGhlIHJlc3VsdCBwcm9wZXJseQorICAgIGJ1dCBzdGlsbCBmYWxsIHRocm91Z2ggYW5kIGF0dGVtcHQgdG8gdXNlIGl0LiAgSW5zdGVhZCwganVzdAorICAgIGNvbnRpbnVlLgorCitjb21taXQgMTQ2ZmEzODRkOGIwNWUxZTVhMmM2N2Y4OGQwZWNhMGEzMDRmYTFmMAorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgTW9uIEp1bCAxNCAxNToyNjoxNCAyMDE0IC0wNzAwCisKKyAgICBGaXggZGVwZW5kZW5jaWVzIGZvciBhdXRvLWdlbmVyYXRlZCBtYW4gcGFnZXMKKyAgICAKKyAgICBBbHNvIG1ha2Ugc3VyZSB0aGF0IHRoZSBhdXRvLWdlbmVyYXRlZCAuc28gZmlsZXMgYXJlIGxpc3RlZAorICAgIGluIHRoZSByaWdodCBNYWtlZmlsZSB2YXJpYWJsZXMsIGFuZCB1cGRhdGUgdGhlIHZhcmlhYmxlcworICAgIHRvIGluY2x1ZGUgdGhlIG9uZXMgdGhhdCBoYWQgYmVlbiBsZWZ0IG91dCBhbHJlYWR5LgorCitjb21taXQgNDQzMTcyOGNmN2EwOTUwYWVkMjkzZDQ4YzAyZTY5MDAwZjViODNlOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEp1bCAxMyAwMzowNzoyMSAyMDE0IC0wNzAwCisKKyAgICBBSVg6IEZpeCBtb3JlIGNvbXBpbGVyIHdhcm5pbmdzCisgICAgCisgICAgQXZvaWQgdGhhdCB0aGUgY29tcGlsZXIgY29tcGxhaW5zIGFib3V0IGNhc3RpbmcgYXdheSBjb25zdCwgYWJvdXQKKyAgICB1bnVzZWQgdmFyaWFibGVzIG9yIGZ1bmN0aW9ucywgYWJvdXQgbWlzc2luZyBmdW5jdGlvbiBwcm90b3R5cGVzCisgICAgYW5kIGFsc28gYXZvaWQgdGhhdCB0aGUgY29tcGlsZXIgY29tcGxhaW5zIHRoYXQgdGhlIHR5cGUgb2YgdGhlCisgICAgdGhpcmQgYXJndW1lbnQgb2YgbW50Y3RsKCkgaXMgd3JvbmcuCisKK2NvbW1pdCA0MmE2NWYxMWUzZWQ1Njk2M2Y3OGE1YzE1NjFlZGQ2NzY1OGNjZDAwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gSnVsIDEzIDA5OjQ3OjI2IDIwMTQgKzAyMDAKKworICAgIFJlbW92ZSBDOTkgbGVuZ3RoIHNwZWNpZmllciAneicgYW5kIHVzZSBhIGNhc3QgaW5zdGVhZAorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCBiNGVhYjExMTM5ZWIxMjJjOWFkM2MxM2FiOGI5NDUzZTA0ZTQ2ODQyLgorCitjb21taXQgMzVkMGY1OWNkZDg4OTRiOGZiYmFkNjUzNzBiNWUzMDFlMzc3YTM3ZgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1bCAxMSAyMToyNjozMyAyMDE0ICswMjAwCisKKyAgICBVcGRhdGVkIERPQ1MtSUYtTUlCIHJlZmVyZW5jZQorCitjb21taXQgN2E0ZDJlYTJiM2UxNjNmZGQ5OGYwNjdhZTQ0MGZhYTMxNTJjODBjNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1bCAxMSAyMToyNToyNyAyMDE0ICswMjAwCisKKyAgICBVcGRhdGVkIElBTkEgbWlicworCitjb21taXQgMDFiM2I2NjQ2NDEzYzE0YTA1MDc0MjcyNmI5N2NmMzA4YjhmZTA5YgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCA5IDIzOjUxOjI3IDIwMTQgKzAyMDAKKworICAgIEFkZCBSRkMgNzI1NyB2cGxzIG1pYnMKKworY29tbWl0IGIwYmUxZDhhZDJjY2JjYWEyOWZmYzdjZjg4NGQwMjQzOGM0YzE2NjUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdWwgOSAyMzo1MDoyMSAyMDE0ICswMjAwCisKKyAgICBhZGp1c3QgZGVidWcgdG9rZW4gZm9yIG5ldHNubXBfc29ja2FkZHJfaW42XzIKKworY29tbWl0IDk5MjBlOWU3NjdiMTBmMDI5YWI0YjAyMGU4MjU5Njc2ZDFhMzJiMmYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdWwgOCAxMDoyNToyMiAyMDE0ICswMjAwCisKKyAgICBBSVg6IFN1cHByZXNzIGEgY29uZmlndXJlIHdhcm5pbmcKKyAgICAKKyAgICBBdm9pZCB0aGF0IHRoZSAnc29ydCcgY29tbWFuZCBjb21wbGFpbnMgZHVyaW5nIHRoZSBjb25maWd1cmUgcHJvY2VzcworICAgIHRoYXQgaXRzIGlucHV0IGlzIG5vdCB0ZXJtaW5hdGVkIGJ5IGEgbmV3bGluZS4gU2VlIGFsc28gY29tbWl0CisgICAgYTYzZTM4MWQ5YzFjOWM4NzIxMGJmMmIwMjJlM2Q2YWM3MWQyN2E3ZS4KKworY29tbWl0IGI0ZWFiMTExMzllYjEyMmM5YWQzYzEzYWI4Yjk0NTNlMDRlNDY4NDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBKdWwgNyAxNDowNDo0NSAyMDE0IC0wNzAwCisKKyAgICBBSVg6IEZpeCBhIGZldyBjb21waWxlciB3YXJuaW5ncworICAgIAorICAgIEF2b2lkIHRoYXQgdGhlIGZvbGxvd2luZyBjb21waWxlciB3YXJuaW5ncyBhcmUgcmVwb3J0ZWQ6CisgICAgLSBBc3NpZ25tZW50IGRpc2NhcmRzIGNvbnN0LgorICAgIC0gVW51c2VkIGxvY2FsIHZhcmlhYmxlLgorICAgIC0gTWlzbWF0Y2ggYmV0d2VlbiBmb3JtYXQgc3RyaW5nIGFuZCBhcmd1bWVudCBsaXN0LgorICAgIAorICAgIEFsc28gY29ycmVjdCB0aGUgaW5kZW50YXRpb24gb2YgdHdvIFNvbGFyaXMtc3BlY2lmaWMgY29kZSBzdGF0ZW1lbnRzLgorCitjb21taXQgMGRkMjc4M2I3NDdmYjk2ZDc0OTc4ZTExYzgyYTUwNGMwZGYxZDU1NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEp1bCA2IDExOjEyOjMwIDIwMTQgKzAyMDAKKworICAgIEhQIFVYLCBDUFUgc3RhdGlzdGljczogRml4IGFuIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZQorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCAwMDM0NTgxZGViM2U2NzZkMzI4ODI0Yzg3NjM3YWFjYTMxODUwYzZhLgorCitjb21taXQgZGJkNTkzMTMyZjcxOWNjM2Q5YmI1MDE3ZWM4YmM1YzhjYmIwNjNiNworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCAzIDIzOjIzOjI5IDIwMTQgKzAyMDAKKworICAgIFQwNzFjb20yc2VjNl9zaW1wbGU6IHVzZSBwcml2YXRlIGhvc3QgdG8gY2hlY2sgaXB2NiBhZGRyZXNzIHJlc29sdXRpb24gdG8gbWFrZSBzdXJlIHdlIGdldCB0aGUgZXhwZWN0ZWQgcmVzdWx0CisKK2NvbW1pdCAwMDM0NTgxZGViM2U2NzZkMzI4ODI0Yzg3NjM3YWFjYTMxODUwYzZhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVuIDMwIDIyOjA4OjM0IDIwMTQgKzAyMDAKKworICAgIEJVRyAjYTI1NTE6IGZpeCBub24tc2VxdWVudGlhbCBjcHUgbnVtYmVycyBvbiBIUC1VWC4KKyAgICBUaGFua3MgdG8gRGF2ZSBPbGtlci4KKworY29tbWl0IGIwZjQ5YmEyMWZiODEwZWZjYjA5OTJmMDFjNGZjNWZkMzBjZjY5YWYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdW4gMjYgMjE6NDI6NDggMjAxNCArMDIwMAorCisgICAgY3B1X3BzdGF0LmM6IGZpeCBtaXNzaW5nIGJyZWFrKHMpIGluIHN3aXRjaCBzdGF0ZW1lbnQKKworY29tbWl0IGE2M2UzODFkOWMxYzljODcyMTBiZjJiMDIyZTNkNmFjNzFkMjdhN2UKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKdW4gMjAgMTA6NTc6MzkgMjAxNCArMDIwMAorCisgICAgUmVjZW50IHBhdGNoIGZyb20gQmFydCAoRGlzcGxheSBtb2R1bGUgbmFtZXMgc29ydGVkKSBtYWtlIGNvbmZpZ3VyZSBsb3NlIGFsbCBtb2R1bGUgbmFtZXMgb24gU29sYXJpcyA4IGFuZCAxMC4KKyAgICBUaGlzIGNoYW5nZXMgdGhlIHdheSB0aGUgc29ydGluZyBpcyBkb25lLgorCitjb21taXQgNjBjZjZhMDZmZjczYWU3ZDRmMjQ1NGYyZWY0MGM1NmZjZDM5NGJmYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxOCAyMjoxOTozMiAyMDE0ICswMjAwCisKKyAgICBtYWtlIHRlc3Q6IGJhaWwgb3V0IGlmIG5ldHN0YXQgbm90IGZvdW5kLgorCitjb21taXQgYzEwZjJhY2JmY2MzODM0Y2Q5Mzg2NDFkYzFhMmM3MmFjYTdmNzg0NQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1biAxMCAxNjowNjo1OSAyMDE0ICswMjAwCisKKyAgICBGaXggc3R1cGlkIGJ1ZyBpbiBwa2ctbmcgcGF0Y2gKKworY29tbWl0IGUyZGE1NDg5YzNiYjgyOTc2MjYwNGM5ZDQxZjA4Y2IzYWVkZmQ4YTYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKdW4gMiAxNTo0MTo1NiAyMDE0ICswMjAwCisKKyAgICBQQVRDSCAjYTEyODM6IFJlY29nbml6ZSBPcmFjbGUgQUNGUyBmaWxlIHN5c3RlbSAoVGhhbmtzIEpvaG4gSGF4YnkpCisKK2NvbW1pdCA1NGMyY2MyNjU1YzFiNmM1NDg1ZDk5NDQxYWVkMmFjMTY5ZWVlNWY5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVuIDIgMTU6MjY6MDAgMjAxNCArMDIwMAorCisgICAgSW5zdGFsbCBTTk1QLVRTTS1NSUIgYW5kIFNOTVAtVExTLVRNLU1JQgorCitjb21taXQgY2UzMDkxY2JjNDhiYzQwNWM2ZWIxYWY3ZGRhZWIzNzBlZDc4NjQ3MQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1biAyIDE1OjIzOjI0IDIwMTQgKzAyMDAKKworICAgIEJVRyAjYTI1Mzc6IFN1cHBvcnQgKkJTRCBwa2ctbmcKKworY29tbWl0IDQ5ZTRlNDliMTJhYWUwZDhmNzU3MjgzOTM2NWQ0NmNmOTMyYmZlYzkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKdW4gMiAxNToxODo0NiAyMDE0ICswMjAwCisKKyAgICBGaXggRnJlZUJTRCBzeXN0ZW0gZGVmaW5lIGNoYWluCisKK2NvbW1pdCAzYzVlNzEyNGIzNWZkNmFjYTQyODRlYWMzNjVkNzRiNjk4MTA3ODVhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gSnVuIDEgMTE6Mjc6MjUgMjAxNCArMDIwMAorCisgICAgQ0hBTkdFUzogQlVHOiAxMjY3IHNubXBsaWI6IHJlZ2lzdGVyX21pYl9jb250ZXh0KCkgZml4IGZvciByZWFkLW9ubHkgdmFyaWFibGVzCisgICAgCisgICAgVGhpcyBpcyBhIHNsaWdodGx5IG1vZGlmaWVkIHZlcnNpb24gb2YgYSBwYXRjaCBmcm9tIEhhcnNoYSBTaGl2YW5uYS4KKworY29tbWl0IDU2ZWNjNDMzYjA5ZTk4NWYxZmRkNzg2YWFlNjBiMDYxZmZhYzAzODIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBKdW4gMSAxMToxMjo0NyAyMDE0ICswMjAwCisKKyAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuYzogRml4IGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCBjOWNmOGZkODY5ZjM3OTFhNThhNzFiOGE2M2Y1ZDYxZDY3MjkxZmFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gSnVuIDEgMTA6MDk6MjggMjAxNCArMDIwMAorCisgICAgY29uZmlndXJlOiBEaXNwbGF5IG1vZHVsZXMgbmFtZXMgc29ydGVkCisKK2NvbW1pdCAyN2ExNjA1NGQ2NTZlYjEwYWJkMDMyZGJhYzY4ZWJiYzI2Yzc2MDA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gSnVuIDEgMDk6MjI6NTIgMjAxNCArMDIwMAorCisgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfbGludXg6IFJld29yayBuZXRsaW5rIGJ1ZmZlciBhbGlnbm1lbnQKKyAgICAKKyAgICBCYXNlZCBvbiBhIHBhdGNoIGZyb20gSm9zaHVhIEhva2UuIFNlZSBhbHNvCisgICAgaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9uZXQtc25tcC9idWdzLzI1NDcvLgorCitjb21taXQgYmQxM2YwMDRmNmRjMTZkYmU1NmVhNTM4MTY2MjQ5NTc0NWQ5MzdlMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IE1heSAzMSAyMDoxNjoyMCAyMDE0ICswMjAwCisKKyAgICBXaW5kb3dzOiA2NC1iaXQgZml4IGZvciBidWlsZC1iaW5hcnkucGwKKworY29tbWl0IDFmYTRkYTFjNmNmOTY3NjA2MzMzZjdlNzdlNDA4YjdmNTFlZjYyNTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBNYXkgMzAgMTc6NDI6MDcgMjAxNCArMDIwMAorCisgICAgV2luZG93czogU3VwcHJlc3MgVmlzdWFsIFN0dWRpbyAyMDEzIHdhcm5pbmdzIGFib3V0IHN0cnRvdWxsKCkKKworY29tbWl0IGIzMWFlZGU5YzhiNjM0NjFiNTA5MmUxNmQ2MjZhNjc2YjE3MmY4YWEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMjIgMjM6MDU6MTkgMjAxNCArMDIwMAorCisgICAgUEFUQ0ggIzEyNzc6IEZpeCBpZnNwZWVkIGZvciBTb2xhcmlzIHpvbmVzLiBUaGFua3MgdG8gbGlqbworCitjb21taXQgODY5Zjc4NTU0MWExZWEzYjQyNzgxNDU4NjdiMTUyYmVjNTBkM2ViMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEFwciAzMCAxNDo1MjozMSAyMDE0ICswMjAwCisKKyAgICB3aW5FeHRETEw6IFRyYW5zbGF0ZSBTbm1wRXh0ZW5zaW9uUXVlcnkoKSBQRFUgdHlwZSBjb3JyZWN0bHkKKworY29tbWl0IGUwMTA3YzI2YjNhMGUzMGFlODMyMzViYjIyNWZlYjc4YTFhMTU2MzgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBcHIgMzAgMTU6Mzg6NTUgMjAxNCArMDIwMAorCisgICAgV2luZG93czogU2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDNhOWY4NzU0MjNjY2FhOGJhZWU3ZTE2NGJiOGE3NWRkOGUwYjczNDMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgNiAwNjoyNzoxMCAyMDE0ICswMjAwCisKKyAgICBQQVRDSCAjMTI3OTogTW9kaWZpZWQgcGF0Y2ggZnJvbSBNb2hhbiBmb3IgY29yZWR1bXAgYWZ0ZXIgY2FsbGluZworICAgIGZyZWUgd2l0aCBhIGJhZCByZWdleC4KKworY29tbWl0IDUxMzAyYmE1NzI4NWQ0ZDQ3OTkyZWQxNWE0NjA1ODAxMTJhM2U5MjQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgNiAwNjoyMToyNCAyMDE0ICswMjAwCisKKyAgICBCVUcgIzI1MjE6IEFJWDogZG9udCBkaWUgd2hlbiBDUFUgaXMgZHluYW1pY2FsbHkgYWRkZWQgdG8gc3lzdGVtLgorCitjb21taXQgMTMxYzkzYmE5MmU0NmRkZGVjNGViM2E4MjA4YWI1YTNjMTAyNjUwOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1heSA2IDA2OjIwOjI4IDIwMTQgKzAyMDAKKworICAgIENvbXBsYWluIGFib3V0IC1EIG9wdGlvbiBpZiBkZWJ1Z2dpbmcgaXMgZGlzYWJsZWQuCisKK2NvbW1pdCA5NmE3YTZhODY4OTVmZGJmODkxNzk5ZTM3NjliMjdhN2U1NGFmMDg0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTWF5IDYgMDY6MTk6NDIgMjAxNCArMDIwMAorCisgICAgc25tcHRyYXBkLjg6IGFkZCBzb21lIG1pc3NpbmcgZm9ybWF0IHRva2VucyB0byBtYW4gcGFnZS4KKworY29tbWl0IDgwYmU5MDdiZTlmNGYxZGY2YTE0NzBmZWFmYWE5MTZiOWM5YzQ5OTEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBBcHIgMjcgMTU6MjU6MzAgMjAxNCArMDIwMAorCisgICAgRml4IGJ1ZyAyMzEzIGZvciBjcm9zcyBjb21waWxhdGlvbi4KKworY29tbWl0IDlhZTU5ODE1MzBmZDJiZGQ5ZjJhNWM4NmI3ZDY5OTRiODczMDMzZDcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBcHIgMjYgMjI6MzY6MjYgMjAxNCArMDIwMAorCisgICAgUHJlcGFyZSBmb3IgRnJlZUJTRCAxMSBhbmQgMTIKKworY29tbWl0IGUzMmY3MGIxMmY1N2QyNmQ2OWQ0OTFmMWM3NDJiMDEzMmFjYTc2NjAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBcHIgMjYgMjE6NDI6MjEgMjAxNCArMDIwMAorCisgICAgRml4IGEgY291cGxlIG9mIHN0cnVjdCBzaXplcyB0byBiZXR0ZXIgbWF0Y2ggZGVjbGFyYXRpb24uCisKK2NvbW1pdCA3Y2MyZGViNWQ5MTVkMjU3MjMyODMxN2QzNzAxZDM1ZDg2MWQzZDkyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgQXByIDI2IDIxOjM0OjI2IDIwMTQgKzAyMDAKKworICAgIFVzZSBpbmV0X3B0b24gb25wbGFjZSBvZiBpbmV0X2F0b24gdG8gaGVscCBwb3J0YWJpbGl0eS4KKworY29tbWl0IGEwODdmYzlmMTY0MDIzZGU0MTRiMDliZmQzNzQ3YzcyZjFiY2EwN2YKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBcHIgMjYgMjE6MzA6NTQgMjAxNCArMDIwMAorCisgICAgVXBkYXRlIHRvIGN1cnJlbnQgSUFOQS1BRERSRVNTLUZBTUlMWS1OVU1CRVJTLU1JQiBhbmQgY3VycmVudCBSRkNzLgorCitjb21taXQgODU3MDM3YThkMjQ1N2FjOWFhMmE1MjUxMDk1NzY0Nzk3MWE0NjYzNAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEFwciAyNiAyMToyODowMCAyMDE0ICswMjAwCisKKyAgICBQcmVwYXJlIGZvciBGcmVlQlNEIDExIGFuZCAxMi4KKworY29tbWl0IGI5OTMwODQxN2Q0YmU3ZTEzOWY2MTAzZDQ0ZjExYjU1NDMzYTZiZjEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXIgMTYgMDg6MDQ6MTUgMjAxNCArMDEwMAorCisgICAgQmV0dGVyIGRvY3VtZW50YXRpb24gZm9yIHRyYXAgbG9nZ2luZyBmb3JtYXRzLgorCitjb21taXQgYTZlNGViMjZmNWMwNGQxNTc2MWNlYWY5MjQ1ODBlMGM0MGY3MmRmZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIE1hciA5IDA4OjQ2OjU3IDIwMTQgKzAxMDAKKworICAgIHN3cnVuXyo6IFNpbXBsaWZ5IGNvbW1pdCBkYTAwYmExCisKK2NvbW1pdCAzN2FmNzkyM2I4MzJmMmVjODA4MzdmYTI4ZWRjYWM4ZWIwYzdlOGVhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gTWFyIDkgMDg6MzQ6MTIgMjAxNCArMDEwMAorCisgICAgc3dydW5fKjogUmVzdG9yZSBidWZmZXIgb3ZlcmZsb3cgcHJldmVudGlvbiBjb2RlIHRoYXQgd2FzIHJlbW92ZWQgaW4gZGEwMGJhMQorCitjb21taXQgZjQzNmNlMjhmZGEzZWRjNzAxMGNkODZlY2YzYzM4NmM1YWY1MjE5NgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciA4IDE0OjA3OjU3IDIwMTQgKzAxMDAKKworICAgIHV0aWxfZnVuYzogZml4IHNraXBwaW5nIG9mIGRpZ2l0cyB3aGljaCB3b3VsZCBydW4gb25lIHRvbyBmYXIKKworY29tbWl0IGRhMDBiYTE0MmQ2YjUwNDI1NTg4OWYwOWViOWY3ZDIyMmVmNDBhZGEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgOCAxNDowNDoxOSAyMDE0ICswMTAwCisKKyAgICBzd3J1bl8qOiBzbnByaW50IG1heSBoYXZlIHNldCBhIHRvbyBsb25nIHN0cmluZyBsZW5ndGguIEZpeCBpdCBpZiBuZWVkZWQuCisKK2NvbW1pdCAzYjIwMmViMDVlYzRlNWY2ZjhmNTRiYzhhY2I0MzczNzNlNmI1ZDAzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDggMTQ6MDI6MTggMjAxNCArMDEwMAorCisgICAgc3dpbnN0X2FwdDogZW5zdXJlIHJvb20gZm9yIHN0cmluZyB0ZXJtaW5hdG9yCisKK2NvbW1pdCA4YTY2ODE0ZWRhZDVhMjhmZGJjODY0NWZiMGUxNDQ1OWJmOTE1ZGEwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDggMTQ6MDA6MjggMjAxNCArMDEwMAorCisgICAgbXRhX3NlbmRtYWlsOiBpc3NwYWNlIGNhbm5vdCB0YWtlIGEgY2hhciBhcmd1bWVudAorCitjb21taXQgM2U3MzRmYjNiZGRmMTFiOTliNmJhN2RkY2IzMGFlOTMyZDhiYTNiMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciA4IDEzOjU4OjA3IDIwMTQgKzAxMDAKKworICAgIGV4cEV4cHJlc3Npb25Db25mLCBleHBWYWx1ZTogaXNzcGFjZSBjYW5ub3QgdGFrZSBhIGNoYXIgYXJndW1lbnQuCisKK2NvbW1pdCA3NmU4ZDZkMTAwMzIwNjI5ZDhhMjNiZTRiMDEyODYxOTYwMGM5MTlkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciA2IDA5OjIxOjUxIDIwMTQgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTI3NTogZnJvbSBWaWxpYW0gUMO6xI1pazogZml4ZWQgUGVybCB0cmFwIGhhbmRsZXIgd2hlbiBwcm9jZXNzaW5nIHRyYXAgd2l0aCBlbXB0eSBjb21tdW5pdHkgc3RyaW5nLgorCitjb21taXQgNWQwNmE1ZmJiNWVkM2NhMmI1ODIwZThlZjJkNWI1Yjg4YjlkN2RmOAorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgTW9uIEZlYiAzIDExOjU4OjAzIDIwMTQgLTA4MDAKKworICAgIEFsbG93IHRoZSBub2RlbWFwIHRvIGNvbnRhaW4gbXVsdGlwbGUgbm9kZXMgZm9yIG1pYnMgbGlrZSBJRi1NSUIKKyAgICAKKyAgICBJbiB0aGUgSUYtTUlCLCAiaW50ZXJmYWNlcyIgYW5kICJpZk1JQk9iamVjdHMiIGJvdGggY29udGFpbgorICAgIHNpZ25pZmljYW50IHN1YnRyZWVzLiAgQWxsb3cgbm9kZW1hcCB0byBjb250YWluIGEgY29tbWEtc2VwYXJhdGVkCisgICAgbGlzdCBvZiBub2RlcywgdG8gaGFuZGxlIE1JQnMgbGlrZSB0aGlzLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMy5wcmUyIC0+IFY1LjcuMy5wcmUzCisKK2NvbW1pdCA1NDE2NmNmNmM3YTk4YmY4ZTVkMGRiYWJmOWI1ZTVhMjU1YzRjNDIxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDI1IDEyOjQ1OjE0IDIwMTQgLTA4MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMy5wcmUzCisKK2NvbW1pdCAzZDRlM2E2NmJkMDk3ZTM3MjBmZTVkZTJmMmUwNTc0MWIzMzA2MzA1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDI1IDExOjQyOjE1IDIwMTQgLTA4MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjMucHJlMworCitjb21taXQgYTFmZDY0NzE2ZjY3OTRjNTVjMzRkNzdlNjE4MjEwMjM4YTczYmZhMQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEZlYiAxOSAxNToyMTo1NyAyMDE0IC0wODAwCisKKyAgICBidWcgZml4IGZyb20gZmVubmVyOiBmaXggSUNNUCBtaWIgdGFibGUgaGFuZGxpbmcgb24gbGludXgKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMy5wcmUxIC0+IFY1LjcuMy5wcmUyCisKK2NvbW1pdCBiZjBhMWMzN2Q4YjhjNjQ0ZTgzNzA0MWQwOTBhYWJlOGZkODEzMWU4CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDI1IDA3OjQ5OjA0IDIwMTQgLTA4MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMy5wcmUyCisKK2NvbW1pdCBkZWNmZDhkNzliNTRkMjk4ZGVkOTc0MzllZmI3MTBlOGY2YmE1MjRjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgRmViIDI1IDA3OjMzOjUyIDIwMTQgLTA4MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjMucHJlMgorCitjb21taXQgOGFlY2NlZjM5YmJhZWI4YjgwMjVhNjhlYzQ3NjFiYzgyZWM5YWVhYQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiAyNSAwNzoyNzo0NyAyMDE0IC0wODAwCisKKyAgICBORVdTOiBzbm1wZDogcGF0Y2ggMjUyNTogZnJvbSBSeWFuIFN0ZWlubWV0ejogRml4IGFyZ3VtZW50IGxlbmd0aCBwYXJzaW5nIG9mIHRoZSBob3N0IHJlc291cmNlcyBtaWIKKworY29tbWl0IGIyMjJlN2EzZWVmNTljYmI2OGE0NTM0NzZjYjM2NDM0MmM3NGU2NDAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBGZWIgMTkgMjI6MjY6MDggMjAxNCArMDEwMAorCisgICAgRml4IHNwZWxpbmcgZXJyb3IKKworY29tbWl0IGY4ZmNiM2JjMzgxODhjY2JlOWJhY2VlNThkNmZkMmI5ODNkMDk5MjcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBGZWIgMTkgMjI6MjQ6MjYgMjAxNCArMDEwMAorCisgICAgRml4IHNwZWxpbmcgZXJyb3IKKworY29tbWl0IGQyMTRkNzBjNDUyNGU2MmZjY2FmMTA4M2FiYzViYTFhNDM5YTQ2M2UKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBGZWIgMTkgMjI6MjE6NTUgMjAxNCArMDEwMAorCisgICAgc25tcHN0YXR1czogZGV0ZWN0IFNOTVAgZXhjZXB0aW9uIHJlc3BvbnNlcy4KKworY29tbWl0IGJmNzVlYzY2OTY1ZDE1N2NiMDQ0MmY3ZGZmNTY1NmY5OWNkNzA2MzUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBGZWIgMTkgMjI6MjA6MDUgMjAxNCArMDEwMAorCisgICAgRml4IHRlc3QgZm9yIGNvbTJzZWM2IGFjY2Vzcy4KKworY29tbWl0IDY1NjdhMzdmYTMwMWI4ZmExYjY4MDA5ZDVhMGIzYTNjYmZiOWU4ZjEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgMTcgMjE6NDk6MTMgMjAxNCArMDEwMAorCisgICAgdGVzdGluZy9NYWtlZmlsZS5pbjogbWFrZSBzdXJlICckJyBzdXJ2aXZlcyBmb3IgcGVybCB0ZXN0LgorCitjb21taXQgMDViNTUxYmMzMzExODVlZGExYzA4MWQzMTM4ZDBhYzYyNWIwN2Q2YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiAxNyAyMTozNjo0OCAyMDE0ICswMTAwCisKKyAgICBGaXggc29tZSBtYW4gcGFnZSBzcGVsbGluZ3MuCisKK2NvbW1pdCA4YjA1NTVkOTVjYmMyMzhjYmU5ODM2NDM5Yjg4MDcwYzgwYTljYTVlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDE3IDIxOjM1OjI4IDIwMTQgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmaXggY2FsbCBvZiBtZW1jcHkgd2l0aCBvdmVybGFwcGluZyBhcmVhcy4KKworY29tbWl0IDNjNmE3YTZjOTQ3NDI0ODI0ZTcyNGUyOTQ0ODNhN2VjZDcwZDlkNDEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgMTcgMjE6MzM6NDcgMjAxNCArMDEwMAorCisgICAgcm91dGVfaW9jdGwuYzogc2V0IHByb3BlciBtYXNrIGJlZm9yZSBTSU9DREVMUlQuCisKK2NvbW1pdCBmOTllZjVjZWYyMDNlYTM3ODU1M2EyYWI0OTI1ZmNkODY5ZTdmNWEzCitBdXRob3I6IEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorRGF0ZTogICBUdWUgRmViIDExIDA4OjQ3OjUxIDIwMTQgLTA4MDAKKworICAgIERhdmlkIEphcnZpZSdzIHBhdGNoIGZvciBidWcgMjUwNworCitjb21taXQgZDcwZjJlOTFlMmM3MjU4ZTc2OGUzMmI2ODNkODE0YTk0MTU2NGFjMQorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgTW9uIEZlYiAzIDExOjU4OjAzIDIwMTQgLTA4MDAKKworICAgIEFsbG93IHRoZSBub2RlbWFwIHRvIGNvbnRhaW4gbXVsdGlwbGUgbm9kZXMgZm9yIG1pYnMgbGlrZSBJRi1NSUIKKyAgICAKKyAgICBJbiB0aGUgSUYtTUlCLCAiaW50ZXJmYWNlcyIgYW5kICJpZk1JQk9iamVjdHMiIGJvdGggY29udGFpbgorICAgIHNpZ25pZmljYW50IHN1YnRyZWVzLiAgQWxsb3cgbm9kZW1hcCB0byBjb250YWluIGEgY29tbWEtc2VwYXJhdGVkCisgICAgbGlzdCBvZiBub2RlcywgdG8gaGFuZGxlIE1JQnMgbGlrZSB0aGlzLgorCitjb21taXQgOTg3ODFhZTNkYTQzYjdiMTU4M2VjZGUzZTIxYmI2NTI1YTJjMGI4MAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAyNyAyMjoyNDoxOCAyMDE0ICswMTAwCisKKyAgICByb3V0ZV9pb2N0bC5jOiBGaXggc2V0dGluZyB0aGUgbmV0bWFzayB3aGVuIGNyZWF0aW5nIHJvdXRlIHRocm91Z2gKKyAgICBpbmV0Q2lkclJvdXRlVGFibGUgYW5kIGlwQ2lkclJvdXRlVGFibGUuCisKK2NvbW1pdCAyZTk0Nzc3NjkzZjE4NTM0NzlkZWQ2NzBiZTMwN2VjZTcxMzhmZWI1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDI3IDIyOjEzOjA1IDIwMTQgKzAxMDAKKworICAgIEZpeCBjb21waWxlIGZvciBTb2xhcmlzIHdpdGhvdXQgSVB2Ni4KKworY29tbWl0IDhmNjk5MWEyMTE0ZmQyMWJhNTUxOWVlOTU3NmJlYjA4MmY2MDNkZWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMjMgMTY6MzA6NDYgMjAxNCArMDEwMAorCisgICAgc25tcG5ldHN0YXQ6IHNlYXJjaCBpZk5hbWUgYW5kIGlmQWxpYXMgd2hlbiBsb29raW5nIGZvciBpbnRlcmZhY2UKKyAgICBuYW1lIGZyb20gLUNJIG9wdGlvbi4KKworY29tbWl0IDRhMzYwMTA0NjU5YzE2OWNlMjMyMjU2ZTEzOGQ5MzhkOTRlNDM1ZjkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMjMgMTY6Mjg6MzIgMjAxNCArMDEwMAorCisgICAgbG9nbWF0Y2g6IGZpeCBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhhbmtzIHRvIGdjYyBvciBjbGFuZworICAgIHdpdGggLWZzYW5pdGl6ZT1hZGRyZXNzIChyZWNvbW1lbmRlZCEpCisKK2NvbW1pdCBlZWYyZjY0YjQ2MzU3YjM1M2M3OTUwNGJjNTkzNTM1ZWJlNzQyMWU3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDIzIDE2OjI3OjA3IDIwMTQgKzAxMDAKKworICAgIGNwdV9saW51eDogc3VwcG9ydCBzeXN0ZW1zIHdpdGggbW9yZSB0aGFuIDEwMCBjcHVzLgorCitjb21taXQgM2JkNjgzYzk2ZDZhODg2NGZiZDgwNzg1NzRhZWU4Y2Q0MzFjZTMwMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxNSAxODozNjowMSAyMDE0ICswMTAwCisKKyAgICBVcGRhdGUgb3B0aW9ucyBsaXN0cyBpbiBtYW51YWwgcGFnZXMgYW5kIGNvbW1hbmRzIGhlbHAuCisKK2NvbW1pdCBhNWVmZThkZjE3ZGRjNGY2NjkzYzdkYTlhNTJjNDAxZjRkYjJiZTYzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE1IDE4OjI4OjI0IDIwMTQgKzAxMDAKKworICAgIHRlc3QgVDAyNzogbWFrZSBzdXJlIGl0IHdvcmtzIGFsc28gd2hlbiBjb25maWd1cmVkIHdpdGggLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uICE9IDMuCisKK2NvbW1pdCA1N2QxMDgyOTAwZjlhYzkzMTQ0NDMxNmE2Zjk1ZjE5ZWRhMDY5MDc0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDE1IDE4OjI2OjI0IDIwMTQgKzAxMDAKKworICAgIGNwdV9saW51eDogcmVtb3ZlIHJlZHVuZGFudCBjYXN0cy4KKworY29tbWl0IDlmNGM1NzI2MTQwOTE0MDRkZWNiYTBkNGVmMWE0Y2JhZjlmYzViZDIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDkgMTM6MzU6MjcgMjAxNCArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEZpeGVkIG1vbml0b3JpbmcgYmFzZWQgb24gbm9uLWRlbHRhIHRyaWdnZXIuCisgICAgCisgICAgc25tcGQgY3Jhc2hlZCB3aXQgZm9sbG93aW5nIHNubXBkLmNvbmY6CisgICAgICAgIG1vbml0b3IgLXMgLUQgLXIgMTAgLWUgTE9HTUFUQ0ggLW8gbG9nTWF0Y2hDdXJyZW50Q291bnQgIkxvZyBNYXRjaCIgIT0gbG9nTWF0Y2hDdXJyZW50Q291bnQKKyAgICAgICAgbG9nbWF0Y2ggTG9naW5GYWlsdXJlMSAvdmFyL2xvZy9zZWN1cmUgMTAgc3U6IC4qZmFpbC4qCisgICAgCisgICAgVGhlIHJlYXNvbiB3YXMgdW5pdGlhbGl6ZWQgdmFyaWFibGUgc3lzVVRfdmFyIGluIG10ZVRyaWdnZXJfcnVuKCksIGl0IHdhcworICAgIGZpbGxlZCBvbmx5IGlmIHRoZSB0cmlnZ2VyIHdhcyBkZWx0YS12YWx1ZWQsIHdoaWxlIGl0cyB2YWx1ZSB3YXMgdXNlZCBmb3IgYWxsCisgICAgdHJpZ2dlcnMuCisgICAgCisgICAgV2l0aCB0aGlzIHBhdGNoLCBzeXNVVF92YXIgaXMgZmlsbGVkIGZvciBhbGwgY29kZSBicmFuY2hlcyB3aGVyZSBpdCBpcyBuZWVkZWQuCisKK2NvbW1pdCBjNzUxMmFmZTU2NDNlY2FhZTk3NDVhYzE5OWI4MzljM2FhZDg0NTdiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjM0OjUxIDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzCisKK2NvbW1pdCBjOTFmODQwZDgzOTgxZjY2MGI3NTI3NGRiY2MzODdjYjVjNWY5OWFmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjI5OjI2IDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzCisKK2NvbW1pdCAyZGQ3ZGJhNzZkMWQwYjRmODY2ODM0ZTBmZDYwMTQ4YzI4MWExNTNjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjI1OjA1IDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzCisKK2NvbW1pdCA1OTE0MzFmNzk5MWY4M2QyMzg1YWRiYzVhMjJjNGE4OTU3NmJjMzEzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjIxOjU2IDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgY29uZmlndXJlIHVzaW5nIHRoZSByaWdodCBhdXRvY29uZiB2ZXJzaW9uCisKK2NvbW1pdCA4NWJiNGI1YzlmNDg5Njg3NjcxNWNiMWYxNGY0ZjFiNTgyZDIyM2JkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDE3OjEyOjAzIDIwMTMgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzCisKK2NvbW1pdCBkMjU1Y2E0MjZkMWUzZDRiYzQ4YjhmM2RiOTM3NDM1Nzg4OTM0YzQyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI5IDEyOjM1OjMwIDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBdm9pZCBkdXBsaWNhdGUgYW5kIHRyYWlsaW5nIHNwYWNlcyBpbiB0aGUgZGVwZW5kZW5jeSBmaWxlcy4KKworY29tbWl0IGQxNWNkMmI5NzQzY2NjYjUwMmRlYWZkMTQzYWRlMGFhOTBjZjMxZTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBTZXAgMjEgMDk6MDU6MTMgMjAxMyArMDIwMAorCisgICAgTWluR1c6IEJ1aWxkIGZpeAorICAgIAorICAgIEFwcGFyZW50bHkgd2l0aCByZWNlbnQgTWluR1cgaGVhZGVyIGZpbGVzIDx3aW5zb2NrMi5oPiBzaG91bGQgYmUKKyAgICBpbmNsdWRlZCBpbnN0ZWFkIG9mIDx3aW5zb2NrLmg+LiBNb2RpZnkgPG5ldC1zbm1wL3R5cGVzLmg+IGFjY29yZGluZ2x5LgorCitjb21taXQgN2JhMjNlNTcwNzY0OTllZjhlZWIyMzg4NTM4MzQ3M2NjZjQ0NzM2NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIERlYyAxNSAxMDo1ODoyNSAyMDEzICswMTAwCisKKyAgICBXaW4zMjogYmF0Y2ggYnVpbGQ6IENoZWNrIHdoZXRoZXIgUGVybCBhcmNoaXRlY3R1cmUgbWF0Y2hlcyB0YXJnZXQgYXJjaGl0ZWN0dXJlCisgICAgCisgICAgQnVpbGRpbmcgdGhlIFBlcmwgbW9kdWxlcyBmYWlscyBpbiBhIHN1YnRsZSB3YXkgaWYgZS5nLiBhIDMyLWJpdCBQZXJsCisgICAgaW50ZXJwcmV0ZXIgaXMgcHJlc2VudCBpbiAlUEFUSCUgYW5kIGEgNjQtYml0IEMgY29tcGlsZXIgb3IgdmljZSB2ZXJzYS4KKyAgICBIZW5jZSBjaGVjayB3aGV0aGVyIFBlcmwgaW50ZXJwcmV0ZXIgYW5kIEMgY29tcGlsZXIgdGFyZ2V0IGFyY2hpdGVjdHVyZQorICAgIG1hdGNoIGJlZm9yZSBzdGFydGluZyBhIGJ1aWxkLgorCitjb21taXQgNmI3MDZjNTNkNGNmNzUxZTQ5NWFhYjY2ZmUzOWZkNTFjMzJjZTkzMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIERlYyAxNSAxMDowNjoyMSAyMDEzICswMTAwCisKKyAgICBXaW4zMjogVmlzdWFsIFN0dWRpbyAyMDEzIGJ1aWxkIGZpeAorICAgIAorICAgIEFwcGFyZW50bHkgVmlzdWFsIFN0dWRpbyAyMDEzIGRvZXMgbm90IHN1cHBvcnQgZ290byA8dHlwZWRlZiBuYW1lPi4KKyAgICBIZW5jZSByZW5hbWUgdGhlIFVJTlQgbGFiZWwuIEZvciBjb25zaXN0ZW5jeSByZWFzb25zLCBhbHNvIHJlbmFtZQorICAgIHRoZSBPQ1QgbGFiZWwuCisKK2NvbW1pdCAxM2M4NTkwZTM4MjY5YTkyNjVlYWQ1Yzg1ZjA1Yzg4OTRlODZkODRjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gRGVjIDE1IDA5OjMxOjQ0IDIwMTMgKzAxMDAKKworICAgIFJlbW92ZSB0aGUgTkVUU05NUF9ET05UV0FJVCAvIE5FVFNOTVBfTk9TSUdOQUwgYWxpYXNlcyBmb3Igc2VuZHRvL3NlbmRtc2cgZmxhZ3MKKyAgICAKKyAgICBOb3RlOiB0aGlzIHBhdGNoIGlzIGEgbW9yZSBlbGFib3JhdGUgdmVyc2lvbiBvZiB0aGUgVjUtNy1wYXRjaGVzIGNvbW1pdAorICAgIDg5YTUwNGZlMzMxZTA5YTU0ZjZiMDFjMjg3N2NmMDIyOTAwNzA1YTggKDIwMTEtMTItMTkpLgorCitjb21taXQgZTBlYWQyZDU0ZWJmNDM1MzNlNTYyYzM0MDJlMTIxODhjZmRjMDc5ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IERlYyAxNCAxODo1NDowMSAyMDEzICswMTAwCisKKyAgICB3aW4zMi9idWlsZC5wbDogQWRkIHN1cHBvcnQgZm9yIHRoZSBWaXN1YWwgU3R1ZGlvIDIwMTMgY29tbWFuZC1saW5lIGVudmlyb25tZW50CisKK2NvbW1pdCA4ODg2MDk1YTk5MDkwMjkzYjA2YTA3MTllN2I4NjhmMWVkYzE0OTMzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgRGVjIDE0IDE4OjI5OjAxIDIwMTMgKzAxMDAKKworICAgIGxpYmFnZW50OiBXaW4zMiBidWlsZCBmaXggKHNlZSBhbHNvIGNvbW1pdCAwMTcyM2M2KQorCitjb21taXQgNWYzMmI0YWFhOGJjZDIyZWJhOWM2NDkyMjNmZTA4MGQ1NDc5YmM4ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IERlYyAxNCAxNzoxNzozMCAyMDEzICswMTAwCisKKyAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaDogQWRkIGEgbWlzc2luZyBkZWNsYXJhdGlvbgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMiAtPiBWNS43LjMucHJlMQorCitjb21taXQgZDAxMTdhZGVlODRlZmNiNThhNWU0MTgzZjdkN2NjNmU3MDBmMDI2NAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyA1IDIzOjMzOjUxIDIwMTMgLTA4MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMy5wcmUxCisKK2NvbW1pdCBiMWRiZGE4YmJjY2E4MjM3NzY2NGRjYTljYjZiYjA2ZjljZTYzN2EyCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDUgMjM6MzM6MzcgMjAxMyAtMDgwMAorCisgICAgUmVwbGFjZSAvLyBjb21tZW50cyB3aXRoIC8qIGNvbW1lbnRzCisKK2NvbW1pdCA5ZWUzOTZjZWMxODExNTEyZmJjYjI0NDkwYjNiZTBiOTcwZjY5ZmZiCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDUgMjM6MDY6MTMgMjAxMyAtMDgwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMy5wcmUxCisKK2NvbW1pdCA2YzM5MmZlZDZjZDVkN2EzMmVkMTBjODE3MGFlZDg1MWNlZTc3OTg1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDUgMjM6MDQ6MjUgMjAxMyAtMDgwMAorCisgICAgaW5jcmVtZW50IHRoZSByZXZpc2lvbgorCitjb21taXQgZjU0MDNlNzU2N2ViMDcxYmVkOGRhZGJhMzhhMmNkYTYwMzMyYjhmYworQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgU3VuIERlYyAxIDE4OjI0OjEyIDIwMTMgLTA4MDAKKworICAgIERvbid0IHNldCB0aGUgaWZpbmRleCB3aGVuIHNlbmRpbmcgYSBub3JtYWwgcmVwbHkuCisgICAgCisgICAgU2V0dGluZyB0aGUgaWZpbmRleCBpbiB0aGUgSVBfUEtUSU5GTyByZXN1bHRzIGluIHNldHRpbmcKKyAgICB0aGUgc291cmNlIGFkZHJlc3MgdG9vIChpZ25vcmluZyB0aGUgc291cmNlIGFkZHJlc3MgdGhhdAorICAgIHdlIGFsc28gc3VwcGx5KS4gIFRoZSBzZXF1ZW5jZSBoZXJlIGlzIHRoYXQgd2Ugc2VuZCB3aXRoCisgICAgbm8gaW50ZXJmYWNlIHNwZWNpZmllZCBidXQgdGhlIHJlcXVlc3QncyBkZXN0aW5hdGlvbgorICAgIHNwZWNpZmllZCBhcyBvdXIgc291cmNlLiAgSWYgd2UgZ2V0IEVJTlZBTCwgaXQncyBiZWNhdXNlCisgICAgdGhlIHJlcXVlc3QncyBkZXN0aW5hdGlvbiB3YXMgYSBicm9hZGNhc3QgYWRkcmVzcyB3aGljaAorICAgIGlzIGFuIGludmFsaWQgc291cmNlIGFkZHJlc3MsIHNvIHdlIHRyeSBhZ2FpbiB3aXRoIHRoZQorICAgIGluY29taW5nIGludGVyZmFjZSdzIGlmX2luZGV4IGFuZCBzcGVjaWZ5IHRoZSBzb3VyY2UKKyAgICBhcyBJTkFERFJfQU5ZLgorICAgIAorICAgIElmIHdlIHN1cHBseSB0aGUgaWZpbmRleCBpbiB0aGUgZmlyc3QgY2FsbCwgYSByZXBseSBmcm9tCisgICAgYSBtdWx0aS1ob21lZCBhZ2VudCBtYXkgY29tZSBmcm9tIGEgZGlmZmVyZW50IHNvdXJjZSBhZGRyZXNzCisgICAgdGhhbiB0aGUgcmVxdWVzdCB3YXMgc2VudCB0bywgcG90ZW50aWFsbHkgY29uZnVzaW5nIGEgbWFuYWdlci4KKyAgICBUaGlzIGJ1ZyB3YXMgZmlyc3QgaW50cm9kdWNlZCBpbiBTVk4gcjE3ODU1IGFuZCB3YXMgZml4ZWQKKyAgICBpbiBTVk4gcjE5NzY3OyBhbHNvIHNlZSB0aGUgbWFpbGluZyBsaXN0IHRocmVhZAorICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbWFpbGFyY2hpdmUvZm9ydW0ucGhwP3RocmVhZF9uYW1lPUFBTkxrVGltMzdIN003QmEwMTBMbWRrMVlHWUt3UFRrRHlSS29Ecjc2dXFEVCU0MG1haWwuZ21haWwuY29tJmZvcnVtX25hbWU9bmV0LXNubXAtY29kZXJzCisKK2NvbW1pdCAxNDRhMTMyMDhiNGZhNmYwYTFjZDk3MWY0MWE3Mjc5NzE2YjI3ZWVlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDI5IDA4OjA3OjI4IDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmaXhpbmcgdGhlIHN0YXRzIG91dHB1dCBicm9rZSB0aGUgY29ubiBvdXRwdXQgOi0oLiBGaXhlZC4KKworY29tbWl0IGY0ZTVlZTZmMzk2MzBiNzNmOGFkOTk0NmM5OTBlOTY5MDU4MGQ3Y2YKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBOb3YgMjcgMDE6MTI6MDAgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIHRlc3RzIGZvciBhc25fcmVhbGxvY19yYnVpbGRfKmludCogYW5kIHRlc3RzIGZvciBvcGFxdWUgdW5zaWduZWQgNjQtYml0IHR5cGVzLgorCitjb21taXQgMjBlNGIzNzkzMmE5ZTljYzU2YjM2MGEyMzZlOWQ4MTgwNzkzYTI5NworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIE5vdiAyNyAwMDo1NDo1OCAyMDEzICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBDb3JyZWN0IHRoZSB0eXBlIGNoZWNrIGZvciBvcGFxdWUgdmFyaWFibGVzIHdoZW4gZGVjb2RpbmcgY291bnRlcjY0IHZhbHVlcy4KKyAgICAKKyAgICBUaGFua3MgdG8gcmtqQHNvZnRob21lLm5ldCBmb3IgcmVwb3J0aW5nIHRoaXMgaXNzdWUuCisKK2NvbW1pdCA2ZTc2Y2JiYjJhMDc4M2YyMmY1OGZiN2QzMjNlOWY3MjE3Y2M2MDRhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgTm92IDI3IDAxOjAxOjA0IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEF2b2lkIGZhaWx1cmUgdG8gdHJpZ2dlciBzaWduIGV4dGVuc2lvbiBkdWUgdG8gb3ZlcmxvbmcgdHlwZXMKKyAgICAKKyAgICBJbiBhc25fcmVhbGxvY19yYnVpbGRfc2lnbmVkX2ludDY0IHRoZSBhbGdvcml0aG0gYXNzdW1lcyB0aGF0IHNoaWZ0aW5nCisgICAgdmFsdWVzIGdyZWF0ZXIgdGhhbiAweDdmZmZmZmZmIHJpZ2h0IGlzIGFuIGFyaXRobWV0aWMgc2hpZnQgdGhhdCB3aWxsCisgICAgc2hpZnQgaW4gMSdzLiBPbiBob3N0cyB3aGVyZSBsb25nIGlzIG1vcmUgdGhhbiAzMiBiaXRzIHRoZSB1c2Ugb2YgbG9uZworICAgIGZvciAnbG93JyBhbmQgJ2hpZ2gnIG1ha2VzIHRoaXMgYXNzdW1wdGlvbiBmYWxzZS4KKyAgICAKKyAgICBUaGFua3MgdG8gcmtqQHNvZnRob21lLm5ldCBmb3IgcmVwb3J0aW5nIHRoaXMgaXNzdWUuCisKK2NvbW1pdCA0YTRiNzhlNjNkZDY4ODg5MmI3Mzk5YjU4NGUyNmUwNDdkMzY3NTAxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDI3IDIyOjE2OjQ0IDIwMTMgKzAxMDAKKworICAgIEFkZGl0aW9uYWwgZml4IGZvciBkYXJ3aW4xMworCitjb21taXQgOTFiZDVkNGM1ZjQxYjU0YzQ2MjQyODgzZGI5MmFhNGU0OTQ1NTI5NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAyNyAyMjoxMzowMyAyMDEzICswMTAwCisKKyAgICBzbm1wbmV0c3RhdDogZml4IHRydW5jYXRlZCBzdGF0aXN0aWNzIHdoZW4gdXNpbmcgLXYxCisKK2NvbW1pdCAwY2IxNGQ0ZTVjMzlhMDdjNzg0NzQ4ODFlNmM3M2ZhNjE3NTA3YmRiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDI3IDIyOjA2OjU4IDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmaXggc3RhdGlzdGljcyBmb3IgaXB2NgorCitjb21taXQgMmQ0ZGVmZTc3YmRlYmJiYzFhNzczZWI4ZDQ4NDk4YjZmMjU1OGYyMworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIE5vdiA1IDA2OjQ5OjM1IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBVc2UgMCBmb3IgdGhlIGlnbm9yZWQgbnVtdmFycyBhcmd1bWVudCB0byBuZXRzbm1wX3JlZ2lzdGVyX21pYgorICAgIAorICAgIFRoZSBudW12YXJzIGFyZ3VtZW50IG9mIG5ldHNubXBfcmVnaXN0ZXJfbWliIGlzIGlnbm9yZWQgaWYgdGhlIHZhcgorICAgIGFyZ3VtZW50IGlzIE5VTEwuIEluIG9yZGVyIHRvIHVuaWZ5IHRoaXMgdXNlIG9mIGl0IHdpdGggYWxsIG90aGVyIG9uZXMsCisgICAgY2hhbmdlIGl0IGZyb20gMSB0byAwCisKK2NvbW1pdCBiOTkzM2U2MTgzYjE3MTVjOTBkN2NmNmRmYWMxODkxMDAwNzk2YmNlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTm92IDIyIDIzOjA0OjA4IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgc29tZSB1bnVzZWQgaW5jbHVkZXMKKworY29tbWl0IGE3ODMwNzAzOGJmMGI0ODU5ZTExYmQ4NmNhMzA0OWMzMzlhYmUxMjYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMjMgMDk6NDk6MDEgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBhIG1pc3NpbmcgZnVuY3Rpb24gZGVjbGFyYXRpb24KKworY29tbWl0IGQ4ZDYwNzhiM2U2NWI1YmExMzFkZjg0MmQ5MmM3NzQzNzM3ZmY5NTUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFR1ZSBOb3YgMTkgMDg6MDY6MzQgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFyayByZWdpc3Rlcl9zaWduYWwgYW5kIHVucmVnaXN0ZXJfc2lnbmFsIGFzIHVudXNlZC4KKworY29tbWl0IGJmMDgzZjViNjljY2I5NWZmNzBlMmEyOGE3YzY0ZmVjN2Q3ZTQyMmUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMTggMjI6NDE6MjggMjAxMyArMDEwMAorCisgICAgUGF0Y2ggYTEyNzA6IG1hbiBwYWdlIGZpeHVwcyAodGhua3MgQWxla3NhbmRycyBTYXZlbGpldnMpCisKK2NvbW1pdCA2MmE2MzRjZTY3MWMzOGFkZTk3OTE3MDc3MDM5ZTM0YWUzZDkyNzM0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gTm92IDMgMTY6MDI6MzkgMjAxMyAtMDgwMAorCisgICAgV2luMzI6IFVuYnJlYWsgdGhlIGJ1aWxkIChzZWUgYWxzbyBjb21taXQgMjUzZjkwNzQzKQorCitjb21taXQgYTgxM2I1MTExMjU1Zjc1ZmVmNjk0NGNlZGQ2NDhkYmY4YzM0YTlhZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE5vdiAxMSAxNzo1NDo0NCAyMDEzICswMTAwCisKKyAgICBXaW4zMjogcGVybDogQXZvaWQgdHJhbnNwb3J0IGluaXRpYWxpemF0aW9uIGZhaWx1cmUgaW4gUGVybCBTTk1QIGFnZW50cworICAgIAorICAgIEF2b2lkIHRoYXQgdGhlIGZvbGxvd2luZ24gbWVzc2FnZSBpcyBwcmludGVkIGR1cmluZyBzdGFydHVwIG9mIGEgUGVybCBTTk1QCisgICAgYWdlbnQ6CisgICAgCisgICAgbmV0c25tcF9hc3NlcnQgcyAhPSAoLTEpIGZhaWxlZCAuLlwuLlxzbm1wbGliXHRyYW5zcG9ydHNcc25tcFVEUEJhc2VEb21haW4uYzo0ODQKKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgMzZhN2RlNzIzMGZiYmJiNTJjYzM3Y2JiZWQyODFlYjU1OTQwNGJlOS4KKworY29tbWl0IGEyYTNhMWFhNjdmZjM4ZGFhOGYxMzk1MThhYmIzNTQ4NDc1ZWQ1OTEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgOCAyMjozMjoyOSAyMDEzICswMTAwCisKKyAgICBzbm1wbmV0c3RhdDogZml4IHVzYWdlIG1lc3NhZ2UgdG8gYmUgY2xvc2VyIHRvIHJlYWxpdHkuIEZpeCBoYW5kbGluZyBvZiAtQ3AgYW5kIC1DZiBvcHRpb25zIHdpdGggbmV3IHRhYmxlcy4KKworY29tbWl0IDcyNzc0MDAxMDJkZmNhOTIxZWFjMGJkOWNlZjg2YjMyZjU5ODAwM2QKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgOCAyMjozMDoxNCAyMDEzICswMTAwCisKKyAgICBDbGVhbiB1cCBzbm1wbmV0c3RhdCBtYW4gcGFnZSwgcmVtb3Zpbmcgc29tZSBsZWZ0IG92ZXIgY3J1ZnQgbWFuCisgICAgb3JpZ2luYWwgYnNkIG5ldHN0YXQgcGFnZS4KKworY29tbWl0IGViMDM3OWRiMzg1M2ZhZDEzOGY5MmY0NzkyYTgwMzQxNzdkOTYyOWEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgNCAyMjowOTo1NSAyMDEzICswMTAwCisKKyAgICBGaXggbGVuZ3RoIG9mIGRlZmF1bHQgcm91dGVyIGFkZGRyZXNzIHVzaW5nIHN5c2N0bC4KKworY29tbWl0IDhmYTQ2ZjI5NjEzYzE3OTJjNGExNDQzMjk0NDI3M2I2ZDc0ZTNmM2MKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgNCAyMjowNzo1NiAyMDEzICswMTAwCisKKyAgICBGaXggaGFuZGxpbmcgb2YgY29tbWFuZCBuYW1lcyB3aXRoIGJsYW5rcyBvbiBMaW51eC4KKworY29tbWl0IDZmY2IzODFkY2Q0NjBiNzk1NTYzMzllYjM2ZmJlNTc5YmY0OWRjMDMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgNCAyMjowNTo1NiAyMDEzICswMTAwCisKKyAgICBBZGQgTElTUC1NSUIgdG8gcmZjbGlzdC4KKworY29tbWl0IDFjNTEwNDc0MTA3MDIxOWYxMzgwMGQ3NmFmZDU3YTBkNjM2YzI0M2IKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgNCAyMTo1NDozNiAyMDEzICswMTAwCisKKyAgICBGaXggcGFnaW5nIHN0YXRpc3RpY3MgZm9yIE9wZW5CU0QgNS40CisKK2NvbW1pdCAyZjU3YjgwNGU4M2I4Zjg5Yjg5Njk2MzdmODNkODg4NjAxMDgzOGZmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDMwIDIxOjM1OjMzIDIwMTMgKzAxMDAKKworICAgIEFkZCBkYXJ3aW4xMyBzdXBwb3J0IGZpbGUKKworY29tbWl0IDgyM2Q1MWY3OWI4NGUxMzU5M2U1YjFhYzliNDA3NjM0YzU0MzQ2ZjQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjEgMjA6NDk6NTMgMjAxMyArMDIwMAorCisgICAgRml4IG1ha2UgaW5zdGFsbCBpbiBtYW4gZGlyZWN0b3J5IGZvciBTb2xhcmlzIGNhdXNlZCBieSBWUEFUSCBvZGRpdHkuCisKK2NvbW1pdCBjNTc1MjA0YTAyMDU5MTk5NDI4Y2UxMzViYzEyZWNiMzg1ZTM2NzYzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDIxIDIwOjQ3OjMxIDIwMTMgKzAyMDAKKworICAgIENoYW5nZSBhbiBvY2N1cnJlbmNlb2Ygc3ByaW50ZiB0byBzbnByaW50Zi4KKworY29tbWl0IGEyYmRhOTk0MDE5MjgwMjc4YmVkZWQ3OTE3Yzg3N2ZjYjQ0ODg3M2QKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjEgMjA6NDY6MzAgMjAxMyArMDIwMAorCisgICAgQmV0dGVyIHdvcmRpbmcgZm9yIHN0YXRpc3RpYyBlbnRyeS4KKworY29tbWl0IDY2NDRiMDVkM2NmMzQxMjNjZWRhNzRiN2I4NGYxNjk0NDM1OWU3Y2EKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjEgMjA6NDU6MTUgMjAxMyArMDIwMAorCisgICAgRml4IHdhcm5pbmdzIGZvciBsaWJubDEuCisKK2NvbW1pdCA5NDA4MTZlMDE5MTcxYTA0MTRlZTAwYTQ2Y2RhNGNlNjBiYzAxZjcxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgT2N0IDUgMTE6MDU6MTIgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDEyNjU6IEZpeCBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBkdW1wX3JlYWxsb2Nfb2lkX3RvX2luZXRhZGRyZXNzKCkKKworY29tbWl0IDA5OTJlY2Y4ZmM1ZDg3ODM3MDA2ZDRiYzNhODY4MWU1NzM2ZTM1NzMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBPY3QgMTcgMDc6MTY6MjMgMjAxMyArMDIwMAorCisgICAgcGFzc19wZXJzaXN0OiB6YXAgcG9zc2libGUgQ1IgYXQgZW5kIG9mIGxpbmUuCisKK2NvbW1pdCBlYjg4ZTAyNGI0YzI2Nzk5NGRlNDA0MDFlOGI3ZDc3ZTMyZGVjNmNmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgT2N0IDE1IDIxOjMzOjU2IDIwMTMgKzAyMDAKKworICAgIE1haW50YWluIGJ5dGUgb3JkZXIgZm9yIElQdjYgcG9ydCBudW1iZXJzIGluIHRyYW5zcG9ydCBkYXRhIChwcm9ibGVtIHN1cmZhY2VkIGluIHNubXBUYXJnZXRBZGRyRW50cnkpCisKK2NvbW1pdCBmMmU1N2I4ZTYzOGExZmNkYzg1ZmQwZmQyZjY1NTJhMzNmY2FiM2Y4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgT2N0IDE1IDIxOjE3OjIxIDIwMTMgKzAyMDAKKworICAgIHNubXBuZXRzdGF0OiBiZXR0ZXIgaGFuZGxpbmcgb2Ygc25tcCBleGNlcHRpb25zLgorCitjb21taXQgZTAyODAyOTRlN2U2YmViZDYyZmJhYjk5MjhiMWI1ZjAxYjczNWU3MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCAxNSAyMToxNTozOSAyMDEzICswMjAwCisKKyAgICBGaXggRElTUExBWS1ISU5UIGZvciBuZWdhdGl2ZSB2YWx1ZXMgYW5kIGhpbnQgImQtbiIuCisKK2NvbW1pdCAxYWJiNWEwOTRkMjc1MTRiODE0N2IxMTI4ZGIyY2RkY2IxNzAzYmI4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTm92IDIgMTQ6NDU6NDIgMjAxMiArMDEwMAorCisgICAgVXNlIE5FVFNOTVBfUFJJeiB0byBwcmludCBzaXplX3QgdmFsdWVzIGluIF9zZXNzX3JlYWQKKworY29tbWl0IGFjYjcyNTg5YWNiMzAxOGU0NDNmNWUzZjY1NGRkMDNmN2MyNjMxNmEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgMSAxODo0MTo1MSAyMDEzICswMjAwCisKKyAgICBBZGQgZm9yZ290dGVuIGljbXBPdXRFY2hvcyB0byBpY21wTXNnVGFibGUuCisKK2NvbW1pdCAyNTNmOTA3NDM5MTUxMDIzYTkyYTNhYzQzYTlmMzE3ZTNhNGUxN2ZhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDMwIDIyOjEzOjQzIDIwMTMgKzAyMDAKKworICAgIFNvbGFyaXM6IHN1cHBvcnQgaWNtcE1zZ1N0YXRzVGFibGUKKworY29tbWl0IDZlZTkxZjA2YjViZDBlMGNiZDJiNjlmM2RhZTBiZjYxNDFjYzk1NTYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMzAgMDY6NTk6MTAgMjAxMyArMDIwMAorCisgICAgU29sYXJpcyBzdXBwb3J0IGZvciBJUC1GT1JXQVJELU1JQgorCitjb21taXQgNGViZGYzZmIwNDQ1ZjkwNjdlY2IzODM5NGMyZGYyYmQzYjczODE4MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAzMCAwNjo1NDoyOCAyMDEzICswMjAwCisKKyAgICBQcm9wZXJseSBoYW5kbGUgdGhlICdiJyBkaXNwbGF5IGhpbnQuCisKK2NvbW1pdCA3ZjJlZGJmNjgzNDhjYWJlYWY5OTVhYWJhMWIyYTc4OTNkMThjNWU3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgQXVnIDMwIDA4OjUwOjA5IDIwMTMgKzAyMDAKKworICAgIFJlbW92ZSBzb21lIGNvbW1lbnRlZCBvdXQgZGVmaW5lcworCitjb21taXQgNDM1ZWUxZjQwMjNjYjAwMjI0NWMzYTU2ZGJlYWJhMzdhM2QzZWRiZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IFNlcCAyOCAxNDoyNjoxMCAyMDEzICswMjAwCisKKyAgICBQYXRjaCBhMTI1OSAoYnVnIGEyNDU2KTogcHJvYmxlbXMgd2l0aCBpcENpZHJSb3V0ZVRhYmxlIG9uIDY0LWJpdCBiaWdlbmRpYW4gbWFjaGluZXMuIFRoYW5rcyB0byBDaHJpc3RvcGhlciBXdS4KKworY29tbWl0IDlhNmY1NjYzOTJhM2NmMTJkYWI0ODhhNzZkNjlmYzg3M2RiZWMyYWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBBdWcgMjUgMTA6MTg6NTMgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUmVuYW1lIG1lbWR1cCgpIGludG8gbmV0c25tcF9tZW1kdXAoKQorICAgIAorICAgIFJlbmFtZSB0aGUgZnVuY3Rpb24gbWVtZHVwKCkgZGVmaW5lZCBpbiBsaWJuZXRzbm1wLnNvIGludG8KKyAgICBuZXRzbm1wX21lbWR1cCgpLiBUaGlzIGF2b2lkcyBjb25mbGljdHMgd2l0aCBtZW1kdXAoKSBmdW5jdGlvbnMKKyAgICBkZWZpbmVkIGluIG90aGVyIGxpYnJhcmllcyB0aGF0IGRlZmluZSBhIGZ1bmN0aW9uIHdpdGggdGhlIHNhbWUKKyAgICBuYW1lLiBBcyBhbiBleGFtcGxlLCBpZiBXSU5TIG5hbWUgcmVzb2x1dGlvbiBoYXMgYmVlbiBlbmFibGVkIHZpYQorICAgIC9ldGMvbnNzd2l0Y2guY29uZiB0aGVuIHBlcmZvcm1pbmcgYSBob3N0IG5hbWUgbG9va3VwIGNhbiB0cmlnZ2VyCisgICAgYSBjcmFzaCBpbiB0aGUgU0FNQkEgV0lOUyBuYW1lIGxvb2t1cCBsaWJyYXJ5IGJlY2F1c2UgY2FsbHMgdG8KKyAgICBtZW1kdXAoKSBmcm9tIHRoYXQgbGlicmFyeSBnZXQgcmVkaXJlY3RlZCB0byB0aGUgaW5jb21wYXRpYmxlCisgICAgTmV0LVNOTVAgbWVtZHVwKCkgZnVuY3Rpb24uIFNlZSBhbHNvCisgICAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMDAwNzgwIGZvciB0aGUgZGV0YWlscy4KKyAgICBUaGlzIHBhdGNoIGludGVudGlvbmFsbHkgY2hhbmdlcyB0aGUgTmV0LVNOTVAgQUJJLgorCitjb21taXQgM2RkZTQxOTk4NjI1ZmUwZTI0MTE5YTJlMWY0NTA5YmEzYmEyZmQ5YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCA1IDIwOjI3OjIyIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IExpbnV4OiBCVUc6IDIyMzg6IEFkZCBsaWJubDMgc3VwcG9ydAorCitjb21taXQgYTM3OTU3YmVlOWY3OWRiMTliYmE5M2YxMWZhYTAzNzkyMWQ2ZTU4NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAyMyAyMjoyNDoxNSAyMDEzICswMjAwCisKKyAgICByb3V0ZV9zeXNjdGwuYzogRml4IGZvciBsaW5rbG9jYWwgcm91dGVzIG9uIEZyZWVCU0QgMTAKKworY29tbWl0IGQ5YTdmOWZjNjc5NDU1YjBmYTMyOGZiYWU2N2VjMmVlMjkwNmI5NGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTk6NDI6NTEgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IEF1dG9tYXRlIGJ1aWxkaW5nIHRoZSBpbnN0YWxsZXIKKworY29tbWl0IGViMWExNjQxNTAwZDZiY2YzOWY5Yjg0N2EyYzA2YzllZGEwYzg4YzQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTk6MzI6MzEgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIGFuIGluc3RhbGxlciB3aXRob3V0IGFkbWluaXN0cmF0aXZlIHByaXZpbGVnZXMKKworY29tbWl0IGE5Nzc3ZWM5YWZiMzdjYTY0NDIxNjYwNzliZDViMmUwMzQ5YmUzZTMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTg6MzU6NTUgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggT3BlblNTTCB2ZXJzaW9uIGNoZWNrCisKK2NvbW1pdCA1Y2IyY2M3YWIyMGIyOTBhNmM3NDU4NWY5ODVmOWM5MTJjZGVjOGNlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gU2VwIDIyIDEwOjI1OjAwIDIwMTMgKzAyMDAKKworICAgIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaTogUmVtb3ZlIE1TVkMgcmVkaXN0cmlidXRhYmxlIGZpbGVzIGZyb20gdGhlIGluc3RhbGxlcgorCitjb21taXQgMTc4MTIwMDYxZWNlNDhjY2Q5N2EzYWUzNmI4ODBkYTZiMTA5NTIwNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIFNlcCAyMiAwOTo1MDoxOCAyMDEzICswMjAwCisKKyAgICB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQ6IEdlbmVyYWxpemUKKworY29tbWl0IDg1YTFjNTAyNmYxMGZmMTQzZjQzN2YwMDM4OTRhNmM0YWExODdhOTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTg6NDM6MDUgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IEZpeCB4NjQgZGV0ZWN0aW9uCisKK2NvbW1pdCBhMGMyYTdhYjQyOTk3NDMzZTcwN2MxMGY4YWNmNjFmOTEyNDQyZjcwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gU2VwIDIyIDE3OjI4OjU0IDIwMTMgKzAyMDAKKworICAgIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOiBFeGFtaW5lIHR3byBsb2NhdGlvbnMgZm9yIE1pbkdXIGJpbiBkaXIKKworY29tbWl0IGNmMTAwNmU2N2Y5Yzc3ZmJkYTk0ZDQ1MjFlNzhmMDA5OGM4YTBlMTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTA6MTE6MTMgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IEZpeCBTU0wgYnVpbGQKKworY29tbWl0IGI0N2YxMzZiZWE4ZWY1NDY4YTIwZDk0NTJiMTIzMThkYjZjMzQ5ZWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMTc6MDU6MzcgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IEFkZCBXU0RLIHN1cHBvcnQKKworY29tbWl0IDBlMThhMjA2YWFhNDkwZmRlYjJjNzBhMGU2ZTUyYzkxZWI1ZjNlZDkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMjIgMDk6NDg6MDYgMjAxMyArMDIwMAorCisgICAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IFJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uCisKK2NvbW1pdCA4NWRmMDJiODM2MzIwY2M0NWU1ZDJkYjQ1NDgzYmM1MDg2MzE0NDZjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gU2VwIDIyIDEwOjAyOjIxIDIwMTMgKzAyMDAKKworICAgIHdpbjMyL0NvbmZpZ3VyZTogRml4IGJ1aWxkIHdpdGhvdXQgT3BlblNTTAorCitjb21taXQgM2Y5YWRiOTg3YjViZjVkMmQwOTVjZmQ2ZWEyZGE5Y2Q4MWQxYmVjNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIFNlcCAyMiAwOToxNTo0MSAyMDEzICswMjAwCisKKyAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYzogV2luMzIgYnVpbGQgZml4CisKK2NvbW1pdCBhNmUxODUxZmJlNzQ3Y2YxNWVkMDc1ODA3NzgxY2U4OWEzNGU5NmMyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgU2VwIDIxIDE5OjU1OjAyIDIwMTMgKzAyMDAKKworICAgIFJlc3RvcmUgIkNIQU5HRVM6IFdpbjMyOiBwZXJsOiBCVUc6IDI0ODg6IEF2b2lkICJGcmVlIHRvIHdyb25nIHBvb2wiIGVycm9yIgorICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYjI3MjU5NjRiZGU5MjFiNjI4NWUzYTU5YTUxMjU1MmNhZTBhMGNhNS4KKworY29tbWl0IGIyNzI1OTY0YmRlOTIxYjYyODVlM2E1OWE1MTI1NTJjYWUwYTBjYTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBTZXAgMjEgMTk6NDk6NTggMjAxMyArMDIwMAorCisgICAgUmV2ZXJ0ICJDSEFOR0VTOiBXaW4zMjogcGVybDogQlVHOiAyNDg4OiBBdm9pZCAiRnJlZSB0byB3cm9uZyBwb29sIiBlcnJvciIKKyAgICAKKyAgICBUaGlzIHBhdGNoIGlzIG5vdCBhcHByb3ByaWF0ZSBmb3IgdGhlIHY1LjQgYnJhbmNoLgorCitjb21taXQgNjQ1MzcxN2Y2YWM2NjViZjUzMjc0NGE4NmNkYjg5OGFhZjgzZDZiZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCAyMSAxOTozNDoyNSAyMDEzICswMjAwCisKKyAgICBBZGQgcmVwcm9kdWNlciBmb3IgYnVnIDI0ODgKKworY29tbWl0IDBkMGE0NjI5NzAyZWI5ZjlmZTk5NTZjMWJhYzRiNDQ1NjEwZmYzYzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMzEgMTc6MjE6MjIgMjAxMyArMDIwMAorCisgICAgU2ltcGxpZnkgc25tcFRhcmdldEFkZHJfcm93U3RhdHVzQ2hlY2soKQorCitjb21taXQgNGI4N2UzY2I0ZDM2NzlhYjYwYzM1M2JhNGZmMzAxZjY4NDJiODRiYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCAyMSAxNjozNzowOSAyMDEzICswMjAwCisKKyAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjhleGVjZml4X3NpbXBsZTogU2ltcGxpZnkKKworY29tbWl0IDY1Yzg4ZTJlY2Y1ZGU5MzY1YzgzYzQ2ZWYzYmI0Y2Q4OWNkYzQ0ZTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBTZXAgMTUgMTE6MTE6NDMgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IHBlcmw6IEJVRzogMjQ4ODogQXZvaWQgIkZyZWUgdG8gd3JvbmcgcG9vbCIgZXJyb3IKKworY29tbWl0IDFhNDg1NWRhNGIxZGQ2OTNhMmIwMzc3YjkxZTljMzNlM2M3ZjJhNGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBTZXAgMjEgMTc6MTE6NDUgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogQlVHOiAyNDAyOiBBZGQgc3VwcG9ydCBmb3IgU05NUHYzIHRyYXBzCisKK2NvbW1pdCAzZDA1MTU2OTNmNmEwZDI5ZDM5ZGQwYzg2OGQzNzhjNzRiYzRmODdjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgU2VwIDIxIDA5OjE2OjMzIDIwMTMgKzAyMDAKKworICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2OGV4ZWNmaXhfc2ltcGxlOiBQb3J0IHRvIE1pbkdXIGFuZCBGcmVlQlNECisKK2NvbW1pdCA1YjZlNDMxZDlmNjYzYTNjMzI3ZDcxZGFjOTUzOTJjZmQ4NmIzMjkxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgU2VwIDIxIDA5OjAzOjU5IDIwMTMgKzAyMDAKKworICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYzogRml4IGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCA5ZjJlOGZjOGQ5YTI2ZjU3YWIwODlhYmEzZDFhZTI2YjNlOGYyZDU0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDE3IDIyOjMwOjM4IDIwMTMgKzAyMDAKKworICAgIEZpeCBkZXBlbmRlbmN5IGZvciBGcmVlQlNEMTAKKworY29tbWl0IGE1MDZlZmRkMWRiODI0YTllZWVlMDNkMDAyMWM5MGZhZjNiNjI5MjQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMTcgMjI6Mjk6MzQgMjAxMyArMDIwMAorCisgICAgc25tcGRmIG1hbiBwYWdlOiBmaXggZm9ybWF0dGluZyBvZiAtQ2gvLUNIIG9wdGlvbnMKKworY29tbWl0IGEyZTk3YmViZmM1MjE3MGY5ZWMxMDM2ZDI0YWE4NGY1OWNmMmU1MDgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMTcgMjI6Mjc6NDkgMjAxMyArMDIwMAorCisgICAgVXBkYXRlIHRoZSBCU0QgbXVsdGktY3B1IGNvdW50ZXJzIGNvZGUgdG8gd29yayB3aXRob3V0IGNvbmZpZ3VyZSBoZWxwLgorCitjb21taXQgYzg1ZDY0ZDU0YjA2ODc5YTNhNjkxZGFkZmZjMDNiZmIxZjU5MDk2ZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIFNlcCAxNyAwNjozNzoxOCAyMDEzICswMjAwCisKKyAgICBPbmx5IHRlc3QgdGhlIGV4ZWNmaXggY29uZmlndXJhdGlvbiBkaXJlY3RpdmUgaWYgaXQgaXMgZW5hYmxlZAorCitjb21taXQgZWQ4YjY5N2NlYTA2NzlkZTdiZTViM2Y1ZDQ2OTEzNGUxY2RhZWQ1NgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCA3IDEwOjI3OjAyIDIwMTMgKzAyMDAKKworICAgIG00L2FjX2FkZF9zZWFyY2hfcGF0aC5tNDogRml4IGEgY29tbWVudAorCitjb21taXQgZjc3OWM1ZTk0Njc4ODU4NTJmMTZjNTU0MWEzODAxMTFmOWVhZDA2MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCA3IDIwOjI4OjI5IDIwMTMgKzAyMDAKKworICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X2FwdC5jOiBGaXggY29tcGlsZXIgd2FybmluZ3MKKyAgICAKKyAgICBSZW1vdmUgdGhlIHVudXNlZCB2YXJpYWJsZSAncmMnIGFuZCBmaXggYSBmb3JtYXQgc3RyaW5nLgorCitjb21taXQgYzY0Mzk2MjdkMDlmNTAzZmRjOGNmYTMyZDg4NGU4MzQ3MzgzMTc1NAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1hciA4IDAwOjEzOjA1IDIwMTEgKzAwMDAKKworICAgIGFsbG93IGZvciB2MmMgU0VUIHN1cHBvcnQgdGVzdGluZworICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDg0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNWNiZDU0MzQxYTJhNzliZjg1MzczNzdkMTEzNzI0ODNmMDg2NDdhZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCAxNCAxNDoyODoyMSAyMDEzICswMjAwCisKKyAgICByZWdyZXNzaW9uIHRlc3RzOiBBZGQgYSB0ZXN0IGZvciB0aGUgZXhlY2ZpeCBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZQorCitjb21taXQgMWM3NTYzNDllNGQzMWQzOWVjMmZjNTNjNjQ0MGFlNTNiM2IwM2RmMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IFNlcCA3IDIwOjI4OjU2IDIwMTMgKzAyMDAKKworICAgIHNubXBkOiB1Y2Qtc25tcDogRml4IGEgcG90ZW50aWFsIGNyYXNoIGluIGZpeEV4ZWNFcnJvcigpCisgICAgCisgICAgRG8gbm90IGludGVycHJldCBhIGNvbW1hbmQgc3BlY2lmaWVkIHZpYSB0aGUgZXhlY2ZpeCBjb25maWd1cmF0aW9uCisgICAgZGlyZWN0aXZlIGFzIGEgcHJpbnRmKCkgZm9ybWF0IHN0cmluZy4KKworY29tbWl0IDhiMTQwZDA5NjVlMTFmNTkyMTc2OGJmMDVkMGMyYjE5NDFjMGQzMzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMzEgMTc6MTA6NTUgMjAxMyArMDIwMAorCisgICAgU05NUC1UQVJHRVQtTUlCOiBEZWNsYXJlIGxvY2FsIHZhcmlhYmxlcyBhdCBmaWxlIHNjb3BlIHN0YXRpYworICAgIAorICAgIEFsc28sIGRlY2xhcmUgdGhvc2UgdmFyaWFibGVzIGNvbnN0IHRoYXQgYXJlIG5vdCBtb2RpZmllZC4KKworY29tbWl0IDdiODJjNjFlNzUzZTE1N2M0Yjg2OTgyMTkwMDZmMmY4M2RmNTI4MDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMzEgMTY6NTE6MTUgMjAxMyArMDIwMAorCisgICAgU05NUC1UQVJHRVQtTUlCOiBFbGltaW5hdGUgdHdvIHN1cGVyZmx1b3VzIGNhc3RzCisKK2NvbW1pdCBkYmNmNDdkZDRmZTUyNjJhZDBmYWQ3Yzk3NzQ1MjA5NTg5NTQwYzQwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIFNlcCAxMSAxMDoyMTozMiAyMDEzICswMjAwCisKKyAgICBSZXdvcmQgdGhlIGluY2x1ZGVGaWxlIHNlYXJjaCBwcm9jZXNzIHRvIGZpdCB0aGUgaW1wbGVtZW50YXRpb24uCisKK2NvbW1pdCA4NTA3MzA4NWQ2N2VkNjZhYjc0NjExYzhlNWY4MTAxOTI0OTFiYTY4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDkgMjI6MjY6MjMgMjAxMyArMDIwMAorCisgICAgUGF0Y2ggYTEyNjM6IE1ha2UgZGF0YWJhc2UgbmFtZSBjb25maWd1cmFibGUgZm9yIHRyYXBkIHNxbCBsb2dnaW5nLgorICAgIFRoYW5rcyB0byBSb2JpbiBTb25lZm9ycy4KKworY29tbWl0IDdlNzI1OGVmOGIzMmY5NzQwNDhmM2ZkMDk4YTlkYTUyNmRhMmU2MTMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgOSAyMjoxNzoxNSAyMDEzICswMjAwCisKKyAgICBQYXRjaCBhMTI2MjogRml4IG1lbW9yeSBlcnJvciBjYXVzZWQgYnkgY29uZnVzaW5nIHNpemUgb2YgcG9pbnRlcgorICAgIHdpdGggc2l1emUgb2YgcG9pbnRlZCBhcmVhLiBUaGFua3MgdG8gUm9iaW4gU29uZWZvcnMuCisKK2NvbW1pdCA1ODZlMDdiOGRlNTFiMDU0MDBkNTgyZmFjZDkxZDQ0MTBkZDM3NzAzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgQXVnIDMxIDE3OjA5OjU5IDIwMTMgKzAyMDAKKworICAgIHNubXBkOiBDb25zdGlmeSBhIGZldyBhcmd1bWVudHMgb2YgTUlCIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMKKyAgICAKKyAgICBOb3RlOiB0aGlzIHBhdGNoIGRvZXMgbm90IGNoYW5nZSB0aGUgQUJJLgorCitjb21taXQgNDRjMzY3MWRkOTNmZTBmMDgyOTllNjFkMGE0MjJmZDA3MmI0OTBlNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIFNlcCA4IDA3OjM1OjQ2IDIwMTMgKzAyMDAKKworICAgIFJ1biBhdXRvcmVjb25mCisKK2NvbW1pdCA2MmRhZGVmYTFiMjY4OGMwMjc5MmU5ZmQyZDNmYzMxYzc5ZWQxMWMzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgU2VwIDYgMTE6NTQ6MTMgMjAxMyArMDIwMAorCisgICAgc3dydW5fZGFyd2luOiBGaXggYnVmZmVyIG92ZXJydW4gd2hlbiBjb2xsZWN0aW5nIGhyU1dSdW5QYXJhbWV0ZXJzCisKK2NvbW1pdCAxZTA1MjZmODVlZDYxNTY3Y2E2ZWE1M2I1NjZjNzcyOTkyMTExYzllCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDQgMjI6MzA6NDAgMjAxMyArMDIwMAorCisgICAgQWRkIGEgY291cGxlIG9mIGNvbnRyaWJ1dG9ycyB0byBSRUFETUUKKworY29tbWl0IGVkYzYwOGViZDVkMDIxOTg2M2JjNWY2NTZkMTc3YjFkNTYxMDQ4YzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBTZXAgNCAyMTo1OToxOCAyMDEzICswMjAwCisKKyAgICBGaXggYSBwcmludGYgZm9ybWF0IHdhcm5pbmcuCisKK2NvbW1pdCBmYjI0ZjczM2NiMzE2YzM1Y2NmZGM1OWY0ODdiNjVlMGNkOTc0YzY4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDQgMjE6NTQ6MjcgMjAxMyArMDIwMAorCisgICAgc25tcG5ldHN0YXQ6IEluZGVudCBJQ01QIGhpc3RvZ3JhbSBmb3IgcmVhZGFiaWxpdHkuCisKK2NvbW1pdCBmNzk0M2E1ZDU4YTZmOTUzYzc5ZmI1NWFiODk3Yzg0OTIyOGVkYjhhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDQgMjE6NDU6MTkgMjAxMyArMDIwMAorCisgICAgUmVjb2duaXplIHpmcyBmaWxlIHN5c3RlbXMKKworY29tbWl0IGFiNDM3MGJhZjVjY2MxNDZmOGQxYzgzOWJiMGY0MTllZTM3ZTcxYzIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMiAyMToyMToyNSAyMDEzICswMjAwCisKKyAgICBQYXRjaCBhMTI2MSAoQmlsbCBGZW5uZXIpOiBGaXggY3Jhc2ggd2hlbiBtaWItaW5kZXhlcyBhcmUgbm90IGFsbCByZWFkYWJsZQorCitjb21taXQgYzZjYWEzMDA3ZjYwZjZjZGVhYTEzNDE1Mjc1ODY0NWE3M2E3ZmU2NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAyIDE5OjM5OjE0IDIwMTMgKzAyMDAKKworICAgIHNubXBuZXRzdGF0OiBQcm9wZXIgdGVzdHMgZm9yIHYyL3YzIGV4Y2VwdGlvbiByZXN1bHRzIChCdWcgYTI0NzcpCisKK2NvbW1pdCAzOTQyMGJkNDBiN2ExYmE3MjBhOWNiYjkyMjY0ZDNmOWNjMGE3ZTJmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDIxIDIyOjA4OjQxIDIwMTMgKzAyMDAKKworICAgIFBBVENIIGExMjYwOiBTdXBwb3J0IG11bHRpLWNwdSB1c2FnZSBmb3IgRnJlZS9OZXQvT3Blbi1CU0QuCisgICAgVGhhbmtzIHRvIFBhYmxvIENhcmJvbmkgZm9yIGZpcnN0IHN0YWIgYXQgdGhpcy4KKworY29tbWl0IDYyMzA1Y2QwMjhkOGFiZjQzMDEyMWU5MDA4YWNjOGYwZDE4NzFlMWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMjEgMjI6MDg6NDEgMjAxMyArMDIwMAorCisgICAgUEFUQ0ggYTEyNjA6IFN1cHBvcnQgbXVsdGktY3B1IHVzYWdlIGZvciBGcmVlL05ldC9PcGVuLUJTRC4KKyAgICBUaGFua3MgdG8gUGFibG8gQ2FyYm9uaSBmb3IgZmlyc3Qgc3RhYiBhdCB0aGlzLgorCitjb21taXQgY2MyZmU2YmRlNmEzYzI4YjNjMWFkMTY1YzliYTNmYzFkNTgzYzI1MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEF1ZyAyNSAwODoyMzo0MyAyMDEzICswMjAwCisKKyAgICBJUC1NSUI6IEZpeCBEb3h5Z2VuIGhlYWRlciBvZiBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4oKQorCitjb21taXQgOTYzMDJhZjdmYzMxMDhjMjA4MjI3NDMyZjBmMGI3NWYzZTdiOTA2ZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIEF1ZyAyOCAxMDo1OTowNSAyMDEzICswMjAwCisKKyAgICBDb3JyZWN0IGNvbnZlcnNpb24gZmFjdG9yIGZyb20gbWljcm9zZWNvbmRzIHRvIGNlbnRpc2Vjb25kcy4KKworY29tbWl0IGU4Y2Y3NjZlMDgzODM0YWY3ZmRmZWQ4NzdkYmU4ODEwYmYwMGE0ZWEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMTkgMjI6MTc6MTEgMjAxMyArMDIwMAorCisgICAgRml4IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbiB0byB0YWtlIGFuIGFyZ3VtZW50IGluIG5ldHdvcmsgYnl0ZSBvcmRlciBhcyBkb2t1bWVudGV0CisKK2NvbW1pdCBhMGM1OWEzYjQ1OGU4YThkZmIwNTlhNjI3OTJkMjVhNGM1YzlmYzllCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDE5IDIyOjE0OjE1IDIwMTMgKzAyMDAKKworICAgIEZpeCBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4gdG8gdGFrZSBhbiBhcmd1bWVudCBpbiBuZXR3b3JrIGJ5dGUgb3JkZXIgYXMgZG9rdW1lbnRldAorCitjb21taXQgNjZiOWJmYmE0ZWFlODQ5NDRhYmY0ZTZkMDc0ODk0YWNkMDUxM2M2YgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyAxOSAyMjoxMjo1NyAyMDEzICswMjAwCisKKyAgICBGaXggbmV0c25tcF9pcGFkZHJlc3NfaXB2NF9wcmVmaXhfbGVuIHRvIHRha2UgYW4gYXJndW1lbnQgaW4gbmV0d29yayBieXRlIG9yZGVyIGFzIGRva3VtZW50ZXQKKworY29tbWl0IGVjOTZiMzVkNTA2MGMwOWI5ZjUzZDRkZWM3M2ZiNzk2NWMyYWMxNDUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMTkgMjI6MTE6MzYgMjAxMyArMDIwMAorCisgICAgRml4IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbiB0byB0YWtlIGFuIGFyZ3VtZW50IGluIG5ldHdvcmsgYnl0ZSBvcmRlciBhcyBkb2t1bWVudGV0CisKK2NvbW1pdCBiMjdiNDdiNTc5ODQ2OWU5YWI1YmQ0YjUxYWMzOWQ0M2ZjZDk1NjA4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXVnIDE3IDEwOjEyOjE0IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IE1ha2Ugc3VyZSBUZXN0OjpIYXJuZXNzIGlzIG9mIGF0IGxlYXN0IHZlcnNpb24gMS4yMQorICAgIAorICAgIFRlc3Q6Okhhcm5lc3MgMS4yMSBpcyB0aGUgZmlyc3QgdmVyc2lvbiB0aGF0IGltcGxlbWVudHMgVEFQIHYxMiB3aGljaCBhbGxvd3MKKyAgICBwdXR0aW5nIHRoZSBoZWFkZXIgKDEuLk4pIGFmdGVyIHRoZSB0ZXN0cyBhbmQgc2luY2Ugb3VyIHRlc3RzIHV0aWxpemUgdGhhdAorICAgIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhhdCB0aGUgdGVzdCBydW5uZXIgc3VwcG9ydHMgaXQuCisKK2NvbW1pdCAxNGY4ZDRhZDZmMDZkMDlkODcwOTZkZDY4MTM3YTEyNWEwMzljNTYyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDI5IDE3OjQyOjU0IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IEFJWDogTWFrZSB1ZHAtbWliIGJ1aWxkCisKK2NvbW1pdCAzOGQ3N2M3YzIwYTNlNzk3OWMwOWM1MTQ0Zjg2OTM0ZWQ0NjU0MGRjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDI5IDE3OjM5OjM4IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IEFJWDogTWFrZSB0Y3AtbWliIGJ1aWxkCisKK2NvbW1pdCA1OGZkMjNiNzExMGM5M2VlNDk2ZmZhZmU4Njg1MzljMmFmODU0M2JkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgQXVnIDE2IDEwOjM5OjAzIDIwMTMgKzAyMDAKKworICAgIFdpbjMyOiBCdWlsZCBmaXg6IEV4cG9ydCBza2lwX3doaXRlX2NvbnN0KCksIHNraXBfbm90X3doaXRlX2NvbnN0KCkgYW5kIHJlYWRfY29uZmlnX3JlYWRfb2N0ZXRfc3RyaW5nX2NvbnN0KCkKKworY29tbWl0IDBhYjljZDE2NTVkNDZmOTY4ZGMxMmJkNjcxNGFjMTdiOWJjZTVlNzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgMTYgMDg6Mjg6MDggMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcC11c20tZGgtb2JqZWN0cy1taWI6IEF2b2lkIHRyaWdnZXJpbmcgYW4gYXNzZXJ0IHN0YXRlbWVudCBpbiBuZXRzbm1wX3JlYWR5X21vbm90b25pYygpCisgICAgCisgICAgVGhlIGNhY2hlIHRpbWVvdXQgZm9yIHNubXAtdXNtLWRoLW9iamVjdHMtbWliIGlzIC0xLiBBbnkgY2FjaGUgdGltZW91dAorICAgIHZhbHVlIDwgMCBkaXNhYmxlcyBjYWNoaW5nLiBIb3dldmVyLCBzdHJpY3RseSBuZWdhdGl2ZSB2YWx1ZXMgdHJpZ2dlcgorICAgIHRoZSBhc3NlcnQgc3RhdGVtZW50IGluIG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKCkuIEF2b2lkIHRyaWdnZXJpbmcgdGhhdAorICAgIGFzc2VydCBzdGF0ZW1lbnQuCisKK2NvbW1pdCAxZmE1ODRiMjIyYzU2NzI0Mzc4ZjVjODU5OTNlZWVlNjUxNTI2MGFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgQXVnIDE2IDEwOjAyOjQ3IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeCBORVRTTk1QX0ZEX1NFVF9CWVRFUygpCisgICAgCisgICAgVGhpcyBwYXRjaCBhdm9pZHMgdGhhdCB1bml0IHRlc3QgVDAwOWxhcmdlX2ZkX3NldF9jbGliIGNyYXNoZXMgb24gQUlYLgorCitjb21taXQgOTVhYzE5MGI1MjZkYmE1MjA1NjM3NDExYTg5MmI1MmI5ZWQ2Yjk0YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEp1bCAyMSAxNzoxNjo0MiAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDI0NzY6IHNubXBkIGZhaWxzIHRvIHN0YXJ0IG9uIEFJWAorICAgIAorICAgIE9uIGFuIEFJWCBzeXN0ZW0gdGhlcmUgaXMgbm8gPGt2bS5oPiBoZWFkZXIgZmlsZSBub3IgZG8gdGhlIC9kZXYvZG1lbQorICAgIG9yIC9kZXYvZHJ1bSBkZXZpY2VzIGV4aXN0IGFuZCBoZW5jZSBETUVNX0xPQyBpcyBub3QgZGVmaW5lZC4gQXZvaWQKKyAgICB0aGF0IGluaXRfa21lbSgpIGZhaWxzIGluIHRoYXQgY2FzZS4KKworY29tbWl0IDUwNDgxYjc2OWUyOWZjNWNlNmIxZTQwY2U1NjgxODViYjA4OTg0NTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgMTYgMDc6MjI6MDIgMjAxMyArMDIwMAorCisgICAgc25tcGQ6IFJlZmFjdG9yIGluaXRfa21lbSgpCisgICAgCisgICAgVGhpcyBwYXRjaCBkb2VzIG5vdCBjaGFuZ2UgYW55IGZ1bmN0aW9uYWxpdHkuCisKK2NvbW1pdCBjZDdlZjdiZTM5MTAzNWQ5ZGYwNWVkYzZhYzllNmYzNTE5YjQ2ZjhiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgQXVnIDE0IDIzOjM4OjIxIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJlIG1vcmUgcm9idXN0IGlmIGNsb2NrX2dldHRpbWUgZmFpbHMuCisgICAgCisgICAgT24gUkhFTDMgaXQgc2VlbXMgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICkgYWx3YXlzIHJldHVybnMgRUlOVkFMIGJ1dAorICAgIGl0IHdvcmtzIGZvciB0aGUgb3RoZXIgY2xvY2tzLgorICAgIAorICAgIEZ1cnRoZXIsIHRoZSBvbGQgY29kZSB3aGljaCByZXR1cm5lZCBhIGNvbnN0YW50IHsgMCwgMCB9IGNhdXNlZCB0aGUgdGVzdCBzdWl0ZQorICAgIHRvIGdldCBzdHVjayBpbiBhIGxvb3AgaWYgbm8gcmVzcG9uc2UgYXJyaXZlZCAtIHRodXMgdGhpcyBjb2RlIGhhdmUgdGhlCisgICAgYWR2YW50YWdlIG9mIHdvcmtpbmcgbGVzcyBiYWQuCisKK2NvbW1pdCA5ZDcxZmVlYTI3MWY5MWNjOWI3YWRlZTY2MTNhZjE5ZWJhN2VjNmNkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyAxNCAxNTo1Njo1NiAyMDEzICswMjAwCisKKyAgICBGaXhlZCByZXR1cm4gdmFsdWUgb24gZXJyb3IuCisKK2NvbW1pdCA5NjIxZjRjZGM1YTE5Y2VlNGUxMWJmMjcwOTRhYmYzMzM5ZGRjMzBlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyAxNCAxNTo0ODozOSAyMDEzICswMjAwCisKKyAgICBSZW1vdmluZyB1c2VsZXNzIGNoZWNrLCBlbnRyeS0+ZF9uYW1lIGlzIGFycmF5IGFuZCBjYW4ndCBiZSBOVUxMLgorCitjb21taXQgZTQxYzJmNTc0YzI1ZDhkZDI3M2YyNDA2ZWVlYWMxOWJjMmFlMTZkYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMTIgMTQ6MzA6NTEgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRml4ZWQgcGFyc2luZyBvZiBzZXF1ZW5jZXMuCisgICAgCisgICAgRG9uJ3Qgb3ZlcndyaXRlICdkYXRhJyB2YXJpYWJsZSwgaXQncyB1c2VkIHdoZW4gcGFyc2luZyBidWxrIHJlc3BvbnNlcy4KKworY29tbWl0IDM5MDMwMzA1OWZiZDk4YjFlZTc2MjFkZGQ0YWQ0YzExZDEwMGZmZjkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBKdWwgMjggMjE6Mjg6MTQgMjAxMyArMDIwMAorCisgICAgUmV2ZXJ0IDc4ZGFjNmUzNzk0M2QxYWQ5OTg0MTg5ODgwNmVhNjBiMGVlZGU2MzYgYW5kIHJlc29sdmUgYTI0NzggaW4gYSB3YXkgdGhhdCBhdm9pZHMgdHJ1bmNhdGluZyBzbm1wVGFyZ2V0QWRkclRpbWVvdXQuCisKK2NvbW1pdCBlNTlkNWRiNmQ2ZTcyZDEzNDU5MWJiYWFhNmZhYTU5YjI5MzM4MTkxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSnVsIDI4IDIxOjE3OjU4IDIwMTMgKzAyMDAKKworICAgIENoZWNrIHRoYXQgdGhlIHRpbWVvdXQgdmFsdWUgaXMgaW4gcmFuZ2UuCisKK2NvbW1pdCA0ZWNiMzZhN2FiYTNhYjBlZmE4OTM1MTY1MGNlMDUzZWJjZjQ4YjZhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gSnVsIDI5IDIxOjU0OjI1IDIwMTMgKzAyMDAKKworICAgIENoZWNrIHRoYXQgc25tcFRhcmdldEFkZHJUaW1lb3V0IGhhbmRsZXMgc2V0dGluZyBwcm9wZXJseQorCitjb21taXQgMWFlODViNjcyZWIwN2QwYzAxYTU0ZTA2ZDNkZGQ0ZjRkYzU4ZmYyZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEp1bCAyOCAxMDo0MzoxNyAyMDEzICswMjAwCisKKyAgICBBZGQgc29tZSBtb3JlIHRlc3RzIGZvciBzbm1wVGFyZ2V0QWRkcgorICAgIChjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDZlMTNlYmI4NWU0NDA0OTg0NmVhZTdmNjBlMDUwMzc1ZjlhY2Y1OGUpCisgICAgU2FuaXRpemVkCisKK2NvbW1pdCA2YTVhMDQ3Y2JjMTFkNjJkZjA0YTk2NjY5MDhmNzY1MmIyMTdjMWFhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgQXVnIDEgMjM6MTk6MzQgMjAxMyArMDIwMAorCisgICAgUmVpbnN0YXRlIHRoZSBjaGVjayBmb3IgY3JlYXRpb24gb2YgZW50cmllcyB3aXRoIGVtYmVkZGVkIE5VTCdzIGluIHRoZSBuYW1lCisKK2NvbW1pdCA1MzNiYjgwYTVhNDMwNWIzNWRiYjc5NzQ0NGJkNTk2ZDdkNTk5NTFjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgQXVnIDEgMjI6NTU6NDUgMjAxMyArMDIwMAorCisgICAgU2FuaXRpemUuCisgICAgCisgICAgQ2hhbmdlIHRvIHVzZSBTTk1QdjMgc2luY2UgdGhhdCBpcyB3cml0ZWFibGUgaW4gVjUtNi1wYXRjaGVzLgorICAgIENoYW5nZSB0byBjaGVjayB2YWx1ZXMgb24gaW5kZXggJ0EnCisgICAgUmVtb3ZlIHRoZSBjaGVjayBmb3IgZW1iZWRkZWQgTlVMIGluIGluZGljZXMuCisKK2NvbW1pdCBiMjRiZjQ2MjIwYWFhZjU3OTRlOTQwZjVkNDY3M2RiNzEzMzlmOWMwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgSnVsIDIwIDEyOjM5OjU5IDIwMTMgKzAyMDAKKworICAgIEFkZCB0ZXN0cyBmb3Igc25tcFRhcmdldEFkZHIKKyAgICAoY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA3MWYzMTljZDIzNDQ1YzZlMjJhNjBhMWE4NWYzMWMyYjY5MDRiM2ZiKQorCitjb21taXQgNmUxM2ViYjg1ZTQ0MDQ5ODQ2ZWFlN2Y2MGUwNTAzNzVmOWFjZjU4ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEp1bCAyOCAxMDo0MzoxNyAyMDEzICswMjAwCisKKyAgICBBZGQgc29tZSBtb3JlIHRlc3RzIGZvciBzbm1wVGFyZ2V0QWRkcgorCitjb21taXQgMDc2OWY0MjBkOGY0Mjc5OTNiMTM0MGZkYjdlY2IzYmMwNDlkM2Y2YworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IEp1bCAyNSAwODoxNTozMiAyMDEzICswMjAwCisKKyAgICBGaXJzdCBzaG90IG9uIGhhbmRsaW5nIGNlcnRpZmljYXRlcyB3aXRoIGVtYmVkZGVkIG51bCBjaGFyYWN0ZXJzCisKK2NvbW1pdCBkODMzYjBjOGJlNTA5YmZhM2I4MDAxYWU2ZjU1MjI4OWNlOTU2N2QwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgSnVsIDIwIDEyOjQxOjQwIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBOVUwgY2hhcmFjdGVycyBpbiB0aGUgaW5kaWNlcyBmb3Igc25tcFRhcmdldEFkZHJUYWJsZQorCitjb21taXQgNzFmMzE5Y2QyMzQ0NWM2ZTIyYTYwYTFhODVmMzFjMmI2OTA0YjNmYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEp1bCAyMCAxMjozOTo1OSAyMDEzICswMjAwCisKKyAgICBBZGQgdGVzdHMgZm9yIHNubXBUYXJnZXRBZGRyCisKK2NvbW1pdCBlYTM5ZTM2NzY2NjViN2U4Y2M1ZGZlYjViYmJjZDBhZDQzNGFkOTEyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgSnVsIDE4IDAxOjM2OjI2IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgdGhlIGRhdGEgYXJndW1lbnQgdG8gcmVhZF9jb25maWdfc2F2ZV9vY3RldF9zdHJpbmcgYWNjZXB0IGNvbnN0YW50IHZhbHVlcworCitjb21taXQgNzhkYWM2ZTM3OTQzZDFhZDk5ODQxODk4ODA2ZWE2MGIwZWVkZTYzNgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAyMiAxMjozOTowMCAyMDEzIC0wNzAwCisKKyAgICBmaXggYnVnIG51bWJlciAjYTI0Nzg6IGZpeCBtaWIgcmVwcmVzZW50YXRpb24gb2YgdGltZW91dCB2YWx1ZXMKKworY29tbWl0IGE3ZTNiYzhkZGJlMzg3ZWJmNmYzZjZiMDUwZTI5OTI5NTZiZDJlNjEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgMTEgMjA6MTQ6NDcgMjAxMyArMDIwMAorCisgICAgRml4ZXMgZm9yIG1lbW9yeSBzdGF0aXN0aWNzIGZyb20gKkJTRAorCitjb21taXQgOWRiZTEyNDAzY2VhYWZlNjE3ZjdkNDk5OTMzMTZhMjQ5ZmNiYjk5YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCAxMSAyMDoxMzozNiAyMDEzICswMjAwCisKKyAgICBGaXggYSBtaXNzaW5nIG5ld2ZpbGUgaW4gYSBkZWJ1ZyBtZXNzYWdlCisKK2NvbW1pdCAwNDFkZWVkZjgxNTM3YmM2MTY5Mjk4NzUzZjlkY2EzZjZjZDYxYTM1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDExIDIwOjEyOjEyIDIwMTMgKzAyMDAKKworICAgIE1ha2Ugc3VyZSB3ZSBkb24ndCBtYWtlIElQdjYgbWFzayBsb25nZXIgdGhlbiAxMjgKKworY29tbWl0IGM2N2M3ODk0MDMzOWZhZWFiNDJiMWIxYTBhNmJlNmNkNmRmZTJlMjIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgMTEgMjA6MDY6MzEgMjAxMyArMDIwMAorCisgICAgSW1wbGFtZW50IGlwQWRkcmVzc1RhYmxlIGZvciAqQlNECisKK2NvbW1pdCBiMTgxZTQzYTZkMWY1NjdiZmQxMDcxN2E3N2RmMTg0OGUzYmIwZjQzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDExIDIwOjA1OjA4IDIwMTMgKzAyMDAKKworICAgIE1hcmsgT1MgdGhyZWFkcyBhcyBzdWNoLgorCitjb21taXQgZTM2YTVjYzVmMjAyNzJhZmZmNDIyOGU3ZTQzOTFkZDVlNmMwNjNiMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCAxMSAyMDowMzozNiAyMDEzICswMjAwCisKKyAgICBGaWMgc29tZSBtYW4gcGFnZSBjcm9zcyByZWZlcmVuY2VzCisKK2NvbW1pdCBlY2Y4NjgyZDg2NGQyZjA4NTI1MDc4NTQzODU4ZDM2MWIzYWRjYTVjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAxMCAxMDo0NzozMyAyMDEzICswMjAwCisKKyAgICBMb3dlciBpbXBvcnRhbmNlIG9mIGRlYnVnZ2luZyBtZXNzYWdlcywgdGhleSBzcGFtIHN5c2xvZy4KKworY29tbWl0IGVmOTYzMDYzZGU0OTQ4NWJkOTFjMTI5ZTA1M2YwNmQwNzQ0NDgzZTEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDQgMTE6MzQ6MjUgMjAxMyArMDIwMAorCisgICAgRml4ZWQgc2l6ZSBvZiBuZXRsaW5rIG1lc3NhZ2UuCisgICAgCisgICAgUHJldmVudGluZyBrZXJuZWwgdG8gbG9nICduZXRsaW5rOiAxMiBieXRlcyBsZWZ0b3ZlciBhZnRlciBwYXJzaW5nIGF0dHJpYnV0ZXMuJyBtZXNzYWdlLgorCitjb21taXQgMmUwZDEwODczMTNiMGZhMDgzZTJiMWNhNDg5NWZiZjI0OGQ2M2NhOQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IEp1bCA0IDIyOjA0OjEyIDIwMTMgKzAyMDAKKworICAgIFJ1biBhdXRvcmVjb25mCisKK2NvbW1pdCBjN2ZiYTc4ZTEyMjUyNTRhMGY2NTYwNWYzODFhZWRkN2Q4YTIxMmNhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgSnVsIDQgMjE6NDc6MDkgMjAxMyArMDIwMAorCisgICAgUnVuIGF1dG9yZWNvbmYKKworY29tbWl0IDU3MWJkNDA3ZjhiZTljOTRjYzU1MmQ0ZDNiN2Y1YjZiMDk4NGQyMzcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBKdWwgNCAyMTozOTo1OSAyMDEzICswMjAwCisKKyAgICBSdW4gYXV0b3JlY29uZgorCitjb21taXQgOGFhNTBlZGJhN2EyZDk2NmQ4ZGZjN2ZmNGQ3Yzc4ZWZkZGU4YzViZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IEp1bCA0IDA4OjUzOjU2IDIwMTMgKzAyMDAKKworICAgIFVzZSBBQ19MSU5LX0lGRUxTRSBpbnN0ZWFkIG9mIEFDX1RSWV9MSU5LIGFzIHRoZSBsYXR0ZXIgaXMgZGVwcmVjYXRlZAorCitjb21taXQgNTljNmFlMzQ2MjVlZTA0YWNlMzgyNGVjNDA0NjEzZTBiNTFkYzFiMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIEp1bCAyIDE3OjQwOjU0IDIwMTMgKzAyMDAKKworICAgIFVzZSB0aGUgY3BwIGFuZCBsaW5rZXIgZmxhZ3MgZnJvbSBteXNxbF9jb25maWcgd2hlbiBjaGVja2luZyBmb3IgbXlzcWwgaGVhZGVycy4KKworY29tbWl0IGY4OWNmY2FmZGFlMjFmYWI1MGE3MGJkZGYxNThmZmQ5ZTRlMDAxZDIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFR1ZSBKdWwgMiAxNzozOToyNSAyMDEzICswMjAwCisKKyAgICBVc2UgdGhlIG91dHB1dCBvZiBteXNxbF9jb25maWcgLS1pbmNsdWRlIGluc3RyZWFkIG9mIHRoZSBvdXRwdXQgb2YgbXlzcWxfY29uZmlnIC0tY2ZsYWdzIGl0byBmaW5kIGluY2x1ZGUgZmlsZXMuCisgICAgCisgICAgQWNjb3JkaW5nIHRvIHRoZSBteXNxbF9jb25maWcgbWFuIHBhZ2UsIC0taW5jbHVkZSBpcyByZWNvbW1lbmRlZCBmb3IgZ3JlYXRlcgorICAgIHBvcnRhYmlsaXR5IHNpbmNlIC0tY2ZsYWdzIG1pZ2h0IGNvbnRhaW4gY29tcGlsZXIgZmxhZ3MgZm9yIHRoZSBjb21waWxlciB0aGF0CisgICAgd2FzIHVzZWQgdG8gYnVpbGQgbGlibXlzcWxjbGllbnQgd2hpY2ggbWlnaHQgY2xhc2ggd2l0aCB0aGUgb25lcyB1c2VkIHRvCisgICAgYnVpbGQgdGhlIGFwcGxpY2F0aW9uLgorCitjb21taXQgNjhhNmExY2E2ZGM0Y2E4OTAxYmFjYWI1OTgzMjZhZjczYjQ0NDY1NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVHVlIEp1bCAyIDE3OjMwOjI5IDIwMTMgKzAyMDAKKworICAgIE9ubHkgY2hlY2sgZm9yIG15c3FsL215c3FsLmggb25jZS4gUmVtb3ZlIEhBVkVfTVlTUUxfTVlTUUxfSCBzaW5jZSBub3RoaW5nIHVzZXMgaXQuCisKK2NvbW1pdCBhZDg3YmI2MDhiMzA1NTY3YTNjNWVhZjA0NmI3Yzk4ZWEzZTRiZGQ1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCA0IDExOjMwOjA0IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAyNDcyOiBmcm9tIFN1bmlsOiBkb24ndCB1c2UgSEJLVCBhcyBoZWFydGJlYXQgaW50ZXJ2YWwgaW4gU0NUUC1NSUI6OnNjdHBBc3NvY1RhYmxlLgorCitjb21taXQgNGM0YTQyODFmZDViMmM2MTU2YzUxMjBmOWEyZThiNzA4ZjQ2NmNjZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgNCAxMTowODo0OCAyMDEzICswMjAwCisKKyAgICBpbmNsdWRlRGlyIGlzIG5vdCBwcmVkaWN0YWJsZSB3aXRoIHJlbGF0aXZlIHBhdGhzCisKK2NvbW1pdCA3OWU4ZGQyYTM3MmEyMGVlOTdkZTFjNzEwN2I1OWFkNGFhZjg5YTM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCA0IDEwOjQ3OjI5IDIwMTMgKzAyMDAKKworICAgIFVwZGF0ZSBjb25maWd1cmF0aW9uIGRvY3VtZW50YXRpb24gd2l0aCBpbmNsdWRlRmlsZSBhbmQgaW5jbHVkZURpci4KKworY29tbWl0IGUwZTgwNDQ4MmJlYzcwZjRjNDE2YTM1ZmNiMzIzYTQxNjk5NjVjNWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKdWwgMyAxNTowODoxNCAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDI0NzA6IEFjY2VwdCA2NTUzNSBhcyBhIHZhbGlkIElQdjYgcG9ydCBudW1iZXIKKworY29tbWl0IGRkMzMyYTAzNWU4NTNjNzJhODMyNzQ4NDY5YmFiN2I4ODJlMjdiN2MKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMiAwNzowMDo1MSAyMDEzICswMjAwCisKKyAgICBCVUcgYSMyNDYzOiBGaXggY29uZmlndXJlIHRvIHJlc3BlY3QgZGF0YSBmcm9tIG15c3FsX2NvbmZpZy4KKworY29tbWl0IDQwOGNjOTczMmMzNDYxMTFmYzFmZGEyM2UxMzZkNjA4ODNjZGI3ZTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDEgMTQ6MjU6NDEgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBjb3JyZWN0bHkgcmVwb3J0IGVycm9yIHdoZW4gcGFyc2luZyBtYWxmb3JtZWQgT0lELgorCitjb21taXQgOWEyYmZjOGY5NWQ2ZTkyNmRjYmYxNmZmNDRiNTNiMjdlMzhjODQzNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKdWwgMSAxMzo1NDozOCAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEZpeGVkIHJldHVybmluZyBvZiBlbXB0eSBzdHJpbmdzLgorICAgIAorICAgIFZhcmJpbmQgdHlwZSAoU05NUF9OT1NVQ0hPQkpFQ1QgZXRjLikgc2hvdWxkIGJlIHVzZWQgdG8gZGV0ZWN0IGVycm9ycyBpbnN0ZWFkIG9mIGxlbmd0aCBvZiB0aGUgdmFyaWFibGUgLSBpdCBjYW4gYmUgZW1wdHkgc3RyaW5nLgorCitjb21taXQgMWEwZjA3NTc0YTgwZDFkNmE2Nzg4Y2FlYjM5MWExZDJmZWY5NTcxMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKdW4gMjggMTA6Mzc6NDYgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHNob3cgTGludXgga2VybmVsIHRocmVhZHMgaW4gaHJTV1J1blRhYmxlLgorCitjb21taXQgMjY1OWMwZjZiZDg2ZjAxNzE4NjlkMzRmZjhhN2Q0ODE5NGVhNGIzMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMjEgMDk6MTM6NDEgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZGVkIGJ0cmZzIHN1cHBvcnQgdG8gaHJGU1RhYmxlCisKK2NvbW1pdCBhODQwMzlkMGExZDZmNTUwYjQ3M2QyOTU5MjEwMTBkODBlMThkODNmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVuIDI1IDE0OjU1OjI2IDIwMTMgKzAyMDAKKworICAgIHNubXBfc3RyY2F0OiBkb250IHRlc3QgKmJ1ZiBiZWZvcmUgd2UgaGF2ZSB0cmllZCByZWFsbG9jCisKK2NvbW1pdCA1NTUzZWY0MzYyZDUyNGEwODhiNTE5ZTEzNTU2MTU4ZTVkNjI1ZWM0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSnVuIDMgMDI6NDg6MDYgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRG8gbm90IHByaW50ZigiJXMiLCBOVUxMKSBhcyB0aGF0IGlzIHVuZGVmaW5lZCBiZWhhdmlvdXIuCisKK2NvbW1pdCA4OTQxNmU3OWY1YzUwNTY4ZTk5YzA3ZmFiMDZhOWFlOWY5NzZiYmVmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gSnVuIDI0IDIyOjIyOjAzIDIwMTMgKzAyMDAKKworICAgIEJVRzogQTI0NDE6IENvcnJlY3QgY29tbWVudAorCitjb21taXQgMWEzYWU2NDc3YjgxNjNhMWI0M2I4MzRhYmIzMGIxZjAzMTQ1YWI2MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEp1biAyMiAyMDoyNzozNCAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBIT1NULVJFU09VUkNFUy1NSUIsIGhyU1dSdW4gdGFibGU6IFBhcnNlIC9wcm9jLzxwaWQ+L3N0YXQgY29ycmVjdGx5IG9uIExpbnV4CisgICAgCisgICAgVGhpcyBpc3N1ZSB3YXMgcmVwb3J0ZWQgYnkgVmluY2VudCBCZXJuYXQgPHZpbmNlbnQuYmVybmF0QGRhaWx5bW90aW9uLmNvbT4uCisgICAgU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1Ny8uCisKK2NvbW1pdCBmOTJmZmU5MTdhMzAwYzQxZWJlMDdlMjRjNjQxODg1NWU3NTlmOTM4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE5OjM3OjAzIDIwMTMgKzAyMDAKKworICAgIHNubXB0cmFwZDogRml4IGEgZG91YmxlIGZyZWUgaW4gYW4gZXJyb3IgcGF0aAorICAgIAorICAgIERldGVjdGVkIGJ5IENvdmVyaXR5LiBTZWUgYWxzbyBodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvbmV0LXNubXAvcGF0Y2hlcy8xMjUxLy4KKworY29tbWl0IGM1ZjNhMWQ4YmI1ODA0Nzk5YjYwMmQyNzY5YjAzMWQ2ZmFmNWYwZWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBKdW4gMjIgMTc6NTE6NDMgMjAxMyArMDIwMAorCisgICAgc25tcGxpYjogaGV4X3RvX2JpbmFyeTIoKTogUmV0dXJuIC0xIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzCisKK2NvbW1pdCBmOGYwOGUxZDZkM2VjODE5NGZhYmQ2YWIwMDJhYjkxN2FmYmE5MWEzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE3OjEzOjAxIDIwMTMgKzAyMDAKKworICAgIHNubXBsaWI6IFNpbXBsaWZ5IHRoZSBjb2RlIGZvciBkZWxldGluZyBhIHJlcXVlc3QgZnJvbSB0aGUgcmVxdWVzdCBsaXN0CisgICAgCisgICAgVGhlIGdvYWwgaXMgKGhvcGVmdWxseSkgdGhhdCB0aGUgbmV3IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGNvbmZ1c2UKKyAgICBDb3Zlcml0eSBhbnltb3JlLiBTZWUgYWxzbyBodHRwOi8vc291cmNlZm9yZ2UubmV0L3AvbmV0LXNubXAvcGF0Y2hlcy8xMjUxLy4KKworY29tbWl0IGVmNmQ1YzdhMDMxMzI0N2E2Yzk0NzMyNjE3NzdlOTYzZjdhNDk1MjkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBKdW4gMjIgMTQ6NDg6MjIgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogc25tcF9zdHJjYXQoKTogQ2hlY2sgKmJ1ZiBiZWZvcmUgdXNpbmcgaXQKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCAyNTY2YjgzZWJlYjBlMzRlZWE5MDc5MjhjNTRjMmI0ZTc0ZmYzN2Y4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjIzOjMzIDIwMTMgKzAyMDAKKworICAgIGhyU1dJbnN0YWxsZWQgdGFibGU6IENoZWNrIHN0YXQoKSByZXR1cm4gdmFsdWUgKDIvMikKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCA0OWNmZTRkODQwYzU4ZTEyMDJmYTI3MWZiZTc2MGJkNzUyNmE4M2E4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjIzOjAzIDIwMTMgKzAyMDAKKworICAgIGhyU1dJbnN0YWxsZWQgdGFibGU6IENoZWNrIHN0YXQoKSByZXR1cm4gdmFsdWUgKDEvMikKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCA1ZGY1NDYyNjM5ZjI0M2Q1OTI5ZmE5YmExNGQyMGIzNzExZjdjYWNlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjIxOjE4IDIwMTMgKzAyMDAKKworICAgIHVjZC1zbm1wOiBmaW5kX2RldmljZSgpOiBSZW1vdmUgYW4gdW51c2VkIHZhcmlhYmxlCisgICAgCisgICAgRGV0ZWN0ZWQgYnkgQ292ZXJpdHkuIFNlZSBhbHNvIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9uZXQtc25tcC9wYXRjaGVzLzEyNTEvCisKK2NvbW1pdCAxM2NlMTk5NmE4MmUwYjQ1OGIyNmFlMzlhYmYyMDEyZGI1OWM4YTU1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjIwOjE1IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IF9pbnNlcnRfbnNmaWxlKCk6IENoZWNrIHN0YXQoKSByZXR1cm4gdmFsdWUKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCA4MWEwZDg1OTE2M2Y4ZDU0OTA4NTI1YjUyMjQzMjk1ZDdiNDE0NTUwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjA3OjM3IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeCBhIGJhZCBmcmVlKCkKKyAgICAKKyAgICBEZXRlY3RlZCBieSBDb3Zlcml0eS4gU2VlIGFsc28gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvMTI1MS8uCisKK2NvbW1pdCBkMzRjODNlOTM0MjQxOWFlZWNmZjVmZmQ3ZGVhYjgzOTg3ZGJlYmNhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgSnVuIDIyIDE0OjAwOjM5IDIwMTMgKzAyMDAKKworICAgIGV0aGVybGlrZS1taWIsIHJtb24tbWliOiBGaXggbWFsbG9jKC4uLikgPCAwIHRlc3RzCisgICAgCisgICAgRGV0ZWN0ZWQgYnkgQ292ZXJpdHkuIFNlZSBhbHNvIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9uZXQtc25tcC9wYXRjaGVzLzEyNTEvLgorCitjb21taXQgNDNjNDQwMTc2YjNlNGY5Y2U5OTVlNDgyZWM2OTc1YmEwYzg1OWJmMworQXV0aG9yOiBNaWNoYWVsIFNoY3dhcmN6IDxNaWNoYWVsLlNoY3dhcmN6QGNvbXBhc3MtZW9zLmNvbT4KK0RhdGU6ICAgU2F0IEp1biAyMiAxMjo0NjowNCAyMDEzICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEZpeCBhIGRvdWJsZSBmcmVlIGF0IGV4aXQKKyAgICAKKyAgICBBIHF1b3RlIGZyb20gYSBtZXNzYWdlIGZyb20gTWljaGFlbCBTaGN3YXJjejoKKyAgICAKKyAgICBJIGFtIHJ1bm5pbmcgbmV0LXNubXAgNS43LjIgYW5kIGl0IGxvb2tzIGxpa2UgdGhlcmUgaXMgYSBkb3VibGUKKyAgICBmcmVlIHByb2JsZW0gaW4gc25tcHRyYXBkLCBpbiBmcmVlX3RyYXBkX2FkZHJlc3MoKSBhbmQKKyAgICBwYXJzZV90cmFwZF9hZGRyZXNzKCkuIEkgZ2V0IGEgU0lHQUJPUlQgb24gdGhlIHNlY29uZCBTSUdIVVAKKyAgICAobG9va3MgbGlrZSBpdCBkb2VzIGEgZG91YmxlIGZyZWUgb24gdGhlIGZpcnN0IFNJR0hVUCBhbmQgb24KKyAgICB0aGUgc2Vjb25kIGl0IGNyYXNoZXMpLgorICAgIAorICAgIEkgaGF2ZSB0aGlzIHNubXB0cmFwZC5jb25mIGNvbmZpZ3VyYXRpb246CisgICAgICBzbm1wVHJhcGRBZGRyIHVkcDoxNjIsdWRwNjoxNjIKKyAgICAgIGF1dGhDb21tdW5pdHkgbG9nLGV4ZWN1dGUsbmV0IHB1YmxpYworICAgIAorICAgIEFuZCB0aGlzIGlzIHRoZSBiYWNrLXRyYWNlIGZyb20gZ2RiOgorICAgICoqKiBnbGliYyBkZXRlY3RlZCAqKiogL29wdC9jb21wYXNzL2Jpbi9zbm1wdHJhcGQ6IGZyZWUoKTogaW52YWxpZCBuZXh0IHNpemUgKGZhc3QpOiAweDA4MGMxN2E4ICoqKgorICAgID09PT09PT0gQmFja3RyYWNlOiA9PT09PT09PT0KKyAgICAvbGliL2xpYmMuc28uNlsweGY3MjA0ODQ1XQorICAgIC9saWIvbGliYy5zby42KGNmcmVlKzB4OWMpWzB4ZjcyMDY2ZWNdCisgICAgL29wdC9jb21wYXNzL2Jpbi9zbm1wdHJhcGQoZnJlZV90cmFwZF9hZGRyZXNzKzB4MmEpWzB4ODA0YTZiYV0KKyAgICAvdXNyL2xpYi9saWJuZXRzbm1wLnNvLjMwKGZyZWVfY29uZmlnKzB4MzIpWzB4Zjc0YWU0YzJdCisgICAgL29wdC9jb21wYXNzL2Jpbi9zbm1wdHJhcGRbMHg4MDRhNTU3XQorICAgIC9vcHQvY29tcGFzcy9iaW4vc25tcHRyYXBkWzB4ODA0YmZhOV0KKyAgICAvbGliL2xpYmMuc28uNihfX2xpYmNfc3RhcnRfbWFpbisweGU1KVsweGY3MWIwNDU1XQorICAgIAorICAgIEkgaGF2ZSBhIHBhdGNoIHRoYXQgZml4ZXMgdGhpcyBpc3N1ZSwgaGVyZSBpcyB0aGUgZGlmZjoKKyAgICBAQCAtNDQ2LDYgKzQ0Niw3IEBAIGZyZWVfdHJhcGRfYWRkcmVzcyh2b2lkKQorICAgIHsKKyAgICAgICAgIGlmIChkZWZhdWx0X3BvcnQgIT0gZGRlZmF1bHRfcG9ydCkgeworICAgICAgICAgICAgZnJlZShkZWZhdWx0X3BvcnQpOworICAgICsgICAgICAgZGVmYXVsdF9wb3J0ID0gZGRlZmF1bHRfcG9ydDsKKyAgICAgICAgIH0KKyAgICB9CisKK2NvbW1pdCAyZGI1NDg1ZmMxY2NjZTM5ZWZhNjlhMzc3YmI4ZDZmNjIzMWViMGIyCitBdXRob3I6IEVyaWMgUy4gUmF5bW9uZCA8ZXNyQHRoeXJzdXMuY29tPgorRGF0ZTogICBGcmkgSnVuIDIxIDEwOjQ3OjMyIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IGRvY3VtZW50YXRpb246IGZyb20gIkVyaWMgUy4gUmF5bW9uZCI6IENvcnJlY3QgbWFuIHBhZ2UgbWFya3VwIHByb2JsZW0KKyAgICBBbWJpZ3VvdXMgb3IgaW52YWxpZCBiYWNrc2xhc2guICBUaGlzIGRvZXNuJ3QgY2F1c2UgZ3JvZmYgYSBwcm9ibGVtLgorICAgIGJ1dCBpdCBjb25mdXNlcyBkb2NsaWZ0ZXIgYW5kIG1heSBjb25mdXNlIG9sZGVyIHRyb2ZmIGltcGxlbWVudGF0aW9ucy4KKworY29tbWl0IGQ2NzcxNDY0ZjE2ZGM2ZmU2NGRkMjRjMDhhZjRiZTcyNTg4NWFkYWQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFR1ZSBKdW4gMTggMjM6NDU6MjggMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogYXBwczogU3RvcCBhZ2VudHh0cmFwIGZyb20gYWNjZXNzaW5nIHRoZSBwZXJzaXN0ZW50IGNvbmZpZ3VyYXRpb24KKyAgICBUaGlzIGlzIG5lZWRlZCB0byBwcmV2ZW50IG1vYW5pbmcgYWJvdXQgbm90IGJlZWluZyBhbGxvd2VkIHRvIHdyaXRlIHRob3NlCisgICAgZmlsZXMgZHVlIHRvIGJhZCBwZXJtaXNzaW9ucy4KKworY29tbWl0IDE0YWM1ZDVkMmM0ZDlmM2E3OTlkNDAxY2MxZTQwM2E4YTI5MmQ0MjUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMTIgMjI6Mzc6MjMgMjAxMyArMDIwMAorCisgICAgRGFyd2luIGZpeGVzOiBVRFAgYW5kIFRDUCB0YWJsZXMsIG1lbW9yeSBkYXRhLCBhbmQgc29tZSBlcnJvciBjaGVja2luZy4KKworY29tbWl0IGJhYmQzMWQxMDQ5ZTIzM2M0NTRmMWNiZDg4YmJhNzVmMmY0MDc4MWUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMTIgMjI6MjU6MTkgMjAxMyArMDIwMAorCisgICAgRml4IHNvbWUgbWFuIHBhZ2VzIHJlZmVyZW5jZXMgdG8gb3RoZXIgcGFnZXMKKworY29tbWl0IGJkZWZjZTA2YTFlYTFjMTQzMDgwMjcxNGZjODM3YjU1OGUxYTY3NWEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMTIgMjI6MjM6NTcgMjAxMyArMDIwMAorCisgICAgVXBkYXRlZCBFTlRJVFktTUlCIGluIHJmYyA2OTMzCisKK2NvbW1pdCBkZjg2M2E1MzQ4YWFiZjcxYmJjYTdiZmVmY2Y4YmViOGJiOWU3NzYyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEyIDIyOjE3OjQ2IDIwMTMgKzAyMDAKKworICAgIEZpeCBCdWcgIzI0Mjc6IENhbm5vdCByZXNvbHZlIElQdjYgb25seSBob3N0bmFtZXMsIGJ5IGFjY2VwdGluZyBhIGxpc3QKKyAgICBvZiB0cmFuc3BvcnQgZG9tYWlucy4KKworY29tbWl0IGRhMWZlZjM4MjU5MWZmNDVkYzkyZWIzYjk1YTZiZmVmZjllY2ZhNGYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTWF5IDIxIDA5OjEzOjQxIDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBZGRlZCBidHJmcyBzdXBwb3J0IHRvIGhyRlNUYWJsZQorCitjb21taXQgOTMxYzg3YTA1ZjVmNjYyODk2MTNmZWQ3N2FjNzg4NDRiNjFjYjc5ZgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSAxNSAyMDoxODoxNCAyMDEzICswMjAwCisKKyAgICBCVUcgMjQ1ODogRml4IG1pc3NpbmcgaW5pdGlhbGl6YXRpb24gb2YgYXV0b19ubGlzdCBzdHJ1Y3R1cmUgKFRoYW5rcyBSeWFuIFN0ZWlubWV0eikKKworY29tbWl0IDkxMDRlMmEzZjE5NTUwNmE0NzczMzk4M2Q4Y2JhMzhlZDU5MmE5ODgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgMTUgMjA6MTM6MDUgMjAxMyArMDIwMAorCisgICAgUEFUQ0ggMTI1MzogRml4IHBhcnNpbmcgb2YgREVGVkFMIEJJVFMgKFRoYW5rcyBNaWtlKQorCitjb21taXQgODU1ZTU0ZTM0NWM1NWVhMjJiN2U3YWMxMmEyNDlkNzQwOWZiYjMwOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSAxNSAyMDoxMToyOSAyMDEzICswMjAwCisKKyAgICByZmNsaXN0OiBhZGQgUkZDIDY5NDUKKworY29tbWl0IDM2NTI3Y2Q4Y2NhNjUwNzEzYzg1ZTAzMjhjMGMyYTFjZDA5NWMzNTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBNYXkgMTIgMTA6MDQ6MDggMjAxMyArMDIwMAorCisgICAgV2luZG93cywgVmlzdWFsIFN0dWRpbzogVW5icmVhayBjb21waWxhdGlvbiB3aXRoIHRoZSBXaW5kb3dzIFhQIFBsYXRmb3JtIFNESworICAgIAorICAgIFRoaXMgd2FzIHJlcG9ydGVkIGJ5IFdpbSBEZXZvcworCitjb21taXQgNTE3YTU1MTIxMDJkMzM5NDg5YzlhNzBlYThkMDg3YTBlMTAwMzVhOQorQXV0aG9yOiBXaW0gRGV2b3MgPFdpbS5EZXZvc0BtZXVjY2ktc29sdXRpb25zLmNvbT4KK0RhdGU6ICAgU3VuIE1heSAxMiAwOTo0MDo1MyAyMDEzICswMjAwCisKKyAgICBXaW5kb3dzOiBVbmJyZWFrIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkCisgICAgCisgICAgInN0YXRpYyBORVRTTk1QX0lOTElORSIgdHJpZ2dlcnMgdGhlIGVycm9yIG1lc3NhZ2UgImVycm9yIEMyMTU5OiBtb3JlCisgICAgdGhhbiBvbmUgc3RvcmFnZSBjbGFzcyBzcGVjaWZpZWQiLCBzbyB1c2UgTkVUU05NUF9TVEFUSUNfSU5MSU5FIGluc3RlYWQuCisKK2NvbW1pdCA0ZGYwMmY5NjdkMGI5ZDE2Y2ExMmI1ODIxNWU5ODM1YmM5ZjM5MWNhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTWF5IDQgMTQ6NTQ6NDggMjAxMyArMDIwMAorCisgICAgUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgbWlzc2luZyBwcm90b3R5cGUKKworY29tbWl0IDE4ZGFmYTU4ZDgxMjE5NjFiMDU4ZDZkNDE2NzA3ZGYxZDZhMDQyYWMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBNYXkgNCAxNDo1MzoxMCAyMDEzICswMjAwCisKKyAgICBSZW1vdmUgb25lIGNvcHkgb2YgdGhlIGxpbnV4X3N0YXRlcyBhcnJheS4gTWFrZSB0aGUgd2hvbGUgdGhpbmcgY29uc3QuCisKK2NvbW1pdCAwMmFkODFlYTJkZTJkNDY4Nzc5NDA1N2UyZTgxMDRhNjUyMzkyNTRkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWF5IDMgMDg6MDg6MDEgMjAxMyArMDIwMAorCisgICAgUmV2ZXJ0IHRoZSBmdW5jdGlvbmFsIGNoYW5nZXMgZnJvbSAnRml4IG1peGluZyBvZiBjb2RlIGFuZCBkZWNsYXJhdGlvbnMnWzFdCisgICAgaW4gb3JkZXIgdG8gbm90IHVzZSB2YXJpYWJsZXMgYmVmb3JlIHRoZXkgYXJlIHNldCBhbmQgbm90IGluY3JlYXNlIHRoZQorICAgIHByb2JhYmlsaXR5IGZvciBtZW1vcnkgbGVha3MuCisgICAgCisgICAgMSkgcmV2IGVlZmMyNWNhNjcwNWEyZDFhOGY1MjE2MDc2ZjQzOWUwZDNlM2VmNzYKKworY29tbWl0IDRmZDA1MjVkNmE2NWFjZmVhM2Q3YjQzMWM5Nzg5M2RjNDc5MjdkYTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMiAyMjo0NTo1MSAyMDEzICswMjAwCisKKyAgICBhdXRvY29uZgorCitjb21taXQgNTVkZGQ4Mjk1YWU2NWU0N2YyMjBmNDgwNzc5NGZiYWM5YjY5ZjBmYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAyIDIyOjIwOjQ2IDIwMTMgKzAyMDAKKworICAgIHRlc3Rpbmc6IERvY3VtZW50IHdoeSB3ZSBza2lwIHRlc3RzCisKK2NvbW1pdCBlZWZjMjVjYTY3MDVhMmQxYThmNTIxNjA3NmY0MzllMGQzZTNlZjc2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDIgMjI6MTM6NDIgMjAxMyArMDIwMAorCisgICAgRml4IG1peGluZyBvZiBjb2RlIGFuZCBkZWNsYXJhdGlvbnMuCisKK2NvbW1pdCBiOTRiNzM0ZGQzNTNiY2Y3OTNjOGI2NWEyNzNhMTM4N2JmZDI1NmVhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDIgMjI6MTI6MTEgMjAxMyArMDIwMAorCisgICAgRGFyd2luOiBzdXBwb3J0IDY0LWJpdCBjb3VudGVycyBmb3IgZGlza2lvIHRhYmxlCisKK2NvbW1pdCA4ZDg0MWMxZDliMWI0ZWVjMjY0ZDY4MmFjMTI2MDMyYWEwOGYyZTgyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDIgMjI6MDk6MTcgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogU3VwcG9ydCBuZXcgTUlCIHN0cnVjdHVyZXMgYW5kIE1GRCByZXdyaXRlcyB1bmRlciBEYXJ3aW4KKworY29tbWl0IDI3NjQwZmNmYjIwNTI2YmVmMmY2ZWI0MGMyYTU0NTY2ZGZjNmM0YzYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgMjcgMTA6NTg6MjkgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IENvcnJlY3QgdGhlIHNpemUgb2Ygb2YgdGhlIEVYQU1QTEVJUEFERFJFU1MgdmFsdWUgb24gTDY0IGhvc3RzCisKK2NvbW1pdCBlYmJlMmEzOTkwZWY2ZGNiZGNiOTlhMzlhZGQ0NjUzOTgzNTRjMzRjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUdWUgQXByIDIzIDA3OjI1OjIxIDIwMTMgKzAyMDAKKworICAgIGJ1aWxkaW5nOiBNYWtlIC0tZW5hYmxlLW1pbmltYWxpc3QgY29tcGlsYXRpb24gd29yayBhZ2FpbgorCitjb21taXQgNGJkN2Q3M2IxZmU2MGJiNTM2YmYzOWViNGEzODU5NmU4OTY1YzNmMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMiAyMjoyNTozOCAyMDEzICswMjAwCisKKyAgICB0eXBlY2FzdCB0byBzaWxlbmNlIHdhcm5pbmcgZm9yIGZvcm1hdAorCitjb21taXQgZGIwNzFkMGE2ZjQ4NzQyMTc2OWI2OWYyMmNjZjA5Y2MyNDJkOTQ1NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMiAyMjoyMzo1MiAyMDEzICswMjAwCisKKyAgICBPbmx5IGRlY2xhcmUgSFJQX21heG5hbWVzIHdoZW4gbmVlZGVkCisKK2NvbW1pdCBmYWYwMGNlM2IwZmViNGQzN2ZhYmVmNmQ0MTM1ZTM2ODAzYjAwMzc5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIyIDIyOjIyOjI0IDIwMTMgKzAyMDAKKworICAgIGlwLmM6IGZpeCBpbmNvbnNpc3RlbnMgZGVjbGFyYXRpb25zIG9mIGlwX21vZHVsZV9vaWRfbGVuCisKK2NvbW1pdCA3ZjZiNTk1MzNjZGZhMDY0NTBhZWU0MTU3MDIyM2IxY2RkMmNhNmI4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIyIDIyOjE5OjQ0IDIwMTMgKzAyMDAKKworICAgIFJlY292ZXIgZnJvbSBmYWlsdXJlcyBpbiBsaWJwY2kKKworY29tbWl0IDQwOTM4YTYyNjE5NTkwYjRlYTA3MWFlODViYWEyZjQyYTBiN2ZjYjIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIyIDE1OjAwOjAwIDIwMTMgKzAyMDAKKworICAgIENoZWNrIGlmICdhc25fcGFyc2VfKiAnIGFjdHVhbGx5IHN1Y2NlZWRlZC4KKyAgICAKKyAgICBJZiBub3QsIGRpc2NhcmQgdGhlIHBhY2tldCBpbnN0ZWFkIG9mIHVzaW5nIHdyb25nIGRhdGEuCisKK2NvbW1pdCBhYTRmYjk0OTAxMmQ3YzAyMmE0MzY5OTJhYzIwM2MwNjVmZDc0MjBhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMiAxNDo1ODo0MSAyMDEzICswMjAwCisKKyAgICBJbnRlZ2VyIHZhbHVlcyBlbmNvZGVkIGluIEJFUiBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNoYXJhY3Rlci4KKyAgICAKKyAgICBJZiBhc25fbGVuZ3RoID09IDAsIHdlIHdvdWxkIHJlYWQgdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIG5leHQgdmFyYmluZCBvbiBuZXh0IGxpbmU6CisgICAgICAgIGlmICgqYnVmcCAmIDB4ODApCisgICAgLT4gcmVhZGluZyBwYXN0IHRoZSBidWZmZXIgaWYgdGhlcmUgaXMgbm8gc3VjaCB2YXJpYWJsZSAtPiBzaWdzZWd2LgorCitjb21taXQgZjZlZWQ2ZTIzODRjYmY4NTc3NjhmMGVlOGM2NjAyZWI3Y2QyZjAzYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIEFwciAyMiAwODoxODo1NCAyMDEzICswMjAwCisKKyAgICBSZWdlbmVyYXRlIGNvbmZpZ3VyZQorCitjb21taXQgYTU4N2QxMWZiNjdmYWQzYWYyNDUxN2E0MDhhYmMzNzAwNTY1ZWRmNQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIEFwciAyMiAwODoxODozNSAyMDEzICswMjAwCisKKyAgICBSZWdlbmVyYXRlIGNvbmZpZ3VyZQorCitjb21taXQgY2UzYzkyMTQxMjhiMWNkYmViZDI5NzVkYTBmMzZhNTVlMjU4NGZhMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIEFwciAyMiAwODoxNjowMiAyMDEzICswMjAwCisKKyAgICBSZXBvcnQgdGhlIHJlc3VsdCBvZiB0aGUgUE9TSVggc2hlbGwgdGVzdCwgbm90IGEgY29uc3RhbnQgeWVzCisKK2NvbW1pdCAwYzg3MGY3NGIyZTQzMzdiNGJmM2I3ZjExZjU1YjEyZTgwZGY0OWZmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gQXByIDIyIDA4OjAwOjMyIDIwMTMgKzAyMDAKKworICAgIENoYW5nZSB0aGUgY2hlY2sgb2YgcGVybCBzaGVsbCBkZXRlY3Rpb24gdG8gd29yayB3aXRoIEFJWCBzaCBhcyB3ZWxsCisKK2NvbW1pdCA1ZjA4MTlmMTAyZDFjZGUzODk5ZDA4NzA4YzljMTI2MjY4ODk5MzE4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gQXByIDEgMDc6Mzg6MDkgMjAxMyArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgdXBkYXRlLWNvbnRyb2xsZWQgY2hhbmdlcyB0cmlnZ2VyIHBlcmlvZGljIHNhdmVzLiBUaGFua3MgdG8gQ2xhdXMgS2xlaW4gZm9yIG5vdGljaW5nIHRoYXQgdGhpcyB3YXMgbWlzc2luZy4KKworY29tbWl0IGE4ZmYyNjg4M2Q2Mzg2MWQ4NzY5ODVkZGU4OWYzODkxNTc3ZDYwMjYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXIgMzEgMTM6MzM6MDIgMjAxMyArMDIwMAorCisgICAgc25tcGQ6IE1ha2UgdGhlIHVwZGF0ZSBoYW5kbGVyIGNhbGwgYW55IGNoaWxkIGhhbmRsZXJzCisKK2NvbW1pdCAyYmM2MmI5NzJhMmJkMGI5MWRkZDRmN2MxMWQ0N2RiZTViZjZmZjAzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWFyIDMxIDEzOjMyOjI5IDIwMTMgKzAyMDAKKworICAgIHNubXBkOiBEbyBub3QgbGVhayBtZW1vcnkgaWYgaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbHMuCisKK2NvbW1pdCBhZTkxNDhiNTFiOWIwMjI3MGZkZGJiNzQxMTFiYTJjMDJhOGVhNjdjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDE2IDIyOjAzOjAwIDIwMTMgKzAyMDAKKworICAgIGV4dGVuZC5jOiBmaXggbWlzc2luZyBzZW1pY29sb24gYW5kIHdhcm5pbmcKKworY29tbWl0IDQ2NDIyZDE3ZGZkYjQxNmViMjRhZDdkYjc0NTNlYzQ3M2RiMjA4MjAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDE2IDEzOjQ4OjI2IDIwMTMgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBGaXhlZCBjcmFzaCBpbiBVQ0QtU05NUC1NSUI6OmV4dFRhYmxlCisgICAgCisgICAgc25tcGQgY3Jhc2hlZCB3aGVuIHRoZSBjb21tYW5kIHRvIGV4ZWN1dGUgaGFkIG5vIGFyZ3VtZW50cywgaS5lLiBleHRlbmQtPmFyZ3Mgd2FzIE5VTEwuCisKK2NvbW1pdCA4YjU3YmRiMGEwOTQ3MmExNmQzYWY2OWZkMmIxMzc0YzA5ZTZhM2FkCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDggMjA6MzY6MzUgMjAxMyArMDIwMAorCisgICAgcmVydW4gYXV0b2hlYWRlci9hdXRvY29uZgorCitjb21taXQgOWE5ZWEyNTdlNmViNDc4MDBkMzRmMWE4NmVjMGEyYTZlOTA4NWYzMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciA4IDIwOjM1OjI0IDIwMTMgKzAyMDAKKworICAgIHJlcnVuIGF1dG9oZWFkZXIvYXV0b2NvbmYKKworY29tbWl0IDU5YTMyMTQzOThiY2ViMjJjNDhkNThjMGZlOWM1NTJiMmUxZWNiOGMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgOCAyMDozMTo0OSAyMDEzICswMjAwCisKKyAgICByZXJ1biBhdXRvaGVhZGVyL2F1dG9jb25mCisKK2NvbW1pdCBlNGQ3MmRiMTFkM2ZiN2E0NDQyNTA5N2I1ZWMyNmI5ZjkxN2E5YzgyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDggMTk6MTQ6MDQgMjAxMyArMDIwMAorCisgICAgc25tcGtzbTogaGFuZGxlIGRlcHJlY2F0ZWQga3JiNV9hdXRoX2Nvbl9nZXR7bG9jYWwscmVtb3RlfXN1YmtleQorCitjb21taXQgOTlmZjk1MzY3M2Y3MzYxNDQ2M2FjZTEyMTBjNGFjMDczYTFmMmE4MQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciA4IDE5OjA1OjQ3IDIwMTMgKzAyMDAKKworICAgIHNubXBrc206IGZpeCBzb21lIGNvbnN0IGNhc3Qgd2FybmluZ3MKKworY29tbWl0IGNmMGQ0ZWYyMjRiYWQwMDA5OTUzNzA0ODNhNWM5OGRjMTc4MzlhNDEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgNSAyMjowNTozMyAyMDEzICswMjAwCisKKyAgICBJbml0aWFsaXplIGEgY291cGxlIG9mIHZhcmlhYmxlcyB0byBwbGVhc2UgY2xhbmcKKworY29tbWl0IDcxZjU5ZTllNmM5OGU4ZGJmYWIxZmZiMGQxZTQ2OGMxMmUzZDkyY2UKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgNSAyMTozODo0NCAyMDEzICswMjAwCisKKyAgICBNYWtlIHN1cmUgc25tcGtzbSBpbmNsdWRlcyBjb21fZXJyLmggKHdoZXJldmVyIGl0IGlzKSB0byBkZWNsYXJlIGVycm9yX21lc3NhZ2UKKworY29tbWl0IDhjMDFmNjQ3MjhhNDM2NTZkYzNhYzVmYmVmZGY4ZWNlYzhkYTE1MDYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgNSAyMToxMzozMCAyMDEzICswMjAwCisKKyAgICBNaW5vciBmaXggdG8gaW5saW5lIHRvIGFsbG93IGNvbXBpbGF0aW9uIHdpdGggY2xhbmcKKworY29tbWl0IDJkYjEyZjY4OGUxZjJlZWViYjU4OWVjNzNkYTgyZWI4OTdmMzRiZDEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBNYXIgMTggMDg6NTQ6NDkgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgdGhlIGxvY2FsIHRydXRodmFsdWUgaGFuZGxlciBjYWxsIGFueSBzdWJoYW5kbGVycyBpdCBtaWdodCBoYXZlLiBUaGFua3MgdG8gQ2xhdXMgS2xlaW4gZm9yIG5vdGljaW5nIHRoaXMgcHJvYmxlbS4KKworY29tbWl0IDkwNTEyYTMyYmQxYzJiZTVkMTdiMjNmMTA5NTYyNzgzOTVkZTM3NTQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXIgMTkgMjI6Mjg6MzQgMjAxMyArMDEwMAorCisgICAgUGF0Y2ggMTI1MCBmcm9tIHN0aGVuOiBpbmNsdWRlIDxzeXMvcHJvYy5oPiBpbiBzd3J1bl9raW5mby5jIGZvciBPcGVuQlNEIDUuMworCitjb21taXQgMzkxOTM2MDBlYzM4ZGViNTEzNzlhMTA5NjQ4ZDY5ZTdlOTAwMTcwMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciA3IDIxOjQ0OjU5IDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBwcm90b3R5cGUgcm91dGU2cHIKKworY29tbWl0IGFjY2U4Mjk2ZGM1YjY4ZDIxMmY3NDA0ZWRjMmFmZGI4YjAyODE3YzAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgNyAyMTozOToxNiAyMDEzICswMTAwCisKKyAgICBjbGVhbiB0YWJzIHRwIHNwYWNlcworCitjb21taXQgNDAyYmRhZTk2YTZkNzliM2I2M2I2NzI2MWIzN2E4NDdhYjQ4MTdlMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciA3IDIxOjM3OjQzIDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmYWxsIGJhY2sgdG8gaXB2NFJvdXRlVGFibGUgKFRoYW5rcyB0byBmZW5uZXIpCisKK2NvbW1pdCBlNjkxN2UzNzJhMDZkZGQ3NzYxYjMxMDNiMzI5YmNmNjk2ZTkzYTFmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDcgMjE6Mjk6NDQgMjAxMyArMDEwMAorCisgICAgc25tcG5ldHN0YXQ6IHNob3cgQVMgaW4gcm91dGluZyB0YWJsZSBpZiBhdmFpbGFibGUgKFRoYW5rcyB0byBmZW5uZXIpCisKK2NvbW1pdCA5ZWI4ZDBmOTA3ZWQ4ZDc4ZGU5MGRjZjY2MjNjMzMwNjA5OTNmMmEwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDcgMjE6Mjg6MjYgMjAxMyArMDEwMAorCisgICAgc25tcG5ldHN0YXQ6IGVhcmx5IGRldGVjdCBpZiB3ZSB3YW50IGlwdjQgcm91dGUgdGFibGUgKFRoYW5rcyB0byBmZW5uZXIpCisKK2NvbW1pdCA0MDgzNzM0ZWY3ZjRiZWFmMWI5YTEzMjU3MzhiYTE4NWViN2NjNzE2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDcgMjE6MjU6NTMgMjAxMyArMDEwMAorCisgICAgRml4IG1pc3BsYWNlZCBuZXdsaW5lcyBpbiBlcnJvciBtZXNzYWdlcworCitjb21taXQgNWIwZWQzYjc2ZjZlNDY2OWYyMzhiNWM4MmNkM2NjNmNiNmNhYTVjZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciA1IDE3OjE2OjI2IDIwMTMgKzAxMDAKKworICAgIFVuaXQgdGVzdCBUMDE0OiBGaXggYSBDeWd3aW4gYnVpbGQgd2FybmluZworCitjb21taXQgMTA2YWQyNDUwZjJiNzg4NDhmMjkyYWQwMzQ0NWE5N2M3Zjg3ZTZmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciA1IDE3OjE3OjA1IDIwMTMgKzAxMDAKKworICAgIFVuaXQgdGVzdCBUMDE0OiBJbml0aWFsaXplIHZhcmlhYmxlcyBwcm9wZXJseQorCitjb21taXQgYTdkZWE1NzM0ODU5MzE1NjEwNTFhMjAxOTAyN2Q3ZWQwOWQxNTU2NQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciA0IDIyOjM1OjA2IDIwMTMgKzAxMDAKKworICAgIHJmY2xpc3Q6IGFkZCBHOTk4eCBtaWJzCisKK2NvbW1pdCA0NjA0Y2Y2MWU3Y2Y2ZWE2NGU3ODJmNGEzZDcyZDRmYjAyNGMxZjliCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDQgMjI6MjM6MjMgMjAxMyArMDEwMAorCisgICAgc25tcG5ldHN0YXQgLUNzOiBjb25zaXN0ZW50IGZpZWxkIHdpZHRocyBmb3Igc3RhdGlzdGljcy4gRG9jdW1lbnQKKyAgICBzbm1wbmV0c3RhdCAtQ3NzIHZhcmlhbnQuCisKK2NvbW1pdCA0YWE5MjE1N2NlNTVkMWU1MjhkN2RlNTI0OTFkM2ViNzAyMDg2OWU3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDQgMjI6MTc6MTkgMjAxMyArMDEwMAorCisgICAgc25tcG5ldHN0YXQuMTogcmVtb3ZlIGludmFsaWQgcmVmZXJlbmNlcyB0byByb3V0aW5nIHN0YXRpc3RpY3Mgb3V0cHV0LgorCitjb21taXQgNzUxZjRhNmM3ZmM4OWE1Y2YyYjI4NzlmNmY5MTViMzE0NjZhMDRiNworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciA0IDIyOjE0OjI5IDIwMTMgKzAxMDAKKworICAgIHNubXBuZXRzdGF0OiBmYWxsIGJhY2sgZmlyc3QgdG8gaXBDaWRyUm91dGVUYWJsZS4gVGhhbmtzIHRvCisgICAgQmlsbCBGZW5uZXIgZm9yIGluaXRpYWwgcGF0Y2ggZm9yIHRoaXMuCisKK2NvbW1pdCA5M2M4NmU2ZTFjZjMwMWJkMjY5ZmRmZmI1ZTlhYWFjZThhYTE5M2Y0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUdWUgSmFuIDMgMDc6MjE6MDMgMjAxMiArMDEwMAorCisgICAgRG8gbm90IGxlYWsgbWVtb3J5IG9uIGVycm9yCisgICAgCisgICAgSWYgYWxsb2NhdGlvbiBvZiBpaW5mbyBmYWlscyB0aGVuIHRhYmxlX2luZm8gaXMgbGVha2VkLgorICAgIERlYWxsb2NhdGUgdGFibGVfaW5mbyBpbiB0aGlzIGNhc2UuCisKK2NvbW1pdCAzNmE3ZGU3MjMwZmJiYmI1MmNjMzdjYmJlZDI4MWViNTU5NDA0YmU5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDI1IDIwOjQwOjA5IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IEFkZCBtdWx0aWhvbWluZyBzdXBwb3J0CisgICAgCisgICAgT24gV2luZG93cyBWaXN0YSAvIFdpbmRvd3MgU2VydmVyIDIwMDggYW5kIGxhdGVyIGl0IGlzIHBvc3NpYmxlIHRvIGFkZAorICAgIG11bHRpaG9taW5nIHN1cHBvcnQgYnkgdXNpbmcgdGhlIElQX1BLVElORk8gc29ja2V0IG9wdGlvbi4KKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCXNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jCisKK2NvbW1pdCA3YmJhYmFiMjM2MmRhYTZkNzZhZDczMDMzYjNmMzJiMmNiYTcyNTNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgRmViIDIyIDE4OjU1OjQ3IDIwMTMgKzAxMDAKKworICAgIFJld29yayBJUF9QS1RJTkZPIC8gSVBfUkVDVkRTVEFERFIgZGV0ZWN0aW9uCisgICAgCisgICAgRGV0ZWN0IElQX1BLVElORk8gLyBJUF9SRUNWRFNUQUREUiBzdXBwb3J0IGR1cmluZyB0aGUgY29uZmlndXJlCisgICAgcGhhc2UgaW5zdGVhZCBvZiByZXBlYXRpbmcgdGhlIGZvbGxvd2luZyB0ZXN0IGluIGVpZ2h0IGRpZmZlcmVudAorICAgIHBsYWNlczoKKyAgICAKKyAgICAgI2lmIChkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pKSBcCisgICAgICAgICB8fCBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKSAmJiBIQVZFX1NUUlVDVF9NU0dIRFJfTVNHX0NPTlRST0wgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19GTEFHUworICAgICAuLi4KKyAgICAgI2VuZGlmCisgICAgCisgICAgVHdvIHNpZGUtZWZmZWN0cyBvZiB0aGlzIHBhdGNoIGFyZToKKyAgICAqIElQX1BLVElORk8gc3VwcG9ydCBpcyBlbmFibGVkIG9uIEN5Z3dpbi4KKyAgICAqIHNldHNvY2tvcHQoSVBfUkVDVkRTVEFERFIpIGlzIG5vIGxvbmdlciBpbnZva2VkIG9uIFdpbmRvd3Mgd2hlbgorICAgICAgYnVpbHQgd2l0aCBWaXN1YWwgU3R1ZGlvIG9yIE1pbkdXLWdjYy4KKworY29tbWl0IDFhMTk2YWQ5ZjE1MTc4NjhiOTNhNmJlYzkzYTBjZmUxZDI5ZTI4M2IKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBGZWIgMjMgMTQ6MDM6MjkgMjAxMyArMDEwMAorCisgICAgVGVzdGluZzogTWFrZSB1bml0IHRlc3QgVDAxNCBtb3JlIHJvYnVzdAorCitjb21taXQgOWJlMjJhYWFmODM5MzcxM2ZiYzM5MDI1ZjcwMjExMWY1MGYxZTRlYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEZlYiAyMyAxMTowMzoyMCAyMDEzICswMTAwCisKKyAgICBXaW5kb3dzOiBBdm9pZCBjb2xsaXNpb25zIHdpdGggdGhlIFdpbmRvd3MgVmlzdGEgb3IgbGF0ZXIgU0RLCisKK2NvbW1pdCAwYjZiZmVmMmNhOWFlOWUxYzJiZWFmZTcwMDEwMGZhZTVmNmY0YzFhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgRmViIDIzIDExOjIwOjIzIDIwMTMgKzAxMDAKKworICAgIGluZXRfbnRvcCgpIC8gaW5ldF9wdG9uKCk6IENvbnZlcnQgcHJvdG90eXBlcyBmcm9tIEsmUiB0byBBTlNJIEMKKworY29tbWl0IDJiYjUxZDcxZWVjNGU3ODk5ODJjMmE3NDExODZkY2U2ZGYyMzg1NDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjEgMjA6NTk6MjUgMjAxMyArMDEwMAorCisgICAgUmVkdWNlIHRoZSB0aW1lIG5lZWRlZCB0byBydW4gdGhlIHJlZ3Jlc3Npb24gdGVzdHMgKHdhcyBlbmxhcmdlZCBieSBjb21taXQgYjNkNWVkODcpCisKK2NvbW1pdCBjZjY0MGNjZDY4ZTk2MzY4MDViNzUwNzk5MjhjNzI3N2ZhMjYwODNiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDExOjU1OjAzIDIwMTMgKzAwMDAKKworICAgIFVuaXQgdGVzdCBUMDE0OiBBY2NlcHQgImxvY2FsaG9zdC5sb2NhbGRvbWFpbiIgdG9vCisKK2NvbW1pdCBiZGE0MzU3Mzc1YWQyOTljZjE4NDc1NzllMWExYmMzYzYxMTg5NWMzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDE2OjA3OjQxIDIwMTMgKzAxMDAKKworICAgIFJlZ3Jlc3Npb24gdGVzdCBUMDYwOiBFc2NhcGUgYmFja3NsYXNoZXMgcGFzc2VkIHRvIENPTkZJR1RSQVBECisKK2NvbW1pdCA2YjVkNzg0ZjRkNmQwMDAzOTAwMTRkMTIwZjE1YjkzNzM2MmY4YzA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDIwOjMzOjAyIDIwMTMgKzAxMDAKKworICAgIFB5dGhvbiBiaW5kaW5nczogRml4IGEgcmVjZW50bHkgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCA2ZDI1OGVmYTJhY2NhZGZjY2M1MGQ4NmJkNDYzNzk3NDU0NDljYTRhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDE1OjI3OjE5IDIwMTMgKzAxMDAKKworICAgIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IFJlbW92ZSBzdXBlcmZsdW91cyBjYXN0cworCitjb21taXQgMmMyZTFmNDE2MzkzZDQ4NWY5YWM5MGM4N2Y3MjA2NWM2NjhiNzMyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyMSAxNTo0ODozNCAyMDEzICswMTAwCisKKyAgICBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOiBGaXggYSBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAxYmM3OTlkZTZjYWIwMTBiMjVjMGM0ZDNmNTE1NWI1ZmJhZjUyN2YwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIxIDIwOjA1OjE0IDIwMTMgKzAxMDAKKworICAgIFB5dGhvbiBiaW5kaW5nczogRml4IHRoZSBvdXQtb2YtYm91bmRzIHdyaXRlCisgICAgCisgICAgU2VlIGFsc28gY29tbWl0IDIzNDE1OGI4ZTg0Y2MyMDRjYmFjOTZlNmU5YmU2OTU5NjM1NDA0YjgKKworY29tbWl0IDRmNGVhZWI5MjBhZDE1YzkyOWM2Njc4MmNjMGE2NDI5MTJjYWJkMDYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE3IDEyOjI0OjI2IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogZml4ZWQgSVBBRERSRVNTIHNpemUgb24gNjRiaXQgc3lzdGVtcy4KKworY29tbWl0IDQ4NmYxMWRkZWU5ZjFjMmRkODA1NjQ0OWU5MDMxZTI0Yjg2NDY4NzIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRmViIDIxIDEwOjA2OjEyIDIwMTMgKzAxMDAKKworICAgIEFkZGVkIElFVEYgQlNEIGxpY2Vuc2UgZm9yIE1JQiBmaWxlcy4KKyAgICAKKyAgICBNSUJzIGluY2x1ZGVkIGluIE5ldC1TTk1QIHRha2VuIGZyb20gSUVURiBEb2N1bWVudHMgYXJlIGNvbnNpZGVyZWQKKyAgICBDb2RlIENvbXBvbmVudHMgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBJRVRGIFRydXN0IExpY2Vuc2UgUG9saWN5LCBhcyBmb3VuZAorICAgIGhlcmU6CisgICAgCisgICAgaHR0cDovL3RydXN0ZWUuaWV0Zi5vcmcvbGljZW5zZS1pbmZvLworCitjb21taXQgZDI0ZWZiMDQ3NzhkODcwZWZhMjczOTQ5Mzk0OWRiNjVmM2ZkZDRmMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiAxMiAyMDo0NDo0NiAyMDEzICswMTAwCisKKyAgICBTb2xhcmlzOiBGaXggZmV0Y2hpbmcgb2YgbGFyZ2UgY2h1bmtzIG9mIGRhdGEgKGxhcmdlciB0aGFuIG9uZSBidWZmZXIpCisgICAgVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggbWFueSBpbnRlcmZhY2VzLCBidXQgY291bGQgYWxzbyBmaXggb3RoZXIgbGFyZ2UgdGFibGVzLgorCitjb21taXQgNDUwMDFmZDk4YzcyOWRmOWZmMDUzNjI3YzQxNmFiNWYyZTRjNjBmMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiAxMiAyMDozOTo1MCAyMDEzICswMTAwCisKKyAgICBGaXggYnVnIDIyODYsMjQzOTogQm91bmQgYnVmZmVyc2l6ZSBmb3Igc3dydW4gZGF0YSBvbiBGcmVlQlNECisKK2NvbW1pdCA5YmQwNDEzYmZiZGNkODQ1NDEzYzEzNWJiZmY4NzcxZmE3MTMwODA5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiAxMSAxMTo1NzowMSAyMDEzICswMTAwCisKKyAgICBFeHBsaWNpdGx5IGVudW1lcmF0ZSBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgIAorICAgIFRoZSBnZW5lcmljIGNvbmYgYW5kIGxvY2FsLmNvbmYgZXh0ZW5zaW9ucyB3ZXJlIGludGVycHJldGVkIGFzIG15LnNubXAuY29uZiBhbmQgbXkub3RoZXIuc25tcC5sb2NhbC5jb25mIGJ5IHNvbWUgY3VzdG9tZXJzLgorCitjb21taXQgMGJkZDA5ODg5ZDA4MTFmODY0ZGYxMzFiODQ0ZjIwYjAwMzkyMDYyYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEZlYiA3IDAwOjA1OjAzIDIwMTMgKzAxMDAKKworICAgIHNubXBfY2xpZW50LmM6Om5ldHNubXBfcXVlcnlfd2FsazogaGFuZGxlIFNOTVB2MiBleGNlcHRpb24gcmVzdWx0cworCitjb21taXQgODY0YjRhY2E4ZGZhNDgwYTc4Yjc0NWZhZTIwOTFlZGM1MzczYTBjNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEZlYiA2IDE2OjAwOjU0IDIwMTMgKzAxMDAKKworICAgIHNubXB0cmFwZDogQWRkIC1YIG9wdGlvbiB0byBkaXNhYmxlIEFnZW50WAorCitjb21taXQgMTEyZjNkNGZhNTM2YjJjNTMxZDA3ODA2NzYxOTg5MTVhMWY1ODE3OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEZlYiA2IDE1OjU5OjUzIDIwMTMgKzAxMDAKKworICAgIHJmY2xpc3Q6IEFkZCBSQlJJREdFLU1JQgorCitjb21taXQgYzBhNjU0OTU5Nzk0N2YyOWMzNmVmYWRiMDQ5MjdmZjY5MDE4OWViYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAzMCAxNTo1MzoxNSAyMDEzICswMTAwCisKKyAgICBSVU5URVNUUzogZG9uJ3QgdHJhcCBvbiBTSUdDSExELiBJdCBjb25mdXNlcyBkYXNoLCBta3NoIGFuZCBtYXliZSBvdGhlciBzaGVsbHMuCisgICAgKGRhc2ggaXMgL2Jpbi9zaCBvbiBVYnVudHUpCisKK2NvbW1pdCBiOTVhYzM4NmU2YzIzNTZhMWVjMjlmMWM0MDliMmVjM2U5MDE1OWMzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDI5IDA4OjU5OjAxIDIwMTMgKzAxMDAKKworICAgIHJmY2xpc3Q6IGFkZCBURUQtTUlCCisKK2NvbW1pdCAyM2JkZjZkMjZmNDMzN2QwN2VhNmU5OTAxYTc3MzhkMTE4NmQxNmQ0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDI5IDA4OjU4OjA3IDIwMTMgKzAxMDAKKworICAgIHNubXBkZjogYWRkIC1DSCBhcyBhbHRlcm5hdGl2ZSB0byAtQ2gKKworY29tbWl0IDQwMjU4ZTljMDYwYWVjYWM2NTU1YWVkZmYzZTcwYmRlN2QyYWI4NDYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMjggMTc6MDU6MDggMjAxMyArMDEwMAorCisgICAgVDA3MmNvbTJzZWN1bml4X3NpbXBsZTogYXdrIHN0cmluZyBpbmRpY2VzIHN0YXJ0IGF0IDEhCisgICAgRml4IHRlc3QgdG8gd29yayB3aXRoIG1hd2sgKGRlZmF1bHQgZm9yIERlYmlhbi9VYnVudHUpCisKK2NvbW1pdCBlMzdmMmI2YmRmZmE3YWZhYTFkYzBiOGFlZTU2NWE0ZGE4MmQ2ZmU0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDI1IDE2OjI0OjEwIDIwMTMgKzAxMDAKKworICAgIHNubXBkZjogQWRkIC1DaCAoaHVtYW4gdW5pdHMpIG9wdGlvbgorCitjb21taXQgN2E0MDdhZDM0NTA1ZWQ0ZGJhYTJlODRlMDZhMWRiZjQ4YzNjNzdlNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyNSAxNToyODo0MyAyMDEzICswMTAwCisKKyAgICBzbm1wZGY6IEhhbmRsZSBTTk1QICh2MmMvdjMpIGV4Y2VwdGlvbnMKKworY29tbWl0IGM3MzljYjM4NzVmYjVkNGNhZDQxMzg2NjFjYzBhNDE3MTM4NGMzNDEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjUgMTA6MTQ6MDIgMjAxMyArMDEwMAorCisgICAgQXBwbHkgcGF0Y2gjMTI0NjogRml4IHBhc3NpbmcgYSBTRVQgb2YgYSBzdHJpbmcgdG8gbm90IGN1dCBpdCBhdAorICAgIGZvdXIgY2hhcmFjdGVycyB0byBhIHBhc3MvcGFzc19wZXJzaXN0IGhlbHBlci4KKworY29tbWl0IDIzNDE1OGI4ZTg0Y2MyMDRjYmFjOTZlNmU5YmU2OTU5NjM1NDA0YjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE3IDEyOjI0OjI2IDIwMTMgKzAxMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogZml4ZWQgSVBBRERSRVNTIHNpemUgb24gNjRiaXQgc3lzdGVtcy4KKworY29tbWl0IDllMGEwZTM1ZDhkMWIzNmZhNDdjZWM5MzhkNmM4NzRkZTAwNzFiYjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgSmFuIDkgMjI6Mzc6NDcgMjAxMyArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAxMjM5OiBGaXggbWVtb3J5IGxlYWsKKworY29tbWl0IDU1NjA1ZWUzNDUyYWVmNWFhYmU0ZWQxNWE4MzM3NGE5NzcyOGU2NGEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDkgMDk6MjY6NTYgMjAxMyArMDEwMAorCisgICAgRml4ZWQgbWVtb3J5IGxlYWsgb24gZmFpbGVkIHJlYWxsb2MuCisKK2NvbW1pdCBhMzJjYTkzYTliOTE2NzRhOGMxZTg5ZTFhMzgzYTc2MTM2YjhhYzM4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEphbiA4IDE2OjQyOjU0IDIwMTMgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxMjQwOiBGaXggZGVhbGxvY2F0aW9uIG9mIGludGVnZXIgaW5kZXhlcworCitjb21taXQgODc2ODFmMGZiMjg1YTAyMTYzNmUwNmE2ZjIzNTFkNzY0MDllZWJjOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEphbiA1IDE1OjA2OjEyIDIwMTMgKzAxMDAKKworICAgIEF2b2lkIHVzaW5nICJsb2NhbCIgc2luY2UgU29sYXJpcycgL2Jpbi9zaCBkb2VzIG5vdCB1bmRlcnN0YW5kIGl0CisKK2NvbW1pdCA1OWI0ZDQwZjM5NzBiYTgyZjNkZjJhMzk5OTcxMjU0YjA0ODI3NDQzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDQgMTg6MDA6NTMgMjAxMyArMDEwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTWFrZSB3aW5FeHRETEwgd29yayBvbiA2NC1iaXQgV2luZG93cyBzeXN0ZW1zCisKK2NvbW1pdCAzOTU5NzEwNjAzOGY2ZTFjNWVkNDliM2ZjZTAwMjFhNmM1OWVjMWZlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDQgMTg6MDU6MzggMjAxMyArMDEwMAorCisgICAgd2luRXh0RExMOiBBZGQgbW9yZSBkZWJ1Z2dpbmcKKworY29tbWl0IDg1Y2U5MDYyOTExZDMxYjQyZTBjMWUxMzVhYmQzYmRhODEzZTMwMDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNCAxODowMjozMCAyMDEzICswMTAwCisKKyAgICB3aW5FeHRETEw6IEludm9rZSBTbm1wRXh0ZW5zaW9uQ2xvc2UoKSBiZWZvcmUgdW5sb2FkaW5nIGFuIGV4dGVuc2lvbiBhZ2VudAorCitjb21taXQgN2UwMzEyMjk1NDM1NzlkMzdiMDA2Mjk2ZTJmNDQ1NDgyZDA1MTJjYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEphbiA1IDEzOjA0OjAyIDIwMTMgKzAxMDAKKworICAgIHdpbkV4dERMTDogUmVtb3ZlIHNvdXJjZSBmaWxlIHdpbjMyL01nbXRBcGktd2luRXh0RExMLmgKKworY29tbWl0IDJlODk2MjRlNTVlNzM1NTc4NjI1OTRmMWY1MjVmOWRmZmM4Mjc5ODYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gNCAyMjoyNjo0NyAyMDEzICswMTAwCisKKyAgICBTb2xhcmlzIC9iaW4vc2ggZG9lcyBub3QgdW5kZXJzdGFuZCAnbG9jYWwnIGJ1aWx0aW4uCisKK2NvbW1pdCA2MjU3ZGVhNDgyN2U4NWM3YWY4NDVhZTljZGVkNDhkNDRhYTdiYjNkCitBdXRob3I6IEphbiBQb2tvcm7vvoPvvb0gPGpwb2tvcm55QHJlZGhhdC5jb20+CitEYXRlOiAgIFRodSBEZWMgMjAgMTQ6NDU6NDUgMjAxMiArMDEwMAorCisgICAgRml4IGNvbW1lbnQgdHlwb3MgaW4gZXhhbXBsZS5jCisgICAgCisgICAgUGF0Y2ggZnJvbSBQb2tvcm7vvoPvvb0gPGpwb2tvcm55IGF0IHJlZGhhdC5jb20+CisKK2NvbW1pdCA5ZGZjNDRjOTFkN2EyOWE0YzQzZjc3OTA4NWRkZTM0YzVmZTZkNWFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDMgMTA6MzA6MjcgMjAxMyArMDEwMAorCisgICAgTWluR1csIHRlc3QgaGFybmVzczogRml4IGEgbG9nIG1lc3NhZ2UKKworY29tbWl0IDFkMDk5YzdiOTE5ZWYyNWVmYTAzYzE0YWE3N2NjYmVjOGU1YmIwMDkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gMyAxMDoyNDo0OCAyMDEzICswMTAwCisKKyAgICBhcHBzL2FnZW50eHRyYXAuYywgV2luZG93czogRml4IHVzYWdlIHRleHQKKworY29tbWl0IGYwMjFlNmZkNGJjMmFjYjZmZmFjMzM5ZDNmMzhlNGMxNWJiNWJkN2QKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMSAxNzo1MzoxNiAyMDEzICswMTAwCisKKyAgICBNaW5HVzogVXBkYXRlIHRlc3QgaGFybmVzcy4gSW5zdGFsbGF0aW9uIG9mIHBzbGlzdC5leGUgaXMgbm93IHJlcXVpcmVkLgorCitjb21taXQgNGJjM2MwNTQ3ZTBiMzNlZWE3MWYzYzFhMDllZmRkNTk2OWQ3ZTI3OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIERlYyAzMSAxNzoyNDozMyAyMDEyICswMTAwCisKKyAgICB1Y2Qtc25tcC9kbG1vZDogRW5hYmxlIGluIE1TVkMgYmF0Y2ggYnVpbGQKKworY29tbWl0IGU5ZWZiMjAwOTU0NjhlNjQxNTdiODRmMThiNmNjZDk5MWUxMDgyZTMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMSAxNTowNDozNyAyMDEzICswMTAwCisKKyAgICBXaW5kb3dzOiBMaW5rIHdpdGggc25tcGFwaS5saWIgYW5kIG1nbXRhcGkubGliIGV2ZW4gaWYgbm90IHVzaW5nIHRoZSBwbGF0Zm9ybSBTREsKKworY29tbWl0IDkwMGFhZThlYTY5M2ZiODQwZDU3NTI2ZmI2NzFkMjE1Zjg2NWJlZGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMSAwMTozMzowMSAyMDEzIC0wODAwCisKKyAgICB1Y2Qtc25tcC9kbG1vZDogRml4IGFuIE1TVkMgY29tcGlsZXIgd2FybmluZworCitjb21taXQgMzYzZTNmYTFhNDNjYTYyMjNmZTNiMDgwOGU2NjI5NWIzZDkzODZiOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxIDAxOjI3OjQyIDIwMTMgLTA4MDAKKworICAgIHVjZC1zbm1wL2RsbW9kOiBBZGQgZGxtb2QuYyB0byBNU1ZDIHByb2plY3QKKworY29tbWl0IGUzNTQyYzA0YTg0NjE3ODU3Njg4YWI4ZTg3MThjZGM0YzZhNjhjZjUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMSAwOToxNDozMyAyMDEzICswMTAwCisKKyAgICB1Y2Qtc25tcC9kbG1vZDogUmVtb3ZlIG1vcmUgc3VwZXJmbHVvdXMgY2FzdHMKKworY29tbWl0IDFlM2IwYWUyYjAyY2YxZmFjY2FkNDg5NmJjM2JkYmVhMWRiNGE2OGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBEZWMgMzEgMTM6MTk6MzYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogUG9ydGVkIHVjZC1zbm1wL2RsbW9kIHRvIE1pbkdXIC8gTVNWQworCitjb21taXQgOTg2ZmI5Yjg1ZTEzODNiODFlYWVhNDBkMmNiN2MxNDQ5MmRkYmRhYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIERlYyAzMSAxMjozMjo1NiAyMDEyICswMTAwCisKKyAgICBNaW5HVzogQXZvaWQgY29uZnVzaW9uIGJldHdlZW4gTWluR1cncyBraWxsLmV4ZSBhbmQgdGhlIFN5c0ludGVybmFscyBwc2tpbGwuZXhlIChiYWNrcG9ydCBjb21taXQgOWI0MjdiMzUzZjFjZWI4ZmU4N2U2ZmM4ZWQzYjZjZmFiM2NlN2YyMCkKKworY29tbWl0IDc5OGI3M2NmNTllMzY4N2Y2NWJkNTRhN2E4YWMyOWZlMjQ5OGM2OWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMTcgMTM6MDU6NTMgMjAwOSArMDAwMAorCisgICAgVW5icmVhayB0aGUgTWluR1cgYnVpbGQgZm9yIHRoZSA1LjQgYnJhbmNoIC0gdGltZXJhZGQoKSBpcyBub3QgQU5TSSBDCisgICAgCisgICAgUmVtb3ZlIERJRkZUSU1FVkFMKCkgYmVjYXVzZSBpdCdzIGJ1Z2d5OiBpbiAiZGlmZi50dl91c2VjID4gMTAwMDAwMEwiIHRoZSAiPiIKKyAgICBzaG91bGQgaGF2ZSBiZWVuICI+PSIgaW5zdGVhZC4KKyAgICAKKyAgICBUaGlzIGlzIGEgcGFydGlhbCBiYWNrcG9ydCBvZiBjb21taXQgODU4NTA5YzllMTk5OGY2ZDI2ZTkwY2I2MjJlNGIxN2ViMjQ4OGE0Zi4KKworY29tbWl0IDFlNTU2Y2M3NzQwYzA2MzY3ZmYzMzYxYWE5NmJmNDUzMzljMmU4YTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBEZWMgMzAgMTc6NTk6NDQgMjAxMiArMDEwMAorCisgICAgdWNkLXNubXAvZGxtb2Q6IFJlbW92ZSBzdXBlcmZsdW91cyBjYXN0cworCitjb21taXQgNTFkZmE2ZTY3ZmQ4NDg3Yjg4ODJjMTYzMmU4MTExOTVkOTQ5NmU0MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIERlYyAzMCAxMDo0MjoxNiAyMDEyICswMTAwCisKKyAgICB1Y2Qtc25tcC9kbG1vZDogTWVudGlvbiBsaWJyYXJ5IHBhdGggaW4gZXJyb3IgbWVzc2FnZXMKKworY29tbWl0IDAyYTM1N2Q2Yjk1MzhhNDg4OTYzNjg5MDBiYmI1OTNkYmI0ZGMzNzQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBEZWMgMzAgMTA6NDA6NTUgMjAxMiArMDEwMAorCisgICAgdWNkLXNubXAvZGxtb2Q6IFJlbW92ZSBhIHN1cGVyZmx1b3VzIGluaXRpYWxpemVyCisKK2NvbW1pdCBlZjc0ODg0NWIxNGMwOTUwNDllZDU0ODAzZWE3NGNmNDU3ZWZkMTg5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gRGVjIDMwIDA5OjU3OjM4IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IEZpeCBlbnZpcm9ubWVudCBzZXBhcmF0b3IgaW4gc25tcGQvc25tcHRyYXBkL3NubXB0cmFuc2xhdGUgaGVscCB0ZXh0LiBSZXBvcnRlZCBieSBKYXNvbiBNY0NvbGx1bSA8am1jY29sbHVtQGNvbXRlY2hlZmRhdGEuY29tPi4KKworY29tbWl0IGJjMGFiYWU1NWRkODY3ZGJiZjRlNDJlNjdhMzYyMzQwODhjOTM3NzEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMiAwOToyNTozMyAyMDEzIC0wODAwCisKKyAgICBjb3B5cmlnaHQgdXBkYXRlCisKK2NvbW1pdCA0MDg2YWY5NWIyOThmMWNmMTMwZDA4ZGViN2UwOTAwNThiMzIxYWY5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIwIDA3OjM3OjE0IDIwMTIgKzAxMDAKKworICAgIEZpeCB0aGUgTUlCIG5hbWVzIHRvIGFjdHVhbGx5IHdvcmsKKworY29tbWl0IDc5NTI3NGZjMjFlMWJhMDNlZmJlOWI2MDQyYzZhMzUxM2Q4OWRlYmYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjAgMDc6MjQ6NDcgMjAxMiArMDEwMAorCisgICAgQ2xlYW4gdXAgYW5kIHZhbHVlIGNoZWNraW5nIGZvciBpcERlZmF1bHRUVEwsIGlwdjZJcERlZmF1bHRIb3BMaW1pdAorCitjb21taXQgNDM5ZDUwYzY3OWU5ZjA5YjEwNmJmZGY2NGY4Y2M3NjY0MTllMTM0NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMCAwNzoyNDoxNiAyMDEyICswMTAwCisKKyAgICBGaXggaWNtcE1zZ1N0YXRzVGFibGUgZm9yIFNvbGFyaXMKKworY29tbWl0IDAwN2E3ZDI0YmM1ZjI3OTM5MmZkMGVjNDM2MTQ3N2NkOGYxNGU1YWYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMTkgMjI6MTQ6MDYgMjAxMiArMDEwMAorCisgICAgZ2l0IGlnbm9yZSB0aWxkZSBmaWxlcworCitjb21taXQgYWZmMDJmMjRlMTk4YTI5MjMxMjczZDQ5NDgyMGRkNmUzNTQxNTVjYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIERlYyAxNyAyMjo0NDoxOCAyMDEyICswMTAwCisKKyAgICBSdW5uaW5nIGF1dG9oZWFkZXIvYXV0b2NvbmYKKworY29tbWl0IDljZmQ2ODBmMmYyZjQ1Y2Y3NmNkNDIxNjY5M2I4NjJmYWEyN2NiYzEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBEZWMgMTcgMjI6NDI6MDAgMjAxMiArMDEwMAorCisgICAgQ29uZmlnIGNoZWNrIGZvciBCU0QgdWRwc3RhdC51ZHBzX2lwYWNrZXRzCisKK2NvbW1pdCA1M2MyZmRkNWI2NjAyMTE0NGFkMjY1MzliNTNiZTljMTU5M2I0ODg0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRGVjIDE3IDIyOjI3OjAzIDIwMTIgKzAxMDAKKworICAgIEFkZCBTRCBzdXBwb3J0IGZvciBpcC1mb3J3YXJkLW1pYgorCitjb21taXQgY2E3YjE3YTQxZDRkMTZiZDI3YWFjZjkyMTE2YmVhMzU2MmVlZWEzNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBEZWMgMTcgMTI6NDA6MzIgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHVzZSBjYWNoZSBmb3IgZHNrVGFibGUgdG8gc3BlZWQgaXQgdXAuCisgICAgCisgICAgVUNELVNOTVA6OmRza1RhYmxlIHdhcyBzbG93IG9uIE5GUyBtb3VudHMuIE5vdyBpdCB1c2VzIGZzeXMgY2FjaGUKKyAgICB0byByZWxvYWQgbW91bnRzIGV2ZXJ5IDUgc2Vjb25kcy4KKworY29tbWl0IDBiNzE4MTg0ZTA3MGQyNTc0YzA5YjE4ZjU2ODk1MGE4YzlmZjc2NTkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTYgMjA6NTc6MjkgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogYXBwczogU3RvcCB1c2luZyBzbm1wX3BlcnJvciB3aGVuIGxvZ2dpbmcgYWZ0ZXIgZnVuY3Rpb25zIHRoYXQgZG9uJ3Qgc2V0IHNubXBfZXJybm8uCisKK2NvbW1pdCA3ZWRjZTBjMzExYTdkZDU0MjhlMGVkYjcwMWRhYmU5ZGM3OWQwOTY3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDE1IDEyOjQwOjEwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIHRoZSAtd2l0aG91dCBvcHRpb25zIHRvIHJwbWJ1aWxkIHdvcmsKKworY29tbWl0IGM2MDM3NTQ4ZmI0YjQ3OTk2MzMwZmUxYmMxZTgyNjVhY2VhNWRkNTQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBEZWMgMTAgMDA6NDE6NDIgMjAxMiArMDEwMAorCisgICAgVGhlIHByb3BlciByb3V0ZXIgZmlsZXMgZm9yIEJTRAorCitjb21taXQgMmIzNTllNDUwOTg2YmI4NzQ0YmJmZjIxZTBjYWI0OTNhY2FjZWE5OAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIERlYyA5IDIzOjAyOjAyIDIwMTIgKzAxMDAKKworICAgIFN1cHBvcnQgZm9yIGlwU3lzdGVtU3RhdHNUYWJsZSBmb3IgKkJTRC4gTW9zdCBvZiB0aGUgY29kZSBieSBHYXJyZXR0CisgICAgQ29vcGVyLiBQYXJ0aWFsbHkgZnVuZGVkIGJ5IENpc2NvIElyb25wb3J0LgorCitjb21taXQgOWEwNDQxMjhlOGIzMzE3OTYyMjExNjYzNTg3NjllYjA1MzVkZmMxZgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIERlYyA5IDIyOjM2OjIxIDIwMTIgKzAxMDAKKworICAgIFN1cHBvcnQgZm9yIGlwTmV0VG9NZWRpYVRhYmxlIGZvciAqQlNELiBNb3N0IG9mIHRoZSBjb2RlIGJ5IEdhcnJldHQgQ29vcGVyLgorICAgIFBhcnRpYWxseSBmdW5kZWQgYnkgQ2lzY28gSXJvbnBvcnQuCisKK2NvbW1pdCBmOWNiMjk4ZGQyMGVmNmQ0YmM2ODNjZTA2N2YyMzMwNzM3YmU0ZTA5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gRGVjIDkgMjI6MTc6MjIgMjAxMiArMDEwMAorCisgICAgU3VwcG9ydCBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGUgZm9yICpCU0QuIE1vc3Qgb2YgdGhlIGNvZGUgYnkgR2FycmV0dAorICAgIENvb3Blci4gUGFydGlhbGx5IGZ1bmRlZCBieSBDaXNjbyBJcm9ucG9ydC4KKworY29tbWl0IDFkZWU0MTU2MmM1NGUwYjU0YjMwMWEzNzgzOGIzYmE2NTA5ZGNjMzgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBEZWMgOSAyMTo1NDoxNCAyMDEyICswMTAwCisKKyAgICBTdXBwb3J0IGZvciBpcFN5c3RlbVN0YXRzVGFibGUgZm9yICpCU0QuIE1vc3Qgb2YgdGhlIGNvZGUgYnkgR2FycmV0dCBDb29wZXIuCisgICAgUGFydGlhbGx5IGZ1bmRlZCBieSBDaXNjbyBJcm9ucG9ydC4KKworY29tbWl0IDNkYmFiYzk3MDY4YjZjNjkwYjNmZGY5N2I1YWIzYWUwZDllYWIyOGMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBEZWMgOSAyMTo0Nzo0NSAyMDEyICswMTAwCisKKyAgICBDaGFuZ2Ugc29tZSBkZWJ1ZyBvdXRwdXQgaW50byBlcnJvciBsb2dnaW5nLiBGYWlsdXJlIHRvIGV4cGFuZCAzMiB0byA2NAorICAgIElTIGFuIGVycm9yLgorCitjb21taXQgOTA3MzYwZTA5ZmZmMzM5MGQ2MjY5ZjhjYjQ3NDBiZGJjZDk1ODE2NgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIERlYyA5IDIxOjQ1OjQ0IDIwMTIgKzAxMDAKKworICAgIEZpeCBzb21lIGxhYmVscyBmb3IgbmV0c3RhdCBpY21wIG91dHB1dC4KKworY29tbWl0IDlmMmYwNTQwNWM3YmI0OTllYmUwODM5YjBkNzliYTI1YzYxYzBmNTUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBEZWMgNyAwOTo0OTo1MSAyMDEyICswMTAwCisKKyAgICBSdW5uaW5nIGF1dG9jb25mCisKK2NvbW1pdCBkMjdmMzY0NTI1ODNkMjkxZjI1NWVmMDkwZTJhZWFlYWYzOWE5ZTBlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgRGVjIDcgMDk6NDk6MDIgMjAxMiArMDEwMAorCisgICAgUnVubmluZyBhdXRvY29uZgorCitjb21taXQgNTYzNTJjMmViZTk1NDFmNmFiZjlkMmI5ZWJjNDcwNWQ4MThkODliOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIERlYyA3IDA5OjQ4OjIxIDIwMTIgKzAxMDAKKworICAgIFJ1bm5pbmcgYXV0b2NvbmYKKworY29tbWl0IDM5NzkyM2UwYWFlMTM4NWEwYWYzYTgwM2U2MGViZTgxMjRmOTYxZDIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBEZWMgNyAwOToyNjoyMSAyMDEyICswMTAwCisKKyAgICBGaXhlcyBmb3IgY29uZmlndXJlIG9mIGtzbSBtb2R1bGUuIFByZXZpb3VzbHkga3NtIGhhZCB0byBiZSB0aGUKKyAgICBmaXJzdCBzZWN1cml0eSBtb2R1bGUgaW4gbGlzdCB0byBiZSBpbmNsdWRlZC4KKworY29tbWl0IDQzMGQxMGQyOTZiOGQ4Yzk4YTNhYWZkMjdhOGM2ZmY0ZjY0MDgxMTQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBEZWMgNyAwOToyNDozOSAyMDEyICswMTAwCisKKyAgICBGaXggc3BlbGluZyB3aGljaCBoYXMgcHJldmVudGVkIGtzbSBtb2R1bGUgZnJvbSBjb21waWxpbmcgZm9yIG1hbnkgeWVhcnMgOi0oCisgICAgQWxzbyBzb21lIGZpeGVzIHRvIHN1cHBvcnQgSGVpbWRhbCBLZXJiZXJvcy4gVGhpcyBzdXBwb3J0cyBGcmVlL05ldEJTRC4KKworY29tbWl0IGJmZjgzMmFiMjQ4ZTA4NjI4YmU0NmViZjc2MTExOTExZTdmMzllNTIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBEZWMgNyAwOToxNzoyMiAyMDEyICswMTAwCisKKyAgICBBZGFwdCBmb3IgbG9uZ2VyIGxpbmVzIGZyb20gL3Byb2MvbmV0L3RjcDYuIEFuZCBpc3N1ZSBhbiBlcnJvciBpZgorICAgIGl0IGhhcHBlbnMgdG8gZmFpbCBhZ2Fpbi4gUGF0Y2ggZnJvbSBidWcgIzI0MjUgKFRoYW5rcyBaaGl4dSBMaXUpCisKK2NvbW1pdCA5Njg3ZTRkNTA3ODFiYTAxNjg0MTZmMTVjNGYyZDlmYzgzNzEwNTBhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgRGVjIDcgMDk6MTU6NDggMjAxMiArMDEwMAorCisgICAgaWNtcCBzdXBwb3J0IGZpbGVzIGZvciAqQlNEIChleGNlcHROZXRCU0QpCisKK2NvbW1pdCBmMjE1YmExZTM3YThjM2UwNzY5NThlZmQ4M2MwZjVkMzkzYTE0YzIyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgRGVjIDcgMDk6MTM6MjQgMjAxMiArMDEwMAorCisgICAgU3VwcG9ydCBmb3IgaWNtcFN0YXRzVGFibGUvaWNtcE1zZ1N0YXRzVGFibGUgZm9yICpCU0QgYW5kIFNvbGFyaXMKKworY29tbWl0IGE3YjdjM2MwYzNiZTNmNmNmMmQwOWY2NDcwZDNmYTA4NjE1M2QwMzYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMzAgMTU6MzU6MzMgMjAxMiArMDEwMAorCisgICAgU2h1ZmZsZSBpbiBwcmVwYXJhdGlvbiBmb3IgYnJvYWRlciBzdXBwb3J0IGZvciBpY21wU3RhdHMvaWNtcE1zZ1N0YXRzCisKK2NvbW1pdCBiZDI5NmFjMTg0MjM1MDNlZGE4ZWZmZWI4NmFmYjE5ZTAwMTQzODg5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDMwIDE1OjM0OjUyIDIwMTIgKzAxMDAKKworICAgIFNodWZmbGUgaW4gcHJlcGFyYXRpb24gZm9yIGJyb2FkZXIgc3VwcG9ydCBmb3IgaWNtcFN0YXRzL2ljbXBNc2dTdGF0cworCitjb21taXQgMmUyM2VhMGYyOTNiYjhlOWNlYWY1NjM2ZGI3YjdkMDdmNmQ2MmM3YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE5vdiAyMCAyMzozMzo1OCAyMDEyICswMTAwCisKKyAgICBBZGQgbWlzc2luZyBzc0lPUmF3U2VudC9yZWNlaXZlZCBmb3IgU29sYXJpcy4KKworY29tbWl0IDU5ZWViYzQxYTk0MzU4MTEwNzNmZWM1MGQ3NmRkNmFlZjlkZDU4YTcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBOb3YgMjAgMjM6MzI6NTMgMjAxMiArMDEwMAorCisgICAgQWRkIHNvbWUgZXJyb3IgY2hlY2tpbmcgdG8gZ2l0dG9vbHMKKworY29tbWl0IDgwYjE4Mzc1ODI2NjUzNjI2YzJkNzA0NTFjMmI1NGExYzUwYTNjZTYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBOb3YgMTMgMTM6NTU6NDcgMjAxMiArMDEwMAorCisgICAgUmVtZW1iZXIgdG8gaW5pdCB0aGUgc3lzdGVtc3RhdHMgcHJvdmlkZXIKKworY29tbWl0IDc0M2NiNjY3MTg5MDQ5NzlmNTU4OTU0NzI1MDE1ODRjMzBjNjZmMTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDEyIDE1OjQ5OjE1IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGNyYXNoIHdoZW4gTUQ1IGFuZC9vciBTSEEtMSBoYXNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgT3BlblNTTC4KKworY29tbWl0IDE4OThjZmM3MWJkYjNmNGExNjg1YzZkMjFiNTRkZDFhMzQ4MjU5MWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMTIgMTU6NDg6MTUgMjAxMiArMDEwMAorCisgICAgT3BlbkJTRCA1LjIgc3VwcG9ydC4KKworY29tbWl0IGRkNTNmZmJhZmViMzFjZGU2MTZhODk5NDllNzBlM2Q1ZmUwY2MxYjMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDEyIDE1OjQ2OjQzIDIwMTIgKzAxMDAKKworICAgIEZhbGwgYmFjayB0byBTSEEtMSBpZiBNRDUgaXMgbm90IGF2YWlsYWJsZS4KKyAgICAKKyAgICBPbiBwYXJhbm9pZCBzeXN0ZW1zIHdoZXJlIE1ENSBpcyBkaXNhYmxlZCB1c2UgU0hBLTEgaW5zdGVhZCBvZiBNRDUgYW5kIGRvbid0IGNyYXNoLgorCitjb21taXQgZWE4Zjc0YzgxZjgyYzEwNWI5ZmMwMTk2NWFkY2UxNGIwZDgxODZkYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiAxMiAxNTo0NjozNCAyMDEyICswMTAwCisKKyAgICBGaXggTmV0QlNEIG1lbW9yeSBkYXRhIHR5cGluZworCitjb21taXQgZGRlM2EzNWJhYWViNjgzY2YxNDQxYTE2YTE1NDQxZjhiNDU2YzUyMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMTIgMTU6NDU6MjcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRml4ZWQgY3Jhc2ggd2hlbiBNRDUgaGFzaCBpcyBub3Qgc3VwcG9ydGVkIGJ5IE9wZW5TU0wuCisKK2NvbW1pdCBiNzdiNjdkOGQ2MjlmNzg1NjM5ZTQwMmZhNGZiZWU2Y2NmZTE4ZmE1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDEyIDE1OjQ0OjQ5IDIwMTIgKzAxMDAKKworICAgIEtlcm5lbCBwcm9jZXNzZXMgaW4gRHJhZ29uRmx5LCBhbmQgZml4ZWQgY3B1IHVzYWdlIGRhdGEKKworY29tbWl0IGQ2YzYyMDEyYzgwODJmYzg4NmY3NDdlMGUyYzliYjhhNmM2NmM2NjMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMTIgMTU6NDE6NTUgMjAxMiArMDEwMAorCisgICAgRGlza2lvIGZvciBPcGVuQlNELCBhbmQgc29tZSBjbGVhbi11cCBmb3IgRnJlZUJTRC9EcmFnb25GbHkKKworY29tbWl0IDRhNWUwZjRjOTVmYjZjZDEyM2E0OTAxNzg3Mzc2ZTQ0N2QzMzJjMDIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgT2N0IDkgMTQ6MjM6NDggMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogYWRkZWQgc2ltZnMgKE9wZW5WWiBmaWxlc3lzdGVtKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlLgorCitjb21taXQgMmEwY2QzNWFjZjMzMjVhNmZkYzBhMTA0MjNmNTRjYjhiNWNlNTIyYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBTZXAgMTMgMTU6MjU6NTIgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGluZmluaXRlIGxvb3Agd2hlbiBTSUdURU0gYXJyaXZlcyBpbiBtaWRkbGUgb2YgaW50ZXJuYWwgcXVlcnkgcHJvY2Vzc2luZy4KKyAgICAKKyAgICBXaGVuIHNubXBkIHN0YXJ0cyBpbnRlcm5hbCBxdWVyeSwgZS5nLiBmb3IgJ21vbml0b3InIGNvbmZpZyBvcHRpb25zLCBpdCBjYWxscworICAgIG5ldHNubXBfcXVlcnlfd2FsaygpLiBUaGlzIGZ1bmN0aW9uIGxvb3BzIHVudGlsIGVpdGhlciBlcnJvciBvY2N1cnMgb3IgdGhlCisgICAgaW50ZXJuYWwgcmVxdWVzdCBpcyBwcm9jZXNzZWQuIEFuZCBpZiBTSUdURVJNIGNvbWVzIHRvIHRoaXMgbG9vcCwgdGhlIHJlcXVlc3QKKyAgICBpcyBub3QgbWFya2VkIGFzIGZhaWxlZC4KKyAgICAKKyAgICBQYXRjaCBvcmlnaW5hbGx5IGZyb20gTWFzYWhpcm8gTWF0c3V5YSwgbW1hdHN1eWEgW2F0XSByZWRoYXQuY29tCisKK2NvbW1pdCBiYzQ0OWMwZjg1YWU5ZmEwOGFjNGZjZTY3MjgyZjQ4ZWI3YWIxOTg0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAxMCAxMzoyNTozOCAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgdmFsdWUgb2YgVUNELVNOTVAtTUlCOjpleHRDb21tYW5kIHRvIGNvbnRhaW4gZnVsbCBjb21tYW5kIGxpbmUuCisgICAgCisgICAgTUlCIGRlc2NyaXB0aW9uIG9mIFVDRC1TTk1QLU1JQjo6ZXh0Q29tbWFuZCBzdWdnZXN0cyBpdCBzaG91bGQgY29udGFpbCBmdWxsIGNvbW1hbmQgbGluZS4KKyAgICBBbHNvIGluIE5ldC1TTk1QIDUuMy4yLjIsIHdob2xlIGNvbW1hbmQgbGluZSB3YXMgc2hvd24uCisKK2NvbW1pdCBhMzk3OGYyY2MyMDU2Yzk3YTRjM2YzMzhmNzA5YTIwMjkxYWVkNDcyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDEyIDA2OjQ4OjM3IDIwMTIgKzAxMDAKKworICAgIFByb3BlciBoYW5kbGluZyBvZiBjb25maWd1cmUtZ2VuZXJhdGVkIHNubXBjb25mCisKK2NvbW1pdCAwZjQ2OTkyOTI0ZGU1YTRhYjA3NjNhOGQ0NGExY2VjZTRhOTkxZDgwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTm92IDUgMjE6MTY6MzcgMjAxMiArMDEwMAorCisgICAgUGF0Y2ggZm9yIE9wZW5CU0QgNS4yIChQYXRjaCAzNTU5NDIwKQorCitjb21taXQgOWVkMGIyZTBhYzBjOGU1NDliOGY5YTU4NDVlOWQxZmFhY2FiNzNjNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiA1IDIwOjA4OjQxIDIwMTIgKzAxMDAKKworICAgIHJmYzY3NzkKKworY29tbWl0IGFlZjc2Y2EwY2JhMmNhNTZmNmFhMWRiNWM1YjU4YTU0OTM5ZjM4OWIKK0F1dGhvcjogcXFzaGthIDxxcXNoa2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDMxIDIwOjAwOjA0IDIwMTIgKzAxMDAKKworICAgIEFnZW50WCwgSVBYOiBSZXN0b3JlIGRlZmF1bHQgcG9ydCAoYnVnICMzNTgyMjgzKS4KKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IDdiOWUwMzQ0MWMzZGMzYTA3NjcwZWQwMWY1ZDA0NzkxYTgyYzc1MGMuCisKK2NvbW1pdCBkN2Q5OGU1YWE5ZWU4Y2E3OTE4Yjc2NzUwNDNkNDc5Y2Y3N2I4M2M0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDEgMTA6MzM6MDYgMjAxMSArMDIwMAorCisgICAgLmdpdGlnbm9yZTogQWRkIGxvY2FsL3NubXBjb25mCisKK2NvbW1pdCA3MWQ4M2JhNDExN2EyY2ZiNzg3NGU5MTgzMmU0NTk3M2RhNDJlZTk4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDEgMTA6MzQ6MzAgMjAxMSArMDIwMAorCisgICAgV2luMzIsIE1TVkM6IE1ha2UgYnVpbGQuYmF0IHdvcmsgYWdhaW4gbm93IHRoYXQgRU5WX1NFUEFSQVRPUiBpcyBjb25maWd1cmFibGUKKworY29tbWl0IDVlNTAwMDgyNzI4ZjQ1MzU5NWY1MDI0ZDI0MTIwOGM1MWYwOGQyMmMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMjkgMTg6MTI6NDEgMjAxMiArMDEwMAorCisgICAgUkVBRE1FLndpbjMyOiBSZW1vdmUgcmVmZXJlbmNlIHRvIHRoZSBubyBsb25nZXIgc3VwcG9ydGVkIEN5Z3dpbiBjb21waWxlciBvcHRpb24gLS1tbm8tY3lnd2luCisKK2NvbW1pdCAxYTM2ZGVlMTY1YjhiZDdkZjNlZjY5NGI3YzNmMjYyMWE1NDQ5ZGFhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgQXVnIDMwIDIwOjU0OjAwIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkLCBzbm1wdHJhcGQgYW5kIGFwcHM6IE1ha2UgRU5WX1NFUEFSQVRPUl9DSEFSIGNvbmZpZ3VyYWJsZQorCitjb21taXQgMGUxY2E0NWE2ZjhkOGFjZjQ0YWEyMWEwMDlhOWU1MTE5MmU4NDc4MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIE9jdCAyOCAxMDoxMToyMiAyMDEyIC0wNzAwCisKKyAgICBzbm1wbmV0c3RhdDogRml4IE1TVkMgY29tcGlsZXIgd2FybmluZ3MKKworY29tbWl0IDRhNmQwMzc4YTM5MTY1NzFjZTc2MDRjNGEzZDU0YThjOTZhOGY4MDcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBPY3QgMjggMDk6NTQ6MTIgMjAxMiAtMDcwMAorCisgICAgV2luZG93czogVmlzdWFsIFN0dWRpbyA2IGJ1aWxkIGZpeCBmb3Igc3RybGNhdCgpCisKK2NvbW1pdCA0MWI0OGE2MzcwOTUyYmY0YjEyZDM0ZmIwNWVjNTVmYjA3MDJlOGNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gT2N0IDI4IDE0OjM3OjUyIDIwMTIgKzAxMDAKKworICAgIFdpbmRvd3M6IE1ha2Ugc25tcG5ldHN0YXQgYnVpbGQgYWdhaW4KKworY29tbWl0IDI0NTFmODI2NDc5ODgxYTQ5MjZmY2Y4ODg1NWY1ODI1ODVlYjgxM2IKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBPY3QgMjggMTA6MjM6MTcgMjAxMiArMDEwMAorCisgICAgd2luMzIvYnVpbGQucGw6IFJlZHVjZSBjb2RlIHJlZHVuZGFuY3kKKworY29tbWl0IDZlOTkzODg2ODNhNmM4NTQwMzVmMDQyYTlkMDdjMDcyMzExN2U4YTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBPY3QgMjggMDk6NDE6MjAgMjAxMiArMDEwMAorCisgICAgV2luZG93cywgYmF0Y2ggYnVpbGQ6IFJlbW92ZSB0aGUgb2Jzb2xldGUgdmFyaWFibGUgIlNTTCIKKworY29tbWl0IDc1NDRhZGM1YTFjNzY4ODllNGE5ZWQ1MWU5NmQyMmQwMmZkNTY5NWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMjIgMTU6MzU6MDQgMjAxMiArMDAwMAorCisgICAgTkVXUzogV2luZG93czogUG9ydCBiYXRjaCBidWlsZCBpbmZyYXN0cnVjdHVyZSB0byBWaXN1YWwgU3R1ZGlvIDIwMTAgYW5kIGxhdGVyCisgICAgCisgICAgRnJvbSBWaXN1YWwgU3R1ZGlvIDIwMTAgb24gaXQgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHRvIHNwZWNpZnkKKyAgICBpbmNsdWRlIG9yIGxpYnJhcnkgZGlyZWN0b3JpZXMgZ2xvYmFsbHkgLSB0aGVzZSBoYXZlIHRvIGJlIHNwZWNpZmllZAorICAgIHBlciBwcm9qZWN0LiBIZW5jZSB0d28gYWRkaXRpb25hbCBtZW51IGVudHJpZXMgaW4gYnVpbGQuYmF0IHRoYXQKKyAgICBhbGxvdyB0byBzcGVjaWZ5IHRoZXNlIGRpcmVjdG9yaWVzLgorCitjb21taXQgMWI4YTc5YzFjMmViMTNmOGIyMDdjMTJhYTZlNzFhMjlmZjAwMzk2ZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEF1ZyAyMiAxOToxMDowNyAyMDEyICswMDAwCisKKyAgICB3aW4zMi9Db25maWd1cmU6IEZhY3RvciBvdXQgY29tbW9uIGNvZGUKKworY29tbWl0IDJhZjdhNzNiMGNhOGNkYmQzNmE3ZjE5ZGQ4ZTU1NzY0Yzg0OTg1NTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBPY3QgMjcgMTg6Mjc6NDIgMjAxMiArMDIwMAorCisgICAgV2luZG93czogTWFrZSBzbm1wbmV0c3RhdCBidWlsZCBhZ2FpbiAoc2VlIGFsc28gY29tbWl0IGFhNTkxMmI4OTg2Y2RlNzQwOTBiYTE1YmUxOTY0MjYzMDlhMWUxZjApCisKK2NvbW1pdCBmYTk4YjRjYmQ2ZGMxNWFhOTI2MTY2ZWVmMDRkNWJjOGRmYmFhYWQ2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgT2N0IDI2IDA3OjU2OjA2IDIwMTIgKzAyMDAKKworICAgIENvcGUgd2l0aCBhZGRpdGlvbmFsIHN0YXRpc3RpY3MgaW4gL3Byb2MvbmV0L3NjdHAvc25tcCBpbiBSSDYKKworY29tbWl0IDU0MjkwYmVkZTMzODE2NGNhNjVhM2VlZDIyNGZhNTA0MGQ3ZGQ4NTcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBPY3QgMjYgMDc6NTA6MTEgMjAxMiArMDIwMAorCisgICAgQmV0dGVyIGNsZWFudXAgb2YgImV4ZWMiIGNvbmZpZyB0byBhdm9pZCBjcmFzaCBkdXJpbmcgcmVsb2FkIG9mIGNvbmZpZworCitjb21taXQgODJhYTI0NjY3MTE5NGYwNGJlNTJjNjIxZTlmODNkMGZhYmQyNGZhNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCAyNCAxNTozMDoxMSAyMDEyICswMjAwCisKKyAgICBEb24ndCBtaXggY29kZSBhbmQgZGVjbGFyYXRpb25zIQorCitjb21taXQgNGU5ZWE4NDU1OTJmZmY4YjJhYWU1ZDMxOGRjYWJmNDFmOTU3MDYzMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCAyNCAxNToyNTozNSAyMDEyICswMjAwCisKKyAgICBEb24ndCBtaXggY29kZSBhbmQgZGVjbGFyYXRpb25zIQorCitjb21taXQgMjFkNWM2Nzg1ZTkxNmI1MTAxNDQwZWQxYTRmNzFiNDFiYTJlYjgwOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCAyNCAwOToyNzoyMyAyMDEyICswMjAwCisKKyAgICBSZW1lbWJlciB0byBmcmVlIHRoZSBkZXNjcmlwdGlvbiAoaWYgc2F2ZWQpIGR1cmluZyB1bmxvYWRfYWxsX21pYnMKKyAgICAocGF0Y2ggMzU2NTkyMikKKworY29tbWl0IDJiOTk0MGNhNTZmYzhkM2Q2MTBlZmQyZWJhOWFlNGViYjc0MWU2NzEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgMjQgMDY6NDE6NDYgMjAxMiArMDIwMAorCisgICAgQ2xlYW4gdXAgZGlza2lvIGNvbmZpZyBiZWZvcmUgcmVsb2FkaW5nLgorCitjb21taXQgZjc3NjhmYjY0M2JlMjgyZDYzNTI4OWI1N2Y4OGEwN2QwNzA0ODdiMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE9jdCAyMyAxMTo0ODozMSAyMDEyICswMjAwCisKKyAgICBhcHBzL3NubXBuZXRzdGF0L2luZXR4LmM6IEVsaW1pbmF0ZSBkZWFkIGNvZGUgKHNlZSBhbHNvIGNvbW1pdCBhYTU5MTJiOCkKKworY29tbWl0IDY0YzU2ZjI3YzVlZDQzMmNlOGRlNDRlMjU3OWNhMGM4MDZhNTE3ZWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMjIgMTc6NDU6MTkgMjAxMiArMDAwMAorCisgICAgYnVpbGQucGw6IEVsaW1pbmF0ZSBhIHRlbXBvcmFyeSB2YXJpYWJsZQorCitjb21taXQgMzBhNWQwMTNhODBlOWZkNTBiOGZkMGY3MGZmZDk2ZmYyNmI2ZTQ1NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAyMiAyMDoyOTowOSAyMDEyICswMjAwCisKKyAgICBVcGRhdGUgdG8gY3VycmVudCBJQU5BIHZlcnNpb24KKworY29tbWl0IGY0MGQ0NDA2ODkwNjdlZjZjNGRhN2RkYWRmYjM3M2E0NTIxOTdmYmQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMjIgMTk6NDc6MDYgMjAxMiArMDIwMAorCisgICAgd2luMzIvQ29uZmlndXJlOiBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlCisKK2NvbW1pdCBkMzRlMDU3Nzc5Y2IzMmU5NDMyNDA4OWRjNDYyNTYzODMwOWNmZTg5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDIyIDE4OjM2OjU5IDIwMTIgKzAyMDAKKworICAgIHdpbjMyL2J1aWxkLnBsOiBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlCisKK2NvbW1pdCAzMGRhZWYxODYwMzk3ZjA0NWM0MDU1Y2Q2MWQ2NjNkMjkwZGQ0N2YyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDIyIDE4OjMyOjM4IDIwMTIgKzAyMDAKKworICAgIEZpeCBNU1lTIGtpbGwvcHNraWxsIGNvbmZ1c2lvbgorCitjb21taXQgMTRiZTkxMzJiOTExNThiMDUxMjA3MTBiMWZmNmE0YjJhY2NjNTMxZAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAyMiAxODoxMDo0NCAyMDEyICswMjAwCisKKyAgICBGaXggbmV0MC9uZXR4IGNvbmZ1c2lvbgorCitjb21taXQgODEwN2E2MzUyZGYyNDc4NjYwOTk0ZWYxMDNkNTI4MDFhNjYwN2NjOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAyMiAxNzowMzo0NyAyMDEyICswMjAwCisKKyAgICBGaXggc3BlbGluZyBlcnJvcnMKKworY29tbWl0IGFhNTkxMmI4OTg2Y2RlNzQwOTBiYTE1YmUxOTY0MjYzMDlhMWUxZjAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjIgMTY6NTg6NTAgMjAxMiArMDIwMAorCisgICAgSW1wbGVtZW50IHRoZSBtb2Rlcm4gSVAgdmVyc2lvbiBhZ25vc3RpYyB0YWJsZSBpbiBzbm1wbmV0c3RhdC4KKyAgICBJZiB0aGUgbW9kZXJuIHRhYmxlIGlzIG5vdCBhdmFpbGFibGUgKG9yIHRoZSAtQ0wgb3B0aW9uIGlzIHVzZWQpCisgICAgZmFsbCBiYWNrIHRvIHRoZSBsZWdhY3kgdGFibGVzLgorCitjb21taXQgMWEzNGQyMjQ5ZWYwZDIyMTVlNTg4NmY5YjNjOTdlY2ZhN2ViNTE5MAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAyMiAxNjozOTo0MSAyMDEyICswMjAwCisKKyAgICBQaWNrIHVwIGlmRGVzY3IgZnJvbSBpZlhUYWJsZSB3aGVuIGF2YWlsYWJsZSwgYW5kIHVzZSB0aGF0IGFzIHRoZSBuYW1lLgorICAgIFZlcnkgdXNlZnVsIGlmIHBjaS11dGlscyB3ZXJlIGF2YWxhYmxlIHdoZW4gY29tcGlsaW5nIHRoZSBhZ2VudCBhcyB0aGUKKyAgICBuYW1lIG90aGVyd2lzZSB3aWxsIGJlIHRoZSB2ZXJ5IG9ic2N1cmUgY2hpcCBuYW1lCisKK2NvbW1pdCBiNGNhZjU0M2NmZjdkYmE4ZjlhY2NhMmI5ZWE4OGM5Yjc5ZGMzOWVlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDIyIDE2OjMyOjEyIDIwMTIgKzAyMDAKKworICAgIFBpY2sgdXAgSEMgb2N0ZXRzIGFuZCBNY2FzdE9jdGV0cyBmcm9tIC9wcm9jL25ldC9uZXRzdGF0IG9mIGN1cnJlbnQgUkhFTDYKKyAgICBhbmQgRmVkb3JhIGtlcm5lbHMuCisKK2NvbW1pdCBjNjU1ZmNlNzg0NTMyYTUyM2Y3ZGI1ODJkMGNkMDdkZWU0YWQ3YWM1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDIyIDE2OjI1OjU5IDIwMTIgKzAyMDAKKworICAgIFRyeSB0byBiZXR0ZXIgY2xhc3NpZnkgTGludXgga2VybmVsIHRocmVhZHMgYXMgaHJTV1J1blR5cGU9T3MKKworY29tbWl0IGUxYThjOTVjYTU1ZjU2OTU4NWM4OGUxNzRhNDNmNmQ0MTI5YzQzOWQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBPY3QgMjAgMDk6NTk6NDEgMjAxMiArMDIwMAorCisgICAgQ29ycmVjdCB0aGUgbmVzdGluZyBvcmRlciBvZiB0aGUgZG94eWdlbiBlbmQgc2VjdGlvbiBjb21tZW50IGFuZCB0aGUgZmVhdHVyZSByZW1vdmFsIGVuZGlmLgorCitjb21taXQgZjY3YWRmMmEzN2E4YzE4MmVhY2JjZmU1MmQ1Yjc4OTE5MWE2NTkyOQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCA5IDE2OjMyOjQ3IDIwMTIgLTA3MDAKKworICAgIHJlbW92ZSByZWxlYXNlIHJlcXVpcmVtZW50cworCitjb21taXQgM2U1NDMzMDM5M2NjYzg2NTI1ZWQ2ZmI5YTBmYzE5YzA2ODMwNjYxMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5lQHJlZGhhdC5jb20+CitEYXRlOiAgIFR1ZSBPY3QgOSAwNjozNDoxMCAyMDEyIC0wNzAwCisKKyAgICBmaXggZG91YmxlLW5lZ2F0aXZlIHR5cG8KKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjIucmMzIC0+IFY1LjcuMgorCitjb21taXQgNTA1NGI1NzA2MTlkZjBhODE5NThhMDQ1YmVmMTM1YjIwMjA1ZjAzNgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCA5IDE1OjI2OjA1IDIwMTIgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMgorCitjb21taXQgNTZhNzk3ZmYzZTcxZGM4ODY0NjdkMTdjZTAyNWIwMjM3YzhjMWNjMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE9jdCA5IDE0OjQyOjIzIDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIKKworY29tbWl0IDA4MTNmOGI2MmRmMGU4NDQwZmZlZjE2MWNlMTM0ZmY5NDU1ZTdkZTkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZUByZWRoYXQuY29tPgorRGF0ZTogICBUdWUgT2N0IDkgMDY6MzM6NTggMjAxMiAtMDcwMAorCisgICAgZml4IGRvdWJsZS1uZWdhdGl2ZSB0eXBvCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBhNmE4ODkyNzUzNDY4NGUyNzVjY2YwZTc4MDUxMzA5NGE3M2ZjNmJiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgT2N0IDkgMDY6MzE6MjEgMjAxMiAtMDcwMAorCisgICAgQUlYIG5ldC1zbm1wNS43LjEgaHJTV1J1blBhdGggbm90IGNvbXBsZXRlCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA1OGE0ZDg4MzkwMjFmNzcyYzM1YTczMmJkMDk2ZDFlMjkwZGMwYTYyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgT2N0IDkgMDY6MzA6NTcgMjAxMiAtMDcwMAorCisgICAgQUlYIG5ldC1zbm1wNS43LjEgaHJTV1J1blBhdGggbm90IGNvbXBsZXRlCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA2MjZlYWJlYzRlYTk4ZTUzNTkwODk3OTA4NTg0NzlhNTlhMjZjZGNiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gU2VwIDMwIDIzOjMwOjI4IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1vdmUgdGhlIGNoZWNrIHRoYXQgdGhlIHBkdSB2YXJpYWJsZSBpcyBub24tTlVMTCB0byBiZWZvcmUgdGhlIGZpcnN0IGRlcmVmZXJlbmNlIG9mIGl0LgorCitjb21taXQgNjhhYWI1NzJjMmQyNzQ2YjUxYTk1ZWJhMTEwNTY4YzM4YjA1MDgwOAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIFNlcCAyNSAxOTowNzo0MiAyMDEyIC0wNzAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNy1wYXRjaGVzCisKK2NvbW1pdCAwYTQxNTMzYjFiNDlmMDBkNzM1N2EzZDJiZWE1ZGZhNzVlOGVkY2Q3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gU2VwIDI0IDAwOjA3OjE5IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZCB0ZXN0IGNhc2VzIGZvciBzbm1wX3NlcnZpY2UKKworY29tbWl0IGE2MWI0OGQ3OGUxMWQ5NDVkZWY0NmZkZTBmN2Q1NWY3OTE5YzMzNWEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBTZXAgMjMgMDc6NTM6MDkgMjAxMiArMDIwMAorCisgICAgUHJlZmVyIGNvcHlfbndvcmRfY29uc3Qgb3ZlciBjb3B5X253b3JkKE5FVFNOTVBfUkVNT1ZFX0NPTlNUCisKK2NvbW1pdCA5YmZmYzU0MTNkMGQ4ODIzOThiMDZmNDEwOWFjODA3YWYyZjc4MzQ3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gU2VwIDIzIDAwOjI5OjQ0IDIwMTIgKzAyMDAKKworICAgIFNpbXBsaWZ5IGxvZ2dpbmcgdGhyb3VnaCB0aGUgdXNlIG9mIG5ldHNubXBfY29uZmlnX2Vycm9yCisKK2NvbW1pdCBkMDlkNTNhMGZhNmRmNjNiMjFlNmYxMjczMWJlZTUxYTM2MjRlODVlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgU2VwIDIyIDIxOjMwOjA4IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IERvIG5vdCBjcmFzaCBvbiBpbmNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gdG9rZW5zLgorCitjb21taXQgMDJkY2U2ZjQzYjk5Zjg1OTQxNjI3OTI4YzFhNTAyMmQ2NzI1ZDEyNAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IFNlcCAyMiAyMToyODo1MSAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBEbyBub3QgdHJ1bmNhdGUgc2luZ2xlIGRlZmF1bHQgdHJhbnNwb3J0IGRvbWFpbnMKKworY29tbWl0IDIxMWUzYzcwNjI1OTY1NDQxYjJhMDI5YTYxMTM4MDI5NzQ2NzNjNDMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBTZXAgMjIgMTE6MjM6MTkgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRG8gbm90IGNyYXNoIGZyb20gZW1wdHkgdmFsdWVzIGluIC0tdG9rZW49dmFsdWUgYXJndW1lbnRzCisKK2NvbW1pdCBhZjNkMmQ5NzNiMWU4ZTI5ZDIwNWQ4YTA3YWNkODJiMWY4NTQ4MTllCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgU2VwIDIyIDEwOjMwOjE2IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEFkZCB0aGUgc3ltYm9sIE5FVFNOTVBfUFJJbyB0byBoZWxwIGluIHByaW50aW5nIG9pZCB2YWx1ZXMuCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy4yLnJjMiAtPiBWNS43LjIucmMzCisKK2NvbW1pdCA4YjQ1MjkyMzAxZjAzNDlmZmI2OWQ0ZmQ4NTk1ZjJkNWIxOTllNmI2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDI1IDE5OjM1OjM5IDIwMTIgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMi5yYzMKKworY29tbWl0IDBjYmZmYjU2NWU2MmFlZjkzN2ZjNzAwZDhkM2MzYjhjNjVkZGZhNjUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMjUgMTk6MDc6NDAgMjAxMiAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMi5yYzMKKworY29tbWl0IDQwNTA1OTcxYWRkNmEzYjZmNTk1NGNmYmRlNTMyNzQ5YmZiY2IxNmEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTcgMTM6MzQ6MzcgMjAxMiAtMDcwMAorCisgICAgZml4IGZvciBoaWRkZW4gQ01TR194eHggbWFjcm9zIG9uIEFJWAorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNjBmMGE5ZTk4M2FiODI3YzgyNGUzOTdkNjJhZWZmNDhhNjBmMDEzMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAxNyAxMzozMToxMiAyMDEyIC0wNzAwCisKKyAgICBGaXggcHN0YXQgbWVtb3J5IGxlYWsgb24gaHB1eCAxMWkKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDEzYmQ0ZDU2YmFhOTg4NjAxOGEwMDQ3N2UzMjE0ZWJlMDI3MDVmZmUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTcgMTM6MzE6MDQgMjAxMiAtMDcwMAorCisgICAgRml4IHBzdGF0IG1lbW9yeSBsZWFrIG9uIGhwdXggMTFpCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCAwODA1NDIwODEzZGUxNTZjN2ZjNTE0MjUzNGZiNDIwYTBmY2MzNTcyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gU2VwIDE3IDEzOjI4OjU5IDIwMTIgLTA3MDAKKworICAgIGZpeGVzIEFUIGNvZGUgb24gaHB1eCAxMWkKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGJkYjNiMTQ2MzgwZGIxMzE2Y2FiZDU4YjcwNDQzNmU3ZWVjZGQ5ZjUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBTZXAgMTcgMTM6Mjg6NTAgMjAxMiAtMDcwMAorCisgICAgZml4ZXMgQVQgY29kZSBvbiBocHV4IDExaQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgZTkzNmNmODEwYTQ3Mzc5MTU2ZDkxM2E3MTRlMzgxNjE4MWEwZDNkYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAxNyAxMzoyNToyMCAyMDEyIC0wNzAwCisKKyAgICBmaXhlcyBkaXNBdmFpbCBvbiBGcmVlQlNEIHVmcworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNjA4YWI1Nzg4N2U1NTY2ZTYzNTA5YTNmN2U1ZDBhM2UyODkyZjRhNworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIFNlcCAxNyAxMzoyNTowMiAyMDEyIC0wNzAwCisKKyAgICBmaXhlcyBkaXNBdmFpbCBvbiBGcmVlQlNEIHVmcworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMi5yYzEgLT4gVjUuNy4yLnJjMgorCitjb21taXQgMDdmOTE0NTY0ZTA5NzIyNGQ2Nzc1MTVjMmY1ZmQxZjNjMGM5ZWI0MgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IFNlcCAxIDA5OjU0OjQyIDIwMTIgLTA3MDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS03LXBhdGNoZXMKKworY29tbWl0IGFlZTIxN2MwN2VhOWYzNGEzMjI2OGU5NjZjN2VjZWYwMzZlYzRhOTYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBTZXAgMSAwOTo1NDozOCAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yLnJjMgorCitjb21taXQgMTE5YjBkM2NmMTJjOTdjYTNjNzRkNmQxZTcyMzE5NjcwYTgzNzhhYQorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IFNlcCAxIDA5OjUxOjA4IDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDM1NjA0NzM6IGZyb20gZmVubmVyOiBIYW5kbGUgVGltZVRpY2tzIHdoZW4gcHJldHR5LXByaW50aW5nIE9JRAorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgYzk0YzYyZWEwZWRjZWJiZmJiNzNmYWI2ZWNkZGM2NzlmNzY5NGRhYgorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IFNlcCAxIDA5OjUxOjA4IDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDM1NjA0NzM6IGZyb20gZmVubmVyOiBIYW5kbGUgVGltZVRpY2tzIHdoZW4gcHJldHR5LXByaW50aW5nIE9JRAorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNmQ3ZjllYjBkZWNkYjk2ODI4MzZmZmQwM2YxOTc0MjE5N2FkODdkYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyAyOSAyMToxNDo0NiAyMDEyICswMjAwCisKKyAgICBGaXggcG9zc2libGUgbWVtb3J5IG92ZXJydW4gaW4gZnN5c19nZXRmc3N0YXRzLmMgKHBhdGNoIDM1NTk0MTcpCisKK2NvbW1pdCBmMjM1ZWU4YjMyZWVkMWRlM2YxZTQyMDJlZjQ1YjYzNzdmYmNlMTYzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDI5IDIxOjA3OjE0IDIwMTIgKzAyMDAKKworICAgIEZpeCBmb3IgaHJTdG9yYWdlVGFibGUgb24gQUlYIChidWcgMzU1NzE1OSkKKworY29tbWl0IDc4Y2M5ZDVjY2Q4NmIxNzA2MjJhYWM1NDNjMzQ1YzAyMDc1NWM3OGEKK0F1dGhvcjogc3RoZW4gPHN0aGVuMjM5MzRAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDI4IDE3OjE4OjA5IDIwMTIgLTA3MDAKKworICAgIGFkZCBtaXNzaW5nIHByb2Nlc3Mgc3RhdHVzIHZhbHVlcyB1bmRlciBuZXQvb3Blbi1ic2QKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDRlZjlkY2Q4MGIwYmRhMWUxOGI3ZTM0OWEwOGJjMGYyMmE3ZTc1NWUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMjggMTc6MTY6MzcgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogT3BlbkJTRDogUEFUQ0ggMzU1OTQxNDogZnJvbSBuYmE6IHN1cHBvcnQgT3BlbkJTRCBmb3IgaHJfc3dpbnN0CisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCAwYjU2OWZjY2VhOTQxNGM1MGNmZDZiMGU4M2UxODMxYmExMjkxY2UyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDI4IDE3OjE0OjQ1IDIwMTIgLTA3MDAKKworICAgIGFkZCBtaXNzaW5nIHByb2Nlc3Mgc3RhdHVzIHZhbHVlcyB1bmRlciBuZXQvb3Blbi1ic2QKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDFkM2M3YmU3ZmE3YTM4ZmQzZmMzOTcyMGJiNWNiNzBmOGJkNzExNjAKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMjggMTc6MTQ6MjIgMjAxMiAtMDcwMAorCisgICAgYWRkIG1pc3NpbmcgcHJvY2VzcyBzdGF0dXMgdmFsdWVzIHVuZGVyIG5ldC9vcGVuLWJzZAorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgZmY0Mzg0MzNhY2EwOTZiYmJlYTI5ZGQzMGRmZDVjNTUyMzc2MWE3MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyOCAxNjo1MDo0NiAyMDEyIC0wNzAwCisKKyAgICBGaXggcmVhbCBtZW1vcnkgcmVwb3J0aW5nIG9uIEJTRCBzeXN0ZW1zCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBjNDI5YTRmMzk4NGRhZTc5MWUzMDdkZjcwMjI1MWY5NmVmMDQ3ZDg4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDI4IDE2OjQ5OjEwIDIwMTIgLTA3MDAKKworICAgIEZpeCByZWFsIG1lbW9yeSByZXBvcnRpbmcgb24gQlNEIHN5c3RlbXMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDQxZDk4MGMwMTU1NjRkYjdmMjJmNzYzMTkwZjYxYWMwZDU2YmEzYjIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgMjQgMTQ6MzU6NTMgMjAxMiArMDAwMAorCisgICAgV2luZG93czogVW5icmVhayBETEwgYnVpbGQKKworY29tbWl0IDI3OTM5MjNiZmUyYjAyNmZjYWVhZjUzOGFlNTAzZjEwNWNiMzE1YmMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMyAyMjoyNjoyMCAyMDExICswMDAwCisKKyAgICBhZGRlZCBtaXNzaW5nIFRMU1RDUCBtZW50aW9uIGluIHRoZSBoZWxwIG91dHB1dAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMi5wcmUzIC0+IFY1LjcuMi5yYzEKKworY29tbWl0IDllYzVjNTk5NzgwMjUxZGNkMzE1NWY5YWM5ODA2ZWNlN2VkNmJhMjIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBdWcgMTEgMTI6MDA6MzcgMjAxMiAtMDcwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNy4yLnJjMQorCitjb21taXQgMzM1OGI2NWIxMWUyYzBlZTcxMmY2MDlmMDIwNzEyNjBmNzVmOWJiMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEF1ZyAxMSAxMTozOTozOCAyMDEyIC0wNzAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNy1wYXRjaGVzCisKK2NvbW1pdCA0ODQ5YTQzMGRhYWZiOTFjN2E2MWJmYmJjMTdmOTI5OWU1OGZjZjY0CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgQXVnIDExIDExOjM5OjM1IDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIucmMxCisKK2NvbW1pdCAxYmMyNjg0MjhlODI5ODUyYzllZjBhNzk1NTJjYTQwNDVhZGQyOGEzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMjI6NDI6NTIgMjAxMiArMDIwMAorCisgICAgTWFrZSBzdXJlIHdlIGhhdmUgYW4gaW5pdGlhbGl6ZWQga3ZtIHN0cnVjdHVyZSB3aGVuIHF1ZXJ5aW5nIHByb2MgdGFibGUgb24gQlNELgorCitjb21taXQgN2U2N2M1MDM4YjZhYWJmZGExOTM5ZWE4MWQ5NDBiMjQwMDBjZmI1MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgOSAxNDoyNzowOCAyMDEyICswMjAwCisKKyAgICBSZW1vdmVkIGVycm9yIG1lc3NhZ2Ugd2hlbiBmaWxlIGNhbm5vdCBiZSBvcGVuZWQuCisgICAgCisgICAgVGhpcyBzaG91bGQgYmUgaGFuZGxlZCBieSBjYWxsZXIsIG5vdCBpbiB0aGUgZnVuY3Rpb24uIFRoZXJlIGlzIG9ubHkgb25lIGNhbGxlciBub3csIHVkcF9lbmRwb2ludF9saW51eC5jLgorCitjb21taXQgNTliMGRlMGI4ZmE3M2ViNDAzMDA2Y2VlNzVmZjg2NTFlMTU4NWUyOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgOSAxNDoyMzoxNCAyMDEyICswMjAwCisKKyAgICBGaXggY29tcGlsYXRpb24gZXJyb3JzIGludHJvZHVjZWQgYnkgY29tbWl0IGY5NWRmNjM0MWIxZDA2MjQ5NDQzZTUxNmI1OWE0M2NkZmEzZDQ3NzcuCisgICAgCisgICAgVGhpcyBpcyBlbWJhcmFzc2luZywgSSBjb21waWxlZCB0aGUgc291cmNlcyB3aXRob3V0IC0tZW5hYmxlLWlwdjYuIFNvcnJ5IGZvciBpbmNvbnZlbmllbmNlLgorCitjb21taXQgNWQ3ZWRhZGQ0NzYxNjgwYjY2ZDFkZjNiZmRlN2NhNWIxNmNhNWExNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgOSAxMjo0NjozNSAyMDEyICswMjAwCisKKyAgICBGaXggY29tcGlsYXRpb24gZXJyb3IgaW50cm9kdWNlZCBieSBjb21taXQgZjk1ZGY2MzQxYjFkMDYyNDk0NDNlNTE2YjU5YTQzY2RmYTNkNDc3Ny4KKworY29tbWl0IDQzYzk3YmJhYWYyMTFmNGM3ZjdjNzA0Y2ZjYjkwMWRmYmY4MzQ4NzQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTI6MzA6MDkgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IExvd2VyZWQgc2V2ZXJpdHkgb2YgJ0Vycm9yIGV4cGFuZGluZyBYWFggdG8gNjRiaXRzJyBtZXNzYWdlcy4KKworY29tbWl0IDhlNWNmMmE3MmE0NmNkNDgzZDIyZTYyOTBhNmM4YzRjMjZhZjZhZDIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDkgMTI6MjU6NDggMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogcmVtb3ZlZCBjb3VudGVyLTY0IGVycm9yIG1lc3NhZ2VzLgorICAgIAorICAgIFRoZXNlIG1lc3NhZ2VzIGRvIG5vdCBzYXkgZW55dGhpbmcgdXNlZnVsLCBjYWxsZXIgc2hvdWxkIGNoZWNrIHRoZWlyIHJldHVybiB2YWx1ZSBhbmQgcmVwb3J0IGl0LgorCitjb21taXQgZjk1ZGY2MzQxYjFkMDYyNDk0NDNlNTE2YjU5YTQzY2RmYTNkNDc3NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgOSAxMjowMToyNSAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogcmVtb3ZlZCBlcnJvciBsb2cgbWVzc2FnZXMgd2hlbiBJUHY2IGlzIGRpc2FibGVkLgorCitjb21taXQgMThkYWNlOGU0YTM2YjA4M2Q2ZWY3MTc3MzVjNjNlN2Y0MDIyNGRiOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgOSAxMDo0MTo0NSAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBhZGRlZCBDVkZTIChDZW50cmFWaXNpb24gRmlsZSBTeXN0ZW0pIHRvIGhyU3RvcmFnZVRhYmxlIGFuZCBockZTVGFibGUuCisKK2NvbW1pdCA5MGY0MzFiNDVkMjE1MDY0MjdiYzBiZDFkNGVlNjllMGI4ZWEzMGJjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDggMjM6MTA6NTAgMjAxMiArMDIwMAorCisgICAgVXBkYXRlIHRvIGN1cnJlbnQgTUlCIHZlcnNpb25zCisKK2NvbW1pdCA5ZTdhMGI5ZTU4MGQzYjFlYTYxOThhNzQxNGM4MTZjMjNiMTIzYjEwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDggMjI6Mjc6MTYgMjAxMiArMDIwMAorCisgICAgVXNlIGEgd3JraW5nIGF3ayBmb3IgU29sYXJpcworCitjb21taXQgMGUzOTIyYWUyMWU0YjdlYzUzODg2N2FmZDIyY2U3NGQ3NDFlMGYxYworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyA4IDIyOjE3OjM0IDIwMTIgKzAyMDAKKworICAgIGZpeCBwcm90b3R5cGUgZm9yIGtsb29rdXAKKworY29tbWl0IGEyMjEwOTcxMWE2ZDFlYzE0YjZhM2YxY2FjMjIxZDcwMjYzZjEwNGEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgOCAyMjowODoxMyAyMDEyICswMjAwCisKKyAgICBmaXggcHJvdG90eXBlcyBmb3Iga2xvb2t1cAorCitjb21taXQgYWMwNjI5NzJjNTg1MTc0Zjk1ZDdiYTg3YWE1ZWM1NGM0MmZkZWM1NQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyA4IDIyOjAwOjI2IDIwMTIgKzAyMDAKKworICAgIGZpeCBwcm90b3R5cGVzIGZvciBrbG9va3VwCisKK2NvbW1pdCA3Y2RkOGViZWY5NTA3ZmU3NjYxMDdjYTlmZWUwNTRjNDRjYzBiYWM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gQXVnIDUgMDg6MTM6NTkgMjAxMiArMDAwMAorCisgICAgTWFrZSBzbm1wX2FsYXJtX3Jlc2V0KCkgdXNlIHRoZSBtb25vdG9uaWMgY2xvY2suIEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0IDM3YmE3ZTIuCisKK2NvbW1pdCAwMjNmNjFlYTc4M2JmY2M1M2ZlOTBhYTY2NTQ1YzVhZWEyZGI4MDYxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgQXVnIDggMTY6MjY6NTQgMjAxMiArMDAwMAorCisgICAgRml4IGJ1aWxkIGJyZWFrYWdlIGNhdXNlZCBieSBjb21taXQgMDI4NjE0ZWNmMmQ2NzM5ODY5OWRjM2JkNzg0MDI5ZjMzNjBmMmUxMworCitjb21taXQgY2Q4MjA5NDlhMTQ5MWFmMTAzYTg1NTVmNmJkYWUwNDg1MWYzZDI4NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEF1ZyA4IDE2OjE2OjQzIDIwMTIgKzAwMDAKKworICAgIFVuZG8gYnVpbGQgYnJlYWthZ2UgY2F1c2VkIGJ5IGNvbW1pdCAzN2JhN2UyMGE1MjFmYmYwNDU4YTBjNzdlZWEyZTVlMzZiZDdlYzBhCisKK2NvbW1pdCBmMTQzMDA4Y2NjNTdlYTEwY2JiODhhYjM1NTQ4MjJiMTdiNjI3MGFhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gQXVnIDUgMDg6NDU6NDIgMjAxMiArMDAwMAorCisgICAgTWFrZSBnZXRfZXhlY19vdXRwdXQoKSB3b3JrIG9uIGJpZyBlbmRpYW4gc3lzdGVtcy4KKyAgICAKKyAgICBVbmRvIEFQSSBicmVha2FnZSBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA3Mzc0Yjg0ZmU0YzJlZjg0OTdmZGUzZGFlODBhNjlhYTg5ZWJhMTljLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMi5wcmUyIC0+IFY1LjcuMi5wcmUzCisKK2NvbW1pdCA4NDMyMmUwZGMyYTg5NzQ2NDY1NDJkOTg4MWJjMDFiNDNkYzNhMTJkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDE2OjI0OjA3IDIwMTIgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMi5wcmUzCisKK2NvbW1pdCA4ZmVjN2E4MWQ2MTMzYTVmMDVlZDM0YTVhZjk4MDZhZjVkMTI4MjIzCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDE1OjU3OjU2IDIwMTIgLTA3MDAKKworICAgIGZpeCB0aGUgYXNzZXJ0IGNoZWNrIHRvIGFsbG93IGZvciBzb21lIGtub3duIGFzc2VydHMKKworY29tbWl0IGRmZGU2ZDJkZGQ1MTljOGMyYWUxNzg4Nzc0ZmRmOTBkOGJlYTAyYjEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKdWwgMzAgMTA6MDg6MjQgMjAxMiAtMDcwMAorCisgICAgaW5jbHVkZSBlcnJuby5oIGFuZCBkb24ndCB1c2UgY29udGludWUgb3V0c2lkZSBhIGxvb3AKKworY29tbWl0IDdjZmZlMDIyMmNkOThhMjFlMzBmNDRjM2RmOWYwZDkwYmYwOTZmZTkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTQ6MTM6NTAgMjAxMiAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMi5wcmUzCisKK2NvbW1pdCAyMmFmN2ZkNDY3NzZhOGRiMjM2MmU4OGFjYjFiNjliMTY1YzAzNGI2CitBdXRob3I6IGJsZW50eiA8YmxlbnR6QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxMzo1Mjo0MCAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBhaXg6IFBBVENIIDM0MDM0MzM6IGZyb20gYmxlbnR6OiBJc3N1ZXMgd2l0aCBoclNXUnVuTmFtZSBhbmQgUGFyYW1ldGVycyBvbiBBSVgKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDUxNmI5ZjgyNzViOGRiMDNjZGM0MTA3OGU2NWMyMTcwMzA5YTNmOGIKK0F1dGhvcjogSnVsaWVuIFBpbm9uIDxqcGlub25AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDMxIDEzOjI1OjMxIDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IHBlcmw6IFBBVENIIDM0MTI5Mzk6IGZyb20ganBpbm9uOiBSZXBhaXIgdGttaWIKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDhmMjMwZjQwMWM2NGQ4MjI4ODNhYzQ0NDYyNGEyYzJmZDcxMjhkOGUKK0F1dGhvcjogSGFyc2hhIFNoaXZhbm5hIDxuYWFudWhzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxMzoyMjoxMSAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTUyNzQ1OiBmcm9tIG5hYW51aHM6IGZpeCB0byBzdXBwb3J0IDMyIGNoYXJzIGZvciBWQUNNIG5hbWVzIGFzIHBlciBSRkMtMjU3NQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgMzQwMDhkMzJhZWY0M2Q4YmJlMTAwMGZiOWJmOTQ2NDJjMDUxNGY2ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxMzoyMDozMSAyMDEyIC0wNzAwCisKKyAgICBmaXggdGhlIGFnZW50eCBwaW5nIHBhdGNoIHNvIGl0IHdvcmtzIHdpdGggdGhlIG5ld2VyIGFsYXJtIHN0cnVjdHVyZSBuYW1lcworCitjb21taXQgOTYyNjc2Mzk0ZDNmZTU1N2VhZDkxMDU3YjRkNzgwMjI2ZGMwZDZiMworQXV0aG9yOiBNaWpvIFNhZnJhZGluIDxtaWpvc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTI6NDg6MDEgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDM0MTQwNTE6IGZyb20gbWlqb3M6IHNubXAtYnJpZGdlLW1pYjogZml4IGZvciBkb3QxZEJhc2VUYWJsZQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgMzdiYTdlMjBhNTIxZmJmMDQ1OGEwYzc3ZWVhMmU1ZTM2YmQ3ZWMwYQorQXV0aG9yOiBWaW5jZW50IEJlcm5hdCA8dmJlcm5hdEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTI6Mjc6MjggMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDM0ODE2ODY6IGZyb20gdmJlcm5hdDogRG9udCBwaW5nIG1hc3RlciBhZ2VudCB1bmxlc3MgdGhlcmUgaXMgbm8gaW5jb21pbmcgdHJhZmZpYworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgMmJlNWZlYWRiMDU0MDg0NmUwZTNhZGEyN2VmYjk3ODk0YTRjYmQ1MgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAwNzoyOToxNyAyMDEyIC0wNzAwCisKKyAgICBhZGRlZCBhIGRhcndpbiAxMiB2ZXJzaW9uCisKK2NvbW1pdCAxZjliY2QyMWU3YzJkNWVmZmI2MmFhMDFiN2I4N2U0M2RjODYyMTRjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAzMSAxNDo0MzoyNyAyMDEyICswMjAwCisKKyAgICBGaXhlZCBTQ1RQLU1JQjo6c2N0cEFzc29jUHJpbVByb2Nlc3MsIHRoZSBsaXN0IG9mIHByb2Nlc3NlcyB3YXMgbm90IGluaXRpYWxpemVkLgorCitjb21taXQgNDhiZTVlODlhYTA0YWRiMGRmN2UwOTRiMmZlNDYzMDE1NDI5ZmM5OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMzEgMTM6NDg6MzEgMjAxMiArMDIwMAorCisgICAgQWRkZWQgbG9nIG1lc3NhZ2Ugd2hlbiBpcFRhYmxlIG1pc3NlcyBzb21lIGludGVyZmFjZXMuCisKK2NvbW1pdCA3NTIzZjBmMDFiYTRkYjY1YWMxNjQ3YTIzMjI4Y2YwNmMwYjcyYTAzCitBdXRob3I6IE1hcml1c3ogQ2VpZXIgPG1jZWllckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKdWwgMzAgMTA6MTk6MzMgMjAxMiAtMDcwMAorCisgICAgQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzUzNjY5MjogZnJvbSBtY2VpZXI6IGNyZWF0ZSBhIHVuaXQgdGVzdCBmb3IgcmVhZF9jb25maWcgQVBJcworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgYzA3YjhkOWIzNzcwYjYxNWM4ZTE2MmRiZGY3NjQzODA1ZjM3MmQ3NQorQXV0aG9yOiBNYXJpdXN6IENlaWVyIDxtY2VpZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDMwIDEwOjE4OjQyIDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDM1MzY2OTI6IGZyb20gbWNlaWVyOiBGaXggZm9yIGNhbGxiYWNrIGNhbGxpbmcgd2hlbiB1bnJlZ2lzdGVyaW5nIGNvbmZpZyBoYW5kbGVyCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCA1YzI0MjRmMDdkODVjMGM0Zjc5ZDZjNWZhZjY0ZDdmM2VlODYxNzI2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDMwIDEwOjA4OjQyIDIwMTIgLTA3MDAKKworICAgIGRvbid0IGR1cGxpY2F0ZSBzZW5kX2VudGVycHJpc2VfdHJhcF92YXJzIGRlZgorCitjb21taXQgNzM3NGI4NGZlNGMyZWY4NDk3ZmRlM2RhZTgwYTY5YWE4OWViYTE5YworQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDMwIDA5OjQxOjE3IDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzODM5NzA6IGZyb20geWFiZXJhdW5leWE6IEZpeCBjb21waWxlIGVycm9yIG9uIEZyZWVCU0QgOS54L1BPU0lYaWZ5IGF1dG9fbmxpc3QsIGV0YworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgNjcwZDk2ZTc4NjU5MGZkZDMwYTE2YTMzMDBjMGVkNWJkNmU1MzIxNAorQXV0aG9yOiBNYXJrIFJ1c2sgPHVzZXJfaWQ9MzQ5ODk1QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEp1bCAyOSAyMzozOToyMiAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0ggMzQyNDkzMzogZnJvbSB1c2VyX2lkPTM0OTg5NTogVXNlIE5FVFNOTVBfRFNfQUdFTlRfQUdFTlRYX1RJTUVPVVQgZm9yIHRoZSBkZWZhdWx0IHRpbWVvdXQKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGYxZWFlYzE1ZWY2MDNiOGNlNTQyOTMyZmZkYmQ4Nzg4YzNkMWFjYzUKK0F1dGhvcjogRGFuaWVsIEhvYmkgPGhvYmlkQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEp1bCAyOSAyMzoyODowMSAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0ggMzUzMDc5NDogZnJvbSBob2JpZDogcGFzcy9wYXNzX3BlcnNpc3Q6IHVucmVnaXN0ZXIgTUlCIHdpdGggY29ycmVjdCBwcmlvcml0eQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgZDc4M2FkOTkwZTkxNGMwZWUxYzk4ZDBhOTNhNDI5ZWIyYjJmNDk5NworQXV0aG9yOiBEb3VnIE1hbmxleSA8dGVra2FtYW5lbmRsZXNzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEp1bCAyOSAyMzoyNTo0MCAyMDEyIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzNTI2NTk5OiBmcm9tIHRla2thbWFuZW5kbGVzczogQSBidWdneSBTTk1QdjMgYWdlbnQgY2FuIGNhdXNlIGEgbmV0LXNubXAgY2xpZW50IHRvIGhhbmcKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGU5ODUxNTIwYzE4ZDdlZDE3MjQwNGEzN2RjMGRjN2ExMzZiZmFlZGQKK0F1dGhvcjogRGFuaWVsIEV2ZXJzIDxkYW5pZWwtZXZlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gSnVsIDI5IDIzOjE0OjE5IDIwMTIgLTA3MDAKKworICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDM1NDgyNTc6IGZyb20gZGFuaWVsLWV2ZXJzOiBmaXggZm9yIHJlY3Vyc2l2ZSBwdGhyZWFkIG11dGV4ZXMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGU3YTM3Njc4YzJiNzM1OWFmZDQ0YTMwN2U4MjRjMWY3ZDdhMGM4N2QKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKdWwgMjkgMjE6MzU6MzUgMjAxMiAtMDcwMAorCisgICAgTkVXUzogb3N4OiBwYXRjaDogMzUxNDA0OSBmcm9tIHR3b2JpdHMtZ2l0aHViOiBmaXggY29tcGlsYXRpb24gb24gZGFyd2luMTEKKworY29tbWl0IDEyMjE0MjZhYmFkMTViOWIyZmNlZThmMWUzMmFiNTJlZjI2OTI5NTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVsIDI3IDE0OjE4OjI0IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IFBBVENIRVM6IDM1Mjk1NDE6IERvbid0IHJlZmVyIHRvIGludGVybmFsICdteScgdmFyaWFibGVzIGZyb20gZXh0ZXJuYWwgc2NyaXB0cworICAgIAorICAgIEZpeCBwcm92aWRlZCBieSBMZXp6IEdpbGVzCisKK2NvbW1pdCA5YzA2YzIyMDJkYzA1NjcwM2M4MDk1OWEwZWNhOWE3MTY4NGMyOGRlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1bCAyNyAxMzoyOTozMCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBMaW51eDogUEFUQ0hFUzogMzUzNjQyMDogRW5zdXJlIHNuZC9yY3YgbWVtb3J5IGJ1ZmZlcnMgYXJlIHN1aXRhYmx5IGFsaWduZWQKKyAgICAKKyAgICBQYXRjaCBwcm92aWRlZCBieSBUeWxlciBPbG1zdGVhZAorCitjb21taXQgODliODJjNTVmOWVmZDJlOGFiOGM2ZDY1ZmE1NjdjNWIxZmFjMTg0MworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdWwgMjcgMTM6MTQ6MDcgMjAxMiArMDEwMAorCisgICAgIklkbGUiIHByb2Nlc3NlcyAoaS5lLiBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBjcmVhdGVkKSBhcmUgcHJvYmFibHkKKyAgICBiZXN0IHJlZ2FyZGVkIGFzICJ3YWl0aW5nIGZvciBhbiBldmVudCIgdG8gYmVjb21lIHJ1bm5hYmxlIC0gaS5lLiAnbm90UnVubmFibGUoMyknCisgICAgVGhhdCBldmVudCBiZWluZyB0aGUgY29tcGxldGlvbiBvZiB0aGUgY3JlYXRpb24gcHJvY2Vzcy4KKyAgICAgICBJdCdzIGFyZ3VhYmxlIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIHN0cmljdGx5ICJsb2FkZWQiLCBidXQKKyAgICB0aGlzIGZlZWxzIGxlc3MgbWlzbGVhZGluZyB0aGFuIHJlcG9ydGluZyB0aGVtIGFzICdpbnZhbGlkKDQpJworCitjb21taXQgNmU3ODBhNWJmMGQ2NGJmNDdkZmJmNDc5YWU3ZjU2YzEwZmY4MTY2ZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdWwgMjcgMTI6NTc6NTQgMjAxMiArMDEwMAorCisgICAgQ2xhcmlmeSBtZWFuaW5nIG9mIGhyU1dSdW5TdGF0dXMgJ2ludmFsaWQoNCknCisgICAgRW5zdXJlIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBhbHRlcm5hdGl2ZXMgZG9uJ3QgY29uZnVzZSBjb2RlIHN5bnRheAorCitjb21taXQgOTliMzUzZjcyNTNhNWJiMzhiODZmMzFjMjcwOGUxNmIzNGE0NmNlNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdWwgMjcgMTI6NTA6NTEgMjAxMiArMDEwMAorCisgICAgQWRkaXRpb25hbCBwYXRjaCBmcm9tIFBhdGNoIElEICMzNTQzMDAwCisKK2NvbW1pdCBkMGUwM2ZlNGEyMzY5NDVkYWY0MmFmN2E0NzA5NGU2ODZmOWJkYjllCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1bCAyNyAxMjo0MTowMiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzU0MzAwMDogVmFyaW91cyBmaXhlcyB0byBSbW9uIGNvZGUKKyAgICBTdXBwbGllZCBieSBQYXRyaWNrIFJpdHRlcgorCitjb21taXQgNjYzMmEyYjliOWZhZDFhMGIwZDZiYWVkZjJhMmIzOTFmNWQ0ZTkxNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTQ6Mzk6NDIgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogcGVybDogQlVHOiAzNTE3MDMwOiBFbnN1cmUgbGFyZ2UgdGFibGVzIGFyZSB3YWxrZWQgcHJvcGVybHkKKworY29tbWl0IGI4ZDE2NjA0ZGJiMmY4MGViZTI4NTIzMjJhYTgzMzYxYTAzMjM3OTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDE0OjE5OjA3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IGFwcHM6IEJVRzogMzUyOTc2ODogQmUgbW9yZSBjYXJlZnVsIHdoZW4gc3RyaXBwaW5nIG9mZiBudW1lcmljIHN1ZmZpeGVzCisKK2NvbW1pdCAwYjNhZDQ0ZWM0YzFiOWY0MWRjM2VmNzBlNmEzOGE1M2VmMjY4YWRlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IEp1bCAyNiAxMzozNDoxMCAyMDEyICswMTAwCisKKyAgICBGaXggY29tbWVudHMgZGVzY3JpYmluZyBGcmVlQlNEIHJlbGF0aW9uc2hpcHMKKworY29tbWl0IDhjZjdhODkxODdhOTk2ZmFmZjA0MDQxNDk4NmZmYTVkNzhkNTY4M2UKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDI2IDEzOjIxOjU2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IGJ1aWxkOiBCVUc6IDM1MzIyMzQ6IEZpeCB0eXBvIGluIGxpYnRvb2wgc2NyaXB0CisgICAgKGFkZHJlc3NlZCBwcm9wZXJseSBpbiBsaWJ0b29sIDIuNC4yKQorCitjb21taXQgNDI1OGQ4NTJjYTdiNmFlYWU5M2FkNzMwNjRkNDNhYTgwN2ViNjEwNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTM6MTY6MjAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogZG9jOiBCVUc6IDM1MzUyNjk6IERvY3VtZW50IHVzZSBvZiBbc25tcF0gZm9yIGNsaWVudC1zaWRlIHRvb2xzLgorCitjb21taXQgMjZlZDQwY2JkMDdjZjI3MWE5Y2ZjNDUxN2Q5NjQ3NzQ3MTJhZDc3YworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTI6NTc6NTYgMjAxMiArMDEwMAorCisgICAgU3VwcG9ydCBsb2NhbCByb2xsdXAgb2YgcGF0Y2hlcyB3aXRob3V0IGZpcnN0IHN5bmNocm9uaXNpbmcgd2l0aCBleHRlbmFsIHJlcG8uCisKK2NvbW1pdCA5MDRjNDQyZDYwYzViOTlhYWNkN2Y2MDMwN2MyODY4NGVmYWU4NTRjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IEp1bCAyNiAxMjo1MzozNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEJVRzogMzUzNTk2NzogRml4IG1lbW9yeSBsZWFrIC0gc25tcF97c2Vzc199ZXJyb3IgYWxsb2NhdGVzIHRoZSBvdXRwdXQgYnVmZmVyCisKK2NvbW1pdCA1OTdlY2RhNjhlZTJiNTgwYjY2NjI4ODk3N2IwNGFhMTMzMjA3NTE3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IEp1bCAyNiAxMjoxNzoxNCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM1NDA2MjE6IGRpc3Q6IEFkZCBtaXNzaW5nIFByb3ZpZGVzOiB0byBuZXQtc25tcC1wZXJsbW9kcyBSUE0gc3BlYworCitjb21taXQgNDNkNWJhMjI0YzNmMjlmZDhlN2ZkMWQwNjBhMTcwNDVhYWQ3ZWZmMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTE6MjU6NDMgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogcGVybDogQlVHOiAzNTQxMDEyOiBGaXggaGFuZGxpbmcgb2YgZ2V0dGFibGUgY29sdW1ucworCitjb21taXQgYmMyOTNhY2FkOGQzNDg3Y2RkZWYzYzcwY2VhNzQzNjhmMzRkOTM1NAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBKdWwgMjYgMTE6MjA6MjAgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzU0Mzg2NDogUmVtb3ZlIGV4dHJhbmVvdXMgZnVuY3Rpb24gdHlwZQorICAgIChhbmQgZml4IGEgcmVsYXRlZCB0eXBvKQorCitjb21taXQgMDI4NjE0ZWNmMmQ2NzM5ODY5OWRjM2JkNzg0MDI5ZjMzNjBmMmUxMworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMjQgMTU6Mzc6MTYgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHNubXBkIGV4aXRpbmcgc2hvcnRseSBhZnRlciBzdGFydCBkdWUgdG8gaW5jb21pbmcgc2lnbmFsLgorCitjb21taXQgNGQzODg5NWY0NTlhMWRmMjRmNjhjNGE2MGU0Y2FmNmE3NzhkOGMxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMjcgMDk6MzU6NDQgMjAxMiAtMDQwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHJlbW92ZWQgbGltaXQgb2YgJ2V4ZWMnIGFuZCAnc2gnIGVudHJpZXMgaW4gc25tcGQuY29uZgorICAgIAorICAgIFVzZSBkeW5hbWljIChyZSlhbGxvY2F0aW9uIGluc3RlYWQuCisKK2NvbW1pdCBkY2VlYWNjOTk4ZmUyMzIyODgyZTdlZWRlYzBhNzFhNzlkYzQ5NGFiCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEp1bCAyNCAwOTowMDoyMyAyMDEyICswMTAwCisKKyAgICBEb24ndCBiZSBzdXJwcmlzZWQgaWYgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gdmFyaW91cyBmaWxlcworCitjb21taXQgNTZjM2MwNzgzMzZjYmYxYmYwOWZkMWIwMTA3OGE5MDMwNzE3NjEzZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIEp1bCAxMSAwODo0NzoxMyAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHIDM1NDIzMDc6IENvcnJlY3Qgc3lzT1JJRCBmb3Igc25tcE1QRFN0YXRzLiBUaGFua3MgdG8gRGF2ZSBWdWNpY2ggZm9yIHJlcG9ydGluZyB0aGlzLgorCitjb21taXQgNjFlY2VkYzA4M2Y4ODFkYjhhOWE1MGQ1MGJkZWVkMzY2MjRlZDMwNworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIEp1bCAxMSAwMDoyMToyNyAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHIDM1NDIxODg6IENvcnJlY3Qgc3lzT1JEZXNjciBmb3Igc25tcFVzbU1JQi4gVGhhbmtzIHRvIERhdmUgVnVjaWNoIGZvciByZXBvcnRpbmcgdGhpcy4KKworY29tbWl0IDJmOWVkZTQxOWY0MGU4NDhhMjQyNTM4OTI4OGNhYzBlMjMzMWI5OTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgSnVsIDE5IDE3OjEwOjUyIDIwMTIgKzAxMDAKKworICAgIEZpeCBleGFtcGxlICdyc3luYycgY29tbWFuZCBmb3IgZnVsbCByZWxlYXNlcworCitjb21taXQgNmRkNzg4NGQ5OWU3NTZlMmYyMmI2ODg4MjNjZTFiMWQ1MjZhZDE2NgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBKdWwgMTggMTU6NTk6NTkgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yCiAKIGNvbW1pdCA5NzY2OTZhMTI4ZTU3YjUxMmJmN2FkNDAwZDAwMjM2OGI0YTlhODcxCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KQEAgLTUwLDEyICs0MDg0LDU0IEBACiAKICAgICBkb24ndCB1c2UgLS1yZWJhc2UKIAorY29tbWl0IGQ0YzE1NDk1OTNjZTJjMmNhZWI5OGU1ZjhhYmZkN2E1YWU1YTAyNzMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI3IDA5OjM1OjQ0IDIwMTIgLTA0MDAKKworICAgIENIQU5HRVM6IHNubXBkOiByZW1vdmVkIGxpbWl0IG9mICdleGVjJyBhbmQgJ3NoJyBlbnRyaWVzIGluIHNubXBkLmNvbmYKKyAgICAKKyAgICBVc2UgZHluYW1pYyAocmUpYWxsb2NhdGlvbiBpbnN0ZWFkLgorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMi5wcmUxIC0+IFY1LjcuMi5wcmUyCisKK2NvbW1pdCBmZmNlNDlmYjFhYjRhNzhkNGYyOTQ3YmUwNmQ2MjBmMTQyNDUyOGZkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVsIDExIDE3OjEyOjMxIDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIucHJlMgorCitjb21taXQgYmQ3YzcyOTcxODc4MThlNWVlZjczMjc2NjdlNGE4MWY2YzlmYzg5YgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAxMSAxNDo1NTozOCAyMDEyIC0wNzAwCisKKyAgICBkb24ndCB1c2UgLS1yZWJhc2UKKworY29tbWl0IGE3MTUzMTJlMmNlNDlkNGRhOTNmYzE0MGNjMzlmYzEwMGIwYjc5NzgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdWwgMTEgMTU6NDc6MjIgMjAxMiAtMDcwMAorCisgICAgdXBkYXRlZCBmb3IgdGhlIHByZXZpb3VzIDUuNy4yLnByZTEgcmVsZWFzZQorCiBjb21taXQgMTcyNzc2ODliNjI5ZjQ1ODZkNWQ3MTRkODdjZTZiYzExZjg4NzY2OAogQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgV2VkIEp1bCAxMSAxNDo1NTozOCAyMDEyIC0wNzAwCiAKICAgICBkb24ndCB1c2UgLS1yZWJhc2UKIAorY29tbWl0IDY3ODZmZmM3NmZhY2Y3NDZhZmI2YWYyNTE1OGY3OTQwNjU2YWIzOWMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKdWwgMTEgMDg6NDc6MTMgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRyAzNTQyMzA3OiBDb3JyZWN0IHN5c09SSUQgZm9yIHNubXBNUERTdGF0cy4gVGhhbmtzIHRvIERhdmUgVnVjaWNoIGZvciByZXBvcnRpbmcgdGhpcy4KKworY29tbWl0IGYwZTM1ZDYxZjkyNThkYzYwOGRhOWJmNzE4YWYxNDU3YTg1OWZhMTkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKdWwgMTEgMDA6MjE6MjcgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRyAzNTQyMTg4OiBDb3JyZWN0IHN5c09SRGVzY3IgZm9yIHNubXBVc21NSUIuIFRoYW5rcyB0byBEYXZlIFZ1Y2ljaCBmb3IgcmVwb3J0aW5nIHRoaXMuCisKIGNvbW1pdCA1MjA2ZDI1ZDRjYjk0ZDRiMGRkMzMxYTVhNDExM2Q0ZDg3NzgyYzQyCiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBNb24gSnVsIDIgMTI6MTQ6MzkgMjAxMiAtMDcwMApAQCAtNzQsNiArNDE1MCwxNCBAQAogCiAgICAgYWZ0ZXIgcHVsbGluZyBhbGwgdGhlIGJyYW5jaGVzLCBzd2l0Y2ggYmFjayB0byB0aGUgaW5pdGlhbCBvbmUKIAorY29tbWl0IDgyNTk2YTY5ZjVjZTUzZDVhNmYwYWY0MjE1Yzk4ZDYxODRkYWI0ZDQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVuIDIyIDE0OjA0OjUwIDIwMTIgKzAxMDAKKworICAgIFVucGljayBtZXJnZSBjb25mbGljdC4KKyAgICAoTm90IHN1cmUgd2h5IHRoaXMgd2Fzbid0IGZsYWdnZWQgdXAgZWFybGllciAtIG9yIG1heWJlIEkganVzdCBtaXNzZWQgaXQhKQorICAgIChjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IGIwNWJkNzhmOWYyMzRiYjU3YTAwYjU0YzViZmIxZGUzMmEwOWY0YTQpCisKIGNvbW1pdCA2YTA3NWFlNDk0Yzc2YjgyZWVhOTYzMjdjZjUyNDJkZjA0ODc0M2RiCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgRnJpIEp1biAyMiAxNDoyMTowOCAyMDEyICswMTAwCkBAIC04NiwyNiArNDE3MCwzNyBAQAogCiAgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnJjMwogCi0KLWNvbW1pdCA1OTUzY2ZkODU1YjdhNTY1NjcyY2VmOTQyOTQ5NzE0MWM3ZDliZTEyCitjb21taXQgYjA1YmQ3OGY5ZjIzNGJiNTdhMDBiNTRjNWJmYjFkZTMyYTA5ZjRhNAogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIEZyaSBKdW4gMjIgMTQ6MDQ6NTAgMjAxMiArMDEwMAogCiAgICAgVW5waWNrIG1lcmdlIGNvbmZsaWN0LgogICAgIChOb3Qgc3VyZSB3aHkgdGhpcyB3YXNuJ3QgZmxhZ2dlZCB1cCBlYXJsaWVyIC0gb3IgbWF5YmUgSSBqdXN0IG1pc3NlZCBpdCEpCiAKLWNvbW1pdCBlNzJlMjA1ZmRjZWY3ODdlZjg0MGM4YzkyOGVkMjczNTFhNjk1NDRiCitjb21taXQgNGQxNTc0MmM3NTBhOTZhNGRiYjNkYTg3NDc0MWFlMTUyNDg5ZjhkNQogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIEZyaSBKdW4gMjIgMTM6NTg6MDcgMjAxMiArMDEwMAogCiAgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTYtcGF0Y2hlcwogCi1jb21taXQgZmVhYmVmM2U2Y2EzNWJjMGYxNDM0MWU0Y2Q2ZGM5YWZkMTk1NWJhNworY29tbWl0IGY2YjVlMzM3NmVkM2E4ZTllYWY3NGI3ZDY4MjJiM2E3NjU3NzJlZTgKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBGcmkgSnVuIDIyIDEzOjU3OjU2IDIwMTIgKzAxMDAKIAogICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucmMzCiAKK2NvbW1pdCA1Y2ZiMDgxMTEyN2E2NTNkZmYwZjRlNTNhZDYwMjllMjI5OGE2YzYyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1biAyMiAxMzoyODozNyAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNS1wYXRjaGVzCisKK2NvbW1pdCBlNzJlMjA1ZmRjZWY3ODdlZjg0MGM4YzkyOGVkMjczNTFhNjk1NDRiCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1biAyMiAxMzo1ODowNyAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNi1wYXRjaGVzCisKIGNvbW1pdCBmNzlhNTRmMjQ3MjUwOGIxNjdkOTc3ZjM2N2MzODY0YjU2MjFlODlkCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgRnJpIEp1biAyMiAxMzo0Mjo1MyAyMDEyICswMTAwCkBAIC0xNzEsNiArNDI2NiwzMCBAQAogCiAgICAgTW9yZSBwcmVjaXNlbHkgZGVzY3JpYmUgLWMgb3B0aW9uLgogCitjb21taXQgNDhjYzM5ZjFhYTBmYTZjZTk1NWVmNzZiMjVkYjhmOWRjYTA2YjgwZAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEp1biAyIDA5OjI3OjEwIDIwMTIgLTA3MDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMi5wcmUxCisKK2NvbW1pdCA4MTAxODVhZTBiMGNkMmFkNGQ0MjRhMWJhNzc1ZWY1Y2VhZjUwZjAzCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVuIDIgMDk6MjQ6MTkgMjAxMiAtMDcwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNy4yLnByZTEKKworY29tbWl0IDYyNzE0NzFlMDEyODJmMzY3NTcyNGVhZjEzNThjZWIwZTk1ZGRkNGUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwODozMjo0MCAyMDEyIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4yLnByZTEKKworY29tbWl0IGZjYjc4MmFhODg5MzEzNGM3NDE0YTkyNmQ5MjY4NTk0ZjcyNWI5MTUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdW4gMiAwODozMjoxOCAyMDEyIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjIucHJlMQorCiBjb21taXQgZTNiY2Q4N2M3MmZjZWE3NzA2ZTg2OGI1YWNlNzUyOTYwOTNmNzQ5NwogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFRodSBNYXkgMzEgMTQ6MDk6NDIgMjAxMiArMDEwMApAQCAtMTk1LDI1ICs0MzE0LDMwIEBACiAKICAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucmMyCiAKLQotY29tbWl0IDUxMDlhZTc3YjZjMWQ1NDlkOTFlMzI4MjdmNGEyY2FjMDUzODNkNTgKK2NvbW1pdCBkOWExNTQ0NWFhNzRmNTMxNmJmYzcxMWMxNTU4NDY3ODcyYzI5NThjCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgVGh1IE1heSAzMSAxMzo1MDoxMiAyMDEyICswMTAwCiAKICAgICBtYWtlIGRlcGVuZCBmb3IgNS42LjIucmMyCiAKK2NvbW1pdCBiY2FiZDJjOTU0MmRiZWJkMWQzMTliNDQ5NDQxM2JkY2NhMDY2MTRlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzozODozOCAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNi1wYXRjaGVzCisKK2NvbW1pdCBiNDczODk4YzBjNWFjOWViNDdjN2MwNWEzZjc0NWU0ZmYyYTc2YWFhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzozODoyOCAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnJjMgorCiBjb21taXQgMTMxNDI5ZTcwNjJmYmFhNjViODJhZmZlZDFmYjkyZGYyYzBjYzgxMwogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MzggMjAxMiArMDEwMAogCiAgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTYtcGF0Y2hlcwogCi1jb21taXQgMWZiZmU1ZWUzYzQyODczNDVjNTE0NjI3NzVmMzllMWJkMjczNWUyYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+Ci1EYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MjggMjAxMiArMDEwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5yYzIKLQogY29tbWl0IDFjODExMGIzM2I4MTA1Y2E2MTkwOTQ1YTM1ZmU3YWU5MDMyNTJkNjgKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUaHUgTWF5IDMxIDEzOjIxOjM4IDIwMTIgKzAxMDAKQEAgLTI5Miw2ICs0NDE2LDE4IEBACiAKICAgICBGaXggbWlzc2luZyBpbmNsdWRlLiBGaXhlcyBTSUdTRUdWIG9uIEZyZWVCU0Q5IHg2NAogCitjb21taXQgNTgwNTg3ODc0OWMwODA2MmRlYmYwYTlkNzk4ZDA4ZmI5MTZjYWEyZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1heSAyNyAwNjoyMzoxOSAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQWRkIG1pc3NpbmcgZGVidWcgdGFnCisKK2NvbW1pdCBkMWE0MmJiY2M3YjE0NzMwYzlhNmQ5OWM0ZjA0NzA5Nzg0M2E1NDliCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWF5IDI1IDA5OjAyOjI3IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBSdW4gbGlidG9vbCAtLW1vZGU9ZmluaXNoIG9uIHRoZSByaWdodCBkaXJlY3RvcnkKKwogY29tbWl0IDFmYmYzMzcxMWExOWVhYzk3MzlhZDIzZjZmNjI1MWVhY2M0MWYxYzQKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUdWUgTWF5IDIyIDE0OjU0OjQ1IDIwMTIgKzAxMDAKQEAgLTQwNiwxMiArNDU0Miw5MSBAQAogCiAgICAgQ2hlY2sgbmVlZCBmb3IgLWxtIHRvIHVzZSByb3VuZC9leHAKIAorY29tbWl0IGEwNjA5Y2YxZjNhNjkxN2QyNjM3MjU3MzIyNDhjZDkzN2E0NWFkOTQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgNyAwODo0MDo0NCAyMDEyICswMjAwCisKKyAgICBSZW1vdmUgbGltaXRhdGlvbiBvbiBjb25maWd1cmF0aW9uIGxpbmUgbGVuZ3RoLgorCitjb21taXQgMzA1OTczMzM4YTYzYWU1NGM1ZTAyYTg2MjZmYmU5YTgwNjRkY2I3ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEFwciA3IDAwOjMyOjE5IDIwMTIgKzAyMDAKKworICAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZXMuCisKK2NvbW1pdCBjY2FiNGU5ZDNlZDQyNGMzOWQwZGMyN2JlNjNmYTc2Yzc0NjFlYTgxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXByIDcgMDA6MTU6MjIgMjAxMiArMDIwMAorCisgICAgSW50ZXJuYWxpemUgdGhlIG5hbWUgYW5kIGxpbmUgbnVtYmVyIG9mIHRoZSBjdXJyZXQgY29uZmlndXJhdGlvbiBmaWxlCisKK2NvbW1pdCBjZjg3NGFkN2I5ZGFmNGZjYzBkNDZjZGQwMzQ0NzRiNDc4MDA1MzQxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgQXByIDYgMjE6NDc6MjggMjAxMiArMDIwMAorCisgICAgUmVwbGFjZSAjaWYgKEEpIEIgI2Vsc2UgQiAjZW5kaWYgd2l0aCBCLgorCitjb21taXQgZWY5ZWE2NDFiYzI5MGVlYzUwNjg1YjYwNTE5YjMxYmVlOGIxNGE2OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgOSAyMTowNDowNiAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMgorCitjb21taXQgMzVhYmExOTU5ZGUxMTlmMWZiODkyMDNjMzcxMDlhYTZmMGUyMWM1NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgOSAyMTowMDo0MCAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucHJlMgorCiBjb21taXQgZTQxZmJhZmYxOGFjOTA5NWNmNGE3MzlhMDZlYzM5YTFhNmNjZmRjMQogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIE1vbiBBcHIgOSAyMDozNTozNSAyMDEyICswMTAwCiAKICAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnByZTIKIAorY29tbWl0IDEzN2ZlNTgyZDZjYzU2MTE0MzBkYWI0NmVmMTQ0ZWZkODRjZmM4MDMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgQXByIDYgMjA6NDY6NTYgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0IGNvbW1pdCAxZjRhODI5YjE4Mjc1ZTQ5NTZjYTkxZTVlYzM3MGRmMDE1ZjA2MTMzCisgICAgKHNubXBfc3RvcmVfbmVlZGVkKCkgQVBJIGlzIG5vdCBhdmFpbGFibGUgaW4gNS5bNDVdLngpCisKK2NvbW1pdCAyYjdlNjQyODhjMDFhOGEwNjIwMjZjNTIxY2EzMWE1ZTg4NWYzMGNjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE2OjEyOjEyIDIwMTIgKzAxMDAKKworICAgIEZyZWVCU0QtOTogRml4IGZvciAnY29uc3QnaWZ5ZWQgbmxpc3QgYXJndW1lbnRzCisgICAgQmFja3BvcnQgb2YgZWQ2NWVjYTZlN2Y5Y2ZhNzM4MGE3OGQ1NmMwMWVkMzE0NzQ1YjE2OSBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgN2U5NWQ4MGI2OTgwNTEyNTk2NDVjMDc0YTUzZmZkMjY0YTZmYTkxNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNjowNjo1NiAyMDEyICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgJ2NvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworICAgIEJhY2twb3J0IG9mIGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDFhOWI3YjdjMDJlMmRlZWZlOTk0ZDU5NWE3Y2MxZGQyZmZiZWVlMWQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTU6NTE6MjAgMjAxMiArMDEwMAorCisgICAgRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggJ3JlY2VudCcgaGVhZGVyIHNodWZmbGluZworICAgIEJhY2twb3J0IG9mIGM1M2Q4YzM1MjVmNTkwZjIyMTNkMzViMGRhOTQxMjM4NjJmM2UzNjYgZnJvbSBWNS01LXBhdGNoZXMKKyAgICAoUGF0Y2ggIzMzNjMzMDggLSBvbWl0dGluZyB0d2Vha3MgdG8gY29uZmlndXJlKQorCitjb21taXQgM2Q5ZGRiNDFlMjYzYmMxYTc4ZjlmOTQ0MGI4ZDRhZDRmODZjODJlMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxMDozNjoxOCAyMDEyICswMTAwCisKKyAgICBGaXggdHlwbworICAgIEJhY2twb3J0IG9mIDViNzAyYjAyNGI2MDE3NmQ3ZjU2OTliOTJlNTVkYTUwYThkZWFlNzEgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDBkMzVjNjA5NTY0YjY2YTFmZmU4MTU1NmQzN2FkZjA1MDNjMzg5Y2UKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTA6MTU6MDggMjAxMiArMDEwMAorCisgICAgUHJvdmlkZSBtaXNzaW5nIGRlZmluaXRpb24gb2YgTkVUU05NUF9QUklvCisgICAgKHVzZWQgaW4gYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jKQorCiBjb21taXQgYTc5MTQxYTQxOTk1M2QwMTBhNjk4OWU4Yjg4ZjRkZjEyNzM5NGQzOAogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIE1vbiBBcHIgMiAwOToxOToyNiAyMDEyICswMTAwCkBAIC00MTksNiArNDYzNCwyNiBAQAogICAgIEhlYWRlciBmaWRkbGluZyBmb3IgRnJlZUJTRCxPcGVuQlNELERyYWdvbmZseQogICAgIEJhY2twb3J0IG9mIGY3YjBkZTE1MTgwMDJjNmU4ZjliOTRlZjNkZWI4ODgyZTFlOTMzOGUgZnJvbSBWNS03LXBhdGNoZXMKIAorY29tbWl0IGFkZjc0YmY3NTNkMzk3MDM1N2FmZDYzMzgwMzI1NjI0MWQ5YzdiODcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMDg6MjA6NDYgMjAxMiArMDEwMAorCisgICAgRml4IElQdjYgVENQICYgVURQIHRhYmxlcywgKkJTRCBzdXBwb3J0IChpbmNsdWRpbmcgT3BlbkJTRCkKKyAgICBCYWNrcG9ydCBvZiBjb21taXRzIDVjZDE1NzM2MjU0NzFjMDU4M2U5MDg3YWVjNjgwMmI3NzE1N2Q1YTIKKyAgICAgIGFuZCA1MGQ3M2YwZDU2ZmUyMmM1OTA1MzBiM2UzMDVkNDFkY2RhYzNjZTAwIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCBkOTU1NWFjYjlmNDdjM2FhOGZkZTRiYzIwYTQ0ZDdjYTYxODFhOGE5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gTWFyIDI1IDE4OjQ4OjEyIDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEF2b2lkIGRhbmdsaW5nIHBvaW50ZXJzIChiYXNlZCBvbiBwYXRjaCAzNTAzMjU5KQorCitjb21taXQgODJhOGI0N2VlOTZlNWQyOWEyYjdhYzNjYTAwNzIyZDczN2Q1YjQ3OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciAyOSAyMjozMTo1NiAyMDEyICswMjAwCisKKyAgICBSdW5uaW5nIGF1dG9oZWFkZXIgLyBhdXRvY29uZgorCiBjb21taXQgOWNhOGQ5MzlhYjM5MzMwNmExZDBmMTQ2YzljYjcwZWEwY2IxOWQ0OQogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgVGh1IE1hciAyOSAyMjozMDozOCAyMDEyICswMjAwCkBAIC00NjEsNiArNDY5Niw0MiBAQAogCiAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzNDg3ODY3OiBEb24ndCBza2lwIG1pc3NpbmcgaWZYVGFibGUgZW50cmllcyAoaWZDb25uZWN0b3JQcmVzZW50IEZBTFNFKQogCitjb21taXQgMTI5MDY1NzhhYjMwY2Y3NzZkMDgwYzBlZjMwMjViMzAzMzRkNzY1NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxNjoxNzo0NSAyMDEyICswMjAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IEZpeCBldmVuIG1vcmUgbWVtb3J5IGxlYWtzCisKK2NvbW1pdCBjY2ZkNWNhNmZlMTAzMTNkNjE4MWQyNGJiYjE3OTc4MjVhOTdkYTEwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDE1OjUxOjE2IDIwMTIgKzAyMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogRWxpbWluYXRlIGR1cGxpY2F0ZSBjb2RlCisKK2NvbW1pdCA5ZmRhMjY2ODcyMmYwOGRkYmZkZDY3YTIyMzlkOGIwMjFkYjY0YTgzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDE1OjQ4OjQ2IDIwMTIgKzAyMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogV3JpdGUgYSBsb29wIGFzIGEgbG9vcAorCitjb21taXQgY2JjMThlYjc2M2JhNmRmNjllZjcwNjY4YTU0ZDc1YmYzNWU3OTUwMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxNToyNDowOCAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggbW9yZSBtZW1vcnkgbGVha3MKKworY29tbWl0IGM3NzI1MTkyNDc4YWVjMDE4ZmI0YWVmYTYwOTQ2ZTA0YTQwNmMwMGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTM6NDM6MjQgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQXZvaWQgcmVhZGluZyBmcmVlZCBtZW1vcnkgd2hlbiBkZWxldGluZyBhIHJvdyBmcm9tIGEgdGFibGUKKworY29tbWl0IGE2YmU3Mzk1NjZmMzEwZDc0NDFmZDdmNTQ5ODllMzk0NDZmN2ExNDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTM6NDI6MjggMjAxMiArMDIwMAorCisgICAgRXh0ZW5kIERJU01BTi1QSU5HLU1JQiB0ZXN0CisKIGNvbW1pdCA4YTliNTcyOTE0NTNjYjhhZWMyOGU3NjZjNTk0NzAxZWQxOWM0ZmM2CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBNb24gTWFyIDI2IDIxOjAzOjQxIDIwMTIgKzAyMDAKQEAgLTUwMyw2ICs0Nzc0LDg0IEBACiAKICAgICBQcm9wZXJseSBmaW5kIHBhc3MgaGVscGVycyBmb3IgdGVzdGluZy4KIAorY29tbWl0IGZlMjZhM2M0ZjI5ZjA0NmJmNjVlZDUyZTlkOTQwNTRiNjc1ZmJjNGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBNYXIgMjIgMDk6MDQ6NDIgMjAxMiArMDEwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBMaW1pdCBzb3VyY2UgY29kZSBsaW5lcyB0byA4MCBjb2x1bW5zCisKK2NvbW1pdCA3NDViYWZjZGNjOWM4ZTg0NjE2ZDRlMjc0ZGIyYTM4NGJmMjM0ZGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTWFyIDIyIDA4OjU1OjA1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IE1ha2UgcGluZyBpbXBsZW1lbnRhdGlvbiBpbmRlcGVuZGVudCBvZiBudHBkIGNsb2NrIGp1bXBzCisKK2NvbW1pdCBkYTY5MjVlNjc2M2NhZGJlMDJmNGE4YmJmZTY4YTM2MmU1MzVhZDVlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDEwOjM4OjM2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZCB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNTRkaXNtYW5waW5nbWliX3NpbXBsZQorCitjb21taXQgZmE2MDZkZDdjYTZhZmY5MzA4ZDRlOGIwMWJiY2RlMTQ4ZjQ0MTI3MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxNjo0OToyMSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBNYWtlIHBpbmdpbmcgbG9jYWwgaW50ZXJmYWNlIGFkZHJlc3NlcyB3b3JrCisKK2NvbW1pdCA2MTdhODNiYTc5OTU3NWM4NGM2NmY2YjFjNDgwZWY2MzMxNjFhNjRjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDE2OjI4OjQ2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBhIHNvY2tldCBsZWFrIHRyaWdnZXJlZCBieSBwaW5naW5nIGEgcmVtb3RlIGhvc3QKKworY29tbWl0IDYyNWY1NWMyNzJlYzYyODFlMzhkOGUzMGViNTNmZDUxNTE2YjAwYWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBNYXIgMjIgMDk6NTQ6NTUgMjAxMiArMDEwMAorCisgICAgRElTTUFOLVBJTkctTUlCOiBDb252ZXJ0IGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHZhcmlhYmxlIGludG8gYSBzdGFjayB2YXJpYWJsZQorCitjb21taXQgYjQ4ZjE5YWQ0YjRhYTY4YzNlMTZlMmE3MmRmMzdiOWMwY2QzNmM0YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxNjoyNDowNyAyMDEyICswMTAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IEFkZCBtb3JlIGRlYnVnZ2luZyBzdGF0ZW1lbnRzCisKK2NvbW1pdCBkNzRjYjM5NjYxNzU4OTI1NjJmNWUzYTliMTY4M2FjYmEyYzIyZTA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDExOjQ1OjE4IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBzZXZlcmFsIG1lbW9yeSBsZWFrcworCitjb21taXQgMGIxYTc3Njc0Njc4Y2M5YTE1YmUzZTc3MDBkM2NlZjY1MGVkMDJjNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE1hciAyMCAxMjowMDozMCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBEbyBub3Qgc2VuZCB0aGUgY29udGVudHMgb2YgdGhlIHN0YWNrIG92ZXIgdGhlIG5ldHdvcmsKKworY29tbWl0IDEzOTAyM2NkM2FiNTE2MzFjYzEwZTI4NjZkNzFhYmNmOTlhZTRjMWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMjEgMDg6NTY6MDcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRG9uJ3QgY2FsbCBleGl0KCkgdXBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlCisKK2NvbW1pdCAxNjliNmFhYTdiNjE4MjdjYzFhZDBiM2FlZWFlM2E3MjI5ZGQyNWQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTWFyIDIxIDA4OjUzOjI2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBJUHY2IHNvY2tldCBsZWFrIGluIGVycm9yIHBhdGhzCisKK2NvbW1pdCBhMGJlMzJhZDA1M2E3MWZhOTYxMzRkNTVlNTQyYmIwN2Q0ZjAyOTdkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDExOjQzOjQ2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEF2b2lkIHRoYXQgaG9zdCBuYW1lIHJlc29sdXRpb24gZmFpbHVyZSBjYXVzZXMgYSBjcmFzaAorCitjb21taXQgYmY5YmZmNjQ1NTY3ODdkNzY2ZWUyZWYyZDU3OGFmYjkyMDcxOWYzYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE1hciAyMSAwODo1MTo1NSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBDb252ZXJ0IHByaW50ZigpIHN0YXRlbWVudHMgaW50byBzbm1wX2xvZygpIGFuZCBERUJVR01TRygpLXN0YXRlbWVudHMuCisKIGNvbW1pdCA1ZDc0YzAxMjQ1NTIzYTlkOGRiMWVkYTI3ZDFlZmFlMmViYzEwNGZiCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBXZWQgTWFyIDIxIDE4OjQwOjAyIDIwMTIgKzAxMDAKQEAgLTU1OSw2ICs0OTA4LDE4IEBACiAKICAgICBBbGxvdyBkaXN0cmlidXRpb24gYXMgcGFydCBvZiBub3JtYWwgTmV0LVNOTVAgcGFja2FnZXMuCiAKK2NvbW1pdCA1OTk5ZjYwYzU3NzIzZjIzZjNjMjU0YWY1N2ZkYjEwYWYzMDFhOGViCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWFyIDE4IDE5OjAzOjA4IDIwMTIgKzAxMDAKKworICAgIFJlZ2VuZXJhdGUKKworY29tbWl0IDI3NWQyMDQwMzZhNjA3ZTNkZjUwZTg0NDdkNGJjNzU1ZTlkYjAyZmQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBBdWcgMjggMjE6Mjk6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1ha2UgaXQgcG9zc2libGUgdG8gdXNlIC0tZGlzYWJsZS1hcHBsaWNhdGlvbnMvLS1kaXNhYmxlLWFnZW50IHRvZ2V0aGVyIHdpdGggLS1lbmFibGUtbWluaW1hbGlzdAorCiBjb21taXQgYmRjY2M4NzU3MTAyOTVhYWNmNTBmNzFlYjFjMWQyZWU5N2YzMzZmZQogQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KIERhdGU6ICAgRnJpIE1hciAxNiAyMDoxMDo1OCAyMDEyICswMTAwCkBAIC01NzEsMTIgKzQ5MzIsMzcgQEAKIAogICAgIENoZWNrIHRoYXQgdGhlIGRhdGEgZXhpc3QgYmVmb3JlIHRyeWluZyB0byByZWFkIGl0CiAKK2NvbW1pdCBlZmFlODZiYmE1OTYyNDkxZDQyYjc3YjkzNTE5MWEzZWIyNWRkOTM5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgTWFyIDE0IDAxOjA1OjMzIDIwMTIgKzAxMDAKKworICAgIFBhcnRpYWxseSByZXZlcnQgIk1lcmdlIHJlbW90ZSBicmFuY2ggJ29yaWdpbi9WNS03LXBhdGNoZXMnIGludG8gVjUtNy1wYXRjaGVzIgorICAgIAorICAgIENvbW1pdCBkMzVhMTg2MDIxN2U3MjNlNGY4NjZkZDk4ZWY2NjIxNjY1OTM0YzRhIGFjY2lkZW50YWxseSByZXZlcnRlZAorICAgIAorICAgIDRhMmU1YmNkNTZjZDJhZmIzNmViMTVkNzU0ZTJmZWU4ODhkZDUwYzAgKGhyaF9zdG9yYWdlIGlzIGEgcHJvcGVyIHJlcGxhY2VtZW50IGZvciBocl9zdG9yYWdlKQorICAgIDBkZDFlNTQ1NTdkMWJhNDk4YjU1ZDAxN2IwYTkzZThjY2Y5YmQ1MjIgKENIQU5HRVM6IHNubXBkOiBVRFAtTUlCOiBSZXBvcnQgdGhlIHByb3BlciBhZGRyZXNzIGluIHVkcExvY2FsQWRkcmVzcykKKyAgICA1MTE2ZDQ4Mzc4ZWNmMDNlNzIyZjMwMTBhZDQ3YmYyMmEzZmJjYjhjIChSZWR1Y2Ugc2NvcGUgb2YgcHJlZml4X3ZhbCBzdWNoIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgd2FybiBhYm91dCBhbiB1bnNlZCB2YXJpYWJsZSkKKyAgICAxMGY1NjZmNGQ0Y2JiM2UyMDUwMjNjMjM2NjkyODllNGJmZDA4OWNiIChwZXJsL1NOTVAvU05NUC54czogRml4IGEgY29tcGlsZXIgd2FybmluZykKKyAgICAKKyAgICBhbmQgcGFydCBvZgorICAgIAorICAgIDZlNzRkNjRmODVhNTlkNTBlNDYxZGI0YzM0YWM3NmY5ZGU0NjhiZmIgKEF2b2lkIHVzaW5nIGdyZXAgb3B0aW9ucyAtcSBhbmQgLXcgYmVjYXVzZSBncmVwIGluIFNvbGFyaXMpCisgICAgCisgICAgVGhpcyByZXZlcnRzIHRob3NlIHJldmVydHMuCisKIGNvbW1pdCBhYWVkZDU5Y2MyZGE3MDE1MjdkYzJkMjYxZDRlOWY4NWYxNmU3NTA0CiBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgogRGF0ZTogICBTdW4gTWFyIDExIDIwOjU3OjM4IDIwMTIgKzAxMDAKIAogICAgIEFsbG93IG1ha2UgdGVzdCB3aGVyZSB0aGUgc291cmNlIHBhdGggY29udGFpbnMgdGhlIHN0cmluZyBOZXQtU05NUCB0byBzdWNjZWVkLgogCitjb21taXQgNGI5NGQ3OTY5MThhNGVlYWU2OGFiMjFhYTUzZDQ0NGE4YjVjMjkyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE1hciA5IDA4OjA0OjU5IDIwMTIgKzAxMDAKKworICAgIFVuYnJlYWsgY29tcGlsYXRpb24gb24gRnJlZUJTRCA0CisKIGNvbW1pdCAxMGZlNmI4MzMyNGFkMzdkMThiOTM3Y2M4YzZkZTk0ZGU1MzRkMDM1CiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgVGh1IE1hciA4IDEzOjA0OjA3IDIwMTIgKzAwMDAKQEAgLTU5NSw2ICs0OTgxLDE0IEBACiAKICAgICBtYWtlIGRlcGVuZCBmb3IgNS42LjIucHJlMQogCitjb21taXQgMGVmMzRlNjUxOWRmY2I4MmM5N2RmODQyNzU0N2MwOGRjZjgxZTY5YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXIgOCAxMDoxMTozMCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgc25tcGQgJy1kJyBvcHRpb24uCisgICAgCisgICAgTm93IGl0IGR1bXBzIHBhY2tldHMgYWdhaW4uCisKIGNvbW1pdCA4ZTY5NzQyZjE0M2U0ZmMxMTE5NmU1YjJlZDY2YzhmN2Y1M2ZkMDJmCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgVHVlIE1hciA2IDA5OjI0OjIxIDIwMTIgKzAwMDAKQEAgLTY0Nyw2ICs1MDQxLDEyIEBACiAgICAgCiAgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk2NTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCiAKK2NvbW1pdCBlNDFmMTE1ZTQwMzA0Yzk0MWJhMTdkNjdlMjQ3MTA3MjJkOTA3NDFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTM6Mzk6MTcgMjAxMiArMDEwMAorCisgICAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogQXZvaWQgdXNpbmcgZ3JlcCBvcHRpb25zIC13IGFuZCAtcSBiZWNhdXNlIGdyZXAgaW4gU29sYXJpcycgZGVmYXVsdCBwYXRoIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGVzZS4KKwogY29tbWl0IDUxMTZkNDgzNzhlY2YwM2U3MjJmMzAxMGFkNDdiZjIyYTNmYmNiOGMKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIE1vbiBNYXIgNSAxMDo0NzoyMCAyMDEyICswMTAwCkBAIC02NjUsNiArNTA2NSwzMCBAQAogCiAgICAgcGVybC9TTk1QL1NOTVAueHM6IEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcKIAorY29tbWl0IDQ0YWEyNjU4OTFjZDU2M2Y3ZjQxMTRlZjI1ZGNmN2FhZjNiMTRlOWEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IGRhZTRlMTZiZTg2MTE3ODYxZjYzZDFhMmY5ODFhZDM2MTQxOGY1YzYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IDI4ZjYyMjZmMmUyMjhiOGNhMjQ4NDg5NzM1Zjg2NTAyYjJjY2UwYTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKwogY29tbWl0IDQwMDIyYTY5Nzk1ODI1OWNjZmJiM2ZlZDQ0ZWIzYzQ3MmY1ZTgzN2UKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFN1biBNYXIgNCAxMDozNzo0MSAyMDEyICswMTAwCkBAIC02OTUsNiArNTExOSwxMiBAQAogCiAgICAgcGFzc3BlcnNpc3QgdGVzdCBuZWVkcyAvdXNyL2Jpbi9wZXJsCiAKK2NvbW1pdCA4NzI2OTk1YzdhOGFlZjY3NGM0ZjE2NGIxODcxYzM3YmJkY2RhZDUwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzY6NTggMjAxMiArMDEwMAorCisgICAgZ3JlcCAtdyBmYWlscyB3aXRoIE9wZW5CU0QgYW5kIFNvbGFyaXMgMTAtNjQKKwogY29tbWl0IDFlYjQ3NDViMjNjYzNhODM5ODY0ZTdmNmVhMjgzNTViMDU2NmViNjcKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIEZyaSBNYXIgMiAyMTozNTo0OSAyMDEyICswMTAwCkBAIC03MDcsNiArNTEzNywxOCBAQAogCiAgICAgTWFrZSBzdXJlIHdlIGhhdmUgdGhlIHByb3BlciBzcmNkaXIgZm9yIG91dC1vZi1zb3VyY2UgYnVpbGRzCiAKK2NvbW1pdCA3ODM2OTAwMmJlMjcxMWYwYWE4NzZiNjRhNGUxMGIwOTBjYzI0MWNkCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzM6MzEgMjAxMiArMDEwMAorCisgICAgTm90IGFsbCBtYWtlIHZlcnNpb25zIGRlZmluZSAkKFJNKQorCitjb21taXQgOTQyNDViMjlhM2NkYTg5NDc1YzZlYWI1ZDk0OTNjNjY1N2ZmMzhlMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjI0OjI0IDIwMTIgKzAxMDAKKworICAgIE1ha2UgYXV0b2NvbmYgMi42OCBoYXBweQorCiBjb21taXQgNDRhY2Q2YzI4NWZiNTYxNGI0Yzk2MTFiMWFiZGVjYTlkZDI4ZTRiYgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgRnJpIE1hciAyIDIxOjEyOjQ3IDIwMTIgKzAxMDAKQEAgLTc0OSw2ICs1MTkxLDEyIEBACiAKICAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucHJlMQogCitjb21taXQgMmU3NGFjYjZmMTllNDcyOWNlZGUwYWI0M2U5MzE5NjFjYjIzYWFlYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE1hciAxIDA5OjE4OjM5IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEJ1ZyAzMTUyODQxOiBEbyBub3QgaW5zdGFsbCB0aGUgdXRpbF9mdW5jcyBzdWJoZWFkZXJzIHRoYXQgd2VyZSByZW1vdmVkIGluIDUuNworCiBjb21taXQgYjcxMDk2NDZiOTVhNzA3MTNkMWFkOTkxZDQxYmNjZDU3YzBiYjNlYgogQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KIERhdGU6ICAgVGh1IE1hciAxIDA4OjQ4OjQ4IDIwMTIgKzAxMDAKQEAgLTgwMyw2ICs1MjUxLDE4IEBACiAKICAgICBDSEFOR0VTOiBzbm1wZDogQlVHUzogMzQ2MDM2NDogRml4IHVzZSBvZiBibG9jayBmYWN0b3Igd2hlbiBkZXRlY3RpbmcgZXJyb3IgY29uZGl0aW9ucwogCitjb21taXQgMDM0ZjFjNTcyZjY4M2VhNDI4NTgzMDc0NDcxZTVkNWQxM2I1MTgzNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTA6MjI6MjAgMjAxMiArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgdGVzdHMgd2hlbiBjb25maWd1cmVkIHVzaW5nIC0tZW5hYmxlLXJlYWQtb25seQorCitjb21taXQgMzY0MjNlMjEwYmZiNjVlZjEyMWM2YTY2YWVjNDM4YzdjMjM3ZDNkZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTA6MDM6MjUgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDU0MTY4OiBjb25maWd1cmU6IEZpeCBidWlsZGluZyB3aXRoIC0tZW5hYmxlLXJlYWQtb25seQorCiBjb21taXQgZWVkMGJjYmM0M2ZlYTE4MjU5ZjBmNjNiMjA4MWI2ZDEwNTM1YTA1MgogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIFR1ZSBGZWIgMjggMDk6Mjc6MTEgMjAxMiArMDAwMApAQCAtODEwLDYgKzUyNzAsMTggQEAKICAgICBTa2lwIFNFVC1iYXNlZCBiYWJ5LXN0ZXBzIHdoZW4gY29tcGlsZWQgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQuCiAgICAgSW5zcGlyZWQgYnkgYnVnICMzNDU0MTY4CiAKK2NvbW1pdCBlYzZhMjMwMzBlNWEyMDcyYzE5YzE4YzFkOWMxMjQzODdkYTU2YjdiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDI3IDE4OjQyOjU4IDIwMTIgKzAwMDAKKworICAgIEFkZCAtbHJ0IHRvIE5FVFNOTVBMSUJTIHN1Y2ggdGhhdCBjbG9ja19nZXR0aW1lKCkgY2FuIGJlIGZvdW5kCisKK2NvbW1pdCBmMTMzMjA1MDAyOTRiYjI0MGY2M2M2ZGQ3ZDJlOWEyMjA4ZWI3NDBkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNjo1Mjo1MSAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCB0ZXN0cyB3aGVuIGNvbXBpbGVkIHVzaW5nIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAorCiBjb21taXQgYzQyNzZiNjIzMmMyOTE0NWMwMzk4ODRlNmI1YTZiNmRhNGI5MzgzNwogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIE1vbiBGZWIgMjcgMTU6NTQ6NDUgMjAxMiArMDAwMApAQCAtODIzLDYgKzUyOTUsMTIgQEAKICAgICBPbWl0IFNFVC1yZWxhdGVkIGNvZGUgd2hlbiBjb21waWxpbmcgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQKICAgICAoaW5zcGlyZWQgYnkgcGF0Y2ggIzM0MjQ5MzApCiAKK2NvbW1pdCA5NDg0ZDgzMjAzYzRlMmQ4MjA0MTZiZTY2NWZhODMzYWE3MDQ0NGQyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgRmViIDI0IDE0OjAwOjMyIDIwMTIgKzAxMDAKKworICAgIFJld29yayBjb21taXQgYjRhMTk1MDVhMDU4MTZlOTRlMDFkZTk3YmY5OWFjMzdmY2RjNmQyMy4KKwogY29tbWl0IDJiN2YxMzQ5NTIyODYzNWQ4MTZlNThiMjE3NGRjMTI0ZGQwY2YzOWYKIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIEZyaSBGZWIgMjQgMDc6NDM6MjIgMjAxMiAtMDgwMApAQCAtODQxLDYgKzUzMTksMjQgQEAKIAogICAgIFJlbW92ZSBvYnNvbGV0ZSBzeW1ib2wgTkVUU05NUF9FWElUX09OX0JBRF9LTFJFQUQKIAorY29tbWl0IGMzNmFiNzFhNGUwOTZmMTZjYzVhNTU1MzNmMDgwYzlhOTQwMDk5MTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMDg6NTM6NTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogRnJlZUJTRDogc25tcGQgKyBhcHBzOiBTZW5kaW5nIFVEUCBwYWNrZXRzIHdvcmtzIGFnYWluIGZvciBub24tcm9vdCB1c2VycworCitjb21taXQgZWRlYmRkYmE5MzBmOGIxNDcyZmEwYmQyMGZjNDEzZWY4Y2Y0NjRhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEZlYiAyMSAxMTozMTo0NiAyMDEyICswMTAwCisKKyAgICB0ZXN0aW5nL1JVTlRFU1RTOiBGaXggYSBiYXNoaXNtCisKK2NvbW1pdCBiNGExOTUwNWEwNTgxNmU5NGUwMWRlOTdiZjk5YWMzN2ZjZGM2ZDIzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDIwIDE2OjU4OjQ3IDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBhYm91dCAlbGQgdmVyc3VzIHRpbWVfdCBvbiBzeXN0ZW1zIHdoZXJlIHRpbWVfdCBpcyBhIHN5bm9ueW0gZm9yIGxvbmcgbG9uZyBpbnN0ZWFkIG9mIGxvbmcuCisKIGNvbW1pdCBkODk3OGVjYzgyMTFiZTdjMWU3OTA1ZjFlMjE1YmIwNmRlZDI2NmI2CiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBUdWUgRmViIDIxIDEyOjMyOjI1IDIwMTIgKzAxMDAKQEAgLTg1OSw2ICs1MzU1LDIyIEBACiAKICAgICBGaXggYSBjb21waWxlciB3YXJuaW5nIG9uIHN5c3RlbXMgd2hlcmUgbW9kZV90IGlzIHVuc2lnbmVkCiAKK2NvbW1pdCBmOGEzZWYwZDNkNGU1MzAyNzk5MDAxMDEwNDliOGRlOThhNDRhNmZiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NDg6NTIgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYiArIHNubXBkICsgc25tcHdhbGs6IEF2b2lkIHRoYXQgc3lzdGVtIGNsb2NrIGNoYW5nZXMgKGUuZy4gYnkgbnRwZCkgYWZmZWN0IGNvZGUgdGhhdCBuZWVkcyByZWxhdGl2ZSB0aW1lCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2Ugc3VyZSB0aGF0IHRoZSByYW5nZSBvZiB0aGUgU05NUHYzIHZhcmlhYmxlIHNubXBFbmdpbmVUaW1lIGlzIDAuLjIxNDc0ODM2NDcgb24gYWxsIHN1cHBvcnRlZCBzeXN0ZW1zIGluc3RlYWQgb2YgMC4uNDI5NDk2NzIgb24gc29tZSBzeXN0ZW1zIChpLmUuIHdyYXBhcm91bmQgYWZ0ZXIgNDk3IGRheXMpCisgICAgQ0hBTkdFUzogc25tcGxpYjogQWRkIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygpLCBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCksIG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKCksIG5ldHNubXBfZ2V0X2FnZW50X3J1bnRpbWUoKQorICAgIENIQU5HRVM6IHNubXBsaWI6IERlcHJlY2F0ZSBhdGltZV9kaWZmKCksIGF0aW1lX25ld01hcmtlcigpLCBhdGltZV9yZWFkeSgpLCBhdGltZV9zZXRNYXJrZXIoKSwgbWFya2VyX3R0aWNrcygpLCBuZXRzbm1wX21hcmtlcl91cHRpbWUoKSwgbmV0c25tcF90aW1ldmFsX3VwdGltZSgpLCB0aW1ldmFsX3R0aWNrcygpLCB1YXRpbWVfZGlmZigpLCB1YXRpbWVfaGRpZmYoKSBhbmQgdWF0aW1lX3JlYWR5KCkuCisgICAgQ0hBTkdFUzogc25tcGxpYjogQ2hhbmdlIHRoZSBuYW1lcyBvZiB0aGUgc3RydWN0IHRpbWV2YWwgbWVtYmVycyBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCB3ZXJlIHVzZWQgdG8gc3RvcmUgYSB3YWxsIGNsb2NrIHRpbWUgYnV0IHRoYXQgZG8gbm93IGNvbnRhaW4gYSBtb25vdG9uaWMgY2xvY2sgdmFsdWUKKworY29tbWl0IGMxOTc2MGYzMzMzYzkyZmFjNWQ1MGU5NzY4Y2RmOTM5MjE4YmM0ODcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBGZWIgMTUgMDk6NDU6MDMgMjAxMiArMDEwMAorCisgICAgc25tcGxpYi9zbm1wdjMuYzogRml4IHNvdXJjZSBjb2RlIGluZGVudGF0aW9uCisKIGNvbW1pdCBhNmRiMjM5OTQ1ZTE5NWRlNWE5MGZhMTgzNzAwYjI3YTZlY2IyOGQzCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBUdWUgRmViIDcgMDA6MTE6MTQgMjAxMiArMDEwMApAQCAtODg5LDYgKzU0MDEsMTggQEAKIAogICAgIENIQU5HRVM6IGFkZGVkIE9DRlMyIChPcmFjbGUgQ2x1c3RlciBGUykgdG8gaHJTdG9yYWdlVGFibGUgYW5kIGhyRlNUYWJsZQogCitjb21taXQgZmFmYzk5Y2Q4OWU3M2VjN2UwMGJmNzM2MGQwYjRmYTYxOTQ0YTRmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDExOjE4OjM0IDIwMTIgKzAxMDAKKworICAgIFNpbXBsaWZ5IGNhbGN1bGF0ZV90aW1lX2RpZmYoKSBhbmQgY2FsY3VsYXRlX3NlY3RpbWVfZGlmZigpCisKK2NvbW1pdCA3YWYyMDEzZGU4YmYxYjM3OWMwNzZkYjRlMTA0NTA4ZTE3ODc0ZDNlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NTU6NTggMjAxMiArMDEwMAorCisgICAgRml4IG9yZGVyIG9mIGZlYXR1cmUgI2lmbmRlZiBhbmQgRG94eWdlbiBjb21tZW50IGJsb2NrCisKIGNvbW1pdCBiYmQ2N2Y2MzUzMGY1ZWYwYmZjOTQ4ZmM1OGRmZTZhOTNmOGY4Njc5CiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBNb24gRmViIDYgMTU6MjU6MzAgMjAxMiArMDEwMApAQCAtMTA2MSw2ICs1NTg1LDMwIEBACiAKICAgICBGaXhlZCBlcnJvciBoYW5kbGluZyBpbiBpbml0X2ljbXAoKS4KIAorY29tbWl0IGMzMDM1NDlhNTlmYThjMmYyMGE5ZDhiZjFlOTg1ZmJjOGFiZGU2YTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjQ2OjI5IDIwMTIgKzAxMDAKKworICAgIFJld29ya2VkIF9yZWdpc3Rlcl9leHRlbmQoKSBlcnJvciBoYW5kbGluZy4KKworY29tbWl0IDljMjBlMjdhNzAyNmZjMDMwZGEzYjMyOGI5YTJlMWI0ZjM2NjcwY2QKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjIxOjI4IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgMjJmZDBiZmMyZGYwZTFmNjAyMGRjM2M1MGE3NTNkZGYyOGE0NTk5YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MjA6MjIgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCA1ZDYxZTU3YmFmNTgwYzc4MjUyYzBhYmIwMDk4YzA3YmIwNWFmMTdjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNToxNzowNSAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKwogY29tbWl0IDNjM2VlYWU4MGQ3OTZmMjc1OTdjOTAxZTdmZjIwNDZjNzY5ZWY0YjgKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA4OjA5IDIwMTIgKzAxMDAKQEAgLTEyODEsNiArNTgyOSwxMiBAQAogCiAgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgogCitjb21taXQgNTk4ODRiYjRkMzVhZDEzNzQ3ZmZhNjcyMzQzNmRjYTU4N2E5YWI3NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTc6MDk6MTIgMjAxMiArMDEwMAorCisgICAgSW4gYWJvdmUgY29kZSwgb2xlbmd0aCBpcyBjaGVja2VkLCBzbyBsZXQncyBjaGVjayBpdCBhbHNvIGhlcmUuCisKIGNvbW1pdCBiYTVkNTI5MmIwNDM5M2IwYzdkN2Q3ZWQ5NjEyNDE5Mjk0MThjNmU0CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgVHVlIEphbiAxNyAxNzowNToxNCAyMDEyICswMTAwCkBAIC0xNzk4LDYgKzYzNTIsMTIgQEAKIAogICAgIENIQU5HRVM6IEJVRzogMzQ0MDc1MjogSUYtTUlCOiBSZXBvcnQgaW50ZXJmYWNlIHNwZWVkIGNvcnJlY3RseSBmb3IgRXRoZXJuZXQgaW50ZXJmYWNlcyBpZiBvdGhlciB0aGFuIDEwIE1icHMsIDEwMCBNYnBzLCAxIEdicHMsIDIuNSBHYnBzIG9yIDEwIEdicHMuIEFkZCBzdXBwb3J0IGZvciBOSUNzIGZhc3RlciB0aGFuIDY1IEdicHMuCiAKK2NvbW1pdCBjMDk5MDNhNDJlOWQ5NzMzMWZkOWU0OGVlODMxYTg1YWZkZjljNzBhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gSmFuIDkgMTM6MjY6MTcgMjAxMiArMDEwMAorCisgICAgRG94eWdlbi1zdHlsZSBkb2N1bWVudGF0aW9uIGZpeGVzCisKIGNvbW1pdCBlMzI1ZWNiZmNlNzdmMDBhYzVjZjZmYmQ5NTdmOTU0OTVmNjFjNTliCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBNb24gSmFuIDkgMTM6MjU6MTAgMjAxMiArMDEwMApAQCAtMTgyMiw2ICs2MzgyLDEyIEBACiAKICAgICBDSEFOR0VTOiBzbm1wZDogSUYtTUlCOjppZlR5cGU6IFJlcG9ydCB0eXBlICJpbmZpbmliYW5kICgxOTkpIiBmb3IgSW5maW5pQmFuZCBpbnRlcmZhY2VzIGluc3RlYWQgb2YgdHlwZSAib3RoZXIgKDEpIi4KIAorY29tbWl0IDI2OTkzMmZhMzJjN2NkNDc5NTc0ODk2OThlMDliZWUzMWY2M2I3YWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNDozNDo0MiAyMDEyICswMTAwCisKKyAgICBGaXggYW4gTVNWQyBjb21waWxlciB3YXJuaW5nCisKIGNvbW1pdCAwZDFjMjFmOTk5MWQxMzA5ZDA1N2UzZTQwNTZkNTQ3ZGY3ZDQwZWNmCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBGcmkgSmFuIDYgMTY6MDY6MzEgMjAxMiArMDEwMApAQCAtMjAyNyw2ICs2NTkzLDEyIEBACiAKICAgICBGaXhlZCBhIHR5cG8KIAorY29tbWl0IGJlZTRkNzljZjRlYjdlMGE0NTM5N2Y1OWI1Mjk4ZGE2MzNhOGUxYmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTM6MTQ6NTcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgcmVhZGluZyBwYXN0IGVuZCBvZiBidWZmZXIuCisKIGNvbW1pdCAzZGMwZTAwYTJmZDhlMzRmZTFhZTMzZWNhYmYzNmUxNDY0NjBhMzFmCiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgV2VkIEphbiA0IDEyOjQwOjA3IDIwMTIgKzAxMDAKQEAgLTIwNzcsNiArNjY0OSwxMiBAQAogICAgIAogICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE3NTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAogCitjb21taXQgYjFlYWFmMzAyMzY5ZmQ0NTUyZThmZWU3YjZhODA1MDkxZWMwYTliNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMTozODo1MSAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBvZiBmaW5kX3NlY19tb2QoKSByZXR1cm4gdmFsdWUuCisKIGNvbW1pdCBhZWU0ZTg5NWZlM2JkNWY0YTYxZTM0Mjc1YmZjYTAzNjhiNTYwNTU1CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgV2VkIEphbiA0IDExOjMxOjIyIDIwMTIgKzAxMDAKQEAgLTIxNTAsNiArNjcyOCwxMiBAQAogCiAgICAgQ2hlY2sgb3BlbigpIHJlc3VsdC4KIAorY29tbWl0IDY2NjVkNWZlMmZjNTY5ZDZmYTg1NGQxZDc4ZTM0N2JiYWM2OWUwNzAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MjI6MjIgMjAxMiArMDEwMAorCisgICAgRml4ZWQgbWlzc2luZyBicmVhay4KKwogY29tbWl0IGE2NjQ4YzU0NTNlMWVmOGRhYzU3YTM4ZWZjYzAwY2NlNTNiZjllNGYKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBUdWUgSmFuIDMgMTQ6MjA6MjcgMjAxMiArMDEwMApAQCAtMjM0OSw2ICs2OTMzLDEyIEBACiAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0NDc2NzE6IEZpeCBvdmVycmlkZSBoYW5kbGluZyBvZiBPSUQgdmFsdWVzCiAgICAgUGF0Y2ggc3VwcGxpZWQgYnkgUGhpbGxpcCBPJ0Rvbm5lbGwKIAorY29tbWl0IGJhNGE5Y2U1MWM5NjAwZjlmZGExNjhmMWU2ZWZmMzJhMWRiNjNjYjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDEzOjI0OjI2IDIwMTEgKzAwMDAKKworICAgIFR3ZWFrIC0tZGlzYWJsZS1zbm1wLXNldCBjaGFuZ2VzCisKIGNvbW1pdCA4MjdjOGIyODgzMDE3MWZhYTljNjFkNTNlZmNhOWViNjYwMDU2MWMyCiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KIERhdGU6ICAgVHVlIERlYyAyNyAxMToyNTo0MyAyMDExICswMDAwCkBAIC0yMzYxLDYgKzY5NTEsMTIgQEAKIAogICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29uZmlndXJlZCB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAogCitjb21taXQgMjMwZGYxNGY5NGMzNzM2ZmYzNDM3OWE0ZTI4MWVlYTM1M2I0N2Y4MAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIERlYyAyNiAyMzozNDoyMyAyMDExICswMTAwCisKKyAgICBEbyBub3QgYXNzaWduIHRtU3RhdGVSZWYgdHdpY2UKKwogY29tbWl0IGM5NmIzYjRkODUzMGFkNWUwZWZiMDNmMjRkYWI1ZTVmMWE0NjAwMzEKIEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CiBEYXRlOiAgIFN1biBEZWMgMjUgMTE6MTg6MjEgMjAxMSArMDEwMApAQCAtMjQ5MSw2ICs3MDg3LDEyIEBACiAKICAgICBGaXhlZCByZXR1cm5pbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZSAnc3RhdHVzJyB3aGVuIHNzID09IE5VTEwKIAorY29tbWl0IDczMDRjNTNjZjhhZGVlOGVjY2VmMWE4ZjI2NzU2ZmMwN2YwOTg3MjEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTggMjM6MzE6NTMgMjAxMSArMDEwMAorCisgICAgT24gc29sYXJpcyAxMCB0ZXN0IGluIC9iaW4vc2ggZG9lc24ndCBzdXBwb3J0IHRoZSAtZSB0ZXN0LiBSZXBsYWNlIGl0IHdpdGggLWYKKwogY29tbWl0IDhjZDNiZTYwZDY5M2M5YzM2ZmZiOTdkM2Q5YmNiNDljMWI0YWJlMzUKIEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CiBEYXRlOiAgIFNhdCBEZWMgMTcgMDg6NTI6MjQgMjAxMSArMDEwMApAQCAtMjU4OCw2ICs3MTkwLDEyIEBACiAKICAgICBGaXggcmVjZW50bHkgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncwogCitjb21taXQgYjdlNTBkNWY5YTY3NTU5ODJkMmFmMzE5MTQ3M2NiMzQ2NDNiYzAzZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDA4OjM3OjIyIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFJlZHVjZSBvdmVyaGVhZCBvZiBjb25maWcgZmlsZSBwYXJzaW5nCisKIGNvbW1pdCA3M2M5ZWU0MmQyOGFmZTJlMTA3YTdkNjYxNmI2ZDAxMTg5MGMzNmVhCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBUaHUgRGVjIDggMDk6MDk6NTkgMjAxMSArMDEwMApAQCAtMjYxMyw2ICs3MjIxLDI0IEBACiAgICAgdGltZSB0aGUgNS42IGJyYW5jaCB3YXMgY3JlYXRlZCAoc2VlIGFsc28gY29tbWl0CiAgICAgMGVjMDg4YWZhMjdjZmRhNGU2ZWE3OGFhZTdjZmM1NTA3NTY0ZWRkZSkuCiAKK2NvbW1pdCBkNDk0ZGI2NGMyMDhiNGRjNjI4MTMxMzJmODg2M2JkNWMxYTM5ZDc3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6Mzg6MTcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBFbGltaW5hdGUgYW4gdW51c2VkIHZhcmlhYmxlIChOb3cpCisKK2NvbW1pdCAyOGYyNTYxYmMyOTM1ZDhlMWNiZjQ2ZDI4MjAxNTgxNzNlN2E0Y2Y0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6Mzc6MTEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBNb3ZlIHRoZSBtYWluIGxvb3AgY29kZSBpbnRvIGEgbmV3IGZ1bmN0aW9uCisKK2NvbW1pdCAzOTZlMTIyZGRjNDJhOTE2ZjA2YTAyODg0YzBlOGEyNThlZGJlMjM4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMDk6MzI6MTYgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1hdGNoIGVhY2ggZ2V0cHduYW0oKS9nZXRwd3VpZCgpIGNhbGwgd2l0aCBhbiBlbmRwd2VudCgpIGNhbGwgYW5kIGVhY2ggZ2V0Z3JlbnQoKSBjYWxsIHdpdGggYW4gZW5kZ3JlbnQoKSBjYWxsLgorCiBjb21taXQgM2VmZWZiYzAwMjQzOTk3ODZmOGI2OGIxZTkzYjBhOGZkZGRkYzdkYQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgVGh1IERlYyAxIDEwOjQxOjAxIDIwMTEgKzAxMDAKQEAgLTI3MjAsNiArNzM0NiwyNCBAQAogCiAgICAgQ0hBTkdFUzogRnJlZUJTRDogUmVzdG9yZSBJUF9SRUNWRFNUQUREUiBmdW5jdGlvbmFsaXR5LgogCitjb21taXQgN2Y0N2Y1MmU0ODFiYWE5YWFmYjU3ODQyNDRiMGRkMjY1M2U3ZGNmZgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIE5vdiAyOCAwODo1MTozOSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBVc2UgU05NUF9BTExPQ19UWVBFREVGIHRvIGFsbG9jYXRlIHRyYW5zcG9ydHMgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIHNlcGFyYXRlIGNhbGwgdG8gbWVtc2V0LgorCitjb21taXQgY2Y4NjAzOWUzMDg2MjI1YzMwODViYjlhZGYwODhiOGJhNWJhNjk3OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE5vdiAyMiAxNTowMjo1OCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB1bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYiBwYXNzLgorCitjb21taXQgMWE4N2U3NmUwMGVlM2Q1Y2QzN2EwN2JmYzNkODQ0OTBkM2MyYTRlYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE5vdiAyMiAxNDo1NTo0MiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB1bml0LXRlc3RzL1QwMTRnZXRob3N0YnlhZGRyX2NsaWIgcGFzcworCiBjb21taXQgODg2N2ZkMWRjZmU3MmI1OWQwNzMyMmZmMzhhNjk5YjY2ZWM0ZjMyNgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgVHVlIE5vdiAyMiAwOTo0NDozOCAyMDExICswMTAwCkBAIC0yNzMxLDYgKzczNzUsMTIgQEAKICAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KCkgcmV0dXJuIGZhbHNlIG9uIFVuaXggc3lzdGVtcyBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4KICAgICBDSEFOR0VTOiBXaW5kb3dzOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHNocmluayBiZWhhdmlvciBjb3JyZWN0LgogCitjb21taXQgMjNkYjBjZjA5YjhiMGVhYjM3Yjc0OWVmMGMzYzNmMzA2OTAwMjQ1YworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiAyMSAyMzowMjo1NyAyMDExICswMTAwCisKKyAgICBGaXggY2FzdGluZyB0dl91c2VjIHRvIGludCB3aGljaCBtYXkgYmUgdG9vIHNob3J0CisKIGNvbW1pdCA4MGVlNDAyMmU1MzRlNjRhYWQ1YTVmMjcxOTI4NDNiNDJhY2I4NWUwCiBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgogRGF0ZTogICBTYXQgTm92IDE5IDA5OjE0OjAyIDIwMTEgKzAxMDAKQEAgLTI3ODIsNiArNzQzMiwxMiBAQAogCiAgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKIAorY29tbWl0IGNkMzJjMmRmZjA2YjliNDUyY2MxOGQ1NTJkMmYyMjM0MDkyYzgyOWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTc6MDkgMjAxMSArMDEwMAorCisgICAgRml4IGZvcm1hdCB3YXJuaW5nCisKIGNvbW1pdCA4ODMxMzZjMmIyZmEwNzM5ZjQzN2E4Y2ZiNjYxNGFjY2M3NmUyNjhlCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBXZWQgTm92IDE2IDIzOjE1OjU4IDIwMTEgKzAxMDAKQEAgLTI3OTQsNiArNzQ1MCwxMiBAQAogCiAgICAgRml4IHVzaW5nIGNoYXIgYXMgYXJyYXkgaW5kZXggKGN0eXBlLmgpCiAKK2NvbW1pdCA4NDUyOWU2MzIwYTg5ZDk3ZjEzMTRhZWJhZDgwNjI1NWQyYTFiMThjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjAwOjU3IDIwMTEgKzAxMDAKKworICAgIEZpeCBtaXNzaW5nIGZvcm1hdCBmb3IgRnJlZUJTRCA0CisKIGNvbW1pdCA0YmQwMzUyOTU1YTI1NTFiZmUwMjMwOGRkMTM0YjkxMjhjOThiOWU5CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBXZWQgTm92IDE2IDIyOjU5OjM2IDIwMTEgKzAxMDAKQEAgLTI4MDYsNiArNzQ2OCwxMiBAQAogCiAgICAgRml4IHNpemVfdC9pbnQgbWlzbWF0Y2hlcwogCitjb21taXQgYTRkYjlmOWZjMTNkMjFlY2ZmNDg4ZWI0MTAzNzZlZGRhNmMyODIzMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAxMzo0MzozNCAyMDExICswMTAwCisKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcworCiBjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIERhdGU6ICAgV2VkIE5vdiAxNiAxMzozNzo0OSAyMDExICswMTAwCkBAIC0yODQ4LDYgKzc1MTYsMTggQEAKIAogICAgIERvbid0IHRyeSB0byBpbnN0YWxsIGFuIGVtcHR5IGxpc3Qgb2YgbWFuIHBhZ2VzIChNQU4zKQogCitjb21taXQgYmE2MTk4MDRlNTk3OGE4ZGY3NTQ4NDRlZmNjYTUyYjY5YjUwMTVmYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE5vdiAxNCAxMzozNDoyMCAyMDExICswMTAwCisKKyAgICBNaW5HVzogTWFrZSBzdXJlIHRoYXQgdGhlIGJhY2tzbGFzaGVzIGluIHRoZSBwc2tpbGwgbWVzc2FnZSBhcmUgZGlzcGxheWVkLgorCitjb21taXQgOTIzZWVjYzUwN2Y3NTA0M2I2MGM1ZTY4MDUzYTRmMzk2YWIwYjBkMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE5vdiAxNCAxMjozNjozOCAyMDExICswMTAwCisKKyAgICBDb21waWxlciB3YXJuaW5nIGZpeCBmb3Igc3lzdGVtcyB3aGVyZSB1aW50NjRfdCA9IHVuc2lnbmVkIGxvbmcgKGUuZy4gUkhFTCA2LjEveDg2XzY0KQorCiBjb21taXQgNDM0YmZjMWY3NDU3NTUwYjZmODdkNWJjZDUxMTI3NmIyNzBiNTk2NAogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIE1vbiBOb3YgMTQgMTE6MjI6NTMgMjAxMSArMDEwMApAQCAtMjg2OCw2ICs3NTQ4LDEyIEBACiAKICAgICBOZXRCU0QtNjogT25lIG1vcmUgaW5zdGFuY2Ugb2YgdGltZXNwZWMgcmVwbGFjaW5nIHRpbWV2YWwKIAorY29tbWl0IDhhZDZjNTNmZGVjNWFkZWFlNGU1MmYxNzUxZWNlYzRhMzQ1YmFiMDUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMTEgMTg6NTk6MDEgMjAxMSArMDEwMAorCisgICAgRml4IGJ1aWcgIzM0MzY1Mjc6IGFycF9uZXRsaW5rOiBmaXggZHlpbmcgcmVsb2FkIG9mIGNhY2hlCisKIGNvbW1pdCAzNzhmZmVkMDNiYTc5YTgzNDZkNmM2Mjc4MWUyZGRmNWNlOTJhNDc4CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBGcmkgTm92IDExIDE4OjU1OjQzIDIwMTEgKzAxMDAKQEAgLTI5MDYsNiArNzU5MiwxNCBAQAogCiAgICAgQ0hBTkdFUzogdGVzdGluZzogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQogCitjb21taXQgZTIyMWU2NWZkYzFjNjhmMTk2ODY1MTcxN2RjYzljY2ZiNjQxNDc4MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE5vdiAzIDE1OjA1OjAwIDIwMTEgKzAxMDAKKworICAgIEZpeCB3YXJuaW5ncyBhYm91dCBjb252ZXJ0aW5nIHNvY2thZGRyX2luICogaW50byBzb2NrYWRkciAqLgorICAgIAorICAgIFRoaXMgaXMgYSBmb2xsb3ctdXAgZm9yIGNvbW1pdCBhMGFmMzg1LgorCiBjb21taXQgMmU3ZTllZGEwYjBkNjJhNzY0NWE5YThmNzBlZjNmYjZmM2RkNjk0MQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgVGh1IE5vdiAzIDExOjE3OjQ4IDIwMTEgKzAxMDAKQEAgLTI5MzIsNiArNzYyNiwxMiBAQAogCiAgICAgZHNrSW5kZXggd2FzIG9mZiBieSBvbmUKIAorY29tbWl0IGE1YjI4ODI5ZTY0ZDVmM2I4N2U0YjliMWVmOGNjMjA0ZjMzYTYxYjcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMiAyMToyNTowNyAyMDExICswMTAwCisKKyAgICBTb2xhcmlzIG5lZWRzICRBV0sgdG8gZ2V0IGEgdXNhYmxlIG5hd2sKKwogY29tbWl0IDI4MDFhMjEzOWYyNzAyMWUxYWIxNWUzNjJlMmQzZDYyNGZmYWE0OTQKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIE1vbiBPY3QgMzEgMjI6NTU6NTMgMjAxMSArMDEwMApAQCAtMjk3MSw2ICs3NjcxLDIwIEBACiAgICAgCiAgICAgVGhpcyBpcyBhIGJhY2twb3J0IG9mIGNvbW1pdCA5ZjY1M2Y3LgogCitjb21taXQgMmNjOTUwNGI5YmI4NjI1Yjk0YmU2Y2RhN2U2MDk5M2QwNTljZDkyOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCAyNiAwOTowMToyMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDM0Mjg1MDY6IEZpeCBuZXRzbm1wX2dldGhvc3RieWFkZHIoKQorICAgIAorICAgIFRoaXMgcGF0Y2ggc2hvdWxkIGZpeCB0aGUgcmVncmVzc2lvbnMgaW50cm9kdWNlZCBieSBjb21taXQgODVkOTZjNCAoTWF5IDEzLCAyMDExKS4KKworY29tbWl0IDliNDI3YjM1M2YxY2ViOGZlODdlNmZjOGVkM2I2Y2ZhYjNjZTdmMjAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBPY3QgMjcgMDg6MjA6MDAgMjAxMSArMDIwMAorCisgICAgTWluR1c6IEF2b2lkIGNvbmZ1c2lvbiBiZXR3ZWVuIE1pbkdXJ3Mga2lsbC5leGUgYW5kIHRoZSBTeXNJbnRlcm5hbHMgcHNraWxsLmV4ZQorCiBjb21taXQgMmM0NWY5MmNmY2I1YjA1ZTA0OTIyNmE1YTc4ODNhMGIxMDYwMTFhZQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgV2VkIE9jdCAyNiAxMDo0MjoyOSAyMDExICswMjAwCkBAIC0zMDIzLDYgKzc3MzcsMzkgQEAKICAgICAKICAgICBUaGUgbWVzc2FnZSBpcyBzaG93cyB1cCB3aGVuIHNubXBkIGlzIHN0YXJ0ZWQgYW5kIHRoZXJlIGlzIGRpZmZlcmVudCBzZXQgb2YgbmV0d29yayBpbnRlcmZhY2VzIHRoYW4gaXQgd2FzIHdoZW4gc25tcGQgd2FzdCBsYXN0IHN0b3BwZWQuIFRoaXMgaXMgY29tbW9uIG9uIHBwcC1zZXJ2ZXJzIG9yIHZpcnR1YWwgaG9zdHMuCiAKK2NvbW1pdCAyNTBmNjk4ZTU5ZWFiOWYxZmZkMzMyZmY1OWZkYjcyZWEwZGYwNmZmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIzIDA4OjUxOjIzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIHRoZSB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBjb2RlIHdvcmsgYWdhaW4KKyAgICAKKyAgICBQcmV2aW91c2x5IHRoZSB0cmFuc3BvcnQgaW5oZXJpdGFuY2UgcHJvY2Vzc2luZyBjb2RlIHJhbiB3aXRoCisgICAgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HIHNldC4gSW4gdGhpcyBtb2RlIHRoZSBmaWxlIG5ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oCisgICAgaXMgcmVxdWllcmVkLiBUaGF0IGZpbGUgaXMgY3JlYXRlZCBkdXJpbmcgdGhlIGZpcnN0IG1ha2UgcnVuLCBhbmQgdGhhdCBoYXBwZW5zCisgICAgYWZ0ZXIgY29uZmlndXJlIGlzIHJ1bi4KKyAgICBDaGFuZ2UgdGhpcyB0byB1bmRlZmluZSBORVRTTk1QX01JTklNQUxfQ09ERSwgZWZmZWN0aXZlbHkgdHVybmluZyBvZmYgZmVhdHVyZQorICAgIHN1cHBvcnQgZHVyaW5nIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIGluIG9yZGVyIHRvIG1ha2UgaXQgd29yayBhdCBhbGwuCisKK2NvbW1pdCA2ZWY2OTA3NjQyMjQ3YzY2M2I5Yjg5NjRiOWZkNDRhMjExZGJjYWE3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgT2N0IDIwIDIwOjMwOjU0IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0MDgzOTg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuCisgICAgCisgICAgVGhpcyBtZW1vcnkgbGVhayB3YXMgaW50cm9kdWNlZCB2aWEgY29tbWl0CisgICAgOWJmM2Q5NmQ5NmE4ZWNkNGE1ZmMzNWMzMjZkYzkzNzQ2NzAwMmI2YzogSW5pdGlhbCBIQUwKKyAgICBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lzdGVtIGluZm9ybWF0aW9uIChNYXJjaCA3LCAyMDA4KS4KKworY29tbWl0IGNmODJiODk0YjIyMTdjMjZlZGM2ZjEzNTYzNTFjOTMyNDE1NjA0ZTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBPY3QgMTUgMTQ6NDU6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzNDIzOTE1OiBDaGFuZ2UgZGVmYXVsdCBudW1iZXIgb2YgcmV0cmllcyBiYWNrIGZyb20gMCB0byA1CisgICAgCisgICAgVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIHZpYSBjb21taXQgNmNhYzA1MCAoTWF5IDUsIDIwMTEsCisgICAgYWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyB0aGUgZGVmYXVsdCBudW1iZXIgb2YgcmV0cmllcyBpbgorICAgIHNubXBkLmNvbmYpLgorCiBjb21taXQgYzExYWRhYTEyOTE1YWJmZWU2MjliYjZjMDI2YzIxZjIxODViMjE2ZQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgTW9uIE9jdCAxNyAxMDoyNDo0NiAyMDExICswMjAwCkBAIC0zMDM1LDEyICs3NzgyLDI2IEBACiAKICAgICBDSEFOR0VTOiBXaW4zMjogQXZvaWQgdGhhdCB0aGUgUEFDS0FHRV8qIG1hY3JvcyBkZWZpbmVkIGluIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2F1c2UgdHJvdWJsZSB3aGVuIGluY2x1ZGluZyB0aGlzIGhlYWRlciBpbiBhIHBhY2thZ2UgdGhhdCB1c2VzIHRoZSBHTlUgYXV0b3Rvb2xzLgogCitjb21taXQgNjY0ZDNhZTEwN2Q3NTQwNTFiOGM0MjI3OWQ0NTlhYTU3YTFiZTFjMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxNjo0NzoxNiAyMDExICswMjAwCisKKyAgICBNaW5HVywgaHdfZnN5czogVXNlIHByb3BlciBmb3JtYXQgc3BlY2lmaWVycyBpbiBhIGRlYnVnIHN0YXRlbWVudC4KKyAgICAKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGludHJvZHVjZWQgaW4gY29tbWl0IDc2ZmYyNWQuCisKIGNvbW1pdCAyMTFkY2I0OTMwNjU2MWUzNWJhM2MyMTNiZTdjZmEyNTdiNDBhOGU1CiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBNb24gT2N0IDEwIDE1OjUyOjQzIDIwMTEgKzAyMDAKIAogICAgIEF2b2lkIHRoYXQgZ2NjIDQuNiBjb21wbGFpbnMgYWJvdXQgc2V0IGJ1dCBub3QgdXNlZCB2YXJpYWJsZXMKIAorY29tbWl0IDlmNjUzZjczZTVhYTcwZjBiZWYxMTc0NjMyZTk1NTk0Zjg3ZjY2OWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTM6MDI6MjUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkX3NxbDogQXZvaWQgdGhhdCBhIGxpbmtlciBlcnJvciBpcyB0cmlnZ2VyZWQgb24gc3lzdGVtcyB3aGVyZSBteV9wcm9nbmFtZSBpcyBtaXNzaW5nIGluIGxpYm15c3FsY2xpZW50IChlLmcuIEZlZG9yYSAxNSBhbmQgMTYpLgorCiBjb21taXQgNGM4M2I5MjI5YTc0NTRmMzRmNmZmNzVmNjllNjdlNDAzMGM0MTliNQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgRnJpIE9jdCA3IDE1OjU4OjQ1IDIwMTEgKzAyMDAKQEAgLTMwNTYsMTIgKzc4MTcsNDcgQEAKICAgICBkeW5hbWljIGxpYnJhcmllcyBhbmQgcnBhdGhzLCBzZWUgYWxzbyB0aGUgZG9jdW1lbnQgd2l0aCB0aGUgdGl0bGUKICAgICAiUnBhdGhJc3N1ZSIgb24gdGhlIERlYmlhbiB3aWtpIChodHRwOi8vd2lraS5kZWJpYW4ub3JnL1JwYXRoSXNzdWUpLgogCitjb21taXQgODkyNWM5MTJkMjYzOTc1MmE4NGJjZmZlZWYxYjcwYTgxMDI2NDQ5YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE0OjIxOjI4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBIT1NULVJFU09VUkNFUy1NSUI6IEFkZCBtaXNzaW5nIGJyYWNlIGluIGEgZGVidWcgc3RhdGVtZW50CisKK2NvbW1pdCA3NmZmMjVkOWJmOTc1NzllNzIxMzEwMjA2NWZkNTA5NmYwNDlhNGM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDcgMTQ6MTM6MTggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEhPU1QtUkVTT1VSQ0VTLU1JQjo6aHJTdG9yYWdlVGFibGU6IGZpeCBidWcgaW4gaGFuZGxpbmcgbGFyZ2UgZmlsZXN5c3RlbXMsIHdoZXJlIGxhcmdlIG1lYW5zIGFib3ZlIDggVEIgKD0gMioqMzEgKiA0MDk2IGJ5dGVzKS4KKyAgICAKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0CisgICAgNzFkODI5M2YzODdhNmNkNjZiYjBkYmIxM2MwZjUwMTc0ZDJlNjc4Yi4KKyAgICBGb3IgdGhlIG9yaWdpbmFsIGJ1ZyByZXBvcnQsIHNlZSBhbHNvCisgICAgaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/ZnVuYz1kZXRhaWwmYXRpZD0xMTI2OTQmYWlkPTM0MTk4MjUmZ3JvdXBfaWQ9MTI2OTQuCisKIGNvbW1pdCA4NjYwMzNkYjk5MDRmZmIxMjAzZjI4M2Y4MzgwOTJlNGNmNjhkZTZiCiBBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgogRGF0ZTogICBUaHUgT2N0IDYgMDc6MzM6MjcgMjAxMSArMDIwMAogCiAgICAgQ0hBTkdFUzogc25tcGQ6IFJlbW92ZSBzcHVyaW91cyAjZW5kaWYgdGhhdCBzZWVtcyB0byBiZSB0aGUgcmVzdWx0IG9mIGEgbWlzbWVyZ2UuCiAKK2NvbW1pdCAyMGY0ZjMyNjdlZTIwZDU1NzA1YjdhNDM3ODk4NzljMTAzZjk2NjIwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgT2N0IDYgMDA6MDg6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCBtaXNzaW5nIGVuZCBjb21tZW50cyB0byBmZWF0dXJlIGlmbmRlZnMuCisKK2NvbW1pdCBlNWRlMmNjNTdiZjMwNGYzMzIwY2FkMDAzNGQyZWEyZDhhZWRjNDM2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDUgMDk6MTU6MTAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IExvZyBhIG1vcmUgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZSBpZiBlbWJlZGRlZCBwZXJsIGluaXRpYWxpemF0aW9uIGZhaWxzCisKK2NvbW1pdCA1ZWVmOTk5MGRlMjhmNjMxMTFlNmMwOTNiZTBmM2M3YWUyZDUxM2ExCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDUgMDg6NDU6NDkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogQWRkIGFnZW50Ojp1cHRpbWUoKQorCiBjb21taXQgNjgxMGVkNDJmOWJjNTYwNzUwZDZkYmZiN2U1MGI2ZTJhYzExODk5YwogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgRnJpIFNlcCAzMCAxMTowMToyMyAyMDExICswMjAwCkBAIC0zMDc0LDYgKzc4NzAsMTIgQEAKIAogICAgIENIQU5HRVM6IFBBVENIOiAzNDE4NjQ5OiBIT1NULVJFU09VUkNFUy1NSUI6IFVzZSBwY2xvc2UoKSBpbnN0ZWFkIG9mIGZjbG9zZSgpIHRvIGNsb3NlIGEgcGlwZS4KIAorY29tbWl0IDY1OTE5MzdhZGI4NTAwMGMyNzA2OWM0YmU4NGNmNDY4ODgzOGViY2QKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxNjoxODowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogQWRkIGRlcGVuZGVuY2llcyBvbiBARkVBVFVSRVRBUkdTQCB0byBtYWtlIHRoZSBzdWJ0YXJnZXQgd29yayBhcyB3ZWxsLgorCiBjb21taXQgYjljODAxMmVjMDM1YmMwODRmMTc1ODc2ZmVjYzM3NTE5NWY5YmU4MQogQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KIERhdGU6ICAgU3VuIE9jdCAyIDE0OjAyOjU4IDIwMTEgKzAyMDAKQEAgLTMxMjYsMjQgKzc5MjgsMjI2IEBACiAgICAgZXJyb3IgYW5kIHRoZW4gZmlndXJlcyBvdXQgdGhhdCB0aGVyZSBpcyBubyB1c2FibGUgbmxpc3QuaCBhbmQgaWdub3JlcyBpdAogICAgIGZvciB0aGUgZnV0dXJlLgogCitjb21taXQgYWMzOGNiNTMxYmVlNTBlZGM4ZDRjODM0ZjMwMDVmNTk5MmM3NzFkOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAxOTowMzowMiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBFbmFibGUgc2VuZGluZyBTTk1QdjIgdHJhcHMgd2l0aCBhbiBlbXB0eSB2YXJiaW5kIGxpc3QKKworY29tbWl0IGE3NWRlMjk3MTUyN2FjMmQyZTgxMjAyNDI5ODYwMmJiMjQxMmYzMzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMzAgMTA6NDE6NDQgMjAxMSArMDIwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IFVwZGF0ZSBlbWFjcyBtb2RlbGluZQorCiBjb21taXQgODQ4ZjYzMDBlZmUzODQ5MmZiNDU0NDUxYTAzMGYwYjdlNmZmOGM5ZAogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KIERhdGU6ICAgRnJpIFNlcCAzMCAxMDo0MTo0NCAyMDExICswMjAwCiAKICAgICBwZXJsL1NOTVAvU05NUC54czogVXBkYXRlIGVtYWNzIG1vZGVsaW5lCiAKK2NvbW1pdCBjMTM3NDQ3M2VjZDhlYzllMDMxMDAxMzg2MWVlMThjODNlNWQ2YzViCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgU2VwIDMwIDAzOjI5OjM2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IFByb3RlY3QgdGhlIHVzZSBvZiAkT1NUWVBFIHRvIGVuc3VyZSB0aGF0ICd0ZXN0JyBnZXQgZW5vdWdoIHBhcmFtZXRlcnMuCisKK2NvbW1pdCA3ZTk3YTIwNjMzYTU3ZWFlMzlkMDE1YjIzMzM5NDYzYzMyZjVmODQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDEwOjIyOjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IENvbnZlcnQgc25tcGxpYi90ZXN0X2JpbmFyeV9hcnJheS5jIGludG8gdHdvIHVuaXQgdGVzdHMKKworY29tbWl0IDljMGRkOTgxNzY0NTczNDJmZmZhYTVlNzRkODAyZTMxNDVlZDcwZTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMDg6NTY6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIHVuaXQgdGVzdCBmb3IgbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkKKworY29tbWl0IDVmZDI2ZTRmYTNlMDAwZWE5YzgxYzM4YWI5NzViNzk0NmVmZTIxNTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBTZXAgMjggMTc6NDk6NTUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IEF2b2lkIHRoYXQgbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkgZmFpbHVyZSB0cmlnZ2VycyBhIGRvdWJsZSBmcmVlLgorICAgIAorICAgIEZpeGVzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIHZpYSBjb21taXQKKyAgICBhYTRkNDdjMjYwOWU1MjgxOGM5Y2RmMWE4ZTIyMDVkZTlhMzM1YTBhIChzdm4gcjE5NTE1KS4KKworY29tbWl0IGQyMjUyZDAxNjY5MzgwNzMyNmY3MmI2NjEyMzY0OWRlYTAwYWY5MTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMTA6MjA6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogUmVxdWlyZSBhIHNlbWljb2xvbiBhZnRlciBPSygpLCBPS0YoKSBhbmQgUExBTigpCisgICAgCisgICAgQWxzbywgbGV0IE9LRigpIGVtaXQgYSBzaW5nbGUgbGluZSBvZiBvdXRwdXQgc3VjaCB0aGF0IGFsbCBvdXRwdXQgaXQKKyAgICBwcm9kdWNlcyBpcyB2aXNpYmxlIGluIHRoZSBvdXRwdXQgb2YgIm1ha2UgdGVzdCIuCisKK2NvbW1pdCAxNDIxOTI0YjQ4NTIxNDIxOTJjNWJiOWU5M2RkYmZlZDY5ZTkwOGZhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgU2VwIDIxIDIyOjIwOjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEF2b2lkIHdhaXRpbmcgaW5kZWZpbml0ZWx5IGlmIGEgc2Vzc2lvbiBoYXMgdGltZW91dCB6ZXJvCisKK2NvbW1pdCA1ZjI3ZjRmNzRhZTJiZDViYWY1MDNjZjMwNmI0ZjlhMjg0MWE1N2NmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MzI6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSB0ZXN0IHJ1bm5lcgorCitjb21taXQgMDk3MDM5NThjYzVlYTg0NTkyOWFlMTllZjllMDgwNGFlY2FhNTEyZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyNyAxMjo0Mjo0MSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBdm9pZCBmYWxzZSBuZWdhdGl2ZSBmb3IgVDExNGFnZW50eGFnZW50eHRyYXBfc2ltcGxlIGNhdXNlZCBieSB0aGUgdGVzdCByZXN1bHQgYmVpbmcgcHJlc2VudCBpbiB0aGUgaGV4IGR1bXAgKCJtb3N0bHlfaGFybWxlc3MiKQorCitjb21taXQgNDM5MzAwMjc5ZjZmMzE0Mzg2MzhkMmYyMjJjMjRjM2M4NDFmYTZhYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyNyAxMToxNjozMiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWljcm8tb3B0aW1pemUgYWdlbnQgbW9kdWxlIGRlcGVuZGVuY3kgYW5hbHlzaXMKKyAgICAKKyAgICBUaGlzIG1ha2VzIHRoZSBhZ2VudCBtb2R1bGUgZGVwZW5kZW5jeSBhbmFseXNpcyBjYXJyaWVkIG91dCBieSB0aGUKKyAgICBjb25maWd1cmUgc2NyaXB0IHNsaWdodGx5IGZhc3RlciwgZXNwZWNpYWxseSBvbiB0aG9zZSBzeXN0ZW1zIHdoZXJlCisgICAgZm9yaygpIGlzIGV4cGVuc2l2ZSAoQ3lnd2luKS4KKworY29tbWl0IGJiYzY4MDAwNGExMzc2MDM4ZGZkYzQxNzJkYmU3YjllMzExZmJhNjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBTZXAgMjYgMTA6MTQ6NDUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IHRlc3Rpbmc6IE1ha2UgdGVzdCBUMTMwc25tcHYxdmFjbWdldF9zaW1wbGUgcGFzcworCitjb21taXQgNzBiMDZjZjc4OTIwOGVhYTg5MGJmYmNkNjM4YmRiNzc1ZjgxNzA1NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyMCAwOTo1MDo1NyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiB0ZXN0aW5nOiBwZXJsOiBGaXggYW4gaW5jb3JyZWN0IG1lc3NhZ2UgcHJpbnRlZCB3aGlsZSBydW5uaW5nIHRoZSBQZXJsIG1vZHVsZSByZWdyZXNzaW9uIHRlc3RzCisKK2NvbW1pdCA3MGJjYzhkZTJkMGZjOTJiYmI4NDgxODIzNjMwZmFiOWJjODdhZjc1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDE2IDE2OjE0OjI0IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBPYnRhaW4gdGhlIE1TWVMgcGF0aCBmcm9tIHRoZSBlbnZpcm9ubWVudAorCitjb21taXQgNjI2Mjc1ZTJkMWFjYWZhZTcxNDRhMzNlZDMwMWE0MGY1OTZiMzdiMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIFNlcCAxNCAxMzoxNDoxNyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBSZW1vdmUgc3VwZXJmbHVvdXMgbGluayBsaWJyYXJpZXMgZnJvbSBwcm9qZWN0IGZpbGVzICgqLmRzcCkKKworY29tbWl0IDM4ZmMzY2FhOWVlYjM4MDAyNTRiNGY2YWQ2ZjhmNDc2NGMwZjgzZGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjAgMDk6MzQ6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2NhbGxiYWNrX2FjY2VwdCgpIHJldHVybiAtMSAoZmFpbHVyZSkgaW5zdGVhZCBvZiAwIChTVERJTl9GSUxFTk8pCisKK2NvbW1pdCA2YzhjN2U4YWNhOGZjMmVlYjUyMDEwYWUzZTlmZWU2ZGQ4M2VmNzgwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDEzIDA5OjU4OjI2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFJlbW92ZSBvYnNvbGV0ZSBzbm1wX2dldF9mZF9mb3Jfc2Vzc2lvbigpIGRlY2xhcmF0aW9uCisKK2NvbW1pdCAwODYwZDExZmQ4ZmM1ZGJkYWFhZTIyNjFmYWUyYzA3ZmI5YzJjODJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDggMTM6NTQ6NTUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTVNWQzogQXZvaWQgdGhhdCB0aGUgdHlwZWRlZnMgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjb25mbGljdCB3aXRoIHRob3NlIGluIDxzdGRpbnQuaD4gZnJvbSB0aGUgbXNpbnR0eXBlcyBwcm9qZWN0CisKK2NvbW1pdCBmOGEwMzZmNjNmZjY4ZjA4MzQzNjEyMGUwYWJkNDc4YjY5MmEyZjYxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDggMTM6MjE6MDYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTVNWQzogV2hlbiBsaW5raW5nIHdpdGggT3BlblNTTCwgbGluayB3aXRoIHVzZXIzMi5saWIgdG9vCisKK2NvbW1pdCA4MzZhMjNlMTBjYTgxMGMzODk5OTAyZDMyNTg3NjE2YTlkMTIwM2RmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSnVsIDE0IDE4OjM4OjEzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IE1TVkM6IExpbmsgd2l0aCBwcm9wZXIgbGliZWF5MzIgbGlicmFyeQorCitjb21taXQgN2IwN2ZkNmNkZWY0OWVjN2JiMDRiMTY2ZTJhNGZiYjM3YjU4Mjg0MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDExOjEwOjM4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IFJlbW92ZSBhbiBpbmNvcnJlY3QgY29tbWVudCBmcm9tIHNpbXBsZV9ldmFsX3Rvb2xzLnNoCisKK2NvbW1pdCA5OGY2ZDI5ZDk4MWZmOGU2MDc2MDBjNjNkYWRiMjQwNTM1NjI5ODA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6NDk6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogTWFrZSBJU0RFRklORUQoKSBjaGVjayBmb3IgYW4gZXhhY3QgbWF0Y2ggaW5zdGVhZCBvZiBhIHByZWZpeCBtYXRjaAorCitjb21taXQgNTJjZDAwMzFhMzFmNjkyZjEzMjYzYTk0YzMzNWQwNmJlMTQ1NDgwMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjEyOjU5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHRob3NlIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcyBmb3Igd2hpY2ggU05NUENPTkZQQVRIIGFuZC9vciBTTk1QX1BFUlNJU1RFTlRfRElSIG1hdHRlcgorCitjb21taXQgZjVjZDg5YmQzMzU2ZGQ3NGUxNTU2YzBiNTA5NjZhNjQzZjE5MjA4NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjEyOjU5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdCBmcmFtZXdvcmsKKworY29tbWl0IGRlZWRkNTJjODM0YTY0NDg4NTJhMDY3ODU1MzZlMTM4NjU5Njk2OTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDoxMjo1OCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogU3VwcG9ydCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBvZiByZWNlbnQgU2hpbmluZyBMaWdodCBPcGVuU1NMIGJpbmFyeSBkaXN0cmlidXRpb25zCisKIGNvbW1pdCBkNTViZDRlMDU0OWYwM2I2ZmQzMjU2MmMyYWE3ZmUzOTI3MmE5ZWY3CiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBXZWQgU2VwIDI4IDA2OjU1OjE5IDIwMTEgLTA3MDAKIAogICAgIHJlbW92ZSB0aGUgdjUuNyBmcm9tIHRoZSBmcm96ZW4gbGlzdAogCitjb21taXQgYWMyYWVkM2M5NGJiMmViYjQ3M2FmMGExZTIwZjA1NjFhZDYyOTk1NgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIFNlcCAyOCAwNjo1NToxMSAyMDExIC0wNzAwCisKKyAgICByZW1vdmUgdGhlIHY1LjcgZnJvbSB0aGUgZnJvemVuIGxpc3QKKworY29tbWl0IDQwMDc5MjA1OTY3YjhlNWFlZWRiMTlmYTNjYjJlN2IyZjc5ODg1NzcKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMjE6NTM6NDcgMjAxMSAtMDcwMAorCisgICAgbWFrZSBkZXBlbmQKKworY29tbWl0IGNmMTRhMjI4NTgzYWZmM2M1YWIyZjBkNDRjMmY0YzBmYTViZDY2YWYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMjE6NTM6MTggMjAxMSAtMDcwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xCisKK2NvbW1pdCAxMDE0ZGQ4ZGZiNDhhNWJkMDUzZjA0NTQxZWI5NzI4ZjBiZTA3ZjQ3CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgU2VwIDI3IDIxOjQ1OjA0IDIwMTEgLTA3MDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMQorCitjb21taXQgMThkMTE2YmEzODhjMWRjOTQ5NTI4ODg0YmIwMDY5OGYxYmFjYWE5NAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIFNlcCAyNyAyMToxMTo1MiAyMDExIC0wNzAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xCisKIGNvbW1pdCA0NmVhYzAyZTlhMjdiZjRmMzA2OGU3OTVjYWI4OTFmMDVhODQ4ODcwCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBNb24gU2VwIDI2IDIxOjQ5OjI3IDIwMTEgKzAyMDAKIAogICAgIENIQU5HRVM6IHNubXBkOiBBdm9pZCB0aGF0IHNubXBkIGNyYXNoZXMgaWYgc3RhcnRlZCBvbiBhIHN5c3RlbSB3aXRoIGFub3RoZXIgT3BlblNTTCBsaWJyYXJ5IHZlcnNpb24gdGhhbiB0aGUgb25lIGl0IGhhcyBiZWVuIGJ1aWx0IHdpdGguCiAKK2NvbW1pdCBhNWYwNjRkZDgyOTk2ZTJiZTNmMWU5NjE2NzAzYWQwMzk1ZmI1YWJhCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgU2VwIDIyIDA3OjMzOjAxIDIwMTEgLTA3MDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMS5yYzMKKworY29tbWl0IDU2OTc5NGZjZWI5OWVlZDdiZTgxN2M2NGY4NWNkOTQ1Y2FmOTk1OTIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBTZXAgMjIgMDc6MjA6MDcgMjAxMSAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMS5yYzMKKwogY29tbWl0IGM1NWY2MDhmMTZmMTYwZjVlNzlkYzA1N2Y4ODc4ZGVmNDYyOTczZTEKIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgogRGF0ZTogICBUaHUgU2VwIDIyIDEwOjM1OjI0IDIwMTEgKzAxMDAKQEAgLTMxNTEsNiArODE1NSwxNCBAQAogICAgIEZpeCB0aGUgY29kZSBmb3IgcG9wdWxhdGluZyB0aGUgdGFibGVfdGRhdGEgY2FjaGUsCiAgICAgYW5kIGNsYXJpZnkgYXJlYXMgbmVlZGluZyBNSUItc3BlY2lmaWMgYWRkaXRpb25zLgogCitjb21taXQgMTM3NjNjZjJjNzFiZjkzZmVjMDk2ZWVlMDA0ODU3YzE1YjJjZmZmZgorQXV0aG9yOiBTdGV2ZSBGcmllZGwgPHN0ZXZlQHVuaXh3aXoubmV0PgorRGF0ZTogICBUaHUgU2VwIDIyIDEwOjA2OjQ1IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiAzNDA5NjkyOiBDYWxjdWxhdGUgZGlzayBwZXJjZW50YWdlIHVzYWdlIHZpYSBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljCisgICAgdG8gYXZvaWQgaW50ZWdlciBhcml0aG1ldGljIGVycm9ycy4KKyAgICAoQ29kZSBiYXNlZCBvbiBwYXRjaCwgcmF0aGVyIHRoYW4gYXBwbGllZCB2ZXJiYXRpbSkKKwogY29tbWl0IGVlMGQzYWRiMDc4MjkxYjc0M2M5ZWNiNzZkMjBiNTkxYjdiMTU5NzIKIEF1dGhvcjogU3RldmUgRnJpZWRsIDxzdGV2ZUB1bml4d2l6Lm5ldD4KIERhdGU6ICAgVGh1IFNlcCAyMiAwOTo1ODozOSAyMDExICswMTAwCkBAIC0zMTU5LDYgKzgxNzEsMjQgQEAKICAgICB0byBhdm9pZCBpbnRlZ2VyIG92ZXJmbG93IGVycm9ycy4KICAgICAoQ29kZSBiYXNlZCBvbiB0aGUgc3VibWl0dGVkIHBhdGNoLCByYXRoZXIgdGhhbiBhcHBsaWVkIHZlcmJhdGltKQogCitjb21taXQgMzY3ZGExNGZjZGIxNDY1OTJkZTY3YzFkNjk5N2EwOTc3NDI1OTY3MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyMiAwODowOToxNyAyMDExICswMjAwCisKKyAgICBUaGUgb25seSBjaGFuZ2UgYmV0d2VlbiBWNS43LnJjMSBhbmQgVjUuNy4xLnJjMiBpcyB0aGUgdmVyc2lvbiBudW1iZXIuIE1ha2UgdGhpcyBjbGVhciBpbiB0aGUgQ2hhbmdlTG9nIGZpbGUuCisKK2NvbW1pdCBjMjc2ZWViOGYwNDU1YTA4NzBjNGI0NzhkZGU2NDhlODY1MjlhZGQzCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgU2VwIDIxIDEzOjUxOjU4IDIwMTEgLTA3MDAKKworICAgIGNoYW5nZWxvZyB1cGRhdGUKKworY29tbWl0IDYzMDUwODM4NjY2ZjY0NWZjMzA2ZGMyZWU0ZjczZjVlZmNlNjNmZWQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBTZXAgMjEgMTM6Mzg6MTggMjAxMSAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMS5yYzIKKwogY29tbWl0IGJiZTJjMTlhMDFlY2VjMDI0Zjc0MWUyZTU0NzAxYWU2MjEyZjRjM2UKIEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CiBEYXRlOiAgIFN1biBTZXAgNCAxNDo0NDozOCAyMDExICswMjAwCkBAIC0zMTc1LDYgKzgyMDUsMzAgQEAKIAogICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBDb3JyZWN0IGRlcGVuZGVuY2llcyAtIHNpbmNlIGJmNzRmZWE2OWYyNGRjNmU4NWY5MDhmM2Y0MWQxNDI2YjJlMDk2ODggc25tcGNvbmYgaXMgbG9jYXRlZCBpbiBidWlsZGRpciwgbm90IHNyY2RpcgogCitjb21taXQgNzgzNTk2NGQzNTkzZTVjNmExYWU3ZGUwYjQxMTRiN2RmMWFlMGZlMQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAzMCAxOToyMTo1MSAyMDExIC0wNzAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LjEucmMxCisKK2NvbW1pdCBjYjZhMGMwYmQ2ZjhjMmM3Y2Q1ZmQ4NjA4MGRjNjMyNGU3ZjczODU4CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDE5OjIwOjM1IDIwMTEgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMS5yYzEKKworY29tbWl0IGU1ZmYyZWI4M2JiYmVkOTJkYWM3NTFjNWE2NjQzZDc4ZjgzN2NmOWMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMzAgMTk6MTk6NDYgMjAxMSAtMDcwMAorCisgICAgZml4IEMrKyBjb21tZW50CisKK2NvbW1pdCBjYjFmNWNmZmM2ZmI1MmMyYTZjMGY3YjQwOGFmZWI0N2ZjZmU1NWU0CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDE5OjA5OjU2IDIwMTEgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEucmMxCisKIGNvbW1pdCA0MjJiMDgyYTk1OTNjYTljNjVhYWM0NDllNmQxMjhhOWU5N2U5NGZiCiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBUdWUgQXVnIDMwIDE5OjA2OjU2IDIwMTEgLTA3MDAKQEAgLTMyMjUsMTIgKzgyNzksNzIgQEAKIAogICAgIEFwcGFyZW50bHkgSVJJWCBoYXMgYSBkaWZmZXJlbnQgQVBJIGZvciBzdGF0ZnMKIAorY29tbWl0IGY3ZTIxZjI2MzMzOTBiN2EyN2M1MDIyN2JlZTZkODY5NmFlM2ZiY2YKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMjkgMTY6MDE6MzEgMjAxMSAtMDcwMAorCisgICAgZG9uJ3QgcHJvdmlkZSBhIGZlYXR1cmUgd2hlbiB5b3VyIGEgY2hpbGQgb2YgYW5vdGhlciBmZWF0dXJlCisKK2NvbW1pdCBjYWMyM2MwYjI1NzRlNzI4MGJkMTI4YzYyMjY4NzVhZDBmNmI0YmZjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gQXVnIDI4IDA5OjM4OjE0IDIwMTEgKzAyMDAKKworICAgIE1ha2Ugc3VyZSB0aGF0IGZlYXR1cmUtZGV0YWlscy5oIGV4aXN0cyBiZWZvcmUgdHJ5aW5nIHRvIGluY2x1ZGUgaXQKKworY29tbWl0IDc4MWY0Y2UyYWNiMzcxNTYwNzk3ZDhiMjlhODllZDA2NzRlOTM1ZjgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBBdWcgMjggMDk6MzY6MzYgMjAxMSArMDIwMAorCisgICAgVXNlIHRoZSBmZWF0dXJlIHRhcmdldCBpbnN0ZWFkIG9mIHRoZSB0YXJnZXQgd2hlbiBidWlsZGluZyB0aGUgZmVhdHVyZSBzZXQKKworY29tbWl0IDExYmZmNDcyY2E3YjFmY2ZmMGMxNjE4N2ExYjhhMTMwOTNiYzkxYzQKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMjkgMDA6MzM6NTUgMjAxMSArMDIwMAorCisgICAgdGhlIGlyaXg2IGJ1aWxkIG9ubHkgZGVmaW5lcyBpcml4Niwgbm90IGlyaXgKKworY29tbWl0IDNjNzNhMTQwN2EwODFkNDJlYmRkOTFkZmJjYjFlNGYxNTJiN2RmNGEKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgMjkgMDA6MDU6MTMgMjAxMSArMDIwMAorCisgICAgcmUtYWRkIHNvY2thZGRyX3VuLnN1bl9wYXRoIGNvbmZpZ3VyZSBjaGVjayAobG9zdCBpbiBwcmV2aW91cyBjb21taXQpCisKK2NvbW1pdCAyZTNmMDJlMDNhZWQxMjUzODRiYTRmZTNkODM0OTRkNDNmM2EyOWU5CitBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gQXVnIDI4IDIzOjUzOjMwIDIwMTEgKzAyMDAKKworICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYyBkb2Vzbid0IGJ1aWxkIG9uIElSSVggeWV0CisKIGNvbW1pdCBmOTVhYTMxMzc3ZDU3MmIwNDliMGIzMTZkYmIxNjNiZjdhY2E5M2Q1CiBBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBTdW4gQXVnIDI4IDIzOjI1OjQwIDIwMTEgKzAyMDAKIAogICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBidWlsZCBmaXggZm9yIHN5c3RlbXMgbGFja2luZyBmaWVsZHMgbXNnX2NvbnRyb2wvbXNnX2ZsYWdzIGluIHN0cnVjdCBtc2doZHIgKGJhY2twb3J0KQogCitjb21taXQgN2Y0N2Q5Mzc2NWFhMzVhNTg2ODdlYjliNGY5ZjcwMGU0MzQzZTEzYworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyAyNiAxMToxMTozNSAyMDExIC0wNzAwCisKKyAgICBhZGRlZCByZXF1aXJlZCBmZWF0dXJlcyBmb3IgbWZkIGhhbmRsaW5nCisKK2NvbW1pdCA5YjJlNDJhNmUwNTUwZmI3ODljNjA3YzM1MjA4ODBkNGRiYzBjZjI0CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgQXVnIDI2IDExOjA4OjA5IDIwMTEgLTA3MDAKKworICAgIGFkZGVkIC5mdCBhbmQgLmZ0LjEgZm9yIGZlYXR1cmUgZmlsZXMKKworY29tbWl0IDMzZGNiZjU2ZmMwNjI2YTNlNGYxMzU5MDk1YmQyMTdkMWE1Njc3OTQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBdWcgMjYgMTE6MDc6NTggMjAxMSAtMDcwMAorCisgICAgbm9fd3JpdGVfc3VwcG9ydCBzdXBwb3J0ZWQKKworY29tbWl0IDk3ZDQyZWZkNzY5MzdjZTdlNGJjNDhhNzJlZDVhMTEwZTQyMzEwMmQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBdWcgMjYgMTA6MDg6NTEgMjAxMSAtMDcwMAorCisgICAgaGFuZGxlIG5vLXdyaXRlLXN1cHBvcnQgd2l0aCBpZmRlZnMKKwogY29tbWl0IGVhOGJlZDc5ZTgxYzQyZTMzY2JmMzdjYTZmM2MwM2M1NDk5ODdiMjIKIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFRodSBBdWcgMjUgMDY6NTY6MjIgMjAxMSAtMDcwMApAQCAtMzI0Myw2ICs4MzU3LDIxIEBACiAKICAgICB1c2UgPj4gdG8gcHJpbnQgdG8gc3RkZXJyCiAKK2NvbW1pdCBjZWUwMzU5YzZmYWUyYjg1ZDdiOTMxODU5ZTUxN2Q4OWNlMDcyMmJiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyMyAyMzo0MzoxOSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZDogRG8gbm90IGdlbmVyYXRlIGFuIG91dHB1dCBmaWxlIG9uIGZhaWx1cmUKKyAgICAKKyAgICBtYWtlIHN1cHBvc2VzIHRoYXQgbm8gb3V0cHV0IGlzIGdlbmVyYXRlZCBpZiB0aGUgY29tbWFuZCBmYWlsZWQuIENoYW5nZQorICAgIGZlYXR1cmUtcmVtb3ZlIHRvIGZvbGxvdyB0aGF0IHByZXN1bXB0aW9uLgorCitjb21taXQgZmUzOWU3Mjg4Y2E5MzBkMmM5YWFhODMwMWNjOWQ5NWYwYzM4ZjM2YgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBBdWcgMjEgMjE6NDg6MTcgMjAxMSArMDIwMAorCisgICAgQ29ycmVjdCB0eXBvCisKIGNvbW1pdCAxZjA4MmEzMWNkMTM4ZjFmNWUyN2JlNmQ5MGExZDU3OTBkYzBmZmU0CiBBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBUdWUgQXVnIDIzIDIzOjM1OjQyIDIwMTEgKzAyMDAKQEAgLTMyNjcsNiArODM5NiwxMiBAQAogCiAgICAgYXV0b3JlY29uZgogCitjb21taXQgMWEyNjQ4ZWFmNzFjYjAxODk1MTU5NjY4OWM1MTU4OGRjYTgwNjNjNQorQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEF1ZyAyMSAwMTo0ODo1NyAyMDExICswMjAwCisKKyAgICBhdXRvcmVjb25mCisKIGNvbW1pdCAzZjJmNjFiMGU2MTNkNjEwNWVjZjJjZWIzOTVkZTBiZGUzN2YzY2UzCiBBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogRGF0ZTogICBTdW4gQXVnIDIxIDAxOjQ3OjEzIDIwMTEgKzAyMDAKQEAgLTMyODUsNiArODQyMCwyNCBAQAogCiAgICAgZml4IGJyb2tlbiBsaW5lIHdyYXAKIAorY29tbWl0IDViNTkwMGE0ZjdkZmVlNmUxZWM4NjllMzIzMTBiODBjYTZmYjIzZmUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgMTggMTI6Mjg6MDcgMjAxMSAtMDcwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xLnByZTIKKworY29tbWl0IDNiN2UyZTM5OTQ5Zjg4ZDljNTZlZDVmOTk0MDI4Yjk0ODE2YWI3NWMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgMTggMTI6MjM6MjggMjAxMSAtMDcwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNy4xLnByZTIKKworY29tbWl0IGVjZTYzYmZlNDk5YzYzMGJkYWFlNjIwMDY0OGQyOTE4MGNlM2ExNzkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgMTggMTI6MDM6MTcgMjAxMSAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMS5wcmUyCisKIGNvbW1pdCAyOGI1NDA3MDUxNDc1M2U4ZDhhYmI3MThiMjI0ZDY1N2FiN2E4YWI4CiBBdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiBEYXRlOiAgIFRodSBBdWcgMTggMTE6NDk6NTYgMjAxMSAtMDcwMApAQCAtMzMxMyw2ICs4NDY2LDE4IEBACiAKICAgICBjaGFuZ2VkIGNsaWVudGFkZHIgc28gaXQgcmVnaXN0ZXJzIGFzIHByZS1taWIgdG8gYmUgcGlja2VkIHVwIGJlZm9yZSB0aGUgdHJhbnNwb3J0cyBnZXQgY3JlYXRlZAogCitjb21taXQgYzAyMTMxZTViMzVkMjk2NzU1YmFlYzk5YmQzNjMyMDVhODYzMDdkZAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEF1ZyAxNyAwOTozNDowMCAyMDExIC0wNzAwCisKKyAgICBkZXRlY3QgcmVhbGx5IG9sZCB2ZXJzaW9ucyBvZiBMb25nLnBtCisKK2NvbW1pdCA1MDBkNmRlMDZhYTRmZjMzMGFlZTRkNzQ5YTRjYzM3N2JlYzg5ZTA5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgQXVnIDE3IDE4OjExOjQ3IDIwMTEgKzAyMDAKKworICAgIEZpeCB0aGUgbG9nIG1lc3NhZ2UgdGhhdCByZXBvcnRzIHRoYXQgZ2V0aG9zdGJ5YWRkcigpIGlzIG1pc3NpbmcKKwogY29tbWl0IDY1ODA1NTZjYzdiZDgzM2FmNzMxYjYyY2UxZWQyMDE3NTY0ZmU3ZWIKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CiBEYXRlOiAgIFdlZCBBdWcgMTcgMTg6MDg6MDEgMjAxMSArMDIwMApAQCAtMzMyNyw2ICs4NDkyLDEyIEBACiAgICAgCiAgICAgVGhpcyByZXZlcnRzIGNvbW1pdCBjMWI1YTAzMGQ4ZjA0ODc2Y2Q1YjlhZjAwOGM4NzljYzQ2OGIyMTJmLgogCitjb21taXQgZGFmZjQ5ZDliMzM2OWVmY2M4N2YwNWRjODU5MTM2MmU4MWE0NWZkZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEF1ZyAxMyAxODo0Mzo0OCAyMDExICswMjAwCisKKyAgICBXaW5kb3dzOiBNYWtlIHRoZSBQZXJsIGFnZW50IG1vZHVsZSB3b3JrIGFnYWluIHdpdGggdGhlIG9yaWdpbmFsIFNOTVBfRlJFRSgpIGRlZmluaXRpb24uCisKIGNvbW1pdCAzYzczYjQ4MzhlNjA1YjE1MGJjMzE3MzEzZjE0ZWIzMzQ0NDcyOWY4CiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBTYXQgQXVnIDEzIDE3OjM4OjI3IDIwMTEgKzAyMDAKQEAgLTM0ODYsMTMgKzg2NTcsNiBAQAogCiAgICAgZml4IEMrKyBjb21tZW50cwogCi1jb21taXQgZDUzOGJjYmNjZTYzZTE4OTM1NzJkOGYxNTgzZmRjMDJmMzUxZjg0ZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+Ci1EYXRlOiAgIE1vbiBBdWcgOCAyMjowNzo0MyAyMDExICswMTAwCi0KLSAgICBEZWZpbmUgX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiB0b2tlbgotICAgIChhcyBwZXIgQWxleCcgYnVpbGQgaW5zdHJ1Y3Rpb25zKQotCiBjb21taXQgNDQ3ZGRjNjZkOTBkZDllNWMzMTA1YjI2OGI2YTYzYmZjNTgwYjkyNAogQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CiBEYXRlOiAgIE1vbiBBdWcgOCAyMjowMzo1OCAyMDExICswMTAwCkBAIC0zNTA3LDU4ODMgKzg2NzEsMjU4NjIgQEAKICAgICBEZWZpbmUgX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiB0b2tlbgogICAgIChhcyBwZXIgQWxleCcgYnVpbGQgaW5zdHJ1Y3Rpb25zKQogCi1jb21taXQgZmZhMDViMDUxYWMzZTJiMTk3MTk1YTk5ODljYzdhOTFmZThkOTI4MgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LjEgLT4gVjUuNy4yLnByZTEKKworY29tbWl0IDgxMDE4NWFlMGIwY2QyYWQ0ZDQyNGExYmE3NzVlZjVjZWFmNTBmMDMKIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxMzo1NTozOCAyMDExIC0wNzAwCitEYXRlOiAgIFNhdCBKdW4gMiAwOToyNDoxOSAyMDEyIC0wNzAwCiAKLSAgICBhIG5ldyBtYWNybyBuc2F1dG9jb25mIHRvIHJ1biB0aGUgcmlnaHQgdmVyc2lvbgorICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMi5wcmUxCiAKLWNvbW1pdCBiNDUxNjA3ZGNhMDE1YzExMWU5NmZkZmViMmRkYjA2NjFmYjRmNzI0Citjb21taXQgNjI3MTQ3MWUwMTI4MmYzNjc1NzI0ZWFmMTM1OGNlYjBlOTVkZGQ0ZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEp1biAyIDA4OjMyOjQwIDIwMTIgLTA3MDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjIucHJlMQorCitjb21taXQgZmNiNzgyYWE4ODkzMTM0Yzc0MTRhOTI2ZDkyNjg1OTRmNzI1YjkxNQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEp1biAyIDA4OjMyOjE4IDIwMTIgLTA3MDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMi5wcmUxCisKK2NvbW1pdCBlM2JjZDg3YzcyZmNlYTc3MDZlODY4YjVhY2U3NTI5NjA5M2Y3NDk3CiBBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KLURhdGU6ICAgTW9uIEF1ZyA4IDIxOjIwOjMyIDIwMTEgKzAxMDAKK0RhdGU6ICAgVGh1IE1heSAzMSAxNDowOTo0MiAyMDEyICswMTAwCiAKLSAgICBGaXggY2FwaXRhbGlzYXRpb24gb2YgTmV0LVNOTVAKKyAgICBGaXggZGlzdC9yZWxlYXNlIGZvcm1hdAogCi1jb21taXQgYzk0ODEzMDQ0YTRjNGE2MDhlOThlODAyMjMwNzVjNmZhZjA0ZWUxMQorY29tbWl0IGQ4MTNjZTJlZWVmYzY4MjI5Y2ZjYWYyMDYwMzI0NGNkZDZkMDlkM2MKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDE0OjA3OjUyIDIwMTIgKzAxMDAKKworICAgIEZpeCBkaXN0L3JlbGVhc2UgZm9ybWF0CisKK2NvbW1pdCBmYTdiZDU4MWUzNzgzNjg1ZGIzOWM5YjRlYWY4NDdiZTVhYzg2ZmQzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzo1MzoxMCAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucmMyCisKK2NvbW1pdCAwNzM5ZTIzODJkMzExNDZhY2EzMjA1MjQ0Y2Y3MDc4OGI0MGE0MjhkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzo1MTo0NSAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS42LjIucmMyCisKK2NvbW1pdCBkOWExNTQ0NWFhNzRmNTMxNmJmYzcxMWMxNTU4NDY3ODcyYzI5NThjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzo1MDoxMiAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS42LjIucmMyCisKK2NvbW1pdCBiY2FiZDJjOTU0MmRiZWJkMWQzMTliNDQ5NDQxM2JkY2NhMDY2MTRlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzozODozOCAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNi1wYXRjaGVzCisKK2NvbW1pdCBiNDczODk4YzBjNWFjOWViNDdjN2MwNWEzZjc0NWU0ZmYyYTc2YWFhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzozODoyOCAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnJjMgorCitjb21taXQgMTMxNDI5ZTcwNjJmYmFhNjViODJhZmZlZDFmYjkyZGYyYzBjYzgxMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MzggMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTYtcGF0Y2hlcworCitjb21taXQgMWM4MTEwYjMzYjgxMDVjYTYxOTA5NDVhMzVmZTdhZTkwMzI1MmQ2OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6MjE6MzggMjAxMiArMDEwMAorCisgICAgQXZvaWQgcGVybCB2ZXJzaW9uaW5nIHByb2JsZW1zIHdoZW4gc2V0dGluZyB1cCB0aGUgYnVpbGQgZW52aXJvbm1lbnQKKworY29tbWl0IDUwOGVjZTE2ZTZmNmY0OTU2MmRhMjA0NzkyYWUwNjQ0MjY5OTk0ZDEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjIwOjU4IDIwMTIgKzAxMDAKKworICAgIEZpeCBoYW5kbGluZyBvZiBkaXN0L3JlbGVhc2UgbWVyZ2UKKworY29tbWl0IDViOGE4NTQ3YjFhNDdkMmY1YjIwN2Y0OGYyNDk2ZTQyNDFkOTAyYzYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDExOjEwOjQ4IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzIKKworY29tbWl0IDZjMzI5MTRiZjI4ZDY5NWRmMzQ5ZGNhMjY5ZTQ4OGI1MDE3MDAzMTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDExOjA3OjIyIDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzIKKworY29tbWl0IDlmNWE4MmE1YWZkYmIzZGFlYjJmZDQzN2EzMDlmMGI4ZDM1N2NmNGIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDExOjA1OjM5IDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjUuMi5yYzIKKworY29tbWl0IDM5MjAzZjI5NDc3YTNiZWRmMDEyZDQxMTM1ZDhhYmQ2YmNhZDA4YjEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEwOjU0OjI3IDIwMTIgKzAxMDAKKworICAgIGRvY3VtZW50YXRpb24gdXBkYXRlIGZvciA1LjUuMi5yYzIKKworY29tbWl0IDE3ZTc5ZWYwZmFkNzk2MDljNWJhMmZlYjRlOGI5ZWI1ZDdkYjY4ODYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEwOjQ2OjExIDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS01LXBhdGNoZXMKKworY29tbWl0IDU4MjFiZTViYmI0MDE4ZGVkMjgyZmJiYmQ0ODMwY2YyZWVhZGQ5ZTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEwOjQ1OjU5IDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS41LjIucmMyCisKK2NvbW1pdCAzZjIxMTFkZTY3MzNhMDRlMTJkOTEwZDMwNmEzNGQ2NzFlMDA4NzYyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NjoxMSAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNS1wYXRjaGVzCisKK2NvbW1pdCBjY2Y4ZmYyYzRkYjYwMTIyZDQxMzAyZTRhZWI3MDBlMGI4NjgxMDVmCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSAyOCAxMDoxODo0MyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzNTI2NTk5OiBEb24ndCBoYW5nIG9uIHJldHJpZWQgZmFpbGluZyBTTk1QdjMgcmVzcG9uc2VzCisKK2NvbW1pdCBjODFjODQ4Mzk5MDkxMWY0NzQzNWQzMDA1MjU1ZDkxYzM3YWI5MmIyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDI3IDE0OjA5OjI2IDIwMTIgKzAyMDAKKworICAgIEZpeCBCU0QgdGhhdCBkb3dubm90IGFsd2F5cyBsaWtlIElQX1NFTkRTUkNBRERSIC0gc28gcmV0cnkgd2l0aG91dAorCitjb21taXQgZmZjZTFmMmRjMmY4YjMxYWJkMDFmOTNiMjZkYTc4ZjQ3MjZhMWU2NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyNyAxNDowMzo1OCAyMDEyICswMjAwCisKKyAgICBGaXggT1MgbWlzc2luZyBNU0dfRE9OVFdBSVQgKEFJWCkuIEJhY2twb3J0IGZyb20gNS43CisKK2NvbW1pdCBjNTc1MjE2ODUwMTg1YjU2NDU0ZGFkMDI1M2UzMTY0OTc5ZTEzNTEzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDI3IDEzOjU2OjAxIDIwMTIgKzAyMDAKKworICAgIEZpeCBtaXNzaW5nIGluY2x1ZGUuIEZpeGVzIFNJR1NFR1Ygb24gRnJlZUJTRDkgeDY0CisKK2NvbW1pdCA1ODA1ODc4NzQ5YzA4MDYyZGViZjBhOWQ3OThkMDhmYjkxNmNhYTJkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWF5IDI3IDA2OjIzOjE5IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBZGQgbWlzc2luZyBkZWJ1ZyB0YWcKKworY29tbWl0IGQxYTQyYmJjYzdiMTQ3MzBjOWE2ZDk5YzRmMDQ3MDk3ODQzYTU0OWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBNYXkgMjUgMDk6MDI6MjcgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFJ1biBsaWJ0b29sIC0tbW9kZT1maW5pc2ggb24gdGhlIHJpZ2h0IGRpcmVjdG9yeQorCitjb21taXQgMWZiZjMzNzExYTE5ZWFjOTczOWFkMjNmNmY2MjUxZWFjYzQxZjFjNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXkgMjIgMTQ6NTQ6NDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogTGludXg6IFBBVENIOiAzNTI1OTk4OiBEb24ndCB1c2UgYW4gdW5pbml0aWFsaXNlZCB2YWx1ZSBpbiBlcnJvciBtZXNzYWdlCisKK2NvbW1pdCAzMmMxNjg2YjY3ZGM4NWM0YTE4OTU3NjM2MzA2NTYwOWRmZWQ1ZTYxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1heSAyMiAxNDo1Mjo1NiAyMDEyICswMTAwCisKKyAgICBBdHRlbXB0IHRvIG1hcmsgcmVsZWFzZS1jYW5kaWRhdGUgYnJhbmNoZXMgYXMgc3VjaC4KKyAgICBPbWl0IGZpbmFsLXJlbGVhc2Utb25seSBzdGVwcyB3aGVuIHByZXBhcmluZyBwcmVOL3JjTiByZWxlYXNlcworICAgIChSZWxpZXMgb24gYSB0d2VhayB0byB0aGUgTWFrZXJlbGVhc2UgcGVybCBtb2R1bGVzKQorCitjb21taXQgNGM1NjMzZjE2MDNlNGJkMDNlZDA1YzM3ZDc4MmVjODkxMTc1OWM0NworQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CitEYXRlOiAgIE1vbiBNYXkgMTQgMTE6NDA6MDYgMjAxMiAtMDQwMAorCisgICAgTkVXUzogc25tcDogQlVHOiAzNTI2NTQ5OiBDVkUtMjAxMi0yMTQxIEFycmF5IGluZGV4IGVycm9yIGxlYWRpbmcgdG8gY3Jhc2gKKworY29tbWl0IDY1ZGQ4M2MyMjU1ZWU1OGVkYmYwZTI1ODYzZTU1YjU4YTQxMTM2NzkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMjA6MzA6NDIgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnJjMQorCitjb21taXQgYWM0YmM2NWUyOTA5ZjNiZDg1ZjMyZjA0YjUwNGZhNjVkMmY2NDU1MworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAyMDoyODowNiAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS42LjIucmMxCisKK2NvbW1pdCBiNzQ5OTQ4NjQxOTUxMTllZGI2ZTE5Yzg1MTQ3ZmFjMDBiY2I5M2UzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDIwOjEzOjQ2IDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucmMxCisKK2NvbW1pdCA5MTM1MDA5MmM0NmU2NmQwNmQ3NDE0M2Y0ODE2NDczZGI0ZDI1MTYwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE5OjU2OjMzIDIwMTIgKzAxMDAKKworICAgIE1hcmsgdmVyc2lvbi1zcGVjaWZpYyBjaGFuZ2VzIF9iZWZvcmVfIHB1c2hpbmcgdG8gY2VudHJhbCByZXBvc2l0b3J5CisKK2NvbW1pdCA3MjQxYWNjZDcwYjgyZDBmY2Q0NGQ1YTUyMzhiMmVlOTQ0NTkwMGRiCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjUzOjE3IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzEKKworY29tbWl0IDdjNzk2YTE1YTFkMWJiODVmZWVhOTQwYmQ0ZTM1MTY4Nzc5MjA5MTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6NTA6NDkgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgMDdlMjY4YmZiNjRiMGVjNjQ1YjNmN2U4NzI2Njk4NGY5MjE3Y2YxMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzo0NDozNyAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS41LjIucmMxCisKK2NvbW1pdCAxNmVhYWY2YzNiYTE0NTk2Y2E5ZWZhZjRiMTE0ZjFiNzA5ZjQyYjY4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjI5OjAzIDIwMTIgKzAxMDAKKworICAgIGRvY3VtZW50YXRpb24gdXBkYXRlIGZvciA1LjUuMi5yYzEKKworY29tbWl0IGM3Mjk0NjllZjEyMTU0OTMwY2Y5ZDE1OTY3ZTE2MTg2ZmI0NDVmMzAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6Mjc6MjAgMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjUuMi5yYzEKKworY29tbWl0IDE0MjU3MWQzY2VhMDhmMGMwNzJkMjRjMWQzOWE0M2M3NDQ2ZjhjZTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6MDE6MDMgMjAxMiArMDEwMAorCisgICAgV2hlbiBidWlsZGluZyBhIG5ldyByZWxlYXNlLCB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIHBlcmwKKyAgICBtb2R1bGVzIG1heSB3ZWxsIGJlIGRpZmZlcmVudCB0byB0aGUgdmVyc2lvbiBiZWluZyBidWlsdC4KKyAgICBUaGF0IHNob3VsZCBub3QgYnJlYWsgdGhlIGJ1aWxkLgorCitjb21taXQgZWJhODZiNmY3YWZmMjYxZWUwZTYxMzM0ZGY3MGRlNzE1NmU1YzNjYgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzowMTowMyAyMDEyICswMTAwCisKKyAgICBXaGVuIGJ1aWxkaW5nIGEgbmV3IHJlbGVhc2UsIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUgcGVybAorICAgIG1vZHVsZXMgbWF5IHdlbGwgYmUgZGlmZmVyZW50IHRvIHRoZSB2ZXJzaW9uIGJlaW5nIGJ1aWx0LgorICAgIFRoYXQgc2hvdWxkIG5vdCBicmVhayB0aGUgYnVpbGQuCisKK2NvbW1pdCA1YzBmNjRkNmRiMmI1OTNmN2NjMGVkMmQ0ZjU1YjdjNTkyYjc3NGE4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjI1OjE1IDIwMTIgKzAyMDAKKworICAgIE9ubHkgb3V0cHV0IGNwdSB3YXJuaW5ncyBvbmNlLgorCitjb21taXQgZWU1OGU0ODI3YjlmYTE2ZTY2MzVjYTAwM2U4YTRmMTFkY2I1ZmI3YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoxNzo0MiAyMDEyICswMjAwCisKKyAgICBGaXggc3BlbGluZyBpbiBlcnJvcm1lc3NhZ2UuCisKK2NvbW1pdCAwM2Y0ODVkZjIyZjIwZTE0OWNmYWU5NGM1N2NiODJmZWVjYjVkNzRiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjEyOjExIDIwMTIgKzAyMDAKKworICAgIE5vdCBhbGwgTGludXhlcyB1c2UgcnBtIChkZWJpYW4vdWJ1bnR1IGNvbWVzIHRvIG1pbmQpCisKK2NvbW1pdCA5MzA4MzgyMjRmNzgxNjk2YmQzNTIyNWYyMjU2OTM0NzQxNmYxYjE2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjEwOjE1IDIwMTIgKzAyMDAKKworICAgIENoZWNrIG5lZWQgZm9yIC1sbSB0byB1c2Ugcm91bmQvZXhwCisKK2NvbW1pdCBhMDYwOWNmMWYzYTY5MTdkMjYzNzI1NzMyMjQ4Y2Q5MzdhNDVhZDk0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXByIDcgMDg6NDA6NDQgMjAxMiArMDIwMAorCisgICAgUmVtb3ZlIGxpbWl0YXRpb24gb24gY29uZmlndXJhdGlvbiBsaW5lIGxlbmd0aC4KKworY29tbWl0IDMwNTk3MzMzOGE2M2FlNTRjNWUwMmE4NjI2ZmJlOWE4MDY0ZGNiN2UKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgNyAwMDozMjoxOSAyMDEyICswMjAwCisKKyAgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGVzLgorCitjb21taXQgY2NhYjRlOWQzZWQ0MjRjMzlkMGRjMjdiZTYzZmE3NmM3NDYxZWE4MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEFwciA3IDAwOjE1OjIyIDIwMTIgKzAyMDAKKworICAgIEludGVybmFsaXplIHRoZSBuYW1lIGFuZCBsaW5lIG51bWJlciBvZiB0aGUgY3VycmV0IGNvbmZpZ3VyYXRpb24gZmlsZQorCitjb21taXQgY2Y4NzRhZDdiOWRhZjRmY2MwZDQ2Y2RkMDM0NDc0YjQ3ODAwNTM0MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIEFwciA2IDIxOjQ3OjI4IDIwMTIgKzAyMDAKKworICAgIFJlcGxhY2UgI2lmIChBKSBCICNlbHNlIEIgI2VuZGlmIHdpdGggQi4KKworY29tbWl0IGVmOWVhNjQxYmMyOTBlZWM1MDY4NWI2MDUxOWIzMWJlZThiMTRhNjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDkgMjE6MDQ6MDYgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTIKKworY29tbWl0IDM1YWJhMTk1OWRlMTE5ZjFmYjg5MjAzYzM3MTA5YWE2ZjBlMjFjNTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDkgMjE6MDA6NDAgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnByZTIKKworY29tbWl0IGU0MWZiYWZmMThhYzkwOTVjZjRhNzM5YTA2ZWMzOWExYTZjY2ZkYzEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDkgMjA6MzU6MzUgMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5wcmUyCisKK2NvbW1pdCAxMzdmZTU4MmQ2Y2M1NjExNDMwZGFiNDZlZjE0NGVmZDg0Y2ZjODAzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEFwciA2IDIwOjQ2OjU2IDIwMTIgKzAxMDAKKworICAgIFJldmVydCBjb21taXQgMWY0YTgyOWIxODI3NWU0OTU2Y2E5MWU1ZWMzNzBkZjAxNWYwNjEzMworICAgIChzbm1wX3N0b3JlX25lZWRlZCgpIEFQSSBpcyBub3QgYXZhaWxhYmxlIGluIDUuWzQ1XS54KQorCitjb21taXQgMmI3ZTY0Mjg4YzAxYThhMDYyMDI2YzUyMWNhMzFhNWU4ODVmMzBjYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNjoxMjoxMiAyMDEyICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgJ2NvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworICAgIEJhY2twb3J0IG9mIGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDdlOTVkODBiNjk4MDUxMjU5NjQ1YzA3NGE1M2ZmZDI2NGE2ZmE5MTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTY6MDY6NTYgMjAxMiArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yICdjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKyAgICBCYWNrcG9ydCBvZiBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5IGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAxYTliN2I3YzAyZTJkZWVmZTk5NGQ1OTVhN2NjMWRkMmZmYmVlZTFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE1OjUxOjIwIDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoICdyZWNlbnQnIGhlYWRlciBzaHVmZmxpbmcKKyAgICBCYWNrcG9ydCBvZiBjNTNkOGMzNTI1ZjU5MGYyMjEzZDM1YjBkYTk0MTIzODYyZjNlMzY2IGZyb20gVjUtNS1wYXRjaGVzCisgICAgKFBhdGNoICMzMzYzMzA4IC0gb21pdHRpbmcgdHdlYWtzIHRvIGNvbmZpZ3VyZSkKKworY29tbWl0IDNkOWRkYjQxZTI2M2JjMWE3OGY5Zjk0NDBiOGQ0YWQ0Zjg2YzgyZTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTA6MzY6MTggMjAxMiArMDEwMAorCisgICAgRml4IHR5cG8KKyAgICBCYWNrcG9ydCBvZiA1YjcwMmIwMjRiNjAxNzZkN2Y1Njk5YjkyZTU1ZGE1MGE4ZGVhZTcxIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAwZDM1YzYwOTU2NGI2NmExZmZlODE1NTZkMzdhZGYwNTAzYzM4OWNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDEwOjE1OjA4IDIwMTIgKzAxMDAKKworICAgIFByb3ZpZGUgbWlzc2luZyBkZWZpbml0aW9uIG9mIE5FVFNOTVBfUFJJbworICAgICh1c2VkIGluIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYykKKworY29tbWl0IGE3OTE0MWE0MTk5NTNkMDEwYTY5ODllOGI4OGY0ZGYxMjczOTRkMzgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMDk6MTk6MjYgMjAxMiArMDEwMAorCisgICAgSGVhZGVyIGZpZGRsaW5nIGZvciBGcmVlQlNELE9wZW5CU0QsRHJhZ29uZmx5CisgICAgQmFja3BvcnQgb2YgZjdiMGRlMTUxODAwMmM2ZThmOWI5NGVmM2RlYjg4ODJlMWU5MzM4ZSBmcm9tIFY1LTctcGF0Y2hlcworCitjb21taXQgYWRmNzRiZjc1M2QzOTcwMzU3YWZkNjMzODAzMjU2MjQxZDljN2I4NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAwODoyMDo0NiAyMDEyICswMTAwCisKKyAgICBGaXggSVB2NiBUQ1AgJiBVRFAgdGFibGVzLCAqQlNEIHN1cHBvcnQgKGluY2x1ZGluZyBPcGVuQlNEKQorICAgIEJhY2twb3J0IG9mIGNvbW1pdHMgNWNkMTU3MzYyNTQ3MWMwNTgzZTkwODdhZWM2ODAyYjc3MTU3ZDVhMgorICAgICAgYW5kIDUwZDczZjBkNTZmZTIyYzU5MDUzMGIzZTMwNWQ0MWRjZGFjM2NlMDAgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IGQ5NTU1YWNiOWY0N2MzYWE4ZmRlNGJjMjBhNDRkN2NhNjE4MWE4YTkKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIE1vbiBBdWcgOCAyMTo1NjoxNSAyMDExICswMjAwCitEYXRlOiAgIFN1biBNYXIgMjUgMTg6NDg6MTIgMjAxMiArMDAwMAogCi0gICAgUmV2ZXJ0ICJDSEFOR0VTOiBXaW5kb3dzOiBBdm9pZCB0aGF0IGlmIHRoZSBOZXQtU05NUCBQZXJsIG1vZHVsZXMgaGF2ZSBiZWVuIGJ1aWx0IHdpdGggYW5vdGhlciB2ZXJzaW9uIG9mIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHRoYW4gQWN0aXZlUGVybCB0aGF0IHVzaW5nIG9uZSBvZiB0aGVzZSBQZXJsIG1vZHVsZXMgdHJpZ2dlcnMgYSAiRnJlZSB0byB3cm9uZyBwb29sIiBjcmFzaC4gVGhpcyByZWdyZXNzaW9uIHdhcyBjYXVzZWQgYnkgY29tbWl0IDNiMTRjNTljZjgyNzhkNDEwMjA3ZmY0MmRlYmRhMjYzNjQyNmE0NjggKHRoZSBuZXRzbm1wX2ZyZWUoKSBpbnRvIFNOTVBfRlJFRSgpIGNoYW5nZXMgaW4gdGhlICoueHMgZmlsZXMpLiIKLSAgICAKLSAgICBUaGlzIHJldmVydHMgY29tbWl0IDdmNDJkMGQ5MzMyMDQ4NDE1MjI3MTQyN2NjOTgwOGNiZGE0OWJiZDAgYmVjYXVzZSB0aGF0IGNvbW1pdCBpcyBub3Qgc3VpdGFibGUgZm9yIHRoZSA1LjQgYnJhbmNoLgorICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEF2b2lkIGRhbmdsaW5nIHBvaW50ZXJzIChiYXNlZCBvbiBwYXRjaCAzNTAzMjU5KQogCi1jb21taXQgNThjYTczZDAzNTg5YjA5NzRkOTI2YmRmZGMzOTI3MDk5ZmJhMjExNQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDExOjI0OjA5IDIwMTEgLTA3MDAKK2NvbW1pdCA4MmE4YjQ3ZWU5NmU1ZDI5YTJiN2FjM2NhMDA3MjJkNzM3ZDViNDc5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDI5IDIyOjMxOjU2IDIwMTIgKzAyMDAKIAotICAgIGRpc3BsYXkgdGhlIGJyYW5jaCB3ZSdsbCBjb21taXQgdG8KKyAgICBSdW5uaW5nIGF1dG9oZWFkZXIgLyBhdXRvY29uZgogCi1jb21taXQgZDQzNzI5YmVmZTEyYmRlZmM4NzA4ODliZGZlMTgyZTc2OTNmMWYzYgotQXV0aG9yOiBWbGFkaW1pciBLb25kcmF0aWV2IDx3dWxmMjAwMUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxMToyMDozMCAyMDExIC0wNzAwCitjb21taXQgOWNhOGQ5MzlhYjM5MzMwNmExZDBmMTQ2YzljYjcwZWEwY2IxOWQ0OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciAyOSAyMjozMDozOCAyMDEyICswMjAwCiAKLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzM4NjYzMzogZnJvbSB3dWxmMjAwMTogZml4IGludGVnZXIgb3ZlcmZsb3cgaW4gZGlzayBwZXJjZW50IGNhbGN1bGF0aW9ucwotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIFJ1bm5pbmcgYXV0b2hlYWRlciAvIGF1dG9jb25mCiAKLWNvbW1pdCAzYmM1NjgzMzM0ZTU2NjNjNTg5MjQxOTZlZGQ2NjQ5NmZmODE3MGMyCi1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxMToxMjoyNyAyMDExIC0wNzAwCitjb21taXQgY2VjZDQ4NjlkZWI2OGYzZDRjNzFlNzY4ZDViNDBkZDU3NjQ0NjkyNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciAyOSAyMjoyOTozMSAyMDEyICswMjAwCiAKLSAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzg3MTM5OiBmcm9tIHlhYmVyYXVuZXlhOiBBdm9pZCBzZWdmYXVsdCBpZiB0cmFwc2VzcyB0cmFuc3BvcnQgZWxlbWVudCBjYW50IGJlIHBhcnNlZAotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIFJ1bm5pbmcgYXV0b2hlYWRlciAvIGF1dG9jb25mCiAKLWNvbW1pdCAxZDFiZmQ1ZjQ1MWMyYmM0MjBiNzEwYzk4Yzc5ZDA0YmRlZjQzOTFiCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMTE6MTA6NTIgMjAxMSAtMDcwMAorY29tbWl0IGExYTQ1MTNiZDNlNGU2MTQyMDBmNmRiNWEwMmY2MWQ2YzhlZWZiMzIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDI4IDA5OjQ3OjQ1IDIwMTIgKzAxMDAKIAotICAgIG5zc2ZwYXRjaGFwcGx5OiBzcGxpdCB0aGUgZGlzcGxheWVkIGdpdCBjb21taXQgY29tbWFuZCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzCisgICAgRG94eWdlbi1zdHlsZSBkb2N1bWVudGF0aW9uIGZpeGVzIChiYWNrcG9ydCBvZiBnaXQgY29tbWl0IGMwOTkwM2E0MmU5ZDk3MzMxZmQ5ZTQ4ZWU4MzFhODVhZmRmOWM3MGEpCiAKLWNvbW1pdCBkMzczYzRmZDhjMzkxYWZlMGI5ZTAyYTYwYjVjZDY2MWJjOTAzOWRjCitjb21taXQgOWJkYmNjYTEyMmMzN2RhMzA0ZmM2YWE2OTM5NzI5NDc1ZjkwZjVmZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjggMDk6MzA6NDkgMjAxMiArMDEwMAorCisgICAgRG94eWdlbi1zdHlsZSBkb2N1bWVudGF0aW9uIGZpeGVzIChiYWNrLXBvcnQgb2YgR0lUIGNvbW1pdCBjMDk5MDNhNDJlOWQ5NzMzMWZkOWU0OGVlODMxYTg1YWZkZjljNzBhKQorCitjb21taXQgMWY0YTgyOWIxODI3NWU0OTU2Y2E5MWU1ZWMzNzBkZjAxNWYwNjEzMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjcgMjE6NDE6MjQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0OTU2OTc6IFN0b3JlIHBlcnNpc3RlbnQgc25tcFRhcmdldCB0YWJsZSBjaGFuZ2VzCisKK2NvbW1pdCAxZjc1ZjM3N2QwZGIwMTc1NGMwYzE2MWRjNDQzNzMwODFiZWVmNTIwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyNyAyMToxNDowNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBGcmVlQlNEOiBQQVRDSEVTOiAzNDg5Mzg3OiBJbnN0YWxsIEZyZWVCU0QgMTAgaGVhZGVyIGZpbGUgKHBsdXMgb3RoZXIgbWlzc2luZyB2ZXJzaW9ucykKKworY29tbWl0IDNkNzJjOWU3OGYyYWQ4MTdjOWQxZDgyOTc3MzI3YmJiMjBkNjNhYjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDI3IDIxOjA2OjMxIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzQ4Nzg2NzogRG9uJ3Qgc2tpcCBtaXNzaW5nIGlmWFRhYmxlIGVudHJpZXMgKGlmQ29ubmVjdG9yUHJlc2VudCBGQUxTRSkKKworY29tbWl0IDEyOTA2NTc4YWIzMGNmNzc2ZDA4MGMwZWYzMDI1YjMwMzM0ZDc2NTUKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxNzoyMzo0MyAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgMjYgMTY6MTc6NDUgMjAxMiArMDIwMAogCi0gICAgQ0hBTkdFUzogc25tcGxpYjogRml4IGEgY3Jhc2ggdGhhdCBjb3VsZCBiZSB0cmlnZ2VyZWQgYnkgY2FsbGluZyBfbWliaW5kZXhfYWRkKCkgd2l0aCB0aGUgc2Vjb25kIGFyZ3VtZW50IG5vdCBlcXVhbCB0byAtMS4KKyAgICBESVNNQU4tUElORy1NSUI6IEZpeCBldmVuIG1vcmUgbWVtb3J5IGxlYWtzCiAKLWNvbW1pdCA4Y2E3ZmYxZTY5MmNhZWM0MTg2Yjc4OGM5YWUyZDI3YmUyMTMyOTBmCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDggMTA6MzM6NTYgMjAxMSAtMDcwMAotCi0gICAgZml4IGFub3RoZXIgZnVuY3Rpb24gdHlwbwotCi1jb21taXQgNTU2ZTkzOGU4MmE3ZWUyYzEwZmE4YzBiN2M3YTM0ZTllNjVhNmQ1YQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDEwOjA1OjIwIDIwMTEgLTA3MDAKLQotICAgIGZpeCBmdW5jdGlvbiBuYW1lIHR5cG8KLQotY29tbWl0IDk2OWU4NjZhZjk4M2Q5ODZhMjZiZWJjYTg1ZmVmMGY2YzYyM2NlMjYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAwOTo1Njo0MyAyMDExIC0wNzAwCi0KLSAgICBtYWtlIG5zcHVsbC9uc3B1c2ggY2hlY2sgZm9yIGEgY2xlYW4gcmVwbwotCi1jb21taXQgN2U2ZmRjOGIyYTNkODZhNzk1NDM2NzM0MzUzNzE2MjFhMjg1ODczNwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDA5OjU2OjEzIDIwMTEgLTA3MDAKLQotICAgIG5ldyBmdW5jdGlvbiAibnNtYWtlYWxsIiB0byB0ZXN0IGJ1aWxkaW5nIG9uIGV2ZXJ5IGJyYW5jaAotCi1jb21taXQgZTI1YmU3YzgyZDU1NDVkODhhYmVhMTBlNGUyNTVjOTJiZWQzZGU2ZQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEF1ZyA4IDA5OjUzOjAzIDIwMTEgLTA3MDAKLQotICAgIGRlZmF1bHQgdG8gbWVyZ2UKLQotY29tbWl0IGJjYjgxYjc5NmRkNmE5MjE5NWQ2ZGIxMzE3N2FkMzBmMDVmYzYzZjcKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBBdWcgOCAwOTo1MToyNiAyMDExIC0wNzAwCi0KLSAgICBzZXBhcmF0ZSBuc3N5bmMgaW50byBuc3B1bGwgYW5kIG5zcHVzaAotCi1jb21taXQgZTQ2YjE3MDExN2ZlNzhhMmZhYWJlZjFhZGNjM2Q2ZDRkNTY5NjAzNgorY29tbWl0IGNjZmQ1Y2E2ZmUxMDMxM2Q2MTgxZDI0YmJiMTc5NzgyNWE5N2RhMTAKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIE1vbiBBdWcgOCAxNzoyMzo0MyAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgMjYgMTU6NTE6MTYgMjAxMiArMDIwMAogCi0gICAgQ0hBTkdFUzogc25tcGxpYjogRml4IGEgY3Jhc2ggdGhhdCBjb3VsZCBiZSB0cmlnZ2VyZWQgYnkgY2FsbGluZyBfbWliaW5kZXhfYWRkKCkgd2l0aCB0aGUgc2Vjb25kIGFyZ3VtZW50IG5vdCBlcXVhbCB0byAtMS4KKyAgICBESVNNQU4tUElORy1NSUI6IEVsaW1pbmF0ZSBkdXBsaWNhdGUgY29kZQogCi1jb21taXQgN2Y0MmQwZDkzMzIwNDg0MTUyMjcxNDI3Y2M5ODA4Y2JkYTQ5YmJkMAorY29tbWl0IDlmZGEyNjY4NzIyZjA4ZGRiZmRkNjdhMjIzOWQ4YjAyMWRiNjRhODMKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIE1vbiBBdWcgOCAwOTo1MDo1MSAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgMjYgMTU6NDg6NDYgMjAxMiArMDIwMAogCi0gICAgQ0hBTkdFUzogV2luZG93czogQXZvaWQgdGhhdCBpZiB0aGUgTmV0LVNOTVAgUGVybCBtb2R1bGVzIGhhdmUgYmVlbiBidWlsdCB3aXRoIGFub3RoZXIgdmVyc2lvbiBvZiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB0aGFuIEFjdGl2ZVBlcmwgdGhhdCB1c2luZyBvbmUgb2YgdGhlc2UgUGVybCBtb2R1bGVzIHRyaWdnZXJzIGEgIkZyZWUgdG8gd3JvbmcgcG9vbCIgY3Jhc2guIFRoaXMgcmVncmVzc2lvbiB3YXMgY2F1c2VkIGJ5IGNvbW1pdCAzYjE0YzU5Y2Y4Mjc4ZDQxMDIwN2ZmNDJkZWJkYTI2MzY0MjZhNDY4ICh0aGUgbmV0c25tcF9mcmVlKCkgaW50byBTTk1QX0ZSRUUoKSBjaGFuZ2VzIGluIHRoZSAqLnhzIGZpbGVzKS4KKyAgICBESVNNQU4tUElORy1NSUI6IFdyaXRlIGEgbG9vcCBhcyBhIGxvb3AKIAotY29tbWl0IGEzYjg2NTRhMjMyYzU2M2JjOTdjYzk5MjVjZDk4NTkwYTMwYzViYzUKK2NvbW1pdCBjYmMxOGViNzYzYmE2ZGY2OWVmNzA2NjhhNTRkNzViZjM1ZTc5NTAzCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBNb24gQXVnIDggMTc6MjQ6MTggMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDI2IDE1OjI0OjA4IDIwMTIgKzAyMDAKIAotICAgIEZpeCBhIHJlY2VudGx5IGludHJvZHVjZWQgTWluR1cgY29tcGlsZXIgd2FybmluZworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEZpeCBtb3JlIG1lbW9yeSBsZWFrcwogCi1jb21taXQgYTBkZDNjYWYyNTkyNmU0MzQ2NTcxOGJmNDE3YTQ2NGMyZmIzNjM2NgorY29tbWl0IGM3NzI1MTkyNDc4YWVjMDE4ZmI0YWVmYTYwOTQ2ZTA0YTQwNmMwMGMKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFN1biBBdWcgNyAxMDoxNzowMSAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgMjYgMTM6NDM6MjQgMjAxMiArMDIwMAogCi0gICAgZmluZCBcKCAtbmFtZSAnKi5bY2hdJyAtbyAtbmFtZSAnKi5pbicgLW8gLW5hbWUgJyouZHNwJyBcKSAtcGVybSAtdSt4IHwgeGFyZ3MgLXIgY2htb2QgYS14CisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQXZvaWQgcmVhZGluZyBmcmVlZCBtZW1vcnkgd2hlbiBkZWxldGluZyBhIHJvdyBmcm9tIGEgdGFibGUKIAotY29tbWl0IGE5YTI1MjUyMmZiZTdkYzFlZDcwZmYyNzIxYTRmODE1ODNjMGQ5MmEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBdWcgNSAxMDoyMDo1MSAyMDExIC0wNzAwCi0KLSAgICBtYWtlIHJvbGx1cCBhbmQgc3luYyBzdXBwb3J0IC0tcmViYXNlIGFuZCBjaGFuZ2UgdGhlIGRlZmF1bHQgYmFjayB0byBtZXJnZQotCi1jb21taXQgOTZmNWY0N2FkNDI3OTcyZDhkOWE2Y2UwNmM1ZTE2MTQ3MzYyMDgzYgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEF1ZyA1IDA5OjI1OjI1IDIwMTEgLTA3MDAKLQotICAgIHRyeSBhIG11bHRpcGxlIGJyYW5jaCBwdXNoCi0KLWNvbW1pdCAwZGJjODY5ZmVjMDdkOGU5MGRiZDFjOTU0OTNlZTdjYmM2MjNjOTVjCitjb21taXQgYTZiZTczOTU2NmYzMTBkNzQ0MWZkN2Y1NDk4OWUzOTQ0NmY3YTE0MwogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEF1ZyA1IDEyOjQwOjMxIDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciAyNiAxMzo0MjoyOCAyMDEyICswMjAwCiAKLSAgICBDSEFOR0VTOiBXaW5kb3dzOiBidWlsZC5iYXQ6IEdlbmVyYXRlIFBEQiBmaWxlcyBpbiByZWxlYXNlIG1vZGUuCisgICAgRXh0ZW5kIERJU01BTi1QSU5HLU1JQiB0ZXN0CisKK2NvbW1pdCA4YTliNTcyOTE0NTNjYjhhZWMyOGU3NjZjNTk0NzAxZWQxOWM0ZmM2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDI2IDIxOjAzOjQxIDIwMTIgKzAyMDAKKworICAgIEZpeCBmb3IgRHJhZ29uRmx5IDMKKworY29tbWl0IGU1YzlhMzJmNzllYWMyZTg1NTI3YzljZjA1MDg3Y2RhZTliMzVhNmMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgMjYgMjA6NTk6NTMgMjAxMiArMDIwMAorCisgICAgRHJhZ29uRmx5IG5lZWRzIF9LRVJORUxfU1RSVUNUVVJFUyB0byBjb21waWxlIGlwdjYgY29kZQorCitjb21taXQgY2Q0M2JjMDlhMzliZDk3ZmY1ZTcxOWEyY2UyMzJjZTQyNDYwMGE2NQorQXV0aG9yOiBEYXZpZCBJbWhvZmYgPGRpbWhvZmZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjQ3OjE3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIIDM1MTA0NTQ6IEFsbG93IHRoZSB1c2Ugb2YgMC4wLjAuMC8wIGFzIGFsaWFzIGZvciBkZWZhdWx0CisKK2NvbW1pdCBlMmZjMTVmOWU1YTZlM2UzNmJlNWY0ODk2MDFjYmY2YmY3MzE5MTdmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjIxOjM4IDIwMTIgKzAxMDAKKworICAgIEZpeCBUQ1Agc3RhdGUgdmFsdWVzIGZvciBEcmFnb25GbHkKKworY29tbWl0IDQzMmZlM2RkZjU0ZjJjOThmOTM2OTU5NDY5Y2I5YjAxNGQ1OTlmMDYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MTA6NTIgMjAxMiArMDEwMAorCisgICAgUmVxdWlyZSBwZXJsIHRvIGRvIHBhc3NfcGVyc2lzdCB0ZXN0CisKK2NvbW1pdCAzN2QyNzcwY2Y1MGM5ODAyM2VlYmE5MGUyNWQzNzJiZmY3MzE2YWRhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlci5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MDY6NDAgMjAxMiArMDEwMAorCisgICAgRml4IFRDUCBzdGF0ZSB2YWx1ZXMgZm9yIERyYWdvbkZseQorCitjb21taXQgODZhOTQ4ZDg2OTFlODgxZDU1NTkxZGNhYmRkYzI3MzljZTcyYjMwZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQG5iYS1saW51eC5zYi5zdGF0c2JpYmxpb3Rla2V0LmRrPgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjAxOjM3IDIwMTIgKzAxMDAKKworICAgIFByb3Blcmx5IGZpbmQgcGFzcyBoZWxwZXJzIGZvciB0ZXN0aW5nLgorCitjb21taXQgZmUyNmEzYzRmMjlmMDQ2YmY2NWVkNTJlOWQ5NDA1NGI2NzVmYmM0YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE1hciAyMiAwOTowNDo0MiAyMDEyICswMTAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IExpbWl0IHNvdXJjZSBjb2RlIGxpbmVzIHRvIDgwIGNvbHVtbnMKKworY29tbWl0IDc0NWJhZmNkY2M5YzhlODQ2MTZkNGUyNzRkYjJhMzg0YmYyMzRkYTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBNYXIgMjIgMDg6NTU6MDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogTWFrZSBwaW5nIGltcGxlbWVudGF0aW9uIGluZGVwZW5kZW50IG9mIG50cGQgY2xvY2sganVtcHMKKworY29tbWl0IGRhNjkyNWU2NzYzY2FkYmUwMmY0YThiYmZlNjhhMzYyZTUzNWFkNWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTA6Mzg6MzYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE1NGRpc21hbnBpbmdtaWJfc2ltcGxlCisKK2NvbW1pdCBmYTYwNmRkN2NhNmFmZjkzMDhkNGU4YjAxYmJjZGUxNDhmNDQxMjcxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDE2OjQ5OjIxIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IE1ha2UgcGluZ2luZyBsb2NhbCBpbnRlcmZhY2UgYWRkcmVzc2VzIHdvcmsKKworY29tbWl0IDYxN2E4M2JhNzk5NTc1Yzg0YzY2ZjZiMWM0ODBlZjYzMzE2MWE2NGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTY6Mjg6NDYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IGEgc29ja2V0IGxlYWsgdHJpZ2dlcmVkIGJ5IHBpbmdpbmcgYSByZW1vdGUgaG9zdAorCitjb21taXQgNjI1ZjU1YzI3MmVjNjI4MWUzOGQ4ZTMwZWI1M2ZkNTE1MTZiMDBhZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE1hciAyMiAwOTo1NDo1NSAyMDEyICswMTAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IENvbnZlcnQgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgdmFyaWFibGUgaW50byBhIHN0YWNrIHZhcmlhYmxlCisKK2NvbW1pdCBiNDhmMTlhZDRiNGFhNjhjM2UxNmUyYTcyZGYzN2I5YzBjZDM2YzRhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDE2OjI0OjA3IDIwMTIgKzAxMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogQWRkIG1vcmUgZGVidWdnaW5nIHN0YXRlbWVudHMKKworY29tbWl0IGQ3NGNiMzk2NjE3NTg5MjU2MmY1ZTNhOWIxNjgzYWNiYTJjMjJlMDcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTE6NDU6MTggMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IHNldmVyYWwgbWVtb3J5IGxlYWtzCisKK2NvbW1pdCAwYjFhNzc2NzQ2NzhjYzlhMTViZTNlNzcwMGQzY2VmNjUwZWQwMmM3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDEyOjAwOjMwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IERvIG5vdCBzZW5kIHRoZSBjb250ZW50cyBvZiB0aGUgc3RhY2sgb3ZlciB0aGUgbmV0d29yaworCitjb21taXQgMTM5MDIzY2QzYWI1MTYzMWNjMTBlMjg2NmQ3MWFiY2Y5OWFlNGMxYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE1hciAyMSAwODo1NjowNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBEb24ndCBjYWxsIGV4aXQoKSB1cG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUKKworY29tbWl0IDE2OWI2YWFhN2I2MTgyN2NjMWFkMGIzYWVlYWUzYTcyMjlkZDI1ZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMjEgMDg6NTM6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IElQdjYgc29ja2V0IGxlYWsgaW4gZXJyb3IgcGF0aHMKKworY29tbWl0IGEwYmUzMmFkMDUzYTcxZmE5NjEzNGQ1NWU1NDJiYjA3ZDRmMDI5N2QKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTE6NDM6NDYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQXZvaWQgdGhhdCBob3N0IG5hbWUgcmVzb2x1dGlvbiBmYWlsdXJlIGNhdXNlcyBhIGNyYXNoCisKK2NvbW1pdCBiZjliZmY2NDU1Njc4N2Q3NjZlZTJlZjJkNTc4YWZiOTIwNzE5ZjNhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTWFyIDIxIDA4OjUxOjU1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IENvbnZlcnQgcHJpbnRmKCkgc3RhdGVtZW50cyBpbnRvIHNubXBfbG9nKCkgYW5kIERFQlVHTVNHKCktc3RhdGVtZW50cy4KKworY29tbWl0IDVkNzRjMDEyNDU1MjNhOWQ4ZGIxZWRhMjdkMWVmYWUyZWJjMTA0ZmIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6NDA6MDIgMjAxMiArMDEwMAorCisgICAgTmV3IE1JQjogVlJSUFYzLU1JQgorCitjb21taXQgNWIzOGYwNjJiOTliNmVmMzY3MDhlMmM3ZGU0OTY1YTMxOTI2MTJlOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODozNDo0OCAyMDEyICswMTAwCisKKyAgICBGb3Igc2FmZXR5LCBzaXplb2YgdGhlIHJpZ2h0IHZhcmlhYmxlIGluIG1lbWNweQorCitjb21taXQgZTVmODI3ODJkYTA1ZWZhN2MwZTZkYzJiZjVhNDFlZTExODY4ZjQ2OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODozMzoyMSAyMDEyICswMTAwCisKKyAgICBGaXggZm9yIGhyU1dSdW4gZGF0YSBmb3IgRnJlZUJTRAorCitjb21taXQgODMyNzU2NWU4MjMyNzBkMTBhNDUwNDU2OGVkYmU1YjVhZTMyM2E1NQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODozMTo1NCAyMDEyICswMTAwCisKKyAgICBDbGVhbiB1cCB2YXJpYWJsZXMgZm9yIE9wZW5CU0QvTmV0QlNECisKK2NvbW1pdCAxNzBmNmYwMjdiZjRmOTE3NGI3MDczNTMwZGE0ZDA3ZjQwMGJiYTU4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjI4OjU4IDIwMTIgKzAxMDAKKworICAgIE1vdmUgZGVjbGFyYXRpb25zIGluIGZyb250IG9mIHN0YXRlbWVudHMKKworY29tbWl0IGRiYjQ1NzNiNjlmYWU4NWNkYzkzMWIyODkyYjVjZTRlNWIxNmIzMjEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6MjM6MzYgMjAxMiArMDEwMAorCisgICAgUmVxdWlyZSBrZXJuZWxfbmV0YnNkIGZvciBOZXRCU0Q2CisKK2NvbW1pdCBmMTE2ODFmMTVhYWQ3ZDlhNTJmYTI5ODEyZWNiYjUwN2YxYjdmZTI0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyMSAxMjozNjozOCAyMDEyICswMDAwCisKKyAgICBDaGVjayBmb3Igb2xkIHRhcmJhbGxzIChhbmQgdW5wYWNrZWQgZGlzdHJpYnV0aW9ucykgYmVmb3JlIHN0YXJ0aW5nLgorICAgIFRoZXNlIGNhbiBjb25mdXNlIHN0ZXBzIHN1Y2ggYXMgIm1ha2UgZGVwZW5kY2hlY2siLCB0aGF0IGRvIGEgJ2ZpbmQnCisgICAgb24gdGhlIGN1cnJlbnQgdHJlZSwgYW5kIHdvdWxkIGRlc2NlbmQgaW50byBzdWNoIHVucGFja2VkIHNvdXJjZSB0cmVlcy4KKworY29tbWl0IDQ3MGRjZDRiNmMzZmYxMWZmMGEzNTMyYTczNDBhNTZjZmZkNjkwOTgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDIxIDEyOjMyOjEzIDIwMTIgKzAwMDAKKworICAgIERvbid0IHJ1biAibWFrZSBkb2NzOyBtYWtlIG1hbmNwIiBpZiB0aGVyZSdzIG5vIE1ha2VmaWxlIHByZXNlbnQKKworY29tbWl0IGM5YWM0MjAzNDNlMTZkZjJiNzA2NWY1YmYyNzkwZGY0NGUyNDdmYmEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDIwIDEwOjI2OjEwIDIwMTIgKzAwMDAKKworICAgIEFsbG93IGRpc3RyaWJ1dGlvbiBhcyBwYXJ0IG9mIG5vcm1hbCBOZXQtU05NUCBwYWNrYWdlcy4KKworY29tbWl0IDU5OTlmNjBjNTc3MjNmMjNmM2MyNTRhZjU3ZmRiMTBhZjMwMWE4ZWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXIgMTggMTk6MDM6MDggMjAxMiArMDEwMAorCisgICAgUmVnZW5lcmF0ZQorCitjb21taXQgMjc1ZDIwNDAzNmE2MDdlM2RmNTBlODQ0N2Q0YmM3NTVlOWRiMDJmZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEF1ZyAyOCAyMToyOTowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgLS1kaXNhYmxlLWFwcGxpY2F0aW9ucy8tLWRpc2FibGUtYWdlbnQgdG9nZXRoZXIgd2l0aCAtLWVuYWJsZS1taW5pbWFsaXN0CisKK2NvbW1pdCBiZGNjYzg3NTcxMDI5NWFhY2Y1MGY3MWViMWMxZDJlZTk3ZjMzNmZlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWFyIDE2IDIwOjEwOjU4IDIwMTIgKzAxMDAKKworICAgIERvIG5vdCBkZWNsYXJlIHRoZSBsb2NhbCB2YXJpYWJsZXMgZm9yIG9wYXF1ZV9zcGVjaWFsX3R5cGVzIHVubGVzcyB0aGF0IG9wdGlvbiBpcyBzZXQuCisKK2NvbW1pdCBiODBhNjdkYTA1MmFkY2ExYjVhNjQ0ZGI4M2E3ODJlMTVjMjIzN2MzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWFyIDE2IDE5OjUwOjAzIDIwMTIgKzAxMDAKKworICAgIENoZWNrIHRoYXQgdGhlIGRhdGEgZXhpc3QgYmVmb3JlIHRyeWluZyB0byByZWFkIGl0CisKK2NvbW1pdCBlZmFlODZiYmE1OTYyNDkxZDQyYjc3YjkzNTE5MWEzZWIyNWRkOTM5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgTWFyIDE0IDAxOjA1OjMzIDIwMTIgKzAxMDAKKworICAgIFBhcnRpYWxseSByZXZlcnQgIk1lcmdlIHJlbW90ZSBicmFuY2ggJ29yaWdpbi9WNS03LXBhdGNoZXMnIGludG8gVjUtNy1wYXRjaGVzIgogICAgIAotICAgIENIQU5HRVM6IFdpbmRvd3M6IGJ1aWxkLmJhdDogV3JpdGUgUERCIGZpbGVzIHRvIHRoZSBvdXRwdXQgZGlyZWN0b3J5IGluc3RlYWQgb2YgdGhlIGludGVybWVkaWF0ZSBkaXJlY3RvcnkuCisgICAgQ29tbWl0IGQzNWExODYwMjE3ZTcyM2U0Zjg2NmRkOThlZjY2MjE2NjU5MzRjNGEgYWNjaWRlbnRhbGx5IHJldmVydGVkCisgICAgCisgICAgNGEyZTViY2Q1NmNkMmFmYjM2ZWIxNWQ3NTRlMmZlZTg4OGRkNTBjMCAoaHJoX3N0b3JhZ2UgaXMgYSBwcm9wZXIgcmVwbGFjZW1lbnQgZm9yIGhyX3N0b3JhZ2UpCisgICAgMGRkMWU1NDU1N2QxYmE0OThiNTVkMDE3YjBhOTNlOGNjZjliZDUyMiAoQ0hBTkdFUzogc25tcGQ6IFVEUC1NSUI6IFJlcG9ydCB0aGUgcHJvcGVyIGFkZHJlc3MgaW4gdWRwTG9jYWxBZGRyZXNzKQorICAgIDUxMTZkNDgzNzhlY2YwM2U3MjJmMzAxMGFkNDdiZjIyYTNmYmNiOGMgKFJlZHVjZSBzY29wZSBvZiBwcmVmaXhfdmFsIHN1Y2ggdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndCB3YXJuIGFib3V0IGFuIHVuc2VkIHZhcmlhYmxlKQorICAgIDEwZjU2NmY0ZDRjYmIzZTIwNTAyM2MyMzY2OTI4OWU0YmZkMDg5Y2IgKHBlcmwvU05NUC9TTk1QLnhzOiBGaXggYSBjb21waWxlciB3YXJuaW5nKQorICAgIAorICAgIGFuZCBwYXJ0IG9mCisgICAgCisgICAgNmU3NGQ2NGY4NWE1OWQ1MGU0NjFkYjRjMzRhYzc2ZjlkZTQ2OGJmYiAoQXZvaWQgdXNpbmcgZ3JlcCBvcHRpb25zIC1xIGFuZCAtdyBiZWNhdXNlIGdyZXAgaW4gU29sYXJpcykKKyAgICAKKyAgICBUaGlzIHJldmVydHMgdGhvc2UgcmV2ZXJ0cy4KIAotY29tbWl0IDViMDI5MWY5MWVkOTQ4MzVmOGFlN2Q5NDM2YjE1ZjQwYWZiMTk0NzMKK2NvbW1pdCBhYWVkZDU5Y2MyZGE3MDE1MjdkYzJkMjYxZDRlOWY4NWYxNmU3NTA0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWFyIDExIDIwOjU3OjM4IDIwMTIgKzAxMDAKKworICAgIEFsbG93IG1ha2UgdGVzdCB3aGVyZSB0aGUgc291cmNlIHBhdGggY29udGFpbnMgdGhlIHN0cmluZyBOZXQtU05NUCB0byBzdWNjZWVkLgorCitjb21taXQgNGI5NGQ3OTY5MThhNGVlYWU2OGFiMjFhYTUzZDQ0NGE4YjVjMjkyMQogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEF1ZyA1IDEzOjE3OjE5IDIwMTEgKzAyMDAKK0RhdGU6ICAgRnJpIE1hciA5IDA4OjA0OjU5IDIwMTIgKzAxMDAKIAotICAgIC5naXRpZ25vcmU6IEFkZCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5kZWYgYW5kIHBlcmwvU05NUC90CisgICAgVW5icmVhayBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDQKIAotY29tbWl0IDJmOGQ0ZjU3OTZjYmMxYzdlOTY3YWNkYWE4MDE5YjI0ZjE1MjBhMzYKK2NvbW1pdCAxMGZlNmI4MzMyNGFkMzdkMThiOTM3Y2M4YzZkZTk0ZGU1MzRkMDM1CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciA4IDEzOjA0OjA3IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUxCisKK2NvbW1pdCBlMTEyMmVkYzFhNWZlNzk3NmIwNjUwNDQxMzRkMzllN2RiNTk4NWVhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciA4IDEyOjQzOjE5IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUxCisKK2NvbW1pdCBhNjEzZDNhODM0OTEyMjA2ZDFiYTU5NzFlNDQxYTNlYTZiMzZhZjIzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciA4IDEyOjMzOjAzIDIwMTIgKzAwMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjYuMi5wcmUxCisKK2NvbW1pdCAwZWYzNGU2NTE5ZGZjYjgyYzk3ZGY4NDI3NTQ3YzA4ZGNmODFlNjlhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciA4IDEwOjExOjMwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBGaXhlZCBzbm1wZCAnLWQnIG9wdGlvbi4KKyAgICAKKyAgICBOb3cgaXQgZHVtcHMgcGFja2V0cyBhZ2Fpbi4KKworY29tbWl0IDhlNjk3NDJmMTQzZTRmYzExMTk2ZTViMmVkNjZjOGY3ZjUzZmQwMmYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDYgMDk6MjQ6MjEgMjAxMiArMDAwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5wcmUxCisKK2NvbW1pdCBjNGUwMGI4YzNlMTAxMGNkY2FiNWU2YzAyZDYwZDc1ZGY5YzZkY2YyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciA2IDA5OjI0OjA1IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUxCisKK2NvbW1pdCAzOTQ5MDEwNGEzYWI1ODIzNWFhY2UyZjlkODcxYzI2NmRjNDQ4NWVlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKKworICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCisKK2NvbW1pdCA0YTJlNWJjZDU2Y2QyYWZiMzZlYjE1ZDc1NGUyZmVlODg4ZGQ1MGMwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDUgMjA6NTk6MzggMjAxMiArMDEwMAorCisgICAgaHJoX3N0b3JhZ2UgaXMgYSBwcm9wZXIgcmVwbGFjZW1lbnQgZm9yIGhyX3N0b3JhZ2UKKworY29tbWl0IGNlODU4MzI5MzJjY2Q5MTZjNDIzMTkxMTRjNDA4ODVhNDY2YTlkMGUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgNSAyMDo1Njo0MCAyMDEyICswMTAwCisKKyAgICBNb3JlIGZpeGVzIGZvciBTb2xhcmlzIHNoCisKK2NvbW1pdCAwZGQxZTU0NTU3ZDFiYTQ5OGI1NWQwMTdiMGE5M2U4Y2NmOWJkNTIyCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgQXVnIDUgMTI6MDI6NTEgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDUgMTU6MDg6MjYgMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogV2luZG93czogQXZvaWQgdGhhdCBydW5uaW5nIHRoZSBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgbWFrZXMgc25tcGQgY3Jhc2gKKyAgICBDSEFOR0VTOiBzbm1wZDogVURQLU1JQjogUmVwb3J0IHRoZSBwcm9wZXIgYWRkcmVzcyBpbiB1ZHBMb2NhbEFkZHJlc3MgaW5zdGVhZCBvZiAwLjAuMC4wLiBNYWtlcyB0ZXN0IFQxNjBzbm1wbmV0c3RhdCBwYXNzIGFnYWluLiBGaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdCBjNzZmYjk2ZjY1ZTMzYmEyZmQyMTJhOTIxZThjMzg2MTU1ZWU1YzdhLgogCi1jb21taXQgMGM3NTA3YTFlMDEwMWY0YjEzNWEzZWQ4YTk2MTYzNWI4NzA5M2YxYQorY29tbWl0IDUxODkxN2U5ZjM5ZjdhOWQzYzNiZjNhODY1ZThhYzBlMzAyNmQ2MDAKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBBdWcgNSAxMDo1NzozMyAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgNSAxNDowNDo1NCAyMDEyICswMTAwCiAKLSAgICBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgLSByZXZlcnQgY29tbWl0IGQyYzQ3NjhiZDJlZmI0ODY2NDQzNGE4MzE0MjVjMmRkYTg1ZDcxMzMgKENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlKS4KKyAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYzogRml4IHNvdXJjZSBjb2RlIGluZGVudGF0aW9uCiAKLWNvbW1pdCA5YjdmZjRhYmZjOTUyOWJiOWUxOGEzYjg3NDIwMTUyMGJjMGU3MTQxCitjb21taXQgMjY1MTkwOWNjY2VhYmZjZmFkYWY5NDJjMDI0NTBlMjhmZTgzN2RjOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE5vdiA5IDEyOjA0OjA0IDIwMTAgKzAwMDAKKworICAgIFBhc3NlcyBub3cgb24gTWluR1cgdG9vLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5NjUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTQxZjExNWU0MDMwNGM5NDFiYTE3ZDY3ZTI0NzEwNzIyZDkwNzQxYgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEF1ZyA1IDExOjA3OjU1IDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciA1IDEzOjM5OjE3IDIwMTIgKzAxMDAKIAotICAgIFVuYnJlYWsgdGhlIFY1LTQtcGF0Y2hlcyBicmFuY2ggLSB3YXMgYnJva2VuIGJ5IGNvbW1pdCBiZjcxNzhiMGIyMjU4N2Q0M2QxYTgwYzI2OWNkMjE2YmQ1OTMwMjE0IChhZ2VudDogY2hhbmdlIHR5cGUgb2Ygc25tcF9lbmFibGVhdXRoZW50cmFwcyB0byBsb25nKQorICAgIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IEF2b2lkIHVzaW5nIGdyZXAgb3B0aW9ucyAtdyBhbmQgLXEgYmVjYXVzZSBncmVwIGluIFNvbGFyaXMnIGRlZmF1bHQgcGF0aCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlc2UuCiAKLWNvbW1pdCAwMzA0OWUxMDM2YzJjMDZjYmQ2ZTVlZDVmZTA4NDk5OWQ1NDY4YTVmCitjb21taXQgNTExNmQ0ODM3OGVjZjAzZTcyMmYzMDEwYWQ0N2JmMjJhM2ZiY2I4YwogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEF1ZyA1IDEwOjU2OjQ4IDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE1hciA1IDEwOjQ3OjIwIDIwMTIgKzAxMDAKIAotICAgIFVuYnJlYWsgdGhlIFY1LTQtcGF0Y2hlcyBicmFuY2ggLSB3YXMgYnJva2VuIGJ5IGNvbW1pdCAwZTY4NDJmZTA4MGNlYzg1M2IwOGNkMjMyMzAxNWFiYWJjMzgxY2UxIChDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20gc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkpLgorICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzogUmVkdWNlIHNjb3BlIG9mIHByZWZpeF92YWwgc3VjaCB0aGF0IHRoZSBjb21waWxlciBkb2Vzbid0IHdhcm4gYWJvdXQgYW4gdW5zZWQgdmFyaWFibGUgaWYgaXQgaXNuJ3QgbmVlZGVkLgogCi1jb21taXQgM2FhOTQ5ZmJkZmMxYTk0YTgzNDBhZDhiYWY4YjMxNDc1NmEwYmI5ZAorY29tbWl0IDZlNzRkNjRmODVhNTlkNTBlNDYxZGI0YzM0YWM3NmY5ZGU0NjhiZmIKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBBdWcgNSAxMDoyNjoxNSAyMDExICswMjAwCitEYXRlOiAgIE1vbiBNYXIgNSAwOToyMjozMSAyMDEyICswMTAwCiAKLSAgICBXaW4zMiBtYWtlZmlsZSB3aGl0ZXNwYWNlIGNsZWFudXAKKyAgICB0ZXN0aW5nL2V2YWxfdG9vbHMuc2g6IEF2b2lkIHVzaW5nIGdyZXAgb3B0aW9ucyAtcSBhbmQgLXcgYmVjYXVzZSBncmVwIGluIFNvbGFyaXMnIGRlZmF1bHQgcGF0aCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlc2Ugb3B0aW9ucy4KIAotY29tbWl0IDk0MzkzMGUxZTEyNDM4NWZkOTQ3MzhiNmRjZGEzN2QyOWRjN2FjN2YKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAxMDo0MTo0MSAyMDExIC0wNzAwCi0KLSAgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0ggMzMyNDc2OTogZnJvbSBoYXJkYWtlcjogRml4IC1XdW51c2VkIHdhcm5pbmcKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotY29tbWl0IDkwYzBlNzVmM2UwZGU3M2Q2YWFhYjNlM2Q3MTQ2ZjE4YThmOWUxODcKK2NvbW1pdCAxMGY1NjZmNGQ0Y2JiM2UyMDUwMjNjMjM2NjkyODllNGJmZDA4OWNiCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUaHUgQXVnIDQgMTk6MTI6MjQgMjAxMSArMDIwMAorRGF0ZTogICBNb24gTWFyIDUgMTA6NDc6MzkgMjAxMiArMDEwMAogCi0gICAgc25tcHVzbTogRml4IHJlY2VudGx5IGludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MKKyAgICBwZXJsL1NOTVAvU05NUC54czogRml4IGEgY29tcGlsZXIgd2FybmluZwogCi1jb21taXQgMmRkOWVkMDg1OGRhYTk4MmI0MTYwYjRkMmE3ZDVhMmI4MDk0NDE3MQotQXV0aG9yOiBTdHVhcnQgSGVuZGVyc29uIDx0MGp3MmZ1MGttZ0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAxMDowNjo1NyAyMDExIC0wNzAwCitjb21taXQgNDRhYTI2NTg5MWNkNTYzZjdmNDExNGVmMjVkY2Y3YWFmM2IxNGU5YQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCiAKLSAgICBDSEFOR0VTOiBvcGVuYnNkOiBQQVRDSCAzMzU3OTMyOiBmcm9tIHQwancyZnUwa21nOiBDbGVhbmluZyBpbiBtZW1vcnlfbmV0YnNkLmMKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgogCi1jb21taXQgZjhmNmY3MDcxNjQ0YjdlNzcxZGY4ZTYyYTkzMjI3Y2Y5NjBhMDRlNwotQXV0aG9yOiBWbGFkaW1pciBLb25kcmF0aWV2IDx3dWxmMjAwMUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwOTo1NjoyOSAyMDExIC0wNzAwCitjb21taXQgZGFlNGUxNmJlODYxMTc4NjFmNjNkMWEyZjk4MWFkMzYxNDE4ZjVjNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCiAKLSAgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0ggMzM4NjE0NzogZnJvbSB3dWxmMjAwMTogZml4IFVDRC1TTk1QLU1JQjo6ZHNrVXNlZAotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCiAKLWNvbW1pdCAyMTAxYmIyZDdhZDZkYjAzOGM3NTVhYTkxOTNjOGFjZTBkYmQ0ZjU4Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDk6Mjg6MDYgMjAxMSAtMDcwMAorY29tbWl0IDI4ZjYyMjZmMmUyMjhiOGNhMjQ4NDg5NzM1Zjg2NTAyYjJjY2UwYTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAogCi0gICAgYWRkZWQgdGhlIG1pc3NpbmcgZnJlZWJzZDkuaCBmaWxlIGZyb20gdGhlIGZyZWVic2Q5IHBhdGNoCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KIAotY29tbWl0IGI2YTQ4MWZhMzA2Mjg5M2U1ODliZjYxNjNjOWQwNmQwZjIwNTMyNDAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwOToyNzowNSAyMDExIC0wNzAwCitjb21taXQgNDAwMjJhNjk3OTU4MjU5Y2NmYmIzZmVkNDRlYjNjNDcyZjVlODM3ZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1hciA0IDEwOjM3OjQxIDIwMTIgKzAxMDAKIAotICAgIGlnbm9yZSAqLm9yaWcgYW5kICoucmVqCisgICAgU29sYXJpcyBzaCBkb2VzIG5vdCB1bmRlcnN0YW5kICJ0ZXN0IC1lIgogCi1jb21taXQgY2M1MTM0ZTUzZDFjMjMzZGM0MWUzMWZiYjc4ZmFhYjA5OGYwOTM2MQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA5OjI2OjQ0IDIwMTEgLTA3MDAKK2NvbW1pdCA3NzNhZjBjNDJlMDc3YmViZGFlY2YxYzBjYWYzOTMyODVhNzY4OGYxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDMgMTc6MTk6MzAgMjAxMiArMDEwMAogCi0gICAgaGVscCBvdXRwdXQgZGVzY3JpYmVzIHJlYmFzZSB2cyBtZXJnZSBiZXR0ZXIKKyAgICBDbGVhbiB1cCBuc3JvbGx1cCBjb21wbGljYXRpb25zCiAKLWNvbW1pdCBiMzcyZTVhYjMwYWExNTU3NDFlOTRkZjIyZTA3NTI1MzVjNTllNGJiCi1BdXRob3I6IFN0dWFydCBIZW5kZXJzb24gPHQwancyZnUwa21nQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA5OjIyOjI4IDIwMTEgLTA3MDAKK2NvbW1pdCBlZTcxMDQ5YzNlMjFjMWQwZTM0MjQyOTcxMzY2NTJiYmUwZTM5ZDg1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDMgMTY6NDk6NDEgMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogb3BlbmJzZDogUEFUQ0ggMzM1NzkyNzogZnJvbSB0MGp3MmZ1MGttZzogUmVjb2duaXNlIG9wZW5ic2Q1Ci0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgbWliZ3JvdXAvaWNtcC5jOiBhZGp1c3QgaWZkZWZzIHRvIG1ha2UgaXQgY29tcGlsZSBvbiBCU0QncwogCi1jb21taXQgMDU0OGE0ZTk3YjJhMWYwMzk5ZTU4YzRlZmMwMDRjOTQ5NzM5OGNkNgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA5OjIyOjE1IDIwMTEgLTA3MDAKK2NvbW1pdCBjZTk2MDAzNjFlNjY1ZGRlMTdhZjlkOGFiMTZkN2NlODVkYzA1NjQzCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6Mzk6NTUgMjAxMiArMDEwMAogCi0gICAgZml4IHdoZXJlIGFyZ3VtZW50cyBhcmUgc2V0CisgICAgZG90M1N0YXRzVGFibGUgaGFzIGJ1Z3MgOi0oCiAKLWNvbW1pdCAzYjM3ODBiY2E5YWRlZWJmNGVmNzUwOGFlZTZiOGViY2I5NGY2NTZjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDk6MjA6NDAgMjAxMSAtMDcwMAorY29tbWl0IGRmZmFjZjZmYTA3NTVlMTcwMGNiYWMyNWI4NDQxODVhYmQ4MDdhMGEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozODoxMCAyMDEyICswMTAwCiAKLSAgICBzcGxpdCBuc3NmcGF0Y2hhcHBseSBpbnRvIHR3byBwYXJ0czogYXBwbHkgYW5kIGNvbW1pdGluZworICAgIHBhc3NwZXJzaXN0IHRlc3QgbmVlZHMgL3Vzci9iaW4vcGVybAogCi1jb21taXQgMDQyMjUxNGE2MmJjYWFlNjAwNTAxN2Q3ZTllZDQ4NTA3NWZlNzAxYwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA5OjE1OjI1IDIwMTEgLTA3MDAKK2NvbW1pdCA4NzI2OTk1YzdhOGFlZjY3NGM0ZjE2NGIxODcxYzM3YmJkY2RhZDUwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzY6NTggMjAxMiArMDEwMAogCi0gICAgcGF0Y2ggdXNpbmcgLU4KKyAgICBncmVwIC13IGZhaWxzIHdpdGggT3BlbkJTRCBhbmQgU29sYXJpcyAxMC02NAogCi1jb21taXQgZGM3NTVhNmFlYjliOWM4ODk3MjdkOWZjODQyZmM4OWY3MjllNmVjMAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjMzOjI1IDIwMTEgLTA3MDAKK2NvbW1pdCAxZWI0NzQ1YjIzY2MzYTgzOTg2NGU3ZjZlYTI4MzU1YjA1NjZlYjY3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzU6NDkgMjAxMiArMDEwMAogCi0gICAgYWRkZWQgc3BhY2luZyB0byBtYXRjaCB0aGUgbGF0ZXIgYnJhbmNoZXMKKyAgICBTb2xhcmlzIG5lZWRzIC91c3IveHBnNC9iaW4vZ3JlcCB0byB1bmRlcnN0YW5kIC1xCiAKLWNvbW1pdCA3YjcyNmUxMDNjMTk2MGY0Yzg2MDM4NTljOWE4ZDhhYThjNDA0NTIwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MzI6MjMgMjAxMSAtMDcwMAorY29tbWl0IDk5NTRiNGI3NDFmZDhjNjNkNjEyOGJkMDUyNzI5OGM4ZTRlOTg5ZmMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozNDo0NSAyMDEyICswMTAwCiAKLSAgICByZW1vdmVkIGFjY2lkZW50aWFsbHkgZHVwbGljYXRlZCBjb2RlCisgICAgTWFrZSBzdXJlIHdlIGhhdmUgdGhlIHByb3BlciBzcmNkaXIgZm9yIG91dC1vZi1zb3VyY2UgYnVpbGRzCiAKLWNvbW1pdCBlY2JhYjBhOThhMDJmZGU2YmJjYTdkZDM3MGJjZDljM2NhNzZhZmZlCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6Mjc6NDEgMjAxMSAtMDcwMAorY29tbWl0IDc4MzY5MDAyYmUyNzExZjBhYTg3NmI2NGE0ZTEwYjA5MGNjMjQxY2QKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMTozMzozMSAyMDEyICswMTAwCiAKLSAgICBuc3N5bmMgc3VwcG9ydHMgLS1tZXJnZSBub3cKKyAgICBOb3QgYWxsIG1ha2UgdmVyc2lvbnMgZGVmaW5lICQoUk0pCiAKLWNvbW1pdCAwMDc4ZTIyNDcwZWIwZmRkNmRjMDJlMjA4MTMzNTFhY2RjMTU4OTY0Ci1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoyMzoyMiAyMDExIC0wNzAwCitjb21taXQgOTQyNDViMjlhM2NkYTg5NDc1YzZlYWI1ZDk0OTNjNjY1N2ZmMzhlMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjI0OjI0IDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgTWFrZSBhdXRvY29uZiAyLjY4IGhhcHB5CiAKLWNvbW1pdCBlYjc4ZGIyYjZlMjc3NGE0NDk3ZDg3NjhjMTM4YjRmMTRjNWY1YTdmCi1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoxOToxNiAyMDExIC0wNzAwCitjb21taXQgNDRhY2Q2YzI4NWZiNTYxNGI0Yzk2MTFiMWFiZGVjYTlkZDI4ZTRiYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjEyOjQ3IDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMDg6IGZyb20geWFiZXJhdW5leWE6IEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoIHJlY2VudCBoZWFkZXIgc2h1ZmZsaW5nCi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgRml4IHNwZWxsaW5nIG9mIG1pYiBtb2R1bGUgZnN5c19nZXRmc3N0YXRzCiAKLWNvbW1pdCA4MjA0YTY0ZjBmZjJmNjk0NWMzMjRlZTlmYzFiZTNhZjZlMWI4NTBmCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MTU6MTcgMjAxMSAtMDcwMAorY29tbWl0IDFmYTFmZWUzNjkzZjY3YjgyMDIyMzgwNmIzZDczYWZkNGM1MGVjMTgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBNYXIgMiAwMTozNzoyMCAyMDEyICswMTAwCiAKLSAgICBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZSBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKyAgICBTaWxlbmNlIGEgY2xhbmcgd2FybmluZy4KIAotY29tbWl0IDk5ZjYzNjAyOTZkNDQ1OWFmOTlhZmZmZmFjODk3MDhhNTgxYzNjZTAKLUF1dGhvcjogU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjEyOjA5IDIwMTEgLTA3MDAKK2NvbW1pdCA5MzI2M2I5OGE1ZGIzNDRjZjJjNGQ0ODljNDM5NzFlN2IyOWNkYjAzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEzOjM3OjIwIDIwMTIgKzAwMDAKIAotICAgIENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbSBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeQotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCiAKLWNvbW1pdCBmN2E4OGJjNmY3MzhmNzdjYjljNDMwODFlMWY2MmYyN2UzYjZlZjk4Ci1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODowOToxOCAyMDExIC0wNzAwCitjb21taXQgNWExNzU0MjhiOTczZDJlYTg1NTNlMjlmZWNmOTRjZjE1NjZhYTg1OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMTo0ODoxOCAyMDEyICswMDAwCiAKLSAgICBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzI4OiBmcm9tIHlhYmVyYXVuZXlhOiBBZGQgRnJlZUJTRCA5LnggdG8gc3VwcG9ydGVkIE9TZXMgbGlzdAotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCiAKLWNvbW1pdCBlN2RkMWM0MzdhZmU2ZTI2YTU1YWE3NzJkNDY4MDEyNjU1NzQxZDMxCi1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoyMzoyMiAyMDExIC0wNzAwCitjb21taXQgMzY0Mjc2YTFjNWFhNjZjYWEyM2ViNWI3ZjExMWZkZWI1YWY3MWZhNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMTo0NToxMCAyMDEyICswMDAwCiAKLSAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZQotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIG1ha2UgZGVwZW5kIGZvciA1LjUuMi5wcmUxCiAKLWNvbW1pdCBjNTNkOGMzNTI1ZjU5MGYyMjEzZDM1YjBkYTk0MTIzODYyZjNlMzY2Ci1BdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoxOToxNiAyMDExIC0wNzAwCitjb21taXQgNzM1OTgzNDAxNzJlZmY3NTcyOWE2ZDU3MTkyYjgxNzFkNWJiZjAwZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXIgMSAxMDo0Mjo1NiAyMDEyICswMDAwCiAKLSAgICBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyIHNodWZmbGluZwotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS41LjIucHJlMQogCi1jb21taXQgM2I4YzhiODUwODVhYWUyZDFhMWM3Y2EzNWU3ZDA2NmQzZDc0ZmE5ZgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjE1OjE3IDIwMTEgLTA3MDAKK2NvbW1pdCBmMzIxNDQwMjY3MmNhMTk5ZmQ1MzFlNjYxMjJiZjk2YzRkOWE0ZWI3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEwOjQyOjM5IDIwMTIgKzAwMDAKIAotICAgIGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCiAKLWNvbW1pdCA3MTAwYWVkZmZkOThjZGE0YjA1MTY0YmNjZjE3ODc2MDIwMTk2ZTc5Ci1BdXRob3I6IFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwODoxMjowOSAyMDExIC0wNzAwCitjb21taXQgMmU3NGFjYjZmMTllNDcyOWNlZGUwYWI0M2U5MzE5NjFjYjIzYWFlYQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE1hciAxIDA5OjE4OjM5IDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbSBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeQotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIENIQU5HRVM6IEJ1ZyAzMTUyODQxOiBEbyBub3QgaW5zdGFsbCB0aGUgdXRpbF9mdW5jcyBzdWJoZWFkZXJzIHRoYXQgd2VyZSByZW1vdmVkIGluIDUuNwogCi1jb21taXQgZDJjNDc2OGJkMmVmYjQ4NjY0NDM0YTgzMTQyNWMyZGRhODVkNzEzMwotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MjM6MjIgMjAxMSAtMDcwMAorY29tbWl0IGI3MTA5NjQ2Yjk1YTcwNzEzZDFhZDk5MWQ0MWJjY2Q1N2MwYmIzZWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBNYXIgMSAwODo0ODo0OCAyMDEyICswMTAwCiAKLSAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZQotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIENIQU5HRVM6IEJ1ZyAzMTUyODQxOiBJbnN0YWxsIHV0aWxfZnVuY3Mgc3ViaGVhZGVycyBpbnRyb2R1Y2VkIGluIDUuNgogCi1jb21taXQgZDE5YjhmY2EyMzg0MDc3ZjczMmEzMGYyOTQ2YWIwYzAzYmMwZTczOAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjE1OjE3IDIwMTEgLTA3MDAKK2NvbW1pdCA0MzJjYmI3YTU1MDFhYjkwZDY2ZDBhODNlNzMxZTczNDNiYzA0YjM3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRmViIDI1IDEwOjEzOjE1IDIwMTIgKzAxMDAKIAotICAgIGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworICAgIENvcnJlY3QgdHlwb3MKIAotY29tbWl0IDBlNjg0MmZlMDgwY2VjODUzYjA4Y2QyMzIzMDE1YWJhYmMzODFjZTEKLUF1dGhvcjogU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA4OjEyOjA5IDIwMTEgLTA3MDAKK2NvbW1pdCA2YTZjOWJiYzc1ODRmMTk2YTExODVjYzE5MzUyMDRmMTIwNjgxMWVkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgRmViIDI5IDA4OjU1OjM1IDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbSBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeQotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIENIQU5HRVM6IEJ1ZyAzMTUyODQxOiBJbnN0YWxsIHV0aWxfZnVuY3Mgc3ViaGVhZGVycwogCi1jb21taXQgZWZhMzEzNWEyNTBhZTFmZmYzMDg0OTZkMjJlNzc4MmFiYzBjMzkxZQotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDg6MDQ6MjcgMjAxMSAtMDcwMAorY29tbWl0IGQ1MTVlMmE2ZTRjMmExYzRkODQ3MzRjYzdiMmQwYjJmYzVhODk0YWQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDE1OjU2OjIxIDIwMTIgKzAwMDAKIAotICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBQQVRDSCAzMzgzOTUxOiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggLVd1bnVzZWQgY29tcGlsZSB3YXJuaW5ncyB3aXRoIEZyZWVCU0QvTmV0QlNECi0gICAgCi0gICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0ODc5MTk6IEZpeCBjb21waWxhdGlvbiB3aGVuIGNhY2hpbmcgaXMgZGlzYWJsZWQKIAotY29tbWl0IDI1OTg4YmU4MzY5MjRhMzMwMjAxMTNjOTRhYTAyNjE0ZDFkYmYxYmUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwNzozNjozNiAyMDExIC0wNzAwCitjb21taXQgYWY4MzY4ZWQ4ODk4YTc4ZDA4NjhiNDdhZjQ2YmM5ZGIwN2QxYzc2NAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTU6NTA6NTYgMjAxMiArMDAwMAogCi0gICAgYXV0b2NvbmYKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzNDE0NzczOiBFbmNvZGUgaW50ZWdlciB2YWx1ZSB1c2luZyBBU05fSU5URUdFUgogCi1jb21taXQgNGRiNmI2NDUwOWRjMzUwODM5ZDU5NmUzMjUwNGIyZDgwY2EwYzdiMAotQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXVnIDQgMDc6MzY6MTAgMjAxMSAtMDcwMAorY29tbWl0IDE5ZTI3MTU4MDdmZTA2ZmQwYmFlZGY4ODE2NTAxMWFlZTkzM2U3NTUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDE0OjA1OjM0IDIwMTIgKzAwMDAKIAotICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBQQVRDSCAzMzgzOTQ5OiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggYXV0b2NvbmYgdGVzdHMgZm9yIHN5cy9tYnVmLmgKLSAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKyAgICBDSEFOR0VTOiBtYW46IEJVR1M6IDM0OTA3MDg6IENsYXJpZnkgdXNlIG9mIGNvbW1vbiBjb21tYW5kLWxpbmUgb3B0aW9ucwogCi1jb21taXQgZjNiYzU1MTg0ZDk2YzU4ZGNmZDU4OTUzNzk2YzEwZjczNTRkZDRhNwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEF1ZyA0IDA2OjU0OjIyIDIwMTEgLTA3MDAKK2NvbW1pdCA2NWY3OTYyZjkzMmM5Yjc1YzViYmJiMDQ3ZDFlMjZhZTYwOTc4ZTUzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMjoyMzozNCAyMDEyICswMDAwCiAKLSAgICBwcm9tcHQgZm9yIHBhdGNoIGFuZCBhbiBhcmVhLCBhbmQgdXNlIHRoZSBwcm9wZXIgQ0hBTkdFUyBsaW5lIGZvcm1hdAorICAgIENIQU5HRVM6IHNubXBkOiBCVUdTOiAzNDg5NjMxOiBGaXggaW5jb3JyZWN0IGhhbmRsaW5nIG9mIFVDRCBtb25pdG9yaW5nIGZsYWcKIAotY29tbWl0IGFkNjk2YmExMjQ5ZDNjNGJjMTJjMGViMzg0ODFmZjBmYzQzM2Y4YTEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBdWcgNCAwNjo0Mjo0MiAyMDExIC0wNzAwCitjb21taXQgYWMxNjYwNTFiNmEwOTJkZDRhNTk0MzI2ZWM4NWUyZjY5OWI2MjU0NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTE6NTc6NDEgMjAxMiArMDAwMAogCi0gICAgVXNlIGZldGNoIC0tYWxsIGFuZCByZWJhc2UgYXMgc3VnZ2VzdGVkIGJ5IEJhcnQgZm9yIHNwZWVkIGltcHJvdmVtZW50cworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEJVR1M6IDM0NzQ1OTA6IERvbid0IG1hdGNoIHVuZGVyc2NvcmVzIHdpdGhpbiB0aGUgc291cmNlIHJvb3QgZmlsZW5hbWUKIAotY29tbWl0IDQ0OTY5YjRlNTdjMjcxOTRlNWJkMzU3YmM0NTI3NWZlYjg2OTVkMjIKK2NvbW1pdCA4NzliZjcwNzlkMzRmYTQ2ZjZmY2Y1NGEwMWM4NTAwYmVhZWNlNTlhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMDo0NDo0MSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHUzogMzQ2MDM2NDogRml4IHVzZSBvZiBibG9jayBmYWN0b3Igd2hlbiBkZXRlY3RpbmcgZXJyb3IgY29uZGl0aW9ucworCitjb21taXQgMDM0ZjFjNTcyZjY4M2VhNDI4NTgzMDc0NDcxZTVkNWQxM2I1MTgzNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTA6MjI6MjAgMjAxMiArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgdGVzdHMgd2hlbiBjb25maWd1cmVkIHVzaW5nIC0tZW5hYmxlLXJlYWQtb25seQorCitjb21taXQgMzY0MjNlMjEwYmZiNjVlZjEyMWM2YTY2YWVjNDM4YzdjMjM3ZDNkZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTA6MDM6MjUgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDU0MTY4OiBjb25maWd1cmU6IEZpeCBidWlsZGluZyB3aXRoIC0tZW5hYmxlLXJlYWQtb25seQorCitjb21taXQgZWVkMGJjYmM0M2ZlYTE4MjU5ZjBmNjNiMjA4MWI2ZDEwNTM1YTA1MgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMDk6Mjc6MTEgMjAxMiArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgYmFieS1zdGVwcyB3aGVuIGNvbXBpbGVkIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0LgorICAgIEluc3BpcmVkIGJ5IGJ1ZyAjMzQ1NDE2OAorCitjb21taXQgZWM2YTIzMDMwZTVhMjA3MmMxOWMxOGMxZDljMTI0Mzg3ZGE1NmI3YgogQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCA4IDIwOjUyOjI1IDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIEZlYiAyNyAxODo0Mjo1OCAyMDEyICswMDAwCiAKLSAgICBDSEFOR0VTOiBXaW4zMjogRml4IHRoZSBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIHdpbkV4dERMTCBzb3VyY2UgY29kZSBhbmQgdGhhdCBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSBjaGFuZ2Ugb2YgdGhlICJvaWQiIHR5cGVkZWYgZnJvbSB1aW50MzJfdCB0byB1X2xvbmcuCisgICAgQWRkIC1scnQgdG8gTkVUU05NUExJQlMgc3VjaCB0aGF0IGNsb2NrX2dldHRpbWUoKSBjYW4gYmUgZm91bmQKIAotY29tbWl0IGVhNThiNjdiNGYzMThhY2YxZjllODUyNTgyYmNjYWQ0N2I0ZDhlNjcKK2NvbW1pdCBmMTMzMjA1MDAyOTRiYjI0MGY2M2M2ZGQ3ZDJlOWEyMjA4ZWI3NDBkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNjo1Mjo1MSAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCB0ZXN0cyB3aGVuIGNvbXBpbGVkIHVzaW5nIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAorCitjb21taXQgYzQyNzZiNjIzMmMyOTE0NWMwMzk4ODRlNmI1YTZiNmRhNGI5MzgzNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTU6NTQ6NDUgMjAxMiArMDAwMAorCisgICAgT21pdCBTRVQtcmVsYXRlZCBjb2RlIHdoZW4gY29tcGlsaW5nIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0IChpbnNwaXJlZCBieSBwYXRjaCAjMzQyNDkzMCkKKworY29tbWl0IDAxYzkzMGVkY2MyNTcwMGQ2YjVmYjAzNzZmNTVhMjY0MjVlMTNmYjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gRmViIDI3IDE1OjE3OjIyIDIwMTIgKzAwMDAKKworICAgIE9taXQgU0VULXJlbGF0ZWQgY29kZSB3aGVuIGNvbXBpbGluZyB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAorICAgIChpbnNwaXJlZCBieSBwYXRjaCAjMzQyNDkzMCkKKworY29tbWl0IDk0ODRkODMyMDNjNGUyZDgyMDQxNmJlNjY1ZmE4MzNhYTcwNDQ0ZDIKIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgOCAyMDo1MjoyNSAyMDExICswMjAwCitEYXRlOiAgIEZyaSBGZWIgMjQgMTQ6MDA6MzIgMjAxMiArMDEwMAogCi0gICAgQ0hBTkdFUzogV2luMzI6IHdpbkV4dERMTDogSW52b2tlIFNubXBVdGlsT2lkRnJlZSgpIGJlZm9yZSBTbm1wVXRpbE9pZENweSgpLiBJdCdzIG5vdCBjbGVhciB5ZXQgd2h5IHRoZSBvcmlnaW5hbCBjb2RlIGRpZCBub3QgbWFrZSBzbm1wd2FsayB0cmlnZ2VyIGEgbWVtb3J5IGxlYWsuCisgICAgUmV3b3JrIGNvbW1pdCBiNGExOTUwNWEwNTgxNmU5NGUwMWRlOTdiZjk5YWMzN2ZjZGM2ZDIzLgogCi1jb21taXQgOGEwMWVjNjQyM2Q0MDBjNGExM2NjYWM2OGEzNzkxZDAyMThhMDg4NQorY29tbWl0IDJiN2YxMzQ5NTIyODYzNWQ4MTZlNThiMjE3NGRjMTI0ZGQwY2YzOWYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBGZWIgMjQgMDc6NDM6MjIgMjAxMiAtMDgwMAorCisgICAgc2V0IE1FUkdFX0FVVE9FRElUIGJlZm9yZSBtZXJnaW5nIHRvIGF2b2lkIHRoZSBmdXR1cmUgZ2l0IDEuNy4xMCBmb3JjZWQgbXNnCisKK2NvbW1pdCBlMWI5MTBiMGJlOTM0MzU4NmFlOWVkYmE2ZjQ2MDQwYWYzMTVmY2RkCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUaHUgQXVnIDQgMTE6MTk6MTcgMjAxMSArMDIwMAorRGF0ZTogICBUaHUgRmViIDIzIDEwOjI3OjU0IDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IFdpbmRvd3M6IE1ha2UgbGlua2luZyB3aXRoIHJlY2VudCBPcGVuU1NMIGJpbmFyaWVzIHN1Y2NlZWQuCisgICAgQ0hBTkdFUzogc25tcGQ6IGluaXRfYWdlbnQoKSArIGluaXRfa21lbSgpOiBSZXR1cm4gYW4gZXJyb3IgdmFsdWUgaW5zdGVhZCBvZiBpbnZva2luZyBleGl0KCkgaWYgYWNjZXNzIHRvIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBpcyBkZW5pZWQKIAotY29tbWl0IGUyMWVlZjJmYzVjZmRjMTIwMDQ3OTExOGEyYzViMjlhNzBiMGRmNjAKK2NvbW1pdCA0NjNlZWQyMTIwZjlkMTkxYmMyMjY3MzQ5NmE0OWU4MTc0NjY0ZTRiCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUaHUgQXVnIDQgMDg6NTI6NDMgMjAxMSArMDIwMAorRGF0ZTogICBUaHUgRmViIDIzIDEwOjAzOjMxIDIwMTIgKzAxMDAKIAotICAgIENIQU5HRVM6IGFnZW50OiBBdm9pZCB0aGF0IGEgTUlCIHdhbGsgb24gdGhlIGhvc3QgcmVzb3VyY2VzIE1JQiB0cmlnZ2VycyBhIGNyYXNoIG9uIEZlZG9yYSAxNQorICAgIFJlbW92ZSBvYnNvbGV0ZSBzeW1ib2wgTkVUU05NUF9FWElUX09OX0JBRF9LTFJFQUQKIAotY29tbWl0IGIwNTZlZTZlYjUzOTA5YWQwNGYxNmVjMjZkMjY5MGQ3YTA4MzE5MmEKK2NvbW1pdCBjMzZhYjcxYTRlMDk2ZjE2Y2M1YTU1NTMzZjA4MGM5YTk0MDA5OTE0CiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUaHUgQXVnIDQgMDc6NTk6MDQgMjAxMSArMDIwMAorRGF0ZTogICBUaHUgRmViIDIzIDA4OjUzOjU2IDIwMTIgKzAxMDAKIAotICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW4gYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jCisgICAgQ0hBTkdFUzogRnJlZUJTRDogc25tcGQgKyBhcHBzOiBTZW5kaW5nIFVEUCBwYWNrZXRzIHdvcmtzIGFnYWluIGZvciBub24tcm9vdCB1c2VycwogCi1jb21taXQgMTcxZjk1ODBmZmZhNjA0MWFmYzg2MmVmOTQ0MGQ5NDlmMGFhNzliZgorY29tbWl0IGVkZWJkZGJhOTMwZjhiMTQ3MmZhMGJkMjBmYzQxM2VmOGNmNDY0YTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBGZWIgMjEgMTE6MzE6NDYgMjAxMiArMDEwMAorCisgICAgdGVzdGluZy9SVU5URVNUUzogRml4IGEgYmFzaGlzbQorCitjb21taXQgYjRhMTk1MDVhMDU4MTZlOTRlMDFkZTk3YmY5OWFjMzdmY2RjNmQyMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiAyMCAxNjo1ODo0NyAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgJWxkIHZlcnN1cyB0aW1lX3Qgb24gc3lzdGVtcyB3aGVyZSB0aW1lX3QgaXMgYSBzeW5vbnltIGZvciBsb25nIGxvbmcgaW5zdGVhZCBvZiBsb25nLgorCitjb21taXQgZDg5NzhlY2M4MjExYmU3YzFlNzkwNWYxZTIxNWJiMDZkZWQyNjZiNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEZlYiAyMSAxMjozMjoyNSAyMDEyICswMTAwCisKKyAgICBGaXggc25tcGxpYi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmMgZmlsZSBoZWFkZXIKKworY29tbWl0IGFhNzY2ZDE5NmU1Mjg3ZjZjYTc5YjU4YTM0NWIwMjQyNjBhYmEzNTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgMjAgMTc6MDc6MTMgMjAxMiArMDEwMAorCisgICAgSUYtTUlCOiBkbyBub3QgdHJpZ2dlciB1bmRlZmluZWQgYmVoYXZpb3IgKD4+IDMyIG9mIGEgMzItYml0IHZhcmlhYmxlKSB3aGVuIHVwZGF0aW5nIGEgY291bnRlciBhbmQgaWZpX2lwYWNrZXRzIGlzIGEgMzItYml0IHZhcmlhYmxlCisKK2NvbW1pdCBjM2ZiNmRkOWU2Yjk5ZTk1NDI0OTMxODg5ODc4NzFmYzUwMTdjYjNjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIzIDA5OjQ1OjQ1IDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgb24gc3lzdGVtcyB3aGVyZSBtb2RlX3QgaXMgdW5zaWduZWQKKworY29tbWl0IGY4YTNlZjBkM2Q0ZTUzMDI3OTkwMDEwMTA0OWI4ZGU5OGE0NGE2ZmIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo0ODo1MiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliICsgc25tcGQgKyBzbm1wd2FsazogQXZvaWQgdGhhdCBzeXN0ZW0gY2xvY2sgY2hhbmdlcyAoZS5nLiBieSBudHBkKSBhZmZlY3QgY29kZSB0aGF0IG5lZWRzIHJlbGF0aXZlIHRpbWUKKyAgICBDSEFOR0VTOiBzbm1wZDogTWFrZSBzdXJlIHRoYXQgdGhlIHJhbmdlIG9mIHRoZSBTTk1QdjMgdmFyaWFibGUgc25tcEVuZ2luZVRpbWUgaXMgMC4uMjE0NzQ4MzY0NyBvbiBhbGwgc3VwcG9ydGVkIHN5c3RlbXMgaW5zdGVhZCBvZiAwLi40Mjk0OTY3MiBvbiBzb21lIHN5c3RlbXMgKGkuZS4gd3JhcGFyb3VuZCBhZnRlciA0OTcgZGF5cykKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGQgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCksIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSwgbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKSwgbmV0c25tcF9nZXRfYWdlbnRfcnVudGltZSgpCisgICAgQ0hBTkdFUzogc25tcGxpYjogRGVwcmVjYXRlIGF0aW1lX2RpZmYoKSwgYXRpbWVfbmV3TWFya2VyKCksIGF0aW1lX3JlYWR5KCksIGF0aW1lX3NldE1hcmtlcigpLCBtYXJrZXJfdHRpY2tzKCksIG5ldHNubXBfbWFya2VyX3VwdGltZSgpLCBuZXRzbm1wX3RpbWV2YWxfdXB0aW1lKCksIHRpbWV2YWxfdHRpY2tzKCksIHVhdGltZV9kaWZmKCksIHVhdGltZV9oZGlmZigpIGFuZCB1YXRpbWVfcmVhZHkoKS4KKyAgICBDSEFOR0VTOiBzbm1wbGliOiBDaGFuZ2UgdGhlIG5hbWVzIG9mIHRoZSBzdHJ1Y3QgdGltZXZhbCBtZW1iZXJzIG9mIGRhdGEgc3RydWN0dXJlcyB0aGF0IHdlcmUgdXNlZCB0byBzdG9yZSBhIHdhbGwgY2xvY2sgdGltZSBidXQgdGhhdCBkbyBub3cgY29udGFpbiBhIG1vbm90b25pYyBjbG9jayB2YWx1ZQorCitjb21taXQgYzE5NzYwZjMzMzNjOTJmYWM1ZDUwZTk3NjhjZGY5MzkyMThiYzQ4NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEZlYiAxNSAwOTo0NTowMyAyMDEyICswMTAwCisKKyAgICBzbm1wbGliL3NubXB2My5jOiBGaXggc291cmNlIGNvZGUgaW5kZW50YXRpb24KKworY29tbWl0IGE2ZGIyMzk5NDVlMTk1ZGU1YTkwZmExODM3MDBiMjdhNmVjYjI4ZDMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBGZWIgNyAwMDoxMToxNCAyMDEyICswMTAwCisKKyAgICBGaXggcG9zc2libGUgbWVtb3J5IGxlYWsgZnJvbSByZWNlbnQgZGVjbGFyYXRpb25zIHBhdGNoCisKK2NvbW1pdCAwZmJiYjlhOWUyOTA2YTdhZjk1Njk1NzA2MWQ0ODU4NzQ0NjJhZWE5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDYgMjA6NDM6MDQgMjAxMiArMDEwMAorCisgICAgRG8gbm90IG1peCBkZWNsYXJhdGlvbnMgYW5kIHN0YXRlbWVudHMKKworY29tbWl0IGYzMDhkNWJhZmIwNWQ3OGVkNDAzMGM0ZWNmZjMyNGI2Y2JkYTY4MGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNToyNTozMCAyMDEyICswMTAwCisKKyAgICBGaXggdHdvIGNvbXBpbGVyIHdhcm5pbmdzIGluIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jCisKK2NvbW1pdCA0NmYwZmMxYjdmYzI2YTIyNTc2M2JjNjVjY2E1MjBhMWM1OWYwMjUxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDYgMjA6NTQ6MzIgMjAxMiArMDEwMAorCisgICAgc2VuZG1zZyBkb2VzIG5vdCBsaWtlIElQX1NFTkRTUkNBRERSIGlmIGFkZHIgaXMgSU5BRERSX0FOWQorCitjb21taXQgZGViYWM0OThmZTg0MTAxMTAxMDdhMmZlNjRmOGFmYjc0OGVkYWEwNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgNiAxNjo0ODowOSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBhZGRlZCBPQ0ZTMiAoT3JhY2xlIENsdXN0ZXIgRlMpIHRvIGhyU3RvcmFnZVRhYmxlIGFuZCBockZTVGFibGUKKworY29tbWl0IGZhZmM5OWNkODllNzNlYzdlMDBiZjczNjBkMGI0ZmE2MTk0NGE0ZjQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxMToxODozNCAyMDEyICswMTAwCisKKyAgICBTaW1wbGlmeSBjYWxjdWxhdGVfdGltZV9kaWZmKCkgYW5kIGNhbGN1bGF0ZV9zZWN0aW1lX2RpZmYoKQorCitjb21taXQgN2FmMjAxM2RlOGJmMWIzNzljMDc2ZGI0ZTEwNDUwOGUxNzg3NGQzZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjU1OjU4IDIwMTIgKzAxMDAKKworICAgIEZpeCBvcmRlciBvZiBmZWF0dXJlICNpZm5kZWYgYW5kIERveHlnZW4gY29tbWVudCBibG9jaworCitjb21taXQgYmJkNjdmNjM1MzBmNWVmMGJmYzk0OGZjNThkZmU2YTkzZjhmODY3OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE1OjI1OjMwIDIwMTIgKzAxMDAKKworICAgIEZpeCB0d28gY29tcGlsZXIgd2FybmluZ3MgaW4gYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMKKworY29tbWl0IDQyYTY2YWVmZjI1YjllOWVmNjM1YTQwNGFkMmY1MjEyZjllOGNmMGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo0Nzo1NCAyMDEyICswMTAwCisKKyAgICBSZW5hbWUgdHdvIGZ1bmN0aW9uIGFyZ3VtZW50cworCitjb21taXQgM2ZlNzJiM2I5OWI3ZTRiMmI5ODIzNjNkZmM0ZjJkOGQxM2Y0MDU5MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDEzOjQ5OjIyIDIwMTIgKzAxMDAKKworICAgIENvbnZlcnQgc25tcF9zZWxlY3RfaW5mbygpIGRvY3VtZW50YXRpb24gdG8gRG94eWdlbiBmb3JtYXQKKworY29tbWl0IGU5ZGIyNjZhZTQ4ZDA1YTdhNmNiNWQ3MWI0YmRlYTdhZDgwOGVmNWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxMToxNzo1NyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQWRkIG5ldHNubXBfZ2V0X25leHRfYWxhcm1fdGltZSgpCisKK2NvbW1pdCBkMDgwNDRjYjllNTcwMmZiZjU0OWUxNDQyNWY0Mjc5NDI1OWQ4YTIxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMDk6Mzg6MDcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkKKworY29tbWl0IGEwNWMyN2MyNzExY2I0MTU4MmEzYjRjMzFlMzhiMGU5MzUzMGI2MmQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDo1MTozMyAyMDEyICswMTAwCisKKyAgICBGaXggc3BlbGxpbmcgaW4gYSBzb3VyY2UgY29kZSBjb21tZW50CisKK2NvbW1pdCA5MTBkN2IwZDk5MTgzNjA5Yjk1MjliMDRjM2YyOTMzMGViNjYxMDIxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6Mzg6MTIgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBuZXRzbm1wX3RpbWV2YWxfdXB0aW1lKCkgYnkgbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCkKKworY29tbWl0IDQzYTgzZjZjNmE5NmNjMjMxNmI3MGVlY2FjZjEyN2ViNjkxM2M3YTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxMToxOToxNSAyMDEyICswMTAwCisKKyAgICBVc2UgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IgaW5zdGVhZCBvZiBtZW1jcHkoKSBmb3IgY29weWluZyBzdHJ1Y3QgdGltZXZhbAorCitjb21taXQgMmZlNTc5ZWZiMWNiM2E3NGY4MjgwM2NhMzIzOTI4ZjZiOGU0YjVjMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEZlYiAzIDE0OjA0OjAyIDIwMTIgKzAxMDAKKworICAgIE1ha2UgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jIGJ1aWxkIGFnYWluIG9uIG5vbi1MaW51eCBzeXN0ZW1zLgorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCAzNDVhMWU0MjU0ODEyY2I5ZWRjMWQyNzQ0OTFiNzY2ODFhOWRiYTFlLgorCitjb21taXQgODgxZGU2YWI3MzU1Mjc3YTVjMTE2YTAwOGZiZTUxMzI5M2IwNTAzOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEZlYiAzIDEwOjA4OjIxIDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIFJtb24gTUlCIGltcGxlbWVudGF0aW9uCisKK2NvbW1pdCA0NjI5OTMzYzBkM2IzZjlmNGJhNTgzNTM0Zjc5YTM3ZmI5NjMzODE3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMjA6MDU6MzEgMjAxMiArMDAwMAorCisgICAgTW9yZSBjb21waWxlciB3YXJuaW5nIGZpeGVzCisKK2NvbW1pdCBlOWI1YTNkZWU2ZjlhZmFiOGI5MGEyOTM5MjA0MDYzMmIwNzVhZDdhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTY6NTY6NTUgMjAxMiArMDEwMAorCisgICAgVXNlIFNOTVBfTUlOKCkgaW5zdGVhZCBvZiBtaW4oKQorCitjb21taXQgYWU0NTJjNzdiNDExMTM5ZDZiNTgwMGZmY2Y4OGQ0OGU5YjQ3OTJhOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE1OjIzOjM4IDIwMTIgKzAxMDAKKworICAgIFJlc3RvcmUgY29tbWl0IGRiYjg3OTVhN2RmNTk1ZjA2MDNmMmVjNjE3MDQ3OTlmNGM0ODI2NjcuCisKK2NvbW1pdCBjN2QxMWZhMDBmOTk5NWRkYjlmZTNkNDk5NGEzZTk3OTBkYTJlMTg5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTU6MTg6NDAgMjAxMiArMDEwMAorCisgICAgUmVzdG9yZSBjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2NyBwYXJ0aWFsbHkuCisKK2NvbW1pdCAwMGZkNjI3MjBlYzQ1NGY1YTY5MGRlNGZlYmEwODIyM2NmYjJjM2Y4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTQ6NDg6NDQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBBdm9pZCBjcmFzaCBkdXJpbmcgc2h1dGRvd24gZHVlIHRvIGludm9raW5nIHBlcmxfZGVzdHJ1Y3QoTlVMTCkKKworY29tbWl0IGQ5ZTIyOWQ4MWFiZWFmMTkxZWYyY2NiMDc3ODQyODg1YzIzMGQ2MjIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNDo0Nzo0MSAyMDEyICswMTAwCisKKyAgICBSZW1vdmUgYSBzdXBlcmZsdW91cyBkZWNsYXJhdGlvbgorCitjb21taXQgMWUyZTJhZjZjYWU4MzBmMzgxZTg3YTI0NGQwMjllYjg2YmYzZmNjZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDEzOjIwOjM3IDIwMTIgKzAxMDAKKworICAgIHBlcmwvU05NUC9leGFtcGxlcy9waW5nbWliLnBsOiBBZGQgZXJyb3IgY2hlY2tpbmcKKworY29tbWl0IDI0MWExNDFlMzFmMTY4NGZjNmNmNzBjYzRhMDBjY2U2MzZmZDM1MjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMToyODozNyAyMDEyICswMTAwCisKKyAgICBNYWtlIGNvbmZpZ3VyZS10aW1lIEVWUF9NRF9DVFhfY3JlYXRlKCkgZGV0ZWN0aW9uIHdvcmsgb24gdGhlIDUuNCBicmFuY2guCisgICAgCisgICAgU2VlIGFsc28gY29tbWl0IDQ2ZWFjMDJlOWEyN2JmNGYzMDY4ZTc5NWNhYjg5MWYwNWE4NDg4NzAuCisKK2NvbW1pdCA2ZDlkMTRmZWFhYTJkMGZlYzY4YjRkMTU4OTQ0ZDMyY2IwNGZmMWJjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTE6MTI6MDAgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0IHRoZSBjaGFuZ2VzIHRoYXQgYnJlYWsgdGhlIGJ1aWxkIG9uIHRoZSA1LjQgYnJhbmNoIGZyb20gY29tbWl0IGRiYjg3OTVhN2RmNTk1ZjA2MDNmMmVjNjE3MDQ3OTlmNGM0ODI2NjcuCisKK2NvbW1pdCA4YWJlNDllMzBjOTdjODk4M2U4M2I0NWEzNWM3MTZmZTkxZjY2YmVhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgRmViIDEgMTE6NTY6NTggMjAxMiArMDEwMAorCisgICAgRml4IHNldmVyYWwgY29tcGlsZXIgd2FybmluZ3MgaW4gdGhlIERJU01BTiBNSUIgaW1wbGVtZW50YXRpb25zLgorCitjb21taXQgZjlmYjBhNTMzMzc1ZTE0ZGMzNzAwMjVhMGIyZmJjNzYxYmYyN2JlNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDA5OjU2OjAyIDIwMTIgKzAxMDAKKworICAgIFJldmVydCAiSE9TVC1SRVNPVVJDRVNfTUlCOiBmaXggYSBjb21waWxlciB3YXJuaW5nIiBiZWNhdXNlIGl0J3Mgd3JvbmcuCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCBhYTZiNzliYzEyNGE3YjdhODg1ZDdlNTAzNWFiMDZhYTNlY2VmNjEzLgorCitjb21taXQgY2E0YTRmZTI1ZWZkMjcxNGY4ZjE5NjFiOTc4NTY2MTY1NjNmNDJjOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDEwOjIxOjQ5IDIwMTIgKzAxMDAKKworICAgIC5naXRpZ25vcmU6IEFkZCBweXRob24vYnVpbGQKKworY29tbWl0IDEzYWRhNTY1NThiNDRlMjhkMTM1NWMwZGNlMWQ5MjFmMzc0NmQ1NDgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjUzOjQ5IDIwMTIgKzAxMDAKKworICAgIFJldmVydCAiUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIiAtIHRoZXJlICppcyogTkVUU05NUF9QUklvIGluIFY1LTYrIGJyYW5jaGVzCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCBhYTUyOGJkMjJjNzQ5M2NhOGQ2N2U2NzhmYmY2MTVjYTBmNjNlYTZkLgorCitjb21taXQgYWE1MjhiZDIyYzc0OTNjYThkNjdlNjc4ZmJmNjE1Y2EwZjYzZWE2ZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6MTM6MTggMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIC0gdGhlcmUgaXMgbm8gTkVUU05NUF9QUklvIGluIFY1LTQgb3IgVjUtNSBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYi4KKworY29tbWl0IDJmYjk5YmU5YWE4NmE2Y2EzNDliODZkNGVmOGJjNzI2ZWQ5ZjJhODIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjU4OjM1IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgZTVjMzU1ODllMGJmNDE2YmZkMDM2YmQ0NjhmNDJhYWVhYjI1ZTc4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6NTU6NTYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAzNDVhMWU0MjU0ODEyY2I5ZWRjMWQyNzQ0OTFiNzY2ODFhOWRiYTFlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDo1MToyNiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBlcnJvciBoYW5kbGluZyBpbiBpbml0X2ljbXAoKS4KKworY29tbWl0IGMzMDM1NDlhNTlmYThjMmYyMGE5ZDhiZjFlOTg1ZmJjOGFiZGU2YTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjQ2OjI5IDIwMTIgKzAxMDAKKworICAgIFJld29ya2VkIF9yZWdpc3Rlcl9leHRlbmQoKSBlcnJvciBoYW5kbGluZy4KKworY29tbWl0IDljMjBlMjdhNzAyNmZjMDMwZGEzYjMyOGI5YTJlMWI0ZjM2NjcwY2QKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjIxOjI4IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgMjJmZDBiZmMyZGYwZTFmNjAyMGRjM2M1MGE3NTNkZGYyOGE0NTk5YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MjA6MjIgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCA1ZDYxZTU3YmFmNTgwYzc4MjUyYzBhYmIwMDk4YzA3YmIwNWFmMTdjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNToxNzowNSAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDNjM2VlYWU4MGQ3OTZmMjc1OTdjOTAxZTdmZjIwNDZjNzY5ZWY0YjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA4OjA5IDIwMTIgKzAxMDAKKworICAgIE1hcmsgcm93cmVxX2N0eCBhcyBmcmVlZCBzbyBuZXh0IGl0ZXJhdGlvbiBhbGxvY2F0ZXMgbmV3IG9uZSBpbnN0ZWFkIG9mIHJldXNpbmcgdGhlIGZyZWVkIG9uZS4KKworY29tbWl0IGFmOWFiZDUzYzIzMzdjOTBhNjkxYTdiMDQ0ZmYzZjk3YzEwMDMxNjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA1OjEwIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgY2Y5NDY1ZjU0MTgxZTYyZTIxYTliMTAyMTkxMzExMDdhM2QyZWJmNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDQ6MDYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCA3ODcxZjJiMDliOGI1MmYzNGE5ZTU3Nzg0MjY2NDU5MDUzMTY1YmNiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowMjo1MCAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDdhMzdmMzNkMzEwYzk1OTg2MDdiYzMyM2Q5YmRiZjkxYWFmNzJjOTUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjAwOjUxIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgM2U0NWY3MDI2MjQ5ZTQ1MzUwZWRhYWM4NTMzNzQyM2FhMGU5NWQ4YgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6MTM6MTggMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIC0gdGhlcmUgaXMgbm8gTkVUU05NUF9QUklvIGluIFY1LTQgb3IgVjUtNSBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYi4KKworY29tbWl0IDYxOTM2NzYyZTY0MWMxOGRiNzVhYTUxMjVhMzNlNzc2YzY3N2FkYzUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDExOjEzOjM5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGZyZWVpbmcgcmVnaW5mbyB0d2ljZSBvbiBlcnJvciBpbiBhIHRlbXBsYXRlIGFuZCBhbGwgaXRzIGluc3RhbmNlcy4KKworY29tbWl0IDQ5NjQzNzQzMDQxNWZiYWZlYjFjY2Q0Nzc0ZjFjYTAwZDYyN2VhMWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTE6MDQ6MTMgMjAxMiArMDEwMAorCisgICAgcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogRml4IGNvbXBpbGVyIHdhcm5pbmdzIGludHJvZHVjZWQgb24gVjUuNiBicmFuY2gKKworY29tbWl0IDViNGEyNGNkY2VlMWJjM2Q4MjYzM2NjYWZlYjk2ZmNlOTUzNDljNTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMDk6MjI6MjcgMjAxMiArMDEwMAorCisgICAgdW5pdCB0ZXN0czogZml4IGEgNjQtYml0IGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IGNiZjFjOTFiYWY3MTkxYmU1ZmEyN2Q4MWJjZjg3MTQzMzFhMmMxMmYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMDk6MjA6NDIgMjAxMiArMDEwMAorCisgICAgVXNlIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2UoKSB0byBmcmVlIGEgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0LgorICAgIAorICAgIEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0IGRiZjI2YTA1YTA0ZWYyNGM0NzM0NmU1YWRkYTQ4ZTMzODQ5OGU3MWYuCisKK2NvbW1pdCBhYTZiNzliYzEyNGE3YjdhODg1ZDdlNTAzNWFiMDZhYTNlY2VmNjEzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDA5OjIwOjMxIDIwMTIgKzAxMDAKKworICAgIEhPU1QtUkVTT1VSQ0VTX01JQjogZml4IGEgY29tcGlsZXIgd2FybmluZworCitjb21taXQgM2E3NmI0M2UxMWZmZmFkYTYzMmZjY2I4NDhhYjUwMGU4NzZhZDQ4YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNjoyMTowNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEF2b2lkIHRoYXQgYW4gU05NUCBzZXQgd2l0aCBVc2VFbnVtcyBlbmFibGVkIGNhdXNlcyBhIHNlZ21lbnRhdGlvbiBmYXVsdAorCitjb21taXQgODRkZWM5ZmE5MmIwYWEyZDU4ZWI3MDIwMzMwZjRmOThlNTE1NDMyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNDozODoyMSAyMDEyICswMTAwCisKKyAgICBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOiBGaXggbW9zdCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgMzhjZjIxOGMzZjFhNzI3Nzg2ZTIyN2E1ZDNmYjE4NmZkMGYxYTE1ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6NTA6MTMgMjAxMiArMDEwMAorCisgICAgRml4IGEgdHlwbworCitjb21taXQgNDU0MTIyMjQ0MTIyYmZkYjZmNjdjYWIzMTI1NmQ3YjQ2MzcyZTllMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6MzA6MTggMjAxMiArMDEwMAorCisgICAgRnJlZSB0bVN0YXRlUmVmIG9uIGVycm9ycy4KKworY29tbWl0IDAxMTkwMjJkYWE1OWM3M2JmZWMwZGEyMzg2ZDA2MjhmMTRlNmRhYjcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDE0OjA5OjEyIDIwMTIgKzAxMDAKKworICAgIEZyZWUgZmluZ2VycHJpbnQgd2hlbiBpdCdzIG5vdCBuZWVkZWQuCisKK2NvbW1pdCAwZTg0Y2QzMDNhMDgyNjdkZWM3OGY2ZDgxYzliYjA3ZTNkODNhMTFmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzo0ODoyNiAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA2M2RjODQ2YTc5NDljZTY5N2IzZTI4YzU0M2RjMTEwNWU2M2EyMjUwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzowODoyOCAyMDEyICswMTAwCisKKyAgICBGcmVlIGNlcnRpZmljYXRlIGZpbmdlcnByaW50LgorCitjb21taXQgY2UxZjI4NGE2M2ViODE2NDRiM2UzMjYwNmNiZTM5YjY3ZTFkZmYyYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6Mzc6MDkgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgN2UyMTQxM2NhNmYyZWZkN2EzYWZiNjJjNjJiNjQ0ODgxYjhiZDFlNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6NDY6MzAgMjAxMiArMDEwMAorCisgICAgUHJvcGVybHkgYWxsb2NhdGUgYW5kIGZyZWUgZW5naW5lSUQuCisKK2NvbW1pdCAzNGM5NjI4ODI2MDdjMzYzOGEyZmEyNWEyYWM1MzE0OTJkNzFjNzg3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzozNzoyNSAyMDEyICswMTAwCisKKyAgICBGcmVlIGxvY2FsbHkgYWxsb2NhdGVkIHRtU3RhdGVSZWYuCisKK2NvbW1pdCBmNTdhZTUzMWRjNTY1OGFiY2Q2NWIxNjI3NjE1NTI1MjM4ZDE2ZDJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzoyMDoyNCAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA1MzZiYzU3NTU2YzMxNDE1NjFlYTRhMTk0ODEwYjE2MjkwYTY5MWVlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzoxNTo0NyAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBpZiB0aGUgZnVuY3Rpb24gYWN0dWFsbHkgZG9lcyBzb21ldGhpbmcuCisKK2NvbW1pdCBhMDc3N2QzMDdkYmNhZjIxOWVlMDE4NGEwZmJhYjlkNGU1ZDZhYTBiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzowMTo0NSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA4Yjk3YTcxYzhlNzk1OTQyOGViNGQ0ZThkOTBlOTA5NmQ0M2ZmMDlmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1NzoyNiAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCAyYzE1MDdjMjIwMzA1NDlhZTY2MGMwZTIxMWZiZGM1Yzc1ZWM1YzU3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1Mzo0NyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA2NWYyYjdiY2Q0ZmUwMzkwNmFhMWExMTVhYjYwYTg5YjhhZTkzM2Q1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1MTozNiAyMDEyICswMTAwCisKKyAgICBDbG9zZSBvcGVuIGZpbGVzIG9uIGVycm9yLgorCitjb21taXQgMGU1MmU0ZjY2ZDQ0NzY2YmVhMzc0NzM1NTZjNzhlNTIxOWI5NTQ2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6NDU6MzMgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZGJmMjZhMDVhMDRlZjI0YzQ3MzQ2ZTVhZGRhNDhlMzM4NDk4ZTcxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6NDI6MTcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNzQ4ZGE4NGIxZmQ2NTRlMzM4YmM3MDFlOGY5ZTVkYTIyOTE4N2YxYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MzI6MDQgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZWIyMTcxNDZmZDU0MDM2ZWE0MjAyYmZlZjc4YmJmNzc0ZDdlMzgyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MjM6MTAgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgOWJhMzhlZWM2NjEzOGVjMWY2MTNlYThkMDRlMTU4MTMwYzcxMjFiYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTg6NTUgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZDlkOTM4ZDMwMThjMjdmNTMyNzdiYzVlNTk1Nzg1MDA0OTBjMWQwOQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTY6MzggMjAxMiArMDEwMAorCisgICAgQ2xvc2Ugb3BlbiBmaWxlIG9uIGVycm9yLgorCitjb21taXQgZDVlODE3ZDViZDUxOGQ5YWM2YTBkNjBlMGUxNDFkZDY0ZjI3YWQxOQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTQ6MTIgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgMmFlNjhmMDU5ZGY5ZDc0YjA3NGQxMmY1OWMxODQ3NDY2ZWQ1NzZjZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MDM6MTcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgYTAwZjNkNDYxMTIxYjU0NWFlZDcyYWMxMmIyNDM4NzkxZGNmYzRiYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTQ6NTg6MzkgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNTk4ODRiYjRkMzVhZDEzNzQ3ZmZhNjcyMzQzNmRjYTU4N2E5YWI3NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTc6MDk6MTIgMjAxMiArMDEwMAorCisgICAgSW4gYWJvdmUgY29kZSwgb2xlbmd0aCBpcyBjaGVja2VkLCBzbyBsZXQncyBjaGVjayBpdCBhbHNvIGhlcmUuCisKK2NvbW1pdCBiYTVkNTI5MmIwNDM5M2IwYzdkN2Q3ZWQ5NjEyNDE5Mjk0MThjNmU0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNzowNToxNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIE5VTEwuCisKK2NvbW1pdCBkYTJkNmE3MDI4YTEzYjllZGYzYTVjODQzMTRkMGYxZmVlZjc2NzE0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjo0NDo1NiAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRlcmVmZXJlbmNpbmcgTlVMTC4KKworY29tbWl0IGY4ODA1NGE5YjY5YjZkZTI3NGY3YTE0YTU5YjQ3MzIzZTVlNGU0YzYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjM3OjM1IDIwMTIgKzAxMDAKKworICAgIERvbid0IGRlcmVmZXJlbmNlIGNvbnRleHQgaWYgaXQncyBOVUxMLgorCitjb21taXQgN2M0ZDQ1OWU4ZjFmNjUyY2MyMDk4YzNkNGM4MWRlOTBhODRlZDcxMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MzA6MDkgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgZGVmZXJlbmNlIE5VTEwuCisKK2NvbW1pdCBmYzE5YjdmMzNiNTg3OTI3ZDJhMDFlNzJkMjNkMjFiOWIxNjk2YWIzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoyNToyNiAyMDEyICswMTAwCisKKyAgICBEb24ndCBjbG9zZSBOVUxMIGZpbGUuCisKK2NvbW1pdCA1ZTk1Y2E2NzkwMDc2Yjc4ODA3MmE4MDFlZTdjODI5NjlkOTk1YmNiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoxNzowOSAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRlcmVmZXJlbmNpbmcgTlVMTCB3aGVuIGEgdHJhbnNwb3J0IGRvZXMgbm90IGhhdmUgZl9mbXRhZGRyLgorCitjb21taXQgZWVkNmY1ZjliOWFlNTRkMmNlYWI2N2FkODVhZGRlMWY2YThhMjFkNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MTM6MTMgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkZXJlZmVyZW5jaW5nIE5VTEwuCisKK2NvbW1pdCA0MWNkZTY4YjVmYTRiMzhkODE0NTBjZjkxZTA4MmNkZmE4MjVlN2NmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoxMDoxMCAyMDEyICswMTAwCisKKyAgICBDaGVjayBpZiBhIHJlZ2lzdHJhdGlvbiB3YXMgcmVhbGx5IGZvdW5kLgorCitjb21taXQgNWI3MmE0MDg1Mzg3NmExODZlZmNjMDA5MGE0ZTMyYzIzNWI5YzA1ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6MDM6NTggMjAxMiArMDEwMAorCisgICAgRG9uJ3QgZGVyZWZlcmVuY2UgTlVMTCB3aGVuIGRpZmZsZW4gaXMgU01VWF9NQVhfUFJJT1JJVFkgKHdoaWNoIGlzIGhpZ2hseSB1bmxpa2VseSwgYnV0Li4uKQorCitjb21taXQgZmE2YTkxMmU0MWM1ZDBmZDJhNjM2ODk0ZTg2YjY0MjZjMDczNzVhYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTU6Mzc6NDQgMjAxMiArMDEwMAorCisgICAgQ2hlY2sgZm9yIG1pc3NpbmcgdmFsdWUgaW4gc2V0RXZlbnQuCisKK2NvbW1pdCA0MTBiNzFkYTQyNTM4OWZlY2MyNWQxNGY0OWYyMzc1MzU4MTU3NmFkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNToyODo0MSAyMDEyICswMTAwCisKKyAgICBEZXJlZmVyZW5jZSBlcmVnIG9ubHkgaWYgaXQgaXMgbm90IE5VTEwuCisKK2NvbW1pdCAxODUyNzJkMWEwYjkxMzc3NDE4NmYxYjkxMzVhZWFmNjM3ZWJlZDUyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNToxNzoyMSAyMDEyICswMTAwCisKKyAgICBBcyBwZXIgYWJvdmUgY29kZSwgdGVtcGxhdGVfdjJwZHUgY2FuIGJlIE5VTEwsIHNvIGNoZWNrIGl0IGJlZm9yZSBkZXJlZmVyZW5jaW5nLgorCitjb21taXQgNDhlNWVhZDNmZDJjMmIzODVkZjY5NzJjNjc1MjZmZjZiZGMzMDc2OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTQ6NDI6MjIgMjAxMiArMDEwMAorCisgICAgVXBkYXRlZCBsYXN0IGZpeCB0byBuZXcgZXJyb3IgcmVwb3J0aW5nIHN0eWxlLgorCitjb21taXQgZjMzZDMzNjE1ZDZkODVkMDA3MzcyNjQ3M2M0MTQ2Y2JjZGYxMWNlZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTQ6MzA6MDcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgc2lnc2VndiB3aGVuIGVtcHR5IGNvbmZpZyBsaW5lIGlzIHBhcnNlZC4KKworY29tbWl0IGI1ZGYxZWViNDdlZDM1NTliNmY0ZDllY2NjZGIyNDIxMjZlNmM5OTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE0OjExOjU4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIChoaWdobHkgdGhlb3JldGljYWwpIHNpZ3NlZ3Ygd2hlbiBzcC0+c2VjdXJpdHlFbmdpbmVJRCBpcyBOVUxMLgorCitjb21taXQgNmZlZWQ2MjlhNzE4OTljMTEzMDk2OTU5ZDg1NDlkYzEyMDFlOGY5YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTM6NDM6MzcgMjAxMiArMDEwMAorCisgICAgQWRkZWQgTlVMTCBhbmQgbGVuIGNoZWNrIGp1c3QgaW4gY2FzZSBzb21lb25lIHByb3ZpZGVzIHZhbHVlID0gTlVMTCBhbmQgbm96ZXJvIGxlbiAoLT4gTlVMTCBpcyB0aGVuIGRlcmVmZXJlbmNlZCkuCisKK2NvbW1pdCAzNTVjNWFiMjY0YWYyYTYwMjBhMWQ4YTkyM2Y4MGYxMWI5NDIyOTVlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxMzozNjo0MSAyMDEyICswMTAwCisKKyAgICBFeHRlbmQgdGhlIE5VTEwgY2hlY2ssIGkuZS4gcmV0dXJuIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmVtb3ZlLgorCitjb21taXQgZGRkNzk0OGFjYWQ5MzhjZDQyOTc0NTA1ZGRjYTRmMDM3MjExNjcwOQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAxMToxMToyOSAyMDEyIC0wODAwCisKKyAgICB1cGRhdGUgc3BhcnRhJ3MgY29weXJpZ2h0CisKK2NvbW1pdCA0MTI1NjA4NmE3YTUwNDE0NTM0MTljZmQ2ZTU2MmM3YjU1YzU2YjBhCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDEwOjMyOjA0IDIwMTIgLTA4MDAKKworICAgIHB1bGxlZCBmdWxsIGNvcHkgb2YgZXh0cmFjdG5ld3MgZnJvbSBtYXN0ZXIKKworY29tbWl0IDYyNWE3MGRiZGZkOTkwMmRhNzllZmEyOTNmZTZkMmFjOGNjZjJiMmUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMTA6MjQ6MTkgMjAxMiAtMDgwMAorCisgICAgdXBkYXRlIHRvIGNoYW5nZSB0byB0aGUgbmV3ZXIgbG9nIGdlbmVyYXRpbmcvcGFyc2luZworCitjb21taXQgNjJlMzJiMTMwODliMjllZGNmMjc2ZjYxNWRhNjdlNDUwOGZlN2JiNQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAwOToyOTo0MiAyMDEyIC0wODAwCisKKyAgICBjb25mbGljdGluZyBtZXJnZSBmcm9tIG1hc3RlciBmb3IgZXh0cmFjdG5ld3MKKworY29tbWl0IDcwMDg0ZGE2MWQyYmNiZDJjZjFlZDgxYmRjM2JmNjc5NGMyYWZmYjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMTMgMTE6NDk6MTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1TQ0hFRFVMRVItTUlCOiBIYW5kbGUgMzItY2hhcmFjdGVyIHNjaGVkQ29udGV4dE5hbWUgdmFsdWVzIGNvcnJlY3RseS4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgYjNjNDk4MjU0MmUwYWIxNTFmYjM4ODQ3NTRjZGZiY2I0NzJkYTUyZC4KKworY29tbWl0IDA0YmYzZTI4ODE1OGVlODgwZWRmMjM3ZTQwMDdmZWUzN2QyMDQ0ZGQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjM5OjM3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGVuZGxlc3MgbG9vcCB3aGVuIFNTTF9yZWFkIHJldHVybnMgZXJyb3IuCisKK2NvbW1pdCBjMTUyNmZjY2MwNDc0YzFkYjE4Y2FhOWRiYjgzMzg1M2NkZGRlM2NjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNToxMzoyMSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBhIHR5cG8uCisKK2NvbW1pdCBhMjdhYTE5ZGYyODMxNTZjMDMyYzgxZWFlZTVlMTE1ODU5ZDM4YzE3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNToxMTozMiAyMDEyICswMTAwCisKKyAgICBEb24ndCByZXBsYWNlICdyYycgdmFyaWFibGUsIGl0J3MgdmFsdWUgaXMgbmVlZGVkIG91dHNpZGUgdGhlIGxvb3AuCisKK2NvbW1pdCA5ODVkZmYyYjA4NzZkOTQ4M2M0MTRmY2NlYTNlZjZiYzYzZTE0NTYxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNTowMTozMiAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIGR1cGxpY2F0ZSBjb2RlLgorCitjb21taXQgMmZkNzgxODMxOGU3YTVkZmU5OGY1MmNjZjc1MGMyYTYzZTgyNWRlZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MDA6MjIgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KKworY29tbWl0IDE1ZjIxMTMwYmEzM2RjOWFmZDE2NGU1MmRmZDc0YzljZWMwZTkyMzIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE0OjU4OjE0IDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgZHVwbGljYXRlIGNvZGUuCisKK2NvbW1pdCAyYThhOGYyYWI3Y2Q3NTgyNmM1ZDQxZWMzY2ZkNWNlM2U5NjM0Y2YzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDozOToyOCAyMDEyICswMTAwCisKKyAgICByZW1vdmUgZGVhZCBjb2RlLCAnY3AnIGlzIGFsd2F5cyAhPSBOVUxMIGhlcmUuCisKK2NvbW1pdCAzOGZkNjM3OGNjMzI3NTE4MGY2M2I4ZDliOWE0MDcyYjNkYWJmOGU0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDoyNTowNiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBhIHR5cG8uCisKK2NvbW1pdCBlYmQ5MmUxOWIxMGMwYTM4ZTE3Y2RlNDA3ODY0YjQ1YzI2ZTE3MzI3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDowNzo0MyAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIHVubmVjZXNzYXJ5IGlmICh2YWx1ZSkgY2hlY2sgLSB2YWx1ZSBpcyBjaGVja2VkIGZldyBsaW5lcyBiZWZvcmUuCisKK2NvbW1pdCBjNWNhY2Y1Y2FmOTc5ZDAxOGVhNmNhZTFjMDNiOGZkZjBiMTE4ZGZkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxMzo0NDo0MyAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRvdWJsZSBmcmVlKCksICdkaXJuYW1lJyBpcyBhbHJlYWR5IGZyZWVkIGluc2lkZSBzZV9hZGRfcGFpcl90b19saXN0KCkgaWYgaXQgZmFpbHMuCisKK2NvbW1pdCBhY2RjZWI1MGVhNjZkNmIzMjNjNzRlZTAyMWZiNzdlODEwZTRlN2FmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxMzo0MzoxOSAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IG1lbW9yeSBsZWFrIHdoZW4gbWFsbG9jIGZhaWxzLgorCitjb21taXQgMTcwNTNlMzRjZmU5YThhYjM5NWZiNTBmNWMzZjFkYWZjNzI0N2FlYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTM6MzI6NTcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZG91YmxlIGZjbG9zZSgpLgorICAgIExpbnV4IG1hbiBwYWdlIGZvciBmY2xvc2UoMykgc2F5czogSW4gZWl0aGVyIGNhc2UgYW55IGZ1cnRoZXIgYWNjZXNzIChpbmNsdWRpbmcgYW5vdGhlciBjYWxsIHRvIGZjbG9zZSgpKSB0byB0aGUgc3RyZWFtIHJlc3VsdHMgaW4gdW5kZWZpbmVkIGJlaGF2aW9yLgorCitjb21taXQgYTY2NDFlZGI5Y2I3NGZjMjIzNmI0MmNlNTU1NGZjMzMyOTk1NjU1MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxNToyMjozNCAyMDEyICswMTAwCisKKyAgICBNaW5HVzogU2tpcCB0ZXN0IFQwNjUgaWYgbm90IHN0YXJ0ZWQgZnJvbSBpbnNpZGUgYW4gTVNZUyBzaGVsbAorCitjb21taXQgYTg4M2VmMTk4MmYzMDFiMTQ4NWQyMjczMDE2NzQ5MjczMzBmNWI2NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTU6MTQ6NTMgMjAxMiArMDEwMAorCisgICAgTW92ZWQgZGVidWcgb3B1dHB1dCBiZWZvcmUgcmV0dXJuLgorCitjb21taXQgNDU3NTE5NjcyODdkOTc2NDBlZmRjZGY4ZTc3ZThkNDkwOTM5ZDhlYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxNDoxNzoxOCAyMDEyICswMTAwCisKKyAgICBDb252ZXJ0IHN0cnRvdWxsKCkgdW5pdCB0ZXN0IGludG8gYSBOZXQtU05NUCB1bml0IHRlc3QKKworY29tbWl0IDJjMmZhNDgzMzZhNGYxZjE3N2MyOTkxZDY1MTVkMjlmMzk1MzNjNDQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTM6NTA6NDQgMjAxMiArMDEwMAorCisgICAgQ29udmVydCByZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZ19jb25zdCgpIHVuaXQgdGVzdCBpbnRvIGEgTmV0LVNOTVAgdW5pdCB0ZXN0CisKK2NvbW1pdCAwN2M2NjZmNmNlYTI3ZjJiMmFiOWJjMDhhZWQwY2I2MTMzZmUzNzU4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMzoxNzo0NSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBjb21taXQgNzNhNTIzZTQ2ODI3N2Y2ZGYyZTk4NDg5MTMxM2I4YmU4YmNlMTkyMToKKyAgICBGaWRleCBkZXJlZmVyZW5jaW5nIGtleS0+aW5mbyB3aGVuIGtleSBpcyBrbm93biB0byBiZSBOVUxMLgorCitjb21taXQgM2I2ODY1NjYyOTZkZDg3YmM0MmI3ZjExNjlkYWFjZGIzYzQ1Y2M1OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAxOCAwNjoyNTo1NiAyMDEwICswMDAwCisKKyAgICBXaW4zMjogYnVpbGRzIGFnYWluIHdpdGhvdXQgd2FybmluZ3Mgd2l0aCBNU1ZDIDYuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5NDg5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZjNhN2QxYjA5NjA5ZGFkNjQ5ZjU4YmJkYjViN2UxMGQzOWIzOThjMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE9jdCAxNyAxMTowNDowNiAyMDEwICswMDAwCisKKyAgICBGb2xsb3ctdXAgZm9yIHIxOTQ3NjogZml4ZWQgYSB0eXBvLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTQ3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDJkZTczYmQzNjVhMzgxYjljMzUzY2E1MjMwNzY5ZWVmYjFhYzcxZWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTE6NDI6NDIgMjAxMiArMDEwMAorCisgICAgbG9jYWwvcGFzc3Rlc3Q6IFJlbW92ZSBhbiBpbmNvcnJlY3QgUEFUSD0gc3RhdGVtZW50CisKK2NvbW1pdCA2OTk1MTNmMTIzOGUwYWRjZTFmMWNlYzk4ZTBkMTQ3MjkzZmM1MDQ3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gT2N0IDE3IDA5OjI1OjUxIDIwMTAgKzAwMDAKKworICAgIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCktcmVsYXRlZCBjbGVhbnVwLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTQ3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDYzNThkZWU3MmZiMzQ3ZTI2MDBhMGE3YmQyMWYyMzI3MGQzYTAwZjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6NTg6MTUgMjAxMiArMDEwMAorCisgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYzogQWRkIGEgY29tbWVudAorCitjb21taXQgNTM5NmJmZTAzMmM4Y2JjNzNjOGZmNWQ0YjA4NWViYWRhOWY1OTg0NgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMDozMDoxNiAyMDEyICswMTAwCisKKyAgICBSZXBsYWNlIHN0cm5jcHkoKS9zdHJuY2F0KCkgYnkgc3RybGNweSgpL3N0cmxjYXQoKQorCitjb21taXQgZmViM2FmMjhkY2FlMjIwMTVhZTg2NWEyZTVkZDhjNDE2ZTk5OTFkOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMDowMjowOCAyMDEyICswMTAwCisKKyAgICBSZXBsYWNlIHN0cm5jcHkoKS9zdHJuY2F0KCkgYnkgc3RybGNweSgpL3N0cmxjYXQoKQorCitjb21taXQgYjdlMWFhMjU1YmFlNGEzNDUzZjllY2E2NDRhODc2NjM0MzUxZjExZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyMCAxOTozNjoyOCAyMDEwICswMDAwCisKKyAgICBDSEFOR0VTOiBsaWJzbm1wOiBjaGFuZ2VkIHRoZSB0eXBlIG9mIHRoZSBmb3VydGggYXJndW1lbnQgb2YgbmV0c25tcF9zZXRfcm93X2NvbHVtbigpIGZyb20gY29uc3QgY2hhciogdG8gY29uc3Qgdm9pZCogc3VjaCB0aGF0IG5vIGNhc3QgaXMgbmVjZXNzYXJ5IHdoZW4gcGFzc2luZyBhbm90aGVyIGRhdGF0eXBlIHRoZW4gY2hhciogb3IgY29uc3QgY2hhciouCisgICAgQ0hBTkdFUzogV2luMzI6IGNoYW5nZWQgaW5fYWRkcl90IGZyb20gdV9pbnQgdG8gdV9sb25nIHN1Y2ggdGhhdCBpdCBtYXRjaGVzIHRoZSBkYXRhdHlwZSBvZiBzb2NrYWRkcl9pbjo6c2luX2FkZHIuCisgICAgQWxzbywgZml4ZWQgc2V2ZXJhbCBjb21waWxlciB3YXJuaW5ncyAobW9zdGx5IGNoYXIgKiA8PiB1X2NoYXIgKiBtaXNtYXRjaGVzKSBhbmQgcmVtb3ZlZCBzb21lIGNhc3RzLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE4MzQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAJYWdlbnQvYWdlbnRfcmVnaXN0cnkuYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCisgICAgCWFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYworICAgIAlhcHBzL3NubXB0cmFwZC5jCisgICAgCXNubXBsaWIvc25tcElQdjZCYXNlRG9tYWluLmMKKyAgICAJc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jCisgICAgCXNubXBsaWIvc3lzdGVtLmMKKworY29tbWl0IGY0N2EzNzUyODQ5ZGIwNzVlNmYyMDUzYjg1OTViN2I3OTJmYjY0NjIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBPY3QgMTUgMTA6NTY6MDkgMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBCdWlsZHMgbm93IGNvcnJlY3RseSB3aXRoIGEgNjQtYml0IGNvbXBpbGVyLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5NDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMDJiNjA1NmRmOTVkYThiNjczMDM0ZTM5YzJjN2MzODZlZDBmMzY5YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMTo0NDo1MyAyMDEyICswMTAwCisKKyAgICBGaXggYSBjb21waWxlciB3YXJuaW5nIGFib3V0IGNhc3RpbmcgYXdheSBjb25zdAorCitjb21taXQgYTE5ODY1ODMyZmM3N2Y0YzA0ODE0NGQ5MWE0MzFiMWU5NGQzMjlmMgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgMTQgMjM6MTI6MDUgMjAwOSArMDAwMAorCisgICAgQ0hBTkdFUzogYXBwcywgc25tcGxpYjogUEFUQ0g6IDI4MzU1Nzc6IGlkZW50aWZpZWQgYnkgIkJhcnQgVmFuIEFzc2NoZSI6IFJlcGxhY2UgU05NUF9aRVJPIG9mIGFycmF5cyB3aXRoIGEgbWVtc2V0LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE3Nzk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNjdhM2UyZWNjYjk1ZjljOWQwODA5ZWZjYmRkY2Q4NjZlZTMwNjJkNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA2IDE0OjI3OjE1IDIwMTAgKzAwMDAKKworICAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyBhYm91dCBkaXNjYXJkaW5nIHRoZSBjb25zdCBxdWFsaWZpZXIuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTc5NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzZGNkZTJlOGE1OTVhNTI3ZjA2MTQyYzNiODUyZGU4NDMzYTFjZjI4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEphbiAyNCAxNDoyNzo1NSAyMDEwICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBQcmV2ZW50IGdjYyBwZWQtd2FybmluZyBmb3IgTkVUU05NUF9SRU1PVkVfQ09OU1QKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxODA1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMyZTE1MjVhODViZGE1Mjk5YTNiOWYyNDE2MTRmN2U2NTA5YWVlYmEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNiAxMzozNToxMSAyMDEwICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgMjk1ZjQ3M2M4MzU0NjIyMWIyYTcxZDgxNWM2MWUzM2E2N2Y5OGFlMzogcmVmaW5lIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCkgaW1wbGVtZW50YXRpb24uCisKK2NvbW1pdCBjYjQyM2IwYWU5ZWQwMDU5YWExMDBkYzRlMmZkOTNhZDFiOTdmYWY4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDYgMTE6NTc6NTEgMjAxMCArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IGUyZmIwOWUwMDkzZTJmNjQ4ZmUyNjM4ZGEyZjNhZjE4ZmRiMzJiZjAgLSBpbnRyb2R1Y2UgTkVUU05NUF9SRU1PVkVfQ09OU1QoKS4KKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCWFnZW50L3NubXBfcGVybC5jCisgICAgCXNubXBsaWIvc25tcF9zZXJ2aWNlLmMKKworY29tbWl0IGFmYzM5NmFiMTYxOGE4NTk1YTI1MTlmYmMyNWY3YTQ5OGUxNzQ0MTEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMDg6NDk6MzQgMjAxMiArMDEwMAorCisgICAgVW5icmVhayBuZXRzbm1wX21rdGVtcCgpIGFuZCBtYWtlX3RlbXAoKS4KKyAgICAKKyAgICBUaGVzZSB3ZXJlIGJyb2tlbiBieSBjb21taXQgYmI4ZmNiYjg3NDk5ODAwMGY5NDVmMDU4ZDFhYTZmZTE0ZTkyNTg5OS4KKyAgICBBbHNvIHJlcGxhY2UgYSBzdHJuY3B5KCkgY2FsbCBieSBhIGNhbGwgdG8gc3RybGNweSgpIGFuZCByZXBsYWNlIHRoZQorICAgIG1ha2VfdGVtcGZpbGUoKSBpbXBsZW1lbnRhdGlvbiBieSBhIGNhbGwgdG8gbmV0c25tcF9ta3RlbXAoKS4KKworY29tbWl0IDIxMDE4NWMxNWQwZDY1ZjBlYTk4YjVlM2MyZTA3NzZmNjIyMmQxNzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMDg6Mjc6NDMgMjAxMiArMDEwMAorCisgICAgRml4IGEgY3Jhc2ggZHVyaW5nIHN0YXJ0dXAgb2Ygc25tcGQgaW50cm9kdWNlZCBieSBjb21taXQgODg1MDYxNjg3ZDljYWEzODQ3MDk3OTY2N2Q3ZDhhZDY1NjNjZWRhZC4KKyAgICAKKyAgICBBbHNvLCBtYWtlIHN1cmUgdGhlcmUgaXMgb25seSBhIHNpbmdsZSBjb3B5IG9mIHRoZSBjbGVhbnVwIGNvZGUgaW4gZnVuY3Rpb24KKyAgICBta2RpcmhpZXIoKS4KKworY29tbWl0IDhiYjRlODZhYmNmOThmZjI4NzQ4YWYwYWY4OWM5OGU2NGQ1Y2Q5NjEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBKYW4gMTEgMDc6NDc6MTIgMjAxMiArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgb2xkbWFzayB2YXJpYWJsZS4KKworY29tbWl0IDY2ODAxNDdiMTM4ZWMxMTRmODFjNWQxMjhhYzkzNTBjODQ1MGQwODEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTg6NDQ6MzEgMjAxMiArMDAwMAorCisgICAgTWFrZSB0ZXN0IFQwMTVpbnQ2NF9jbGliIHBhc3Mgb24gNjQtYml0IHN5c3RlbXMKKworY29tbWl0IDNhYWQxNWFlNTYwYWM4NTdlNzNjOTA3NjRlOTAzZTdjYTAyYjMyOTUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjQwOjU5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyBmb3IgbGFyZ2UgT0lEIG5hbWVzCisKK2NvbW1pdCBmYmExODhlZTgyMDEwYjJmMmQ4Y2EyZTQyNmJhNjU0NDk5YWIzZDBhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTozMTozMyAyMDEyICswMTAwCisKKyAgICBmaXhlZCBidWZmZXIgb3ZlcmZsb3cgaW4gX19jb25jYXRfb2lkX3N0cgorCitjb21taXQgMjFkMjVkODZiOGU0OTA0ZDc5OGRjOGM5NmRhZGU5ZTUwNDg0NTdhOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MjY6MDcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gcGFyc2luZyBwb3J0IG51bWJlcnMuCisKK2NvbW1pdCBkMzY5MzE4NDFiMmZjMmNlYmM2MzY0YjI5NDkxMjlhMGFkNDJhZDFkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTowNTo1MSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBhIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGxhcmdlIFN1bUZpbGUgaXMgdXNlZC4KKworY29tbWl0IDBlZmRkMDIyZGEwOWFmMWI1ZTE2MTcxZmE3YTJiNTIzYzVkNmVjNTkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjAxOjUzIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBiaWcgdGVtcCBmaWxlIHBhdHRlcm4gaXMgdXNlZC4KKworY29tbWl0IDU2MGJjNmMwOWI3NTE1NTZlZmQ2YjRjNDQ5NTc1MWIxMDlhOTNmOTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjU5OjI0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdywganVzdCB0byBiZSBzdXJlLgorCitjb21taXQgODI5MWQ3YzViOTJhMzFkZDRmNTgyYjQ5N2Q0YjJhMDg1MzM2N2E1NgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NTU6MTYgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93LgorCitjb21taXQgODhlMWYzNGRlNzMwMDU3NWZhNmRhYjg1N2VjZGRiMjQyYTg3ZGU4MAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NDg6NTUgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gdG9vIGxvbmcgaW50ZXJmYWNlIG5hbWVzIGFyZSB1c2VkLgorCitjb21taXQgYmUxMzc1YTk5MjZlYmUwY2Q1Yjc4YTQwNDVjM2JkMTFjODM2NjRiMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NDY6NDkgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gYSBzZW5zb3IgbmFtZSBpcyB0b28gbG9uZy4KKworY29tbWl0IDFjYjI0NjI1MzcyMDYyYjE0YzcxZDdkZDUxZTIwZmVmNzczZTI3NDMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQxOjAwIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGEgQ1BVIGhhcyB0b28gbG9uZyBuYW1lLgorCitjb21taXQgODRjODA3ZWUwMzI1MWU1NDg1NmU4M2Q2MmQwNmVhMDhiOGRmNTI3YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6MzY6NTAgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gdG9vIGxvbmcgaW50ZXJmYWNlIG5hbWVzIGFyZSB1c2VkLgorCitjb21taXQgYzMxMGUzOTBiNWRkMDVmMjRiZTdlYjE5MDRjNzRlNDEyNTljOTNkYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6MjQ6NTQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gdG9vIGJpZyB0ZW1wIGZpbGUgcGF0dGVybiBpcyB1c2VkLgorCitjb21taXQgNDYwMGQxMTQzNGU4M2I4NjUzY2Y5ZjgxM2EzZDhiNjMwNDU1YjQyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6MTc6MDggMjAxMiArMDEwMAorCisgICAgRml4ZWQgcGxhdXNpYmxlIHN0cmluZyBvdmVyZmxvdyBiZWZvcmUgcGFyc2luZyBjb21tYW5kIGxpbmUgb3B0aW9ucy4KKworY29tbWl0IDg4NTA2MTY4N2Q5Y2FhMzg0NzA5Nzk2NjdkN2Q4YWQ2NTYzY2VkYWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjExOjAyIDIwMTIgKzAxMDAKKworICAgIEdldCByaWQgb2YgKGluc2VjdXJlKSBTTk1QX01BWFBBVEggaW4gbWtkaXJoaWVyKCkKKworY29tbWl0IDgwMTY4OTBhNDQ1ZjZhN2UyYTg3M2EwNDg3M2Q0ZTI3YjZlZTY0ZTMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDEzOjQ4OjM0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIGludGVnZXIgc2l6ZSBvbiA2NCBiaXQgcGxhdGZvcm0uCisKK2NvbW1pdCBiYjhmY2JiODc0OTk4MDAwZjk0NWYwNThkMWFhNmZlMTRlOTI1ODk5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzozMTozNiAyMDEyICswMTAwCisKKyAgICBTZWN1cmUgbWtzdGVtcCgpIHdpdGggdW1hc2soKSAtIG9uIHNvbWUgaW1wbGVtZW50YXRpb25zIGl0IGRvZXMgbm90IHNldCAwNjAwIHBlcm1pc3Npb25zIGF1dG9tYXRpY2FsbHkuCisKK2NvbW1pdCAyMDI1MjNjYTcwNGJkNzIyZGMxYWMwZTFlNmIwZTRiNGU1NDI0NDk1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzoxMTo1NyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nICdjJyBiZWZvcmUgTlVMTCBjaGVjay4KKworY29tbWl0IDczYTUyM2U0NjgyNzdmNmRmMmU5ODQ4OTEzMTNiOGJlOGJjZTE5MjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDEzOjA4OjI0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcga2V5LT5pbmZvIHdoZW4ga2V5IGlzIGtub3duIHRvIGJlIE5VTEwuCisKK2NvbW1pdCAyZjRlNmFjZDcxNDE4M2YwMTViNzYzNjU3ZjhmMDg0NTkzMzU3ZTI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEwIDEwOjM4OjE2IDIwMTIgKzAxMDAKKworICAgIC5naXRpZ25vcmU6IElnbm9yZSBwZXJsLyoueW1sIGZpbGVzCisKK2NvbW1pdCBjMzY1ZDgwYzE2YzJkMTdiMTYwMDExZThjMWY5Y2I5NTg5NTRlOWRiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEwIDA4OjM0OjE2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogRG8gbm90IGludm9rZSBzaHV0ZG93bl9wZXJsKCkgZnJvbSBpbnNpZGUgdGhlIFNJR1RFUk0gaGFuZGxlciBzaW5jZSB0aGF0IGZhaWxzIGlmIFNJR1RFUk0gaXMgcmVjZWl2ZWQgd2hpbGUgYSBQZXJsIGhhbmRsZXIgaXMgYWN0aXZlLiBCYXNlZCBvbiBhIHBhdGNoIHBvc3RlZCBieSBKb2VsIEF2bmkgPGphdm5pQGFydWJhbmV0d29ya3MuY29tPgorCitjb21taXQgZDA1OWZiODc4YjE0MzY1OTk5NTNjZWE1YTA3NzQ5OWRkY2RjYmNiNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE3OjAzOjU1IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IEJVRzogMzQ0MDc1MjogSUYtTUlCOiBSZXBvcnQgaW50ZXJmYWNlIHNwZWVkIGNvcnJlY3RseSBmb3IgRXRoZXJuZXQgaW50ZXJmYWNlcyBpZiBvdGhlciB0aGFuIDEwIE1icHMsIDEwMCBNYnBzLCAxIEdicHMsIDIuNSBHYnBzIG9yIDEwIEdicHMuIEFkZCBzdXBwb3J0IGZvciBOSUNzIGZhc3RlciB0aGFuIDY1IEdicHMuCisKK2NvbW1pdCBjMDk5MDNhNDJlOWQ5NzMzMWZkOWU0OGVlODMxYTg1YWZkZjljNzBhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gSmFuIDkgMTM6MjY6MTcgMjAxMiArMDEwMAorCisgICAgRG94eWdlbi1zdHlsZSBkb2N1bWVudGF0aW9uIGZpeGVzCisKK2NvbW1pdCBlMzI1ZWNiZmNlNzdmMDBhYzVjZjZmYmQ5NTdmOTU0OTVmNjFjNTliCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gSmFuIDkgMTM6MjU6MTAgMjAxMiArMDEwMAorCisgICAgU3VwcHJlc3MgdW5pbnRlcmVzdGluZyBEb3h5Z2VuIHdhcm5pbmdzCisKK2NvbW1pdCBiZTkxNjFkM2E1ODk4ZTg2Mzc2N2Y5MjY2MTM0ODYxMjZjMmNiZjY3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTI6MzU6MzkgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIG1hbmlwdWxhdGluZyA2NC1iaXQgbnVtYmVycy4KKworY29tbWl0IDg2ZTRjMmJlMDg1MmEwYTEzYjA2MDMwNzU3MjBiMzI2NGVjNzBkZGUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxMjoyOToxMSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIGl0IGV4cGxpY2l0IHRoYXQgTUFYX1NVQklEIGlzIGFuIHVuc2lnbmVkIGNvbnN0YW50CisKK2NvbW1pdCAzN2UyNzJkOGY3YjcxODBiYTE0MGZhMzg2YTVmZjA1ODk2OGEwOGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTg6MjE6NDggMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IElGLU1JQjo6aWZUeXBlOiBSZXBvcnQgdHlwZSAiaW5maW5pYmFuZCAoMTk5KSIgZm9yIEluZmluaUJhbmQgaW50ZXJmYWNlcyBpbnN0ZWFkIG9mIHR5cGUgIm90aGVyICgxKSIuCisKK2NvbW1pdCAyNjk5MzJmYTMyYzdjZDQ3OTU3NDg5Njk4ZTA5YmVlMzFmNjNiN2FmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTQ6MzQ6NDIgMjAxMiArMDEwMAorCisgICAgRml4IGFuIE1TVkMgY29tcGlsZXIgd2FybmluZworCitjb21taXQgMGQxYzIxZjk5OTFkMTMwOWQwNTdlM2U0MDU2ZDU0N2RmN2Q0MGVjZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE2OjA2OjMxIDIwMTIgKzAxMDAKKworICAgIE1ha2UgZGVjbGFyYXRpb24gYW5kIGRlZmluaXRpb24gb2Ygc3RybGNhdCgpIGNvbnNpc3RlbnQuCisKK2NvbW1pdCAwYzNkNGRiYjBhOWNmNWIzNTlmNzBiMmYxOTkxNTQ5NTU1NGY4NDBmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTU6MjM6MTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IHNubXBkOiBSZW1vdmUgZGxtb2QKKworY29tbWl0IDg5M2VjYzk3YjU4NzY2MTA0NWJlY2JlMDlhMzIwYzFiY2JjNzFjN2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNDozNjo1OSAyMDEyICswMTAwCisKKyAgICBBZGQgc3RybGNhdCgpIHRvIHRoZSBNU1ZDIGJ1aWxkIGluZnJhc3RydWN0dXJlLgorCitjb21taXQgM2QxMjY0MjJlNjI1NzAyYjlkM2ZhMDY3NmE5N2VjNWNiMjBkOWQxMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE1OjAxOjA2IDIwMTIgKzAxMDAKKworICAgIE1ha2Ugd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggY29uc2lzdGVudCB3aXRoIGl0cyAuaW4gZmlsZQorCitjb21taXQgYWY1M2I3NmMyZmZhNzUxZTM5NThkMGZjNWQ4Mjc5Zjc4YzJjMWMyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE0OjQzOjU1IDIwMTIgKzAxMDAKKworICAgIFNraXAgVDA2NnBhc3Nfc2ltcGxlIGFuZCBUMDY3cGFzc3BlcnNpc3Rfc2ltcGxlIG9uIE1pbkdXCisKK2NvbW1pdCAzNWE5MmU2OTNkMTMzYTViMTFlOWU5YjU5OWRiZjQ3ZWRlZjQ5MzNiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMDg6MTY6MzYgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlIHNubXBsaWIvc25tcERUTFNVRFBEb21haW4uYyBhZ2Fpbiwgd2hpY2ggd2FzIGFkZGVkIGFjY2lkZW50YWxseSB3aGlsZSByZXNvbHZpbmcgbWVyZ2UgY29uZmxpY3RzIChjb21taXQgMWQ3OGY3ZDViNThhZWQyYjUyYzRkMzg2YTdiYTgwYTQ0NzExYmFjYSkKKworY29tbWl0IGE5YjA3M2VhM2I2Y2VkZjcxM2UzMDVlN2IxNWYyOGFlNTdiZmRmMWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxNzo0NzoxMSAyMDEyICswMDAwCisKKyAgICBGaXggNjQtYml0IGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCA3ZTg5MGRhZDk1ZjU2NjA2OWVlMjgwMjE1YTRmZWEzZjBlMmUzOTgwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTY6Mzg6NTAgMjAxMiArMDEwMAorCisgICAgQXZvaWQgYSBTSUdTRUdWIGlmIGNwID09IE5VTEwuIFRoaXMgaXMgYSBmb2xsb3ctdXAgZm9yIGNvbW1pdCAwODliY2IzNjBhYTI2NzkwYWQyYThjZWRkZjU4M2I3YmE1ZGRmZDQ4LgorCitjb21taXQgMWY2MjAwY2ZlMWIwYjI3ZWJiMDkzYTE2MDZiNTkyZjllOTY4NGJlOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDE1OjUzOjM0IDIwMTIgKzAxMDAKKworICAgIENvbnZlcnQgc3RybmNweSgpIGNhbGxzIGludHJvZHVjZWQgaW4gdjUuNgorCitjb21taXQgYzMxMjZiMTQzOTIxZmFiZWFjNDQyMTY2ZWNhNWI1Yjc0MmZkNDJjMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDE1OjAyOjM5IDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2UgbW9zdCBzdHJuY3B5KCkgY2FsbHMgaW50cm9kdWNlZCBpbiB2NS41CisKK2NvbW1pdCBiMjRlZTdjOTA5NjU3ZGI0M2JkOGM1ZDhjMDEwNTVjYTA4ODNjOWNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMDg6NDA6MzkgMjAxMiArMDEwMAorCisgICAgRWxpbWluYXRlIG1vc3Qgc3RybmNweSgpIGFuZCBzdHJuY2F0KCkgY2FsbHMKKyAgICAKKyAgICBVc2luZyBzdHJuY3B5KCkgYW5kIHN0cm5jYXQoKSBpcyBlcnJvciBwcm9uZSAtLSBzZWUgYWxzbworICAgIGh0dHA6Ly93d3cuZ3JhdGlzb2Z0LnVzL3RvZGQvcGFwZXJzL3N0cmxjcHkuaHRtbC4gSGVuY2UgcmVwbGFjZQorICAgIGFsbCBpbnZvY2F0aW9ucyBvZiBzdHJuY3B5KCkgYW5kIHN0cm5jYXQoKS4gUmVwbGFjZQorICAgIHN0cm5jcHkoZHN0LCBzcmMsIG4pIGNhbGxzIGJ5OgorICAgICogc3RybGNweShkc3QsIHNyYywgbikgaWYgdGhlIGdvYWwgd2FzIHRvIGF2b2lkIG91dHB1dCBidWZmZXIgb3ZlcmZsb3cuCisgICAgKiBzcHJpbnRmKGRzdCwgIiUuKnMiLCBuLCBzcmMpIHRvIGNvcHkgYSBwcmVmaXggb2Ygc3JjIHRvIGRzdCBvciBpZiBzcmMgaXMKKyAgICAgICAgbm90ICdcMCctdGVybWluYXRlZC4KKyAgICAqIG1lbWNweShkc3QsIHNyYywgbikgaWYgc3RybGVuKHNyYykgPj0gbiBhbmQgbiA8IHNpemUgb2YgZHN0LgorICAgICogc3RyY3B5KGRzdCwgc3JjKSBpZiBuID4gc3RybGVuKHNyYykgYW5kIG4gPCBzaXplIG9mIGRzdC4KKworY29tbWl0IDZkOTViYzQxNDk0NzI5MzEwMDU0NzVjMzBhNTQxZmVkNTUzNGRhMzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxMToxOToxNiAyMDEyICswMTAwCisKKyAgICBGaXggd2FybmluZ3MgdHJpZ2dlcmVkIGR1cmluZyBjb21waWxhdGlvbiBvZiB0aGUgUGVybCB4cyBzb3VyY2UgZmlsZXMKKworY29tbWl0IGJhZDA2MDBmNmVjOTQ0ZWY4NDU1ZTMyN2NlNzg0YjliMDdkMjQ3YzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxMDowMDoxMyAyMDEyICswMTAwCisKKyAgICBBZGQgY29uZmlndXJlIHRlc3QgZm9yIHNvY2thZGRyX3VuLnN1bl9wYXRoIHN1Y2ggdGhhdCB0aGUgY29tMnNlYyB0ZXN0IGlzIHJ1bgorCitjb21taXQgOTJhMzJhYzQ4NjZhNWVkYzdmMzQ3ZDM3OTQyYmYwMjhkZTAyNzYyZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDEwOjAwOjI5IDIwMTIgKzAxMDAKKworICAgIEdldCByaWQgb2YgYSBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCA4M2U0YzBlMzA0ZjYxN2NjYWM2NjEwZWRkNzRkMTcwNjc5N2JiZjUyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMDk6MTU6MzcgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIGEgdGVzdCBmb3Igc2Vfc3RvcmVfbGlzdCgpCisKK2NvbW1pdCA0ZmFlNTg1MjEwM2VjMzg5M2FkNDg4YmMwZDkwNWNhNjkxNDU5NWVmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMDk6MTc6MTUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogU2ltcGxpZnkgdGhlIHNlX3N0b3JlX2VudW1fbGlzdCgpIGltcGxlbWVudGF0aW9uCisKK2NvbW1pdCBiMzIyMmJiMjc1ZjJmMjM0NmUwZmQwNDc4YWZhMmVmYjYwMDc3M2U1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMDk6MTY6NDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogRGVjbGFyZSAidHlwZSIgYXJndW1lbnQgb2Ygc2Vfc3RvcmVfbGlzdCgpIC8gc2Vfc3RvcmVfc2xpc3QoKSAvIHNlX3N0b3JlX2VudW1fbGlzdCgpIGNvbnN0CisKK2NvbW1pdCAwMjJmODQwZmJmY2IwZTI2YjA4ZjBlNTU3MjgyMzFmNjExNDk1ODAzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTk6NTU6NTYgMjAxMiArMDAwMAorCisgICAgQXZvaWQgdGhhdCBWYWxncmluZCBjb21wbGFpbnMgYWJvdXQgc2VuZGluZyBVRFAgZGF0YQorCitjb21taXQgNjcyYTgwOWMyMjhlOTU1MGI5OWI4OTEwYmU3NWQwYjE2MTk4NTQwMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE3OjMzOjA5IDIwMTIgKzAwMDAKKworICAgIEZpeCBhIDY0LWJpdCBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAyNGZmMjYwYWQ4OWNlMmFhMzYxYTU1YzdjNzJlOTE2MDMxZGVmZTM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTc6MTE6MjQgMjAxMiArMDEwMAorCisgICAgQ2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygc25tcF9zZXRfdmFyX3ZhbHVlKCkgYW5kIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSgpIGZyb20gdV9jaGFyKiB0byB2b2lkKiwgbGlrZSBvbiBtb3JlIHJlY2VudCBicmFuY2hlcworCitjb21taXQgYzZjYTczN2ZiNDZmOTBhNGJkYTVkNDM3MzRhYWMzNGU4MzdhMDVmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAxMyAxOTowNzozNyAyMDEwICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgZjUwNGNlMmQ3NGE0YmM4OGY2OGNjOTUxNWZhNzA1MzM3M2NiMTViNS4KKyAgICAoRml4ZWQgbW9zdCBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIHNvdXJjZSBjb2RlIGluIHRoZSBwZXJsIHN1YmRpcmVjdG9yeS4gTm90ZTogdGhlc2UgY2hhbmdlcyBtYXkgY29udGFpbiBzb21lIHJlYWwgYnVnIGZpeGVzLikKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCXBlcmwvQVNOL0FTTi54cworICAgIAlwZXJsL09JRC9PSUQueHMKKyAgICAJcGVybC9TTk1QL1NOTVAueHMKKyAgICAJcGVybC9hZ2VudC9hZ2VudC54cworCitjb21taXQgZDIxMmRjOTg0ZWMzNGU0ZDIzMDYyNWU0NmU1OGIwYzYyOGE1MGRmNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE2OjQ2OjQ5IDIwMTIgKzAxMDAKKworICAgIFNOTVAueHMgY29tcGlsZXIgd2FybmluZyBmaXhlcworCitjb21taXQgYmFjZWViYjEwZDhjYWY1ZGI2M2NjMzY5MzVmZWQ2NWVlOTMxMDI5ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE2OjIyOjQ0IDIwMTIgKzAxMDAKKworICAgIEFkZCBkZWNsYXJhdGlvbiBmb3Igc2h1dGRvd25fc25tcE5vdGlmeVRhYmxlKCkKKworY29tbWl0IGY3Zjk2NmFiZDZkMjg0OWIxMzMxMjUyYWZlNWM0NzNlNWM0MGIzMmQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNDoyNDozMyAyMDEyICswMTAwCisKKyAgICBGaXggZm9ybWF0IHNwZWNpZmljYXRpb24gbWlzbWF0Y2hlcy4KKworY29tbWl0IDMwM2MwMTViY2ZlOWFmMGIxNTRlOTg4MWM3YjRmNDQ5ZTA4ZjMwYmIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgNiAyMjowNjoyMyAyMDA5ICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgZDNlYjJiNWNlZDIyYTg0ODAwNTNjZTQzYWNmOTczOTcyOTA1NTQwNAorICAgIChTcHJpbmtsZSBzb21lIGNvbnN0LW5lc3Mgd2hlcmUgcmVsZXZhbnQgLyBmaXggZm9ybWF0IHN0cmluZyBtaXNtYXRjaGVzLAorICAgIE5pZWxzIEJhZ2dlc2VuLCBNYXkgMjAwOSkKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCWFnZW50L2FnZW50X3N5c09SVGFibGUuYworICAgIAlhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMKKyAgICAJaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisgICAgCWluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisKK2NvbW1pdCBkOTViNDA0MDY5MTZiZGE1YjQ4YjVhNjEzMWJlYzI3Yjg2NmIwYTc5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWF5IDYgMjE6NTk6MjAgMjAwOSArMDAwMAorCisgICAgQmFja3BvcnQgYTJhNzMxNmMzMTBmMGZjYzM3Mjg2NzNmYTA0NzA1MWMyM2I3MTk2MAorICAgIChUcml2aWFsIHdhcm5pbmcgZml4ZXMsIE5pZWxzIEJhZ2dlc2VuLCBNYXkgMjAwOSkuCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAorICAgIAlhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jCisgICAgCWFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYworICAgIAlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jCisgICAgCWFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKKyAgICAJYWdlbnQvc25tcGQuYworICAgIAlzbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYworCitjb21taXQgZDg2YzQ3ZjAwM2ZkYzE5MmJjZTdiNDZhYzRmMDZiMDllMzg3YzEyYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMzoyOTowOCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBhIHR5cG8KKworY29tbWl0IGJlZTRkNzljZjRlYjdlMGE0NTM5N2Y1OWI1Mjk4ZGE2MzNhOGUxYmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTM6MTQ6NTcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgcmVhZGluZyBwYXN0IGVuZCBvZiBidWZmZXIuCisKK2NvbW1pdCAzZGMwZTAwYTJmZDhlMzRmZTFhZTMzZWNhYmYzNmUxNDY0NjBhMzFmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEyOjQwOjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGxhcmdlICd0b2tlbicgaXMgdXNlZC4KKworY29tbWl0IGIzYzQ5ODI1NDJlMGFiMTUxZmIzODg0NzU0Y2RmYmNiNDcyZGE1MmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTI6Mjg6NTIgMjAxMiArMDEwMAorCisgICAgRml4ZWQgb2ZmLWJ5LW9uZSBtZW1zZXQuCisKK2NvbW1pdCAwZjUzNjk1MDQ0ZGQzZjBjMzUwNzc1M2UzZjhjMjlkOTdlOTY4NzJkCiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgogRGF0ZTogICBXZWQgQXVnIDMgMjE6Mzg6MjYgMjAxMSArMDIwMAogCiAgICAgQ0hBTkdFUzogc25tcGxpYiwgc25tcGQsIHBlcmw6IEVsaW1pbmF0ZSBkZWFkIHZhcmlhYmxlcwotCi1jb21taXQgNzk0ZjlhNjlkN2ViNjQyMjY4MjAwYjBhNGIxOTkxNTFkZWY2NmVkMAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDE0OjM2OjI1IDIwMTEgLTA3MDAKLQotICAgIG1hbnVhbCBwcmUtbWVyZ2UKLQotY29tbWl0IDczMTg3Y2U4MzQxZWUzMGI5NTIwNGQyMmI2OWJjZTUxNTAxMmMwYzUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMTowNjoyMyAyMDExIC0wNzAwCi0KLSAgICBhZGRlZCBhIGNvbW1lbnQKLQotY29tbWl0IDQzOGMyMTA4NzZkYmY3ZDFmNzdjYjE0ZDIyZjhlYzhlYTRmMGU3OGQKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMTowMDozMSAyMDExIC0wNzAwCi0KLSAgICBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0IG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCi0KLWNvbW1pdCAzOWMyZTI1M2EyYWExZGUxMjhjNzg1MDVjOTA5Y2M4YWU1NGQwZTE2Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTA6NTY6MTQgMjAxMSAtMDcwMAotCi0gICAgYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKLQotY29tbWl0IGQ4YjIwNTJhMDM1OWFkOWQxYTY4ZDhkNTg3YmM2YmUxNTYxNThkMjAKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMTowMDozMSAyMDExIC0wNzAwCi0KLSAgICBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0IG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCi0KLWNvbW1pdCA0ZWVhOWVlMzhmMDZlMDAwYTk1ZGMyMDlkMGE3MWNlNjBkYTQ5NGI5Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTA6NTY6MTQgMjAxMSAtMDcwMAotCi0gICAgYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKLQotY29tbWl0IDI4NGY1ZmI3OWUwNTZhMjcyZjczYjkwOTM3ZDdiZjA1N2MyYWYwMjEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMTowNjoyMyAyMDExIC0wNzAwCi0KLSAgICBhZGRlZCBhIGNvbW1lbnQKLQotY29tbWl0IDhjMDQzMmE3NGZlZGY4YTEzODVjOGFkMGZmMWZiNDI5YTI4ZWFiOTkKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMTowMDozMSAyMDExIC0wNzAwCi0KLSAgICBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0IG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCi0KLWNvbW1pdCBjYTNhZDNhMjhmODFmNTlkZmZhM2RiYjgwOWE3NzAxNDcyNDFlM2U1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTA6NTY6MTQgMjAxMSAtMDcwMAotCi0gICAgYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKLQotY29tbWl0IDQ5ZjVmN2FmNjY1N2UxNjFkOTcxMmZjMWY2MmJlMTg3YWJkNmExOTQKLUF1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDEwOjI4OjE1IDIwMTEgLTA3MDAKLQotICAgIFJlZW5hYmxlIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUKICAgICAKLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotY29tbWl0IGI2MWFhMDkwNmFkNmQwY2VkNWVmMzg2OGMyNmRiNTM2YTI3Njk4NzkKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBdWcgMyAxMDoyMzowMCAyMDExIC0wNzAwCi0KLSAgICBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCi0KLWNvbW1pdCA4NjhjZGZjYjZlYzQyMjBiY2RkOWEwZGVkNGI4NGViNGZjZWViNTNhCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMTQ6NDM6NTIgMjAxMSAtMDcwMAotCi0gICAgYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCi0KLWNvbW1pdCBhZmE5NzMyNTIxZjFhZTZkNGUwYzlhOTE3NDVkYWRiNjNhY2U1NDBmCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MzggMjAxMSAtMDcwMAotCi0gICAgV29yZGluZyBjaGFuZ2VzIHRvIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCi0KLWNvbW1pdCA4ZTcyZmJlODQwYjg5MzI1NzhkYzkyZjkxMTM1OThmNjAwY2IwNTkwCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MjEgMjAxMSAtMDcwMAotCi0gICAgQWRkZWQgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCi0KLWNvbW1pdCAyZmE3ZDg3ZDM5NzllYzBmYmI4MzViY2ZmZjg5OGU2YmVjMmFiYmQ5Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXVnIDMgMTA6MjM6MDAgMjAxMSAtMDcwMAotCi0gICAgQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5IHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgotCi1jb21taXQgNzNlNzY1NzRhZTcyOGE0YTRhMzA2MjM1OTdlYzBiOTVmYTI3OTdjNQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDE0OjQzOjUyIDIwMTEgLTA3MDAKLQotICAgIGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0byB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgotCi1jb21taXQgYjI0YTRmMGM5NTY1MzM1MjIwZWUyMTdkMGMwYjUxMzIxY2MxYTQ0ZgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDEzOjIyOjM4IDIwMTEgLTA3MDAKLQotICAgIFdvcmRpbmcgY2hhbmdlcyB0byBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgotCi1jb21taXQgZTgzN2M3Y2I2MmM2NzZhMDA1OWQyODQ2ZTAyZTMyZjViYjYzYzFiMQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDEzOjIyOjIxIDIwMTEgLTA3MDAKLQotICAgIEFkZGVkIHRoZSBtaXNzaW5nIFU2NCBtMmkgZmlsZQotCi1jb21taXQgOTczNjIzNGIzNzk4YmE1NDYyYTBhNzQ5NDNlZGU4MGU5MGE2NDg1YgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEF1ZyAzIDEwOjIzOjAwIDIwMTEgLTA3MDAKLQotICAgIEEgbmV3IGZ1bmN0aW9uOiBuc3NmcGF0Y2hhcHBseSB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKLQotY29tbWl0IGJmNzE3OGIwYjIyNTg3ZDQzZDFhODBjMjY5Y2QyMTZiZDU5MzAyMTQKLUF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci1EYXRlOiAgIE1vbiBKdWwgMTggMDQ6MzE6MDggMjAxMSArMDQwMAotCi0gICAgYWdlbnQ6IGNoYW5nZSB0eXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdG8gbG9uZworICAgIENvbmZsaWN0czoKICAgICAKLSAgICBUeXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdmFyaWFibGUgaXMgY2hhbmdlZCBmcm9tIGludCB0byBsb25nLgotICAgIFRoaXMgZml4ZXMgdGhlIGJ1ZyB3aXRoIHdyaXRpbmcgdG8gc25tcEVuYWJsZUF1dGhlblRyYXBzIGlmIHNlcnZlciBpcwotICAgIGNvbXBpbGVkIGZvciA2NGJpdCAoc25tcHNldCByZXBvcnRzIHdyb25nIGxlbmd0aCkuIFRoaXMgYnVnIHdhcwotICAgIGludHJvZHVjZWQgYSBsb25nIHRpbWUgYWdvIChieSBmYWVlY2QwIGNvbW1pdCkuCisgICAgCWFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYworICAgIAlhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfc3RhdHVzLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworICAgIAlhcHBzL3NubXB0bHMuYworICAgIAlhcHBzL3NubXB0cmFwZF9sb2cuYworICAgIAlzbm1wbGliL2Rpcl91dGlscy5jCisgICAgCXNubXBsaWIvc25tcF9jbGllbnQuYworICAgIAlzbm1wbGliL3NubXBfb3BlbnNzbC5jCisgICAgCXNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMKKworY29tbWl0IDAxNTM4MDVjOTliOTE5NzM2NTkzNWM1ZDExYWU5YzNkNGJmYWEwZjMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwOTo0ODo0MSAyMDEyICswMTAwCisKKyAgICBGaXggYSBzZXQtYnV0LW5vdC11c2VkIHdhcm5pbmcKKworY29tbWl0IDNmODg4NWZiZWU5NDA3NzQ4ZmMyZjA1NzM3MjhhMTFiYTJiYzAyM2EKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDI4IDA1OjUxOjEzIDIwMDkgKzAwMDAKKworICAgIFJldHVybiBhIHZhbHVlIGZyb20gc3ByaW50X3JlYWxsb2NfdmFsdWUgZXZlbiBpZiBubyBzdWJ0cmVlIGlzIGxvY2F0ZWQuCiAgICAgCi0gICAgQWN0dWFsbHkgdGhpcyBpcyBhICdsZXNzIGVmZm9ydCcgdHlwZSBvZiBmaXggYnV0IEkgd29uZGVyIHdoeSB3ZSBuZWVkIGEKLSAgICBsb25nIHRvIHN0b3JlIGFuIElOVEVHRVIgaW4gdGhlIGZpcnN0IHBsYWNlPwotICAgIAotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE3NTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAogCi1jb21taXQgMTZjMDJkNjljYzljZTRmZDRlNzcxMGEwYmY5NDMwZjUyMTc1ZWQ1MAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDE0OjQzOjUyIDIwMTEgLTA3MDAKLQotICAgIGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0byB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgotCi1jb21taXQgN2ZlZDYxYmYwYWYxNDc3ZWI3NDBhMDU4OGY2YTExYTEyYjcyMzU5NQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDEzOjIyOjM4IDIwMTEgLTA3MDAKLQotICAgIFdvcmRpbmcgY2hhbmdlcyB0byBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgotCi1jb21taXQgOTM4MDYxMmZkY2I0ZjliYjA4MWM0YTQ2NzQ2NjkyMTI0YWJlZGU1MAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEF1ZyAyIDEzOjIyOjIxIDIwMTEgLTA3MDAKLQotICAgIEFkZGVkIHRoZSBtaXNzaW5nIFU2NCBtMmkgZmlsZQotCi1jb21taXQgNjFiMTc4ZjFlZTg5NTJhYTAzYWEzYjFiYTUxZjRhNjY1NWU0N2YwMQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgV2VkIEF1ZyAzIDE4OjA5OjQ3IDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IFdpbmRvd3M6IFBlcmwgbW9kdWxlcyBidWlsZCBub3cgd2l0aCBJUHY2IGVuYWJsZWQuCi0KLWNvbW1pdCBmMjgzMmUzNDA3ODc3ZTcxYTdlYTZkZWE2NTllM2UyMGEwYzVmYTc4Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBXZWQgQXVnIDMgMTc6NDM6MDEgMjAxMSArMDIwMAotCi0gICAgV2hpdGVzcGFjZS1vbmx5IGNoYW5nZTogZml4IGluZGVudGF0aW9uIG9mIGFuICNpbmNsdWRlIGRpcmVjdGl2ZQotCi1jb21taXQgN2ZjYzBiODAzMmY4ZGE1YjdiYzMwMDU5YWYwYmE2NTZlYWU3MTA5MQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgTW9uIEF1ZyAxIDE0OjExOjI4IDIwMTEgKzAyMDAKLQotICAgIHNtdXg6IEZpeCByZWNlbnRseSByZWludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgc2l6ZV90IDw+IHNzaXplX3QgbWlzbWF0Y2hlcwotCi1jb21taXQgYjQ4NGI4OGQ2ZTU3YjQyNWE4NDY3ZjVhMzkzMzMzMTJmZWQyYWNmMgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEF1ZyAyIDA5OjMxOjUwIDIwMTEgKzAyMDAKLQotICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW4gYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMKLQotY29tbWl0IDk0NDYxMmVmNTZhZDI1NjRhYWZlMTRkZjZkMDhlMDQ4YjcyMjhiODYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIE1vbiBBdWcgMSAxNDo0OTo0MSAyMDExICswMjAwCi0KLSAgICAuZ2l0aWdub3JlOiBBZGQgZmlsZSBuYW1lcyBhbmQgcGF0dGVybnMgZm9yIG91dHB1dCBmaWxlcyBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBXaW5kb3dzIGJ1aWxkCi0KLWNvbW1pdCAyNjAwOTAxMjc4NWY4MjhiYmZjODc1OWFmYmJiZmM1ODcwMGZmMWY2Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDI5IDA5OjU5OjMxIDIwMTEgKzAyMDAKLQotICAgIC5naXRpZ25vcmU6IFNvcnQgYWxwaGFiZXRpY2FsbHkKLQotY29tbWl0IDVlM2ZmNTU5NjY0OGUwOTA3ZDU3MWQ3YTRkM2EzYThjMjQwMmQ4ZWUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgMjkgMDg6NDM6MTkgMjAxMSArMDIwMAotCi0gICAgLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCi0KLWNvbW1pdCAzMWEzYTJhMDYyNDA0NjUxMWNhMDdlYzFmNTIxYTIyZDc5NjZkYjgwCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBNb24gQXVnIDEgMTM6Mzg6MDEgMjAxMSArMDIwMAotCi0gICAgUmVtb3ZlIHR3byBnZW5lcmF0ZWQgUGVybCBmaWxlcy4KLQotY29tbWl0IGFkYWRjYjk5ZTU3YjkzYmU2NzBhN2M1MTdmYzk4OWRmZmU3Mzk2ZTkKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBdWcgMiAwMDo1Njo0OSAyMDExICswMjAwCi0KLSAgICBzdXBwcmVzcyAib2siIHRlc3Qgb3V0cHV0IGluIG5zYgotCi1jb21taXQgNDAxMjVkODUzOWNkODlmOTUyZmJjMjQ1ODhjNWU4MWU5Y2Q4MjFmZQorY29tbWl0IGIxZWFhZjMwMjM2OWZkNDU1MmU4ZmVlN2I2YTgwNTA5MWVjMGE5YjQKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gQXVnIDEgMTM6NTg6MzMgMjAxMSArMDIwMAorRGF0ZTogICBXZWQgSmFuIDQgMTE6Mzg6NTEgMjAxMiArMDEwMAogCi0gICAgRGV0ZWN0IFNNVVggcmVjdmZyb20oKSBlcnJvcnMgcHJvcGVybHkuCisgICAgQWRkZWQgY2hlY2sgb2YgZmluZF9zZWNfbW9kKCkgcmV0dXJuIHZhbHVlLgogCi1jb21taXQgNWFjZjBkMmNlYjM5Nzc5NjRlZDM5ZjAwMzA3M2JhNjQxMzhjMmViZAotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEp1bCAzMSAyMzo1Nzo0MSAyMDExICswMjAwCi0KLSAgICBGb2xsb3ctdXAgZm9yOiBidWlsZCBmaXggZm9yIHN5c3RlbXMgbGFja2luZyBmaWVsZCBtc2dfY29udHJvbCBpbiBzdHJ1Y3QgbXNnaGRyCi0KLWNvbW1pdCBhZTlhYzZjOTgxMjgyNGJmNWI4NDhkYzFmM2NjZjcyMjdjNDM2ZDBkCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBTdW4gSnVsIDMxIDA5OjExOjI4IDIwMTEgKzAyMDAKLQotICAgIEZpeCBhbiBpbmNvcnJlY3Qgc291cmNlIGNvZGUgY29tbWVudDogdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgaW4gdGhlIEFOU0kgQyBzdGFuZGFyZCB0aGF0IHN0YWNrIHZhcmlhYmxlcyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gemVyby4KLQotY29tbWl0IDI0MmUxNzk3YjI2OTRhMDY4OTg1NmFlMzZkMDVkMzQxM2FhZjhkNzcKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKdWwgMzEgMDE6NDQ6MDkgMjAxMSArMDIwMAotCi0gICAgRm9sbG93LXVwIGZvcjogYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGQgbXNnX2NvbnRyb2wgaW4gc3RydWN0IG1zZ2hkcgotCi1jb21taXQgODJkNzNmYjExYmUzYWUzMWYzOWM5ZDYxOGQ1Mzg4ZGM5YjEwMDZkNwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCAyOSAyMDo1MToyNyAyMDExICswMjAwCi0KLSAgICBVbmJyZWFrIHRoZSBXaW5kb3dzIGJ1aWxkCi0KLWNvbW1pdCA1NGE0NGNiN2RkNzFkZTY2MTZhNWNjYmZlZDM0YThiNzk2MzQ2ZDUxCi1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgSnVsIDMwIDE0OjI4OjI5IDIwMTEgKzAyMDAKLQotICAgIGF1dG9yZWNvbmYKLQotY29tbWl0IDEwOWY2Njk0ZDc4OGY0OGViZDlmYzBhMWU5MGM0NWFiYzM3YmVhMjAKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBKdWwgMzAgMTQ6MjI6MTkgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogYnVpbGRpbmc6IGJ1aWxkIGZpeCBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkIG1zZ19jb250cm9sIGluIHN0cnVjdCBtc2doZHIKLQotY29tbWl0IDllNDdhYzQzOTMzM2QyYmI3YzgwNjg2MjQxZGI3MzMxYTg4NzcwZmIKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBKdWwgMzAgMDA6MTg6MTQgMjAxMSArMDIwMAotCi0gICAgbWlub3IgbnNiIGZpeGVzL2VuaGFuY2VtZW50cyBmcm9tIG15IG9sZCBzdm4gdHJlZQotCi1jb21taXQgYzQ4MTczYzA2YTllYWFkYmY4MWU2YjQ5NjJkNTVlZjBhNTRkYjI1MQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCAyOSAxMDoyNzozOSAyMDExICswMjAwCi0KLSAgICBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKLQotY29tbWl0IGVjYTFiOWEyNTQ1MGNkODc1YjIwMTJjNTFjMDkwYmEyYjk3ZTA2MjgKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIEZyaSBKdWwgMjkgMTA6MDQ6MDIgMjAxMSArMDIwMAotCi0gICAgUmVydW4gYXV0b3JlY29uZgotCi1jb21taXQgNjlhYTllMDMyY2FmNWViNzEzYmIwMDc0NTEzNDY0MGZlOWZkMDIzNQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCAyOSAwOTo1OTozMSAyMDExICswMjAwCi0KLSAgICAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5Ci0KLWNvbW1pdCBjMzg1OTdkZmEwYjFkMzY3ZDUyYmJkYzBhZWFhZGZmMDE1NTg1MGFkCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBGcmkgSnVsIDI5IDA4OjQzOjE5IDIwMTEgKzAyMDAKLQotICAgIC5naXRpZ25vcmU6IEFkZCBhcHBzL3NzaHRvc25tcAotCi1jb21taXQgNzc0ZDBiNjZlZTBhY2FmZWFmYTIxZmM4ZDk5Mzg2NDc3OWU1MGU2MwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgRnJpIEp1bCAyOSAwNzo0Mzo1NCAyMDExICswMjAwCi0KLSAgICBGaXggdHdvIGZpbGVuYW1lcyBpbiBob3N0IG1pYiBzb3VyY2UgY29kZSBjb21tZW50cy4KLQotY29tbWl0IDM0NTgxMjhiNGEzYzU5NzE5OTg4OTRmOWQ5ZDhjY2M2Yzc2ZDNjOWIKK2NvbW1pdCBhZWU0ZTg5NWZlM2JkNWY0YTYxZTM0Mjc1YmZjYTAzNjhiNTYwNTU1CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1bCAyOCAxNjoxNjoxNSAyMDExICswMjAwCitEYXRlOiAgIFdlZCBKYW4gNCAxMTozMToyMiAyMDEyICswMTAwCiAKLSAgICBGaXggcG90ZW50aWFsIHNpZ3NlZ3Ygd2hlbiBhbiBpZlRhYmxlIGVudHJ5IGlzIHJlbW92ZWQgYXMgcmVzdWx0IG9mIGJvdGggaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIGFuZCBpbnRlcmZhY2VfZmFkZW91dCBhdCB0aGUgc2FtZSB0aW1lLgorICAgIEFkZGVkIGNoZWNrIG9mIHNubXBfc2Vzc190cmFuc3BvcnQoKSByZXR1cm4gdmFsdWUuCiAKLWNvbW1pdCBhMmY5ZWNlMDZjZjAwZWU0N2NlN2U4NTY3MjIxMGMxYjU3ODZmMzExCitjb21taXQgNWQxZDBhNzQ0YWIzMGM4ZTY0NWMzYjg1MDZjYmJkMmNjZWIzZDI3NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMTowNDo0OCAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBvZiBuZXRzbm1wX2V4dHJhY3RfaXRlcmF0b3JfY29udGV4dCgpIHJldHVybiB2YWx1ZS4KKworY29tbWl0IDI5OWVhOWE4OWMzZjE3NThhNzc0OGJiOWIzNDExZjYyZjJjNzBmODgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTA6NTQ6NTUgMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgb2YgZm9wZW4oKSByZXR1cm4gdmFsdWUsIGp1c3QgaW4gY2FzZSBvZiBzb21lIHJhY2UuCisKK2NvbW1pdCA5MGYxYWU2NzU3OTE3NDgxNjM2ZWVmNzcxMDBjYWVlYjUzZWRmZTAxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDMgMTA6MDY6NTYgMjAxMiArMDEwMAorCisgICAgQWRkIHN0cmxjYXQuYy4gU291cmNlOiBodHRwOi8vd3d3LmZyZWVic2Qub3JnL2NnaS9jdnN3ZWIuY2dpL3NyYy9saWIvbGliYy9zdHJpbmcvc3RybGNhdC5jLgorCitjb21taXQgMDg5YmNiMzYwYWEyNjc5MGFkMmE4Y2VkZGY1ODNiN2JhNWRkZmQ0OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDo1MDo1NiAyMDEyICswMTAwCisKKyAgICBBZGRlZCBzdHJyY2hyIHJldHVybiB2YWx1ZSBjaGVjaywganVzdCB0byBiZSBzdXJlLgorCitjb21taXQgMTk5YTA1MTFmNmViMGVmM2ZmMWQ5ZjkyMmI3OTBhYjY3ZGZkZTAxZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjMxOjI2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBzbXV4OiBzaW1wbGlmeSBzbXV4X2xpc3RfZGV0YWNoKCkKKworY29tbWl0IGQ4ODM1NzNhYTczZTBmNWZjMTg4YWNlZGVlNjQ1MWY5NWRhZTkwMGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDoyMzowNiAyMDEyICswMTAwCisKKyAgICBGaXggYSBjb21waWxlciB3YXJuaW5nIGludHJvZHVjZWQgYnkgY29tbWl0IGE4MDlmZTUwNzVjOWYzNzQ3MTVmN2QxYTY4Mjk0OWEwNzMwMTcyYzEuCisKK2NvbW1pdCA3YjdhM2ViMjUwMDUyN2VhYTE2OTkyODdhNmNhNmZjYzRjYzJlMDhhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMDk6NDA6MDIgMjAxMiArMDEwMAorCisgICAgRml4IGEgYnVpbGQgZXJyb3IgY2F1c2VkIGJ5IGNvbW1pdCBhODA5ZmU1MDc1YzlmMzc0NzE1ZjdkMWE2ODI5NDlhMDczMDE3MmMxLgorCitjb21taXQgMmI2YzExOWZlZDQ4NDhkYTY2NjNjMTFmMGMyY2JkYzI5OTIxYjVjNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNTo1MToxMCAyMDEyICswMTAwCisKKyAgICBDaGVjayBmb3IgbmV0c25tcF9kc19nZXRfaW50KCkgZXJyb3JzLgorCitjb21taXQgNmNlNTM2MGNhYTRjOWRlNTFhZGU1Nzg3OWU4M2Y5NmJkMDRiNGM1YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNTo0MjoyMyAyMDEyICswMTAwCisKKyAgICBDaGVjayBmb3IgbWlzc2luZyB2aWV3LgorCitjb21taXQgYjNiYzU0YmVkMzE2OTBhODVkZjJhY2ZiZjMyOTZkYTkzYTllODliNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNToyMzoxNyAyMDEyICswMTAwCisKKyAgICBDaGVjayBzb2NrZXQoKSByZXN1bHQuCisgICAgQWxzbyBjbG9zZSB0aGUgc29ja2V0IG9uIGVycm9yLgorCitjb21taXQgOTIwNzVmNTFjZDQ1YTM4Y2EzODc2MGIzZmZlODJlMTY1NTllOWMyZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNToxODoyNiAyMDEyICswMTAwCisKKyAgICBDaGVjayBvcGVuKCkgcmVzdWx0LgorCitjb21taXQgNjY2NWQ1ZmUyZmM1NjlkNmZhODU0ZDFkNzhlMzQ3YmJhYzY5ZTA3MAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDoyMjoyMiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBtaXNzaW5nIGJyZWFrLgorCitjb21taXQgYTY2NDhjNTQ1M2UxZWY4ZGFjNTdhMzhlZmNjMDBjY2U1M2JmOWU0ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDoyMDoyNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBtaXNzaW5nIGJyZWFrLgorCitjb21taXQgZDY4ZGNhZTBmMThkNTU0NTcxYWVmMzIxOTQ0YTUyOTA1NDhkZGU4NgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDoxNjoxMSAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgZmI2ZjgwYzBmZTNiYTM2ZTU2ZjViOTExYTQ3ZTNmNmYzMmJhMjY2ZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDoxNDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBleGl0IGNvZGUgb2YgZW5jb2RlX2tleWNoYW5nZSB3aXRoIHdyb25nIGFyZ3VtZW50cy4KKyAgICBBbHNvIGFkZGVkIGEgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCAzMTMwZTI0ZmRjMjMyNDY0ZGQ3YmIyMTZmNDZjYWZhMmUwZTc3NWE2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjA5OjU0IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIG1pc3NpbmcgYnJlYWsKKworY29tbWl0IDE4YzEyNmE5NTY1Y2I0ZDY5ZDc1MTNiOTQ0YTIxMDU1ODgwNDVkMzUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MDc6MjkgMjAxMiArMDEwMAorCisgICAgQWRkZWQgJ2ZhbGx0aHJvdWdoJyBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IDZkMzFjODIwNzBhMmM2OGZlM2M1MTllOWQ1NmZhMjc3OTU1NGQwMWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MDE6NTMgMjAxMiArMDEwMAorCisgICAgQWRkZWQgJ2ZhbGx0aHJvdWdoJyBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IGRjNmYwZTJlNTQ5YjRjZDA2MWViYzE5MDA4NGIxZmM3N2E1NWY0MGYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTM6MzI6NTkgMjAxMiArMDEwMAorCisgICAgRml4ZWQgd3Jvbmcgb3BlcmF0b3IKKworY29tbWl0IGRhYjMyODY3ZWQwYjk5MzAxZWZkN2I4ZDg1MmFkMTI4OGExODRiZTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTM6MzA6MzMgMjAxMiArMDEwMAorCisgICAgRml4ZWQgUVVJVEZVTiB1c2FnZS4KKworY29tbWl0IGIxYTJiY2Y2NDYxNWViNjZiYzI0ZDViZTQ5NTBlNDUwMTI5NjIwNDUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTM6MTg6MDMgMjAxMiArMDEwMAorCisgICAgRml4ZWQgd3Jvbmcgb3BlcmF0b3IKKworY29tbWl0IGIyYjFjODUxYjk0ZmVkMzdjMzg2ZWFhMWJmZWFkNWM3NzY5NmUzZWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTM6MTQ6NTIgMjAxMiArMDEwMAorCisgICAgRml4ZWQgd3Jvbmcgb3BlcmF0b3IKKworY29tbWl0IGE4MDlmZTUwNzVjOWYzNzQ3MTVmN2QxYTY4Mjk0OWEwNzMwMTcyYzEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTA6NTg6NDYgMjAxMiArMDEwMAorCisgICAgQWRkZWQgY2hlY2sgZm9yIGZhaWxlZCByZWdpc3Rlcl9taWIuCisKK2NvbW1pdCA1OTQ5ZjA1NWMxNmFlNjUwNjE1YWFlN2ExZmVlM2YyZDdiMTZkOTQwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDEwOjI5OjU5IDIwMTIgKzAxMDAKKworICAgIE1ha2UgTUlCIGZpbGUgcGFyc2luZyBhbmQgZGV0ZWN0aW9uIG1vcmUgc3RyaWN0IC0gTEFCRUwgaXMgcmVxdWlyZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBNSUIgZmlsZXMuCisKK2NvbW1pdCBlNGI2NzM2ODNjNjhiYThiM2FiYzA0MGI5MTI1ZWMzMDQ2NDNjYzdjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSmFuIDEgMjM6MDA6MjQgMjAxMiArMDEwMAorCisgICAgQXNzdW1lIHRoYXQgbGliZGwgbWlnaHQgYmUgaW4gQUdFTlRMSUJTIG9yIFNOTVBMSUJTIHNvIHByZWFkZCB0aGVtLgorCitjb21taXQgYjEzYzFlNTdiZWRiYTc5YjgwNjEwM2M3NGYxOTIxZDUzYTcwNmIzOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEphbiAxIDIyOjU1OjA2IDIwMTIgKzAxMDAKKworICAgIERvIG5vdCByZXF1aXJlIHVjZC1zbm1wL2RsbW9kIHVubGVzcyBpdCB3aWxsIHdvcmsuCisKK2NvbW1pdCAyN2RjZWEwZDVmODAxZGY0OTRhYjJjYjVjNWMwZWJlNTRlYjBkY2QzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDMxIDE0OjQ4OjI5IDIwMTEgKzAxMDAKKworICAgIEFkanVzdCBwYXRocyBmb3IgdGVzdCByZXN0cnVjdHVyZQorCitjb21taXQgMTRiNjBlODVhMWI1NzAwZTkzZDEyNmUyZjI5MWQ1YzQ4NWYzNGUzNgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxNDoxNDoyOSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTWFrZSB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZGxtb2QgbW9kdWxlIGZhaWwgcmF0aGVyIHRoYW4gZ2VuZXJhdGUgYSBkdW1teSBtb2R1bGUgaWYgdGhlIGRsb3BlbiBmdW5jdGlvbiBpc24ndCBhdmFpbGFibGUuCisKK2NvbW1pdCA5OGE5NzUzOGZjMWU5ZmY0NmI2MGQ1ZDk2OTM0NzQ0NDU3ODM3OGMwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDMxIDEzOjM1OjEzIDIwMTEgKzAxMDAKKworICAgIEFkanVzdCB0aGUgcGF0aHMgdG8gc3VwcG9ydCB0ZXN0aW5nIGV2ZW4gaWYgYnVpbGRkaXIgIT0gc3JjZGlyCisKK2NvbW1pdCA4OGYwYWYzY2ZiOTE2YWU1ODYzY2MyOTg2MDcxZDQzNWYyMGMzMDY0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDMxIDExOjM3OjUyIDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIHZhcmlhYmxlcyAncCcgYW5kICdsZW4nLgorCitjb21taXQgMDgxNWE3NTM2Yzc2ZjdlNDg0MjYzODY4M2Y2NzQ4OTRhMWE4Y2UxNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjkgMTQ6NDI6NTQgMjAxMSArMDAwMAorCisgICAgUmVwb3J0IHByb2JsZW1zIHdpdGggU2V0VW5kbyBwcm9jZXNzaW5nCisgICAgTWlzc2VkIHdoZW4gYXBwbHlpbmcgcGF0Y2ggIzM0NDU0NDAKKworY29tbWl0IGViMmFiMjM3NDJjYTg2YzBiODljY2ZlOTFlYjZlYTM3NGJmM2FjYzEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDI5IDE0OjM3OjMxIDIwMTEgKzAwMDAKKworICAgIENoZWNrIGZvciB0aGUgZXhwZWN0ZWQgZXJyb3IgKEVQSVBFKSBvbiBjbG9zdXJlLgorICAgIE1pc3NlZCB3aGVuIGFwcGx5aW5nIHBhdGNoICMzNDQ3NDQ0CisKK2NvbW1pdCBhYWMxMGJjNGYwNTNjMDE0ZjM4MmQ2NTkzZmMzMmFiOTVlMGIxYTU3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyOSAxMjo1OTo1MiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDYzNzY3OiBIYW5kbGUgcGFyc2luZyBzdWJpZGVudGlmaWVycyA+IDJeMzEKKworY29tbWl0IGJiYzAyZTM2ZTkwYzFhYWI3ODk4NTYyZjk2M2Y1Y2FkYjI2ZTEwYmQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgRGVjIDI4IDE3OjE1OjE2IDIwMTEgKzAwMDAKKworICAgIE1vdmUgcGFzcy9wYXNzX3BlcnNpc3QgdGVzdHMgdG8gdGhlIG5ldyBsb2NhdGlvbgorCitjb21taXQgMzg5OGMwNGZkNmY4OTg2NzA2MmZkZmViZjM2ODU3YWI2MTljMDQ1MAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBEZWMgMjggMTY6NTM6MjQgMjAxMSArMDAwMAorCisgICAgQWRkIHRlc3RzIGZvciBwYXNzL3Bhc3NfcGVyc2lzdCwgc3VwcGxpZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IGQ1ZWUzZjBhMWE2M2JiMTc1MmM3NGNiY2E1NWFhM2Q0MGJmOWJmMTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDIxOjU4OjUxIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzNDQ3NDQ0OiBGaXggU0lHX1BJUEUgaGFuZGxpbmcKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgMmExN2IzNzQzMGMxODUyOTk4YzM1ODhlNTQ3ZDdlYjYxYzA2ZGE3MQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMjE6NDU6MzggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogYWdlbnR4OiBQQVRDSEVTOiAzNDQ1NDQwOiBNb3JlIHJvYnVzdCBoYW5kbGluZyBvZiBBZ2VudFggZXJyb3JzCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IGZlNThhMGU1ZjRkNGUyZTJlY2JjYjQ3MzgyYjA4Y2IxZTRkZjM1MmMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE4OjE2OjIzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDM0NTY3NzA6IEhhbmRsZSAob2Jzb2xldGUpIFVJbnRlZ2VyIHR5cGUgcHJvcGVybHkKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgMWJlOGNmMDhhNjdhOTE4NTVmZWUxZWM0YTJkOGUwODdjNzgxMjQ1NgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTg6MDQ6MTAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogYWdlbnR4OiBQQVRDSEVTOiAzNDQ1NDM3OiBMb2cgQWdlbnRYIGRpc2Nvbm5lY3Rpb25zCisgICAgKGluIGxpbmUgd2l0aCBjb25uZWN0aW9ucykgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IDA2ODAzNzI4OTEwN2ZhYTJiYTNmNWNkMmZiMDBjMTk0OTRiYjlhMDQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE3OjI3OjQ2IDIwMTEgKzAwMDAKKworICAgIEhhbmRsZSBhbnkgR0VUTkVYVCByZXF1ZXN0IE9JRCwgbm90IGp1c3QgYSBzaW1wbGUgd2Fsay4KKworY29tbWl0IGE3NGZhNTI4OTgzMTIzZDM1NWE4Y2RjYWE3N2RkNGViNGI4YzY5NTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE3OjAwOjE4IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHBhc3M6IFBBVENIRVM6IDM0OTM5NDogQnJpbmcgcGFzc19wZXJzaXN0dGVzdCBzY3JpcHQgaW50byBsaW5lIHdpdGggcGFzc3Rlc3QqCisgICAgKGkuZS4gdXNpbmcgdGhlIGxlZ2l0aW1hdGUgc3RydWN0dXJlIG9mIE5FVC1TTk1QLVBBU1MtTUlCKQorICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCBiYmU2NDllYmZhNjFlYTIyMzk5MTcwYjM2Yjk5ZGIzMGExZGU4MDEyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxNjo1NDozOCAyMDExICswMDAwCisKKyAgICBSZXdvcmsgInBhc3N0ZXN0IiBleGFtcGxlIHRvIGZ1bGx5IHZhbGlkYXRlIEdFVE5FWFQgcmVxdWVzdHMKKyAgICBhbmQgdXNlIGEgbGVnaXRpbWF0ZSBzdHJ1Y3R1cmUgZm9yIG91dHB1dC4gIEJhY2twb3J0IG9mIFNWTgorICAgIHJldmlzaW9uIDE3NjMyICh3aGljaCB1cGRhdGVkICdwYXNzdGVzdC5wbCcgYnV0IG1pc3NlZCAncGFzc3Rlc3QnKQorICAgIENvcnJlY3QgaW4gYnJhbmNoZXMgNS41IGFuZCBhYm92ZQorCitjb21taXQgODJkMDZjNzI0N2IyMmM4YjAxZDQ1YmY1NTA0MWQyZjFlNjQyN2Q0OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTM6NDU6MTggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0NDc2NzE6IEZpeCBvdmVycmlkZSBoYW5kbGluZyBvZiBPSUQgdmFsdWVzCisgICAgUGF0Y2ggc3VwcGxpZWQgYnkgUGhpbGxpcCBPJ0Rvbm5lbGwKKworY29tbWl0IGJhNGE5Y2U1MWM5NjAwZjlmZGExNjhmMWU2ZWZmMzJhMWRiNjNjYjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDEzOjI0OjI2IDIwMTEgKzAwMDAKKworICAgIFR3ZWFrIC0tZGlzYWJsZS1zbm1wLXNldCBjaGFuZ2VzCisKK2NvbW1pdCA4MjdjOGIyODgzMDE3MWZhYTljNjFkNTNlZmNhOWViNjYwMDU2MWMyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMToyNTo0MyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBweXRob246IFBBVENIRVM6IDM0MzM4NDY6IEZpeCBmb3IgdXNlIHdpdGggcHl0aG9uIDIuNAorCitjb21taXQgZjk4YTU0YTk5Y2FmN2I0NmIxMDBhOTIwZGI5NDJjYmNhOWM0MzkyNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTA6MTA6MzYgMjAxMSArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgdGVzdHMgd2hlbiBjb25maWd1cmVkIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0CisKK2NvbW1pdCAyMzBkZjE0Zjk0YzM3MzZmZjM0Mzc5YTRlMjgxZWVhMzUzYjQ3ZjgwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gRGVjIDI2IDIzOjM0OjIzIDIwMTEgKzAxMDAKKworICAgIERvIG5vdCBhc3NpZ24gdG1TdGF0ZVJlZiB0d2ljZQorCitjb21taXQgYzk2YjNiNGQ4NTMwYWQ1ZTBlZmIwM2YyNGRhYjVlNWYxYTQ2MDAzMQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAyNSAxMToxODoyMSAyMDExICswMTAwCisKKyAgICBDb3JyZWN0IHVzZS1hZnRlci1mcmVlLgorCitjb21taXQgYzU5NzhjODljZGUyNDQwZjRkMjBkYWRiYzlkMWRkOGRiNTYyZDU2ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAyNSAxMToxNTo0NCAyMDExICswMTAwCisKKyAgICBDb3JyZWN0IGRvdWJsZS1mcmVlLgorICAgIAorICAgIG5ldHNubXBfdGxzdG1BZGRyX2FkZCB0YWtlcyBvd25lcnNoaXAgb2YgaXQncyBhcmd1bWVudCBzbyBjYWxsaW5nIGZyZWUgb24gdGhlCisgICAgYXJndW1lbnQgb24gZmFpbHVyZSBpcyBpbmNvcnJlY3QuCisKK2NvbW1pdCBjMTM5Y2ExMjNiNDRiYjNiOWI2YmY5MjFlMTYwOWNjNDVmNjNhNjYwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgU2F0IERlYyAyNCAxNjo1NTozMCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUyAzNDEwMDU5OiBGaXggc3BhcnNlbHkgYXVnbWVudGluZyB0cmlnZ2VyIHRhYmxlcworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisKK2NvbW1pdCBjNGFlMDIxYjJlNjM4NDQzNzA4MWM1NjIzZjM2MGM4ODk2MzkwMTg4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgU2F0IERlYyAyNCAxNjoyOTo1NCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUyAzNDEwMDUwOiBTa2lwIGFscmVhZHktJ3Byb2Nlc3NlZCcgdmFyYmluZHMKKyAgICBCYXNlZCBvbiBtaWIyYyBwYXRjaCBwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorCitjb21taXQgYzZhY2NmOGM2NjI1NGZhOGM0ODc2N2VkN2RlYzc5NWRkYWZjNTIyZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6Mjc6MTEgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVMgMzQxMDA1MDogU2tpcCBhbHJlYWR5LSdwcm9jZXNzZWQnIHZhcmJpbmRzCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKworY29tbWl0IGE2MTgyNmFkOGNhNTQ2NjFkMWQ5MDk3MTI1MDNiZDNhOGIzMmVlZDAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBEZWMgMjIgMTg6MzU6NDYgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KKyAgICAKKyAgICBteU1hdGNoIGlzIHVudXNlZCBhcyBubWF0Y2ggaXMgemVybyBhbmQgYWxzbyBzaW5jZSByZWdleEJ1ZmZlciBpcyBjcmVhdGVkCisgICAgd2l0aCBSRUdfTk9TVUIgc2V0LgorCitjb21taXQgYmE0ZmM4MGZlMmNmZDVhNWQ4OTIzMGQ4ZjM3MDNlNGZlMDFlNjAxOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjIgMTk6MjQ6NDAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDM0MDIzNzY6IGZyb20gTGVvbmFyZG8gQ2hpcXVpdHRvOiBSZWNvZ25pc2UgUmVpc2VyRlMKKyAgICBBbHNvIG1vdmUgdmFyaW91cyBGU1R5cGUgZGVmaW5pdGlvbnMgdG8gdGhlIGFwcHJvcHJpYXRlIGJsb2NrcworCitjb21taXQgYjVhYzRhMDRkY2Q1NDcwZDA4ZDAzMzIxYWJjZDFlOTgyNjIxZTZlMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6Mzk6NDYgMjAxMSArMDEwMAorCisgICAgRml4ZWQgdW50ZXJtaW5hdGVkIHN0cmluZ3MgYWZ0ZXIgc3RybmNweQorCitjb21taXQgMmIzN2U0ZThmMjUwYTBkODgyMTE5OWE3NGFjM2Y0ZTViN2I3YmFiYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6MzE6NTEgMjAxMSArMDEwMAorCisgICAgRml4ZWQgdW50ZXJtaW5hdGVkIHN0cmluZ3MgYWZ0ZXIgc3RybmNweQorCitjb21taXQgM2QwODM0NTE1NmM0MTkzMzNkZTk2OWYxM2QyMWZjZWM3ZTE4ZTk0ZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6MzI6MjkgMjAxMSArMDEwMAorCisgICAgRml4ZWQgdW50ZXJtaW5hdGVkIHN0cmluZ3MgYWZ0ZXIgc3RybmNweQorCitjb21taXQgY2Q4NTlhZDUxYzRmMThkNWIwZmM2OWRkNjY5ZmNiMDUxYzc5ODk2OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6Mzk6MzMgMjAxMSArMDEwMAorCisgICAgRml4ZWQgd3JvbmcgbWVtbW92ZSBzaXplCisKK2NvbW1pdCAzMGZmNThkMDlkNGM5ZDU0MzhiYjYyMTA1NGZkN2FkN2EyYTU5N2U0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDowNzoxOSAyMDExICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBsZW5ndGggb2YgYnVmZmVyIHdoZW4gcHJpbnRpbmcgQVNOX0JJVF9TVFIKKworY29tbWl0IDZjMTQ4N2UxZDM2MGQzZDI2MGEzOWNiMWY1YjE1ZGE5NzgzOTUwNTMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE1OjQ3OjM0IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHBvdGVudGlhbCBmcmVlIG9mIHVuaW5pdGlhbGl6ZWQgcG9pbnRlciBpbiBlcnJvciBjYXNlcworCitjb21taXQgYzc2ZmI5NmY2NWUzM2JhMmZkMjEyYTkyMWU4YzM4NjE1NWVlNWM3YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTU6NDQ6NDYgMjAxMSArMDEwMAorCisgICAgRml4ZWQgdW5pdGlhbGl6ZWQgdmFsdWVzIGluIHVkcFRhYmxlCisKK2NvbW1pdCBjNDQ2MDg2NzliODk3NTExNzZmMjhhMmU1NGQ1MjgyYjQ2ZTJhMDVjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNDo1NjoxMyAyMDExICswMTAwCisKKyAgICBVc2UgY2FsbG9jIGluc3RlYWQgb2YgbWFsbG9jIGFuZCBtYW51YWwgY2xlYXJpbmcKKworY29tbWl0IGEwNWM1Zjk1MTM0NjE4MjRlNzkwM2FlOWFlOWE2YzMzODZlMzM4NzkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE0OjQwOjUwIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHByaW50aW5nIG9mIHVuaXRpYWxpemVkIHZhcmlhYmxlIHdoZW4gc2Vuc29yc19nZXRfbGFiZWwoKSBmYWlscworCitjb21taXQgZTRhNWVkYzcyMzkzYmQzZGU5YmYxMmJjZWJhOWQ4M2JiZjdkZTcwYgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTQ6MzE6MjUgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlZCB1bnVzZWQgdmFyaWFibGUKKworY29tbWl0IGZhZTJlNWI4MzViOGRmMWVhZTQ3ZTRjZWJiNGViNDA0ZDcyODIzNzcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDEzOjMxOjIxIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcgdW5pdGlhbGl6ZWQgaWlkIGluIGVycm9yIGNhc2VzIGFuZCB3aXRoIGRlYnVnIGluZm8gZW5hYmxlZC4KKworY29tbWl0IDlkNThmODFhOTIzOWNmYmNmYzhlYmNlMzY3ZDIxZTliM2RjYjAyOGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDEzOjMzOjMzIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW4gZXJyb3IgY2FzZXMKKworY29tbWl0IDBiYzhjMDhlZGVhZTdhZTA5NWYxMTYyNThjMjBhZTU3NjdkNjA2NTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDEzOjIwOjUyIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHJldHVybmluZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlICdzdGF0dXMnIHdoZW4gc3MgPT0gTlVMTAorCitjb21taXQgNzMwNGM1M2NmOGFkZWU4ZWNjZWYxYThmMjY3NTZmYzA3ZjA5ODcyMQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxOCAyMzozMTo1MyAyMDExICswMTAwCisKKyAgICBPbiBzb2xhcmlzIDEwIHRlc3QgaW4gL2Jpbi9zaCBkb2Vzbid0IHN1cHBvcnQgdGhlIC1lIHRlc3QuIFJlcGxhY2UgaXQgd2l0aCAtZgorCitjb21taXQgOGNkM2JlNjBkNjkzYzljMzZmZmI5N2QzZDliY2I0OWMxYjRhYmUzNQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAxNyAwODo1MjoyNCAyMDExICswMTAwCisKKyAgICBBdm9pZCByZXBldGl0aW9uIG9mIHRoZSBjb21wbGV4IGV4cHJlc3Npb24gZGV0ZXJtaW5pbmcgaWYgaXQgaXMgcG9zc2libGUgdG8gZ2V0IHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzLgorICAgIAorICAgIFRoaXMgYWxzbyBtYWtlcyBpdCBwb3NzaWJsZSB0byBidWlsZCBvbiBwbGF0Zm9ybXMgbGlrZSBTb2xhcmlzIDEwIHRoYXQgZGVmaW5lCisgICAgSVBfUkVDVkRTVEFERFIgYnV0IGxhY2sgZWl0aGVyIG9mIG1zZ2hkci5tc2dfY29udHJvbCBhbmQgbXNnaGRyLm1zZ19mbGFncy4KKworY29tbWl0IDk1M2YyZTNkNDI1ZWRlM2I4NjNhMmU3Y2NiMGI0YmM4NjI5MjhiNTcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgNSAyMjoxMzowNyAyMDExICswMTAwCisKKyAgICBNb3ZlIHRoZSB1c2Ugb2YgX3NlbmR0byBhbmQgX3JlY3Zmcm9tIGJlbG93IHRoZWlyIGRlZmluaXRpb25zLgorCitjb21taXQgNjhhMTE3M2M0NmNmNzc2MDE0MjZjZjM5MWQ5YTg1Mjc5NGYyMDU3ZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE5vdiAyMCAyMDowNToxOCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBTZXBhcmF0ZSBvdXQgdGhlIGNtZXNnIGJ1ZmZlciBzaXplCisKK2NvbW1pdCA0NjFkZDE2ZjNiMjY0NzMyMmNkY2U2MzYzMDgxY2M0NGJhNWE0OWI1CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDI2IDIxOjUxOjAxIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1lcmdlIHRvZ2V0aGVyIHRoZSBMaW51eCBhbmQgKkJTRCB2ZXJzaW9uIG9mIHNyYyBwb3J0IHNlbmRpbmcuCisKK2NvbW1pdCA3YWNjYjY5YmFhMWZjMGI2YTM0MzlkMmU1NDljODZkYTM0NTNiYWQyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjMwOjMxIDIwMTEgKzAxMDAKKworICAgIFVzZSBhIGJhcmUgc3RydWN0IGlvdmVjIGluIGluc3RlYWQgb2YgYSBvbmUgZWxlbWVudCBhcnJheS4KKyAgICAKKyAgICBUaGUgcHVycG9zZSBvZiB0aGlzIGNoYW5nZSBpcyB0byBtYWtlIF9yZWN2ZnJvbSBtb3JlIHNpbWlsYXIgdG8gX3NlbmR0by4KKworY29tbWl0IDM5ODUyY2Q0Yzg1ZWYyYmZjNzVjZGVhMjgyNTI2MWVlOTNlNzY4YzIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6Mjk6MjAgMjAxMSArMDEwMAorCisgICAgQWRkIGNvbW1lbnQgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiB0aGUgY2FsbCB0byBnZXRzb2NrbmFtZSBhZnRlciBhbG1vc3QgcmVtb3ZpbmcgaXQuCisKK2NvbW1pdCAxYjI5MmNhMjdlYWI1Y2FhNzNmZWFhYTgzZGM5YzEyYWJjMGYyZTcwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjI3OjU5IDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZS4KKworY29tbWl0IGJjODc5NTcxZWNhOTUyMGJjMTMyZjg0MGMzZTY1OWQzNzkzMTQ0ZDcKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MjU6MzYgMjAxMSArMDEwMAorCisgICAgSW50cm9kdWNlIHRlbXBvcmFyeSB2YXJpYWJsZXMgdG8gZWFzZSB0aGUgZXh0cmFjdGlvbiBvZiB0aGUgc2VydmVyIGFkZHJlc3MuCisKK2NvbW1pdCBiN2VlYTZjZmZiZDg3MjkzMmNlMmMwNGZlZmI2ZjQzZGUzMzlmMzc0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjE4OjMzIDIwMTEgKzAxMDAKKworICAgIFJlbmFtZSB0aGUgY21lc2dwdHIgdmFyaWFibGUgdG8gY20uCisgICAgCisgICAgVGhlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBpbmNyZWFzZSB0aGUgcmVhZGFiaWxpdHkgb2YgdGhlIGNvZGUuCisKK2NvbW1pdCAwYTc0NjFlNzI4ODA1YzYyYTFjYWI5ZDg3YmZjNzRjNzkyN2E5ZmNjCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjE1OjIyIDIwMTEgKzAxMDAKKworICAgIEZhY3RvciBvdXQgYSBjb21tb24gbG9vcCBpbiByZWN2bXNnIG9wdGlvbiBwcm9jZXNzaW5nLgorCitjb21taXQgYjNjNjI0OGQwMjAxYWIxNjEwODQwZDZkMGU3NDliM2I2YzRhZDc5MgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToxMzo0MyAyMDExICswMTAwCisKKyAgICBVbmlmeSB0aGUgc3RydWN0dXJlIG9mIExpbnV4IGFuZCBCU0QgcmVjdm1zZyBvcHRpb24gcGFyc2luZyBzb21ld2hhdC4KKworY29tbWl0IDM1NjQwMGQ2MjkwYTQyM2I1MmViZWVhNWE1ZTk3NmZiMTViYjczYjQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MDQ6NTYgMjAxMSArMDEwMAorCisgICAgVXNlIENNU0dfREFUQSBvbiB0aGUgcmVzdWx0IG9mIENNU0dfRklSU1QvTkVYVEhEUiwgbm90IG9uIHRoZSBidWZmZXIuCisKK2NvbW1pdCAzYjM1MTcwOGM2MmRlNDZhYTFiOTBlZDIzMmNmZDhjN2M1YjAyMjMxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMTI6MDA6MzIgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlIGEgY2FzdAorCitjb21taXQgZGU5MjUwZDlkYWU5NzI3YTZjYzdmNjQ3Njg4ZGRkZjFiODU5NzEyOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDExOjU4OjA0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBNYWtlIHNwcmludF9taWJfb2lkKCkgdHJlYXQgT0lEIGNvbXBvbmVudHMgYXMgdW5zaWduZWQgaW5zdGVhZCBvZiBzaWduZWQgaW50ZWdlcnMKKworY29tbWl0IDBlMzNiM2I2ZDU4NTRhNGJhYzE1ZDRlYTVlMDE2YzUzZDE2MWQwY2QKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAxMDowMjoyOCAyMDExICswMTAwCisKKyAgICBGaXggcmVjZW50bHkgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgYjdlNTBkNWY5YTY3NTU5ODJkMmFmMzE5MTQ3M2NiMzQ2NDNiYzAzZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDA4OjM3OjIyIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFJlZHVjZSBvdmVyaGVhZCBvZiBjb25maWcgZmlsZSBwYXJzaW5nCisKK2NvbW1pdCA3M2M5ZWU0MmQyOGFmZTJlMTA3YTdkNjYxNmI2ZDAxMTg5MGMzNmVhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMDk6MDk6NTkgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKKworY29tbWl0IDNkYjk3OTYyYjM3ZWIxMmQyNTRkNjFlNmJlMjM0YjA2YTM5MWM4YmIKK0F1dGhvcjogQmlsbCBGZW5uZXIgPGZlbm5lckBnbWFpbC5jb20+CitEYXRlOiAgIFRodSBEZWMgOCAwNzo0Mzo0NSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzQ1Mzg2ODogZnJvbSAiQmlsbCBGZW5uZXIgPGZlbm5lckBnbWFpbC5jb20+IjogRmFjdG9yIGNvbW1vbiBjb2RlIGludG8gcGFzc19jb21tb24KKyAgICAKKyAgICBNb3ZlIHRoZSBjb2RlIGZvciBwb3JtYXR0aW5nIGFuZCBwcmludGluZyB2YWx1ZXMgZnJvbSBwYXNzIGFuZCBwYXNzX3BlcnNpc3QKKyAgICBpbnRvIHBhc3NfY29tbW9uLgorCitjb21taXQgYjY1NjhjODNmMTc1NmU5YTY1NDM0ZWRlZWViNDBkMjNkZGJiYjY1MgorQXV0aG9yOiBjY2NoaXUgPGNjY2hpdUBzb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgNyAxNjoyNToyNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NTIwNjk6IEZpeCBzbm1wdHJhcF9vaWQgZGVjbGFyYXRpb24gaW4gbWliMmMgZ2VuZXJhdGVkIGNvZGUKKyAgICAKKyAgICBUaGlzIGJ1ZyB3YXMgaW50cm9kdWNlZCBjb25zaWRlcmFibGUgdGltZSBhZ28uIEl0IGRpZCBhbHJlYWR5IGV4aXN0IGF0IHRoZQorICAgIHRpbWUgdGhlIDUuNiBicmFuY2ggd2FzIGNyZWF0ZWQgKHNlZSBhbHNvIGNvbW1pdAorICAgIDBlYzA4OGFmYTI3Y2ZkYTRlNmVhNzhhYWU3Y2ZjNTUwNzU2NGVkZGUpLgorCitjb21taXQgZDQ5NGRiNjRjMjA4YjRkYzYyODEzMTMyZjg4NjNiZDVjMWEzOWQ3NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjM4OjE3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogRWxpbWluYXRlIGFuIHVudXNlZCB2YXJpYWJsZSAoTm93KQorCitjb21taXQgMjhmMjU2MWJjMjkzNWQ4ZTFjYmY0NmQyODIwMTU4MTczZTdhNGNmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjM3OjExIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogTW92ZSB0aGUgbWFpbiBsb29wIGNvZGUgaW50byBhIG5ldyBmdW5jdGlvbgorCitjb21taXQgMzk2ZTEyMmRkYzQyYTkxNmYwNmEwMjg4NGMwZThhMjU4ZWRiZTIzOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDA5OjMyOjE2IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBNYXRjaCBlYWNoIGdldHB3bmFtKCkvZ2V0cHd1aWQoKSBjYWxsIHdpdGggYW4gZW5kcHdlbnQoKSBjYWxsIGFuZCBlYWNoIGdldGdyZW50KCkgY2FsbCB3aXRoIGFuIGVuZGdyZW50KCkgY2FsbC4KKworY29tbWl0IDNlZmVmYmMwMDI0Mzk5Nzg2ZjhiNjhiMWU5M2IwYThmZGRkZGM3ZGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgMSAxMDo0MTowMSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFJlbW92ZSBzdXBlcmZsdW91cyBjYXN0cworCitjb21taXQgN2YwNWRhYThlMGUwZjUzM2IwZjEyYTNlMWNmMDc2NDE1MTk5MDlkNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDExOjU4OjMyIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IEJVRzogMzQ0NDkzOTogQlVHOiAxNzk2ODg2OiBzbm1wbGliOiBBdm9pZCB0aGF0IHNwcmludF9yZWFsbG9jX29jdGV0X3N0cmluZygpIGVtYmVkcyB1bnByaW50YWJsZSBjb250cm9sIGNoYXJhY3RlcnMgb3IgYmluYXJ5IHplcm9lcyBpbiBpdHMgb3V0cHV0LiBUaGlzIGJlaGF2aW9yIGNvdWxkIGNhdXNlIHRydW5jYXRlZCBvdXRwdXQgaW4gc25tcHRyYXBkLgorCitjb21taXQgZGI4ZjU1OGZkMmYzYjdjMTA5ZWEzYTFjMjEzM2I3NWI2ZjhjYjJhZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjA0OjQxIDIwMTEgKzAxMDAKKworICAgIENvbXBpbGVyIHdhcm5pbmcgZml4OiBwYXNzIHVuc2lnbmVkIGNoYXJzIHRvIGlzcHJpbnQoKSBpbnN0ZWFkIG9mIHNpZ25lZCBjaGFycy4KKworY29tbWl0IDgwMGRjMTAyOGU3ZTBjZDhjYzE0ZDg0ZGQzMTcyM2Q0N2FjMDczZGIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBEZWMgMSAxMDoxODo1OCAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSBoaW50IHZhcmlhYmxlCisKK2NvbW1pdCA4M2VhNGEwODBjOTBhNzRiOTc0M2QzZjI0Y2YwZDRiOGExZThjODQ5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTm92IDI3IDIxOjE2OjUyIDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIHZhcmlhYmxlIHFvcworCitjb21taXQgN2I5ZTAzNDQxYzNkYzNhMDc2NzBlZDAxZjVkMDQ3OTFhODJjNzUwYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowNDowMSAyMDExICswMTAwCisKKyAgICBSZW1vdmUgI2RlZmluZSB2YWwoeCkgX19TVFJJTkcoeCkgYW5kIGNoYW5nZSB2YWwoeCkgaW50byBfX1NUUklORyh4KS4KKworY29tbWl0IDJmMzc5YjBlNGVjYWRmYTRlNTQxZTMwMDVjOGZjODI4MTg4MmI3NDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTU6NTg6NDcgMjAxMSArMDEwMAorCisgICAgRm9sbG93LXVwIGZvciBjb21taXQgMWFhNzA0ZTogdW5icmVhayB0aGUgTVNWQyBidWlsZAorCitjb21taXQgNjRlZjBmNzExMjc2MTc4MzcwMjdmYjJjZmFmMTc0Yjk1YmE3OWUwZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDoxOTo1MCAyMDExICswMTAwCisKKyAgICBBZGQgU05NUDo6cmVnaXN0ZXJfZGVidWdfdG9rZW5zKCkKKworY29tbWl0IDdiZWFkOWNhOTE3YzY3NTY2ZDVlZDk4YWI1MDdiYmMwMjgxNjIxN2QKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMzAgMTQ6MDg6MDggMjAxMSArMDEwMAorCisgICAgQWdlbnRYIHN1YmFnZW50OiBSZWR1Y2UgY29kZSBkdXBsaWNhdGlvbgorCitjb21taXQgMGVkNzE1NDFmODdlN2Q3OGJjOTk4ZWViZGEzMjE3YzU5ZTFkZjgzMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowMzoxOSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGQgRG94eWdlbi1zdHlsZSBmdW5jdGlvbiBoZWFkZXIgZm9yIG5ldHNubXBfcmVnaXN0ZXJfZGVmYXVsdF90YXJnZXQoKSBhbmQgbmV0c25tcF9jbGVhcl9kZWZhdWx0X3RhcmdldCgpLgorCitjb21taXQgOGMyOTcyYjYxZTQwMTY5YjQ3YzUwOTg4YjZhZTllOGMyODVmODRmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowMjo1NCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBGaXggc3BlbGxpbmcgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIFNOTVAgbW9kdWxlCisKK2NvbW1pdCA1ZGYyYmFjNmJkNzE3Nzk5MzExZjAwMWFjN2I3M2RiODhmMTFiZGRhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUdWUgTm92IDI5IDA4OjU5OjU4IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE9ubHkgdHJhbnNmb3JtIHRoZSBhZGRyZXNzIHRvIHByaW50YWJsZSBmb3JtIHdoZW4gbmVlZGVkLgorCitjb21taXQgMTcxZThkNDhkNGFmMDQwMTNjZmY4ZmQyOGY1MzQxYTJhZWYyMWQ4OAorQXV0aG9yOiBNaWpvIFNhZnJhZGluIDxzYWZyYWRpbkBsaW51eC52bmV0LmlibS5jb20+CitEYXRlOiAgIFR1ZSBOb3YgMjkgMTY6NDk6NDYgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcC1icmlkZ2UtbWliOiBGaXggaW5kZXggaW50ZXJwcmV0YXRpb24uCisgICAgCisgICAgVGhpcyBwYXRjaCBjb3JyZWN0cyBhIHdyb25nIGRhdGEgaW50ZXJwcmV0YXRpb24uCisgICAgc25tcC1icmlkZ2UtbWliIG9idGFpbnMgdGhlIGlmaW5kZXggdmFsdWUgZnJvbSB0aGUgc3lzZnMKKyAgICBhdHRyaWJ1dGUgJ2lmaW5kZXgnIFRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgc3lzZnMgYXR0cmlidXRlCisgICAgaXMgYW4gaW50ZWdlciwgd2hpY2ggaXMgaGFuZGxlZCBhcyBoZXggYW5kIGxlYWRzIHRvCisgICAgaW5jb3JyZWN0IGRhdGEgZGlzcGxheWVkIHRvIHRoZSB1c2VyLgorICAgIAorICAgIGUuZy4KKyAgICAgICAgJCA+IHNubXB3YWxrIGxvY2FsaG9zdCBCUklER0UtTUlCOjpkb3QxZEJhc2VQb3J0SWZJbmRleC4yCisgICAgICAgIEJSSURHRS1NSUI6OmRvdDFkQmFzZVBvcnRJZkluZGV4LjIgPSBJTlRFR0VSOiA1NAorICAgIAorICAgIGFjY29yZGluZyB0byB0aGUgc3lzZnMgYXR0cmlidXRlIHRoZSB2YWx1ZSBpcyAzNgorICAgIAorICAgICAgICAkID4gY2F0IC9zeXMvY2xhc3MvbmV0LzxkZXZpY2U+L2lmaW5kZXgKKyAgICAgICAgMzYKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBNaWpvIFNhZnJhZGluIDxzYWZyYWRpbkBsaW51eC52bmV0LmlibS5jb20+CisKK2NvbW1pdCA4MmUzOWZiNjcwNmRmOTBlY2YyZmM5ZTEwYWRhMmI5NjJlZTE5NmYzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE5vdiAyOSAxMjoyNzo0NiAyMDExICswMDAwCisKKyAgICBGaXggbXVsdGktbGluZSBjYXNlIHRlc3Rpbmcgb2YgaW5jb21pbmcgT0lECisKK2NvbW1pdCBiMTVkYTFhNDUxNjA2MTEwNWExZWFjNzQ1MGNmNjUwZWM0NDI2NmIyCitBdXRob3I6IE5pa29sYXkgRGVuZXYgPG5kZW5ldkBnbWFpbC5jb20+CitEYXRlOiAgIFR1ZSBOb3YgMjkgMDg6Mjk6NDkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogRnJlZUJTRDogUmVzdG9yZSBJUF9SRUNWRFNUQUREUiBmdW5jdGlvbmFsaXR5LgorCitjb21taXQgN2Y0N2Y1MmU0ODFiYWE5YWFmYjU3ODQyNDRiMGRkMjY1M2U3ZGNmZgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIE5vdiAyOCAwODo1MTozOSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBVc2UgU05NUF9BTExPQ19UWVBFREVGIHRvIGFsbG9jYXRlIHRyYW5zcG9ydHMgaW4gb3JkZXIgdG8gYXZvaWQgdGhlIHNlcGFyYXRlIGNhbGwgdG8gbWVtc2V0LgorCitjb21taXQgY2Y4NjAzOWUzMDg2MjI1YzMwODViYjlhZGYwODhiOGJhNWJhNjk3OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE5vdiAyMiAxNTowMjo1OCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB1bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYiBwYXNzLgorCitjb21taXQgMWE4N2U3NmUwMGVlM2Q1Y2QzN2EwN2JmYzNkODQ0OTBkM2MyYTRlYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE5vdiAyMiAxNDo1NTo0MiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB1bml0LXRlc3RzL1QwMTRnZXRob3N0YnlhZGRyX2NsaWIgcGFzcworCitjb21taXQgODg2N2ZkMWRjZmU3MmI1OWQwNzMyMmZmMzhhNjk5YjY2ZWM0ZjMyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIE5vdiAyMiAwOTo0NDozOCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHJvYnVzdCBhZ2FpbnN0IG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmVzLgorICAgIAorICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgTkVUU05NUF9MQVJHRV9GRF9aRVJPKCkgdXNlIG1lbXNldCgpIG9uIFVuaXggc3lzdGVtcyBpbnN0ZWFkIG9mIGFuIGV4cGxpY2l0IGxvb3AuCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBzdXJlIHRoYXQgb24gVW5peCBzeXN0ZW1zIG5ldHNubXBfbGFyZ2VfZmRfY2xyKCkgZG9lc24ndCB0cnkgdG8gcmVhZCBtZW1vcnkgaXQgaXNuJ3QgYWxsb3dlZCB0byByZWFkIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBlcXVhbHMgLTEgKGEgdmFsdWUgdGhhdCBzaG91bGRuJ3QgYmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIpLgorICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9pc19zZXQoKSByZXR1cm4gZmFsc2Ugb24gVW5peCBzeXN0ZW1zIGlmIHRoZSBmaXJzdCBhcmd1bWVudCBlcXVhbHMgLTEgKGEgdmFsdWUgdGhhdCBzaG91bGRuJ3QgYmUgcGFzc2VkIGJ5IHRoZSBjYWxsZXIpLgorICAgIENIQU5HRVM6IFdpbmRvd3M6IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgc2hyaW5rIGJlaGF2aW9yIGNvcnJlY3QuCisKK2NvbW1pdCAyM2RiMGNmMDliOGIwZWFiMzdiNzQ5ZWYwYzNjM2YzMDY5MDAyNDVjCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVsIDI4IDE1OjE5OjIyIDIwMTEgKzAyMDAKK0RhdGU6ICAgTW9uIE5vdiAyMSAyMzowMjo1NyAyMDExICswMTAwCiAKLSAgICBDSEFOR0VTOiBzbm1wZDogUmVzdG9yZSBzdG9yYWdlIHRhYmxlcyBvbiBMaW51eAorICAgIEZpeCBjYXN0aW5nIHR2X3VzZWMgdG8gaW50IHdoaWNoIG1heSBiZSB0b28gc2hvcnQKIAotY29tbWl0IGQ2MmEwZWI5MDcwYjRkOGQ5ZmUyYmNmZGI0ZDUzZDM3ZWY4MTRmOWIKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSnVsIDI4IDE0OjQ5OjA4IDIwMTEgKzAyMDAKK2NvbW1pdCA4MGVlNDAyMmU1MzRlNjRhYWQ1YTVmMjcxOTI4NDNiNDJhY2I4NWUwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDA5OjE0OjAyIDIwMTEgKzAxMDAKIAotICAgIERvY3VtZW50IGludGVyZmFjZV9yZXBsYWNlX29sZCBvcHRpb24uCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQzOTIzNDogTW92ZSBuZXRzbm1wX3Bhc3Nfc3RyX3RvX2Vycm5vIHRvIHBhc3NfY29tbW9uIGFuZCByZW5hbWUgaXQgdG8gbmV0c25tcF9pbnRlcm5hbF9wYXNzX3N0cl90b19lcnJubwogCi1jb21taXQgZjY2MGI4YzBkOGMyNzA3YmQ3MzE0MmYwNzYwNzljOTE2OWYzNTk1NgotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdWwgMjggMTQ6NDA6MjcgMjAxMSArMDIwMAorY29tbWl0IDBiYWE5Mjk2YzA3MmJiMzczNTc2MGIwZGQ5OTJmMmQxZDNjYTI3ZmEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDk6MDU6MjQgMjAxMSArMDEwMAogCi0gICAgQ0hBTkdFUzogc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfcmVwbGFjZV9vbGQnIG9wdGlvbiB0byByZW1vdmUgb2xkIGVudHJpZXMKLSAgICBpbiBpZlRhYmxlIHdoZW4gYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbHJlYWR5IGV4aXNpbmcgb25lCi0gICAgYXBwZWFycy4KLSAgICAKLSAgICBFLmcuIHJlbW92ZSBvbGQgcHBwMCBpbnRlcmZhY2Ugd2hlbiBuZXcgcHBwMCBzaG93cyB1cC4KKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDM5MjM0OiBDb3JyZWN0IHRoZSBkZXBlbmRlbmNpZXMgb2YgdWNkLXNubXAvcGFzcyBhbmQgdWNkLXNubXAvcGFzc19wZXJzaXN0CiAKLWNvbW1pdCA0MDZjYWI4MTg5MjY0OTljMzEyMWRlY2U0Mzc3ZDY3NjM4ODk0MDQyCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1bCAyOCAxNDozMjo1NyAyMDExICswMjAwCitjb21taXQgMWFhNzA0ZTRhMjk0NDMwYjI4ZTM5YjZmOWU0NjgzYjhhNDhiY2UwNAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwODozNToyMSAyMDExICswMTAwCiAKLSAgICBEb2N1bWVudCB0aGUgaW50ZXJmYWNlX2ZhZGVvdXQgb3B0aW9uLgorICAgIENIQU5HRVM6IHNubXBkOiBGYWN0b3Igb3V0IGFzYzJiaW4gYW5kIGJpbjJhc2MuIEFkZCBhIG5ldHNubXBfaW50ZXJuYWxfIHByZWZpeCB0byB0aGVtCiAKLWNvbW1pdCA0MmI4ODNjZTE4ZTU4Y2E4OWZkZmQ1MTRlYzY5OGUyZjdmZmQxZjYzCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1bCAyOCAxNDozMjozOCAyMDExICswMjAwCitjb21taXQgY2RhOGZlOTEwMTNmMTJjYmY2NGEwNzc1YWJiNTU3MjAwMzVhZjkzMQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwMDo1NToyNCAyMDExICswMTAwCiAKLSAgICBBbGxvdyBpZlRhYmxlIGVudHJpZXMgdG8gYmUgZGVsZXRlZCBpbW1lZGlhdGVseSB3aGVuIGFwcHJvcHJpYXRlIGludGVyZmFjZQotICAgIGRpc2FwcGVhcnMgKGkuZS4gaW50ZXJmYWNlX2ZhZGVvdXQgPSAwIHdvcmtzIGFzIGV4cGVjdGVkKS4KKyAgICBDSEFOR0VTOiBzbm1wZDogQ2FsbCBzbm1wX29pZHRyZWVfY29tcGFyZSBpbnN0ZWFkIG9mIHNubXBfb2lkX21pbl9jb21wYXJlCisgICAgQ0hBTkdFUzogc25tcGQ6IFJlbW92ZSBzbm1wX29pZF9taW5fY29tcGFyZSBzaW5jZSBpdCBpcyBpbnRlcm5hbCBhbmQgdW51c2VkCiAKLWNvbW1pdCA0NTA2MmVhNDdiZTFjZDhkZjQ5MzNhMGRlN2Y3MmY4Y2Y5MTgzYWFlCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1bCAyOCAxMjoyNDoxMCAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogYWRkZWQgJ2ludGVyZmFjZV9mYWRlb3V0JyBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBzZXQgbGlmZXRpbWUgb2YgaWZUYWJsZSBlbnRyaWVzIG9mIHJlbW92ZWQgaW50ZXJmYWNlcy4KLSAgICAKLSAgICBQcmV2aW91cyBsaWZldGltZSB3YXMgaGFyZGNvZGVkIDUgbWludXRlcywgbm93IGl0J3MgY29uZmlndXJhYmxlLgotCi1jb21taXQgMzFmYTA3Y2Q5ZmZkZTQ2ZDQxZDJiNTgzOGMzZmM0ZDAxNTQ4YmZiNQotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdWwgMjcgMTQ6NDU6NDcgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IHB1cmdlIHpvbWJpZXMgb2YgcGFzc19wZXJzaXN0IGNoaWxkIHByb2Nlc3Nlcy4KLSAgICAKLSAgICBJZiBwYXNzX3BlcnNpc3QgcHJvY2VzcyBlbmRzLCB3ZSBzaG91bGQgcHJvY2VzcyBpdHMgc2lnY2hpbGQgc2lnbmFsLgotCi1jb21taXQgMTFiZDZlMDMyZDE1ZmZiMTFkNzJlMzUyY2E2YmM5NTAyM2MzMzcxYQotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdWwgMjcgMTQ6NDU6MDkgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IHJ1biBzaWduYWwgaGFuZGxlcnMgd2hlbiBzZWxlY3QoKSBpcyBpbnRlcnJ1cHRlZC4KLSAgICAKLSAgICBUaGlzIGJlaGF2aW9yIGlzIGluZGljYXRlZCBpbiBjb21tZW50IG9uIGxpbmUgMTI0NCwgYnV0IGl0IHdhcyBub3QgYWN0dWFsbHkgZG9uZS4KLQotY29tbWl0IGNkNmUzODJiZWRhOGQ0MGVkZDA2NjRlOGZhZWM4ZGIyMjRlNWQ1ZDYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdWwgMjYgMTY6MTY6NDYgMjAxMSArMDIwMAotCi0gICAgQ2xhcmlmeSBhbiBJUHY2IHNvdXJjZSBjb2RlIGNvbW1lbnQKLQotY29tbWl0IDJjZWM2MjQ3OTJhZjg1NDY1MDVmYmEwMmNhMGEyZTIxMTZhNTU5ZTcKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdWwgMjYgMTQ6NTk6MzMgMjAxMSArMDIwMAotCi0gICAgU3BlbGxpbmcgZml4OiBkZWZpbmVkeSAtPiBkZWZpbmVkCi0KLWNvbW1pdCBmOTVhMWYzODBlYTE4ZmY2MzNmMjczYTlhYTVlOWViMjc2MjcwMTBlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVsIDI2IDE0OjE5OjE0IDIwMTEgKzAyMDAKLQotICAgIFNwZWxsaW5nIGZpeDogYWxldmlhdGUgLT4gYWxsZXZpYXRlCi0KLWNvbW1pdCBjNWE4NDY0YzQyYTk0YzI1MGVlMmRmYTJhNDczMTA5YTczNDIwM2Q4Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEp1bCAyNiAxNDoyNDo1NSAyMDExICswMjAwCi0KLSAgICBDSEFOR0VTOiBweXRob246IFBBVENIOiAzMzEwMzc1OiBmcm9tIEVyaW5uIExvb25leS1UcmlnZ3M6IGZpeGVkIHBhcnNpbmcgb2YgdmFyYmluZHMgd2l0aCBNSUIgbmFtZXMKLQotY29tbWl0IGY5Y2NiYzc3MjY2NjEzNGQxZDE3OGI1MDVhZjlkZGNkZDllZDQyNDQKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSnVsIDI1IDE1OjAyOjE1IDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBhdm9pZCBkaXZpc2lvbiBieSB6ZXJvIGluIFVDRC1TTk1QOjpkc2tUYWJsZQotCi1jb21taXQgYzE0ZmMzODYxNGJhZjEwZDUxNzEzNmYwNDgwOTA3YjdmMDNkOGQ3NAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1bCAyMCAxMzo0NDo1OSAyMDExIC0wNzAwCi0KLSAgICBVcGRhdGVkIHRoZSB3b3JkaW5nIGNob2ljZXMgYSBiaXQgYW5kIGxpc3RlZCB0aGUgaGFuZGxlciB0eXBlcyBpdHMgcHJvZHVjaW5nCi0KLWNvbW1pdCA0NWZmNzc4ZjU3MTY0ZjFlMmU1NTAyMzcwNzQzZGViZDdlYWJmMmJlCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSnVsIDE5IDE4OjM2OjExIDIwMTEgLTA3MDAKLQotICAgIHJlbW92ZSBicm9rZW4gd2hpdGVzcGFjZSBsaW5lcyB0aGF0IGxlYWRzIHRvIHJlYWRpbmcgY29uZnVzaW9uCi0KLWNvbW1pdCBlYmRkMjE2YzA3NGJmNDFjZDNhMDg0YmQxNDY4OWNmMDFjODg3YjMxCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSnVsIDE5IDE4OjM2OjExIDIwMTEgLTA3MDAKLQotICAgIHJlbW92ZSBicm9rZW4gd2hpdGVzcGFjZSBsaW5lcyB0aGF0IGxlYWRzIHRvIHJlYWRpbmcgY29uZnVzaW9uCi0KLWNvbW1pdCBkNjVjN2IxNGEwZjkxNTYwYmJmNjUyNzRmNjJlNDhkYjk3YTM0YjNlCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSnVsIDE5IDE4OjQ2OjEwIDIwMTEgLTA3MDAKLQotICAgIHVwZGF0ZWQgZ2l0aWdub3JlIHRvIGlnbm9yZSBhIG51bWJlciBvZiBhdXRvLWdlbmVyYXRlZCBmaWxlcwotCi1jb21taXQgYWIxZDg4N2JhMzgzYzMzZDg1M2FhNGQzNDhiYmNlYWI5ODFhYTI0NQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEp1bCAxOSAxODozNjoxMSAyMDExIC0wNzAwCi0KLSAgICByZW1vdmUgYnJva2VuIHdoaXRlc3BhY2UgbGluZXMgdGhhdCBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgotCi1jb21taXQgZGY1ZjcwMDU1Y2Y5YmUzM2YwNWZiNTBhYmUyZjVhODFlYWMwOTJhZAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KLURhdGU6ICAgVHVlIEp1bCAxOSAxMTowNzoxOSAyMDExICswMjAwCi0KLSAgICBSZXJhbiBhdXRvcmVjb25mCi0KLWNvbW1pdCA3MGRlZTRiOGRkMzdlOGIxZDU5ZGIwM2NkN2Y2MzFmZTM1NmYxOWU0Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVsIDE5IDA5OjM4OjE2IDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzM2OTY4MDogZnJvbSBJbHlhIFlhbm9rOiBjaGFuZ2Ugc25tcF9lbmFibGVhdXRoZW50cmFwcyBmcm9tIGludCB0byBsb25nIHN1Y2ggdGhhdCBtb2RpZnlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgTUlCIG9iamVjdCBkb2VzIG5vdCBvdmVyd3JpdGUgbWVtb3J5IGluIDY0LWJpdCBidWlsZHMuCi0KLWNvbW1pdCAwZjMwOWI0OTNjMjFkM2M2OTE0NDg3NTE0YjQxNTYwNzU0ZmZjZGY5Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVsIDE5IDA4OjM3OjUwIDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHNubXB0cmFwZDogRml4IGEgcmFyZSBjcmFzaCB0cmlnZ2VyZWQgYnkgU0lHVEVSTSBieSBtb3Zpbmcgc2h1dGRvd25fcGVybCgpIGZyb20gdGhlIFNJR1RFUk0gc2lnbmFsIGhhbmRsZXIgdG8gdGhlIGNsZWFudXAgY29kZSBzZWN0aW9uIGluIG1haW4oKS4KLQotY29tbWl0IDY5MGVhN2RjNDVjNmZlMWE3YmJmYTE1ODRlZDliZjkyMWYxOWIyOGYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMDg6Mjg6NTkgMjAxMSArMDIwMAotCi0gICAgQ0hBTkdFUzogc25tcHRyYXBkOiBBZGQgbWlzc2luZyBuZXdsaW5lIGNoYXJhY3RlciBpbiBhIGxvZyBtZXNzYWdlCi0KLWNvbW1pdCBkZDJmYzJlZDg4ZDBmOWJiODFkZTM1ZGJlMWY5YmQzYmJiYmIzZDkwCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUdWUgSnVsIDE5IDA4OjI4OjEzIDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHNubXB0cmFwZDogSW52b2tlIHNodXRkb3duX3BlcmwoKSB3aGVuIHNodXR0aW5nIGRvd24KLQotY29tbWl0IDZkZWVjMWE4OTA0OGM4ZGIyNjUyMzUxN2FmOThkZGQzOTdmYzc3YzMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdWwgMTkgMDg6MjM6MDUgMjAxMSArMDIwMAotCi0gICAgU3BlbGxpbmcgZml4OiBicmFua2V0IC0+IGJyYWNrZXQKLQotY29tbWl0IDhkOWRjYzgwNmVhYjM3ZmUyZGRmOWNjMzRjZjg2NDY3MjY1YjYyY2YKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFN1biBKdWwgMTcgMTE6Mzg6NTggMjAxMSArMDIwMAotCi0gICAgUnVuIGF1dG9yZWNvbmYuIEZpeGVzIGJ1aWxkIGJyZWFrYWdlIGNhdXNlZCBieSBwYXRjaCBkNTg4ZWM4NTNiZDA1MzFmMjEyZmNiZjUxYjk2MmI5NmM2ODI4YjU5IChSUE0gNC45IHN1cHBvcnQpCi0KLWNvbW1pdCBkNjE3ZDg0ZjgzZmE2OWVkOWZhOWY5OGVmYzRhZmFmODgwZDEyMWYyCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUaHUgSnVsIDE0IDE2OjQzOjQ3IDIwMTEgKzAyMDAKLQotICAgIFNwZWxsaW5nIGZpeDogYnJhbmtldCAtPiBicmFja2V0Ci0KLWNvbW1pdCBjNDhjZWVmOTQxY2UwMzZkMjY3NWFlOTQyZGVhZDg1NGNmNWExZTBkCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUaHUgSnVsIDE0IDE2OjQyOjAwIDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgbmV0c25tcF9pcHY2X2ZtdGFkZHIoKSBzaG93IHRoZSBJUHY2IHNjb3BlIElECi0KLWNvbW1pdCA3YmFkNzhlNTE5NDE1NzY5MDRhZmQ2MmNjOTEzNjY2NzA4ZjhmNDZjCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBTdW4gSnVsIDE3IDExOjA0OjM0IDIwMTEgKzAyMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBBZGQgc3VwcG9ydCBmb3IgSVB2NiBhZGRyZXNzIHNjb3BlIElECi0KLWNvbW1pdCA0ZmIxZjBlZGE3OTA5YWFkYTZhYmM1YmQ4ZGJmMDE0ZDExNWZkYjRlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBTdW4gSnVsIDE3IDExOjA3OjEwIDIwMTEgKzAyMDAKLQotICAgIFJ1biBhdXRvcmVjb25mCi0KLWNvbW1pdCBhNTY3MjFhM2U3NzU0ZTM4OWRhYTdlOGEzZDU3OTI4OTllZGM5ZGUzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgotRGF0ZTogICBUaHUgSnVsIDE0IDE2OjE4OjMyIDIwMTEgKzAyMDAKLQotICAgIEFkZCBhdXRvbTR0ZS5jYWNoZSBhbmQgc3RhbXAtaCB0byAuZ2l0aWdub3JlCi0KLWNvbW1pdCA4NTFiY2Y1M2ZjZDEzY2RmMGJhOWYxMmU1ZDYwM2U3M2Y4YmI5NjExCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVsIDE1IDE1OjMyOjQ5IDIwMTEgLTA3MDAKLQotICAgIG1lbnRpb25lIHRoZSAnYmVmb3JlJyBwYXJ0IG9mIHRoZSBpbmplY3RIYW5kbGVyIGxpbmUKLQotY29tbWl0IDlmNzkzNjMwMTYyY2I3NzEzYWM0YjY4YzlhYWJlNTBlNjc1MTQwNzEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdWwgMTQgMDc6MzE6MzAgMjAxMSAtMDcwMAotCi0gICAgZml4IGEgdHlwbwotCi1jb21taXQgZWRjMmM4ODM3NWZlY2NiMTc2YmNhZGViNTg4MTBkZDU3YmQ5N2ZiNwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEp1bCAxMSAxOTozMzowMyAyMDExIC0wNzAwCi0KLSAgICBhZGRlZCBhIGNvcHkgb2YgdGhlIHNoZWxsLWZ1bmN0aW9ucyB0byB0aGUgb2xkZXIgYnJhbmNoCi0KLWNvbW1pdCA5NjRkNjM1MTQ5ODJkNmRkOWZhOTUwMjBkMjRhM2U4OGIyMmYyZDBjCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSnVsIDExIDE5OjMwOjI5IDIwMTEgLTA3MDAKLQotICAgIGEgY29weSBvZiB0aGUgcmVsZWFzZSBmaWxlIGFwcGxpZWQgdG8gdGhlIG9sZGVyIGJyYW5jaGVzCi0KLWNvbW1pdCAxOTZlMTEwYjMxNGUzN2U3M2E3NGVkYjAzYzQzZGEwMjk5ZWE4YjQ0Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSnVsIDExIDE5OjM0OjA2IDIwMTEgLTA3MDAKLQotICAgIGFkZGVkIDUuNyBwYXRjaGVzCi0KLWNvbW1pdCBhMmFjMjRkZDRiNWI3MDk3NzNmZTgyNzY4N2M4NTk4Mjc3NWQ5OTk4Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSnVsIDExIDE5OjMzOjAzIDIwMTEgLTA3MDAKLQotICAgIGFkZGVkIGEgY29weSBvZiB0aGUgc2hlbGwtZnVuY3Rpb25zIHRvIHRoZSBvbGRlciBicmFuY2gKLQotY29tbWl0IDhhZDMyY2VmYjM3YzYyMDgwYzRmM2Q3NDQ0Mzg4NGJlYzFjNDlhZGQKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKdWwgMTEgMTk6MzA6MjkgMjAxMSAtMDcwMAotCi0gICAgYSBjb3B5IG9mIHRoZSByZWxlYXNlIGZpbGUgYXBwbGllZCB0byB0aGUgb2xkZXIgYnJhbmNoZXMKLQotY29tbWl0IDlmZjQ3MTQzOWUzMjYyNTUwNjYzNzdjNzZkOTk1ZTFhYWYyOTZiZDIKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMjM6MTU6NDIgMjAxMSAtMDcwMAotCi0gICAgZml4IHRhZyBwdXNoaW5nCi0KLWNvbW1pdCBmOWE2NTM4NWIyM2QwNmRiYmU5NDMwYTIzYzhlYmNmNjhkMTIxMjdlCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDIyOjMyOjEwIDIwMTEgLTA3MDAKLQotICAgIG1pc2MgcHVibGljYXRpb24gZml4ZXMgZm91bmQgd2hpbGUgcHVibGlzaGluZwotCi1jb21taXQgZGY5Y2Y5YTFlMjkzZDA1YTI0Nzg2Njk0ZjY4YzA1YTJiZTEzYTliMwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAxNjozNDoxMSAyMDExIC0wNzAwCi0KLSAgICB4bWwgZml4ZXMKLQotY29tbWl0IGVlOGQxNjA0MTZjMmY3ZDE5NDE4NjNlN2QzNzUxMjY1OGUzZjJmMzYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMTY6MzM6NTAgMjAxMSAtMDcwMAotCi0gICAgdXNlIGdpdDJjbCB0byBnZW5lcmF0ZSB0aGUgQ2hhbmdlTG9nIGZpbGU7IG5lZWRzIG11Y2ggbW9yZSB3b3JrLgotCi1jb21taXQgNWQ0YmI4MDExM2RkY2NlNWNlZTI5M2E0ZTUzN2IyMDFmYWZjYWI4MwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAxNDo0ODozOSAyMDExIC0wNzAwCi0KLSAgICB1c2UgdGhlIG5ldyBydW4tYXV0b2NvbmYgc2NyaXB0Ci0KLWNvbW1pdCA2MWZmZWY2MjY4Njc1YTkxZTIzMGQ0NGIzNDA3YTNkMGMzZmZjODlkCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDE0OjQ3OjU2IDIwMTEgLTA3MDAKLQotICAgIEEgc2NyaXB0IHRvIGludm9rZSB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIHRoZSBhdXRvY29uZiB0b29sCi0KLWNvbW1pdCBkMGY2ZjhkZTM3MjkyYjdmYmM5ZTA1NzkzNjkwYjU3ODRhMDQxZDQ2Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDI5IDA4OjQxOjQ1IDIwMTEgLTA3MDAKLQotICAgIHJlbWFpbmluZyBjb21tYW5kIGxpbmUgY2hhbmdlcyBmb3Igc3ZuIC0+IGdpdAotCi1jb21taXQgMTY1NjA4NDAwMjBkYzVlMGM0YjI4Y2MyZTMwYmIyY2QwMzRjZTBkMAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAwNzoyNjo1NSAyMDExIC0wNzAwCi0KLSAgICBtYWtlIHRoZSBicmFuY2ggZWNobyBvdXRwdXQgYW5kIHN2biB1cGRhdGUgY29udmVydGVkIHRvIGdpdCBlcXVpdmFsZW50cwotCi1jb21taXQgZjc3NWJjZDZhN2E1MGYzMzc4MjUyNmVjZGIxYmVlYTU1ZTNmZTgyMwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyOSAwNzoxMToyOSAyMDExIC0wNzAwCi0KLSAgICBwdWxsIHRoZSBicmFuY2ggaW5mbyBmcm9tIGdpdAotCi1jb21taXQgZDU4OGVjODUzYmQwNTMxZjIxMmZjYmY1MWI5NjJiOTZjNjgyOGI1OQotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjkgMTY6MDc6MDAgMjAxMSArMDIwMAotCi0gICAgVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsgd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45Ci0KLWNvbW1pdCBhZjhiMjM1MjM0ZjcyOTQ0YTY0OWE3NmYwZDMwY2ZmOTVhYzJlODk1Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgotRGF0ZTogICBUdWUgSnVuIDI4IDEzOjExOjE5IDIwMTEgLTA3MDAKLQotICAgIE1lbnRpb24gdGhlIEdpdCB3aWtpIHBhZ2UKLQotY29tbWl0IDliYzgyZTRjYTQ4MzdmMDAwNzJkYmE4NmI5NDk3YTI3MTg2OTA5ZjkKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdW4gMjggMTk6MTM6MzUgMjAxMSArMDIwMAotCi0gICAgQWRkIC5naXRpZ25vcmUKLQotY29tbWl0IGYyZGY4YTJiMDE2NWUwMTM3ZmQwMTdiNDFjN2QwNGUzYTVlMTY4ZTYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+Ci1EYXRlOiAgIFR1ZSBKdW4gMjggMDg6Mjk6MDggMjAxMSAtMDcwMAotCi0gICAgV2UncmUgbm93IHVzaW5nIGdpdCEKLQotY29tbWl0IDdkOTE3Y2ZjOGY3NDU3NDAzMjU2NDgxNWFiMGZiNDgzYjY5MTg2NGUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAyNCAxMzowMDo1MCAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGExNjJlOTMxZjI5OTMxY2UwM2Q0MGQ3M2RkOTY5ZjYwODYwODNiODAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAyNCAxMjozODoxNCAyMDExICswMDAwCi0KLSAgICBNaXNzaW5nIGNoZWNrIGZvciBycG10cy5oCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDc4N2ZmMWY2MzJlMDg0NDBlOGJiMjQwZGFiY2E1YzVlNjNmZDgyZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDI0IDEyOjIwOjIwIDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQ1MzBkODc3NTMxMDgzYmZmZmQzYmJjYTRhODJjMzAwMDliZWY4ZmQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAyNCAxMjowODoyMyAyMDExICswMDAwCi0KLSAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQ5NTc1ZjEzNmI0MGQwOGQyMWExNjhhMGQ1NDVkODVmNTljNTg3MDEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAyNCAxMjowMjoxNSAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1OTllM2NkZmY5ZTc4NjIyNTM1NjgzYTY5ZjQyOTc3ZGY0MDg5YmE5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKdW4gMjMgMTU6NDE6MzggMjAxMSArMDAwMAotCi0gICAgVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsgd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45Ci0gICAgQmFzZWQgb24gYSBwYXRjaCBieSBKYW4gU2FmcmFuZWsKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1YzJhNjkxYmQyOWVhMzQzMDQ2ZDIxODYyMTUwMmE2NmJjOTZhMWJiCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMjIgMTQ6Mjc6MzkgMjAxMSArMDAwMAotCi0gICAgUHJvdmlkZSBhIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tCi0gICAgYSBjYWNoZSBkaXJlY3RvcnkgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuCi0gICAgCi0gICAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjcwNzQzNWVmNWUwMTFjMzYzN2YzNzk4MWNiZTRkNTBmMmU3MjlkYwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDIyIDEzOjI2OjQ1IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjcyZjk2YWVjOTM3ZWQ3NGNjNGRiOTgwNzQ1ZDJkYmUwMGNhNTNhMAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDIyIDEzOjA2OjQ1IDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDllNDcxYWRjMmE0MDIxMmI0YzAxN2NiY2VkNmUyNTg4MmUzMDZhNGQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAyMiAxMzowNDoxMiAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNGFkMjc4MjRmOWM2ZTkxYTlmYzExZDY2MTk2NTZjMzZkNWQ2NjEyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKdW4gMjEgMTQ6Mjg6NDggMjAxMSArMDAwMAotCi0gICAgUHJvdmlkZSBhIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tCi0gICAgYSBjYWNoZSBkaXJlY3RvcnkgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuCi0gICAgCi0gICAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGE1YWM3NzVkZTU3NTQxNjA3MDY2NWMzMGJjM2Q3NzMzNmUxMmJjYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSnVuIDIxIDE0OjI4OjQ4IDIwMTEgKzAwMDAKLQotICAgIFByb3ZpZGUgYSBmcmFtZXdvcmsgZm9yIHJlYWRpbmcgUlBNIHBhY2thZ2UgaW5mb3JtYXRpb24gZnJvbQotICAgIGEgY2FjaGUgZGlyZWN0b3J5IChyYXRoZXIgdGhhbiBxdWVyeWluZyB0aGUgUlBNZGIgZGlyZWN0bHkpLgotICAgIAotICAgIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcyBmdW5jdGlvbmFsaXR5LgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU5NDkzN2RiNzU1ZWIzODBmY2Y2Y2QyMjBjZTYyZjZlNGEzMTAzYzMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKdW4gMTkgMDc6NTI6MjYgMjAxMSArMDAwMAotCi0gICAgRm9sbG93LXVwIGZvciByMjA1MTE6IHJlYWxseSB1c2UgdGhlIHByb3BlciBmb3JtYXQgc3BlY2lmaWNhdGlvbi4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0NTI0MjU1YmE2MDgzZDI1YzAzZjY0MzZlY2JlMzk4ODM2ZjRhMGY4Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSnVuIDE5IDA3OjUyOjI2IDIwMTEgKzAwMDAKLQotICAgIEZvbGxvdy11cCBmb3IgcjIwNTExOiByZWFsbHkgdXNlIHRoZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmljYXRpb24uCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTA1ZGUwMjE5Y2EyYWE3OWVkNjU4NWZmOGQwY2U0NTVhMTg2ZDEwYQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEp1biAxNyAxOTowOTo1MiAyMDExICswMDAwCi0KLSAgICBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQgaW50cm9kdWNlZCBieSBwYXRjaCAzMzEwMjUwIC8gcjIwNDk0OiB1c2UgJWxkIHRvIHByaW50IGEgdmFsdWUgb2YgdHlwZSBvaWQgaW5zdGVhZCBvZiAlZC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2MjFjOWVkYTEyODJiN2Y1NjJiMzc3N2I1ZmI1N2ZkMzU1YzFhMjA2Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSnVuIDE3IDE5OjA5OjUyIDIwMTEgKzAwMDAKLQotICAgIEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudCBpbnRyb2R1Y2VkIGJ5IHBhdGNoIDMzMTAyNTAgLyByMjA0OTQ6IHVzZSAlbGQgdG8gcHJpbnQgYSB2YWx1ZSBvZiB0eXBlIG9pZCBpbnN0ZWFkIG9mICVkLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNiM2U5N2IzMDlhNTM1ZGYxYTk5YjAzNjkzODY5MDUwNjQ5ZDUzYTAKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMTcgMTk6MDY6NDIgMjAxMSArMDAwMAotCi0gICAgVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkIG9mICVsZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDg3OGJjZDg3NjRiZTVkMTU4ZDY1ZjRiMjBhNjhjYjNhOTQ4ZGJkZGYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMTcgMTk6MDY6NDIgMjAxMSArMDAwMAotCi0gICAgVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkIG9mICVsZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDc5MDlmNjBlMmRmMDZkNjU1MjZlOTQwZWEzMjg2YzI0YmMzNmM3ZmYKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMTAgMDY6MDU6NDMgMjAxMSArMDAwMAotCi0gICAgSW5jbHVkZSBzdGRsaWIuaCB0byBtYWtlIGRtYWxsb2MgaGFwcHkKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxMmYyNmM1ZWUwNjg5MTQ0ZDQ2YmQzNGYzNmEyODA1MjIyZDM3NjFkCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEp1biA5IDE0OjM1OjA4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IEJVRzogMzE1MTg0NTogZml4IG11bHRpcGxlIHJlZ2lzdHJhdGlvbnMgb2Ygc25tcCB0cmFuc3BvcnQgaGFuZGxlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM3NGFmMDc1ODY0NGU5YWJjYzQ5OThmYjI5MWNhMzczODY5MDQ4ZjgKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKdW4gMyAwNjozMDozMyAyMDExICswMDAwCi0KLSAgICBSZXZlcnRlZCByMjAzNjI6IHRoYXQgcGF0Y2ggbWFrZXMgc2Vuc2Ugb24gdGhlIHRydW5rIGFuZCB0aGUgNS42IGJyYW5jaCBidXQgbm90IG9uIHRoZSA1LjUgbm9yIG9uIHRoZSA1LjQgYnJhbmNoLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ5NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQ4NTA4MTJmNWFmYWFhNzI4NmNjYjdiODFiYzA1MjNmMmI3ZGUzN2MKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAyMjoyNDoyMyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzMxMDI1MDogZnJvbSBmZW5uZXI6IG1pc2MgZml4ZXMgZm9yIGRlYnVnZ2luZyBvdXRwdXQgb2YgYWdlbnR4Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDk0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzE4OTM1NmQ4OGI0Y2JkOTIwZmQ5MzQxMTFlNGI2ZDY5MDUxM2Y1MAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDIyOjI0OjIzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMzEwMjUwOiBmcm9tIGZlbm5lcjogbWlzYyBmaXhlcyBmb3IgZGVidWdnaW5nIG91dHB1dCBvZiBhZ2VudHgKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjOWMzZGIxNTc1MmQ2ZTRiOGI5NjAwY2Q3ZDFhOGQ3OWQ2ZDgzYzNlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAxNTo1NzoxOCAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBlZWZlY2NmNzZkNjMwNzk2YjdjOGM2NGEwZTMzZDAxNzUyNjJmY2IKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDE1OjQ4OjQ5IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzVmMGEzODIyYWY4ZjAwODU1MjQyOTA2YjEzMmU3MDJkZTg5OTIxMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMTU6NDc6MDQgMjAxMSArMDAwMAotCi0gICAgbWFrZSBkZXBlbmQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiMWU1YWNiYjYwNWJlZDMyMTBjN2Y1ZGRhZWVlZjJhMDUwY2Y2YmVhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAxNTo0MjowMCAyMDExICswMDAwCi0KLSAgICBSZWluc3RhdGUgYW4gInVudXNlZCIgbGFiZWwgdGhhdCBpcyBhY3R1YWxseSBzdGlsbCByZXF1aXJlZC4KLSAgICAocmVmZXJlbmNlZCBpbiBsaW5lIDI3MTApCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjQ4NzU3OWQxZTk3NzEzN2RjNjQzYWNlZTc2MmFlYWFmYTYwZjRiZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMTU6MzI6MjMgMjAxMSArMDAwMAotCi0gICAgRml4IHR5cG8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjYWMxMWE5MmMwNGE1Y2M1MWUyMzFiZTBhYjExNmRiODU1MjIxZGUxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAxNTowODo1MSAyMDExICswMDAwCi0KLSAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGZhOGVlNGY5N2MyZmE4ZmI2ZTU5Y2YwNTVlMGQ4MWEzYmRlY2ZiOTcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDE0OjUxOjE0IDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDg2NWNjZmYzMjIwZDAxN2YzZWYzYjYxOWYwZjhmNDQ3ZDMzNTE0ZWIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDEwOjE5OjMzIDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2I2MTliMTBlOTEyYmRkMWM3NjMzY2UzYjFlNzI1NzRjMjM0MWNlOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMTA6MDE6MDEgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1NWY2ZThjM2EwZjc3NDFiZjhhNjg5YTBmY2YwNmNjNDgwYWQxZWZmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKdW4gMSAwOTo1NDowNCAyMDExICswMDAwCi0KLSAgICBtYWtlIGRlcGVuZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQ3YTI3M2NjYmVlNTY5MDFlODY3OWEwZGUzMmJjNmFhMTZkNDRiZjUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEp1biAxIDA5OjA2OjMyIDIwMTEgKzAwMDAKLQotICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTI2MzUzNTUxZjQ5MzdmN2MwYmMxYWE4YzgwYzJkNDhkMTM0OWM5MwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSnVuIDEgMDk6MDA6MjQgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWIwMTVjNWRmZmQ0N2EzOGM5Nzc5MjM2NzZkMWM0ZWM4YjU3YmJlYwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzMSAyMjo0OTozMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvciBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3ZmEzMGZjZTA4YWM0OTRjMzU4ZTZhMzFiOTcwMmUxMmZmZWJkNDYxCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDMxIDIyOjQ5OjMyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMDY2ODYyOiBmcm9tIGZoZXc6IGZpeCB0aGUgYWdlbnQgZm9yIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI0MWQ0YWFmN2EwNmI0NWE5ZWMwN2E1NTExYmFjNWJhZDZmZGRhMmEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMzEgMjI6NDk6MzIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IgY29tcGFyaW5nIHVuc2lnbmVkIGxhcmdlIGluZGV4ZXMgb2YgdGhlIGRpc2sgYW5kIGV4dGVuZCB0YWJsZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWE4NDM4NjUwNDA1YWUzODQ5MWYzYTVjOWEyYjEwZmM5OWIxYjljMgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzMSAyMjo0OTozMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvciBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhYjE2ODI4YWQ2OWM1NGUwNjhjMDM4YTlhOTQ0OTFmZGJjNmU3OTlmCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzMSAxMjozMDozMCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgaHJTV1J1blBhdGggb2Ygc3dhcHBlZC1vdXQgcHJvY2Vzc2VzIG9uIExpbnV4LgotICAgIAotICAgIGZnZXRzKCkgcmV0dXJucyBOVUxMIGJvdGggd2hlbiAvcHJvYy9QSUQvY21kbGluZSBpcyBlbXB0eSAoPSBzd2FwcGVkIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrIC9wcm9jL1BJRC9zdGF0dXMgaW4gYm90aCBjYXNlcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMDdkNTliZDkyY2MzNGJjOTY5NjRiNWU3NDNjZmRlZTc5ODc1YjdhCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzMSAxMjozMDozMCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgaHJTV1J1blBhdGggb2Ygc3dhcHBlZC1vdXQgcHJvY2Vzc2VzIG9uIExpbnV4LgotICAgIAotICAgIGZnZXRzKCkgcmV0dXJucyBOVUxMIGJvdGggd2hlbiAvcHJvYy9QSUQvY21kbGluZSBpcyBlbXB0eSAoPSBzd2FwcGVkIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrIC9wcm9jL1BJRC9zdGF0dXMgaW4gYm90aCBjYXNlcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiYTY4ODA2ZGQwNjRmNjU1NTM2ZDZmNjkzNzFjNjk5ZTYxNjIwNTZlCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzMSAxMjozMDozMCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgaHJTV1J1blBhdGggb2Ygc3dhcHBlZC1vdXQgcHJvY2Vzc2VzIG9uIExpbnV4LgotICAgIAotICAgIGZnZXRzKCkgcmV0dXJucyBOVUxMIGJvdGggd2hlbiAvcHJvYy9QSUQvY21kbGluZSBpcyBlbXB0eSAoPSBzd2FwcGVkIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrIC9wcm9jL1BJRC9zdGF0dXMgaW4gYm90aCBjYXNlcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5MWNkYjgxNWJiMzY1NzU3Zjg0YzIyMzRkOWU1ZjU3NjNhYzRiMDRmCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDI2IDE2OjEyOjQ4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFkMjBkNzMzZjE3NDA2MjQ3YzgwYzMwYzQ3Yjg4MjgzOWUwZWFjMDQKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMjYgMTY6MTI6NDggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTVhOWQxZThhMjRmMDJkZmU0ZTk3YWYwNGQ2ZjVlMGI1OTBhNTJhZQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAyNiAxNjoxMjo0OCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28gdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0Yjk1NmM0NzBhYzdlNDkzOTllN2UxMjM5Nzk4ZTJhMDYwZmU1OGJhCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDI2IDE2OjEyOjQ4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE5YmMzNGY2ZjQ1MGI0NzUxZGVmOGI4NTcyYjI1YzBmNzkxOGFkNWUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMjYgMTY6MDY6MTEgMjAxMSArMDAwMAotCi0gICAgQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZCByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzNzRiODFmZmZkYTQ0NmY2NDk5ZGVjYjZmMDQ4YjE5MjM4YTlmNmI0Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDI2IDE2OjA2OjExIDIwMTEgKzAwMDAKLQotICAgIEFwcGxpZWQgKHJvdWdobHkpIHBhdGNoIDMyOTkzNzAgdG8gYXZvaWQgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWQzMzEzNzVkODYyODJlMjNiNGFlNjAyMDUyNzUzYWE0YTRmODdhYwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAyNiAxNjowNjoxMSAyMDExICswMDAwCi0KLSAgICBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkIHJld3JpdGluZyBleGlzdGluZyBhdXRoa2V5L3ByaXZrZXkvZXRjcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGFhNWVjOGQxOWRlMjk1MTUxMDMyNjM5ZTEzOGU4Yjc2NTg3ODY2YmMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMjYgMTY6MDY6MTEgMjAxMSArMDAwMAotCi0gICAgQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZCByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5NjJjOWViMzk2NTU2M2M1YTMxM2Q0MWQ4OTkyOTk4ZDdlNjAzMzUxCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgTWF5IDI1IDE5OjQ0OjE1IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMzA2NDc2OiBmcm9tIHRpbnlweXJhbWlkczogZml4IG1lbW9yeSBsZWFrIGluIHRoZSBzd3J1biBjb250YWluZXIgbG9hZGluZwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVjMmJiNDQ1MTkwODA1NDY2OWZkMmZiMWQ0NDEyNmE1NzkwNTllNTUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBNYXkgMjUgMTY6MTc6MDQgMjAxMSArMDAwMAotCi0gICAgRm9sbG93LXVwIGZvciByMjA0NDk6IHVzZSBORVRTTk1QX1BSSW8gInUiIGZvciBwcmludGluZyBzdWJpZHMgaW5zdGVhZCBvZiBvbmx5IE5FVFNOTVBfUFJJby4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4ODAxMzJkYWYyZjUzZGFkZmU0MWIyMmFkMzIyZDcwNjUwYTgyY2MxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgTWF5IDI1IDEzOjA3OjIzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbzogTGluayB3aXRoIGdkaTMyLmxpYiBpZiBPcGVuU1NMIGhhcyBiZWVuIGVuYWJsZWQgYmVjYXVzZSBnZGkzMi5saWIgaXMgYSBkZXBlbmRlbmN5IG9mIE9wZW5TU0wuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjNlZjJmMTA4NDNjOWE4Nzc4OWE2MTRhYmRmNTI2MzUwYzRkODQ0MwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIE1heSAyNSAxMzowNzoyMyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW86IExpbmsgd2l0aCBnZGkzMi5saWIgaWYgT3BlblNTTCBoYXMgYmVlbiBlbmFibGVkIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDliODcwMzcyYjc0YTdhZjViNzcyNmE2MDUxYjRmM2RiNTA0M2E3N2UKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBNYXkgMjUgMDk6MjQ6MDggMjAxMSArMDAwMAotCi0gICAgRm9sbG93LXVwIGZvciByMjA0NDg6IHNpbmNlIHRoZSAib2lkIiB0eXBlZGVmIGhhcyBiZWVuIGNoYW5nZWQgYmFjayBmcm9tIHVpbnQzMl90IHRvIHVfbG9uZywgY2hhbmdlIE5FVFNOTVBfUFJJbyBmcm9tIE5FVFNOTVBfUFJJMzIgaW50byAibCIuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDUwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODg1ZDFmNTVjZWZhODJkOTUzNTZlM2UzNWVjYWU4MTE1OGFmM2I1OQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIE1heSAyNSAwOToyMTowNSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogVXNlIHByb3BlciBmb3JtYXQgc3BlY2lmaWVyIGluIGRlYnVnIHN0YXRlbWVudHMgZm9yIHByaW50aW5nIHZhbHVlcyBvZiB0eXBlICdvaWQnLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDcyM2JjMzg3NTcxNzU3NDI2Yjg2MWI2YTg4NTRhNGI4ZDg5ZGNkMTUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBNYXkgMjUgMDk6MjE6MDUgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFVzZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkZTg5MDg3MGRlMDhlYWNmYjI1YWI4MThjNGQxMzUyZjVkY2MwOWM5Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgTWF5IDI1IDA5OjIxOjA1IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cyBmb3IgcHJpbnRpbmcgdmFsdWVzIG9mIHR5cGUgJ29pZCcuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzBiNGMzNjQ5ODg3OWI0OTBjMTVkNTAwMzBkMGIyYzE4ODIwMjgyZAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAyNCAyMzo0OTo1NyAyMDExICswMDAwCi0KLSAgICByZXZlcnQgT0lEIHR5cGVkZWYgdG8gdV9sb25nIGFzIGFncmVlZCB0byBvbiAtY29kZXJzIGFuZCBpbiB0aGUgYWRtaW4gbWVldGluZwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBmMmVjZDZmMDVkZWUzN2Y5M2VhOWE5YWM5ZTcyNzZkNmI0NzhkZDAKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDI0IDEyOjUxOjM5IDIwMTEgKzAwMDAKLQotICAgIEFkZGVkIE5VTEwtY2hlY2tzIGFmdGVyIG1hbGxvYwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM4OWM5NWJjY2QxMzhiZGFlZTNlMDFmMmQwZjY2MzMyOGU4ZTdlODgKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDI0IDEyOjUxOjM5IDIwMTEgKzAwMDAKLQotICAgIEFkZGVkIE5VTEwtY2hlY2tzIGFmdGVyIG1hbGxvYwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA1ODg2MjA3MDQyYWMyYzkwYWEzMTkxNjU3ODBkMTc2NzZlZDY4ZjQKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDI0IDEyOjUxOjM5IDIwMTEgKzAwMDAKLQotICAgIEFkZGVkIE5VTEwtY2hlY2tzIGFmdGVyIG1hbGxvYwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGUzYjIwY2FhYmMzMTNkODg4Y2E0Y2M5NTQ0ZTdlY2YyZTFhYjA5ZDQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAyMiAxOTozNDoxMCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBhZ2VudDogQlVHOiAzMzA1MTU3OiBGaXggaXBBZGRyZXNzUHJlZml4IGhhbmRsaW5nIG9mIElQdjYgYWRkcmVzc2VzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWIxMjVjNzEzYmUxZWNjYTYzZjJiMTY5ZDJjMTBkMWQyNGEyZDQ3NgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDIyIDE5OjM0OjEwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDMzMDUxNTc6IEZpeCBpcEFkZHJlc3NQcmVmaXggaGFuZGxpbmcgb2YgSVB2NiBhZGRyZXNzZXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNDMzMTg4MmEwYzlkZjc5ZDkxMzU0NTczODJhMjcyNWMzMDMwZjgxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMjIgMTk6MDc6NTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeCBoYW5kbGluZyBvZiB2b2lkIHBvaW50ZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyM2EyYjk0MGUyNjU2MjY4YmVmMzAwMTVmNzgyZWU2ZDAzOGY5MjY1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMjIgMTk6MDc6NTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeCBoYW5kbGluZyBvZiB2b2lkIHBvaW50ZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2ZTJiZjkxYWJhNTYyY2NhZWIxMzA0MTk4OTNhNzE3MGJiMjMxMmY5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMjIgMTk6MDc6NTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeCBoYW5kbGluZyBvZiB2b2lkIHBvaW50ZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjYWJhNjUxZjg0ZjcxMDJjYmExODFkMTk1YjU5Yzc5NzY4ZDk0NTYxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMjIgMTg6NTc6NTMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM1YTQ1ODBiOTI0ZWQ1YzQ5Y2ZmZDFiN2ZkOGU5MzJlZDE2OGVjZGIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSAyMiAxODo1Nzo1MyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTZjYWRkMDA5OGIxNmExZTlmZmE4MTM4MThiMGU5ZjhmYmJjMGViOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWF5IDIyIDE4OjU3OjUzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzIChzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5ODgxNTAwM2YzNDVlY2U5M2ZjZjgzNmZiMGMzZWE1OTk3YzhmOTAwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMjIgMTg6NTc6NTMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDMwMjQ1ZDAwZDMwY2ZjNTI2OTM5YmIyZmY3MjFiMjA3NjU0NmU4YzcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSAyMCAxNTo0MTowNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdkMmZlOWRjYWVkY2E4NjZjZGNlNjE3OGI2MDZiOGYwNjE4OWJmM2EKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSAyMCAxNTo0MTowNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU2Yzc0YzVhNDkzODYzMzBhNTgxNTY0YTZlZTE1NzliY2Y2YzUwOWUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSAyMCAxNTo0MTowNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQ1YjRiZDUzN2I2Mjc1MzRiMWM2MjE4MjE5ZmQ3NzBlYjVhNGExNTUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMTk6NDY6MjAgMjAxMSArMDAwMAotCi0gICAgdXNlICNpZmRlZiByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWNjNWE0Y2QwZDY0ODkzNWVjNzZlMDk2MTYyMjlkMGNlZWJjNDFhMAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxOSAxOTo0NjoyMCAyMDExICswMDAwCi0KLSAgICB1c2UgI2lmZGVmIHJhdGhlciB0aGFuICNpZiBmb3IgZGVmaW5lIGNoZWNrcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1ODM4MmU0ODg1ZjM4N2UzZmZjYjhmZWJhOTM2YTU3OGM2OTQ1OWVlCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDE5OjQ2OjIwIDIwMTEgKzAwMDAKLQotICAgIHVzZSAjaWZkZWYgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI1ODhkMWExZGE2ODFiMjZmMzVmMmJiZjA0OTIyNDJjZjRkODNjOTYKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMTk6NDY6MjAgMjAxMSArMDAwMAotCi0gICAgdXNlICNpZmRlZiByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOThkNjIyM2UxMGFmMGIyMDczOTVjOWE3MTE5MGRmZjZmYTg3OTU5YwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDE3OjE5OjMxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1hbjogQlVHOiAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzI2ZTdhOTM4NTFlZDY3ODQ0N2RjMzJhYjcyZmJjMWEwMDhhMTM1ZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDE3OjE5OjMxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1hbjogQlVHOiAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYWYzZGVhMTEwZDA3OWJlMTQ2OGFiYzdlMDFjZWM2YmU2YzExZTljZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDE3OjE5OjMxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1hbjogQlVHOiAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzAwZjg4ZjMzODg4ZWRkNDgwYWNjOWVjOTMxMmQ2YjYxZTE3MGE3NgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDE3OjE5OjMxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1hbjogQlVHOiAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzI5NDVhN2ExNjdiNGQ1NmUyOTQwNjI2YjcwOWFiMTExOTA1ZDIxYQotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTkgMDg6NTU6MjYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhY2UgY29uZGl0aW9uIGluIGhyU1dSdW5UYWJsZQotICAgIFRyZWF0IHRoZSByZWFkcyBmcm9tIC9wcm9jLzxwaWQ+LyogY2FyZWZ1bHksIHByb2Nlc3NlcyBjYW4gZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcuCi0gICAgKGFscmVhZHkgZml4ZWQgaW4gVjUtNS1wYXRjaGVzIGFuZCBWNS00LXBhdGNoZXMgaW4gU1ZOIHJldi4gMjAxMTUsIGR1bm5vIHdoeSBJIGRpZCBub3QgcGF0Y2ggdHJ1bmspCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjdhNTU5NTNmMGJiNTdhYTFhZWNjZjcxOGYzNGE3ZDRhZTYzYzQzZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDE5IDA4OjI2OjU3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzE4NDY5NzogRG9uJ3QgcmVmZXJlbmNlIGludGVybmFsIE1ENSB3aGVuIGl0J3MgZXhwbGljaXRseSBkaXNhYmxlZAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkwZWU3ODJjYTRlYTg1MzRiOGI0M2ZmMWRkNjdmYmE3ZDVmNTY5ZTEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXkgMTUgMTY6MjE6MzEgMjAxMSArMDAwMAotCi0gICAgRm9sbG93LXVwIGZvciByMjA0MzI6IHRlc3RpbmcvUlVOVEVTVFMgd2l0aG91dCBhcmd1bWVudHMgd29ya3MgYWdhaW4gYXMgaXQgc2hvdWxkLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQ1ZmE3MDEzNDI2MWFmNzg0NTNmMGUwMzEyM2NmYjVmYTI4Y2Q2NjMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgMTQgMTk6Mzg6MzAgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgYSB0eXBvIGluIGEgY29tbWVudC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxOTFjZGI3YjJhNmU5ODQyYWYxYjkzYjc3MmE5ZmRjYmY0YzM1YTMxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDE0IDE5OjM2OjU2IDIwMTEgKzAwMDAKLQotICAgIFJVTlRFU1RTIHdvcmtzIGFnYWluIGZvciB0ZXN0cyB3aXRoIGEgZm91ci1kaWdpdCBudW1iZXIuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDQxZTY3YmZiYzA3ZDJmNDg4NGU2MzJlZWFjNzFhOTVjYTM1N2U1NAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSAxNCAxODo0Nzo1NiAyMDExICswMDAwCi0KLSAgICBEb2N1bWVudCB0aGF0IHRoZSB1Y2Qtc25tcCBkaXNraW8gY29kZSBzdGlsbCBoYXMgdG8gYmUgbW9kaWZpZWQgc3VjaCB0aGF0IGRpc2tpb19mcmVlX2NvbmZpZygpIGdldHMgaW52b2tlZCB1cG9uIFNJR0hVUC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjYTA1Mzk5NjAyMmUzYzFkZTNlMmQ1YjU1OGZhZGY2ZDc5ZTlmZGQzCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDEzIDEyOjA1OjE5IDIwMTEgKzAwMDAKLQotICAgIEZvbGxvdy11cCBmb3IgcjIwNDE3OiByZXBsYWNlZCBhIG1hbGxvYygpL2ZyZWUoKSBwYWlyIGJ5IGEgY2FsbCB0byByZWFsbG9jKCkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2YxMTVkZjgzMzZlM2I5ZWE5NTIzMDBiM2Q0ZDEwNGViMjE0MGNkYgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSAxMyAxMjowNToxOSAyMDExICswMDAwCi0KLSAgICBGb2xsb3ctdXAgZm9yIHIyMDQxNzogcmVwbGFjZWQgYSBtYWxsb2MoKS9mcmVlKCkgcGFpciBieSBhIGNhbGwgdG8gcmVhbGxvYygpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA2ODY5NTIwODU2OTc2ZmY0NTkwYTBiYjYxYzRlOTZmMTZjMzVkNmUKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDExOjQ3OjM2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBGaXhlZCBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCIHRhYmxlcyBpbnRyb2R1Y2VkIGJ5IHBhdGNoICMzMDUzNDM2LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA1ZDNkM2E4MjMxMWJmOWI1NTM4NjIxNmYxODgxOThjZDg0OWZmZjEKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDk6MDM6MDIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiBzbm1wX2ZyZWVfc2Vzc2lvbigpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRlOTRhYjdmMGM2NTA5YjYyODJlZWZjODg4YWIwZGNmNzhlNTc1YTYKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDk6MDM6MDIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiBzbm1wX2ZyZWVfc2Vzc2lvbigpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGZmMDNiZmFkNmQwY2M1NGU1OGNlZTRkNGY4ZjY3ZmUxMjkxMDUxOGMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDk6MDM6MDIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiBzbm1wX2ZyZWVfc2Vzc2lvbigpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNjNzhkMDYyMzk3NTVjNmViYjgzMTkwM2I2Y2VkZDNlMWRiYWI1ODMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDg6MjU6MzMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogX21pYmluZGV4X2FkZCgpIG5vIGxvbmdlciByZWFkcyBwYXN0IHRoZSBlbmQgb2YgdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJheSBfbWliaW5kZXhlcy4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5MjRjYmUzZDY5M2E3OTNjMjA1MzZlODBlOTE1MTBjOTU5YWNjOWE3Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA4OjI1OjMzIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IF9taWJpbmRleF9hZGQoKSBubyBsb25nZXIgcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgX21pYmluZGV4ZXMuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYWRjZWQ0YTg0ODc2YTJlM2NiODY4N2I1ZmZhNTgzMGEzYjUwMDNhYQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwODoxMjo0NyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBOZXRUb01lZGlhVGFibGUuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjAwMTJkZWMyYzk4YmFmMWMwZTI1ZmExN2Q1YmY4OWJhY2QwYTRhNAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwODoxMjo0NyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBOZXRUb01lZGlhVGFibGUuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGQ4M2Y5NTM4MWM4MTkwZTY0Yzg5ZDIwYjc2YzQ2YWQzODhjNDIxYwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwODoxMjo0NyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBOZXRUb01lZGlhVGFibGUuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGVjZDI5OGRiY2NlZTFlMzI3Y2U2NTg1MmY5ODkyOGQ3YmMwNDFkNwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwODowODo0MSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaWZUYWJsZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkOTYyZmRhNjc3ODE0YjYzNDJhZDFiOWMzZmE4NDIyNWI1NTVjZGEyCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDEyIDA4OjA4OjQxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpZlRhYmxlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNhMzg5NDI5MDhhYzc0ZmRmMWYxZjFkZTc3OWNhNWNkZDRkZWZhMmQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgMTIgMDg6MDg6NDEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlmVGFibGUuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYWEwMzI3NjliYzNkYTgzMDJjMzhkZDlkNjJkNTNmN2YwNTRlYjJjNwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwNzozMzowMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBBZGRyVGFibGUuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGZmYTkwOGQwMmNmYWQ5ZmYzMWEyMDE4MTkyZDRhZDVmOTU5NDY3YwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwNzozMzowMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBBZGRyVGFibGUuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTIxYmRmNzE2NDQ5MGYyMWY3ZWUxZDNkZmVjNmE5ZDM4ZTI0ZGQ3OAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwNzozMzowMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBBZGRyVGFibGUuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjcxOTE0NTEyZGM4MjY4ZDhiYzQ5YmE3ZWMzOGNjMmFjZWM2NTZjMwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwNjo1NDozMyAyMDExICswMDAwCi0KLSAgICBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudCBzcGVsbGluZyBmaXg6IGV4aXRlbnQgLT4gZXhpc3RlbnQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzAwOWMxMmQ3MmJiYzJlMjc5NWQzYTZiMjJjYWI2YmEwNmU0ODUzNQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwNjo1NDozMyAyMDExICswMDAwCi0KLSAgICBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudCBzcGVsbGluZyBmaXg6IGV4aXRlbnQgLT4gZXhpc3RlbnQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmM4YWVlN2Y4YTM0ZDdkYTIyOWY0NTkwOGM4ZjMzMWU3MjU0NDIyZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSAxMiAwNjo1NDozMyAyMDExICswMDAwCi0KLSAgICBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudCBzcGVsbGluZyBmaXg6IGV4aXRlbnQgLT4gZXhpc3RlbnQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzJkMzViZDVjMzIyZDdhODUzNmExZmYzMWQ3M2U0MWY3N2M4NWI5NwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAxMCAxNTowMjo1MSAyMDExICswMDAwCi0KLSAgICBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZyBhIChjaGFyICopIGFyZ3VtZW50IHdoaWxlICh1bnNpZ25lZCBjaGFyICopIGlzIGV4cGVjdGVkLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNkYmUyNzc5OWEzZjA2NWJiZjIxMjU5OTQ2Njk2OWJlYjcyNjkwZDIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXkgMTAgMTU6MDI6NTEgMjAxMSArMDAwMAotCi0gICAgTWluR1c6IGF2b2lkIHRoYXQgZ2NjIGNvbXBsYWlucyBhYm91dCBwYXNpbmcgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxOTNlMzk4NDkyNGJkZWE5YmJiNzAzMDgwNjJiYWVlMzczMmFiYmE0Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWF5IDEwIDE1OjAyOjUxIDIwMTEgKzAwMDAKLQotICAgIE1pbkdXOiBhdm9pZCB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQgcGFzaW5nIGEgKGNoYXIgKikgYXJndW1lbnQgd2hpbGUgKHVuc2lnbmVkIGNoYXIgKikgaXMgZXhwZWN0ZWQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTRiNTIzOGQ4OGEwMjczMDZhYTkxMTU3NTgxMTFjNzg1YTRhYmFkOAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSA5IDIwOjUyOjAxIDIwMTEgKzAwMDAKLQotICAgIFVzZSBzeW1ib2xpYyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA0YjhlMjc5YTdhNzg1YTc2ZWJmNGI2NTc1ZjQxY2U2Mjk5NDUyYzYKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgOSAyMDo1MjowMSAyMDExICswMDAwCi0KLSAgICBVc2Ugc3ltYm9saWMgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzZGNiZmRkNGYxZmZlYWQ1NTI0MTQ5YjRlZmIwMDEyODY4OGUxNTA1Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWF5IDkgMjA6NTI6MDEgMjAxMSArMDAwMAotCi0gICAgVXNlIHN5bWJvbGljIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjY1ODZhZWNmYTJkMmJjNDlkZWZkM2QyMWY0NzFhYTlhM2M1NDM2ZAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSA5IDIwOjUyOjAxIDIwMTEgKzAwMDAKLQotICAgIFVzZSBzeW1ib2xpYyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVkMzM4ZjdiOTQ1OTM0NmNjMGMyNTVhYmI3MWUwOTNmZjNlYWE4MzgKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXkgOSAyMDo0Mzo1MSAyMDExICswMDAwCi0KLSAgICBJQU5BIGhhcyBmaXhlZCB0aGUgSUFOQS1JUFBNLU1FVFJJQ1MtUkVHSVNUUlktTUlCCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWJiMWM5YThmZGM0N2IzZWYzNTVjYjQyZTllMThhZDg4Y2U0OTZmYgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKLQotICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCi0gICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6Ci0gICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5Ci0gICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKLSAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKLSAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCi0gICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKLSAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCi0gICAgCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2NwotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKLQotICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCi0gICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6Ci0gICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5Ci0gICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKLSAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKLSAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCi0gICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKLSAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCi0gICAgCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTlhYzg2Mjc4YzM1ODgwMjI5MTQ3NThhMzQ1ZmI5ODJiYjVkNGVjNAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKLQotICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCi0gICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6Ci0gICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5Ci0gICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKLSAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKLSAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCi0gICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKLSAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCi0gICAgCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzRmNWQ5Yjk0YjQ4OTViYjljOWEwNTBiMWE4OGIyMDFmOTAxZjk3MwotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKLQotICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCi0gICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6Ci0gICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5Ci0gICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKLSAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKLSAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCi0gICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKLSAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCi0gICAgCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTNkYjk1ZTE2MTlkZDU3ZGZiNTVhYzc0OTRmNDhkMmFkZDU2ZDk3MwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSA3IDE1OjIyOjI3IDIwMTEgKzAwMDAKLQotICAgIFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWE4Y2UwMDc0NGU4MzIzM2Q4NTQzODUyZjg4NGFhMDM3YzExODNhMgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSA3IDE1OjIyOjI3IDIwMTEgKzAwMDAKLQotICAgIFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDk5OTQ1YmIyZjgyZWE2Y2I1MDNjNzQ4NmM2NGJlMDg3MTY0MTIzZAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSA3IDE1OjIyOjI3IDIwMTEgKzAwMDAKLQotICAgIFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTZhMWJkYWU0ZjdiZjYyNWFiNjA3YjRmMjgwNzQ3MGNkMjc3Nzc3MQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSA3IDEzOjE1OjQ0IDIwMTEgKzAwMDAKLQotICAgIFdpbjMyOiBpbXByb3ZlZCBzb3VyY2UgY29kZSBjb25zaXN0ZW5jeSBieSB1c2luZyBMUENUU1RSIGluc3RlYWQgb2YgTFBDU1RSLiBOb3RlOiB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCBVbmljb2RlIGJ1aWxkcyBhcmUgc3VwcG9ydGVkLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRlYmZjZWE0MTk2NGE4NzQyYTAyYzY4Nzg1MTI0YmMyNGRhNTA2YmUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXkgNyAxMzoxMTo0NCAyMDExICswMDAwCi0KLSAgICBSZXZlcnRlZCBhIGNoYW5nZSB0aGF0IHdhcyBjb21taXR0ZWQgYWNjaWRlbnRhbGx5IGluIHIyMDI3Ni4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4MTg2Y2YzYzNmY2NkMDIyNmEwNzYxNDY1OWYzZThmYzdkM2FlYjdhCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWF5IDcgMTI6NTQ6MTEgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgdHdvIGNvbXBpbGVyIHdhcm5pbmdzLgotICAgIChCYWNrcG9ydGVkIHIyMDIzNiBmcm9tIHRoZSB0cnVuay4pCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzc2ZTJjNzY5ODVhYjdhNDBkNmRiZWZkMmU0NzMyMzg1NzY0OTczNQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1heSA3IDEyOjUxOjA0IDIwMTEgKzAwMDAKLQotICAgIENvbW1lbnRlZCBvdXQgYW4gdW51c2VkIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNvbXBsYWluZWQgYWJvdXQgaXQuCi0gICAgKEJhY2twb3J0ZWQgcjIwMjM3IGZyb20gdGhlIHRydW5rLikKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNTg5NjllZGRiM2I2Njk4NzdkNzIyOWY3MTkwODdiYmQ3MjdkMDMzCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMjE6MzI6MDEgMjAxMSArMDAwMAotCi0gICAgTkVXUzogUEFUQ0ggMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQgbGVhc3QgY29tcGlsZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJjY2E2MTI1ZDUzOGZhYTliNTFiNzcyMTQxZjE5MmQ3YjYzY2MwY2IKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAyMTozMjowMSAyMDExICswMDAwCi0KLSAgICBORVdTOiBQQVRDSCAzMTk4NzgxOiBmcm9tIGZlbm5lcjogR2V0IGRpc21hbi9waW5nIGFuZCBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdCBsZWFzdCBjb21waWxlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjFlNzZiZWY4MWJmY2UxNmM4ZDBiYzAxZTg1NmNiNGM3NTkzMGI1YwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDIxOjMyOjAxIDIwMTEgKzAwMDAKLQotICAgIE5FV1M6IFBBVENIIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0IGxlYXN0IGNvbXBpbGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkMGYyMmRkMTBiN2EwZDNkYmY3OTVjMmQ0OGUzZmE5NjM2NmFlZjFiCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMjE6MzI6MDEgMjAxMSArMDAwMAotCi0gICAgTkVXUzogUEFUQ0ggMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQgbGVhc3QgY29tcGlsZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGZjYjhhOGQyN2MyY2MzNzlkY2UyNjNkYmVlNjcyMGQ3YjRlMDJkNzQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDE3OjQ2OjI5IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzQ3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTE1YWY5OWNiOWU2YTNiMDkyM2U2NTA0NjZmNzQ0NjRlM2I5YjVmNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTc6Mzc6NTkgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2ZjkyN2ZkNzNhZjJhNGNlYjY3ZmM0MDkwODI2YTI4NGE3ZTZmYzE5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxNzozNTo1MCAyMDExICswMDAwCi0KLSAgICBtYWtlIGRlcGVuZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDgwODBhODE4OWVkN2VlNzNjYTMyMThjODI4MGM2ODcxN2Q0NTM1ZGUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDE3OjIyOjE0IDIwMTEgKzAwMDAKLQotICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjJmYjkzZTI4NzI4YjBlOTNjMTM0Yzg4YjY1YjFkNDUzYjZlODljMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTc6MTc6NDYgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzRlMTNjYzk1YmVlNDY1NWRmMjNiYTUxNGJkMjY1Nzg4NmM5ZTRiNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTQ6MjM6MjQgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3OTMxODdhYWEwNGM4ODFmNmI1N2ZjZjM2MTI5NmI1MmE5NDBlMWY4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxNDoyMTo0NSAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE0NjZlMTVlNTIzODA5NjVmODQ0YzZkOThiM2ViMjU3ODk5YTRjZTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDE0OjE5OjU3IDIwMTEgKzAwMDAKLQotICAgIG1ha2UgZGVwZW5kCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZGVjN2Q0N2NhMzc2N2MzN2QxNzk4MWYxY2Y5ZTU4MGFlMmZlMDIxNAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTQ6MDI6MDQgMjAxMSArMDAwMAotCi0gICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZWMxYzkyOTE2N2FkYjNkOTZiNDFlYWMyNDM1MzQ5NmMzMzcxYjA4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxMzo1OToyMCAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxYTAxNDUyOWM1YzRhMDdjODQwN2U5NTVhN2YxZmU2ODZjYjdlZTdjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxMzo1MDowNiAyMDExICswMDAwCi0KLSAgICBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwgY29uZmlndXJhdGlvbjoKLSAgICAtIGJyb2tlbiByZW1vdmFsIG9mIE1pY3Jvc29mdCBETEwKLSAgICAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWQwOTFjNTc5MjgyNmUzOWVjNzJiNmJiZmI1YzcwNzdhNGE3ZDhlYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTM6NTA6MDYgMjAxMSArMDAwMAotCi0gICAgRml4IGluY29tcGxldGUgdW5pbnN0YWxsIGNvbmZpZ3VyYXRpb246Ci0gICAgLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMCi0gICAgLSByZW1vdmUgYXNzb3J0ZWQgbmV3IE1JQnMgYW5kIGhlYWRlciBmaWxlcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGRhYzEwMmJkNWI2M2EyMTE4MWE4MDMwYWRhZjVmZjk2YjlmODI2YzMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1heSA2IDEzOjUwOjA2IDIwMTEgKzAwMDAKLQotICAgIEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbCBjb25maWd1cmF0aW9uOgotICAgIC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTAotICAgIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmYzNiNDE2Nzk0Y2Y3MjkyMmY4YjJkNjM2YmJlZDM3N2NhMWEzNmVkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxMzo1MDowNiAyMDExICswMDAwCi0KLSAgICBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwgY29uZmlndXJhdGlvbjoKLSAgICAtIGJyb2tlbiByZW1vdmFsIG9mIE1pY3Jvc29mdCBETEwKLSAgICAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjNiMTM3MjViN2JkNjRhYzk0OGQ5NzBkOWZlOTY1Mjk4OGVhNDExOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTI6NTg6MjggMjAxMSArMDAwMAotCi0gICAgU3VwcG9ydCBUYXIvR1ppcCBjb21tYW5kIHBhdGhzIGNvbnRhaW5pbmcgc3BhY2VzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjRlYmZhNDgyMDRmODM4NDZhNzE2NjJkYjkyMWQ4M2M5NzMwYmQ2YQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTI6NTg6MjggMjAxMSArMDAwMAotCi0gICAgU3VwcG9ydCBUYXIvR1ppcCBjb21tYW5kIHBhdGhzIGNvbnRhaW5pbmcgc3BhY2VzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWVjMTc4NzZhNjUzZmQwNTJmZjYyNDI0YTg3OTU4ZmE4ZDAyOTQ0MgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWF5IDYgMTI6NTc6MDcgMjAxMSArMDAwMAotCi0gICAgUmVwb3J0IEdaaXAgY29tbWFuZCBjb3JyZWN0bHkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyYTRjMmFhMTdjMWFhYjE5ZjdiZDJjMGNmYzEyMTFhNzE0Y2MyYTU1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXkgNiAxMjo1NzowNyAyMDExICswMDAwCi0KLSAgICBSZXBvcnQgR1ppcCBjb21tYW5kIGNvcnJlY3RseQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDMzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDcxMDQzNGM0ZTc1MTFlMjY2YjdlZWQ1YWY1MzJlMjNkYzQ5NWM5N2EKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXkgNSAyMTo0ODoyNCAyMDExICswMDAwCi0KLSAgICBGaXggZm9yIERyYWdvbkZseSBCU0QgKGRvZXMgbm90IGRlZmluZSBJUF9TRU5EU1JDQUREUikKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3ZjdjZDc5NmUwOGQ5NDIxZjBjOTA3YTk3ZWM4OTYzNmE5NzU2YTg4Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWF5IDUgMjA6Mjk6MzggMjAxMSArMDAwMAotCi0gICAgRml4IHNwZWxsaW5nIG9mIFNPX1JFQ1ZEU1RBRERSCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzFmYjM3MjI5MTQ3NDFmYTk5OGU2YjdjZWU5Y2U4ZTA3Y2Q0NzAwZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSA1IDA2OjA3OjUxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmM1MjU4ZGUyMDMwMjI4YjM2OWUxM2QyYTQ3NDhjODU3YTBhNGI1ZQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSA1IDA2OjA3OjUxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzc5Y2RmM2E5NmNmMjdmNDdmNDExMjIzYjUzZjgwMDVmMDQzMmExMQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1heSA1IDA2OjA3OjUxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjY3YzE1MGZiMDVlZDM4ZGY0NGY4YjUyNjA5MWQ2ZTliODhkOWYzMAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzIDE5OjE1OjI3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEd1YXJkIG5ldHNubXBfdWRwX3JlY3Zmcm9tKCkgZXRjLiBkZWNsYXJhdGlvbnMgY29uc2lzdGVudGx5LgotICAgIENIQU5HRVM6IFdpbjMyOiBCdWlsZHMgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTAuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWViZWE2ODNhODAyNjEzN2E3MDhlNWNjNDk5NmRiYWE0MTU1ODA5MAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzIDE4OjU1OjAyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEd1YXJkIG5ldHNubXBfdWRwX3JlY3Zmcm9tKCkgZXRjLiBkZWNsYXJhdGlvbnMgY29uc2lzdGVudGx5LgotICAgIENIQU5HRVM6IFdpbjMyOiBCdWlsZHMgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTAuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDk4MWU2MDBhNjJkNTI0YmJhMGZjODc4NDQzNWQ3NmQyNzVkN2YzMwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzIDE1OjI5OjQ2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjNlYTM0MWZiMTk0NGRjNmE2Mzk2YWRkNzJhYzM5ZjU3OTRhMmQ2OQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzIDE1OjI5OjQ2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDE3NjE1MzdiMTFiNzBiYTlmNWM1NWQ2OGQwM2IxNGJmZTMyOTkyNQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1heSAzIDE1OjI5OjQ2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTI5MDBjNDVkMWQ5MjdlMWQ4OTE4MDBhMTQyMmE5MjJiMzc2ZDg1YwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSAyIDExOjIyOjM0IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cgZW52aXJvbm1lbnQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDIwNWY1MzgyOWE3MjViNWI1ZWU4MzVkNzkxOGE3ODM1YjI2YWRjNgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSAyIDExOjIyOjM0IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cgZW52aXJvbm1lbnQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGZkN2IwNjA2OTliOTA0N2ZjYWM5YTE1ZDZjNGRlMWMwOTQ0YzVjMAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSAyIDExOjIyOjM0IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cgZW52aXJvbm1lbnQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmUwMDkxNGQ0MDhiMGVmOWE0NWQyYjMxN2IwMzMyOWU4MTQ1NjU4NgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSAyIDExOjEzOjIzIDIwMTEgKzAwMDAKLQotICAgIFdpbjMyIERMTCBidWlsZCBmaXhlcy4KLSAgICAoQmFja3BvcnRlZCByMjAxODQgZnJvbSB0cnVuay4pCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjU5YzIyNDg0M2U2ZGQ3MTNhZTY3NzY4OGQ0MTdiMDA3OGIwYTM3MAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIE1heSAyIDExOjEzOjIzIDIwMTEgKzAwMDAKLQotICAgIFdpbjMyIERMTCBidWlsZCBmaXhlcy4KLSAgICAoQmFja3BvcnRlZCByMjAxODQgZnJvbSB0cnVuay4pCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTc4NjQyMDdmODg4MjMwZGU2NzlhY2ZkYTFmZDliNjU3ZDc5MjYxMAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAyOSAxMToxNzoxMSAyMDExICswMDAwCi0KLSAgICBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZSBjb2RlIGNvbW1lbnRzIGluIHNubXBsaWIvd2luc2VydmljZS5jLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDI3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU3YjMzZjQzZDBjMzEyNTE2MmFiYmQyNjRkN2UxZmEzZmE0MDYzMDIKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMjkgMTE6MTc6MTEgMjAxMSArMDAwMAotCi0gICAgU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjMTc2MjJlZTdlZTgwNmYwMmU0ZWE5OWQ2NGNjN2VhYmNkNDYwOGQ0Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgQXByIDI5IDExOjE3OjExIDIwMTEgKzAwMDAKLQotICAgIFNwZWxsaW5nIGFuZCBncmFtbWFyIGZpeGVzIGZvciB0aGUgc291cmNlIGNvZGUgY29tbWVudHMgaW4gc25tcGxpYi93aW5zZXJ2aWNlLmMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzExYWRlMjNkZTRhMDAxNGZlMGZjMjNjZjgzZDA3N2NkNjYzYWQwNQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEFwciAyNyAyMToxNjoyMyAyMDExICswMDAwCi0KLSAgICBEb24ndCBmcmVlIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDI0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVkZTI0Njg5NDYxYjc1YzQ0MWEzNmEzODRhNmM1NTk3MjNkZGUyZDMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBBcHIgMjcgMjE6MTY6MjMgMjAxMSArMDAwMAotCi0gICAgRG9uJ3QgZnJlZSB0aGUgaWZYVGFibGUgcm93IGZvdW5kIG9uIGxvYWQgZmFpbHVyZSBhcyB3ZSBkb24ndCBvd24gaXQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxYWYwOGUxZDYwOGI3YmQxMzM2MWVhZDVjNDJmNGM0N2EyODNiNTk5Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgQXByIDI3IDIxOjE2OjIzIDIwMTEgKzAwMDAKLQotICAgIERvbid0IGZyZWUgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjM3M2VmMDlhZGQ1YjJhMmNkMWQ4ZTEzNmM2NzRlODY5MTBiOTBhNQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEFwciAyNyAyMToxNjoyMyAyMDExICswMDAwCi0KLSAgICBEb24ndCBmcmVlIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDQwYWJkOGU1YWIxMWEwN2M0OTZhYjI1ZjFhZDU0Y2MzZTU4MzI3YTQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEFwciAxNyAyMDo1Njo0OCAyMDExICswMDAwCitjb21taXQgODVmODkzZTJiNjA1ZTY3ZjliZDA0NDNjNzRlMmVkMjY5YWE2ODU2NAorQXV0aG9yOiBOaWtpIERlbmV2IDxuaWtpX2RAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTm92IDE3IDIyOjQyOjMyIDIwMTEgKzAxMDAKIAogICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzMTc1NjQwOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpCiAgICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTgzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFRoaXMgaHVuayBmZWxsIG9mIHdoZW4gdGhlIHJlc3Qgb2YgdGhlIHBhdGNoIHdhcyBtZXJnZWQuCiAKLWNvbW1pdCBkMmY2ZjU1MTM2YjM5ODNmYWIxNjQwYzAzMWQ1ZTdiZjMyYTQ4NTM1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBBcHIgMTcgMjA6NTY6NDggMjAxMSArMDAwMAorY29tbWl0IDVjOTEzZTU0NjU2YWUwMDk2YjFmZWI2ZGE5OGI1ZmM5Y2E4MWYyNzYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MzM6MDcgMjAxMSArMDEwMAorCisgICAgRGVmaW5lIHRoZSBmdWxsIE5ldEJTRCBoaWVyYXJjaHkgZG93bndhcmRzCisKK2NvbW1pdCBiODgxODQxYmQwNDkzZGQ3MWQ2MzI1OWJkZGVkNDQ5YjA2ZjAyYzMyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjMwOjMzIDIwMTEgKzAxMDAKKworICAgIEZpeCBzaXplX3QvaW50IG1pc21hdGNoZXMKKworY29tbWl0IGNhMjk0Y2Y3NWJiYzhlOTBkYmY0NGVlNDA0Nzg5MzVlOTFkYjE0ODcKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTg6MDMgMjAxMSArMDEwMAorCisgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKKworY29tbWl0IGNkMzJjMmRmZjA2YjliNDUyY2MxOGQ1NTJkMmYyMjM0MDkyYzgyOWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTc6MDkgMjAxMSArMDEwMAorCisgICAgRml4IGZvcm1hdCB3YXJuaW5nCisKK2NvbW1pdCA4ODMxMzZjMmIyZmEwNzM5ZjQzN2E4Y2ZiNjYxNGFjY2M3NmUyNjhlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE1OjU4IDIwMTEgKzAxMDAKKworICAgIE1vcmUgbmVlZHMgZm9yIE5FVFNOTVBfUFJJbyBmb3JtYXQgc3BlY2lmaWVyCisKK2NvbW1pdCBiODA4NGE3Y2NjOTA5YjZkNmRiN2MwZThlNTk2ZDc4NjcxZjU2NzhiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE0OjI2IDIwMTEgKzAxMDAKKworICAgIEZpeCB1c2luZyBjaGFyIGFzIGFycmF5IGluZGV4IChjdHlwZS5oKQorCitjb21taXQgODQ1MjllNjMyMGE4OWQ5N2YxMzE0YWViYWQ4MDYyNTVkMmExYjE4YworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzowMDo1NyAyMDExICswMTAwCisKKyAgICBGaXggbWlzc2luZyBmb3JtYXQgZm9yIEZyZWVCU0QgNAorCitjb21taXQgNGJkMDM1Mjk1NWEyNTUxYmZlMDIzMDhkZDEzNGI5MTI4Yzk4YjllOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMjo1OTozNiAyMDExICswMTAwCisKKyAgICBGaXggcGFyYW50aGVzaXMgcHJvYmxlbQorCitjb21taXQgZmU2MjY5YjE5MDBjZjQ0ZGMyN2ExOTlhNzYxZDE1YTAxYzNmMzA5MgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMjo1ODozNCAyMDExICswMTAwCisKKyAgICBGaXggc2l6ZV90L2ludCBtaXNtYXRjaGVzCisKK2NvbW1pdCBhNGRiOWY5ZmMxM2QyMWVjZmY0ODhlYjQxMDM3NmVkZGE2YzI4MjMyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDEzOjQzOjM0IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCAzOTBjMDExNGM4ZWMwYmRiMjdiMDhiNmY3NGUzZjZlZjNhNjI5ODFiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDEzOjM3OjQ5IDIwMTEgKzAxMDAKKworICAgIEZpeCBmb3JtYXQgc3BlY2lmaWVycyB0byBhdm9pZCB3YXJuaW5ncworCitjb21taXQgMjVjZmMxOTYyYWU1NzZjY2IxNTU4ZGExZTNlZjhiNmMxN2Y2M2MxNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAxMToyNzo1MyAyMDExICswMTAwCisKKyAgICBSZWFsbHkgdXAtdG8tZGF0ZSBtaWJzCisKK2NvbW1pdCAwZTg2Yzc4MWYzOTg5YmYwMjJjODk5M2ExMTg2MTdiNzRhNzU0MjBjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDA5OjE3OjE5IDIwMTEgKzAxMDAKKworICAgIG1lbW9yeV9saW51eDogZ2V0IFNobWVtIGZyb20gL3Byb2MvbWVtaW5mbyBmb3IgMi42IChvciBuZXdlcikga2VybmVscworCitjb21taXQgYmYyNjRkMTVkZWQ3YWNiYmYyZTM4NzFiOThmZDFmY2VmNDNkOWVjMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNjoxNiAyMDExICswMTAwCisKKyAgICBtZW1vcnlfbGludXg6IGNsb3NlIHNvY2tldHMgaW4gZXJyb3Igc2l0dWF0aW9ucworCitjb21taXQgNTdmZjhhNDBiYWU1ZDliY2FkMTYwODkxNDJhOWNmMzI4YzlmYTFmNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNDo1NyAyMDExICswMTAwCisKKyAgICBkaXNtYW4vcGluZywgZGlzbWFuL3RyYWNlcm91dGU6IENsb3NlIHNvY2tldHMgaW4gZXJyb3Igc2l0dWF0aW9ucworCitjb21taXQgOGEyNTAyYTE1YzMyMTdiOTU5MzlhM2M4MzYxNjdkMjMwYWMzNWYwMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxMzo1MyAyMDExICswMTAwCisKKyAgICBVcC10by1kYXRlIGxpc3Qgb2YgUkZDcyB3aXQgbWlicworCitjb21taXQgZGNkZDcwMjExMWQ4ZGE1ZjUzODA0Y2ZjZjBkZmRhZDczMTQ2OGJkZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBOb3YgMTUgMTA6NTc6MzQgMjAxMSArMDAwMAorCisgICAgRG9uJ3QgdHJ5IHRvIGluc3RhbGwgYW4gZW1wdHkgbGlzdCBvZiBtYW4gcGFnZXMgKE1BTjMpCisKK2NvbW1pdCBiYTYxOTgwNGU1OTc4YThkZjc1NDg0NGVmY2NhNTJiNjliNTAxNWZhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTm92IDE0IDEzOjM0OjIwIDIwMTEgKzAxMDAKKworICAgIE1pbkdXOiBNYWtlIHN1cmUgdGhhdCB0aGUgYmFja3NsYXNoZXMgaW4gdGhlIHBza2lsbCBtZXNzYWdlIGFyZSBkaXNwbGF5ZWQuCisKK2NvbW1pdCA5MjNlZWNjNTA3Zjc1MDQzYjYwYzVlNjgwNTNhNGYzOTZhYjBiMGQyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTm92IDE0IDEyOjM2OjM4IDIwMTEgKzAxMDAKKworICAgIENvbXBpbGVyIHdhcm5pbmcgZml4IGZvciBzeXN0ZW1zIHdoZXJlIHVpbnQ2NF90ID0gdW5zaWduZWQgbG9uZyAoZS5nLiBSSEVMIDYuMS94ODZfNjQpCisKK2NvbW1pdCA0MzRiZmMxZjc0NTc1NTBiNmY4N2Q1YmNkNTExMjc2YjI3MGI1OTY0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE5vdiAxNCAxMToyMjo1MyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogZnJvbSBNYXJ0aW4gV2lsY2s6IGZpeGVkIHNubXBkIGNyYXNoaW5nIHdpdGggJ3NlbGVjdDogYmFkIGZpbGUgZGVzY3JpcHRvcicuCisgICAgCisgICAgT24gMzItYml0IHN5c3RlbXMsIHNubXBkIGRpZXMgd2l0aCBhZm9yZW1lbnRpb25lZCBtZXNzYWdlIHdoZW4gdXNpbmcgZmlsZSBkZXNjcmlwdGlvbnMgPiAzMiwgZS5nLiB3aGVuIGhhdmluZyA+MzIgQWdlbnRYIHN1YmFnZW50cy4KKworY29tbWl0IGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMTEgMTk6MDE6MjEgMjAxMSArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yIGNvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworCitjb21taXQgZWFjYTc5ODNlMzY1NWFiNjk2ZmNjNDQ2MWNhMGNlZGJhYzZjZTY5YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxOTowMDoxMiAyMDExICswMTAwCisKKyAgICBOZXRCU0QtNjogT25lIG1vcmUgaW5zdGFuY2Ugb2YgdGltZXNwZWMgcmVwbGFjaW5nIHRpbWV2YWwKKworY29tbWl0IDhhZDZjNTNmZGVjNWFkZWFlNGU1MmYxNzUxZWNlYzRhMzQ1YmFiMDUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMTEgMTg6NTk6MDEgMjAxMSArMDEwMAorCisgICAgRml4IGJ1aWcgIzM0MzY1Mjc6IGFycF9uZXRsaW5rOiBmaXggZHlpbmcgcmVsb2FkIG9mIGNhY2hlCisKK2NvbW1pdCAzNzhmZmVkMDNiYTc5YTgzNDZkNmM2Mjc4MWUyZGRmNWNlOTJhNDc4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE4OjU1OjQzIDIwMTEgKzAxMDAKKworICAgIEZpeCBidWcgIzM0MzY1Mjg6IHN3aW5zdF9wa2dpbmZvOiByZWNvdmVyIGZyb20gTlVMTCByZXR1cm4gZnJvbSBvcGVuZGlyCisKK2NvbW1pdCBkN2FkOGY1ZjlmM2Y2N2YxNmY2NWMyNTE1ZDExZTE5NGQyY2RkMTJjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTm92IDEwIDE0OjA0OjQxIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IEN5Z3dpbjogTWFrZSBkYXRlX25fdGltZSgpIHByb2R1Y2UgdGltZSB6b25lIGluZm9ybWF0aW9uCisKK2NvbW1pdCBiYTM1YzUwYjJmNDU5YmQ5YzExZWQ1OWNjN2QxYjE2MjE1NjQ0ZmEzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTm92IDEwIDE0OjE3OjA0IDIwMTEgKzAxMDAKKworICAgIFJlcGxhY2UgQUNfVFJZX0xJTksoKSBieSBBQ19MSU5LX0lGRUxTRSgpCisgICAgCisgICAgTm90ZTogdGhlc2UgY2hhbmdlcyBkbyBub3QgYWZmZWN0IHRoZSBnZW5lcmF0ZWQgY29uZmlndXJlIHNjcmlwdC4KKworY29tbWl0IGY2MTViZjI0ZjVkMGYyM2NlOTMwMWRhNTU2MTg0ZDY0NjA3NDA0NTYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgOSAyMDozMjo0OSAyMDExICswMTAwCisKKyAgICBGaXMgQnVnICMzNDM0ODI0OiBTSUdTRUdWIHdoZW4gcmVhZGluZyBkaXNrIGRpcmVjdGl2ZSBhZnRlciBTSUdIVVAKKworY29tbWl0IGE5NGExNzlkOTM0MGY1MWZhN2MyMzQzMTYzMGJjMGZmZDZkNzU5ZTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgOSAyMDozMDo1MSAyMDExICswMTAwCisKKyAgICBGaXggYnVnICMzNDMzNjE2OiBkb250IHRyZWF0IERhdGVBbmRUaW1lIGFzIGEgc3RyaW5nCisKK2NvbW1pdCBiMjllNDE2NDUzMWQyNThmZTM0YTZmZTJiOWUxZWM2MGM1NmY5NTQ0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gTm92IDcgMDE6MjU6NTcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQorCitjb21taXQgZTIyMWU2NWZkYzFjNjhmMTk2ODY1MTcxN2RjYzljY2ZiNjQxNDc4MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE5vdiAzIDE1OjA1OjAwIDIwMTEgKzAxMDAKKworICAgIEZpeCB3YXJuaW5ncyBhYm91dCBjb252ZXJ0aW5nIHNvY2thZGRyX2luICogaW50byBzb2NrYWRkciAqLgorICAgIAorICAgIFRoaXMgaXMgYSBmb2xsb3ctdXAgZm9yIGNvbW1pdCBhMGFmMzg1LgorCitjb21taXQgMmU3ZTllZGEwYjBkNjJhNzY0NWE5YThmNzBlZjNmYjZmM2RkNjk0MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE5vdiAzIDExOjE3OjQ4IDIwMTEgKzAxMDAKKworICAgIEZpeCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmdzLgorCitjb21taXQgMzQ2MmViY2RkMGI3YzI5OGNiMTVjMzA5OTczNmY0Zjk1MjI1Nzg0NgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCAyOCAxNjowNzoxNSAyMDExICswMjAwCisKKyAgICBSZW1vdmUgdGhvc2Ugc3VwZXJmbHVvdXMgcGFyZW50aGVzZXMgdGhhdCB0cmlnZ2VyIGEgY2xhbmcgd2FybmluZy4KKworY29tbWl0IDNlNWZlZGQzZTdkMWVmMzE2ODM2MDRiZjczZGM1NmU5NDRjYWQzNDkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTm92IDMgMDk6NDU6MjcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgYWZ0ZXIgMzAgZGF5cyBvZiB1cHRpbWUuCisgICAgCisgICAgQWZ0ZXIgMzAgZGF5cywgdmFsdWVzIGZyb20gL3Byb2Mvc3RhdCAob24gTGludXgpIGNhbiBnZXQgYmlnZ2VyIHRoYW4gMzJiaXRzIGFuZCBzbm1wZCBjYWxjdWxhdGlvbnMgbWlnaHQgcmVuZGVyIGNvdW50ZXJzIGxpa2Ugc3NDcHVVc2VyIG5lZ2F0aXZlIG9yIHplcm8sIHdoaWxlIHRoZSByZWFsIHZhbHVlIGlzIGhpZ2hlci4gVGhlcmVmb3JlIHRoZSBjb3VudGVycyBzaG91bGQgYmUgdHJhY2tlZCBhcyB0aGUgbGFyZ2VzdCBpbnRlZ2VyIGF2YWlsYWJsZS4KKworY29tbWl0IDBmYzgyMjFiMjQ5ODhjNGFlNjE4MGVkNDJiODZiOTg1MmZkNTg2YWQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMiAyMjo1OTowOCAyMDExICswMTAwCisKKyAgICBkc2tJbmRleCB3YXMgb2ZmIGJ5IG9uZQorCitjb21taXQgYTViMjg4MjllNjRkNWYzYjg3ZTRiOWIxZWY4Y2MyMDRmMzNhNjFiNworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAyIDIxOjI1OjA3IDIwMTEgKzAxMDAKKworICAgIFNvbGFyaXMgbmVlZHMgJEFXSyB0byBnZXQgYSB1c2FibGUgbmF3aworCitjb21taXQgMjgwMWEyMTM5ZjI3MDIxZTFhYjE1ZTM2MmUyZDNkNjI0ZmZhYTQ5NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE9jdCAzMSAyMjo1NTo1MyAyMDExICswMTAwCisKKyAgICBQYXRjaCAjMzQwNjM2NDogRml4IHVuc3RhYmxlIGRhdGEgZm9yIE5ldEJTRC4KKworY29tbWl0IDgyMWE1OGQxMTJkN2FjNDk1MTQ5ZTI2MmQ3MDQ0MTJiYTI4MDA0MzgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMzEgMjI6NDM6NTIgMjAxMSArMDEwMAorCisgICAgRml4IGlwdjYgc3RhdGlzdGljcyBsb29waW5nIHRvbyBmYXIgd2hlbiBzY2FubmluZyBpbnRlcmZhY2VzLgorICAgIEZpeCBUQ1Agc2Vzc2lvbiB0YWJsZSByZXBlYXRpbmcgZGF0YSBmcm9tIGZpcnN0IGVudHJ5IGZvciBhbGwuCisKK2NvbW1pdCAzNDk1OTFkMDNlMTdhNTViNDNlYWNjNmE2ODdiMDJmZDhkNGU5NTI4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gT2N0IDMxIDA4OjU5OjM3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgcGVybCBzdXBwb3J0IHdpdGhvdXQgc3VwcG9ydCBmb3Igb3BhcXVlIHR5cGVzLgorCitjb21taXQgMWVjNzExMGU3MmJjZTE1NjFmNzQ2NTE3NDU5ZDZmMDQzMDE2YjYwZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAzMCAxOTowNTozMCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBNYWtlIHRoZSBhc24xIHRlc3QgcGFzcyBldmVuIGlmIHN1cHBvcnQgZm9yIG9wYXF1ZSB0eXBlcyBhcmUgcmVtb3ZlZC4KKworY29tbWl0IDZkMjY5MThhZjU1YWEzNjYyYTcyMDU0MmRlNzdiYmYzOWIwYTNlOTEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBPY3QgMjkgMDg6MzQ6MzMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERpc2FibGUgdGhlIHN1cHBvcnQgZm9yIGludGVnZXI2NCBpbiBwYXNzIHNjcmlwdHMgaWYgY29tcGlsaW5nIHdpdGhvdXQgb3BhcXVlLXNwZWNpYWwtdHlwZXMuCisKK2NvbW1pdCAyOWJmNjlkNzA0MjRmMzU5ZDljODdmMDdhOTY0YTA5OTQxNTY0OWE1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDEzOjAyOjI1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZF9zcWw6IEF2b2lkIHRoYXQgYSBsaW5rZXIgZXJyb3IgaXMgdHJpZ2dlcmVkIG9uIHN5c3RlbXMgd2hlcmUgbXlfcHJvZ25hbWUgaXMgbWlzc2luZyBpbiBsaWJteXNxbGNsaWVudCAoZS5nLiBGZWRvcmEgMTUgYW5kIDE2KS4KKyAgICAKKyAgICBUaGlzIGlzIGEgYmFja3BvcnQgb2YgY29tbWl0IDlmNjUzZjcuCisKK2NvbW1pdCAyY2M5NTA0YjliYjg2MjViOTRiZTZjZGE3ZTYwOTkzZDA1OWNkOTI4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDI2IDA5OjAxOjIzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzQyODUwNjogRml4IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigpCisgICAgCisgICAgVGhpcyBwYXRjaCBzaG91bGQgZml4IHRoZSByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA4NWQ5NmM0IChNYXkgMTMsIDIwMTEpLgorCitjb21taXQgOWI0MjdiMzUzZjFjZWI4ZmU4N2U2ZmM4ZWQzYjZjZmFiM2NlN2YyMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE9jdCAyNyAwODoyMDowMCAyMDExICswMjAwCisKKyAgICBNaW5HVzogQXZvaWQgY29uZnVzaW9uIGJldHdlZW4gTWluR1cncyBraWxsLmV4ZSBhbmQgdGhlIFN5c0ludGVybmFscyBwc2tpbGwuZXhlCisKK2NvbW1pdCAyYzQ1ZjkyY2ZjYjViMDVlMDQ5MjI2YTVhNzg4M2EwYjEwNjAxMWFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDI2IDEwOjQyOjI5IDIwMTEgKzAyMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBhYm91dCBwYXNzaW5nIGEgY29uc3QgcG9pbnRlciB0byBhIGZ1bmN0aW9uIGFjY2VwdGluZyBhIG5vbi1jb25zdCBwb2ludGVyLgorCitjb21taXQgMjc1ZDIzZWRmZGViZTA1NzdiMDg0MjFlNGM2YzkzNmFlMzliN2ZkYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCAyNiAwOTozMzowOSAyMDExICswMjAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgc2V0LWJ1dC1ub3QtdXNlZCB2YXJpYWJsZXMKKworY29tbWl0IDQ0OTVlMTdjMDc4YWM2OTk3YTljN2ZhMWE4OGRiMDY0NGU5MTk0OTEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgMjYgMDk6MzI6NDYgMjAxMSArMDIwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IGNhc3RpbmcgYXdheSBjb25zdAorCitjb21taXQgMTM5NTJmNmJlZTlmNDA4ODY3YWI2ZDJmZGZkZGU0ZjI4NDA3NDk1NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgMjYgMTQ6MDU6MTYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogZnJvbSBTaWRkaGVzaCBQb3lhcmVrYXI6IHByb3Blcmx5IGNsZWFuIHVwIG9sZCByZXF1ZXN0cyBpbiBhIHN1YmFnZW50IHdoZW4gd2UgcmVjb25uZWN0IHRvIG1hc3Rlci4KKyAgICAKKyAgICBBbiBzbm1wIHN1YmFnZW50IGxpbmtlZCBhZ2FpbnN0IG5ldC1zbm1wLWxpYnMgbWF5IGNyYXNoIGlmIGl0IGhhbmRsZXMgYQorICAgIHJlc3BvbnNlIHdoaWNoIGhhcyBtYWdpYyByZWZlcnJpbmcgdG8gYW4gb2xkZXIgZGlzY29ubmVjdGVkIG1haW4gc2Vzc2lvbi4gVGhpcworICAgIG1heSBoYXBwZW4gd2hlbiB0aGUgc3ViYWdlbnQKKyAgICBhdHRlbXB0cyB0byBjbGVhbiB1cCBvbGQgcmVxdWVzdHMgb24gcmVjb25uZWN0aW9uIG9mIHRoZSBkaXNjb25uZWN0ZWQgbWFzdGVyCisgICAgc2Vzc2lvbi4KKworY29tbWl0IGFlMDUyNDcyYjIyNzIwZDA4MzY5ZTg1MTI3ZGIyMTQyNDVkZjJlM2YKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgT2N0IDI1IDE2OjE1OjE3IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHBlcmw6IGZpeGVkIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGhhbmRsZXIgcmVnaXN0cmF0aW9uIGZhaWxzLgorICAgIAorICAgIFdoZW4gbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyIGZhaWxzLCBpdCBmcmVlcyBpdHMgcmVnaW5mbyAtPiBuc2Focl9ERVNUUk9ZIChhbmQgYW55IG90aGVyIGZ1bmN0aW9uKSBtdXN0IG5vdCBkZXJlZmVyZW5jZSBpdC4KKworY29tbWl0IGMxOTliZjkxYjYyMzlmMjZiMmFhYjM0ZTg1NzVlMGYwZGY5Y2RlOWIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDI0IDE0OjI1OjI4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiB4ZnMsIGpmcyBhbmQgdnhmcyBmaWxlc3lzdGVtcyBhcmUgbm93IHJlY29nbml6ZWQgaW4gaHJTdG9yYWdlVGFibGUKKworY29tbWl0IDc0N2ZkYzcxZTY0ZDA5ZTA4MDkyOGViYmI0ZDA0Y2JkZTM5MDY3OTkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDUgMTU6NTc6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IExvd2VyZWQgc2V2ZXJpdHkgb2YgJ2Vycm9yIGZpbmRpbmcgcm93IGluZGV4IGluIF9pZlhUYWJsZV9jb250YWluZXJfcm93X3Jlc3RvcmUnIG1lc3NhZ2UuCisgICAgCisgICAgVGhlIG1lc3NhZ2UgaXMgc2hvd3MgdXAgd2hlbiBzbm1wZCBpcyBzdGFydGVkIGFuZCB0aGVyZSBpcyBkaWZmZXJlbnQgc2V0IG9mIG5ldHdvcmsgaW50ZXJmYWNlcyB0aGFuIGl0IHdhcyB3aGVuIHNubXBkIHdhc3QgbGFzdCBzdG9wcGVkLiBUaGlzIGlzIGNvbW1vbiBvbiBwcHAtc2VydmVycyBvciB2aXJ0dWFsIGhvc3RzLgorCitjb21taXQgMjUwZjY5OGU1OWVhYjlmMWZmZDMzMmZmNTlmZGI3MmVhMGRmMDZmZgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyMyAwODo1MToyMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSB0aGUgdHJhbnNwb3J0IGNvbmZpZ3VyYXRpb24gY29kZSB3b3JrIGFnYWluCisgICAgCisgICAgUHJldmlvdXNseSB0aGUgdHJhbnNwb3J0IGluaGVyaXRhbmNlIHByb2Nlc3NpbmcgY29kZSByYW4gd2l0aAorICAgIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyBzZXQuIEluIHRoaXMgbW9kZSB0aGUgZmlsZSBuZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaAorICAgIGlzIHJlcXVpZXJlZC4gVGhhdCBmaWxlIGlzIGNyZWF0ZWQgZHVyaW5nIHRoZSBmaXJzdCBtYWtlIHJ1biwgYW5kIHRoYXQgaGFwcGVucworICAgIGFmdGVyIGNvbmZpZ3VyZSBpcyBydW4uCisgICAgQ2hhbmdlIHRoaXMgdG8gdW5kZWZpbmUgTkVUU05NUF9NSU5JTUFMX0NPREUsIGVmZmVjdGl2ZWx5IHR1cm5pbmcgb2ZmIGZlYXR1cmUKKyAgICBzdXBwb3J0IGR1cmluZyB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBpbiBvcmRlciB0byBtYWtlIGl0IHdvcmsgYXQgYWxsLgorCitjb21taXQgNmVmNjkwNzY0MjI0N2M2NjNiOWI4OTY0YjlmZDQ0YTIxMWRiY2FhNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE9jdCAyMCAyMDozMDo1NCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDA4Mzk4OiBGaXggYSBtZW1vcnkgbGVhayBpbiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLgorICAgIAorICAgIFRoaXMgbWVtb3J5IGxlYWsgd2FzIGludHJvZHVjZWQgdmlhIGNvbW1pdAorICAgIDliZjNkOTZkOTZhOGVjZDRhNWZjMzVjMzI2ZGM5Mzc0NjcwMDJiNmM6IEluaXRpYWwgSEFMCisgICAgaW1wbGVtZW50YXRpb24gb2YgRmlsZVN5c3RlbSBpbmZvcm1hdGlvbiAoTWFyY2ggNywgMjAwOCkuCisKK2NvbW1pdCBjZjgyYjg5NGIyMjE3YzI2ZWRjNmYxMzU2MzUxYzkzMjQxNTYwNGUyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgT2N0IDE1IDE0OjQ1OjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzQyMzkxNTogQ2hhbmdlIGRlZmF1bHQgbnVtYmVyIG9mIHJldHJpZXMgYmFjayBmcm9tIDAgdG8gNQorICAgIAorICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW50cm9kdWNlZCB2aWEgY29tbWl0IDZjYWMwNTAgKE1heSA1LCAyMDExLAorICAgIGFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIHJldHJpZXMgaW4KKyAgICBzbm1wZC5jb25mKS4KKworY29tbWl0IGMxMWFkYWExMjkxNWFiZmVlNjI5YmI2YzAyNmMyMWYyMTg1YjIxNmUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTcgMTA6MjQ6NDYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEF2b2lkIHRoYXQgY29tcGlsaW5nIHRoZSBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IHdpdGggdGhlIE1pbkdXIGdjYyBjb21waWxlciB0cmlnZ2VycyB3YXJuaW5ncyBhYm91dCAicHJhZ21hIGNvbW1lbnQiLgorCitjb21taXQgYjE3YTcyYTc5MzQ4M2FlZTRhNWJiMmYyZTJjN2Y0ZmQ4Njk4MTdlNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxNyAxMDoyMjoyMCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogQXZvaWQgdGhhdCB0aGUgUEFDS0FHRV8qIG1hY3JvcyBkZWZpbmVkIGluIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY2F1c2UgdHJvdWJsZSB3aGVuIGluY2x1ZGluZyB0aGlzIGhlYWRlciBpbiBhIHBhY2thZ2UgdGhhdCB1c2VzIHRoZSBHTlUgYXV0b3Rvb2xzLgorCitjb21taXQgNjY0ZDNhZTEwN2Q3NTQwNTFiOGM0MjI3OWQ0NTlhYTU3YTFiZTFjMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxNjo0NzoxNiAyMDExICswMjAwCisKKyAgICBNaW5HVywgaHdfZnN5czogVXNlIHByb3BlciBmb3JtYXQgc3BlY2lmaWVycyBpbiBhIGRlYnVnIHN0YXRlbWVudC4KKyAgICAKKyAgICBUaGlzIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGludHJvZHVjZWQgaW4gY29tbWl0IDc2ZmYyNWQuCisKK2NvbW1pdCAyMTFkY2I0OTMwNjU2MWUzNWJhM2MyMTNiZTdjZmEyNTdiNDBhOGU1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDE1OjUyOjQzIDIwMTEgKzAyMDAKKworICAgIEF2b2lkIHRoYXQgZ2NjIDQuNiBjb21wbGFpbnMgYWJvdXQgc2V0IGJ1dCBub3QgdXNlZCB2YXJpYWJsZXMKKworY29tbWl0IDlmNjUzZjczZTVhYTcwZjBiZWYxMTc0NjMyZTk1NTk0Zjg3ZjY2OWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTM6MDI6MjUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkX3NxbDogQXZvaWQgdGhhdCBhIGxpbmtlciBlcnJvciBpcyB0cmlnZ2VyZWQgb24gc3lzdGVtcyB3aGVyZSBteV9wcm9nbmFtZSBpcyBtaXNzaW5nIGluIGxpYm15c3FsY2xpZW50IChlLmcuIEZlZG9yYSAxNSBhbmQgMTYpLgorCitjb21taXQgNGM4M2I5MjI5YTc0NTRmMzRmNmZmNzVmNjllNjdlNDAzMGM0MTliNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE1OjU4OjQ1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNldCB0aGUgcnBhdGggZm9yIGxpYnBlcmwuc28gaW4gbGlibmV0c25tcG1pYnMuc28gc3VjaCB0aGF0IHRoZSBkeW5hbWljIGxpbmtlciBjYW4gZmluZCBsaWJwZXJsLnNvIHdpdGhvdXQgcmVxdWlyaW5nIHRoZSB1c2VyIHRvIG1vZGlmeSB0aGUgZHluYW1pYyBsaW5rZXIgc2V0dGluZ3MuCisgICAgCisgICAgVGhpcyBjaGFuZ2UgaW4gYWdlbnQvTWFrZWZpbGUuaW4gaXMgbmVjZXNzYXJ5IG9uIHRoZSA1LjUgYnJhbmNoIGFuZAorICAgIGxhdGVyIGJ1dCBub3Qgb24gdGhlIDUuNCBicmFuY2guIFRoYXQgaXMgYmVjYXVzZSB0aGUgNS40IGJyYW5jaCB1c2VzCisgICAgYW4gb2xkZXIgdmVyc2lvbiBvZiBsaWJ0b29sIHRoYXQgcHJvcGFnYXRlcyB0aGUgcnBhdGggb2YgZGVwZW5kZW50CisgICAgbGlicmFyaWVzLiBUaGlzIGlzIGNhbGxlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY3kgdHJhY2tpbmcgaW4gdGhlCisgICAgbGlidG9vbCBtYW51YWwuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBwcmVzZW50IGluIGxpYnRvb2wgdmVyc2lvbiAxCisgICAgYnV0IG5vdCBpbiBsaWJ0b29sIHZlcnNpb24gMi4gRm9yIG1vcmUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBhYm91dAorICAgIGR5bmFtaWMgbGlicmFyaWVzIGFuZCBycGF0aHMsIHNlZSBhbHNvIHRoZSBkb2N1bWVudCB3aXRoIHRoZSB0aXRsZQorICAgICJScGF0aElzc3VlIiBvbiB0aGUgRGViaWFuIHdpa2kgKGh0dHA6Ly93aWtpLmRlYmlhbi5vcmcvUnBhdGhJc3N1ZSkuCisKK2NvbW1pdCA4OTI1YzkxMmQyNjM5NzUyYTg0YmNmZmVlZjFiNzBhODEwMjY0NDliCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDcgMTQ6MjE6MjggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IEhPU1QtUkVTT1VSQ0VTLU1JQjogQWRkIG1pc3NpbmcgYnJhY2UgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKworY29tbWl0IDc2ZmYyNWQ5YmY5NzU3OWU3MjEzMTAyMDY1ZmQ1MDk2ZjA0OWE0YzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgNyAxNDoxMzoxOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogSE9TVC1SRVNPVVJDRVMtTUlCOjpoclN0b3JhZ2VUYWJsZTogZml4IGJ1ZyBpbiBoYW5kbGluZyBsYXJnZSBmaWxlc3lzdGVtcywgd2hlcmUgbGFyZ2UgbWVhbnMgYWJvdmUgOCBUQiAoPSAyKiozMSAqIDQwOTYgYnl0ZXMpLgorICAgIAorICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQKKyAgICA3MWQ4MjkzZjM4N2E2Y2Q2NmJiMGRiYjEzYzBmNTAxNzRkMmU2NzhiLgorICAgIEZvciB0aGUgb3JpZ2luYWwgYnVnIHJlcG9ydCwgc2VlIGFsc28KKyAgICBodHRwczovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9mdW5jPWRldGFpbCZhdGlkPTExMjY5NCZhaWQ9MzQxOTgyNSZncm91cF9pZD0xMjY5NC4KKworY29tbWl0IDg2NjAzM2RiOTkwNGZmYjEyMDNmMjgzZjgzODA5MmU0Y2Y2OGRlNmIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBPY3QgNiAwNzozMzoyNyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUmVtb3ZlIHNwdXJpb3VzICNlbmRpZiB0aGF0IHNlZW1zIHRvIGJlIHRoZSByZXN1bHQgb2YgYSBtaXNtZXJnZS4KKworY29tbWl0IDIwZjRmMzI2N2VlMjBkNTU3MDViN2E0Mzc4OTg3OWMxMDNmOTY2MjAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFRodSBPY3QgNiAwMDowODo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogQWRkIG1pc3NpbmcgZW5kIGNvbW1lbnRzIHRvIGZlYXR1cmUgaWZuZGVmcy4KKworY29tbWl0IGU1ZGUyY2M1N2JmMzA0ZjMzMjBjYWQwMDM0ZDJlYTJkOGFlZGM0MzYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgNSAwOToxNToxMCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogTG9nIGEgbW9yZSBkZXRhaWxlZCBlcnJvciBtZXNzYWdlIGlmIGVtYmVkZGVkIHBlcmwgaW5pdGlhbGl6YXRpb24gZmFpbHMKKworY29tbWl0IDVlZWY5OTkwZGUyOGY2MzExMWU2YzA5M2JlMGYzYzdhZTJkNTEzYTEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgNSAwODo0NTo0OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBBZGQgYWdlbnQ6OnVwdGltZSgpCisKK2NvbW1pdCA2ODEwZWQ0MmY5YmM1NjA3NTBkNmRiZmI3ZTUwYjZlMmFjMTE4OTljCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDMwIDExOjAxOjIzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IEN5d2luOiBhZ2VudDogSW1wbGVtZW50IGdldF91cHRpbWUoKSBzdWNoIHRoYXQgcXVlcnlpbmcgSE9TVC1SRVNPVVJDRVMtTUlCOjpoclN5c3RlbVVwdGltZSByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUuCisKK2NvbW1pdCA5NzE3MmIzMTFkMjBmNDQ0MWM3YTdlOTAwOTJiNTljMWUwZGE5OWY3CitBdXRob3I6IFRob21hcyBKYXJvc2NoIDx0amFyb3NjaEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgNSAwODo0NjozOSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBQQVRDSDogMzQxODY0OTogSE9TVC1SRVNPVVJDRVMtTUlCOiBVc2UgcGNsb3NlKCkgaW5zdGVhZCBvZiBmY2xvc2UoKSB0byBjbG9zZSBhIHBpcGUuCisKK2NvbW1pdCA2NTkxOTM3YWRiODUwMDBjMjcwNjljNGJlODRjZjQ2ODg4MzhlYmNkCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTY6MTg6MDMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCBkZXBlbmRlbmNpZXMgb24gQEZFQVRVUkVUQVJHU0AgdG8gbWFrZSB0aGUgc3VidGFyZ2V0IHdvcmsgYXMgd2VsbC4KKworY29tbWl0IGI5YzgwMTJlYzAzNWJjMDg0ZjE3NTg3NmZlY2MzNzUxOTVmOWJlODEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxNDowMjo1OCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogQWRkIHRhcmdldCB0byBidWlsZCBhZ2VudHh0cmFwIGZyb20gdGhlIHRvcGxldmVsCisKK2NvbW1pdCA5OTU2NDdjMGNmZTAwNDEyMjYyY2M1Nzk3YmRmYWU5ZDAwYjcwYzc2CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTU6NDQ6MzYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFJlbW92ZSB0aGUgdXNlIG9mIC1MIGZsYWdzIGZvciBpbnRlcm5hbCBsaWJyYXJpZXMgYXMgaXQgY29uZnVzZXMgbGlidG9vbC4KKworY29tbWl0IDkzZGMxMjM1YTBkYjU4ZmZkMjk2MTdjZmYwMGRjMTEyNjM3ODAyMDIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxMTozMTo0NiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSBtYWtlIGFwcHMgd29yayBhZ2FpbgorICAgIAorICAgIGFwcHMgaW5jbHVkZSBzbm1wdHJhcGQgYW5kIHRoYXQgcmVxdWlyZSB0aGUgYWdlbnQgbGlicmFyaWVzIGFzIHdlbGwuCisKK2NvbW1pdCBiYTQxNDg4ZWQ0NGNkMjNjMjU5NjNkNGZjNTZjNDc2ODUzYjJhYjU5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTE6Mjk6MzMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFdoZW4geW91IHNheSBtYWtlIGxpYnMgeW91IGV4cGVjdCBhbGwgdGhlIGxpYnMgdG8gYmUgYnVpbHQuCisgICAgCisgICAgVGhpcyBpcyBkZW1vbnN0cmF0ZWQgYnkgdGhlIHNubXB0cmFwZCB0YXJnZXQgYXQgdGhlIHRvcCBsZXZlbCB3aGljaCBvYnZpb3VzbHkKKyAgICBleHBlY3RlZCBib3RoIGxpYnMgdG8gYmUgYnVpbHQgYW5kIHNvIGZhaWxlZCB0byBjb21waWxlIGJlZm9yZSB0aGlzIHBhdGNoLgorCitjb21taXQgMzA1N2M3M2UwOTM0NzNiZTQ2MjU0YmNkZmI0Y2E3ODhlNDMyZDFiOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMzAgMDc6MzI6NTIgMjAwOCArMDAwMAorCisgICAgTkVXUzogYnVpbGRpbmc6IFBBVENIOiAyMDkxMTU2OiBjb3JyZWN0bHkgZGVjbGFyZSBkZXBlbmRlbmNpZXMgaW4gTWFrZWZpbGUuCisgICAgJ21ha2UgLWogPE4+JyBzaG91bGQgd29yayBub3cuCisgICAgCisgICAgQmFja3BvcnQgdGhpcyB0byBWNS00IGFzIGl0IGlzIG5lZWRlZCBmb3IgY29ycmVjdCBvcGVyYXRpb24gaW4gdGhlIHNpbmdsZQorICAgIHRocmVhZGVkIGNhc2Ugb2YgbWFrZSBtaWJsaWIgYXMgd2VsbC4KKworY29tbWl0IDZlYWUzNDBmYTJhNjQwODY1OTI5ODJjYzUyNzM1YmMwMTQ4N2Q5NzgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBPY3QgMSAxOTozMzo1MCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogU2lsZW5jZSBsaWJic2QgMC4zLjAgbmFnZ2luZworICAgIAorICAgIElmIHlvdSBoYXZlIGxpYmJzZCAwLjMuMCBpbnN0YWxsZWQgdGhlbiB0aGVpciB2ZXJzaW9uIG9mIG5saXN0Lmggd2FybnMgYW5kCisgICAgdHJpZXMgdG8gbWFrZSB5b3UgaW5jbHVkZSBic2Qvbmxpc3QuaCBpbnN0ZWFkLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHdlIGRvbid0CisgICAgbmVlZCB0aGF0IGNvbXBhdGliaWxpdHkgbGlicmFyeSBhcyB3ZSBrbm93IGhvdyB0byBkbyBpdCBvdXJzZWxmIHNvIGl0IGJlY29tZXMKKyAgICBwdXJlIG5hZ2dpbmcuIFRoaXMgcGF0Y2ggYWRkcyBhIGRlZmluZSB0aGF0IGNoYW5nZXMgdGhlIHdhcm5pbmcgaW50byBhbgorICAgIGVycm9yIGFuZCB0aGVuIGZpZ3VyZXMgb3V0IHRoYXQgdGhlcmUgaXMgbm8gdXNhYmxlIG5saXN0LmggYW5kIGlnbm9yZXMgaXQKKyAgICBmb3IgdGhlIGZ1dHVyZS4KKworY29tbWl0IGFjMzhjYjUzMWJlZTUwZWRjOGQ0YzgzNGYzMDA1ZjU5OTJjNzcxZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMTk6MDM6MDIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogRW5hYmxlIHNlbmRpbmcgU05NUHYyIHRyYXBzIHdpdGggYW4gZW1wdHkgdmFyYmluZCBsaXN0CisKK2NvbW1pdCBhNzVkZTI5NzE1MjdhYzJkMmU4MTIwMjQyOTg2MDJiYjI0MTJmMzM3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDMwIDEwOjQxOjQ0IDIwMTEgKzAyMDAKKworICAgIHBlcmwvU05NUC9TTk1QLnhzOiBVcGRhdGUgZW1hY3MgbW9kZWxpbmUKKworY29tbWl0IDg0OGY2MzAwZWZlMzg0OTJmYjQ1NDQ1MWEwMzBmMGI3ZTZmZjhjOWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMzAgMTA6NDE6NDQgMjAxMSArMDIwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IFVwZGF0ZSBlbWFjcyBtb2RlbGluZQorCitjb21taXQgYzEzNzQ0NzNlY2Q4ZWM5ZTAzMTAwMTM4NjFlZTE4YzgzZTVkNmM1YgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIFNlcCAzMCAwMzoyOTozNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBQcm90ZWN0IHRoZSB1c2Ugb2YgJE9TVFlQRSB0byBlbnN1cmUgdGhhdCAndGVzdCcgZ2V0IGVub3VnaCBwYXJhbWV0ZXJzLgorCitjb21taXQgN2U5N2EyMDYzM2E1N2VhZTM5ZDAxNWIyMzMzOTQ2M2MzMmY1Zjg0OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAxMDoyMjowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBDb252ZXJ0IHNubXBsaWIvdGVzdF9iaW5hcnlfYXJyYXkuYyBpbnRvIHR3byB1bml0IHRlc3RzCisKK2NvbW1pdCA5YzBkZDk4MTc2NDU3MzQyZmZmYWE1ZTc0ZDgwMmUzMTQ1ZWQ3MGU3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDA4OjU2OjE3IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZCB1bml0IHRlc3QgZm9yIG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpCisKK2NvbW1pdCA1ZmQyNmU0ZmEzZTAwMGVhOWM4MWMzOGFiOTc1Yjc5NDZlZmUyMTU3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgU2VwIDI4IDE3OjQ5OjU1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBBdm9pZCB0aGF0IG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpIGZhaWx1cmUgdHJpZ2dlcnMgYSBkb3VibGUgZnJlZS4KKyAgICAKKyAgICBGaXhlcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCB2aWEgY29tbWl0CisgICAgYWE0ZDQ3YzI2MDllNTI4MThjOWNkZjFhOGUyMjA1ZGU5YTMzNWEwYSAoc3ZuIHIxOTUxNSkuCisKK2NvbW1pdCBkMjI1MmQwMTY2OTM4MDczMjZmNzJiNjYxMjM2NDlkZWEwMGFmOTE2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDEwOjIwOjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IFJlcXVpcmUgYSBzZW1pY29sb24gYWZ0ZXIgT0soKSwgT0tGKCkgYW5kIFBMQU4oKQorICAgIAorICAgIEFsc28sIGxldCBPS0YoKSBlbWl0IGEgc2luZ2xlIGxpbmUgb2Ygb3V0cHV0IHN1Y2ggdGhhdCBhbGwgb3V0cHV0IGl0CisgICAgcHJvZHVjZXMgaXMgdmlzaWJsZSBpbiB0aGUgb3V0cHV0IG9mICJtYWtlIHRlc3QiLgorCitjb21taXQgMTQyMTkyNGI0ODUyMTQyMTkyYzViYjllOTNkZGJmZWQ2OWU5MDhmYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIFNlcCAyMSAyMjoyMDowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBBdm9pZCB3YWl0aW5nIGluZGVmaW5pdGVseSBpZiBhIHNlc3Npb24gaGFzIHRpbWVvdXQgemVybworCitjb21taXQgNWYyN2Y0Zjc0YWUyYmQ1YmFmNTAzY2YzMDZiNGY5YTI4NDFhNTdjZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjMyOjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdCBydW5uZXIKKworY29tbWl0IDA5NzAzOTU4Y2M1ZWE4NDU5MjlhZTE5ZWY5ZTA4MDRhZWNhYTUxMmUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMTI6NDI6NDEgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQXZvaWQgZmFsc2UgbmVnYXRpdmUgZm9yIFQxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZSBjYXVzZWQgYnkgdGhlIHRlc3QgcmVzdWx0IGJlaW5nIHByZXNlbnQgaW4gdGhlIGhleCBkdW1wICgibW9zdGx5X2hhcm1sZXNzIikKKworY29tbWl0IDQzOTMwMDI3OWY2ZjMxNDM4NjM4ZDJmMjIyYzI0YzNjODQxZmE2YWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjcgMTE6MTY6MzIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IE1pY3JvLW9wdGltaXplIGFnZW50IG1vZHVsZSBkZXBlbmRlbmN5IGFuYWx5c2lzCisgICAgCisgICAgVGhpcyBtYWtlcyB0aGUgYWdlbnQgbW9kdWxlIGRlcGVuZGVuY3kgYW5hbHlzaXMgY2FycmllZCBvdXQgYnkgdGhlCisgICAgY29uZmlndXJlIHNjcmlwdCBzbGlnaHRseSBmYXN0ZXIsIGVzcGVjaWFsbHkgb24gdGhvc2Ugc3lzdGVtcyB3aGVyZQorICAgIGZvcmsoKSBpcyBleHBlbnNpdmUgKEN5Z3dpbikuCisKK2NvbW1pdCBiYmM2ODAwMDRhMTM3NjAzOGRmZGM0MTcyZGJlN2I5ZTMxMWZiYTY4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gU2VwIDI2IDEwOjE0OjQ1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHRlc3QgVDEzMHNubXB2MXZhY21nZXRfc2ltcGxlIHBhc3MKKworY29tbWl0IDcwYjA2Y2Y3ODkyMDhlYWE4OTBiZmJjZDYzOGJkYjc3NWY4MTcwNTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMjAgMDk6NTA6NTcgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogdGVzdGluZzogcGVybDogRml4IGFuIGluY29ycmVjdCBtZXNzYWdlIHByaW50ZWQgd2hpbGUgcnVubmluZyB0aGUgUGVybCBtb2R1bGUgcmVncmVzc2lvbiB0ZXN0cworCitjb21taXQgNzBiY2M4ZGUyZDBmYzkyYmJiODQ4MTgyMzYzMGZhYjliYzg3YWY3NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAxNiAxNjoxNDoyNCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogT2J0YWluIHRoZSBNU1lTIHBhdGggZnJvbSB0aGUgZW52aXJvbm1lbnQKKworY29tbWl0IDYyNjI3NWUyZDFhY2FmYWU3MTQ0YTMzZWQzMDFhNDBmNTk2YjM3YjAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBTZXAgMTQgMTM6MTQ6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogUmVtb3ZlIHN1cGVyZmx1b3VzIGxpbmsgbGlicmFyaWVzIGZyb20gcHJvamVjdCBmaWxlcyAoKi5kc3ApCisKK2NvbW1pdCAzOGZjM2NhYTllZWIzODAwMjU0YjRmNmFkNmY4ZjQ3NjRjMGY4M2RiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDIwIDA5OjM0OjA4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgbmV0c25tcF9jYWxsYmFja19hY2NlcHQoKSByZXR1cm4gLTEgKGZhaWx1cmUpIGluc3RlYWQgb2YgMCAoU1RESU5fRklMRU5PKQorCitjb21taXQgNmM4YzdlOGFjYThmYzJlZWI1MjAxMGFlM2U5ZmVlNmRkODNlZjc4MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAxMyAwOTo1ODoyNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBSZW1vdmUgb2Jzb2xldGUgc25tcF9nZXRfZmRfZm9yX3Nlc3Npb24oKSBkZWNsYXJhdGlvbgorCitjb21taXQgMDg2MGQxMWZkOGZjNWRiZGFhYWUyMjYxZmFlMmMwN2ZiOWMyYzgyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCA4IDEzOjU0OjU1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IE1TVkM6IEF2b2lkIHRoYXQgdGhlIHR5cGVkZWZzIGluIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gY29uZmxpY3Qgd2l0aCB0aG9zZSBpbiA8c3RkaW50Lmg+IGZyb20gdGhlIG1zaW50dHlwZXMgcHJvamVjdAorCitjb21taXQgZjhhMDM2ZjYzZmY2OGYwODM0MzYxMjBlMGFiZDQ3OGI2OTJhMmY2MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCA4IDEzOjIxOjA2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IE1TVkM6IFdoZW4gbGlua2luZyB3aXRoIE9wZW5TU0wsIGxpbmsgd2l0aCB1c2VyMzIubGliIHRvbworCitjb21taXQgODM2YTIzZTEwY2E4MTBjMzg5OTkwMmQzMjU4NzYxNmE5ZDEyMDNkZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEp1bCAxNCAxODozODoxMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNU1ZDOiBMaW5rIHdpdGggcHJvcGVyIGxpYmVheTMyIGxpYnJhcnkKKworY29tbWl0IDdiMDdmZDZjZGVmNDllYzdiYjA0YjE2NmUyYTRmYmIzN2I1ODI4NDAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMToxMDozOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBSZW1vdmUgYW4gaW5jb3JyZWN0IGNvbW1lbnQgZnJvbSBzaW1wbGVfZXZhbF90b29scy5zaAorCitjb21taXQgOThmNmQyOWQ5ODFmZjhlNjA3NjAwYzYzZGFkYjI0MDUzNTYyOTgwNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjQ5OjAzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IE1ha2UgSVNERUZJTkVEKCkgY2hlY2sgZm9yIGFuIGV4YWN0IG1hdGNoIGluc3RlYWQgb2YgYSBwcmVmaXggbWF0Y2gKKworY29tbWl0IDUyY2QwMDMxYTMxZjY5MmYxMzI2M2E5NGMzMzVkMDZiZTE0NTQ4MDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDoxMjo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB0aG9zZSByZWdyZXNzaW9uIHRlc3RzIHBhc3MgZm9yIHdoaWNoIFNOTVBDT05GUEFUSCBhbmQvb3IgU05NUF9QRVJTSVNURU5UX0RJUiBtYXR0ZXIKKworY29tbWl0IGY1Y2Q4OWJkMzM1NmRkNzRlMTU1NmMwYjUwOTY2YTY0M2YxOTIwODUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDoxMjo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRlc3QgZnJhbWV3b3JrCisKK2NvbW1pdCBkZWVkZDUyYzgzNGE2NDQ4ODUyYTA2Nzg1NTM2ZTEzODY1OTY5Njk0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6MTI6NTggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogTWluR1c6IFN1cHBvcnQgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgb2YgcmVjZW50IFNoaW5pbmcgTGlnaHQgT3BlblNTTCBiaW5hcnkgZGlzdHJpYnV0aW9ucworCitjb21taXQgZDU1YmQ0ZTA1NDlmMDNiNmZkMzI1NjJjMmFhN2ZlMzkyNzJhOWVmNworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIFNlcCAyOCAwNjo1NToxOSAyMDExIC0wNzAwCisKKyAgICByZW1vdmUgdGhlIHY1LjcgZnJvbSB0aGUgZnJvemVuIGxpc3QKKworY29tbWl0IGFjMmFlZDNjOTRiYjJlYmI0NzNhZjBhMWUyMGYwNTYxYWQ2Mjk5NTYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBTZXAgMjggMDY6NTU6MTEgMjAxMSAtMDcwMAorCisgICAgcmVtb3ZlIHRoZSB2NS43IGZyb20gdGhlIGZyb3plbiBsaXN0CisKK2NvbW1pdCA0NmVhYzAyZTlhMjdiZjRmMzA2OGU3OTVjYWI4OTFmMDVhODQ4ODcwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gU2VwIDI2IDIxOjQ5OjI3IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBdm9pZCB0aGF0IHNubXBkIGNyYXNoZXMgaWYgc3RhcnRlZCBvbiBhIHN5c3RlbSB3aXRoIGFub3RoZXIgT3BlblNTTCBsaWJyYXJ5IHZlcnNpb24gdGhhbiB0aGUgb25lIGl0IGhhcyBiZWVuIGJ1aWx0IHdpdGguCisJCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcuMSAtPiBWNS43LjIucHJlMgorCitjb21taXQgODEwMTg1YWUwYjBjZDJhZDRkNDI0YTFiYTc3NWVmNWNlYWY1MGYwMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IEp1biAyIDA5OjI0OjE5IDIwMTIgLTA3MDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjcuMi5wcmUxCisKK2NvbW1pdCA2MjcxNDcxZTAxMjgyZjM2NzU3MjRlYWYxMzU4Y2ViMGU5NWRkZDRlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVuIDIgMDg6MzI6NDAgMjAxMiAtMDcwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMi5wcmUxCisKK2NvbW1pdCBmY2I3ODJhYTg4OTMxMzRjNzQxNGE5MjZkOTI2ODU5NGY3MjViOTE1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgSnVuIDIgMDg6MzI6MTggMjAxMiAtMDcwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4yLnByZTEKKworY29tbWl0IGUzYmNkODdjNzJmY2VhNzcwNmU4NjhiNWFjZTc1Mjk2MDkzZjc0OTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDE0OjA5OjQyIDIwMTIgKzAxMDAKKworICAgIEZpeCBkaXN0L3JlbGVhc2UgZm9ybWF0CisKK2NvbW1pdCBkODEzY2UyZWVlZmM2ODIyOWNmY2FmMjA2MDMyNDRjZGQ2ZDA5ZDNjCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxNDowNzo1MiAyMDEyICswMTAwCisKKyAgICBGaXggZGlzdC9yZWxlYXNlIGZvcm1hdAorCitjb21taXQgZmE3YmQ1ODFlMzc4MzY4NWRiMzljOWI0ZWFmODQ3YmU1YWM4NmZkMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6NTM6MTAgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnJjMgorCitjb21taXQgMDczOWUyMzgyZDMxMTQ2YWNhMzIwNTI0NGNmNzA3ODhiNDBhNDI4ZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6NTE6NDUgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNi4yLnJjMgorCitjb21taXQgZDlhMTU0NDVhYTc0ZjUzMTZiZmM3MTFjMTU1ODQ2Nzg3MmMyOTU4YworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6NTA6MTIgMjAxMiArMDEwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNi4yLnJjMgorCitjb21taXQgYmNhYmQyYzk1NDJkYmViZDFkMzE5YjQ0OTQ0MTNiZGNjYTA2NjE0ZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MzggMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTYtcGF0Y2hlcworCitjb21taXQgYjQ3Mzg5OGMwYzVhYzllYjQ3YzdjMDVhM2Y3NDVlNGZmMmE3NmFhYQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTM6Mzg6MjggMjAxMiArMDEwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5yYzIKKworY29tbWl0IDEzMTQyOWU3MDYyZmJhYTY1YjgyYWZmZWQxZmI5MmRmMmMwY2M4MTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjM4IDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKKworY29tbWl0IDFjODExMGIzM2I4MTA1Y2E2MTkwOTQ1YTM1ZmU3YWU5MDMyNTJkNjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjIxOjM4IDIwMTIgKzAxMDAKKworICAgIEF2b2lkIHBlcmwgdmVyc2lvbmluZyBwcm9ibGVtcyB3aGVuIHNldHRpbmcgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50CisKK2NvbW1pdCA1MDhlY2UxNmU2ZjZmNDk1NjJkYTIwNDc5MmFlMDY0NDI2OTk5NGQxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzoyMDo1OCAyMDEyICswMTAwCisKKyAgICBGaXggaGFuZGxpbmcgb2YgZGlzdC9yZWxlYXNlIG1lcmdlCisKK2NvbW1pdCA1YjhhODU0N2IxYTQ3ZDJmNWIyMDdmNDhmMjQ5NmU0MjQxZDkwMmM2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMToxMDo0OCAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCA2YzMyOTE0YmYyOGQ2OTVkZjM0OWRjYTI2OWU0ODhiNTAxNzAwMzE2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMTowNzoyMiAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCA5ZjVhODJhNWFmZGJiM2RhZWIyZmQ0MzdhMzA5ZjBiOGQzNTdjZjRiCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMTowNTozOSAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS41LjIucmMyCisKK2NvbW1pdCAzOTIwM2YyOTQ3N2EzYmVkZjAxMmQ0MTEzNWQ4YWJkNmJjYWQwOGIxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo1NDoyNyAyMDEyICswMTAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCAxN2U3OWVmMGZhZDc5NjA5YzViYTJmZWI0ZThiOWViNWQ3ZGI2ODg2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NjoxMSAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNS1wYXRjaGVzCisKK2NvbW1pdCA1ODIxYmU1YmJiNDAxOGRlZDI4MmZiYmJkNDgzMGNmMmVlYWRkOWUxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NTo1OSAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMgorCitjb21taXQgM2YyMTExZGU2NzMzYTA0ZTEyZDkxMGQzMDZhMzRkNjcxZTAwODc2MgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTA6NDY6MTEgMjAxMiArMDEwMAorCisgICAgUmVsZWFzZSBDYW5kaWRhdGUgZm9yIFY1LTUtcGF0Y2hlcworCitjb21taXQgY2NmOGZmMmM0ZGI2MDEyMmQ0MTMwMmU0YWViNzAwZTBiODY4MTA1ZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgMjggMTA6MTg6NDMgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzUyNjU5OTogRG9uJ3QgaGFuZyBvbiByZXRyaWVkIGZhaWxpbmcgU05NUHYzIHJlc3BvbnNlcworCitjb21taXQgYzgxYzg0ODM5OTA5MTFmNDc0MzVkMzAwNTI1NWQ5MWMzN2FiOTJiMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyNyAxNDowOToyNiAyMDEyICswMjAwCisKKyAgICBGaXggQlNEIHRoYXQgZG93bm5vdCBhbHdheXMgbGlrZSBJUF9TRU5EU1JDQUREUiAtIHNvIHJldHJ5IHdpdGhvdXQKKworY29tbWl0IGZmY2UxZjJkYzJmOGIzMWFiZDAxZjkzYjI2ZGE3OGY0NzI2YTFlNjQKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjcgMTQ6MDM6NTggMjAxMiArMDIwMAorCisgICAgRml4IE9TIG1pc3NpbmcgTVNHX0RPTlRXQUlUIChBSVgpLiBCYWNrcG9ydCBmcm9tIDUuNworCitjb21taXQgYzU3NTIxNjg1MDE4NWI1NjQ1NGRhZDAyNTNlMzE2NDk3OWUxMzUxMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyNyAxMzo1NjowMSAyMDEyICswMjAwCisKKyAgICBGaXggbWlzc2luZyBpbmNsdWRlLiBGaXhlcyBTSUdTRUdWIG9uIEZyZWVCU0Q5IHg2NAorCitjb21taXQgNTgwNTg3ODc0OWMwODA2MmRlYmYwYTlkNzk4ZDA4ZmI5MTZjYWEyZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1heSAyNyAwNjoyMzoxOSAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQWRkIG1pc3NpbmcgZGVidWcgdGFnCisKK2NvbW1pdCBkMWE0MmJiY2M3YjE0NzMwYzlhNmQ5OWM0ZjA0NzA5Nzg0M2E1NDliCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWF5IDI1IDA5OjAyOjI3IDIwMTIgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBSdW4gbGlidG9vbCAtLW1vZGU9ZmluaXNoIG9uIHRoZSByaWdodCBkaXJlY3RvcnkKKworY29tbWl0IDFmYmYzMzcxMWExOWVhYzk3MzlhZDIzZjZmNjI1MWVhY2M0MWYxYzQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWF5IDIyIDE0OjU0OjQ1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IExpbnV4OiBQQVRDSDogMzUyNTk5ODogRG9uJ3QgdXNlIGFuIHVuaW5pdGlhbGlzZWQgdmFsdWUgaW4gZXJyb3IgbWVzc2FnZQorCitjb21taXQgMzJjMTY4NmI2N2RjODVjNGExODk1NzYzNjMwNjU2MDlkZmVkNWU2MQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXkgMjIgMTQ6NTI6NTYgMjAxMiArMDEwMAorCisgICAgQXR0ZW1wdCB0byBtYXJrIHJlbGVhc2UtY2FuZGlkYXRlIGJyYW5jaGVzIGFzIHN1Y2guCisgICAgT21pdCBmaW5hbC1yZWxlYXNlLW9ubHkgc3RlcHMgd2hlbiBwcmVwYXJpbmcgcHJlTi9yY04gcmVsZWFzZXMKKyAgICAoUmVsaWVzIG9uIGEgdHdlYWsgdG8gdGhlIE1ha2VyZWxlYXNlIHBlcmwgbW9kdWxlcykKKworY29tbWl0IDRjNTYzM2YxNjAzZTRiZDAzZWQwNWMzN2Q3ODJlYzg5MTE3NTljNDcKK0F1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAZnJlZXNubXAuY29tPgorRGF0ZTogICBNb24gTWF5IDE0IDExOjQwOjA2IDIwMTIgLTA0MDAKKworICAgIE5FV1M6IHNubXA6IEJVRzogMzUyNjU0OTogQ1ZFLTIwMTItMjE0MSBBcnJheSBpbmRleCBlcnJvciBsZWFkaW5nIHRvIGNyYXNoCisKK2NvbW1pdCA2NWRkODNjMjI1NWVlNThlZGJmMGUyNTg2M2U1NWI1OGE0MTEzNjc5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDIwOjMwOjQyIDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5yYzEKKworY29tbWl0IGFjNGJjNjVlMjkwOWYzYmQ4NWYzMmYwNGI1MDRmYTY1ZDJmNjQ1NTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMjA6Mjg6MDYgMjAxMiArMDEwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNi4yLnJjMQorCitjb21taXQgYjc0OTk0ODY0MTk1MTE5ZWRiNmUxOWM4NTE0N2ZhYzAwYmNiOTNlMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAyMDoxMzo0NiAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNi4yLnJjMQorCitjb21taXQgOTEzNTAwOTJjNDZlNjZkMDZkNzQxNDNmNDgxNjQ3M2RiNGQyNTE2MAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxOTo1NjozMyAyMDEyICswMTAwCisKKyAgICBNYXJrIHZlcnNpb24tc3BlY2lmaWMgY2hhbmdlcyBfYmVmb3JlXyBwdXNoaW5nIHRvIGNlbnRyYWwgcmVwb3NpdG9yeQorCitjb21taXQgNzI0MWFjY2Q3MGI4MmQwZmNkNDRkNWE1MjM4YjJlZTk0NDU5MDBkYgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzo1MzoxNyAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMxCisKK2NvbW1pdCA3Yzc5NmExNWExZDFiYjg1ZmVlYTk0MGJkNGUzNTE2ODc3OTIwOTE5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjUwOjQ5IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzEKKworY29tbWl0IDA3ZTI2OGJmYjY0YjBlYzY0NWIzZjdlODcyNjY5ODRmOTIxN2NmMTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6NDQ6MzcgMjAxMiArMDEwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNS4yLnJjMQorCitjb21taXQgMTZlYWFmNmMzYmExNDU5NmNhOWVmYWY0YjExNGYxYjcwOWY0MmI2OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzoyOTowMyAyMDEyICswMTAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZSBmb3IgNS41LjIucmMxCisKK2NvbW1pdCBjNzI5NDY5ZWYxMjE1NDkzMGNmOWQxNTk2N2UxNjE4NmZiNDQ1ZjMwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjI3OjIwIDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS41LjIucmMxCisKK2NvbW1pdCAxNDI1NzFkM2NlYTA4ZjBjMDcyZDI0YzFkMzlhNDNjNzQ0NmY4Y2U3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjAxOjAzIDIwMTIgKzAxMDAKKworICAgIFdoZW4gYnVpbGRpbmcgYSBuZXcgcmVsZWFzZSwgdGhlIGluc3RhbGxlZCB2ZXJzaW9uIG9mIHRoZSBwZXJsCisgICAgbW9kdWxlcyBtYXkgd2VsbCBiZSBkaWZmZXJlbnQgdG8gdGhlIHZlcnNpb24gYmVpbmcgYnVpbHQuCisgICAgVGhhdCBzaG91bGQgbm90IGJyZWFrIHRoZSBidWlsZC4KKworY29tbWl0IGViYTg2YjZmN2FmZjI2MWVlMGU2MTMzNGRmNzBkZTcxNTZlNWMzY2IKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6MDE6MDMgMjAxMiArMDEwMAorCisgICAgV2hlbiBidWlsZGluZyBhIG5ldyByZWxlYXNlLCB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIHBlcmwKKyAgICBtb2R1bGVzIG1heSB3ZWxsIGJlIGRpZmZlcmVudCB0byB0aGUgdmVyc2lvbiBiZWluZyBidWlsdC4KKyAgICBUaGF0IHNob3VsZCBub3QgYnJlYWsgdGhlIGJ1aWxkLgorCitjb21taXQgNWMwZjY0ZDZkYjJiNTkzZjdjYzBlZDJkNGY1NWI3YzU5MmI3NzRhOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoyNToxNSAyMDEyICswMjAwCisKKyAgICBPbmx5IG91dHB1dCBjcHUgd2FybmluZ3Mgb25jZS4KKworY29tbWl0IGVlNThlNDgyN2I5ZmExNmU2NjM1Y2EwMDNlOGE0ZjExZGNiNWZiN2EKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBcHIgMjMgMjI6MTc6NDIgMjAxMiArMDIwMAorCisgICAgRml4IHNwZWxpbmcgaW4gZXJyb3JtZXNzYWdlLgorCitjb21taXQgMDNmNDg1ZGYyMmYyMGUxNDljZmFlOTRjNTdjYjgyZmVlY2I1ZDc0YgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoxMjoxMSAyMDEyICswMjAwCisKKyAgICBOb3QgYWxsIExpbnV4ZXMgdXNlIHJwbSAoZGViaWFuL3VidW50dSBjb21lcyB0byBtaW5kKQorCitjb21taXQgOTMwODM4MjI0Zjc4MTY5NmJkMzUyMjVmMjI1NjkzNDc0MTZmMWIxNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoxMDoxNSAyMDEyICswMjAwCisKKyAgICBDaGVjayBuZWVkIGZvciAtbG0gdG8gdXNlIHJvdW5kL2V4cAorCitjb21taXQgYTA2MDljZjFmM2E2OTE3ZDI2MzcyNTczMjI0OGNkOTM3YTQ1YWQ5NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IEFwciA3IDA4OjQwOjQ0IDIwMTIgKzAyMDAKKworICAgIFJlbW92ZSBsaW1pdGF0aW9uIG9uIGNvbmZpZ3VyYXRpb24gbGluZSBsZW5ndGguCisKK2NvbW1pdCAzMDU5NzMzMzhhNjNhZTU0YzVlMDJhODYyNmZiZTlhODA2NGRjYjdlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgQXByIDcgMDA6MzI6MTkgMjAxMiArMDIwMAorCisgICAgUmVkdWNlIHZhcmlhYmxlIHNjb3Blcy4KKworY29tbWl0IGNjYWI0ZTlkM2VkNDI0YzM5ZDBkYzI3YmU2M2ZhNzZjNzQ2MWVhODEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBBcHIgNyAwMDoxNToyMiAyMDEyICswMjAwCisKKyAgICBJbnRlcm5hbGl6ZSB0aGUgbmFtZSBhbmQgbGluZSBudW1iZXIgb2YgdGhlIGN1cnJldCBjb25maWd1cmF0aW9uIGZpbGUKKworY29tbWl0IGNmODc0YWQ3YjlkYWY0ZmNjMGQ0NmNkZDAzNDQ3NGI0NzgwMDUzNDEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBBcHIgNiAyMTo0NzoyOCAyMDEyICswMjAwCisKKyAgICBSZXBsYWNlICNpZiAoQSkgQiAjZWxzZSBCICNlbmRpZiB3aXRoIEIuCisKK2NvbW1pdCBlZjllYTY0MWJjMjkwZWVjNTA2ODViNjA1MTliMzFiZWU4YjE0YTY5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciA5IDIxOjA0OjA2IDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUyCisKK2NvbW1pdCAzNWFiYTE5NTlkZTExOWYxZmI4OTIwM2MzNzEwOWFhNmYwZTIxYzU3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciA5IDIxOjAwOjQwIDIwMTIgKzAxMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUyCisKK2NvbW1pdCBlNDFmYmFmZjE4YWM5MDk1Y2Y0YTczOWEwNmVjMzlhMWE2Y2NmZGMxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciA5IDIwOjM1OjM1IDIwMTIgKzAxMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS42LjIucHJlMgorCitjb21taXQgMTM3ZmU1ODJkNmNjNTYxMTQzMGRhYjQ2ZWYxNDRlZmQ4NGNmYzgwMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBBcHIgNiAyMDo0Njo1NiAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgY29tbWl0IDFmNGE4MjliMTgyNzVlNDk1NmNhOTFlNWVjMzcwZGYwMTVmMDYxMzMKKyAgICAoc25tcF9zdG9yZV9uZWVkZWQoKSBBUEkgaXMgbm90IGF2YWlsYWJsZSBpbiA1Lls0NV0ueCkKKworY29tbWl0IDJiN2U2NDI4OGMwMWE4YTA2MjAyNmM1MjFjYTMxYTVlODg1ZjMwY2MKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTY6MTI6MTIgMjAxMiArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yICdjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKyAgICBCYWNrcG9ydCBvZiBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5IGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCA3ZTk1ZDgwYjY5ODA1MTI1OTY0NWMwNzRhNTNmZmQyNjRhNmZhOTE2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE2OjA2OjU2IDIwMTIgKzAxMDAKKworICAgIEZyZWVCU0QtOTogRml4IGZvciAnY29uc3QnaWZ5ZWQgbmxpc3QgYXJndW1lbnRzCisgICAgQmFja3BvcnQgb2YgZWQ2NWVjYTZlN2Y5Y2ZhNzM4MGE3OGQ1NmMwMWVkMzE0NzQ1YjE2OSBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgMWE5YjdiN2MwMmUyZGVlZmU5OTRkNTk1YTdjYzFkZDJmZmJlZWUxZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNTo1MToyMCAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCAncmVjZW50JyBoZWFkZXIgc2h1ZmZsaW5nCisgICAgQmFja3BvcnQgb2YgYzUzZDhjMzUyNWY1OTBmMjIxM2QzNWIwZGE5NDEyMzg2MmYzZTM2NiBmcm9tIFY1LTUtcGF0Y2hlcworICAgIChQYXRjaCAjMzM2MzMwOCAtIG9taXR0aW5nIHR3ZWFrcyB0byBjb25maWd1cmUpCisKK2NvbW1pdCAzZDlkZGI0MWUyNjNiYzFhNzhmOWY5NDQwYjhkNGFkNGY4NmM4MmUxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDEwOjM2OjE4IDIwMTIgKzAxMDAKKworICAgIEZpeCB0eXBvCisgICAgQmFja3BvcnQgb2YgNWI3MDJiMDI0YjYwMTc2ZDdmNTY5OWI5MmU1NWRhNTBhOGRlYWU3MSBmcm9tIFY1LTYtcGF0Y2hlcworCitjb21taXQgMGQzNWM2MDk1NjRiNjZhMWZmZTgxNTU2ZDM3YWRmMDUwM2MzODljZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxMDoxNTowOCAyMDEyICswMTAwCisKKyAgICBQcm92aWRlIG1pc3NpbmcgZGVmaW5pdGlvbiBvZiBORVRTTk1QX1BSSW8KKyAgICAodXNlZCBpbiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMpCisKK2NvbW1pdCBhNzkxNDFhNDE5OTUzZDAxMGE2OTg5ZThiODhmNGRmMTI3Mzk0ZDM4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDA5OjE5OjI2IDIwMTIgKzAxMDAKKworICAgIEhlYWRlciBmaWRkbGluZyBmb3IgRnJlZUJTRCxPcGVuQlNELERyYWdvbmZseQorICAgIEJhY2twb3J0IG9mIGY3YjBkZTE1MTgwMDJjNmU4ZjliOTRlZjNkZWI4ODgyZTFlOTMzOGUgZnJvbSBWNS03LXBhdGNoZXMKKworY29tbWl0IGFkZjc0YmY3NTNkMzk3MDM1N2FmZDYzMzgwMzI1NjI0MWQ5YzdiODcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMDg6MjA6NDYgMjAxMiArMDEwMAorCisgICAgRml4IElQdjYgVENQICYgVURQIHRhYmxlcywgKkJTRCBzdXBwb3J0IChpbmNsdWRpbmcgT3BlbkJTRCkKKyAgICBCYWNrcG9ydCBvZiBjb21taXRzIDVjZDE1NzM2MjU0NzFjMDU4M2U5MDg3YWVjNjgwMmI3NzE1N2Q1YTIKKyAgICAgIGFuZCA1MGQ3M2YwZDU2ZmUyMmM1OTA1MzBiM2UzMDVkNDFkY2RhYzNjZTAwIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCBkOTU1NWFjYjlmNDdjM2FhOGZkZTRiYzIwYTQ0ZDdjYTYxODFhOGE5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gTWFyIDI1IDE4OjQ4OjEyIDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IEF2b2lkIGRhbmdsaW5nIHBvaW50ZXJzIChiYXNlZCBvbiBwYXRjaCAzNTAzMjU5KQorCitjb21taXQgODJhOGI0N2VlOTZlNWQyOWEyYjdhYzNjYTAwNzIyZDczN2Q1YjQ3OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciAyOSAyMjozMTo1NiAyMDEyICswMjAwCisKKyAgICBSdW5uaW5nIGF1dG9oZWFkZXIgLyBhdXRvY29uZgorCitjb21taXQgOWNhOGQ5MzlhYjM5MzMwNmExZDBmMTQ2YzljYjcwZWEwY2IxOWQ0OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciAyOSAyMjozMDozOCAyMDEyICswMjAwCisKKyAgICBSdW5uaW5nIGF1dG9oZWFkZXIgLyBhdXRvY29uZgorCitjb21taXQgY2VjZDQ4NjlkZWI2OGYzZDRjNzFlNzY4ZDViNDBkZDU3NjQ0NjkyNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciAyOSAyMjoyOTozMSAyMDEyICswMjAwCisKKyAgICBSdW5uaW5nIGF1dG9oZWFkZXIgLyBhdXRvY29uZgorCitjb21taXQgYTFhNDUxM2JkM2U0ZTYxNDIwMGY2ZGI1YTAyZjYxZDZjOGVlZmIzMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjggMDk6NDc6NDUgMjAxMiArMDEwMAorCisgICAgRG94eWdlbi1zdHlsZSBkb2N1bWVudGF0aW9uIGZpeGVzIChiYWNrcG9ydCBvZiBnaXQgY29tbWl0IGMwOTkwM2E0MmU5ZDk3MzMxZmQ5ZTQ4ZWU4MzFhODVhZmRmOWM3MGEpCisKK2NvbW1pdCA5YmRiY2NhMTIyYzM3ZGEzMDRmYzZhYTY5Mzk3Mjk0NzVmOTBmNWZkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyOCAwOTozMDo0OSAyMDEyICswMTAwCisKKyAgICBEb3h5Z2VuLXN0eWxlIGRvY3VtZW50YXRpb24gZml4ZXMgKGJhY2stcG9ydCBvZiBHSVQgY29tbWl0IGMwOTkwM2E0MmU5ZDk3MzMxZmQ5ZTQ4ZWU4MzFhODVhZmRmOWM3MGEpCisKK2NvbW1pdCAxZjRhODI5YjE4Mjc1ZTQ5NTZjYTkxZTVlYzM3MGRmMDE1ZjA2MTMzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyNyAyMTo0MToyNCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ5NTY5NzogU3RvcmUgcGVyc2lzdGVudCBzbm1wVGFyZ2V0IHRhYmxlIGNoYW5nZXMKKworY29tbWl0IDFmNzVmMzc3ZDBkYjAxNzU0YzBjMTYxZGM0NDM3MzA4MWJlZWY1MjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDI3IDIxOjE0OjA2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEZyZWVCU0Q6IFBBVENIRVM6IDM0ODkzODc6IEluc3RhbGwgRnJlZUJTRCAxMCBoZWFkZXIgZmlsZSAocGx1cyBvdGhlciBtaXNzaW5nIHZlcnNpb25zKQorCitjb21taXQgM2Q3MmM5ZTc4ZjJhZDgxN2M5ZDFkODI5NzczMjdiYmIyMGQ2M2FiOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjcgMjE6MDY6MzEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzNDg3ODY3OiBEb24ndCBza2lwIG1pc3NpbmcgaWZYVGFibGUgZW50cmllcyAoaWZDb25uZWN0b3JQcmVzZW50IEZBTFNFKQorCitjb21taXQgMTI5MDY1NzhhYjMwY2Y3NzZkMDgwYzBlZjMwMjViMzAzMzRkNzY1NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxNjoxNzo0NSAyMDEyICswMjAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IEZpeCBldmVuIG1vcmUgbWVtb3J5IGxlYWtzCisKK2NvbW1pdCBjY2ZkNWNhNmZlMTAzMTNkNjE4MWQyNGJiYjE3OTc4MjVhOTdkYTEwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDE1OjUxOjE2IDIwMTIgKzAyMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogRWxpbWluYXRlIGR1cGxpY2F0ZSBjb2RlCisKK2NvbW1pdCA5ZmRhMjY2ODcyMmYwOGRkYmZkZDY3YTIyMzlkOGIwMjFkYjY0YTgzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDI2IDE1OjQ4OjQ2IDIwMTIgKzAyMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogV3JpdGUgYSBsb29wIGFzIGEgbG9vcAorCitjb21taXQgY2JjMThlYjc2M2JhNmRmNjllZjcwNjY4YTU0ZDc1YmYzNWU3OTUwMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE1hciAyNiAxNToyNDowOCAyMDEyICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBGaXggbW9yZSBtZW1vcnkgbGVha3MKKworY29tbWl0IGM3NzI1MTkyNDc4YWVjMDE4ZmI0YWVmYTYwOTQ2ZTA0YTQwNmMwMGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTM6NDM6MjQgMjAxMiArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQXZvaWQgcmVhZGluZyBmcmVlZCBtZW1vcnkgd2hlbiBkZWxldGluZyBhIHJvdyBmcm9tIGEgdGFibGUKKworY29tbWl0IGE2YmU3Mzk1NjZmMzEwZDc0NDFmZDdmNTQ5ODllMzk0NDZmN2ExNDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgMjYgMTM6NDI6MjggMjAxMiArMDIwMAorCisgICAgRXh0ZW5kIERJU01BTi1QSU5HLU1JQiB0ZXN0CisKK2NvbW1pdCA4YTliNTcyOTE0NTNjYjhhZWMyOGU3NjZjNTk0NzAxZWQxOWM0ZmM2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDI2IDIxOjAzOjQxIDIwMTIgKzAyMDAKKworICAgIEZpeCBmb3IgRHJhZ29uRmx5IDMKKworY29tbWl0IGU1YzlhMzJmNzllYWMyZTg1NTI3YzljZjA1MDg3Y2RhZTliMzVhNmMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgMjYgMjA6NTk6NTMgMjAxMiArMDIwMAorCisgICAgRHJhZ29uRmx5IG5lZWRzIF9LRVJORUxfU1RSVUNUVVJFUyB0byBjb21waWxlIGlwdjYgY29kZQorCitjb21taXQgY2Q0M2JjMDlhMzliZDk3ZmY1ZTcxOWEyY2UyMzJjZTQyNDYwMGE2NQorQXV0aG9yOiBEYXZpZCBJbWhvZmYgPGRpbWhvZmZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjQ3OjE3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIIDM1MTA0NTQ6IEFsbG93IHRoZSB1c2Ugb2YgMC4wLjAuMC8wIGFzIGFsaWFzIGZvciBkZWZhdWx0CisKK2NvbW1pdCBlMmZjMTVmOWU1YTZlM2UzNmJlNWY0ODk2MDFjYmY2YmY3MzE5MTdmCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjIxOjM4IDIwMTIgKzAxMDAKKworICAgIEZpeCBUQ1Agc3RhdGUgdmFsdWVzIGZvciBEcmFnb25GbHkKKworY29tbWl0IDQzMmZlM2RkZjU0ZjJjOThmOTM2OTU5NDY5Y2I5YjAxNGQ1OTlmMDYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MTA6NTIgMjAxMiArMDEwMAorCisgICAgUmVxdWlyZSBwZXJsIHRvIGRvIHBhc3NfcGVyc2lzdCB0ZXN0CisKK2NvbW1pdCAzN2QyNzcwY2Y1MGM5ODAyM2VlYmE5MGUyNWQzNzJiZmY3MzE2YWRhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlci5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MDY6NDAgMjAxMiArMDEwMAorCisgICAgRml4IFRDUCBzdGF0ZSB2YWx1ZXMgZm9yIERyYWdvbkZseQorCitjb21taXQgODZhOTQ4ZDg2OTFlODgxZDU1NTkxZGNhYmRkYzI3MzljZTcyYjMwZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQG5iYS1saW51eC5zYi5zdGF0c2JpYmxpb3Rla2V0LmRrPgorRGF0ZTogICBTYXQgTWFyIDI0IDE1OjAxOjM3IDIwMTIgKzAxMDAKKworICAgIFByb3Blcmx5IGZpbmQgcGFzcyBoZWxwZXJzIGZvciB0ZXN0aW5nLgorCitjb21taXQgZmUyNmEzYzRmMjlmMDQ2YmY2NWVkNTJlOWQ5NDA1NGI2NzVmYmM0YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE1hciAyMiAwOTowNDo0MiAyMDEyICswMTAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IExpbWl0IHNvdXJjZSBjb2RlIGxpbmVzIHRvIDgwIGNvbHVtbnMKKworY29tbWl0IDc0NWJhZmNkY2M5YzhlODQ2MTZkNGUyNzRkYjJhMzg0YmYyMzRkYTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBNYXIgMjIgMDg6NTU6MDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogTWFrZSBwaW5nIGltcGxlbWVudGF0aW9uIGluZGVwZW5kZW50IG9mIG50cGQgY2xvY2sganVtcHMKKworY29tbWl0IGRhNjkyNWU2NzYzY2FkYmUwMmY0YThiYmZlNjhhMzYyZTUzNWFkNWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTA6Mzg6MzYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE1NGRpc21hbnBpbmdtaWJfc2ltcGxlCisKK2NvbW1pdCBmYTYwNmRkN2NhNmFmZjkzMDhkNGU4YjAxYmJjZGUxNDhmNDQxMjcxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDE2OjQ5OjIxIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IE1ha2UgcGluZ2luZyBsb2NhbCBpbnRlcmZhY2UgYWRkcmVzc2VzIHdvcmsKKworY29tbWl0IDYxN2E4M2JhNzk5NTc1Yzg0YzY2ZjZiMWM0ODBlZjYzMzE2MWE2NGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTY6Mjg6NDYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IGEgc29ja2V0IGxlYWsgdHJpZ2dlcmVkIGJ5IHBpbmdpbmcgYSByZW1vdGUgaG9zdAorCitjb21taXQgNjI1ZjU1YzI3MmVjNjI4MWUzOGQ4ZTMwZWI1M2ZkNTE1MTZiMDBhZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE1hciAyMiAwOTo1NDo1NSAyMDEyICswMTAwCisKKyAgICBESVNNQU4tUElORy1NSUI6IENvbnZlcnQgYSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgdmFyaWFibGUgaW50byBhIHN0YWNrIHZhcmlhYmxlCisKK2NvbW1pdCBiNDhmMTlhZDRiNGFhNjhjM2UxNmUyYTcyZGYzN2I5YzBjZDM2YzRhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDE2OjI0OjA3IDIwMTIgKzAxMDAKKworICAgIERJU01BTi1QSU5HLU1JQjogQWRkIG1vcmUgZGVidWdnaW5nIHN0YXRlbWVudHMKKworY29tbWl0IGQ3NGNiMzk2NjE3NTg5MjU2MmY1ZTNhOWIxNjgzYWNiYTJjMjJlMDcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTE6NDU6MTggMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IHNldmVyYWwgbWVtb3J5IGxlYWtzCisKK2NvbW1pdCAwYjFhNzc2NzQ2NzhjYzlhMTViZTNlNzcwMGQzY2VmNjUwZWQwMmM3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTWFyIDIwIDEyOjAwOjMwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IERvIG5vdCBzZW5kIHRoZSBjb250ZW50cyBvZiB0aGUgc3RhY2sgb3ZlciB0aGUgbmV0d29yaworCitjb21taXQgMTM5MDIzY2QzYWI1MTYzMWNjMTBlMjg2NmQ3MWFiY2Y5OWFlNGMxYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE1hciAyMSAwODo1NjowNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVBJTkctTUlCOiBEb24ndCBjYWxsIGV4aXQoKSB1cG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUKKworY29tbWl0IDE2OWI2YWFhN2I2MTgyN2NjMWFkMGIzYWVlYWUzYTcyMjlkZDI1ZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMjEgMDg6NTM6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogRml4IElQdjYgc29ja2V0IGxlYWsgaW4gZXJyb3IgcGF0aHMKKworY29tbWl0IGEwYmUzMmFkMDUzYTcxZmE5NjEzNGQ1NWU1NDJiYjA3ZDRmMDI5N2QKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTE6NDM6NDYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERJU01BTi1QSU5HLU1JQjogQXZvaWQgdGhhdCBob3N0IG5hbWUgcmVzb2x1dGlvbiBmYWlsdXJlIGNhdXNlcyBhIGNyYXNoCisKK2NvbW1pdCBiZjliZmY2NDU1Njc4N2Q3NjZlZTJlZjJkNTc4YWZiOTIwNzE5ZjNhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTWFyIDIxIDA4OjUxOjU1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBESVNNQU4tUElORy1NSUI6IENvbnZlcnQgcHJpbnRmKCkgc3RhdGVtZW50cyBpbnRvIHNubXBfbG9nKCkgYW5kIERFQlVHTVNHKCktc3RhdGVtZW50cy4KKworY29tbWl0IDVkNzRjMDEyNDU1MjNhOWQ4ZGIxZWRhMjdkMWVmYWUyZWJjMTA0ZmIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6NDA6MDIgMjAxMiArMDEwMAorCisgICAgTmV3IE1JQjogVlJSUFYzLU1JQgorCitjb21taXQgNWIzOGYwNjJiOTliNmVmMzY3MDhlMmM3ZGU0OTY1YTMxOTI2MTJlOQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODozNDo0OCAyMDEyICswMTAwCisKKyAgICBGb3Igc2FmZXR5LCBzaXplb2YgdGhlIHJpZ2h0IHZhcmlhYmxlIGluIG1lbWNweQorCitjb21taXQgZTVmODI3ODJkYTA1ZWZhN2MwZTZkYzJiZjVhNDFlZTExODY4ZjQ2OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODozMzoyMSAyMDEyICswMTAwCisKKyAgICBGaXggZm9yIGhyU1dSdW4gZGF0YSBmb3IgRnJlZUJTRAorCitjb21taXQgODMyNzU2NWU4MjMyNzBkMTBhNDUwNDU2OGVkYmU1YjVhZTMyM2E1NQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODozMTo1NCAyMDEyICswMTAwCisKKyAgICBDbGVhbiB1cCB2YXJpYWJsZXMgZm9yIE9wZW5CU0QvTmV0QlNECisKK2NvbW1pdCAxNzBmNmYwMjdiZjRmOTE3NGI3MDczNTMwZGE0ZDA3ZjQwMGJiYTU4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjI4OjU4IDIwMTIgKzAxMDAKKworICAgIE1vdmUgZGVjbGFyYXRpb25zIGluIGZyb250IG9mIHN0YXRlbWVudHMKKworY29tbWl0IGRiYjQ1NzNiNjlmYWU4NWNkYzkzMWIyODkyYjVjZTRlNWIxNmIzMjEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6MjM6MzYgMjAxMiArMDEwMAorCisgICAgUmVxdWlyZSBrZXJuZWxfbmV0YnNkIGZvciBOZXRCU0Q2CisKK2NvbW1pdCBmMTE2ODFmMTVhYWQ3ZDlhNTJmYTI5ODEyZWNiYjUwN2YxYjdmZTI0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyMSAxMjozNjozOCAyMDEyICswMDAwCisKKyAgICBDaGVjayBmb3Igb2xkIHRhcmJhbGxzIChhbmQgdW5wYWNrZWQgZGlzdHJpYnV0aW9ucykgYmVmb3JlIHN0YXJ0aW5nLgorICAgIFRoZXNlIGNhbiBjb25mdXNlIHN0ZXBzIHN1Y2ggYXMgIm1ha2UgZGVwZW5kY2hlY2siLCB0aGF0IGRvIGEgJ2ZpbmQnCisgICAgb24gdGhlIGN1cnJlbnQgdHJlZSwgYW5kIHdvdWxkIGRlc2NlbmQgaW50byBzdWNoIHVucGFja2VkIHNvdXJjZSB0cmVlcy4KKworY29tbWl0IDQ3MGRjZDRiNmMzZmYxMWZmMGEzNTMyYTczNDBhNTZjZmZkNjkwOTgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDIxIDEyOjMyOjEzIDIwMTIgKzAwMDAKKworICAgIERvbid0IHJ1biAibWFrZSBkb2NzOyBtYWtlIG1hbmNwIiBpZiB0aGVyZSdzIG5vIE1ha2VmaWxlIHByZXNlbnQKKworY29tbWl0IGM5YWM0MjAzNDNlMTZkZjJiNzA2NWY1YmYyNzkwZGY0NGUyNDdmYmEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDIwIDEwOjI2OjEwIDIwMTIgKzAwMDAKKworICAgIEFsbG93IGRpc3RyaWJ1dGlvbiBhcyBwYXJ0IG9mIG5vcm1hbCBOZXQtU05NUCBwYWNrYWdlcy4KKworY29tbWl0IDU5OTlmNjBjNTc3MjNmMjNmM2MyNTRhZjU3ZmRiMTBhZjMwMWE4ZWIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBNYXIgMTggMTk6MDM6MDggMjAxMiArMDEwMAorCisgICAgUmVnZW5lcmF0ZQorCitjb21taXQgMjc1ZDIwNDAzNmE2MDdlM2RmNTBlODQ0N2Q0YmM3NTVlOWRiMDJmZAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIEF1ZyAyOCAyMToyOTowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgLS1kaXNhYmxlLWFwcGxpY2F0aW9ucy8tLWRpc2FibGUtYWdlbnQgdG9nZXRoZXIgd2l0aCAtLWVuYWJsZS1taW5pbWFsaXN0CisKK2NvbW1pdCBiZGNjYzg3NTcxMDI5NWFhY2Y1MGY3MWViMWMxZDJlZTk3ZjMzNmZlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWFyIDE2IDIwOjEwOjU4IDIwMTIgKzAxMDAKKworICAgIERvIG5vdCBkZWNsYXJlIHRoZSBsb2NhbCB2YXJpYWJsZXMgZm9yIG9wYXF1ZV9zcGVjaWFsX3R5cGVzIHVubGVzcyB0aGF0IG9wdGlvbiBpcyBzZXQuCisKK2NvbW1pdCBiODBhNjdkYTA1MmFkY2ExYjVhNjQ0ZGI4M2E3ODJlMTVjMjIzN2MzCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWFyIDE2IDE5OjUwOjAzIDIwMTIgKzAxMDAKKworICAgIENoZWNrIHRoYXQgdGhlIGRhdGEgZXhpc3QgYmVmb3JlIHRyeWluZyB0byByZWFkIGl0CisKK2NvbW1pdCBlZmFlODZiYmE1OTYyNDkxZDQyYjc3YjkzNTE5MWEzZWIyNWRkOTM5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgTWFyIDE0IDAxOjA1OjMzIDIwMTIgKzAxMDAKKworICAgIFBhcnRpYWxseSByZXZlcnQgIk1lcmdlIHJlbW90ZSBicmFuY2ggJ29yaWdpbi9WNS03LXBhdGNoZXMnIGludG8gVjUtNy1wYXRjaGVzIgorICAgIAorICAgIENvbW1pdCBkMzVhMTg2MDIxN2U3MjNlNGY4NjZkZDk4ZWY2NjIxNjY1OTM0YzRhIGFjY2lkZW50YWxseSByZXZlcnRlZAorICAgIAorICAgIDRhMmU1YmNkNTZjZDJhZmIzNmViMTVkNzU0ZTJmZWU4ODhkZDUwYzAgKGhyaF9zdG9yYWdlIGlzIGEgcHJvcGVyIHJlcGxhY2VtZW50IGZvciBocl9zdG9yYWdlKQorICAgIDBkZDFlNTQ1NTdkMWJhNDk4YjU1ZDAxN2IwYTkzZThjY2Y5YmQ1MjIgKENIQU5HRVM6IHNubXBkOiBVRFAtTUlCOiBSZXBvcnQgdGhlIHByb3BlciBhZGRyZXNzIGluIHVkcExvY2FsQWRkcmVzcykKKyAgICA1MTE2ZDQ4Mzc4ZWNmMDNlNzIyZjMwMTBhZDQ3YmYyMmEzZmJjYjhjIChSZWR1Y2Ugc2NvcGUgb2YgcHJlZml4X3ZhbCBzdWNoIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgd2FybiBhYm91dCBhbiB1bnNlZCB2YXJpYWJsZSkKKyAgICAxMGY1NjZmNGQ0Y2JiM2UyMDUwMjNjMjM2NjkyODllNGJmZDA4OWNiIChwZXJsL1NOTVAvU05NUC54czogRml4IGEgY29tcGlsZXIgd2FybmluZykKKyAgICAKKyAgICBhbmQgcGFydCBvZgorICAgIAorICAgIDZlNzRkNjRmODVhNTlkNTBlNDYxZGI0YzM0YWM3NmY5ZGU0NjhiZmIgKEF2b2lkIHVzaW5nIGdyZXAgb3B0aW9ucyAtcSBhbmQgLXcgYmVjYXVzZSBncmVwIGluIFNvbGFyaXMpCisgICAgCisgICAgVGhpcyByZXZlcnRzIHRob3NlIHJldmVydHMuCisKK2NvbW1pdCBhYWVkZDU5Y2MyZGE3MDE1MjdkYzJkMjYxZDRlOWY4NWYxNmU3NTA0CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTWFyIDExIDIwOjU3OjM4IDIwMTIgKzAxMDAKKworICAgIEFsbG93IG1ha2UgdGVzdCB3aGVyZSB0aGUgc291cmNlIHBhdGggY29udGFpbnMgdGhlIHN0cmluZyBOZXQtU05NUCB0byBzdWNjZWVkLgorCitjb21taXQgNGI5NGQ3OTY5MThhNGVlYWU2OGFiMjFhYTUzZDQ0NGE4YjVjMjkyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE1hciA5IDA4OjA0OjU5IDIwMTIgKzAxMDAKKworICAgIFVuYnJlYWsgY29tcGlsYXRpb24gb24gRnJlZUJTRCA0CisKK2NvbW1pdCAxMGZlNmI4MzMyNGFkMzdkMThiOTM3Y2M4YzZkZTk0ZGU1MzRkMDM1CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciA4IDEzOjA0OjA3IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUxCisKK2NvbW1pdCBlMTEyMmVkYzFhNWZlNzk3NmIwNjUwNDQxMzRkMzllN2RiNTk4NWVhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciA4IDEyOjQzOjE5IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUxCisKK2NvbW1pdCBhNjEzZDNhODM0OTEyMjA2ZDFiYTU5NzFlNDQxYTNlYTZiMzZhZjIzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciA4IDEyOjMzOjAzIDIwMTIgKzAwMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjYuMi5wcmUxCisKK2NvbW1pdCAwZWYzNGU2NTE5ZGZjYjgyYzk3ZGY4NDI3NTQ3YzA4ZGNmODFlNjlhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1hciA4IDEwOjExOjMwIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBGaXhlZCBzbm1wZCAnLWQnIG9wdGlvbi4KKyAgICAKKyAgICBOb3cgaXQgZHVtcHMgcGFja2V0cyBhZ2Fpbi4KKworY29tbWl0IDhlNjk3NDJmMTQzZTRmYzExMTk2ZTViMmVkNjZjOGY3ZjUzZmQwMmYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDYgMDk6MjQ6MjEgMjAxMiArMDAwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjYuMi5wcmUxCisKK2NvbW1pdCBjNGUwMGI4YzNlMTAxMGNkY2FiNWU2YzAyZDYwZDc1ZGY5YzZkY2YyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciA2IDA5OjI0OjA1IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjYuMi5wcmUxCisKK2NvbW1pdCAzOTQ5MDEwNGEzYWI1ODIzNWFhY2UyZjlkODcxYzI2NmRjNDQ4NWVlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1hciA1IDA5OjA2OjUyIDIwMTIgKzAwMDAKKworICAgIE1hcmsgdGhlIGNoYW5nZXMgbWFrZSBhcyBwYXJ0IG9mIHRoZSByZWxlYXNlIHByb2Nlc3MgYXMgc3BlY2lmaWMgdG8KKyAgICB0aGUgcGFydGljdWxhciBicmFuY2ggYmVpbmcgcmVsZWFzZWQuICBWZXJzaW9uIHRhZ3MsIGNoYW5nZWxvZyBlbnRyaWVzCisgICAgYW5kIHRoZSBsaWtlIHNob3VsZG4ndCBwcm9wYWdhdGUgdG8gbGF0ZXIgYnJhbmNoZXMuCisKK2NvbW1pdCA0YTJlNWJjZDU2Y2QyYWZiMzZlYjE1ZDc1NGUyZmVlODg4ZGQ1MGMwCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDUgMjA6NTk6MzggMjAxMiArMDEwMAorCisgICAgaHJoX3N0b3JhZ2UgaXMgYSBwcm9wZXIgcmVwbGFjZW1lbnQgZm9yIGhyX3N0b3JhZ2UKKworY29tbWl0IGNlODU4MzI5MzJjY2Q5MTZjNDIzMTkxMTRjNDA4ODVhNDY2YTlkMGUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgNSAyMDo1Njo0MCAyMDEyICswMTAwCisKKyAgICBNb3JlIGZpeGVzIGZvciBTb2xhcmlzIHNoCisKK2NvbW1pdCAwZGQxZTU0NTU3ZDFiYTQ5OGI1NWQwMTdiMGE5M2U4Y2NmOWJkNTIyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTU6MDg6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFVEUC1NSUI6IFJlcG9ydCB0aGUgcHJvcGVyIGFkZHJlc3MgaW4gdWRwTG9jYWxBZGRyZXNzIGluc3RlYWQgb2YgMC4wLjAuMC4gTWFrZXMgdGVzdCBUMTYwc25tcG5ldHN0YXQgcGFzcyBhZ2Fpbi4gRml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQgYzc2ZmI5NmY2NWUzM2JhMmZkMjEyYTkyMWU4YzM4NjE1NWVlNWM3YS4KKworY29tbWl0IDUxODkxN2U5ZjM5ZjdhOWQzYzNiZjNhODY1ZThhYzBlMzAyNmQ2MDAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgNSAxNDowNDo1NCAyMDEyICswMTAwCisKKyAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYzogRml4IHNvdXJjZSBjb2RlIGluZGVudGF0aW9uCisKK2NvbW1pdCAyNjUxOTA5Y2NjZWFiZmNmYWRhZjk0MmMwMjQ1MGUyOGZlODM3ZGM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTm92IDkgMTI6MDQ6MDQgMjAxMCArMDAwMAorCisgICAgUGFzc2VzIG5vdyBvbiBNaW5HVyB0b28uCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk2NTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBlNDFmMTE1ZTQwMzA0Yzk0MWJhMTdkNjdlMjQ3MTA3MjJkOTA3NDFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTM6Mzk6MTcgMjAxMiArMDEwMAorCisgICAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogQXZvaWQgdXNpbmcgZ3JlcCBvcHRpb25zIC13IGFuZCAtcSBiZWNhdXNlIGdyZXAgaW4gU29sYXJpcycgZGVmYXVsdCBwYXRoIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGVzZS4KKworY29tbWl0IDUxMTZkNDgzNzhlY2YwM2U3MjJmMzAxMGFkNDdiZjIyYTNmYmNiOGMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgNSAxMDo0NzoyMCAyMDEyICswMTAwCisKKyAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6IFJlZHVjZSBzY29wZSBvZiBwcmVmaXhfdmFsIHN1Y2ggdGhhdCB0aGUgY29tcGlsZXIgZG9lc24ndCB3YXJuIGFib3V0IGFuIHVuc2VkIHZhcmlhYmxlIGlmIGl0IGlzbid0IG5lZWRlZC4KKworY29tbWl0IDZlNzRkNjRmODVhNTlkNTBlNDYxZGI0YzM0YWM3NmY5ZGU0NjhiZmIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgNSAwOToyMjozMSAyMDEyICswMTAwCisKKyAgICB0ZXN0aW5nL2V2YWxfdG9vbHMuc2g6IEF2b2lkIHVzaW5nIGdyZXAgb3B0aW9ucyAtcSBhbmQgLXcgYmVjYXVzZSBncmVwIGluIFNvbGFyaXMnIGRlZmF1bHQgcGF0aCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlc2Ugb3B0aW9ucy4KKworY29tbWl0IDEwZjU2NmY0ZDRjYmIzZTIwNTAyM2MyMzY2OTI4OWU0YmZkMDg5Y2IKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgNSAxMDo0NzozOSAyMDEyICswMTAwCisKKyAgICBwZXJsL1NOTVAvU05NUC54czogRml4IGEgY29tcGlsZXIgd2FybmluZworCitjb21taXQgNDRhYTI2NTg5MWNkNTYzZjdmNDExNGVmMjVkY2Y3YWFmM2IxNGU5YQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCisKKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgorCitjb21taXQgZGFlNGUxNmJlODYxMTc4NjFmNjNkMWEyZjk4MWFkMzYxNDE4ZjVjNgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCisKKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgorCitjb21taXQgMjhmNjIyNmYyZTIyOGI4Y2EyNDg0ODk3MzVmODY1MDJiMmNjZTBhMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXIgNSAwOTowNjo1MiAyMDEyICswMDAwCisKKyAgICBNYXJrIHRoZSBjaGFuZ2VzIG1ha2UgYXMgcGFydCBvZiB0aGUgcmVsZWFzZSBwcm9jZXNzIGFzIHNwZWNpZmljIHRvCisgICAgdGhlIHBhcnRpY3VsYXIgYnJhbmNoIGJlaW5nIHJlbGVhc2VkLiAgVmVyc2lvbiB0YWdzLCBjaGFuZ2Vsb2cgZW50cmllcworICAgIGFuZCB0aGUgbGlrZSBzaG91bGRuJ3QgcHJvcGFnYXRlIHRvIGxhdGVyIGJyYW5jaGVzLgorCitjb21taXQgNDAwMjJhNjk3OTU4MjU5Y2NmYmIzZmVkNDRlYjNjNDcyZjVlODM3ZQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1hciA0IDEwOjM3OjQxIDIwMTIgKzAxMDAKKworICAgIFNvbGFyaXMgc2ggZG9lcyBub3QgdW5kZXJzdGFuZCAidGVzdCAtZSIKKworY29tbWl0IDc3M2FmMGM0MmUwNzdiZWJkYWVjZjFjMGNhZjM5MzI4NWE3Njg4ZjEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMyAxNzoxOTozMCAyMDEyICswMTAwCisKKyAgICBDbGVhbiB1cCBuc3JvbGx1cCBjb21wbGljYXRpb25zCisKK2NvbW1pdCBlZTcxMDQ5YzNlMjFjMWQwZTM0MjQyOTcxMzY2NTJiYmUwZTM5ZDg1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDMgMTY6NDk6NDEgMjAxMiArMDEwMAorCisgICAgbWliZ3JvdXAvaWNtcC5jOiBhZGp1c3QgaWZkZWZzIHRvIG1ha2UgaXQgY29tcGlsZSBvbiBCU0QncworCitjb21taXQgY2U5NjAwMzYxZTY2NWRkZTE3YWY5ZDhhYjE2ZDdjZTg1ZGMwNTY0MworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM5OjU1IDIwMTIgKzAxMDAKKworICAgIGRvdDNTdGF0c1RhYmxlIGhhcyBidWdzIDotKAorCitjb21taXQgZGZmYWNmNmZhMDc1NWUxNzAwY2JhYzI1Yjg0NDE4NWFiZDgwN2EwYQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM4OjEwIDIwMTIgKzAxMDAKKworICAgIHBhc3NwZXJzaXN0IHRlc3QgbmVlZHMgL3Vzci9iaW4vcGVybAorCitjb21taXQgODcyNjk5NWM3YThhZWY2NzRjNGYxNjRiMTg3MWMzN2JiZGNkYWQ1MAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM2OjU4IDIwMTIgKzAxMDAKKworICAgIGdyZXAgLXcgZmFpbHMgd2l0aCBPcGVuQlNEIGFuZCBTb2xhcmlzIDEwLTY0CisKK2NvbW1pdCAxZWI0NzQ1YjIzY2MzYTgzOTg2NGU3ZjZlYTI4MzU1YjA1NjZlYjY3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MzU6NDkgMjAxMiArMDEwMAorCisgICAgU29sYXJpcyBuZWVkcyAvdXNyL3hwZzQvYmluL2dyZXAgdG8gdW5kZXJzdGFuZCAtcQorCitjb21taXQgOTk1NGI0Yjc0MWZkOGM2M2Q2MTI4YmQwNTI3Mjk4YzhlNGU5ODlmYworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjM0OjQ1IDIwMTIgKzAxMDAKKworICAgIE1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBwcm9wZXIgc3JjZGlyIGZvciBvdXQtb2Ytc291cmNlIGJ1aWxkcworCitjb21taXQgNzgzNjkwMDJiZTI3MTFmMGFhODc2YjY0YTRlMTBiMDkwY2MyNDFjZAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1hciAyIDIxOjMzOjMxIDIwMTIgKzAxMDAKKworICAgIE5vdCBhbGwgbWFrZSB2ZXJzaW9ucyBkZWZpbmUgJChSTSkKKworY29tbWl0IDk0MjQ1YjI5YTNjZGE4OTQ3NWM2ZWFiNWQ5NDkzYzY2NTdmZjM4ZTMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMToyNDoyNCAyMDEyICswMTAwCisKKyAgICBNYWtlIGF1dG9jb25mIDIuNjggaGFwcHkKKworY29tbWl0IDQ0YWNkNmMyODVmYjU2MTRiNGM5NjExYjFhYmRlY2E5ZGQyOGU0YmIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXIgMiAyMToxMjo0NyAyMDEyICswMTAwCisKKyAgICBGaXggc3BlbGxpbmcgb2YgbWliIG1vZHVsZSBmc3lzX2dldGZzc3RhdHMKKworY29tbWl0IDFmYTFmZWUzNjkzZjY3YjgyMDIyMzgwNmIzZDczYWZkNGM1MGVjMTgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIEZyaSBNYXIgMiAwMTozNzoyMCAyMDEyICswMTAwCisKKyAgICBTaWxlbmNlIGEgY2xhbmcgd2FybmluZy4KKworY29tbWl0IDkzMjYzYjk4YTVkYjM0NGNmMmM0ZDQ4OWM0Mzk3MWU3YjI5Y2RiMDMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTM6Mzc6MjAgMjAxMiArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnByZTEKKworY29tbWl0IDVhMTc1NDI4Yjk3M2QyZWE4NTUzZTI5ZmVjZjk0Y2YxNTY2YWE4NTgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTE6NDg6MTggMjAxMiArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnByZTEKKworY29tbWl0IDM2NDI3NmExYzVhYTY2Y2FhMjNlYjViN2YxMTFmZGViNWFmNzFmYTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTE6NDU6MTAgMjAxMiArMDAwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNS4yLnByZTEKKworY29tbWl0IDczNTk4MzQwMTcyZWZmNzU3MjlhNmQ1NzE5MmI4MTcxZDViYmYwMGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTA6NDI6NTYgMjAxMiArMDAwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjUuMi5wcmUxCisKK2NvbW1pdCBmMzIxNDQwMjY3MmNhMTk5ZmQ1MzFlNjYxMjJiZjk2YzRkOWE0ZWI3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEwOjQyOjM5IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCisKK2NvbW1pdCAyZTc0YWNiNmYxOWU0NzI5Y2VkZTBhYjQzZTkzMTk2MWNiMjNhYWVhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgTWFyIDEgMDk6MTg6MzkgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogQnVnIDMxNTI4NDE6IERvIG5vdCBpbnN0YWxsIHRoZSB1dGlsX2Z1bmNzIHN1YmhlYWRlcnMgdGhhdCB3ZXJlIHJlbW92ZWQgaW4gNS43CisKK2NvbW1pdCBiNzEwOTY0NmI5NWE3MDcxM2QxYWQ5OTFkNDFiY2NkNTdjMGJiM2ViCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgTWFyIDEgMDg6NDg6NDggMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogQnVnIDMxNTI4NDE6IEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzIGludHJvZHVjZWQgaW4gNS42CisKK2NvbW1pdCA0MzJjYmI3YTU1MDFhYjkwZDY2ZDBhODNlNzMxZTczNDNiYzA0YjM3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRmViIDI1IDEwOjEzOjE1IDIwMTIgKzAxMDAKKworICAgIENvcnJlY3QgdHlwb3MKKworY29tbWl0IDZhNmM5YmJjNzU4NGYxOTZhMTE4NWNjMTkzNTIwNGYxMjA2ODExZWQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBGZWIgMjkgMDg6NTU6MzUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogQnVnIDMxNTI4NDE6IEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzCisKK2NvbW1pdCBkNTE1ZTJhNmU0YzJhMWM0ZDg0NzM0Y2M3YjJkMGIyZmM1YTg5NGFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxNTo1NjoyMSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ4NzkxOTogRml4IGNvbXBpbGF0aW9uIHdoZW4gY2FjaGluZyBpcyBkaXNhYmxlZAorCitjb21taXQgYWY4MzY4ZWQ4ODk4YTc4ZDA4NjhiNDdhZjQ2YmM5ZGIwN2QxYzc2NAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTU6NTA6NTYgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzQxNDc3MzogRW5jb2RlIGludGVnZXIgdmFsdWUgdXNpbmcgQVNOX0lOVEVHRVIKKworY29tbWl0IDE5ZTI3MTU4MDdmZTA2ZmQwYmFlZGY4ODE2NTAxMWFlZTkzM2U3NTUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDE0OjA1OjM0IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IG1hbjogQlVHUzogMzQ5MDcwODogQ2xhcmlmeSB1c2Ugb2YgY29tbW9uIGNvbW1hbmQtbGluZSBvcHRpb25zCisKK2NvbW1pdCA2NWY3OTYyZjkzMmM5Yjc1YzViYmJiMDQ3ZDFlMjZhZTYwOTc4ZTUzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMjoyMzozNCAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHUzogMzQ4OTYzMTogRml4IGluY29ycmVjdCBoYW5kbGluZyBvZiBVQ0QgbW9uaXRvcmluZyBmbGFnCisKK2NvbW1pdCBhYzE2NjA1MWI2YTA5MmRkNGE1OTQzMjZlYzg1ZTJmNjk5YjYyNTQ3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMTo1Nzo0MSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBCVUdTOiAzNDc0NTkwOiBEb24ndCBtYXRjaCB1bmRlcnNjb3JlcyB3aXRoaW4gdGhlIHNvdXJjZSByb290IGZpbGVuYW1lCisKK2NvbW1pdCA4NzliZjcwNzlkMzRmYTQ2ZjZmY2Y1NGEwMWM4NTAwYmVhZWNlNTlhCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxMDo0NDo0MSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHUzogMzQ2MDM2NDogRml4IHVzZSBvZiBibG9jayBmYWN0b3Igd2hlbiBkZXRlY3RpbmcgZXJyb3IgY29uZGl0aW9ucworCitjb21taXQgMDM0ZjFjNTcyZjY4M2VhNDI4NTgzMDc0NDcxZTVkNWQxM2I1MTgzNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTA6MjI6MjAgMjAxMiArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgdGVzdHMgd2hlbiBjb25maWd1cmVkIHVzaW5nIC0tZW5hYmxlLXJlYWQtb25seQorCitjb21taXQgMzY0MjNlMjEwYmZiNjVlZjEyMWM2YTY2YWVjNDM4YzdjMjM3ZDNkZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTA6MDM6MjUgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDU0MTY4OiBjb25maWd1cmU6IEZpeCBidWlsZGluZyB3aXRoIC0tZW5hYmxlLXJlYWQtb25seQorCitjb21taXQgZWVkMGJjYmM0M2ZlYTE4MjU5ZjBmNjNiMjA4MWI2ZDEwNTM1YTA1MgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMDk6Mjc6MTEgMjAxMiArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgYmFieS1zdGVwcyB3aGVuIGNvbXBpbGVkIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0LgorICAgIEluc3BpcmVkIGJ5IGJ1ZyAjMzQ1NDE2OAorCitjb21taXQgZWM2YTIzMDMwZTVhMjA3MmMxOWMxOGMxZDljMTI0Mzg3ZGE1NmI3YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxODo0Mjo1OCAyMDEyICswMDAwCisKKyAgICBBZGQgLWxydCB0byBORVRTTk1QTElCUyBzdWNoIHRoYXQgY2xvY2tfZ2V0dGltZSgpIGNhbiBiZSBmb3VuZAorCitjb21taXQgZjEzMzIwNTAwMjk0YmIyNDBmNjNjNmRkN2QyZTlhMjIwOGViNzQwZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTY6NTI6NTEgMjAxMiArMDAwMAorCisgICAgU2tpcCBTRVQtYmFzZWQgdGVzdHMgd2hlbiBjb21waWxlZCB1c2luZyAtLWRpc2FibGUtc2V0LXN1cHBvcnQKKworY29tbWl0IGM0Mjc2YjYyMzJjMjkxNDVjMDM5ODg0ZTZiNWE2YjZkYTRiOTM4MzcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gRmViIDI3IDE1OjU0OjQ1IDIwMTIgKzAwMDAKKworICAgIE9taXQgU0VULXJlbGF0ZWQgY29kZSB3aGVuIGNvbXBpbGluZyB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydCAoaW5zcGlyZWQgYnkgcGF0Y2ggIzM0MjQ5MzApCisKK2NvbW1pdCAwMWM5MzBlZGNjMjU3MDBkNmI1ZmIwMzc2ZjU1YTI2NDI1ZTEzZmIwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNToxNzoyMiAyMDEyICswMDAwCisKKyAgICBPbWl0IFNFVC1yZWxhdGVkIGNvZGUgd2hlbiBjb21waWxpbmcgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQKKyAgICAoaW5zcGlyZWQgYnkgcGF0Y2ggIzM0MjQ5MzApCisKK2NvbW1pdCA5NDg0ZDgzMjAzYzRlMmQ4MjA0MTZiZTY2NWZhODMzYWE3MDQ0NGQyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgRmViIDI0IDE0OjAwOjMyIDIwMTIgKzAxMDAKKworICAgIFJld29yayBjb21taXQgYjRhMTk1MDVhMDU4MTZlOTRlMDFkZTk3YmY5OWFjMzdmY2RjNmQyMy4KKworY29tbWl0IDJiN2YxMzQ5NTIyODYzNWQ4MTZlNThiMjE3NGRjMTI0ZGQwY2YzOWYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBGZWIgMjQgMDc6NDM6MjIgMjAxMiAtMDgwMAorCisgICAgc2V0IE1FUkdFX0FVVE9FRElUIGJlZm9yZSBtZXJnaW5nIHRvIGF2b2lkIHRoZSBmdXR1cmUgZ2l0IDEuNy4xMCBmb3JjZWQgbXNnCisKK2NvbW1pdCBlMWI5MTBiMGJlOTM0MzU4NmFlOWVkYmE2ZjQ2MDQwYWYzMTVmY2RkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIzIDEwOjI3OjU0IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBpbml0X2FnZW50KCkgKyBpbml0X2ttZW0oKTogUmV0dXJuIGFuIGVycm9yIHZhbHVlIGluc3RlYWQgb2YgaW52b2tpbmcgZXhpdCgpIGlmIGFjY2VzcyB0byBrZXJuZWwgdmlydHVhbCBtZW1vcnkgaXMgZGVuaWVkCisKK2NvbW1pdCA0NjNlZWQyMTIwZjlkMTkxYmMyMjY3MzQ5NmE0OWU4MTc0NjY0ZTRiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIzIDEwOjAzOjMxIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZSBvYnNvbGV0ZSBzeW1ib2wgTkVUU05NUF9FWElUX09OX0JBRF9LTFJFQUQKKworY29tbWl0IGMzNmFiNzFhNGUwOTZmMTZjYzVhNTU1MzNmMDgwYzlhOTQwMDk5MTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMDg6NTM6NTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogRnJlZUJTRDogc25tcGQgKyBhcHBzOiBTZW5kaW5nIFVEUCBwYWNrZXRzIHdvcmtzIGFnYWluIGZvciBub24tcm9vdCB1c2VycworCitjb21taXQgZWRlYmRkYmE5MzBmOGIxNDcyZmEwYmQyMGZjNDEzZWY4Y2Y0NjRhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEZlYiAyMSAxMTozMTo0NiAyMDEyICswMTAwCisKKyAgICB0ZXN0aW5nL1JVTlRFU1RTOiBGaXggYSBiYXNoaXNtCisKK2NvbW1pdCBiNGExOTUwNWEwNTgxNmU5NGUwMWRlOTdiZjk5YWMzN2ZjZGM2ZDIzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDIwIDE2OjU4OjQ3IDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBhYm91dCAlbGQgdmVyc3VzIHRpbWVfdCBvbiBzeXN0ZW1zIHdoZXJlIHRpbWVfdCBpcyBhIHN5bm9ueW0gZm9yIGxvbmcgbG9uZyBpbnN0ZWFkIG9mIGxvbmcuCisKK2NvbW1pdCBkODk3OGVjYzgyMTFiZTdjMWU3OTA1ZjFlMjE1YmIwNmRlZDI2NmI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgRmViIDIxIDEyOjMyOjI1IDIwMTIgKzAxMDAKKworICAgIEZpeCBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4uYyBmaWxlIGhlYWRlcgorCitjb21taXQgYWE3NjZkMTk2ZTUyODdmNmNhNzliNThhMzQ1YjAyNDI2MGFiYTM1NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiAyMCAxNzowNzoxMyAyMDEyICswMTAwCisKKyAgICBJRi1NSUI6IGRvIG5vdCB0cmlnZ2VyIHVuZGVmaW5lZCBiZWhhdmlvciAoPj4gMzIgb2YgYSAzMi1iaXQgdmFyaWFibGUpIHdoZW4gdXBkYXRpbmcgYSBjb3VudGVyIGFuZCBpZmlfaXBhY2tldHMgaXMgYSAzMi1iaXQgdmFyaWFibGUKKworY29tbWl0IGMzZmI2ZGQ5ZTZiOTllOTU0MjQ5MzE4ODk4Nzg3MWZjNTAxN2NiM2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMDk6NDU6NDUgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBvbiBzeXN0ZW1zIHdoZXJlIG1vZGVfdCBpcyB1bnNpZ25lZAorCitjb21taXQgZjhhM2VmMGQzZDRlNTMwMjc5OTAwMTAxMDQ5YjhkZTk4YTQ0YTZmYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjQ4OjUyIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWIgKyBzbm1wZCArIHNubXB3YWxrOiBBdm9pZCB0aGF0IHN5c3RlbSBjbG9jayBjaGFuZ2VzIChlLmcuIGJ5IG50cGQpIGFmZmVjdCBjb2RlIHRoYXQgbmVlZHMgcmVsYXRpdmUgdGltZQorICAgIENIQU5HRVM6IHNubXBkOiBNYWtlIHN1cmUgdGhhdCB0aGUgcmFuZ2Ugb2YgdGhlIFNOTVB2MyB2YXJpYWJsZSBzbm1wRW5naW5lVGltZSBpcyAwLi4yMTQ3NDgzNjQ3IG9uIGFsbCBzdXBwb3J0ZWQgc3lzdGVtcyBpbnN0ZWFkIG9mIDAuLjQyOTQ5NjcyIG9uIHNvbWUgc3lzdGVtcyAoaS5lLiB3cmFwYXJvdW5kIGFmdGVyIDQ5NyBkYXlzKQorICAgIENIQU5HRVM6IHNubXBsaWI6IEFkZCBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soKSwgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcigpLCBuZXRzbm1wX3JlYWR5X21vbm90b25pYygpLCBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBEZXByZWNhdGUgYXRpbWVfZGlmZigpLCBhdGltZV9uZXdNYXJrZXIoKSwgYXRpbWVfcmVhZHkoKSwgYXRpbWVfc2V0TWFya2VyKCksIG1hcmtlcl90dGlja3MoKSwgbmV0c25tcF9tYXJrZXJfdXB0aW1lKCksIG5ldHNubXBfdGltZXZhbF91cHRpbWUoKSwgdGltZXZhbF90dGlja3MoKSwgdWF0aW1lX2RpZmYoKSwgdWF0aW1lX2hkaWZmKCkgYW5kIHVhdGltZV9yZWFkeSgpLgorICAgIENIQU5HRVM6IHNubXBsaWI6IENoYW5nZSB0aGUgbmFtZXMgb2YgdGhlIHN0cnVjdCB0aW1ldmFsIG1lbWJlcnMgb2YgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgd2VyZSB1c2VkIHRvIHN0b3JlIGEgd2FsbCBjbG9jayB0aW1lIGJ1dCB0aGF0IGRvIG5vdyBjb250YWluIGEgbW9ub3RvbmljIGNsb2NrIHZhbHVlCisKK2NvbW1pdCBjMTk3NjBmMzMzM2M5MmZhYzVkNTBlOTc2OGNkZjkzOTIxOGJjNDg3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgRmViIDE1IDA5OjQ1OjAzIDIwMTIgKzAxMDAKKworICAgIHNubXBsaWIvc25tcHYzLmM6IEZpeCBzb3VyY2UgY29kZSBpbmRlbnRhdGlvbgorCitjb21taXQgYTZkYjIzOTk0NWUxOTVkZTVhOTBmYTE4MzcwMGIyN2E2ZWNiMjhkMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiA3IDAwOjExOjE0IDIwMTIgKzAxMDAKKworICAgIEZpeCBwb3NzaWJsZSBtZW1vcnkgbGVhayBmcm9tIHJlY2VudCBkZWNsYXJhdGlvbnMgcGF0Y2gKKworY29tbWl0IDBmYmJiOWE5ZTI5MDZhN2FmOTU2OTU3MDYxZDQ4NTg3NDQ2MmFlYTkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgNiAyMDo0MzowNCAyMDEyICswMTAwCisKKyAgICBEbyBub3QgbWl4IGRlY2xhcmF0aW9ucyBhbmQgc3RhdGVtZW50cworCitjb21taXQgZjMwOGQ1YmFmYjA1ZDc4ZWQ0MDMwYzRlY2ZmMzI0YjZjYmRhNjgwZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE1OjI1OjMwIDIwMTIgKzAxMDAKKworICAgIEZpeCB0d28gY29tcGlsZXIgd2FybmluZ3MgaW4gYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMKKworY29tbWl0IDQ2ZjBmYzFiN2ZjMjZhMjI1NzYzYmM2NWNjYTUyMGExYzU5ZjAyNTEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgNiAyMDo1NDozMiAyMDEyICswMTAwCisKKyAgICBzZW5kbXNnIGRvZXMgbm90IGxpa2UgSVBfU0VORFNSQ0FERFIgaWYgYWRkciBpcyBJTkFERFJfQU5ZCisKK2NvbW1pdCBkZWJhYzQ5OGZlODQxMDExMDEwN2EyZmU2NGY4YWZiNzQ4ZWRhYTA3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEZlYiA2IDE2OjQ4OjA5IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IGFkZGVkIE9DRlMyIChPcmFjbGUgQ2x1c3RlciBGUykgdG8gaHJTdG9yYWdlVGFibGUgYW5kIGhyRlNUYWJsZQorCitjb21taXQgZmFmYzk5Y2Q4OWU3M2VjN2UwMGJmNzM2MGQwYjRmYTYxOTQ0YTRmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDExOjE4OjM0IDIwMTIgKzAxMDAKKworICAgIFNpbXBsaWZ5IGNhbGN1bGF0ZV90aW1lX2RpZmYoKSBhbmQgY2FsY3VsYXRlX3NlY3RpbWVfZGlmZigpCisKK2NvbW1pdCA3YWYyMDEzZGU4YmYxYjM3OWMwNzZkYjRlMTA0NTA4ZTE3ODc0ZDNlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NTU6NTggMjAxMiArMDEwMAorCisgICAgRml4IG9yZGVyIG9mIGZlYXR1cmUgI2lmbmRlZiBhbmQgRG94eWdlbiBjb21tZW50IGJsb2NrCisKK2NvbW1pdCBiYmQ2N2Y2MzUzMGY1ZWYwYmZjOTQ4ZmM1OGRmZTZhOTNmOGY4Njc5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTU6MjU6MzAgMjAxMiArMDEwMAorCisgICAgRml4IHR3byBjb21waWxlciB3YXJuaW5ncyBpbiBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYworCitjb21taXQgNDJhNjZhZWZmMjViOWU5ZWY2MzVhNDA0YWQyZjUyMTJmOWU4Y2YwZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjQ3OjU0IDIwMTIgKzAxMDAKKworICAgIFJlbmFtZSB0d28gZnVuY3Rpb24gYXJndW1lbnRzCisKK2NvbW1pdCAzZmU3MmIzYjk5YjdlNGIyYjk4MjM2M2RmYzRmMmQ4ZDEzZjQwNTkyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTM6NDk6MjIgMjAxMiArMDEwMAorCisgICAgQ29udmVydCBzbm1wX3NlbGVjdF9pbmZvKCkgZG9jdW1lbnRhdGlvbiB0byBEb3h5Z2VuIGZvcm1hdAorCitjb21taXQgZTlkYjI2NmFlNDhkMDVhN2E2Y2I1ZDcxYjRiZGVhN2FkODA4ZWY1ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDExOjE3OjU3IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBBZGQgbmV0c25tcF9nZXRfbmV4dF9hbGFybV90aW1lKCkKKworY29tbWl0IGQwODA0NGNiOWU1NzAyZmJmNTQ5ZTE0NDI1ZjQyNzk0MjU5ZDhhMjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAwOTozODowNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQWRkIG5ldHNubXBfZ2V0X2FnZW50X3J1bnRpbWUoKQorCitjb21taXQgYTA1YzI3YzI3MTFjYjQxNTgyYTNiNGMzMWUzOGIwZTkzNTMwYjYyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjUxOjMzIDIwMTIgKzAxMDAKKworICAgIEZpeCBzcGVsbGluZyBpbiBhIHNvdXJjZSBjb2RlIGNvbW1lbnQKKworY29tbWl0IDkxMGQ3YjBkOTkxODM2MDliOTUyOWIwNGMzZjI5MzMwZWI2NjEwMjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBGZWIgNiAxNDozODoxMiAyMDEyICswMTAwCisKKyAgICBSZXBsYWNlIG5ldHNubXBfdGltZXZhbF91cHRpbWUoKSBieSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKQorCitjb21taXQgNDNhODNmNmM2YTk2Y2MyMzE2YjcwZWVjYWNmMTI3ZWI2OTEzYzdhNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDExOjE5OjE1IDIwMTIgKzAxMDAKKworICAgIFVzZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvciBpbnN0ZWFkIG9mIG1lbWNweSgpIGZvciBjb3B5aW5nIHN0cnVjdCB0aW1ldmFsCisKK2NvbW1pdCAyZmU1NzllZmIxY2IzYTc0ZjgyODAzY2EzMjM5MjhmNmI4ZTRiNWMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgRmViIDMgMTQ6MDQ6MDIgMjAxMiArMDEwMAorCisgICAgTWFrZSBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMgYnVpbGQgYWdhaW4gb24gbm9uLUxpbnV4IHN5c3RlbXMuCisgICAgCisgICAgU2VlIGFsc28gY29tbWl0IDM0NWExZTQyNTQ4MTJjYjllZGMxZDI3NDQ5MWI3NjY4MWE5ZGJhMWUuCisKK2NvbW1pdCA4ODFkZTZhYjczNTUyNzdhNWMxMTZhMDA4ZmJlNTEzMjkzYjA1MDM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgRmViIDMgMTA6MDg6MjEgMjAxMiArMDEwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgUm1vbiBNSUIgaW1wbGVtZW50YXRpb24KKworY29tbWl0IDQ2Mjk5MzNjMGQzYjNmOWY0YmE1ODM1MzRmNzlhMzdmYjk2MzM4MTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAyMDowNTozMSAyMDEyICswMDAwCisKKyAgICBNb3JlIGNvbXBpbGVyIHdhcm5pbmcgZml4ZXMKKworY29tbWl0IGU5YjVhM2RlZTZmOWFmYWI4YjkwYTI5MzkyMDQwNjMyYjA3NWFkN2EKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNjo1Njo1NSAyMDEyICswMTAwCisKKyAgICBVc2UgU05NUF9NSU4oKSBpbnN0ZWFkIG9mIG1pbigpCisKK2NvbW1pdCBhZTQ1MmM3N2I0MTExMzlkNmI1ODAwZmZjZjg4ZDQ4ZTliNDc5MmE4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTU6MjM6MzggMjAxMiArMDEwMAorCisgICAgUmVzdG9yZSBjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2Ny4KKworY29tbWl0IGM3ZDExZmEwMGY5OTk1ZGRiOWZlM2Q0OTk0YTNlOTc5MGRhMmUxODkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNToxODo0MCAyMDEyICswMTAwCisKKyAgICBSZXN0b3JlIGNvbW1pdCBkYmI4Nzk1YTdkZjU5NWYwNjAzZjJlYzYxNzA0Nzk5ZjRjNDgyNjY3IHBhcnRpYWxseS4KKworY29tbWl0IDAwZmQ2MjcyMGVjNDU0ZjVhNjkwZGU0ZmViYTA4MjIzY2ZiMmMzZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNDo0ODo0NCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEF2b2lkIGNyYXNoIGR1cmluZyBzaHV0ZG93biBkdWUgdG8gaW52b2tpbmcgcGVybF9kZXN0cnVjdChOVUxMKQorCitjb21taXQgZDllMjI5ZDgxYWJlYWYxOTFlZjJjY2IwNzc4NDI4ODVjMjMwZDYyMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE0OjQ3OjQxIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZSBhIHN1cGVyZmx1b3VzIGRlY2xhcmF0aW9uCisKK2NvbW1pdCAxZTJlMmFmNmNhZTgzMGYzODFlODdhMjQ0ZDAyOWViODZiZjNmY2NlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTM6MjA6MzcgMjAxMiArMDEwMAorCisgICAgcGVybC9TTk1QL2V4YW1wbGVzL3BpbmdtaWIucGw6IEFkZCBlcnJvciBjaGVja2luZworCitjb21taXQgMjQxYTE0MWUzMWYxNjg0ZmM2Y2Y3MGNjNGEwMGNjZTYzNmZkMzUyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDExOjI4OjM3IDIwMTIgKzAxMDAKKworICAgIE1ha2UgY29uZmlndXJlLXRpbWUgRVZQX01EX0NUWF9jcmVhdGUoKSBkZXRlY3Rpb24gd29yayBvbiB0aGUgNS40IGJyYW5jaC4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgNDZlYWMwMmU5YTI3YmY0ZjMwNjhlNzk1Y2FiODkxZjA1YTg0ODg3MC4KKworY29tbWl0IDZkOWQxNGZlYWFhMmQwZmVjNjhiNGQxNTg5NDRkMzJjYjA0ZmYxYmMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMToxMjowMCAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgdGhlIGNoYW5nZXMgdGhhdCBicmVhayB0aGUgYnVpbGQgb24gdGhlIDUuNCBicmFuY2ggZnJvbSBjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2Ny4KKworY29tbWl0IDhhYmU0OWUzMGM5N2M4OTgzZTgzYjQ1YTM1YzcxNmZlOTFmNjZiZWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBGZWIgMSAxMTo1Njo1OCAyMDEyICswMTAwCisKKyAgICBGaXggc2V2ZXJhbCBjb21waWxlciB3YXJuaW5ncyBpbiB0aGUgRElTTUFOIE1JQiBpbXBsZW1lbnRhdGlvbnMuCisKK2NvbW1pdCBmOWZiMGE1MzMzNzVlMTRkYzM3MDAyNWEwYjJmYmM3NjFiZjI3YmU2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMDk6NTY6MDIgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJIT1NULVJFU09VUkNFU19NSUI6IGZpeCBhIGNvbXBpbGVyIHdhcm5pbmciIGJlY2F1c2UgaXQncyB3cm9uZy4KKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IGFhNmI3OWJjMTI0YTdiN2E4ODVkN2U1MDM1YWIwNmFhM2VjZWY2MTMuCisKK2NvbW1pdCBjYTRhNGZlMjVlZmQyNzE0ZjhmMTk2MWI5Nzg1NjYxNjU2M2Y0MmM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTA6MjE6NDkgMjAxMiArMDEwMAorCisgICAgLmdpdGlnbm9yZTogQWRkIHB5dGhvbi9idWlsZAorCitjb21taXQgMTNhZGE1NjU1OGI0NGUyOGQxMzU1YzBkY2UxZDkyMWYzNzQ2ZDU0OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6NTM6NDkgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJSZXZlcnQgIkZpeCBmb3JtYXQgc3BlY2lmaWVycyB0byBhdm9pZCB3YXJuaW5ncyIiIC0gdGhlcmUgKmlzKiBORVRTTk1QX1BSSW8gaW4gVjUtNisgYnJhbmNoZXMKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IGFhNTI4YmQyMmM3NDkzY2E4ZDY3ZTY3OGZiZjYxNWNhMGY2M2VhNmQuCisKK2NvbW1pdCBhYTUyOGJkMjJjNzQ5M2NhOGQ2N2U2NzhmYmY2MTVjYTBmNjNlYTZkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDoxMzoxOCAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgIkZpeCBmb3JtYXQgc3BlY2lmaWVycyB0byBhdm9pZCB3YXJuaW5ncyIgLSB0aGVyZSBpcyBubyBORVRTTk1QX1BSSW8gaW4gVjUtNCBvciBWNS01IGJyYW5jaGVzCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCAzOTBjMDExNGM4ZWMwYmRiMjdiMDhiNmY3NGUzZjZlZjNhNjI5ODFiLgorCitjb21taXQgMmZiOTliZTlhYTg2YTZjYTM0OWI4NmQ0ZWY4YmM3MjZlZDlmMmE4MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6NTg6MzUgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCBlNWMzNTU4OWUwYmY0MTZiZmQwMzZiZDQ2OGY0MmFhZWFiMjVlNzg4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDo1NTo1NiAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDM0NWExZTQyNTQ4MTJjYjllZGMxZDI3NDQ5MWI3NjY4MWE5ZGJhMWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjUxOjI2IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGVycm9yIGhhbmRsaW5nIGluIGluaXRfaWNtcCgpLgorCitjb21taXQgYzMwMzU0OWE1OWZhOGMyZjIwYTlkOGJmMWU5ODVmYmM4YWJkZTZhOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6NDY6MjkgMjAxMiArMDEwMAorCisgICAgUmV3b3JrZWQgX3JlZ2lzdGVyX2V4dGVuZCgpIGVycm9yIGhhbmRsaW5nLgorCitjb21taXQgOWMyMGUyN2E3MDI2ZmMwMzBkYTNiMzI4YjlhMmUxYjRmMzY2NzBjZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MjE6MjggMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAyMmZkMGJmYzJkZjBlMWY2MDIwZGMzYzUwYTc1M2RkZjI4YTQ1OTljCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNToyMDoyMiAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDVkNjFlNTdiYWY1ODBjNzgyNTJjMGFiYjAwOThjMDdiYjA1YWYxN2MKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjE3OjA1IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgM2MzZWVhZTgwZDc5NmYyNzU5N2M5MDFlN2ZmMjA0NmM3NjllZjRiOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDg6MDkgMjAxMiArMDEwMAorCisgICAgTWFyayByb3dyZXFfY3R4IGFzIGZyZWVkIHNvIG5leHQgaXRlcmF0aW9uIGFsbG9jYXRlcyBuZXcgb25lIGluc3RlYWQgb2YgcmV1c2luZyB0aGUgZnJlZWQgb25lLgorCitjb21taXQgYWY5YWJkNTNjMjMzN2M5MGE2OTFhN2IwNDRmZjNmOTdjMTAwMzE2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDU6MTAgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCBjZjk0NjVmNTQxODFlNjJlMjFhOWIxMDIxOTEzMTEwN2EzZDJlYmY2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowNDowNiAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDc4NzFmMmIwOWI4YjUyZjM0YTllNTc3ODQyNjY0NTkwNTMxNjViY2IKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjAyOjUwIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgN2EzN2YzM2QzMTBjOTU5ODYwN2JjMzIzZDliZGJmOTFhYWY3MmM5NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDA6NTEgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAzZTQ1ZjcwMjYyNDllNDUzNTBlZGFhYzg1MzM3NDIzYWEwZTk1ZDhiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDoxMzoxOCAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgIkZpeCBmb3JtYXQgc3BlY2lmaWVycyB0byBhdm9pZCB3YXJuaW5ncyIgLSB0aGVyZSBpcyBubyBORVRTTk1QX1BSSW8gaW4gVjUtNCBvciBWNS01IGJyYW5jaGVzCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCAzOTBjMDExNGM4ZWMwYmRiMjdiMDhiNmY3NGUzZjZlZjNhNjI5ODFiLgorCitjb21taXQgNjE5MzY3NjJlNjQxYzE4ZGI3NWFhNTEyNWEzM2U3NzZjNjc3YWRjNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTE6MTM6MzkgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZnJlZWluZyByZWdpbmZvIHR3aWNlIG9uIGVycm9yIGluIGEgdGVtcGxhdGUgYW5kIGFsbCBpdHMgaW5zdGFuY2VzLgorCitjb21taXQgNDk2NDM3NDMwNDE1ZmJhZmViMWNjZDQ3NzRmMWNhMDBkNjI3ZWExZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAyMCAxMTowNDoxMyAyMDEyICswMTAwCisKKyAgICBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOiBGaXggY29tcGlsZXIgd2FybmluZ3MgaW50cm9kdWNlZCBvbiBWNS42IGJyYW5jaAorCitjb21taXQgNWI0YTI0Y2RjZWUxYmMzZDgyNjMzY2NhZmViOTZmY2U5NTM0OWM1OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAyMCAwOToyMjoyNyAyMDEyICswMTAwCisKKyAgICB1bml0IHRlc3RzOiBmaXggYSA2NC1iaXQgY29tcGlsZXIgd2FybmluZworCitjb21taXQgY2JmMWM5MWJhZjcxOTFiZTVmYTI3ZDgxYmNmODcxNDMzMWEyYzEyZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAyMCAwOToyMDo0MiAyMDEyICswMTAwCisKKyAgICBVc2Ugc25tcFRhcmdldFBhcmFtVGFibGVfZGlzcG9zZSgpIHRvIGZyZWUgYSBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QuCisgICAgCisgICAgRml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQgZGJmMjZhMDVhMDRlZjI0YzQ3MzQ2ZTVhZGRhNDhlMzM4NDk4ZTcxZi4KKworY29tbWl0IGFhNmI3OWJjMTI0YTdiN2E4ODVkN2U1MDM1YWIwNmFhM2VjZWY2MTMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMDk6MjA6MzEgMjAxMiArMDEwMAorCisgICAgSE9TVC1SRVNPVVJDRVNfTUlCOiBmaXggYSBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAzYTc2YjQzZTExZmZmYWRhNjMyZmNjYjg0OGFiNTAwZTg3NmFkNDhiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDE4IDE2OjIxOjA1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogQXZvaWQgdGhhdCBhbiBTTk1QIHNldCB3aXRoIFVzZUVudW1zIGVuYWJsZWQgY2F1c2VzIGEgc2VnbWVudGF0aW9uIGZhdWx0CisKK2NvbW1pdCA4NGRlYzlmYTkyYjBhYTJkNThlYjcwMjAzMzBmNGY5OGU1MTU0MzIxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDE4IDE0OjM4OjIxIDIwMTIgKzAxMDAKKworICAgIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IEZpeCBtb3N0IGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCAzOGNmMjE4YzNmMWE3Mjc3ODZlMjI3YTVkM2ZiMTg2ZmQwZjFhMTVmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxNDo1MDoxMyAyMDEyICswMTAwCisKKyAgICBGaXggYSB0eXBvCisKK2NvbW1pdCA0NTQxMjIyNDQxMjJiZmRiNmY2N2NhYjMxMjU2ZDdiNDYzNzJlOWUxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxNDozMDoxOCAyMDEyICswMTAwCisKKyAgICBGcmVlIHRtU3RhdGVSZWYgb24gZXJyb3JzLgorCitjb21taXQgMDExOTAyMmRhYTU5YzczYmZlYzBkYTIzODZkMDYyOGYxNGU2ZGFiNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6MDk6MTIgMjAxMiArMDEwMAorCisgICAgRnJlZSBmaW5nZXJwcmludCB3aGVuIGl0J3Mgbm90IG5lZWRlZC4KKworY29tbWl0IDBlODRjZDMwM2EwODI2N2RlYzc4ZjZkODFjOWJiMDdlM2Q4M2ExMWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjQ4OjI2IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDYzZGM4NDZhNzk0OWNlNjk3YjNlMjhjNTQzZGMxMTA1ZTYzYTIyNTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjA4OjI4IDIwMTIgKzAxMDAKKworICAgIEZyZWUgY2VydGlmaWNhdGUgZmluZ2VycHJpbnQuCisKK2NvbW1pdCBjZTFmMjg0YTYzZWI4MTY0NGIzZTMyNjA2Y2JlMzliNjdlMWRmZjJhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxNDozNzowOSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA3ZTIxNDEzY2E2ZjJlZmQ3YTNhZmI2MmM2MmI2NDQ4ODFiOGJkMWU3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzo0NjozMCAyMDEyICswMTAwCisKKyAgICBQcm9wZXJseSBhbGxvY2F0ZSBhbmQgZnJlZSBlbmdpbmVJRC4KKworY29tbWl0IDM0Yzk2Mjg4MjYwN2MzNjM4YTJmYTI1YTJhYzUzMTQ5MmQ3MWM3ODcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjM3OjI1IDIwMTIgKzAxMDAKKworICAgIEZyZWUgbG9jYWxseSBhbGxvY2F0ZWQgdG1TdGF0ZVJlZi4KKworY29tbWl0IGY1N2FlNTMxZGM1NjU4YWJjZDY1YjE2Mjc2MTU1MjUyMzhkMTZkMmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjIwOjI0IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDUzNmJjNTc1NTZjMzE0MTU2MWVhNGExOTQ4MTBiMTYyOTBhNjkxZWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjE1OjQ3IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIGlmIHRoZSBmdW5jdGlvbiBhY3R1YWxseSBkb2VzIHNvbWV0aGluZy4KKworY29tbWl0IGEwNzc3ZDMwN2RiY2FmMjE5ZWUwMTg0YTBmYmFiOWQ0ZTVkNmFhMGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEzOjAxOjQ1IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDhiOTdhNzFjOGU3OTU5NDI4ZWI0ZDRlOGQ5MGU5MDk2ZDQzZmYwOWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEyOjU3OjI2IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDJjMTUwN2MyMjAzMDU0OWFlNjYwYzBlMjExZmJkYzVjNzVlYzVjNTcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEyOjUzOjQ3IDIwMTIgKzAxMDAKKworICAgIEZyZWUgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5IG9uIGVycm9ycy4KKworY29tbWl0IDY1ZjJiN2JjZDRmZTAzOTA2YWExYTExNWFiNjBhODliOGFlOTMzZDUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDE5IDEyOjUxOjM2IDIwMTIgKzAxMDAKKworICAgIENsb3NlIG9wZW4gZmlsZXMgb24gZXJyb3IuCisKK2NvbW1pdCAwZTUyZTRmNjZkNDQ3NjZiZWEzNzQ3MzU1NmM3OGU1MjE5Yjk1NDYxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNTo0NTozMyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCBkYmYyNmEwNWEwNGVmMjRjNDczNDZlNWFkZGE0OGUzMzg0OThlNzFmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNTo0MjoxNyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA3NDhkYTg0YjFmZDY1NGUzMzhiYzcwMWU4ZjllNWRhMjI5MTg3ZjFjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNTozMjowNCAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCBlYjIxNzE0NmZkNTQwMzZlYTQyMDJiZmVmNzhiYmY3NzRkN2UzODJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNToyMzoxMCAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA5YmEzOGVlYzY2MTM4ZWMxZjYxM2VhOGQwNGUxNTgxMzBjNzEyMWJjCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNToxODo1NSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCBkOWQ5MzhkMzAxOGMyN2Y1MzI3N2JjNWU1OTU3ODUwMDQ5MGMxZDA5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNToxNjozOCAyMDEyICswMTAwCisKKyAgICBDbG9zZSBvcGVuIGZpbGUgb24gZXJyb3IuCisKK2NvbW1pdCBkNWU4MTdkNWJkNTE4ZDlhYzZhMGQ2MGUwZTE0MWRkNjRmMjdhZDE5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNToxNDoxMiAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCAyYWU2OGYwNTlkZjlkNzRiMDc0ZDEyZjU5YzE4NDc0NjZlZDU3NmNkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNTowMzoxNyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCBhMDBmM2Q0NjExMjFiNTQ1YWVkNzJhYzEyYjI0Mzg3OTFkY2ZjNGJhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNDo1ODozOSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA1OTg4NGJiNGQzNWFkMTM3NDdmZmE2NzIzNDM2ZGNhNTg3YTlhYjc3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNzowOToxMiAyMDEyICswMTAwCisKKyAgICBJbiBhYm92ZSBjb2RlLCBvbGVuZ3RoIGlzIGNoZWNrZWQsIHNvIGxldCdzIGNoZWNrIGl0IGFsc28gaGVyZS4KKworY29tbWl0IGJhNWQ1MjkyYjA0MzkzYjBjN2Q3ZDdlZDk2MTI0MTkyOTQxOGM2ZTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE3OjA1OjE0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcgTlVMTC4KKworY29tbWl0IGRhMmQ2YTcwMjhhMTNiOWVkZjNhNWM4NDMxNGQwZjFmZWVmNzY3MTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjQ0OjU2IDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZGVyZWZlcmVuY2luZyBOVUxMLgorCitjb21taXQgZjg4MDU0YTliNjliNmRlMjc0ZjdhMTRhNTliNDczMjNlNWU0ZTRjNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6Mzc6MzUgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgZGVyZWZlcmVuY2UgY29udGV4dCBpZiBpdCdzIE5VTEwuCisKK2NvbW1pdCA3YzRkNDU5ZThmMWY2NTJjYzIwOThjM2Q0YzgxZGU5MGE4NGVkNzEwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjozMDowOSAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZWZlcmVuY2UgTlVMTC4KKworY29tbWl0IGZjMTliN2YzM2I1ODc5MjdkMmEwMWU3MmQyM2QyMWI5YjE2OTZhYjMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjI1OjI2IDIwMTIgKzAxMDAKKworICAgIERvbid0IGNsb3NlIE5VTEwgZmlsZS4KKworY29tbWl0IDVlOTVjYTY3OTAwNzZiNzg4MDcyYTgwMWVlN2M4Mjk2OWQ5OTViY2IKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjE3OjA5IDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZGVyZWZlcmVuY2luZyBOVUxMIHdoZW4gYSB0cmFuc3BvcnQgZG9lcyBub3QgaGF2ZSBmX2ZtdGFkZHIuCisKK2NvbW1pdCBlZWQ2ZjVmOWI5YWU1NGQyY2VhYjY3YWQ4NWFkZGUxZjZhOGEyMWQ1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoxMzoxMyAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRlcmVmZXJlbmNpbmcgTlVMTC4KKworY29tbWl0IDQxY2RlNjhiNWZhNGIzOGQ4MTQ1MGNmOTFlMDgyY2RmYTgyNWU3Y2YKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjEwOjEwIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGlmIGEgcmVnaXN0cmF0aW9uIHdhcyByZWFsbHkgZm91bmQuCisKK2NvbW1pdCA1YjcyYTQwODUzODc2YTE4NmVmY2MwMDkwYTRlMzJjMjM1YjljMDVmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjowMzo1OCAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZXJlZmVyZW5jZSBOVUxMIHdoZW4gZGlmZmxlbiBpcyBTTVVYX01BWF9QUklPUklUWSAod2hpY2ggaXMgaGlnaGx5IHVubGlrZWx5LCBidXQuLi4pCisKK2NvbW1pdCBmYTZhOTEyZTQxYzVkMGZkMmE2MzY4OTRlODZiNjQyNmMwNzM3NWFiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNTozNzo0NCAyMDEyICswMTAwCisKKyAgICBDaGVjayBmb3IgbWlzc2luZyB2YWx1ZSBpbiBzZXRFdmVudC4KKworY29tbWl0IDQxMGI3MWRhNDI1Mzg5ZmVjYzI1ZDE0ZjQ5ZjIzNzUzNTgxNTc2YWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjI4OjQxIDIwMTIgKzAxMDAKKworICAgIERlcmVmZXJlbmNlIGVyZWcgb25seSBpZiBpdCBpcyBub3QgTlVMTC4KKworY29tbWl0IDE4NTI3MmQxYTBiOTEzNzc0MTg2ZjFiOTEzNWFlYWY2MzdlYmVkNTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjE3OjIxIDIwMTIgKzAxMDAKKworICAgIEFzIHBlciBhYm92ZSBjb2RlLCB0ZW1wbGF0ZV92MnBkdSBjYW4gYmUgTlVMTCwgc28gY2hlY2sgaXQgYmVmb3JlIGRlcmVmZXJlbmNpbmcuCisKK2NvbW1pdCA0OGU1ZWFkM2ZkMmMyYjM4NWRmNjk3MmM2NzUyNmZmNmJkYzMwNzY4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDo0MjoyMiAyMDEyICswMTAwCisKKyAgICBVcGRhdGVkIGxhc3QgZml4IHRvIG5ldyBlcnJvciByZXBvcnRpbmcgc3R5bGUuCisKK2NvbW1pdCBmMzNkMzM2MTVkNmQ4NWQwMDczNzI2NDczYzQxNDZjYmNkZjExY2VkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDozMDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBzaWdzZWd2IHdoZW4gZW1wdHkgY29uZmlnIGxpbmUgaXMgcGFyc2VkLgorCitjb21taXQgYjVkZjFlZWI0N2VkMzU1OWI2ZjRkOWVjY2NkYjI0MjEyNmU2Yzk5MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTQ6MTE6NTggMjAxMiArMDEwMAorCisgICAgRml4ZWQgKGhpZ2hseSB0aGVvcmV0aWNhbCkgc2lnc2VndiB3aGVuIHNwLT5zZWN1cml0eUVuZ2luZUlEIGlzIE5VTEwuCisKK2NvbW1pdCA2ZmVlZDYyOWE3MTg5OWMxMTMwOTY5NTlkODU0OWRjMTIwMWU4ZjlhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxMzo0MzozNyAyMDEyICswMTAwCisKKyAgICBBZGRlZCBOVUxMIGFuZCBsZW4gY2hlY2sganVzdCBpbiBjYXNlIHNvbWVvbmUgcHJvdmlkZXMgdmFsdWUgPSBOVUxMIGFuZCBub3plcm8gbGVuICgtPiBOVUxMIGlzIHRoZW4gZGVyZWZlcmVuY2VkKS4KKworY29tbWl0IDM1NWM1YWIyNjRhZjJhNjAyMGExZDhhOTIzZjgwZjExYjk0MjI5NWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDEzOjM2OjQxIDIwMTIgKzAxMDAKKworICAgIEV4dGVuZCB0aGUgTlVMTCBjaGVjaywgaS5lLiByZXR1cm4gaWYgdGhlcmUgaXMgbm90aGluZyB0byByZW1vdmUuCisKK2NvbW1pdCBkZGQ3OTQ4YWNhZDkzOGNkNDI5NzQ1MDVkZGNhNGYwMzcyMTE2NzA5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDExOjExOjI5IDIwMTIgLTA4MDAKKworICAgIHVwZGF0ZSBzcGFydGEncyBjb3B5cmlnaHQKKworY29tbWl0IDQxMjU2MDg2YTdhNTA0MTQ1MzQxOWNmZDZlNTYyYzdiNTVjNTZiMGEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMTA6MzI6MDQgMjAxMiAtMDgwMAorCisgICAgcHVsbGVkIGZ1bGwgY29weSBvZiBleHRyYWN0bmV3cyBmcm9tIG1hc3RlcgorCitjb21taXQgNjI1YTcwZGJkZmQ5OTAyZGE3OWVmYTI5M2ZlNmQyYWM4Y2NmMmIyZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAxMDoyNDoxOSAyMDEyIC0wODAwCisKKyAgICB1cGRhdGUgdG8gY2hhbmdlIHRvIHRoZSBuZXdlciBsb2cgZ2VuZXJhdGluZy9wYXJzaW5nCisKK2NvbW1pdCA2MmUzMmIxMzA4OWIyOWVkY2YyNzZmNjE1ZGE2N2U0NTA4ZmU3YmI1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDA5OjI5OjQyIDIwMTIgLTA4MDAKKworICAgIGNvbmZsaWN0aW5nIG1lcmdlIGZyb20gbWFzdGVyIGZvciBleHRyYWN0bmV3cworCitjb21taXQgNzAwODRkYTYxZDJiY2JkMmNmMWVkODFiZGMzYmY2Nzk0YzJhZmZiNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAxMyAxMTo0OToxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVNDSEVEVUxFUi1NSUI6IEhhbmRsZSAzMi1jaGFyYWN0ZXIgc2NoZWRDb250ZXh0TmFtZSB2YWx1ZXMgY29ycmVjdGx5LgorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCBiM2M0OTgyNTQyZTBhYjE1MWZiMzg4NDc1NGNkZmJjYjQ3MmRhNTJkLgorCitjb21taXQgMDRiZjNlMjg4MTU4ZWU4ODBlZGYyMzdlNDAwN2ZlZTM3ZDIwNDRkZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6Mzk6MzcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZW5kbGVzcyBsb29wIHdoZW4gU1NMX3JlYWQgcmV0dXJucyBlcnJvci4KKworY29tbWl0IGMxNTI2ZmNjYzA0NzRjMWRiMThjYWE5ZGJiODMzODUzY2RkZGUzY2MKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjEzOjIxIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgdHlwby4KKworY29tbWl0IGEyN2FhMTlkZjI4MzE1NmMwMzJjODFlYWVlNWUxMTU4NTlkMzhjMTcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjExOjMyIDIwMTIgKzAxMDAKKworICAgIERvbid0IHJlcGxhY2UgJ3JjJyB2YXJpYWJsZSwgaXQncyB2YWx1ZSBpcyBuZWVkZWQgb3V0c2lkZSB0aGUgbG9vcC4KKworY29tbWl0IDk4NWRmZjJiMDg3NmQ5NDgzYzQxNGZjY2VhM2VmNmJjNjNlMTQ1NjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjAxOjMyIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgZHVwbGljYXRlIGNvZGUuCisKK2NvbW1pdCAyZmQ3ODE4MzE4ZTdhNWRmZTk4ZjUyY2NmNzUwYzJhNjNlODI1ZGVkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNTowMDoyMiAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIGR1cGxpY2F0ZSBjb2RlLgorCitjb21taXQgMTVmMjExMzBiYTMzZGM5YWZkMTY0ZTUyZGZkNzRjOWNlYzBlOTIzMgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6NTg6MTQgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KKworY29tbWl0IDJhOGE4ZjJhYjdjZDc1ODI2YzVkNDFlYzNjZmQ1Y2UzZTk2MzRjZjMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE0OjM5OjI4IDIwMTIgKzAxMDAKKworICAgIHJlbW92ZSBkZWFkIGNvZGUsICdjcCcgaXMgYWx3YXlzICE9IE5VTEwgaGVyZS4KKworY29tbWl0IDM4ZmQ2Mzc4Y2MzMjc1MTgwZjYzYjhkOWI5YTQwNzJiM2RhYmY4ZTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE0OjI1OjA2IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgdHlwby4KKworY29tbWl0IGViZDkyZTE5YjEwYzBhMzhlMTdjZGU0MDc4NjRiNDVjMjZlMTczMjcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE0OjA3OjQzIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgdW5uZWNlc3NhcnkgaWYgKHZhbHVlKSBjaGVjayAtIHZhbHVlIGlzIGNoZWNrZWQgZmV3IGxpbmVzIGJlZm9yZS4KKworY29tbWl0IGM1Y2FjZjVjYWY5NzlkMDE4ZWE2Y2FlMWMwM2I4ZmRmMGIxMThkZmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDEzOjQ0OjQzIDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZG91YmxlIGZyZWUoKSwgJ2Rpcm5hbWUnIGlzIGFscmVhZHkgZnJlZWQgaW5zaWRlIHNlX2FkZF9wYWlyX3RvX2xpc3QoKSBpZiBpdCBmYWlscy4KKworY29tbWl0IGFjZGNlYjUwZWE2NmQ2YjMyM2M3NGVlMDIxZmI3N2U4MTBlNGU3YWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDEzOjQzOjE5IDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgbWVtb3J5IGxlYWsgd2hlbiBtYWxsb2MgZmFpbHMuCisKK2NvbW1pdCAxNzA1M2UzNGNmZTlhOGFiMzk1ZmI1MGY1YzNmMWRhZmM3MjQ3YWViCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxMzozMjo1NyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBkb3VibGUgZmNsb3NlKCkuCisgICAgTGludXggbWFuIHBhZ2UgZm9yIGZjbG9zZSgzKSBzYXlzOiBJbiBlaXRoZXIgY2FzZSBhbnkgZnVydGhlciBhY2Nlc3MgKGluY2x1ZGluZyBhbm90aGVyIGNhbGwgdG8gZmNsb3NlKCkpIHRvIHRoZSBzdHJlYW0gcmVzdWx0cyBpbiB1bmRlZmluZWQgYmVoYXZpb3IuCisKK2NvbW1pdCBhNjY0MWVkYjljYjc0ZmMyMjM2YjQyY2U1NTU0ZmMzMzI5OTU2NTUyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDE1OjIyOjM0IDIwMTIgKzAxMDAKKworICAgIE1pbkdXOiBTa2lwIHRlc3QgVDA2NSBpZiBub3Qgc3RhcnRlZCBmcm9tIGluc2lkZSBhbiBNU1lTIHNoZWxsCisKK2NvbW1pdCBhODgzZWYxOTgyZjMwMWIxNDg1ZDIyNzMwMTY3NDkyNzMzMGY1YjY3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiAxMSAxNToxNDo1MyAyMDEyICswMTAwCisKKyAgICBNb3ZlZCBkZWJ1ZyBvcHV0cHV0IGJlZm9yZSByZXR1cm4uCisKK2NvbW1pdCA0NTc1MTk2NzI4N2Q5NzY0MGVmZGNkZjhlNzdlOGQ0OTA5MzlkOGViCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDE0OjE3OjE4IDIwMTIgKzAxMDAKKworICAgIENvbnZlcnQgc3RydG91bGwoKSB1bml0IHRlc3QgaW50byBhIE5ldC1TTk1QIHVuaXQgdGVzdAorCitjb21taXQgMmMyZmE0ODMzNmE0ZjFmMTc3YzI5OTFkNjUxNWQyOWYzOTUzM2M0NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMzo1MDo0NCAyMDEyICswMTAwCisKKyAgICBDb252ZXJ0IHJlYWRfY29uZmlnX3JlYWRfb2N0ZXRfc3RyaW5nX2NvbnN0KCkgdW5pdCB0ZXN0IGludG8gYSBOZXQtU05NUCB1bml0IHRlc3QKKworY29tbWl0IDA3YzY2NmY2Y2VhMjdmMmIyYWI5YmMwOGFlZDBjYjYxMzNmZTM3NTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDExIDEzOjE3OjQ1IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGNvbW1pdCA3M2E1MjNlNDY4Mjc3ZjZkZjJlOTg0ODkxMzEzYjhiZThiY2UxOTIxOgorICAgIEZpZGV4IGRlcmVmZXJlbmNpbmcga2V5LT5pbmZvIHdoZW4ga2V5IGlzIGtub3duIHRvIGJlIE5VTEwuCisKK2NvbW1pdCAzYjY4NjU2NjI5NmRkODdiYzQyYjdmMTE2OWRhYWNkYjNjNDVjYzU4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDE4IDA2OjI1OjU2IDIwMTAgKzAwMDAKKworICAgIFdpbjMyOiBidWlsZHMgYWdhaW4gd2l0aG91dCB3YXJuaW5ncyB3aXRoIE1TVkMgNi4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0ODkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBmM2E3ZDFiMDk2MDlkYWQ2NDlmNThiYmRiNWI3ZTEwZDM5YjM5OGMxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gT2N0IDE3IDExOjA0OjA2IDIwMTAgKzAwMDAKKworICAgIEZvbGxvdy11cCBmb3IgcjE5NDc2OiBmaXhlZCBhIHR5cG8uCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5NDc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMmRlNzNiZDM2NWEzODFiOWMzNTNjYTUyMzA3NjllZWZiMWFjNzFlZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMTo0Mjo0MiAyMDEyICswMTAwCisKKyAgICBsb2NhbC9wYXNzdGVzdDogUmVtb3ZlIGFuIGluY29ycmVjdCBQQVRIPSBzdGF0ZW1lbnQKKworY29tbWl0IDY5OTUxM2YxMjM4ZTBhZGNlMWYxY2VjOThlMGQxNDcyOTNmYzUwNDcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBPY3QgMTcgMDk6MjU6NTEgMjAxMCArMDAwMAorCisgICAgTkVUU05NUF9SRU1PVkVfQ09OU1QoKS1yZWxhdGVkIGNsZWFudXAuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5NDc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNjM1OGRlZTcyZmIzNDdlMjYwMGEwYTdiZDIxZjIzMjcwZDNhMDBmNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAxMDo1ODoxNSAyMDEyICswMTAwCisKKyAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jOiBBZGQgYSBjb21tZW50CisKK2NvbW1pdCA1Mzk2YmZlMDMyYzhjYmM3M2M4ZmY1ZDRiMDg1ZWJhZGE5ZjU5ODQ2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEwOjMwOjE2IDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2Ugc3RybmNweSgpL3N0cm5jYXQoKSBieSBzdHJsY3B5KCkvc3RybGNhdCgpCisKK2NvbW1pdCBmZWIzYWYyOGRjYWUyMjAxNWFlODY1YTJlNWRkOGM0MTZlOTk5MWQ4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEwOjAyOjA4IDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2Ugc3RybmNweSgpL3N0cm5jYXQoKSBieSBzdHJsY3B5KCkvc3RybGNhdCgpCisKK2NvbW1pdCBiN2UxYWEyNTViYWU0YTM0NTNmOWVjYTY0NGE4NzY2MzQzNTFmMTFkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDIwIDE5OjM2OjI4IDIwMTAgKzAwMDAKKworICAgIENIQU5HRVM6IGxpYnNubXA6IGNoYW5nZWQgdGhlIHR5cGUgb2YgdGhlIGZvdXJ0aCBhcmd1bWVudCBvZiBuZXRzbm1wX3NldF9yb3dfY29sdW1uKCkgZnJvbSBjb25zdCBjaGFyKiB0byBjb25zdCB2b2lkKiBzdWNoIHRoYXQgbm8gY2FzdCBpcyBuZWNlc3Nhcnkgd2hlbiBwYXNzaW5nIGFub3RoZXIgZGF0YXR5cGUgdGhlbiBjaGFyKiBvciBjb25zdCBjaGFyKi4KKyAgICBDSEFOR0VTOiBXaW4zMjogY2hhbmdlZCBpbl9hZGRyX3QgZnJvbSB1X2ludCB0byB1X2xvbmcgc3VjaCB0aGF0IGl0IG1hdGNoZXMgdGhlIGRhdGF0eXBlIG9mIHNvY2thZGRyX2luOjpzaW5fYWRkci4KKyAgICBBbHNvLCBmaXhlZCBzZXZlcmFsIGNvbXBpbGVyIHdhcm5pbmdzIChtb3N0bHkgY2hhciAqIDw+IHVfY2hhciAqIG1pc21hdGNoZXMpIGFuZCByZW1vdmVkIHNvbWUgY2FzdHMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTgzNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAlhZ2VudC9hZ2VudF9yZWdpc3RyeS5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jCisgICAgCWFwcHMvc25tcHRyYXBkLmMKKyAgICAJc25tcGxpYi9zbm1wSVB2NkJhc2VEb21haW4uYworICAgIAlzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMKKyAgICAJc25tcGxpYi9zeXN0ZW0uYworCitjb21taXQgZjQ3YTM3NTI4NDlkYjA3NWU2ZjIwNTNiODU5NWI3Yjc5MmZiNjQ2MgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE9jdCAxNSAxMDo1NjowOSAyMDEwICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IEJ1aWxkcyBub3cgY29ycmVjdGx5IHdpdGggYSA2NC1iaXQgY29tcGlsZXIuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwMmI2MDU2ZGY5NWRhOGI2NzMwMzRlMzljMmM3YzM4NmVkMGYzNjljCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSmFuIDEwIDExOjQ0OjUzIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgY2FzdGluZyBhd2F5IGNvbnN0CisKK2NvbW1pdCBhMTk4NjU4MzJmYzc3ZjRjMDQ4MTQ0ZDkxYTQzMWIxZTk0ZDMyOWYyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCAxNCAyMzoxMjowNSAyMDA5ICswMDAwCisKKyAgICBDSEFOR0VTOiBhcHBzLCBzbm1wbGliOiBQQVRDSDogMjgzNTU3NzogaWRlbnRpZmllZCBieSAiQmFydCBWYW4gQXNzY2hlIjogUmVwbGFjZSBTTk1QX1pFUk8gb2YgYXJyYXlzIHdpdGggYSBtZW1zZXQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTc3OTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2N2EzZTJlY2NiOTVmOWM5ZDA4MDllZmNiZGRjZDg2NmVlMzA2MmQ1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDYgMTQ6Mjc6MTUgMjAxMCArMDAwMAorCisgICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIGFib3V0IGRpc2NhcmRpbmcgdGhlIGNvbnN0IHF1YWxpZmllci4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxNzk3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDNkY2RlMmU4YTU5NWE1MjdmMDYxNDJjM2I4NTJkZTg0MzNhMWNmMjgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gSmFuIDI0IDE0OjI3OjU1IDIwMTAgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFByZXZlbnQgZ2NjIHBlZC13YXJuaW5nIGZvciBORVRTTk1QX1JFTU9WRV9DT05TVAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE4MDUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzJlMTUyNWE4NWJkYTUyOTlhM2I5ZjI0MTYxNGY3ZTY1MDlhZWViYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA2IDEzOjM1OjExIDIwMTAgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCAyOTVmNDczYzgzNTQ2MjIxYjJhNzFkODE1YzYxZTMzYTY3Zjk4YWUzOiByZWZpbmUgTkVUU05NUF9SRU1PVkVfQ09OU1QoKSBpbXBsZW1lbnRhdGlvbi4KKworY29tbWl0IGNiNDIzYjBhZTllZDAwNTlhYTEwMGRjNGUyZmQ5M2FkMWI5N2ZhZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNiAxMTo1Nzo1MSAyMDEwICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgZTJmYjA5ZTAwOTNlMmY2NDhmZTI2MzhkYTJmM2FmMThmZGIzMmJmMCAtIGludHJvZHVjZSBORVRTTk1QX1JFTU9WRV9DT05TVCgpLgorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAJYWdlbnQvc25tcF9wZXJsLmMKKyAgICAJc25tcGxpYi9zbm1wX3NlcnZpY2UuYworCitjb21taXQgYWZjMzk2YWIxNjE4YTg1OTVhMjUxOWZiYzI1ZjdhNDk4ZTE3NDQxMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAwODo0OTozNCAyMDEyICswMTAwCisKKyAgICBVbmJyZWFrIG5ldHNubXBfbWt0ZW1wKCkgYW5kIG1ha2VfdGVtcCgpLgorICAgIAorICAgIFRoZXNlIHdlcmUgYnJva2VuIGJ5IGNvbW1pdCBiYjhmY2JiODc0OTk4MDAwZjk0NWYwNThkMWFhNmZlMTRlOTI1ODk5LgorICAgIEFsc28gcmVwbGFjZSBhIHN0cm5jcHkoKSBjYWxsIGJ5IGEgY2FsbCB0byBzdHJsY3B5KCkgYW5kIHJlcGxhY2UgdGhlCisgICAgbWFrZV90ZW1wZmlsZSgpIGltcGxlbWVudGF0aW9uIGJ5IGEgY2FsbCB0byBuZXRzbm1wX21rdGVtcCgpLgorCitjb21taXQgMjEwMTg1YzE1ZDBkNjVmMGVhOThiNWUzYzJlMDc3NmY2MjIyZDE3MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxMSAwODoyNzo0MyAyMDEyICswMTAwCisKKyAgICBGaXggYSBjcmFzaCBkdXJpbmcgc3RhcnR1cCBvZiBzbm1wZCBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA4ODUwNjE2ODdkOWNhYTM4NDcwOTc5NjY3ZDdkOGFkNjU2M2NlZGFkLgorICAgIAorICAgIEFsc28sIG1ha2Ugc3VyZSB0aGVyZSBpcyBvbmx5IGEgc2luZ2xlIGNvcHkgb2YgdGhlIGNsZWFudXAgY29kZSBpbiBmdW5jdGlvbgorICAgIG1rZGlyaGllcigpLgorCitjb21taXQgOGJiNGU4NmFiY2Y5OGZmMjg3NDhhZjBhZjg5Yzk4ZTY0ZDVjZDk2MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgV2VkIEphbiAxMSAwNzo0NzoxMiAyMDEyICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSBvbGRtYXNrIHZhcmlhYmxlLgorCitjb21taXQgNjY4MDE0N2IxMzhlYzExNGY4MWM1ZDEyOGFjOTM1MGM4NDUwZDA4MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAxODo0NDozMSAyMDEyICswMDAwCisKKyAgICBNYWtlIHRlc3QgVDAxNWludDY0X2NsaWIgcGFzcyBvbiA2NC1iaXQgc3lzdGVtcworCitjb21taXQgM2FhZDE1YWU1NjBhYzg1N2U3M2M5MDc2NGU5MDNlN2NhMDJiMzI5NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6NDA6NTkgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IGZvciBsYXJnZSBPSUQgbmFtZXMKKworY29tbWl0IGZiYTE4OGVlODIwMTBiMmYyZDhjYTJlNDI2YmE2NTQ0OTlhYjNkMGEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjMxOjMzIDIwMTIgKzAxMDAKKworICAgIGZpeGVkIGJ1ZmZlciBvdmVyZmxvdyBpbiBfX2NvbmNhdF9vaWRfc3RyCisKK2NvbW1pdCAyMWQyNWQ4NmI4ZTQ5MDRkNzk4ZGM4Yzk2ZGFkZTllNTA0ODQ1N2E4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNToyNjowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBwYXJzaW5nIHBvcnQgbnVtYmVycy4KKworY29tbWl0IGQzNjkzMTg0MWIyZmMyY2ViYzYzNjRiMjk0OTEyOWEwYWQ0MmFkMWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjA1OjUxIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgYnVmZmVyIG92ZXJmbG93IHdoZW4gbGFyZ2UgU3VtRmlsZSBpcyB1c2VkLgorCitjb21taXQgMGVmZGQwMjJkYTA5YWYxYjVlMTYxNzFmYTdhMmI1MjNjNWQ2ZWM1OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MDE6NTMgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gdG9vIGJpZyB0ZW1wIGZpbGUgcGF0dGVybiBpcyB1c2VkLgorCitjb21taXQgNTYwYmM2YzA5Yjc1MTU1NmVmZDZiNGM0NDk1NzUxYjEwOWE5M2Y5MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NTk6MjQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93LCBqdXN0IHRvIGJlIHN1cmUuCisKK2NvbW1pdCA4MjkxZDdjNWI5MmEzMWRkNGY1ODJiNDk3ZDRiMmEwODUzMzY3YTU2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo1NToxNiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cuCisKK2NvbW1pdCA4OGUxZjM0ZGU3MzAwNTc1ZmE2ZGFiODU3ZWNkZGIyNDJhODdkZTgwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo0ODo1NSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gbG9uZyBpbnRlcmZhY2UgbmFtZXMgYXJlIHVzZWQuCisKK2NvbW1pdCBiZTEzNzVhOTkyNmViZTBjZDViNzhhNDA0NWMzYmQxMWM4MzY2NGIxCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo0Njo0OSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBhIHNlbnNvciBuYW1lIGlzIHRvbyBsb25nLgorCitjb21taXQgMWNiMjQ2MjUzNzIwNjJiMTRjNzFkN2RkNTFlMjBmZWY3NzNlMjc0MworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6NDE6MDAgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gYSBDUFUgaGFzIHRvbyBsb25nIG5hbWUuCisKK2NvbW1pdCA4NGM4MDdlZTAzMjUxZTU0ODU2ZTgzZDYyZDA2ZWEwOGI4ZGY1MjdhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDozNjo1MCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gbG9uZyBpbnRlcmZhY2UgbmFtZXMgYXJlIHVzZWQuCisKK2NvbW1pdCBjMzEwZTM5MGI1ZGQwNWYyNGJlN2ViMTkwNGM3NGU0MTI1OWM5M2RiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDoyNDo1NCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gYmlnIHRlbXAgZmlsZSBwYXR0ZXJuIGlzIHVzZWQuCisKK2NvbW1pdCA0NjAwZDExNDM0ZTgzYjg2NTNjZjlmODEzYTNkOGI2MzA0NTViNDJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDoxNzowOCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBwbGF1c2libGUgc3RyaW5nIG92ZXJmbG93IGJlZm9yZSBwYXJzaW5nIGNvbW1hbmQgbGluZSBvcHRpb25zLgorCitjb21taXQgODg1MDYxNjg3ZDljYWEzODQ3MDk3OTY2N2Q3ZDhhZDY1NjNjZWRhZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTQ6MTE6MDIgMjAxMiArMDEwMAorCisgICAgR2V0IHJpZCBvZiAoaW5zZWN1cmUpIFNOTVBfTUFYUEFUSCBpbiBta2RpcmhpZXIoKQorCitjb21taXQgODAxNjg5MGE0NDVmNmE3ZTJhODczYTA0ODczZDRlMjdiNmVlNjRlMworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6NDg6MzQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgd3JvbmcgaW50ZWdlciBzaXplIG9uIDY0IGJpdCBwbGF0Zm9ybS4KKworY29tbWl0IGJiOGZjYmI4NzQ5OTgwMDBmOTQ1ZjA1OGQxYWE2ZmUxNGU5MjU4OTkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDEzOjMxOjM2IDIwMTIgKzAxMDAKKworICAgIFNlY3VyZSBta3N0ZW1wKCkgd2l0aCB1bWFzaygpIC0gb24gc29tZSBpbXBsZW1lbnRhdGlvbnMgaXQgZG9lcyBub3Qgc2V0IDA2MDAgcGVybWlzc2lvbnMgYXV0b21hdGljYWxseS4KKworY29tbWl0IDIwMjUyM2NhNzA0YmQ3MjJkYzFhYzBlMWU2YjBlNGI0ZTU0MjQ0OTUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDEzOjExOjU3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRlcmVmZXJlbmNpbmcgJ2MnIGJlZm9yZSBOVUxMIGNoZWNrLgorCitjb21taXQgNzNhNTIzZTQ2ODI3N2Y2ZGYyZTk4NDg5MTMxM2I4YmU4YmNlMTkyMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6MDg6MjQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyBrZXktPmluZm8gd2hlbiBrZXkgaXMga25vd24gdG8gYmUgTlVMTC4KKworY29tbWl0IDJmNGU2YWNkNzE0MTgzZjAxNWI3NjM2NTdmOGYwODQ1OTMzNTdlMjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTA6Mzg6MTYgMjAxMiArMDEwMAorCisgICAgLmdpdGlnbm9yZTogSWdub3JlIHBlcmwvKi55bWwgZmlsZXMKKworY29tbWl0IGMzNjVkODBjMTZjMmQxN2IxNjAwMTFlOGMxZjljYjk1ODk1NGU5ZGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMDg6MzQ6MTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBEbyBub3QgaW52b2tlIHNodXRkb3duX3BlcmwoKSBmcm9tIGluc2lkZSB0aGUgU0lHVEVSTSBoYW5kbGVyIHNpbmNlIHRoYXQgZmFpbHMgaWYgU0lHVEVSTSBpcyByZWNlaXZlZCB3aGlsZSBhIFBlcmwgaGFuZGxlciBpcyBhY3RpdmUuIEJhc2VkIG9uIGEgcGF0Y2ggcG9zdGVkIGJ5IEpvZWwgQXZuaSA8amF2bmlAYXJ1YmFuZXR3b3Jrcy5jb20+CisKK2NvbW1pdCBkMDU5ZmI4NzhiMTQzNjU5OTk1M2NlYTVhMDc3NDk5ZGRjZGNiY2I1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTc6MDM6NTUgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDQwNzUyOiBJRi1NSUI6IFJlcG9ydCBpbnRlcmZhY2Ugc3BlZWQgY29ycmVjdGx5IGZvciBFdGhlcm5ldCBpbnRlcmZhY2VzIGlmIG90aGVyIHRoYW4gMTAgTWJwcywgMTAwIE1icHMsIDEgR2JwcywgMi41IEdicHMgb3IgMTAgR2Jwcy4gQWRkIHN1cHBvcnQgZm9yIE5JQ3MgZmFzdGVyIHRoYW4gNjUgR2Jwcy4KKworY29tbWl0IGMwOTkwM2E0MmU5ZDk3MzMxZmQ5ZTQ4ZWU4MzFhODVhZmRmOWM3MGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBKYW4gOSAxMzoyNjoxNyAyMDEyICswMTAwCisKKyAgICBEb3h5Z2VuLXN0eWxlIGRvY3VtZW50YXRpb24gZml4ZXMKKworY29tbWl0IGUzMjVlY2JmY2U3N2YwMGFjNWNmNmZiZDk1N2Y5NTQ5NWY2MWM1OWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBKYW4gOSAxMzoyNToxMCAyMDEyICswMTAwCisKKyAgICBTdXBwcmVzcyB1bmludGVyZXN0aW5nIERveHlnZW4gd2FybmluZ3MKKworY29tbWl0IGJlOTE2MWQzYTU4OThlODYzNzY3ZjkyNjYxMzQ4NjEyNmMyY2JmNjcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxMjozNTozOSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBTaW1wbGlmeSBpbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgbWFuaXB1bGF0aW5nIDY0LWJpdCBudW1iZXJzLgorCitjb21taXQgODZlNGMyYmUwODUyYTBhMTNiMDYwMzA3NTcyMGIzMjY0ZWM3MGRkZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDEyOjI5OjExIDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgaXQgZXhwbGljaXQgdGhhdCBNQVhfU1VCSUQgaXMgYW4gdW5zaWduZWQgY29uc3RhbnQKKworY29tbWl0IDM3ZTI3MmQ4ZjdiNzE4MGJhMTQwZmEzODZhNWZmMDU4OTY4YTA4YTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxODoyMTo0OCAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogSUYtTUlCOjppZlR5cGU6IFJlcG9ydCB0eXBlICJpbmZpbmliYW5kICgxOTkpIiBmb3IgSW5maW5pQmFuZCBpbnRlcmZhY2VzIGluc3RlYWQgb2YgdHlwZSAib3RoZXIgKDEpIi4KKworY29tbWl0IDI2OTkzMmZhMzJjN2NkNDc5NTc0ODk2OThlMDliZWUzMWY2M2I3YWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNDozNDo0MiAyMDEyICswMTAwCisKKyAgICBGaXggYW4gTVNWQyBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAwZDFjMjFmOTk5MWQxMzA5ZDA1N2UzZTQwNTZkNTQ3ZGY3ZDQwZWNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTY6MDY6MzEgMjAxMiArMDEwMAorCisgICAgTWFrZSBkZWNsYXJhdGlvbiBhbmQgZGVmaW5pdGlvbiBvZiBzdHJsY2F0KCkgY29uc2lzdGVudC4KKworY29tbWl0IDBjM2Q0ZGJiMGE5Y2Y1YjM1OWY3MGIyZjE5OTE1NDk1NTU0Zjg0MGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNToyMzoxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogc25tcGQ6IFJlbW92ZSBkbG1vZAorCitjb21taXQgODkzZWNjOTdiNTg3NjYxMDQ1YmVjYmUwOWEzMjBjMWJjYmM3MWM3YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE0OjM2OjU5IDIwMTIgKzAxMDAKKworICAgIEFkZCBzdHJsY2F0KCkgdG8gdGhlIE1TVkMgYnVpbGQgaW5mcmFzdHJ1Y3R1cmUuCisKK2NvbW1pdCAzZDEyNjQyMmU2MjU3MDJiOWQzZmEwNjc2YTk3ZWM1Y2IyMGQ5ZDEwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTU6MDE6MDYgMjAxMiArMDEwMAorCisgICAgTWFrZSB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCBjb25zaXN0ZW50IHdpdGggaXRzIC5pbiBmaWxlCisKK2NvbW1pdCBhZjUzYjc2YzJmZmE3NTFlMzk1OGQwZmM1ZDgyNzlmNzhjMmMxYzI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTQ6NDM6NTUgMjAxMiArMDEwMAorCisgICAgU2tpcCBUMDY2cGFzc19zaW1wbGUgYW5kIFQwNjdwYXNzcGVyc2lzdF9zaW1wbGUgb24gTWluR1cKKworY29tbWl0IDM1YTkyZTY5M2QxMzNhNWIxMWU5ZTliNTk5ZGJmNDdlZGVmNDkzM2IKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAwODoxNjozNiAyMDEyICswMTAwCisKKyAgICBSZW1vdmUgc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jIGFnYWluLCB3aGljaCB3YXMgYWRkZWQgYWNjaWRlbnRhbGx5IHdoaWxlIHJlc29sdmluZyBtZXJnZSBjb25mbGljdHMgKGNvbW1pdCAxZDc4ZjdkNWI1OGFlZDJiNTJjNGQzODZhN2JhODBhNDQ3MTFiYWNhKQorCitjb21taXQgYTliMDczZWEzYjZjZWRmNzEzZTMwNWU3YjE1ZjI4YWU1N2JmZGYxYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDE3OjQ3OjExIDIwMTIgKzAwMDAKKworICAgIEZpeCA2NC1iaXQgY29tcGlsZXIgd2FybmluZ3MKKworY29tbWl0IDdlODkwZGFkOTVmNTY2MDY5ZWUyODAyMTVhNGZlYTNmMGUyZTM5ODAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAxNjozODo1MCAyMDEyICswMTAwCisKKyAgICBBdm9pZCBhIFNJR1NFR1YgaWYgY3AgPT0gTlVMTC4gVGhpcyBpcyBhIGZvbGxvdy11cCBmb3IgY29tbWl0IDA4OWJjYjM2MGFhMjY3OTBhZDJhOGNlZGRmNTgzYjdiYTVkZGZkNDguCisKK2NvbW1pdCAxZjYyMDBjZmUxYjBiMjdlYmIwOTNhMTYwNmI1OTJmOWU5Njg0YmU4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTU6NTM6MzQgMjAxMiArMDEwMAorCisgICAgQ29udmVydCBzdHJuY3B5KCkgY2FsbHMgaW50cm9kdWNlZCBpbiB2NS42CisKK2NvbW1pdCBjMzEyNmIxNDM5MjFmYWJlYWM0NDIxNjZlY2E1YjViNzQyZmQ0MmMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTU6MDI6MzkgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBtb3N0IHN0cm5jcHkoKSBjYWxscyBpbnRyb2R1Y2VkIGluIHY1LjUKKworY29tbWl0IGIyNGVlN2M5MDk2NTdkYjQzYmQ4YzVkOGMwMTA1NWNhMDg4M2M5Y2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwODo0MDozOSAyMDEyICswMTAwCisKKyAgICBFbGltaW5hdGUgbW9zdCBzdHJuY3B5KCkgYW5kIHN0cm5jYXQoKSBjYWxscworICAgIAorICAgIFVzaW5nIHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpIGlzIGVycm9yIHByb25lIC0tIHNlZSBhbHNvCisgICAgaHR0cDovL3d3dy5ncmF0aXNvZnQudXMvdG9kZC9wYXBlcnMvc3RybGNweS5odG1sLiBIZW5jZSByZXBsYWNlCisgICAgYWxsIGludm9jYXRpb25zIG9mIHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpLiBSZXBsYWNlCisgICAgc3RybmNweShkc3QsIHNyYywgbikgY2FsbHMgYnk6CisgICAgKiBzdHJsY3B5KGRzdCwgc3JjLCBuKSBpZiB0aGUgZ29hbCB3YXMgdG8gYXZvaWQgb3V0cHV0IGJ1ZmZlciBvdmVyZmxvdy4KKyAgICAqIHNwcmludGYoZHN0LCAiJS4qcyIsIG4sIHNyYykgdG8gY29weSBhIHByZWZpeCBvZiBzcmMgdG8gZHN0IG9yIGlmIHNyYyBpcworICAgICAgICBub3QgJ1wwJy10ZXJtaW5hdGVkLgorICAgICogbWVtY3B5KGRzdCwgc3JjLCBuKSBpZiBzdHJsZW4oc3JjKSA+PSBuIGFuZCBuIDwgc2l6ZSBvZiBkc3QuCisgICAgKiBzdHJjcHkoZHN0LCBzcmMpIGlmIG4gPiBzdHJsZW4oc3JjKSBhbmQgbiA8IHNpemUgb2YgZHN0LgorCitjb21taXQgNmQ5NWJjNDE0OTQ3MjkzMTAwNTQ3NWMzMGE1NDFmZWQ1NTM0ZGEzOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDExOjE5OjE2IDIwMTIgKzAxMDAKKworICAgIEZpeCB3YXJuaW5ncyB0cmlnZ2VyZWQgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIHRoZSBQZXJsIHhzIHNvdXJjZSBmaWxlcworCitjb21taXQgYmFkMDYwMGY2ZWM5NDRlZjg0NTVlMzI3Y2U3ODRiOWIwN2QyNDdjOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDEwOjAwOjEzIDIwMTIgKzAxMDAKKworICAgIEFkZCBjb25maWd1cmUgdGVzdCBmb3Igc29ja2FkZHJfdW4uc3VuX3BhdGggc3VjaCB0aGF0IHRoZSBjb20yc2VjIHRlc3QgaXMgcnVuCisKK2NvbW1pdCA5MmEzMmFjNDg2NmE1ZWRjN2YzNDdkMzc5NDJiZjAyOGRlMDI3NjJmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTA6MDA6MjkgMjAxMiArMDEwMAorCisgICAgR2V0IHJpZCBvZiBhIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDgzZTRjMGUzMDRmNjE3Y2NhYzY2MTBlZGQ3NGQxNzA2Nzk3YmJmNTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAwOToxNTozNyAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGQgYSB0ZXN0IGZvciBzZV9zdG9yZV9saXN0KCkKKworY29tbWl0IDRmYWU1ODUyMTAzZWMzODkzYWQ0ODhiYzBkOTA1Y2E2OTE0NTk1ZWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAwOToxNzoxNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBTaW1wbGlmeSB0aGUgc2Vfc3RvcmVfZW51bV9saXN0KCkgaW1wbGVtZW50YXRpb24KKworY29tbWl0IGIzMjIyYmIyNzVmMmYyMzQ2ZTBmZDA0NzhhZmEyZWZiNjAwNzczZTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBKYW4gNSAwOToxNjo0NSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBEZWNsYXJlICJ0eXBlIiBhcmd1bWVudCBvZiBzZV9zdG9yZV9saXN0KCkgLyBzZV9zdG9yZV9zbGlzdCgpIC8gc2Vfc3RvcmVfZW51bV9saXN0KCkgY29uc3QKKworY29tbWl0IDAyMmY4NDBmYmZjYjBlMjZiMDhmMGU1NTcyODIzMWY2MTE0OTU4MDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxOTo1NTo1NiAyMDEyICswMDAwCisKKyAgICBBdm9pZCB0aGF0IFZhbGdyaW5kIGNvbXBsYWlucyBhYm91dCBzZW5kaW5nIFVEUCBkYXRhCisKK2NvbW1pdCA2NzJhODA5YzIyOGU5NTUwYjk5Yjg5MTBiZTc1ZDBiMTYxOTg1NDAyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTc6MzM6MDkgMjAxMiArMDAwMAorCisgICAgRml4IGEgNjQtYml0IGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IDI0ZmYyNjBhZDg5Y2UyYWEzNjFhNTVjN2M3MmU5MTYwMzFkZWZlMzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAxNzoxMToyNCAyMDEyICswMTAwCisKKyAgICBDaGFuZ2UgdGhlIHR5cGUgb2YgdGhlIHNlY29uZCBhcmd1bWVudCBvZiBzbm1wX3NldF92YXJfdmFsdWUoKSBhbmQgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCkgZnJvbSB1X2NoYXIqIHRvIHZvaWQqLCBsaWtlIG9uIG1vcmUgcmVjZW50IGJyYW5jaGVzCisKK2NvbW1pdCBjNmNhNzM3ZmI0NmY5MGE0YmRhNWQ0MzczNGFhYzM0ZTgzN2EwNWY0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgTWFyIDEzIDE5OjA3OjM3IDIwMTAgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBmNTA0Y2UyZDc0YTRiYzg4ZjY4Y2M5NTE1ZmE3MDUzMzczY2IxNWI1LgorICAgIChGaXhlZCBtb3N0IGNvbXBpbGVyIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgc291cmNlIGNvZGUgaW4gdGhlIHBlcmwgc3ViZGlyZWN0b3J5LiBOb3RlOiB0aGVzZSBjaGFuZ2VzIG1heSBjb250YWluIHNvbWUgcmVhbCBidWcgZml4ZXMuKQorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAKKyAgICAJcGVybC9BU04vQVNOLnhzCisgICAgCXBlcmwvT0lEL09JRC54cworICAgIAlwZXJsL1NOTVAvU05NUC54cworICAgIAlwZXJsL2FnZW50L2FnZW50LnhzCisKK2NvbW1pdCBkMjEyZGM5ODRlYzM0ZTRkMjMwNjI1ZTQ2ZTU4YjBjNjI4YTUwZGY1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTY6NDY6NDkgMjAxMiArMDEwMAorCisgICAgU05NUC54cyBjb21waWxlciB3YXJuaW5nIGZpeGVzCisKK2NvbW1pdCBiYWNlZWJiMTBkOGNhZjVkYjYzY2MzNjkzNWZlZDY1ZWU5MzEwMjlkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTY6MjI6NDQgMjAxMiArMDEwMAorCisgICAgQWRkIGRlY2xhcmF0aW9uIGZvciBzaHV0ZG93bl9zbm1wTm90aWZ5VGFibGUoKQorCitjb21taXQgZjdmOTY2YWJkNmQyODQ5YjEzMzEyNTJhZmU1YzQ3M2U1YzQwYjMyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE0OjI0OjMzIDIwMTIgKzAxMDAKKworICAgIEZpeCBmb3JtYXQgc3BlY2lmaWNhdGlvbiBtaXNtYXRjaGVzLgorCitjb21taXQgMzAzYzAxNWJjZmU5YWYwYjE1NGU5ODgxYzdiNGY0NDllMDhmMzBiYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSA2IDIyOjA2OjIzIDIwMDkgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBkM2ViMmI1Y2VkMjJhODQ4MDA1M2NlNDNhY2Y5NzM5NzI5MDU1NDA0CisgICAgKFNwcmlua2xlIHNvbWUgY29uc3QtbmVzcyB3aGVyZSByZWxldmFudCAvIGZpeCBmb3JtYXQgc3RyaW5nIG1pc21hdGNoZXMsCisgICAgTmllbHMgQmFnZ2VzZW4sIE1heSAyMDA5KQorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAKKyAgICAJYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5jCisgICAgCWFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYworICAgIAlhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYworICAgIAlpbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKyAgICAJaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKworY29tbWl0IGQ5NWI0MDQwNjkxNmJkYTViNDhiNWE2MTMxYmVjMjdiODY2YjBhNzkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgNiAyMTo1OToyMCAyMDA5ICswMDAwCisKKyAgICBCYWNrcG9ydCBhMmE3MzE2YzMxMGYwZmNjMzcyODY3M2ZhMDQ3MDUxYzIzYjcxOTYwCisgICAgKFRyaXZpYWwgd2FybmluZyBmaXhlcywgTmllbHMgQmFnZ2VzZW4sIE1heSAyMDA5KS4KKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCWFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCisgICAgCWFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYworICAgIAlhZ2VudC9zbm1wZC5jCisgICAgCXNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCisKK2NvbW1pdCBkODZjNDdmMDAzZmRjMTkyYmNlN2I0NmFjNGYwNmIwOWUzODdjMTJiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEzOjI5OjA4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgdHlwbworCitjb21taXQgYmVlNGQ3OWNmNGViN2UwYTQ1Mzk3ZjU5YjUyOThkYTYzM2E4ZTFiYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMzoxNDo1NyAyMDEyICswMTAwCisKKyAgICBGaXhlZCByZWFkaW5nIHBhc3QgZW5kIG9mIGJ1ZmZlci4KKworY29tbWl0IDNkYzBlMDBhMmZkOGUzNGZlMWFlMzNlY2FiZjM2ZTE0NjQ2MGEzMWYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDQgMTI6NDA6MDcgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYnVmZmVyIG92ZXJmbG93IHdoZW4gbGFyZ2UgJ3Rva2VuJyBpcyB1c2VkLgorCitjb21taXQgYjNjNDk4MjU0MmUwYWIxNTFmYjM4ODQ3NTRjZGZiY2I0NzJkYTUyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMjoyODo1MiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBvZmYtYnktb25lIG1lbXNldC4KKworY29tbWl0IDBmNTM2OTUwNDRkZDNmMGMzNTA3NzUzZTNmOGMyOWQ5N2U5Njg3MmQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMyAyMTozODoyNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliLCBzbm1wZCwgcGVybDogRWxpbWluYXRlIGRlYWQgdmFyaWFibGVzCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAorICAgIAlhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jCisgICAgCWFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKKyAgICAJYXBwcy9zbm1wdGxzLmMKKyAgICAJYXBwcy9zbm1wdHJhcGRfbG9nLmMKKyAgICAJc25tcGxpYi9kaXJfdXRpbHMuYworICAgIAlzbm1wbGliL3NubXBfY2xpZW50LmMKKyAgICAJc25tcGxpYi9zbm1wX29wZW5zc2wuYworICAgIAlzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jCisKK2NvbW1pdCAwMTUzODA1Yzk5YjkxOTczNjU5MzVjNWQxMWFlOWMzZDRiZmFhMGYzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMDk6NDg6NDEgMjAxMiArMDEwMAorCisgICAgRml4IGEgc2V0LWJ1dC1ub3QtdXNlZCB3YXJuaW5nCisKK2NvbW1pdCAzZjg4ODVmYmVlOTQwNzc0OGZjMmYwNTczNzI4YTExYmEyYmMwMjNhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEFwciAyOCAwNTo1MToxMyAyMDA5ICswMDAwCisKKyAgICBSZXR1cm4gYSB2YWx1ZSBmcm9tIHNwcmludF9yZWFsbG9jX3ZhbHVlIGV2ZW4gaWYgbm8gc3VidHJlZSBpcyBsb2NhdGVkLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE3NTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYjFlYWFmMzAyMzY5ZmQ0NTUyZThmZWU3YjZhODA1MDkxZWMwYTliNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMTozODo1MSAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBvZiBmaW5kX3NlY19tb2QoKSByZXR1cm4gdmFsdWUuCisKK2NvbW1pdCBhZWU0ZTg5NWZlM2JkNWY0YTYxZTM0Mjc1YmZjYTAzNjhiNTYwNTU1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDExOjMxOjIyIDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIHNubXBfc2Vzc190cmFuc3BvcnQoKSByZXR1cm4gdmFsdWUuCisKK2NvbW1pdCA1ZDFkMGE3NDRhYjMwYzhlNjQ1YzNiODUwNmNiYmQyY2NlYjNkMjc1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDExOjA0OjQ4IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIG5ldHNubXBfZXh0cmFjdF9pdGVyYXRvcl9jb250ZXh0KCkgcmV0dXJuIHZhbHVlLgorCitjb21taXQgMjk5ZWE5YTg5YzNmMTc1OGE3NzQ4YmI5YjM0MTFmNjJmMmM3MGY4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDo1NDo1NSAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBvZiBmb3BlbigpIHJldHVybiB2YWx1ZSwganVzdCBpbiBjYXNlIG9mIHNvbWUgcmFjZS4KKworY29tbWl0IDkwZjFhZTY3NTc5MTc0ODE2MzZlZWY3NzEwMGNhZWViNTNlZGZlMDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDowNjo1NiAyMDEyICswMTAwCisKKyAgICBBZGQgc3RybGNhdC5jLiBTb3VyY2U6IGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvc3JjL2xpYi9saWJjL3N0cmluZy9zdHJsY2F0LmMuCisKK2NvbW1pdCAwODliY2IzNjBhYTI2NzkwYWQyYThjZWRkZjU4M2I3YmE1ZGRmZDQ4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjUwOjU2IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIHN0cnJjaHIgcmV0dXJuIHZhbHVlIGNoZWNrLCBqdXN0IHRvIGJlIHN1cmUuCisKK2NvbW1pdCAxOTlhMDUxMWY2ZWIwZWYzZmYxZDlmOTIyYjc5MGFiNjdkZmRlMDFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTA6MzE6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHNtdXg6IHNpbXBsaWZ5IHNtdXhfbGlzdF9kZXRhY2goKQorCitjb21taXQgZDg4MzU3M2FhNzNlMGY1ZmMxODhhY2VkZWU2NDUxZjk1ZGFlOTAwYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjIzOjA2IDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW50cm9kdWNlZCBieSBjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMS4KKworY29tbWl0IDdiN2EzZWIyNTAwNTI3ZWFhMTY5OTI4N2E2Y2E2ZmNjNGNjMmUwOGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwOTo0MDowMiAyMDEyICswMTAwCisKKyAgICBGaXggYSBidWlsZCBlcnJvciBjYXVzZWQgYnkgY29tbWl0IGE4MDlmZTUwNzVjOWYzNzQ3MTVmN2QxYTY4Mjk0OWEwNzMwMTcyYzEuCisKK2NvbW1pdCAyYjZjMTE5ZmVkNDg0OGRhNjY2M2MxMWYwYzJjYmRjMjk5MjFiNWM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjUxOjEwIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBuZXRzbm1wX2RzX2dldF9pbnQoKSBlcnJvcnMuCisKK2NvbW1pdCA2Y2U1MzYwY2FhNGM5ZGU1MWFkZTU3ODc5ZTgzZjk2YmQwNGI0YzVhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjQyOjIzIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBtaXNzaW5nIHZpZXcuCisKK2NvbW1pdCBiM2JjNTRiZWQzMTY5MGE4NWRmMmFjZmJmMzI5NmRhOTNhOWU4OWI0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjIzOjE3IDIwMTIgKzAxMDAKKworICAgIENoZWNrIHNvY2tldCgpIHJlc3VsdC4KKyAgICBBbHNvIGNsb3NlIHRoZSBzb2NrZXQgb24gZXJyb3IuCisKK2NvbW1pdCA5MjA3NWY1MWNkNDVhMzhjYTM4NzYwYjNmZmU4MmUxNjU1OWU5YzJlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjE4OjI2IDIwMTIgKzAxMDAKKworICAgIENoZWNrIG9wZW4oKSByZXN1bHQuCisKK2NvbW1pdCA2NjY1ZDVmZTJmYzU2OWQ2ZmE4NTRkMWQ3OGUzNDdiYmFjNjllMDcwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjIyOjIyIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIG1pc3NpbmcgYnJlYWsuCisKK2NvbW1pdCBhNjY0OGM1NDUzZTFlZjhkYWM1N2EzOGVmY2MwMGNjZTUzYmY5ZTRmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjIwOjI3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIG1pc3NpbmcgYnJlYWsuCisKK2NvbW1pdCBkNjhkY2FlMGYxOGQ1NTQ1NzFhZWYzMjE5NDRhNTI5MDU0OGRkZTg2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjE2OjExIDIwMTIgKzAxMDAKKworICAgIEFkZGVkICdmYWxsdGhyb3VnaCcgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCBmYjZmODBjMGZlM2JhMzZlNTZmNWI5MTFhNDdlM2Y2ZjMyYmEyNjZlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjE0OjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGV4aXQgY29kZSBvZiBlbmNvZGVfa2V5Y2hhbmdlIHdpdGggd3JvbmcgYXJndW1lbnRzLgorICAgIEFsc28gYWRkZWQgYSBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IDMxMzBlMjRmZGMyMzI0NjRkZDdiYjIxNmY0NmNhZmEyZTBlNzc1YTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MDk6NTQgMjAxMiArMDEwMAorCisgICAgQWRkZWQgbWlzc2luZyBicmVhaworCitjb21taXQgMThjMTI2YTk1NjVjYjRkNjlkNzUxM2I5NDRhMjEwNTU4ODA0NWQzNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowNzoyOSAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgNmQzMWM4MjA3MGEyYzY4ZmUzYzUxOWU5ZDU2ZmEyNzc5NTU0ZDAxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowMTo1MyAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgZGM2ZjBlMmU1NDliNGNkMDYxZWJjMTkwMDg0YjFmYzc3YTU1ZjQwZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzozMjo1OSAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgZGFiMzI4NjdlZDBiOTkzMDFlZmQ3YjhkODUyYWQxMjg4YTE4NGJlMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzozMDozMyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBRVUlURlVOIHVzYWdlLgorCitjb21taXQgYjFhMmJjZjY0NjE1ZWI2NmJjMjRkNWJlNDk1MGU0NTAxMjk2MjA0NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzoxODowMyAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgYjJiMWM4NTFiOTRmZWQzN2MzODZlYWExYmZlYWQ1Yzc3Njk2ZTNlZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzoxNDo1MiAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDo1ODo0NiAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBmb3IgZmFpbGVkIHJlZ2lzdGVyX21pYi4KKworY29tbWl0IDU5NDlmMDU1YzE2YWU2NTA2MTVhYWU3YTFmZWUzZjJkN2IxNmQ5NDAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTA6Mjk6NTkgMjAxMiArMDEwMAorCisgICAgTWFrZSBNSUIgZmlsZSBwYXJzaW5nIGFuZCBkZXRlY3Rpb24gbW9yZSBzdHJpY3QgLSBMQUJFTCBpcyByZXF1aXJlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIE1JQiBmaWxlcy4KKworY29tbWl0IGU0YjY3MzY4M2M2OGJhOGIzYWJjMDQwYjkxMjVlYzMwNDY0M2NjN2MKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBKYW4gMSAyMzowMDoyNCAyMDEyICswMTAwCisKKyAgICBBc3N1bWUgdGhhdCBsaWJkbCBtaWdodCBiZSBpbiBBR0VOVExJQlMgb3IgU05NUExJQlMgc28gcHJlYWRkIHRoZW0uCisKK2NvbW1pdCBiMTNjMWU1N2JlZGJhNzliODA2MTAzYzc0ZjE5MjFkNTNhNzA2YjM4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSmFuIDEgMjI6NTU6MDYgMjAxMiArMDEwMAorCisgICAgRG8gbm90IHJlcXVpcmUgdWNkLXNubXAvZGxtb2QgdW5sZXNzIGl0IHdpbGwgd29yay4KKworY29tbWl0IDI3ZGNlYTBkNWY4MDFkZjQ5NGFiMmNiNWM1YzBlYmU1NGViMGRjZDMKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTQ6NDg6MjkgMjAxMSArMDEwMAorCisgICAgQWRqdXN0IHBhdGhzIGZvciB0ZXN0IHJlc3RydWN0dXJlCisKK2NvbW1pdCAxNGI2MGU4NWExYjU3MDBlOTNkMTI2ZTJmMjkxZDVjNDg1ZjM0ZTM2CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDMxIDE0OjE0OjI5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBNYWtlIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoZSBkbG1vZCBtb2R1bGUgZmFpbCByYXRoZXIgdGhhbiBnZW5lcmF0ZSBhIGR1bW15IG1vZHVsZSBpZiB0aGUgZGxvcGVuIGZ1bmN0aW9uIGlzbid0IGF2YWlsYWJsZS4KKworY29tbWl0IDk4YTk3NTM4ZmMxZTlmZjQ2YjYwZDVkOTY5MzQ3NDQ0NTc4Mzc4YzAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTM6MzU6MTMgMjAxMSArMDEwMAorCisgICAgQWRqdXN0IHRoZSBwYXRocyB0byBzdXBwb3J0IHRlc3RpbmcgZXZlbiBpZiBidWlsZGRpciAhPSBzcmNkaXIKKworY29tbWl0IDg4ZjBhZjNjZmI5MTZhZTU4NjNjYzI5ODYwNzFkNDM1ZjIwYzMwNjQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTE6Mzc6NTIgMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgdmFyaWFibGVzICdwJyBhbmQgJ2xlbicuCisKK2NvbW1pdCAwODE1YTc1MzZjNzZmN2U0ODQyNjM4NjgzZjY3NDg5NGExYThjZTE0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyOSAxNDo0Mjo1NCAyMDExICswMDAwCisKKyAgICBSZXBvcnQgcHJvYmxlbXMgd2l0aCBTZXRVbmRvIHByb2Nlc3NpbmcKKyAgICBNaXNzZWQgd2hlbiBhcHBseWluZyBwYXRjaCAjMzQ0NTQ0MAorCitjb21taXQgZWIyYWIyMzc0MmNhODZjMGI4OWNjZmU5MWViNmVhMzc0YmYzYWNjMQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjkgMTQ6Mzc6MzEgMjAxMSArMDAwMAorCisgICAgQ2hlY2sgZm9yIHRoZSBleHBlY3RlZCBlcnJvciAoRVBJUEUpIG9uIGNsb3N1cmUuCisgICAgTWlzc2VkIHdoZW4gYXBwbHlpbmcgcGF0Y2ggIzM0NDc0NDQKKworY29tbWl0IGFhYzEwYmM0ZjA1M2MwMTRmMzgyZDY1OTNmYzMyYWI5NWUwYjFhNTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDI5IDEyOjU5OjUyIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0NjM3Njc6IEhhbmRsZSBwYXJzaW5nIHN1YmlkZW50aWZpZXJzID4gMl4zMQorCitjb21taXQgYmJjMDJlMzZlOTBjMWFhYjc4OTg1NjJmOTYzZjVjYWRiMjZlMTBiZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBEZWMgMjggMTc6MTU6MTYgMjAxMSArMDAwMAorCisgICAgTW92ZSBwYXNzL3Bhc3NfcGVyc2lzdCB0ZXN0cyB0byB0aGUgbmV3IGxvY2F0aW9uCisKK2NvbW1pdCAzODk4YzA0ZmQ2Zjg5ODY3MDYyZmRmZWJmMzY4NTdhYjYxOWMwNDUwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIERlYyAyOCAxNjo1MzoyNCAyMDExICswMDAwCisKKyAgICBBZGQgdGVzdHMgZm9yIHBhc3MvcGFzc19wZXJzaXN0LCBzdXBwbGllZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgZDVlZTNmMGExYTYzYmIxNzUyYzc0Y2JjYTU1YWEzZDQwYmY5YmYxMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMjE6NTg6NTEgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0NDc0NDQ6IEZpeCBTSUdfUElQRSBoYW5kbGluZworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAyYTE3YjM3NDMwYzE4NTI5OThjMzU4OGU1NDdkN2ViNjFjMDZkYTcxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAyMTo0NTozOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudHg6IFBBVENIRVM6IDM0NDU0NDA6IE1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIEFnZW50WCBlcnJvcnMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgZmU1OGEwZTVmNGQ0ZTJlMmVjYmNiNDczODJiMDhjYjFlNGRmMzUyYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTg6MTY6MjMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzQ1Njc3MDogSGFuZGxlIChvYnNvbGV0ZSkgVUludGVnZXIgdHlwZSBwcm9wZXJseQorICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAxYmU4Y2YwOGE2N2E5MTg1NWZlZTFlYzRhMmQ4ZTA4N2M3ODEyNDU2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxODowNDoxMCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudHg6IFBBVENIRVM6IDM0NDU0Mzc6IExvZyBBZ2VudFggZGlzY29ubmVjdGlvbnMKKyAgICAoaW4gbGluZSB3aXRoIGNvbm5lY3Rpb25zKSBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgMDY4MDM3Mjg5MTA3ZmFhMmJhM2Y1Y2QyZmIwMGMxOTQ5NGJiOWEwNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTc6Mjc6NDYgMjAxMSArMDAwMAorCisgICAgSGFuZGxlIGFueSBHRVRORVhUIHJlcXVlc3QgT0lELCBub3QganVzdCBhIHNpbXBsZSB3YWxrLgorCitjb21taXQgYTc0ZmE1Mjg5ODMxMjNkMzU1YThjZGNhYTc3ZGQ0ZWI0YjhjNjk1OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTc6MDA6MTggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcGFzczogUEFUQ0hFUzogMzQ5Mzk0OiBCcmluZyBwYXNzX3BlcnNpc3R0ZXN0IHNjcmlwdCBpbnRvIGxpbmUgd2l0aCBwYXNzdGVzdCoKKyAgICAoaS5lLiB1c2luZyB0aGUgbGVnaXRpbWF0ZSBzdHJ1Y3R1cmUgb2YgTkVULVNOTVAtUEFTUy1NSUIpCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IGJiZTY0OWViZmE2MWVhMjIzOTkxNzBiMzZiOTlkYjMwYTFkZTgwMTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE2OjU0OjM4IDIwMTEgKzAwMDAKKworICAgIFJld29yayAicGFzc3Rlc3QiIGV4YW1wbGUgdG8gZnVsbHkgdmFsaWRhdGUgR0VUTkVYVCByZXF1ZXN0cworICAgIGFuZCB1c2UgYSBsZWdpdGltYXRlIHN0cnVjdHVyZSBmb3Igb3V0cHV0LiAgQmFja3BvcnQgb2YgU1ZOCisgICAgcmV2aXNpb24gMTc2MzIgKHdoaWNoIHVwZGF0ZWQgJ3Bhc3N0ZXN0LnBsJyBidXQgbWlzc2VkICdwYXNzdGVzdCcpCisgICAgQ29ycmVjdCBpbiBicmFuY2hlcyA1LjUgYW5kIGFib3ZlCisKK2NvbW1pdCA4MmQwNmM3MjQ3YjIyYzhiMDFkNDViZjU1MDQxZDJmMWU2NDI3ZDQ5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMzo0NToxOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ0NzY3MTogRml4IG92ZXJyaWRlIGhhbmRsaW5nIG9mIE9JRCB2YWx1ZXMKKyAgICBQYXRjaCBzdXBwbGllZCBieSBQaGlsbGlwIE8nRG9ubmVsbAorCitjb21taXQgYmE0YTljZTUxYzk2MDBmOWZkYTE2OGYxZTZlZmYzMmExZGI2M2NiOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTM6MjQ6MjYgMjAxMSArMDAwMAorCisgICAgVHdlYWsgLS1kaXNhYmxlLXNubXAtc2V0IGNoYW5nZXMKKworY29tbWl0IDgyN2M4YjI4ODMwMTcxZmFhOWM2MWQ1M2VmY2E5ZWI2NjAwNTYxYzIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDExOjI1OjQzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzQzMzg0NjogRml4IGZvciB1c2Ugd2l0aCBweXRob24gMi40CisKK2NvbW1pdCBmOThhNTRhOTljYWY3YjQ2YjEwMGE5MjBkYjk0MmNiY2E5YzQzOTI2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMDoxMDozNiAyMDExICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCB0ZXN0cyB3aGVuIGNvbmZpZ3VyZWQgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQKKworY29tbWl0IDIzMGRmMTRmOTRjMzczNmZmMzQzNzlhNGUyODFlZWEzNTNiNDdmODAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBEZWMgMjYgMjM6MzQ6MjMgMjAxMSArMDEwMAorCisgICAgRG8gbm90IGFzc2lnbiB0bVN0YXRlUmVmIHR3aWNlCisKK2NvbW1pdCBjOTZiM2I0ZDg1MzBhZDVlMGVmYjAzZjI0ZGFiNWU1ZjFhNDYwMDMxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI1IDExOjE4OjIxIDIwMTEgKzAxMDAKKworICAgIENvcnJlY3QgdXNlLWFmdGVyLWZyZWUuCisKK2NvbW1pdCBjNTk3OGM4OWNkZTI0NDBmNGQyMGRhZGJjOWQxZGQ4ZGI1NjJkNTZlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDI1IDExOjE1OjQ0IDIwMTEgKzAxMDAKKworICAgIENvcnJlY3QgZG91YmxlLWZyZWUuCisgICAgCisgICAgbmV0c25tcF90bHN0bUFkZHJfYWRkIHRha2VzIG93bmVyc2hpcCBvZiBpdCdzIGFyZ3VtZW50IHNvIGNhbGxpbmcgZnJlZSBvbiB0aGUKKyAgICBhcmd1bWVudCBvbiBmYWlsdXJlIGlzIGluY29ycmVjdC4KKworY29tbWl0IGMxMzljYTEyM2I0NGJiM2I5YjZiZjkyMWUxNjA5Y2M0NWY2M2E2NjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBTYXQgRGVjIDI0IDE2OjU1OjMwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTIDM0MTAwNTk6IEZpeCBzcGFyc2VseSBhdWdtZW50aW5nIHRyaWdnZXIgdGFibGVzCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKworY29tbWl0IGM0YWUwMjFiMmU2Mzg0NDM3MDgxYzU2MjNmMzYwYzg4OTYzOTAxODgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBTYXQgRGVjIDI0IDE2OjI5OjU0IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTIDM0MTAwNTA6IFNraXAgYWxyZWFkeS0ncHJvY2Vzc2VkJyB2YXJiaW5kcworICAgIEJhc2VkIG9uIG1pYjJjIHBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisKK2NvbW1pdCBjNmFjY2Y4YzY2MjU0ZmE4YzQ4NzY3ZWQ3ZGVjNzk1ZGRhZmM1MjJlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgU2F0IERlYyAyNCAxNjoyNzoxMSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUyAzNDEwMDUwOiBTa2lwIGFscmVhZHktJ3Byb2Nlc3NlZCcgdmFyYmluZHMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorCitjb21taXQgYTYxODI2YWQ4Y2E1NDY2MWQxZDkwOTcxMjUwM2JkM2E4YjMyZWVkMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IERlYyAyMiAxODozNTo0NiAyMDExICswMTAwCisKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgorICAgIAorICAgIG15TWF0Y2ggaXMgdW51c2VkIGFzIG5tYXRjaCBpcyB6ZXJvIGFuZCBhbHNvIHNpbmNlIHJlZ2V4QnVmZmVyIGlzIGNyZWF0ZWQKKyAgICB3aXRoIFJFR19OT1NVQiBzZXQuCisKK2NvbW1pdCBiYTRmYzgwZmUyY2ZkNWE1ZDg5MjMwZDhmMzcwM2U0ZmUwMWU2MDE5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyMiAxOToyNDo0MCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0ggMzQwMjM3NjogZnJvbSBMZW9uYXJkbyBDaGlxdWl0dG86IFJlY29nbmlzZSBSZWlzZXJGUworICAgIEFsc28gbW92ZSB2YXJpb3VzIEZTVHlwZSBkZWZpbml0aW9ucyB0byB0aGUgYXBwcm9wcmlhdGUgYmxvY2tzCisKK2NvbW1pdCBiNWFjNGEwNGRjZDU0NzBkMDhkMDMzMjFhYmNkMWU5ODI2MjFlNmUwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDozOTo0NiAyMDExICswMTAwCisKKyAgICBGaXhlZCB1bnRlcm1pbmF0ZWQgc3RyaW5ncyBhZnRlciBzdHJuY3B5CisKK2NvbW1pdCAyYjM3ZTRlOGYyNTBhMGQ4ODIxMTk5YTc0YWMzZjRlNWI3YjdiYWJhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDozMTo1MSAyMDExICswMTAwCisKKyAgICBGaXhlZCB1bnRlcm1pbmF0ZWQgc3RyaW5ncyBhZnRlciBzdHJuY3B5CisKK2NvbW1pdCAzZDA4MzQ1MTU2YzQxOTMzM2RlOTY5ZjEzZDIxZmNlYzdlMThlOTRkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDozMjoyOSAyMDExICswMTAwCisKKyAgICBGaXhlZCB1bnRlcm1pbmF0ZWQgc3RyaW5ncyBhZnRlciBzdHJuY3B5CisKK2NvbW1pdCBjZDg1OWFkNTFjNGYxOGQ1YjBmYzY5ZGQ2NjlmY2IwNTFjNzk4OTY5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IERlYyAyMiAxNDozOTozMyAyMDExICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBtZW1tb3ZlIHNpemUKKworY29tbWl0IDMwZmY1OGQwOWQ0YzlkNTQzOGJiNjIxMDU0ZmQ3YWQ3YTJhNTk3ZTQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjA3OjE5IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIGxlbmd0aCBvZiBidWZmZXIgd2hlbiBwcmludGluZyBBU05fQklUX1NUUgorCitjb21taXQgNmMxNDg3ZTFkMzYwZDNkMjYwYTM5Y2IxZjViMTVkYTk3ODM5NTA1MworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTU6NDc6MzQgMjAxMSArMDEwMAorCisgICAgRml4ZWQgcG90ZW50aWFsIGZyZWUgb2YgdW5pbml0aWFsaXplZCBwb2ludGVyIGluIGVycm9yIGNhc2VzCisKK2NvbW1pdCBjNzZmYjk2ZjY1ZTMzYmEyZmQyMTJhOTIxZThjMzg2MTU1ZWU1YzdhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNTo0NDo0NiAyMDExICswMTAwCisKKyAgICBGaXhlZCB1bml0aWFsaXplZCB2YWx1ZXMgaW4gdWRwVGFibGUKKworY29tbWl0IGM0NDYwODY3OWI4OTc1MTE3NmYyOGEyZTU0ZDUyODJiNDZlMmEwNWMKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE0OjU2OjEzIDIwMTEgKzAxMDAKKworICAgIFVzZSBjYWxsb2MgaW5zdGVhZCBvZiBtYWxsb2MgYW5kIG1hbnVhbCBjbGVhcmluZworCitjb21taXQgYTA1YzVmOTUxMzQ2MTgyNGU3OTAzYWU5YWU5YTZjMzM4NmUzMzg3OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTQ6NDA6NTAgMjAxMSArMDEwMAorCisgICAgRml4ZWQgcHJpbnRpbmcgb2YgdW5pdGlhbGl6ZWQgdmFyaWFibGUgd2hlbiBzZW5zb3JzX2dldF9sYWJlbCgpIGZhaWxzCisKK2NvbW1pdCBlNGE1ZWRjNzIzOTNiZDNkZTliZjEyYmNlYmE5ZDgzYmJmN2RlNzBiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNDozMToyNSAyMDExICswMTAwCisKKyAgICBSZW1vdmVkIHVudXNlZCB2YXJpYWJsZQorCitjb21taXQgZmFlMmU1YjgzNWI4ZGYxZWFlNDdlNGNlYmI0ZWI0MDRkNzI4MjM3NworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTM6MzE6MjEgMjAxMSArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyB1bml0aWFsaXplZCBpaWQgaW4gZXJyb3IgY2FzZXMgYW5kIHdpdGggZGVidWcgaW5mbyBlbmFibGVkLgorCitjb21taXQgOWQ1OGY4MWE5MjM5Y2ZiY2ZjOGViY2UzNjdkMjFlOWIzZGNiMDI4YgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTM6MzM6MzMgMjAxMSArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBpbiBlcnJvciBjYXNlcworCitjb21taXQgMGJjOGMwOGVkZWFlN2FlMDk1ZjExNjI1OGMyMGFlNTc2N2Q2MDY1MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTM6MjA6NTIgMjAxMSArMDEwMAorCisgICAgRml4ZWQgcmV0dXJuaW5nIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgJ3N0YXR1cycgd2hlbiBzcyA9PSBOVUxMCisKK2NvbW1pdCA3MzA0YzUzY2Y4YWRlZThlY2NlZjFhOGYyNjc1NmZjMDdmMDk4NzIxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDE4IDIzOjMxOjUzIDIwMTEgKzAxMDAKKworICAgIE9uIHNvbGFyaXMgMTAgdGVzdCBpbiAvYmluL3NoIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgLWUgdGVzdC4gUmVwbGFjZSBpdCB3aXRoIC1mCisKK2NvbW1pdCA4Y2QzYmU2MGQ2OTNjOWMzNmZmYjk3ZDNkOWJjYjQ5YzFiNGFiZTM1CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRGVjIDE3IDA4OjUyOjI0IDIwMTEgKzAxMDAKKworICAgIEF2b2lkIHJlcGV0aXRpb24gb2YgdGhlIGNvbXBsZXggZXhwcmVzc2lvbiBkZXRlcm1pbmluZyBpZiBpdCBpcyBwb3NzaWJsZSB0byBnZXQgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MuCisgICAgCisgICAgVGhpcyBhbHNvIG1ha2VzIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIG9uIHBsYXRmb3JtcyBsaWtlIFNvbGFyaXMgMTAgdGhhdCBkZWZpbmUKKyAgICBJUF9SRUNWRFNUQUREUiBidXQgbGFjayBlaXRoZXIgb2YgbXNnaGRyLm1zZ19jb250cm9sIGFuZCBtc2doZHIubXNnX2ZsYWdzLgorCitjb21taXQgOTUzZjJlM2Q0MjVlZGUzYjg2M2EyZTdjY2IwYjRiYzg2MjkyOGI1NworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiA1IDIyOjEzOjA3IDIwMTEgKzAxMDAKKworICAgIE1vdmUgdGhlIHVzZSBvZiBfc2VuZHRvIGFuZCBfcmVjdmZyb20gYmVsb3cgdGhlaXIgZGVmaW5pdGlvbnMuCisKK2NvbW1pdCA2OGExMTczYzQ2Y2Y3NzYwMTQyNmNmMzkxZDlhODUyNzk0ZjIwNTdlCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gTm92IDIwIDIwOjA1OjE4IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNlcGFyYXRlIG91dCB0aGUgY21lc2cgYnVmZmVyIHNpemUKKworY29tbWl0IDQ2MWRkMTZmM2IyNjQ3MzIyY2RjZTYzNjMwODFjYzQ0YmE1YTQ5YjUKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMjYgMjE6NTE6MDEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWVyZ2UgdG9nZXRoZXIgdGhlIExpbnV4IGFuZCAqQlNEIHZlcnNpb24gb2Ygc3JjIHBvcnQgc2VuZGluZy4KKworY29tbWl0IDdhY2NiNjliYWExZmMwYjZhMzQzOWQyZTU0OWM4NmRhMzQ1M2JhZDIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MzA6MzEgMjAxMSArMDEwMAorCisgICAgVXNlIGEgYmFyZSBzdHJ1Y3QgaW92ZWMgaW4gaW5zdGVhZCBvZiBhIG9uZSBlbGVtZW50IGFycmF5LgorICAgIAorICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgY2hhbmdlIGlzIHRvIG1ha2UgX3JlY3Zmcm9tIG1vcmUgc2ltaWxhciB0byBfc2VuZHRvLgorCitjb21taXQgMzk4NTJjZDRjODVlZjJiZmM3NWNkZWEyODI1MjYxZWU5M2U3NjhjMgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToyOToyMCAyMDExICswMTAwCisKKyAgICBBZGQgY29tbWVudCBkZXNjcmliaW5nIHRoZSBwdXJwb3NlIG9mIHRoZSBjYWxsIHRvIGdldHNvY2tuYW1lIGFmdGVyIGFsbW9zdCByZW1vdmluZyBpdC4KKworY29tbWl0IDFiMjkyY2EyN2VhYjVjYWE3M2ZlYWFhODNkYzljMTJhYmMwZjJlNzAKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6Mjc6NTkgMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlLgorCitjb21taXQgYmM4Nzk1NzFlY2E5NTIwYmMxMzJmODQwYzNlNjU5ZDM3OTMxNDRkNworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOToyNTozNiAyMDExICswMTAwCisKKyAgICBJbnRyb2R1Y2UgdGVtcG9yYXJ5IHZhcmlhYmxlcyB0byBlYXNlIHRoZSBleHRyYWN0aW9uIG9mIHRoZSBzZXJ2ZXIgYWRkcmVzcy4KKworY29tbWl0IGI3ZWVhNmNmZmJkODcyOTMyY2UyYzA0ZmVmYjZmNDNkZTMzOWYzNzQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MTg6MzMgMjAxMSArMDEwMAorCisgICAgUmVuYW1lIHRoZSBjbWVzZ3B0ciB2YXJpYWJsZSB0byBjbS4KKyAgICAKKyAgICBUaGUgcHVycG9zZSBvZiB0aGlzIGlzIHRvIGluY3JlYXNlIHRoZSByZWFkYWJpbGl0eSBvZiB0aGUgY29kZS4KKworY29tbWl0IDBhNzQ2MWU3Mjg4MDVjNjJhMWNhYjlkODdiZmM3NGM3OTI3YTlmY2MKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBEZWMgMTEgMTk6MTU6MjIgMjAxMSArMDEwMAorCisgICAgRmFjdG9yIG91dCBhIGNvbW1vbiBsb29wIGluIHJlY3Ztc2cgb3B0aW9uIHByb2Nlc3NpbmcuCisKK2NvbW1pdCBiM2M2MjQ4ZDAyMDFhYjE2MTA4NDBkNmQwZTc0OWIzYjZjNGFkNzkyCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gRGVjIDExIDE5OjEzOjQzIDIwMTEgKzAxMDAKKworICAgIFVuaWZ5IHRoZSBzdHJ1Y3R1cmUgb2YgTGludXggYW5kIEJTRCByZWN2bXNnIG9wdGlvbiBwYXJzaW5nIHNvbWV3aGF0LgorCitjb21taXQgMzU2NDAwZDYyOTBhNDIzYjUyZWJlZWE1YTVlOTc2ZmIxNWJiNzNiNAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIERlYyAxMSAxOTowNDo1NiAyMDExICswMTAwCisKKyAgICBVc2UgQ01TR19EQVRBIG9uIHRoZSByZXN1bHQgb2YgQ01TR19GSVJTVC9ORVhUSERSLCBub3Qgb24gdGhlIGJ1ZmZlci4KKworY29tbWl0IDNiMzUxNzA4YzYyZGU0NmFhMWI5MGVkMjMyY2ZkOGM3YzViMDIyMzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAxMjowMDozMiAyMDExICswMTAwCisKKyAgICBSZW1vdmUgYSBjYXN0CisKK2NvbW1pdCBkZTkyNTBkOWRhZTk3MjdhNmNjN2Y2NDc2ODhkZGRmMWI4NTk3MTI4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMTE6NTg6MDQgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2Ugc3ByaW50X21pYl9vaWQoKSB0cmVhdCBPSUQgY29tcG9uZW50cyBhcyB1bnNpZ25lZCBpbnN0ZWFkIG9mIHNpZ25lZCBpbnRlZ2VycworCitjb21taXQgMGUzM2IzYjZkNTg1NGE0YmFjMTVkNGVhNWUwMTZjNTNkMTYxZDBjZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyA4IDEwOjAyOjI4IDIwMTEgKzAxMDAKKworICAgIEZpeCByZWNlbnRseSBpbnRyb2R1Y2VkIGNvbXBpbGVyIHdhcm5pbmdzCisKK2NvbW1pdCBiN2U1MGQ1ZjlhNjc1NTk4MmQyYWYzMTkxNDczY2IzNDY0M2JjMDNmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMDg6Mzc6MjIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUmVkdWNlIG92ZXJoZWFkIG9mIGNvbmZpZyBmaWxlIHBhcnNpbmcKKworY29tbWl0IDczYzllZTQyZDI4YWZlMmUxMDdhN2Q2NjE2YjZkMDExODkwYzM2ZWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAwOTowOTo1OSAyMDExICswMTAwCisKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcworCitjb21taXQgM2RiOTc5NjJiMzdlYjEyZDI1NGQ2MWU2YmUyMzRiMDZhMzkxYzhiYgorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgVGh1IERlYyA4IDA3OjQzOjQ1IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzNDUzODY4OiBmcm9tICJCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4iOiBGYWN0b3IgY29tbW9uIGNvZGUgaW50byBwYXNzX2NvbW1vbgorICAgIAorICAgIE1vdmUgdGhlIGNvZGUgZm9yIHBvcm1hdHRpbmcgYW5kIHByaW50aW5nIHZhbHVlcyBmcm9tIHBhc3MgYW5kIHBhc3NfcGVyc2lzdAorICAgIGludG8gcGFzc19jb21tb24uCisKK2NvbW1pdCBiNjU2OGM4M2YxNzU2ZTlhNjU0MzRlZGVlZWI0MGQyM2RkYmJiNjUyCitBdXRob3I6IGNjY2hpdSA8Y2NjaGl1QHNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyA3IDE2OjI1OjI3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IEJVRzogMzQ1MjA2OTogRml4IHNubXB0cmFwX29pZCBkZWNsYXJhdGlvbiBpbiBtaWIyYyBnZW5lcmF0ZWQgY29kZQorICAgIAorICAgIFRoaXMgYnVnIHdhcyBpbnRyb2R1Y2VkIGNvbnNpZGVyYWJsZSB0aW1lIGFnby4gSXQgZGlkIGFscmVhZHkgZXhpc3QgYXQgdGhlCisgICAgdGltZSB0aGUgNS42IGJyYW5jaCB3YXMgY3JlYXRlZCAoc2VlIGFsc28gY29tbWl0CisgICAgMGVjMDg4YWZhMjdjZmRhNGU2ZWE3OGFhZTdjZmM1NTA3NTY0ZWRkZSkuCisKK2NvbW1pdCBkNDk0ZGI2NGMyMDhiNGRjNjI4MTMxMzJmODg2M2JkNWMxYTM5ZDc3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6Mzg6MTcgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBFbGltaW5hdGUgYW4gdW51c2VkIHZhcmlhYmxlIChOb3cpCisKK2NvbW1pdCAyOGYyNTYxYmMyOTM1ZDhlMWNiZjQ2ZDI4MjAxNTgxNzNlN2E0Y2Y0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6Mzc6MTEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBNb3ZlIHRoZSBtYWluIGxvb3AgY29kZSBpbnRvIGEgbmV3IGZ1bmN0aW9uCisKK2NvbW1pdCAzOTZlMTIyZGRjNDJhOTE2ZjA2YTAyODg0YzBlOGEyNThlZGJlMjM4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMDk6MzI6MTYgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1hdGNoIGVhY2ggZ2V0cHduYW0oKS9nZXRwd3VpZCgpIGNhbGwgd2l0aCBhbiBlbmRwd2VudCgpIGNhbGwgYW5kIGVhY2ggZ2V0Z3JlbnQoKSBjYWxsIHdpdGggYW4gZW5kZ3JlbnQoKSBjYWxsLgorCitjb21taXQgM2VmZWZiYzAwMjQzOTk3ODZmOGI2OGIxZTkzYjBhOGZkZGRkYzdkYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjQxOjAxIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogUmVtb3ZlIHN1cGVyZmx1b3VzIGNhc3RzCisKK2NvbW1pdCA3ZjA1ZGFhOGUwZTBmNTMzYjBmMTJhM2UxY2YwNzY0MTUxOTkwOWQ2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTE6NTg6MzIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDQ0OTM5OiBCVUc6IDE3OTY4ODY6IHNubXBsaWI6IEF2b2lkIHRoYXQgc3ByaW50X3JlYWxsb2Nfb2N0ZXRfc3RyaW5nKCkgZW1iZWRzIHVucHJpbnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycyBvciBiaW5hcnkgemVyb2VzIGluIGl0cyBvdXRwdXQuIFRoaXMgYmVoYXZpb3IgY291bGQgY2F1c2UgdHJ1bmNhdGVkIG91dHB1dCBpbiBzbm1wdHJhcGQuCisKK2NvbW1pdCBkYjhmNTU4ZmQyZjNiN2MxMDllYTNhMWMyMTMzYjc1YjZmOGNiMmFkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6MDQ6NDEgMjAxMSArMDEwMAorCisgICAgQ29tcGlsZXIgd2FybmluZyBmaXg6IHBhc3MgdW5zaWduZWQgY2hhcnMgdG8gaXNwcmludCgpIGluc3RlYWQgb2Ygc2lnbmVkIGNoYXJzLgorCitjb21taXQgODAwZGMxMDI4ZTdlMGNkOGNjMTRkODRkZDMxNzIzZDQ3YWMwNzNkYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjE4OjU4IDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIGhpbnQgdmFyaWFibGUKKworY29tbWl0IDgzZWE0YTA4MGM5MGE3NGI5NzQzZDNmMjRjZjBkNGI4YTFlOGM4NDkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBOb3YgMjcgMjE6MTY6NTIgMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgdmFyaWFibGUgcW9zCisKK2NvbW1pdCA3YjllMDM0NDFjM2RjM2EwNzY3MGVkMDFmNWQwNDc5MWE4MmM3NTBjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjA0OjAxIDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSAjZGVmaW5lIHZhbCh4KSBfX1NUUklORyh4KSBhbmQgY2hhbmdlIHZhbCh4KSBpbnRvIF9fU1RSSU5HKHgpLgorCitjb21taXQgMmYzNzliMGU0ZWNhZGZhNGU1NDFlMzAwNWM4ZmM4MjgxODgyYjc0MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNTo1ODo0NyAyMDExICswMTAwCisKKyAgICBGb2xsb3ctdXAgZm9yIGNvbW1pdCAxYWE3MDRlOiB1bmJyZWFrIHRoZSBNU1ZDIGJ1aWxkCisKK2NvbW1pdCA2NGVmMGY3MTEyNzYxNzgzNzAyN2ZiMmNmYWYxNzRiOTViYTc5ZTBkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjE5OjUwIDIwMTEgKzAxMDAKKworICAgIEFkZCBTTk1QOjpyZWdpc3Rlcl9kZWJ1Z190b2tlbnMoKQorCitjb21taXQgN2JlYWQ5Y2E5MTdjNjc1NjZkNWVkOThhYjUwN2JiYzAyODE2MjE3ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowODowOCAyMDExICswMTAwCisKKyAgICBBZ2VudFggc3ViYWdlbnQ6IFJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uCisKK2NvbW1pdCAwZWQ3MTU0MWY4N2U3ZDc4YmM5OThlZWJkYTMyMTdjNTllMWRmODMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjAzOjE5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEFkZCBEb3h5Z2VuLXN0eWxlIGZ1bmN0aW9uIGhlYWRlciBmb3IgbmV0c25tcF9yZWdpc3Rlcl9kZWZhdWx0X3RhcmdldCgpIGFuZCBuZXRzbm1wX2NsZWFyX2RlZmF1bHRfdGFyZ2V0KCkuCisKK2NvbW1pdCA4YzI5NzJiNjFlNDAxNjliNDdjNTA5ODhiNmFlOWU4YzI4NWY4NGY4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjAyOjU0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEZpeCBzcGVsbGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgU05NUCBtb2R1bGUKKworY29tbWl0IDVkZjJiYWM2YmQ3MTc3OTkzMTFmMDAxYWM3YjczZGI4OGYxMWJkZGEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFR1ZSBOb3YgMjkgMDg6NTk6NTggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogT25seSB0cmFuc2Zvcm0gdGhlIGFkZHJlc3MgdG8gcHJpbnRhYmxlIGZvcm0gd2hlbiBuZWVkZWQuCisKK2NvbW1pdCAxNzFlOGQ0OGQ0YWYwNDAxM2NmZjhmZDI4ZjUzNDFhMmFlZjIxZDg4CitBdXRob3I6IE1pam8gU2FmcmFkaW4gPHNhZnJhZGluQGxpbnV4LnZuZXQuaWJtLmNvbT4KK0RhdGU6ICAgVHVlIE5vdiAyOSAxNjo0OTo0NiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wLWJyaWRnZS1taWI6IEZpeCBpbmRleCBpbnRlcnByZXRhdGlvbi4KKyAgICAKKyAgICBUaGlzIHBhdGNoIGNvcnJlY3RzIGEgd3JvbmcgZGF0YSBpbnRlcnByZXRhdGlvbi4KKyAgICBzbm1wLWJyaWRnZS1taWIgb2J0YWlucyB0aGUgaWZpbmRleCB2YWx1ZSBmcm9tIHRoZSBzeXNmcworICAgIGF0dHJpYnV0ZSAnaWZpbmRleCcgVGhlIHZhbHVlIGdpdmVuIGJ5IHRoZSBzeXNmcyBhdHRyaWJ1dGUKKyAgICBpcyBhbiBpbnRlZ2VyLCB3aGljaCBpcyBoYW5kbGVkIGFzIGhleCBhbmQgbGVhZHMgdG8KKyAgICBpbmNvcnJlY3QgZGF0YSBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIuCisgICAgCisgICAgZS5nLgorICAgICAgICAkID4gc25tcHdhbGsgbG9jYWxob3N0IEJSSURHRS1NSUI6OmRvdDFkQmFzZVBvcnRJZkluZGV4LjIKKyAgICAgICAgQlJJREdFLU1JQjo6ZG90MWRCYXNlUG9ydElmSW5kZXguMiA9IElOVEVHRVI6IDU0CisgICAgCisgICAgYWNjb3JkaW5nIHRvIHRoZSBzeXNmcyBhdHRyaWJ1dGUgdGhlIHZhbHVlIGlzIDM2CisgICAgCisgICAgICAgICQgPiBjYXQgL3N5cy9jbGFzcy9uZXQvPGRldmljZT4vaWZpbmRleAorICAgICAgICAzNgorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IE1pam8gU2FmcmFkaW4gPHNhZnJhZGluQGxpbnV4LnZuZXQuaWJtLmNvbT4KKworY29tbWl0IDgyZTM5ZmI2NzA2ZGY5MGVjZjJmYzllMTBhZGEyYjk2MmVlMTk2ZjMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTm92IDI5IDEyOjI3OjQ2IDIwMTEgKzAwMDAKKworICAgIEZpeCBtdWx0aS1saW5lIGNhc2UgdGVzdGluZyBvZiBpbmNvbWluZyBPSUQKKworY29tbWl0IGIxNWRhMWE0NTE2MDYxMTA1YTFlYWM3NDUwY2Y2NTBlYzQ0MjY2YjIKK0F1dGhvcjogTmlrb2xheSBEZW5ldiA8bmRlbmV2QGdtYWlsLmNvbT4KK0RhdGU6ICAgVHVlIE5vdiAyOSAwODoyOTo0OSAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBGcmVlQlNEOiBSZXN0b3JlIElQX1JFQ1ZEU1RBRERSIGZ1bmN0aW9uYWxpdHkuCisKK2NvbW1pdCA3ZjQ3ZjUyZTQ4MWJhYTlhYWZiNTc4NDI0NGIwZGQyNjUzZTdkY2ZmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gTm92IDI4IDA4OjUxOjM5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFVzZSBTTk1QX0FMTE9DX1RZUEVERUYgdG8gYWxsb2NhdGUgdHJhbnNwb3J0cyBpbiBvcmRlciB0byBhdm9pZCB0aGUgc2VwYXJhdGUgY2FsbCB0byBtZW1zZXQuCisKK2NvbW1pdCBjZjg2MDM5ZTMwODYyMjVjMzA4NWJiOWFkZjA4OGI4YmE1YmE2OTc5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTm92IDIyIDE1OjAyOjU4IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHVuaXQtdGVzdHMvVDEwMnBkdV9idWlsZF9jbGliIHBhc3MuCisKK2NvbW1pdCAxYTg3ZTc2ZTAwZWUzZDVjZDM3YTA3YmZjM2Q4NDQ5MGQzYzJhNGVjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTm92IDIyIDE0OjU1OjQyIDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHVuaXQtdGVzdHMvVDAxNGdldGhvc3RieWFkZHJfY2xpYiBwYXNzCisKK2NvbW1pdCA4ODY3ZmQxZGNmZTcyYjU5ZDA3MzIyZmYzOGE2OTliNjZlYzRmMzI2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgTm92IDIyIDA5OjQ0OjM4IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgcm9idXN0IGFnYWluc3QgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuCisgICAgCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oKSB1c2UgbWVtc2V0KCkgb24gVW5peCBzeXN0ZW1zIGluc3RlYWQgb2YgYW4gZXhwbGljaXQgbG9vcC4KKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIHN1cmUgdGhhdCBvbiBVbml4IHN5c3RlbXMgbmV0c25tcF9sYXJnZV9mZF9jbHIoKSBkb2Vzbid0IHRyeSB0byByZWFkIG1lbW9yeSBpdCBpc24ndCBhbGxvd2VkIHRvIHJlYWQgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGVxdWFscyAtMSAoYSB2YWx1ZSB0aGF0IHNob3VsZG4ndCBiZSBwYXNzZWQgYnkgdGhlIGNhbGxlcikuCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX2lzX3NldCgpIHJldHVybiBmYWxzZSBvbiBVbml4IHN5c3RlbXMgaWYgdGhlIGZpcnN0IGFyZ3VtZW50IGVxdWFscyAtMSAoYSB2YWx1ZSB0aGF0IHNob3VsZG4ndCBiZSBwYXNzZWQgYnkgdGhlIGNhbGxlcikuCisgICAgQ0hBTkdFUzogV2luZG93czogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBzaHJpbmsgYmVoYXZpb3IgY29ycmVjdC4KKworY29tbWl0IDIzZGIwY2YwOWI4YjBlYWIzN2I3NDllZjBjM2MzZjMwNjkwMDI0NWMKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMjEgMjM6MDI6NTcgMjAxMSArMDEwMAorCisgICAgRml4IGNhc3RpbmcgdHZfdXNlYyB0byBpbnQgd2hpY2ggbWF5IGJlIHRvbyBzaG9ydAorCitjb21taXQgODBlZTQwMjJlNTM0ZTY0YWFkNWE1ZjI3MTkyODQzYjQyYWNiODVlMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwOToxNDowMiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDM5MjM0OiBNb3ZlIG5ldHNubXBfcGFzc19zdHJfdG9fZXJybm8gdG8gcGFzc19jb21tb24gYW5kIHJlbmFtZSBpdCB0byBuZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vCisKK2NvbW1pdCAwYmFhOTI5NmMwNzJiYjM3MzU3NjBiMGRkOTkyZjJkMWQzY2EyN2ZhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDA5OjA1OjI0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0MzkyMzQ6IENvcnJlY3QgdGhlIGRlcGVuZGVuY2llcyBvZiB1Y2Qtc25tcC9wYXNzIGFuZCB1Y2Qtc25tcC9wYXNzX3BlcnNpc3QKKworY29tbWl0IDFhYTcwNGU0YTI5NDQzMGIyOGUzOWI2ZjllNDY4M2I4YTQ4YmNlMDQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDg6MzU6MjEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEZhY3RvciBvdXQgYXNjMmJpbiBhbmQgYmluMmFzYy4gQWRkIGEgbmV0c25tcF9pbnRlcm5hbF8gcHJlZml4IHRvIHRoZW0KKworY29tbWl0IGNkYThmZTkxMDEzZjEyY2JmNjRhMDc3NWFiYjU1NzIwMDM1YWY5MzEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDA6NTU6MjQgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IENhbGwgc25tcF9vaWR0cmVlX2NvbXBhcmUgaW5zdGVhZCBvZiBzbm1wX29pZF9taW5fY29tcGFyZQorICAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgc25tcF9vaWRfbWluX2NvbXBhcmUgc2luY2UgaXQgaXMgaW50ZXJuYWwgYW5kIHVudXNlZAorCitjb21taXQgODVmODkzZTJiNjA1ZTY3ZjliZDA0NDNjNzRlMmVkMjY5YWE2ODU2NAorQXV0aG9yOiBOaWtpIERlbmV2IDxuaWtpX2RAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTm92IDE3IDIyOjQyOjMyIDIwMTEgKzAxMDAKIAogICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzMTc1NjQwOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpCiAgICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTgzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFRoaXMgaHVuayBmZWxsIG9mIHdoZW4gdGhlIHJlc3Qgb2YgdGhlIHBhdGNoIHdhcyBtZXJnZWQuCiAKLWNvbW1pdCBjMDQ4ZjJjZTQzYmZhODJlOGQzYWQ4YTJiZDMxMjI5MGM2YmEyN2YwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZTJkOGU4MzM3YWY3MjU3ZjdlYjcyNzY3OGY4MDM0ZTg0YWU3NGNlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzOTE1OTdjZmZkOWFiZGU1ZmY0NmI3NGM1YjZjN2UzMjFhYjdkM2MxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2YjNmYmJhZDkxM2E4ZDc1YThhZTUwYTZkNTMyMGUxZmFmZTBlMTBkCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZjFiNzg3NTVmOWQ5MmQzOWIxMGJiNmYwYWMzMjQ5MzIwNmIzNjg0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMTUgMTM6MTc6MzcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTGludXg6IFBBVENIRVM6IDMyMDU4MTE6IE9wdGlvbiB0byBza2lwIGZkL2xvb3AvcmFtIGRldmljZXMgaW4gZGlza0lPVGFibGUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNDU3NDM3MmU0NzhkMzdlZmEzOTc1Y2EwZmM3MThmY2RhMzA2MDhmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjE6MzE6MDkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2YzA2YTI1OTRmNmU4N2M3MjI1MWZmNzkzZTdkOTE4N2I4OTE1ZmJjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjE6MzE6MDkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNTdmNGQ3MzcwMmZjNGM3YmEyZjdlMTMyMWE5NjU1OTQ2YjBlODAzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjE6MzE6MDkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3ZTg5OWI1Y2YyZGIyMTY0ZTBjMWQ1ODcwNmI5NTAyZTg2NTk2OTcwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjE6MTA6NTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScgYmxvY2tzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjk2N2Q3ODk5OWI3ZjRjYjUyNzAyMDc1MGNkMzU5MjdmZTRmMmZlNwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIxOjEwOjU2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknIGJsb2NrcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDUwMjM5ZjY2NTA1ODZiYjRiOTkyMDU0MjQ1OTJiN2I1MTkxZDU0MDQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMToxMDo1NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mICd3aGlsZSAoZmFsc2UpJyBibG9ja3MKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5M2IzMmUyOGVmNTUxOTkzM2Y1MDJkZWNmOTljNjhlYTg1YTBkZWE1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjE6MTA6NTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScgYmxvY2tzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWQ1ZDZmZDQ4MTUyOGFkZjdjYTAxZWMwNzkwODQ5Y2E3MzE5NmRjMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIwOjUyOjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2Ygbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzYThkY2EzMTQzYzVjYTExNDQzZmViMDdmN2FmNGJlZDgwOGJkZDMyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjA6NTI6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUgb2JqZWN0cyBuYW1lZCBmb29UYWJsZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI0YmM3YjI3Y2RhNDk5MzkxYjllY2IyY2JlNTQxZTEwYzE1MWFiZDUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMDo1Mjo1OSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIwNDg4MzogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTlkNGQ5ZGMyZTQyYTI5OWM1OGI4MGM3Y2U4OTgzNjgzYmQyYTc3MgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIwOjUyOjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2Ygbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2YTI5OTY4Y2JkYzAxNjZhNDdhOTNkMWMxNGQzOWEyZTM5ZmE5OGQyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjA6NDQ6MzcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM0MmNhOWRiNTM3MWNiYWQ3ZmE5NmFmMzJhY2VkNzUwYzJkNzdkYjEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEFwciAxNCAyMDo0NDozNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZhcmJpbmRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzZhNzFlYWViZWY2YzgzMWRhYTM2ZjU3ZWMxZmYyMzBmMDUyYjMzMAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgQXByIDE0IDIwOjQ0OjM3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjExNDg0OiBTdXBwb3J0IGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1Mjg3ZjVkMTQ2MzFkNDA4NGVlZTI0MDMxNzQ2YzU0MjI1MjY3MTIyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBBcHIgMTQgMjA6NDQ6MzcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYwOGExOTk4MDcxYjZkNGY0ZWM4ZDlmNWZiZjhhZWZlNTYyOWNlN2EKK2NvbW1pdCA1YzkxM2U1NDY1NmFlMDA5NmIxZmViNmRhOThiNWZjOWNhODFmMjc2CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDIwOjAxOjU1IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzozMzowNyAyMDExICswMTAwCiAKLSAgICBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRGVmaW5lIHRoZSBmdWxsIE5ldEJTRCBoaWVyYXJjaHkgZG93bndhcmRzCiAKLWNvbW1pdCAzMzMxZTA5YmJlYzczNDAzNGRiZGI3NjdlNjZjMDNlMTRhNDU0OGQ1Citjb21taXQgYjg4MTg0MWJkMDQ5M2RkNzFkNjMyNTliZGRlZDQ0OWIwNmYwMmMzMgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAyMDowMTo1NSAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MzA6MzMgMjAxMSArMDEwMAogCi0gICAgQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEZpeCBzaXplX3QvaW50IG1pc21hdGNoZXMKIAotY29tbWl0IGRkODg5ZDU2YWJjNGE2YTJiNzZiMWY3NDg5ZWE1NWIwNDY3YmUxODQKK2NvbW1pdCBjYTI5NGNmNzViYmM4ZTkwZGJmNDRlZTQwNDc4OTM1ZTkxZGIxNDg3CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDIwOjAxOjU1IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzoxODowMyAyMDExICswMTAwCiAKLSAgICBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKIAotY29tbWl0IDBhMTg1YTlkMzA2YjY4MTZhMjZlMzUwOGRjYjA5OGI5MTg2MWRjMGIKK2NvbW1pdCBjZDMyYzJkZmYwNmI5YjQ1MmNjMThkNTUyZDJmMjIzNDA5MmM4MjljCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDIwOjAxOjU1IDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzoxNzowOSAyMDExICswMTAwCiAKLSAgICBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRml4IGZvcm1hdCB3YXJuaW5nCiAKLWNvbW1pdCBkOTQ3NzI1MWQxNTRmYmI1MjZmNTMzNjdiMGI2ZWJjZDFkMjY3NGFjCitjb21taXQgODgzMTM2YzJiMmZhMDczOWY0MzdhOGNmYjY2MTRhY2NjNzZlMjY4ZQogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAxOTo1MzoxMCAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMjM6MTU6NTggMjAxMSArMDEwMAogCi0gICAgRml4IGZvciBnYXJiYWdlIG91dHB1dCB3aGVuIGFnZW50IHByZXNlbnRzIG1vcmUgY29sdW1ucyBpbiBidWxrCi0gICAgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgTW9yZSBuZWVkcyBmb3IgTkVUU05NUF9QUklvIGZvcm1hdCBzcGVjaWZpZXIKIAotY29tbWl0IDc5YzY5OGExNDc0ZTEwODU1ZjIxMGE2OTk4NzA4MDk2NzEyYmU2MDgKK2NvbW1pdCBiODA4NGE3Y2NjOTA5YjZkNmRiN2MwZThlNTk2ZDc4NjcxZjU2NzhiCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDE5OjUzOjEwIDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzoxNDoyNiAyMDExICswMTAwCiAKLSAgICBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZSBjb2x1bW5zIGluIGJ1bGsKLSAgICByZXNwb25zZSB0aGFuIG91ciBsb2NhbCBNSUIgZmlsZSAgc3BlY2lmaWVkLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBGaXggdXNpbmcgY2hhciBhcyBhcnJheSBpbmRleCAoY3R5cGUuaCkKIAotY29tbWl0IGYzOTRhMjY2NjA0YWY5ZjNlMWI1M2VmNmRhMzc1YmFhNGEzOTAxZmUKK2NvbW1pdCA4NDUyOWU2MzIwYTg5ZDk3ZjEzMTRhZWJhZDgwNjI1NWQyYTFiMThjCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgQXByIDEyIDE5OjUzOjEwIDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzowMDo1NyAyMDExICswMTAwCiAKLSAgICBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZSBjb2x1bW5zIGluIGJ1bGsKLSAgICByZXNwb25zZSB0aGFuIG91ciBsb2NhbCBNSUIgZmlsZSAgc3BlY2lmaWVkLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBGaXggbWlzc2luZyBmb3JtYXQgZm9yIEZyZWVCU0QgNAogCi1jb21taXQgNTQ3ODdkMjViMmZiYWFkMDQ3YTU0ZmMzMGVmZWVjYzJkMjgwNWNlNworY29tbWl0IDRiZDAzNTI5NTVhMjU1MWJmZTAyMzA4ZGQxMzRiOTEyOGM5OGI5ZTkKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTM6MTAgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDIyOjU5OjM2IDIwMTEgKzAxMDAKIAotICAgIEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlIGNvbHVtbnMgaW4gYnVsawotICAgIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEZpeCBwYXJhbnRoZXNpcyBwcm9ibGVtCiAKLWNvbW1pdCAwMDdlNzZkNmRjMzhhY2RmYWI3NTZmZTliZDhlMjNkODIwOTViNGM2Citjb21taXQgZmU2MjY5YjE5MDBjZjQ0ZGMyN2ExOTlhNzYxZDE1YTAxYzNmMzA5MgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAxOTo1MDowOCAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMjI6NTg6MzQgMjAxMSArMDEwMAogCi0gICAgRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbiAnZG9Ob3RSZXRhaW5Ob3RpZmljYXRpb25Mb2dzJwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBGaXggc2l6ZV90L2ludCBtaXNtYXRjaGVzCiAKLWNvbW1pdCBmMWVkY2ZkMDQ5Yjc2MGJjNTAxMDRjZmU4MjgzOGVkMmIzNjMyODYxCitjb21taXQgYTRkYjlmOWZjMTNkMjFlY2ZmNDg4ZWI0MTAzNzZlZGRhNmMyODIzMgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAxOTo1MDowOCAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMTM6NDM6MzQgMjAxMSArMDEwMAogCi0gICAgRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbiAnZG9Ob3RSZXRhaW5Ob3RpZmljYXRpb25Mb2dzJwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwogCi1jb21taXQgYWY1MDkyNDA2OWE4OGI1YmFkYzA4NDA2NWUyMWI2OTFmMzFmMzEzZAorY29tbWl0IDM5MGMwMTE0YzhlYzBiZGIyN2IwOGI2Zjc0ZTNmNmVmM2E2Mjk4MWIKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTA6MDggMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDE2IDEzOjM3OjQ5IDIwMTEgKzAxMDAKIAotICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzCiAKLWNvbW1pdCAzM2I5NDA1ZDEyMDMwNDZhNDU5MDYzNGM1OTJjNzE4MWMxMzNiN2YyCitjb21taXQgMjVjZmMxOTYyYWU1NzZjY2IxNTU4ZGExZTNlZjhiNmMxN2Y2M2MxNgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEFwciAxMiAxOTo1MDowOCAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMTE6Mjc6NTMgMjAxMSArMDEwMAogCi0gICAgRml4IHdyb25nIG5hbWUgZm9yIGNvbmZpZyB0b2tlbiAnZG9Ob3RSZXRhaW5Ob3RpZmljYXRpb25Mb2dzJwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBSZWFsbHkgdXAtdG8tZGF0ZSBtaWJzCiAKLWNvbW1pdCAyZmIwYjg5YzIzMjNkYjMwOWIxNjJkNjBhOTQzYzFlM2EwYTE3ZDA3Citjb21taXQgMGU4NmM3ODFmMzk4OWJmMDIyYzg5OTNhMTE4NjE3Yjc0YTc1NDIwYwogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEFwciA5IDIxOjU5OjExIDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNzoxOSAyMDExICswMTAwCiAKLSAgICBSZW1vdmUgYm9ndXMgKExpbnV4KSBkZWZpbmVzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTczIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIG1lbW9yeV9saW51eDogZ2V0IFNobWVtIGZyb20gL3Byb2MvbWVtaW5mbyBmb3IgMi42IChvciBuZXdlcikga2VybmVscwogCi1jb21taXQgNGYzZGE3NjdiMGY4N2M5OWM0YzFmNWI3NDEyMDNkN2Q2OTZiZWVlYQorY29tbWl0IGJmMjY0ZDE1ZGVkN2FjYmJmMmUzODcxYjk4ZmQxZmNlZjQzZDllYzMKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBBcHIgOSAyMTo1OToxMSAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMDk6MTY6MTYgMjAxMSArMDEwMAogCi0gICAgUmVtb3ZlIGJvZ3VzIChMaW51eCkgZGVmaW5lcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBtZW1vcnlfbGludXg6IGNsb3NlIHNvY2tldHMgaW4gZXJyb3Igc2l0dWF0aW9ucwogCi1jb21taXQgYzNkYmJkOWZjNTdhY2JjYTk5OTM1NmNkZjliZTk1OGNjMTE3MzVlZgorY29tbWl0IDU3ZmY4YTQwYmFlNWQ5YmNhZDE2MDg5MTQyYTljZjMyOGM5ZmExZjUKIEF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBBcHIgOSAyMTo1NjozMyAyMDExICswMDAwCitEYXRlOiAgIFdlZCBOb3YgMTYgMDk6MTQ6NTcgMjAxMSArMDEwMAogCi0gICAgSEFWRV9UTV9UTV9HTVRPRkYgaXMgSEFWRV9TVFJVQ1RfVE1fVE1fR01UT0ZGCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIGRpc21hbi9waW5nLCBkaXNtYW4vdHJhY2Vyb3V0ZTogQ2xvc2Ugc29ja2V0cyBpbiBlcnJvciBzaXR1YXRpb25zCiAKLWNvbW1pdCAxODQ4NDhmNmE1MzYyYTQ1MDE5NzRhNWNmMmU1NzcxZDI4NjRmZjc4Citjb21taXQgOGEyNTAyYTE1YzMyMTdiOTU5MzlhM2M4MzYxNjdkMjMwYWMzNWYwMgogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEFwciA5IDIxOjU2OjMzIDIwMTEgKzAwMDAKK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxMzo1MyAyMDExICswMTAwCiAKLSAgICBIQVZFX1RNX1RNX0dNVE9GRiBpcyBIQVZFX1NUUlVDVF9UTV9UTV9HTVRPRkYKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgVXAtdG8tZGF0ZSBsaXN0IG9mIFJGQ3Mgd2l0IG1pYnMKIAotY29tbWl0IGIxY2QyMWE0ZDcxYzE3YzEyMjEzNGFjMzI4NDkxN2Y2NTM2M2U0ZDIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBBcHIgOSAyMDowNDoyOSAyMDExICswMDAwCitjb21taXQgZGNkZDcwMjExMWQ4ZGE1ZjUzODA0Y2ZjZjBkZmRhZDczMTQ2OGJkZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBOb3YgMTUgMTA6NTc6MzQgMjAxMSArMDAwMAogCi0gICAgU29sYXJpcyBzdXBwb3J0IGZvciBTQ1RQLU1JQgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBEb24ndCB0cnkgdG8gaW5zdGFsbCBhbiBlbXB0eSBsaXN0IG9mIG1hbiBwYWdlcyAoTUFOMykKIAotY29tbWl0IGNjZTMwNDE5MzA5OGY3NTczODA3YzgyYTcwOGJjYmUwMzQ3YTdhMmIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBBcHIgOSAyMDowNDoyOSAyMDExICswMDAwCitjb21taXQgYmE2MTk4MDRlNTk3OGE4ZGY3NTQ4NDRlZmNjYTUyYjY5YjUwMTVmYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE5vdiAxNCAxMzozNDoyMCAyMDExICswMTAwCiAKLSAgICBTb2xhcmlzIHN1cHBvcnQgZm9yIFNDVFAtTUlCCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIE1pbkdXOiBNYWtlIHN1cmUgdGhhdCB0aGUgYmFja3NsYXNoZXMgaW4gdGhlIHBza2lsbCBtZXNzYWdlIGFyZSBkaXNwbGF5ZWQuCiAKLWNvbW1pdCBjNjY1OWM5NGFkOWJhODA2MGRkZTE4OTQyNzYxY2U4NWQxYTVjYzE5Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgQXByIDkgMTk6NTA6MzAgMjAxMSArMDAwMAorY29tbWl0IDkyM2VlY2M1MDdmNzUwNDNiNjBjNWU2ODA1M2E0ZjM5NmFiMGIwZDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBOb3YgMTQgMTI6MzY6MzggMjAxMSArMDEwMAogCi0gICAgVFogaXMgb25lIGhvdXIgb2ZmIGlmIEhBVkVfVE1fVE1fR01UT0ZGIGFuZCBTWVNWIChzdWNoIGlzIExpbnV4KQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE2OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDb21waWxlciB3YXJuaW5nIGZpeCBmb3Igc3lzdGVtcyB3aGVyZSB1aW50NjRfdCA9IHVuc2lnbmVkIGxvbmcgKGUuZy4gUkhFTCA2LjEveDg2XzY0KQogCi1jb21taXQgOWZhNjRmMjdhYzUxOThlNTRmZWYyZGY1OGRjMDk0YWYyMzdmYWYxZQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEFwciA5IDE5OjUwOjMwIDIwMTEgKzAwMDAKLQotICAgIFRaIGlzIG9uZSBob3VyIG9mZiBpZiBIQVZFX1RNX1RNX0dNVE9GRiBhbmQgU1lTViAoc3VjaCBpcyBMaW51eCkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhOWE2MTllMGQxNzMwM2M5ZWU3ZDVhN2U3MTA2ZWEwYWYzM2I5ZTk2Ci1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEFwciAxIDAxOjExOjA3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IGR0bHM6IG92ZXJoYXVsIG9mIGRlYnVnCi0gICAgCi0gICAgICAtIGRyYXN0aWMgcmVkdWN0aW9uIGluIG51bWJlciBvZiBtZXNzYWdlcyBhbmQgbXNnIGNvbXBsZXhpdHkKLSAgICAgICAgZm9yIGJhc2ljIGR0bHN1ZHAgdG9rZW4KLSAgICAgIC0gcHJldmlvdXMgbGV2ZWwgb2YgZGV0YWlsIGF2YWlsYWJsZSBieSBhZGRpbmcgOTpkdGxzZHVwIHRva2VuCi0gICAgCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWZhZDk4N2VlYzFkZWY3Y2Q4NmM2NWFjMjc5MDEzNzNlN2E2M2QwYgotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBBcHIgMSAwMDo1MzoyOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBkdGxzOiBjbGVhbiB1cCBjbG9zZTsgY2F0Y2ggJ2Nvbm5lY3QnLydkaXNjb25uZWN0JwotICAgIAotICAgICAgY29ubmVjdCA9IHdlIGdldCBzdWNjZXNzZnVsbHkgZGVjb2RlZCBzbm1wIGRhdGEKLSAgICAgIGRpc2Nvbm5lY3QgPSAwIGJ5dGUgcmVhZCwgc3NoIHNodXRkb3duIGZsYWcgc2V0Ci0gICAgICBhZGQgYmlvX2NhY2hlIGZsYWdzIGZvciBjb25uZWN0ZWQvZGlzY29ubmVjdGVkCi0gICAgICBjaGVjayBmb3IgbnVsbCBwdHIgYmVmb3JlIGRlcmVmZXJlbmNpbmcKLSAgICAgIGNsb3NlIGhhbmRsaW5nOgotICAgICAgLSAgb25seSBzZW5kIHF1ZXVlZCBkYXRhIGlmIHdlIGdvdCB0byBjb25uZWN0ZWQgc3RhdGUKLSAgICAgIC0gIHNlcmlvdXNseSByZWR1Y2UgdGltZW91dCB0byB3YWl0IGZvciBqdW5rIHJlYWQuIGkgdGhpbmsKLSAgICAgICAgIHdlIHNob3VsZG4ndCBldmVuIGJvdGhlcgotICAgICAgLSByZXR1cm4gZWFybHkgaWYgY2FjaGVwIGlzIE5VTEwsIHNvIHdlIGRvbid0IGhhdmUgdG8gdGVzdCBpdAotICAgICAgICByZXBlYXRlZGx5Ci0gICAgICAtIHVzZSBjb3JyZWN0IG5mZHMgdmFsdWUgaW4gc2VsZWN0IGNhbGwKLSAgICAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA4MDYzMjZiNThhOTE2ODNlYTJhNjQyZjZjMzJhMThiMDk4NzY0NWRmCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAzMSAwNToxNzo0MCAyMDExICswMDAwCi0KLSAgICBtYWtlIHRydW5rIGFuZCB2NS02LXBhdGNoZXMgY2xvc2VseSBhbGlnbmVkCi0gICAgCi0gICAgICBtb3N0bHkgY2hhbmdlcyBpbiBkZWJ1ZywgY29va2llIHRyYWNraW5nCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGQ3ZTdlNDJlZTNiYTBmYWYyMTU0MDA5MDA0MzRkNjAyNGMyNTBmOAotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMzEgMDM6NTM6MzMgMjAxMSArMDAwMAotCi0gICAgYWRkIGNvb2tpZSBoYW5kbGluZzsgcmVtb3ZlIGlmZGVmJ2QgY29kZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk4ODhkNDQ0Mzg4ZTNmNmIwZjY5ZWFhYWEyMjU4YjMxNGIzNzcwNTcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxOCAxMToyMzoyNCAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGEyYjQ1M2JkYTcyMzczZGJiYjExNWY3YTljMDRhNjM1ZDkzMzllMDkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxOCAxMToxODoyMiAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI1ZDU0OWEyZTE3OWNiMThkNWFiMzQ0MDMwNTMxMDg0MTE2MWZmMWYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxOCAxMToxNTo1NSAyMDExICswMDAwCi0KLSAgICBtYWtlIGRlcGVuZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJkYTIyZTBiYzVkNDgyYzVjMzAzZTMxYmE1YzQzMmMwOTFmYTBkZDgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxOCAxMDozNjoyMiAyMDExICswMDAwCi0KLSAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDczNDUzMjJlMjgxMjU4OGIxM2E0YzgxYjNjZGM4NzcyOWNjM2Q4ZjcKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciAxOCAxMDozMjo0OSAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0YWVhNTg2NmYxNWY5NjVkYTcyNjRiOWMxMjNhNzI4YzljZmE4NzNkCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDE3IDIxOjA5OjEwIDIwMTEgKzAwMDAKLQotICAgIEZvcm1hdHRpbmcgYm90Y2gKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZWY4ZGNkMDFkMTU0MGI4ZmM3NzE2Mzg0NWYwMWUzZTJkOWI1MTAxCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDE3IDIxOjA3OjI3IDIwMTEgKzAwMDAKLQotICAgIEluc3RhbGwgcmVxdWlyZWQgbWlicwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDc2NzkzNmEzNzVjNGE5N2ZkMjI5NTFkZmQyZWE3Yjg1YWVhZmQ5NmMKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTcgMjE6MDU6MjEgMjAxMSArMDAwMAotCi0gICAgTmV3IFJGQyBtaWJzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWU1MDU2ZjEyNGYxNTQ2ZjZmNTA2ZDg2MTY5YmM4Y2YwZjUwNWUwMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWFyIDE1IDEyOjM3OjIwIDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjY2MjhhYTdlMDQwZDZhOGEzZTYxOGRjZjcyODQzZWEwYjgxZTExNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWFyIDE1IDEwOjU3OjU5IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2VhNTE3OTA1YTgxNzg0Yzc4ZTdmY2FlOGU3MjM0ODUyNDE2NmFiOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWFyIDE1IDEwOjU2OjAwIDIwMTEgKzAwMDAKLQotICAgIG1ha2UgZGVwZW5kCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmI4YjQxNjhmOWVlODJhNmIyNWExYWY3ZTAwN2NkMGU3NTU0N2Q1MwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWFyIDE1IDEwOjQyOjA2IDIwMTEgKzAwMDAKLQotICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVjNDRmN2NlNDNjMzYyYjg2ZTNmZDFjOGJhOTlkZDUxNGRmOTgyMzEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIE1hciAxNSAxMDo0MToyNyAyMDExICswMDAwCi0KLSAgICB2ZXJzaW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGEzNzE2MTkzZmU0Y2YyZTgyYzRiZTBlOWU4ZTZmNGU2N2Q0ZDA2YmQKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBNYXIgMTUgMTA6MzE6MTIgMjAxMSArMDAwMAotCi0gICAgU3BlbGxpbmcgZml4OiByZWdpbmVyYXRlZCAtPiByZWdlbmVyYXRlZC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiZWQ5MjcyZmY5ZmE2ZmZiNzUxM2E4MmVjNmQ0MjNlNmE0ZGU1YjI2Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgTWFyIDE1IDA5OjU5OjMwIDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIHIyMDExMy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2OWQ2ODE1YjY1NDRmNDdkMzkyOTExOTFlOWRlYjViYmFlMTEzNGUyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXIgMTQgMTU6MjE6MzYgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5Y2M4YzcyZTY3NmYwZTQ2ZDc4NGQxNWYxYWIwNzJjMTkyYTU0YmY3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXIgMTQgMTQ6MTQ6MDcgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiMDc5YTBhM2QxY2ZmNGY0YTMwYTU2ZmZkNTViZGNlMWVhNWRkZWU4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXIgMTQgMTQ6MTE6MTQgMjAxMSArMDAwMAotCi0gICAgbWFrZSBkZXBlbmQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwNjk3ZDBhZGE5NzQ3NDYxMzIzM2E2OWI1NzMzMDMzM2U3NWIxODg2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXIgMTQgMTQ6MDA6NTIgMjAxMSArMDAwMAotCi0gICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxMjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlZGZjZmUwNzZmNzA3ZDBkNzRmYjhlMWM3ZjU2NDJkYzhkODg5NTE5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXIgMTQgMTM6NTc6MDAgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjVlOWM4ZGQ0MjcyYjY3Zjk4Nzc2NDhkNDQ1YTA3NGM0ZTQwNWIyOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWFyIDE0IDEzOjQ3OjA1IDIwMTEgKzAwMDAKLQotICAgIHZlcnNpb24gdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDViMzcyODFkMDBlZDBjYTEyNzgwNDJjMDUwMjEwODRjN2I5YTM1NAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gTWFyIDE0IDA5OjMxOjU3IDIwMTEgKzAwMDAKLQotICAgIEZpeCBtYWluIGFnZW50IHNlbGVjdCBjYWxsIHRvIHVzZSB0aGUgcmVuYW1lZCBBUEkgcm91dGluZS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3YTYxZjgzMjUyM2VhYmE2MDM5N2U3YmQ1NjczNjY3ZTAzZmYyOGVhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXIgMTMgMjA6MDk6NTIgMjAxMSArMDAwMAotCi0gICAgQnJpbmcgdGhlIG5hbWluZyBvZiB0aGUgbGFyZ2VfZmRfc2V0IHNlbGVjdCBjYWxsIGludG8KLSAgICBsaW5lIHdpdGggdGhlIHJlc3Qgb2YgdGhlIEFQSS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxMjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2ZTViZGM1Y2JhNDM0NzkyMmY2OGNhMTVhMzdjMzMyMWFjOTg2NTUyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXIgMTMgMjA6MDk6NTIgMjAxMSArMDAwMAotCi0gICAgQnJpbmcgdGhlIG5hbWluZyBvZiB0aGUgbGFyZ2VfZmRfc2V0IHNlbGVjdCBjYWxsIGludG8KLSAgICBsaW5lIHdpdGggdGhlIHJlc3Qgb2YgdGhlIEFQSS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2ZGViMzYwMGNkZWRiYjgwMGQwZDRiMTgwYmQ0YTBjZDg1NjI5ZmVjCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBNYXIgMTMgMjA6MDY6MjQgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IEFkZCB0aGUgZnVuY3Rpb24gbmV0c25tcF9sYXJnZV9zZWxlY3QoKQotICAgIChwbHVzIHR3ZWFrcyB0byBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTIwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzExZTMzYmFiYjIwOGE5MDYyM2VjZjZiNDI0ZWQxMWMzMzA5Zjk4NwotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXIgMTIgMDY6NTk6NTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogcmVhbGxvYytpbml0IGluc3RlYWQgb2YgY2FsbG9jCi0gICAgCi0gICAgIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbSBTdGVwaGVuIEhlbW1pbmdlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDExOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFlN2E2YjQ3YzhkN2Q3NzE3MTg5YTk0NjZkMTcyMWRlODhhN2E4NzcKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgTWFyIDEyIDA2OjU5OjU2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IHJlYWxsb2MraW5pdCBpbnN0ZWFkIG9mIGNhbGxvYwotICAgIAotICAgICBpbnNwaXJlZCBieSBwYXRjaCAzMTk1NTMyIGZyb20gU3RlcGhlbiBIZW1taW5nZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxOGYxMjVmOWYzZjNmM2NmY2Y3MWVhNzUyOTQzNTNhMDZjYTFmNDJlCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1hciAxMiAwNTo0Nzo1OCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlIHRhYmxlcyBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyCi0gICAgCi0gICAgIGFwcGxpZWQgcGFydHMgMS0zIG9mIDQgZnJvbSBoaW0gKG1zZ3MgdG8gY29kZXJzIG9uIDIvMjgvMTE7IHN1YmplY3QKLSAgICAgaXAtZm9yd2FyZC1taWIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzOyBwYXJ0IDQgbmVlZHMgbW9yZSB3b3JrCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTI0ZDc5YjcwNDczYjFkYzI2NjQ0NzBhZmQ3OWNlNjMxODA0NjU1OAotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBNYXIgMTIgMDU6NDc6NTggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiBvcHRpbWl6YXRpb25zIGZvciBsYXJnZSByb3V0ZSB0YWJsZXMgZnJvbSBTdGVwaGVuIEhlbW1pbmdlcgotICAgIAotICAgICBhcHBsaWVkIHBhcnRzIDEtMyBvZiA0IGZyb20gaGltIChtc2dzIHRvIGNvZGVycyBvbiAyLzI4LzExOyBzdWJqZWN0Ci0gICAgIGlwLWZvcndhcmQtbWliIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50czsgcGFydCA0IG5lZWRzIG1vcmUgd29yawotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA1OThiNzdlMWMzYWM3MzBhYzA3ZDkyZjc5YzFiMDI0NWI3OTM1MmUKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDExIDE0OjQzOjE2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IGFkZCBtb3JlIG9wZW5zc2wgZXJyb3IgY2FzZXMgd2hlcmUgd2UgY2hlY2sgZm9yIGxvY2FsIGNlcnQKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1MWRkNjIzZWU0NjdlM2I5N2RhYzRjNWNjZGJjZTQyYzI3MDdlMDA3Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDExIDEyOjAxOjIzIDIwMTEgKzAwMDAKLQotICAgIE1pbkdXOiBkc2tUYWJsZTogUmVwb3J0IHplcm8gZm9yIHVuaW1wbGVtZW50ZWQgZmllbGRzIGluc3RlYWQgb2YgcmFuZG9tIGRhdGEuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODRjMjQxMmYwMDIyYTk2ZWFjMmYyOTQ4Y2FhMTg4MDM2YTk0NTAzNgorY29tbWl0IDQzNGJmYzFmNzQ1NzU1MGI2Zjg3ZDViY2Q1MTEyNzZiMjcwYjU5NjQKIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDExIDExOjExOjI4IDIwMTEgKzAwMDAKK0RhdGU6ICAgTW9uIE5vdiAxNCAxMToyMjo1MyAyMDExICswMTAwCiAKLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFjZSBjb25kaXRpb24gaW4gaHJTV1J1blRhYmxlCi0gICAgVHJlYXQgdGhlIHJlYWRzIGZyb20gL3Byb2MvPHBpZD4vKiBjYXJlZnVseSwgcHJvY2Vzc2VzIGNhbiBleGl0IGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZy4KKyAgICBDSEFOR0VTOiBzbm1wZDogZnJvbSBNYXJ0aW4gV2lsY2s6IGZpeGVkIHNubXBkIGNyYXNoaW5nIHdpdGggJ3NlbGVjdDogYmFkIGZpbGUgZGVzY3JpcHRvcicuCiAgICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIE9uIDMyLWJpdCBzeXN0ZW1zLCBzbm1wZCBkaWVzIHdpdGggYWZvcmVtZW50aW9uZWQgbWVzc2FnZSB3aGVuIHVzaW5nIGZpbGUgZGVzY3JpcHRpb25zID4gMzIsIGUuZy4gd2hlbiBoYXZpbmcgPjMyIEFnZW50WCBzdWJhZ2VudHMuCiAKLWNvbW1pdCAyZDQ4Y2NmNmNjOTNjMGU0NGVlYzU1ZWRmNTU5ZDlmMTUyM2M3NGY5Citjb21taXQgZWQ2NWVjYTZlN2Y5Y2ZhNzM4MGE3OGQ1NmMwMWVkMzE0NzQ1YjE2OQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxOTowMToyMSAyMDExICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgY29uc3QnaWZ5ZWQgbmxpc3QgYXJndW1lbnRzCisKK2NvbW1pdCBlYWNhNzk4M2UzNjU1YWI2OTZmY2M0NDYxY2EwY2VkYmFjNmNlNjlhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE5OjAwOjEyIDIwMTEgKzAxMDAKKworICAgIE5ldEJTRC02OiBPbmUgbW9yZSBpbnN0YW5jZSBvZiB0aW1lc3BlYyByZXBsYWNpbmcgdGltZXZhbAorCitjb21taXQgOGFkNmM1M2ZkZWM1YWRlYWU0ZTUyZjE3NTFlY2VjNGEzNDViYWIwNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxODo1OTowMSAyMDExICswMTAwCisKKyAgICBGaXggYnVpZyAjMzQzNjUyNzogYXJwX25ldGxpbms6IGZpeCBkeWluZyByZWxvYWQgb2YgY2FjaGUKKworY29tbWl0IDM3OGZmZWQwM2JhNzlhODM0NmQ2YzYyNzgxZTJkZGY1Y2U5MmE0NzgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBOb3YgMTEgMTg6NTU6NDMgMjAxMSArMDEwMAorCisgICAgRml4IGJ1ZyAjMzQzNjUyODogc3dpbnN0X3BrZ2luZm86IHJlY292ZXIgZnJvbSBOVUxMIHJldHVybiBmcm9tIG9wZW5kaXIKKworY29tbWl0IGQ3YWQ4ZjVmOWYzZjY3ZjE2ZjY1YzI1MTVkMTFlMTk0ZDJjZGQxMmMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMTAgMTQ6MDQ6NDEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogQ3lnd2luOiBNYWtlIGRhdGVfbl90aW1lKCkgcHJvZHVjZSB0aW1lIHpvbmUgaW5mb3JtYXRpb24KKworY29tbWl0IGJhMzVjNTBiMmY0NTliZDljMTFlZDU5Y2M3ZDFiMTYyMTU2NDRmYTMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMTAgMTQ6MTc6MDQgMjAxMSArMDEwMAorCisgICAgUmVwbGFjZSBBQ19UUllfTElOSygpIGJ5IEFDX0xJTktfSUZFTFNFKCkKKyAgICAKKyAgICBOb3RlOiB0aGVzZSBjaGFuZ2VzIGRvIG5vdCBhZmZlY3QgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0LgorCitjb21taXQgZjYxNWJmMjRmNWQwZjIzY2U5MzAxZGE1NTYxODRkNjQ2MDc0MDQ1NgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiA5IDIwOjMyOjQ5IDIwMTEgKzAxMDAKKworICAgIEZpcyBCdWcgIzM0MzQ4MjQ6IFNJR1NFR1Ygd2hlbiByZWFkaW5nIGRpc2sgZGlyZWN0aXZlIGFmdGVyIFNJR0hVUAorCitjb21taXQgYTk0YTE3OWQ5MzQwZjUxZmE3YzIzNDMxNjMwYmMwZmZkNmQ3NTllOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiA5IDIwOjMwOjUxIDIwMTEgKzAxMDAKKworICAgIEZpeCBidWcgIzM0MzM2MTY6IGRvbnQgdHJlYXQgRGF0ZUFuZFRpbWUgYXMgYSBzdHJpbmcKKworY29tbWl0IGIyOWU0MTY0NTMxZDI1OGZlMzRhNmZlMmI5ZTFlYzYwYzU2Zjk1NDQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIE1vbiBOb3YgNyAwMToyNTo1NyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCisKK2NvbW1pdCBlMjIxZTY1ZmRjMWM2OGYxOTY4NjUxNzE3ZGNjOWNjZmI2NDE0NzgzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTm92IDMgMTU6MDU6MDAgMjAxMSArMDEwMAorCisgICAgRml4IHdhcm5pbmdzIGFib3V0IGNvbnZlcnRpbmcgc29ja2FkZHJfaW4gKiBpbnRvIHNvY2thZGRyICouCisgICAgCisgICAgVGhpcyBpcyBhIGZvbGxvdy11cCBmb3IgY29tbWl0IGEwYWYzODUuCisKK2NvbW1pdCAyZTdlOWVkYTBiMGQ2MmE3NjQ1YTlhOGY3MGVmM2ZiNmYzZGQ2OTQxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgTm92IDMgMTE6MTc6NDggMjAxMSArMDEwMAorCisgICAgRml4IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZ3MuCisKK2NvbW1pdCAzNDYyZWJjZGQwYjdjMjk4Y2IxNWMzMDk5NzM2ZjRmOTUyMjU3ODQ2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDI4IDE2OjA3OjE1IDIwMTEgKzAyMDAKKworICAgIFJlbW92ZSB0aG9zZSBzdXBlcmZsdW91cyBwYXJlbnRoZXNlcyB0aGF0IHRyaWdnZXIgYSBjbGFuZyB3YXJuaW5nLgorCitjb21taXQgM2U1ZmVkZDNlN2QxZWYzMTY4MzYwNGJmNzNkYzU2ZTk0NGNhZDM0OQogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgMTEgMTE6MTE6MjggMjAxMSArMDAwMAorRGF0ZTogICBUaHUgTm92IDMgMDk6NDU6MjcgMjAxMSArMDEwMAogCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhY2UgY29uZGl0aW9uIGluIGhyU1dSdW5UYWJsZQotICAgIFRyZWF0IHRoZSByZWFkcyBmcm9tIC9wcm9jLzxwaWQ+LyogY2FyZWZ1bHksIHByb2Nlc3NlcyBjYW4gZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcuCisgICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgYWZ0ZXIgMzAgZGF5cyBvZiB1cHRpbWUuCiAgICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEFmdGVyIDMwIGRheXMsIHZhbHVlcyBmcm9tIC9wcm9jL3N0YXQgKG9uIExpbnV4KSBjYW4gZ2V0IGJpZ2dlciB0aGFuIDMyYml0cyBhbmQgc25tcGQgY2FsY3VsYXRpb25zIG1pZ2h0IHJlbmRlciBjb3VudGVycyBsaWtlIHNzQ3B1VXNlciBuZWdhdGl2ZSBvciB6ZXJvLCB3aGlsZSB0aGUgcmVhbCB2YWx1ZSBpcyBoaWdoZXIuIFRoZXJlZm9yZSB0aGUgY291bnRlcnMgc2hvdWxkIGJlIHRyYWNrZWQgYXMgdGhlIGxhcmdlc3QgaW50ZWdlciBhdmFpbGFibGUuCiAKLWNvbW1pdCBiODE4ZmNlZGNjM2I1N2EyODhhNTI3NGI5OTNlZGNiYjBmZmJhZDA3Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDExIDA4OjQyOjA1IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCdWlsZHMgd2l0aCBtb3N0IHJlY2VudCBNaW5HVyAoaGF2aW5nICNkZWZpbmUgbG9jYWx0aW1lX3IpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMwODIyMTA1YTM5YzExMTgxNjI5MTg1ZWU2ZDczNDhhZWNmYjVmMTgKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgTWFyIDExIDAzOjA4OjUwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IHJlZmluZSBjZXJ0IGRlYnVnZ2luZzsgcmVtb3ZlIHVudXNlZCBmdW5jdGlvbgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVhMTY0MWViYTFjODVmMjRlYTc0NjFlNzE4NWM4MDQyZDc2NjUzZGMKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDIxOjIxOjMyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMyMDU3NjU6IGhhbmRsZSByZWNvbmZpZyBmb3IgY2VydFNlY05hbWUgdG9rZW4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmNWI3MTI3ZjQyYzQ1NGEyZDkxYTFhOTIzYTllNDgyMjM1NGRmNjFiCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDIwOjAxOjMzIDIwMTEgKzAwMDAKLQotICAgIFNwZWxsaW5nIGZpeCBpbiBhIHNvdXJjZSBjb2RlIGNvbW1lbnQ6IG1lc3NnZXMgLT4gbWVzc2FnZXMuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGIxOTZkZmQ0MmQ2NjkwZTRmNWJlN2VlM2UyMDY0ZjAzNzI3NDdlNAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxOTo1NToyNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogTWlub3IgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIG9mIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM0ZThiYjc1OTI4NmU3MzE1NTlmMWI4MmFiN2ZhZmJhZmQyZDdlYTMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTk6NDg6NDMgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMjAzODA2OiBBdm9pZCB0aGF0IHRoZSBtYWluIGFnZW50IHByb2Nlc3NpbmcgbG9vcCAtIHdoZW4gdXNpbmcgbW9yZSB0aGFuIEZEX1NFVFNJWkUgZmlsZSBkZXNjcmlwdG9ycyAtIGNhbiBjYXVzZSBtZW1vcnkgY29ycnVwdGlvbiBieSBpbnZva2luZyBzZWxlY3QoKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkYmIwZjdiOTc5ZjA3NjIxODVlZTVlZTE4NGJhM2NmMjNiNWIzMWExCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE5OjQzOjE2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBBZGQgdGhlIGZ1bmN0aW9uIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTc1MmE4NjI2ZmYyMGZhNTZjOTU5ZTYwOTQ1NTMwZTU4MmM5MjllYQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxODo1NzoyNCAyMDExICswMDAwCi0KLSAgICBGaXhlZCB0d28gY29tcGlsZXIgd2FybmluZ3MgKGJhY2twb3J0ZWQgcjIwMDk4IGZyb20gdGhlIHRydW5rKS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkZTZjNTIyY2JjNjFhNzI4ZmY3MzdmZWUxZTRmNDQ3OTEzMzAxM2VhCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE4OjU1OjUzIDIwMTEgKzAwMDAKLQotICAgIEFkZGVkIGEgbWluaW1hbCB1bml0IHRlc3QgZm9yIG5ldHNubXBfbGFyZ2VfZmRfc2V0LgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY0ZjE3NmE5ZGIxNjk5M2VhZTFjMWEzMWM5OGZkNGM3MzQ3NGIxNTMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTg6NTI6MzQgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IE1ha2UgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgY2xlYXIgYWxsIHJlbGV2YW50IGZpbGUgZGVzY3JpcHRvcnMuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2MwZmMzNjBkMGU4YmExZmNmMGMzMTg1OTgwZTViYWY2ZmM5M2VmNwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE1OjUxOjI3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNlNjlmYTVhMmZiMmIyNDg2ZWYyODJlM2JhMmM4ZmZkNThiMGFkNzEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAxMCAxNTo1MToyNyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTc4Mzg5OiBGaXggaW5jb25zaXN0ZW50IGhhbmRsaW5nIG9mIFRaIG9mZnNldHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiOWExNDY5ODk4YWE1MTVjNjg5NzI2MDhjYmJmMDFhODJmMmE5ODgyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMTAgMTU6NTE6MjcgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudCBoYW5kbGluZyBvZiBUWiBvZmZzZXRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjhhODUyMTA0YWY2N2M2Y2ZhZDgyMDY2NWVjYTJkYzczZDliNTFmZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDEwIDE1OjUxOjI3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQwZThlNmY0ZDIxMWViNTVkMDVlNjE5NjUwYmU2NTVkZmE5Mzk0ZTUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBNYXIgNyAxNzoxOTo0NiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzE5NTUzNzogTWlub3IgYmluYXJ5X2FycmF5IGNvbnRhaW5lciBzb3J0IG9wdGltaXphdGlvbgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGViMDNjNDhlMzU1ZTA4YWU1NjI0ZDYwNTk0NjY2NTliNDBiZDk4NWMKK2NvbW1pdCAwZmM4MjIxYjI0OTg4YzRhZTYxODBlZDQyYjg2Yjk4NTJmZDU4NmFkCiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWFyIDYgMTk6NDc6MDYgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDIgMjI6NTk6MDggMjAxMSArMDEwMAogCi0gICAgVGFicyB0byBzcGFjZXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgZHNrSW5kZXggd2FzIG9mZiBieSBvbmUKIAotY29tbWl0IDZiZDJiMGJiMDFjNzQyODM1MzRlZGNmYzFjYjA4NzkwODYxZTBkNzQKK2NvbW1pdCBhNWIyODgyOWU2NGQ1ZjNiODdlNGI5YjFlZjhjYzIwNGYzM2E2MWI3CiBBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gTWFyIDYgMTE6Mjg6MDQgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgTm92IDIgMjE6MjU6MDcgMjAxMSArMDEwMAogCi0gICAgQ29uZmlndXJlIGNoZWNrIGZvciBnZXRob3N0bmFtZTIKLSAgICBVc2UgZ2V0YWRkcmluZm8gaWYgYXZhaWxhYmxlLiBOb3cgd29ya3MgZm9yIFNvbGFyaXMgKGFuZCBXaW5kb3dzPykKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgU29sYXJpcyBuZWVkcyAkQVdLIHRvIGdldCBhIHVzYWJsZSBuYXdrCiAKLWNvbW1pdCBkODY4NDM2MjE1YzBlNzBiZGUzYzQ0ZTRjOTI2ZGFhNmFiODgwMDc4Citjb21taXQgMjgwMWEyMTM5ZjI3MDIxZTFhYjE1ZTM2MmUyZDNkNjI0ZmZhYTQ5NAogQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IE1hciA1IDEyOjUwOjQ0IDIwMTEgKzAwMDAKK0RhdGU6ICAgTW9uIE9jdCAzMSAyMjo1NTo1MyAyMDExICswMTAwCiAKLSAgICBDbGVhbiB1cCwgYW5kIGNvc29saWRhdGUgcmVzdWx0IHRhYmxlIHJvdyBjcmVhdGlvbiBpbnRvIGEgbmV3IGZ1bmN0aW9uLgotICAgIFNhdmVzIDIwMCBsaW5lcyBvZiBjb2RlLCB3aXRoIChob3BlZnVsbHkpIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDczIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFBhdGNoICMzNDA2MzY0OiBGaXggdW5zdGFibGUgZGF0YSBmb3IgTmV0QlNELgogCi1jb21taXQgYzgyMTAyZDllMmE2MmRiNDYyOGIyYzVkZDlmZmI2ZDcwNzdmMDJjNQorY29tbWl0IDgyMWE1OGQxMTJkN2FjNDk1MTQ5ZTI2MmQ3MDQ0MTJiYTI4MDA0MzgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMzEgMjI6NDM6NTIgMjAxMSArMDEwMAorCisgICAgRml4IGlwdjYgc3RhdGlzdGljcyBsb29waW5nIHRvbyBmYXIgd2hlbiBzY2FubmluZyBpbnRlcmZhY2VzLgorICAgIEZpeCBUQ1Agc2Vzc2lvbiB0YWJsZSByZXBlYXRpbmcgZGF0YSBmcm9tIGZpcnN0IGVudHJ5IGZvciBhbGwuCisKK2NvbW1pdCAzNDk1OTFkMDNlMTdhNTViNDNlYWNjNmE2ODdiMDJmZDhkNGU5NTI4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBNb24gT2N0IDMxIDA4OjU5OjM3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgcGVybCBzdXBwb3J0IHdpdGhvdXQgc3VwcG9ydCBmb3Igb3BhcXVlIHR5cGVzLgorCitjb21taXQgMWVjNzExMGU3MmJjZTE1NjFmNzQ2NTE3NDU5ZDZmMDQzMDE2YjYwZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAzMCAxOTowNTozMCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBNYWtlIHRoZSBhc24xIHRlc3QgcGFzcyBldmVuIGlmIHN1cHBvcnQgZm9yIG9wYXF1ZSB0eXBlcyBhcmUgcmVtb3ZlZC4KKworY29tbWl0IDZkMjY5MThhZjU1YWEzNjYyYTcyMDU0MmRlNzdiYmYzOWIwYTNlOTEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBPY3QgMjkgMDg6MzQ6MzMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERpc2FibGUgdGhlIHN1cHBvcnQgZm9yIGludGVnZXI2NCBpbiBwYXNzIHNjcmlwdHMgaWYgY29tcGlsaW5nIHdpdGhvdXQgb3BhcXVlLXNwZWNpYWwtdHlwZXMuCisKK2NvbW1pdCAyOWJmNjlkNzA0MjRmMzU5ZDljODdmMDdhOTY0YTA5OTQxNTY0OWE1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDEzOjAyOjI1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZF9zcWw6IEF2b2lkIHRoYXQgYSBsaW5rZXIgZXJyb3IgaXMgdHJpZ2dlcmVkIG9uIHN5c3RlbXMgd2hlcmUgbXlfcHJvZ25hbWUgaXMgbWlzc2luZyBpbiBsaWJteXNxbGNsaWVudCAoZS5nLiBGZWRvcmEgMTUgYW5kIDE2KS4KKyAgICAKKyAgICBUaGlzIGlzIGEgYmFja3BvcnQgb2YgY29tbWl0IDlmNjUzZjcuCisKK2NvbW1pdCAyY2M5NTA0YjliYjg2MjViOTRiZTZjZGE3ZTYwOTkzZDA1OWNkOTI4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDI2IDA5OjAxOjIzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzQyODUwNjogRml4IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigpCisgICAgCisgICAgVGhpcyBwYXRjaCBzaG91bGQgZml4IHRoZSByZWdyZXNzaW9ucyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA4NWQ5NmM0IChNYXkgMTMsIDIwMTEpLgorCitjb21taXQgOWI0MjdiMzUzZjFjZWI4ZmU4N2U2ZmM4ZWQzYjZjZmFiM2NlN2YyMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IE9jdCAyNyAwODoyMDowMCAyMDExICswMjAwCisKKyAgICBNaW5HVzogQXZvaWQgY29uZnVzaW9uIGJldHdlZW4gTWluR1cncyBraWxsLmV4ZSBhbmQgdGhlIFN5c0ludGVybmFscyBwc2tpbGwuZXhlCisKK2NvbW1pdCAyYzQ1ZjkyY2ZjYjViMDVlMDQ5MjI2YTVhNzg4M2EwYjEwNjAxMWFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgT2N0IDI2IDEwOjQyOjI5IDIwMTEgKzAyMDAKKworICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBhYm91dCBwYXNzaW5nIGEgY29uc3QgcG9pbnRlciB0byBhIGZ1bmN0aW9uIGFjY2VwdGluZyBhIG5vbi1jb25zdCBwb2ludGVyLgorCitjb21taXQgMjc1ZDIzZWRmZGViZTA1NzdiMDg0MjFlNGM2YzkzNmFlMzliN2ZkYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCAyNiAwOTozMzowOSAyMDExICswMjAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgc2V0LWJ1dC1ub3QtdXNlZCB2YXJpYWJsZXMKKworY29tbWl0IDQ0OTVlMTdjMDc4YWM2OTk3YTljN2ZhMWE4OGRiMDY0NGU5MTk0OTEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBPY3QgMjYgMDk6MzI6NDYgMjAxMSArMDIwMAorCisgICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IGNhc3RpbmcgYXdheSBjb25zdAorCitjb21taXQgMTM5NTJmNmJlZTlmNDA4ODY3YWI2ZDJmZGZkZGU0ZjI4NDA3NDk1NwogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgNCAxNTowOToyNiAyMDExICswMDAwCitEYXRlOiAgIFdlZCBPY3QgMjYgMTQ6MDU6MTYgMjAxMSArMDIwMAogCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uIExpbnV4CisgICAgQ0hBTkdFUzogc25tcGxpYjogZnJvbSBTaWRkaGVzaCBQb3lhcmVrYXI6IHByb3Blcmx5IGNsZWFuIHVwIG9sZCByZXF1ZXN0cyBpbiBhIHN1YmFnZW50IHdoZW4gd2UgcmVjb25uZWN0IHRvIG1hc3Rlci4KICAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAwNjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQW4gc25tcCBzdWJhZ2VudCBsaW5rZWQgYWdhaW5zdCBuZXQtc25tcC1saWJzIG1heSBjcmFzaCBpZiBpdCBoYW5kbGVzIGEKKyAgICByZXNwb25zZSB3aGljaCBoYXMgbWFnaWMgcmVmZXJyaW5nIHRvIGFuIG9sZGVyIGRpc2Nvbm5lY3RlZCBtYWluIHNlc3Npb24uIFRoaXMKKyAgICBtYXkgaGFwcGVuIHdoZW4gdGhlIHN1YmFnZW50CisgICAgYXR0ZW1wdHMgdG8gY2xlYW4gdXAgb2xkIHJlcXVlc3RzIG9uIHJlY29ubmVjdGlvbiBvZiB0aGUgZGlzY29ubmVjdGVkIG1hc3RlcgorICAgIHNlc3Npb24uCiAKLWNvbW1pdCA0NzZjY2E4M2EyODMzMzU3ODBhODRlYzBiODczNDQxZjExNDg2M2RhCitjb21taXQgYWUwNTI0NzJiMjI3MjBkMDgzNjllODUxMjdkYjIxNDI0NWRmMmUzZgogQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBNYXIgNCAxNTowOToyNiAyMDExICswMDAwCitEYXRlOiAgIFR1ZSBPY3QgMjUgMTY6MTU6MTcgMjAxMSArMDIwMAogCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uIExpbnV4CisgICAgQ0hBTkdFUzogcGVybDogZml4ZWQgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbHMuCiAgICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMDYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFdoZW4gbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyIGZhaWxzLCBpdCBmcmVlcyBpdHMgcmVnaW5mbyAtPiBuc2Focl9ERVNUUk9ZIChhbmQgYW55IG90aGVyIGZ1bmN0aW9uKSBtdXN0IG5vdCBkZXJlZmVyZW5jZSBpdC4KIAotY29tbWl0IDE1YWYwYWRmODFmMjU1NDYzYjkwODg1OWIzODNmNGE1MTViZWMzNmQKK2NvbW1pdCBjMTk5YmY5MWI2MjM5ZjI2YjJhYWIzNGU4NTc1ZTBmMGRmOWNkZTliCiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIE1hciA0IDE1OjA5OjI2IDIwMTEgKzAwMDAKK0RhdGU6ICAgTW9uIE9jdCAyNCAxNDoyNToyOCAyMDExICswMjAwCiAKLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMgb24gTGludXgKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogc25tcGQ6IHhmcywgamZzIGFuZCB2eGZzIGZpbGVzeXN0ZW1zIGFyZSBub3cgcmVjb2duaXplZCBpbiBoclN0b3JhZ2VUYWJsZQogCi1jb21taXQgNjU3OTFlZDYwMzRiNDQ5NWRmZjY3ZTBiZDc3NWEyYzU3N2QxM2Y2NwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAzIDEwOjU2OjIxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IFdpbjMyOiBEZXByZWNhdGVkIGxpYnNubXAuZGVmIC0gYWRkIE5FVFNOTVBfSU1QT1JUIHRvIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpbnN0ZWFkIHRvIGV4cG9ydCBhIGZ1bmN0aW9uIGZyb20gbmV0c25tcC5kbGwuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWE0ZjllYWI2YmYyMTFmMGEwOTE3YzU5MmNkZTJlNWU4NGQwYzRkYwotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAzIDEwOjUwOjIzIDIwMTEgKzAwMDAKLQotICAgIE1vdmVkIGEgc291cmNlIGNvZGUgY29tbWVudCBzdWNoIHRoYXQgaXQgaXMgYWdhaW4gaW1tZWRpYXRlbHkgYWJvdmUgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBpdCBhcHBsaWVzIHRvLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU2NGY1MTBmZmIxNzk2MTkxMTI2OGE4NDVkNjliYmE3YWRhZGJmODUKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBNYXIgMyAxMDo0ODozNCAyMDExICswMDAwCi0KLSAgICBBZGRlZCBtaXNzaW5nIE5FVFNOTVBfSU1QT1JUIGRlY2xhcmF0aW9ucy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0NjFkMmQwOTAzOGUzMjFiNTlkODMxOTA1YWM5Yjc2NWJiNGEzYzhlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgTWFyIDMgMTA6MjQ6MDEgMjAxMSArMDAwMAotCi0gICAgUmVtb3ZlZCB0d28gb2Jzb2xldGUgV2luMzIgZmlsZXMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjg4NmQwMmM3Mjc2OWZhOTY5ZjBhMTE3ZGM3MmNiNWQ2YjQwYjJkNQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IE1hciAzIDEwOjA5OjE0IDIwMTEgKzAwMDAKLQotICAgIFRyaXZpYWwgY29tbWVudCBmaXg6IHNubXBJUHY2QmFzZURvbWFpbi5jIGNvbnRhaW5zIElQdjYgYmFzZSB0cmFuc3BvcnQgc3VwcG9ydCBmdW5jdGlvbnMgaW5zdGVhZCBvZiBJUHY0LgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJmNTRmNWIzOWQ5NmFhN2I0ODRkMGM5OTQ0MzRiZDkyOWIxNzI3NjMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMjo1NTowNCAyMDExICswMDAwCi0KLSAgICBGaXggdGhlIGNvbW1hbmQgdG8gY3JlYXRlIGEgbmV3IFNWTiB0YWcgbGluZQotICAgIAotICAgIChIYXZpbmcgYnJvdWdodCB0aGUgc3RydWN0dXJlIG9mIHRoZSA1LjUueCBicmFuY2gKLSAgICAgaW50byBsaW5lIHdpdGggdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMKLSAgICAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqIGJyYW5jaGVzLCByYXRoZXIKLSAgICAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpCi0gICAgCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTY5MWMyZjc0NTFlNDAxZjRmYjhkNzRiZmY4YmYxMTY4ZjBhNmZmMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDEyOjU1OjA0IDIwMTEgKzAwMDAKLQotICAgIEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCi0gICAgCi0gICAgKEhhdmluZyBicm91Z2h0IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIDUuNS54IGJyYW5jaAotICAgICBpbnRvIGxpbmUgd2l0aCB0aGUgb3RoZXIgYnJhbmNoZXMsIHRoZSBwcmV2aW91cwotICAgICBjb21tYW5kIGlzIG5vdyB3cm9uZyBmb3IgKmFsbCogYnJhbmNoZXMsIHJhdGhlcgotICAgICB0aGFuIGp1c3QgbW9zdCBvZiB0aGVtISkKLSAgICAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5OTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNmNlNWE4YmVjZjNlZTUyMjE2ZDE2MGY1YzczYTE3OTM1ZWFmNzkxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTI6NTU6MDQgMjAxMSArMDAwMAotCi0gICAgRml4IHRoZSBjb21tYW5kIHRvIGNyZWF0ZSBhIG5ldyBTVk4gdGFnIGxpbmUKLSAgICAKLSAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoCi0gICAgIGludG8gbGluZSB3aXRoIHRoZSBvdGhlciBicmFuY2hlcywgdGhlIHByZXZpb3VzCi0gICAgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKiBicmFuY2hlcywgcmF0aGVyCi0gICAgIHRoYW4ganVzdCBtb3N0IG9mIHRoZW0hKQotICAgIAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJlYTkwMzNkNmE1ODNhMWQ5ZjgyNzRhZjRjZTE1NjVkZmZmMGYwOTAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMTo0OToxNyAyMDExICswMDAwCi0KLSAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDUyMjlhMDY2ZjIzNGY3MGY1YjA4OTRmMGYzNjE3YjRmOWVkMWZjYzEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMTo0MTozMSAyMDExICswMDAwCi0KLSAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiZTJhOTE4NWI2ZjRhZGZjNGM4MWQ1NDJhZjdlM2I2NTRmNTUzYjE2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTE6Mzk6MjQgMjAxMSArMDAwMAotCi0gICAgdmVyc2lvbiB1cGRhdGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxNWE0NTZlMWQyZWQxMTJhMDc4MzhjYWY3ZjM0NTY1MjFjMTdmZGY5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTE6MTU6NTIgMjAxMSArMDAwMAotCi0gICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTkyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWM0ZmUzYTFiOTFiODM3ODY5ZDgyZTNkODE0M2U2YmU1NjlhMDk2NgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDExOjEwOjAwIDIwMTEgKzAwMDAKLQotICAgIEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdCBhdmFpbGFibGUgb3Igc2V0LgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTk5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQyZmQ3N2Q4NjI4MDNlM2FkNTBmMjEwNjc0MzBhNzFmMWVjZTlkOGQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEZlYiAyNSAxMToxMDowMCAyMDExICswMDAwCi0KLSAgICBBdm9pZCBhIHBvc3NpYmxlIGNyYXNoIGlmIHRoZSBlbmdpbmVJRCBpcyBub3QgYXZhaWxhYmxlIG9yIHNldC4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1NzcxYzIyNWRhOTZiNDk2YjhkYjJmNDc4NGU3Yjg1YzRiYjUyM2MxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBGZWIgMjUgMTE6MTA6MDAgMjAxMSArMDAwMAotCi0gICAgQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90IGF2YWlsYWJsZSBvciBzZXQuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNDFlMjZhYmRlMmI1ZDZmNDBjYWY2ODRhN2EzMDlmN2E2MTFjNjMxZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgRmViIDI1IDExOjEwOjAwIDIwMTEgKzAwMDAKLQotICAgIEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdCBhdmFpbGFibGUgb3Igc2V0LgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk4ODkwODJlMzI1MmUwMmNhZjVjYzRmM2JjMWM0YjRkMWMxMzRjNTIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMjE6MDQ6MzQgMjAxMSArMDAwMAotCi0gICAgSW5jbHVkZSByZXF1aXJlZCBwcm90b3R5cGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzMTMwMTY2MjI2ZDAwMzY0ZDYwN2JhOWU4NzQzYWJiN2FhNDJlY2MxCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDE1OjIzOjM3IDIwMTEgKzAwMDAKLQotICAgIHVuc2lnbmVkIGp1Z2dsaW5nIHRvIHJlbW92ZSB3YXJuaW5ncwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDVhYWE0YjNmNjg5M2FlNDEyZTc0ZDBjYWVkMjZmNDczZGMzOGI0MzUKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMTU6MjA6MTEgMjAxMSArMDAwMAotCi0gICAgRW5hYmxlIChwcm9iYWJseSBmb3Jnb3R0ZW4pIGlwQWRkcmVzc1ByZWZpeFRhYmxlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWRhZWMxMmRlNDQyYTIyZmYyOTgyMzVlMTI1MGJlOTk2MTAzY2Q4OQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAwOTo1NDoxNiAyMDExICswMDAwCi0KLSAgICBMb2FkaW5nIElQdjYgZGF0YSBpcyBhIG5vLW5vIHdoZW4gSVB2NiBub3QgZW5hYmxlZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhhYjZjZTk1ZGI3YmNkYTQ0MjkxZjA3ZWI4M2EyYmMzYjkxZDI2MmEKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMDk6MzY6MjIgMjAxMSArMDAwMAotCi0gICAgRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4IGNvbnRhaW5zIDogY2hhcmFjdGVyCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTY1YTc3YjkyM2YxNDA5N2I5MWVkYjg5YmEzNmJjMGI1NjkwNzhjOQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAwOTozNjoyMiAyMDExICswMDAwCi0KLSAgICBGaXggYnVnIDMxMTg2MzE6IHNubXB0YWJsZSBzZWdmYXVsdHMgaWYgaW5kZXggY29udGFpbnMgOiBjaGFyYWN0ZXIKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNWI3NDJkOTM1NTg0M2U4NDEwMGM5NzdhOWFiYzE1MWUyZDc4YWZkCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDA5OjM2OjIyIDIwMTEgKzAwMDAKLQotICAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6IGNoYXJhY3RlcgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdhNjEyMjNmNGNmN2EzODliODdmYWNlMjQ3YTdhNjU3MzQ5MDBjNjYKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMDk6MzY6MjIgMjAxMSArMDAwMAotCi0gICAgRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4IGNvbnRhaW5zIDogY2hhcmFjdGVyCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmNjYjU0ZTk0NTcyNzlkOGMyYjBjMDMwYWNlZDIxNWU3MDM2MDEwZQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAyMyAwOTozMDo1MiAyMDExICswMDAwCi0KLSAgICBGcmVlQlNEIDggc3VwcG9ydAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGY5YzcwZGQxNmJlZmU4NzI4ZWYyYWIzZjEwM2RkODNlOGMzM2VhY2UKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBGZWIgMjMgMDk6MzA6NTIgMjAxMSArMDAwMAotCi0gICAgRnJlZUJTRCA4IHN1cHBvcnQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5MWI5NTg4MWVkZGMyNWE4ODViMGI0NzExYjUyYjExMjc4OTkwZTdhCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDIzIDA5OjMwOjUyIDIwMTEgKzAwMDAKLQotICAgIEZyZWVCU0QgOCBzdXBwb3J0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTgzZTdiMTQ1NGEyN2NhYzg5OTA3ZDQ0MzI1YTE0MzJmZDBiOWE4OAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDIyIDE1OjI1OjM1IDIwMTEgKzAwMDAKLQotICAgIFJldmVydCBhIGJvZ3VzIGNoYW5nZSB0aGF0IGNyZXB0IGludG8gdGhlIGNvZGUuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTY2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDBlZjU2OWUwMGQxNjRkOWUxMDcwY2Q3MDVjNjVlNGE3MzkwYTE2MgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDIyIDA4OjU1OjQ4IDIwMTEgKzAwMDAKLQotICAgIEZpeCA1LjUueCBicmFuY2ggc3RydWN0dXJlIChwYXJ0IDIpCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTY1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzI3YTJmMjFjM2NjNzRkM2MzYmU4YTQ3MDdlZjFlYzQ5YWI2YmY3YwotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAyMjo0MDowNiAyMDExICswMDAwCi0KLSAgICBwcm9wZXIgcHJvY2VzcyBzdGF0dXMgdmFsdWVzIGZvciBuZXRic2QKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwZDgyMGZjZjk1ZTQ0NGRkOGE1MzFjYzZmODJjYzdiOGE2OTg2NmI4Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDIyOjM5OjA1IDIwMTEgKzAwMDAKLQotICAgIGNvbmRpdGlvbmFsaXplIHZhcmlhYmxlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTQ5ZDBkODA4MmMxOTEyNzMzYTg3NzVhNzM4MTdhZGY0YWIzZWJlZgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAyMjoyMDowNCAyMDExICswMDAwCi0KLSAgICB0Y3AtbWliL3VkcC1taWIgc3VwcG9ydCBmb3IgdGhlICpic2RzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWY3MjlkNDgwOTc4NWFlMGM3NWRiMmE4MzFlYTk0NDE2MjJjZjdmNwotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAyMjoxNjo1NiAyMDExICswMDAwCi0KLSAgICB0Y3AtbWliL3VkcC1taWIgc3VwcG9ydCBmb3IgdGhlICpic2RzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTU5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmI0ZjA3MDZjM2MxNDMzMDY5ZDU2NmJjYjQ4ODkyZjQ1MWNhNjBkOAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAyMjowNTo1NiAyMDExICswMDAwCi0KLSAgICBQcm9wZXJseSBlbmQgZGVidWcgbWVzc2FnZSB3aXRoIG5ld2xpbmUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1M2IzNTk2NDk2YjNkNzg1ODI5ODMyMGVmM2U4M2U0YTI2YTdhYTNlCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDIyOjA0OjI0IDIwMTEgKzAwMDAKLQotICAgIHJlbW92ZSB2YXIgdGhhdCBzaGFkb3dzIHRoZSB1c2VmdWwgb25lCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTBkNzNmMGQ1NmZlMjJjNTkwNTMwYjNlMzA1ZDQxZGNkYWMzY2UwMAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAyMjowMjozMCAyMDExICswMDAwCi0KLSAgICBtYWpvciBmaWRkbGluZyB0byBnZXQgdGhpbmdzIHdvcmtpbmcgZm9yIG9wZW5ic2QgdG9vLiBUaGlzIHNob3VsZCByZWFsbHkgYmUgcmV3b3JrZWQgdG8gdXNlIHRoZSB0Y3AtbWliL3VkcC1taWIvZGF0YV9hY2Nlc3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNzYwN2UzMWY3NDU0ZGJjMWQ3MGExMDZkMDUzMWY0MzU1OWEzMWJhCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDIxOjU5OjUwIDIwMTEgKzAwMDAKLQotICAgIGZpeCB0Y3Agc3RhdGVzIGZvciBkcmFnb25mbHlic2QKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2MGQ1NDk1NjZhOTA0OTQwNDM1MzdkNThlYzg0N2FmYzQ4N2Q2NmQwCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDIxOjU3OjU5IDIwMTEgKzAwMDAKLQotICAgIGVuYWJsZSBuZXcgdGNwL3VkcCBtaWJzIGZvciBzb2xhcmlzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGEyNDA4YzE2ZmFiODNkNmI0MDEwZTQ3N2NmNjYwZGMxOGZiYjMzYgotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAyMSAxOTowODowMCAyMDExICswMDAwCi0KLSAgICBVcGRhdGVkIGNvbW1lbnQgYWJvdXQgd2hlcmUgbWFrZXJlbGVhc2UgY29tZXMgZnJvbSAobm93IGdpdGh1YikKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5NTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzYWJiY2FhMDkxZGE0MWU0MGY4MjA4MWY2MWIyNGJiZjBjZmQyMThiCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDE5OjA4OjAwIDIwMTEgKzAwMDAKLQotICAgIFVwZGF0ZWQgY29tbWVudCBhYm91dCB3aGVyZSBtYWtlcmVsZWFzZSBjb21lcyBmcm9tIChub3cgZ2l0aHViKQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE5ZWE4ODYzMWU1ZmZmN2UwNDhkZTM4ZWZmMzUyYTlmMDA0ZDYyZTkKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBGZWIgMjEgMTE6MTQ6MDEgMjAxMSArMDAwMAotCi0gICAgQmFja3BvcnRlZCByMTk0NTQgZnJvbSB0aGUgdHJ1bmsgYW5kIHRoZXJlYnkgZml4ZWQgdGhpcyBWYWxncmluZCBjb21wbGFpbnQ6Ci0gICAgCi0gICAgPT02Mjg3PT0gSW52YWxpZCByZWFkIG9mIHNpemUgOAotICAgID09NjI4Nz09ICAgIGF0IDB4NEU2Q0NBRTogbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQgKHRhYmxlX2RhdGFzZXQuYzoxODYpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg1MTIxOTc0OiBzaHV0ZG93bl9ub3RpZmljYXRpb25fbG9nIChub3RpZmljYXRpb25fbG9nLmM6NTY0KQotICAgID09NjI4Nz09ICAgIGJ5IDB4NTE5NDFEQjogX3NodXRkb3duX21pYl9tb2R1bGVzIChtaWJfbW9kdWxlX3NodXRkb3duLmg6MzIpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg1NEIxNEY0OiBzbm1wX2NhbGxfY2FsbGJhY2tzIChjYWxsYmFjay5jOjM0NCkKLSAgICA9PTYyODc9PSAgICBieSAweDU0OEI1OEI6IHNubXBfc2h1dGRvd24gKHNubXBfYXBpLmM6ODYyKQotICAgID09NjI4Nz09ICAgIGJ5IDB4NDA0QzA2OiBtYWluIChzbm1wZC5jOjEwNjApCi0gICAgPT02Mjg3PT0gIEFkZHJlc3MgMHg2ODZmMzE4IGlzIDI0IGJ5dGVzIGluc2lkZSBhIGJsb2NrIG9mIHNpemUgNDAgZnJlZSdkCi0gICAgPT02Mjg3PT0gICAgYXQgMHg0QTA2MEUwOiBmcmVlICh2Z19yZXBsYWNlX21hbGxvYy5jOjM2NikKLSAgICA9PTYyODc9PSAgICBieSAweDRFNkFCMTY6IG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUgKHRhYmxlX2RhdGEuYzozMjApCi0gICAgPT02Mjg3PT0gICAgYnkgMHg0RTZDQzg0OiBuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldCAodGFibGVfZGF0YXNldC5jOjE4MCkKLSAgICA9PTYyODc9PSAgICBieSAweDUxMjE5NzQ6IHNodXRkb3duX25vdGlmaWNhdGlvbl9sb2cgKG5vdGlmaWNhdGlvbl9sb2cuYzo1NjQpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg1MTk0MURCOiBfc2h1dGRvd25fbWliX21vZHVsZXMgKG1pYl9tb2R1bGVfc2h1dGRvd24uaDozMikKLSAgICA9PTYyODc9PSAgICBieSAweDU0QjE0RjQ6IHNubXBfY2FsbF9jYWxsYmFja3MgKGNhbGxiYWNrLmM6MzQ0KQotICAgID09NjI4Nz09ICAgIGJ5IDB4NTQ4QjU4Qjogc25tcF9zaHV0ZG93biAoc25tcF9hcGkuYzo4NjIpCi0gICAgPT02Mjg3PT0gICAgYnkgMHg0MDRDMDY6IG1haW4gKHNubXBkLmM6MTA2MCkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhOTUxYzIwYTY4NjU5MjA5NDlmNDUwNGNiMDc2OTA2YzIzY2FiNDg1Ci1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gRmViIDIxIDA3OjEzOjMzIDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIGEgTWluR1ctc3BlY2lmaWMgY29tcGlsZXIgd2FybmluZyAoYmFja3BvcnRlZCByMTk5MjIgZnJvbSB0cnVuaykuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzFiNjE1ZTM4YTVhZjBjMDdhYjk4OTk0ZDk0MDU4ZGVkMWVmMDA2ZAotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEZlYiAyMCAwOToyNDoyOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTg1NTI4OiBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQgZG9lc24ndCBjbG9zZSBVRFAgc29ja2V0Ci0gICAgKEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gcjE5NTExLikKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5NDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5MmE2OTE5ZTZhOTc1ZDY2OGM3YWYxMWY3ODhmYmIzNTUxY2YxODZiCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gRmViIDIwIDA5OjI0OjI5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxODU1Mjg6IHNodXRkb3duX21hc3Rlcl9hZ2VudCBkb2Vzbid0IGNsb3NlIFVEUCBzb2NrZXQKLSAgICAoRml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiByMTk1MTEuKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM2NTRmY2QwYWE5ZDQ2MDliYWZjN2U4Nzc5NThmNWUyMzRlMWIxYzkKK2NvbW1pdCA3NDdmZGM3MWU2NGQwOWUwODA5MjhlYmJiNGQwNGNiZGUzOTA2Nzk5CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAxNyAxMToyODoyNyAyMDExICswMDAwCitEYXRlOiAgIFdlZCBPY3QgNSAxNTo1Nzo1OSAyMDExICswMjAwCiAKLSAgICBGaXhlZCBzbm1wLWJyaWRnZS1taWIgaW4gc3RhbmRhbG9uZSAoYWdlbnR4KSB2ZXJzaW9uLgotICAgIERvbid0IGRlY2xhcmUgbG9jYWwgdmFyaWFibGVzIGluc2lkZSBibG9jay4gUGF0Y2ggcHJvdmlkZWQgYnkgSmVucyBPc3RlcmthbXAuCisgICAgQ0hBTkdFUzogc25tcGQ6IExvd2VyZWQgc2V2ZXJpdHkgb2YgJ2Vycm9yIGZpbmRpbmcgcm93IGluZGV4IGluIF9pZlhUYWJsZV9jb250YWluZXJfcm93X3Jlc3RvcmUnIG1lc3NhZ2UuCiAgICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTM5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIFRoZSBtZXNzYWdlIGlzIHNob3dzIHVwIHdoZW4gc25tcGQgaXMgc3RhcnRlZCBhbmQgdGhlcmUgaXMgZGlmZmVyZW50IHNldCBvZiBuZXR3b3JrIGludGVyZmFjZXMgdGhhbiBpdCB3YXMgd2hlbiBzbm1wZCB3YXN0IGxhc3Qgc3RvcHBlZC4gVGhpcyBpcyBjb21tb24gb24gcHBwLXNlcnZlcnMgb3IgdmlydHVhbCBob3N0cy4KIAotY29tbWl0IGRhY2JlNjNjMThiNjFmN2U3ZGQ3MzY4MWI3OGJmYmVhM2UyMjFhZjkKK2NvbW1pdCAyNTBmNjk4ZTU5ZWFiOWYxZmZkMzMyZmY1OWZkYjcyZWEwZGYwNmZmCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIzIDA4OjUxOjIzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIHRoZSB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBjb2RlIHdvcmsgYWdhaW4KKyAgICAKKyAgICBQcmV2aW91c2x5IHRoZSB0cmFuc3BvcnQgaW5oZXJpdGFuY2UgcHJvY2Vzc2luZyBjb2RlIHJhbiB3aXRoCisgICAgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HIHNldC4gSW4gdGhpcyBtb2RlIHRoZSBmaWxlIG5ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oCisgICAgaXMgcmVxdWllcmVkLiBUaGF0IGZpbGUgaXMgY3JlYXRlZCBkdXJpbmcgdGhlIGZpcnN0IG1ha2UgcnVuLCBhbmQgdGhhdCBoYXBwZW5zCisgICAgYWZ0ZXIgY29uZmlndXJlIGlzIHJ1bi4KKyAgICBDaGFuZ2UgdGhpcyB0byB1bmRlZmluZSBORVRTTk1QX01JTklNQUxfQ09ERSwgZWZmZWN0aXZlbHkgdHVybmluZyBvZmYgZmVhdHVyZQorICAgIHN1cHBvcnQgZHVyaW5nIHRyYW5zcG9ydCBjb25maWd1cmF0aW9uIGluIG9yZGVyIHRvIG1ha2UgaXQgd29yayBhdCBhbGwuCisKK2NvbW1pdCA2ZWY2OTA3NjQyMjQ3YzY2M2I5Yjg5NjRiOWZkNDRhMjExZGJjYWE3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgT2N0IDIwIDIwOjMwOjU0IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0MDgzOTg6IEZpeCBhIG1lbW9yeSBsZWFrIGluIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuCisgICAgCisgICAgVGhpcyBtZW1vcnkgbGVhayB3YXMgaW50cm9kdWNlZCB2aWEgY29tbWl0CisgICAgOWJmM2Q5NmQ5NmE4ZWNkNGE1ZmMzNWMzMjZkYzkzNzQ2NzAwMmI2YzogSW5pdGlhbCBIQUwKKyAgICBpbXBsZW1lbnRhdGlvbiBvZiBGaWxlU3lzdGVtIGluZm9ybWF0aW9uIChNYXJjaCA3LCAyMDA4KS4KKworY29tbWl0IGNmODJiODk0YjIyMTdjMjZlZGM2ZjEzNTYzNTFjOTMyNDE1NjA0ZTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBPY3QgMTUgMTQ6NDU6MDggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzNDIzOTE1OiBDaGFuZ2UgZGVmYXVsdCBudW1iZXIgb2YgcmV0cmllcyBiYWNrIGZyb20gMCB0byA1CisgICAgCisgICAgVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIHZpYSBjb21taXQgNmNhYzA1MCAoTWF5IDUsIDIwMTEsCisgICAgYWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyB0aGUgZGVmYXVsdCBudW1iZXIgb2YgcmV0cmllcyBpbgorICAgIHNubXBkLmNvbmYpLgorCitjb21taXQgYzExYWRhYTEyOTE1YWJmZWU2MjliYjZjMDI2YzIxZjIxODViMjE2ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxNyAxMDoyNDo0NiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogQXZvaWQgdGhhdCBjb21waWxpbmcgdGhlIGhlYWRlciBmaWxlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gd2l0aCB0aGUgTWluR1cgZ2NjIGNvbXBpbGVyIHRyaWdnZXJzIHdhcm5pbmdzIGFib3V0ICJwcmFnbWEgY29tbWVudCIuCisKK2NvbW1pdCBiMTdhNzJhNzkzNDgzYWVlNGE1YmIyZjJlMmM3ZjRmZDg2OTgxN2U2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDE3IDEwOjIyOjIwIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBBdm9pZCB0aGF0IHRoZSBQQUNLQUdFXyogbWFjcm9zIGRlZmluZWQgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYXVzZSB0cm91YmxlIHdoZW4gaW5jbHVkaW5nIHRoaXMgaGVhZGVyIGluIGEgcGFja2FnZSB0aGF0IHVzZXMgdGhlIEdOVSBhdXRvdG9vbHMuCisKK2NvbW1pdCA2NjRkM2FlMTA3ZDc1NDA1MWI4YzQyMjc5ZDQ1OWFhNTdhMWJlMWMzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDE2OjQ3OjE2IDIwMTEgKzAyMDAKKworICAgIE1pbkdXLCBod19mc3lzOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXJzIGluIGEgZGVidWcgc3RhdGVtZW50LgorICAgIAorICAgIFRoaXMgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW50cm9kdWNlZCBpbiBjb21taXQgNzZmZjI1ZC4KKworY29tbWl0IDIxMWRjYjQ5MzA2NTYxZTM1YmEzYzIxM2JlN2NmYTI1N2I0MGE4ZTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTU6NTI6NDMgMjAxMSArMDIwMAorCisgICAgQXZvaWQgdGhhdCBnY2MgNC42IGNvbXBsYWlucyBhYm91dCBzZXQgYnV0IG5vdCB1c2VkIHZhcmlhYmxlcworCitjb21taXQgOWY2NTNmNzNlNWFhNzBmMGJlZjExNzQ2MzJlOTU1OTRmODdmNjY5ZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIE9jdCAxMCAxMzowMjoyNSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGRfc3FsOiBBdm9pZCB0aGF0IGEgbGlua2VyIGVycm9yIGlzIHRyaWdnZXJlZCBvbiBzeXN0ZW1zIHdoZXJlIG15X3Byb2duYW1lIGlzIG1pc3NpbmcgaW4gbGlibXlzcWxjbGllbnQgKGUuZy4gRmVkb3JhIDE1IGFuZCAxNikuCisKK2NvbW1pdCA0YzgzYjkyMjlhNzQ1NGYzNGY2ZmY3NWY2OWU2N2U0MDMwYzQxOWI1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgT2N0IDcgMTU6NTg6NDUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogU2V0IHRoZSBycGF0aCBmb3IgbGlicGVybC5zbyBpbiBsaWJuZXRzbm1wbWlicy5zbyBzdWNoIHRoYXQgdGhlIGR5bmFtaWMgbGlua2VyIGNhbiBmaW5kIGxpYnBlcmwuc28gd2l0aG91dCByZXF1aXJpbmcgdGhlIHVzZXIgdG8gbW9kaWZ5IHRoZSBkeW5hbWljIGxpbmtlciBzZXR0aW5ncy4KKyAgICAKKyAgICBUaGlzIGNoYW5nZSBpbiBhZ2VudC9NYWtlZmlsZS5pbiBpcyBuZWNlc3Nhcnkgb24gdGhlIDUuNSBicmFuY2ggYW5kCisgICAgbGF0ZXIgYnV0IG5vdCBvbiB0aGUgNS40IGJyYW5jaC4gVGhhdCBpcyBiZWNhdXNlIHRoZSA1LjQgYnJhbmNoIHVzZXMKKyAgICBhbiBvbGRlciB2ZXJzaW9uIG9mIGxpYnRvb2wgdGhhdCBwcm9wYWdhdGVzIHRoZSBycGF0aCBvZiBkZXBlbmRlbnQKKyAgICBsaWJyYXJpZXMuIFRoaXMgaXMgY2FsbGVkIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jeSB0cmFja2luZyBpbiB0aGUKKyAgICBsaWJ0b29sIG1hbnVhbC4gVGhpcyBmdW5jdGlvbmFsaXR5IGlzIHByZXNlbnQgaW4gbGlidG9vbCB2ZXJzaW9uIDEKKyAgICBidXQgbm90IGluIGxpYnRvb2wgdmVyc2lvbiAyLiBGb3IgbW9yZSBiYWNrZ3JvdW5kIGluZm9ybWF0aW9uIGFib3V0CisgICAgZHluYW1pYyBsaWJyYXJpZXMgYW5kIHJwYXRocywgc2VlIGFsc28gdGhlIGRvY3VtZW50IHdpdGggdGhlIHRpdGxlCisgICAgIlJwYXRoSXNzdWUiIG9uIHRoZSBEZWJpYW4gd2lraSAoaHR0cDovL3dpa2kuZGViaWFuLm9yZy9ScGF0aElzc3VlKS4KKworY29tbWl0IDg5MjVjOTEyZDI2Mzk3NTJhODRiY2ZmZWVmMWI3MGE4MTAyNjQ0OWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgNyAxNDoyMToyOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogSE9TVC1SRVNPVVJDRVMtTUlCOiBBZGQgbWlzc2luZyBicmFjZSBpbiBhIGRlYnVnIHN0YXRlbWVudAorCitjb21taXQgNzZmZjI1ZDliZjk3NTc5ZTcyMTMxMDIwNjVmZDUwOTZmMDQ5YTRjNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE0OjEzOjE4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBIT1NULVJFU09VUkNFUy1NSUI6OmhyU3RvcmFnZVRhYmxlOiBmaXggYnVnIGluIGhhbmRsaW5nIGxhcmdlIGZpbGVzeXN0ZW1zLCB3aGVyZSBsYXJnZSBtZWFucyBhYm92ZSA4IFRCICg9IDIqKjMxICogNDA5NiBieXRlcykuCisgICAgCisgICAgVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdAorICAgIDcxZDgyOTNmMzg3YTZjZDY2YmIwZGJiMTNjMGY1MDE3NGQyZTY3OGIuCisgICAgRm9yIHRoZSBvcmlnaW5hbCBidWcgcmVwb3J0LCBzZWUgYWxzbworICAgIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2Z1bmM9ZGV0YWlsJmF0aWQ9MTEyNjk0JmFpZD0zNDE5ODI1Jmdyb3VwX2lkPTEyNjk0LgorCitjb21taXQgODY2MDMzZGI5OTA0ZmZiMTIwM2YyODNmODM4MDkyZTRjZjY4ZGU2YgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE9jdCA2IDA3OjMzOjI3IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgc3B1cmlvdXMgI2VuZGlmIHRoYXQgc2VlbXMgdG8gYmUgdGhlIHJlc3VsdCBvZiBhIG1pc21lcmdlLgorCitjb21taXQgMjBmNGYzMjY3ZWUyMGQ1NTcwNWI3YTQzNzg5ODc5YzEwM2Y5NjYyMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IE9jdCA2IDAwOjA4OjU5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBZGQgbWlzc2luZyBlbmQgY29tbWVudHMgdG8gZmVhdHVyZSBpZm5kZWZzLgorCitjb21taXQgZTVkZTJjYzU3YmYzMDRmMzMyMGNhZDAwMzRkMmVhMmQ4YWVkYzQzNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCA1IDA5OjE1OjEwIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBMb2cgYSBtb3JlIGRldGFpbGVkIGVycm9yIG1lc3NhZ2UgaWYgZW1iZWRkZWQgcGVybCBpbml0aWFsaXphdGlvbiBmYWlscworCitjb21taXQgNWVlZjk5OTBkZTI4ZjYzMTExZTZjMDkzYmUwZjNjN2FlMmQ1MTNhMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE9jdCA1IDA4OjQ1OjQ5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEFkZCBhZ2VudDo6dXB0aW1lKCkKKworY29tbWl0IDY4MTBlZDQyZjliYzU2MDc1MGQ2ZGJmYjdlNTBiNmUyYWMxMTg5OWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMzAgMTE6MDE6MjMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogQ3l3aW46IGFnZW50OiBJbXBsZW1lbnQgZ2V0X3VwdGltZSgpIHN1Y2ggdGhhdCBxdWVyeWluZyBIT1NULVJFU09VUkNFUy1NSUI6OmhyU3lzdGVtVXB0aW1lIHJldHVybnMgYSBub24temVybyB2YWx1ZS4KKworY29tbWl0IDk3MTcyYjMxMWQyMGY0NDQxYzdhN2U5MDA5MmI1OWMxZTBkYTk5ZjcKK0F1dGhvcjogVGhvbWFzIEphcm9zY2ggPHRqYXJvc2NoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCA1IDA4OjQ2OjM5IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFBBVENIOiAzNDE4NjQ5OiBIT1NULVJFU09VUkNFUy1NSUI6IFVzZSBwY2xvc2UoKSBpbnN0ZWFkIG9mIGZjbG9zZSgpIHRvIGNsb3NlIGEgcGlwZS4KKworY29tbWl0IDY1OTE5MzdhZGI4NTAwMGMyNzA2OWM0YmU4NGNmNDY4ODgzOGViY2QKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxNjoxODowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogQWRkIGRlcGVuZGVuY2llcyBvbiBARkVBVFVSRVRBUkdTQCB0byBtYWtlIHRoZSBzdWJ0YXJnZXQgd29yayBhcyB3ZWxsLgorCitjb21taXQgYjljODAxMmVjMDM1YmMwODRmMTc1ODc2ZmVjYzM3NTE5NWY5YmU4MQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDE0OjAyOjU4IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBZGQgdGFyZ2V0IHRvIGJ1aWxkIGFnZW50eHRyYXAgZnJvbSB0aGUgdG9wbGV2ZWwKKworY29tbWl0IDk5NTY0N2MwY2ZlMDA0MTIyNjJjYzU3OTdiZGZhZTlkMDBiNzBjNzYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxNTo0NDozNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogUmVtb3ZlIHRoZSB1c2Ugb2YgLUwgZmxhZ3MgZm9yIGludGVybmFsIGxpYnJhcmllcyBhcyBpdCBjb25mdXNlcyBsaWJ0b29sLgorCitjb21taXQgOTNkYzEyMzVhMGRiNThmZmQyOTYxN2NmZjAwZGMxMTI2Mzc4MDIwMgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE9jdCAyIDExOjMxOjQ2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNYWtlIG1ha2UgYXBwcyB3b3JrIGFnYWluCisgICAgCisgICAgYXBwcyBpbmNsdWRlIHNubXB0cmFwZCBhbmQgdGhhdCByZXF1aXJlIHRoZSBhZ2VudCBsaWJyYXJpZXMgYXMgd2VsbC4KKworY29tbWl0IGJhNDE0ODhlZDQ0Y2QyM2MyNTk2M2Q0ZmM1NmM0NzY4NTNiMmFiNTkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxMToyOTozMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogV2hlbiB5b3Ugc2F5IG1ha2UgbGlicyB5b3UgZXhwZWN0IGFsbCB0aGUgbGlicyB0byBiZSBidWlsdC4KKyAgICAKKyAgICBUaGlzIGlzIGRlbW9uc3RyYXRlZCBieSB0aGUgc25tcHRyYXBkIHRhcmdldCBhdCB0aGUgdG9wIGxldmVsIHdoaWNoIG9idmlvdXNseQorICAgIGV4cGVjdGVkIGJvdGggbGlicyB0byBiZSBidWlsdCBhbmQgc28gZmFpbGVkIHRvIGNvbXBpbGUgYmVmb3JlIHRoaXMgcGF0Y2guCisKK2NvbW1pdCAzMDU3YzczZTA5MzQ3M2JlNDYyNTRiY2RmYjRjYTc4OGU0MzJkMWI4CiBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEZlYiAxNiAxNDo1NjozMyAyMDExICswMDAwCitEYXRlOiAgIFR1ZSBTZXAgMzAgMDc6MzI6NTIgMjAwOCArMDAwMAogCi0gICAgRml4ZWQgc25tcC1icmlkZ2UtbWliIHdoZW4gd29ya2luZyBpbiB0aGUgZW1iZWRkZWQgcGVybC4KKyAgICBORVdTOiBidWlsZGluZzogUEFUQ0g6IDIwOTExNTY6IGNvcnJlY3RseSBkZWNsYXJlIGRlcGVuZGVuY2llcyBpbiBNYWtlZmlsZS4KKyAgICAnbWFrZSAtaiA8Tj4nIHNob3VsZCB3b3JrIG5vdy4KICAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQmFja3BvcnQgdGhpcyB0byBWNS00IGFzIGl0IGlzIG5lZWRlZCBmb3IgY29ycmVjdCBvcGVyYXRpb24gaW4gdGhlIHNpbmdsZQorICAgIHRocmVhZGVkIGNhc2Ugb2YgbWFrZSBtaWJsaWIgYXMgd2VsbC4KIAotY29tbWl0IGM4ZGEzNDFhNjRiZDE5OTUyOWE5ZTU5YWMzNTIzNTQ3Y2MyZmUxZjYKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgRmViIDE2IDEzOjE2OjU3IDIwMTEgKzAwMDAKK2NvbW1pdCA2ZWFlMzQwZmEyYTY0MDg2NTkyOTgyY2M1MjczNWJjMDE0ODdkOTc4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgT2N0IDEgMTk6MzM6NTAgMjAxMSArMDIwMAogCi0gICAgRml4ZWQgR0VUTkVYVCBwcm9jZXNzaW5nIGluIHNubXAtYnJpZGdlLW1pYi4KKyAgICBDSEFOR0VTOiBidWlsZGluZzogU2lsZW5jZSBsaWJic2QgMC4zLjAgbmFnZ2luZwogICAgIAorICAgIElmIHlvdSBoYXZlIGxpYmJzZCAwLjMuMCBpbnN0YWxsZWQgdGhlbiB0aGVpciB2ZXJzaW9uIG9mIG5saXN0Lmggd2FybnMgYW5kCisgICAgdHJpZXMgdG8gbWFrZSB5b3UgaW5jbHVkZSBic2Qvbmxpc3QuaCBpbnN0ZWFkLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHdlIGRvbid0CisgICAgbmVlZCB0aGF0IGNvbXBhdGliaWxpdHkgbGlicmFyeSBhcyB3ZSBrbm93IGhvdyB0byBkbyBpdCBvdXJzZWxmIHNvIGl0IGJlY29tZXMKKyAgICBwdXJlIG5hZ2dpbmcuIFRoaXMgcGF0Y2ggYWRkcyBhIGRlZmluZSB0aGF0IGNoYW5nZXMgdGhlIHdhcm5pbmcgaW50byBhbgorICAgIGVycm9yIGFuZCB0aGVuIGZpZ3VyZXMgb3V0IHRoYXQgdGhlcmUgaXMgbm8gdXNhYmxlIG5saXN0LmggYW5kIGlnbm9yZXMgaXQKKyAgICBmb3IgdGhlIGZ1dHVyZS4KKworY29tbWl0IGFjMzhjYjUzMWJlZTUwZWRjOGQ0YzgzNGYzMDA1ZjU5OTJjNzcxZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgMjkgMTk6MDM6MDIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogRW5hYmxlIHNlbmRpbmcgU05NUHYyIHRyYXBzIHdpdGggYW4gZW1wdHkgdmFyYmluZCBsaXN0CisKK2NvbW1pdCBhNzVkZTI5NzE1MjdhYzJkMmU4MTIwMjQyOTg2MDJiYjI0MTJmMzM3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgU2VwIDMwIDEwOjQxOjQ0IDIwMTEgKzAyMDAKKworICAgIHBlcmwvU05NUC9TTk1QLnhzOiBVcGRhdGUgZW1hY3MgbW9kZWxpbmUKKworY29tbWl0IDg0OGY2MzAwZWZlMzg0OTJmYjQ1NDQ1MWEwMzBmMGI3ZTZmZjhjOWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMzAgMTA6NDE6NDQgMjAxMSArMDIwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IFVwZGF0ZSBlbWFjcyBtb2RlbGluZQorCitjb21taXQgYzEzNzQ0NzNlY2Q4ZWM5ZTAzMTAwMTM4NjFlZTE4YzgzZTVkNmM1YgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIFNlcCAzMCAwMzoyOTozNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBQcm90ZWN0IHRoZSB1c2Ugb2YgJE9TVFlQRSB0byBlbnN1cmUgdGhhdCAndGVzdCcgZ2V0IGVub3VnaCBwYXJhbWV0ZXJzLgorCitjb21taXQgN2U5N2EyMDYzM2E1N2VhZTM5ZDAxNWIyMzMzOTQ2M2MzMmY1Zjg0OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAxMDoyMjowOCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBDb252ZXJ0IHNubXBsaWIvdGVzdF9iaW5hcnlfYXJyYXkuYyBpbnRvIHR3byB1bml0IHRlc3RzCisKK2NvbW1pdCA5YzBkZDk4MTc2NDU3MzQyZmZmYWE1ZTc0ZDgwMmUzMTQ1ZWQ3MGU3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgU2VwIDI5IDA4OjU2OjE3IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZCB1bml0IHRlc3QgZm9yIG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpCisKK2NvbW1pdCA1ZmQyNmU0ZmEzZTAwMGVhOWM4MWMzOGFiOTc1Yjc5NDZlZmUyMTU3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgU2VwIDI4IDE3OjQ5OjU1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBBdm9pZCB0aGF0IG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgpIGZhaWx1cmUgdHJpZ2dlcnMgYSBkb3VibGUgZnJlZS4KICAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgRml4ZXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgdmlhIGNvbW1pdAorICAgIGFhNGQ0N2MyNjA5ZTUyODE4YzljZGYxYThlMjIwNWRlOWEzMzVhMGEgKHN2biByMTk1MTUpLgogCi1jb21taXQgYmNjNjhmNzM3OGMyOWVmY2Y4MWRhYTBjMjk5NmM0ZWRlODBlNTViYwotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMjoyNDowNiAyMDExICswMDAwCitjb21taXQgZDIyNTJkMDE2NjkzODA3MzI2ZjcyYjY2MTIzNjQ5ZGVhMDBhZjkxNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IFNlcCAyOSAxMDoyMDowOCAyMDExICswMjAwCiAKLSAgICBQcm9wZXJseSBzYXZlIGVudHJpZXMgZm9yIE5ldEJTRCBhbmQgRHJhZ29uRmx5CisgICAgQ0hBTkdFUzogdGVzdGluZzogUmVxdWlyZSBhIHNlbWljb2xvbiBhZnRlciBPSygpLCBPS0YoKSBhbmQgUExBTigpCiAgICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIEFsc28sIGxldCBPS0YoKSBlbWl0IGEgc2luZ2xlIGxpbmUgb2Ygb3V0cHV0IHN1Y2ggdGhhdCBhbGwgb3V0cHV0IGl0CisgICAgcHJvZHVjZXMgaXMgdmlzaWJsZSBpbiB0aGUgb3V0cHV0IG9mICJtYWtlIHRlc3QiLgogCi1jb21taXQgMTAwNTBjOTQyMDliMGE5ZGZlNDVhYjcxMGM5MjhiNjU2ZDkwNmEzYQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMjoyNDowNiAyMDExICswMDAwCitjb21taXQgMTQyMTkyNGI0ODUyMTQyMTkyYzViYjllOTNkZGJmZWQ2OWU5MDhmYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIFNlcCAyMSAyMjoyMDowOCAyMDExICswMjAwCiAKLSAgICBQcm9wZXJseSBzYXZlIGVudHJpZXMgZm9yIE5ldEJTRCBhbmQgRHJhZ29uRmx5CisgICAgQ0hBTkdFUzogc25tcGxpYjogQXZvaWQgd2FpdGluZyBpbmRlZmluaXRlbHkgaWYgYSBzZXNzaW9uIGhhcyB0aW1lb3V0IHplcm8KKworY29tbWl0IDVmMjdmNGY3NGFlMmJkNWJhZjUwM2NmMzA2YjRmOWEyODQxYTU3Y2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDozMjowMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIHRlc3QgcnVubmVyCisKK2NvbW1pdCAwOTcwMzk1OGNjNWVhODQ1OTI5YWUxOWVmOWUwODA0YWVjYWE1MTJlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDI3IDEyOjQyOjQxIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEF2b2lkIGZhbHNlIG5lZ2F0aXZlIGZvciBUMTE0YWdlbnR4YWdlbnR4dHJhcF9zaW1wbGUgY2F1c2VkIGJ5IHRoZSB0ZXN0IHJlc3VsdCBiZWluZyBwcmVzZW50IGluIHRoZSBoZXggZHVtcCAoIm1vc3RseV9oYXJtbGVzcyIpCisKK2NvbW1pdCA0MzkzMDAyNzlmNmYzMTQzODYzOGQyZjIyMmMyNGMzYzg0MWZhNmFiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDI3IDExOjE2OjMyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBNaWNyby1vcHRpbWl6ZSBhZ2VudCBtb2R1bGUgZGVwZW5kZW5jeSBhbmFseXNpcwogICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBUaGlzIG1ha2VzIHRoZSBhZ2VudCBtb2R1bGUgZGVwZW5kZW5jeSBhbmFseXNpcyBjYXJyaWVkIG91dCBieSB0aGUKKyAgICBjb25maWd1cmUgc2NyaXB0IHNsaWdodGx5IGZhc3RlciwgZXNwZWNpYWxseSBvbiB0aG9zZSBzeXN0ZW1zIHdoZXJlCisgICAgZm9yaygpIGlzIGV4cGVuc2l2ZSAoQ3lnd2luKS4KIAotY29tbWl0IDU0MDIyNDhjZDQ2ZGNjMjJlOGU1ZDMwYWY3NzcwYWI4ZmEwMWRmZGIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjI6MTg6NDMgMjAxMSArMDAwMAorY29tbWl0IGJiYzY4MDAwNGExMzc2MDM4ZGZkYzQxNzJkYmU3YjllMzExZmJhNjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBTZXAgMjYgMTA6MTQ6NDUgMjAxMSArMDIwMAogCi0gICAgcmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlcwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogTWFrZSB0ZXN0IFQxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZSBwYXNzCiAKLWNvbW1pdCBkZjY0OWNjYWY4NDNlZDc2Y2JkOGY5NjU2NGY1NzE3NmE4YTYxYmE4Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIyOjE4OjQzIDIwMTEgKzAwMDAKK2NvbW1pdCA3MGIwNmNmNzg5MjA4ZWFhODkwYmZiY2Q2MzhiZGI3NzVmODE3MDU0CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDIwIDA5OjUwOjU3IDIwMTEgKzAwMDAKIAotICAgIHJlbW92ZSByZWR1bmRhbnQgaW5jbHVkZXMKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogV2luZG93czogdGVzdGluZzogcGVybDogRml4IGFuIGluY29ycmVjdCBtZXNzYWdlIHByaW50ZWQgd2hpbGUgcnVubmluZyB0aGUgUGVybCBtb2R1bGUgcmVncmVzc2lvbiB0ZXN0cwogCi1jb21taXQgYjU2NTVjYzEwNzIxZTlkZGMyM2Q4ZWEwYTU0MDA3YjFhYjA2ODBlMQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMTo0ODowNSAyMDExICswMDAwCitjb21taXQgNzBiY2M4ZGUyZDBmYzkyYmJiODQ4MTgyMzYzMGZhYjliYzg3YWY3NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIFNlcCAxNiAxNjoxNDoyNCAyMDExICswMjAwCiAKLSAgICByZXJ1biBhdXRvaGVhZGVyL2F1dG9jb25mCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBPYnRhaW4gdGhlIE1TWVMgcGF0aCBmcm9tIHRoZSBlbnZpcm9ubWVudAogCi1jb21taXQgY2U4ZTg3NDU4Nzc1YzI4MDllZDhmOTIwY2U4MDQyMWFkNmYxNGNiYQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMTo0ODowNSAyMDExICswMDAwCitjb21taXQgNjI2Mjc1ZTJkMWFjYWZhZTcxNDRhMzNlZDMwMWE0MGY1OTZiMzdiMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIFNlcCAxNCAxMzoxNDoxNyAyMDExICswMjAwCiAKLSAgICByZXJ1biBhdXRvaGVhZGVyL2F1dG9jb25mCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IFdpbmRvd3M6IFJlbW92ZSBzdXBlcmZsdW91cyBsaW5rIGxpYnJhcmllcyBmcm9tIHByb2plY3QgZmlsZXMgKCouZHNwKQogCi1jb21taXQgOWNmYmQ4YjE0NGQ2NTk1ZTk4OGYzM2NhNDg0MzgyYzcwODJiYjZlZAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMToyNjozMCAyMDExICswMDAwCitjb21taXQgMzhmYzNjYWE5ZWViMzgwMDI1NGI0ZjZhZDZmOGY0NzY0YzBmODNkYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCAyMCAwOTozNDowOCAyMDExICswMjAwCiAKLSAgICBUb28gbXVjaCBxdW90aW5nIGlzIGJhZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfY2FsbGJhY2tfYWNjZXB0KCkgcmV0dXJuIC0xIChmYWlsdXJlKSBpbnN0ZWFkIG9mIDAgKFNURElOX0ZJTEVOTykKIAotY29tbWl0IDg4ZGMxNDRiYzZiYTJhYjIzNzdmOWQ3MTgyYTFjMmMwMzM3NTQ1OWUKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjE6MTE6MzcgMjAxMSArMDAwMAorY29tbWl0IDZjOGM3ZThhY2E4ZmMyZWViNTIwMTBhZTNlOWZlZTZkZDgzZWY3ODAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgMTMgMDk6NTg6MjYgMjAxMSArMDIwMAogCi0gICAgRml4IElQdjYgVENQIGFuZCBVRFAgdGFibGVzLCAqQlNEIHN1cHBvcnQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogc25tcGxpYjogUmVtb3ZlIG9ic29sZXRlIHNubXBfZ2V0X2ZkX2Zvcl9zZXNzaW9uKCkgZGVjbGFyYXRpb24KIAotY29tbWl0IDVjZDE1NzM2MjU0NzFjMDU4M2U5MDg3YWVjNjgwMmI3NzE1N2Q1YTIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjE6MTE6MzcgMjAxMSArMDAwMAorY29tbWl0IDA4NjBkMTFmZDhmYzVkYmRhYWFlMjI2MWZhZTJjMDdmYjljMmM4MmQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgOCAxMzo1NDo1NSAyMDExICswMjAwCiAKLSAgICBGaXggSVB2NiBUQ1AgYW5kIFVEUCB0YWJsZXMsICpCU0Qgc3VwcG9ydAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNU1ZDOiBBdm9pZCB0aGF0IHRoZSB0eXBlZGVmcyBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNvbmZsaWN0IHdpdGggdGhvc2UgaW4gPHN0ZGludC5oPiBmcm9tIHRoZSBtc2ludHR5cGVzIHByb2plY3QKIAotY29tbWl0IGIwMDU5NWM3Yjg3Mjg3ODZjZDg0M2YyNjg3Nzc5YjExZjBlNjE5NmIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjA6NDU6MzQgMjAxMSArMDAwMAorY29tbWl0IGY4YTAzNmY2M2ZmNjhmMDgzNDM2MTIwZTBhYmQ0NzhiNjkyYTJmNjEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBTZXAgOCAxMzoyMTowNiAyMDExICswMjAwCiAKLSAgICBLaWxsIGNvbXBpbGVyIHdhcm5pbmdzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IFdpbmRvd3M6IE1TVkM6IFdoZW4gbGlua2luZyB3aXRoIE9wZW5TU0wsIGxpbmsgd2l0aCB1c2VyMzIubGliIHRvbwogCi1jb21taXQgYjc2YTU0ZjdlZTY2NDRhOTYzNmQ5OGQ5NjBmZWZlY2FiYjc0YmMyOQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMDo0NTozNCAyMDExICswMDAwCitjb21taXQgODM2YTIzZTEwY2E4MTBjMzg5OTkwMmQzMjU4NzYxNmE5ZDEyMDNkZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEp1bCAxNCAxODozODoxMyAyMDExICswMjAwCiAKLSAgICBLaWxsIGNvbXBpbGVyIHdhcm5pbmdzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IFdpbmRvd3M6IE1TVkM6IExpbmsgd2l0aCBwcm9wZXIgbGliZWF5MzIgbGlicmFyeQogCi1jb21taXQgNjU1NTg5MzVlOWIyNzE4NzU3MzY2ZThiM2IxMGE5MTQxMmI5NmFlOAotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMDo0NDoyMiAyMDExICswMDAwCitjb21taXQgN2IwN2ZkNmNkZWY0OWVjN2JiMDRiMTY2ZTJhNGZiYjM3YjU4Mjg0MAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDExOjEwOjM4IDIwMTEgKzAyMDAKIAotICAgIEZpbHRlciBJUHY2IGVudHJpZXMgZnJvbSBJUHY0IHRhYmxlCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IHRlc3Rpbmc6IFJlbW92ZSBhbiBpbmNvcnJlY3QgY29tbWVudCBmcm9tIHNpbXBsZV9ldmFsX3Rvb2xzLnNoCiAKLWNvbW1pdCBlODhmOTIyMmM5OWViZGIxMWU5NGFlZjM5NGM4NGQ2Y2Y2N2JjNzUxCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDE1IDIwOjQ0OjIyIDIwMTEgKzAwMDAKK2NvbW1pdCA5OGY2ZDI5ZDk4MWZmOGU2MDc2MDBjNjNkYWRiMjQwNTM1NjI5ODA3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgU2VwIDYgMTA6NDk6MDMgMjAxMSArMDIwMAogCi0gICAgRmlsdGVyIElQdjYgZW50cmllcyBmcm9tIElQdjQgdGFibGUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogdGVzdGluZzogTWFrZSBJU0RFRklORUQoKSBjaGVjayBmb3IgYW4gZXhhY3QgbWF0Y2ggaW5zdGVhZCBvZiBhIHByZWZpeCBtYXRjaAogCi1jb21taXQgOGZkYzIxZmFhMWY0MTg1MWRmN2UwMGQwZTA1YjU4ODNjYzMyMTgyZQotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMDo0Mjo0NyAyMDExICswMDAwCitjb21taXQgNTJjZDAwMzFhMzFmNjkyZjEzMjYzYTk0YzMzNWQwNmJlMTQ1NDgwMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjEyOjU5IDIwMTEgKzAyMDAKIAotICAgIFByb3BlciB1c2Ugb2YgZ2V0cHJvYzIgYW5kIGRyYWdvbmZseSBzdXBwb3J0Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBNYWtlIHRob3NlIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcyBmb3Igd2hpY2ggU05NUENPTkZQQVRIIGFuZC9vciBTTk1QX1BFUlNJU1RFTlRfRElSIG1hdHRlcgogCi1jb21taXQgZWRkNWRlNmM3YzAwNGQxMTY0YWUyYzUxZDliN2YxYjNiN2M1MzA2NwotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxNSAyMDo0MTowOSAyMDExICswMDAwCitjb21taXQgZjVjZDg5YmQzMzU2ZGQ3NGUxNTU2YzBiNTA5NjZhNjQzZjE5MjA4NQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIFNlcCA2IDEwOjEyOjU5IDIwMTEgKzAyMDAKIAotICAgIGdldHZmc3N0YXQgaXMgb25seSBmb3IgTmV0QlNECi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorICAgIENIQU5HRVM6IE1pbkdXOiB0ZXN0aW5nOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdGVzdCBmcmFtZXdvcmsKIAotY29tbWl0IGQwMmU1ZGFmMjM4ZjA4YjUwNzA0MzE5ZWQ0NDQwNjA1ODlkY2ViYTIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMTUgMjA6Mzk6NTMgMjAxMSArMDAwMAorY29tbWl0IGRlZWRkNTJjODM0YTY0NDg4NTJhMDY3ODU1MzZlMTM4NjU5Njk2OTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBTZXAgNiAxMDoxMjo1OCAyMDExICswMjAwCiAKLSAgICBEZXRlY3QgbmVlZCBmb3IgLWxrdm0gaW4gcHJvcGVyIHRpbWUKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgQ0hBTkdFUzogTWluR1c6IFN1cHBvcnQgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgb2YgcmVjZW50IFNoaW5pbmcgTGlnaHQgT3BlblNTTCBiaW5hcnkgZGlzdHJpYnV0aW9ucwogCi1jb21taXQgNGRlODQ4ODQwNDFlMjNhYzhjMWI2ZGZjMzMxNTNhNmZjY2E0ZTZkMQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEZlYiAxNCAxNDozODowMCAyMDExICswMDAwCi0KLSAgICBGaXhlZCBhIE1pbkdXLXNwZWNpZmljIGNvbXBpbGVyIHdhcm5pbmcuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjcxZTE2ZDM4ZGRjOTkwMmJlNjEzZDM3NDk4ZWFhZDUyNTc1N2NkYwotQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBGZWIgMTMgMTY6Mjg6MTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBzdGF0aWMgYXBwbGljYXRpb25zIHVzaW5nIG5ldC1zbm1wLWNvbmZpZyBhbmQgdGhlIC0qbGlicyBmbGFncyBvbmNlIG1vcmUuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWM0ZGVhMjViMGU1MWY1NDI1MTdkNTJjZDdiYWQ5NDFmOGQwMWVkNwotQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBGZWIgMTMgMTY6Mjg6MTYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBzdGF0aWMgYXBwbGljYXRpb25zIHVzaW5nIG5ldC1zbm1wLWNvbmZpZyBhbmQgdGhlIC0qbGlicyBmbGFncyBvbmNlIG1vcmUuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTNmZGY2YzQ5NmJhOTQ5MDg3MDJhYzE4ZmMwNWY5NzYyZjBmZjMxMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDEwIDE1OjEzOjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxNjU4Nzg6IENhdGNoIGJ1ZmZlciBvdmVycnVuIG9uIDY0LWJpdCBzeXN0ZW1zCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTIwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTVkMzNmOTMwNDdmNzM3NjExMDJiNjQyZGZlYWE5M2ViYjI4NGNmMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDEwIDE1OjEzOjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxNjU4Nzg6IENhdGNoIGJ1ZmZlciBvdmVycnVuIG9uIDY0LWJpdCBzeXN0ZW1zCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTIwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjMwMjYzMTZjNjgzMmIwNWJkMzY0OTI4ZTRiYzVmOTVhNzEyNTJiMQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDEwIDE1OjEzOjU5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxNjU4Nzg6IENhdGNoIGJ1ZmZlciBvdmVycnVuIG9uIDY0LWJpdCBzeXN0ZW1zCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTIwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWQ1ZjdjMzdmODk5NjRjMWY3ZGQxNmU2MjJjZDYzYzYzYmQzMzU3NAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDEwIDE1OjA2OjQ2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzMTUyNDEyOiBIYW5kbGUgKGFuZCByZXBvcnQpIHByb2JsZW1zIHJlYWRpbmcgL3Byb2Mvdm1zdGF0Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZDEyOGRkZDRhZTU5MTliOWJmODJlMjQ0YTU3Mjk0MTE1Y2ZkMTg1OQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDEwIDE1OjA2OjQ2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzMTUyNDEyOiBIYW5kbGUgKGFuZCByZXBvcnQpIHByb2JsZW1zIHJlYWRpbmcgL3Byb2Mvdm1zdGF0Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDI3MTMzNDI2NTRlZmM0MDk5ZjZhNjUzODAxODQ2YjMwMGJiZmE4NAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDEwIDE1OjA2OjQ2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAzMTUyNDEyOiBIYW5kbGUgKGFuZCByZXBvcnQpIHByb2JsZW1zIHJlYWRpbmcgL3Byb2Mvdm1zdGF0Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2NlOGUyMjU3ODdlNGQwNzA5MmE2MzRiODAzZmJhNjM1NTc4NzYwZgorY29tbWl0IGQ1NWJkNGUwNTQ5ZjAzYjZmZDMyNTYyYzJhYTdmZTM5MjcyYTllZjcKIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgOCAxNzo0MTozNyAyMDExICswMDAwCitEYXRlOiAgIFdlZCBTZXAgMjggMDY6NTU6MTkgMjAxMSAtMDcwMAogCi0gICAgQ0hBTkdFUzogcGVybDogcGF0Y2ggZnJvbSBNYXJ0aW4gQnVjazogZG9uJ3QgYWx3YXlzIG9wZW4gc3RkZXJyIGFzIHRoZSBjYWxscyB0byBzbm1wX2xvZyBhbHJlYWR5IGRvIHRoaXMgYW5kIGl0IG1lc3NlcyB1cCB0aGUgYWdlbnQgd2hlbiBlbWJlZGRlZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTkxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICByZW1vdmUgdGhlIHY1LjcgZnJvbSB0aGUgZnJvemVuIGxpc3QKIAotY29tbWl0IDExOGNkNDJiZGExZDYwYTgxZjBlNDQ5NTYzMTEwZmE4YzM4ODllMmMKK2NvbW1pdCBhYzJhZWQzYzk0YmIyZWJiNDczYWYwYTFlMjBmMDU2MWFkNjI5OTU2CiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDggMTc6NDE6MzcgMjAxMSArMDAwMAorRGF0ZTogICBXZWQgU2VwIDI4IDA2OjU1OjExIDIwMTEgLTA3MDAKIAotICAgIENIQU5HRVM6IHBlcmw6IHBhdGNoIGZyb20gTWFydGluIEJ1Y2s6IGRvbid0IGFsd2F5cyBvcGVuIHN0ZGVyciBhcyB0aGUgY2FsbHMgdG8gc25tcF9sb2cgYWxyZWFkeSBkbyB0aGlzIGFuZCBpdCBtZXNzZXMgdXAgdGhlIGFnZW50IHdoZW4gZW1iZWRkZWQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisgICAgcmVtb3ZlIHRoZSB2NS43IGZyb20gdGhlIGZyb3plbiBsaXN0CiAKLWNvbW1pdCA5OGEyM2YwYzhmMWQwNTIyMThkMjk2YWQxZmVkNTY5MmJiMGM1NDc4Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDggMTc6NDE6MzcgMjAxMSArMDAwMAorY29tbWl0IDQ2ZWFjMDJlOWEyN2JmNGYzMDY4ZTc5NWNhYjg5MWYwNWE4NDg4NzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBTZXAgMjYgMjE6NDk6MjcgMjAxMSArMDIwMAogCi0gICAgQ0hBTkdFUzogcGVybDogcGF0Y2ggZnJvbSBNYXJ0aW4gQnVjazogZG9uJ3QgYWx3YXlzIG9wZW4gc3RkZXJyIGFzIHRoZSBjYWxscyB0byBzbm1wX2xvZyBhbHJlYWR5IGRvIHRoaXMgYW5kIGl0IG1lc3NlcyB1cCB0aGUgYWdlbnQgd2hlbiBlbWJlZGRlZAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI0M2VhYjMyMDMxZDdhNThmYWQ0ODg4M2FiYTY0OGIwMDAzMzhkZTUKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgOCAxNzozNzowMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogRml4IGEgc3RybGVuIGNhbGN1bGF0aW9uIGFzIHBvaW50ZWQgb3V0IGJ5IEtvbnN0YW50aW4gQmF5ZGFyb3YKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk5MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzY2QyNDIyMjM5NzcyMWNhNTUyMDNiNDE0NThkZjliYzNiYjViNjMzCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDggMTc6Mzc6MDEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEZpeCBhIHN0cmxlbiBjYWxjdWxhdGlvbiBhcyBwb2ludGVkIG91dCBieSBLb25zdGFudGluIEJheWRhcm92Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZmYzOWZhNzc1ZjhmNmYwNDA3YmM0YzdmY2Y4YzFkZTgzMDE5NjA4MAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiA4IDE3OjM3OjAxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBGaXggYSBzdHJsZW4gY2FsY3VsYXRpb24gYXMgcG9pbnRlZCBvdXQgYnkgS29uc3RhbnRpbiBCYXlkYXJvdgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYwZDZiZjAzZDVmZTZkYmZjZTQ0MzBmMGFmMjA0MGYwMGNlMTRlNDUKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMyAyMjo0MjoyOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMxNzE4Nzg6IFVzaW5nIFNOTVB2MyBjb250ZXh0IGRvZXMgbm90IHdvcmsKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0yLXBhdGNoZXNAMTk5MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxY2Y5YzQ1NmIzY2E0MzE3ZDFkN2QyMjBhZGVjY2Q4NGQwNTM1ZGRiCi1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgRmViIDMgMjI6NDI6MjkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMTcxODc4OiBVc2luZyBTTk1QdjMgY29udGV4dCBkb2VzIG5vdCB3b3JrCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5OTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOWVkN2JhNDJmYzIyOTc3MjI5YTZlNDMxYjMwOTAzMWVmOGY4Y2NhNAotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEZlYiAzIDIyOjQyOjI5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzE3MTg3ODogVXNpbmcgU05NUHYzIGNvbnRleHQgZG9lcyBub3Qgd29yawotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDljMDdkNDg1NjIxNDU4MDdmNzIxODBhN2IyMTNjYzU5OWQ4YTZiZTUKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBGZWIgMyAyMjo0MjoyOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMxNzE4Nzg6IFVzaW5nIFNOTVB2MyBjb250ZXh0IGRvZXMgbm90IHdvcmsKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2OWM0MDc1NTMwYzY1N2EyOGZhNDUyODNlOTY0YTNjMWExMmY5ODBlCi1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxIDEzOjA3OjU1IDIwMTEgKzAwMDAKLQotICAgIERvbid0IGNoZWNrIGZvciAzMi82NGJpdCB3cmFwIGluIGNhbGN1bGF0ZWQgZW50cmllcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwYTQyMDAzZWIxOGZjMDUxMTA0OGQwYWMyNmU1ZGU0MjBiNGUxZGM0Ci1BdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEZlYiAxIDA5OjQxOjI4IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCB0aGUgYWdlbnQgd3JpdGluZyAnbG9va3MgbGlrZSBhIDY0Yml0IHdyYXAsIGJ1dCBwcmV2IT1uZXcnIGluIHN5c2xvZyB3aGVuIGNvbXB1dGluZyBpcFN5c3RlbVN0YXRzCi0gICAgCi0gICAgV2l0aG91dCB0aGUgbWVtY3B5LCBwcmV2X3ZhbHMtPnN0YXRzIGFuZCBuZXdfdmFscy0+c3RhdHMgY291bGQgZ2V0IGRpZmZlcmVudCwKLSAgICB3aGljaCBjb3VsZCBtdWNoIG11Y2ggbGF0ZXIgKHdoZW4gYSBjb3VudGVyIGdldHMgYmlnZ2VyIHRoYW4gMzIgYml0cykgcmVzdWx0Ci0gICAgaW4gJ3ByZXYhPW5ldycgbWVzc2FnZSBpbiBzeXNsb2cuIFR5cGljYWxseSB0aGlzIGhhcHBlbnMgYWZ0ZXIgbG9uZyB0aW1lIG9mCi0gICAgdXB0aW1lIGFuZCBpdCBpcyB2ZXJ5IGhhcmQgdG8gcmVwcm9kdWNlLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTkwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGZmZmMzMDAyYTBmNzU4MGNiNDQxZGY3NjBiZDNkZDRiNTQ5MDE1ZTQKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgRmViIDEgMDk6NDE6MjggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHRoZSBhZ2VudCB3cml0aW5nICdsb29rcyBsaWtlIGEgNjRiaXQgd3JhcCwgYnV0IHByZXYhPW5ldycgaW4gc3lzbG9nIHdoZW4gY29tcHV0aW5nIGlwU3lzdGVtU3RhdHMKLSAgICAKLSAgICBXaXRob3V0IHRoZSBtZW1jcHksIHByZXZfdmFscy0+c3RhdHMgYW5kIG5ld192YWxzLT5zdGF0cyBjb3VsZCBnZXQgZGlmZmVyZW50LAotICAgIHdoaWNoIGNvdWxkIG11Y2ggbXVjaCBsYXRlciAod2hlbiBhIGNvdW50ZXIgZ2V0cyBiaWdnZXIgdGhhbiAzMiBiaXRzKSByZXN1bHQKLSAgICBpbiAncHJldiE9bmV3JyBtZXNzYWdlIGluIHN5c2xvZy4gVHlwaWNhbGx5IHRoaXMgaGFwcGVucyBhZnRlciBsb25nIHRpbWUgb2YKLSAgICB1cHRpbWUgYW5kIGl0IGlzIHZlcnkgaGFyZCB0byByZXByb2R1Y2UuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGM5OWFmMjQwNDE2YmNkNmQ1YzUxNTk2YzMxMGQ1N2IwYWZmNGM1YwotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBGZWIgMSAwOTo0MToyOCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgdGhlIGFnZW50IHdyaXRpbmcgJ2xvb2tzIGxpa2UgYSA2NGJpdCB3cmFwLCBidXQgcHJldiE9bmV3JyBpbiBzeXNsb2cgd2hlbiBjb21wdXRpbmcgaXBTeXN0ZW1TdGF0cwotICAgIAotICAgIFdpdGhvdXQgdGhlIG1lbWNweSwgcHJldl92YWxzLT5zdGF0cyBhbmQgbmV3X3ZhbHMtPnN0YXRzIGNvdWxkIGdldCBkaWZmZXJlbnQsCi0gICAgd2hpY2ggY291bGQgbXVjaCBtdWNoIGxhdGVyICh3aGVuIGEgY291bnRlciBnZXRzIGJpZ2dlciB0aGFuIDMyIGJpdHMpIHJlc3VsdAotICAgIGluICdwcmV2IT1uZXcnIG1lc3NhZ2UgaW4gc3lzbG9nLiBUeXBpY2FsbHkgdGhpcyBoYXBwZW5zIGFmdGVyIGxvbmcgdGltZSBvZgotICAgIHVwdGltZSBhbmQgaXQgaXMgdmVyeSBoYXJkIHRvIHJlcHJvZHVjZS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzYjFkMzBjNzM5MTA1NWQ1MzY3NTk3ZDBkN2RjZTcxYWEyYTI4NGNkCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDMxIDIyOjM5OjM4IDIwMTEgKzAwMDAKLQotICAgIGFkZHByb3RvdHlwZXMgYW5kIHJlbW92ZSB1bnVzZWQgdmFycwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE2MDgxMjgyOWYyYzkzNjk4ZjBjNDJhNzkwNDlhNTUxMzNhMDU5YTUKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMzEgMjI6Mzk6MzggMjAxMSArMDAwMAotCi0gICAgYWRkcHJvdG90eXBlcyBhbmQgcmVtb3ZlIHVudXNlZCB2YXJzCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTAxNjY0NjIwYzQ5ODhlNWU5ZjRiZTZmMWZkYjkzNGRhOWIyMzg1MgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAzMSAyMjozNzo1OCAyMDExICswMDAwCi0KLSAgICBjb25zdCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5ZTMyNDYzNGJlN2IwZGMwMDg2MzQ5ZWI2YzBmNzU0Mjg4M2ViMTVkCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDMxIDIyOjM3OjU4IDIwMTEgKzAwMDAKLQotICAgIGNvbnN0IGp1Z2dsaW5nIHRvIHJlbW92ZSB3YXJuaW5ncwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTkwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGMyM2FhNGQ5MGQ5MmY1YzQ5ODZhOGRjYTBiMTgyNTIzZGM1ODU5MGIKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMzEgMjI6MzA6NTQgMjAxMSArMDAwMAotCi0gICAgZGlza2lvIGZvciBkcmFnb25mbHkKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk5MDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyODUxM2YxMmE3MmE5YTBkZTRhOTU0NTA0NzlhYzU0YTY4MWFkOGE5Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDMxIDIyOjMwOjU0IDIwMTEgKzAwMDAKLQotICAgIGRpc2tpbyBmb3IgZHJhZ29uZmx5Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTAzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGQ0ZjhkNjExOWIyZWI2ZmRmNTY5MDkwYzJhMzRmYzk2NDI0YzBmNwotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAzMSAyMjoyODozMCAyMDExICswMDAwCi0KLSAgICBwcm9wZXJseSBuYW1lIGluaXRhbGl6ZXIgZnVuY3Rpb24gZm9yIGNwdV9raW5mbwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTkwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU5NDNjNTk0NDEzOTNlYmRjZDliMWNiNmI4MzJhNDI4MDI0ZjkxNDUKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMzEgMjI6Mjg6MzAgMjAxMSArMDAwMAotCi0gICAgcHJvcGVybHkgbmFtZSBpbml0YWxpemVyIGZ1bmN0aW9uIGZvciBjcHVfa2luZm8KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNjk2OWI5OTNiMjA5NTFjY2Q4MjMyZWJkNTEwMWM2Njk0ZTk4ODdmCi1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDMwIDAxOjA2OjIxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNTE4OTc6IGZkIGxlYWsgdy8gL3Byb2MvcGFydGl0aW9ucwotICAgIHJlYWQgaW4gZGlza2lvCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMi1wYXRjaGVzQDE5ODk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNTVlZWEzNzI0MWE1OTk4OThjZTYxZjM2NGE2YTA3ZDg1NjIwMmZhZAotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiAzMCAwMTowNjoyMSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTUxODk3OiBmZCBsZWFrIHcvIC9wcm9jL3BhcnRpdGlvbnMKLSAgICByZWFkIGluIGRpc2tpbwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTg5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdmMmM3ZmZhMDIwZWE1N2Y4NTRhMjcxMjlhNjgzZWNjYTNiZDY5YzYKLUF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gMzAgMDE6MDY6MjEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE1MTg5NzogZmQgbGVhayB3LyAvcHJvYy9wYXJ0aXRpb25zCi0gICAgcmVhZCBpbiBkaXNraW8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4OTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5MDUxMzAzNDA5MzQxZjhiMTUxYWNkMzNkNTNjYTc2M2M0ZTg1ZDBlCi1BdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDMwIDAxOjA2OjIxIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNTE4OTc6IGZkIGxlYWsgdy8gL3Byb2MvcGFydGl0aW9ucwotICAgIHJlYWQgaW4gZGlza2lvCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZTYzZGE3OWIxYjYyYjdiMDYxYzA1YzRlN2EyYWQ4Mzg2YjQ3NjYxZAotQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEphbiAyOSAyMzozNjoyOSAyMDExICswMDAwCi0KLSAgICBORVdTOiBzbm1wZDogQlVHOiAzMTY2NTY4OiBoclN5c3RlbVByb2Nlc3NlcyBtaXNzaW5nIGluIDUuNi81LjYuMQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg5OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDc5MWQ0MjBlNDg3NGQwM2FjYzI1Mzc0Zjc5ZWIyYWExOWRiNzJhOWMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAyNyAwOTozNToyNCAyMDExICswMDAwCi0KLSAgICBBZnRlciB0ZW4geWVhcnMgaW50ZW5zaXZlIHVzZSwgYW4gImV4cGVyaW1lbnRhbCIKLSAgICBmZWF0dXJlIGNhbiBwcm9iYWJseSBiZSByZWxlYXNlZCBmb3IgZ2VuZXJhbCB1c2UuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2VlMjU0MjZiNGNjYzU5YmQzZDU5MmE3MzE4MmNhZjc2MDMwMTRkOAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDI3IDA5OjM1OjI0IDIwMTEgKzAwMDAKLQotICAgIEFmdGVyIHRlbiB5ZWFycyBpbnRlbnNpdmUgdXNlLCBhbiAiZXhwZXJpbWVudGFsIgotICAgIGZlYXR1cmUgY2FuIHByb2JhYmx5IGJlIHJlbGVhc2VkIGZvciBnZW5lcmFsIHVzZS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4OTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAwODk1OGY2OWFjNmE4NDUwYzcxMzNjMDUyYzQ3YzkwYmEzNWVlOWViCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMjcgMDk6MzU6MjQgMjAxMSArMDAwMAotCi0gICAgQWZ0ZXIgdGVuIHllYXJzIGludGVuc2l2ZSB1c2UsIGFuICJleHBlcmltZW50YWwiCi0gICAgZmVhdHVyZSBjYW4gcHJvYmFibHkgYmUgcmVsZWFzZWQgZm9yIGdlbmVyYWwgdXNlLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhhMDZmOWQ0ZDliMDg5MGE1ZjkzYWYwMGNmOGFlNGE0NWRhODNjZmMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMjYgMTY6NTA6NTIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogbWliMmM6IG1ha2UgdGhlIG1pYjJjIGZvcmVhY2ggcmFuZ2VzIHdvcmsgYXMgYWR2ZXJ0aXNlZCBpbiB0aGUgY29tbWVudHMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODk2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMGNmMWJhNmNhNWQ1YWQzMjc4Y2FhODg3OWJjNDZkMjVlZDFkNTU1NAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAyNiAxNjo1MDo1MiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBtaWIyYzogbWFrZSB0aGUgbWliMmMgZm9yZWFjaCByYW5nZXMgd29yayBhcyBhZHZlcnRpc2VkIGluIHRoZSBjb21tZW50cy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4OTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzYmJkZTVmM2NmOGRmZjk5YmQ4MDZmMWZjZGFhMzg0ZWNlYjE4ODU3Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDI2IDE2OjUwOjUyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IG1pYjJjOiBtYWtlIHRoZSBtaWIyYyBmb3JlYWNoIHJhbmdlcyB3b3JrIGFzIGFkdmVydGlzZWQgaW4gdGhlIGNvbW1lbnRzLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg5NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNlOTcyZGU5NzQyN2I2NjQ4NTIyNThhZWNlY2EyYTRkOTVjYzMwYjcKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDI2IDA5OjEyOjIwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCByYXJlIHJhY2UgY29uZGl0aW9uIHdoZW4gY291bnRpbmcgcHJvY2Vzc2VzIGZvciBVQ0QtU05NUC1NSUI6OnByVGFibGUKLSAgICAKLSAgICBUaGUgWFggcHJvY2VzcyBjYW4gZXhpdCBhZnRlciBmb3BlbigvcHJvYy9YWC9zdGF0dXMpIGFuZCBiZWZvcmUgZmdldHMoKSBmcm9tIGl0LiBzbm1wZCBzaG91bGQgY29udGludWUgd2l0aCBvdGhlciBwcm9jZXNzZXMgYW5kIG5vdCB0byBzdG9wLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg5MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJjZWUwMzdjNzFmMDA2ZTJiZTNiNDQ2ZTNlODFjNTA5ZDQ5YzY1Y2QKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDI2IDA5OjEyOjIwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCByYXJlIHJhY2UgY29uZGl0aW9uIHdoZW4gY291bnRpbmcgcHJvY2Vzc2VzIGZvciBVQ0QtU05NUC1NSUI6OnByVGFibGUKLSAgICAKLSAgICBUaGUgWFggcHJvY2VzcyBjYW4gZXhpdCBhZnRlciBmb3BlbigvcHJvYy9YWC9zdGF0dXMpIGFuZCBiZWZvcmUgZmdldHMoKSBmcm9tIGl0LiBzbm1wZCBzaG91bGQgY29udGludWUgd2l0aCBvdGhlciBwcm9jZXNzZXMgYW5kIG5vdCB0byBzdG9wLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg5MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJlNWY1NjQwZGI5OTk3ODNiODM5ODExNmY4NDYyYTViMGEzMjQ3ZTQKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDE5IDEzOjU3OjQ3IDIwMTEgKzAwMDAKLQotICAgIE1ha2UgdXMgY29tcGF0aWJsZSB3aXRoIHJwbS00LjksIHJwbUdldEZpbGVzeXN0ZW1MaXN0IGRvZXMgbm90IGV4aXN0IGFueW1vcmUsIHNvIHRoZSBjb25maWd1cmUgc2NyaXB0IHNob3VsZCBub3QgY2hlY2sgaXQuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODkyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODQyNGVmZDk3ZTAwMmQ1MzRjODFkNGJjNjg3MzI5ZDcyM2E5ZTE4YgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxOSAwNjozMTowMSAyMDExICswMDAwCi0KLSAgICBkaXNrSU9MQXggcmVxdWlyZXMgZXhwIHdoaWNoIG1heSByZXF1aXJlIC1sbQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDMyMzM0MDM4OTcwYzVhZjZhMWMxOTgxNTIwNGQxY2Q0ODQwNTI0OTMKLUF1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTkgMDY6MjA6NDUgMjAxMSArMDAwMAotCi0gICAgRGVmaW5lIERSQUdPTkZMWUlECi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODkwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNmEwYzM1MmU5MWNmY2U5NWQ0ZDRjYmJlNTU1ODk1YzI2NmRhNzQ1NgotQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxOSAwNjoyMDo0NSAyMDExICswMDAwCi0KLSAgICBEZWZpbmUgRFJBR09ORkxZSUQKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4OTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1YjcwMmIwMjRiNjAxNzZkN2Y1Njk5YjkyZTU1ZGE1MGE4ZGVhZTcxCi1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDE4IDIyOjAxOjI0IDIwMTEgKzAwMDAKLQotICAgIHR5cG8KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4ODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiY2I1OTcyNjg3NDUwMGJhMzcwNGYwYjQ4N2EwMzkwODM1ODIyY2E5Ci1BdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDE4IDIxOjU0OjI0IDIwMTEgKzAwMDAKLQotICAgIEZpbmQgcHJvcGVyIGlmLW1pYiBpbnRlcmZhY2UgZm9yIE5ldEJTRAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk3Y2UzODU4Njk4YjNiZjBlMTMzODk5NDBhNThjN2EzZGYwZmYyNjgKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDE0IDEyOjI4OjQwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmcm9tIFJvYmVydCBTdG9yeTogZml4ZWQgYWRkaW5nIG5ldyBhZGRyZXNzZXMgdG8gaXBBZGRyZXNzVGFibGUKLSAgICAKLSAgICBMb25nIHRpbWUgYWdvLCB0aGVyZSB3YXMgYSBidWdyZXBvcnRbMV0gcmVnYXJkaW5nIGlwQWRkcmVzc1RhYmxlIG9uCi0gICAgbmV0LXNubXAtY29kZXJzIGxpc3QgYW5kIHJzdG9yeSdzIGV4cGVyaW1lbnRhbCBwYXRjaCB3aXRob3V0IGFueSBmZWVkYmFjay4KLSAgICBOb3cgSSd2ZSBnb3QgZmV3IGNvbXBsYWludHMgdGhhdCBTTk1QIFNFVCBvbiBpcEFkZHJlc3NUYWJsZSBwcm9kdWNlcyB0aGUKLSAgICBzYW1lIGVycm9ycyBhbmQgZ3Vlc3Mgd2hhdCwgdGhlIHBhdGNoIGZpeGVzIHRoZW0uCi0gICAgCi0gICAgWzFdOiBodHRwOi8vc291cmNlZm9yZ2UubmV0L21haWxhcmNoaXZlL2ZvcnVtLnBocD90aHJlYWRfbmFtZT0yMDA2MDkyMDEzNDkzNS4zNWIzNmVkNiU0MGRldi5mdXR6Lm9yZyZmb3J1bV9uYW1lPW5ldC1zbm1wLWNvZGVycwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGYxYmRkZWMyYzI3NmNiYWRjMjc2MWM0MzhkNmU5YzBkZWNmMTFlYmYKLUF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDE0IDEyOjI4OjQwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBmcm9tIFJvYmVydCBTdG9yeTogZml4ZWQgYWRkaW5nIG5ldyBhZGRyZXNzZXMgdG8gaXBBZGRyZXNzVGFibGUKLSAgICAKLSAgICBMb25nIHRpbWUgYWdvLCB0aGVyZSB3YXMgYSBidWdyZXBvcnRbMV0gcmVnYXJkaW5nIGlwQWRkcmVzc1RhYmxlIG9uCi0gICAgbmV0LXNubXAtY29kZXJzIGxpc3QgYW5kIHJzdG9yeSdzIGV4cGVyaW1lbnRhbCBwYXRjaCB3aXRob3V0IGFueSBmZWVkYmFjay4KLSAgICBOb3cgSSd2ZSBnb3QgZmV3IGNvbXBsYWludHMgdGhhdCBTTk1QIFNFVCBvbiBpcEFkZHJlc3NUYWJsZSBwcm9kdWNlcyB0aGUKLSAgICBzYW1lIGVycm9ycyBhbmQgZ3Vlc3Mgd2hhdCwgdGhlIHBhdGNoIGZpeGVzIHRoZW0uCi0gICAgCi0gICAgWzFdOiBodHRwOi8vc291cmNlZm9yZ2UubmV0L21haWxhcmNoaXZlL2ZvcnVtLnBocD90aHJlYWRfbmFtZT0yMDA2MDkyMDEzNDkzNS4zNWIzNmVkNiU0MGRldi5mdXR6Lm9yZyZmb3J1bV9uYW1lPW5ldC1zbm1wLWNvZGVycwotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY1ZjRmZWQzMTM3MTRjNDJjYWNjYjY3YTVmNjcxZGI2MmVlNDZlZmQKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDE0IDA2OjI1OjU5IDIwMTEgKzAwMDAKLQotICAgIHJlbW92ZSBjb21wbGV0ZWx5IHVzZWxlc3MgYW5kIG5vbnNlbnNpY2FsIGNvZGUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhNzA5NjZhMmY4YjM2NDllYTFjNzE3YjVlODgzNWVlODU1MTBiZjZlCi1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiAxNCAwNjoyNTo1OSAyMDExICswMDAwCi0KLSAgICByZW1vdmUgY29tcGxldGVseSB1c2VsZXNzIGFuZCBub25zZW5zaWNhbCBjb2RlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjRhYWQ4ZTkxY2I0ZTBjMWY2MmMxMmRlOTZlMWE2NDg2NjBhNTZjNQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDE1OjU2OjM3IDIwMTEgKzAwMDAKLQotICAgIEVuc3VyZSByZWxlYXNlcyBhcmUgaW5zdGFsbGVkIHRvIHRoZSBjb3JyZWN0IHBhdGggd2l0aGluIHRoZSAvdGFncyBTVk4gdHJlZQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU3NTQ1OGZlNWU4NGJhMjkyMDljNDc3YmJmNzQyM2M5MjAzM2Q1YWUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxNTo1NjozNyAyMDExICswMDAwCi0KLSAgICBFbnN1cmUgcmVsZWFzZXMgYXJlIGluc3RhbGxlZCB0byB0aGUgY29ycmVjdCBwYXRoIHdpdGhpbiB0aGUgL3RhZ3MgU1ZOIHRyZWUKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNGQ5NmRjZWMwOTMzODIwNzMzZmE1ODljZWU2Mjg3NWVkZjZjZGUzCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTU6MTU6NTcgMjAxMSArMDAwMAotCi0gICAgUmVtb3ZlIEMrKyBjb21tZW50cwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg2OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDRlYzhiNDMxYjU4YzVjZGVkMTY3OTRhNGJlOTJmODgzNzY5MzkxYTgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxNToxNTo1NyAyMDExICswMDAwCi0KLSAgICBSZW1vdmUgQysrIGNvbW1lbnRzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgM2JjNDgyYTkxMDRiYTY5ZGNiMmJmMWY2ZjU3Mzc0Mjk3NzM3NmM3MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDEzOjE3OjQxIDIwMTEgKzAwMDAKLQotICAgIEZpeCBicm9rZW4gcGF0Y2gKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjYTdhZTVjM2YyOTAxNDA2NmQ1NTY2MmY1OWUzMzgyNWQxZjczZTQ3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gMTMgMTI6MTQ6MTkgMjAxMSArMDAwMAotCi0gICAgQ29uZmlndXJlIGZpeGVzIGZvciBEcmFnb25GbHkgc3VwcG9ydAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE0ZGQxYjRkYWZiODk3MDA0MWMxZjM4Y2YyNmRhMmEwMDZlNGRkZTMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiAxMyAxMjoxNDoxOSAyMDExICswMDAwCi0KLSAgICBDb25maWd1cmUgZml4ZXMgZm9yIERyYWdvbkZseSBzdXBwb3J0Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTUxNDExODA0Nzk1MGE2ZGEzZTgyY2M1ZDA3ZDQ1MzBjZmVmODI4NgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDEyOjA0OjUzIDIwMTEgKzAwMDAKLQotICAgIENvZGUgZml4ZXMgZm9yIERyYWdvbkZseSBzdXBwb3J0Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTg2YjJkZWRhNTc5MmEyNDRmZmRhNWUwMDc0MTJiYjVlNDNhNjczZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDEyOjA0OjUzIDIwMTEgKzAwMDAKLQotICAgIENvZGUgZml4ZXMgZm9yIERyYWdvbkZseSBzdXBwb3J0Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTlmOTcwNjk5YWEwNjYzOTM3ODg2MWI2ZDZhNWUyN2Y0YzNmYzk2NwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDExOjMzOjE0IDIwMTEgKzAwMDAKLQotICAgIEZpeCB0eXBvCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzZlNWQ2ZGI5YjliY2YzMWFkNzU0ZDIwN2FiOGE1ODliMTI1OWU0MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDEzIDExOjMzOjE0IDIwMTEgKzAwMDAKLQotICAgIEZpeCB0eXBvCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYWJhZjAyNTQxMTFhYWMwODUzZDNlYzQzNDdiMGZmYzg0M2RhZWMyMgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxMiAxOToyMDoyMyAyMDExICswMDAwCi0KLSAgICBHZXQgcmlkIG9mIGEgY29tcGlsZXIgd2FybmluZyBpbiBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFBhcmFtZXRlcnMvdXNtREhQYXJhbWV0ZXJzLmMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmU4MDRjN2JlODQ3NjkyY2I4MDhjMTllZmMwNjAzYmI1NjYwZmQ1YgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxMiAxOToyMDoyMyAyMDExICswMDAwCi0KLSAgICBHZXQgcmlkIG9mIGEgY29tcGlsZXIgd2FybmluZyBpbiBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFBhcmFtZXRlcnMvdXNtREhQYXJhbWV0ZXJzLmMuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGRjNmFhNjg2ZGM3ZjZiYjM2YzA1NDUzMmVmMjY2MmIyNjJjZTVjNQotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiAxMiAxOTowNDozOSAyMDExICswMDAwCi0KLSAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgKGZvcm1hdCBzcGVjaWZpY2F0aW9uIG1pc21hdGNoKSB0aGF0IHdhcyBpbnRyb2R1Y2VkCi0gICAgaW4gcjE5ODA4ICgic25tcGQ6IFBBVENIRVM6IDI5NzUyNTQ6IEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMiKS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmMmQ3MzQ1NGJhMDczNDdiNDFjZmVkNzc1MWVjNmY5MjFiZGJkODAxCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDEyIDE5OjA0OjM5IDIwMTEgKzAwMDAKLQotICAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyAoZm9ybWF0IHNwZWNpZmljYXRpb24gbWlzbWF0Y2gpIHRoYXQgd2FzIGludHJvZHVjZWQKLSAgICBpbiByMTk4MDggKCJzbm1wZDogUEFUQ0hFUzogMjk3NTI1NDogQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucyIpLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTg1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQ2NmY4OGZmNGYwYTY2OWY1YzVkZTcwMjdlMWViMGM3Y2Q5YWFmYmMKLUF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTIgMTk6MDQ6MzkgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIChmb3JtYXQgc3BlY2lmaWNhdGlvbiBtaXNtYXRjaCkgdGhhdCB3YXMgaW50cm9kdWNlZAotICAgIGluIHIxOTgwOCAoInNubXBkOiBQQVRDSEVTOiAyOTc1MjU0OiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zIikuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOGY1OGRhZTJhMWIzZTc0NWVlMWU4Yjk0NGY3ZWE3ZTVhZTFjNGNmMAotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTIgMTU6MDM6MTEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcDogcGF0Y2g6IDMwOTY3MjU6IHN5c09SVGFibGUgcmVnaXN0YXRpb24gZm9yIG5vdGlmaWNhdGlvbiBsb2cgbWliCi0gICAgCi0gICAgICBvcmlnaW5hbCBwYXRjaCBmaXhlZCBzZXZlcmFsIGlzc3Vlcywgb3RoZXIgcGFydHMgYXBwbGllZCBlYXJsaWVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODkwNWM5OGRiNmRlODgwYjNiYzk5MmVkZDk0ZWY3MGZhNGQ1MTc3MwotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTIgMTU6MDM6MTEgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcDogcGF0Y2g6IDMwOTY3MjU6IHN5c09SVGFibGUgcmVnaXN0YXRpb24gZm9yIG5vdGlmaWNhdGlvbiBsb2cgbWliCi0gICAgCi0gICAgICBvcmlnaW5hbCBwYXRjaCBmaXhlZCBzZXZlcmFsIGlzc3Vlcywgb3RoZXIgcGFydHMgYXBwbGllZCBlYXJsaWVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTU5NTMwZWE1ZmUzYWQ2MjNkYjgyMWM4Yjc5M2NkMDQ2NWRhYjBiMgotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTIgMTQ6Mzc6MDkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogYWdlbnQ6IE1JQi1zcGVjaWZpYyBsZWFrLWF0LWV4aXQgZml4ZXMuCi0gICAgCi0gICAgICBiYWNrcG9ydCBhcHBsaWNhYmxlIHBhcnRzIG9mIHIxOTUzMyBmcm9tIHRydW5rCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTU2Yzg0OTUzMGU1OWMwNDUxZDk2NDMyNDdlNDM0OGUyYWIwOTU4NAotQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gMTIgMTQ6Mzc6MDkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogYWdlbnQ6IE1JQi1zcGVjaWZpYyBsZWFrLWF0LWV4aXQgZml4ZXMuCi0gICAgCi0gICAgICBiYWNrcG9ydCBhcHBsaWNhYmxlIHBhcnRzIG9mIHIxOTUzMyBmcm9tIHRydW5rCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMTY1YzhiYWRkYTY5NzA2N2RmOGZhYWMwZGIxMjQ1NWI4MTJjYzVhOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE2OjA0OjE2IDIwMTEgKzAwMDAKLQotICAgIFJlY29nbmlzZSBBZ2VudCBPSUQgZm9yIERyYWdvbkZseSBzeXN0ZW1zIChhbmQgZ2VuZXJhbCB0aWR5aW5nIHVwKQotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIFFuOiBTaG91bGQgdGhlc2UgYmUgdXBkYXRlZCB0byByZWZlciB0byBOZXQtU05NUCAocmF0aGVyIHRoYW4gVUNEKT8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5YjZkMjc2YTJjYmMzZjE4NjRhZTk2YWUxYmQ3YWE0MzA2NDJjODY1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTY6MDQ6MTYgMjAxMSArMDAwMAotCi0gICAgUmVjb2duaXNlIEFnZW50IE9JRCBmb3IgRHJhZ29uRmx5IHN5c3RlbXMgKGFuZCBnZW5lcmFsIHRpZHlpbmcgdXApCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgUW46IFNob3VsZCB0aGVzZSBiZSB1cGRhdGVkIHRvIHJlZmVyIHRvIE5ldC1TTk1QIChyYXRoZXIgdGhhbiBVQ0QpPwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGIyZmFlYjBlY2Q2YzMwYTAzZjlkZTJkYWYzNzMyNTkxMGQyZmQwMGYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNjowMToyMiAyMDExICswMDAwCi0KLSAgICBEZWZpbmUgQWdlbnQgT0lEIGZvciBEcmFnb25GbHkgc3lzdGVtcwotICAgIChhbmQgZ2VuZXJhbCB0aWR5aW5nIHVwKQotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTg1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGRkMDFkZWJhN2ZlZDU4NTQ5ZjM0NzgwOTFhNzk0MTEyMDc1ZjkyOWYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNjowMToyMiAyMDExICswMDAwCi0KLSAgICBEZWZpbmUgQWdlbnQgT0lEIGZvciBEcmFnb25GbHkgc3lzdGVtcwotICAgIChhbmQgZ2VuZXJhbCB0aWR5aW5nIHVwKQotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE2ZTUzOTA4YmU0OGU4YjBmZWE1YWEzOTYxZGVkM2Q3MTg0ZGM0NjEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNjowMToyMiAyMDExICswMDAwCi0KLSAgICBEZWZpbmUgQWdlbnQgT0lEIGZvciBEcmFnb25GbHkgc3lzdGVtcwotICAgIChhbmQgZ2VuZXJhbCB0aWR5aW5nIHVwKQotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDFjYjFjMjBlY2FhMjU0ZDEyNDYxYTZhMmMwMzVmNTVhOTAzNGJjOTgKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNToyNzo1MCAyMDExICswMDAwCi0KLSAgICBOZXRCU0QgRHJhZ29uRmx5IHN1cHBvcnQgZm9yIFVEUCAmIFRDUCB0YWJsZXMKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyNTM0OWNmODM5Y2ZjZjFjYzdlODNlY2RiZWNhNTc2MWNiOTFlYTdhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTU6Mjc6NTAgMjAxMSArMDAwMAotCi0gICAgTmV0QlNEIERyYWdvbkZseSBzdXBwb3J0IGZvciBVRFAgJiBUQ1AgdGFibGVzCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODUwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYThiZTgwNDEyZmI0N2VkZTVhMjViNWE2YWM2MDZmMzIzM2JmYTg5YwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE0OjQxOjI2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE5ldEJTRDogRHJhZ29uRmx5IHN1cHBvcnQKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiNDQzY2JkODVhNjVlMzU1ZmYwMTAxZmU2ODE0MmQ0OWI4Y2M0ZTU3Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTQ6NDE6MjYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogTmV0QlNEOiBEcmFnb25GbHkgc3VwcG9ydAotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDA5MzJiMDQ5MTBlYzY3MDExMmUyMTZlNjQ3ODljYTJmNGI1YjA3NjEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNDozNjoyNSAyMDExICswMDAwCi0KLSAgICBOZXRCU0QvRHJhZ29uRmx5ICdzdHJ1Y3QgaWZuZXQnIHJlcXVpcmVzIEtFUk5FTCwgYnV0IG5vdCBfS0VSTkVMCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgICAgIChJIGhvcGUgSSd2ZSBnb3QgdGhpcyBvbmUgcmlnaHQhKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGE1MmY4YzNmODU2MzE4OWJkMGQxZGZlNDlkMGM4MDllZjA4ZDdkZTIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNDozNjoyNSAyMDExICswMDAwCi0KLSAgICBOZXRCU0QvRHJhZ29uRmx5ICdzdHJ1Y3QgaWZuZXQnIHJlcXVpcmVzIEtFUk5FTCwgYnV0IG5vdCBfS0VSTkVMCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgICAgIChJIGhvcGUgSSd2ZSBnb3QgdGhpcyBvbmUgcmlnaHQhKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTg0OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM3NTg4ZTg3MWJmYTkxNDI2OTg0MDIxNjkwYWZkYTc2YjIzMWY1ZmIKLUF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDE0OjE0OjA3IDIwMTEgKzAwMDAKLQotICAgIHJldmVydCBQQVRDSCAzMDUzNDM2OiB0Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MgaW52YWxpZCBtZW1vcnkgYWNjZXNzCi0gICAgCi0gICAgICB0aGUgYnVnIHRoaXMgaXMgZml4aW5nIHdhcyBpbnRyb2R1Y2VkIGluIHIxNzcxOSwgYW5kIGZpeGVkIGluIHIxNzg2MS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjYTI3MGI5NTQ5NWQ2MzdiY2E5ZDIxNjU4YzAyOTVkNWUwY2JlM2I2Ci1BdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxNDoxNDowNyAyMDExICswMDAwCi0KLSAgICByZXZlcnQgUEFUQ0ggMzA1MzQzNjogdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzIGludmFsaWQgbWVtb3J5IGFjY2VzcwotICAgIAotICAgICAgdGhlIGJ1ZyB0aGlzIGlzIGZpeGluZyB3YXMgaW50cm9kdWNlZCBpbiByMTc3MTksIGFuZCBmaXhlZCBpbiByMTc4NjEuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODQ3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYWU5OTcwNGY1Y2Q5Yjg1ZTkzZmU0YThkZGYxOGYxNzAwZjczMDYyZgotQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTM6MzQ6MjIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogZnJvbSBCaWxsIEZlbm5lcjogZml4IHNlbmRpbmcgb2YgVURQIHJlc3BvbnNlcyBmcm9tIG11bHRpaG9tZWQgYWdlbnRzLgotICAgIAotICAgIFRyeSB0byBzZW5kIHRoZSByZXNwb25zZSBhcyBpdCB3YXMgYmVmb3JlIE5ldC1TTk1QIDUuNiAoYXNzdW1pbmcgdGhlIGFwcHJvcHJpYXRlIHJlcXVlc3Qgd2FzIHVuaWNhc3QpIGFuZCBvbmx5IGlmIGl0IGZhaWxzIHRyeSB0byBzZXQgaWZfaW5kZXggKHRoZSByZXF1ZXN0IG11c3QgYmUgYnJvYWRjYXN0KS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjM2ZlMmY3MjAwZmIwMGJlMWYzYzIzMjA1MTkzOGVhODc4NDdjMjU4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTM6MjI6MTAgMjAxMSArMDAwMAotCi0gICAgUmVhbGx5IGhhbmRsZSBzeXN0ZW1zIHdpdGggJ3N0cnVjdCB0aW1lc3BlYyBpZm5ldC5pZl9sYXN0Y2hhbmdlJwotICAgIChtaXNzaW5nIGVsZW1lbnQgZnJvbSBTVk4gcmV2aXNpb24gMTk4NDEpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjQ4M2M5Yjk5ZGUwMzRlOThhOTE0ODlmMmM2NWNmYWQ5YWM4ODM2ZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEzOjIyOjEwIDIwMTEgKzAwMDAKLQotICAgIFJlYWxseSBoYW5kbGUgc3lzdGVtcyB3aXRoICdzdHJ1Y3QgdGltZXNwZWMgaWZuZXQuaWZfbGFzdGNoYW5nZScKLSAgICAobWlzc2luZyBlbGVtZW50IGZyb20gU1ZOIHJldmlzaW9uIDE5ODQxKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDViMTBiNGIwYzg0NDRiMDQzMmUxZmNiNWIzMzVkODg1YjAxZjQ4NzMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMjoyNDoxMiAyMDExICswMDAwCi0KLSAgICBBZGRpdGlvbmFsIGhlYWRlcnMgd2hlbiB0ZXN0aW5nIGZvciBJUHY2IGhlYWRlcnMKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0YWViYmZmNzA3YmYwY2Q0YjUxNzI0NzQxNDNhYTFiMzAyYzMxYmVmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTI6MjQ6MTIgMjAxMSArMDAwMAotCi0gICAgQWRkaXRpb25hbCBoZWFkZXJzIHdoZW4gdGVzdGluZyBmb3IgSVB2NiBoZWFkZXJzCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzQwZWQ2ZWUzOTg0MGYzNzI5ZjkzZWU3ZjNjNzkyZGRlOTIyNTcwZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEyOjI0OjEyIDIwMTEgKzAwMDAKLQotICAgIEFkZGl0aW9uYWwgaGVhZGVycyB3aGVuIHRlc3RpbmcgZm9yIElQdjYgaGVhZGVycwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDNmNDNmY2VkZmFiMDEzYWRiNjJiYmRjOTE5YzUxOWQwMjNkZjljZjIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMjoxNDoyNSAyMDExICswMDAwCi0KLSAgICBNaXNzaW5nIHR5cGUgdW5kZXIgZGFyd2luCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgOTZkMTMxZjlhNjZjMzM0YTU3Y2E1MDRhMDI2OTUyM2JkMDE2YTk2MAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEyOjE0OjI1IDIwMTEgKzAwMDAKLQotICAgIE1pc3NpbmcgdHlwZSB1bmRlciBkYXJ3aW4KLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmMDg5MDUyZDY5MDM2ZTMyODdhNWY0NTI1YjM4ODU1YTBjMWE2NjMxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTI6MTA6NTYgMjAxMSArMDAwMAotCi0gICAgTmV0QlNEIHN1cHBvcnQgZm9yIERpc2sgSS9PIHN0YXRzCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzU1N2VmNzBmMGNhODYxN2Q3ODdiNGJmYzFiZjdhZDkxYmUwMjAyZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEyOjAxOjI3IDIwMTEgKzAwMDAKLQotICAgIEhhbmRsZSBzeXN0ZW1zIHdpdGggJ3N0cnVjdCB0aW1lc3BlYyBpZm5ldC5pZl9sYXN0Y2hhbmdlJyAocmF0aGVyIHRoYW4gc3RydWN0IHRpbWV2YWwpCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzllOGIzZjk1OGE5NzdkNWU5Y2ViOTk0ODE1NDQ2NjUyYzA4OWZkYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDEyOjAxOjI3IDIwMTEgKzAwMDAKLQotICAgIEhhbmRsZSBzeXN0ZW1zIHdpdGggJ3N0cnVjdCB0aW1lc3BlYyBpZm5ldC5pZl9sYXN0Y2hhbmdlJyAocmF0aGVyIHRoYW4gc3RydWN0IHRpbWV2YWwpCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNWFhM2EzMzYyMWRmODliZjFmNTU2N2UxY2Q5YTY2NzdhZTlmMjBkYgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDExIDExOjI3OjA2IDIwMTEgKzAwMDAKLQotICAgIFB1bGwgaW4ga2VybmVsX25ldGJzZCBtb2R1bGUgd2hlbiByZXF1aXJlZAotICAgIFtCYXNlZCBvbiBmaXggZnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiMzI5ZGM5ZmZjNmE3ZDE0Y2NiMDI3N2Y3NjNjZmRhNzUwYTU3ZWNhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gMTEgMTE6Mjc6MDYgMjAxMSArMDAwMAotCi0gICAgUHVsbCBpbiBrZXJuZWxfbmV0YnNkIG1vZHVsZSB3aGVuIHJlcXVpcmVkCi0gICAgW0Jhc2VkIG9uIGZpeCBmcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTg0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDdiNTdiZGI1MTU0NzE2MTIzOTZjNWY3MTFiOWZlMDRhNjlkYTBkNTAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMDozNjowOCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBOZXRCU0Q6IFJldHJpZXZlIE1JQi1JSSBuZXR3b3JrIHN0YXRpc3RpY3MgdmlhIHN5c2N0bAotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgzOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDgzYjFjYWI4YjhkY2JjYWViMWE2OGQwM2NiMGUwYzRjMTk2OTY1NjAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiAxMSAxMDozNjowOCAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBOZXRCU0Q6IFJldHJpZXZlIE1JQi1JSSBuZXR3b3JrIHN0YXRpc3RpY3MgdmlhIHN5c2N0bAotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgzOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQ1MjEyMWQ3Yzk1YTZlZjJhZmU4NmMyYmJjNDM1ZjRlNDljN2YyOGIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNjo1NjoxMSAyMDExICswMDAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgZGFyd2luCi0gICAgKFRoZSBwYXRjaCBmcm9tIHRoZSBOZXRCU0QgYXJjaGl2ZSBhcHBlYXJzIHRvIGJlIGVzc2VudGlhbGx5IHRoZQotICAgIHNhbWUgYXMgdGhlIGVxdWl2YWxlbnQgY29kZSBmcm9tIHRoZSBPcGVuQlNEIHBhdGNoIGFyY2hpdmUpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZWEwNWYzOWQyNzFlMzZlNGExZDFmMDE4ZTY1ZmQxODkyMDIxOWY4YwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE2OjU2OjExIDIwMTEgKzAwMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBkYXJ3aW4KLSAgICAoVGhlIHBhdGNoIGZyb20gdGhlIE5ldEJTRCBhcmNoaXZlIGFwcGVhcnMgdG8gYmUgZXNzZW50aWFsbHkgdGhlCi0gICAgc2FtZSBhcyB0aGUgZXF1aXZhbGVudCBjb2RlIGZyb20gdGhlIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZSkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAyZDk2YmU3MGViN2NiNDZlMjg5OGM5NTdlZDg3Njc2NzA2YTZkNmRmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTY6NTY6MTEgMjAxMSArMDAwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgotICAgIChUaGUgcGF0Y2ggZnJvbSB0aGUgTmV0QlNEIGFyY2hpdmUgYXBwZWFycyB0byBiZSBlc3NlbnRpYWxseSB0aGUKLSAgICBzYW1lIGFzIHRoZSBlcXVpdmFsZW50IGNvZGUgZnJvbSB0aGUgT3BlbkJTRCBwYXRjaCBhcmNoaXZlKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDMwZjY4MzZkMDQ0YzMzYTU1OTViNjJkMTZmZmM1OTZmMGFjMmM5MGEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNjo1NDowMiAyMDExICswMDAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgZGFyd2luCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWE2YWQxOTcwNTA2OWZjOGNiNGY3MGMzMGM5NjJhZjM4ZDU0MWQyNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE2OjU0OjAyIDIwMTEgKzAwMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBkYXJ3aW4KLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3NGQzMGI2MzE0NjdhYzE3NzhlYzcxMjMxYzU1YTNjYzg1OGE1YzZhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTY6NTQ6MDIgMjAxMSArMDAwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGRhcndpbgotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI0ZmQwMWFhMDc0ZTRiNzQ5YTk2ZjljYTQzOTI4OWYzODRjYjgwYzMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgTW9uIEphbiAxMCAxNDo1NTo1NyAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBOZXRCU0Q6IFVwZGF0ZSBtZW1vcnkgYW5kIENQVSBzdGF0aXN0aWNzIGhhbmRsaW5nCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2U4NTRkMTk2MzU4MjFhZWExYThjZjVmOTA5NWUxNDA2OGYzZmI5YgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE0OjU1OjU3IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE5ldEJTRDogVXBkYXRlIG1lbW9yeSBhbmQgQ1BVIHN0YXRpc3RpY3MgaGFuZGxpbmcKLSAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5OGMzOWI2ODc2ZGQ1MzBjOWFjZTc2YTg2ZTkxNzIzNjMxZmVhNjllCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIE1vbiBKYW4gMTAgMTQ6MjI6NDQgMjAxMSArMDAwMAotCi0gICAgRml4IGRpdmlkZS1ieS16ZXJvIGVycm9yIGluIENQVSBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzCi0gICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjYxZGRjNGZjNmRjYjMzMWM2OTIxYzgyNWI5M2I2MGM4YjI1N2ZiNAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBNb24gSmFuIDEwIDE0OjIyOjQ0IDIwMTEgKzAwMDAKLQotICAgIEZpeCBkaXZpZGUtYnktemVybyBlcnJvciBpbiBDUFUgcGVyZm9ybWFuY2Ugc3RhdGlzdGljcwotICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhhNDljYWRiNWUyYThlNGYxYTNmMjBiZjcyYjlkYjRhMDRmYTMwYzkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiA5IDIyOjU0OjUwIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE9wZW5CU0Q6IFVwZGF0ZSBTV1J1biBjb2RlIHRvIHVzZSBrdm1fZ2V0cHJvYzIKLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjcxNjE5MzJhM2NjYzI4ZmMyNjQyN2M3NjQwOGI4NmYzYjcwODAwMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDkgMjE6MzA6MzggMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogYnVpbGQ6IE9wZW5CU0Q6IEZpeCBvcmRlciBvZiBoZWFkZXJzIHdoZW4gY2hlY2tpbmcgPG5ldGluZXQvaW5fcGNiLmg+Ci0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhkMjlkNDBkZTRiYTVmMjU3ZjZiZjQ2ZTJiMzliMTFiMjc4MWM4ODQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiA5IDE5OjQ0OjU3IDIwMTEgKzAwMDAKLQotICAgIEFtZW5kIGhvdyBtdWx0aS1DUFUgc3RhdGlzdGljcyBhcmUgcmV0cmVpdmVkIHVzaW5nIHN5c2N0bCBvbiBPcGVuQlNEIHN5c3RlbXMKLSAgICAoaWYgdGhpcyBibG9jayB3YXMgYWN0aXZlLCB3aGljaCBpdCBpc24ndCwgYnV0IHRoYXQncyBub3QgaW1wb3J0YW50IHJpZ2h0IG5vdCkKLSAgICBbQmFzZWQgb24gT3BlbkJTRCBwYXRjaCBhcmNoaXZlLCBhbWVuZGVkIChwcm9iYWJseSB3cm9uZ2x5KSBieSBEVFNdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNGFmZWM3Zjg4YWI4NDBjNmI4YmMwYjk2YzZhYTc3N2NjMzNjYmIzYwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDkgMTk6NDQ6NTcgMjAxMSArMDAwMAotCi0gICAgQW1lbmQgaG93IG11bHRpLUNQVSBzdGF0aXN0aWNzIGFyZSByZXRyZWl2ZWQgdXNpbmcgc3lzY3RsIG9uIE9wZW5CU0Qgc3lzdGVtcwotICAgIChpZiB0aGlzIGJsb2NrIHdhcyBhY3RpdmUsIHdoaWNoIGl0IGlzbid0LCBidXQgdGhhdCdzIG5vdCBpbXBvcnRhbnQgcmlnaHQgbm90KQotICAgIFtCYXNlZCBvbiBPcGVuQlNEIHBhdGNoIGFyY2hpdmUsIGFtZW5kZWQgKHByb2JhYmx5IHdyb25nbHkpIGJ5IERUU10KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlMzc3ZTg5MzA1MTk0ZTE5ZmZjMzlkNmQ4OGQ4NGQyMzZmYWNhNTU5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gOSAxODoxMzo1MCAyMDExICswMDAwCi0KLSAgICBzeXNjdGwgdGFrZXMgYSAnc2l6ZV90JyB2YXJpYWJsZSBmb3IgdGhlIHNpemUgcGFyYW1ldGVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNzdhZjg5OWFlZGViODU0MTEyM2ZmODg5YzJmOWY0NTI2NWQ4ZGJhZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDkgMTg6MTM6NTAgMjAxMSArMDAwMAotCi0gICAgc3lzY3RsIHRha2VzIGEgJ3NpemVfdCcgdmFyaWFibGUgZm9yIHRoZSBzaXplIHBhcmFtZXRlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQyMDkwNmNiNjg1ZGEyOWRjZWE3MWI4OTNkMjcyMTE0MjE4NmJkNmYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU3VuIEphbiA5IDE4OjEzOjUwIDIwMTEgKzAwMDAKLQotICAgIHN5c2N0bCB0YWtlcyBhICdzaXplX3QnIHZhcmlhYmxlIGZvciB0aGUgc2l6ZSBwYXJhbWV0ZXIKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5MGMxNDBjZTg5M2U4YTZjMmZkOTdjZDMzOTY1NGEzNmMzNmU2ODJhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFN1biBKYW4gOSAxODoxMTowMSAyMDExICswMDAwCi0KLSAgICBzeXNjdGwgdGFrZXMgYSAnc2l6ZV90JyB2YXJpYWJsZSBmb3IgdGhlIHNpemUgcGFyYW1ldGVyCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMjk0YTJkYTk1Njc5ZDY2ODIyZmYzOWQ0Njk2Y2U2ZjQwMzVkZmRlMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTdW4gSmFuIDkgMTg6MTE6MDEgMjAxMSArMDAwMAotCi0gICAgc3lzY3RsIHRha2VzIGEgJ3NpemVfdCcgdmFyaWFibGUgZm9yIHRoZSBzaXplIHBhcmFtZXRlcgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBlNTljMTRjNWNmMmY4N2Y1M2FmYjk4YjM3MDViZWRlMTQ4MjM2MTgKLUF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBTYXQgSmFuIDggMDA6NDc6MjIgMjAxMSArMDAwMAotCi0gICAgVXBkYXRlIGFjY29uZmlnLmggd2l0aCBjaGFuZ2VzIGZyb20gcjE5ODE5LgotICAgIFJlcnVuIGF1dG9oZWFkZXIuCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzliOWEwYWJjYmJhMGNhZmVhNWE2MzI0ZTFjNTc2ZTY1ODhhMWNkNQotQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFNhdCBKYW4gOCAwMDo0NzoyMiAyMDExICswMDAwCi0KLSAgICBVcGRhdGUgYWNjb25maWcuaCB3aXRoIGNoYW5nZXMgZnJvbSByMTk4MTkuCi0gICAgUmVydW4gYXV0b2hlYWRlci4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjNjRhMDYyOWQzZDMyNjNkODZhYzUxZWExOTg2NzJkZDMwN2RkNGY1Ci1BdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgU2F0IEphbiA4IDAwOjQ3OjIyIDIwMTEgKzAwMDAKLQotICAgIFVwZGF0ZSBhY2NvbmZpZy5oIHdpdGggY2hhbmdlcyBmcm9tIHIxOTgxOS4KLSAgICBSZXJ1biBhdXRvaGVhZGVyLgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDBjODk3MGVjMjNjMTA2NGE4MWNmYzVjMzYyZTNiMzQ4YWZiMDIwNzAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjU2OjI2IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IE9wZW5CU0Q6IFN1cHBvcnQgdXBkYXRpbmcgdGhlIHJvdXRpbmcgdGFibGUKLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODM0Y2MxMjhhZjdmZDU0MjJhOWVkYTczYWE0ODk4Nzc3NGYyNDM1ZAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6NTY6MjYgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogT3BlbkJTRDogU3VwcG9ydCB1cGRhdGluZyB0aGUgcm91dGluZyB0YWJsZQotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxMTQzNzU0YTRjMTg1M2NiYzgyZTljMDI2YmUyZDJjOGZhZWJiZDg4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDo1NjoyNiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBPcGVuQlNEOiBTdXBwb3J0IHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlCi0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGIyZDhmMTAyNjY2ZTIyNmZmMTg2ZDFhNTNlMGY1OThiYjRhM2M4NGMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjI5OjM5IDIwMTEgKzAwMDAKLQotICAgIFNldCAnbmV4dCcgZmllbGQgZm9yIHVkcCBlbnRyeSBsaW5rZWQgbGlzdCBvbiBPcGVuQlNENAotICAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBzZXQgaW4gPG5ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmg+Ci0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODI1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWI1YzljMDAzMGY3YTgzMDlmZTg4NjA0NGFkZDE2YTI0NDYyOGI0ZQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMjA6Mjk6MzkgMjAxMSArMDAwMAotCi0gICAgU2V0ICduZXh0JyBmaWVsZCBmb3IgdWRwIGVudHJ5IGxpbmtlZCBsaXN0IG9uIE9wZW5CU0Q0Ci0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIHNldCBpbiA8bmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaD4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAxZTJjNjY0MTcyMGUwYmQ0OTYwMzRhNGYyNTQzYTk4NGFlNWE1MDQxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAyMDoyOTozOSAyMDExICswMDAwCi0KLSAgICBTZXQgJ25leHQnIGZpZWxkIGZvciB1ZHAgZW50cnkgbGlua2VkIGxpc3Qgb24gT3BlbkJTRDQKLSAgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgc2V0IGluIDxuZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oPgotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVlY2I2OWYyNmE0NGZkN2U3YzhmM2VmOTY4MjU0NmQ2MzgwZGI1MTkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjEyOjI1IDIwMTEgKzAwMDAKLQotICAgIFVzZSBhIHN1aXRhYmxlIGNvbnN0YW50IGZvciBDV0QgYnVmZmVyIHNpemUKLSAgICBbQmFzZWQgb24gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGVjZTAzMzM1NWY3ZDY5YTlkZWY0YjhkMjMwN2JkNWRiMzMwOGEyOGUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjEyOjI1IDIwMTEgKzAwMDAKLQotICAgIFVzZSBhIHN1aXRhYmxlIGNvbnN0YW50IGZvciBDV0QgYnVmZmVyIHNpemUKLSAgICBbQmFzZWQgb24gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDE0MzMzNjBjMGMzYWIwM2RkZmQxNDk2MTc5NmIxZmQ5Y2QwY2UxYjkKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjEyOjI1IDIwMTEgKzAwMDAKLQotICAgIFVzZSBhIHN1aXRhYmxlIGNvbnN0YW50IGZvciBDV0QgYnVmZmVyIHNpemUKLSAgICBbQmFzZWQgb24gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGQ4MjllZDY1MjU1Y2RjNjIwYmMyNjM4ZTY4YWIyZjdlZmU1OTM3MDUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjA3OjE3IDIwMTEgKzAwMDAKLQotICAgIE1vdmUgZ2xvYmFsIHZhcmlhYmxlIGludG8gdGhlIG1ldGhvZCB3aGVyZSBpdCdzIHVzZWQuCi0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhhMjM4YjU5ODM1ODljYmE0NzRkODc1NTcxZGRlMmE1MWE4ZjgyNzMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjA3OjE3IDIwMTEgKzAwMDAKLQotICAgIE1vdmUgZ2xvYmFsIHZhcmlhYmxlIGludG8gdGhlIG1ldGhvZCB3aGVyZSBpdCdzIHVzZWQuCi0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDk4M2U1ZjJiN2VhOGQxYjgyNjNjNzBlMmQ0YmZiYTJiNTZiOWE1YzAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDIwOjA3OjE3IDIwMTEgKzAwMDAKLQotICAgIE1vdmUgZ2xvYmFsIHZhcmlhYmxlIGludG8gdGhlIG1ldGhvZCB3aGVyZSBpdCdzIHVzZWQuCi0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDI1NDZlYzJkNDc0Y2RlNTRlODUzZjQwZWY2ODliZjQ2YzUyZTQ3ZDQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDE2OjQ4OjU2IDIwMTEgKzAwMDAKLQotICAgIEhhbmRsZSBzeXN0ZW1zIHdpdGhvdXQgSUZNX1RPS0VOCi0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDc5MTMyMzYxNzZhMDAxMjQ2YjBhN2JkNDI0OTA1MjEwMmNlZTcwZGIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDE2OjQ4OjU2IDIwMTEgKzAwMDAKLQotICAgIEhhbmRsZSBzeXN0ZW1zIHdpdGhvdXQgSUZNX1RPS0VOCi0gICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDhlNGJmNGI1M2ExM2RjOTdkZjE4ZGRkODE4ZDAyYTQzYTgwYmNmYTYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDE0OjM4OjM3IDIwMTEgKzAwMDAKLQotICAgIFVwZGF0ZSByZXRyaWV2YWwgb2YgY2FjaGUgdXNhZ2Ugc3RhdGlzdGljcyBvbiBGcmVlQlNECi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDM4MjgxNzc3MTE1ZjI3ZTA1MGE2NjMzZDNkZDU4MWE5MGFlN2M2ZTMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDE0OjM4OjM3IDIwMTEgKzAwMDAKLQotICAgIFVwZGF0ZSByZXRyaWV2YWwgb2YgY2FjaGUgdXNhZ2Ugc3RhdGlzdGljcyBvbiBGcmVlQlNECi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDJkYmRjNWNiNjc2MTUwMWE2YjllMTJlYzkyZDc3ODQ5YzU0NzBkNzAKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDE0OjIwOjMwIDIwMTEgKzAwMDAKLQotICAgIEluY3JlYXNlIG1heGltdW0gc2l6ZSBvZiBleGVjdXRlIG91dHB1dCBjYWNoZQotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA1NDlhNzdmNzIyMDBkNDQ3MDczNTlhOGU0OWZmOGM1YmQ1M2EzZjMwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxNDoyMDozMCAyMDExICswMDAwCi0KLSAgICBJbmNyZWFzZSBtYXhpbXVtIHNpemUgb2YgZXhlY3V0ZSBvdXRwdXQgY2FjaGUKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYjU0MGQzYzk5NzEwNDU4OTBiZGRkM2RlNTBmNDBmMTQ2OGYxYjAzYwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTQ6MjA6MzAgMjAxMSArMDAwMAotCi0gICAgSW5jcmVhc2UgbWF4aW11bSBzaXplIG9mIGV4ZWN1dGUgb3V0cHV0IGNhY2hlCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGNjNDU5ZjY5ZmJhNjhiNjMzMmI5YWQyN2I0YmM4MWEzZGYxM2JjMWEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDE0OjA5OjE1IDIwMTEgKzAwMDAKLQotICAgIFJlbW92ZSBkdXBsaWNhdGUgaW5jbHVkZSBkaXJlY3RpdmVzCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgN2Y3MTUxNjMyZGVhNWFkODk0NTMwZWU1ODQ3NjU2NDI0MWQ5NTgwNwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTQ6MDk6MTUgMjAxMSArMDAwMAotCi0gICAgUmVtb3ZlIGR1cGxpY2F0ZSBpbmNsdWRlIGRpcmVjdGl2ZXMKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmOGQ2YjQ2YzJjMzJhNzIyMTcxNmVmNTMzYmZhYWVkODk1OTAzODRlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzo0NzoyMyAyMDExICswMDAwCi0KLSAgICBIYW5kbGUgc3lzdGVtcyB3aGVyZSBSVEZfTExJTkZPIGlzIG5vdCBkZWZpbmVkCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGJhODFiMWRmYjQ4OGU1NjAyYWYxMzFhOTIzOWE5YWI4ZDNkMzVlMWUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjQ3OjIzIDIwMTEgKzAwMDAKLQotICAgIEhhbmRsZSBzeXN0ZW1zIHdoZXJlIFJURl9MTElORk8gaXMgbm90IGRlZmluZWQKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmZmNDZmZTY5N2Q5YzNhZjkxMDY1MTVjNDFiN2U2YTk4MTI2YWEwOQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6NDc6MjMgMjAxMSArMDAwMAotCi0gICAgSGFuZGxlIHN5c3RlbXMgd2hlcmUgUlRGX0xMSU5GTyBpcyBub3QgZGVmaW5lZAotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmMDIzMTJhYWViZmY1NWYwNDA0NzZhMWM3MTAzZTk5MWExMWM2YWEyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzo0MDo0MCAyMDExICswMDAwCi0KLSAgICBJbmNsdWRlIHpmcyBtb3VudCBwb2ludHMgZm9yIGRpc2sgcmVwb3J0cyB1bmRlciBGcmVlQlNECi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDgzYmY0NDRmMDc2ZWQyYjkyMTIyMzk1OTU4NmE0ZWUzODM1OTU2MjMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjQwOjQwIDIwMTEgKzAwMDAKLQotICAgIEluY2x1ZGUgemZzIG1vdW50IHBvaW50cyBmb3IgZGlzayByZXBvcnRzIHVuZGVyIEZyZWVCU0QKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYmQ2Y2RjYTI2Zjk0Njk2MTEzMDMzNTZiYmRhZWRkODIzN2QzZDFiYQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6NDA6NDAgMjAxMSArMDAwMAotCi0gICAgSW5jbHVkZSB6ZnMgbW91bnQgcG9pbnRzIGZvciBkaXNrIHJlcG9ydHMgdW5kZXIgRnJlZUJTRAotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlMmQ3NzFiNzI3ZTYwYWYxMDQ1YWYyODcxYThmNGE5ZTAxMDdjY2I1Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzozNDo1MyAyMDExICswMDAwCi0KLSAgICBQcm90ZWN0IGFnYWluc3QgbXVsdGlwbGUtaW5jbHVzaW9uCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgNjVjMGYzOWJlY2E0YjIzMjExY2QyMTdhZGU3Y2ExOTZkNGVlOWVmYwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6MzQ6NTMgMjAxMSArMDAwMAotCi0gICAgUHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlLWluY2x1c2lvbgotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDkwYWZjZGFhZDkwODQ0MGFkOGEwMGRiZjdiNzExMzJlM2U2MzFlOGUKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjM0OjUzIDIwMTEgKzAwMDAKLQotICAgIFByb3RlY3QgYWdhaW5zdCBtdWx0aXBsZS1pbmNsdXNpb24KLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzNDlmYWNkNWFjNTU1NmI5ZjllYjZiMmZiYmE5YzBlZDhmZGExNmUyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzoyNDozMSAyMDExICswMDAwCi0KLSAgICBJbmNsdWRlIDx1bmlzdGQuaD4KLSAgICBbRnJvbSBCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU0NTEwNjdkZmZhMDFmOTkxZWIyZjkxYmJkNWVkNWI2NTU5ODlhMWMKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEzOjI0OjMxIDIwMTEgKzAwMDAKLQotICAgIEluY2x1ZGUgPHVuaXN0ZC5oPgotICAgIFtGcm9tIEJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYThmNDkyYTlmYmViNGYxMzM1N2U3YTc1OTEwN2RmZmNjNWU5YzQ5MQotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTM6MjQ6MzEgMjAxMSArMDAwMAotCi0gICAgSW5jbHVkZSA8dW5pc3RkLmg+Ci0gICAgW0Zyb20gQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA2NDUwYTk4NDUxOWI4YmM4NzcyN2VjN2NmMDhjZTViN2MxMGUzYzUwCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzoyMTo0OCAyMDExICswMDAwCi0KLSAgICBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zLgotICAgIChQYXJ0IG9mIHBhdGNoICMyOTc1MjU0IC0gc2VlIFNWTiByZXZpc2lvbiAxOTgwOCkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmZjQ3Nzc1MWRkYzg2YzdhOGVmNTg4MmQzOGQ0MmUzYThkYjE5OWIxCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzoyMTo0OCAyMDExICswMDAwCi0KLSAgICBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zLgotICAgIChQYXJ0IG9mIHBhdGNoICMyOTc1MjU0IC0gc2VlIFNWTiByZXZpc2lvbiAxOTgwOCkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBjZjYxYTMxMjYzODcxNmIwOTdlNTgzYmUwOWZhNTIxNzYzZTQ1YmVlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMzoyMTo0OCAyMDExICswMDAwCi0KLSAgICBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zLgotICAgIChQYXJ0IG9mIHBhdGNoICMyOTc1MjU0IC0gc2VlIFNWTiByZXZpc2lvbiAxOTgwOCkKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5YzU0MTdkMTViNGNlZGNhOTU0ODNiNDRhOWRjZjFiMzgxMmNjYjY5Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMjo1NTozMSAyMDExICswMDAwCi0KLSAgICBGcmVlQlNEIHVzZXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtaW5nIHNjaGVtZSBmb3Igc3RydWN0IGlmcmVxCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMzhiMjkxYjA5NmE1ZDFkZGY2ZDgwM2E0MzM2NDc1ZDNiN2FkOTIzNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTI6NTU6MzEgMjAxMSArMDAwMAotCi0gICAgRnJlZUJTRCB1c2VzIGEgc2xpZ2h0bHkgZGlmZmVyZW50IG5hbWluZyBzY2hlbWUgZm9yIHN0cnVjdCBpZnJlcQotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2hlcyBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDY4NWE3ZGQ5ZDVlZWM5OThhYTdjNWVhMDUwYzY5ODdhZjQyMjBmMGIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEyOjU1OjMxIDIwMTEgKzAwMDAKLQotICAgIEZyZWVCU0QgdXNlcyBhIHNsaWdodGx5IGRpZmZlcmVudCBuYW1pbmcgc2NoZW1lIGZvciBzdHJ1Y3QgaWZyZXEKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiMGViMTVhMjNkOWM4N2I4YTQxMTE0ZTM2Zjg0YmJhYWRhNmExMmNlCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIEZyaSBKYW4gNyAxMjoyMjowMyAyMDExICswMDAwCi0KLSAgICBFbnN1cmUgVENQIHRhYmxlIGluZm9ybWF0aW9uIGlzIGxvYWRlZCBiZWZvcmUgY291bnRpbmcgY29ubmVjdGlvbnMKLSAgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZjUxMmY4MGQ3ZmRkNzZkZDA5MmU3MGVhOGZjMTcwM2IwMTllNjJjMwotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBGcmkgSmFuIDcgMTI6MjI6MDMgMjAxMSArMDAwMAotCi0gICAgRW5zdXJlIFRDUCB0YWJsZSBpbmZvcm1hdGlvbiBpcyBsb2FkZWQgYmVmb3JlIGNvdW50aW5nIGNvbm5lY3Rpb25zCi0gICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGU1YTIxOTM3YmNlYjE3YTYxMGNiNjM4ZTVmNWZiZDFiYjdiNzNjNDIKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgRnJpIEphbiA3IDEyOjIyOjAzIDIwMTEgKzAwMDAKLQotICAgIEVuc3VyZSBUQ1AgdGFibGUgaW5mb3JtYXRpb24gaXMgbG9hZGVkIGJlZm9yZSBjb3VudGluZyBjb25uZWN0aW9ucwotICAgIFtGcm9tIEZyZWVCU0QgcGF0Y2ggYXJjaGl2ZV0KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0ZjdjNTJiNThjMmI3OTU3OGEwNzdhZGZkYjYzZTI4NzJhMTBlZTExCi1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTk6MzU6MDYgMjAxMSArMDAwMAotCi0gICAgRml4IGRvY3VtZW50YXRpb24gYnVnIHBvaW50ZWQgb3V0IGluIGNwYW4gYnVnICM1MjYxOAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgwOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGUzYTU5YWU1NjY5YjQ2MWUwYjEwN2U3YzJlOWZlYzI0MTBlZjczYWMKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxOTozNTowNiAyMDExICswMDAwCi0KLSAgICBGaXggZG9jdW1lbnRhdGlvbiBidWcgcG9pbnRlZCBvdXQgaW4gY3BhbiBidWcgIzUyNjE4Ci0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODA5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgY2ZjOTJlYzg0NTA2YmMxNjk5ZWRlZDU1OGYwMzVhOTQwMDVhMWJjOQotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDE5OjM1OjA2IDIwMTEgKzAwMDAKLQotICAgIEZpeCBkb2N1bWVudGF0aW9uIGJ1ZyBwb2ludGVkIG91dCBpbiBjcGFuIGJ1ZyAjNTI2MTgKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA3MGVhOWJiNjEwMTJhNzViYjZhNjJhOGM5NWM4NjFjNGQ3YTZkMDNmCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxNDoxMToyMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk3NTI1NDogQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucwotICAgIAotICAgIFFuOiBTaG91bGQgdGhpcyBhbHNvIGJlIGFwcGxpZWQgd2hlbiBtYWluIHNlc3Npb24gaXMgTlVMTD8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCAzYzUwNzU0MzE5NjY0ZGRhODg5ZjZiZmIyMTY3OTJkYmMzMDA1Yjc2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxNDoxMToyMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk3NTI1NDogQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucwotICAgIAotICAgIFFuOiBTaG91bGQgdGhpcyBhbHNvIGJlIGFwcGxpZWQgd2hlbiBtYWluIHNlc3Npb24gaXMgTlVMTD8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBmYmJlMmM3NTg2ODExMGNiYjNhYWFlZjgwOWZkZDU3MzIyNjg0OTU0Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxNDoxMToyMiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk3NTI1NDogQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZCBzZXNzaW9ucwotICAgIAotICAgIFFuOiBTaG91bGQgdGhpcyBhbHNvIGJlIGFwcGxpZWQgd2hlbiBtYWluIHNlc3Npb24gaXMgTlVMTD8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5N2IwZTkxNWRhYmJhZTRlOWI4NzhkOWEzYzBlMDE3NjFmNGVkOWI2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxMzoyMTozOSAyMDExICswMDAwCi0KLSAgICBGaXggbWlzbGVhZGluZyBpbmRlbnRhdGlvbgotICAgIAotICAgIFFuOiBTaG91bGQgdGhpcyBjYWxsICdzdWJhZ2VudF9zdGFydHVwJyByYXRoZXIgdGhhbiAnYWdlbnR4X3Jlb3Blbl9zZXNzaW9uJz8KLSAgICBRbjogV2h5IGRvZXNuJ3QgdGhpcyBhdHRlbXB0IHRvIHJlLW9wZW4gdGhlIHNlc3Npb24gaWYgaXQgd2FzIG9yaWdpbmFsbHkgTlVMTD8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiN2RjZjg3ZmM1ZTllZDRmYzc4YTNkZGEwYzRmMTcyNTU3M2IwNDM4Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxMzoyMTozOSAyMDExICswMDAwCi0KLSAgICBGaXggbWlzbGVhZGluZyBpbmRlbnRhdGlvbgotICAgIAotICAgIFFuOiBTaG91bGQgdGhpcyBjYWxsICdzdWJhZ2VudF9zdGFydHVwJyByYXRoZXIgdGhhbiAnYWdlbnR4X3Jlb3Blbl9zZXNzaW9uJz8KLSAgICBRbjogV2h5IGRvZXNuJ3QgdGhpcyBhdHRlbXB0IHRvIHJlLW9wZW4gdGhlIHNlc3Npb24gaWYgaXQgd2FzIG9yaWdpbmFsbHkgTlVMTD8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk4MDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlY2NlYjUxZGZhZjIzMGM4OWNkYjJjYjJkMTA0MzllMmUwZTI0MWE2Ci1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxMzoyMTozOSAyMDExICswMDAwCi0KLSAgICBGaXggbWlzbGVhZGluZyBpbmRlbnRhdGlvbgotICAgIAotICAgIFFuOiBTaG91bGQgdGhpcyBjYWxsICdzdWJhZ2VudF9zdGFydHVwJyByYXRoZXIgdGhhbiAnYWdlbnR4X3Jlb3Blbl9zZXNzaW9uJz8KLSAgICBRbjogV2h5IGRvZXNuJ3QgdGhpcyBhdHRlbXB0IHRvIHJlLW9wZW4gdGhlIHNlc3Npb24gaWYgaXQgd2FzIG9yaWdpbmFsbHkgTlVMTD8KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlNTUwOTk4YzQyMTFkYWZmMzk0YTJmNzcyNTc1ZjllNDY5ZDE4NTRhCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFRodSBKYW4gNiAxMjo0NjoxOSAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk0MTgxMTogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgd2l0aCByZXFJRCAwCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgODZmZjUzNWUyNzY2YjVmNWFiMjM3ZTcwMDJhN2VjMDc4NGU5ZjgwNgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMTI6NDY6MTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDI5NDE4MTE6IEhhbmRsZSBzdWNjZXNzZnVsIHJlcXVlc3RzIHdpdGggcmVxSUQgMAotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTgwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGI0MjBlMWI2OWJmMjMxM2I2Y2U3NWNkZWUyMGQ2MjI1ODYwYTRjYjEKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVGh1IEphbiA2IDEyOjQ2OjE5IDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTQxODExOiBIYW5kbGUgc3VjY2Vzc2Z1bCByZXF1ZXN0cyB3aXRoIHJlcUlEIDAKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA0ODUyNWEwZWY1M2E4NWQxZjAyOTQyMDVkNDFjOWQ5MTc5YTAwN2RmCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUaHUgSmFuIDYgMDk6Mzg6NTAgMjAxMSArMDAwMAotCi0gICAgU3BlbGxpbmcgZml4OiBJbml0aWFsemllcyAtPiBJbml0aWFsaXplcy4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk4MDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBhZGRhMzZkYTc3NjQ4NmQwNzJjNGRjZjllYWE4ZTU3ZDc4Mzg0YmMyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gNSAxNjozMTo1MCAyMDExICswMDAwCi0KLSAgICBVc2UgdGhlIGFwcHJvcHJpYXRlIEFQSSBjYWxsIGZvciByZXBvcnRpbmcgY29uZmlnIGVycm9ycy4KLSAgICAoIkRvbid0IGJlIHNvIGltcGF0aWVudCwgRGF2ZS4uLi4iKQotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTgwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDZmZjhmMjJmZDdiNTdjZjA5NDVkMGYxNWIwNDMzYTQ3NmE2N2Q5YmQKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiA1IDE2OjMxOjUwIDIwMTEgKzAwMDAKLQotICAgIFVzZSB0aGUgYXBwcm9wcmlhdGUgQVBJIGNhbGwgZm9yIHJlcG9ydGluZyBjb25maWcgZXJyb3JzLgotICAgICgiRG9uJ3QgYmUgc28gaW1wYXRpZW50LCBEYXZlLi4uLiIpCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzEyYWI1ZWRiZDg3NjVkNjMzZjMyOGZmNDY4ZmMxZThkY2Y2ZTJhMAotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDUgMTQ6MDY6NTIgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcGxpYjogQlVHUzogMzEzNDMyMzogRml4IGNyYXNoIHdoZW4gY29tcGFyaW5nIGludmFsaWQgT0lEcwotICAgIAotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTgwMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IGM5MmYyODYwNGQxM2JhZjJhYjBhNmIzZDcxMDA3MzBkMzM5NDlmMGYKLUF1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgV2VkIEphbiA1IDE0OjA2OjUyIDIwMTEgKzAwMDAKLQotICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxMzQzMjM6IEZpeCBjcmFzaCB3aGVuIGNvbXBhcmluZyBpbnZhbGlkIE9JRHMKLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMTk4MDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCA5YWIxNWZjNmU0MjZlNWUwOGEzMzc0ZWMzZGE3YmU0MjgyN2JkYzUyCi1BdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFdlZCBKYW4gNSAxNDowNjo1MiAyMDExICswMDAwCi0KLSAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTM0MzIzOiBGaXggY3Jhc2ggd2hlbiBjb21wYXJpbmcgaW52YWxpZCBPSURzCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODAxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMDg5ODViNTkxNDcxYjliNDc5MDhiZmJiN2ViYzYzYWQ1Yjc0YjFlMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDUgMTQ6MDQ6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcHRyYXBkOiBCVUdTOiAzMTUxMjU0OiBGaXggY3Jhc2ggd2l0aCBpbnZhbGlkIHRyYXBoYW5kbGUgZGlyZWN0aXZlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5ODAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgZmJhYzhiNzI2ZGJjOWE0ZDBmNzM0YzZkNWQzYjc3NjJmMjdmMmVkZgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDUgMTQ6MDQ6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcHRyYXBkOiBCVUdTOiAzMTUxMjU0OiBGaXggY3Jhc2ggd2l0aCBpbnZhbGlkIHRyYXBoYW5kbGUgZGlyZWN0aXZlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5ODAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMmVmMDJlYzAzM2I5MmEwMDBlODAxY2MzOTcwMjk4M2RmODdlZjQxMgotQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBXZWQgSmFuIDUgMTQ6MDQ6NTkgMjAxMSArMDAwMAotCi0gICAgQ0hBTkdFUzogc25tcHRyYXBkOiBCVUdTOiAzMTUxMjU0OiBGaXggY3Jhc2ggd2l0aCBpbnZhbGlkIHRyYXBoYW5kbGUgZGlyZWN0aXZlCi0gICAgCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5ODAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgMWI4NjI4YTJmNWEwMDZlNmYzMmIxMjBkMjMzNDc4OGRmNTgwMTAzOAotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiA0IDE4OjI0OjU1IDIwMTEgKzAwMDAKLQotICAgIENvcHlyaWdodCB1cGRhdGUgZm9yIDIwMTEKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0yLXBhdGNoZXNAMTk3OTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBiYzliZjA4Mzk1Zjk4N2QxZDM5ZDE2NTFhMjU4NmVlMDY3MjI3MDg5Ci1BdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDQgMTg6MjQ6NTUgMjAxMSArMDAwMAotCi0gICAgQ29weXJpZ2h0IHVwZGF0ZSBmb3IgMjAxMQotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTc5NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKLQotY29tbWl0IDU3NDUwMmEzYzcxZjVmOTc2MGMyMGU0MmMzOGQzZTk2NzE2YWE3ZWEKLUF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOiAgIFR1ZSBKYW4gNCAxODoyNDo1NSAyMDExICswMDAwCi0KLSAgICBDb3B5cmlnaHQgdXBkYXRlIGZvciAyMDExCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDE5Nzk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYTdlNjc1N2RkOTIxOGRkYzBmYjQ1OTFlYjQ5OTk5OThlOWIwYWZjYwotQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiA0IDE4OjI0OjU1IDIwMTEgKzAwMDAKLQotICAgIENvcHlyaWdodCB1cGRhdGUgZm9yIDIwMTEKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMTk3OTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBkZmZkNjIxYWIwNWVlMmFkNGYxODkyNTVhZWZkNDJiZjJjYjVlYjcwCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDQgMTI6MTk6MTMgMjAxMSArMDAwMAotCi0gICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIHRyaWdnZXJlZCBieSB0aGUgV2luMzIgTUlCLUlJIGltcGxlbWVudGF0aW9uIChiYWNrcG9ydGVkIHIxOTc5MCBmcm9tIHRoZSB0cnVuaykuCi0gICAgCi0gICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5NzkzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAotCi1jb21taXQgYzRlYzU0MGY2M2M1ZTE4NGQ5NDdiNmViYTUxMTQ4MjU3YzQxNjc5NgotQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6ICAgVHVlIEphbiA0IDEyOjE3OjUxIDIwMTEgKzAwMDAKLQotICAgIFJlbW92ZWQgdHdvIHVudXNlZCB2YXJpYWJsZXMgZnJvbSB0aGUgc2N0cC1taWIgaW1wbGVtZW50YXRpb24gKGJhY2twb3J0ZWQgcjE5NzgwIGZyb20gdGhlIHRydW5rKS4KLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk3OTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCi0KLWNvbW1pdCBlMjg2OTk2YTU4MTI0MmJlZmRmMGZjZmUzN2Q5ZTUwMzUzOGQyMDRlCi1BdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZTogICBUdWUgSmFuIDQgMTI6MTU6MjcgMjAxMSArMDAwMAotCi0gICAgRml4ZWQgYSByZWNlbnRseSBpbnRyb2R1Y2VkIG1pc21hdGNoIGJldHdlZW4gZm9ybWF0IHNwZWNpZmljYXRpb24gYW5kIGFyZ3VtZW50IGxpc3QgaW4gdGhlIGlwLW1pYiBpbXBsZW1lbnRhdGlvbiAoYmFja3BvcnRlZCByMTk3NzkgZnJvbSB0aGUgdHJ1bmspLgotICAgIAotICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTc5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICBDSEFOR0VTOiBzbm1wZDogQXZvaWQgdGhhdCBzbm1wZCBjcmFzaGVzIGlmIHN0YXJ0ZWQgb24gYSBzeXN0ZW0gd2l0aCBhbm90aGVyIE9wZW5TU0wgbGlicmFyeSB2ZXJzaW9uIHRoYW4gdGhlIG9uZSBpdCBoYXMgYmVlbiBidWlsdCB3aXRoLgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUNoYW5nZXM6IFY1LjYgLT4gVjUuNi4xCitDaGFuZ2VzOiBWNS43LnJjMyAtPiBWNS43LjEKIAotMjAxMS0wMS0wMyAyMjoyOCAgaGFyZGFrZXIKKzIwMTEtMDktMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogCi0gICAqIE5FV1M6CisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xCiAKLSAgIE5FV1MgdXBkYXRlCiAKLTIwMTEtMDEtMDMgMjI6MjYgIGhhcmRha2VyCisyMDExLTA5LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgorICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMS5yYzMKIAotICAgQ0hBTkdFUzogVXBncmFkZWQgRFRMUyBzdXBwb3J0IGZyb20gYWxwaGEgdG8gZnVsbDsgbWVudGlvbiB0aGF0Ci0gICB0c20gaXMgbmVlZGVkIGZvciBUTFMgdG9vCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLTIwMTEtMDEtMDMgMjI6MjQgIGhhcmRha2VyCitDaGFuZ2VzOiBWNS43LnJjMiAtPiBWNS43LjEucmMzCiAKLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKLSAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzoKKzIwMTEtMDktMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogCi0gICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43LjEucmMzCiAKLTIwMTAtMTItMjkgMDE6NDEgIGhhcmRha2VyCisKKzIwMTEtMDktMjIgIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiA6IGNvbW1pdCAwN2Y2MWEwMmEyNDA5MDk2ZTVjOTYyY2QyMTExMjYzOTZhZDA5ZDJiIE1lcmdlOiBlZTBkM2FkCisKKyBiZGEzMjRiIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIFRodQorIFNlcCAyMiAxMDozOTo1OSAyMDExICswMTAwCisKKzIwMTEtMDktMjIgIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiA6IGNvbW1pdCBjNTVmNjA4ZjE2ZjE2MGY1ZTc5ZGMwNTdmODg3OGRlZjQ2Mjk3M2UxIEF1dGhvcjogRGF2ZQorCisgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4gRGF0ZTogICBUaHUgU2VwIDIyIDEwOjM1OjI0IDIwMTEKKyArMDEwMAorCisyMDExLTA5LTIyICBTdGV2ZSBGcmllZGwgPHN0ZXZlQHVuaXh3aXoubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuYzogQ0hBTkdFUzogc25tcGQ6IDM0MDk2OTI6CisKKyBDYWxjdWxhdGUgZGlzayBwZXJjZW50YWdlIHVzYWdlIHZpYSBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIHRvCisgYXZvaWQgaW50ZWdlciBhcml0aG1ldGljIGVycm9ycy4gIChDb2RlIGJhc2VkIG9uIHBhdGNoLCByYXRoZXIgdGhhbgorIGFwcGxpZWQgdmVyYmF0aW0pCisKKzIwMTEtMDktMjIgIFN0ZXZlIEZyaWVkbCA8c3RldmVAdW5peHdpei5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jOiBDSEFOR0VTOiBzbm1wZDogMzQwOTY5MjoKKworIENhbGN1bGF0ZSBkaXNrIHBlcmNlbnRhZ2UgdXNhZ2UgdmlhIGZsb2F0aW5nLXBvaW50IGFyaXRobWV0aWMgdG8KKyBhdm9pZCBpbnRlZ2VyIG92ZXJmbG93IGVycm9ycy4gIChDb2RlIGJhc2VkIG9uIHRoZSBzdWJtaXR0ZWQgcGF0Y2gsCisgcmF0aGVyIHRoYW4gYXBwbGllZCB2ZXJiYXRpbSkKKworMjAxMS0wOS0yMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogQ2hhbmdlTG9nOiBUaGUgb25seSBjaGFuZ2UgYmV0d2VlbiBWNS43LnJjMSBhbmQgVjUuNy4xLnJjMiBpcyB0aGUKKworIHZlcnNpb24gbnVtYmVyLiBNYWtlIHRoaXMgY2xlYXIgaW4gdGhlIENoYW5nZUxvZyBmaWxlLgorCisyMDExLTA5LTIxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IGNoYW5nZWxvZyB1cGRhdGUKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LnJjMSAtPiBWNS43LjEucmMyCisKKzIwMTEtMDktMjEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xLnJjMgorCisKKzIwMTEtMDktMDQgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorCisgICAqIDogY29tbWl0IDRkNmRlZmRhZTcyYzM1YjEwODAwNzYxODAzMTNkMjkxMDU2ODQ3NWIgTWVyZ2U6IGQzYTc1OGMKKworIDNiN2ZkYzQgQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4gRGF0ZTogICBTdW4KKyBTZXAgNCAxNDo0NjowMiAyMDExICswMjAwCisKKzIwMTEtMDktMDQgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorCisgICAqIDogY29tbWl0IGJiZTJjMTlhMDFlY2VjMDI0Zjc0MWUyZTU0NzAxYWU2MjEyZjRjM2UgQXV0aG9yOiBNYWdudXMKKworIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+IERhdGU6ICAgU3VuIFNlcCA0IDE0OjQ0OjM4IDIwMTEKKyArMDIwMAorCisyMDExLTA5LTA0ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KKworICAgKiA6IGNvbW1pdCBkM2E3NThjZjMwMjU0YjgwNzA2YTQzZjE5MWMxNTIzOGIyY2I3M2M5IE1lcmdlOiBjMTA3Y2UwCisKKyAyMjdkYmQ3IEF1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+IERhdGU6ICAgU3VuCisgU2VwIDQgMTQ6MDg6MzUgMjAxMSArMDIwMAorCisyMDExLTA5LTA0ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KKworICAgKiA6IGNvbW1pdCA5ZWZhNDY3YTk3MmJiNmUxYzdmYmRhZjJlMjc0MjlkMjlmNGFiODllIEF1dGhvcjogTWFnbnVzCisKKyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPiBEYXRlOiAgIFN1biBTZXAgNCAxNDowMDoxMiAyMDExCisgKzAyMDAKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LnByZTIgLT4gVjUuNy4xLnJjMQorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDogbWFrZQorCisgZGVwZW5kIGZvciA1LjcuMS5yYzEKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOiBmaXggQysrIGNvbW1lbnQKKworCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcuMS5yYzEKKworCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjMTA3Y2UwNzg0MDlkMjY1YjliMjE4ZDQ5ZjM4MTViNzk1ZGIxZGMzIE1lcmdlOiBlYTRiM2IyCisKKyA5MTVhYThkIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyAzMCAxOTowNzowNyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDQyMmIwODJhOTU5M2NhOWM2NWFhYzQ0OWU2ZDEyOGE5ZTk3ZTk0ZmIgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEF1ZyAzMAorIDE5OjA2OjU2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZWE0YjNiMjNmMzUwNTgzZTU2MjYzMjhiNTM2N2U2YzYxNzI1NWY5NSBNZXJnZTogYmNmMzhiOAorCisgYjM0ZDVkYyBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBBdWcgMzAgMTY6Mzg6MjUgMjAxMSAtMDcwMAorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA3MWMwZDc2NTA0OTM3MTA2MzFmYTA4ZDVkYzRkYWQ1MDFhOWFhNzcxIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFR1ZSBBdWcgMzAKKyAxNjozNzo0MSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGIxM2Y0ZDg4ODZiNmE0ZTczYmMwN2RmMmI5MGQxYTYxMTVjZjNkZmMgTWVyZ2U6IGY3ZTIxZjIKKworIDY0ZTk3NzggQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDMwIDExOjA5OjMwIDIwMTEgLTA3MDAKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYjVkMmE0M2Y5N2E1OTg1OGM5NDRlYmEyMjkwYjU5YjkzYzIzMGE2YSBNZXJnZTogODZlZmVlMgorCisgY2Y0Y2Y3ZiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBBdWcgMzAgMTE6MDk6MjkgMjAxMSAtMDcwMAorCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS02LXBhdGNoZXMnIGludG8KKworIFY1LTYtcGF0Y2hlcworCisyMDExLTA4LTMwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF1dG8tZGV0ZXJtaW5lIHBhdGNoIGFyZ3VtZW50cyBpZgorCisgcG9zc2libGUgZm9yIG5zcGF0Y2h0cnkKKworMjAxMS0wOC0zMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBtYWtlIGl0IHNvIHRoZSBnaXQgY29tbWl0IGxpbmUgY2FuCisKKyBiZSBjdXQvcGFzdGUgd2l0aG91dCBsaW5lYnJlYWtzCisKKzIwMTEtMDgtMzAgIFJvbmFsZCBXYWhsIDxyd2EtY29AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM5NDU4NjogZnJvbQorCisgcndhLWNvOiBmaWxlIGRlc2NyaXB0b3IgbGVhayBpbiByZWFkX2NvbmZpZyAoK2ZpeCkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMzAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBkZXNjcmliZSB0aGF0IG5zcm9sbHVwIG5lZWRzIHRvIGJlIHJ1biBub3cuCisKKworMjAxMS0wOC0zMCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogY29tbWl0IDJiOTJhMGExZTNhMDYxOGM1MTVlYmQ5MDIyNzFiOTVjMDg5MzFhZmEgTWVyZ2U6IGEwODYzNDcKKworIDg2ZWZlZTIgQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+IERhdGU6ICAgVHVlCisgQXVnIDMwIDExOjI4OjE0IDIwMTEgKzAxMDAKKworMjAxMS0wOC0zMCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYzogQXBwYXJlbnRseSBJUklYIGhhcyBhCisKKyBkaWZmZXJlbnQgQVBJIGZvciBzdGF0ZnMKKworMjAxMS0wOC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jOiBkb24ndCBwcm92aWRlIGEgZmVhdHVyZSB3aGVuIHlvdXIgYQorCisgY2hpbGQgb2YgYW5vdGhlciBmZWF0dXJlCisKKzIwMTEtMDgtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTctcGF0Y2hlcycgaW50bworCisgVjUtNy1wYXRjaGVzCisKKzIwMTEtMDgtMjggIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorCisgICAqIGFwcHMvTWFrZWZpbGUuaW46IFVzZSB0aGUgZmVhdHVyZSB0YXJnZXQgaW5zdGVhZCBvZiB0aGUgdGFyZ2V0CisKKyB3aGVuIGJ1aWxkaW5nIHRoZSBmZWF0dXJlIHNldAorCisyMDExLTA4LTI5ICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLmg6IHRoZSBpcml4NiBidWlsZCBvbmx5IGRlZmluZXMKKworIGlyaXg2LCBub3QgaXJpeAorCisyMDExLTA4LTI5ICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogcmUtYWRkIHNvY2thZGRyX3VuLnN1bl9wYXRoCisKKyBjb25maWd1cmUgY2hlY2sgKGxvc3QgaW4gcHJldmlvdXMgY29tbWl0KQorCisyMDExLTA4LTI4ICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLmg6IAorCisgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jIGRvZXNuJ3QgYnVpbGQgb24gSVJJWCB5ZXQKKworMjAxMS0wOC0yOCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYTA4NjM0NzlkODA5NjJjNjUyOTQ3ZGZkZWUxMWJkZDEzNmMwZTAxMyBNZXJnZTogNTI1MDg5MworCisgZjk1YWEzMSBBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFN1biBBdWcgMjggMjM6Mzc6MjcgMjAxMSArMDIwMAorCisyMDExLTA4LTI4ICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgc25tcGxpYi9zbm1wVURQRG9tYWluLmMsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IENIQU5HRVM6IGJ1aWxkaW5nOiBidWlsZCBmaXgKKworIGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGRzIG1zZ19jb250cm9sL21zZ19mbGFncyBpbiBzdHJ1Y3QgbXNnaGRyCisgKGJhY2twb3J0KQorCisyMDExLTA4LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmM6IGFkZGVkIHJlcXVpcmVkIGZlYXR1cmVzIGZvcgorCisgbWZkIGhhbmRsaW5nCisKKzIwMTEtMDgtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIC5naXRpZ25vcmU6IGFkZGVkIC5mdCBhbmQgLmZ0LjEgZm9yIGZlYXR1cmUgZmlsZXMKKworCisyMDExLTA4LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBwZXJsL2FnZW50L2FnZW50LnhzOiBub193cml0ZV9zdXBwb3J0IHN1cHBvcnRlZAorCisKKzIwMTEtMDgtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYzogaGFuZGxlIG5vLXdyaXRlLXN1cHBvcnQgd2l0aAorCisgaWZkZWZzCisKKzIwMTEtMDgtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDUyNTA4OTMyN2FiYTdkMDFkNjMzYzYzNGM2YjZmMDZkZTQyYWNiYjggTWVyZ2U6IDFiYjIzNGEKKworIDA0ZmQ3MWEgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDI1IDA2OjU3OjIxIDIwMTEgLTA3MDAKKworMjAxMS0wOC0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZWE4YmVkNzllODFjNDJlMzNjYmYzN2NhNmYzYzAzYzU0OTk4N2IyMiBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUaHUgQXVnIDI1CisgMDY6NTY6MjIgMjAxMSAtMDcwMAorCisyMDExLTA4LTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBweXRob24vbmV0c25tcC9jbGllbnQucHk6IHVzZSA+PiB0byBwcmludCB0byBzdGRlcnIKKworCisyMDExLTA4LTIzICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZTogQ0hBTkdFUzogYnVpbGQ6IERvIG5vdCBnZW5lcmF0ZQorCisgYW4gb3V0cHV0IGZpbGUgb24gZmFpbHVyZSBtYWtlIHN1cHBvc2VzIHRoYXQgbm8gb3V0cHV0IGlzIGdlbmVyYXRlZCBpZiB0aGUgY29tbWFuZCBmYWlsZWQuCisgQ2hhbmdlIGZlYXR1cmUtcmVtb3ZlIHRvIGZvbGxvdyB0aGF0IHByZXN1bXB0aW9uLgorCisyMDExLTA4LTIxICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZTogQ29ycmVjdCB0eXBvCisKKworMjAxMS0wOC0yMyAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMWJiMjM0YTZjYzM2ZTZhNGVmYmUzZmIyOWM0ODAyMTBkYzJiOWMxMyBNZXJnZTogMzVhOThjMworCisgMWYwODJhMyBBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBBdWcgMjMgMjM6Mzg6MDcgMjAxMSArMDIwMAorCisyMDExLTA4LTIzICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVyczogbWFrZSBzdXJlIHRoYXQKKworIF9LRVJORUwgaXMgZGVmaW5lZCB0byAxIHNvIHRoYXQgIiNpZiBfS0VSTkVMIiB3b3JrcyBvbiBzeXN0ZW1zIHRoYXQKKyBuZWVkIGl0IChlLmcuIElSSVgpCisKKzIwMTEtMDgtMjMgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDM1YTk4YzNkN2M1YTNjNWRmMzU2YWRkOWU4YjgwODI4Nzg5OWI2OWEgTWVyZ2U6IDFmMzdmNTcKKworIGEyN2Y3NDQgQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUdWUgQXVnIDIzIDIzOjMwOjI3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0yMyAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjZiYjI0NzBjMTA2ZjgzNDQ0MmEyYWRiYzc2MTFiZjE2NjU3ZmJkZiBBdXRob3I6IFRob21hcworCisgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgQXVnIDIzIDIzOjIyOjQ0CisgMjAxMSArMDIwMAorCisyMDExLTA4LTIyICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGF1dG9yZWNvbmYKKworCisyMDExLTA4LTIyICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQgZml4CisKKyBmb3Igc3lzdGVtcyBsYWNraW5nIGZpZWxkIG1zZ19mbGFncyBpbiBzdHJ1Y3QgbXNnaGRyIChlLmcuIElSSVgpCisKKzIwMTEtMDgtMjEgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogYXV0b3JlY29uZgorCisKKzIwMTEtMDgtMjEgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogYXV0b3JlY29uZgorCisKKzIwMTEtMDgtMjEgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogYXV0b3JlY29uZgorCisKKzIwMTEtMDgtMjEgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGI2MmNiMDg2NGY1NzdiYTg1NTczZDBkMjUwZDEyYTM5Mzg3YzA3YjQgQXV0aG9yOiBUaG9tYXMKKworIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgU3VuIEF1ZyAyMSAwMDo1NTozMworIDIwMTEgKzAyMDAKKworMjAxMS0wOC0yMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNzFiOTBiNmYyMTc5NDRiNGZmYzE4MzZlNTE2MGQ0MGUzM2I0NDIzZCBBdXRob3I6IFRob21hcworCisgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBTdW4gQXVnIDIxIDAwOjQwOjI4CisgMjAxMSArMDIwMAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcucHJlMSAtPiBWNS43LjEucHJlMgorCisyMDExLTA4LTE4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDogbWFrZQorCisgZGVwZW5kIGZvciA1LjcuMS5wcmUyCisKKzIwMTEtMDgtMTggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy4xLnByZTIKKworCisyMDExLTA4LTE4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAwMzA1MzQ3OTYwNGJjODNlZmJlYTU3OWI0NTYyYjE4MzFjZWExY2I2IE1lcmdlOiBmNzNlNjM2CisKKyBkOTRkZjM5IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyAxOCAxMTo1Nzo0NiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMTggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDI4YjU0MDcwNTE0NzUzZThkOGFiYjcxOGIyMjRkNjU3YWI3YThhYjggQXV0aG9yOiBHYXJyZXR0CisKKyBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUaHUgQXVnIDE4CisgMTE6NDk6NTYgMjAxMSAtMDcwMAorCisyMDExLTA4LTE4ICBWbGFkaW1pciBLb25kcmF0aWV2IDx3dWxmMjAwMUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jOiBDSEFOR0VTOiBhZ2VudDogUEFUQ0ggMzM4OTIyODoKKworIGZyb20gd3VsZjIwMDE6IGluY29tcGxldGUgY29tbWl0IChwYXRjaCAzMzg2NjMzOiBmaXggaW50ZWdlcgorIG92ZXJmbG93KSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0xOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXAuY29uZi41LmRlZjogUGF0Y2ggZnJvbSBDbGF1cyBLbGVpbiBvbiAtY29kZXJzIGZvciBmaXhpbmcKKworIG1hbiBwYWdlIHR5cG9zCisKKzIwMTEtMDgtMTggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogY2hhbmdlZCBjbGllbnRhZGRyIHNvIGl0IHJlZ2lzdGVycyBhcyBwcmUtbWliCisKKyB0byBiZSBwaWNrZWQgdXAgYmVmb3JlIHRoZSB0cmFuc3BvcnRzIGdldCBjcmVhdGVkCisKKzIwMTEtMDgtMTcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGMwMjEzMWU1YjM1ZDI5Njc1NWJhZWM5OWJkMzYzMjA1YTg2MzA3ZGQgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgV2VkIEF1ZyAxNworIDA5OjM0OjAwIDIwMTEgLTA3MDAKKworMjAxMS0wOC0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzogRml4IHRoZSBsb2cgbWVzc2FnZSB0aGF0IHJlcG9ydHMgdGhhdAorCisgZ2V0aG9zdGJ5YWRkcigpIGlzIG1pc3NpbmcKKworMjAxMS0wOC0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMTgyZTFkYzBjM2VhY2ZhNGU5Y2NkYjI4NjAwZmYwZjIzNzAyMTFhZSBNZXJnZTogNDk5Yjc5NgorCisgNTE3YjZiMCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFdlZCBBdWcKKyAxNyAxODowOTozMCAyMDExICswMjAwCisKKzIwMTEtMDgtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDY1ODA1NTZjYzdiZDgzM2FmNzMxYjYyY2UxZWQyMDE3NTY0ZmU3ZWIgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgV2VkIEF1ZyAxNyAxODowODowMSAyMDExICswMjAwCisKKzIwMTEtMDgtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDQ5OWI3OTZjYmQ3ODA2NWMzMzU0Nzc5MTM2YmQzZDlkMWY1NDhhNTggTWVyZ2U6IDA0MThmZjAKKworIGE5Y2IyNjcgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTdW4gQXVnCisgMTQgMDg6MDI6MzggMjAxMSArMDIwMAorCisyMDExLTA4LTE0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAzY2IzZjFlZGUzODhkODRlMzkyZTFkODE1ZDU5OTRhNGJmMGYxMGY5IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFN1biBBdWcgMTQgMDc6NTk6MjUgMjAxMSArMDIwMAorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBwZXJsL09JRC9PSUQueHMsIHBlcmwvU05NUC9TTk1QLnhzLCBwZXJsL2FnZW50L2FnZW50LnhzOiBXaW5kb3dzOgorCisgTWFrZSB0aGUgUGVybCBhZ2VudCBtb2R1bGUgd29yayBhZ2FpbiB3aXRoIHRoZSBvcmlnaW5hbCBTTk1QX0ZSRUUoKQorIGRlZmluaXRpb24uCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDA0MThmZjBjZGEyMTQxMWE0N2ZhODk3OGMzZTBkMDQzYTE5ZDI0YjYgTWVyZ2U6IDI2YjBhYTMKKworIDNjNzNiNDggQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTYXQgQXVnCisgMTMgMTg6NDI6MDUgMjAxMSArMDIwMAorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaDogUmV2ZXJ0IHRoZSB0d28gbW9zdCByZWNlbnQKKworIFNOTVBfRlJFRSgpIGNoYW5nZXMgKGNvbW1pdHMKKyA0N2M4ZWYxYjg5YzZjY2I0MjQ3ZDk2MzM0Nzc5MjU5MDhjNjhjMWE1IGFuZAorIDdmNDJkMGQ5MzMyMDQ4NDE1MjI3MTQyN2NjOTgwOGNiZGE0OWJiZDApLgorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAyNmIwYWEzMDEwZmExODJiNjAzOWE4YzJjYWQ4Y2NiNDU3MTY1MmRlIE1lcmdlOiAyZjNkNjA3CisKKyAwYzhlMWE5IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU2F0IEF1ZworIDEzIDExOjQzOjIwIDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgM2U1MGMzZTAwZTlmMzIxZmI3MDhiYzU3OWViNGRjMWEwZjFlN2M0ZCBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTYXQgQXVnIDEzIDExOjMxOjQwIDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMmYzZDYwNzlkYzM2YWFkOTU1OWQ5MWM1YzMyNGUyY2U1MzU1NzNkZCBNZXJnZTogZTMyYWE5NworCisgZmYxNzM0ZCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFNhdCBBdWcKKyAxMyAwOTowODowNiAyMDExICswMjAwCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGUxNDdlNGI5Njc1NTIwN2RlMWNlMzA5OTBkNjdiNGI3Yzc2ZGQ0ODMgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU2F0IEF1ZyAxMyAwODozOToxNCAyMDExICswMjAwCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHdpbjMyL2J1aWxkLnBsOiBDSEFOR0VTOiBXaW5kb3dzOiBidWlsZGluZyAoYnVpbGQuYmF0KTogSW5zdGFsbAorCisgbmV0c25tcC5kbGwgYmVmb3JlIHJ1bm5pbmcgdGhlIFBlcmwgcmVncmVzc2lvbiB0ZXN0cyBzdWNoIHRoYXQgdGhlCisgcmVncmVzc2lvbiB0ZXN0cyBhcmUgcnVuIHdpdGggdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiBuZXRzbm1wLmRsbC4KKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogd2luMzIvTWFrZWZpbGUuaW46IENIQU5HRVM6IFdpbmRvd3M6IHBlcmwgKGJ1aWxkLmJhdCk6IFdoZW4KKworIGluc3RhbGxpbmcgZGV2ZWxvcG1lbnQgZmlsZXMsIGluc3RhbGwgdGhlIFBEQiBmaWxlcyB0b28uCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICBwZXJsL1NOTVAvdC9hc3luYy50LCBwZXJsL1NOTVAvdC9jb25mLnQsIHBlcmwvU05NUC90L21pYi50LCAKKyAgICAgIHBlcmwvYWdlbnQvdGVzdC5wbDogQ0hBTkdFUzogdGVzdGluZzogRml4IFBlcmwgcmVncmVzc2lvbiB0ZXN0CisKKyBmYWlsdXJlcyBBbGwgUGVybCByZWdyZXNzaW9uIHRlc3RzIHBhc3Mgbm93IG9uIExpbnV4IGFuZCBvbiBXaW5kb3dzIChNU1ZDKS4KKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogcGVybC9TTk1QL3QvYXN5bmMudCwgcGVybC9TTk1QL3QvYnVsa3dhbGsudDogQ0hBTkdFUzogdGVzdGluZzoKKworIFBlcmwgcmVncmVzc2lvbiB0ZXN0czogRG9uJ3QgZmFpbCBza2lwcGVkIHRlc3RzLgorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBwZXJsL1NOTVAvU05NUC5wbSwgcGVybC9TTk1QL1NOTVAueHM6IENIQU5HRVM6IHBlcmw6IEFkZAorCisgU05NUDo6Z2V0ZW52KCkgYW5kIFNOTVA6OnNldGVudigpLgorCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaCwgc25tcGxpYi90b29scy5jOiBDSEFOR0VTOgorCisgc25tcGxpYjogQWRkIG5ldHNubXBfc2V0ZW52KCkuCisKKzIwMTEtMDgtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3Q6IGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3Q6IGRvY3VtZW50IGhvdyB0bworCisgdXNlIG9uIFdpbmRvd3MKKworMjAxMS0wOC0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogbG9jYWwvcGFzc19wZXJzaXN0dGVzdDogU2V0IGV4ZWN1dGUgZmxhZyBvbiBsb2NhbC9wYXNzX3BlcnNpc3R0ZXN0CisKKyBzdWNoIHRoYXQgdGhlIGluc3RydWN0aW9ucyBpbiB0aGF0IGZpbGUgd29yaworCisyMDExLTA4LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBGaXggYSBzdXBwcmVzc2lvbiBwYXR0ZXJuCisKKworMjAxMS0wOC0xMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZTMyYWE5Nzc0MjIzMmNlZDNhNzJmOGI4NDVhY2U1Y2UzZDUzYjhkZiBNZXJnZTogNGFkZmVjOAorCisgODZmYmQzMyBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIEZyaSBBdWcgMTIgMDk6MTE6MTQgMjAxMSAtMDcwMAorCisyMDExLTA4LTEyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBhNzNlYjQwZWMyNjNhMGZkZjUzYTc0ZTcyMGRkZjQxYzRhN2VlM2Q0IE1lcmdlOiA3NjkwODk0CisKKyAyOTQwZWUzIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgRnJpIEF1ZyAxMiAwOToxMToxMyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMTIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDFmMGE5MjhhMjkxM2NmYTdmNWNlYWFmNDY5NmM2OWZiZGM2ODc2MjEgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgRnJpIEF1ZyAxMgorIDA5OjA5OjExIDIwMTEgLTA3MDAKKworMjAxMS0wOC0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNGFkZmVjODEyMTZmNmM1YmYyNWM5YWM2YjJiNzQ3OGQxYmU4ZTg0MiBNZXJnZTogMjgxYjg2OQorCisgMjk0MGVlMyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcKKyAxMSAxODo1NzoyOSAyMDExICswMjAwCisKKzIwMTEtMDgtMTEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDFlMTAwMGE4ODE1OTIxYjVlYzJlNzk5N2I1MzU5MmE1NDRiM2RmYzIgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZyAxMSAxNTo0NjozMiAyMDExICswMjAwCisKKzIwMTEtMDgtMTEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDI4MWI4Njk2MWIxMDI2NmRkZjM4ODM5NDJkNGRjM2I2Yjk4ZDMyMjcgTWVyZ2U6IGQ4ZDIyNWMKKworIGYxODEwOTkgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgMTEgMTg6NDY6MDYgMjAxMSArMDIwMAorCisyMDExLTA4LTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IE1lcmdlIFY1LTQtcGF0Y2hlcy4KKworCisyMDExLTA4LTEwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmM6IGRvbid0IGFzc2VydCBvbiBhIGRvdWJsZQorCisgaW5pdDsganVzdCBkb24ndCBkbyBpdCB0d2ljZQorCisyMDExLTA4LTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkOGQyMjVjYTM0YThmMjI3NTIxNTNhY2I3OTQ0Zjk0MzVmNTY0ZDJjIE1lcmdlOiAwNmI0MTg2CisKKyA0N2M4ZWYxIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgV2VkIEF1ZworIDEwIDE4OjA1OjIxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg6IFNOTVBfRlJFRSgpOiBjYXN0IGFyZ3VtZW50IHRvCisKKyAodm9pZCAqKSBiZWZvcmUgcGFzc2luZyBpdCB0byBuZXRzbm1wX2ZyZWUoKQorCisyMDExLTA4LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAwNmI0MTg2NWVjMzAyYzM5MzFiMTA4M2QzZmRlODlmOTM0NWVjMDZmIE1lcmdlOiAxMTQyNmZiCisKKyBhNGY2YWM3IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyA5IDA2OjQ0OjQxIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMTE0MjZmYjNjNmYzMjc4MjBiOWJiODZhNzZlY2M5ZTJjMzdlNzkzNCBNZXJnZTogMDM0NGRmOQorCisgOWJmMDY4MSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBBdWcgOSAwNjo0NDoxMSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTQtcGF0Y2hlcycgaW50bworCisgVjUtNC1wYXRjaGVzCisKKzIwMTEtMDgtMDkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDliZjA2ODEyMThlZGY0M2NkYjVmYzY4ZjE3MjEyM2JjNGEyZDAxODggTWVyZ2U6IGY5ZGI2MTEKKworIGNjYjBlYjYgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgQXVnCisgOSAwODoxOTozMyAyMDExICswMjAwCisKKzIwMTEtMDgtMDkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGRlN2UzNDhlY2UwM2QyMzgwYzJhODgwNmViYmFkNWQ5YjU0ODc2ODIgTWVyZ2U6IGQ1MzhiY2IKKworIGNjYjBlYjYgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUdWUgQXVnCisgOSAwODowNzoyMiAyMDExICswMjAwCisKKzIwMTEtMDgtMDkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDAyMjAzOTJkODk5YTljYWI3MDFmNzRhZjEyMDMwYmIxZDRjYzVlMmUgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEp1bCAxIDEzOjAyOjE1IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUywgTkVXUzogdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xLnByZTEKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGZvciA1LjcuMS5wcmUxCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogZml4IEMrKyBjb21tZW50cworCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IGZpeCBDKysgY29tbWVudHMKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBmaXggQysrIGNvbW1lbnRzCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogZml4IEMrKyBjb21tZW50cworCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sCisgICAgICAgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6CisKKyA1LjcuMS5wcmUxCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLnRvcDogdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xLnByZTEKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjZjRjY2U0YzE4OWNmNDdmNGM0ODlkYjQzYjdmYTUxMGY4OTA2YTFhIE1lcmdlOiBkZjkxYTlmCisKKyA5M2U5N2RjIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIE1vbgorIEF1ZyA4IDIyOjE1OjI4IDIwMTEgKzAxMDAKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTYtcGF0Y2hlcycgaW50bworCisgVjUtNi1wYXRjaGVzCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA4ICBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CisKKyAgICogIHdpbjMyL01ha2VmaWxlLWFwcHMuaW4sIHdpbjMyL2Rpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dCwgCisgICAgICB3aW4zMi9saWJhZ2VudC9NYWtlZmlsZS5pbiwgd2luMzIvbGlibmV0c25tcHRyYXBkL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluOiBEZWZpbmUKKworIF9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04gdG9rZW4gKGFzIHBlciBBbGV4JyBidWlsZAorIGluc3RydWN0aW9ucykKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqICB3aW4zMi9NYWtlZmlsZS1hcHBzLmluLCB3aW4zMi9saWJhZ2VudC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9saWJoZWxwZXJzL01ha2VmaWxlLmluLCB3aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbiwgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46IERlZmluZQorCisgX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiB0b2tlbiAoYXMgcGVyIEFsZXgnIGJ1aWxkCisgaW5zdHJ1Y3Rpb25zKQorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkZjE2ZGMyMjIxZTk5M2RkM2M2NjY1MGQ1ZTg3MjU3N2ZmZTZjMDFiIE1lcmdlOiA3MTRiYzgyCisKKyA4ZTVhMjhkIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEzOjU2OjQzIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZmZhMDViMDUxYWMzZTJiMTk3MTk1YTk5ODljYzdhOTFmZThkOTI4MiBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gQXVnIDggMTM6NTU6MzgKKyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiA6IGNvbW1pdCA3MTRiYzgyZmEwMWUyMWEzNjU1ODI0OTYzZmE1NGU5YjgwNDJmZmIwIE1lcmdlOiA2ZmU4ZmU1CisKKyAzZWYxZGI1IEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIE1vbgorIEF1ZyA4IDIxOjIxOjQ2IDIwMTEgKzAxMDAKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogY29tbWl0IGI0NTE2MDdkY2EwMTVjMTExZTk2ZmRmZWIyZGRiMDY2MWZiNGY3MjQgQXV0aG9yOiBEYXZlCisKKyBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIE1vbiBBdWcgOCAyMToyMDozMiAyMDExCisgKzAxMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNmZlOGZlNTI5NGE0NWJjN2U0ZWEzNzUxYTFhZDdhYTQ3YjVjYWJiMiBNZXJnZTogMzY0ZjhmZgorCisgZjY5YWJlMyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcKKyA4IDIyOjAyOjM4IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYzk0ODEzMDQ0YTRjNGE2MDhlOThlODAyMjMwNzVjNmZhZjA0ZWUxMSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDggMjE6NTY6MTUgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAzNjRmOGZmYWViOTBiNGViMDE2NWZjODU1Njg4Y2QwNjI2NjMyNzk0IE1lcmdlOiAzMjg3Mjk1CisKKyA3YWJiOTI2IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDExOjI0OjI2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNi1wYXRjaGVzJyBpbnRvCisKKyBWNS02LXBhdGNoZXMKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBkaXNwbGF5IHRoZSBicmFuY2ggd2UnbGwgY29tbWl0IHRvCisKKworMjAxMS0wOC0wOCAgVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMzODY2MzM6CisKKyBmcm9tIHd1bGYyMDAxOiBmaXggaW50ZWdlciBvdmVyZmxvdyBpbiBkaXNrIHBlcmNlbnQgY2FsY3VsYXRpb25zIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4NGE3NzVkMDU1N2ZlYTk3NTcwZTQxNzE1YTMxNjQ5NzBiNGMwM2EyIE1lcmdlOiA2ZmZmMWMxCisKKyBkMzczYzRmIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMjA6MTI6MzIgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3RyYXAuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM4NzEzOTogZnJvbQorCisgeWFiZXJhdW5leWE6IEF2b2lkIHNlZ2ZhdWx0IGlmIHRyYXBzZXNzIHRyYW5zcG9ydCBlbGVtZW50IGNhbnQgYmUKKyBwYXJzZWQgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbnNzZnBhdGNoYXBwbHk6IHNwbGl0IHRoZQorCisgZGlzcGxheWVkIGdpdCBjb21taXQgY29tbWFuZCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMzg2OTYxOgorCisgTWFrZSBTTk1QIEdFVCB3b3JrIGluIGFuIEFnZW50WCBzdWJhZ2VudCBpZiB3cml0ZSBzdXBwb3J0IGlzCisgZGlzYWJsZWQgdmlhIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAoTWFyayBSdXNrKS4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9taWIuYzogQ0hBTkdFUzogc25tcGxpYjogRml4IGEgY3Jhc2ggdGhhdCBjb3VsZCBiZQorCisgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QKKyBlcXVhbCB0byAtMS4KKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNmZmZjFjMWFlNTFiMDZjOWQ4MGZhZjE1MzczYTk2M2QxNzNmMTRlOCBNZXJnZTogODM3YzUyZQorCisgOGNjOTAwNCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBBdWcgOCAxMDo1ODo1OSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDhjYTdmZjFlNjkyY2FlYzQxODZiNzg4YzlhZTJkMjdiZTIxMzI5MGYgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgTW9uIEF1ZyA4IDEwOjMzOjU2CisgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBiOGY1MjljYmEyN2MwMTE0YjRjYjczNDBjZmQ0NDk1MDRmYTA3NTA2IE1lcmdlOiAwODIyZjJkCisKKyA1NTZlOTM4IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEwOjA1OjM2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBmaXggZnVuY3Rpb24gbmFtZSB0eXBvCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjk4ODJhMDc4YTk1OWEwZjc4YjAzZTAxOTY4ZjFkMTdiN2Y2YTI5OSBNZXJnZTogNWU5YmQyZgorCisgMDQwOWMwYSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBBdWcgOCAxMDowMzozNCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogbWFudWFsIG1lcmdlIG9mIHB1bGwvcHVzaAorCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbWFrZSBuc3B1bGwvbnNwdXNoIGNoZWNrIGZvciBhCisKKyBjbGVhbiByZXBvCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbmV3IGZ1bmN0aW9uICJuc21ha2VhbGwiIHRvIHRlc3QKKworIGJ1aWxkaW5nIG9uIGV2ZXJ5IGJyYW5jaAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGRlZmF1bHQgdG8gbWVyZ2UKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS03LXBhdGNoZXMnIGludG8KKworIFY1LTctcGF0Y2hlcworCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaDogQ0hBTkdFUzogV2luZG93czogQXZvaWQgdGhhdCBpZgorCisgdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBoYXZlIGJlZW4gYnVpbHQgd2l0aCBhbm90aGVyIHZlcnNpb24gb2YKKyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB0aGFuIEFjdGl2ZVBlcmwgdGhhdCB1c2luZyBvbmUgb2YgdGhlc2UgUGVybAorIG1vZHVsZXMgdHJpZ2dlcnMgYSAiRnJlZSB0byB3cm9uZyBwb29sIiBjcmFzaC4gVGhpcyByZWdyZXNzaW9uIHdhcworIGNhdXNlZCBieSBjb21taXQgM2IxNGM1OWNmODI3OGQ0MTAyMDdmZjQyZGViZGEyNjM2NDI2YTQ2OCAodGhlCisgbmV0c25tcF9mcmVlKCkgaW50byBTTk1QX0ZSRUUoKSBjaGFuZ2VzIGluIHRoZSAqLnhzIGZpbGVzKS4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZTEwOTUzOTkzMDcwM2NiMzA1MmQ1MjQxYjE4YWM2ZmMwNjJmYWFjYSBNZXJnZTogMGM5YjZjYgorCisgZTQ2YjE3MCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcKKyA4IDE4OjM0OjExIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9taWIuYzogQ0hBTkdFUzogc25tcGxpYjogRml4IGEgY3Jhc2ggdGhhdCBjb3VsZCBiZQorCisgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QKKyBlcXVhbCB0byAtMS4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgN2Y0MmQwZDkzMzIwNDg0MTUyMjcxNDI3Y2M5ODA4Y2JkYTQ5YmJkMCBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDggMDk6NTA6NTEgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwYzliNmNiZTlkYmUyZWM1MjE3YTk1YjY3ODFmZDdkYzFmNmViZGE3IE1lcmdlOiBmYTZjZWY1CisKKyA5NjMzMjBmIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMTg6MTQ6MzYgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBhM2I4NjU0YTIzMmM1NjNiYzk3Y2M5OTI1Y2Q5ODU5MGEzMGM1YmM1IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcgOCAxNzoyNDoxOCAyMDExICswMjAwCisKKzIwMTEtMDgtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGZhNmNlZjVjYTkxZGYzYTBiMDM0NTViNjg1NTlkMmJlZTI0ODEwMWMgTWVyZ2U6IGY1ZmU1MzYKKworIDhhZGQwZGEgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTdW4gQXVnCisgNyAxMDoxODo1NCAyMDExICswMjAwCisKKzIwMTEtMDgtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGEwZGQzY2FmMjU5MjZlNDM0NjU3MThiZjQxN2E0NjRjMmZiMzYzNjYgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU3VuIEF1ZyA3IDEwOjE3OjAxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogMzIgaXMgdG9vIGxpbWl0ZWQgZm9yCisKKyBiaWdnZXIgdGFibGVzOyBpbmNyZWFzZSB0aGUgbWF4IG1zZyBjb3VudCB0byAxMjgKKworMjAxMS0wOC0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBtYWtlIHJvbGx1cCBhbmQgc3luYyBzdXBwb3J0CisKKyAtLXJlYmFzZSBhbmQgY2hhbmdlIHRoZSBkZWZhdWx0IGJhY2sgdG8gbWVyZ2UKKworMjAxMS0wOC0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogUkVBRE1FLndpbjMyOiBDSEFOR0VTOiBXaW4zMjogRG9jdW1lbnRlZCBob3cgdG8gdXNlIGJ1aWxkLmJhdCB3aXRoCisKKyBPcGVuU1NMIGVuYWJsZWQKKworMjAxMS0wNy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogUkVBRE1FLndpbjMyOiBDSEFOR0VTOiBXaW5kb3dzOiBSZW1vdmUgb3V0ZGF0ZWQgaW5zdHJ1Y3Rpb25zIGFib3V0CisKKyBlZGl0aW5nIHdpbjMyXGxpYnNubXBfZGxsXGxpYnNubXAuZGVmIGZyb20gUkVBRE1FLndpbjMyCisKKzIwMTEtMDctMTUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIFJFQURNRS53aW4zMjogQ0hBTkdFUzogV2luMzI6IERvY3VtZW50IGhvdyB0byBidWlsZCA2NC1iaXQKKworIGV4ZWN1dGFibGVzIGZvciB0aGUgeDY0L2FtZDY0IGFyY2hpdGVjdHVyZQorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBmNWZlNTM2ZThmZDZjNDhmZTI0M2RlY2QzMWZhYzljZjFjOTJmNGNjIE1lcmdlOiA3ODUwZWExCisKKyA4MDkyOGE4IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTU6MTM6MjcgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4MDkyOGE4OTA5Y2ZhYjM3ZjAxYjM5YTA3MWEzZThhZDg1OTU2MjIyIE1lcmdlOiBmMTZhMDk0CisKKyAwZGJjODY5IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTM6NTc6MzAgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwZGJjODY5ZmVjMDdkOGU5MGRiZDFjOTU0OTNlZTdjYmM2MjNjOTVjIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcgNSAxMjo0MDozMSAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IEFkZAorCisgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUuZGVmIGFuZCBwZXJsL1NOTVAvdAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4NmMxZTJiOTY3OWZlYzJjZDc5OWJhNzYwMDVjM2Q2MGU5ZDQ3NjM0IE1lcmdlOiBiY2Q4NjM1CisKKyBmMTZhMDk0IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTI6MjA6NTAgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAyZjhkNGY1Nzk2Y2JjMWM3ZTk2N2FjZGFhODAxOWIyNGYxNTIwYTM2IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcgNSAxMjowMjo1MSAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogVW5icmVhayB0aGUgVjUtNC1wYXRjaGVzIC0gcmV2ZXJ0IGNvbW1pdAorCisgZDJjNDc2OGJkMmVmYjQ4NjY0NDM0YTgzMTQyNWMyZGRhODVkNzEzMyAoQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0gKKyAzMzYyMjMzOiBmcm9tIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZQorIG5vaXNlKS4KKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaDogCisKKyBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQKKyBiZjcxNzhiMGIyMjU4N2Q0M2QxYTgwYzI2OWNkMjE2YmQ1OTMwMjE0IChhZ2VudDogY2hhbmdlIHR5cGUgb2YKKyBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHRvIGxvbmcpCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmg6IFVuYnJlYWsgdGhlIFY1LTQtcGF0Y2hlcworCisgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQKKyAwZTY4NDJmZTA4MGNlYzg1M2IwOGNkMjMyMzAxNWFiYWJjMzgxY2UxIChDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENICisgMzM4MzQ0MTogZnJvbSBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mCisgZnJlZWQgbWVtb3J5KS4KKworMjAxMS0wOC0wNSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTkVXUzogbWlub3IgTkVXUyBwb2xpc2gKKworCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBiY2Q4NjM1MDcxMzgyMjk2M2QzNzZlZmY1ODJhOTJmNDNlNDI2ZDZjIE1lcmdlOiA5YzgxMGEzCisKKyA3YTIwZjcxIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTA6Mjg6NTUgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAzYWE5NDlmYmRmYzFhOTRhODM0MGFkOGJhZjhiMzE0NzU2YTBiYjlkIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcgNSAxMDoyNjoxNSAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDljODEwYTNiMzdiNjg1NzNjNDAzMzdlMjQ2ZTJmYWYyOTliNzdkMzEgTWVyZ2U6IDcxY2IyZTgKKworIDYxMGQ2M2YgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMTA6NDI6MDggMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA5NDM5MzBlMWUxMjQzODVmZDk0NzM4YjZkY2RhMzdkMjlkYzdhYzdmIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFRodSBBdWcgNCAxMDo0MTo0MQorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNGVkY2I4OGRhZThiMmU1OWRjNjgzZTgwZDQxNGZhN2VjZWMzNjg4NSBNZXJnZTogNjVmM2VlZgorCisgMmRkOWVkMCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAxMDoyNDoxMSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTUtcGF0Y2hlcycgaW50bworCisgVjUtNS1wYXRjaGVzCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGJjNWNhMDNhMDRhYjE5YzYzNGEzNGQwNjBiMGIxNmI3NDg0Y2I1MjAgTWVyZ2U6IDg4ZmRkYjcKKworIDkwYzBlNzUgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgNCAxOToxMzowNyAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYywgc25tcGxpYi9zbm1wdXNtLmM6IHNubXB1c206IEZpeCByZWNlbnRseQorCisgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncworCisyMDExLTA4LTA0ICBTdHVhcnQgSGVuZGVyc29uIDx0MGp3MmZ1MGttZ0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYzogQ0hBTkdFUzogb3BlbmJzZDoKKworIFBBVENIIDMzNTc5MzI6IGZyb20gdDBqdzJmdTBrbWc6IENsZWFuaW5nIGluIG1lbW9yeV9uZXRic2QuYyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmM6IENIQU5HRVM6IGFnZW50OgorCisgUEFUQ0ggMzM4NjE0NzogZnJvbSB3dWxmMjAwMTogZml4IFVDRC1TTk1QLU1JQjo6ZHNrVXNlZCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNDczZDdlNWNkNGQ0MTFiYmEyMGViODUzNTlkODcyODA2MzMwMWNiZCBNZXJnZTogYTRlOGI2MgorCisgODhmZGRiNyBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwOToyODoyMiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDIxMDFiYjJkN2FkNmRiMDM4Yzc1NWFhOTE5M2M4YWNlMGRiZDRmNTggQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVGh1IEF1ZyA0IDA5OjI4OjA2CisgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAuZ2l0aWdub3JlOiBpZ25vcmUgKi5vcmlnIGFuZCAqLnJlagorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogaGVscCBvdXRwdXQgZGVzY3JpYmVzIHJlYmFzZSB2cworCisgbWVyZ2UgYmV0dGVyCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGYxMjZhMTdjNmEzMDYzNDU1YTUxMTk0MGIwMjMwNDdhYmQ5YjQ4ZWUgTWVyZ2U6IGFkNzY1ZjQKKworIDc3YTQ3ODQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDk6MjU6MTYgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0NTJlMTcwN2YyMDllYzQ1ZTdjN2YyYTMwNDBlZjU5NWZiOWQxYWY2IE1lcmdlOiBkYzc1NWE2CisKKyBiMzcyZTVhIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA5OjI1OjAzIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgU3R1YXJ0IEhlbmRlcnNvbiA8dDBqdzJmdTBrbWdAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbiwgYWNjb25maWcuaCwgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2Q0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZDUuaDogQ0hBTkdFUzogb3BlbmJzZDogUEFUQ0gKKyAgICAgIDMzNTc5Mjc6CisKKyBmcm9tIHQwancyZnUwa21nOiBSZWNvZ25pc2Ugb3BlbmJzZDUgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogZml4IHdoZXJlIGFyZ3VtZW50cyBhcmUgc2V0CisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBzcGxpdCBuc3NmcGF0Y2hhcHBseSBpbnRvIHR3bworCisgcGFydHM6IGFwcGx5IGFuZCBjb21taXRpbmcKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBwYXRjaCB1c2luZyAtTgorCisKKzIwMTEtMDgtMDQgIERhdmlkIEFybm9sZCA8ZGphQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL2RlZmF1bHRfc3RvcmUuMy5ib3QsIG1hbi9lbmNvZGVfa2V5Y2hhbmdlLjEuZGVmLCAKKyAgICAgIG1hbi9maXhwcm9jLjEuZGVmLCBtYW4vbWliMmMuY29uZi41LmluLCBtYW4vbmV0LXNubXAtY29uZmlnLjEuZGVmLAorICAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2FwaS4zLmRlZiwgbWFuL25ldHNubXBfbWliX2FwaS4zLmRlZiwgCisgICAgICBtYW4vc25tcC5jb25mLjUuZGVmLCBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsCisgICAgICBtYW4vc25tcGJ1bGt3YWxrLjEuZGVmLCAgbWFuL3NubXBjbWQuMS5kZWYsIG1hbi9zbm1wY29uZi4xLmRlZiwKKyAgICAgIG1hbi9zbm1wZC44LmRlZiwgIG1hbi9zbm1wZC5jb25mLjUuZGVmLCBtYW4vc25tcGQuZXhhbXBsZXMuNS5kZWYsIAorICAgICAgbWFuL3NubXBkZWx0YS4xLmRlZiwgbWFuL3NubXBkZi4xLmRlZiwgbWFuL3NubXBnZXQuMS5kZWYsIAorICAgICAgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCBtYW4vc25tcG5ldHN0YXQuMS5kZWYsIG1hbi9zbm1wc2V0LjEuZGVmLCAKKyAgICAgIG1hbi9zbm1wc3RhdHVzLjEuZGVmLCBtYW4vc25tcHRhYmxlLjEuZGVmLCBtYW4vc25tcHRlc3QuMS5kZWYsIAorICAgICAgbWFuL3NubXB0cmFuc2xhdGUuMS5kZWYsIG1hbi9zbm1wdHJhcC4xLmRlZiwgbWFuL3NubXB0cmFwZC44LmRlZiwgCisgICAgICBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYsIG1hbi9zbm1wdXNtLjEuZGVmLCBtYW4vc25tcHZhY20uMS5kZWYsIAorICAgICAgbWFuL3NubXB3YWxrLjEuZGVmOiBDSEFOR0VTOiBtYW46IFBBVENIIDMzMTI4NjE6IGZyb20gZGphOiBNYW4KKyAgICAgIHBhZ2VzCisKKyBoeXBoZW4tdnMtbWludXMgY2xlYW51cCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IERldGVjdCAoYW5kIHJlamVjdCkgT3BlblNTTAorCisgMS4wLjAKKworMjAxMS0wOC0wNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IENvbW1hbmQtbGluZSBvcHRpb25zIGZvciBzaWxlbnQKKworIGluc3RhbGwKKworMjAxMS0wOC0wNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IEVuc3VyZSBXaW5kb3dzIHBhY2thZ2UKKworIHVuaW5zdGFsbHMgY29tcGxldGVseS4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgODFjNjNmYjVjNWU0YWJiOWMyOWFjYTg5YmY5ZDY5NDQxMDA4NmU5NyBNZXJnZTogNGE2OTIwYQorCisgZGM3NTVhNiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwODozMzozNCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzogYWRkZWQgc3BhY2luZyB0byBtYXRjaCB0aGUgbGF0ZXIgYnJhbmNoZXMKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IG1hbnVhbCBtZXJnZQorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzogcmVtb3ZlZCBhY2NpZGVudGlhbGx5IGR1cGxpY2F0ZWQgY29kZQorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogbWFudWFsIG1lcmdlCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBtYW51YWwgbWVyZ2UKKworCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbQorCisgeWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9zbm1wX3ZhcnMuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczogQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMwODoKKyAgICAgIGZyb20KKworIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyCisgc2h1ZmZsaW5nIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlCisKKyBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKworMjAxMS0wOC0wNCAgU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20KKworIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLmluOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzI4OiBmcm9tIHlhYmVyYXVuZXlhOgorCisgQWRkIEZyZWVCU0QgOS54IHRvIHN1cHBvcnRlZCBPU2VzIGxpc3QgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tCisKKyB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L3NubXBfdmFycy5jLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OgorICAgICAgZnJvbQorCisgeWFiZXJhdW5leWE6IEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoIHJlY2VudCBoZWFkZXIKKyBzaHVmZmxpbmcgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UKKworIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCisyMDExLTA4LTA0ICBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6IENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbQorCisgc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMjg6IGZyb20geWFiZXJhdW5leWE6CisKKyBBZGQgRnJlZUJTRCA5LnggdG8gc3VwcG9ydGVkIE9TZXMgbGlzdCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20KKworIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF92YXJzLmMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMDg6CisgICAgICBmcm9tCisKKyB5YWJlcmF1bmV5YTogRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggcmVjZW50IGhlYWRlcgorIHNodWZmbGluZyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZQorCisgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisKKzIwMTEtMDgtMDQgIFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tCisKKyBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20KKworIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZQorCisgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisKKzIwMTEtMDgtMDQgIFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tCisKKyBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgc25tcGxpYi9rZXl0b29scy5jLAorICAgICAgc25tcGxpYi9zY2FwaS5jOgorCisgQ0hBTkdFUzogYnVpbGRpbmc6IFBBVENIIDMzODM5NTE6IGZyb20geWFiZXJhdW5leWE6IEZpeCAtV3VudXNlZAorIGNvbXBpbGUgd2FybmluZ3Mgd2l0aCBGcmVlQlNEL05ldEJTRCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgc25tcGxpYi9rZXl0b29scy5jLAorICAgICAgc25tcGxpYi9zY2FwaS5jOgorCisgQ0hBTkdFUzogYnVpbGRpbmc6IFBBVENIIDMzODM5NTE6IGZyb20geWFiZXJhdW5leWE6IEZpeCAtV3VudXNlZAorIGNvbXBpbGUgd2FybmluZ3Mgd2l0aCBGcmVlQlNEL05ldEJTRCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZTg3OGFiYmRiMTgwOGVmODNlMGE4MDc0NTM2ZmI1NGUxMzIxOWE4YiBNZXJnZTogNDAzZGU0MgorCisgODc4ZmJmNCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwNzo1NTowMCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDI1MGFmYTA2ODkyZmQ4OTdhYzMxZTM4MzZhN2ZmYzllMmI0Y2Y3YjkgTWVyZ2U6IDJjMTRjMWMKKworIDNhZmM1ZTAgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDc6NTE6MzMgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA1NzhjZDdjY2UzNTFhZThkOTA0ZWMzZDgwYmU5YmE2ZDFkNDhhNzEyIE1lcmdlOiAyNTk4OGJlCisKKyBmM2JjNTUxIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA3OjUwOjU2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBhdXRvY29uZgorCisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzOiBDSEFOR0VTOiBidWlsZGluZzogUEFUQ0gKKworIDMzODM5NDk6IGZyb20geWFiZXJhdW5leWE6IEZpeCBhdXRvY29uZiB0ZXN0cyBmb3Igc3lzL21idWYuaCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBwcm9tcHQgZm9yIHBhdGNoIGFuZCBhbiBhcmVhLCBhbmQKKworIHVzZSB0aGUgcHJvcGVyIENIQU5HRVMgbGluZSBmb3JtYXQKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBVc2UgZmV0Y2ggLS1hbGwgYW5kIHJlYmFzZSBhcworCisgc3VnZ2VzdGVkIGJ5IEJhcnQgZm9yIHNwZWVkIGltcHJvdmVtZW50cworCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkNmExYTg5ZTZmNjQ4OTUxYTliODMxOTMyZDNjYzIzMDgyMWYyZDM3IE1lcmdlOiBkY2I3MTJmCisKKyA4NzJlMDEzIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDQgMTI6MDY6MTggMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA0NDk2OWI0ZTU3YzI3MTk0ZTViZDM1N2JjNDUyNzVmZWI4Njk1ZDIyIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBKdWwgOCAyMDo1MjoyNSAyMDExICswMjAwCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jOiBDSEFOR0VTOiBXaW4zMjogd2luRXh0RExMOiBJbnZva2UKKworIFNubXBVdGlsT2lkRnJlZSgpIGJlZm9yZSBTbm1wVXRpbE9pZENweSgpLiBJdCdzIG5vdCBjbGVhciB5ZXQgd2h5CisgdGhlIG9yaWdpbmFsIGNvZGUgZGlkIG5vdCBtYWtlIHNubXB3YWxrIHRyaWdnZXIgYSBtZW1vcnkgbGVhay4KKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZGNiNzEyZmZjODZiMzM1ODMwMDBlZjRhZTlhNTFjZWQyNWNkMTViZiBNZXJnZTogZTg1Y2ZhNQorCisgOTg2MjNlZiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcKKyA0IDExOjM2OjE3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgOGEwMWVjNjQyM2Q0MDBjNGExM2NjYWM2OGEzNzkxZDAyMThhMDg4NSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnIDQgMTE6MTk6MTcgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBlODVjZmE1OTliMjNiNzZkOTc5MTNjOTZiNWQ3MDNiZmY2YmE0OTQ0IE1lcmdlOiBiMDU2ZWU2CisKKyBlMjFlZWYyIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDQgMDg6NDQ6NDMgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IENIQU5HRVM6IGFnZW50OgorCisgQXZvaWQgdGhhdCBhIE1JQiB3YWxrIG9uIHRoZSBob3N0IHJlc291cmNlcyBNSUIgdHJpZ2dlcnMgYSBjcmFzaCBvbgorIEZlZG9yYSAxNQorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBiMDU2ZWU2ZWI1MzkwOWFkMDRmMTZlYzI2ZDI2OTBkN2EwODMxOTJhIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcgNCAwNzo1OTowNCAyMDExICswMjAwCisKKzIwMTEtMDgtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjCisgICAgICAgZXNzLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MKKyAgICAgICAuYywgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYywgYWdlbnQvc25tcF9hZ2VudC5jLCAKKyAgICAgIGFwcHMvc25tcGJ1bGtnZXQuYywgYXBwcy9zbm1wdGxzLmMsIGFwcHMvc25tcHRyYXBkX2xvZy5jLCAKKyAgICAgIHBlcmwvU05NUC9TTk1QLnhzLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLCAKKyAgICAgIHNubXBsaWIvZGlyX3V0aWxzLmMsIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcF9lbnVtLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsIHNubXBsaWIvc25tcHVzbS5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWIsIHNubXBkOgorCisgcGVybDogRWxpbWluYXRlIGRlYWQgdmFyaWFibGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGFlOGUzZWNkMmRmNGNmMzc2MjU5NDRhZGVkMWRmZTQ3MzVkNDRlZWEgTWVyZ2U6IDczMTg3Y2UKKworIDkzMzVlMTkgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBXZWQgQXVnIDMgMTQ6Mzc6MzYgMjAxMSAtMDcwMAorCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA3OTRmOWE2OWQ3ZWI2NDIyNjgyMDBiMGE0YjE5OTE1MWRlZjY2ZWQwIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBBdWcgMyAxNDozNjoyNQorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvbW1lbnQKKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBjb21tZW50CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0CisKKyBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvcgorCisgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBjb21tZW50CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0CisKKyBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvcgorCisgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcworCisyMDExLTA4LTAzICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIuaDogUmVlbmFibGUgSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZQorICAgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkKKworIHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6IFJlZW5hYmxlIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUKKyAgICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmk6IGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0bworCisgdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6IFdvcmRpbmcgY2hhbmdlcyB0bworCisgaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1VNjQubTJpOiBBZGRlZAorCisgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmk6IGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0bworCisgdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6IFdvcmRpbmcgY2hhbmdlcyB0bworCisgaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1VNjQubTJpOiBBZGRlZAorCisgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wNy0xOCAgSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jOiBhZ2VudDogY2hhbmdlCisKKyB0eXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdG8gbG9uZyBUeXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdmFyaWFibGUgaXMgY2hhbmdlZCBmcm9tIGludCB0byBsb25nLgorIFRoaXMgZml4ZXMgdGhlIGJ1ZyB3aXRoIHdyaXRpbmcgdG8gc25tcEVuYWJsZUF1dGhlblRyYXBzIGlmIHNlcnZlcgorIGlzIGNvbXBpbGVkIGZvciA2NGJpdCAoc25tcHNldCByZXBvcnRzIHdyb25nIGxlbmd0aCkuIFRoaXMgYnVnIHdhcworIGludHJvZHVjZWQgYSBsb25nIHRpbWUgYWdvIChieSBmYWVlY2QwIGNvbW1pdCkuICBBY3R1YWxseSB0aGlzIGlzIGEgJ2xlc3MgZWZmb3J0JyB0eXBlIG9mIGZpeCBidXQgSSB3b25kZXIgd2h5IHdlCisgbmVlZCBhIGxvbmcgdG8gc3RvcmUgYW4gSU5URUdFUiBpbiB0aGUgZmlyc3QgcGxhY2U/IFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPiBTaWduZWQtb2ZmLWJ5OiBXZXMKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNmFkN2UyOGZmOWU1ZTRlYmMxMzU4ZWUzOWNjOTc5NmE0NGExYmVlNyBNZXJnZTogZjI4MzJlMworCisgMWUxNTRjZSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFdlZCBBdWcKKyAzIDE5OjE1OjI0IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNjFiMTc4ZjFlZTg5NTJhYTAzYWEzYjFiYTUxZjRhNjY1NWU0N2YwMSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBXZWQgQXVnIDMgMTg6MDk6NDcgMjAxMSArMDIwMAorCisyMDExLTA4LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmg6IFdoaXRlc3BhY2Utb25seSBjaGFuZ2U6IGZpeCBpbmRlbnRhdGlvbgorCisgb2YgYW4gI2luY2x1ZGUgZGlyZWN0aXZlCisKKzIwMTEtMDgtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHBlcmwvTmV0U05NUC54czogQ0hBTkdFUzogUGVybDogUmVtb3ZlIGZpbGUgcGVybC9OZXRTTk1QLnhzCisKKyBiZWNhdXNlIGl0IGJyZWFrcyB0aGUgV2luZG93cyBidWlsZC4gIFRvIFdlczogaWYgeW91IGNhbiB0ZWxsIG1lIGhvdyB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0geW91IG9ic2VydmVkCisgSSdsbCB0cnkgdG8gZmluZCBhIHBvcnRhYmxlIGZpeC4gIFRoaXMgcmV2ZXJ0cyBjb21taXQgZDU0ODcxZjUyOTM2NzVjODA1OGVjY2U4OGZlZDViNjQ2YzgzNjMyMyAoIkFkZGVkCisgYSBib2d1cyBlbXB0eSAueHMgZmlsZSBmb3IgYnVuZGxpbmcgb24gbmV3ZXIgcGVybCB0aGF0IHdhbnRzCisgInNvbWV0aGluZyIiKS4KKworMjAxMS0wOC0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMGY0ODliMTk5YWRhYjQ4YjE2MzNlYmNhZjVmZjVhN2MyMmM0Y2I4OSBNZXJnZTogZjRlYWEwMgorCisgNzJhNTliYyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBBdWcKKyAyIDEwOjExOjUzIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgN2ZjYzBiODAzMmY4ZGE1YjdiYzMwMDU5YWYwYmE2NTZlYWU3MTA5MSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDEgMTQ6MTE6MjggMjAxMSArMDIwMAorCisyMDExLTA4LTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYzogRml4IGEgY29tcGlsZXIgd2FybmluZyBpbgorCisKKyBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYworCisyMDExLTA4LTAxICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBBZGQgZmlsZSBuYW1lcyBhbmQgcGF0dGVybnMgZm9yIG91dHB1dAorCisgZmlsZXMgZ2VuZXJhdGVkIGR1cmluZyB0aGUgV2luZG93cyBidWlsZAorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5CisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCisKKworMjAxMS0wOC0wMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIC5naXRpZ25vcmUsIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LWMuaW5jLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LXhzLmluYzogUmVtb3ZlIHR3byBnZW5lcmF0ZWQgUGVybCBmaWxlcy4KKworCisyMDExLTA4LTAyICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBmNGVhYTAyZDliMDc2YTY3ZDcyNzJkZTdlZWY4ZTlkZmJmMTg5YmJmIE1lcmdlOiA0MDEyNWQ4CisKKyBhZGFkY2I5IEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyAyIDAwOjU3OjUxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMiAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zOiBzdXBwcmVzcyAib2siIHRlc3Qgb3V0cHV0IGluIG5zYgorCisKKzIwMTEtMDgtMDEgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0MDEyNWQ4NTM5Y2Q4OWY5NTJmYmMyNDU4OGM1ZTgxZTljZDgyMWZlIEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gQXVnIDEKKyAxMzo1ODozMyAyMDExICswMjAwCisKKzIwMTEtMDgtMDEgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDVhY2YwZDJjZWIzOTc3OTY0ZWQzOWYwMDMwNzNiYTY0MTM4YzJlYmQgQXV0aG9yOiBUaG9tYXMKKworIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgU3VuIEp1bCAzMSAyMzo1Nzo0MQorIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYTc3MjJhODFmOWNiN2FhODY3MGU3YzIzODYwMTM2MmEzMTA4N2FjYyBNZXJnZTogMjQyZTE3OQorCisgYWU5YWM2YyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFN1biBKdWwKKyAzMSAwOToxMTo0NSAyMDExICswMjAwCisKKzIwMTEtMDctMzEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFwcHMvc3NodG9zbm1wLmM6IEZpeCBhbiBpbmNvcnJlY3Qgc291cmNlIGNvZGUgY29tbWVudDogdGhlcmUgaXMKKworIG5vIHJlcXVpcmVtZW50IGluIHRoZSBBTlNJIEMgc3RhbmRhcmQgdGhhdCBzdGFjayB2YXJpYWJsZXMgc2hvdWxkIGJlCisgaW5pdGlhbGl6ZWQgdG8gemVyby4KKworMjAxMS0wNy0zMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjQyZTE3OTdiMjY5NGEwNjg5ODU2YWUzNmQwNWQzNDEzYWFmOGQ3NyBBdXRob3I6IFRob21hcworCisgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBTdW4gSnVsIDMxIDAxOjQ0OjA5CisgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3N5c3RlbS5jOiBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcKKworIGdldGFkZHJpbmZvKCkgYW5kIEVBSV9GQUlMIChlLmcuIEhQLVVYIDEwLjIwLzExLjAwKQorCisyMDExLTA3LTMwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxOGRmNzU5ZjE5Yjk3NWM0NDlkMDEwYmIwYTE2MjExOWJiNjgzNjBkIE1lcmdlOiA1NGE0NGNiCisKKyA3MDUwNzE4IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU2F0IEp1bAorIDMwIDE2OjM5OjEzIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgODJkNzNmYjExYmUzYWUzMWYzOWM5ZDYxOGQ1Mzg4ZGM5YjEwMDZkNyBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsIDI5IDIwOjUxOjI3IDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogYXV0b3JlY29uZgorCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IGF1dG9yZWNvbmYKKworCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAxMDlmNjY5NGQ3ODhmNDhlYmQ5ZmMwYTFlOTBjNDVhYmMzN2JlYTIwIEF1dGhvcjogVGhvbWFzCisKKyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFNhdCBKdWwgMzAgMTQ6MjI6MTkKKyAyMDExICswMjAwCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDdkODEwMGVlZDQ1OWExZmYxYTIwYzA2NzM2NGZhNmNiNDc0OTEzMDkgTWVyZ2U6IDExNmMyNGYKKworIDllNDdhYzQgQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBTYXQgSnVsIDMwIDAwOjIwOjAxIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zLCBkaXN0L25zYi1uaWdodGx5LCBkaXN0L25zYi1wYWNrYWdlOiBtaW5vciBuc2IKKworIGZpeGVzL2VuaGFuY2VtZW50cyBmcm9tIG15IG9sZCBzdm4gdHJlZQorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxMTZjMjRmMGY3ZmIzZjk5YmE2NDY3MzBmNjFjNTZkMWFlMjNiYTQxIE1lcmdlOiA5ODJmYjdmCisKKyA0ZmMwYjhiIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEp1bAorIDI5IDExOjMxOjIwIDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYzQ4MTczYzA2YTllYWFkYmY4MWU2YjQ5NjJkNTVlZjBhNTRkYjI1MSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsIDI5IDEwOjI3OjM5IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogY29uZmlndXJlLCBsdG1haW4uc2gsIG00L2xpYnRvb2wubTQ6IFJlcnVuIGF1dG9yZWNvbmYKKworCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5CisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYzogRml4IHR3byBmaWxlbmFtZXMgaW4gaG9zdCBtaWIKKworIHNvdXJjZSBjb2RlIGNvbW1lbnRzLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgOTgyZmI3ZmQ4YmFiMjVjNDMyMmFhNjJjNTA0MzcwMzZjZTI5NmUzZSBNZXJnZTogMWVkYTY3NQorCisgMzQ1ODEyOCBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgSnVsIDI4IDE2OjI0OjAzIDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogRml4IHBvdGVudGlhbAorCisgc2lnc2VndiB3aGVuIGFuIGlmVGFibGUgZW50cnkgaXMgcmVtb3ZlZCBhcyByZXN1bHQgb2YgYm90aAorIGludGVyZmFjZV9yZXBsYWNlX29sZCBhbmQgaW50ZXJmYWNlX2ZhZGVvdXQgYXQgdGhlIHNhbWUgdGltZS4KKworMjAxMS0wNy0yOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYXBwcy9zc2h0b3NubXAuYzogTWFrZSBhcHBzL3NzaHRvc25tcC5jIGJ1aWxkIGFnYWluICh3YXMgYnJva2VuIGJ5CisKKyBjb21taXQgNjEyMjQ3Y2RmMTRjMWU3NDVjMzg0Y2VmZTFmM2ZkZTNlNDQ1YjM0NyB0aGF0IGNoYW5nZWQKKyBNU0dfTk9TSUdOQUwgaW50byBORVRTTk1QX05PU0lHTkFMKQorCisyMDExLTA3LTI4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxZWRhNjc1M2I3ZmU3ZDNiM2YyMTdjMDkyNTRlYzAyZDBlZTFkMGNlIE1lcmdlOiBkYjhiODYwCisKKyBhMmY5ZWNlIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEp1bAorIDI4IDE1OjMyOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOCAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOiAKKworIENIQU5HRVM6IHNubXBkOiBSZXN0b3JlIHN0b3JhZ2UgdGFibGVzIG9uIExpbnV4CisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjogRG9jdW1lbnQgaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIG9wdGlvbi4KKworCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfcmVwbGFjZV9vbGQnIG9wdGlvbiB0byByZW1vdmUgb2xkIGVudHJpZXMgaW4KKyBpZlRhYmxlIHdoZW4gYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbHJlYWR5IGV4aXNpbmcgb25lCisgYXBwZWFycy4gIEUuZy4gcmVtb3ZlIG9sZCBwcHAwIGludGVyZmFjZSB3aGVuIG5ldyBwcHAwIHNob3dzIHVwLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IERvY3VtZW50IHRoZSBpbnRlcmZhY2VfZmFkZW91dCBvcHRpb24uCisKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQWxsb3cgaWZUYWJsZQorCisgZW50cmllcyB0byBiZSBkZWxldGVkIGltbWVkaWF0ZWx5IHdoZW4gYXBwcm9wcmlhdGUgaW50ZXJmYWNlCisgZGlzYXBwZWFycyAoaS5lLiBpbnRlcmZhY2VfZmFkZW91dCA9IDAgd29ya3MgYXMgZXhwZWN0ZWQpLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfZmFkZW91dCcgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gc2V0CisgbGlmZXRpbWUgb2YgaWZUYWJsZSBlbnRyaWVzIG9mIHJlbW92ZWQgaW50ZXJmYWNlcy4gIFByZXZpb3VzIGxpZmV0aW1lIHdhcyBoYXJkY29kZWQgNSBtaW51dGVzLCBub3cgaXQncyBjb25maWd1cmFibGUuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkNjJhMGViOTA3MGI0ZDhkOWZlMmJjZmRiNGQ1M2QzN2VmODE0ZjliIEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUaHUgSnVsIDI4CisgMTQ6NDk6MDggMjAxMSArMDIwMAorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfcmVwbGFjZV9vbGQnIG9wdGlvbiB0byByZW1vdmUgb2xkIGVudHJpZXMgaW4KKyBpZlRhYmxlIHdoZW4gYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbHJlYWR5IGV4aXNpbmcgb25lCisgYXBwZWFycy4gIEUuZy4gcmVtb3ZlIG9sZCBwcHAwIGludGVyZmFjZSB3aGVuIG5ldyBwcHAwIHNob3dzIHVwLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IERvY3VtZW50IHRoZSBpbnRlcmZhY2VfZmFkZW91dCBvcHRpb24uCisKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQWxsb3cgaWZUYWJsZQorCisgZW50cmllcyB0byBiZSBkZWxldGVkIGltbWVkaWF0ZWx5IHdoZW4gYXBwcm9wcmlhdGUgaW50ZXJmYWNlCisgZGlzYXBwZWFycyAoaS5lLiBpbnRlcmZhY2VfZmFkZW91dCA9IDAgd29ya3MgYXMgZXhwZWN0ZWQpLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfZmFkZW91dCcgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gc2V0CisgbGlmZXRpbWUgb2YgaWZUYWJsZSBlbnRyaWVzIG9mIHJlbW92ZWQgaW50ZXJmYWNlcy4gIFByZXZpb3VzIGxpZmV0aW1lIHdhcyBoYXJkY29kZWQgNSBtaW51dGVzLCBub3cgaXQncyBjb25maWd1cmFibGUuCisKKzIwMTEtMDctMjggIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhcHBzL3NzaHRvc25tcC5jLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmM6IENIQU5HRVM6IGJ1aWxkaW5nOiBidWlsZAorICAgICAgZml4CisKKyBmb3Igc3lzdGVtcyBsYWNraW5nIE1TR19ET05UV0FJVAorCisyMDExLTA3LTI3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYzogQ0hBTkdFUzogc25tcGQ6IE1ha2UKKworIFRDUC1NSUI6OnRjcEN1cnJFc3RhYiB3b3JrIGFnYWluLiBXYXMgYnJva2VuIGluIDUuNyBieSB0aGUKKyBpbnRyb2R1Y3Rpb24gb2YgdGhlICJmZWF0dXJlcyIgZmVhdHVyZS4KKworMjAxMS0wNy0yNyAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGZiODgwNzRmYmJjMjY4YzdmMDUwOTQ5MTUzNWFlYzVmZWNiMDU2ODQgTWVyZ2U6IGE3NDNhZTUKKworIDM4MjEyNzMgQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgV2VkIEp1bCAyNyAxNDo0NzoyNSAyMDExICswMjAwCisKKzIwMTEtMDctMjcgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAzMWZhMDdjZDlmZmRlNDZkNDFkMmI1ODM4YzNmYzRkMDE1NDhiZmI1IEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgSnVsIDI3CisgMTQ6NDU6NDcgMjAxMSArMDIwMAorCisyMDExLTA3LTI3ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogQ0hBTkdFUzogc25tcGQ6IHJ1biBzaWduYWwgaGFuZGxlcnMgd2hlbiBzZWxlY3QoKQorCisgaXMgaW50ZXJydXB0ZWQuICBUaGlzIGJlaGF2aW9yIGlzIGluZGljYXRlZCBpbiBjb21tZW50IG9uIGxpbmUgMTI0NCwgYnV0IGl0IHdhcyBub3QKKyBhY3R1YWxseSBkb25lLgorCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAyZTk0NjZkN2Y1OWQ2NWQwNTAyNzc3MzVlNGVkOWQzMDcxOWZmNzUyIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwgMjYgMTM6MTA6MDQgMjAxMSArMDIwMAorCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA3NzA4Mjk2NzYwZWFmNWE4MGQ4NTQwNzQ2YzljMjQ5ODI2ZmQxYmZlIE1lcmdlOiBlYTExZTVlCisKKyBjZDZlMzgyIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bAorIDI2IDE2OjIxOjQxIDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOiBDbGFyaWZ5IGFuIElQdjYgc291cmNlIGNvZGUgY29tbWVudAorCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYywgbWFuL25ldHNubXBfaGFuZGxlci4zOiBTcGVsbGluZyBmaXg6CisKKyBkZWZpbmVkeSAtPiBkZWZpbmVkCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMzogU3BlbGxpbmcKKworIGZpeDogYWxldmlhdGUgLT4gYWxsZXZpYXRlCisKKzIwMTEtMDctMjYgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkZDJjNDcxMzM0OTNkNWEwMGRlNmIzY2RiY2ZhYzdlOWQ0NGI2ZmZlIE1lcmdlOiBmOWNjYmM3CisKKyBlYTExZTVlIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBKdWwgMjYgMTQ6MjU6MjggMjAxMSArMDIwMAorCisyMDExLTA3LTI2ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzVhODQ2NGM0MmE5NGMyNTBlZTJkZmEyYTQ3MzEwOWE3MzQyMDNkOCBBdXRob3I6IEphbgorCisgU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEp1bCAyNgorIDE0OjI0OjU1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGY5Y2NiYzc3MjY2NjEzNGQxZDE3OGI1MDVhZjlkZGNkZDllZDQyNDQgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIE1vbiBKdWwgMjUKKyAxNTowMjoxNSAyMDExICswMjAwCisKKzIwMTEtMDctMjAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGIwYzBhMzU1ZDVmNjAxYTExYmU0OTE0ZmJmNzEzNzE2YWJkMzBhMjkgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEp1bCAxOQorIDE4OjM2OjExIDIwMTEgLTA3MDAKKworMjAxMS0wNy0yMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzE0ZmMzODYxNGJhZjEwZDUxNzEzNmYwNDgwOTA3YjdmMDNkOGQ3NCBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgSnVsIDIwCisgMTM6NDQ6NTkgMjAxMSAtMDcwMAorCisyMDExLTA3LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jOiByZW1vdmUgYnJva2VuIHdoaXRlc3BhY2UgbGluZXMgdGhhdAorCisgbGVhZHMgdG8gcmVhZGluZyBjb25mdXNpb24KKworMjAxMS0wNy0yMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZWJkZDIxNmMwNzRiZjQxY2QzYTA4NGJkMTQ2ODljZjAxYzg4N2IzMSBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgSnVsIDE5CisgMTg6MzY6MTEgMjAxMSAtMDcwMAorCisyMDExLTA3LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAuZ2l0aWdub3JlOiB1cGRhdGVkIGdpdGlnbm9yZSB0byBpZ25vcmUgYSBudW1iZXIgb2YgYXV0by1nZW5lcmF0ZWQKKworIGZpbGVzCisKKzIwMTEtMDctMTkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmM6IHJlbW92ZSBicm9rZW4gd2hpdGVzcGFjZSBsaW5lcyB0aGF0CisKKyBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkZjVmNzAwNTVjZjliZTMzZjA1ZmI1MGFiZTJmNWE4MWVhYzA5MmFkIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwgMTkgMTE6MDc6MTkgMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBmNTk2ZjE4MjQyZGNkZmQ2Y2Y0OWM4OGRhMWQ4MzZjMTZlMjYwY2FjIE1lcmdlOiAwZjMwOWI0CisKKyA3MGRlZTRiIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bAorIDE5IDExOjMzOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIOgorICAgICAgMzM2OTY4MDoKKworIGZyb20gSWx5YSBZYW5vazogY2hhbmdlIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgZnJvbSBpbnQgdG8gbG9uZyBzdWNoCisgdGhhdCBtb2RpZnlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgTUlCIG9iamVjdCBkb2VzIG5vdCBvdmVyd3JpdGUKKyBtZW1vcnkgaW4gNjQtYml0IGJ1aWxkcy4KKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzM3MDY0NToKKworIGZyb20gQmlsbCBGZW5uZXI6IEZpeCBBZ2VudFggc3ViYWdlbnQgZm91ciBieXRlIGxlYWsKKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzOiBkbworCisgbm90IGludm9rZSBJU1JVTk5JTkcoKSBvbiBNaW5HVy4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzOgorCisgY2xlYW51cCAtIHJlbW92ZSBjb2RlIHRoYXQgYmVjYW1lIHN1cGVyZmx1b3VzLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBNaW5HVzogRG8gbm90CisKKyBhc3N1bWUgdGhhdCBraWxsLmV4ZSByZXBvcnRzIHZpYSBpdHMgZXhpdCBzdGF0dXMgd2hldGhlciB0aGUKKyBzaWduYWxsZWQgcHJvY2VzcyBzdGlsbCBleGlzdHMuCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBSZW1vdmUgdGhlIGZ1bmN0aW9uIFdBSVRPUkRJRSgpIGZyb20gc2ltcGxlX2V2YWxfdG9vbHMuc2ggc2luY2UgaXQKKyBpcyBuZXZlciBpbnZva2VkLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgU2ltcGxpZnkgV0FJVEZPUigpIGluIHNpbXBsZV9ldmFsX3Rvb2xzLnNoLiBUaGUgY29kZSB0aGF0IGhhbmRsZWQKKyBpbnZvY2F0aW9uIG9mIFdBSVRGT1IoKSB3aXRoIHplcm8gb3Igb25lIGFyZ3VtZW50cyBoYXMgYmVlbiBkcm9wcGVkCisgc2luY2UgV0FJVEZPUigpIGlzIGFsd2F5cyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50cy4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzOgorCisgbWlub3Igc2ltcGxpZmljYXRpb24uCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1OXRyYXBkdHJhcGhhbmRsZV9zaW1wbGU6IENIQU5HRVM6CisKKyB0ZXN0aW5nOiBTa2lwIHRlc3QgNTkgaWYgU0lHSFVQIGlzIG5vdCBzdXBwb3J0ZWQuIE1ha2VzIHRlc3QgNTkgcGFzcworIG9uIE1pbkdXLgorCisyMDExLTA3LTA2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBNaW5HVyBmaXgKKworCisyMDExLTA3LTA2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGZyYW1ld29yaworCisgcmVmYWN0b3Jpbmc6IEludHJvZHVjZSBXQUlURk9STk9UQ09ORCgpLgorCisyMDExLTA3LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgTWFrZSBTVE9QUFJPRyBzZW5kIFNJR1RFUk0gcmVwZWF0ZWRseS4gVGhpcyBmaXhlcyBhIHJhY2Ugd2hlcmUKKyBTSUdURVJNIGNvdWxkIGJlIHNlbnQgYmVmb3JlIHRoZSBTSUdURVJNIHNpZ25hbCBoYW5kbGVyIHdhcyBzZXQgdXAsCisgZXNwZWNpYWxseSB3aGVuIHJ1bm5pbmcgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgdW5kZXIgVmFsZ3JpbmQuCisgQ0hBTkdFUzogdGVzdGluZzogTWFrZSB0aGUgU05NUF9WRVJCT1NFPTEgb3V0cHV0IGV2ZW4gbW9yZSB2ZXJib3NlLgorCisyMDExLTA3LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGhhcm5lc3MKKworIHJlZmFjdG9yaW5nOiBpbnRyb2R1Y2UgRUNIT1NFTkRTSUdURVJNKCkgYW5kIEVDSE9TRU5EU0lHS0lMTCgpCisKKzIwMTEtMDctMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IEZpeCBhIGJ1ZyBpbgorCisgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaCB0aGF0IHdhcyBpbnRyb2R1Y2VkCisgaW4gY29tbWl0IDkzOGQ3NWMuCisKKzIwMTEtMDctMDEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IElnbm9yZSAqLmV4ZSBmaWxlcyBnZW5lcmF0ZWQgYnkgdGhlIFdpbjMyCisKKyBidWlsZAorCisyMDExLTA3LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgVGVzdCBvbmx5IG9uY2UgZHVyaW5nIGEgdGVzdCB3aGV0aGVyIHRoZSBzaGVsbCBzdXBwb3J0cyBzdWItc2Vjb25kCisgc2xlZXBpbmcgaW5zdGVhZCBvZiByZXBlYXRlZGx5LgorCisyMDExLTA3LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ydW46IENIQU5HRVM6IHRlc3Rpbmc6IENoYW5nZWQKKworIGRlZmF1bHQgdGltZW91dCBmcm9tIDFzIHRvIDEwcyB3aGVuIHRoZSByZWdyZXNzaW9uIHRlc3RzIGFyZSBydW4KKyB1bmRlciBWYWxncmluZAorCisyMDExLTA3LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgQWZ0ZXIgaGF2aW5nIHNlbnQgU0lHVEVSTSB0byBzbm1wZCBvciBzbm1wdHJhcGQsIHdhaXQgdW50aWwgdGhlCisgcHJvY2VzcyBoYXMgc3RvcHBlZCBiZWZvcmUgc2VuZGluZyBTSUdLSUxMLiBUaGlzIHJhY2UgY29uZGl0aW9uIHdhcworIGhpdCBtb3N0IGVhc2lseSB3aGVuIHJ1bm5pbmcgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgdW5kZXIgVmFsZ3JpbmQuCisgQ0hBTkdFUzogdGVzdGluZzogQ2hlY2sgUElEIGZpbGUgZXhpc3RlbmNlIGFmdGVyIGhhdmluZyByZWFkIGl0CisgaW5zdGVhZCBvZiBiZWZvcmUuIFRoaXMgZml4ZXMgdGhlIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBQSUQgZmlsZQorIGRpc2FwcGVhcmVkIGFmdGVyIHRoZSBleGlzdGVuY2UgY2hlY2sgYW5kIGJlZm9yZSBpdCB3YXMgcmVhZC4KKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudAorCisgaW50cm9kdWNlZCBieSBwYXRjaCAzMzEwMjUwIC8gcjIwNDk0OiB1c2UgJWxkIHRvIHByaW50IGEgdmFsdWUgb2YKKyB0eXBlIG9pZCBpbnN0ZWFkIG9mICVkLiAgVGhpcyBwYXRjaCBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdG8gVjUuNiBTVk4gcGF0Y2hlczogZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWRnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwZjMwOWI0OTNjMjFkM2M2OTE0NDg3NTE0YjQxNTYwNzU0ZmZjZGY5IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwgMTkgMDg6Mzc6NTAgMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxYjc0NTRiYzI4MTU2ODQ3MGExMzAwNDc2ZDJlZGI0ZjQxMWU2MDI5IE1lcmdlOiA4ZDlkY2M4CisKKyA2OTBlYTdkIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bAorIDE5IDA4OjMxOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYXBwcy9zbm1wdHJhcGQuYzogQ0hBTkdFUzogc25tcHRyYXBkOiBBZGQgbWlzc2luZyBuZXdsaW5lCisKKyBjaGFyYWN0ZXIgaW4gYSBsb2cgbWVzc2FnZQorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhcHBzL3NubXB0cmFwZC5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IEludm9rZSBzaHV0ZG93bl9wZXJsKCkgd2hlbgorCisgc2h1dHRpbmcgZG93bgorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6IFNwZWxsaW5nIGZpeDogYnJhbmtldCAtPiBicmFja2V0CisKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBSdW4gYXV0b3JlY29uZi4KKworIEZpeGVzIGJ1aWxkIGJyZWFrYWdlIGNhdXNlZCBieSBwYXRjaAorIGQ1ODhlYzg1M2JkMDUzMWYyMTJmY2JmNTFiOTYyYjk2YzY4MjhiNTkgKFJQTSA0Ljkgc3VwcG9ydCkKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZDYxN2Q4NGY4M2ZhNjllZDlmYTlmOThlZmM0YWZhZjg4MGQxMjFmMiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgSnVsIDE0IDE2OjQzOjQ3IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBNYWtlCisKKyBuZXRzbm1wX2lwdjZfZm10YWRkcigpIHNob3cgdGhlIElQdjYgc2NvcGUgSUQKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYywgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IEFkZCBzdXBwb3J0CisgICAgICBmb3IKKworIElQdjYgYWRkcmVzcyBzY29wZSBJRAorCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IFJ1biBhdXRvcmVjb25mCisKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYTU2NzIxYTNlNzc1NGUzODlkYWE3ZThhM2Q1NzkyODk5ZWRjOWRlMyBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgSnVsIDE0IDE2OjE4OjMyIDIwMTEgKzAyMDAKKworMjAxMS0wNy0xNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgODQ0ZDRjZTg2N2JmM2FiZTdiNzUzNmM1ZGJmYmE0MDE5MzdhOGQ0YSBNZXJnZTogZWVkMDE5OAorCisgNjEwMzZhOCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIEZyaSBKdWwgMTUgMTU6MzM6MTAgMjAxMSAtMDcwMAorCisyMDExLTA3LTE1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA4NTFiY2Y1M2ZjZDEzY2RmMGJhOWYxMmU1ZDYwM2U3M2Y4YmI5NjExIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIEZyaSBKdWwgMTUKKyAxNTozMjo0OSAyMDExIC0wNzAwCisKKzIwMTEtMDctMTQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOiBmaXggYSB0eXBvCisKKworMjAxMS0wNy0xMyAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAbG9jYWxob3N0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogc25tcGxpYjogIHR3ZWFrIHBhdGNoIDMwNDQ4ODggdG8gcmVzdG9yZQorCisgcHJvcGVyIG5vbi1lcnJvciByZXR1cm4gZHVyaW5nIG1pYiBsb2FkaW5nCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogYWRkZWQgNS43IHBhdGNoZXMgdG8gdGhlIGJyYW5jaCBsaXN0IGFuZCBmaXggdGhlIHJlbGVhc2UgZmlsZQorCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogYWRkZWQgNS43IHBhdGNoZXMgdG8gdGhlIGJyYW5jaCBsaXN0CisKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9yZWxlYXNlOiBhIGNvcHkgb2YgdGhlIHJlbGVhc2UgZmlsZSBhcHBsaWVkIHRvIHRoZSBvbGRlcgorCisgYnJhbmNoZXMKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCA1LjcgcGF0Y2hlcworCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGM0MzEyMzFlOGYwYTM5ZDE5NTBiYzcyYzMyZTM0MDJmOTBmYTgwMzAgTWVyZ2U6IDU2ZmVlNDAKKworIGEyYWMyNGQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gSnVsIDExIDE5OjMzOjE3IDIwMTEgLTA3MDAKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvcHkgb2YgdGhlCisKKyBzaGVsbC1mdW5jdGlvbnMgdG8gdGhlIG9sZGVyIGJyYW5jaAorCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L3JlbGVhc2U6IGEgY29weSBvZiB0aGUgcmVsZWFzZSBmaWxlIGFwcGxpZWQgdG8gdGhlIG9sZGVyCisKKyBicmFuY2hlcworCisyMDExLTA3LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGZvciA1LjcKKworCisyMDExLTA3LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcKKworCisyMDExLTA3LTAxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzogUmV2ZXJ0ICJmaXggZHRsc3VkcAorCisgdHJhbnNwb3J0IGFkZHJlc3MgZm9ybWF0IGZ1bmN0aW9uIiBUaGlzIHJldmVydHMgY29tbWl0IDJhYjNhNmU2ZjJmY2MxZmYzZTVmMGZiNWRjNWQwNWU0OTg4MjBkODkuICAgLSBmb3Igc29tZSByZWFzb24gSSBzYXcgJ3JjJyBhbmQgbXkgYnJhaW4gaW50ZXJwcmV0ZWQgaXQgYXMgICAgJ3ByZS1yZWxlYXNlJy4gV2hhdCBjYW4gSSBzYXksIGl0IHdhcyBsYXRlLiA6LS8KKworMjAxMS0wNy0wMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAbG9jYWxob3N0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6IGZpeCBkdGxzdWRwIHRyYW5zcG9ydAorCisgYWRkcmVzcyBmb3JtYXQgZnVuY3Rpb24gIC0gdXBkYXRlIGlwdjQgZm10YWRkciB0byBoYW5kbGUgc29ja2FkZHIgYW5kIHRvIGNoZWNrICAgIHNpemUgYmVmb3JlIGFzc3VtaW5nIGRhdGEgaXMgYWRkciBwYWlyICAtIG1vdmUgZHRsc3VkcCBmdW5jdGlvbnMgdG8gZXh0cmFjdCBhZGRyKHMpIHRvIHRsc2Jhc2UKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNTZmZWU0MDExOGIyMWE5ZjRkYzAyYTZmMjQ3ZjdkYTZmYzY5YTAwNSBNZXJnZTogZDM5MTk0YgorCisgOWZmNDcxNCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFdlZCBKdW4gMjkgMjM6MTg6MTMgMjAxMSAtMDcwMAorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogZml4IHRhZyBwdXNoaW5nCisKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IGZpeCB0YWcgcHVzaGluZworCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBtaXNjIHB1YmxpY2F0aW9uIGZpeGVzIGZvdW5kIHdoaWxlCisKKyBwdWJsaXNoaW5nCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy5yYzMKKworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcucmMzCisKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHJlbW92ZSB1bm5lZWRlZCBjb21tZW50CisKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IG1pc2MgcHVibGljYXRpb24gZml4ZXMgZm91bmQgd2hpbGUKKworIHB1Ymxpc2hpbmcKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogcmFuIGF1dG9oZWFkZXIgdG8gYWRkIHRoZQorCisgbWlzc2luZyB0ZW1wbGF0ZSBpZmRlZnMKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS43LnJjMgorCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNy5yYzIKKworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA2NGI2YzY4YTg0OTMwYWIwMWUzZTE0NmM0OWYzYWI1MzgyZWZkYTNlIE1lcmdlOiAxMjdlZWMyCisKKyBkMzkxOTRiIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgV2VkIEp1biAyOSAxNzoxMjo0NiAyMDExIC0wNzAwCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGRmOWNmOWExZTI5M2QwNWEyNDc4NjY5NGY2OGMwNWEyYmUxM2E5YjMgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgV2VkIEp1biAyOQorIDE2OjM0OjExIDIwMTEgLTA3MDAKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHVzZSBnaXQyY2wgdG8gZ2VuZXJhdGUgdGhlIENoYW5nZUxvZyBmaWxlOworCisgbmVlZHMgbXVjaCBtb3JlIHdvcmsuCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiB1c2UgdGhlIG5ldyBydW4tYXV0b2NvbmYgc2NyaXB0CisKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9ydW4tYXV0b2NvbmY6IEEgc2NyaXB0IHRvIGludm9rZSB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIHRoZQorCisgYXV0b2NvbmYgdG9vbAorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogcmVtYWluaW5nIGNvbW1hbmQgbGluZSBjaGFuZ2VzIGZvciBzdm4gLT4KKworIGdpdAorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogbWFrZSB0aGUgYnJhbmNoIGVjaG8gb3V0cHV0IGFuZCBzdm4gdXBkYXRlCisKKyBjb252ZXJ0ZWQgdG8gZ2l0IGVxdWl2YWxlbnRzCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBwdWxsIHRoZSBicmFuY2ggaW5mbyBmcm9tIGdpdAorCisKKzIwMTEtMDYtMjkgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYywgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOiBUd2VhayBSUE0gaGFuZGxpbmcgdG8gd29yayB3aXRoCisgICAgICBsaWJyYXJ5CisKKyB2ZXJzaW9uIDQuOQorCisyMDExLTA2LTI5ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZDU4OGVjODUzYmQwNTMxZjIxMmZjYmY1MWI5NjJiOTZjNjgyOGI1OSBBdXRob3I6IEphbgorCisgU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgV2VkIEp1biAyOQorIDE2OjA3OjAwIDIwMTEgKzAyMDAKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9yZWxlYXNlOiBub3RlZCB0aGF0IHRoZSBtYXN0ZXIgYnJhbmNoIGlzIGluIHJjIHN0YXRlCisKKworMjAxMS0wNi0yOCAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKyAgICogOiBjb21taXQgOGIyM2I0YzEzOTIzYjhjYWY0ZDRhZWQzMmE0NTA5MzM5MzRmZjQ2MSBNZXJnZTogMTUzNzgxZAorCisgNDdmNTA0OCBBdXRob3I6IFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PiBEYXRlOiAgIFR1ZQorIEp1biAyOCAxMzoxNDo1MiAyMDExIC0wNzAwCisKKzIwMTEtMDYtMjggIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisgICAqIDogY29tbWl0IGFmOGIyMzUyMzRmNzI5NDRhNjQ5YTc2ZjBkMzBjZmY5NWFjMmU4OTUgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+IERhdGU6ICAgVHVlIEp1biAyOCAxMzoxMToxOSAyMDExCisgLTA3MDAKKworMjAxMS0wNi0yOCAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiB1c2UgZ2l0IG1lcmdlIHdpdGggdGhlIC0tbG9nCisKKyBvcHRpb24KKworMjAxMS0wNi0yOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMTUzNzgxZGJmYjJhZmMwMDAzYmE0ZTU4ZmZjY2E1MzAwMWU0ODZkNiBNZXJnZTogYjNlODBkZQorCisgM2M1YTQwOSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdW4KKyAyOCAxOTo0MzoxMyAyMDExICswMjAwCisKKzIwMTEtMDYtMjggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IDliYzgyZTRjYTQ4MzdmMDAwNzJkYmE4NmI5NDk3YTI3MTg2OTA5ZjkgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1biAyOCAxOToxMzozNSAyMDExICswMjAwCisKKzIwMTEtMDYtMjggIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisgICAqIEZBUTogV2UncmUgbm93IHVzaW5nIGdpdCEKKworCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworICAgKiA6IGNvbW1pdCBiM2U4MGRlOWIwN2QyODJmZjExYWY4YjA2YTkxZDY0Mjc5ZDMyNjFkIE1lcmdlOiBjNGFkMjc4CisKKyA2YTVlNWE2IEF1dGhvcjogV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+IERhdGU6ICAgTW9uCisgSnVuIDI3IDIxOjM0OjU5IDIwMTEgLTA3MDAKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKyAgICogOiBjb21taXQgMzhmZTgxNzdkNTMzMTM1YTZjYzY4MjcyNGYxNmE5MTExM2JjZDdmMyBNZXJnZTogN2Q5MTdjZgorCisgZGQ1OGJhZiBBdXRob3I6IFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PiBEYXRlOiAgIE1vbgorIEp1biAyNyAyMTozNDo1NiAyMDExIC0wNzAwCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorCisgICAqIDogY29tbWl0IDVjMTc3ZjUxN2QxNmYwNTU0NWIyNzlkMTZmMGU0ZmQ1Njk2YmU2NTEgTWVyZ2U6IGYwZDZiZjAKKworIGMyYmNlYmMgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4gRGF0ZTogICBNb24KKyBKdW4gMjcgMjE6MzQ6NTUgMjAxMSAtMDcwMAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworICAgKiA6IGNvbW1pdCA5Yzk3Njk1NzJlYjhjMDNiNjk1NTZjMWM1YWFiOWI0ZDU2YzZkMWQzIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIE1vbiBKdW4gMjcKKyAxNDoxMToxNCAyMDExICswMDAwCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBmZWF0dXJlIHRvIG5vdCByb2xsCisKKyBicmFuY2hlcyBjdXJyZW5seSBpbiByYyBwaGFzZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBuc3JvbGx1cCBmdW5jdGlvbiBmb3IKKworIHJvbGxpbmcgYnJhbmNoZXMgdXB3YXJkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGNyZWF0ZWQgYW4gbnNwYXRjaGFwcGx5IGZ1bmN0aW9uCisKKyB0byBhcHBseSBhIHByZXZpb3VzbHkgdGVzdGVkIHBhdGNoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIG5zdHJ5cGF0Y2ggZnVuY3Rpb24gdG8KKworIHRlc3QgcGF0Y2ggYXBwbGljYXRpb24gYWdhaW5zdCB2YXJpb3VzIGJyYW5jaGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCB2ZXJib3NlIG91dHB1dCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBtb3JlIHByZWZpeCBjaGFuZ2VzIGFuZCBiZXR0ZXIKKworIHNldHRpbmcgb2YgZGVmYXVsdCB2YWx1ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHVzZSBucyBwcmVmaXhlcyBpbnN0ZWFkIG9mIGdlbmVyaWMKKworIHNubXAgcHJlZml4ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiAKKworIE1pc3NpbmcgY2hlY2sgZm9yIHJwbXRzLmggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmU6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjMgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IFR3ZWFrIFJQTSBoYW5kbGluZyB0byB3b3JrCisKKyB3aXRoIGxpYnJhcnkgdmVyc2lvbiA0LjkgQmFzZWQgb24gYSBwYXRjaCBieSBKYW4gU2FmcmFuZWsgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jOiBQcm92aWRlIGEgZnJhbWV3b3JrIGZvciByZWFkaW5nCisKKyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5IChyYXRoZXIgdGhhbiBxdWVyeWluZworIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKyBmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmU6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jOiBQcm92aWRlIGEKKworIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5CisgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKyBmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IFByb3ZpZGUgYQorCisgZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20gYSBjYWNoZSBkaXJlY3RvcnkKKyAocmF0aGVyIHRoYW4gcXVlcnlpbmcgdGhlIFJQTWRiIGRpcmVjdGx5KS4gIE15IGFwb2xvZ2llcyB0byBKZWZmIEpvaG5zb24gZm9yIHRoZSBkZWxheSBpbiBhZGRpbmcgdGhpcworIGZ1bmN0aW9uYWxpdHkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYzogUHJvdmlkZSBhCisKKyBmcmFtZXdvcmsgZm9yIHJlYWRpbmcgUlBNIHBhY2thZ2UgaW5mb3JtYXRpb24gZnJvbSBhIGNhY2hlIGRpcmVjdG9yeQorIChyYXRoZXIgdGhhbiBxdWVyeWluZyB0aGUgUlBNZGIgZGlyZWN0bHkpLiAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzCisgZnVuY3Rpb25hbGl0eS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZvbGxvdy11cCBmb3IgcjIwNTExOiByZWFsbHkgdXNlCisKKyB0aGUgcHJvcGVyIGZvcm1hdCBzcGVjaWZpY2F0aW9uLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZvbGxvdy11cCBmb3IgcjIwNTExOiByZWFsbHkgdXNlCisKKyB0aGUgcHJvcGVyIGZvcm1hdCBzcGVjaWZpY2F0aW9uLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudAorCisgaW50cm9kdWNlZCBieSBwYXRjaCAzMzEwMjUwIC8gcjIwNDk0OiB1c2UgJWxkIHRvIHByaW50IGEgdmFsdWUgb2YKKyB0eXBlIG9pZCBpbnN0ZWFkIG9mICVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudAorCisgaW50cm9kdWNlZCBieSBwYXRjaCAzMzEwMjUwIC8gcjIwNDk0OiB1c2UgJWxkIHRvIHByaW50IGEgdmFsdWUgb2YKKyB0eXBlIG9pZCBpbnN0ZWFkIG9mICVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6IFVzZSAlcCB0byBwcmludCBhIHBvaW50ZXIgaW5zdGVhZAorCisgb2YgJWxkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOiBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQKKworIG9mICVsZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTEzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBydW4gY29ycmVjdCB2ZXJzaW9uIG9mIGF1dG9jb25mIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTEzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTEzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmU6IHJhbiBhdXRvY29uZiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xMCAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY2VydF91dGlsLmM6IEluY2x1ZGUgc3RkbGliLmggdG8gbWFrZSBkbWFsbG9jIGhhcHB5CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTAgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3NlY3VyaXR5X21vZHVsZXM6IEZpeCBidWlsZCBvZiBzbm1wdXNtCisKKyB3aGVuIGFkZGl0aW9uYWwgc2VjIG1vZHVsZXMgcmVxdWVzdGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUwMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY2VydF91dGlsLmM6IEluY2x1ZGUgc3Rk54it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOeIrfWAkYvvvaT1gIy154it9YCRi++9pPWAj7HniK31gJGL772k9YCMtPWAkpFiLmggdG8gbWFrZSBkbWFsbG9jIGhhcHB5CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUwMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wOSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzogQ0hBTkdFUzogQlVHOiAzMTUxODQ1OiBmaXggbXVsdGlwbGUKKworIHJlZ2lzdHJhdGlvbnMgb2Ygc25tcCB0cmFuc3BvcnQgaGFuZGxlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTA5ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOiBDSEFOR0VTOiBCVUc6IDMxNTE4NDU6IGZpeCBtdWx0aXBsZQorCisgcmVnaXN0cmF0aW9ucyBvZiBzbm1wIHRyYW5zcG9ydCBoYW5kbGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wOCAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCBzbm1wbGliL3NubXBfYXBpLmMsIAorICAgICAgc25tcGxpYi9zeXN0ZW0uYzogbW9yZSBkbnNzZWMgdHdlYWtzICAtIGNyZWF0ZSBhbiBhcHAtZ2xvYmFsCisgICAgICB2YWxpZGF0b3IgY29udGV4dCBmb3IgdXNlIHdpdGggYWxsICAgIHZhbGlkYXRpb24gcm91dGluZXMuIG1haW5seQorICAgICAgdXNlZnVsIGZvciBsb25nLWxpdmVkIGFwcHMuICAgLSB1c2UgdGhlIGFwcHR5cGUgYXMgdGhlIHZhbGlkYXRvcgorICAgICAgJ3Njb3BlJywgYWxsb3dpbmcgICAgZm9yIGFwcC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9mIHZhbGlkYXRpb24KKyAgICAgIHZpYSBsaWJ2YWwncyAgICBkbnN2YWwuY29uZiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ5OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wNyAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmg6IGFkZCBhIG1heCBkZWZpbmUgZm9yCisKKyBlYWNoIGRlZmF1bHQgc3RvcmUgdHlwZSAgIG5vdCBhY3R1YWxseSB1c2VkLCBqdXN0IGEgaGVscGZ1bCByZW1pbmRlciBmb3IgdGhvc2UgYWRkaW5nICAgbmV3IGlkcyB3aG8gbWlnaHQgbm90IHRoaW5rIHRvIGNoZWNrIE5FVFNOTVBfRFNfTUFYX1NVQklEUy4gICAgKHRoZSBib29sIGxpc3QgaXMgcmFwaWRseSBhcHByb2FjaGluZyB0aGUgY3VycmVudCBsaW1pdC4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wNyAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX3J1bjogbWVudGlvbiBidWlsZGRpciB3aGVuCisKKyBjb21wbGFpbmluZyBhYm91dCBub3QgYmVpbmcgcnVuIGZyb20gc291cmNlIHRyZWUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDk2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBwZXJsL1NOTVAvU05NUC54czogUmV2ZXJ0ZWQgcjIwMzYyOiB0aGF0IHBhdGNoIG1ha2VzIHNlbnNlIG9uIHRoZQorCisgdHJ1bmsgYW5kIHRoZSA1LjYgYnJhbmNoIGJ1dCBub3Qgb24gdGhlIDUuNSBub3Igb24gdGhlIDUuNCBicmFuY2guICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMzMTAyNTA6IGZyb20gZmVubmVyOiBtaXNjIGZpeGVzIGZvciBkZWJ1Z2dpbmcKKyBvdXRwdXQgb2YgYWdlbnR4IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzMxMDI1MDogZnJvbSBmZW5uZXI6IG1pc2MgZml4ZXMgZm9yIGRlYnVnZ2luZworIG91dHB1dCBvZiBhZ2VudHggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDk0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMzMTAyNTA6IGZyb20gZmVubmVyOiBtaXNjIGZpeGVzIGZvciBkZWJ1Z2dpbmcKKyBvdXRwdXQgb2YgYWdlbnR4IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVMsIE5FV1M6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDkyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDogbWFrZSBkZXBlbmQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogZml4ZWQgYXV0b2NvbmYgdmVyc2lvbiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ5MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UKKworIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHBlcmwvU05NUC9TTk1QLnhzOiBSZWluc3RhdGUgYW4gInVudXNlZCIgbGFiZWwgdGhhdCBpcyBhY3R1YWxseQorCisgc3RpbGwgcmVxdWlyZWQuICAocmVmZXJlbmNlZCBpbiBsaW5lIDI3MTApIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOiBGaXggdHlwbyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMDEgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDogbWFrZSBkZXBlbmQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgCisgICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywKKyAgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzogZG9jdW1lbnRhdGlvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTAxICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBDSEFOR0VTLCBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOiBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6IGZpeCB4bWwgcXVvdGluZyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvcGFyc2UuYzogZml4IG5vbiBleGlzdGVudCBtYWxsb2MgbWFjcm8gdG8gdXNlIGNhbGxvYworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oLCBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6CisKKyBzbm1wbGliOiBBcHBsaWVkIHRoZSBpbnRlbnQgb2YgcGF0Y2ggMzA0NDg4OCB0byBhbGxvdyBhcHBsaWNhdGlvbnMKKyB0byByZWFkIHRoZSBlcnJvciBtZXNzYWdlcyBvZiBhIE1JQiBwYXJzaW5nIGZhaWx1cmUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMzEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IAorCisgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IKKyBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoCisKKyBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZAorIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCisgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoCisKKyBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZAorIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCisgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoCisKKyBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZAorIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCisgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0zMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoCisKKyBvZiBzd2FwcGVkLW91dCBwcm9jZXNzZXMgb24gTGludXguICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZAorIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCisgL3Byb2MvUElEL3N0YXR1cyBpbiBib3RoIGNhc2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogdXAgdGhlIGFudGUgYW5kIHJ1biBvdGhlciB0ZXN0IHN1aXRlcworCisgYmVzaWRlcyBqdXN0IHRoZSBkZWZhdWx0IHNldCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28KKworIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHVzbS5jOiBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkCisKKyByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYzogQXBwbGllZCB0aGUgaW50ZW50CisgICAgICBvZgorCisgcGF0Y2ggMzI5OTM4NiB3aGljaCBmaXhlcyBkdXBsaWNhdGUgZW50cmllcyBvbiBhIFNJR0hVUC4gIFRvIGFjaGlldmUKKyB0aGlzIHNvbWUgbmV3IGhlYWRlcl9jb21wbGV4IGZ1bmN0aW9ucyBuZWVkZWQgdG8gYmUgY3JlYXRlZCB0aGF0CisgZGlkbid0IGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIG9sZGVyIG9uZXMuICBUaGUgbm90aWZpY2F0aW9uIGNvZGUKKyBub3cgY2FsbHMgdGhlc2UgbmV3ZXIgZnVuY3Rpb25zLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDU5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbworCisgdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvCisKKyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28KKworIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbworCisgdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZAorCisgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZAorCisgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZAorCisgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZAorCisgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaCwgcGVybC9NYWtlZmlsZS5QTDoKKworIE5FV1M6IHNubXBkOiBwYXRjaCAzMTMxMzk3OiBmcm9tIHRha2V2b3M6IGh1Z2Ugc3BlZWR1cHMgb2YgdGhlCisgVENQL1VEUCBUYWJsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBwZXJsL05ldFNOTVAueHM6IEFkZGVkIGEgYm9ndXMgZW1wdHkgLnhzIGZpbGUgZm9yIGJ1bmRsaW5nIG9uCisKKyBuZXdlciBwZXJsIHRoYXQgd2FudHMgInNvbWV0aGluZyIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYzogQ0hBTkdFUzoKKworIHNubXBkOiBwYXRjaCAzMzA2NDc2OiBmcm9tIHRpbnlweXJhbWlkczogZml4IG1lbW9yeSBsZWFrIGluIHRoZQorIHN3cnVuIGNvbnRhaW5lciBsb2FkaW5nIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IHBhdGNoIDMzMDY0NzY6IGZyb20gdGlueXB5cmFtaWRzOiBmaXggbWVtb3J5IGxlYWsgaW4gdGhlCisgc3dydW4gY29udGFpbmVyIGxvYWRpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6IEZvbGxvdy11cCBmb3IgcjIwNDQ5OiB1c2UKKworIE5FVFNOTVBfUFJJbyAidSIgZm9yIHByaW50aW5nIHN1YmlkcyBpbnN0ZWFkIG9mIG9ubHkgTkVUU05NUF9QUklvLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOiBGb2xsb3ctdXAgZm9yIHIyMDQ0OTogdXNlCisKKyBORVRTTk1QX1BSSW8gInUiIGZvciBwcmludGluZyBzdWJpZHMgaW5zdGVhZCBvZiBvbmx5IE5FVFNOTVBfUFJJby4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0CisKKyBWaXN1YWwgU3R1ZGlvOiBMaW5rIHdpdGggZ2RpMzIubGliIGlmIE9wZW5TU0wgaGFzIGJlZW4gZW5hYmxlZAorIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0CisKKyBWaXN1YWwgU3R1ZGlvOiBMaW5rIHdpdGggZ2RpMzIubGliIGlmIE9wZW5TU0wgaGFzIGJlZW4gZW5hYmxlZAorIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0CisKKyBWaXN1YWwgU3R1ZGlvOiBMaW5rIHdpdGggZ2RpMzIubGliIGlmIE9wZW5TU0wgaGFzIGJlZW4gZW5hYmxlZAorIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmg6IEZvbGxvdy11cCBmb3IgcjIwNDQ4OiBzaW5jZSB0aGUKKworICJvaWQiIHR5cGVkZWYgaGFzIGJlZW4gY2hhbmdlZCBiYWNrIGZyb20gdWludDMyX3QgdG8gdV9sb25nLCBjaGFuZ2UKKyBORVRTTk1QX1BSSW8gZnJvbSBORVRTTk1QX1BSSTMyIGludG8gImwiLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oOiBGb2xsb3ctdXAgZm9yIHIyMDQ0ODogc2luY2UgdGhlCisKKyAib2lkIiB0eXBlZGVmIGhhcyBiZWVuIGNoYW5nZWQgYmFjayBmcm9tIHVpbnQzMl90IHRvIHVfbG9uZywgY2hhbmdlCisgTkVUU05NUF9QUklvIGZyb20gTkVUU05NUF9QUkkzMiBpbnRvICJsIi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOiBDSEFOR0VTOiBzbm1wZDogVXNlIHByb3BlciBmb3JtYXQKKworIHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYzogQ0hBTkdFUzogc25tcGQ6IFVzZSBwcm9wZXIgZm9ybWF0CisKKyBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cyBmb3IgcHJpbnRpbmcgdmFsdWVzIG9mIHR5cGUgJ29pZCcuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6IENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdAorCisgc3BlY2lmaWVyIGluIGRlYnVnIHN0YXRlbWVudHMgZm9yIHByaW50aW5nIHZhbHVlcyBvZiB0eXBlICdvaWQnLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOiBDSEFOR0VTOiBzbm1wZDogVXNlIHByb3BlciBmb3JtYXQKKworIHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oOiByZXZlcnQgT0lEIHR5cGVkZWYgdG8gdV9sb25nIGFzCisKKyBhZ3JlZWQgdG8gb24gLWNvZGVycyBhbmQgaW4gdGhlIGFkbWluIG1lZXRpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oOiByZXZlcnQgT0lEIHR5cGVkZWYgdG8gdV9sb25nIGFzCisKKyBhZ3JlZWQgdG8gb24gLWNvZGVycyBhbmQgaW4gdGhlIGFkbWluIG1lZXRpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDQ4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTI0ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zeXN0ZW0uYzogUmVtZW1iZXIgdG8gcmV0dXJuIGluZm8gYWxzbyB3aXRob3V0IEROU1NFQworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjQgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOiBBZGRlZCBOVUxMLWNoZWNrcworCisgYWZ0ZXIgbWFsbG9jIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjQgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOiBBZGRlZCBOVUxMLWNoZWNrcworCisgYWZ0ZXIgbWFsbG9jIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjQgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOiBBZGRlZCBOVUxMLWNoZWNrcworCisgYWZ0ZXIgbWFsbG9jIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjQgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOiBBZGRlZCBOVUxMLWNoZWNrcworCisgYWZ0ZXIgbWFsbG9jIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6IENIQU5HRVM6CisKKyBhZ2VudDogQlVHOiAzMzA1MTU3OiBGaXggaXBBZGRyZXNzUHJlZml4IGhhbmRsaW5nIG9mIElQdjYgYWRkcmVzc2VzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jOiBDSEFOR0VTOgorCisgYWdlbnQ6IEJVRzogMzMwNTE1NzogRml4IGlwQWRkcmVzc1ByZWZpeCBoYW5kbGluZyBvZiBJUHY2IGFkZHJlc3NlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogQlVHOiAzMjk1NDA3OiBGaXgKKworIGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogQlVHOiAzMjk1NDA3OiBGaXgKKworIGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDQ0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogQlVHOiAzMjk1NDA3OiBGaXgKKworIGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzogQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeAorCisgaGFuZGxpbmcgb2Ygdm9pZCBwb2ludGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzCisgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6CisKKyBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcworIChzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOgorCisgc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMKKyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzCisgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzCisgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3NubXBBQUw1UFZDRG9tYWluLmMsIHNubXBsaWIvc25tcEFsaWFzRG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jLCBzbm1wbGliL3NubXBJUFhEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBTU0hEb21haW4uYywgc25tcGxpYi9zbm1wU1RERG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYywgc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcFVuaXhEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjM0NzU0OiBFbnN1cmUKKyAgICAgIG9sZAorCisgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTIwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IEJVRzoKKyAgICAgIDMyMzQ3NTQ6CisKKyBFbnN1cmUgb2xkIGZfY3JlYXRlX2Zyb21fdHN0cmluZyBob29rIGlzIGluaXRpYWxpemVkIHRvIE5VTEwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BJUHY2RG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBCVUc6CisgICAgICAzMjM0NzU0OgorCisgRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcyBpbml0aWFsaXplZCB0byBOVUxMIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0yMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jLCBzbm1wbGliL3NubXBJUFhEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBTVEREb21haW4uYywgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsIHNubXBsaWIvc25tcFVuaXhEb21haW4uYzogQ0hBTkdFUzoKKworIHNubXBsaWI6IEJVRzogMzIzNDc1NDogRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcworIGluaXRpYWxpemVkIHRvIE5VTEwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogdXNlICNpZmRlZgorCisgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogdXNlICNpZmRlZgorCisgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogdXNlICNpZmRlZgorCisgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogdXNlICNpZmRlZgorCisgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiB1c2UgI2lmZGVmCisKKyByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wX2FwaS4zLmRlZiwgbWFuL3NubXBfc2Vzc19hcGkuMy5kZWY6IENIQU5HRVM6IG1hbjogQlVHOgorCisgMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zZXNzaW9uX2FwaS4zLmRlZiwgbWFuL3NubXBfc2Vzc19hcGkuMy5kZWY6IENIQU5HRVM6IG1hbjogQlVHOgorCisgMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9uZXRzbm1wX3Nlc3NfYXBpLjMuZGVmLCBtYW4vbmV0c25tcF9zZXNzaW9uX2FwaS4zLmRlZjogCisKKyBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kCisgc25tcF9hc3luY19zZW5kIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0NDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL25ldHNubXBfc2Vzc19hcGkuMy5kZWYsIG1hbi9uZXRzbm1wX3Nlc3Npb25fYXBpLjMuZGVmOiAKKworIENIQU5HRVM6IG1hbjogQlVHOiAzMTkwNzI1OiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQKKyBzbm1wX2FzeW5jX3NlbmQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wX2FwaS4zLmRlZiwgbWFuL3NubXBfc2Vzc19hcGkuMy5kZWY6IENIQU5HRVM6IG1hbjogQlVHOgorCisgMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFjZQorCisgY29uZGl0aW9uIGluIGhyU1dSdW5UYWJsZSBUcmVhdCB0aGUgcmVhZHMgZnJvbSAvcHJvYy88cGlkPi8qCisgY2FyZWZ1bHksIHByb2Nlc3NlcyBjYW4gZXhpdCBpbiB0aGUgbWlkZGxlIG9mIHByb2Nlc3NpbmcuICAoYWxyZWFkeQorIGZpeGVkIGluIFY1LTUtcGF0Y2hlcyBhbmQgVjUtNC1wYXRjaGVzIGluIFNWTiByZXYuIDIwMTE1LCBkdW5ubyB3aHkKKyBJIGRpZCBub3QgcGF0Y2ggdHJ1bmspIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmM6IENIQU5HRVM6IHNubXBkOiBmaXhlZCByYWNlCisKKyBjb25kaXRpb24gaW4gaHJTV1J1blRhYmxlIFRyZWF0IHRoZSByZWFkcyBmcm9tIC9wcm9jLzxwaWQ+LyoKKyBjYXJlZnVseSwgcHJvY2Vzc2VzIGNhbiBleGl0IGluIHRoZSBtaWRkbGUgb2YgcHJvY2Vzc2luZy4gIChhbHJlYWR5CisgZml4ZWQgaW4gVjUtNS1wYXRjaGVzIGFuZCBWNS00LXBhdGNoZXMgaW4gU1ZOIHJldi4gMjAxMTUsIGR1bm5vIHdoeQorIEkgZGlkIG5vdCBwYXRjaCB0cnVuaykgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE5ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9zY2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBCVUc6CisKKyAzMTg0Njk3OiBEb24ndCByZWZlcmVuY2UgaW50ZXJuYWwgTUQ1IHdoZW4gaXQncyBleHBsaWNpdGx5IGRpc2FibGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTkgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL3NjYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IEJVRzoKKworIDMxODQ2OTc6IERvbid0IHJlZmVyZW5jZSBpbnRlcm5hbCBNRDUgd2hlbiBpdCdzIGV4cGxpY2l0bHkgZGlzYWJsZWQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTE2ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzogbWFrZSBzdXJlIHdlIGdldCB0aGUgaGludCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9SVU5URVNUUzogRm9sbG93LXVwIGZvciByMjA0MzI6IHRlc3RpbmcvUlVOVEVTVFMgd2l0aG91dAorCisgYXJndW1lbnRzIHdvcmtzIGFnYWluIGFzIGl0IHNob3VsZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvUlVOVEVTVFM6IEZvbGxvdy11cCBmb3IgcjIwNDMyOiB0ZXN0aW5nL1JVTlRFU1RTIHdpdGhvdXQKKworIGFyZ3VtZW50cyB3b3JrcyBhZ2FpbiBhcyBpdCBzaG91bGQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYzogUmFuCisKKyBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMgdGhyb3VnaCBkb3MydW5peC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDcxY29tMnNlYzZfc2ltcGxlOiBGaXhlZCBhIHR5cG8gaW4gYQorCisgY29tbWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA3MWNvbTJzZWM2X3NpbXBsZTogRml4ZWQgYSB0eXBvIGluIGEKKworIGNvbW1lbnQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvUlVOVEVTVFM6IFJVTlRFU1RTIHdvcmtzIGFnYWluIGZvciB0ZXN0cyB3aXRoIGEgZm91ci1kaWdpdAorCisgbnVtYmVyLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9SVU5URVNUUzogUlVOVEVTVFMgd29ya3MgYWdhaW4gZm9yIHRlc3RzIHdpdGggYSBmb3VyLWRpZ2l0CisKKyBudW1iZXIuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc3lzdGVtLmM6IEZpeGVkIGEgcmVjZW50bHkgaW50cm9kdWNlZCBidWcgaW4KKworIG5ldHNubXBfZ2V0YWRkcmluZm8oKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQzMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6IERvY3VtZW50IHRoYXQgdGhlIHVjZC1zbm1wCisKKyBkaXNraW8gY29kZSBzdGlsbCBoYXMgdG8gYmUgbW9kaWZpZWQgc3VjaCB0aGF0IGRpc2tpb19mcmVlX2NvbmZpZygpCisgZ2V0cyBpbnZva2VkIHVwb24gU0lHSFVQLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6IERvY3VtZW50IHRoYXQgdGhlIHVjZC1zbm1wCisKKyBkaXNraW8gY29kZSBzdGlsbCBoYXMgdG8gYmUgbW9kaWZpZWQgc3VjaCB0aGF0IGRpc2tpb19mcmVlX2NvbmZpZygpCisgZ2V0cyBpbnZva2VkIHVwb24gU0lHSFVQLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzogZml4IGNhc3QgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTMgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hCisgICAgICAgY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2VzCisgICAgICAgcy5jOiBSZXZlcnQgMjA0MjAgIkNIQU5HRVM6IHNubXBkOiBGaXhlZCBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCCisKKyB0YWJsZXMgaW50cm9kdWNlZCBieSBwYXRjaCAjMzA1MzQzNi4iIFJldmVydCAxOTcwOCAiQ0hBTkdFUzogc25tcGQ6CisgUEFUQ0g6IDMwNTM0MzY6IGZyb206IHRha2V2b3M6IGZpeDogdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzCisgaW52YWxpZCBtZW1vcnkgYWNjZXNzIiB0aGUgYnVnIDMwNTM0MzYgaXMgZml4aW5nIHdhcyBpbnRyb2R1Y2VkIGluIHIxNzcxOSwgYW5kIGZpeGVkIGluCisgcjE3ODYxLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvaW5ldC5jLCBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMsIAorICAgICAgYXBwcy9zbm1wdHJhcGRfbG9nLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczIsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3N5c3RlbS5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmM6IG1vcmUgZG5zIHJlbGF0ZWQgdHdlYWtzICAtCisgICAgICBhZGQgbmV0c25tcF9nZXRob3N0YnlhZGRyICAtIGFsd2F5cyBkZWZpbmUgbmV0c25tcF8qIHZlcnNpb25zOworICAgICAgbG9nb25jZSBpZiB1bmRlcmx5aW5nICAgIGZ1bmN0aW9uIGlzIG5vdCBhdmFpbGFibGUgIC0gdXNlIG5ldworICAgICAgZnVuY3Rpb25zIGluIGRpc21hbiBtaWJzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFwcHMvc25tcG5ldHN0YXQvaW5ldDYuYywgc25tcGxpYi9zbm1wdjMuYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmM6IHVzZSBuZXcgbmV0c25tcCBkbnMKKworIGZ1bmN0aW9ucyBpbiBhcHBzL3NubXBsaWIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDI2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oLCBzbm1wbGliL3N5c3RlbS5jOiBtb3ZlIEROU1NFQworCisgdmFsaWRhdGlvbiBpbnRvIHJlc29sdmVyIHdyYXBwZXIgZnVuY3Rpb25zICAgLSBhbGxvd3Mgb3RoZXIgY29kZSB0byBiZW5lZml0IGZyb20gdmFsaWRhdGlvbiAgIC0gbmV3IG5ldHNubXBfZ2V0aG9zdGJ5bmFtZSwgbmV0c25tcF9nZXRhZGRyaW5mbyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbWliLmM6IEZvbGxvdy11cCBmb3IgcjIwNDE3OiByZXBsYWNlZCBhIG1hbGxvYygpL2ZyZWUoKQorCisgcGFpciBieSBhIGNhbGwgdG8gcmVhbGxvYygpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9taWIuYzogRm9sbG93LXVwIGZvciByMjA0MTc6IHJlcGxhY2VkIGEgbWFsbG9jKCkvZnJlZSgpCisKKyBwYWlyIGJ5IGEgY2FsbCB0byByZWFsbG9jKCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL21pYi5jOiBGb2xsb3ctdXAgZm9yIHIyMDQxNzogcmVwbGFjZWQgYSBtYWxsb2MoKS9mcmVlKCkKKworIHBhaXIgYnkgYSBjYWxsIHRvIHJlYWxsb2MoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluay5jOiBGaXggZm9yIFJIRUw0CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jOiBIZWFkZXIgZmlkZGxpbmcgZm9yIHRoZQorCisgYmVuZWZpdCBvZiBSSEVMNCwgU29sYXJpcywgT3BlbkJTRCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hCisgICAgICAgY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2VzCisgICAgICAgcy5jOiBDSEFOR0VTOiBzbm1wZDogRml4ZWQgbWVtb3J5IGxlYWsgaW4gVENQLU1JQiB0YWJsZXMKKyAgICAgIGludHJvZHVjZWQKKworIGJ5IHBhdGNoICMzMDUzNDM2LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXMKKyAgICAgICBzLmM6IENIQU5HRVM6IHNubXBkOiBGaXhlZCBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCIHRhYmxlcworICAgICAgaW50cm9kdWNlZAorCisgYnkgcGF0Y2ggIzMwNTM0MzYuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOiBSZXZlcnRlZCBhY2NpZGVudGFsbHkgY29tbWl0dGVkCisKKyBjaGFuZ2VzIG9mIHIyMDQxMi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyBzbm1wX2ZyZWVfc2Vzc2lvbigpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyBzbm1wX2ZyZWVfc2Vzc2lvbigpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyBzbm1wX2ZyZWVfc2Vzc2lvbigpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluCisKKyBzbm1wX2ZyZWVfc2Vzc2lvbigpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL21pYi5jOiBDSEFOR0VTOiBzbm1wbGliOiBfbWliaW5kZXhfYWRkKCkgbm8gbG9uZ2VyIHJlYWRzCisKKyBwYXN0IHRoZSBlbmQgb2YgdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhcnJheSBfbWliaW5kZXhlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbWliLmM6IENIQU5HRVM6IHNubXBsaWI6IF9taWJpbmRleF9hZGQoKSBubyBsb25nZXIgcmVhZHMKKworIHBhc3QgdGhlIGVuZCBvZiB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFycmF5IF9taWJpbmRleGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9taWIuYzogQ0hBTkdFUzogc25tcGxpYjogX21pYmluZGV4X2FkZCgpIG5vIGxvbmdlciByZWFkcworCisgcGFzdCB0aGUgZW5kIG9mIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgX21pYmluZGV4ZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbGNkX3RpbWUuYzogQXZvaWQgdGhhdCBNU1ZDIHRyaWdnZXJzIGEgY29tcGlsZXIgd2FybmluZyBvbgorCisgdGhlIGNvZGUgaW4gc25tcGxpYi9sY2RfdGltZS5jLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jOiBBdm9pZAorCisgcmVhZGluZyBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbgorCisgdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBOZXRUb01lZGlhVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbgorCisgdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBOZXRUb01lZGlhVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbgorCisgdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBOZXRUb01lZGlhVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbgorCisgdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBOZXRUb01lZGlhVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzogQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5CisKKyBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSQorIGlmVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeQorCisgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpZlRhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkKKworIGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaWZUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzogQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5CisKKyBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSQorIGlmVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jOiBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhaworCisgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJCisgaXBBZGRyVGFibGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYzogQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsKKworIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSQorIGlwQWRkclRhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmM6IENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrCisKKyBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkKKyBpcEFkZHJUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaDogCisKKyBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpCisgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpcEFkZHJUYWJsZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudCBzcGVsbGluZyBmaXg6CisKKyBleGl0ZW50IC0+IGV4aXN0ZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nLCBzbm1wbGliL21pYi5jOiBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudAorCisgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nLCBzbm1wbGliL21pYi5jOiBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudAorCisgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nLCBzbm1wbGliL21pYi5jOiBEb2N1bWVudGF0aW9uIC8gc291cmNlIGNvZGUgY29tbWVudAorCisgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmM6IENIQU5HRVM6IFdpbjMyOiBCdWlsZAorCisgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jIG9ubHkgaWYgTkVUU05NUF9FTkFCTEVfSVBWNgorIGhhcyBiZWVuIGRlZmluZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXMsIGNvbmZpZ3VyZSwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZTogaW5zdGFsbCB0aGUgYnVpbHQgZmVhdHVyZQorCisgaGVhZGVycyB0b28gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDA5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI1c25tcHYzZ2V0U0hBREVTX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjZzbm1wdjNnZXRTSEFBRVNfc2ltcGxlOiBDSEFOR0VTOgorCisgdGVzdGluZzogVGVzdHMgMDI1IGFuZCAwMjYgcGFzcyBvbiBNaW5HVyBldmVuIGlmIHdpbkV4dERMTCBoYXMgYmVlbgorIGVuYWJsZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2NWFnZW50ZXh0ZW5kX3NpbXBsZTogVDA2NSByb2J1c3RuZXNzCisKKyBpbXByb3ZlbWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfdm9pZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuaDogQ0hBTkdFUzogc25tcGQ6IHVjZF9zbm1wIGJ1aWxkcworCisgYWdhaW4gb24gTWluR1cgYW5kIEN5Z3dpbi4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IGluc3RhbGwgdGhlIG5ldC1zbm1wLWZlYXR1cmVzLmggZmlsZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlOiBJbXByb3ZlZCB0ZXN0CisKKyByb2J1c3RuZXNzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOiBDb21waWxlciB3YXJuaW5nIGZpeGVzLiAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA0MDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZworCisgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZworCisgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZworCisgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBNaW5HVzogYXZvaWQgdGhhdCBnY2MgY29tcGxhaW5zIGFib3V0IHBhc2luZworCisgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDQwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90b29scy5jOiBBdm9pZCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcyBpZiB0aGUgbGFzdCBjaGFyCisKKyBvZiB0aW1lX3N0cmluZyBpcyBpbiB0aGUgcmFuZ2UgMHg4MC4uMHhmZSBhbmQgY2hhciBpcyBhIHNpZ25lZCB0eXBlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDAxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmg6IFJldmVydGVkIHIyMDM4MCBiZWNhdXNlIGl0IGJyZWFrcworCisgYWxsIHN0YXRlbWVudHMgdGhhdCBwcmludCBhbiBPSUQgc3ViLUlEIG9uIGFueSA2NC1iaXQgcGxhdGZvcm0uIFRoZQorIGVmZmVjdCBvZiByMjAzODAgb24gYmlnIGVuZGlhbiBhcmNoaXRlY3R1cmVzIHdhcyB0aGF0IGEgIjAiIHdvdWxkIGJlCisgcHJpbnRlZCBpbnN0ZWFkIG9mIHRoZSBPSUQgc3ViLUlEIChhdCBsZWFzdCB3aXRoIHRoZSBMUDY0IGFuZCB0aGUKKyBJTFA2NCBtb2RlbHMpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNDAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTEwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTLCBORVdTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6IG1ha2UKKworIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMTAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6IEMrKyAtPiBDIGNvbW1lbnRzCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTkVXUzogTkVXUyB1cGRhdGUgZm9yIDUuNyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oOiByZXZlcnQgdGhlIG9pZCB0eXBlZGVmIHJlc2l6aW5nCisKKyBmcm9tIHIxNzgwOSBiZWNhdXNlIGl0IGJyb2tlIGJhY2t3YXJkcyBjb21wYXQsIGFzIHBvaW50ZWQgb3V0IGJ5CisgdXNlcnMgb24gdGhlIC1jb2RlcnMgbGlzdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogdXNlIHByb3BlciBhdXRvY29uZiB2ZXJzaW9uIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYywgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLAorICAgICAgIHBlcmwvT0lEL09JRC5wbSwgcGVybC9TTk1QL1NOTVAucG0sIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSwgCisgICAgICBwZXJsL2FnZW50L2FnZW50LnBtLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbTogVmVyc2lvbiBudW1iZXIgdXBkYXRlCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUudG9wOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogYWRkZWQgYSBtaXNzaW5nIDAgaW4gdGhlIHJldmlzaW9uIGRhdGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6IFVzZSBzeW1ib2xpYworCisgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jOiBVc2Ugc3ltYm9saWMKKworIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYzogVXNlIHN5bWJvbGljCisKKyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmM6IFVzZSBzeW1ib2xpYworCisgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jOiBVc2Ugc3ltYm9saWMKKworIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9yZmNtaWJzLmRpZmY6IElBTkEgaGFzIGZpeGVkIHRoZQorCisgSUFOQS1JUFBNLU1FVFJJQ1MtUkVHSVNUUlktTUlCIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvcmZjbWlicy5kaWZmOiBJQU5BIGhhcyBmaXhlZCB0aGUKKworIElBTkEtSVBQTS1NRVRSSUNTLVJFR0lTVFJZLU1JQiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogYWRkZWQgYSBuZXcgUkVWSVNJT04gY2xhdXNlIHRvIGxpc3QgdGhlCisKKyBjaGFuZ2VzIGluIHRoZSB0aGUgcmVjZW50IHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE5FV1M6IGFkZGVkIHBpbmcvdHJhY2Vyb3V0ZSBtaWJzIG5vdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6IHdlIGFjdHVhbGx5IHdhbnQgdG8gdXNlIHRoZSBiYXNlCisKKyBPSUQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LCBub3QgdGhlIHJlZyBPSUQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6IGZpeGVkIHRoZSBwcm94eSBzdXBwb3J0IHRvIGRvIGEKKworIHByb3BlciBPSUQgbGVzcyB0aGFuIE9JRCBjb21wYXJlLiAgV2UgYWN0dWFsbHkgZG9uJ3QgY2FyZSBhYm91dCB0aGUKKyBsZW5ndGggb2YgdGhlIG9yaWdpbmFsIHJlcXVlc3QsIG9ubHkgdGhhdCBpdCB3YXMgYmVmb3JlIHRoZQorIHJlZ2lzdGVyZWQgcmViYXNlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYzogQ0hBTkdFUzogcGF0Y2ggMzE0MDgzMzogZnJvbQorCisganNhZnJhbmVrOiBmaXggcHJveHkgR0VUTkVYVCByZXF1ZXN0cyBXaGVuIE9JRHMgcmVxdWVzdGVkIGFyZSBiZWxvdworIHRoZSBwcm94eSByZXF1ZXN0IHJlbWFwLCB3ZSBuZWVkIHRvIG5vdCBpbmNsdWRlIGFueSBPSURzIHRoYXQgbWlnaHQKKyBiZSBpbiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgb3JpZ2luYWwgT0lEIGFuZCB0aGUgcmVtYXBwZWQgT0lELiAgVGhpcworIHBhdGNoIGZ1ZGdlcyB0aGUgcmVxdWVzdCBzbyB0aGF0IGl0IGZpeGVzIHRoZSByZXF1ZXN0IE9JRCBzbyBpdCdzCisganVzdCBiZWZvcmUgdGhlIHJlbWFwcGVkIHByb3h5IHJhbmdlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1LmgsIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKyAgICAgIE5FV1M6CisKKyBQQVRDSCAzMTY3MzI1OiBmcm9tIGtyaXN6dG9mb3JvOiBVQ0QtU05NUC9TeXN0ZW1TdGF0czogYWRkIHZhcmlhYmxlcworIHRvIHJlcG9ydCBjcHVzdGVhbCwgY3B1Z3Vlc3QsIGNwdWd1ZXN0bmljZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYzogQ0hBTkdFUzogcGF0Y2gKKworIDMxODQwMjY6IGZyb20gZWl2bmFlczogQXZvaWQgY29uc3RhbnQgcmVmcmVzaCBvZiBpbnRlcmZhY2UKKyBzdGF0aXN0aWNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM2NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L3NubXBfYWdlbnQuYywgYXBwcy9zbm1wZGVsdGEuYywgc25tcGxpYi9zY2FwaS5jLCAKKyAgICAgIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zeXN0ZW0uYywgc25tcGxpYi90b29scy5jOiBGaXhlZAorICAgICAgc2V2ZXJhbAorCisgY29tcGlsZXIgd2FybmluZ3MgcmVwb3J0ZWQgYnkgdGhlIE1TVkMgY29tcGlsZXIuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL2dldHRpbWVvZmRheS5jOiBXaW4zMi9NU1ZDOiBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcuIAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOiBDSEFOR0VTOiBhZ2VudDogRml4ZWQgYQorCisgeWVhci0yMDM4IGJ1ZyBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgaXBSb3V0ZVRhYmxlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzY0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA4ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmM6IEZpeAorCisgd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLiAgVGhlc2UgbW9kdWxlcworIHdvcmssIGJ1dDogLSBUaGV5IGFyZSBMaW51eCBvbmx5IC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleSBhcmUKKyBwb3B1bGF0ZWQgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290IC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4gLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdAorICAgYmluYXJ5IChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDggIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYzogRml4CisKKyB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuICBUaGVzZSBtb2R1bGVzCisgd29yaywgYnV0OiAtIFRoZXkgYXJlIExpbnV4IG9ubHkgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZQorIHBvcHVsYXRlZCAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1biAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90CisgICBiaW5hcnkgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM2MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wOCAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdSZXN1bHRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlSG9wc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jOiBGaXgKKworIHdhcm5pbmdzIGFuZCBkYXRhIGZvcm1hdCBmb3IgRGF0ZUFuZFRpbWUgb2JqZWN0cy4gIFRoZXNlIG1vZHVsZXMKKyB3b3JrLCBidXQ6IC0gVGhleSBhcmUgTGludXggb25seSAtIFJvd3MgbXVzdCBiZSBjcmVhdGVkIHdpdGggcm93U3RhdHVzIGNyZWF0ZUFuZFdhaXQgYmVmb3JlIHRoZXkgYXJlCisgcG9wdWxhdGVkIC0gQWdlbnQgbXVzdCBydW4gYXMgcm9vdCAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QKKyAgIGJpbmFyeSAobWFraW5nIGl0IGVhc2llciB0byB1c2UgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCBidXQgLi4uKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA4ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmM6IEZpeAorCisgd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLiAgVGhlc2UgbW9kdWxlcworIHdvcmssIGJ1dDogLSBUaGV5IGFyZSBMaW51eCBvbmx5IC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleSBhcmUKKyBwb3B1bGF0ZWQgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290IC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4gLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdAorICAgYmluYXJ5IChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDggIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYzogRml4CisKKyB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuICBUaGVzZSBtb2R1bGVzCisgd29yaywgYnV0OiAtIFRoZXkgYXJlIExpbnV4IG9ubHkgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZQorIHBvcHVsYXRlZCAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QgLSBBZ2VudCBpcyBibG9ja2VkIHdoaWxlIHRlc3RzIHJ1biAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90CisgICBiaW5hcnkgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgcGVybC9TTk1QL1NOTVAueHM6IFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgcGVybC9TTk1QL1NOTVAueHM6IFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgcGVybC9TTk1QL1NOTVAueHM6IFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgcGVybC9TTk1QL1NOTVAueHM6IFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmg6IENIQU5HRVM6IHNubXBkOiBEZWNsYXJlIHRoZSBPSUQKKworIGFyZ3VtZW50IHR5cGUgb2YgTUlCIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMgYXMgJ2NvbnN0IG9pZCAqJyBpbnN0ZWFkCisgb2YgJ29pZCAqJyBzaW5jZSB0aGVzZSBmdW5jdGlvbnMgZG8gbm90IG1vZGlmeSB0aGUgT0lELiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluay5jLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg6IFVzZSB0aGUgY29ycmVjdCBkYXRhIHR5cGUgZm9yCisKKyB0aGUgJ2NhY2hlIGV4cGlyZWQnIHZhcmlhYmxlOiBjaGFyIGluc3RlYWQgb2YgaW50LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgdGhhdCB3YXMKKworIGludHJvZHVjZWQgaW4gcjIwMTUxLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzU5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogV2luMzI6IGltcHJvdmVkIHNvdXJjZSBjb2RlIGNvbnNpc3RlbmN5IGJ5CisKKyB1c2luZyBMUENUU1RSIGluc3RlYWQgb2YgTFBDU1RSLiBOb3RlOiB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdAorIFVuaWNvZGUgYnVpbGRzIGFyZSBzdXBwb3J0ZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogV2luMzI6IGltcHJvdmVkIHNvdXJjZSBjb2RlIGNvbnNpc3RlbmN5IGJ5CisKKyB1c2luZyBMUENUU1RSIGluc3RlYWQgb2YgTFBDU1RSLiBOb3RlOiB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdAorIFVuaWNvZGUgYnVpbGRzIGFyZSBzdXBwb3J0ZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluay5jOiBBZGQgZmlsZQorCisgZm9yZ290dGVuIGluIHIyMDM1MyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOiBSZXZlcnRlZCBhIGNoYW5nZSB0aGF0IHdhcworCisgY29tbWl0dGVkIGFjY2lkZW50YWxseSBpbiByMjAyNzYuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzU2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogRml4ZWQgdHdvIGNvbXBpbGVyCisKKyB3YXJuaW5ncy4gIChCYWNrcG9ydGVkIHIyMDIzNiBmcm9tIHRoZSB0cnVuay4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzNTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOiBDb21tZW50ZWQgb3V0IGFuIHVudXNlZCBmdW5jdGlvbgorCisgYmVjYXVzZSB0aGUgY29tcGlsZXIgY29tcGxhaW5lZCBhYm91dCBpdC4gIChCYWNrcG9ydGVkIHIyMDIzNyBmcm9tCisgdGhlIHRydW5rLikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDM1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhXworICAgICAgIGFjY2Vzcy5jLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzEyNTk2OgorCisgZnJvbSBmYWJsZWQ4MDogbGlzdGVuIGZvciBuZXRsaW5rIGNoYW5nZSBldmVudHMgZm9yIHRoZSBhcnAtcmVsYXRlZAorIHRhYmxlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzNTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaDogTkVXUzogUEFUQ0gKKworIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0CisgbGVhc3QgY29tcGlsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmg6IE5FV1M6IFBBVENICisKKyAzMTk4NzgxOiBmcm9tIGZlbm5lcjogR2V0IGRpc21hbi9waW5nIGFuZCBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdAorIGxlYXN0IGNvbXBpbGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oOiBORVdTOiBQQVRDSAorCisgMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQKKyBsZWFzdCBjb21waWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaDogTkVXUzogUEFUQ0gKKworIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0CisgbGVhc3QgY29tcGlsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzogTkVXUzogc25tcGxpYjogYWRkIG9wdGlvbmFsIHN1cHBvcnQgZm9yIGxvY2FsCisKKyBETlNTRUMgdmFsaWRhdGlvbiBvZiBob3N0bmFtZXMgIC0gb3B0aW9uYWwgYXQgY29uZmlndXJlIHRpbWU6IC0td2l0aC1sb2NhbC1kbnNzZWMtdmFsaWRhdGlvbiAgLSByZXF1aXJlcyBETlNTRUMtVG9vbCB2YWxpZGF0aW9uIGxpYnJhcmllcyAgLSBpbml0aWFsIHN1cHBvcnQsIGZvciBzeXN0ZW1zIHdpdGggZ2V0YWRkcmluZm8uIHN1cHBvcnQgZm9yCisgICAgYWRkaXRpb25hbCByZXNvbHZlciBpbnRlcmZhY2VzIGNvbWluZyBzb29uLiAgIC0gYWxzbyBUT0RPOiBmbGFnIGZvciBpZ25vcmluZyB2YWxpZGF0b2luIGVycm9ycyAobG9nICYgY29udGludWUpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oOiBtb3ZlIHVudXNlZCAoYW5kIHRvbyBnZW5lcmljKQorCisgdG9rZW4gd2l0aGluIFVDRF9DT01QQVRJQkxFIGlmZGVmICAgLSBNQVhMQUJFTCBjb25mbGljdHMgd2l0aCA8YXJwYS9uYW1lc2VyLmg+ICAgLSBhZGRlZCBORVRTTk1QX01BWExBQkVMIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM1MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbiwgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCBjb25maWd1cmUsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IHVwZGF0ZSBjb25maWd1cmUvTWFrZWZpbGVzCisKKyBmb3IgRE5TU0VDIGxvY2FsIHZhbGlkYXRpb24gb3B0aW9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOiBtYWtlIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmM6IHJlbW92ZWQgdGhlCisKKyBhY2NpZGVudGFsIGJyb2tlbiBmZWF0dXJlIHJlcXVpcmUgbGluZSB0aGF0IGdvdCBoYWxmIGluc2VydGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDM0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDSEFOR0VTOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOiBtYWtlIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOiBkb2N1bWVudGF0aW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwKKworIGNvbmZpZ3VyYXRpb246IC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTCAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwKKworIGNvbmZpZ3VyYXRpb246IC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTCAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwKKworIGNvbmZpZ3VyYXRpb246IC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTCAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOiBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwKKworIGNvbmZpZ3VyYXRpb246IC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTCAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbAorCisgY29uZmlndXJhdGlvbjogLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbDogU3VwcG9ydCBUYXIvR1ppcCBjb21tYW5kIHBhdGhzCisKKyBjb250YWluaW5nIHNwYWNlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOiBTdXBwb3J0IFRhci9HWmlwIGNvbW1hbmQgcGF0aHMKKworIGNvbnRhaW5pbmcgc3BhY2VzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IFN1cHBvcnQgVGFyL0daaXAgY29tbWFuZCBwYXRocworCisgY29udGFpbmluZyBzcGFjZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA2ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbDogUmVwb3J0IEdaaXAgY29tbWFuZCBjb3JyZWN0bHkKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGw6IFJlcG9ydCBHWmlwIGNvbW1hbmQgY29ycmVjdGx5CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDYgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOiBSZXBvcnQgR1ppcCBjb21tYW5kIGNvcnJlY3RseQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jOiBGaXggZm9yIERyYWdvbkZseSBCU0QgKGRvZXMKKyAgICAgIG5vdAorCisgZGVmaW5lIElQX1NFTkRTUkNBRERSKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMzMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYzogRml4IGZvciBEcmFnb25GbHkgQlNEIChkb2VzCisgICAgICBub3QKKworIGRlZmluZSBJUF9TRU5EU1JDQUREUikgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oOiBGaXggc3BlbGxpbmcgb2YKKworIFNPX1JFQ1ZEU1RBRERSIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmg6IEZpeCBzcGVsbGluZyBvZgorCisgU09fUkVDVkRTVEFERFIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsIG1hbi9zbm1wLmNvbmYuNS5kZWYsIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jOiBORVdTOiBhcHBzOiBhZGQgc25tcC5jb25mIHRva2VucyBmb3IgdGltZW91dHMKKworIGFuZCByZXRyaWVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMzMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90b29scy5jLCB0ZXN0aW5nL1RFU1RDT05GLnNoOiBDSEFOR0VTOiBNaW5HVzogTWFkZQorCisgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUgTmV0LVNOTVAgdmFyaWFibGVzIGRlZmluZWQKKyBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0IGZhaWxlZCBwcmV2aW91c2x5IGFmdGVyIHRoZQorIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3Rvb2xzLmMsIHRlc3RpbmcvVEVTVENPTkYuc2g6IENIQU5HRVM6IE1pbkdXOiBNYWRlCisKKyByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZSBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZAorIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlCisgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpIGhhZCBiZWVuIGluc3RhbGxlZCBkbyBub3cgcGFzcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdG9vbHMuYywgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2g6IAorCisgQ0hBTkdFUzogTWluR1c6IE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUKKyBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0CisgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbgorIGluc3RhbGxlZCBkbyBub3cgcGFzcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAzMjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdG9vbHMuYywgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfVEVTVENPTkYuc2g6IAorCisgQ0hBTkdFUzogTWluR1c6IE1hZGUgcmVncmVzc2lvbiB0ZXN0IG91dHB1dCBpbmRlcGVuZGVudCBvZiB0aGUKKyBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cyB0aGF0CisgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbgorIGluc3RhbGxlZCBkbyBub3cgcGFzcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS52Y3Byb2osIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9saWJuZXRzbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYnNubXAvbGlic25tcC52Y3Byb2osCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLCB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osCisgICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2osIHdpbjMyL3dpbjMyLnNsbiwKKyAgICAgIHdpbjMyL3dpbjMyZGxsLnNsbjoKKworIFJlbW92ZWQgVmlzdWFsIFN0dWRpbyAyMDA1IHNvbHV0aW9uIGFuZCBwcm9qZWN0IGZpbGVzIGFnYWluIHNpbmNlCisgVmlzdWFsIFN0dWRpbyAyMDEwIHJlZnVzZXMgdG8gbG9hZCB0aGVzZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IGNsZWFuIHRoZSBwZXJsL3B5dGhvbiBmZWF0dXJlIGxlZnRvdmVycyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IGZpeCBtaWIgbW9kdWxlIGludm9jYXRpb24gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzogZml4IGlmZGVmCisKKyB0eXBvIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IGZpeCBwZXJsL3B5dGhvbiBmZWF0dXJlIGRlcGVuZGVuY2llcyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOiByZXZlcnRlZCBhdXRvX25saXN0IG1hY3JvIHVzYWdlOyB0aGUgZnVuY3Rpb24KKworIGlzIHVzZWQgaW4gaGVhZGVycyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogQWRkIGEgLVQgb3B0aW9uIHRvIHJ1biAnbWFrZSB0ZXN0JworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvTWFrZWZpbGUuaW46IGZpeCB0aGUgZW5jb2RlX2tleWNoYW5nZSAuZnQgZmlsZW5hbWUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHBlcmwvVHJhcFJlY2VpdmVyL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCBzbm1wbGliL3Rvb2xzLmM6IAorCisgZml4IHRoZSBmZWF0dXJlcyByZXF1aXJlZCBieSB0aGUgVHJhcFJlY2VpdmVyIG1vZHVsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbjogQWRkIHRoZSBUcmFwUmVjZWl2ZXIgdG8gdGhlIGxpc3Qgb2YgcGVybCBtb2R1bGVzCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogcGVybC9TTk1QL1NOTVAueHM6IHVzZSB0aGUgbmV3ZXIgTmV0LVNOTVAgQVBJcywgcmF0aGVyIHRoYW4gdGhlCisKKyBvbGRlciBVQ0Qgb25lcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBwZXJsL1NOTVAvU05NUC54czogcmVtb3ZlIFNFVCBjb2RlIHdoZW4gdW5kZXIgLS1yZWFkLW9ubHkgbW9kZQorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYzogcmVxdWlyZQorCisgY2hlY2tfdmJfdWludCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW4KKyAgICAgICB0LmMsIGFnZW50L3NubXBfYWdlbnQuYywgbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYywgCisgICAgICBweXRob24vbmV0c25tcC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBzbm1wbGliL3NubXBfbG9nZ2luZy5jOiBsYXN0IG9mIHRoZSBwZXJsLXVzZWQgZmVhdHVyZSBmdW5jdGlvbnMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VuCisgICAgICAgdC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ViYWdlbnQubTJjLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL3BhcnNlLmM6CisKKyBzdGFydGVkIHRoZSBmaW5hbCBzZXQgb2YgZnVuY3Rpb24gcmVtb3ZhbHMgZm9yIGZlYXR1cmVzIHJlcXVpcmVkIGJ5CisgcGVybC9weXRob24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1zb3VyY2UtaW5jbHVkZXMubTJpOiBhZGRlZCB0aGUKKworIG5ldC1zbm1wLWZlYXR1cmVzLmggaGVhZGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHBlcmwvT0lEL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAKKyAgICAgIHBlcmwvU05NUC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oOiBBZGRlZCBwZXJsIGZlYXR1cmUKKworIHJlcXVpcmVtZW50cyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXMsIGNvbmZpZ3VyZSwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgCisgICAgICBwZXJsL0FTTi9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL09JRC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL1NOTVAvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsIAorICAgICAgcGVybC9hZ2VudC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmg6IGhvcGVmdWxseQorICAgICAgd29ya2luZworCisgcnVsZXMgdG8gYXBwbHkgZmVhdHVyZSByZXF1aXJlbWVudHMgdG8gcGVybCBhbmQgcHl0aG9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvc25tcF9hZ2VudC5jOiBtb3JlIGNoYW5nZXMgdG8gcmVtb3ZlIHVubmVlZGVkIGZ1bmN0aW9ucworCisgcHJpbWFyaWx5IHdoZW4gd3JpdGUgbW9kZSBpcyB0dXJuZWQgb2ZmIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzogY2hhbmdlIHRoZSB3YW50IGludm9jYXRpb24gdG8gb25seSBkZWZhdWx0CisKKyB0byBleGNsdWRlIGV4dGVybmFsIGhvb2tzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOiBzZWFyY2ggdGhyb3VnaCAueHMgZmlsZXMgZm9yCisKKyBmdW5jdGlvbiBpbnZvY2F0aW9ucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAzMDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2F1dG9fbmxpc3QuYzogZm9yZ290IGEgc2VtaWNvbG9uIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzA3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmM6IGlxdWVyeSBwZHUKKyAgICAgIHNlc3Npb25zCisKKyBhcmUgb25seSBuZWVkZWQgaW4gd3JpdGUgbW9kZS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9NYWtlZmlsZS5pbjogZml4IGZlYXR1cmUgZGV0ZWN0aW9uIG9mIHNvbWV0aW1lcy1idWlsdAorCisgYXBwbGljYXRpb25zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOiB1c2UgdGhlIGZlYXR1cmVfdW51c2VkIG1hY3JvIGZvciBtYWtpbmcgYW4KKworIGVtcHR5IGZpbGUgZm9yIGNvbnNpc3RlbmN5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTgorICAgICAgIFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsIGFwcHMvc25tcHRscy5jLCAKKyAgICAgIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IEFub3RoZXIgc3dlZXAgZm9yIHVudXNlZAorCisgZnVuY3Rpb25zIHdoZW4gcmVhZF9vbmx5IG1vZGUgaXMgdHVybmVkIG9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKKyAgICAgICAsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOCisgICAgICAgVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuCisgICAgICAgYywgc25tcGxpYi9jaGVja192YXJiaW5kLmM6IG1hcmsgYSBzbGV3IG9mIGZ1bmN0aW9ucyBhcyBmZWF0dXJlcworCisgdGhhdCBhcmUgb25seSBuZWVkZWQgd2l0aCB3cml0ZV9zdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDMwMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOiBydW4gZ3JlcCB3aXRoIC1uIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzAxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiAKKworIGZlYXR1cml6ZSBuZXRzbm1wX3NvY2thZGRyX3NpemUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMzAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6IHJlbW92ZSBhCisKKyBmZWF0dXJlX3JlcXVpcmUgbm90IGFjdHVhbGx5IG5lZWRlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9jb250YWluZXIuYzogbWFyayBTVUJDT05UQUlORVJfRklORAorCisgYXMgYSBmZWF0dXJlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jLCBzbm1wbGliL3NubXB0c20uYzogdGhlIHJvdyBjcmVhdGlvbiBBUEkgaXMKKworIG9ubHkgdXNlZCBpbiB0aGUgVFNNIGltcGxlbWVudGF0aW9uIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3NubXB0c20uYzogdGhlIG5ld2VyIGNvbnRleHQgZW5naW5lSUQKKworIHByb2JpbmcgaXMgb25seSBuZWVkZWQgaWZmIFRTTSBpcyBpbiB1c2UgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjk2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2Rpcl91dGlscy5jOiBmaXggYW4gaWZkZWYgdHlwbyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzogbW92ZWQgZmV0YXVyZSBjaGlsZF9vZiBzdGF0ZW1lbnRzIHRvIHRoZQorCisgdG9wIG9mIHRoZSBmaWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvZGlyX3V0aWxzLmMsIAorICAgICAgc25tcGxpYi9zbm1wX29wZW5zc2wuYzogbWFya2VkIGEgY291cGxlIG9mIHJhcmVseSB1c2VkIGNvbnRhaW5lcgorCisgZnVuY3Rpb25zLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjkzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmM6IHNwbGl0IG91dCB0aGUgcHJlZml4X2luZm8gZmVhdHVyZQorICAgICAgaW50bworCisgc3ViLWZlYXR1cmVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI5MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jOiBtYXJrIHRoZSBhY2Nlc3NvciBmdW5jdGlvbnMgYXMgdW5uZWVkZWQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyOTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmM6IGZpeCBhIGNoaWxkX29mIHN0YXRlbWVudAorCisgd2l0aCBhIGNvcHkvcGFzdGUgZXJyb3IgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjkwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6IHRoZSBjb250YWluZXIgcm93LXJlbW92ZSBpcyBvbmx5CisKKyBuZWVkZWQgaWYgdGhlIHRkYXRhIHJlbW92ZV9yb3cgaXMgbmVlZGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOCisgICAgICAgVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuCisgICAgICAgYzogZmVhdHVyZSBtYXJraW5nIG9mIHVudXNlZCB0ZGF0YSBmdW5jdGlvbnMgICAgCisgICAgICB0YWJsZV90ZGF0YV9kZWxldGVfdGFibGUgICAgIHRhYmxlX3RkYXRhX2V4dHJhY3RfdGFibGUgICAgCisgICAgICB0YWJsZV90ZGF0YV9yZW1vdmVfcm93IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjg4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmM6IHJlbW92YWwgb2Ygc29tZSByYXJlbHkgdXNlZAorCisgCWZ1bmN0aW9ucyB0YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93IAl0YWJsZV9kYXRhc2V0X3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IEFkZGVkIGEgZGVmaW5pdGlvbiB0byBpbmNvcnBvcmF0ZQorCisgcmVhZF9vbmx5L25vdGlmeV9vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmM6IGFkZGVkIGEgbWlzc2luZyBmZWF0dXJlIGRlZmluaXRpb24KKworIGxpbmUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjg1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9NYWtlZmlsZS5pbjogYWRkZWQgYmFjayBpbiBtaXNzaW5nIG1pYmdyb3VwIGZlYXR1cmUKKworIGRlZmluaXRpb24gbGlzdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyODQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBJbmNsdWRlIHRoZSBvcmlnaW5hbCBiYXNlIGZsYWdzIHRvCisKKyBlbnN1cmUgLS13aXRoLWRlZmF1bHRzIGdldHMgcGlja2VkIHVwIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IGZpeCB1c2FnZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IEFkZGVkIGEgLWIgZmxhZyBmb3IgYmFzZSBhcmd1bWVudHMgdG8KKworIHN0YXJ0IGZyb20gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogZGVmYXVsdCB0byBhIGxpbmVhciBzZWFjaCBvZiBzaXplCisKKyB0ZXN0cywgcmF0aGVyIHRoYW4gZXhwb25lbnRpYWwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oLCBzbm1wbGliL3NubXBVRFBEb21haW4uYzogCisKKyBDSEFOR0VTOiBzbm1wbGliOiBHdWFyZCBuZXRzbm1wX3VkcF9yZWN2ZnJvbSgpIGV0Yy4gZGVjbGFyYXRpb25zCisgY29uc2lzdGVudGx5LiAgQ0hBTkdFUzogV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjoKKyAgICAgIEd1YXJkCisKKyBuZXRzbm1wX3VkcF9yZWN2ZnJvbSgpIGV0Yy4gZGVjbGFyYXRpb25zIGNvbnNpc3RlbnRseS4gIENIQU5HRVM6CisgV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjoKKyAgICAgIEd1YXJkCisKKyBuZXRzbm1wX3VkcF9yZWN2ZnJvbSgpIGV0Yy4gZGVjbGFyYXRpb25zIGNvbnNpc3RlbnRseS4gIENIQU5HRVM6CisgV2luMzI6IEJ1aWxkcyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlCisKKyByZWdpc3RyeSBhcmd1bWVudCBsaW1pdCBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcworIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA1LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogQ0hBTkdFUzogV2luMzI6IFBBVENIOiAzMjkzODQyOiBFbGltaW5hdGUKKworIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzCisgcmVwb3J0ZWQgYnkgU3lsdmFpbiBEZXJ5KS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBDSEFOR0VTOiBXaW4zMjogUEFUQ0g6IDMyOTM4NDI6IEVsaW1pbmF0ZQorCisgcmVnaXN0cnkgYXJndW1lbnQgbGltaXQgb2YgMTI3IGNoYXJhY3RlcnMgKHRoaXMgbGltaXRhdGlvbiB3YXMKKyByZXBvcnRlZCBieSBTeWx2YWluIERlcnkpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDI3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6IENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlCisKKyByZWdpc3RyeSBhcmd1bWVudCBsaW1pdCBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcworIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlCisKKyA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cKKyBlbnZpcm9ubWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAyNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlCisKKyA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cKKyBlbnZpcm9ubWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlCisKKyA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cKKyBlbnZpcm9ubWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IGhlYWRlciBmaWxlCisKKyA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cKKyBlbnZpcm9ubWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNS0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oOiBXaW4zMiBETEwgYnVpbGQgZml4ZXMuCisKKyAoQmFja3BvcnRlZCByMjAxODQgZnJvbSB0cnVuay4pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDUtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaDogV2luMzIgRExMIGJ1aWxkIGZpeGVzLgorCisgKEJhY2twb3J0ZWQgcjIwMTg0IGZyb20gdHJ1bmsuKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UKKworIGNvZGUgY29tbWVudHMgaW4gc25tcGxpYi93aW5zZXJ2aWNlLmMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzogU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UKKworIGNvZGUgY29tbWVudHMgaW4gc25tcGxpYi93aW5zZXJ2aWNlLmMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZQorCisgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOiBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZQorCisgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE5FV1M6IGFkZGVkIG5vdGUgYWJvdXQgdGhlIG5ldyB0aW1pbmcgZnVuY3Rpb24gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOiBVcGRhdGUgdGhlIG1hbnVhbCBwYWdlIHRvIHJlZmxlY3QgdGhlIG5ldworCisgdGltaW5nIG9wdGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3Rvb2xzLmM6IGJldHRlciBkb2N1bWVudGF0aW9uIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jOiB1c2UgdGhlCisKKyBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoKSBmb3IgcGFyc2luZyBmcmVxdWVuY2llcy90aW1lIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYzogZml4IHBkdQorCisgYnVpbGRpbmcgdGVzdHMgdW5kZXIgdmFyaW91cyBkaXNhYmxlZCBtb2RlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMnBkdV9idWlsZF9jbGliLmM6IGRvbid0IHRyeSB0bworCisgYnVpbGQgdGhlIEdFVCBwZHUgdW5kZXIgbm90aWZ5X29ubHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaCwgc25tcGxpYi90b29scy5jOiBmaXggYSBidWcgd2l0aAorCisgbm8tc3VmZml4IHN0cmluZ3MgYW5kIHVzZSBhIGNvbnN0IGlucHV0IHN0cmluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2Vjc19jbGliLmM6CisKKyBBIG5ldyB1bml0IHRlc3QgZm9yIHRoZSB0aW1lIGNvbnZlcnNpb24gcm91dGluZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IHVzZSB0aGUKKworIG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcygpIGZ1bmN0aW9uIGZvciBjb21wdXRpbmcgaW50ZXJ2YWwKKyBwZXJpb2RzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI2NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvdG9vbHMuYzogQWRkZWQgYQorCisgbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKCkgZnVuY3Rpb25zIHRvIGNvbnZlcnQsIGUuZy4sIDFoIHRvIDM2MDAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjY0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IHJlbW92ZSBjb2RlIHRvIGJ1aWxkL3BhcnNlIEdFVC9ldGMgcmVxdWVzdHMKKworIHdoZW4gTk9USUZZX09OTFkgaXMgdHVybmVkIG9uLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBORVdTOiB1cGRhdGUgdGhlIE5FV1MgdG8gcmVmbGVjdCB0aGUgbmV3IC0tZW5hYmxlLXJlYWQtb25seSBhbmQKKworIC0tZW5hYmxlLW5vdGlmeS1vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jOiBtaW5vcgorCisgaW1wcm92ZW1lbnRzIGZvciByb25seSB2cyByd3JpdGUgaGFuZGxpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jOiBzdGlsbCBlbmFibGUKKworIFJPTkxZIHdoZW4gUldSSVRFIGlzbid0IHBvc3NpYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI2MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6IGZpeCBHRVQgc3VwcG9ydCB3aGVuIG5vX3dyaXRlIGlzCisKKyBlbmFibGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogbWFyayBhIGZ1dHVyZQorCisgbW9kaWZpY2F0aW9uIG5lZWQgaW4gYSBjb21tZW50IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jOiBmaXggaGFuZGxpbmcgb2Ygbm9fd3JpdGUgc3VwcG9ydAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L3NubXBfYWdlbnQuYywgYWdlbnQvc25tcGQuYzogCisKKyBkb24ndCBvcGVuIGFueSBsaXN0ZW5pbmcgdHJhbnNwb3J0cyB3aGVuIG5vdGlmeS1vbmx5IGlzIHNwZWNpZmllZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6IHNldCB0aGUKKworIG5vLWxpc3RlbiBhbmQgcmVhZC1vbmx5IGZsYWdzIHdoZW4gLS1lbmFibGUtbm90aWZ5LW9ubHkgaXMgc2V0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogcmFuIGF1dG9oZWFkZXIgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYzogaW1wbGVtZW50IHRoZQorCisgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCBpbiB0aGVzZSB0cmFuc3BvcnRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlOiBydW4gYXV0b2NvbmYgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOiBtb3ZlIHRoZSByZWFkLW9ubHkgZmxhZworCisgZGVmaW5pdGlvbiBiZWxvdyB0aGUgbm90aWZ5LW9ubHksIHNpbmNlIG5vdGlmeS1vbmx5IG5lZWRzIHRvIGltcGx5CisgcmVhZC1vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZTogRGVmaW5lZCBhIG5ldworCisgLS1lbmFibGUtbm90aWZ5LW9ubHkgZmxhZyBmb3IgYnVpbGRpbmcgYSB0b29sc2V0IHRoYXQgb25seSBhbGxvd3MKKyBmb3Igbm90aWZpY2F0aW9ucyB3aXRoIG5vIHJlYWQvd3JpdGUgc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6IERlZmluZWQgYSBuZXcKKworIC0tbm8tbGlzdGVuIGZsYWcgdG8gcmVtb3ZlIGxpc3RlbmluZyBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI0OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVmYXVsdF9tb2R1bGVzLmg6IHRoZSBkaXNtYW4gc2NoZWR1bGUgbWliIGlzIG9ubHkKKworIHVzZWZ1bCB3aGVuIFNFVHMgYXJlIHR1cm5lZCBvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi5oOiB0aGUgZGlzbWFuIHNjaGVkdWxlIG1pYiBpcyBvbmx5IHVzZWZ1bAorCisgd2hlbiBTRVRzIGFyZSB0dXJuZWQgb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQ3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyCisgICAgICAgZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmEKKyAgICAgICBjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmCisgICAgICAgYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLgorICAgICAgIGM6IGZpbmlzaGVkIG5vX3dyaXRlIHN1cHBvcnQgZm9yIGNvbW1vbiBpbmNsdWRlZCB0YWJsZXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzogQWRkIGJhY2sgaW4KKworICduZXRzbm1wX3NldF9yb3dfY29sdW1uJyB3aGVuIG5vX3dyaXRlIHN1cHBvcnQgaXMgZW5hYmxlZCBUaGlzCisgZnVuY3Rpb24gaXMgYSBnZW5lcmljIGRhdGEgbWFuaXB1bGF0aW9uIGZ1bmN0aW9uLCBub3QgU0VUIHNwZWNpZmljIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6IGRvbid0IHVzZSBtYXJrX3Jvd19jb2x1bW5fd3JpdGFibGUKKworIHdoZW4gcmVhZC1vbmx5IHN1cHBvcnQgaXMgZW5hYmxlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmM6IGZpeCBub193cml0ZSBzdXBwb3J0CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDI0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmM6IGZpeCBub193cml0ZSBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6IERvbid0IGZyZWUKKworIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogZ2l0IGJhc2gtc2hlbGwgZnVuY3Rpb25zIHRvIGVuYWJsZQorCisgYnJhbmNoIHN3aXRjaGluZyBhbmQgZXh0ZXJuYWwgYnVpbGRpbmcgVGhlc2UgbG9jYWwgc2hlbGwgZnVuY3Rpb25zCisgKHNubXBjb25maWd1cmUgYW5kIHNubXBtYWtlKSBsZXQgeW91IGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlCisgTmV0LVNOTVAgc291cmNlIGNvZGUgaW4gZXh0ZXJuYWwgZGlyZWN0b3JpZXMgdGhhdCBhcmUKKyBhdXRvLWNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIGV4aXN0aW5nIGJyYW5jaCBuYW1lICh3aXRoIGFuIG9wdGlvbmFsCisgc3VmZml4KS4gIFRoaXMgbGV0cyB5b3UgcnVuICdzbm1wbWFrZScgZnJvbSB3aXRoaW4gdGhlIHNvdXJjZQorIGRpcmVjdG9yeSBhbmQgaGF2ZSBpdCBhY3R1YWxseSBleHRlcm5hbGx5IGtlZXAgdHJhY2sgb2YgbW9kaWZpZWQKKyBmaWxlcywgZXRjLCBzbyBidWlsZGluZyBpbiBtdWx0aXBsZSBicmFuY2hlcyBjYW4gYmUgZG9uZSBmcm9tIGEKKyBzaW5nbGUgZ2l0IGNoZWNrb3V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogY2xlYW4gdXAgdGhlIGl0ZXJhdG9ycworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGZyZWUgdmFyYmluZHMgYWZ0ZXIKKworIHNlbmRpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTI1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzogQ29tbWVudGVkIG91dCBhbiB1bnVzZWQgZnVuY3Rpb24KKworIGJlY2F1c2UgdGhlIGNvbXBpbGVyIGNvbXBsYWluZWQgYWJvdXQgaXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBGaXhlZCB0d28gY29tcGlsZXIKKworIHdhcm5pbmdzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjM2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIzICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jOiBSZW1vdmUgdW5uZWNlc3NhcnkgbnVsbCBjaGVjaworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjMgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jOiBNb3ZlIHBvaW50ZXIgZGVyZWZlcmVuY2UgdG8gYWZ0ZXIKKworIHRoZSBjaGVjayBmb3Igc3VjY2Vzc2Z1bCBhbGxvY2F0aW9uIG9mIHRoZSBwb2ludGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6IFJlZHVjZSB2YXJpYWJsZSBzY29wZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6IFJlbW92ZSBhbiB1bnVzZWQgdmFyaWFibGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjMgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOiBSZWR1Y2UgdmFyaWFibGUgc2NvcGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjMgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOiBSZWR1Y2UgdmFyaWFibGUgc2NvcGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6IFJlZHVjZSB2YXJpYWJsZSBzY29wZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3RyYXAuYzogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IG1lbnRpb24gd2hpY2ggbW9kdWxlIGlzIHJlcXVpcmVkIHdoZW4KKworIGJ1aWxkaW5nIHRvIGdldCB0aGUgZGVsaXZlciBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogZGVsZXRlZCBhbiB1bm5lZWRlZAorCisgZGVidWdnaW5nIHN0YXRlbWVudCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IHByb3Blcmx5IHVwZGF0ZSB0aGUgbWF4CisKKyBjb3VudCBpbiB0aGUgb3V0Z29pbmcgbm90aWZpY2F0aW9ucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGJldHRlciBwYWNrZXQgZXN0aW1hdGlvbgorCisgdG8gZW5zdXJlIHdlIGRvbid0IG92ZXJydW4uICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGVzdGltYXRlIHRoZSBwYWNrZXQgc2l6ZQorCisgYW5kIGJyZWFrIHRoZSBub3RpZmljYXRpb24gdXAgYmFzZWQgb24gaXQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiB0cmFuc2Zvcm0gdGhlCisKKyBub3RpZmljYXRpb24gc2VuZGluZyBpbnRvIGEgbGFyZ2VyIGxvb3AgZm9yIGxhdGVyIG11bHRpLW5vdGlmcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMjIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBORVdTOiBmdXJ0aGVyIGluZm9ybWF0aW9uIGFib3V0IGZlYXR1cmUgbWFya2luZy9zZWxlY3Rpb24KKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjIxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBORVdTOiBtZW50aW9uIHRoZSBuZXcgZGVsaXZlcnkgYnkgbm90aWZpY2F0aW9ucyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIyMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTkVXUzogZG9jdW1lbnQgdGhlIG1pbmltYWxpc3Qgc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxOSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IGRvY3VtZW50IHRoZSBuZXcgZGVsaXZlckJ5Tm90aWZ5IGNvbmZpZworCisgdG9rZW5zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogYWxsb3cgcnVuIHRpbWUKKworIG1vZGlmaWNhdGlvbnMgb2YgdGhlIE9JRHMgdG8gdXNlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogYWRkIGNvbmZpZyBmbGFncyB0byBub3QKKworIGluY2x1ZGUgdGhlIHBlcmlvZCBjb25maWcgYW5kIG1zZyBjb3VudCB2YWx1ZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBpbmNsdWRlIHRoZSBwZXJpb2RpYworCisgY291bnQsIHRoZSBtZXNzYWdlIG51bWJlciBhbmQgdGhlIG1heCBtZXNzYWdlIG51bWJlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGRlbGV0ZWQgZGVidWdnaW5nCisKKyBjb21tZW50IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgbWlicy9ORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dDogTW92ZSB0aGUgbm90aWZpY2F0aW9uCisKKyBkZWZpbml0aW9uIHRvIHdpdGhpbiB0aGUgc3ViLW1pYiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGRlbGV0ZSBhbiB1bnVzZWQKKworIHZhcmlhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogbG9hZCB0aGUgTUlCIGludG8gdGhlCisKKyBkZWZhdWx0IHNldCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQ6IEEgbmV3IG1pYiB0byBob2xkIHRoZQorCisgcGVyaW9kaWMgbm90aWZ5IG9iamVjdHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBmaWxsIG91dCB0aGUgY29uZmlnIGZyZWUKKworIHJvdXRpbmUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjA5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBwcm9wZXJseSBtb25pdG9yIHRoZQorCisgd2hvbGUgY29udGFpbmVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIwOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogcGFyc2UgdGhlIGNvbmYgZmlsZXMgYW5kCisKKyBjcmVhdGUgYW5kIGluc2VydCBvYmplY3RzIGludG8gdGhlIGNvbnRhaW5lciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6IGRlZmluZWQgYSBjb250YWluZXIgdG8KKworIHN0b3JlIGEgbGlzdCBvZiBkZWxpdmVyIG9iamVjdHMgaW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOiBhZGRlZCBhIG5leHRfcnVuCisKKyB0aW1lc3RhbXAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjA1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBhY3R1YWxseSBzZW5kIGEKKworIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSByZXN1bHRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDIwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogbWFrZSB0aGUgd2FsayBvbiB0aGUKKworIHRlc3Qgb2JqZWN0IGZ1bmN0aW9uLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjAzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiBjcmVhdGUgYSBtYXggcGFja2V0IHNpemUKKworIGNvbmZpZyB0b2tlbiBhbmQgcGFyc2UgaXQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOiBtaW5pbWFsIHN0YXJ0aW5nIHRlc3QKKworIG9iamVjdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAyMDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6IGFkZGVkIGEgZnVuY3Rpb24gdG8KKworIGNhbGN1bGF0ZSB0aGUgdGltZSB1bnRpbCB0aGUgbmV4dCBydW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMjAwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOiByZW1vdmUgbGVmdCBpbiB0ZW1wbGF0ZQorCisgbGluZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6IHVzZSBhbiBhbGFybSBjYWxsYmFjaworCisgcHJvdG90eXBlIGZvciBleGVjdXRlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE5OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0yMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDogYmVnaW5uaW5nIHRlbXBsYXRlIGNvZGUKKworIGZvciBkZWxpdmVyeSBvZiBkYXRhIGJ5IG5vdGlmaWNhdGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTIyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOiBSZWR1Y2UgdmFyaWFibGUgc2NvcGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6IFJlZHVjZSB2YXJpYWJsZSBzY29wZXMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMjIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxOTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2xpYnNubXAvbGlic25tcC52Y3Byb2osIHdpbjMyL3dpbjMyLnNsbjogQWRkZWQgVmlzdWFsIFN0dWRpbworCisgMjAwNSBwcm9qZWN0IGFuZCBzb2x1dGlvbiBmaWxlIGZvciBidWlsZGluZyB0aGUgTmV0LVNOTVAgbGlicmFyeSBhcworIGEgc3RhdGljIGxpYnJhcnkuIEJvdGggdGhlIFdpbjMyIGFuZCB0aGUgeDY0IGNvbmZpZ3VyYXRpb25zIGFyZQorIGluY2x1ZGVkLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTkzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC52Y3Byb2osIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwudmNwcm9qLCAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay52Y3Byb2osIHdpbjMyL3NubXBkL3NubXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wc2V0L3NubXBzZXQudmNwcm9qLCAgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwKKyAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAudmNwcm9qLCB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qOiBNb3JlIFZpc3VhbCBTdHVkaW8gMjAwNSBwcm9qZWN0CisgICAgICBmaWxlCisKKyBjbGVhbnVwLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay52Y3Byb2osIHdpbjMyL3NubXBkL3NubXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wc2V0L3NubXBzZXQudmNwcm9qLCAgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwKKyAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAudmNwcm9qLCB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qOiBDbGVhbmVkIHVwIFdpbjMyIFZTMjAwNSBwcm9qZWN0CisKKyBmaWxlcyAtIHJlbW92ZWQgc3VwZXJmbHVvdXMgbGlicmFyeSByZWZlcmVuY2VzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTg5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC52Y3Byb2osIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwudmNwcm9qLCAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay52Y3Byb2osIHdpbjMyL3NubXBkL3NubXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLnZjcHJvaiwgd2luMzIvc25tcGRmL3NubXBkZi52Y3Byb2osIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wc2V0L3NubXBzZXQudmNwcm9qLCAgd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLnZjcHJvaiwKKyAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAudmNwcm9qLCB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20udmNwcm9qLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS52Y3Byb2osIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qLCB3aW4zMi93aW4zMmRsbC5zbG46IEFkZGVkIHg2NAorCisgY29uZmlndXJhdGlvbnMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxODggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTggIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLnZjcHJvaiwgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wZ2V0L3NubXBnZXQudmNwcm9qLAorICAgICAgd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLAorICAgICAgIHdpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUudmNwcm9qLCB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osCisgICAgICAgd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgCisgICAgICB3aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay52Y3Byb2osIHdpbjMyL3dpbjMyZGxsLnNsbjogQWRkZWQKKworIHdpbjMyZGxsLXJlbGF0ZWQgVmlzdWFsIFN0dWRpbyAyMDA1IHByb2plY3QgYW5kIHNvbHV0aW9uIGZpbGVzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg6IFdpbjMyIERMTCBidWlsZCBmaXhlcy4gCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE4NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNzU2NDA6IFVzZQorCisgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTcgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wZDoKKyAgICAgIFBBVENIRVM6CisKKyAzMTc1NjQwOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTcgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wZDoKKyAgICAgIFBBVENIRVM6CisKKyAzMTc1NjQwOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeAorCisgY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6CisgMzE4Mjk4NTogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4CisKKyBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggQ0hBTkdFUzogc25tcGxpYjogQlVHUzoKKyAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSEVTOiAzMTgzMDAwOiBGaXgKKworIGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aCBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOgorIDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeAorCisgY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6CisgMzE4Mjk4NTogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTgyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4CisKKyBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGggQ0hBTkdFUzogc25tcGxpYjogQlVHUzoKKyAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMsIGFwcHMvc25tcHRyYXBkX2RzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjogQ0hBTkdFUzoKKworIExpbnV4OiBQQVRDSEVTOiAzMjA1ODExOiBPcHRpb24gdG8gc2tpcCBmZC9sb29wL3JhbSBkZXZpY2VzIGluCisgZGlza0lPVGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMsIGFwcHMvc25tcHRyYXBkX2RzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjogQ0hBTkdFUzoKKworIExpbnV4OiBQQVRDSEVTOiAzMjA1ODExOiBPcHRpb24gdG8gc2tpcCBmZC9sb29wL3JhbSBkZXZpY2VzIGluCisgZGlza0lPVGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NToKKworIEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NToKKworIEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NToKKworIEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTgwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6IENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NToKKworIEZpeCBzZWdmYXVsdCBvbiA2NC1iaXQgc3lzdGVtcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YKKworICd3aGlsZSAoZmFsc2UpJyBibG9ja3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZgorCisgJ3doaWxlIChmYWxzZSknIGJsb2NrcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pYjJjOiBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mCisKKyAnd2hpbGUgKGZhbHNlKScgYmxvY2tzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YKKworICd3aGlsZSAoZmFsc2UpJyBibG9ja3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZgorCisgJ3doaWxlIChmYWxzZSknIGJsb2NrcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmM6IENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2YKKworIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYzogQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQKKworIGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6IEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0xMiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OiBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6IEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDogQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTEyICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZQorCisgY29sdW1ucyBpbiBidWxrIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMTIgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6IEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4KKworICdkb05vdFJldGFpbk5vdGlmaWNhdGlvbkxvZ3MnIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5jOiBSZW1vdmUgYm9ndXMKKworIChMaW51eCkgZGVmaW5lcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTczIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmM6IFJlbW92ZSBib2d1cworCisgKExpbnV4KSBkZWZpbmVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QuYzogUmVtb3ZlIGJvZ3VzCisKKyAoTGludXgpIGRlZmluZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTczIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zbm1wLXRjLmM6IEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zbm1wLXRjLmM6IEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9zbm1wLXRjLmM6IEhBVkVfVE1fVE1fR01UT0ZGIGlzIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaCwgY29uZmlndXJlLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IEJpbGwgRmVubmVycyBwYXRjaCB0byBtYWtlCisKKyBESVNNQU4gUElORyBhbmQgVFJBQ0VST1VURSBNSUJTIGNvbXBpbGUgdW5kZXIgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jLCBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmM6IFNvbGFyaXMgc3VwcG9ydCBmb3IKKworIFNDVFAtTUlCIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIuYzogU29sYXJpcyBzdXBwb3J0IGZvcgorCisgU0NUUC1NSUIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYywgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5jOiBTb2xhcmlzIHN1cHBvcnQgZm9yCisKKyBTQ1RQLU1JQiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDQtMDkgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOiBUWiBpcyBvbmUgaG91ciBvZmYgaWYgSEFWRV9UTV9UTV9HTVRPRkYgYW5kCisKKyBTWVNWIChzdWNoIGlzIExpbnV4KSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTA5ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXAtdGMuYzogVFogaXMgb25lIGhvdXIgb2ZmIGlmIEhBVkVfVE1fVE1fR01UT0ZGIGFuZAorCisgU1lTViAoc3VjaCBpcyBMaW51eCkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wOSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6IFRaIGlzIG9uZSBob3VyIG9mZiBpZiBIQVZFX1RNX1RNX0dNVE9GRiBhbmQKKworIFNZU1YgKHN1Y2ggaXMgTGludXgpIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE2OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBkdGxzOgorCisgb3ZlcmhhdWwgb2YgZGVidWcgICAtIGRyYXN0aWMgcmVkdWN0aW9uIGluIG51bWJlciBvZiBtZXNzYWdlcyBhbmQgbXNnIGNvbXBsZXhpdHkgICAgIGZvciBiYXNpYyBkdGxzdWRwIHRva2VuICAgLSBwcmV2aW91cyBsZXZlbCBvZiBkZXRhaWwgYXZhaWxhYmxlIGJ5IGFkZGluZyA5OmR0bHNkdXAgdG9rZW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE2OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNC0wMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBkdGxzOgorCisgb3ZlcmhhdWwgb2YgZGVidWcgICAtIGRyYXN0aWMgcmVkdWN0aW9uIGluIG51bWJlciBvZiBtZXNzYWdlcyBhbmQgbXNnIGNvbXBsZXhpdHkgICAgIGZvciBiYXNpYyBkdGxzdWRwIHRva2VuICAgLSBwcmV2aW91cyBsZXZlbCBvZiBkZXRhaWwgYXZhaWxhYmxlIGJ5IGFkZGluZyA5OmR0bHNkdXAgdG9rZW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTAxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IGR0bHM6CisKKyBjbGVhbiB1cCBjbG9zZTsgY2F0Y2ggJ2Nvbm5lY3QnLydkaXNjb25uZWN0JyAgIGNvbm5lY3QgPSB3ZSBnZXQgc3VjY2Vzc2Z1bGx5IGRlY29kZWQgc25tcCBkYXRhICAgZGlzY29ubmVjdCA9IDAgYnl0ZSByZWFkLCBzc2ggc2h1dGRvd24gZmxhZyBzZXQgICBhZGQgYmlvX2NhY2hlIGZsYWdzIGZvciBjb25uZWN0ZWQvZGlzY29ubmVjdGVkICAgY2hlY2sgZm9yIG51bGwgcHRyIGJlZm9yZSBkZXJlZmVyZW5jaW5nICAgY2xvc2UgaGFuZGxpbmc6ICAgLSAgb25seSBzZW5kIHF1ZXVlZCBkYXRhIGlmIHdlIGdvdCB0byBjb25uZWN0ZWQgc3RhdGUgICAtICBzZXJpb3VzbHkgcmVkdWNlIHRpbWVvdXQgdG8gd2FpdCBmb3IganVuayByZWFkLiBpIHRoaW5rICAgICAgd2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyICAgLSByZXR1cm4gZWFybHkgaWYgY2FjaGVwIGlzIE5VTEwsIHNvIHdlIGRvbid0IGhhdmUgdG8gdGVzdCBpdCAgICAgcmVwZWF0ZWRseSAgIC0gdXNlIGNvcnJlY3QgbmZkcyB2YWx1ZSBpbiBzZWxlY3QgY2FsbCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA0LTAxICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IGR0bHM6CisKKyBjbGVhbiB1cCBjbG9zZTsgY2F0Y2ggJ2Nvbm5lY3QnLydkaXNjb25uZWN0JyAgIGNvbm5lY3QgPSB3ZSBnZXQgc3VjY2Vzc2Z1bGx5IGRlY29kZWQgc25tcCBkYXRhICAgZGlzY29ubmVjdCA9IDAgYnl0ZSByZWFkLCBzc2ggc2h1dGRvd24gZmxhZyBzZXQgICBhZGQgYmlvX2NhY2hlIGZsYWdzIGZvciBjb25uZWN0ZWQvZGlzY29ubmVjdGVkICAgY2hlY2sgZm9yIG51bGwgcHRyIGJlZm9yZSBkZXJlZmVyZW5jaW5nICAgY2xvc2UgaGFuZGxpbmc6ICAgLSAgb25seSBzZW5kIHF1ZXVlZCBkYXRhIGlmIHdlIGdvdCB0byBjb25uZWN0ZWQgc3RhdGUgICAtICBzZXJpb3VzbHkgcmVkdWNlIHRpbWVvdXQgdG8gd2FpdCBmb3IganVuayByZWFkLiBpIHRoaW5rICAgICAgd2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyICAgLSByZXR1cm4gZWFybHkgaWYgY2FjaGVwIGlzIE5VTEwsIHNvIHdlIGRvbid0IGhhdmUgdG8gdGVzdCBpdCAgICAgcmVwZWF0ZWRseSAgIC0gdXNlIGNvcnJlY3QgbmZkcyB2YWx1ZSBpbiBzZWxlY3QgY2FsbCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMzEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogbWFrZSB0cnVuayBhbmQKKworIHY1LTYtcGF0Y2hlcyBjbG9zZWx5IGFsaWduZWQgICBtb3N0bHkgY2hhbmdlcyBpbiBkZWJ1ZywgY29va2llIHRyYWNraW5nIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxNjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMzEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzogbWFrZSB0cnVuayBhbmQKKworIHY1LTYtcGF0Y2hlcyBjbG9zZWx5IGFsaWduZWQgICBtb3N0bHkgY2hhbmdlcyBpbiBkZWJ1ZywgY29va2llIHRyYWNraW5nIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0zMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBhZGQgY29va2llIGhhbmRsaW5nOworCisgcmVtb3ZlIGlmZGVmJ2QgY29kZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTY1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI3ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IFNpbXBsaWZ5IGFycmF5IHJlc2l6aW5nIHNvbWV3aGF0CisKKyBmdXJ0aGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE2NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOiBEbyBub3QgYXNzaWduIG5ld19kYXRhIGlmIHRoZQorCisgdmFsdWUgd29uJ3QgYmUgdXNlZC4gIFJlZHVjZSB2YXJpYWJsZSBzY29wZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNjMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjcgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzogSXQgaXMgbm90IG5lY2Vzc2FyeSB0byBjbGVhciBhCisKKyBjaHVuayBvZiBtZW1vcnkgaWYgdGhlIG5leHQgYWN0aW9uIG9uIGl0IGlzIHRvIGZpbGwgaXQgc28gdXNlIG1hbGxvYworIGluc3RlYWQgb2YgY2FsbG9jLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI3ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENvbnRhaW5lckJpbmFyeUFycmF5IHJlYWxseQorCisgY2FuJ3QgaG9sZCBhbnl0aG5nIGJ1dCBwb2ludGVycyBhbmQgdGhhdCBtZWFucyB0aGUgZGF0YV9zaXplIGZpZWxkCisgaXMgdW5uZWNlc3Nhcnkgc28gSSByZW1vdmVkIGl0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgYXBwcy9zbm1wdHJhcGQuYywgCisgICAgICBzbm1wbGliL2ludDY0LmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsIHNubXBsaWIvc25tcF9zZWNtb2QuYywgCisgICAgICBzbm1wbGliL3NubXB2My5jOiBBZGQgbWlzc2luZyBpbmNsdWRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6IFVzZSB0aGUgcmlnaHQgZmVhdHVyZQorCisgbWFjcm8gaW4gb3JkZXIgdG8gbWFrZSBidWlsZHMgd2l0aCAtLWVuYWJsZS1pcHY2CisgLS13aXRoLW91dC10cmFuc3BvcnRzPVVEUElQdjYgc3VjY2VlZC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOiBSZW1vdmUgZHVwbGljYXRlIGNvcGllcyBvZgorCisgZnVuY3Rpb25zIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL25ldC1zbm1wLWNlcnQ6IHR3ZWFrIGRlYnVnIG1lc3NhZ2UgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMjUgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogdXBkYXRlCisKKyBjZXJ0IHRva2VuIGhhbmRsaW5nICAtIHJlbW92ZSBkZWZYNTA5IGNlcnQgdG9rZW5zIChzaG91bGQgaGF2ZSBiZWVuIHJlbW92ZWQgYmVmb3JlIDUuNikgIC0gd2FybmluZ3MgZm9yIG91ci90aGVpciB0b2tlbnMsIHJlY29tbWVuZCB1c2luZyBsb2NhbC9wZWVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYzogbWVyZ2UgbmV0c25tcF9kdGxzdWRwNgorICAgICAgaW50bworCisgbmV0c25tcF9kdGxzdWRwICAgIHVzZSBhZGRyIHNpemUgdG8gdGVsbCB0aGVtIGFwYXJ0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzogbG9nIChvbmNlKSB3YXJuaW5nIHdoZW4gZGVwcmVjYXRlZAorCisgZl9jcmVhdGVfZnJvbV90c3RyaW5nIHRyYW5zcG9ydCBmdW5jdGlvbiB1c2VkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDE1NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0yNSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmM6IHJlZHVjZSBjYXN0aW5nOyBtYWtlIHN1cmUgdG8KKworIGZyZWUgdGhlIHJpZ2h0IHBvaW50ZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTUzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI1ICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmM6IHJlZHVjZSBjYXN0aW5nIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTI0ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzogUmVwbGFjZSBhIHZhcmlhYmxlIHdpdGggYQorCisgY29uc3RhbnQuIE1ha2Ugb25lIG1vcmUgb2lkIGNvbnN0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTUxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE4ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENIQU5HRVM6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xOCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xOCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlIGRlcGVuZCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTggIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsCisgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzogZG9jdW1lbnRhdGlvbgorCisgdXBkYXRlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTggIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1hbi9zbm1wZGVsdGEuMS5kZWY6IEZvcm1hdHRpbmcgYm90Y2ggZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE3ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGRlbHRhLjEuZGVmOiBGb3JtYXR0aW5nIGJvdGNoIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE3ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL01ha2VmaWxlLmluOiBJbnN0YWxsIHJlcXVpcmVkIG1pYnMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE3ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtaWJzL01ha2VmaWxlLmluOiBJbnN0YWxsIHJlcXVpcmVkIG1pYnMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTcgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIG1pYnMvcmZjbGlzdDogTmV3IFJGQyBtaWJzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDE0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWlicy9yZmNsaXN0OiBOZXcgUkZDIG1pYnMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxNDAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUywgTkVXUzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTM3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlCisKKyBkZXBlbmQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIAorICAgICAgcGVybC9TTk1QL1NOTVAucG0sIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwgCisgICAgICBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSwgcGVybC9hZ2VudC9hZ2VudC5wbSwgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKKyAgICAgIFZlcnNpb24KKworIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS50b3A6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY2VydF91dGlsLmM6IFNwZWxsaW5nIGZpeDogcmVnaW5lcmF0ZWQgLT4gcmVnZW5lcmF0ZWQuIAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgc25tcGxpYi9jZXJ0X3V0aWwuYzogU3BlbGxpbmcgZml4OiByZWdpbmVyYXRlZCAtPiByZWdlbmVyYXRlZC4gCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvY2VydF91dGlsLmM6IFNpbXBsaWZpZWQgcjE5NTk0IChsZWFrLWF0LWV4aXQgZml4KS4gCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzogRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIHRoYXQgd2FzCisKKyBpbnRyb2R1Y2VkIGluIHIyMDExMy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6IEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyB0aGF0IHdhcworCisgaW50cm9kdWNlZCBpbiByMjAxMTMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTQgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogQ0hBTkdFUywgTkVXUzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIENoYW5nZUxvZzogdmVyc2lvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTI3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTE0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOiBtYWtlCisKKyBkZXBlbmQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIAorICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCBtYW4vbmV0c25tcF91dGlsLjMsCisgICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6IGRvY3VtZW50YXRpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIAorICAgICAgcGVybC9TTk1QL1NOTVAucG0sIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwgCisgICAgICBwZXJsL2FnZW50L2FnZW50LnBtLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKKyAgICAgIFZlcnNpb24KKworIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS50b3A6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDEyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBGaXggbWFpbiBhZ2VudCBzZWxlY3QgY2FsbCB0byB1c2UgdGhlIHJlbmFtZWQgQVBJCisKKyByb3V0aW5lLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBGaXggbWFpbiBhZ2VudCBzZWxlY3QgY2FsbCB0byB1c2UgdGhlIHJlbmFtZWQgQVBJCisKKyByb3V0aW5lLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEzICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogCisKKyBCcmluZyB0aGUgbmFtaW5nIG9mIHRoZSBsYXJnZV9mZF9zZXQgc2VsZWN0IGNhbGwgaW50byBsaW5lIHdpdGggdGhlCisgcmVzdCBvZiB0aGUgQVBJLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDEyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMyAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6IAorCisgQnJpbmcgdGhlIG5hbWluZyBvZiB0aGUgbGFyZ2VfZmRfc2V0IHNlbGVjdCBjYWxsIGludG8gbGluZSB3aXRoIHRoZQorIHJlc3Qgb2YgdGhlIEFQSS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTMgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiAKKworIEJyaW5nIHRoZSBuYW1pbmcgb2YgdGhlIGxhcmdlX2ZkX3NldCBzZWxlY3QgY2FsbCBpbnRvIGxpbmUgd2l0aCB0aGUKKyByZXN0IG9mIHRoZSBBUEkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTMgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiAKKworIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBBZGQgdGhlIGZ1bmN0aW9uCisgbmV0c25tcF9sYXJnZV9zZWxlY3QoKSAocGx1cyB0d2Vha3MgdG8gbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTIwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEyICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENIQU5HRVM6IHNubXBsaWI6IHJlYWxsb2MraW5pdAorCisgaW5zdGVhZCBvZiBjYWxsb2MgIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbSBTdGVwaGVuIEhlbW1pbmdlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEyICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENIQU5HRVM6IHNubXBsaWI6IHJlYWxsb2MraW5pdAorCisgaW5zdGVhZCBvZiBjYWxsb2MgIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbSBTdGVwaGVuIEhlbW1pbmdlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEyICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENIQU5HRVM6IHNubXBsaWI6IHJlYWxsb2MraW5pdAorCisgaW5zdGVhZCBvZiBjYWxsb2MgIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbSBTdGVwaGVuIEhlbW1pbmdlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTIgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5Lmg6CisKKyBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlIHRhYmxlcyBmcm9tCisgU3RlcGhlbiBIZW1taW5nZXIgIGFwcGxpZWQgcGFydHMgMS0zIG9mIDQgZnJvbSBoaW0gKG1zZ3MgdG8gY29kZXJzIG9uIDIvMjgvMTE7IHN1YmplY3QgIGlwLWZvcndhcmQtbWliIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50czsgcGFydCA0IG5lZWRzIG1vcmUgd29yayBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEyICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICBfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jOiBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IG9wdGltaXphdGlvbnMgZm9yIGxhcmdlIHJvdXRlCisKKyB0YWJsZXMgZnJvbSBTdGVwaGVuIEhlbW1pbmdlciAgYXBwbGllZCBwYXJ0cyAxLTMgb2YgNCBmcm9tIGhpbSAobXNncyB0byBjb2RlcnMgb24gMi8yOC8xMTsgc3ViamVjdCAgaXAtZm9yd2FyZC1taWIgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzOyBwYXJ0IDQgbmVlZHMgbW9yZSB3b3JrIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTIgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSDogb3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUKKworIHRhYmxlcyBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyICBhcHBsaWVkIHBhcnRzIDEtMyBvZiA0IGZyb20gaGltIChtc2dzIHRvIGNvZGVycyBvbiAyLzI4LzExOyBzdWJqZWN0ICBpcC1mb3J3YXJkLW1pYiBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHM7IHBhcnQgNCBuZWVkcyBtb3JlIHdvcmsgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWI6IGFkZCBtb3JlCisKKyBvcGVuc3NsIGVycm9yIGNhc2VzIHdoZXJlIHdlIGNoZWNrIGZvciBsb2NhbCBjZXJ0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzogQ0hBTkdFUzogc25tcGxpYjogYWRkIG1vcmUKKworIG9wZW5zc2wgZXJyb3IgY2FzZXMgd2hlcmUgd2UgY2hlY2sgZm9yIGxvY2FsIGNlcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6IE1pbkdXOiBkc2tUYWJsZTogUmVwb3J0IHplcm8gZm9yCisKKyB1bmltcGxlbWVudGVkIGZpZWxkcyBpbnN0ZWFkIG9mIHJhbmRvbSBkYXRhLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOiBNaW5HVzogZHNrVGFibGU6IFJlcG9ydCB6ZXJvIGZvcgorCisgdW5pbXBsZW1lbnRlZCBmaWVsZHMgaW5zdGVhZCBvZiByYW5kb20gZGF0YS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhY2UKKworIGNvbmRpdGlvbiBpbiBoclNXUnVuVGFibGUgVHJlYXQgdGhlIHJlYWRzIGZyb20gL3Byb2MvPHBpZD4vKgorIGNhcmVmdWx5LCBwcm9jZXNzZXMgY2FuIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDExNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzogQ0hBTkdFUzogc25tcGQ6IGZpeGVkIHJhY2UKKworIGNvbmRpdGlvbiBpbiBoclNXUnVuVGFibGUgVHJlYXQgdGhlIHJlYWRzIGZyb20gL3Byb2MvPHBpZD4vKgorIGNhcmVmdWx5LCBwcm9jZXNzZXMgY2FuIGV4aXQgaW4gdGhlIG1pZGRsZSBvZiBwcm9jZXNzaW5nLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDExNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jOiBDSEFOR0VTOiBzbm1wZDogQnVpbGRzCisKKyB3aXRoIG1vc3QgcmVjZW50IE1pbkdXIChoYXZpbmcgI2RlZmluZSBsb2NhbHRpbWVfcikuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTExICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmM6IENIQU5HRVM6IHNubXBkOiBCdWlsZHMKKworIHdpdGggbW9zdCByZWNlbnQgTWluR1cgKGhhdmluZyAjZGVmaW5lIGxvY2FsdGltZV9yKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6IENIQU5HRVM6IHNubXBsaWI6CisKKyByZWZpbmUgY2VydCBkZWJ1Z2dpbmc7IHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6IENIQU5HRVM6IHNubXBsaWI6CisKKyByZWZpbmUgY2VydCBkZWJ1Z2dpbmc7IHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBSb2JlcnQgU3RvcnkgPHJzdG9yeUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYzogQ0hBTkdFUzogc25tcGQ6IEJVRzogMzIwNTc2NTogaGFuZGxlIHJlY29uZmlnCisKKyBmb3IgY2VydFNlY05hbWUgdG9rZW4gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDExMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmM6IENIQU5HRVM6IHNubXBkOiBCVUc6IDMyMDU3NjU6IGhhbmRsZSByZWNvbmZpZworCisgZm9yIGNlcnRTZWNOYW1lIHRva2VuIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogU3BlbGxpbmcgZml4IGluIGEgc291cmNlIGNvZGUgY29tbWVudDogbWVzc2dlcyAtPgorCisgbWVzc2FnZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wZC5jOiBTcGVsbGluZyBmaXggaW4gYSBzb3VyY2UgY29kZSBjb21tZW50OiBtZXNzZ2VzIC0+CisKKyBtZXNzYWdlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IE1pbm9yCisKKyBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb2YgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogTWlub3IKKworIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBvZiBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDExMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMjAzODA2OiBBdm9pZCB0aGF0IHRoZSBtYWluCisKKyBhZ2VudCBwcm9jZXNzaW5nIGxvb3AgLSB3aGVuIHVzaW5nIG1vcmUgdGhhbiBGRF9TRVRTSVpFIGZpbGUKKyBkZXNjcmlwdG9ycyAtIGNhbiBjYXVzZSBtZW1vcnkgY29ycnVwdGlvbiBieSBpbnZva2luZyBzZWxlY3QoKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBkLmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzIwMzgwNjogQXZvaWQgdGhhdCB0aGUgbWFpbgorCisgYWdlbnQgcHJvY2Vzc2luZyBsb29wIC0gd2hlbiB1c2luZyBtb3JlIHRoYW4gRkRfU0VUU0laRSBmaWxlCisgZGVzY3JpcHRvcnMgLSBjYW4gY2F1c2UgbWVtb3J5IGNvcnJ1cHRpb24gYnkgaW52b2tpbmcgc2VsZWN0KCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogCisKKyBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogQWRkIHRoZSBmdW5jdGlvbgorIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMTA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6IAorCisgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IEFkZCB0aGUgZnVuY3Rpb24KKyBuZXRzbm1wX2xhcmdlX3NlbGVjdCgpLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTA4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYzogCisKKyBGaXhlZCB0d28gY29tcGlsZXIgd2FybmluZ3MgKGJhY2twb3J0ZWQgcjIwMDk4IGZyb20gdGhlIHRydW5rKS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA5bGFyZ2VfZmRfc2V0X2NsaWIuYzogQWRkZWQgYQorCisgbWluaW1hbCB1bml0IHRlc3QgZm9yIG5ldHNubXBfbGFyZ2VfZmRfc2V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMTA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jbGliX2J1aWxkLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwOWxhcmdlX2ZkX3NldF9jbGliLmM6IEFkZGVkIGEKKworIG1pbmltYWwgdW5pdCB0ZXN0IGZvciBuZXRzbm1wX2xhcmdlX2ZkX3NldC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAxMDYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBNYWtlCisKKyBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSBjbGVhciBhbGwgcmVsZXZhbnQgZmlsZSBkZXNjcmlwdG9ycy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDEwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9sYXJnZV9mZF9zZXQuYzogQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IE1ha2UKKworIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIGNsZWFyIGFsbCByZWxldmFudCBmaWxlIGRlc2NyaXB0b3JzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXAtdGMuYzogQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudAorCisgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTA0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOiBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTc4Mzg5OiBGaXggaW5jb25zaXN0ZW50CisKKyBoYW5kbGluZyBvZiBUWiBvZmZzZXRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6IENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQKKworIGhhbmRsaW5nIG9mIFRaIG9mZnNldHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXAtdGMuYzogQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE3ODM4OTogRml4IGluY29uc2lzdGVudAorCisgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAxMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMTAgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wLXRjLmM6IENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNzgzODk6IEZpeCBpbmNvbnNpc3RlbnQKKworIGhhbmRsaW5nIG9mIFRaIG9mZnNldHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDEwNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9NYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6IG1ha2UKKworIHZhcmlhYmxlIG5hbWVzIG1hdGNoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA5OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0xMCAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmM6IAorCisgRml4ZWQgdHdvIGNvbXBpbGVyIHdhcm5pbmdzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDk4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTEwICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjogZml4ZWQgaW5zdGFsbGF0aW9uCisKKyB2YXJpYWJsZXMgZm9yIHRoZSBvcHRpb25hbCBTRVQgcHJvZ3JhbXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOiBjaG1vZCBhK3ggZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlaWZkZWZjb2RlLnBsOiBwcmludCBhbiBlcnJvciBpZiB0aGUgZW5kIG9mCisKKyBhIGZpbGUgd2FzIHJlYWNoZWQgYW5kIHdlJ3JlIG5vdCBiYWNrIGludG8gdGhlIHN0YXRlIHdlIGNhbiB3cml0ZTsKKyBvdGhlcndpc2UgYSBjbG9zaW5nICNpZmRlZiBpcyBtaXNzaW5nLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYzogZml4IGVuZGlmIGNvbW1lbnQgdG8gbWF0Y2gKKworIHRoZSBvcGVuaW5nIGlmZGVmIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6IHJlc2V0IHRoZSBjYW53cml0ZSBmbGFnIGZvcgorCisgZXZlcnkgZmlsZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXM6IHRlbXBvcmFyaWx5IGxlYXZlIGluCisKKyBoZWFkZXIgZmlsZXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDkyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzogY2hhbmdlIHRoZSB1bmlxdWUgZmlsZSBjaGVjayB0byBvbmUgdGhhdAorCisgaXMgbm90IGluIHRoZSBtaWJncm91cCBkaXJlY3RvcnkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9yZWFkLW9ubHkvVDAxNDFzbm1wdjJjc2V0ZmFpbF9zaW1wbGU6IGEgdGVzdCBmb3IKKworIGVuc3VyaW5nIHRoZSBhZ2VudCByZWplY3RzIFNFVCByZXF1ZXN0cyB3aXRoIC0tZW5hYmxlLXJlYWQtb25seSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwOTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNDFzbm1wdjJjc2V0X3NpbXBsZTogYWRkIGJhY2sgaW4gdGhlCisKKyBzdG9wYWdlbnQgY29tbWFuZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDFwZHVfdHlwZV9jbGliLmMsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYywgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDNwZHVfcGFyc2VfY2xpYi5jOiB1bml0IHRlc3RzCisgICAgICB3cml0ZW4KKworIGZvciB0aGUgcmVhZC1vbmx5IHN1cHBvcnQgY29udmVydGVkIHRvIHdvcmsgd2l0aCBvciB3aXRob3V0CisgcmVhZC1vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlOiBkb24ndCBydW4gdGhlCisKKyBzZXQgdGVzdCBpZiBub193cml0ZV9zdXBwb3J0IGlzIHR1cm5lZCBvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzMHNubXB2M3VzZXJjcmVhdGlvbl9zaW1wbGU6IHNraXAgaWYKKworIG5vX3dyaXRlX3N1cHBvcnQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGU6IEEgbmV3IHRlc3QgdG8KKworIGNoZWNrIHdoZXRoZXIgU05NUHYyYyBTRVRzIHRvIHN5c0NvbnRhY3Qgd29yayBhcyBleHBlY3RlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3Zhbnljb25maWc6IGFsbG93IGZvciB2MmMgU0VUIHN1cHBvcnQKKworIHRlc3RpbmcgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDg0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYzogQWxsb3cgZm9yIHNpbmdsZSBxdW90ZXMgZm9yIHZhY20KKworIGNvbnRleHQgbmFtZSBxdW90aW5nIHRvbyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZTogZml4IHRoZSBjb25maWd1cmUgdGVzdHMgdG8gaW5jbHVkZSB0aGUgd29yZCB0ZXN0IGluIHRoZQorCisgdGVzdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjogZml4IHRoZSBjb25maWd1cmUgdGVzdHMgdG8gaW5jbHVkZQorCisgdGhlIHdvcmQgdGVzdCBpbiB0aGUgdGVzdCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwODEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXM6IEFkZGVkIGFuIGFubm95aW5nbHkgbG9uZworCisgbGlzdCBvZiBleGNlcHRpb25zIHRoYXQgbmVlZHMgdG8gYmUgYXV0b21hdGVkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA4MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlczogQSBxdWljayBwZXJsIHNjcmlwdCB0bworCisgcmVtb3ZlIHVubmVlZGVkIGNvZGUgbW9kdWxlcyBmcm9tIHRoZSBtb2R1bGVzIGRpcmVjdG9yeSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL3NubXB1c20uYywgc25tcGxpYi92YWNtLmM6IG1vcmUKKworIGltcHJvdmVtZW50cyAocmVtb3ZlbWVudHMpIGZvciBmZWF0dXJpemF0aW9uIGFuZCByZWFkLW9ubHkgc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOiBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDoKKworIDMxOTU1Mzc6IE1pbm9yIGJpbmFyeV9hcnJheSBjb250YWluZXIgc29ydCBvcHRpbWl6YXRpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIOgorCisgMzE5NTUzNzogTWlub3IgYmluYXJ5X2FycmF5IGNvbnRhaW5lciBzb3J0IG9wdGltaXphdGlvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDYgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYzogVGFicyB0byBzcGFjZXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNiAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jOiBUYWJzIHRvIHNwYWNlcworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDYgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOiBDb25maWd1cmUgY2hlY2sgZm9yIGdldGhvc3RuYW1lMgorCisgVXNlIGdldGFkZHJpbmZvIGlmIGF2YWlsYWJsZS4gTm93IHdvcmtzIGZvciBTb2xhcmlzIChhbmQgV2luZG93cz8pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDYgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOiBDb25maWd1cmUgY2hlY2sgZm9yIGdldGhvc3RuYW1lMgorCisgVXNlIGdldGFkZHJpbmZvIGlmIGF2YWlsYWJsZS4gTm93IHdvcmtzIGZvciBTb2xhcmlzIChhbmQgV2luZG93cz8pIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNSAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRlc3QuYzogQWRkIGRyb3BwZWQgfHwncyBmcm9tIHIyMDA3MiBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYzogQ2xlYW4gdXAsIGFuZAorCisgY29zb2xpZGF0ZSByZXN1bHQgdGFibGUgcm93IGNyZWF0aW9uIGludG8gYSBuZXcgZnVuY3Rpb24uICBTYXZlcyAyMDAKKyBsaW5lcyBvZiBjb2RlLCB3aXRoIChob3BlZnVsbHkpIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDUgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmM6IENsZWFuIHVwLCBhbmQKKworIGNvc29saWRhdGUgcmVzdWx0IHRhYmxlIHJvdyBjcmVhdGlvbiBpbnRvIGEgbmV3IGZ1bmN0aW9uLiAgU2F2ZXMgMjAwCisgbGluZXMgb2YgY29kZSwgd2l0aCAoaG9wZWZ1bGx5KSBubyBmdW5jdGlvbmFsaXR5IGNoYW5nZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNzMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhcHBzL01ha2VmaWxlLmluLCBhcHBzL3NubXB0ZXN0LmMsIGNvbmZpZ3VyZSwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6IGRvbid0IGJ1aWxkIFNFVCByZWxhdGVkIGFwcHMgd2l0aAorCisgLS1lbmFibGUtcmVhZC1vbmx5IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA3MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYywgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOiBmaXgKKworIGlzc3VlcyB3aXRoIGNvbWJpbmluZyAtLWVuYWJsZS1taW5pbWFsaXN0IGFuZCAtLWVuYWJsZS1yZWFkLW9ubHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGU6IGJldHRlciBvdXRwdXQgZm9yIGZpbmRpbmcKKworIG9iamVjdCBzeW1ib2xzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBNaWtlIEJhZXIgPGJhZXJtQHN1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6IGxhc3QgY29tbWl0OiBjaGFuZ2VzIHRvIGFsbG93CisKKyBwYXJzaW5nIG9mIGZlYXR1ZXJzIGZpbGVzIHRvIGdldCBhbGwgbWluaW1hbGlzdCB0YWdzIHdoaWNoIGFyZSB0aGVuCisgcHJvY2Vzc2VkIGZvciByZW1vdmFsIHRoaXMgY29tbWl0OiBjaGFuZ2VkIGNvbW1lbnRzL3doaXRlIHNwYWNlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgTWlrZSBCYWVyIDxiYWVybUBzdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzogYWRkZWQgbm9fd3JpdGUgc3VwcG9ydCB0byBleHRlbmQuYworICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmM6IEFkZGVkIG1pc3NpbmcgI2VuZGlmIGNvbW1lbnQgZm9yIHJlbW92ZQorCisgaWZkZWYgY29kZSBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgTWlrZSBCYWVyIDxiYWVybUBzdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlaWZkZWZjb2RlLnBsOiBhZGRlZCBjaGFuZ2VzIHRvIGFsbG93IGNvZGUKKworIHJlbW92YWwgaW4tcGxhY2UgKGkuZS4gZG9lcyBub3QgcmVxdWlyZSBjcmVhdGluZyBhIG5ldyBmaWxlKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2lnbm9yZS5yZWdleHA6IGFkZGluZyBhIGlnbm9yZS5yZWdleHAgZmlsZSB0aGF0CisKKyBjYW4gYmUgdXNlZCB3aXRoIHJlbW92ZWlmZGVmY29kZS5wbCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczogYWRkIGEgb3V0Z29pbmcgbGluayB0byB0aGUKKworIHBhcmVudCBtYXJraW5nIHBhZ2UgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDY0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBBZGRlZCBhIHdpa2kgb3V0cHV0IG1vZGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IE5vdGUgdGhhdCB0aGUgb3JnIG91dHB1dCBpcyB0aGUKKworIGRlZmF1bHQgaW4gdGhlIGhlbHAgb3V0cHV0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQKKworICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uCisgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDA2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQKKworICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uCisgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDA2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQKKworICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uCisgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA2MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jOiBDSEFOR0VTOiBzbm1wZDogZml4ZWQKKworICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbiBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIG9uCisgTGludXggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDYxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jLCBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywKKyAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLCBzbm1wbGliL3NubXBfYXBpLmM6CisKKyByZWNsYXNzaWZpY2F0aW9uIG9mIHRoZSByZW1haW5pbmcgZmVhdHVyZXMgaW50byBhIGhpZXJhcmNoeSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6IGRvbid0IGRvdWJsZS1kZWNsYXJlIGNlcnRfdXRpbHMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzogdGhlCisKKyBpcGFkZHJlc3NfbGludXggd2FzIGluY29ycmVjdGx5IG1hcmtlZCBhcyBuZWVkaW5nIGNlcnRfZmluZ2VycHJpbnRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzogcHV0IHRoZSBhZ2VudF9yZWdpc3RyeSBmZWF0dXJlIGluCisKKyBsaWJuZXRzbm1wYWdlbnQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOiBDSEFOR0VTOiBXaW4zMjogRGVwcmVjYXRlZAorCisgbGlic25tcC5kZWYgLSBhZGQgTkVUU05NUF9JTVBPUlQgdG8gZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluc3RlYWQgdG8KKyBleHBvcnQgYSBmdW5jdGlvbiBmcm9tIG5ldHNubXAuZGxsLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWY6IENIQU5HRVM6IFdpbjMyOiBEZXByZWNhdGVkCisKKyBsaWJzbm1wLmRlZiAtIGFkZCBORVRTTk1QX0lNUE9SVCB0byBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaW5zdGVhZCB0bworIGV4cG9ydCBhIGZ1bmN0aW9uIGZyb20gbmV0c25tcC5kbGwuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg6IE1vdmVkIGEgc291cmNlIGNvZGUgY29tbWVudAorCisgc3VjaCB0aGF0IGl0IGlzIGFnYWluIGltbWVkaWF0ZWx5IGFib3ZlIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgaXQKKyBhcHBsaWVzIHRvLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDA1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oOiBBZGRlZCBtaXNzaW5nCisgICAgICBORVRTTk1QX0lNUE9SVAorCisgZGVjbGFyYXRpb25zLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg6IEFkZGVkIG1pc3NpbmcKKyAgICAgIE5FVFNOTVBfSU1QT1JUCisKKyBkZWNsYXJhdGlvbnMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDU0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC5kZWYsIHdpbjMyL2xpYnVjZG1pYnMvbGlidWNkbWlicy5kZWY6IAorCisgUmVtb3ZlZCB0d28gb2Jzb2xldGUgV2luMzIgZmlsZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRlZiwgd2luMzIvbGlidWNkbWlicy9saWJ1Y2RtaWJzLmRlZjogCisKKyBSZW1vdmVkIHR3byBvYnNvbGV0ZSBXaW4zMiBmaWxlcy4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjAwNTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYzogVHJpdmlhbCBjb21tZW50IGZpeDoKKworIHNubXBJUHY2QmFzZURvbWFpbi5jIGNvbnRhaW5zIElQdjYgYmFzZSB0cmFuc3BvcnQgc3VwcG9ydCBmdW5jdGlvbnMKKyBpbnN0ZWFkIG9mIElQdjQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYzogVHJpdmlhbCBjb21tZW50IGZpeDoKKworIHNubXBJUHY2QmFzZURvbWFpbi5jIGNvbnRhaW5zIElQdjYgYmFzZSB0cmFuc3BvcnQgc3VwcG9ydCBmdW5jdGlvbnMKKyBpbnN0ZWFkIG9mIElQdjQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwMDUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9jb25maWcuaDogUmVtb3ZlZCBhbiBvYnNvbGV0ZSBmaWxlLiAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaCwgd2luMzIvc25tcHNtX3NodXRkb3duLmgsIAorICAgICAgd2luMzIvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmg6IEJ1aWxkcyBhZ2FpbiB3aXRoIFZpc3VhbCBTdHVkaW8KKworIGFmdGVyIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlICJmZWF0dXJlIiBmZWF0dXJlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9zbm1wc21faW5pdC5oOiBSZW1vdmVkIGEgbWlzbGVhZGluZyBjb21tZW50LiAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjogQ29ycmVjdCB0aGUgY2hlY2sgb2YKKworIHdldGhlciB1c20gc2VjdXJpdHkgaXMgZW5hYmxlZC4gIFJlZ2VuZXJhdGUgY29uZmlndXJlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQ3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogUmVnZW5lcmF0ZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jOiBBZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXB1c20uYzogSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgZnJvbQorCisgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvY29udGFpbmVyLmM6IFNwbGl0IHRoZSBjb250YWluZXJfY29tcGFyZV9mdW5jdGlvbnMgZmVhdHVyZQorCisgaW50byBjb250YWluZXJfY29tcGFyZV9tZW0sIGNvbnRhaW5lcl9jb21wYXJlX2xvbmcsCisgY29udGFpbmVyX2NvbXBhcmVfdWxvbmcsIGNvbnRhaW5lcl9jb21wYXJlX2ludDMyIGFuZAorIGNvbnRhaW5lcl9jb21wYXJlX3VpbnQzMiBVbmlmeSB0aGUgc3RydWN0dXJlIG9mIHRoZSBjb21wYXJlCisgZnVuY3Rpb25zIGZ1cnRoZXIuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDMtMDIgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL2NvbnRhaW5lci5jOiBDaGFuZ2UgdGhlIHNwZWxsaW5nIG9mIHRoZQorCisgY29udGFpbmVyX2NvbXBhcmVfY3N0cmluZyBmZWF0dXJlIHRvIGNvbnRhaW5lcl9uY29tcGFyZV9jc3RyaW5nIGFzCisgdGhhdCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpcyBndWFyZGVkIGJ5IHRoYXQgYXR0cmlidXRlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAzLTAyICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6IEFkZCB0aGUgbWlzc2luZyByZXBsYWNlbWVudAorCisgbWFjcm8gZm9yIHNubXBfaW5pdF9zdGF0aXN0aWNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDA0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMy0wMiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOiBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWNfYnkKKworIHRha2VzIHR3byBhcmd1bWVudHMgc28gbGV0IHRoZSByZXBsYWNlbWVudCBtYWNybyB0YWtlIHR3byBhcmd1bWVudHMKKyBhcyB3ZWxsLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDQwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI3ICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYzogRml4IHR5cG8gaW4KKworIHIxOTk5MCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2s6IFJlbW92ZSBsaW5lcyBzdGFydGluZyB3aXRoICNkZWZpbmUKKworIGluIHRoZSBvdXRwdXQgb2YgdGhlIHByZXByb2Nlc3NvciBXaGVuIGdjYyAtRSBpcyBjYWxsZWQgd2l0aCAtZ2dkYjMKKyAob3IgLWREKSB0aGVuIGFsbCB0aGUgbWFjcm8gZGVmaW5pdGlvbnMgYXJlIHBhc3NlZCB0aHJvdWdoIHRoZQorIHByZXByb2Nlc3NvciBhbmQgdGhhdCBtZXNzZXMgdXAgb3VyIHByb2Nlc3NpbmcuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBNYWtlZmlsZS5ydWxlczogUHV0IHRoZSBnZW5lcmF0ZWQgZmlsZSBpbiB0aGUgYnVpbGQgdHJlZSwgbm90IHRoZQorCisgc291cmNlIHRyZWUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcgorICAgICAgIGZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmEKKyAgICAgICBjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmCisgICAgICAgYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGMsIGFnZW50L21pYmdyb3VwL3RzbS1taWIvc25tcFRzbVN0YXRzL3NubXBUc21TdGF0cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYzogbW92ZWQgYSBidW5jaCBvZiBmZWF0dXJlcyBpbnRvIHRoZSBsaWJuZXRzbm1wbWlicyBmZWF0dXJlIHNldC4KKyAgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X2hhbmRsZXIuYywgYWdlbnQvYWdlbnRfaW5kZXguYywgCisgICAgICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9hZ2VudF90cmFwLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jLCBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jLCAKKyAgICAgIGFnZW50L3NubXBfYWdlbnQuYywgbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHMsIHNubXBsaWIvbWliLmM6CisKKyBjbGFzc2lmaWVkIGxpYm5ldHNubXBhZ2VudCBmZWF0dXJlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiByZXZlcnNlIHRoZSBvcmRlciBvZiB0aGUgbGlicmFyaWVzCisKKyAoc25tcGxpYiBmaXJzdCkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDM0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogb3V0cHV0IGNsZWFudXAgYW5kIGFkZGVkIGFnZW50LW1pYnMKKworIGFuZCBsb2dnaW5nIG9wdGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogYWRkIGEgZGVmYXVsdCBzZXQgb2YgYXJndW1lbnRzCisKKyBjYWxjdWxhdGUgcmVzdWx0aW5nIHNpemVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAzMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9kaXJfdXRpbHMuYzogQWRkZWQgYSBtaXNzaW5nIDsgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBwcmVmaXggdGhlIG91dHB1dCBmaWxlcyB3aXRoIGEgbnVtYmVyCisKKyB0byBpbmRpY2F0ZSBvcmRlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBzYXZlIHRoZSByZXN1bHRzIG9mIHRoZSBzeXN0ZW0KKworIGV4ZWN1dGlvbnMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogZW5hYmxlIGJ1aWxkaW5nIG9mIHRoZSByZXN1bHRpbmcKKworIGNvbWJpbmF0aW9ucyBBZGQgYSAtbiBmbGFnIGZvciBkcnktcnVucyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czogZW5hYmxlIHRoZSAtdCB0YWcgZm9yIGxpbWl0aW5nIHR5cGVzCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IEFkZGVkIGFyZ3VtZW50IHBhcnNpbmcgYW5kIGFyZ3VtZW50cworCisgZm9yIHNlbGVjdGluZyBhbmQgbGlzdGluZyB0eXBlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBnZW5lcmF0ZSBjb25maWd1cmUgc2NyaXB0IGFyZ3VtZW50cworCisgZnJvbSBzcGVjcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOiBhZGRlZCBhIGJ1bmNoIG9mIG5ldyBmZWF0dXJlIG9wdGlvbnMKKworIGFuZCBjbGVhbmVkIHVwIGEgYml0IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6IGFkZGVkIGEgbmV3IChub3QgeWV0IHdvcmtpbmcpIHNjcmlwdAorCisgdG8gdGVzdCBzaXppbmcgb2YgdmFyaW91cyBhcmd1bWVudCBzZXRzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6IFNpbXBsaWZ5IHRoZSBjb2RlLiBVbmlmeSBzb21lCisKKyBkZWJ1ZyBsb2dzLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI2ICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzogUmVkdWNlIHRoZSBzY29wZSBvZiBhIGZldworCisgdmFyaWFibGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBSZW1vdmUgc29tZSB1bnVzZWQgaW5jbHVkZXMuIAorICAgICAgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBNYWtlIGl0IHBvc3NpYmxlIHRvCisKKyBpbml0aWFsaXplL3VuaW5pdGlhbGl6ZSBtb2R1bGVzIHdpdGggNjQgY2hhcmFjdGVyIG5hbWVzIGFuZCBub3QKKyBzdWZmZXIgd2lsZCB3cml0ZXMuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOiBDb2RlIHJlc3RydWN0dXJpbmcgLSBwdXQgdGhlCisKKyBtYW5hZ2VkIHJvdXRpbmVzIGJlZm9yZSB0aGUgbWFuYWdtZW50IGNvZGUuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjYgIE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oOiAKKworIENIQU5HRVM6IGxpYm5ldHNubXBtaWJzOiBNYWtlIGFsbCBmdW5jdGlvbnMgaW4gdGhlIGRsbW9kIG1vZHVsZSB0aGF0CisgZG9uJ3QgaGF2ZSB0byBiZSBwdWJsaWMgc3RhdGljIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNiAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6IFJlbmFtZSBkZWluaXRfZGxtb2QgdG8KKworIHNodXRkb3duX2RsbW9kIGFzIHRoYXQgaXMgd2hhdCBpdCByZWFsbHkgaXMgYWJvdXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jOiBhZGRpbmcgbWluaW1hbGlzdCBpZmRlZnMKKworIHRvIG5ldC1zbm1wLXZhY20gbWliIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBwcm9wZXJseSBoYW5kbGUgdHdpbiBjaGlsZHJlbjsKKworIGFsc28gc29ydCB0aGUgY2hpbGQgbGlzdCBhbHBoYWJldGljYWxseS4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzogSSBzdXBwb3NlIGxvZ2dpbmcgc2hvdWxkIHByb2JhYmx5IGRlZmF1bHQKKworIHRvIGJlaW5nIGEgd2FudGVkIG9wdGlvbiA6LSkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IG9yZy1saW5rIHRoZSBmaWxlcyBpbiB0aGUKKworIG91dHB1dCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5ydWxlcywgYWdlbnQvTWFrZWZpbGUuaW4sIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluLCAKKyAgICAgIGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLWNoZWNrLCBzbm1wbGliL01ha2VmaWxlLmluOiBtYWtlIHRoZQorCisgZmVhdHVyZXMtY2hlY2sgc2NyaXB0IHRyYWNrIHRoZSBmdWxsIHNvdXJjZSBwYXRoIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBjaGFuZ2UgdGhlIGZ1bmN0aW9uIG5hbWVzIHRvCisKKyBtYXRjaCB0aGF0IGl0J3MgcHJpbnRpbmcgdG8gb3JnLW1vZGUgYXQgdGhlIG1vbWVudC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAxMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIvZmlsZV91dGlscy5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL29pZF9zdGFzaC5jLCAKKyAgICAgIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgc25tcGxpYi90b29scy5jOiBsYXN0CisgICAgICBvZgorCisgdGhlIGZlYXR1cmUgY2xhc3NpZmljYXRpb24gaW4gbGlibmV0c25tcCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9sY2RfdGltZS5jLCBzbm1wbGliL3NjYXBpLmM6IG1ha2UgdGhlCisKKyB1c21fc3VwcG9ydCB1dGlsaXRpZXMgc2VsZi1kZWNsYXJlIHRoZW1zZWx2ZXMgYXMgY2hpbGRyZW4gdG8gbWFrZQorIHN1cmUgdGhleSdyZSBwcm9wZXJseSBpbmNsdWRlZCBkdXJpbmcgZGVwZW5kZW5jeSBvcmRlcmluZyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL2NhbGxiYWNrLmMsIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY2hlY2tfdmFyYmluZC5jLCAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvZGF0YV9saXN0LmMsIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jLAorICAgICAgIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCBzbm1wbGliL2ZpbGVfdXRpbHMuYywgCisgICAgICBzbm1wbGliL2tleXRvb2xzLmMsIHNubXBsaWIvc25tcHVzbS5jOiBzdXBlcnN0cnVjdHVyYWxpemF0aW9uaXppbmcKKworIHRoZSBmZWF0dXJlcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL3JlYWRfY29uZmlnLmMsIHNubXBsaWIvc25tcC10Yy5jLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wX2VudW0uYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCBzbm1wbGliL3N5c3RlbS5jLCAKKyAgICAgIHNubXBsaWIvdGV4dF91dGlscy5jLCBzbm1wbGliL3Rvb2xzLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvdWNkX2NvbXBhdC5jOgorCisgc2lnbmlmaWNhbnQgcGFyZW50L2NoaWxkIGZlYXR1cmUgY2xhc3NpZmljYXRpb24gZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDA2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcHVzbS5jOiBjbGFzc2lmeSBhIGZldyBjb21wb25lbnRzCisKKyBpbnRvIGEgdG9wLWxldmVsIGxpYm5ldHNubXAgY29tcG9uZW50IGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9sY2RfdGltZS5jLCBzbm1wbGliL3NjYXBpLmMsIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6IHN0cnVjdHVyaXplIHRoZSB1c20gZmVhdHVyZXMgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBzbm1wbGliL2NvbnRhaW5lci5jLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLCAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jLCBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsIAorICAgICAgc25tcGxpYi9kaXJfdXRpbHMuYzogc3RydWN0dXJlIHRoZSBjb250YWluZXIgZmVhdHVyZXMgaW50byBhCisKKyBoaWVyYXJjaHkgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwMDAzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOiBncm91cCB0aGUgbG9nZ2luZyBoYW5kbGVycyB1bmRlciBhIHBhcmVudAorCisgZmVhdHVyZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjAwMDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6IGZpeCB0aGUgZXhwZWN0IGFyZ3VtZW50IGNvdW50CisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBmaXggdGhlIG5hbWUgb2YgdGhlIGV4cGVjdGVkCisKKyBpbnB1dCBmaWxlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDAwMCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOiBhcmd1bWVudCBwYXJzaW5nIGFuZCB1c2FnZSgpCisKKyBvdXRwdXQgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTk5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jLCBzbm1wbGliL29pZF9zdGFzaC5jOiAtCisgICAgICBhZGRlZCB0d28gb2lkX3N0YXNoIGZ1bmN0aW9ucyBhcyBpbmRpdmlkdWFsIGZlYXR1cmVzIC0gY2xlYW5lZCB1cAorICAgICAgc29tZSB3YXJuaW5ncyBpbiB0aGUgdGFibGVfaXRlcmF0b3IgY29kZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk5OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgZGlzdC9tYWtlcmVsZWFzZS54bWw6IEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoICBpbnRvIGxpbmUgd2l0aAorICAgICAgdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKgorICAgICAgYnJhbmNoZXMsIHJhdGhlciAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgZGlzdC9tYWtlcmVsZWFzZS54bWw6IEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoICBpbnRvIGxpbmUgd2l0aAorICAgICAgdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKgorICAgICAgYnJhbmNoZXMsIHJhdGhlciAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgZGlzdC9tYWtlcmVsZWFzZS54bWw6IEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoICBpbnRvIGxpbmUgd2l0aAorICAgICAgdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKgorICAgICAgYnJhbmNoZXMsIHJhdGhlciAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgZGlzdC9tYWtlcmVsZWFzZS54bWw6IEZpeCB0aGUgY29tbWFuZCB0byBjcmVhdGUgYSBuZXcgU1ZOIHRhZyBsaW5lCisgICAgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoICBpbnRvIGxpbmUgd2l0aAorICAgICAgdGhlIG90aGVyIGJyYW5jaGVzLCB0aGUgcHJldmlvdXMgIGNvbW1hbmQgaXMgbm93IHdyb25nIGZvciAqYWxsKgorICAgICAgYnJhbmNoZXMsIHJhdGhlciAgdGhhbiBqdXN0IG1vc3Qgb2YgdGhlbSEpIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTk3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgbWFuL25ldHNubXBfYWdlbnQuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6IGRvY3VtZW50YXRpb24KKworIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sCisgICAgICAgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOiBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBDaGFuZ2VMb2c6IHZlcnNpb24gdXBkYXRlIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk5MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYywgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLAorICAgICAgIHBlcmwvT0lEL09JRC5wbSwgcGVybC9TTk1QL1NOTVAucG0sIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSwgCisgICAgICBwZXJsL2FnZW50L2FnZW50LnBtLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbTogVmVyc2lvbiBudW1iZXIgdXBkYXRlCisgICAgICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wdjMuYzogQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90CisKKyBhdmFpbGFibGUgb3Igc2V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTk5MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXB2My5jOiBBdm9pZCBhIHBvc3NpYmxlIGNyYXNoIGlmIHRoZSBlbmdpbmVJRCBpcyBub3QKKworIGF2YWlsYWJsZSBvciBzZXQuICBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHYzLmM6IEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdAorCisgYXZhaWxhYmxlIG9yIHNldC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zbm1wdjMuYzogQXZvaWQgYSBwb3NzaWJsZSBjcmFzaCBpZiB0aGUgZW5naW5lSUQgaXMgbm90CisKKyBhdmFpbGFibGUgb3Igc2V0LiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTkxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI1ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcHYzLmM6IEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdAorCisgYXZhaWxhYmxlIG9yIHNldC4gIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5OTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjUgIE1pa2UgQmFlciA8YmFlcm1Ac3VzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuaDogYWRkaW5nIGlmZGVmIGNvZGUKKworIGZvciBtaW5pbWFsaXN0IHN1cHBvcnQgb2YgZGlmZm1hbiBtaWIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTkwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI0ICBNaWtlIEJhZXIgPGJhZXJtQHN1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaDoKKworIEFkZGluZyBtaW5pbWFsaXN0IGlmZGVmcyB0byBob3N0IHJlc291cmNlIG1pYiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgc25tcGxpYi9kYXRhX2xpc3QuYzogbWFyayB0aGUKKworIGRhdGFfbGlzdCBmdW5jdGlvbiB0aGF0J3Mgb25seSB1c2VkIGluIHN0YWNoX2NhY2hpbmcgYXMgYSBmZWF0dXJlIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jOiB3aG9vcHMuICBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzogbW9yZSBtaXNzaW5nIHN0YXNoIHJlZmVyZW5jZXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTI0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6IGlmZGVmZWQvZmVhdHVyZWQgb3V0IGEgbWlzc2luZworCisgc3Rhc2hfY2FjaGUgc2VjdGlvbiBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzogbWFrZSB0aGUgcHJlZml4X2luZm8gbW9yZQorCisgaGllcmFyY2hpY2FsIGFuZCBzdWItZmVhdHVyZSB0aGUgdW51c2VkIG9uZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZTogZG8gaW5jbHVkZSB0aGUgcGVybC9weXRob24gY29kZQorCisgd2hlbiBzZWFyY2hpbmcgZm9yIGZpbGVzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jOiBtYWtlIHRoZSBzZW1pLXVzZWQgdGFibGVfdGRhdGEKKworIGZ1bmN0aW9ucyBjaGlsZHJlbiBvZiB0YWJsZV90ZGF0YV9hbGwgaW5zdGVhZCBvZiBqdXN0IHRhYmxlX3RkYXRhIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYzogQ29ycmVjdCB0eXBvIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTgxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDb3JyZWN0IHR5cG8gZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5ODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L3NubXBfdmFycy5jOiBwcm9wZXIgaW5jbHVkZSBvZiBwcm90b3R5cGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3RyYW5zcG9ydHMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6IGNvbXBhdCBzb21lIGZlYXR1cmUgaGVhZGVyCisKKyBjaGlja2VuIGFuZCBlZ2cgcHJvYmxlbXMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9zbm1wX3ZhcnMuYzogSW5jbHVkZSByZXF1aXJlZCBwcm90b3R5cGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3NubXB1c20uYzogdW5zaWduZWQganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmgsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXQKKyAgICAgICBhX2FjY2Vzcy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyB1bnNpZ25lZCBqdWdnbGluZyB0byByZW1vdmUgd2FybmluZ3MgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgdW5zaWduZWQganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6IEVuYWJsZSAocHJvYmFibHkgZm9yZ290dGVuKQorCisgaXBBZGRyZXNzUHJlZml4VGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6IEVuYWJsZSAocHJvYmFibHkgZm9yZ290dGVuKQorCisgaXBBZGRyZXNzUHJlZml4VGFibGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTc0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLWNoZWNrLCAKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jcywKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1yZW1vdmUsIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlLCAKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlaWZkZWZjb2RlLnBsOiBhZGRlZCBvdGhlciBtaXNzaW5nICduZXcnCisgICAgICBmaWxlcworCisgbm90IGluY2x1ZGVkIGluIHRoZSBtaW5pbWFsaXN0IHBhdGNoIGZpbGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTczIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2ZyZWVic2Q0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9uZXRic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkLmM6IExvYWRpbmcKKworIElQdjYgZGF0YSBpcyBhIG5vLW5vIHdoZW4gSVB2NiBub3QgZW5hYmxlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTcyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2ZyZWVic2Q0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9uZXRic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9vcGVuYnNkLmM6IExvYWRpbmcKKworIElQdjYgZGF0YSBpcyBhIG5vLW5vIHdoZW4gSVB2NiBub3QgZW5hYmxlZCBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleAorCisgY29udGFpbnMgOiBjaGFyYWN0ZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9zbm1wdGFibGUuYzogRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4CisKKyBjb250YWlucyA6IGNoYXJhY3RlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDE5OTcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhcHBzL3NubXB0YWJsZS5jOiBGaXggYnVnIDMxMTg2MzE6IHNubXB0YWJsZSBzZWdmYXVsdHMgaWYgaW5kZXgKKworIGNvbnRhaW5zIDogY2hhcmFjdGVyIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMTk5NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFwcHMvc25tcHRhYmxlLmM6IEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleAorCisgY29udGFpbnMgOiBjaGFyYWN0ZXIgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYXBwcy9zbm1wdGFibGUuYzogRml4IGJ1ZyAzMTE4NjMxOiBzbm1wdGFibGUgc2VnZmF1bHRzIGlmIGluZGV4CisKKyBjb250YWlucyA6IGNoYXJhY3RlciBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q4Lmg6IEZyZWVCU0QgOCBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AxOTk3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMyAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDguaDogRnJlZUJTRCA4IHN1cHBvcnQgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkOC5oOiBGcmVlQlNEIDggc3VwcG9ydCBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NzAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjMgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q4Lmg6IEZyZWVCU0QgOCBzdXBwb3J0IGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg6IGFkZGVkIG1pc3NpbmcKKworIG5ldC1zbm1wLWZlYXR1cmVzLmggZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLnJ1bGVzLCBNYWtlZmlsZS50b3AsIGFnZW50L01ha2VmaWxlLmluLCAKKyAgICAgIGFnZW50L2FnZW50X2hhbmRsZXIuYywgYWdlbnQvYWdlbnRfaW5kZXguYywgCisgICAgICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCAKKyAgICAgIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jLCBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIGFnZW50L2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvbXVsdGlwbGV4ZXIuYywgYWdlbnQvaGVscGVycy9vbGRfYXBpLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYywgYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3NjYWxhci5jLCBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmMsIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgYWdlbnQvaGVscGVycy90YWJsZS5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4sIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWMKKyAgICAgICBlLmMsIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wZXJmc3RhdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50CisgICAgICAgZXJmYWNlLmMsIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhXworICAgICAgIGFjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXIKKyAgICAgICBmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuYywgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhCisgICAgICAgY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFiCisgICAgICAgbGVfaW50ZXJmYWNlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jCisgICAgICAgLCBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9pbnRlcmZhY2UuYywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmCisgICAgICAgYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGMsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOCisgICAgICAgVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuCisgICAgICAgYywgYWdlbnQvbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtU3RhdHMvc25tcFRzbVN0YXRzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYywgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLCAgYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmMsCisgICAgICBhZ2VudC9zbm1wX2FnZW50LmMsIGFnZW50L3NubXBfdmFycy5jLCAgYWdlbnQvc25tcGQuYywKKyAgICAgIGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvYWdlbnR4dHJhcC5jLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5jLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oLCBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMsIAorICAgICAgYXBwcy9zbm1wdGVzdC5jLCBhcHBzL3NubXB0cmFuc2xhdGUuYywgYXBwcy9zbm1wdHJhcGQuYywgCisgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCBhcHBzL3NubXB0cmFwZF9zcWwuYywgY29uZmlndXJlLCAKKyAgICAgIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3NlY3VyaXR5X21vZHVsZXMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cywKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHBlcmwvT0lEL09JRC54cywgCisgICAgICBwZXJsL1NOTVAvU05NUC54cywgcGVybC9hZ2VudC9hZ2VudC54cywgc25tcGxpYi9NYWtlZmlsZS5pbiwgCisgICAgICBzbm1wbGliL2NhbGxiYWNrLmMsIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY2hlY2tfdmFyYmluZC5jLCAKKyAgICAgIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMsIAorICAgICAgc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMsIHNubXBsaWIvY29udGFpbmVyX251bGwuYywgCisgICAgICBzbm1wbGliL2RhdGFfbGlzdC5jLCBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgc25tcGxpYi9kaXJfdXRpbHMuYywKKyAgICAgICBzbm1wbGliL2ZkX2V2ZW50X21hbmFnZXIuYywgc25tcGxpYi9maWxlX3V0aWxzLmMsCisgICAgICBzbm1wbGliL2ludDY0LmMsICBzbm1wbGliL2tleXRvb2xzLmMsIHNubXBsaWIvbGNkX3RpbWUuYywKKyAgICAgIHNubXBsaWIvbWliLmMsICBzbm1wbGliL29pZF9zdGFzaC5jLCBzbm1wbGliL3BhcnNlLmMsCisgICAgICBzbm1wbGliL3JlYWRfY29uZmlnLmMsICBzbm1wbGliL3NjYXBpLmMsIHNubXBsaWIvc25tcC10Yy5jLAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jLCAgc25tcGxpYi9zbm1wX2NsaWVudC5jLCBzbm1wbGliL3NubXBfZW51bS5jLAorICAgICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsCisgICAgICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jLCAgc25tcGxpYi9zbm1wX3NlY21vZC5jLAorICAgICAgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCBzbm1wbGliL3NubXBrc20uYywgIHNubXBsaWIvc25tcHRzbS5jLAorICAgICAgc25tcGxpYi9zbm1wdXNtLmMsIHNubXBsaWIvc25tcHYzLmMsICBzbm1wbGliL3N5c3RlbS5jLAorICAgICAgc25tcGxpYi90ZXh0X3V0aWxzLmMsIHNubXBsaWIvdG9vbHMuYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvdWNkX2NvbXBhdC5jLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdXNtY29uZmlnYmFzZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3ZhY21jb25maWcsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1hdXRoX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0Ml9zaW1wbGUsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDNfc2ltcGxlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3Rfc2ltcGxlLCAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MHRyYXBkcGVybF9zaW1wbGUsIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYxYWdlbnRwZXJsX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTNhZ2VudHh0cmFwX3NpbXBsZSwgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZTogTkVXUzoKKworIHBhY2thZ2luZzogRW5hYmxlIG1pY3JvLWFuZC1tYWNyby1mZWF0dXJlIG1hbmFnZW1lbnQgd2l0aGluCisgTmV0LVNOTVA7IHRoaXMgYWRkcyBhIG51bWJlciBvZiBuZXcgZmxhZ3MgdG8gY29uZmlndXJlCisgKC0tZW5hYmxlLW1pbmltYWxpc3QgYW5kIC0tZW5hYmxlLXJlYWQtb25seSkuICBUaGVzZSBjaGFuZ2VzIGFyZQorIGRlc2lnbmVkIHRvIHJlbW92ZSBtdWNoIG9mIHRoZSBpbmxpbmUgY29kZSB0aGF0IGlzbid0IGFsd2F5cworIG5lY2Vzc2FyeSBvciBkZXNpcmVkLiAgU2NyaXB0cyBleGlzdCAoYW5kIHdpbGwgYmUgaW1wcm92ZWQpIHRvIHN0aXAKKyBvdXQgdW51c2VkIGNvbXBvbmVudHMgZnJvbSB0aGUgY29kZSBlbnRpcmVseSB0byBlbmFibGUgYSBzaG9ydGVyCisgcmV2aWV3IHByb2Nlc3MgZm9yIHVwZ3JhZGluZyB0byBuZXcgcmVsZWFzZXMuICBUaGlzIHdvcmsgd2FzIGRvbmUgYnkKKyBXZXMgSGFyZGFrZXIgYW5kIE1pY2hhZWwgQmFlciBmcm9tIFNQQVJUQSwgSW5jLiBidXQgaXMgYmVpbmcgY2hlY2tlZAorIGluIGFzIGEgbGFyZ2UgcGF0Y2ggc2luY2UgY29udmVydGluZyB0aGUgbWljcm8gcGF0Y2hlcyBmcm9tIGdpdCB0bworIHN2biB0dXJlbmQgb3V0IHRvIGJlIGltcG9zc2libGUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTY4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBGQVE6IHVzZSB0aGUgd2lraSBVUkwgaW5zdGVhZCBvZiB0aGUgdHV0b3JpYWwtNSBVUkwgZm9yIHRoZQorCisgc25tcHRyYXAgdHV0b3JpYWwgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTY3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6IFJldmVydCBhIGJvZ3VzIGNoYW5nZSB0aGF0IGNyZXB0CisKKyBpbnRvIHRoZSBjb2RlLiAgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AxOTk2NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgQUdFTlQudHh0LCBDSEFOR0VTLCBDT1BZSU5HLCBDaGFuZ2VMb2csIENvZGluZ1N0eWxlLCAKKyAgICAgIEVYQU1QTEUuY29uZi5kZWYsIEZBUSwgSU5TVEFMTCwgTWFrZWZpbGUuYW0sIE1ha2VmaWxlLmluLCAKKyAgICAgIE1ha2VmaWxlLnJ1bGVzLCBNYWtlZmlsZS50b3AsIE5FV1MsIFBPUlRJTkcsIFJFQURNRSwgCisgICAgICBSRUFETUUuUGFuYXNvbmljX0FNM1gudHh0LCBSRUFETUUuYWdlbnQtbWlicywgUkVBRE1FLmFnZW50eCwgCisgICAgICBSRUFETUUuYWl4LCBSRUFETUUuaHB1eDExLCBSRUFETUUuaXJpeCwgUkVBRE1FLmtyYjUsIFJFQURNRS5vc1gsIAorICAgICAgUkVBRE1FLnNubXB2MywgUkVBRE1FLnNvbGFyaXMsIFJFQURNRS5zcWwsIFJFQURNRS50aHJlYWQsIAorICAgICAgUkVBRE1FLnRydTY0LCBSRUFETUUud2luMzIsIFRPRE8sIGFjY29uZmlnLmgsIGFjbG9jYWwubTQsIAorICAgICAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9NYWtlZmlsZS5pbiwgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCAKKyAgICAgIGFnZW50L2FnZW50X2luZGV4LmMsIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIAorICAgICAgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywgYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5jLCAKKyAgICAgIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvYXV0b19ubGlzdC5jLCBhZ2VudC9hdXRvbmxpc3QuaCwgCisgICAgICBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbiwgCisgICAgICBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMsIGFnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvYnVsa190b19uZXh0LmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvZGVidWdfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9tb2RlX2VuZF9jYWxsLmMsIGFnZW50L2hlbHBlcnMvbXVsdGlwbGV4ZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL251bGwuYywgYWdlbnQvaGVscGVycy9vbGRfYXBpLmMsIAorICAgICAgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYywgYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3NjYWxhci5jLCBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvc2VyaWFsaXplLmMsIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgYWdlbnQvaGVscGVycy90YWJsZS5jLCAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9nZW5lcmljLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMsIAorICAgICAgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIGFnZW50L2tlcm5lbC5jLCBhZ2VudC9rZXJuZWwuaCwgCisgICAgICBhZ2VudC9tMm0uaCwgYWdlbnQvbWliX21vZHVsZXMuYywgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluLCBhZ2VudC9taWJncm91cC9SRUFETUUsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUkVBRE1FLnNtdXgsIGFnZW50L21pYmdyb3VwL1Jtb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL1JFQURNRSwgYWdlbnQvbWliZ3JvdXAvUm1vbi9hZ3V0aWwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2FndXRpbC5oLCBhZ2VudC9taWJncm91cC9SbW9uL2FndXRpbF9hcGkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtLmMsIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oLCAgYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5oLCAgYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMsCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuaCwgIGFnZW50L21pYmdyb3VwL1Jtb24vcm93X2FwaS5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMsICBhZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuaCwKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vdGVzdF9hbGFybS5zaCwgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL3Rlc3RfaGlzdC5zaCwgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmgsIGFnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmgsIGFnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmgsIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50X21pYnMuaCwgYWdlbnQvbWliZ3JvdXAvYWdlbnR4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oLCBhZ2VudC9taWJncm91cC9kaXNtYW4uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQtbWliLmgsIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlU2NhbGFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBTY2FsYXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwU2NhbGFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwVmFsdWUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwVmFsdWVUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cF9lbnVtLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24tbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXJyb3JUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL29sZC1ldmVudC1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUHJvYmVIaXN0b3J5VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjYworICAgICAgIGVzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2MKKyAgICAgICBlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfZ2V0CisgICAgICAgLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2dldAorICAgICAgIC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9zZXQKKyAgICAgICAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0CisgICAgICAgLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9lbnVtcy5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjCisgICAgICAgZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWMKKyAgICAgICBlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9vaWRzLmgsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMuaCwgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvTWFrZWZpbGUuZGxtb2QsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jb2x1bW5zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfZW51bXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9ub3RpZmljYXRpb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9ub3RpZmljYXRpb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmNtZHMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jb25mLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy93YXRjaGVkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oLCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2VybmRhdGEuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tlcm5kYXRhLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tzdGF0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9rc3RhdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9tYWNoLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9tYWNoLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9ubGlzdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X251bGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X251bGwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BjcC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGNwLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wZXJmc3RhdC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGVyZnN0YXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BzdGF0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wc3RhdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2luZm8uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW50dHlwZXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL21vdW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9haXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2Rhcndpbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZHluaXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2hwdXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2lyaXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9saW51eC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9udWxsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9zb2xhcmlzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV93aW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192Mi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL3BpY2xkX3NlbnNvcnMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL3BpY2xkX3NlbnNvcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QuaCwgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X2Rhcndpbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X251bGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2N5Z3dpbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa3ZtX3Byb2MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX25saXN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9udWxsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfcHNpbmZvLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfc3RhdHVzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJwc2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3BzdGF0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2RldmljZS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2RldmljZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmgsICBhZ2VudC9taWJncm91cC9ob3N0L2hyX290aGVyLmMsCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX290aGVyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5jLCAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5oLAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmMsICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3Byb2MuaCwKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmgsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmgsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaCwKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaCwgYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfY29uc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RlZnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9kYXRhX2FjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICAuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2NvbnN0YW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUKKyAgICAgICBfZGF0YV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2RhdGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZQorICAgICAgIF9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlCisgICAgICAgX2ludGVyZmFjZS5oLCBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfY29uCisgICAgICAgc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuaCwgYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19jb21tb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9jb25zdAorICAgICAgIGFudHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfCisgICAgICAgYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhXworICAgICAgIGFjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXIKKyAgICAgICBmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcgorICAgICAgIGZhY2UuaCwgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uCisgICAgICAgc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuaCwgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2NvbnN0YW50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5jLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCwKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfYWNjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfZ2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdAorICAgICAgIGFfZ2V0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2VudQorICAgICAgIG1zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludAorICAgICAgIGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnQKKyAgICAgICBlcmZhY2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkCisgICAgICAgcy5oLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgsCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfb2lkcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfY29uc3RhbgorICAgICAgIHRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hYworICAgICAgIGNlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjCisgICAgICAgY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmEKKyAgICAgICBjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmEKKyAgICAgICBjZS5oLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9jb25zdGFuCisgICAgICAgdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9kYXRhX2FjCisgICAgICAgY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2RhdGFfYWMKKyAgICAgICBjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfc3ViYWdlbgorICAgICAgIHQuYywgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9jb25zdGFuCisgICAgICAgdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9kYXRhX2FjCisgICAgICAgY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2RhdGFfYWMKKyAgICAgICBjZXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYQorICAgICAgIGNlLmgsIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9kYXRhX2FjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9kYXRhX2FjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9lbnVtcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWIKKyAgICAgICBsZV9pbnRlcmZhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFiCisgICAgICAgbGVfaW50ZXJmYWNlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYgorICAgICAgIGxlX29pZHMuaCwgYWdlbnQvbWliZ3JvdXAvaXBmd2NoYWlucy9SRUFETUUsIAorICAgICAgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jLCBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9hdC5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pZlRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcC5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY29sdW1ucy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGVfZW51bXMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5oLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5oLCBhZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5oLCBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmgsICBhZ2VudC9taWJncm91cC9taWJkZWZzLmgsCisgICAgICBhZ2VudC9taWJncm91cC9taWJpbmNsLmgsICBhZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzCisgICAgICAgLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2VzcworICAgICAgIC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuYywKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5oLAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmMsCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuaCwKKyAgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2VudW1zLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYworICAgICAgICwgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oCisgICAgICAgLCBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX29pZHMuaCwKKyAgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24uaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uYywgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYywgYWdlbnQvbWliZ3JvdXAvc211eC5oLAorICAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfYmdwLmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9iZ3AuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc211eF9nYXRlZC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfY29uc3RhbnRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aQorICAgICAgIGZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpCisgICAgICAgZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGkKKyAgICAgICBmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzL3VzbURIUGFyYW1ldAorICAgICAgIGVycy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIUGFyYW1ldGVycy91c21ESFBhcmFtZXQKKyAgICAgICBlcnMuaCwKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2RhdGFfYWNjZXNzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfZGF0YV9hY2Nlc3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9kYXRhX2dldC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2RhdGFfZ2V0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VySworICAgICAgIGV5VGFibGVfZGF0YV9zZXQuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9kYXRhX3NldC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2RveHlnZW4uY29uZiwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLCisgICAgICAgZXlUYWJsZV9lbnVtcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX2ludGVyZmFjZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcksKKyAgICAgICBleVRhYmxlX29pZHMuaCwgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuYywgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Db25mLmMsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Db25mLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMsCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuaCwgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oLCBhZ2VudC9taWJncm91cC9zdHJ1Y3QuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy9NYWtlZmlsZSwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3ByaXZhdGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5UYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2NvbnN0YQorICAgICAgIG50cy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmYKKyAgICAgICBhY2UuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmCisgICAgICAgYWNlLmgsIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9jb25zdGFudHMuCisgICAgICAgaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2VzCisgICAgICAgcy5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXMKKyAgICAgICBzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLgorICAgICAgIGgsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdHVubmVsLmgsIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYywgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmgsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmgsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5oLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jLAorICAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvaHB1eC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9ocHV4LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMsCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9ocHV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2hwdXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMsCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguaCwgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkX3NubXAuaCwgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9wcml2YXRlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfY29uc3RhbnRzLgorICAgICAgIGgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2NlcworICAgICAgIHMuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2VzCisgICAgICAgcy5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS4KKyAgICAgICBjLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS4KKyAgICAgICBoLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzLmgsIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuYywgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZywgYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmgsIGFnZW50L29iamVjdF9tb25pdG9yLmMsIAorICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9zbm1wX3BlcmwuYywgYWdlbnQvc25tcF9wZXJsLmgsIAorICAgICAgYWdlbnQvc25tcF9wZXJsLnBsLCBhZ2VudC9zbm1wX3ZhcnMuYywgYWdlbnQvc25tcGQuYywgCisgICAgICBhZ2VudC9zbm1wZC5oLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5pbiwgCisgICAgICBhcHBzL2VuY29kZV9rZXljaGFuZ2UuYywgYXBwcy9zbm1wX3BlcmxfdHJhcGQucGwsIAorICAgICAgYXBwcy9zbm1wYnVsa2dldC5jLCBhcHBzL3NubXBidWxrd2Fsay5jLCBhcHBzL3NubXBkZWx0YS5jLCAKKyAgICAgIGFwcHMvc25tcGRmLmMsIGFwcHMvc25tcGdldC5jLCBhcHBzL3NubXBnZXRuZXh0LmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9mZnMuYywgYXBwcy9zbm1wbmV0c3RhdC9pZi5jLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvaW5ldC5jLCBhcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMsIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5oLCAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oLCBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMsIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC93aW5zdHViLmMsIGFwcHMvc25tcG5ldHN0YXQvd2luc3R1Yi5oLCAKKyAgICAgIGFwcHMvc25tcHNldC5jLCBhcHBzL3NubXBzdGF0dXMuYywgYXBwcy9zbm1wdGFibGUuYywgCisgICAgICBhcHBzL3NubXB0ZXN0LmMsIGFwcHMvc25tcHRyYW5zbGF0ZS5jLCBhcHBzL3NubXB0cmFwLmMsIAorICAgICAgYXBwcy9zbm1wdHJhcGQuYywgYXBwcy9zbm1wdHJhcGRfYXV0aC5jLCBhcHBzL3NubXB0cmFwZF9hdXRoLmgsIAorICAgICAgYXBwcy9zbm1wdHJhcGRfZHMuaCwgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgCisgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oLCBhcHBzL3NubXB0cmFwZF9sb2cuYywgCisgICAgICBhcHBzL3NubXB0cmFwZF9sb2cuaCwgYXBwcy9zbm1wdHJhcGRfc3FsLmMsIGFwcHMvc25tcHVzbS5jLCAKKyAgICAgIGFwcHMvc25tcHZhY20uYywgYXBwcy9zbm1wd2Fsay5jLCBhcHBzL3NzaHRvc25tcC5jLCBjb25maWcuZ3Vlc3MsIAorICAgICAgY29uZmlnLnN1YiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczEsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzEsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzMsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNCwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywKKyAgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X21hbnVhbCwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wYXRocywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF90eXBlcywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSwgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L1JFQURNRS5idWlsZC1zY3JpcHRzLCBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TLCAKKyAgICAgIGRpc3QvYXV0b2NvbmYtdmVyc2lvbiwgZGlzdC9jaGFuZ2Vsb2dmaXgsIGRpc3QvY2hlY2stYXBpLWNoYW5nZSwgCisgICAgICBkaXN0L2N2c3Nob3csIGRpc3QvY3ZzdXAsIGRpc3QvZXh0cmFjdG5ld3MsIGRpc3QvZmluZC1yZXF1aXJlcywgCisgICAgICBkaXN0L21ha2VyZWxlYXNlLnhtbCwgZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL0RFVkVOViwgCisgICAgICBkaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvUkVBRE1FLCAKKyAgICAgIGRpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9idWlsZHBhY2thZ2Utc29sYXJpcywgCisgICAgICBkaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvZWxmZGVwZW5kLnNoLCBkaXN0L25ldC1zbm1wLnNwZWMsIAorICAgICAgZGlzdC9uc2ItY29uZmlnLCBkaXN0L25zYi1mdW5jdGlvbnMsIGRpc3QvbnNiLW5pZ2h0bHksIAorICAgICAgZGlzdC9uc2ItcGFja2FnZSwgZGlzdC9uc2ItcGxhdGZvcm0sIGRpc3QvcGF0bWUsIAorICAgICAgZGlzdC9zY2hlbWEtc25tcHRyYXBkLnNxbCwgZGlzdC9zbm1wZC1pbml0LmQsIAorICAgICAgZGlzdC9zbm1wdHJhcGQtaW5pdC5kLCBkaXN0L3N2bnVwLCBkb2MvcmZjL2FnZW50eC9yZmMyNzQxLnR4dCwgCisgICAgICBkb2MvcmZjL21pc2MvcmZjMzUxMi50eHQsIGRvYy9yZmMvbWlzYy9yZmMzNTg0LnR4dCwgCisgICAgICBkb2MvcmZjL3NtaVYyL3JmYzI1NzgudHh0LCBkb2MvcmZjL3NtaVYyL3JmYzI1NzkuZXJyYXRhLCAKKyAgICAgIGRvYy9yZmMvc21pVjIvcmZjMjU3OS50eHQsIGRvYy9yZmMvc21pVjIvcmZjMjU4MC50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjEvcmZjMTE1NS50eHQsIGRvYy9yZmMvc25tcFYxL3JmYzExNTcudHh0LCAKKyAgICAgIGRvYy9yZmMvc25tcFYxL3JmYzEyMTIudHh0LCBkb2MvcmZjL3NubXBWMS9yZmMxMjEzLnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMi9yZmMxOTAxLnR4dCwgZG9jL3JmYy9zbm1wVjIvcmZjMTkwMi50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjIvcmZjMTkwMy50eHQsIGRvYy9yZmMvc25tcFYyL3JmYzE5MDQudHh0LCAKKyAgICAgIGRvYy9yZmMvc25tcFYyL3JmYzE5MDUudHh0LCBkb2MvcmZjL3NubXBWMi9yZmMxOTA2LnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMi9yZmMxOTA3LnR4dCwgZG9jL3JmYy9zbm1wVjIvcmZjMTkwOC50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjIvcmZjMjA4OS50eHQsIGRvYy9yZmMvc25tcFYzL3JmYzM0MTAuZXJyYXRhLCAKKyAgICAgIGRvYy9yZmMvc25tcFYzL3JmYzM0MTAudHh0LCBkb2MvcmZjL3NubXBWMy9yZmMzNDExLnR4dCwgCisgICAgICBkb2MvcmZjL3NubXBWMy9yZmMzNDEyLnR4dCwgZG9jL3JmYy9zbm1wVjMvcmZjMzQxMy5lcnJhdGEsIAorICAgICAgZG9jL3JmYy9zbm1wVjMvcmZjMzQxMy50eHQsIGRvYy9yZmMvc25tcFYzL3JmYzM0MTQuZXJyYXRhLCAKKyAgICAgIGRvYy9yZmMvc25tcFYzL3JmYzM0MTQudHh0LCBkb2MvcmZjL3NubXBWMy9yZmMzNDE1LmVycmF0YSwgCisgICAgICBkb2MvcmZjL3NubXBWMy9yZmMzNDE1LnR4dCwgZG9jL3JmYy9zbm1wVjMvcmZjMzQxNi50eHQsIAorICAgICAgZG9jL3JmYy9zbm1wVjMvcmZjMzQxNy50eHQsIGRvYy9yZmMvc25tcFYzL3JmYzM0MTguZXJyYXRhLCAKKyAgICAgIGRvYy9yZmMvc25tcFYzL3JmYzM0MTgudHh0LCBkb3RnZGJpbml0LCBkb3h5Z2VuLmNvbmYsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2luZGV4LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL21lbW9yeS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCwgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L29iamVjdF9tb25pdG9yLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2V0X2hlbHBlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfdG9fbmV4dC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oLCBpbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcF9zY2FsYXJzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL25ldC1zbm1wLWRhdGEtYWNjZXNzLWluY2x1ZGVzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9yb3V0ZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvUkVBRE1FLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY211X2NvbXBhdC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbnVsbC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmgsCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWQ1LmgsICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQUFMNVBWQ0RvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQWxpYXNEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBEVExTVURQRG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFNTSERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1RERG9tYWluLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90ZXh0X3V0aWxzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS93aW5waXBlLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3dpbnNlcnZpY2UuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oLCBpbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaCwgaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oLCBpbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9haXguaCwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYnNkLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYnNkaS5oLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ic2RpMy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2JzZGk0LmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2N5Z3dpbi5oLAorICAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2Rhcndpbi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjcuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW44LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RyYWdvbmZseS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2R5bml4LmgsCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDIuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkMy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q3LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4LmgsCisgICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaXJpeC5oLAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0va2ZyZWVic2QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oLAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbWluZ3czMi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL21pbmd3MzJtc3ZjLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbWlwcy5oLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29zZjUuaCwKKyAgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuMy5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMyLjQuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzMi41LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuNi5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N1bm9zLmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N2cjUuaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3VsdHJpeDQuaCwKKyAgICAgICBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgsIGluY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oLCBpbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL1JFQURNRSwgaW5jbHVkZS91Y2Qtc25tcC9hZ2VudF9pbmRleC5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvYWdlbnRfcmVhZF9jb25maWcuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL2FnZW50X3JlZ2lzdHJ5LmgsIGluY2x1ZGUvdWNkLXNubXAvYWdlbnRfdHJhcC5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvYXNuMS5oLCBpbmNsdWRlL3VjZC1zbm1wL2F1dG9fbmxpc3QuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL2NhbGxiYWNrLmgsIGluY2x1ZGUvdWNkLXNubXAvZGVmYXVsdF9zdG9yZS5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvZHNfYWdlbnQuaCwgaW5jbHVkZS91Y2Qtc25tcC9oZWFkZXJfY29tcGxleC5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvaW50NjQuaCwgaW5jbHVkZS91Y2Qtc25tcC9rZXl0b29scy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvbWliLmgsIGluY2x1ZGUvdWNkLXNubXAvbWliX21vZHVsZV9jb25maWcuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL21pYmluY2wuaCwgaW5jbHVkZS91Y2Qtc25tcC9wYXJzZS5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvcmVhZF9jb25maWcuaCwgaW5jbHVkZS91Y2Qtc25tcC9zY2FwaS5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvc25tcC10Yy5oLCBpbmNsdWRlL3VjZC1zbm1wL3NubXAuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfYWdlbnQuaCwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2FsYXJtLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2FwaS5oLCBpbmNsdWRlL3VjZC1zbm1wL3NubXBfY2xpZW50LmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2RlYnVnLmgsIGluY2x1ZGUvdWNkLXNubXAvc25tcF9pbXBsLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2xvZ2dpbmcuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfcGFyc2VfYXJncy5oLCBpbmNsdWRlL3VjZC1zbm1wL3NubXBfdmFycy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvc25tcHVzbS5oLCBpbmNsdWRlL3VjZC1zbm1wL3NubXB2My5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvc3RydWN0LmgsIGluY2x1ZGUvdWNkLXNubXAvc3lzdGVtLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC90b29scy5oLCBpbmNsdWRlL3VjZC1zbm1wL3RyYW5zZm9ybV9vaWRzLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC91Y2Qtc25tcC1hZ2VudC1pbmNsdWRlcy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvdWNkLXNubXAtY29uZmlnLmgsIAorICAgICAgaW5jbHVkZS91Y2Qtc25tcC91Y2Qtc25tcC1pbmNsdWRlcy5oLCAKKyAgICAgIGluY2x1ZGUvdWNkLXNubXAvdXRpbF9mdW5jcy5oLCBpbmNsdWRlL3VjZC1zbm1wL3Zhcl9zdHJ1Y3QuaCwgCisgICAgICBpbmNsdWRlL3VjZC1zbm1wL3ZlcnNpb24uaCwgaW5zdGFsbC1zaCwgbG9jYWwvRkFRMkhUTUwsIAorICAgICAgbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL1JFQURNRS5taWIyYywgbG9jYWwvVmVyc2lvbi1NdW5nZS5wbCwgCisgICAgICBsb2NhbC9jb252ZXJ0Y29kZSwgbG9jYWwvZml4cHJvYywgbG9jYWwvaHRtbC1hZGQtaGVhZGVyLWZvb3Rlci5wbCwKKyAgICAgICBsb2NhbC9odG1sLXRleHRmaWxlLWZpeC5wbCwgbG9jYWwvaXBmLW1vZC5wbCwgbG9jYWwvbWliMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2RlZmF1bHQtbWZkLXRvcC5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2RldGFpbHMtZW51bXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9kZXRhaWxzLW5vZGUubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9kZXRhaWxzLXRhYmxlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtY29weS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LXNldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZGF0YS1hbGxvY2F0ZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZGF0YS1jb250ZXh0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtY2hhci5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LWRlY2wtYm90Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1nZXQtZGVjbC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LWxvbmcubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1vaWQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWhlYWRlci1ib3R0b20ubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWhlYWRlci10b3AubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXNvdXJjZS1pbmNsdWRlcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtY29uc3RhbnRzLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1lbnVtcy5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy1mcm9tLW9pZC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy1zZXQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLWluZGV4ZXMtdG8tb2lkLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1pbmRleGVzLXZhcmJpbmQtc2V0dXAubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLWluZGV4ZXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLW9pZHMubTJjLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXZhbHVlLW1hcC1mdW5jLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy12YWx1ZS1tYXAtcmV2ZXJzZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdmFsdWUtbWFwLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbTJjLWludGVybmFsLXdhcm5pbmcubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9tMmNfc2V0dXBfZW51bS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL20yY19zZXR1cF9ub2RlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbTJjX3NldHVwX3RhYmxlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbTJjX3RhYmxlX3NhdmVfZGVmYXVsdHMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9tZmQtYWNjZXNzLWNvbnRhaW5lci1jYWNoZWQtZGVmaW5lcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1hY2Nlc3MtdW5zb3J0ZWQtZXh0ZXJuYWwtZGVmaW5lcy5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1kYXRhLWFjY2Vzcy5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1kYXRhLWdldC5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1kYXRhLXNldC5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1kb3h5Z2VuLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYywgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1tYWtlZmlsZS5tMm0sIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1wZXJzaXN0ZW5jZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL21mZC1yZWFkbWUubTJjLCBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXRvcC5tMmMsCisgICAgICAgbG9jYWwvbWliMmMtY29uZi5kL25vZGUtZ2V0Lm0yaSwgbG9jYWwvbWliMmMtY29uZi5kL25vZGUtc2V0Lm0yaSwKKyAgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbm9kZS1zdG9yYWdlLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvbm9kZS12YWxpZGF0ZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL25vZGUtdmFyYmluZC12YWxpZGF0ZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3BhcmVudC1kZXBlbmRlbmNpZXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9wYXJlbnQtc2V0Lm0yaSwKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zdWJhZ2VudC5tMmMsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1DT1VOVEVSNjQtZ2V0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LURhdGVBbmRUaW1lLWdldC5tMmQsIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1EYXRlQW5kVGltZS1nZXQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtRGF0ZUFuZFRpbWUtcmVhZG1lLm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LUluZXRBZGRyZXNzLWdldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1JbmV0QWRkcmVzcy1zZXQubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtSW5ldEFkZHJlc3NUeXBlLWdldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1JbmV0QWRkcmVzc1R5cGUtc2V0Lm0yaSwgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ludGF4LVJvd1N0YXR1cy1kZXBlbmRlbmNpZXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtUm93U3RhdHVzLWdldC5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1Sb3dTdGF0dXMtdmFyYmluZC12YWxpZGF0ZS5tMmksIAorICAgICAgbG9jYWwvbWliMmMtY29uZi5kL3N5bnRheC1TdG9yYWdlVHlwZS1kZXBlbmRlbmNpZXMubTJpLCAKKyAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9zeW50YXgtVGVzdEFuZEluY3ItZ2V0Lm0yaSwgbG9jYWwvbWliMmMtdXBkYXRlLAorICAgICAgIGxvY2FsL21pYjJjLmFjY2Vzc19mdW5jdGlvbnMuY29uZiwgbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLmNoZWNrX3ZhbHVlcy5jb25mLAorICAgICAgbG9jYWwvbWliMmMuY2hlY2tfdmFsdWVzX2xvY2FsLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMuY29sdW1uX2RlZmluZXMuY29uZiwgbG9jYWwvbWliMmMuY29sdW1uX2VudW1zLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMuY29sdW1uX3N0b3JhZ2UuY29uZiwgbG9jYWwvbWliMmMuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5jb250YWluZXIuY29uZiwgbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5lbXVsYXRpb24uY29uZiwgbG9jYWwvbWliMmMuZ2VuaHRtbC5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLmludF93YXRjaC5jb25mLCBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMuaXRlcmF0ZV9hY2Nlc3MuY29uZiwgbG9jYWwvbWliMmMubWZkLmNvbmYsIAorICAgICAgbG9jYWwvbWliMmMubm90aWZ5LmNvbmYsIGxvY2FsL21pYjJjLm9sZC1hcGkuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy5wZXJsLmNvbmYsIGxvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mLCAKKyAgICAgIGxvY2FsL21pYjJjLnJvdy5jb25mLCBsb2NhbC9taWIyYy5zY2FsYXIuY29uZiwgCisgICAgICBsb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmYsIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3QsIAorICAgICAgbG9jYWwvcGFzc3Rlc3QsIGxvY2FsL3Bhc3N0ZXN0LnBsLCBsb2NhbC9zbm1wLXVjZC5zaCwgCisgICAgICBsb2NhbC9zbm1wY2hlY2suZGVmLCBsb2NhbC9zbm1wY29uZiwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcC1kYXRhL2F1dGhvcHRzLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wLWRhdGEvZGVidWdnaW5nLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wLWRhdGEvbWlicywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcC1kYXRhL291dHB1dCwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcC1kYXRhL3NubXBjb25mLWNvbmZpZywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS9hY2wsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvYmFzaWNfc2V0dXAsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvZXh0ZW5kaW5nLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC1kYXRhL21vbml0b3IsIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvb3BlcmF0aW9uLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC1kYXRhL3NubXBjb25mLWNvbmZpZywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS9zeXN0ZW0sIAorICAgICAgbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvdHJhcHNpbmtzLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wdHJhcGQtZGF0YS9hdXRoZW50aWNhdGlvbiwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcHRyYXBkLWRhdGEvZm9ybWF0dGluZywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcHRyYXBkLWRhdGEvbG9nZ2luZywgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcHRyYXBkLWRhdGEvcnVudGltZSwgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcHRyYXBkLWRhdGEvc25tcGNvbmYtY29uZmlnLCAKKyAgICAgIGxvY2FsL3NubXBjb25mLmRpci9zbm1wdHJhcGQtZGF0YS90cmFwaGFuZGxlLCBsb2NhbC9zbm1wZHVtcC5wbCwgCisgICAgICBsb2NhbC90a21pYiwgbG9jYWwvdHJhcHRvZW1haWwsIGx0bWFpbi5zaCwgCisgICAgICBtNC9hY19hZGRfc2VhcmNoX3BhdGgubTQsIG00L2FjX21zZ19jYWNoZS5tNCwgCisgICAgICBtNC9hY19tc2dfbW9kdWxlX2RiZy5tNCwgbTQvYWNfcHJvbXB0X3VzZXIubTQsIG00L2xpYnRvb2wubTQsIAorICAgICAgbTQvbHRvcHRpb25zLm00LCBtNC9sdHN1Z2FyLm00LCBtNC9sdHZlcnNpb24ubTQsCisgICAgICBtNC9sdH5vYnNvbGV0ZS5tNCwgIG00L25ldHNubXBfYXJnLm00LCBtNC9uZXRzbm1wX3NlYXJjaF9saWJzLm00LAorICAgICAgbWFrZWRlcGVuZC5pbiwgIG1ha2VmaWxlaW5kZXBlbmQucGwsIG1ha2Vub3N5c2RlcGVuZC5wbCwKKyAgICAgIG1ha2V0YXJnZXQsICBtYW4vTWFrZWZpbGUuaW4sIG1hbi9hZGRfbWliZGlyLjMsCisgICAgICBtYW4vYWRkX21vZHVsZV9yZXBsYWNlbWVudC4zLCAgbWFuL2NvbmZpZ19hcGkuMy5kZWYsCisgICAgICBtYW4vZGVmYXVsdF9zdG9yZS4zLmJvdCwgIG1hbi9kZWZhdWx0X3N0b3JlLjMudG9wLAorICAgICAgbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYsICBtYW4vZml4cHJvYy4xLmRlZiwKKyAgICAgIG1hbi9nZXRfbW9kdWxlX25vZGUuMywgbWFuL2luaXRfbWliLjMsICBtYW4vaW5pdF9taWJfaW50ZXJuYWxzLjMsCisgICAgICBtYW4vbWFrZV9pbmRleC5wbCwgbWFuL21hbl9zZWN0aW9ucy50eHQsICBtYW4vbWliMmMtdXBkYXRlLjEuZGVmLAorICAgICAgbWFuL21pYjJjLjEuZGVmLCBtYW4vbWliMmMuY29uZi41LmluLCAgbWFuL21pYjJjLmV4dHJhY3QucGwsCisgICAgICBtYW4vbWliX2FwaS4zLmRlZiwgbWFuL25ldC1zbm1wLWNvbmZpZy4xLmRlZiwgCisgICAgICBtYW4vbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMS5kZWYsIAorICAgICAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMywgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsIAorICAgICAgbWFuL25ldHNubXBfZXhhbXBsZV9zY2FsYXJfaW50LjMsIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgCisgICAgICBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9sZWFmLjMsIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgCisgICAgICBtYW4vbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zZXRfZGF0YS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3RkYXRhLjMsIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zLCBtYW4vcGR1X2FwaS4zLmRlZiwgbWFuL3ByaW50X2Rlc2NyaXB0aW9uLjMsCisgICAgICAgbWFuL3ByaW50X21pYi4zLCBtYW4vcHJpbnRfb2JqaWQuMywgbWFuL3ByaW50X3ZhbHVlLjMsIAorICAgICAgbWFuL3ByaW50X3ZhcmlhYmxlLjMsIG1hbi9yZWFkX2FsbF9taWJzLjMsIG1hbi9yZWFkX21pYi4zLCAKKyAgICAgIG1hbi9yZWFkX21vZHVsZS4zLCBtYW4vcmVhZF9tb2R1bGVfbm9kZS4zLCBtYW4vcmVhZF9vYmppZC4zLCAKKyAgICAgIG1hbi9zZXNzaW9uX2FwaS4zLmRlZiwgbWFuL3NodXRkb3duX21pYi4zLCBtYW4vc25tcC5jb25mLjUuZGVmLCAKKyAgICAgIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZiwgbWFuL3NubXBfYWxhcm0uMy5kZWYsIAorICAgICAgbWFuL3NubXBfYXBpX2VycnN0cmluZy4zLCBtYW4vc25tcF9jbG9zZS4zLCBtYW4vc25tcF9jb25maWcuNS5kZWYsCisgICAgICAgbWFuL3NubXBfZXJyb3IuMywgbWFuL3NubXBfZnJlZV9wZHUuMywgbWFuL3NubXBfb3Blbi4zLCAKKyAgICAgIG1hbi9zbm1wX3BlcnJvci4zLCBtYW4vc25tcF9yZWFkLjMsIG1hbi9zbm1wX3NlbGVjdF9pbmZvLjMsIAorICAgICAgbWFuL3NubXBfc2VuZC4zLCBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZiwgCisgICAgICBtYW4vc25tcF9zZXNzX2FzeW5jX3NlbmQuMywgbWFuL3NubXBfc2Vzc19jbG9zZS4zLCAKKyAgICAgIG1hbi9zbm1wX3Nlc3NfZXJyb3IuMywgbWFuL3NubXBfc2Vzc19pbml0LjMsIG1hbi9zbm1wX3Nlc3Nfb3Blbi4zLAorICAgICAgIG1hbi9zbm1wX3Nlc3NfcGVycm9yLjMsIG1hbi9zbm1wX3Nlc3NfcmVhZC4zLCAKKyAgICAgIG1hbi9zbm1wX3Nlc3Nfc2VsZWN0X2luZm8uMywgbWFuL3NubXBfc2Vzc19zZW5kLjMsIAorICAgICAgbWFuL3NubXBfc2Vzc19zZXNzaW9uLjMsIG1hbi9zbm1wX3Nlc3NfdGltZW91dC4zLCAKKyAgICAgIG1hbi9zbm1wX3NldF9taWJfd2FybmluZ3MuMywgbWFuL3NubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zLjMsIAorICAgICAgbWFuL3NubXBfdGltZW91dC4zLCBtYW4vc25tcF90cmFwX2FwaS4zLmRlZiwKKyAgICAgIG1hbi9zbm1wYnVsa2dldC4xLmRlZiwgIG1hbi9zbm1wYnVsa3dhbGsuMS5kZWYsIG1hbi9zbm1wY21kLjEuZGVmLAorICAgICAgbWFuL3NubXBjb25mLjEuZGVmLCAgbWFuL3NubXBkLjguZGVmLCBtYW4vc25tcGQuY29uZi41LmRlZiwKKyAgICAgIG1hbi9zbm1wZC5leGFtcGxlcy41LmRlZiwgIG1hbi9zbm1wZC5pbnRlcm5hbC41LmRlZiwKKyAgICAgIG1hbi9zbm1wZGVsdGEuMS5kZWYsIG1hbi9zbm1wZGYuMS5kZWYsICBtYW4vc25tcGdldC4xLmRlZiwKKyAgICAgIG1hbi9zbm1wZ2V0bmV4dC4xLmRlZiwgbWFuL3NubXBpbmZvcm0uMSwgIG1hbi9zbm1wbmV0c3RhdC4xLmRlZiwKKyAgICAgIG1hbi9zbm1wc2V0LjEuZGVmLCBtYW4vc25tcHN0YXR1cy4xLmRlZiwgIG1hbi9zbm1wdGFibGUuMS5kZWYsCisgICAgICBtYW4vc25tcHRlc3QuMS5kZWYsIG1hbi9zbm1wdHJhbnNsYXRlLjEuZGVmLCAgbWFuL3NubXB0cmFwLjEuZGVmLAorICAgICAgbWFuL3NubXB0cmFwZC44LmRlZiwgbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmLCAgbWFuL3NubXB1c20uMS5kZWYsCisgICAgICBtYW4vc25tcHZhY20uMS5kZWYsIG1hbi9zbm1wd2Fsay4xLmRlZiwgIG1hbi90a21pYi4xLmRlZiwKKyAgICAgIG1hbi90cmFwdG9lbWFpbC4xLmRlZiwgbWFuL3ZhcmJpbmRfYXBpLjMuZGVmLCAKKyAgICAgIG1hbi92YXJpYWJsZXMuNS5kZWYsIG1pYnMvQUdFTlRYLU1JQi50eHQsIAorICAgICAgbWlicy9ESVNNQU4tRVZFTlQtTUlCLnR4dCwgbWlicy9ESVNNQU4tRVhQUkVTU0lPTi1NSUIudHh0LCAKKyAgICAgIG1pYnMvRElTTUFOLU5TTE9PS1VQLU1JQi50eHQsIG1pYnMvRElTTUFOLVBJTkctTUlCLnR4dCwgCisgICAgICBtaWJzL0RJU01BTi1TQ0hFRFVMRS1NSUIudHh0LCBtaWJzL0RJU01BTi1TQ1JJUFQtTUlCLnR4dCwgCisgICAgICBtaWJzL0RJU01BTi1UUkFDRVJPVVRFLU1JQi50eHQsIG1pYnMvRXRoZXJMaWtlLU1JQi50eHQsIAorICAgICAgbWlicy9IQ05VTS1UQy50eHQsIG1pYnMvSE9TVC1SRVNPVVJDRVMtTUlCLnR4dCwgCisgICAgICBtaWJzL0hPU1QtUkVTT1VSQ0VTLVRZUEVTLnR4dCwgCisgICAgICBtaWJzL0lBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0LCAKKyAgICAgIG1pYnMvSUFOQS1MQU5HVUFHRS1NSUIudHh0LCBtaWJzL0lBTkEtUlRQUk9UTy1NSUIudHh0LCAKKyAgICAgIG1pYnMvSUFOQWlmVHlwZS1NSUIudHh0LCBtaWJzL0lGLUlOVkVSVEVELVNUQUNLLU1JQi50eHQsIAorICAgICAgbWlicy9JRi1NSUIudHh0LCBtaWJzL0lORVQtQUREUkVTUy1NSUIudHh0LCAKKyAgICAgIG1pYnMvSVAtRk9SV0FSRC1NSUIudHh0LCBtaWJzL0lQLU1JQi50eHQsIAorICAgICAgbWlicy9JUFY2LUZMT1ctTEFCRUwtTUlCLnR4dCwgbWlicy9JUFY2LUlDTVAtTUlCLnR4dCwgCisgICAgICBtaWJzL0lQVjYtTUlCLnR4dCwgbWlicy9JUFY2LVRDLnR4dCwgbWlicy9JUFY2LVRDUC1NSUIudHh0LCAKKyAgICAgIG1pYnMvSVBWNi1VRFAtTUlCLnR4dCwgbWlicy9MTS1TRU5TT1JTLU1JQi50eHQsIG1pYnMvTVRBLU1JQi50eHQsIAorICAgICAgbWlicy9NYWtlZmlsZS5pbiwgbWlicy9NYWtlZmlsZS5taWIsIG1pYnMvTkVULVNOTVAtQUdFTlQtTUlCLnR4dCwgCisgICAgICBtaWJzL05FVC1TTk1QLUVYQU1QTEVTLU1JQi50eHQsIG1pYnMvTkVULVNOTVAtRVhURU5ELU1JQi50eHQsIAorICAgICAgbWlicy9ORVQtU05NUC1NSUIudHh0LCBtaWJzL05FVC1TTk1QLU1PTklUT1ItTUlCLnR4dCwgCisgICAgICBtaWJzL05FVC1TTk1QLVBBU1MtTUlCLnR4dCwgbWlicy9ORVQtU05NUC1TWVNURU0tTUlCLnR4dCwgCisgICAgICBtaWJzL05FVC1TTk1QLVRDLnR4dCwgbWlicy9ORVQtU05NUC1WQUNNLU1JQi50eHQsIAorICAgICAgbWlicy9ORVRXT1JLLVNFUlZJQ0VTLU1JQi50eHQsIG1pYnMvTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0LCAKKyAgICAgIG1pYnMvUkVBRE1FLm1pYnMsIG1pYnMvUkZDLTEyMTUudHh0LCBtaWJzL1JGQzExNTUtU01JLnR4dCwgCisgICAgICBtaWJzL1JGQzEyMTMtTUlCLnR4dCwgbWlicy9STU9OLU1JQi50eHQsIG1pYnMvU0NUUC1NSUIudHh0LCAKKyAgICAgIG1pYnMvU01VWC1NSUIudHh0LCBtaWJzL1NOTVAtQ09NTVVOSVRZLU1JQi50eHQsIAorICAgICAgbWlicy9TTk1QLUZSQU1FV09SSy1NSUIudHh0LCBtaWJzL1NOTVAtTVBELU1JQi50eHQsIAorICAgICAgbWlicy9TTk1QLU5PVElGSUNBVElPTi1NSUIudHh0LCBtaWJzL1NOTVAtUFJPWFktTUlCLnR4dCwgCisgICAgICBtaWJzL1NOTVAtVEFSR0VULU1JQi50eHQsIG1pYnMvU05NUC1VU0VSLUJBU0VELVNNLU1JQi50eHQsIAorICAgICAgbWlicy9TTk1QLVVTTS1BRVMtTUlCLnR4dCwgbWlicy9TTk1QLVVTTS1ESC1PQkpFQ1RTLU1JQi50eHQsIAorICAgICAgbWlicy9TTk1QLVZJRVctQkFTRUQtQUNNLU1JQi50eHQsIG1pYnMvU05NUHYyLUNPTkYudHh0LCAKKyAgICAgIG1pYnMvU05NUHYyLU1JQi50eHQsIG1pYnMvU05NUHYyLVNNSS50eHQsIG1pYnMvU05NUHYyLVRDLnR4dCwgCisgICAgICBtaWJzL1NOTVB2Mi1UTS50eHQsIG1pYnMvVENQLU1JQi50eHQsIAorICAgICAgbWlicy9UUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0LCBtaWJzL1RVTk5FTC1NSUIudHh0LCAKKyAgICAgIG1pYnMvVUNELURFTU8tTUlCLmluYywgbWlicy9VQ0QtREVNTy1NSUIudHh0LCAKKyAgICAgIG1pYnMvVUNELURJU0tJTy1NSUIuaW5jLCBtaWJzL1VDRC1ESVNLSU8tTUlCLnR4dCwgCisgICAgICBtaWJzL1VDRC1ETE1PRC1NSUIuaW5jLCBtaWJzL1VDRC1ETE1PRC1NSUIudHh0LCAKKyAgICAgIG1pYnMvVUNELUlQRklMVEVSLU1JQi5pbmMsIG1pYnMvVUNELUlQRklMVEVSLU1JQi50eHQsIAorICAgICAgbWlicy9VQ0QtSVBGV0FDQy1NSUIuaW5jLCBtaWJzL1VDRC1JUEZXQUNDLU1JQi50eHQsIAorICAgICAgbWlicy9VQ0QtU05NUC1NSUItT0xELnR4dCwgbWlicy9VQ0QtU05NUC1NSUIuaW5jLCAKKyAgICAgIG1pYnMvVUNELVNOTVAtTUlCLnR4dCwgbWlicy9VRFAtTUlCLnR4dCwgbWlicy9pYW5hbGlzdCwgCisgICAgICBtaWJzL21ha2VodG1sLnBsLCBtaWJzL21pYmZldGNoLCBtaWJzL25vZGVtYXAsIG1pYnMvcmZjbGlzdCwgCisgICAgICBtaWJzL3JmY21pYnMuZGlmZiwgbWlicy9zbWlzdHJpcCwgbWtpbnN0YWxsZGlycywgCisgICAgICBuZXQtc25tcC1jb25maWcuaW4sIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluLCBvdi9NYWtlZmlsZS5pbiwgCisgICAgICBvdi9SRUFETUUsIG92L1VDRC1Db21wdXRlciwgb3YvVUNELWZpZWxkcywgb3YvYml0bWFwcy9VQ0QuMjAubSwgCisgICAgICBvdi9iaXRtYXBzL1VDRC4yMC5wLCBvdi9iaXRtYXBzL1VDRC4yNi5tLCBvdi9iaXRtYXBzL1VDRC4yNi5wLCAKKyAgICAgIG92L2JpdG1hcHMvVUNELjMyLm0sIG92L2JpdG1hcHMvVUNELjMyLnAsIG92L2JpdG1hcHMvVUNELjM4Lm0sIAorICAgICAgb3YvYml0bWFwcy9VQ0QuMzgucCwgb3YvYml0bWFwcy9VQ0QuNDQubSwgb3YvYml0bWFwcy9VQ0QuNDQucCwgCisgICAgICBvdi9iaXRtYXBzL1VDRC41MC5tLCBvdi9iaXRtYXBzL1VDRC41MC5wLCBvdi9iaXRtYXBzL1VDRC5maWVsZHMsIAorICAgICAgb3Yvb2lkX3RvX3N5bS5pbiwgb3Yvb2lkX3RvX3R5cGUuaW4sIHBlcmwvQVNOL0FTTi5wbSwgCisgICAgICBwZXJsL0FTTi9BU04ueHMsIHBlcmwvQVNOL0NoYW5nZXMsIHBlcmwvQVNOL01BTklGRVNULCAKKyAgICAgIHBlcmwvQVNOL01ha2VmaWxlLlBMLCBwZXJsL0FTTi90ZXN0LnBsLCBwZXJsL0FueURhdGFfU05NUC9DaGFuZ2VzLAorICAgICAgIHBlcmwvQW55RGF0YV9TTk1QL0RCRF9BbnlEYXRhLnBhdGNoLCBwZXJsL0FueURhdGFfU05NUC9Gb3JtYXQucG0sCisgICAgICAgcGVybC9BbnlEYXRhX1NOTVAvSU5TVEFMTCwgcGVybC9BbnlEYXRhX1NOTVAvTUFOSUZFU1QsIAorICAgICAgcGVybC9BbnlEYXRhX1NOTVAvTWFrZWZpbGUuUEwsIHBlcmwvQW55RGF0YV9TTk1QL1JFQURNRSwgCisgICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL0FueURhdGFfU05NUC9jb25maWdzL3NjbGksIAorICAgICAgcGVybC9BbnlEYXRhX1NOTVAvY29uZmlncy91bml4LCBwZXJsL0FueURhdGFfU05NUC9uZXRzaCwgCisgICAgICBwZXJsL01ha2VmaWxlLlBMLCBwZXJsL01ha2VmaWxlLm1ha2VmaWxlcywgcGVybC9NYWtlZmlsZS5zdWJzLnBsLCAKKyAgICAgIHBlcmwvT0lEL0NoYW5nZXMsIHBlcmwvT0lEL01BTklGRVNULCBwZXJsL09JRC9NYWtlZmlsZS5QTCwgCisgICAgICBwZXJsL09JRC9PSUQucG0sIHBlcmwvT0lEL09JRC54cywgcGVybC9PSUQvUkVBRE1FLCAKKyAgICAgIHBlcmwvT0lEL3Rlc3QucGwsIHBlcmwvT0lEL3R5cGVtYXAsIHBlcmwvU05NUC9CVUcsIAorICAgICAgcGVybC9TTk1QL01BTklGRVNULCBwZXJsL1NOTVAvTUFOSUZFU1QuU0tJUCwKKyAgICAgIHBlcmwvU05NUC9NYWtlZmlsZS5QTCwgIHBlcmwvU05NUC9SRUFETUUsIHBlcmwvU05NUC9TTk1QLnBtLAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsICBwZXJsL1NOTVAvVE9ETywgcGVybC9TTk1QL2V4YW1wbGVzL2FzeW5jMS5wbCwgCisgICAgICBwZXJsL1NOTVAvZXhhbXBsZXMvYXN5bmMyLnBsLCBwZXJsL1NOTVAvZXhhbXBsZXMvYnVsa3dhbGsucGwsIAorICAgICAgcGVybC9TTk1QL2V4YW1wbGVzL2lwZm9yd2FyZC5wbCwgcGVybC9TTk1QL2V4YW1wbGVzL21pYnRyZWUucGwsIAorICAgICAgcGVybC9TTk1QL2V4YW1wbGVzL21pYndhbGsucGwsIHBlcmwvU05NUC9leGFtcGxlcy9waW5nbWliLnBsLCAKKyAgICAgIHBlcmwvU05NUC9leGFtcGxlcy90YWJsZXdhbGsucGwsIHBlcmwvU05NUC9leGFtcGxlcy90ZXN0bGVhay5wbCwgCisgICAgICBwZXJsL1NOTVAvZXhhbXBsZXMvdHJhcC1leGFtcGxlLnBsLCBwZXJsL1NOTVAvaGludHMvaXJpeC5wbCwgCisgICAgICBwZXJsL1NOTVAvaGludHMvc29sYXJpcy5wbCwgcGVybC9TTk1QL3Blcmxzbm1wLmgsIAorICAgICAgcGVybC9TTk1QL3QvUkVBRE1FLCBwZXJsL1NOTVAvdC9hc3luYy50LCBwZXJsL1NOTVAvdC9idWxrd2Fsay50LCAKKyAgICAgIHBlcmwvU05NUC90L2NvbmYudCwgcGVybC9TTk1QL3QvY29uZnRlc3QuY29uZiwgcGVybC9TTk1QL3QvZ2V0LnQsIAorICAgICAgcGVybC9TTk1QL3QvZ2V0bmV4dC50LCBwZXJsL1NOTVAvdC9taWIudCwgcGVybC9TTk1QL3QvbWliLnR4dCwgCisgICAgICBwZXJsL1NOTVAvdC9taWJsb2FkLnQsIHBlcmwvU05NUC90L25vdGlmeS50LAorICAgICAgcGVybC9TTk1QL3Qvc2Vzc2lvbi50LCAgcGVybC9TTk1QL3Qvc2V0LnQsCisgICAgICBwZXJsL1NOTVAvdC9zbm1wdGVzdC5jb25mLCAgcGVybC9TTk1QL3Qvc3RhcnRhZ2VudC5wbCwKKyAgICAgIHBlcmwvU05NUC90eXBlbWFwLCAgcGVybC9UcmFwUmVjZWl2ZXIvQ2hhbmdlcywKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL01BTklGRVNULCAgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9SRUFETUUsICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnhzLCBwZXJsL1RyYXBSZWNlaXZlci9jb25zdC1jLmluYywgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9jb25zdC14cy5pbmMsIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvZmFsbGJhY2svY29uc3QtYy5pbmMsIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvZmFsbGJhY2svY29uc3QteHMuaW5jLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL3Blcmxfc25tcHRyYXBkLmgsIHBlcmwvVHJhcFJlY2VpdmVyL3BwcG9ydC5oLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL3QvMS50LCBwZXJsL1RyYXBSZWNlaXZlci90eXBlbWFwLCAKKyAgICAgIHBlcmwvYWdlbnQvQ2hhbmdlcywgcGVybC9hZ2VudC9NQU5JRkVTVCwgcGVybC9hZ2VudC9NYWtlZmlsZS5QTCwgCisgICAgICBwZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwsIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvYWdlbnQueHMsIAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMLCAKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnhzLCAKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9nZW4sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS90ZXN0LnBsLCAKKyAgICAgIHBlcmwvYWdlbnQvbmV0c25tcF9yZXF1ZXN0X2luZm9QdHIucG0sIHBlcmwvYWdlbnQvdGVzdC5wbCwgCisgICAgICBwZXJsL2FnZW50L3R5cGVtYXAsIHBlcmwvZGVmYXVsdF9zdG9yZS9DaGFuZ2VzLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9NQU5JRkVTVCwgcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9SRUFETUUsIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnhzLCBwZXJsL2RlZmF1bHRfc3RvcmUvZ2VuLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS90ZXN0LnBsLCBwZXJsL2RlZmF1bHRfc3RvcmUvdHlwZW1hcCwgCisgICAgICBwZXJsL21ha2UtcGVybC1tYWtlZmlsZXMsIHBlcmwvbWFuYWdlci9JTlNUQUxMLCAKKyAgICAgIHBlcmwvbWFuYWdlci9NYWtlZmlsZS5QTCwgcGVybC9tYW5hZ2VyL2Rpc3BsYXl0YWJsZS5wbSwgCisgICAgICBwZXJsL21hbmFnZXIvZ2V0VmFsdWVzLnBtLCBwZXJsL21hbmFnZXIvbWFuYWdlci5wbSwgCisgICAgICBwZXJsL21hbmFnZXIvc2V0dXBhdXRoLCBwZXJsL21hbmFnZXIvc2V0dXBkYiwgCisgICAgICBwZXJsL21hbmFnZXIvc2V0dXB1c2VyLCBwZXJsL21hbmFnZXIvc25tcHRvc3FsLCBweXRob24vTElDRU5TRSwgCisgICAgICBweXRob24vUkVBRE1FLCBweXRob24vbmV0c25tcC9fX2luaXRfXy5weSwgCisgICAgICBweXRob24vbmV0c25tcC9jbGllbnQucHksIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMsIAorICAgICAgcHl0aG9uL25ldHNubXAvdGVzdHMvX19pbml0X18ucHksIHB5dGhvbi9uZXRzbm1wL3Rlc3RzL3NubXBkLmNvbmYsCisgICAgICAgcHl0aG9uL25ldHNubXAvdGVzdHMvdGVzdC5weSwgcHl0aG9uL3NldHVwLnB5LCByZW1vdmUtZmlsZXMsIAorICAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5pbiwgCisgICAgICBzbm1wbGliL2FzbjEuYywgc25tcGxpYi9jYWxsYmFjay5jLCBzbm1wbGliL2NoZWNrX3ZhcmJpbmQuYywgCisgICAgICBzbm1wbGliL2NtdV9jb21wYXQuYywgc25tcGxpYi9jb250YWluZXIuYywgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYywgc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYywgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYywgc25tcGxpYi9jb250YWluZXJfbnVsbC5jLCAKKyAgICAgIHNubXBsaWIvZGF0YV9saXN0LmMsIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jLCBzbm1wbGliL2Rpcl91dGlscy5jLAorICAgICAgIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCBzbm1wbGliL2ZpbGVfdXRpbHMuYywKKyAgICAgIHNubXBsaWIvZ2V0b3B0LmMsICBzbm1wbGliL2luZXRfbnRvcC5jLCBzbm1wbGliL2luZXRfcHRvbi5jLAorICAgICAgc25tcGxpYi9pbnQ2NC5jLCAgc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jLAorICAgICAgc25tcGxpYi9sY2RfdGltZS5jLCAgc25tcGxpYi9tZDUuYywgc25tcGxpYi9taWIuYywKKyAgICAgIHNubXBsaWIvbXRfc3VwcG9ydC5jLCAgc25tcGxpYi9vaWRfc3Rhc2guYywgc25tcGxpYi9wYXJzZS5jLAorICAgICAgc25tcGxpYi9wa2NzLmMsICBzbm1wbGliL3JlYWRfY29uZmlnLmMsIHNubXBsaWIvc2NhcGkuYywKKyAgICAgIHNubXBsaWIvc25tcC10Yy5jLCAgc25tcGxpYi9zbm1wLmMsIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jLCBzbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcERUTFNVRFBEb21haW4uYywgc25tcGxpYi9zbm1wSVBYRG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wU1NIRG9tYWluLmMsIHNubXBsaWIvc25tcFNURERvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvc25tcFRDUERvbWFpbi5jLCBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMsIAorICAgICAgc25tcGxpYi9zbm1wVURQRG9tYWluLmMsIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYywgCisgICAgICBzbm1wbGliL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvc25tcF9hbGFybS5jLAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jLCAgc25tcGxpYi9zbm1wX2F1dGguYywgc25tcGxpYi9zbm1wX2NsaWVudC5jLAorICAgICAgc25tcGxpYi9zbm1wX2RlYnVnLmMsICBzbm1wbGliL3NubXBfZW51bS5jLAorICAgICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsCisgICAgICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jLCAgc25tcGxpYi9zbm1wX3NlY21vZC5jLAorICAgICAgc25tcGxpYi9zbm1wX3NlcnZpY2UuYywgIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYywKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmMsICBzbm1wbGliL3NubXBrc20uYywgc25tcGxpYi9zbm1wdHNtLmMsCisgICAgICBzbm1wbGliL3NubXB1c20uYywgIHNubXBsaWIvc25tcHYzLmMsIHNubXBsaWIvc25wcmludGYuYywKKyAgICAgIHNubXBsaWIvc3RybGNweS5jLCAgc25tcGxpYi9zdHJ0b2tfci5jLCBzbm1wbGliL3N0cnRvbC5jLAorICAgICAgc25tcGxpYi9zdHJ0b3VsLmMsICBzbm1wbGliL3N0cnRvdWxsLmMsIHNubXBsaWIvc3lzdGVtLmMsCisgICAgICBzbm1wbGliL3Rlc3RfYmluYXJ5X2FycmF5LmMsICBzbm1wbGliL3RleHRfdXRpbHMuYywKKyAgICAgIHNubXBsaWIvdG9vbHMuYywgc25tcGxpYi91Y2Qtc25tcC1pbmNsdWRlcy5oLCAKKyAgICAgIHNubXBsaWIvdWNkX2NvbXBhdC5jLCBzbm1wbGliL3ZhY20uYywgc25tcGxpYi93aW5waXBlLmMsIAorICAgICAgc25tcGxpYi93aW5zZXJ2aWNlLmMsIHNubXBsaWIvd2luc2VydmljZS5tYywKKyAgICAgIHNubXBsaWIvd2luc2VydmljZS5yYywgIHNubXBsaWIvd2luc2VydmljZXJjLnJjLCBzdGFtcC1oLAorICAgICAgc3RhbXAtaC5pbiwgdGVzdGluZy9NYWtlZmlsZS5pbiwgIHRlc3RpbmcvUkVBRE1FLAorICAgICAgdGVzdGluZy9SVU5URVNUUywgdGVzdGluZy9ULmMsIHRlc3RpbmcvVDIuc2gsIAorICAgICAgdGVzdGluZy9URVNUQ09ORi5zaCwgdGVzdGluZy9kYXRhLmtleWNoYW5nZS1tZDUsIAorICAgICAgdGVzdGluZy9kYXRhLmtleWNoYW5nZS1zaGExLCB0ZXN0aW5nL2RhdGEua2V5Y2hhbmdlLXNoYTEtZGVzLCAKKyAgICAgIHRlc3RpbmcvZGF0YS5rdWwtbWQ1LCB0ZXN0aW5nL2RhdGEua3VsLXNoYTEsIHRlc3RpbmcvZXRpbWV0ZXN0LmMsIAorICAgICAgdGVzdGluZy9ldmFsX29uZXByb2dyYW0uc2gsIHRlc3RpbmcvZXZhbF9vbmVzY3JpcHQuc2gsIAorICAgICAgdGVzdGluZy9ldmFsX3N1aXRlLnNoLCB0ZXN0aW5nL2V2YWxfdGVzdGxpc3QsIAorICAgICAgdGVzdGluZy9ldmFsX3Rvb2xzLnNoLCB0ZXN0aW5nL2tleW1hbmFnZXRlc3QuYywKKyAgICAgIHRlc3RpbmcvbWlzY3Rlc3QuYywgIHRlc3RpbmcvcmZjMTIxMy9SRUFETUUsIHRlc3RpbmcvcmZjMTIxMy9ydW4sIAorICAgICAgdGVzdGluZy9yZmMxMjEzL3NubXBmdW4uc2gsIHRlc3RpbmcvcmZjMTIxMy90ZXN0X2Z1biwgCisgICAgICB0ZXN0aW5nL3JmYzEyMTMvdGVzdG1pYjEuc2gsIHRlc3RpbmcvcmZjMTIxMy90ZXN0bWliMi5zaCwgCisgICAgICB0ZXN0aW5nL3JmYzEyMTMvdGVzdG1pYjMuc2gsIHRlc3Rpbmcvc2NhcGl0ZXN0LmMsIAorICAgICAgdGVzdGluZy90ZXN0X2tleWNoYW5nZS5zaCwgdGVzdGluZy90ZXN0X2t1bC5zaCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1N0cmFuc3BvcnQsIHRlc3RpbmcvdGVzdHMvU3YxY29uZmlnLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvU3YyY2NvbmZpZywgdGVzdGluZy90ZXN0cy9TdjNjb25maWcsIAorICAgICAgdGVzdGluZy90ZXN0cy9TdjN1c21jb25maWdhZ2VudCwgdGVzdGluZy90ZXN0cy9TdjN1c21jb25maWdiYXNlLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvU3YzdXNtY29uZmlndHJhcGQsIHRlc3RpbmcvdGVzdHMvU3YzdmFjbWNvbmZpZywgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1N2YWNtY29uZmlnLCB0ZXN0aW5nL3Rlc3RzL1N2YW55Y29uZmlnLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAwMGNvbmZpZ3VyZSwgdGVzdGluZy90ZXN0cy9UMDAxc25tcHYxZ2V0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxNHNubXB2MmNnZXQsIHRlc3RpbmcvdGVzdHMvVDAxNXNubXB2MmNnZXRuZXh0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxNjBzbm1wdjJjYnVsa2dldCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTZzbm1wdjJjZ2V0ZmFpbCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTdzbm1wdjJjdG92MWdldGZhaWwsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDE4c25tcHYxdG92MmNnZXRmYWlsLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOXNubXB2MmNub3N1Y2gsIHRlc3RpbmcvdGVzdHMvVDAyMHNubXB2M2dldCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjFzbm1wdjNnZXRuZXh0LCB0ZXN0aW5nL3Rlc3RzL1QwMjIwc25tcHYzYnVsa2dldCwKKyAgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjJzbm1wdjNnZXRNRDUsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjNzbm1wdjNnZXRNRDVBRVMsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDIzc25tcHYzZ2V0TUQ1REVTLAorICAgICAgdGVzdGluZy90ZXN0cy9UMDI0c25tcHYzZ2V0U0hBMSwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjVzbm1wdjNnZXRTSEFERVMsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDI2c25tcHYzZ2V0U0hBQUVTLAorICAgICAgdGVzdGluZy90ZXN0cy9UMDI4c25tcHYzZ2V0ZmFpbCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMzBzbm1wdjN1c2VyY3JlYXRpb24sIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDM1c25tcHYzdHJhcGR1c2VybWdtdCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNDlzbm1wdjNpbmZvcm0sCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNDlzbm1wdjNpbmZvcm1hdXRoLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA0OXNubXB2M2luZm9ybXByaXYsIHRlc3RpbmcvdGVzdHMvVDA1MHNubXB2M3RyYXAsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDUxc25tcHYyY3RyYXAsIHRlc3RpbmcvdGVzdHMvVDA1MnNubXB2MmNpbmZvcm0sIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDUzYWdlbnR2MXRyYXAsIHRlc3RpbmcvdGVzdHMvVDA1NGFnZW50djJjdHJhcCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNTVhZ2VudHYxbWludHJhcCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNTZhZ2VudHYyY21pbnRyYXAsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwNTd0cmFwZGF1dGh0ZXN0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1N3RyYXBkYXV0aHRlc3QyLAorICAgICAgdGVzdGluZy90ZXN0cy9UMDU3dHJhcGRhdXRodGVzdDMsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDU4YWdlbnRhdXRodHJhcCwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1OXRyYXBkdHJhcGhhbmRsZSwgIHRlc3RpbmcvdGVzdHMvVDA2MHRyYXBkcGVybCwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA2MWFnZW50cGVybCwgIHRlc3RpbmcvdGVzdHMvVDA2NWFnZW50ZXh0ZW5kLAorICAgICAgdGVzdGluZy90ZXN0cy9UMTAwYWdlbnRodXAsICB0ZXN0aW5nL3Rlc3RzL1QxMTBhZ2VudHhnZXQsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxMTFhZ2VudHhzZXQsICB0ZXN0aW5nL3Rlc3RzL1QxMTJhZ2VudHhzZXRmYWlsLAorICAgICAgdGVzdGluZy90ZXN0cy9UMTEzYWdlbnR4dHJhcCwgIHRlc3RpbmcvdGVzdHMvVDExNWFnZW50eHBlcmwsCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxMjBwcm94eWdldCwgIHRlc3RpbmcvdGVzdHMvVDEyMXByb3h5c2V0LAorICAgICAgdGVzdGluZy90ZXN0cy9UMTIycHJveHlzZXRmYWlsLCAgdGVzdGluZy90ZXN0cy9UMTMwc25tcHYxdmFjbWdldCwKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDEzMXNubXB2MmN2YWNtZ2V0LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDEzMnNubXB2M3ZhY21nZXQsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTQwc25tcHYxdmFjbWdldGZhaWwsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTQxc25tcHYyY3ZhY21nZXRmYWlsLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE0MnNubXB2M3ZhY21nZXRmYWlsLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE1MHNvbGFyaXNob3N0Y3B1LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE1MXNvbGFyaXNob3N0ZGlzaywgdGVzdGluZy90ZXN0cy9UMTUyaG9zdHVwdGltZSwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxNTNzb2xhcmlzc3dhcCwgdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQsIAorICAgICAgdGVzdGluZy90ZXN0cy9UMjAwc25tcHYyY3dhbGthbGwsIHRlc3RpbmcvdGVzdHMvVDMwMHVkcCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QzMTB0Y3AsIHRlc3RpbmcvdGVzdHMvVDMyMHVkcHY2LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDMzMHRjcHY2LCB0ZXN0aW5nL3Rlc3RzL1QzNTB1bml4LCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDM2MGR0bHN1ZHAsIHRlc3RpbmcvdGVzdHMvVDM5OWFsaWFzLCAKKyAgICAgIHRlc3RpbmcvdGVzdHMvdGVzdC1sb2NhbGhvc3QuY2VydCwgCisgICAgICB0ZXN0aW5nL3Rlc3RzL3Rlc3QtbG9jYWxob3N0LnByaXYsIHRlc3RpbmcvdGVzdHMvdGVzdC11c2VyLmNlcnQsIAorICAgICAgdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIucHJpdiwgd2luMzIvQ29uZmlndXJlLCAKKyAgICAgIHdpbjMyL0VYQU1QTEUuY29uZi53aW4zMiwgd2luMzIvTWFrZWZpbGUtYXBwcy5pbiwgCisgICAgICB3aW4zMi9NYWtlZmlsZS5pbiwgd2luMzIvTWdtdEFwaS13aW5FeHRETEwuaCwgCisgICAgICB3aW4zMi9Tbm1wLXdpbkV4dERMTC5oLCB3aW4zMi9hZ2VudF9tb2R1bGVfZG90X2NvbmYuaCwgCisgICAgICB3aW4zMi9hZ2VudF9tb2R1bGVfaW5jbHVkZXMuaCwgd2luMzIvYWdlbnRfbW9kdWxlX2luaXRzLmgsIAorICAgICAgd2luMzIvYnVpbGQuYmF0LCB3aW4zMi9idWlsZC5wbCwgd2luMzIvY29uZmlnLmgsIAorICAgICAgd2luMzIvY29uZmlnLmguYm9ybGFuZCwgd2luMzIvZGlzdC9SRUFETUUuYnVpbGQud2luMzIudHh0LCAKKyAgICAgIHdpbjMyL2Rpc3QvUkVBRE1FLnR4dCwgd2luMzIvZGlzdC9idWlsZC1iaW5hcnkuYmF0LCAKKyAgICAgIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvQ29uZmlndXJhdGlvbl9PdmVydmlldy5odG1sLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvRGV2ZWxvcGVyX0ZBUS5odG1sLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvRkFRLmh0bWwsIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9IZWxwX0NhdmVhdHMuaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L2h0bWxoZWxwL0ludHJvZHVjdGlvbi5odG1sLCAKKyAgICAgIHdpbjMyL2Rpc3QvaHRtbGhlbHAvTmV0LVNOTVAuaGhjLAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9OZXQtU05NUC5oaHAsIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9zbm1wLmNvbmYud2luMzIuaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L2h0bWxoZWxwL3NubXBkLmNvbmYud2luMzIuaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L2h0bWxoZWxwL3NubXB0cmFwZC5jb25mLndpbjMyLmh0bWwsIAorICAgICAgd2luMzIvZGlzdC9pbnN0YWxsZXIvQWRkMlBhdGgubnNpLCAKKyAgICAgIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL1NldEVuVmFyLm5zaSwgCisgICAgICB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2ksIHdpbjMyL2Rpc3Qvc2NyaXB0cy9jcmVhdGUtdG9jLCAKKyAgICAgIHdpbjMyL2Rpc3Qvc2NyaXB0cy9tYW5kaXIyaHRtbCwgCisgICAgICB3aW4zMi9kaXN0L3NjcmlwdHMvbmV0LXNubXAtcGVybC10ZXN0LnBsLCAKKyAgICAgIHdpbjMyL2Rpc3Qvc2NyaXB0cy9wb2RkaXIyaHRtbCwgd2luMzIvZGlzdC9zY3JpcHRzL3JlYWRtZTJodG1sLCAKKyAgICAgIHdpbjMyL2Rpc3Qvc2NyaXB0cy90eHQyaHRtbCwgd2luMzIvZGlzdC90b3NvY2sxLnNoLCAKKyAgICAgIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AsIAorICAgICAgd2luMzIvaW5zdGFsbC1uZXQtc25tcC5iYXQsIHdpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRlZiwgd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwLCAKKyAgICAgIHdpbjMyL2xpYmhlbHBlcnMvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYmhlbHBlcnMvbGliaGVscGVycy5kc3AsIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9saWJuZXRzbm1wdHJhcGQuZHNwLCAKKyAgICAgIHdpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXAvbGlic25tcC5kc3AsIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCwKKyAgICAgIHdpbjMyL2xpYnVjZG1pYnMvbGlidWNkbWlicy5kZWYsICB3aW4zMi9sb2NhbC9NYWtlZmlsZS5pbiwKKyAgICAgIHdpbjMyL2xvY2FsL21pYjJjLmJhdCwgIHdpbjMyL2xvY2FsL3NubXBjb25mLmJhdCwKKyAgICAgIHdpbjMyL2xvY2FsL3RyYXB0b2VtYWlsLmJhdCwgIHdpbjMyL21pYl9tb2R1bGVfZG90X2NvbmYuaCwKKyAgICAgIHdpbjMyL21pYl9tb2R1bGVfaW5jbHVkZXMuaCwgIHdpbjMyL21pYl9tb2R1bGVfaW5pdHMuaCwKKyAgICAgIHdpbjMyL21pYl9tb2R1bGVfc2h1dGRvd24uaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy5kc3AsCisgICAgICB3aW4zMi9ubWFrZXBlcmwuYmF0LCAgd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQuZHNwLCAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwLCB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiwgCisgICAgICB3aW4zMi9zbm1wZC9zbm1wZC5kc3AsIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEuZHNwLCAKKyAgICAgIHdpbjMyL3NubXBkZi9zbm1wZGYuZHNwLCB3aW4zMi9zbm1wZ2V0L3NubXBnZXQuZHNwLCAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcCwgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQuZHNwLCB3aW4zMi9zbm1wc2V0L3NubXBzZXQuZHNwLCAKKyAgICAgIHdpbjMyL3NubXBzbV9pbml0LmgsIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy5kc3AsIAorICAgICAgd2luMzIvc25tcHRhYmxlL3NubXB0YWJsZS5kc3AsIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LmRzcCwgCisgICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwLAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAuZHNwLCAgd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluLAorICAgICAgd2luMzIvc25tcHRyYXBkL3NubXB0cmFwZC5kc3AsICB3aW4zMi9zbm1wdXNtL3NubXB1c20uZHNwLAorICAgICAgd2luMzIvc25tcHZhY20vc25tcHZhY20uZHNwLCAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsuZHNwLAorICAgICAgd2luMzIvd2luMzIuZHN3LCB3aW4zMi93aW4zMmRsbC5kc3c6CisKKyBGaXggNS41LnggYnJhbmNoIHN0cnVjdHVyZSAocGFydCAyKSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDE5OTY1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmM6IHByb3BlciBwcm9jZXNzCisKKyBzdGF0dXMgdmFsdWVzIGZvciBuZXRic2QgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jOiBwcm9wZXIgcHJvY2VzcworCisgc3RhdHVzIHZhbHVlcyBmb3IgbmV0YnNkIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk2MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9zY2FwaS5jOiBjb25kaXRpb25hbGl6ZSB2YXJpYWJsZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc2NhcGkuYzogY29uZGl0aW9uYWxpemUgdmFyaWFibGUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oOiB0Y3AtbWliL3VkcC1taWIKKworIHN1cHBvcnQgZm9yIHRoZSAqYnNkcyBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDE5OTYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaDogdGNwLW1pYi91ZHAtbWliCisKKyBzdXBwb3J0IGZvciB0aGUgKmJzZHMgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTYwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkuaCwgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQuYywgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX29wZW5ic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2ZyZWVic2Q0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbmV0YnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfb3BlbmJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS4KKyAgICAgICBjOiB0Y3AtbWliL3VkcC1taWIgc3VwcG9ydCBmb3IgdGhlICpic2RzIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJLmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2ZyZWVic2Q0LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9vcGVuYnNkLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaCwgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9mcmVlYnNkNC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X25ldGJzZC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X29wZW5ic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuCisgICAgICAgYzogdGNwLW1pYi91ZHAtbWliIHN1cHBvcnQgZm9yIHRoZSAqYnNkcyBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk1OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYQorICAgICAgIGNjZXNzLmM6IFByb3Blcmx5IGVuZCBkZWJ1ZyBtZXNzYWdlIHdpdGggbmV3bGluZSBnaXQtc3ZuLWlkOgorCisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2EKKyAgICAgICBjY2Vzcy5jOiBQcm9wZXJseSBlbmQgZGVidWcgbWVzc2FnZSB3aXRoIG5ld2xpbmUgZ2l0LXN2bi1pZDoKKworCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jOiByZW1vdmUgdmFyCisKKyB0aGF0IHNoYWRvd3MgdGhlIHVzZWZ1bCBvbmUgZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmM6IHJlbW92ZSB2YXIKKworIHRoYXQgc2hhZG93cyB0aGUgdXNlZnVsIG9uZSBnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk5NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzogbWFqb3IgZmlkZGxpbmcgdG8gZ2V0IHRoaW5ncyB3b3JraW5nCisKKyBmb3Igb3BlbmJzZCB0b28uIFRoaXMgc2hvdWxkIHJlYWxseSBiZSByZXdvcmtlZCB0byB1c2UgdGhlCisgdGNwLW1pYi91ZHAtbWliL2RhdGFfYWNjZXNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk5NTYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDItMjEgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzogbWFqb3IgZmlkZGxpbmcgdG8gZ2V0IHRoaW5ncyB3b3JraW5nCisKKyBmb3Igb3BlbmJzZCB0b28uIFRoaXMgc2hvdWxkIHJlYWxseSBiZSByZXdvcmtlZCB0byB1c2UgdGhlCisgdGNwLW1pYi91ZHAtbWliL2RhdGFfYWNjZXNzIGdpdC1zdm4taWQ6CisKKyBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTk1NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmM6IGZpeCB0Y3Agc3RhdGVzIGZvciBkcmFnb25mbHlic2QKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTk1NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wMi0yMSAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmM6IGZpeCB0Y3Agc3RhdGVzIGZvciBkcmFnb25mbHlic2QKKyAgICAgIGdpdC1zdm4taWQ6CisKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE5OTU1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTAyLTIxICBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkuaDogZW5hYmxlIG5ldyB0Y3AvdWRwIG1pYnMgZm9yIHNvbGFyaXMKKyAgICAgIGdpdC1zdm4taWQ6CisKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcgLT4gVjUuNy4xLnByZTEKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogZml4IEMrKyBjb21tZW50cworCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sCisgICAgICAgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOiBWZXJzaW9uIG51bWJlciB1cGRhdGU6CisKKyA1LjcuMS5wcmUxCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLnRvcDogdmVyc2lvbiB1cGRhdGUgZm9yIDUuNy4xLnByZTEKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBjZjRjY2U0YzE4OWNmNDdmNGM0ODlkYjQzYjdmYTUxMGY4OTA2YTFhIE1lcmdlOiBkZjkxYTlmCisKKyA5M2U5N2RjIEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIE1vbgorIEF1ZyA4IDIyOjE1OjI4IDIwMTEgKzAxMDAKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTYtcGF0Y2hlcycgaW50bworCisgVjUtNi1wYXRjaGVzCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiAgd2luMzIvTWFrZWZpbGUtYXBwcy5pbiwgd2luMzIvZGlzdC9SRUFETUUuYnVpbGQud2luMzIudHh0LCAKKyAgICAgIHdpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluLCB3aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbiwgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46IERlZmluZQorCisgX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiB0b2tlbiAoYXMgcGVyIEFsZXgnIGJ1aWxkCisgaW5zdHJ1Y3Rpb25zKQorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkZjE2ZGMyMjIxZTk5M2RkM2M2NjY1MGQ1ZTg3MjU3N2ZmZTZjMDFiIE1lcmdlOiA3MTRiYzgyCisKKyA4ZTVhMjhkIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEzOjU2OjQzIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZmZhMDViMDUxYWMzZTJiMTk3MTk1YTk5ODljYzdhOTFmZThkOTI4MiBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gQXVnIDggMTM6NTU6MzgKKyAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KKworICAgKiA6IGNvbW1pdCA3MTRiYzgyZmEwMWUyMWEzNjU1ODI0OTYzZmE1NGU5YjgwNDJmZmIwIE1lcmdlOiA2ZmU4ZmU1CisKKyAzZWYxZGI1IEF1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIE1vbgorIEF1ZyA4IDIxOjIxOjQ2IDIwMTEgKzAxMDAKKworMjAxMS0wOC0wOCAgRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorCisgICAqIDogY29tbWl0IGI0NTE2MDdkY2EwMTVjMTExZTk2ZmRmZWIyZGRiMDY2MWZiNGY3MjQgQXV0aG9yOiBEYXZlCisKKyBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPiBEYXRlOiAgIE1vbiBBdWcgOCAyMToyMDozMiAyMDExCisgKzAxMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNmZlOGZlNTI5NGE0NWJjN2U0ZWEzNzUxYTFhZDdhYTQ3YjVjYWJiMiBNZXJnZTogMzY0ZjhmZgorCisgZjY5YWJlMyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcKKyA4IDIyOjAyOjM4IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYzk0ODEzMDQ0YTRjNGE2MDhlOThlODAyMjMwNzVjNmZhZjA0ZWUxMSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDggMjE6NTY6MTUgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAzNjRmOGZmYWViOTBiNGViMDE2NWZjODU1Njg4Y2QwNjI2NjMyNzk0IE1lcmdlOiAzMjg3Mjk1CisKKyA3YWJiOTI2IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDExOjI0OjI2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNi1wYXRjaGVzJyBpbnRvCisKKyBWNS02LXBhdGNoZXMKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBkaXNwbGF5IHRoZSBicmFuY2ggd2UnbGwgY29tbWl0IHRvCisKKworMjAxMS0wOC0wOCAgVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMzODY2MzM6CisKKyBmcm9tIHd1bGYyMDAxOiBmaXggaW50ZWdlciBvdmVyZmxvdyBpbiBkaXNrIHBlcmNlbnQgY2FsY3VsYXRpb25zIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4NGE3NzVkMDU1N2ZlYTk3NTcwZTQxNzE1YTMxNjQ5NzBiNGMwM2EyIE1lcmdlOiA2ZmZmMWMxCisKKyBkMzczYzRmIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMjA6MTI6MzIgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2FnZW50X3RyYXAuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM4NzEzOTogZnJvbQorCisgeWFiZXJhdW5leWE6IEF2b2lkIHNlZ2ZhdWx0IGlmIHRyYXBzZXNzIHRyYW5zcG9ydCBlbGVtZW50IGNhbnQgYmUKKyBwYXJzZWQgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbnNzZnBhdGNoYXBwbHk6IHNwbGl0IHRoZQorCisgZGlzcGxheWVkIGdpdCBjb21taXQgY29tbWFuZCBpbnRvIG11bHRpcGxlIHNlZ21lbnRzCisKKzIwMTEtMDgtMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmM6IENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMzg2OTYxOgorCisgTWFrZSBTTk1QIEdFVCB3b3JrIGluIGFuIEFnZW50WCBzdWJhZ2VudCBpZiB3cml0ZSBzdXBwb3J0IGlzCisgZGlzYWJsZWQgdmlhIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAoTWFyayBSdXNrKS4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9taWIuYzogQ0hBTkdFUzogc25tcGxpYjogRml4IGEgY3Jhc2ggdGhhdCBjb3VsZCBiZQorCisgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QKKyBlcXVhbCB0byAtMS4KKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNmZmZjFjMWFlNTFiMDZjOWQ4MGZhZjE1MzczYTk2M2QxNzNmMTRlOCBNZXJnZTogODM3YzUyZQorCisgOGNjOTAwNCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBBdWcgOCAxMDo1ODo1OSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDhjYTdmZjFlNjkyY2FlYzQxODZiNzg4YzlhZTJkMjdiZTIxMzI5MGYgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgTW9uIEF1ZyA4IDEwOjMzOjU2CisgMjAxMSAtMDcwMAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS00LXBhdGNoZXMnIGludG8KKworIFY1LTQtcGF0Y2hlcworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBiOGY1MjljYmEyN2MwMTE0YjRjYjczNDBjZmQ0NDk1MDRmYTA3NTA2IE1lcmdlOiAwODIyZjJkCisKKyA1NTZlOTM4IEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgTW9uIEF1ZyA4IDEwOjA1OjM2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBmaXggZnVuY3Rpb24gbmFtZSB0eXBvCisKKworMjAxMS0wOC0wOCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjk4ODJhMDc4YTk1OWEwZjc4YjAzZTAxOTY4ZjFkMTdiN2Y2YTI5OSBNZXJnZTogNWU5YmQyZgorCisgMDQwOWMwYSBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIE1vbiBBdWcgOCAxMDowMzozNCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogbWFudWFsIG1lcmdlIG9mIHB1bGwvcHVzaAorCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbWFrZSBuc3B1bGwvbnNwdXNoIGNoZWNrIGZvciBhCisKKyBjbGVhbiByZXBvCisKKzIwMTEtMDgtMDggIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbmV3IGZ1bmN0aW9uICJuc21ha2VhbGwiIHRvIHRlc3QKKworIGJ1aWxkaW5nIG9uIGV2ZXJ5IGJyYW5jaAorCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGRlZmF1bHQgdG8gbWVyZ2UKKworCisyMDExLTA4LTA4ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IE1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggJ29yaWdpbi9WNS03LXBhdGNoZXMnIGludG8KKworIFY1LTctcGF0Y2hlcworCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaDogQ0hBTkdFUzogV2luZG93czogQXZvaWQgdGhhdCBpZgorCisgdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBoYXZlIGJlZW4gYnVpbHQgd2l0aCBhbm90aGVyIHZlcnNpb24gb2YKKyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB0aGFuIEFjdGl2ZVBlcmwgdGhhdCB1c2luZyBvbmUgb2YgdGhlc2UgUGVybAorIG1vZHVsZXMgdHJpZ2dlcnMgYSAiRnJlZSB0byB3cm9uZyBwb29sIiBjcmFzaC4gVGhpcyByZWdyZXNzaW9uIHdhcworIGNhdXNlZCBieSBjb21taXQgM2IxNGM1OWNmODI3OGQ0MTAyMDdmZjQyZGViZGEyNjM2NDI2YTQ2OCAodGhlCisgbmV0c25tcF9mcmVlKCkgaW50byBTTk1QX0ZSRUUoKSBjaGFuZ2VzIGluIHRoZSAqLnhzIGZpbGVzKS4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZTEwOTUzOTkzMDcwM2NiMzA1MmQ1MjQxYjE4YWM2ZmMwNjJmYWFjYSBNZXJnZTogMGM5YjZjYgorCisgZTQ2YjE3MCBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcKKyA4IDE4OjM0OjExIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9taWIuYzogQ0hBTkdFUzogc25tcGxpYjogRml4IGEgY3Jhc2ggdGhhdCBjb3VsZCBiZQorCisgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QKKyBlcXVhbCB0byAtMS4KKworMjAxMS0wOC0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgN2Y0MmQwZDkzMzIwNDg0MTUyMjcxNDI3Y2M5ODA4Y2JkYTQ5YmJkMCBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDggMDk6NTA6NTEgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwYzliNmNiZTlkYmUyZWM1MjE3YTk1YjY3ODFmZDdkYzFmNmViZGE3IE1lcmdlOiBmYTZjZWY1CisKKyA5NjMzMjBmIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgTW9uIEF1ZworIDggMTg6MTQ6MzYgMjAxMSArMDIwMAorCisyMDExLTA4LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBhM2I4NjU0YTIzMmM1NjNiYzk3Y2M5OTI1Y2Q5ODU5MGEzMGM1YmM1IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIE1vbiBBdWcgOCAxNzoyNDoxOCAyMDExICswMjAwCisKKzIwMTEtMDgtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGZhNmNlZjVjYTkxZGYzYTBiMDM0NTViNjg1NTlkMmJlZTI0ODEwMWMgTWVyZ2U6IGY1ZmU1MzYKKworIDhhZGQwZGEgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBTdW4gQXVnCisgNyAxMDoxODo1NCAyMDExICswMjAwCisKKzIwMTEtMDgtMDcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGEwZGQzY2FmMjU5MjZlNDM0NjU3MThiZjQxN2E0NjRjMmZiMzYzNjYgQXV0aG9yOiBCYXJ0IFZhbgorCisgQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU3VuIEF1ZyA3IDEwOjE3OjAxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzogMzIgaXMgdG9vIGxpbWl0ZWQgZm9yCisKKyBiaWdnZXIgdGFibGVzOyBpbmNyZWFzZSB0aGUgbWF4IG1zZyBjb3VudCB0byAxMjgKKworMjAxMS0wOC0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBtYWtlIHJvbGx1cCBhbmQgc3luYyBzdXBwb3J0CisKKyAtLXJlYmFzZSBhbmQgY2hhbmdlIHRoZSBkZWZhdWx0IGJhY2sgdG8gbWVyZ2UKKworMjAxMS0wOC0wNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogUkVBRE1FLndpbjMyOiBDSEFOR0VTOiBXaW4zMjogRG9jdW1lbnRlZCBob3cgdG8gdXNlIGJ1aWxkLmJhdCB3aXRoCisKKyBPcGVuU1NMIGVuYWJsZWQKKworMjAxMS0wNy0xNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogUkVBRE1FLndpbjMyOiBDSEFOR0VTOiBXaW5kb3dzOiBSZW1vdmUgb3V0ZGF0ZWQgaW5zdHJ1Y3Rpb25zIGFib3V0CisKKyBlZGl0aW5nIHdpbjMyXGxpYnNubXBfZGxsXGxpYnNubXAuZGVmIGZyb20gUkVBRE1FLndpbjMyCisKKzIwMTEtMDctMTUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIFJFQURNRS53aW4zMjogQ0hBTkdFUzogV2luMzI6IERvY3VtZW50IGhvdyB0byBidWlsZCA2NC1iaXQKKworIGV4ZWN1dGFibGVzIGZvciB0aGUgeDY0L2FtZDY0IGFyY2hpdGVjdHVyZQorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBmNWZlNTM2ZThmZDZjNDhmZTI0M2RlY2QzMWZhYzljZjFjOTJmNGNjIE1lcmdlOiA3ODUwZWExCisKKyA4MDkyOGE4IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTU6MTM6MjcgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4MDkyOGE4OTA5Y2ZhYjM3ZjAxYjM5YTA3MWEzZThhZDg1OTU2MjIyIE1lcmdlOiBmMTZhMDk0CisKKyAwZGJjODY5IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTM6NTc6MzAgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwZGJjODY5ZmVjMDdkOGU5MGRiZDFjOTU0OTNlZTdjYmM2MjNjOTVjIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcgNSAxMjo0MDozMSAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IEFkZAorCisgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUuZGVmIGFuZCBwZXJsL1NOTVAvdAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA4NmMxZTJiOTY3OWZlYzJjZDc5OWJhNzYwMDVjM2Q2MGU5ZDQ3NjM0IE1lcmdlOiBiY2Q4NjM1CisKKyBmMTZhMDk0IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTI6MjA6NTAgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAyZjhkNGY1Nzk2Y2JjMWM3ZTk2N2FjZGFhODAxOWIyNGYxNTIwYTM2IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcgNSAxMjowMjo1MSAyMDExICswMjAwCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogVW5icmVhayB0aGUgVjUtNC1wYXRjaGVzIC0gcmV2ZXJ0IGNvbW1pdAorCisgZDJjNDc2OGJkMmVmYjQ4NjY0NDM0YTgzMTQyNWMyZGRhODVkNzEzMyAoQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0gKKyAzMzYyMjMzOiBmcm9tIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZQorIG5vaXNlKS4KKworMjAxMS0wOC0wNSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaDogCisKKyBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQKKyBiZjcxNzhiMGIyMjU4N2Q0M2QxYTgwYzI2OWNkMjE2YmQ1OTMwMjE0IChhZ2VudDogY2hhbmdlIHR5cGUgb2YKKyBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHRvIGxvbmcpCisKKzIwMTEtMDgtMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmg6IFVuYnJlYWsgdGhlIFY1LTQtcGF0Y2hlcworCisgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQKKyAwZTY4NDJmZTA4MGNlYzg1M2IwOGNkMjMyMzAxNWFiYWJjMzgxY2UxIChDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENICisgMzM4MzQ0MTogZnJvbSBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mCisgZnJlZWQgbWVtb3J5KS4KKworMjAxMS0wOC0wNSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTkVXUzogbWlub3IgTkVXUyBwb2xpc2gKKworCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBiY2Q4NjM1MDcxMzgyMjk2M2QzNzZlZmY1ODJhOTJmNDNlNDI2ZDZjIE1lcmdlOiA5YzgxMGEzCisKKyA3YTIwZjcxIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEF1ZworIDUgMTA6Mjg6NTUgMjAxMSArMDIwMAorCisyMDExLTA4LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAzYWE5NDlmYmRmYzFhOTRhODM0MGFkOGJhZjhiMzE0NzU2YTBiYjlkIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBBdWcgNSAxMDoyNjoxNSAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDljODEwYTNiMzdiNjg1NzNjNDAzMzdlMjQ2ZTJmYWYyOTliNzdkMzEgTWVyZ2U6IDcxY2IyZTgKKworIDYxMGQ2M2YgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMTA6NDI6MDggMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA5NDM5MzBlMWUxMjQzODVmZDk0NzM4YjZkY2RhMzdkMjlkYzdhYzdmIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFRodSBBdWcgNCAxMDo0MTo0MQorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBNZXJnZSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICdvcmlnaW4vVjUtNC1wYXRjaGVzJyBpbnRvCisKKyBWNS00LXBhdGNoZXMKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNGVkY2I4OGRhZThiMmU1OWRjNjgzZTgwZDQxNGZhN2VjZWMzNjg4NSBNZXJnZTogNjVmM2VlZgorCisgMmRkOWVkMCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAxMDoyNDoxMSAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAnb3JpZ2luL1Y1LTUtcGF0Y2hlcycgaW50bworCisgVjUtNS1wYXRjaGVzCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIDogY29tbWl0IGJjNWNhMDNhMDRhYjE5YzYzNGEzNGQwNjBiMGIxNmI3NDg0Y2I1MjAgTWVyZ2U6IDg4ZmRkYjcKKworIDkwYzBlNzUgQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnCisgNCAxOToxMzowNyAyMDExICswMjAwCisKKzIwMTEtMDgtMDQgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYywgc25tcGxpYi9zbm1wdXNtLmM6IHNubXB1c206IEZpeCByZWNlbnRseQorCisgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncworCisyMDExLTA4LTA0ICBTdHVhcnQgSGVuZGVyc29uIDx0MGp3MmZ1MGttZ0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYzogQ0hBTkdFUzogb3BlbmJzZDoKKworIFBBVENIIDMzNTc5MzI6IGZyb20gdDBqdzJmdTBrbWc6IENsZWFuaW5nIGluIG1lbW9yeV9uZXRic2QuYyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmM6IENIQU5HRVM6IGFnZW50OgorCisgUEFUQ0ggMzM4NjE0NzogZnJvbSB3dWxmMjAwMTogZml4IFVDRC1TTk1QLU1JQjo6ZHNrVXNlZCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgNDczZDdlNWNkNGQ0MTFiYmEyMGViODUzNTlkODcyODA2MzMwMWNiZCBNZXJnZTogYTRlOGI2MgorCisgODhmZGRiNyBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwOToyODoyMiAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDIxMDFiYjJkN2FkNmRiMDM4Yzc1NWFhOTE5M2M4YWNlMGRiZDRmNTggQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVGh1IEF1ZyA0IDA5OjI4OjA2CisgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAuZ2l0aWdub3JlOiBpZ25vcmUgKi5vcmlnIGFuZCAqLnJlagorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogaGVscCBvdXRwdXQgZGVzY3JpYmVzIHJlYmFzZSB2cworCisgbWVyZ2UgYmV0dGVyCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGYxMjZhMTdjNmEzMDYzNDU1YTUxMTk0MGIwMjMwNDdhYmQ5YjQ4ZWUgTWVyZ2U6IGFkNzY1ZjQKKworIDc3YTQ3ODQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDk6MjU6MTYgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0NTJlMTcwN2YyMDllYzQ1ZTdjN2YyYTMwNDBlZjU5NWZiOWQxYWY2IE1lcmdlOiBkYzc1NWE2CisKKyBiMzcyZTVhIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA5OjI1OjAzIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgU3R1YXJ0IEhlbmRlcnNvbiA8dDBqdzJmdTBrbWdAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBNYWtlZmlsZS5pbiwgYWNjb25maWcuaCwgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmgsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oLCAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2Q0LmgsIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZDUuaDogQ0hBTkdFUzogb3BlbmJzZDogUEFUQ0gKKyAgICAgIDMzNTc5Mjc6CisKKyBmcm9tIHQwancyZnUwa21nOiBSZWNvZ25pc2Ugb3BlbmJzZDUgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogZml4IHdoZXJlIGFyZ3VtZW50cyBhcmUgc2V0CisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBzcGxpdCBuc3NmcGF0Y2hhcHBseSBpbnRvIHR3bworCisgcGFydHM6IGFwcGx5IGFuZCBjb21taXRpbmcKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBwYXRjaCB1c2luZyAtTgorCisKKzIwMTEtMDgtMDQgIERhdmlkIEFybm9sZCA8ZGphQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgbWFuL2RlZmF1bHRfc3RvcmUuMy5ib3QsIG1hbi9lbmNvZGVfa2V5Y2hhbmdlLjEuZGVmLCAKKyAgICAgIG1hbi9maXhwcm9jLjEuZGVmLCBtYW4vbWliMmMuY29uZi41LmluLCBtYW4vbmV0LXNubXAtY29uZmlnLjEuZGVmLAorICAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2FwaS4zLmRlZiwgbWFuL25ldHNubXBfbWliX2FwaS4zLmRlZiwgCisgICAgICBtYW4vc25tcC5jb25mLjUuZGVmLCBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsCisgICAgICBtYW4vc25tcGJ1bGt3YWxrLjEuZGVmLCAgbWFuL3NubXBjbWQuMS5kZWYsIG1hbi9zbm1wY29uZi4xLmRlZiwKKyAgICAgIG1hbi9zbm1wZC44LmRlZiwgIG1hbi9zbm1wZC5jb25mLjUuZGVmLCBtYW4vc25tcGQuZXhhbXBsZXMuNS5kZWYsIAorICAgICAgbWFuL3NubXBkZWx0YS4xLmRlZiwgbWFuL3NubXBkZi4xLmRlZiwgbWFuL3NubXBnZXQuMS5kZWYsIAorICAgICAgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCBtYW4vc25tcG5ldHN0YXQuMS5kZWYsIG1hbi9zbm1wc2V0LjEuZGVmLCAKKyAgICAgIG1hbi9zbm1wc3RhdHVzLjEuZGVmLCBtYW4vc25tcHRhYmxlLjEuZGVmLCBtYW4vc25tcHRlc3QuMS5kZWYsIAorICAgICAgbWFuL3NubXB0cmFuc2xhdGUuMS5kZWYsIG1hbi9zbm1wdHJhcC4xLmRlZiwgbWFuL3NubXB0cmFwZC44LmRlZiwgCisgICAgICBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYsIG1hbi9zbm1wdXNtLjEuZGVmLCBtYW4vc25tcHZhY20uMS5kZWYsIAorICAgICAgbWFuL3NubXB3YWxrLjEuZGVmOiBDSEFOR0VTOiBtYW46IFBBVENIIDMzMTI4NjE6IGZyb20gZGphOiBNYW4KKyAgICAgIHBhZ2VzCisKKyBoeXBoZW4tdnMtbWludXMgY2xlYW51cCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IERldGVjdCAoYW5kIHJlamVjdCkgT3BlblNTTAorCisgMS4wLjAKKworMjAxMS0wOC0wNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IENvbW1hbmQtbGluZSBvcHRpb25zIGZvciBzaWxlbnQKKworIGluc3RhbGwKKworMjAxMS0wOC0wNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiB3aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2k6IEVuc3VyZSBXaW5kb3dzIHBhY2thZ2UKKworIHVuaW5zdGFsbHMgY29tcGxldGVseS4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgODFjNjNmYjVjNWU0YWJiOWMyOWFjYTg5YmY5ZDY5NDQxMDA4NmU5NyBNZXJnZTogNGE2OTIwYQorCisgZGM3NTVhNiBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwODozMzozNCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzogYWRkZWQgc3BhY2luZyB0byBtYXRjaCB0aGUgbGF0ZXIgYnJhbmNoZXMKKworCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IG1hbnVhbCBtZXJnZQorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzogcmVtb3ZlZCBhY2NpZGVudGlhbGx5IGR1cGxpY2F0ZWQgY29kZQorCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogbWFudWFsIG1lcmdlCisKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBtYW51YWwgbWVyZ2UKKworCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogbGlibmV0c25tcDogUEFUQ0ggMzM2MjIzMzogZnJvbQorCisgeWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9zbm1wX3ZhcnMuYywgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczogQ0hBTkdFUzogZnJlZWJzZDogUEFUQ0ggMzM2MzMwODoKKyAgICAgIGZyb20KKworIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyCisgc2h1ZmZsaW5nIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlCisKKyBmbGFnIGZvciBtZXJnaW5nIGluc3RlYWQgb2YgcmViYXNpbmcKKworMjAxMS0wOC0wNCAgU2FjaGluIFN1cmVuZHJhbiA8c2FjaGluc3VyZW5kcmFuQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIIDMzODM0NDE6IGZyb20KKworIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5IFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTA0ICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIE1ha2VmaWxlLmluOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzI4OiBmcm9tIHlhYmVyYXVuZXlhOgorCisgQWRkIEZyZWVCU0QgOS54IHRvIHN1cHBvcnRlZCBPU2VzIGxpc3QgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogc25tcGxpYi9wYXJzZS5jOiBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tCisKKyB5YWJlcmF1bmV5YTogTXV0ZSB1bm5lY2Vzc2FyeSBjYW5ub3QgZmluZCBtb2R1bGUgbm9pc2UgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L3NubXBfdmFycy5jLCAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOiBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OgorICAgICAgZnJvbQorCisgeWFiZXJhdW5leWE6IEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoIHJlY2VudCBoZWFkZXIKKyBzaHVmZmxpbmcgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWxsb3cgbnNyb2xsdXAgdG8gdGFrZSBhIC0tbWVyZ2UKKworIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCisyMDExLTA4LTA0ICBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oLCBzbm1wbGliL3NubXBfY2xpZW50LmMsIAorICAgICAgc25tcGxpYi9zbm1wdXNtLmM6IENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0ggMzM4MzQ0MTogZnJvbQorCisgc2FjaGluc3VyZW5kcmFuOiBGaXggY3Jhc2ggb24gNS40LjQgZHVlIHRvIGFjY2VzcyBvZiBmcmVlZCBtZW1vcnkgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogTWFrZWZpbGUuaW46IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMjg6IGZyb20geWFiZXJhdW5leWE6CisKKyBBZGQgRnJlZUJTRCA5LnggdG8gc3VwcG9ydGVkIE9TZXMgbGlzdCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20KKworIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF92YXJzLmMsIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6IENIQU5HRVM6IGZyZWVic2Q6IFBBVENIIDMzNjMzMDg6CisgICAgICBmcm9tCisKKyB5YWJlcmF1bmV5YTogRml4IGNvbXBpbGF0aW9uIG9uIEZyZWVCU0QgOS54IHdpdGggcmVjZW50IGhlYWRlcgorIHNodWZmbGluZyBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZQorCisgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisKKzIwMTEtMDgtMDQgIFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tCisKKyBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3BhcnNlLmM6IENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20KKworIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhbGxvdyBuc3JvbGx1cCB0byB0YWtlIGEgLS1tZXJnZQorCisgZmxhZyBmb3IgbWVyZ2luZyBpbnN0ZWFkIG9mIHJlYmFzaW5nCisKKzIwMTEtMDgtMDQgIFNhY2hpbiBTdXJlbmRyYW4gPHNhY2hpbnN1cmVuZHJhbkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywgCisgICAgICBzbm1wbGliL3NubXB1c20uYzogQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tCisKKyBzYWNoaW5zdXJlbmRyYW46IEZpeCBjcmFzaCBvbiA1LjQuNCBkdWUgdG8gYWNjZXNzIG9mIGZyZWVkIG1lbW9yeSBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgc25tcGxpYi9rZXl0b29scy5jLAorICAgICAgc25tcGxpYi9zY2FwaS5jOgorCisgQ0hBTkdFUzogYnVpbGRpbmc6IFBBVENIIDMzODM5NTE6IGZyb20geWFiZXJhdW5leWE6IEZpeCAtV3VudXNlZAorIGNvbXBpbGUgd2FybmluZ3Mgd2l0aCBGcmVlQlNEL05ldEJTRCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2ZyZWVic2QuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgc25tcGxpYi9rZXl0b29scy5jLAorICAgICAgc25tcGxpYi9zY2FwaS5jOgorCisgQ0hBTkdFUzogYnVpbGRpbmc6IFBBVENIIDMzODM5NTE6IGZyb20geWFiZXJhdW5leWE6IEZpeCAtV3VudXNlZAorIGNvbXBpbGUgd2FybmluZ3Mgd2l0aCBGcmVlQlNEL05ldEJTRCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZTg3OGFiYmRiMTgwOGVmODNlMGE4MDc0NTM2ZmI1NGUxMzIxOWE4YiBNZXJnZTogNDAzZGU0MgorCisgODc4ZmJmNCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFRodSBBdWcgNCAwNzo1NTowMCAyMDExIC0wNzAwCisKKzIwMTEtMDgtMDQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDI1MGFmYTA2ODkyZmQ4OTdhYzMxZTM4MzZhN2ZmYzllMmI0Y2Y3YjkgTWVyZ2U6IDJjMTRjMWMKKworIDNhZmM1ZTAgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgQXVnIDQgMDc6NTE6MzMgMjAxMSAtMDcwMAorCisyMDExLTA4LTA0ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA1NzhjZDdjY2UzNTFhZThkOTA0ZWMzZDgwYmU5YmE2ZDFkNDhhNzEyIE1lcmdlOiAyNTk4OGJlCisKKyBmM2JjNTUxIEF1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVGh1IEF1ZyA0IDA3OjUwOjU2IDIwMTEgLTA3MDAKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBhdXRvY29uZgorCisKKzIwMTEtMDgtMDQgIEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzOiBDSEFOR0VTOiBidWlsZGluZzogUEFUQ0gKKworIDMzODM5NDk6IGZyb20geWFiZXJhdW5leWE6IEZpeCBhdXRvY29uZiB0ZXN0cyBmb3Igc3lzL21idWYuaCBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBwcm9tcHQgZm9yIHBhdGNoIGFuZCBhbiBhcmVhLCBhbmQKKworIHVzZSB0aGUgcHJvcGVyIENIQU5HRVMgbGluZSBmb3JtYXQKKworMjAxMS0wOC0wNCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBVc2UgZmV0Y2ggLS1hbGwgYW5kIHJlYmFzZSBhcworCisgc3VnZ2VzdGVkIGJ5IEJhcnQgZm9yIHNwZWVkIGltcHJvdmVtZW50cworCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkNmExYTg5ZTZmNjQ4OTUxYTliODMxOTMyZDNjYzIzMDgyMWYyZDM3IE1lcmdlOiBkY2I3MTJmCisKKyA4NzJlMDEzIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDQgMTI6MDY6MTggMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA0NDk2OWI0ZTU3YzI3MTk0ZTViZDM1N2JjNDUyNzVmZWI4Njk1ZDIyIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIEZyaSBKdWwgOCAyMDo1MjoyNSAyMDExICswMjAwCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jOiBDSEFOR0VTOiBXaW4zMjogd2luRXh0RExMOiBJbnZva2UKKworIFNubXBVdGlsT2lkRnJlZSgpIGJlZm9yZSBTbm1wVXRpbE9pZENweSgpLiBJdCdzIG5vdCBjbGVhciB5ZXQgd2h5CisgdGhlIG9yaWdpbmFsIGNvZGUgZGlkIG5vdCBtYWtlIHNubXB3YWxrIHRyaWdnZXIgYSBtZW1vcnkgbGVhay4KKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZGNiNzEyZmZjODZiMzM1ODMwMDBlZjRhZTlhNTFjZWQyNWNkMTViZiBNZXJnZTogZTg1Y2ZhNQorCisgOTg2MjNlZiBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcKKyA0IDExOjM2OjE3IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgOGEwMWVjNjQyM2Q0MDBjNGExM2NjYWM2OGEzNzkxZDAyMThhMDg4NSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgQXVnIDQgMTE6MTk6MTcgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBlODVjZmE1OTliMjNiNzZkOTc5MTNjOTZiNWQ3MDNiZmY2YmE0OTQ0IE1lcmdlOiBiMDU2ZWU2CisKKyBlMjFlZWYyIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEF1ZworIDQgMDg6NDQ6NDMgMjAxMSArMDIwMAorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IENIQU5HRVM6IGFnZW50OgorCisgQXZvaWQgdGhhdCBhIE1JQiB3YWxrIG9uIHRoZSBob3N0IHJlc291cmNlcyBNSUIgdHJpZ2dlcnMgYSBjcmFzaCBvbgorIEZlZG9yYSAxNQorCisyMDExLTA4LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBiMDU2ZWU2ZWI1MzkwOWFkMDRmMTZlYzI2ZDI2OTBkN2EwODMxOTJhIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFRodSBBdWcgNCAwNzo1OTowNCAyMDExICswMjAwCisKKzIwMTEtMDgtMDMgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYywgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjCisgICAgICAgZXNzLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYywgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYywgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MKKyAgICAgICAuYywgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYywgYWdlbnQvc25tcF9hZ2VudC5jLCAKKyAgICAgIGFwcHMvc25tcGJ1bGtnZXQuYywgYXBwcy9zbm1wdGxzLmMsIGFwcHMvc25tcHRyYXBkX2xvZy5jLCAKKyAgICAgIHBlcmwvU05NUC9TTk1QLnhzLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLCAKKyAgICAgIHNubXBsaWIvZGlyX3V0aWxzLmMsIHNubXBsaWIvc25tcF9hcGkuYywgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAKKyAgICAgIHNubXBsaWIvc25tcF9lbnVtLmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsIHNubXBsaWIvc25tcHVzbS5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmM6IENIQU5HRVM6IHNubXBsaWIsIHNubXBkOgorCisgcGVybDogRWxpbWluYXRlIGRlYWQgdmFyaWFibGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGFlOGUzZWNkMmRmNGNmMzc2MjU5NDRhZGVkMWRmZTQ3MzVkNDRlZWEgTWVyZ2U6IDczMTg3Y2UKKworIDkzMzVlMTkgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBXZWQgQXVnIDMgMTQ6Mzc6MzYgMjAxMSAtMDcwMAorCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA3OTRmOWE2OWQ3ZWI2NDIyNjgyMDBiMGE0YjE5OTE1MWRlZjY2ZWQwIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFdlZCBBdWcgMyAxNDozNjoyNQorIDIwMTEgLTA3MDAKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvbW1lbnQKKworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBjb21tZW50CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0CisKKyBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvcgorCisgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGF0IGVuZCBvZiBuc3JvbGx1cCBtZW50aW9uIHRoYXQKKworIG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yCisKKyBwdXNoL3B1bGxpbmcgYWN0aXZlIGJyYW5jaGVzCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBjb21tZW50CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0CisKKyBub3cgd291bGQgYmUgYSBnb29kIHRpbWUgdG8gcnVuIG5zc3luYworCisyMDExLTA4LTAzICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGEgbmV3IG5zc3luYygpIGZ1bmN0aW9uIGZvcgorCisgcHVzaC9wdWxsaW5nIGFjdGl2ZSBicmFuY2hlcworCisyMDExLTA4LTAzICBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIuaDogUmVlbmFibGUgSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZQorICAgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKworMjAxMS0wOC0wMyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkKKworIHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliLmg6IFJlZW5hYmxlIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUKKyAgICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmk6IGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0bworCisgdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6IFdvcmRpbmcgY2hhbmdlcyB0bworCisgaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1VNjQubTJpOiBBZGRlZAorCisgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtY3R4LWdldC5tMmk6IGFkZGVkIHZhcmlhYmxlcyBuYW1lcyB0bworCisgdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6IFdvcmRpbmcgY2hhbmdlcyB0bworCisgaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworMjAxMS0wOC0wMiAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvTWFrZWZpbGUuaW4sIGxvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLWdldC1VNjQubTJpOiBBZGRlZAorCisgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKKzIwMTEtMDgtMDMgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5CisKKyB0aGF0IGF1dG8tcHVsbHMgZ2l0IGNvbW1hbmQgbGluZSBpbmZvIGZyb20gU0YKKworMjAxMS0wNy0xOCAgSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+CisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jOiBhZ2VudDogY2hhbmdlCisKKyB0eXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdG8gbG9uZyBUeXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdmFyaWFibGUgaXMgY2hhbmdlZCBmcm9tIGludCB0byBsb25nLgorIFRoaXMgZml4ZXMgdGhlIGJ1ZyB3aXRoIHdyaXRpbmcgdG8gc25tcEVuYWJsZUF1dGhlblRyYXBzIGlmIHNlcnZlcgorIGlzIGNvbXBpbGVkIGZvciA2NGJpdCAoc25tcHNldCByZXBvcnRzIHdyb25nIGxlbmd0aCkuIFRoaXMgYnVnIHdhcworIGludHJvZHVjZWQgYSBsb25nIHRpbWUgYWdvIChieSBmYWVlY2QwIGNvbW1pdCkuICBBY3R1YWxseSB0aGlzIGlzIGEgJ2xlc3MgZWZmb3J0JyB0eXBlIG9mIGZpeCBidXQgSSB3b25kZXIgd2h5IHdlCisgbmVlZCBhIGxvbmcgdG8gc3RvcmUgYW4gSU5URUdFUiBpbiB0aGUgZmlyc3QgcGxhY2U/IFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPiBTaWduZWQtb2ZmLWJ5OiBXZXMKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1jdHgtZ2V0Lm0yaTogYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvCisKKyB0aGUgZ2VuZXJhdGVkIGVycm9yIG1lc3NhZ2VzLgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzogV29yZGluZyBjaGFuZ2VzIHRvCisKKyBoZWxwIGRlc2NyaWJlIGNvbnRleHRzIGJldHRlcgorCisyMDExLTA4LTAyICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBsb2NhbC9NYWtlZmlsZS5pbiwgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtZ2V0LVU2NC5tMmk6IEFkZGVkCisKKyB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworMjAxMS0wOC0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNmFkN2UyOGZmOWU1ZTRlYmMxMzU4ZWUzOWNjOTc5NmE0NGExYmVlNyBNZXJnZTogZjI4MzJlMworCisgMWUxNTRjZSBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFdlZCBBdWcKKyAzIDE5OjE1OjI0IDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgNjFiMTc4ZjFlZTg5NTJhYTAzYWEzYjFiYTUxZjRhNjY1NWU0N2YwMSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBXZWQgQXVnIDMgMTg6MDk6NDcgMjAxMSArMDIwMAorCisyMDExLTA4LTAzICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmg6IFdoaXRlc3BhY2Utb25seSBjaGFuZ2U6IGZpeCBpbmRlbnRhdGlvbgorCisgb2YgYW4gI2luY2x1ZGUgZGlyZWN0aXZlCisKKzIwMTEtMDgtMDIgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHBlcmwvTmV0U05NUC54czogQ0hBTkdFUzogUGVybDogUmVtb3ZlIGZpbGUgcGVybC9OZXRTTk1QLnhzCisKKyBiZWNhdXNlIGl0IGJyZWFrcyB0aGUgV2luZG93cyBidWlsZC4gIFRvIFdlczogaWYgeW91IGNhbiB0ZWxsIG1lIGhvdyB0byByZXByb2R1Y2UgdGhlIHByb2JsZW0geW91IG9ic2VydmVkCisgSSdsbCB0cnkgdG8gZmluZCBhIHBvcnRhYmxlIGZpeC4gIFRoaXMgcmV2ZXJ0cyBjb21taXQgZDU0ODcxZjUyOTM2NzVjODA1OGVjY2U4OGZlZDViNjQ2YzgzNjMyMyAoIkFkZGVkCisgYSBib2d1cyBlbXB0eSAueHMgZmlsZSBmb3IgYnVuZGxpbmcgb24gbmV3ZXIgcGVybCB0aGF0IHdhbnRzCisgInNvbWV0aGluZyIiKS4KKworMjAxMS0wOC0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgMGY0ODliMTk5YWRhYjQ4YjE2MzNlYmNhZjVmZjVhN2MyMmM0Y2I4OSBNZXJnZTogZjRlYWEwMgorCisgNzJhNTliYyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBBdWcKKyAyIDEwOjExOjUzIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgN2ZjYzBiODAzMmY4ZGE1YjdiYzMwMDU5YWYwYmE2NTZlYWU3MTA5MSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBNb24gQXVnIDEgMTQ6MTE6MjggMjAxMSArMDIwMAorCisyMDExLTA4LTAyICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0CisgICAgICAgYV9hY2Nlc3MuYzogRml4IGEgY29tcGlsZXIgd2FybmluZyBpbgorCisKKyBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYworCisyMDExLTA4LTAxICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBBZGQgZmlsZSBuYW1lcyBhbmQgcGF0dGVybnMgZm9yIG91dHB1dAorCisgZmlsZXMgZ2VuZXJhdGVkIGR1cmluZyB0aGUgV2luZG93cyBidWlsZAorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5CisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCisKKworMjAxMS0wOC0wMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIC5naXRpZ25vcmUsIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LWMuaW5jLCAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LXhzLmluYzogUmVtb3ZlIHR3byBnZW5lcmF0ZWQgUGVybCBmaWxlcy4KKworCisyMDExLTA4LTAyICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBmNGVhYTAyZDliMDc2YTY3ZDcyNzJkZTdlZWY4ZTlkZmJmMTg5YmJmIE1lcmdlOiA0MDEyNWQ4CisKKyBhZGFkY2I5IEF1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgVHVlIEF1ZyAyIDAwOjU3OjUxIDIwMTEgKzAyMDAKKworMjAxMS0wOC0wMiAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zOiBzdXBwcmVzcyAib2siIHRlc3Qgb3V0cHV0IGluIG5zYgorCisKKzIwMTEtMDgtMDEgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA0MDEyNWQ4NTM5Y2Q4OWY5NTJmYmMyNDU4OGM1ZTgxZTljZDgyMWZlIEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBNb24gQXVnIDEKKyAxMzo1ODozMyAyMDExICswMjAwCisKKzIwMTEtMDgtMDEgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDVhY2YwZDJjZWIzOTc3OTY0ZWQzOWYwMDMwNzNiYTY0MTM4YzJlYmQgQXV0aG9yOiBUaG9tYXMKKworIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgU3VuIEp1bCAzMSAyMzo1Nzo0MQorIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYTc3MjJhODFmOWNiN2FhODY3MGU3YzIzODYwMTM2MmEzMTA4N2FjYyBNZXJnZTogMjQyZTE3OQorCisgYWU5YWM2YyBBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFN1biBKdWwKKyAzMSAwOToxMTo0NSAyMDExICswMjAwCisKKzIwMTEtMDctMzEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFwcHMvc3NodG9zbm1wLmM6IEZpeCBhbiBpbmNvcnJlY3Qgc291cmNlIGNvZGUgY29tbWVudDogdGhlcmUgaXMKKworIG5vIHJlcXVpcmVtZW50IGluIHRoZSBBTlNJIEMgc3RhbmRhcmQgdGhhdCBzdGFjayB2YXJpYWJsZXMgc2hvdWxkIGJlCisgaW5pdGlhbGl6ZWQgdG8gemVyby4KKworMjAxMS0wNy0zMSAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgMjQyZTE3OTdiMjY5NGEwNjg5ODU2YWUzNmQwNWQzNDEzYWFmOGQ3NyBBdXRob3I6IFRob21hcworCisgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBTdW4gSnVsIDMxIDAxOjQ0OjA5CisgMjAxMSArMDIwMAorCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBzbm1wbGliL3N5c3RlbS5jOiBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcKKworIGdldGFkZHJpbmZvKCkgYW5kIEVBSV9GQUlMIChlLmcuIEhQLVVYIDEwLjIwLzExLjAwKQorCisyMDExLTA3LTMwICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxOGRmNzU5ZjE5Yjk3NWM0NDlkMDEwYmIwYTE2MjExOWJiNjgzNjBkIE1lcmdlOiA1NGE0NGNiCisKKyA3MDUwNzE4IEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgU2F0IEp1bAorIDMwIDE2OjM5OjEzIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgODJkNzNmYjExYmUzYWUzMWYzOWM5ZDYxOGQ1Mzg4ZGM5YjEwMDZkNyBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsIDI5IDIwOjUxOjI3IDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogYXV0b3JlY29uZgorCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IGF1dG9yZWNvbmYKKworCisyMDExLTA3LTMwICBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAxMDlmNjY5NGQ3ODhmNDhlYmQ5ZmMwYTFlOTBjNDVhYmMzN2JlYTIwIEF1dGhvcjogVGhvbWFzCisKKyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIFNhdCBKdWwgMzAgMTQ6MjI6MTkKKyAyMDExICswMjAwCisKKzIwMTEtMDctMzAgIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IDdkODEwMGVlZDQ1OWExZmYxYTIwYzA2NzM2NGZhNmNiNDc0OTEzMDkgTWVyZ2U6IDExNmMyNGYKKworIDllNDdhYzQgQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBTYXQgSnVsIDMwIDAwOjIwOjAxIDIwMTEgKzAyMDAKKworMjAxMS0wNy0zMCAgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zLCBkaXN0L25zYi1uaWdodGx5LCBkaXN0L25zYi1wYWNrYWdlOiBtaW5vciBuc2IKKworIGZpeGVzL2VuaGFuY2VtZW50cyBmcm9tIG15IG9sZCBzdm4gdHJlZQorCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxMTZjMjRmMGY3ZmIzZjk5YmE2NDY3MzBmNjFjNTZkMWFlMjNiYTQxIE1lcmdlOiA5ODJmYjdmCisKKyA0ZmMwYjhiIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgRnJpIEp1bAorIDI5IDExOjMxOjIwIDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYzQ4MTczYzA2YTllYWFkYmY4MWU2YjQ5NjJkNTVlZjBhNTRkYjI1MSBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBGcmkgSnVsIDI5IDEwOjI3OjM5IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogY29uZmlndXJlLCBsdG1haW4uc2gsIG00L2xpYnRvb2wubTQ6IFJlcnVuIGF1dG9yZWNvbmYKKworCisyMDExLTA3LTI5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiAuZ2l0aWdub3JlOiAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5CisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogLmdpdGlnbm9yZTogLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCisKKworMjAxMS0wNy0yOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oLCAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYzogRml4IHR3byBmaWxlbmFtZXMgaW4gaG9zdCBtaWIKKworIHNvdXJjZSBjb2RlIGNvbW1lbnRzLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgOTgyZmI3ZmQ4YmFiMjVjNDMyMmFhNjJjNTA0MzcwMzZjZTI5NmUzZSBNZXJnZTogMWVkYTY3NQorCisgMzQ1ODEyOCBBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBUaHUgSnVsIDI4IDE2OjI0OjAzIDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogRml4IHBvdGVudGlhbAorCisgc2lnc2VndiB3aGVuIGFuIGlmVGFibGUgZW50cnkgaXMgcmVtb3ZlZCBhcyByZXN1bHQgb2YgYm90aAorIGludGVyZmFjZV9yZXBsYWNlX29sZCBhbmQgaW50ZXJmYWNlX2ZhZGVvdXQgYXQgdGhlIHNhbWUgdGltZS4KKworMjAxMS0wNy0yOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYXBwcy9zc2h0b3NubXAuYzogTWFrZSBhcHBzL3NzaHRvc25tcC5jIGJ1aWxkIGFnYWluICh3YXMgYnJva2VuIGJ5CisKKyBjb21taXQgNjEyMjQ3Y2RmMTRjMWU3NDVjMzg0Y2VmZTFmM2ZkZTNlNDQ1YjM0NyB0aGF0IGNoYW5nZWQKKyBNU0dfTk9TSUdOQUwgaW50byBORVRTTk1QX05PU0lHTkFMKQorCisyMDExLTA3LTI4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxZWRhNjc1M2I3ZmU3ZDNiM2YyMTdjMDkyNTRlYzAyZDBlZTFkMGNlIE1lcmdlOiBkYjhiODYwCisKKyBhMmY5ZWNlIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVGh1IEp1bAorIDI4IDE1OjMyOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yOCAgTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOiAKKworIENIQU5HRVM6IHNubXBkOiBSZXN0b3JlIHN0b3JhZ2UgdGFibGVzIG9uIExpbnV4CisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjogRG9jdW1lbnQgaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIG9wdGlvbi4KKworCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfcmVwbGFjZV9vbGQnIG9wdGlvbiB0byByZW1vdmUgb2xkIGVudHJpZXMgaW4KKyBpZlRhYmxlIHdoZW4gYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbHJlYWR5IGV4aXNpbmcgb25lCisgYXBwZWFycy4gIEUuZy4gcmVtb3ZlIG9sZCBwcHAwIGludGVyZmFjZSB3aGVuIG5ldyBwcHAwIHNob3dzIHVwLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IERvY3VtZW50IHRoZSBpbnRlcmZhY2VfZmFkZW91dCBvcHRpb24uCisKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQWxsb3cgaWZUYWJsZQorCisgZW50cmllcyB0byBiZSBkZWxldGVkIGltbWVkaWF0ZWx5IHdoZW4gYXBwcm9wcmlhdGUgaW50ZXJmYWNlCisgZGlzYXBwZWFycyAoaS5lLiBpbnRlcmZhY2VfZmFkZW91dCA9IDAgd29ya3MgYXMgZXhwZWN0ZWQpLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfZmFkZW91dCcgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gc2V0CisgbGlmZXRpbWUgb2YgaWZUYWJsZSBlbnRyaWVzIG9mIHJlbW92ZWQgaW50ZXJmYWNlcy4gIFByZXZpb3VzIGxpZmV0aW1lIHdhcyBoYXJkY29kZWQgNSBtaW51dGVzLCBub3cgaXQncyBjb25maWd1cmFibGUuCisKKzIwMTEtMDctMjggIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkNjJhMGViOTA3MGI0ZDhkOWZlMmJjZmRiNGQ1M2QzN2VmODE0ZjliIEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUaHUgSnVsIDI4CisgMTQ6NDk6MDggMjAxMSArMDIwMAorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfcmVwbGFjZV9vbGQnIG9wdGlvbiB0byByZW1vdmUgb2xkIGVudHJpZXMgaW4KKyBpZlRhYmxlIHdoZW4gYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbHJlYWR5IGV4aXNpbmcgb25lCisgYXBwZWFycy4gIEUuZy4gcmVtb3ZlIG9sZCBwcHAwIGludGVyZmFjZSB3aGVuIG5ldyBwcHAwIHNob3dzIHVwLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6IERvY3VtZW50IHRoZSBpbnRlcmZhY2VfZmFkZW91dCBvcHRpb24uCisKKworMjAxMS0wNy0yOCAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzogQWxsb3cgaWZUYWJsZQorCisgZW50cmllcyB0byBiZSBkZWxldGVkIGltbWVkaWF0ZWx5IHdoZW4gYXBwcm9wcmlhdGUgaW50ZXJmYWNlCisgZGlzYXBwZWFycyAoaS5lLiBpbnRlcmZhY2VfZmFkZW91dCA9IDAgd29ya3MgYXMgZXhwZWN0ZWQpLgorCisyMDExLTA3LTI4ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOiBDSEFOR0VTOgorCisgc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfZmFkZW91dCcgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gc2V0CisgbGlmZXRpbWUgb2YgaWZUYWJsZSBlbnRyaWVzIG9mIHJlbW92ZWQgaW50ZXJmYWNlcy4gIFByZXZpb3VzIGxpZmV0aW1lIHdhcyBoYXJkY29kZWQgNSBtaW51dGVzLCBub3cgaXQncyBjb25maWd1cmFibGUuCisKKzIwMTEtMDctMjggIFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBhcHBzL3NzaHRvc25tcC5jLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmM6IENIQU5HRVM6IGJ1aWxkaW5nOiBidWlsZAorICAgICAgZml4CisKKyBmb3Igc3lzdGVtcyBsYWNraW5nIE1TR19ET05UV0FJVAorCisyMDExLTA3LTI3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYzogQ0hBTkdFUzogc25tcGQ6IE1ha2UKKworIFRDUC1NSUI6OnRjcEN1cnJFc3RhYiB3b3JrIGFnYWluLiBXYXMgYnJva2VuIGluIDUuNyBieSB0aGUKKyBpbnRyb2R1Y3Rpb24gb2YgdGhlICJmZWF0dXJlcyIgZmVhdHVyZS4KKworMjAxMS0wNy0yNyAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGZiODgwNzRmYmJjMjY4YzdmMDUwOTQ5MTUzNWFlYzVmZWNiMDU2ODQgTWVyZ2U6IGE3NDNhZTUKKworIDM4MjEyNzMgQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6CisgV2VkIEp1bCAyNyAxNDo0NzoyNSAyMDExICswMjAwCisKKzIwMTEtMDctMjcgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCAzMWZhMDdjZDlmZmRlNDZkNDFkMmI1ODM4YzNmYzRkMDE1NDhiZmI1IEF1dGhvcjogSmFuCisKKyBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgSnVsIDI3CisgMTQ6NDU6NDcgMjAxMSArMDIwMAorCisyMDExLTA3LTI3ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvc25tcGQuYzogQ0hBTkdFUzogc25tcGQ6IHJ1biBzaWduYWwgaGFuZGxlcnMgd2hlbiBzZWxlY3QoKQorCisgaXMgaW50ZXJydXB0ZWQuICBUaGlzIGJlaGF2aW9yIGlzIGluZGljYXRlZCBpbiBjb21tZW50IG9uIGxpbmUgMTI0NCwgYnV0IGl0IHdhcyBub3QKKyBhY3R1YWxseSBkb25lLgorCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAyZTk0NjZkN2Y1OWQ2NWQwNTAyNzc3MzVlNGVkOWQzMDcxOWZmNzUyIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwgMjYgMTM6MTA6MDQgMjAxMSArMDIwMAorCisyMDExLTA3LTI2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCA3NzA4Mjk2NzYwZWFmNWE4MGQ4NTQwNzQ2YzljMjQ5ODI2ZmQxYmZlIE1lcmdlOiBlYTExZTVlCisKKyBjZDZlMzgyIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bAorIDI2IDE2OjIxOjQxIDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNiAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOiBDbGFyaWZ5IGFuIElQdjYgc291cmNlIGNvZGUgY29tbWVudAorCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYywgbWFuL25ldHNubXBfaGFuZGxlci4zOiBTcGVsbGluZyBmaXg6CisKKyBkZWZpbmVkeSAtPiBkZWZpbmVkCisKKzIwMTEtMDctMjYgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMzogU3BlbGxpbmcKKworIGZpeDogYWxldmlhdGUgLT4gYWxsZXZpYXRlCisKKzIwMTEtMDctMjYgIEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCBkZDJjNDcxMzM0OTNkNWEwMGRlNmIzY2RiY2ZhYzdlOWQ0NGI2ZmZlIE1lcmdlOiBmOWNjYmM3CisKKyBlYTExZTVlIEF1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIFR1ZSBKdWwgMjYgMTQ6MjU6MjggMjAxMSArMDIwMAorCisyMDExLTA3LTI2ICBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzVhODQ2NGM0MmE5NGMyNTBlZTJkZmEyYTQ3MzEwOWE3MzQyMDNkOCBBdXRob3I6IEphbgorCisgU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEp1bCAyNgorIDE0OjI0OjU1IDIwMTEgKzAyMDAKKworMjAxMS0wNy0yNSAgSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGY5Y2NiYzc3MjY2NjEzNGQxZDE3OGI1MDVhZjlkZGNkZDllZDQyNDQgQXV0aG9yOiBKYW4KKworIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIE1vbiBKdWwgMjUKKyAxNTowMjoxNSAyMDExICswMjAwCisKKzIwMTEtMDctMjAgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGIwYzBhMzU1ZDVmNjAxYTExYmU0OTE0ZmJmNzEzNzE2YWJkMzBhMjkgQXV0aG9yOiBXZXMKKworIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IERhdGU6ICAgVHVlIEp1bCAxOQorIDE4OjM2OjExIDIwMTEgLTA3MDAKKworMjAxMS0wNy0yMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgYzE0ZmMzODYxNGJhZjEwZDUxNzEzNmYwNDgwOTA3YjdmMDNkOGQ3NCBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBXZWQgSnVsIDIwCisgMTM6NDQ6NTkgMjAxMSAtMDcwMAorCisyMDExLTA3LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jOiByZW1vdmUgYnJva2VuIHdoaXRlc3BhY2UgbGluZXMgdGhhdAorCisgbGVhZHMgdG8gcmVhZGluZyBjb25mdXNpb24KKworMjAxMS0wNy0yMCAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgZWJkZDIxNmMwNzRiZjQxY2QzYTA4NGJkMTQ2ODljZjAxYzg4N2IzMSBBdXRob3I6IFdlcworCisgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZTogICBUdWUgSnVsIDE5CisgMTg6MzY6MTEgMjAxMSAtMDcwMAorCisyMDExLTA3LTE5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiAuZ2l0aWdub3JlOiB1cGRhdGVkIGdpdGlnbm9yZSB0byBpZ25vcmUgYSBudW1iZXIgb2YgYXV0by1nZW5lcmF0ZWQKKworIGZpbGVzCisKKzIwMTEtMDctMTkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmM6IHJlbW92ZSBicm9rZW4gd2hpdGVzcGFjZSBsaW5lcyB0aGF0CisKKyBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBkZjVmNzAwNTVjZjliZTMzZjA1ZmI1MGFiZTJmNWE4MWVhYzA5MmFkIEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwgMTkgMTE6MDc6MTkgMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCBmNTk2ZjE4MjQyZGNkZmQ2Y2Y0OWM4OGRhMWQ4MzZjMTZlMjYwY2FjIE1lcmdlOiAwZjMwOWI0CisKKyA3MGRlZTRiIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bAorIDE5IDExOjMzOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYzogQ0hBTkdFUzogc25tcGQ6IFBBVENIOgorICAgICAgMzM2OTY4MDoKKworIGZyb20gSWx5YSBZYW5vazogY2hhbmdlIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgZnJvbSBpbnQgdG8gbG9uZyBzdWNoCisgdGhhdCBtb2RpZnlpbmcgdGhlIGNvcnJlc3BvbmRpbmcgTUlCIG9iamVjdCBkb2VzIG5vdCBvdmVyd3JpdGUKKyBtZW1vcnkgaW4gNjQtYml0IGJ1aWxkcy4KKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6IENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzM3MDY0NToKKworIGZyb20gQmlsbCBGZW5uZXI6IEZpeCBBZ2VudFggc3ViYWdlbnQgZm91ciBieXRlIGxlYWsKKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzOiBkbworCisgbm90IGludm9rZSBJU1JVTk5JTkcoKSBvbiBNaW5HVy4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzOgorCisgY2xlYW51cCAtIHJlbW92ZSBjb2RlIHRoYXQgYmVjYW1lIHN1cGVyZmx1b3VzLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBNaW5HVzogRG8gbm90CisKKyBhc3N1bWUgdGhhdCBraWxsLmV4ZSByZXBvcnRzIHZpYSBpdHMgZXhpdCBzdGF0dXMgd2hldGhlciB0aGUKKyBzaWduYWxsZWQgcHJvY2VzcyBzdGlsbCBleGlzdHMuCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IENIQU5HRVM6IHRlc3Rpbmc6CisKKyBSZW1vdmUgdGhlIGZ1bmN0aW9uIFdBSVRPUkRJRSgpIGZyb20gc2ltcGxlX2V2YWxfdG9vbHMuc2ggc2luY2UgaXQKKyBpcyBuZXZlciBpbnZva2VkLgorCisyMDExLTA3LTA4ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgU2ltcGxpZnkgV0FJVEZPUigpIGluIHNpbXBsZV9ldmFsX3Rvb2xzLnNoLiBUaGUgY29kZSB0aGF0IGhhbmRsZWQKKyBpbnZvY2F0aW9uIG9mIFdBSVRGT1IoKSB3aXRoIHplcm8gb3Igb25lIGFyZ3VtZW50cyBoYXMgYmVlbiBkcm9wcGVkCisgc2luY2UgV0FJVEZPUigpIGlzIGFsd2F5cyBpbnZva2VkIHdpdGggdHdvIGFyZ3VtZW50cy4KKworMjAxMS0wNy0wOCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDogVGVzdCBoYXJuZXNzOgorCisgbWlub3Igc2ltcGxpZmljYXRpb24uCisKKzIwMTEtMDctMDggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1OXRyYXBkdHJhcGhhbmRsZV9zaW1wbGU6IENIQU5HRVM6CisKKyB0ZXN0aW5nOiBTa2lwIHRlc3QgNTkgaWYgU0lHSFVQIGlzIG5vdCBzdXBwb3J0ZWQuIE1ha2VzIHRlc3QgNTkgcGFzcworIG9uIE1pbkdXLgorCisyMDExLTA3LTA2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBNaW5HVyBmaXgKKworCisyMDExLTA3LTA2ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGZyYW1ld29yaworCisgcmVmYWN0b3Jpbmc6IEludHJvZHVjZSBXQUlURk9STk9UQ09ORCgpLgorCisyMDExLTA3LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgTWFrZSBTVE9QUFJPRyBzZW5kIFNJR1RFUk0gcmVwZWF0ZWRseS4gVGhpcyBmaXhlcyBhIHJhY2Ugd2hlcmUKKyBTSUdURVJNIGNvdWxkIGJlIHNlbnQgYmVmb3JlIHRoZSBTSUdURVJNIHNpZ25hbCBoYW5kbGVyIHdhcyBzZXQgdXAsCisgZXNwZWNpYWxseSB3aGVuIHJ1bm5pbmcgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgdW5kZXIgVmFsZ3JpbmQuCisgQ0hBTkdFUzogdGVzdGluZzogTWFrZSB0aGUgU05NUF9WRVJCT1NFPTEgb3V0cHV0IGV2ZW4gbW9yZSB2ZXJib3NlLgorCisyMDExLTA3LTA1ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBUZXN0IGhhcm5lc3MKKworIHJlZmFjdG9yaW5nOiBpbnRyb2R1Y2UgRUNIT1NFTkRTSUdURVJNKCkgYW5kIEVDSE9TRU5EU0lHS0lMTCgpCisKKzIwMTEtMDctMDUgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6IEZpeCBhIGJ1ZyBpbgorCisgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaCB0aGF0IHdhcyBpbnRyb2R1Y2VkCisgaW4gY29tbWl0IDkzOGQ3NWMuCisKKzIwMTEtMDctMDEgIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisgICAqIC5naXRpZ25vcmU6IC5naXRpZ25vcmU6IElnbm9yZSAqLmV4ZSBmaWxlcyBnZW5lcmF0ZWQgYnkgdGhlIFdpbjMyCisKKyBidWlsZAorCisyMDExLTA3LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgVGVzdCBvbmx5IG9uY2UgZHVyaW5nIGEgdGVzdCB3aGV0aGVyIHRoZSBzaGVsbCBzdXBwb3J0cyBzdWItc2Vjb25kCisgc2xlZXBpbmcgaW5zdGVhZCBvZiByZXBlYXRlZGx5LgorCisyMDExLTA3LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ydW46IENIQU5HRVM6IHRlc3Rpbmc6IENoYW5nZWQKKworIGRlZmF1bHQgdGltZW91dCBmcm9tIDFzIHRvIDEwcyB3aGVuIHRoZSByZWdyZXNzaW9uIHRlc3RzIGFyZSBydW4KKyB1bmRlciBWYWxncmluZAorCisyMDExLTA3LTA0ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoOiBDSEFOR0VTOiB0ZXN0aW5nOgorCisgQWZ0ZXIgaGF2aW5nIHNlbnQgU0lHVEVSTSB0byBzbm1wZCBvciBzbm1wdHJhcGQsIHdhaXQgdW50aWwgdGhlCisgcHJvY2VzcyBoYXMgc3RvcHBlZCBiZWZvcmUgc2VuZGluZyBTSUdLSUxMLiBUaGlzIHJhY2UgY29uZGl0aW9uIHdhcworIGhpdCBtb3N0IGVhc2lseSB3aGVuIHJ1bm5pbmcgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgdW5kZXIgVmFsZ3JpbmQuCisgQ0hBTkdFUzogdGVzdGluZzogQ2hlY2sgUElEIGZpbGUgZXhpc3RlbmNlIGFmdGVyIGhhdmluZyByZWFkIGl0CisgaW5zdGVhZCBvZiBiZWZvcmUuIFRoaXMgZml4ZXMgdGhlIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBQSUQgZmlsZQorIGRpc2FwcGVhcmVkIGFmdGVyIHRoZSBleGlzdGVuY2UgY2hlY2sgYW5kIGJlZm9yZSBpdCB3YXMgcmVhZC4KKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudAorCisgaW50cm9kdWNlZCBieSBwYXRjaCAzMzEwMjUwIC8gcjIwNDk0OiB1c2UgJWxkIHRvIHByaW50IGEgdmFsdWUgb2YKKyB0eXBlIG9pZCBpbnN0ZWFkIG9mICVkLiAgVGhpcyBwYXRjaCBpcyBhIGNvbWJpbmF0aW9uIG9mIHRoZSBmb2xsb3dpbmcgdG8gVjUuNiBTVk4gcGF0Y2hlczogZ2l0LXN2bi1pZDoKKworIGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWRnaXQtc3ZuLWlkOgorCisgZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTEyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAwZjMwOWI0OTNjMjFkM2M2OTE0NDg3NTE0YjQxNTYwNzU0ZmZjZGY5IEF1dGhvcjogQmFydCBWYW4KKworIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPiBEYXRlOiAgIFR1ZSBKdWwgMTkgMDg6Mzc6NTAgMjAxMSArMDIwMAorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiA6IGNvbW1pdCAxYjc0NTRiYzI4MTU2ODQ3MGExMzAwNDc2ZDJlZGI0ZjQxMWU2MDI5IE1lcmdlOiA4ZDlkY2M4CisKKyA2OTBlYTdkIEF1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+IERhdGU6ICAgVHVlIEp1bAorIDE5IDA4OjMxOjI4IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xOSAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogYXBwcy9zbm1wdHJhcGQuYzogQ0hBTkdFUzogc25tcHRyYXBkOiBBZGQgbWlzc2luZyBuZXdsaW5lCisKKyBjaGFyYWN0ZXIgaW4gYSBsb2cgbWVzc2FnZQorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBhcHBzL3NubXB0cmFwZC5jOiBDSEFOR0VTOiBzbm1wdHJhcGQ6IEludm9rZSBzaHV0ZG93bl9wZXJsKCkgd2hlbgorCisgc2h1dHRpbmcgZG93bgorCisyMDExLTA3LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6IFNwZWxsaW5nIGZpeDogYnJhbmtldCAtPiBicmFja2V0CisKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOiBSdW4gYXV0b3JlY29uZi4KKworIEZpeGVzIGJ1aWxkIGJyZWFrYWdlIGNhdXNlZCBieSBwYXRjaAorIGQ1ODhlYzg1M2JkMDUzMWYyMTJmY2JmNTFiOTYyYjk2YzY4MjhiNTkgKFJQTSA0Ljkgc3VwcG9ydCkKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgZDYxN2Q4NGY4M2ZhNjllZDlmYTlmOThlZmM0YWZhZjg4MGQxMjFmMiBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgSnVsIDE0IDE2OjQzOjQ3IDIwMTEgKzAyMDAKKworMjAxMS0wNy0xNCAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jOiBDSEFOR0VTOiBzbm1wbGliOiBNYWtlCisKKyBuZXRzbm1wX2lwdjZfZm10YWRkcigpIHNob3cgdGhlIElQdjYgc2NvcGUgSUQKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYywgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogQ0hBTkdFUzogV2luMzI6IEFkZCBzdXBwb3J0CisgICAgICBmb3IKKworIElQdjYgYWRkcmVzcyBzY29wZSBJRAorCisyMDExLTA3LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IFJ1biBhdXRvcmVjb25mCisKKworMjAxMS0wNy0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CisKKyAgICogOiBjb21taXQgYTU2NzIxYTNlNzc1NGUzODlkYWE3ZThhM2Q1NzkyODk5ZWRjOWRlMyBBdXRob3I6IEJhcnQgVmFuCisKKyBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4gRGF0ZTogICBUaHUgSnVsIDE0IDE2OjE4OjMyIDIwMTEgKzAyMDAKKworMjAxMS0wNy0xNSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogOiBjb21taXQgODQ0ZDRjZTg2N2JmM2FiZTdiNzUzNmM1ZGJmYmE0MDE5MzdhOGQ0YSBNZXJnZTogZWVkMDE5OAorCisgNjEwMzZhOCBBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOgorIEZyaSBKdWwgMTUgMTU6MzM6MTAgMjAxMSAtMDcwMAorCisyMDExLTA3LTE1ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiA6IGNvbW1pdCA4NTFiY2Y1M2ZjZDEzY2RmMGJhOWYxMmU1ZDYwM2U3M2Y4YmI5NjExIEF1dGhvcjogV2VzCisKKyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PiBEYXRlOiAgIEZyaSBKdWwgMTUKKyAxNTozMjo0OSAyMDExIC0wNzAwCisKKzIwMTEtMDctMTQgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOiBmaXggYSB0eXBvCisKKworMjAxMS0wNy0xMyAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAbG9jYWxob3N0PgorCisgICAqIHNubXBsaWIvcGFyc2UuYzogQ0hBTkdFUzogc25tcGxpYjogIHR3ZWFrIHBhdGNoIDMwNDQ4ODggdG8gcmVzdG9yZQorCisgcHJvcGVyIG5vbi1lcnJvciByZXR1cm4gZHVyaW5nIG1pYiBsb2FkaW5nCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogYWRkZWQgNS43IHBhdGNoZXMgdG8gdGhlIGJyYW5jaCBsaXN0IGFuZCBmaXggdGhlIHJlbGVhc2UgZmlsZQorCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogYWRkZWQgNS43IHBhdGNoZXMgdG8gdGhlIGJyYW5jaCBsaXN0CisKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogZGlzdC9yZWxlYXNlOiBhIGNvcHkgb2YgdGhlIHJlbGVhc2UgZmlsZSBhcHBsaWVkIHRvIHRoZSBvbGRlcgorCisgYnJhbmNoZXMKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCA1LjcgcGF0Y2hlcworCisKKzIwMTEtMDctMTEgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIDogY29tbWl0IGM0MzEyMzFlOGYwYTM5ZDE5NTBiYzcyYzMyZTM0MDJmOTBmYTgwMzAgTWVyZ2U6IDU2ZmVlNDAKKworIGEyYWMyNGQgQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4gRGF0ZToKKyBNb24gSnVsIDExIDE5OjMzOjE3IDIwMTEgLTA3MDAKKworMjAxMS0wNy0xMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIGNvcHkgb2YgdGhlCisKKyBzaGVsbC1mdW5jdGlvbnMgdG8gdGhlIG9sZGVyIGJyYW5jaAorCisyMDExLTA3LTExICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworICAgKiBkaXN0L3JlbGVhc2U6IGEgY29weSBvZiB0aGUgcmVsZWFzZSBmaWxlIGFwcGxpZWQgdG8gdGhlIG9sZGVyCisKKyBicmFuY2hlcworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjcucmMzIC0+IFY1LjcKKworMjAxMS0wNy0wMSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZTogNS43CisKKworMjAxMS0wNy0wMSAgUm9iZXJ0IFN0b3J5IDxyc3RvcnlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaCwgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6IFJldmVydCAiZml4IGR0bHN1ZHAKKworIHRyYW5zcG9ydCBhZGRyZXNzIGZvcm1hdCBmdW5jdGlvbiIgVGhpcyByZXZlcnRzIGNvbW1pdCAyYWIzYTZlNmYyZmNjMWZmM2U1ZjBmYjVkYzVkMDVlNDk4ODIwZDg5LiAgIC0gZm9yIHNvbWUgcmVhc29uIEkgc2F3ICdyYycgYW5kIG15IGJyYWluIGludGVycHJldGVkIGl0IGFzICAgICdwcmUtcmVsZWFzZScuIFdoYXQgY2FuIEkgc2F5LCBpdCB3YXMgbGF0ZS4gOi0vCisKKzIwMTEtMDctMDEgIFJvYmVydCBTdG9yeSA8cnN0b3J5QGxvY2FsaG9zdD4KKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jLCAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOiBmaXggZHRsc3VkcCB0cmFuc3BvcnQKKworIGFkZHJlc3MgZm9ybWF0IGZ1bmN0aW9uICAtIHVwZGF0ZSBpcHY0IGZtdGFkZHIgdG8gaGFuZGxlIHNvY2thZGRyIGFuZCB0byBjaGVjayAgICBzaXplIGJlZm9yZSBhc3N1bWluZyBkYXRhIGlzIGFkZHIgcGFpciAgLSBtb3ZlIGR0bHN1ZHAgZnVuY3Rpb25zIHRvIGV4dHJhY3QgYWRkcihzKSB0byB0bHNiYXNlCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBmaXggdGFnIHB1c2hpbmcKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS43LnJjMiAtPiBWNS43LnJjMworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLAorCWRpc3QvbmV0LXNubXAuc3BlYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjcucmMzCisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogcmVtb3ZlIHVubmVlZGVkIGNvbW1lbnQKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiBtaXNjIHB1YmxpY2F0aW9uIGZpeGVzIGZvdW5kIHdoaWxlCisJcHVibGlzaGluZworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogcmFuIGF1dG9oZWFkZXIgdG8gYWRkIHRoZQorCW1pc3NpbmcgdGVtcGxhdGUgaWZkZWZzCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy5yYzEgLT4gVjUuNy5yYzIKKworMjAxMS0wNi0yOSAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGRpc3QvbWFrZXJlbGVhc2UueG1sOiB1c2UgdGhlIG5ldyBydW4tYXV0b2NvbmYgc2NyaXB0CisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L3J1bi1hdXRvY29uZjogQSBzY3JpcHQgdG8gaW52b2tlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlCisJYXV0b2NvbmYgdG9vbAorCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHJlbWFpbmluZyBjb21tYW5kIGxpbmUgY2hhbmdlcyBmb3Igc3ZuIC0+CisJZ2l0CisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L21ha2VyZWxlYXNlLnhtbDogbWFrZSB0aGUgYnJhbmNoIGVjaG8gb3V0cHV0IGFuZCBzdm4gdXBkYXRlCisJY29udmVydGVkIHRvIGdpdCBlcXVpdmFsZW50cworCisyMDExLTA2LTI5ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogZGlzdC9tYWtlcmVsZWFzZS54bWw6IHB1bGwgdGhlIGJyYW5jaCBpbmZvIGZyb20gZ2l0CisKKzIwMTEtMDYtMjkgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBkaXN0L3JlbGVhc2U6IG5vdGVkIHRoYXQgdGhlIG1hc3RlciBicmFuY2ggaXMgaW4gcmMgc3RhdGUKKworMjAxMS0wNi0yOCAgV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CisKKwkqIEZBUTogTWVudGlvbiB0aGUgR2l0IHdpa2kgcGFnZQorCisyMDExLTA2LTI4ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiB1c2UgZ2l0IG1lcmdlIHdpdGggdGhlIC0tbG9nCisJb3B0aW9uCisKKzIwMTEtMDYtMjggIEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorCisJKiAuZ2l0aWdub3JlOiBBZGQgLmdpdGlnbm9yZQorCisyMDExLTA2LTI4ICBXZXMgSGFyZGFrZXIgPG9wZW5zb3VyY2VAaGFyZGFrZXJzLm5ldD4KKworCSogRkFROiBXZSdyZSBub3cgdXNpbmcgZ2l0IQorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiB1c2UgcmViYXNlIHRvIHB1dCBsb2NhbCBjaGFuZ2VzIGF0CisJdGhlIHRvcCBvZiB0aGUgcmVtb3RlIGJyYW5jaGVzIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUzMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogYWRkZWQgYSBmZWF0dXJlIHRvIG5vdCByb2xsCisJYnJhbmNoZXMgY3VycmVubHkgaW4gcmMgcGhhc2UgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIG5zcm9sbHVwIGZ1bmN0aW9uIGZvcgorCXJvbGxpbmcgYnJhbmNoZXMgdXB3YXJkLiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBjcmVhdGVkIGFuIG5zcGF0Y2hhcHBseSBmdW5jdGlvbgorCXRvIGFwcGx5IGEgcHJldmlvdXNseSB0ZXN0ZWQgcGF0Y2ggZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTMwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI3ICBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogbG9jYWwvZ2l0dG9vbHMvc2hlbGwtZnVuY3Rpb25zOiBhZGRlZCBhIG5zdHJ5cGF0Y2ggZnVuY3Rpb24gdG8KKwl0ZXN0IHBhdGNoIGFwcGxpY2F0aW9uIGFnYWluc3QgdmFyaW91cyBicmFuY2hlcyBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MjkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IGFkZGVkIHZlcmJvc2Ugb3V0cHV0IGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNyAgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGxvY2FsL2dpdHRvb2xzL3NoZWxsLWZ1bmN0aW9uczogbW9yZSBwcmVmaXggY2hhbmdlcyBhbmQgYmV0dGVyCisJc2V0dGluZyBvZiBkZWZhdWx0IHZhbHVlcyBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMjA1MjcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjcgIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6IHVzZSBucyBwcmVmaXhlcyBpbnN0ZWFkIG9mIGdlbmVyaWMKKwlzbm1wIHByZWZpeGVzIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AyMDUyNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTI0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogCisJTWlzc2luZyBjaGVjayBmb3IgcnBtdHMuaCBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBjb25maWd1cmU6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTI0ICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLAorCW1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywKKwltYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAorCW1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywKKwltYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCisJbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAorCW1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywKKwltYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAorCW1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCisJbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsCisJbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKKwltYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsCisJbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLAorCW1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywKKwltYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKKwltYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsCisJbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywKKwltYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKKwltYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsCisJbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLAorCW1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAorCW1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLAorCW1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLAorCW1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKKwltYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLAorCW1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsCisJbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCisJbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLAorCW1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywKKwltYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywKKwltYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLAorCW1hbi9uZXRzbm1wX3dhdGNoZXIuMzogZG9jdW1lbnRhdGlvbiB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yNCAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsCisJc25tcGxpYi9zbm1wX3ZlcnNpb24uYzogVmVyc2lvbiBudW1iZXIgdXBkYXRlIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjMgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAorCWluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46IFR3ZWFrIFJQTSBoYW5kbGluZyB0byB3b3JrCisJd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45IEJhc2VkIG9uIGEgcGF0Y2ggYnkgSmFuIFNhZnJhbmVrIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMjIgIERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6IFByb3ZpZGUgYSBmcmFtZXdvcmsgZm9yIHJlYWRpbmcKKwlSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5IChyYXRoZXIgdGhhbiBxdWVyeWluZworCXRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKwlmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUxOCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMiAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogQ2hhbmdlTG9nOiB2ZXJzaW9uIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBjb25maWd1cmU6IFZlcnNpb24gbnVtYmVyIHVwZGF0ZSBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTIyICBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKKwlzbm1wbGliL3NubXBfdmVyc2lvbi5jOiBWZXJzaW9uIG51bWJlciB1cGRhdGUgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwKKwlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IFByb3ZpZGUgYQorCWZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5CisJKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKwlmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AyMDUxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwKKwlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IFByb3ZpZGUgYQorCWZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5CisJKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKwlmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0yMSAgRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCwKKwlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmM6IFByb3ZpZGUgYQorCWZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tIGEgY2FjaGUgZGlyZWN0b3J5CisJKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKKwlmdW5jdGlvbmFsaXR5LiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE5ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZvbGxvdy11cCBmb3IgcjIwNTExOiByZWFsbHkgdXNlCisJdGhlIHByb3BlciBmb3JtYXQgc3BlY2lmaWNhdGlvbi4gIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMjA1MTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTkgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzogRm9sbG93LXVwIGZvciByMjA1MTE6IHJlYWxseSB1c2UKKwl0aGUgcHJvcGVyIGZvcm1hdCBzcGVjaWZpY2F0aW9uLiAgZ2l0LXN2bi1pZDoKKworCWZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworMjAxMS0wNi0xNyAgQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKKwkqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOiBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKwlpbnRyb2R1Y2VkIGJ5IHBhdGNoIDMzMTAyNTAgLyByMjA0OTQ6IHVzZSAlbGQgdG8gcHJpbnQgYSB2YWx1ZSBvZgorCXR5cGUgb2lkIGluc3RlYWQgb2YgJWQuICBnaXQtc3ZuLWlkOgorCisJZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNi1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCisyMDExLTA2LTE3ICBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6IEZpeCBhIGJ1ZyBpbiBhIGRlYnVnIHN0YXRlbWVudAorCWludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mCisJdHlwZSBvaWQgaW5zdGVhZCBvZiAlZC4gIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzogVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkCisJb2YgJWxkIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKzIwMTEtMDYtMTcgIEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzogVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkCisJb2YgJWxkIGdpdC1zdm4taWQ6CisKKwlmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA1MTAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworQ2hhbmdlczogVjUuNy5wcmUyIC0+IFY1LjcucmMxCisKKzIwMTEtMDYtMTMgMTY6MTEgIGhhcmRha2VyCiAKICAgICogY29uZmlndXJlOgogCi0gICBhdXRvY29uZiB1c2luZyB0aGUgcmlnaHQgdmVyc2lvbgorICAgcnVuIGNvcnJlY3QgdmVyc2lvbiBvZiBhdXRvY29uZgogCi0yMDEwLTEyLTI5IDAxOjQwICBoYXJkYWtlcgorMjAxMS0wNi0xMyAxNjoxMCAgaGFyZGFrZXIKIAogICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAogICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOgogCiAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKIAorMjAxMS0wNi0xMyAxNjowNCAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmU6CisKKyAgIHJhbiBhdXRvY29uZgorCisyMDExLTA2LTEwIDA2OjAzICBuYmEKKworICAgKiBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzOgorCisgICBGaXggYnVpbGQgb2Ygc25tcHVzbSB3aGVuIGFkZGl0aW9uYWwgc2VjIG1vZHVsZXMgcmVxdWVzdGVkCisKKzIwMTEtMDYtMDkgMjE6MTMgIG5iYQorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmM6CisKKyAgIEluY2x1ZGUgc3Rk54it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOeIrfWAkYvvvaT1gIy154it9YCRi++9pPWAj7HniK31gJGL772k9YCMtPWAkpFiLmggdG8gbWFrZSBkbWFsbG9jIGhhcHB5CisKKzIwMTEtMDYtMDkgMTQ6MzUgIHJzdG9yeQorCisgICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzoKKworICAgQ0hBTkdFUzogQlVHOiAzMTUxODQ1OiBmaXggbXVsdGlwbGUgcmVnaXN0cmF0aW9ucyBvZiBzbm1wCisgICB0cmFuc3BvcnQgaGFuZGxlcgorCisyMDExLTA2LTA4IDE2OjM0ICByc3RvcnkKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwgc25tcGxpYi9zbm1wX2FwaS5jLCAgIAorICAgICAgc25tcGxpYi9zeXN0ZW0uYzoKKworICAgbW9yZSBkbnNzZWMgdHdlYWtzCisgICAKKyAgIC0gY3JlYXRlIGFuIGFwcC1nbG9iYWwgdmFsaWRhdG9yIGNvbnRleHQgZm9yIHVzZSB3aXRoIGFsbAorICAgdmFsaWRhdGlvbiByb3V0aW5lcy4gbWFpbmx5IHVzZWZ1bCBmb3IgbG9uZy1saXZlZCBhcHBzLgorICAgLSB1c2UgdGhlIGFwcHR5cGUgYXMgdGhlIHZhbGlkYXRvciAnc2NvcGUnLCBhbGxvd2luZworICAgZm9yIGFwcC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIG9mIHZhbGlkYXRpb24gdmlhIGxpYnZhbCdzCisgICBkbnN2YWwuY29uZgorCisyMDExLTA2LTA3IDE2OjQ4ICByc3RvcnkKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oOgorCisgICBhZGQgYSBtYXggZGVmaW5lIGZvciBlYWNoIGRlZmF1bHQgc3RvcmUgdHlwZQorICAgCisgICBub3QgYWN0dWFsbHkgdXNlZCwganVzdCBhIGhlbHBmdWwgcmVtaW5kZXIgZm9yIHRob3NlIGFkZGluZworICAgbmV3IGlkcyB3aG8gbWlnaHQgbm90IHRoaW5rIHRvIGNoZWNrIE5FVFNOTVBfRFNfTUFYX1NVQklEUy4KKyAgICh0aGUgYm9vbCBsaXN0IGlzIHJhcGlkbHkgYXBwcm9hY2hpbmcgdGhlIGN1cnJlbnQgbGltaXQuKQorCisyMDExLTA2LTA3IDE2OjQ2ICByc3RvcnkKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ydW46CisKKyAgIG1lbnRpb24gYnVpbGRkaXIgd2hlbiBjb21wbGFpbmluZyBhYm91dCBub3QgYmVpbmcgcnVuIGZyb20gc291cmNlCisgICB0cmVlCisKKzIwMTEtMDYtMDEgMjI6MjQgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMzEwMjUwOiBmcm9tIGZlbm5lcjogbWlzYyBmaXhlcyBmb3IKKyAgIGRlYnVnZ2luZyBvdXRwdXQgb2YgYWdlbnR4CisKKworCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjYgLT4gVjUuNy5wcmUyCisKKzIwMTEtMDUtMTAgMDA6MjAgIGhhcmRha2VyCisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsICAgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgorCisgICBtYWtlIGRlcGVuZAorCisyMDExLTA1LTEwIDAwOjIwICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgorCisgICBDKysgLT4gQyBjb21tZW50cworCisyMDExLTA1LTEwIDAwOjE3ICBoYXJkYWtlcgorCisgICAqIE5FV1M6CisKKyAgIE5FV1MgdXBkYXRlIGZvciA1LjcKKworMjAxMS0wNS0wOSAyMzoxNCAgaGFyZGFrZXIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmg6CisKKyAgIHJldmVydCB0aGUgb2lkIHR5cGVkZWYgcmVzaXppbmcgZnJvbSByMTc4MDkgYmVjYXVzZSBpdCBicm9rZQorICAgYmFja3dhcmRzIGNvbXBhdCwgYXMgcG9pbnRlZCBvdXQgYnkgdXNlcnMgb24gdGhlIC1jb2RlcnMgbGlzdAorCisyMDExLTA1LTA5IDIyOjUxICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZToKKworICAgdXNlIHByb3BlciBhdXRvY29uZiB2ZXJzaW9uCisKKzIwMTEtMDUtMDkgMjI6MzggIGhhcmRha2VyCisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYywgcGVybC9BU04vQVNOLnBtLCAgIAorICAgICAgcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbSwgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwKKyAgICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAgICBwZXJsL2FnZW50L2FnZW50LnBtLAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sICAgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbToKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMTEtMDUtMDkgMjI6MzggIGhhcmRha2VyCisKKyAgICogTWFrZWZpbGUudG9wOgorCisgICB2ZXJzaW9uIHVwZGF0ZQorCisyMDExLTA1LTA5IDIyOjEwICBoYXJkYWtlcgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKworICAgYWRkZWQgYSBtaXNzaW5nIDAgaW4gdGhlIHJldmlzaW9uIGRhdGUKKworMjAxMS0wNS0wOSAyMDo1MiAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jOgorCisgICBVc2Ugc3ltYm9saWMgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMKKworMjAxMS0wNS0wOSAyMDo0MyAgbmJhCisKKyAgICogbWlicy9yZmNtaWJzLmRpZmY6CisKKyAgIElBTkEgaGFzIGZpeGVkIHRoZSBJQU5BLUlQUE0tTUVUUklDUy1SRUdJU1RSWS1NSUIKKworMjAxMS0wNS0wOSAxNToyNCAgaGFyZGFrZXIKKworICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CisKKyAgIGFkZGVkIGEgbmV3IFJFVklTSU9OIGNsYXVzZSB0byBsaXN0IHRoZSBjaGFuZ2VzIGluIHRoZSB0aGUgcmVjZW50CisgICB1cGRhdGUKKworMjAxMS0wNS0wOSAxNDoxOSAgaGFyZGFrZXIKKworICAgKiBORVdTOgorCisgICBhZGRlZCBwaW5nL3RyYWNlcm91dGUgbWlicyBub3RlCisKKzIwMTEtMDUtMDkgMTQ6MTkgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYzoKKworICAgd2UgYWN0dWFsbHkgd2FudCB0byB1c2UgdGhlIGJhc2UgT0lEIGFzIHRoZSBzdGFydGluZyBwb2ludCwgbm90CisgICB0aGUgcmVnIE9JRC4KKworMjAxMS0wNS0wOSAxNDoxOCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jOgorCisgICBmaXhlZCB0aGUgcHJveHkgc3VwcG9ydCB0byBkbyBhIHByb3BlciBPSUQgbGVzcyB0aGFuIE9JRCBjb21wYXJlLgorICAgV2UgYWN0dWFsbHkgZG9uJ3QgY2FyZSBhYm91dCB0aGUgbGVuZ3RoIG9mIHRoZSBvcmlnaW5hbCByZXF1ZXN0LAorICAgb25seQorICAgdGhhdCBpdCB3YXMgYmVmb3JlIHRoZSByZWdpc3RlcmVkIHJlYmFzZQorCisyMDExLTA1LTA5IDE0OjE4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6CisKKyAgIENIQU5HRVM6IHBhdGNoIDMxNDA4MzM6IGZyb20ganNhZnJhbmVrOiBmaXggcHJveHkgR0VUTkVYVAorICAgcmVxdWVzdHMKKyAgIFdoZW4gT0lEcyByZXF1ZXN0ZWQgYXJlIGJlbG93IHRoZSBwcm94eSByZXF1ZXN0IHJlbWFwLCB3ZSBuZWVkIHRvCisgICBub3QKKyAgIGluY2x1ZGUgYW55IE9JRHMgdGhhdCBtaWdodCBiZSBpbiB0aGUgc3BhY2UgYmV0d2VlbiB0aGUgb3JpZ2luYWwKKyAgIE9JRAorICAgYW5kIHRoZSByZW1hcHBlZCBPSUQuIFRoaXMgcGF0Y2ggZnVkZ2VzIHRoZSByZXF1ZXN0IHNvIHRoYXQgaXQKKyAgIGZpeGVzCisgICB0aGUgcmVxdWVzdCBPSUQgc28gaXQncyBqdXN0IGJlZm9yZSB0aGUgcmVtYXBwZWQgcHJveHkgcmFuZ2UuCisKKzIwMTEtMDUtMDkgMTQ6MTggIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2NwdS5oLCBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CisKKyAgIE5FV1M6IFBBVENIIDMxNjczMjU6IGZyb20ga3Jpc3p0b2Zvcm86IFVDRC1TTk1QL1N5c3RlbVN0YXRzOiBhZGQKKyAgIHZhcmlhYmxlcworICAgdG8gcmVwb3J0IGNwdXN0ZWFsLCBjcHVndWVzdCwgY3B1Z3Vlc3RuaWNlCisKKzIwMTEtMDUtMDkgMTQ6MTcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jOgorCisgICBDSEFOR0VTOiBwYXRjaCAzMTg0MDI2OiBmcm9tIGVpdm5hZXM6IEF2b2lkIGNvbnN0YW50IHJlZnJlc2ggb2YKKyAgIGludGVyZmFjZSBzdGF0aXN0aWNzCisKKzIwMTEtMDUtMDkgMTA6NDQgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L3NubXBfYWdlbnQuYywgYXBwcy9zbm1wZGVsdGEuYywgc25tcGxpYi9zY2FwaS5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3N5c3RlbS5jLCBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIEZpeGVkIHNldmVyYWwgY29tcGlsZXIgd2FybmluZ3MgcmVwb3J0ZWQgYnkgdGhlIE1TVkMgY29tcGlsZXIuCisKKzIwMTEtMDUtMDkgMTA6MzUgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi9nZXR0aW1lb2ZkYXkuYzoKKworICAgV2luMzIvTVNWQzogRml4ZWQgYSBjb21waWxlciB3YXJuaW5nLgorCisyMDExLTA1LTA5IDEwOjMzICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogRml4ZWQgYSB5ZWFyLTIwMzggYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorICAgaXBSb3V0ZVRhYmxlLgorCisyMDExLTA1LTA4IDIwOjAxICBuYmEKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdQcm9iZUhpc3RvcnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jOgorCisgICBGaXggd2FybmluZ3MgYW5kIGRhdGEgZm9ybWF0IGZvciBEYXRlQW5kVGltZSBvYmplY3RzLgorICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6CisgICAtIFRoZXkgYXJlIExpbnV4IG9ubHkKKyAgIC0gUm93cyBtdXN0IGJlIGNyZWF0ZWQgd2l0aCByb3dTdGF0dXMgY3JlYXRlQW5kV2FpdCBiZWZvcmUgdGhleQorICAgYXJlIHBvcHVsYXRlZAorICAgLSBBZ2VudCBtdXN0IHJ1biBhcyByb290CisgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCisgICAtIERhdGEgZm9ybWF0IGZvciBJbmV0QWRkcmVzcyBvYmplY3RzIGlzIHdyb25nLiBJdCBpcyBBU0NJSSwgbm90CisgICBiaW5hcnkKKyAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCisKKzIwMTEtMDUtMDcgMTU6MjIgIGJ2YXNzY2hlCisKKyAgICogcGVybC9TTk1QL1NOTVAueHM6CisKKyAgIFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisKKzIwMTEtMDUtMDcgMTQ6NDggIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBEZWNsYXJlIHRoZSBPSUQgYXJndW1lbnQgdHlwZSBvZiBNSUIgcmVnaXN0cmF0aW9uCisgICBmdW5jdGlvbnMgYXMgJ2NvbnN0IG9pZCAqJyBpbnN0ZWFkIG9mICdvaWQgKicgc2luY2UgdGhlc2UKKyAgIGZ1bmN0aW9ucyBkbyBub3QgbW9kaWZ5IHRoZSBPSUQuCisKKzIwMTEtMDUtMDcgMTQ6NDQgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluay5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaDoKKworICAgVXNlIHRoZSBjb3JyZWN0IGRhdGEgdHlwZSBmb3IgdGhlICdjYWNoZSBleHBpcmVkJyB2YXJpYWJsZTogY2hhcgorICAgaW5zdGVhZCBvZiBpbnQuCisKKzIwMTEtMDUtMDcgMTQ6NDMgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzoKKworICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gcjIwMTUxLgorCisyMDExLTA1LTA3IDEzOjE1ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvd2luc2VydmljZS5jOgorCisgICBXaW4zMjogaW1wcm92ZWQgc291cmNlIGNvZGUgY29uc2lzdGVuY3kgYnkgdXNpbmcgTFBDVFNUUiBpbnN0ZWFkCisgICBvZiBMUENTVFIuIE5vdGU6IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IFVuaWNvZGUgYnVpbGRzIGFyZQorICAgc3VwcG9ydGVkLgorCisyMDExLTA1LTA3IDEzOjE0ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX25ldGxpbmsuYzoKKworICAgQWRkIGZpbGUgZm9yZ290dGVuIGluIHIyMDM1MworCisyMDExLTA1LTA2IDIzOjMyICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzEyNTk2OiBmcm9tIGZhYmxlZDgwOiBsaXN0ZW4gZm9yIG5ldGxpbmsKKyAgIGNoYW5nZSBldmVudHMgZm9yIHRoZSBhcnAtcmVsYXRlZCB0YWJsZXMKKworMjAxMS0wNS0wNiAxODozNiAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzoKKworICAgTkVXUzogc25tcGxpYjogYWRkIG9wdGlvbmFsIHN1cHBvcnQgZm9yIGxvY2FsIEROU1NFQyB2YWxpZGF0aW9uCisgICBvZiBob3N0bmFtZXMKKyAgIAorICAgLSBvcHRpb25hbCBhdCBjb25maWd1cmUgdGltZTogLS13aXRoLWxvY2FsLWRuc3NlYy12YWxpZGF0aW9uCisgICAtIHJlcXVpcmVzIEROU1NFQy1Ub29sIHZhbGlkYXRpb24gbGlicmFyaWVzCisgICAtIGluaXRpYWwgc3VwcG9ydCwgZm9yIHN5c3RlbXMgd2l0aCBnZXRhZGRyaW5mby4gc3VwcG9ydCBmb3IKKyAgIGFkZGl0aW9uYWwKKyAgIHJlc29sdmVyIGludGVyZmFjZXMgY29taW5nIHNvb24uCisgICAtIGFsc28gVE9ETzogZmxhZyBmb3IgaWdub3JpbmcgdmFsaWRhdG9pbiBlcnJvcnMgKGxvZyAmIGNvbnRpbnVlKQorCisyMDExLTA1LTA2IDE4OjM2ICByc3RvcnkKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaDoKKworICAgbW92ZSB1bnVzZWQgKGFuZCB0b28gZ2VuZXJpYykgdG9rZW4gd2l0aGluIFVDRF9DT01QQVRJQkxFIGlmZGVmCisgICAKKyAgIC0gTUFYTEFCRUwgY29uZmxpY3RzIHdpdGggPGFycGEvbmFtZXNlci5oPgorICAgLSBhZGRlZCBORVRTTk1QX01BWExBQkVMCisKKzIwMTEtMDUtMDYgMTg6MzYgIHJzdG9yeQorCisgICAqICBhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbiwgICAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMiwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgdXBkYXRlIGNvbmZpZ3VyZS9NYWtlZmlsZXMgZm9yIEROU1NFQyBsb2NhbCB2YWxpZGF0aW9uIG9wdGlvbgorCisyMDExLTA1LTA2IDE0OjM4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmM6CisKKyAgIHJlbW92ZWQgdGhlIGFjY2lkZW50YWwgYnJva2VuIGZlYXR1cmUgcmVxdWlyZSBsaW5lIHRoYXQgZ290IGhhbGYKKyAgIGluc2VydGVkCisKKzIwMTEtMDUtMDYgMTM6NTAgIGR0czEyCisKKyAgICogd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpOgorCisgICBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwgY29uZmlndXJhdGlvbjoKKyAgIC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTAorICAgLSByZW1vdmUgYXNzb3J0ZWQgbmV3IE1JQnMgYW5kIGhlYWRlciBmaWxlcworCisyMDExLTA1LTA2IDEyOjU4ICBkdHMxMgorCisgICAqIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsOgorCisgICBTdXBwb3J0IFRhci9HWmlwIGNvbW1hbmQgcGF0aHMgY29udGFpbmluZyBzcGFjZXMKKworMjAxMS0wNS0wNiAxMjo1NyAgZHRzMTIKKworICAgKiB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5wbDoKKworICAgUmVwb3J0IEdaaXAgY29tbWFuZCBjb3JyZWN0bHkKKworMjAxMS0wNS0wNSAyMTo0OCAgbmJhCisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYzoKKworICAgRml4IGZvciBEcmFnb25GbHkgQlNEIChkb2VzIG5vdCBkZWZpbmUgSVBfU0VORFNSQ0FERFIpCisKKzIwMTEtMDUtMDUgMjA6MjkgIG5iYQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaDoKKworICAgRml4IHNwZWxsaW5nIG9mIFNPX1JFQ1ZEU1RBRERSCisKKzIwMTEtMDUtMDUgMTg6NTQgIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCBtYW4vc25tcC5jb25mLjUuZGVmLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBORVdTOiBhcHBzOiBhZGQgc25tcC5jb25mIHRva2VucyBmb3IgdGltZW91dHMgYW5kIHJldHJpZXMKKworMjAxMS0wNS0wNSAwNjowNyAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3Rvb2xzLmMsIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoOgorCisgICBDSEFOR0VTOiBNaW5HVzogTWFkZSByZWdyZXNzaW9uIHRlc3Qgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZQorICAgTmV0LVNOTVAgdmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIFdpbmRvd3MgcmVnaXN0cnkuIFNvbWUgdGVzdHMKKyAgIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKQorICAgaGFkIGJlZW4gaW5zdGFsbGVkIGRvIG5vdyBwYXNzLgorCisyMDExLTA1LTA1IDA1OjU3ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJzbm1wL2xpYnNubXAudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwudmNwcm9qLCAgIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay52Y3Byb2osIHdpbjMyL3NubXBkL3NubXBkLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXQvc25tcGdldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wc2V0L3NubXBzZXQudmNwcm9qLCB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHRhYmxlL3NubXB0YWJsZS52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAudmNwcm9qLCB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB3YWxrL3NubXB3YWxrLnZjcHJvaiwgd2luMzIvd2luMzIuc2xuLCAgIAorICAgICAgd2luMzIvd2luMzJkbGwuc2xuOgorCisgICBSZW1vdmVkIFZpc3VhbCBTdHVkaW8gMjAwNSBzb2x1dGlvbiBhbmQgcHJvamVjdCBmaWxlcyBhZ2FpbiBzaW5jZQorICAgVmlzdWFsIFN0dWRpbyAyMDEwIHJlZnVzZXMgdG8gbG9hZCB0aGVzZS4KKworMjAxMS0wNS0wNCAyMzo0MyAgaGFyZGFrZXIKKworICAgKiBNYWtlZmlsZS5pbjoKKworICAgY2xlYW4gdGhlIHBlcmwvcHl0aG9uIGZlYXR1cmUgbGVmdG92ZXJzCisKKzIwMTEtMDUtMDQgMjM6NDIgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGZpeCBtaWIgbW9kdWxlIGludm9jYXRpb24KKworMjAxMS0wNS0wNCAyMDo1NyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6CisKKyAgIGZpeCBpZmRlZiB0eXBvCisKKzIwMTEtMDUtMDQgMjA6NTYgIGhhcmRha2VyCisKKyAgICogTWFrZWZpbGUuaW46CisKKyAgIGZpeCBwZXJsL3B5dGhvbiBmZWF0dXJlIGRlcGVuZGVuY2llcworCisyMDExLTA1LTA0IDIwOjU2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2F1dG9fbmxpc3QuYzoKKworICAgcmV2ZXJ0ZWQgYXV0b19ubGlzdCBtYWNybyB1c2FnZTsgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgaW4gaGVhZGVycworCisyMDExLTA1LTA0IDIwOjU2ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBBZGQgYSAtVCBvcHRpb24gdG8gcnVuICdtYWtlIHRlc3QnCisKKzIwMTEtMDUtMDQgMjA6NTYgIGhhcmRha2VyCisKKyAgICogYXBwcy9NYWtlZmlsZS5pbjoKKworICAgZml4IHRoZSBlbmNvZGVfa2V5Y2hhbmdlIC5mdCBmaWxlbmFtZQorCisyMDExLTA1LTA0IDE2OjIwICBoYXJkYWtlcgorCisgICAqIHBlcmwvVHJhcFJlY2VpdmVyL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIGZpeCB0aGUgZmVhdHVyZXMgcmVxdWlyZWQgYnkgdGhlIFRyYXBSZWNlaXZlciBtb2R1bGUKKworMjAxMS0wNS0wNCAxNjoyMCAgaGFyZGFrZXIKKworICAgKiBNYWtlZmlsZS5pbjoKKworICAgQWRkIHRoZSBUcmFwUmVjZWl2ZXIgdG8gdGhlIGxpc3Qgb2YgcGVybCBtb2R1bGVzCisKKzIwMTEtMDUtMDQgMTQ6NDIgIGhhcmRha2VyCisKKyAgICogcGVybC9TTk1QL1NOTVAueHM6CisKKyAgIHVzZSB0aGUgbmV3ZXIgTmV0LVNOTVAgQVBJcywgcmF0aGVyIHRoYW4gdGhlIG9sZGVyIFVDRCBvbmVzCisKKzIwMTEtMDUtMDQgMTQ6NDEgIGhhcmRha2VyCisKKyAgICogcGVybC9TTk1QL1NOTVAueHM6CisKKyAgIHJlbW92ZSBTRVQgY29kZSB3aGVuIHVuZGVyIC0tcmVhZC1vbmx5IG1vZGUKKworMjAxMS0wNS0wNCAxNDo0MSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmM6CisKKyAgIHJlcXVpcmUgY2hlY2tfdmJfdWludAorCisyMDExLTA1LTA0IDE0OjQxICBoYXJkYWtlcgorCisgICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfc3ViYWdlbnQuYywKKyAgICAgICAgIGFnZW50L3NubXBfYWdlbnQuYywgbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYywgICAKKyAgICAgIHB5dGhvbi9uZXRzbm1wL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzoKKworICAgbGFzdCBvZiB0aGUgcGVybC11c2VkIGZlYXR1cmUgZnVuY3Rpb25zCisKKzIwMTEtMDUtMDQgMTQ6NDAgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VudC5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMsICAgCisgICAgICBsb2NhbC9taWIyYy1jb25mLmQvc3ViYWdlbnQubTJjLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL3BhcnNlLmM6CisKKyAgIHN0YXJ0ZWQgdGhlIGZpbmFsIHNldCBvZiBmdW5jdGlvbiByZW1vdmFscyBmb3IgZmVhdHVyZXMgcmVxdWlyZWQKKyAgIGJ5IHBlcmwvcHl0aG9uCisKKzIwMTEtMDUtMDQgMTQ6MzkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtc291cmNlLWluY2x1ZGVzLm0yaToKKworICAgYWRkZWQgdGhlIG5ldC1zbm1wLWZlYXR1cmVzLmggaGVhZGVyCisKKzIwMTEtMDUtMDQgMTQ6MzkgIGhhcmRha2VyCisKKyAgICogIHBlcmwvT0lEL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAgIAorICAgICAgcGVybC9TTk1QL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAgIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgsICAgCisgICAgICBwZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oOgorCisgICBBZGRlZCBwZXJsIGZlYXR1cmUgcmVxdWlyZW1lbnRzCisKKzIwMTEtMDUtMDQgMTQ6MzkgIGhhcmRha2VyCisKKyAgICogIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5ydWxlcywgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24sICAgCisgICAgICBwZXJsL0FTTi9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgICAKKyAgICAgIHBlcmwvT0lEL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAgIAorICAgICAgcGVybC9TTk1QL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oLCAgIAorICAgICAgcGVybC9hZ2VudC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCwgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaDoKKworICAgaG9wZWZ1bGx5IHdvcmtpbmcgcnVsZXMgdG8gYXBwbHkgZmVhdHVyZSByZXF1aXJlbWVudHMgdG8gcGVybCBhbmQKKyAgIHB5dGhvbgorCisyMDExLTA1LTA0IDE0OjM4ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBtb3JlIGNoYW5nZXMgdG8gcmVtb3ZlIHVubmVlZGVkIGZ1bmN0aW9ucyBwcmltYXJpbHkgd2hlbiB3cml0ZQorICAgbW9kZSBpcyB0dXJuZWQgb2ZmCisKKzIwMTEtMDUtMDQgMTQ6MzcgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzoKKworICAgY2hhbmdlIHRoZSB3YW50IGludm9jYXRpb24gdG8gb25seSBkZWZhdWx0IHRvIGV4Y2x1ZGUgZXh0ZXJuYWwKKyAgIGhvb2tzCisKKzIwMTEtMDUtMDQgMTQ6MzcgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9maW5kLXVudXNlZC1jb2RlOgorCisgICBzZWFyY2ggdGhyb3VnaCAueHMgZmlsZXMgZm9yIGZ1bmN0aW9uIGludm9jYXRpb25zCisKKzIwMTEtMDUtMDQgMTQ6MzcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvYXV0b19ubGlzdC5jOgorCisgICBmb3Jnb3QgYSBzZW1pY29sb24KKworMjAxMS0wNS0wNCAxNDozNyAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmM6CisKKyAgIGlxdWVyeSBwZHUgc2Vzc2lvbnMgYXJlIG9ubHkgbmVlZGVkIGluIHdyaXRlIG1vZGUuCisKKzIwMTEtMDUtMDQgMTQ6MzYgIGhhcmRha2VyCisKKyAgICogYXBwcy9NYWtlZmlsZS5pbjoKKworICAgZml4IGZlYXR1cmUgZGV0ZWN0aW9uIG9mIHNvbWV0aW1lcy1idWlsdCBhcHBsaWNhdGlvbnMKKworMjAxMS0wNS0wNCAxNDozNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9hdXRvX25saXN0LmM6CisKKyAgIHVzZSB0aGUgZmVhdHVyZV91bnVzZWQgbWFjcm8gZm9yIG1ha2luZyBhbiBlbXB0eSBmaWxlIGZvcgorICAgY29uc2lzdGVuY3kKKworMjAxMS0wNS0wNCAxNDozNiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYywgYXBwcy9zbm1wdGxzLmMsICAgCisgICAgICBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL3NubXBfb3BlbnNzbC5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6CisKKyAgIEFub3RoZXIgc3dlZXAgZm9yIHVudXNlZCBmdW5jdGlvbnMgd2hlbiByZWFkX29ubHkgbW9kZSBpcyB0dXJuZWQKKyAgIG9uCisKKzIwMTEtMDUtMDQgMTQ6MzQgIGhhcmRha2VyCisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYywgCisgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuYywKKyAgICAgICAgIHNubXBsaWIvY2hlY2tfdmFyYmluZC5jOgorCisgICBtYXJrIGEgc2xldyBvZiBmdW5jdGlvbnMgYXMgZmVhdHVyZXMgdGhhdCBhcmUgb25seSBuZWVkZWQgd2l0aAorICAgd3JpdGVfc3VwcG9ydAorCisyMDExLTA1LTA0IDE0OjMyICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZToKKworICAgcnVuIGdyZXAgd2l0aCAtbgorCisyMDExLTA1LTA0IDE0OjMyICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYywgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6CisKKyAgIGZlYXR1cml6ZSBuZXRzbm1wX3NvY2thZGRyX3NpemUKKworMjAxMS0wNS0wNCAxNDozMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6CisKKyAgIHJlbW92ZSBhIGZlYXR1cmVfcmVxdWlyZSBub3QgYWN0dWFsbHkgbmVlZGVkLgorCisyMDExLTA1LTA0IDE0OjMxICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmMsIHNubXBsaWIvY29udGFpbmVyLmM6CisKKyAgIG1hcmsgU1VCQ09OVEFJTkVSX0ZJTkQgYXMgYSBmZWF0dXJlCisKKzIwMTEtMDUtMDQgMTQ6MzEgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jLCBzbm1wbGliL3NubXB0c20uYzoKKworICAgdGhlIHJvdyBjcmVhdGlvbiBBUEkgaXMgb25seSB1c2VkIGluIHRoZSBUU00gaW1wbGVtZW50YXRpb24KKworMjAxMS0wNS0wNCAxNDozMSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcHRzbS5jOgorCisgICB0aGUgbmV3ZXIgY29udGV4dCBlbmdpbmVJRCBwcm9iaW5nIGlzIG9ubHkgbmVlZGVkIGlmZiBUU00gaXMgaW4KKyAgIHVzZQorCisyMDExLTA1LTA0IDE0OjMwICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvZGlyX3V0aWxzLmM6CisKKyAgIGZpeCBhbiBpZmRlZiB0eXBvCisKKzIwMTEtMDUtMDQgMTQ6MzAgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzoKKworICAgbW92ZWQgZmV0YXVyZSBjaGlsZF9vZiBzdGF0ZW1lbnRzIHRvIHRoZSB0b3Agb2YgdGhlIGZpbGUKKworMjAxMS0wNS0wNCAxNDozMCAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9jb250YWluZXIuYywgc25tcGxpYi9kaXJfdXRpbHMuYywgICAKKyAgICAgIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CisKKyAgIG1hcmtlZCBhIGNvdXBsZSBvZiByYXJlbHkgdXNlZCBjb250YWluZXIgZnVuY3Rpb25zLgorCisyMDExLTA1LTA0IDE0OjI5ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmM6CisKKyAgIHNwbGl0IG91dCB0aGUgcHJlZml4X2luZm8gZmVhdHVyZSBpbnRvIHN1Yi1mZWF0dXJlcworCisyMDExLTA1LTA0IDE0OjI5ICBoYXJkYWtlcgorCisgICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jOgorCisgICBtYXJrIHRoZSBhY2Nlc3NvciBmdW5jdGlvbnMgYXMgdW5uZWVkZWQKKworMjAxMS0wNS0wNCAxNDoyOSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jOgorCisgICBmaXggYSBjaGlsZF9vZiBzdGF0ZW1lbnQgd2l0aCBhIGNvcHkvcGFzdGUgZXJyb3IKKworMjAxMS0wNS0wNCAxNDoyOCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6CisKKyAgIHRoZSBjb250YWluZXIgcm93LXJlbW92ZSBpcyBvbmx5IG5lZWRlZCBpZiB0aGUgdGRhdGEgcmVtb3ZlX3JvdworICAgaXMgbmVlZGVkCisKKzIwMTEtMDUtMDQgMTQ6MjggIGhhcmRha2VyCisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jLCAKKyAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1QYXJhbXNUYWJsZS9zbm1wVGxzdG1QYXJhbXNUYWJsZS5jOgorCisgICBmZWF0dXJlIG1hcmtpbmcgb2YgdW51c2VkIHRkYXRhIGZ1bmN0aW9ucworICAgdGFibGVfdGRhdGFfZGVsZXRlX3RhYmxlCisgICB0YWJsZV90ZGF0YV9leHRyYWN0X3RhYmxlCisgICB0YWJsZV90ZGF0YV9yZW1vdmVfcm93CisKKzIwMTEtMDUtMDQgMTQ6MjcgIGhhcmRha2VyCisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5jOgorCisgICByZW1vdmFsIG9mIHNvbWUgcmFyZWx5IHVzZWQgZnVuY3Rpb25zCisgICB0YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93CisgICB0YWJsZV9kYXRhc2V0X3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlCisKKzIwMTEtMDUtMDQgMTQ6MjcgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIEFkZGVkIGEgZGVmaW5pdGlvbiB0byBpbmNvcnBvcmF0ZSByZWFkX29ubHkvbm90aWZ5X29ubHkKKworMjAxMS0wNS0wNCAxNDoyNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYzoKKworICAgYWRkZWQgYSBtaXNzaW5nIGZlYXR1cmUgZGVmaW5pdGlvbiBsaW5lCisKKzIwMTEtMDUtMDQgMTQ6MjYgIGhhcmRha2VyCisKKyAgICogYWdlbnQvTWFrZWZpbGUuaW46CisKKyAgIGFkZGVkIGJhY2sgaW4gbWlzc2luZyBtaWJncm91cCBmZWF0dXJlIGRlZmluaXRpb24gbGlzdAorCisyMDExLTA1LTA0IDE0OjI2ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBJbmNsdWRlIHRoZSBvcmlnaW5hbCBiYXNlIGZsYWdzIHRvIGVuc3VyZSAtLXdpdGgtZGVmYXVsdHMgZ2V0cworICAgcGlja2VkIHVwCisKKzIwMTEtMDUtMDQgMTQ6MjYgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGZpeCB1c2FnZQorCisyMDExLTA1LTA0IDE0OjI2ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBBZGRlZCBhIC1iIGZsYWcgZm9yIGJhc2UgYXJndW1lbnRzIHRvIHN0YXJ0IGZyb20KKworMjAxMS0wNS0wNCAxNDoyNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgZGVmYXVsdCB0byBhIGxpbmVhciBzZWFjaCBvZiBzaXplIHRlc3RzLCByYXRoZXIgdGhhbiBleHBvbmVudGlhbAorCisyMDExLTA1LTAzIDE4OjU1ICBidmFzc2NoZQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEd1YXJkIG5ldHNubXBfdWRwX3JlY3Zmcm9tKCkgZXRjLiBkZWNsYXJhdGlvbnMKKyAgIGNvbnNpc3RlbnRseS4KKyAgIENIQU5HRVM6IFdpbjMyOiBCdWlsZHMgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTAuCisKKzIwMTEtMDUtMDMgMTU6MjkgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0CisgICBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcyByZXBvcnRlZCBieSBTeWx2YWluIERlcnkpLgorCisyMDExLTA1LTAyIDExOjIyICBidmFzc2NoZQorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYW4gbm93CisgICBiZSB1c2VkIGluIHRoZSBNaW5HVyBlbnZpcm9ubWVudC4KKworMjAxMS0wNC0yOSAxMToxNyAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzoKKworICAgU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UgY29kZSBjb21tZW50cyBpbgorICAgc25tcGxpYi93aW5zZXJ2aWNlLmMuCisKKzIwMTEtMDQtMjkgMDA6MjMgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgYWRkZWQgbm90ZSBhYm91dCB0aGUgbmV3IHRpbWluZyBmdW5jdGlvbgorCisyMDExLTA0LTI5IDAwOjE0ICBoYXJkYWtlcgorCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgorCisgICBVcGRhdGUgdGhlIG1hbnVhbCBwYWdlIHRvIHJlZmxlY3QgdGhlIG5ldyB0aW1pbmcgb3B0aW9ucworCisyMDExLTA0LTI5IDAwOjE0ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvdG9vbHMuYzoKKworICAgYmV0dGVyIGRvY3VtZW50YXRpb24KKworMjAxMS0wNC0yOSAwMDoxNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuYzoKKworICAgdXNlIHRoZSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoKSBmb3IgcGFyc2luZworICAgZnJlcXVlbmNpZXMvdGltZQorCisyMDExLTA0LTI5IDAwOjEzICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMnBkdV9idWlsZF9jbGliLmM6CisKKyAgIGZpeCBwZHUgYnVpbGRpbmcgdGVzdHMgdW5kZXIgdmFyaW91cyBkaXNhYmxlZCBtb2RlcworCisyMDExLTA0LTI5IDAwOjEzICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMnBkdV9idWlsZF9jbGliLmM6CisKKyAgIGRvbid0IHRyeSB0byBidWlsZCB0aGUgR0VUIHBkdSB1bmRlciBub3RpZnlfb25seQorCisyMDExLTA0LTI5IDAwOjEyICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oLCBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIGZpeCBhIGJ1ZyB3aXRoIG5vLXN1ZmZpeCBzdHJpbmdzIGFuZCB1c2UgYSBjb25zdCBpbnB1dCBzdHJpbmcKKworMjAxMS0wNC0yOSAwMDoxMiAgaGFyZGFrZXIKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3NfY2xpYi5jOgorCisgICBBIG5ldyB1bml0IHRlc3QgZm9yIHRoZSB0aW1lIGNvbnZlcnNpb24gcm91dGluZQorCisyMDExLTA0LTI5IDAwOjEyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIHVzZSB0aGUgbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKCkgZnVuY3Rpb24gZm9yIGNvbXB1dGluZworICAgaW50ZXJ2YWwgcGVyaW9kcworCisyMDExLTA0LTI5IDAwOjExICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oLCBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIEFkZGVkIGEgbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKCkgZnVuY3Rpb25zIHRvIGNvbnZlcnQsIGUuZy4sCisgICAxaCB0byAzNjAwCisKKzIwMTEtMDQtMjkgMDA6MTEgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICByZW1vdmUgY29kZSB0byBidWlsZC9wYXJzZSBHRVQvZXRjIHJlcXVlc3RzIHdoZW4gTk9USUZZX09OTFkgaXMKKyAgIHR1cm5lZCBvbi4KKworMjAxMS0wNC0yNyAyMTozMyAgaGFyZGFrZXIKKworICAgKiBORVdTOgorCisgICB1cGRhdGUgdGhlIE5FV1MgdG8gcmVmbGVjdCB0aGUgbmV3IC0tZW5hYmxlLXJlYWQtb25seSBhbmQKKyAgIC0tZW5hYmxlLW5vdGlmeS1vbmx5CisKKzIwMTEtMDQtMjcgMjE6MzMgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIG1pbm9yIGltcHJvdmVtZW50cyBmb3Igcm9ubHkgdnMgcndyaXRlIGhhbmRsaW5nCisKKzIwMTEtMDQtMjcgMjE6MzIgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgc3RpbGwgZW5hYmxlIFJPTkxZIHdoZW4gUldSSVRFIGlzbid0IHBvc3NpYmxlCisKKzIwMTEtMDQtMjcgMjE6MzIgIGhhcmRha2VyCisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIGZpeCBHRVQgc3VwcG9ydCB3aGVuIG5vX3dyaXRlIGlzIGVuYWJsZWQKKworMjAxMS0wNC0yNyAyMTozMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBtYXJrIGEgZnV0dXJlIG1vZGlmaWNhdGlvbiBuZWVkIGluIGEgY29tbWVudAorCisyMDExLTA0LTI3IDIxOjMxICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jOgorCisgICBmaXggaGFuZGxpbmcgb2Ygbm9fd3JpdGUgc3VwcG9ydAorCisyMDExLTA0LTI3IDIxOjMxICBoYXJkYWtlcgorCisgICAqIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L3NubXBfYWdlbnQuYywgYWdlbnQvc25tcGQuYzoKKworICAgZG9uJ3Qgb3BlbiBhbnkgbGlzdGVuaW5nIHRyYW5zcG9ydHMgd2hlbiBub3RpZnktb25seSBpcyBzcGVjaWZpZWQKKworMjAxMS0wNC0yNyAyMTozMSAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgorCisgICBzZXQgdGhlIG5vLWxpc3RlbiBhbmQgcmVhZC1vbmx5IGZsYWdzIHdoZW4gLS1lbmFibGUtbm90aWZ5LW9ubHkKKyAgIGlzIHNldAorCisyMDExLTA0LTI3IDIxOjMwICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIHJhbiBhdXRvaGVhZGVyCisKKzIwMTEtMDQtMjcgMjE6MzAgIGhhcmRha2VyCisKKyAgICogIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUElQdjZEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jOgorCisgICBpbXBsZW1lbnQgdGhlIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgaW4gdGhlc2UgdHJhbnNwb3J0cworCisyMDExLTA0LTI3IDIxOjMwICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZToKKworICAgcnVuIGF1dG9jb25mCisKKzIwMTEtMDQtMjcgMjE6MjkgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIG1vdmUgdGhlIHJlYWQtb25seSBmbGFnIGRlZmluaXRpb24gYmVsb3cgdGhlIG5vdGlmeS1vbmx5LCBzaW5jZQorICAgbm90aWZ5LW9ubHkgbmVlZHMgdG8gaW1wbHkgcmVhZC1vbmx5CisKKzIwMTEtMDQtMjcgMjE6MjkgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgRGVmaW5lZCBhIG5ldyAtLWVuYWJsZS1ub3RpZnktb25seSBmbGFnIGZvciBidWlsZGluZyBhIHRvb2xzZXQKKyAgIHRoYXQgb25seSBhbGxvd3MgZm9yIG5vdGlmaWNhdGlvbnMgd2l0aCBubyByZWFkL3dyaXRlIHN1cHBvcnQKKworMjAxMS0wNC0yNyAyMToyOSAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgorCisgICBEZWZpbmVkIGEgbmV3IC0tbm8tbGlzdGVuIGZsYWcgdG8gcmVtb3ZlIGxpc3RlbmluZyBzdXBwb3J0CisKKzIwMTEtMDQtMjcgMjE6MjggIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVmYXVsdF9tb2R1bGVzLmg6CisKKyAgIHRoZSBkaXNtYW4gc2NoZWR1bGUgbWliIGlzIG9ubHkgdXNlZnVsIHdoZW4gU0VUcyBhcmUgdHVybmVkIG9uCisKKzIwMTEtMDQtMjcgMjE6MjggIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuLmg6CisKKyAgIHRoZSBkaXNtYW4gc2NoZWR1bGUgbWliIGlzIG9ubHkgdXNlZnVsIHdoZW4gU0VUcyBhcmUgdHVybmVkIG9uCisKKzIwMTEtMDQtMjcgMjE6MjggIGhhcmRha2VyCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsIAorICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgZmluaXNoZWQgbm9fd3JpdGUgc3VwcG9ydCBmb3IgY29tbW9uIGluY2x1ZGVkIHRhYmxlcworCisyMDExLTA0LTI3IDIxOjI3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgorCisgICBBZGQgYmFjayBpbiAnbmV0c25tcF9zZXRfcm93X2NvbHVtbicgd2hlbiBub193cml0ZSBzdXBwb3J0IGlzCisgICBlbmFibGVkCisgICBUaGlzIGZ1bmN0aW9uIGlzIGEgZ2VuZXJpYyBkYXRhIG1hbmlwdWxhdGlvbiBmdW5jdGlvbiwgbm90IFNFVAorICAgc3BlY2lmaWMKKworMjAxMS0wNC0yNyAyMToyNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzoKKworICAgZG9uJ3QgdXNlIG1hcmtfcm93X2NvbHVtbl93cml0YWJsZSB3aGVuIHJlYWQtb25seSBzdXBwb3J0IGlzCisgICBlbmFibGVkCisKKzIwMTEtMDQtMjcgMjE6MjYgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYzoKKworICAgZml4IG5vX3dyaXRlIHN1cHBvcnQKKworMjAxMS0wNC0yNyAyMToyNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKKworICAgZml4IG5vX3dyaXRlIHN1cHBvcnQKKworMjAxMS0wNC0yNyAyMToxNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIERvbid0IGZyZWUgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duCisgICBpdAorCisyMDExLTA0LTI2IDE4OjE2ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL2dpdHRvb2xzLCBsb2NhbC9naXR0b29scy9zaGVsbC1mdW5jdGlvbnM6CisKKyAgIGdpdCBiYXNoLXNoZWxsIGZ1bmN0aW9ucyB0byBlbmFibGUgYnJhbmNoIHN3aXRjaGluZyBhbmQgZXh0ZXJuYWwKKyAgIGJ1aWxkaW5nCisgICBUaGVzZSBsb2NhbCBzaGVsbCBmdW5jdGlvbnMgKHNubXBjb25maWd1cmUgYW5kIHNubXBtYWtlKSBsZXQgeW91CisgICBjb25maWd1cmUgYW5kIGJ1aWxkIHRoZSBOZXQtU05NUCBzb3VyY2UgY29kZSBpbiBleHRlcm5hbAorICAgZGlyZWN0b3JpZXMKKyAgIHRoYXQgYXJlIGF1dG8tY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgZXhpc3RpbmcgYnJhbmNoIG5hbWUgKHdpdGgKKyAgIGFuCisgICBvcHRpb25hbCBzdWZmaXgpLiBUaGlzIGxldHMgeW91IHJ1biAnc25tcG1ha2UnIGZyb20gd2l0aGluIHRoZQorICAgc291cmNlCisgICBkaXJlY3RvcnkgYW5kIGhhdmUgaXQgYWN0dWFsbHkgZXh0ZXJuYWxseSBrZWVwIHRyYWNrIG9mIG1vZGlmaWVkCisgICBmaWxlcywgZXRjLCBzbyBidWlsZGluZyBpbiBtdWx0aXBsZSBicmFuY2hlcyBjYW4gYmUgZG9uZSBmcm9tIGEKKyAgIHNpbmdsZQorICAgZ2l0IGNoZWNrb3V0LgorCisyMDExLTA0LTI1IDIwOjU3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGNsZWFuIHVwIHRoZSBpdGVyYXRvcnMKKworMjAxMS0wNC0yNSAyMDo1NyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBmcmVlIHZhcmJpbmRzIGFmdGVyIHNlbmRpbmcKKworMjAxMS0wNC0yNSAxODo0OCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzoKKworICAgQ29tbWVudGVkIG91dCBhbiB1bnVzZWQgZnVuY3Rpb24gYmVjYXVzZSB0aGUgY29tcGlsZXIgY29tcGxhaW5lZAorICAgYWJvdXQgaXQuCisKKzIwMTEtMDQtMjUgMTg6NDYgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6CisKKyAgIEZpeGVkIHR3byBjb21waWxlciB3YXJuaW5ncy4KKworMjAxMS0wNC0yMyAxNDozMSAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYzoKKworICAgUmVtb3ZlIHVubmVjZXNzYXJ5IG51bGwgY2hlY2sKKworMjAxMS0wNC0yMyAxNDowNSAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jOgorCisgICBNb3ZlIHBvaW50ZXIgZGVyZWZlcmVuY2UgdG8gYWZ0ZXIgdGhlIGNoZWNrIGZvciBzdWNjZXNzZnVsCisgICBhbGxvY2F0aW9uIG9mIHRoZSBwb2ludGVyCisKKzIwMTEtMDQtMjMgMDg6MjAgIG1hZ2ZyCisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKKworICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlCisKKzIwMTEtMDQtMjMgMDg6MTYgIG1hZ2ZyCisKKyAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKKworICAgUmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZQorCisyMDExLTA0LTIzIDA4OjA2ICBtYWdmcgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CisKKyAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZQorCisyMDExLTA0LTIzIDA3OjU1ICBtYWdmcgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CisKKyAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZQorCisyMDExLTA0LTIyIDE5OjM1ICBtYWdmcgorCisgICAqIGFnZW50L2FnZW50X3RyYXAuYzoKKworICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlCisKKzIwMTEtMDQtMjIgMTk6MzAgIG1hZ2ZyCisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgorCisgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCisKKzIwMTEtMDQtMjIgMTc6MjkgIGhhcmRha2VyCisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CisKKyAgIG1lbnRpb24gd2hpY2ggbW9kdWxlIGlzIHJlcXVpcmVkIHdoZW4gYnVpbGRpbmcgdG8gZ2V0IHRoZSBkZWxpdmVyCisgICBzdXBwb3J0CisKKzIwMTEtMDQtMjIgMTY6MzMgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgZGVsZXRlZCBhbiB1bm5lZWRlZCBkZWJ1Z2dpbmcgc3RhdGVtZW50CisKKzIwMTEtMDQtMjIgMTY6MzMgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgcHJvcGVybHkgdXBkYXRlIHRoZSBtYXggY291bnQgaW4gdGhlIG91dGdvaW5nIG5vdGlmaWNhdGlvbnMKKworMjAxMS0wNC0yMiAxNjozMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBiZXR0ZXIgcGFja2V0IGVzdGltYXRpb24gdG8gZW5zdXJlIHdlIGRvbid0IG92ZXJydW4uCisKKzIwMTEtMDQtMjIgMTY6MzIgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgZXN0aW1hdGUgdGhlIHBhY2tldCBzaXplIGFuZCBicmVhayB0aGUgbm90aWZpY2F0aW9uIHVwIGJhc2VkIG9uCisgICBpdAorCisyMDExLTA0LTIyIDE2OjMxICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIHRyYW5zZm9ybSB0aGUgbm90aWZpY2F0aW9uIHNlbmRpbmcgaW50byBhIGxhcmdlciBsb29wIGZvciBsYXRlcgorICAgbXVsdGktbm90aWZzCisKKzIwMTEtMDQtMjIgMTY6MzEgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgZnVydGhlciBpbmZvcm1hdGlvbiBhYm91dCBmZWF0dXJlIG1hcmtpbmcvc2VsZWN0aW9uCisKKzIwMTEtMDQtMjIgMTY6MzEgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgbWVudGlvbiB0aGUgbmV3IGRlbGl2ZXJ5IGJ5IG5vdGlmaWNhdGlvbnMKKworMjAxMS0wNC0yMiAxNjozMSAgaGFyZGFrZXIKKworICAgKiBORVdTOgorCisgICBkb2N1bWVudCB0aGUgbWluaW1hbGlzdCBzdXBwb3J0CisKKzIwMTEtMDQtMjIgMTY6MzAgIGhhcmRha2VyCisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CisKKyAgIGRvY3VtZW50IHRoZSBuZXcgZGVsaXZlckJ5Tm90aWZ5IGNvbmZpZyB0b2tlbnMKKworMjAxMS0wNC0yMiAxNjozMCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBhbGxvdyBydW4gdGltZSBtb2RpZmljYXRpb25zIG9mIHRoZSBPSURzIHRvIHVzZQorCisyMDExLTA0LTIyIDE2OjMwICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgYWRkIGNvbmZpZyBmbGFncyB0byBub3QgaW5jbHVkZSB0aGUgcGVyaW9kIGNvbmZpZyBhbmQgbXNnIGNvdW50CisgICB2YWx1ZXMKKworMjAxMS0wNC0yMiAxNjoyOSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBpbmNsdWRlIHRoZSBwZXJpb2RpYyBjb3VudCwgdGhlIG1lc3NhZ2UgbnVtYmVyIGFuZCB0aGUgbWF4CisgICBtZXNzYWdlIG51bWJlcgorCisyMDExLTA0LTIyIDE2OjI5ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGRlbGV0ZWQgZGVidWdnaW5nIGNvbW1lbnQKKworMjAxMS0wNC0yMiAxNjoyOSAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgICAKKyAgICAgIG1pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQ6CisKKyAgIE1vdmUgdGhlIG5vdGlmaWNhdGlvbiBkZWZpbml0aW9uIHRvIHdpdGhpbiB0aGUgc3ViLW1pYgorCisyMDExLTA0LTIyIDE2OjI4ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGRlbGV0ZSBhbiB1bnVzZWQgdmFyaWFibGUKKworMjAxMS0wNC0yMiAxNjoyOCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oOgorCisgICBsb2FkIHRoZSBNSUIgaW50byB0aGUgZGVmYXVsdCBzZXQKKworMjAxMS0wNC0yMiAxNjoyOCAgaGFyZGFrZXIKKworICAgKiBtaWJzL05FVC1TTk1QLVBFUklPRElDLU5PVElGWS1NSUIudHh0OgorCisgICBBIG5ldyBtaWIgdG8gaG9sZCB0aGUgcGVyaW9kaWMgbm90aWZ5IG9iamVjdHMKKworMjAxMS0wNC0yMiAxNjoyOCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jOgorCisgICBmaWxsIG91dCB0aGUgY29uZmlnIGZyZWUgcm91dGluZQorCisyMDExLTA0LTIyIDE2OjI3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIHByb3Blcmx5IG1vbml0b3IgdGhlIHdob2xlIGNvbnRhaW5lcgorCisyMDExLTA0LTIyIDE2OjI3ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaDoKKworICAgcGFyc2UgdGhlIGNvbmYgZmlsZXMgYW5kIGNyZWF0ZSBhbmQgaW5zZXJ0IG9iamVjdHMgaW50byB0aGUKKyAgIGNvbnRhaW5lcgorCisyMDExLTA0LTIyIDE2OjI3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIGRlZmluZWQgYSBjb250YWluZXIgdG8gc3RvcmUgYSBsaXN0IG9mIGRlbGl2ZXIgb2JqZWN0cyBpbgorCisyMDExLTA0LTIyIDE2OjI3ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6CisKKyAgIGFkZGVkIGEgbmV4dF9ydW4gdGltZXN0YW1wCisKKzIwMTEtMDQtMjIgMTY6MjYgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgYWN0dWFsbHkgc2VuZCBhIG5vdGlmaWNhdGlvbiB3aXRoIHRoZSByZXN1bHRzCisKKzIwMTEtMDQtMjIgMTY6MjYgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgbWFrZSB0aGUgd2FsayBvbiB0aGUgdGVzdCBvYmplY3QgZnVuY3Rpb24uCisKKzIwMTEtMDQtMjIgMTY6MjYgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYzoKKworICAgY3JlYXRlIGEgbWF4IHBhY2tldCBzaXplIGNvbmZpZyB0b2tlbiBhbmQgcGFyc2UgaXQKKworMjAxMS0wNC0yMiAxNjoyNSAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6CisKKyAgIG1pbmltYWwgc3RhcnRpbmcgdGVzdCBvYmplY3QKKworMjAxMS0wNC0yMiAxNjoyNSAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6CisKKyAgIGFkZGVkIGEgZnVuY3Rpb24gdG8gY2FsY3VsYXRlIHRoZSB0aW1lIHVudGlsIHRoZSBuZXh0IHJ1bgorCisyMDExLTA0LTIyIDE2OjI1ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmM6CisKKyAgIHJlbW92ZSBsZWZ0IGluIHRlbXBsYXRlIGxpbmUKKworMjAxMS0wNC0yMiAxNjoyNSAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6CisKKyAgIHVzZSBhbiBhbGFybSBjYWxsYmFjayBwcm90b3R5cGUgZm9yIGV4ZWN1dGUKKworMjAxMS0wNC0yMiAxNjoyNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVsaXZlciwgYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5Lmg6CisKKyAgIGJlZ2lubmluZyB0ZW1wbGF0ZSBjb2RlIGZvciBkZWxpdmVyeSBvZiBkYXRhIGJ5IG5vdGlmaWNhdGlvbnMKKworMjAxMS0wNC0yMiAwOToxMyAgbWFnZnIKKworICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CisKKyAgIFJlZHVjZSB2YXJpYWJsZSBzY29wZQorCisyMDExLTA0LTIyIDA5OjA3ICBtYWdmcgorCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgUmVkdWNlIHZhcmlhYmxlIHNjb3BlcworCisyMDExLTA0LTIyIDA5OjAzICBtYWdmcgorCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZQorCisyMDExLTA0LTE5IDA4OjM4ICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYnNubXAvbGlic25tcC52Y3Byb2osIHdpbjMyL3dpbjMyLnNsbjoKKworICAgQWRkZWQgVmlzdWFsIFN0dWRpbyAyMDA1IHByb2plY3QgYW5kIHNvbHV0aW9uIGZpbGUgZm9yIGJ1aWxkaW5nCisgICB0aGUgTmV0LVNOTVAgbGlicmFyeSBhcyBhIHN0YXRpYyBsaWJyYXJ5LiBCb3RoIHRoZSBXaW4zMiBhbmQgdGhlCisgICB4NjQgY29uZmlndXJhdGlvbnMgYXJlIGluY2x1ZGVkLgorCisyMDExLTA0LTE5IDA3OjU3ICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYnNubXA6CisKKyAgIFVwZGF0ZWQgU3VidmVyc2lvbiBpZ25vcmUgbGlzdC4KKworMjAxMS0wNC0xOSAwNzozOSAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9saWJuZXRzbm1wdHJhcGQudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwudmNwcm9qLCAgIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay52Y3Byb2osIHdpbjMyL3NubXBkL3NubXBkLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXQvc25tcGdldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wc2V0L3NubXBzZXQudmNwcm9qLCB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHRhYmxlL3NubXB0YWJsZS52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAudmNwcm9qLCB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB3YWxrL3NubXB3YWxrLnZjcHJvajoKKworICAgTW9yZSBWaXN1YWwgU3R1ZGlvIDIwMDUgcHJvamVjdCBmaWxlIGNsZWFudXAuCisKKzIwMTEtMDQtMTkgMDY6NTcgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvYmluOgorCisgICBVcGRhdGVkIFN1YnZlcnNpb24gaWdub3JlIGxpc3QuCisKKzIwMTEtMDQtMTggMTU6MzQgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qOgorCisgICBDbGVhbmVkIHVwIFdpbjMyIFZTMjAwNSBwcm9qZWN0IGZpbGVzIC0gcmVtb3ZlZCBzdXBlcmZsdW91cworICAgbGlicmFyeSByZWZlcmVuY2VzLgorCisyMDExLTA0LTE4IDE1OjI1ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkL2xpYm5ldHNubXB0cmFwZC52Y3Byb2osICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC52Y3Byb2osICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLnZjcHJvaiwgd2luMzIvc25tcGQvc25tcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS52Y3Byb2osIHdpbjMyL3NubXBkZi9zbm1wZGYudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGdldC9zbm1wZ2V0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBzZXQvc25tcHNldC52Y3Byb2osIHdpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy52Y3Byb2osIAorICAgICAgICB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLnZjcHJvaiwKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC52Y3Byb2osIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLnZjcHJvaiwgd2luMzIvc25tcHZhY20vc25tcHZhY20udmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsudmNwcm9qLCB3aW4zMi93aW4zMmRsbC5zbG46CisKKyAgIEFkZGVkIHg2NCBjb25maWd1cmF0aW9ucy4KKworMjAxMS0wNC0xOCAxNToxNCAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9saWI6CisKKyAgIEFub3RoZXIgV2luMzItcmVsYXRlZCBTdWJ2ZXJzaW9uIGlnbm9yZSBsaXN0IHVwZGF0ZS4KKworMjAxMS0wNC0xOCAxNToxMyAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9saWJuZXRzbm1wdHJhcGQudmNwcm9qLCAgIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwudmNwcm9qLCAgIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay52Y3Byb2osIHdpbjMyL3NubXBkL3NubXBkLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXBkZWx0YS9zbm1wZGVsdGEudmNwcm9qLCB3aW4zMi9zbm1wZGYvc25tcGRmLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXBnZXQvc25tcGdldC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wc2V0L3NubXBzZXQudmNwcm9qLCB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMudmNwcm9qLCAKKyAgICAgICAgd2luMzIvc25tcHRhYmxlL3NubXB0YWJsZS52Y3Byb2osCisgICAgICB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC52Y3Byb2osICAgCisgICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUudmNwcm9qLCAgIAorICAgICAgd2luMzIvc25tcHRyYXAvc25tcHRyYXAudmNwcm9qLCB3aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLnZjcHJvaiwgCisgICAgICAgIHdpbjMyL3NubXB1c20vc25tcHVzbS52Y3Byb2osIHdpbjMyL3NubXB2YWNtL3NubXB2YWNtLnZjcHJvaiwgICAKKyAgICAgIHdpbjMyL3NubXB3YWxrL3NubXB3YWxrLnZjcHJvaiwgd2luMzIvd2luMzJkbGwuc2xuOgorCisgICBBZGRlZCB3aW4zMmRsbC1yZWxhdGVkIFZpc3VhbCBTdHVkaW8gMjAwNSBwcm9qZWN0IGFuZCBzb2x1dGlvbgorICAgZmlsZXMuCisKKzIwMTEtMDQtMTggMTM6MzcgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyLCB3aW4zMi9lbmNvZGVfa2V5Y2hhbmdlLCB3aW4zMi9saWIsIHdpbjMyL2xpYmFnZW50LCAgIAorICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkLCB3aW4zMi9saWJzbm1wLCB3aW4zMi9saWJzbm1wX2RsbCwgICAKKyAgICAgIHdpbjMyL2xpYnVjZG1pYnMsIHdpbjMyL25ldC1zbm1wLCB3aW4zMi9uZXRzbm1wbWlicywgICAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0LCB3aW4zMi9zbm1wYnVsa3dhbGssIHdpbjMyL3NubXBkLCAgIAorICAgICAgd2luMzIvc25tcGRlbHRhLCB3aW4zMi9zbm1wZGYsIHdpbjMyL3NubXBnZXQsIHdpbjMyL3NubXBnZXRuZXh0LCAgCisgICAgICAgd2luMzIvc25tcG5ldHN0YXQsIHdpbjMyL3NubXBzZXQsIHdpbjMyL3NubXBzdGF0dXMsICAgCisgICAgICB3aW4zMi9zbm1wdGFibGUsIHdpbjMyL3NubXB0ZXN0LCB3aW4zMi9zbm1wdHJhbnNsYXRlLCAgIAorICAgICAgd2luMzIvc25tcHRyYXAsIHdpbjMyL3NubXB0cmFwZCwgd2luMzIvc25tcHVzbSwgd2luMzIvc25tcHZhY20sICAgCisgICAgICB3aW4zMi9zbm1wd2FsazoKKworICAgQWRkZWQgKi52Y3Byb2ouKi51c2VyIGFuZCB4NjQgdG8gdGhlIHdpbjMyIFN1YnZlcnNpb24gaWdub3JlCisgICBsaXN0cy4gUmFuIHRoZXNlIHRocm91Z2ggTENfQUxMPUMgc29ydCAtZnUgdG9vLgorCisyMDExLTA0LTE4IDEyOjEwICBidmFzc2NoZQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg6CisKKyAgIFdpbjMyIERMTCBidWlsZCBmaXhlcy4KKworMjAxMS0wNC0xNyAyMDo1NiAgZHRzMTIKKworICAgKiAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzE3NTY0MDogVXNlIElQX1JFQ1ZEU1RBRERSIHNvY2tvcHQKKyAgIHdoZXJlIGF2YWlsYWJsZSAoKkJTRCkKKworMjAxMS0wNC0xNSAxMzo0MiAgZHRzMTIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lECisgICBwcmVmaXggbGVuZ3RoCisgICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRAorICAgcHJlZml4IGxlbmd0aAorCisyMDExLTA0LTE1IDEzOjE3ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYywgYXBwcy9zbm1wdHJhcGRfZHMuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaCwgbWFuL3NubXBkLmNvbmYuNS5kZWY6CisKKyAgIENIQU5HRVM6IExpbnV4OiBQQVRDSEVTOiAzMjA1ODExOiBPcHRpb24gdG8gc2tpcCBmZC9sb29wL3JhbQorICAgZGV2aWNlcyBpbiBkaXNrSU9UYWJsZQorCisyMDExLTA0LTE0IDIxOjMxICBkdHMxMgorCisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6CisKKyAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCisKKzIwMTEtMDQtMTQgMjE6MTAgIGR0czEyCisKKyAgICogbG9jYWwvbWliMmM6CisKKyAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknCisgICBibG9ja3MKKworMjAxMS0wNC0xNCAyMDo1MiAgZHRzMTIKKworICAgKiBsb2NhbC9taWIyYzoKKworICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUKKyAgIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKKworMjAxMS0wNC0xNCAyMDo0NCAgZHRzMTIKKworICAgKiBsb2NhbC9taWIyYzoKKworICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQgZW51bWVyYXRpb25zIGluCisgICBub3RpZmljYXRpb24gdmFyYmluZHMKKworMjAxMS0wNC0xMiAyMDowMSAgbmJhCisKKyAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OgorCisgICBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIKKworMjAxMS0wNC0xMiAxOTo1MyAgbmJhCisKKyAgICogYXBwcy9zbm1wdGFibGUuYzoKKworICAgRml4IGZvciBnYXJiYWdlIG91dHB1dCB3aGVuIGFnZW50IHByZXNlbnRzIG1vcmUgY29sdW1ucyBpbiBidWxrCisgICByZXNwb25zZSB0aGFuIG91ciBsb2NhbCBNSUIgZmlsZSBzcGVjaWZpZWQuCisKKzIwMTEtMDQtMTIgMTk6NTAgIG5iYQorCisgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6CisKKyAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKKworMjAxMS0wNC0wOSAyMTo1OSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5jOgorCisgICBSZW1vdmUgYm9ndXMgKExpbnV4KSBkZWZpbmVzCisKKzIwMTEtMDQtMDkgMjE6NTYgIG5iYQorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOgorCisgICBIQVZFX1RNX1RNX0dNVE9GRiBpcyBIQVZFX1NUUlVDVF9UTV9UTV9HTVRPRkYKKworMjAxMS0wNC0wOSAyMDowOCAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCBjb25maWd1cmUsIAorICAgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBCaWxsIEZlbm5lcnMgcGF0Y2ggdG8gbWFrZSBESVNNQU4gUElORyBhbmQgVFJBQ0VST1VURSBNSUJTCisgICBjb21waWxlIHVuZGVyIExpbnV4CisKKzIwMTEtMDQtMDkgMjA6MDQgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5jOgorCisgICBTb2xhcmlzIHN1cHBvcnQgZm9yIFNDVFAtTUlCCisKKzIwMTEtMDQtMDkgMTk6NTAgIG5iYQorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOgorCisgICBUWiBpcyBvbmUgaG91ciBvZmYgaWYgSEFWRV9UTV9UTV9HTVRPRkYgYW5kIFNZU1YgKHN1Y2ggaXMgTGludXgpCisKKzIwMTEtMDQtMDEgMDE6MTEgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBkdGxzOiBvdmVyaGF1bCBvZiBkZWJ1ZworICAgCisgICAtIGRyYXN0aWMgcmVkdWN0aW9uIGluIG51bWJlciBvZiBtZXNzYWdlcyBhbmQgbXNnIGNvbXBsZXhpdHkKKyAgIGZvciBiYXNpYyBkdGxzdWRwIHRva2VuCisgICAtIHByZXZpb3VzIGxldmVsIG9mIGRldGFpbCBhdmFpbGFibGUgYnkgYWRkaW5nIDk6ZHRsc2R1cCB0b2tlbgorCisyMDExLTA0LTAxIDAwOjUzICByc3RvcnkKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogZHRsczogY2xlYW4gdXAgY2xvc2U7IGNhdGNoCisgICAnY29ubmVjdCcvJ2Rpc2Nvbm5lY3QnCisgICAKKyAgIGNvbm5lY3QgPSB3ZSBnZXQgc3VjY2Vzc2Z1bGx5IGRlY29kZWQgc25tcCBkYXRhCisgICBkaXNjb25uZWN0ID0gMCBieXRlIHJlYWQsIHNzaCBzaHV0ZG93biBmbGFnIHNldAorICAgYWRkIGJpb19jYWNoZSBmbGFncyBmb3IgY29ubmVjdGVkL2Rpc2Nvbm5lY3RlZAorICAgY2hlY2sgZm9yIG51bGwgcHRyIGJlZm9yZSBkZXJlZmVyZW5jaW5nCisgICBjbG9zZSBoYW5kbGluZzoKKyAgIC0gb25seSBzZW5kIHF1ZXVlZCBkYXRhIGlmIHdlIGdvdCB0byBjb25uZWN0ZWQgc3RhdGUKKyAgIC0gc2VyaW91c2x5IHJlZHVjZSB0aW1lb3V0IHRvIHdhaXQgZm9yIGp1bmsgcmVhZC4gaSB0aGluaworICAgd2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyCisgICAtIHJldHVybiBlYXJseSBpZiBjYWNoZXAgaXMgTlVMTCwgc28gd2UgZG9uJ3QgaGF2ZSB0byB0ZXN0IGl0CisgICByZXBlYXRlZGx5CisgICAtIHVzZSBjb3JyZWN0IG5mZHMgdmFsdWUgaW4gc2VsZWN0IGNhbGwKKworMjAxMS0wMy0zMSAwNToxNyAgcnN0b3J5CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6CisKKyAgIG1ha2UgdHJ1bmsgYW5kIHY1LTYtcGF0Y2hlcyBjbG9zZWx5IGFsaWduZWQKKyAgIAorICAgbW9zdGx5IGNoYW5nZXMgaW4gZGVidWcsIGNvb2tpZSB0cmFja2luZworCisyMDExLTAzLTI3IDExOjA4ICBtYWdmcgorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgorCisgICBTaW1wbGlmeSBhcnJheSByZXNpemluZyBzb21ld2hhdCBmdXJ0aGVyCisKKzIwMTEtMDMtMjcgMTA6MjEgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmM6CisKKyAgIERvIG5vdCBhc3NpZ24gbmV3X2RhdGEgaWYgdGhlIHZhbHVlIHdvbid0IGJlIHVzZWQuCisgICBSZWR1Y2UgdmFyaWFibGUgc2NvcGVzLgorCisyMDExLTAzLTI3IDEwOjE0ICBtYWdmcgorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgorCisgICBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNsZWFyIGEgY2h1bmsgb2YgbWVtb3J5IGlmIHRoZSBuZXh0IGFjdGlvbgorICAgb24gaXQgaXMgdG8KKyAgIGZpbGwgaXQgc28gdXNlIG1hbGxvYyBpbnN0ZWFkIG9mIGNhbGxvYy4KKworMjAxMS0wMy0yNyAxMDowOSAgbWFnZnIKKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzoKKworICAgQ29udGFpbmVyQmluYXJ5QXJyYXkgcmVhbGx5IGNhbid0IGhvbGQgYW55dGhuZyBidXQgcG9pbnRlcnMgYW5kCisgICB0aGF0IG1lYW5zIHRoZQorICAgZGF0YV9zaXplIGZpZWxkIGlzIHVubmVjZXNzYXJ5IHNvIEkgcmVtb3ZlZCBpdC4KKworMjAxMS0wMy0yNiAxOTo1NSAgbWFnZnIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsIGFwcHMvc25tcHRyYXBkLmMsICAgCisgICAgICBzbm1wbGliL2ludDY0LmMsIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsIHNubXBsaWIvc25tcF9zZWNtb2QuYywgICAKKyAgICAgIHNubXBsaWIvc25tcHYzLmM6CisKKyAgIEFkZCBtaXNzaW5nIGluY2x1ZGUKKworMjAxMS0wMy0yNiAwODowNyAgbWFnZnIKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgVXNlIHRoZSByaWdodCBmZWF0dXJlIG1hY3JvIGluIG9yZGVyIHRvIG1ha2UgYnVpbGRzIHdpdGgKKyAgIC0tZW5hYmxlLWlwdjYgLS13aXRoLW91dC10cmFuc3BvcnRzPVVEUElQdjYgc3VjY2VlZC4KKworMjAxMS0wMy0yNiAwODowMiAgbWFnZnIKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgUmVtb3ZlIGR1cGxpY2F0ZSBjb3BpZXMgb2YgZnVuY3Rpb25zCisKKzIwMTEtMDMtMjUgMjA6MzUgIHJzdG9yeQorCisgICAqIGxvY2FsL25ldC1zbm1wLWNlcnQ6CisKKyAgIHR3ZWFrIGRlYnVnIG1lc3NhZ2UKKworMjAxMS0wMy0yNSAyMDozMiAgcnN0b3J5CisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IHVwZGF0ZSBjZXJ0IHRva2VuIGhhbmRsaW5nCisgICAKKyAgIC0gcmVtb3ZlIGRlZlg1MDkgY2VydCB0b2tlbnMgKHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBiZWZvcmUKKyAgIDUuNikKKyAgIC0gd2FybmluZ3MgZm9yIG91ci90aGVpciB0b2tlbnMsIHJlY29tbWVuZCB1c2luZyBsb2NhbC9wZWVyCisKKzIwMTEtMDMtMjUgMjA6MzEgIHJzdG9yeQorCisgICAqICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jOgorCisgICBtZXJnZSBuZXRzbm1wX2R0bHN1ZHA2IGludG8gbmV0c25tcF9kdGxzdWRwCisgICAKKyAgIHVzZSBhZGRyIHNpemUgdG8gdGVsbCB0aGVtIGFwYXJ0CisKKzIwMTEtMDMtMjUgMjA6MzEgIHJzdG9yeQorCisgICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzoKKworICAgbG9nIChvbmNlKSB3YXJuaW5nIHdoZW4gZGVwcmVjYXRlZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcKKyAgIHRyYW5zcG9ydCBmdW5jdGlvbiB1c2VkCisKKzIwMTEtMDMtMjUgMjA6MzAgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmM6CisKKyAgIHJlZHVjZSBjYXN0aW5nOyBtYWtlIHN1cmUgdG8gZnJlZSB0aGUgcmlnaHQgcG9pbnRlcgorCisyMDExLTAzLTI1IDIwOjI5ICByc3RvcnkKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYzoKKworICAgcmVkdWNlIGNhc3RpbmcKKworMjAxMS0wMy0yNCAwNjoxOSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgorCisgICBSZXBsYWNlIGEgdmFyaWFibGUgd2l0aCBhIGNvbnN0YW50LiBNYWtlIG9uZSBtb3JlIG9pZCBjb25zdC4KKworMjAxMS0wMy0xNyAyMTowOSAgbmJhCisKKyAgICogbWFuL3NubXBkZWx0YS4xLmRlZjoKKworICAgRm9ybWF0dGluZyBib3RjaAorCisyMDExLTAzLTE3IDIxOjA3ICBuYmEKKworICAgKiBtaWJzL01ha2VmaWxlLmluOgorCisgICBJbnN0YWxsIHJlcXVpcmVkIG1pYnMKKworMjAxMS0wMy0xNyAyMTowNSAgbmJhCisKKyAgICogbWlicy9yZmNsaXN0OgorCisgICBOZXcgUkZDIG1pYnMKKworMjAxMS0wMy0xNSAxMDozMSAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jOgorCisgICBTcGVsbGluZyBmaXg6IHJlZ2luZXJhdGVkIC0+IHJlZ2VuZXJhdGVkLgorCisyMDExLTAzLTE1IDEwOjE5ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvY2VydF91dGlsLmM6CisKKyAgIFNpbXBsaWZpZWQgcjE5NTk0IChsZWFrLWF0LWV4aXQgZml4KS4KKworMjAxMS0wMy0xNSAwOTo1OSAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgdGhhdCB3YXMgaW50cm9kdWNlZCBpbiByMjAxMTMuCisKKzIwMTEtMDMtMTQgMDk6MzEgIGR0czEyCisKKyAgICogYWdlbnQvc25tcGQuYzoKKworICAgRml4IG1haW4gYWdlbnQgc2VsZWN0IGNhbGwgdG8gdXNlIHRoZSByZW5hbWVkIEFQSSByb3V0aW5lLgorCisyMDExLTAzLTEzIDIwOjA5ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYzoKKworICAgQnJpbmcgdGhlIG5hbWluZyBvZiB0aGUgbGFyZ2VfZmRfc2V0IHNlbGVjdCBjYWxsIGludG8KKyAgIGxpbmUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgQVBJLgorCisyMDExLTAzLTEyIDA2OjU5ICByc3RvcnkKKworICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogcmVhbGxvYytpbml0IGluc3RlYWQgb2YgY2FsbG9jCisgICAKKyAgIGluc3BpcmVkIGJ5IHBhdGNoIDMxOTU1MzIgZnJvbSBTdGVwaGVuIEhlbW1pbmdlcgorCisyMDExLTAzLTEyIDA1OjQ3ICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiBvcHRpbWl6YXRpb25zIGZvciBsYXJnZSByb3V0ZSB0YWJsZXMgZnJvbQorICAgU3RlcGhlbiBIZW1taW5nZXIKKyAgIAorICAgYXBwbGllZCBwYXJ0cyAxLTMgb2YgNCBmcm9tIGhpbSAobXNncyB0byBjb2RlcnMgb24gMi8yOC8xMTsKKyAgIHN1YmplY3QKKyAgIGlwLWZvcndhcmQtbWliIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50czsgcGFydCA0IG5lZWRzIG1vcmUgd29yaworCisyMDExLTAzLTExIDE0OjQzICByc3RvcnkKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogYWRkIG1vcmUgb3BlbnNzbCBlcnJvciBjYXNlcyB3aGVyZSB3ZSBjaGVjayBmb3IKKyAgIGxvY2FsIGNlcnQKKworMjAxMS0wMy0xMSAxMjowMSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CisKKyAgIE1pbkdXOiBkc2tUYWJsZTogUmVwb3J0IHplcm8gZm9yIHVuaW1wbGVtZW50ZWQgZmllbGRzIGluc3RlYWQgb2YKKyAgIHJhbmRvbSBkYXRhLgorCisyMDExLTAzLTExIDA4OjQyICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IEJ1aWxkcyB3aXRoIG1vc3QgcmVjZW50IE1pbkdXIChoYXZpbmcgI2RlZmluZQorICAgbG9jYWx0aW1lX3IpLgorCisyMDExLTAzLTExIDAzOjA4ICByc3RvcnkKKworICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiByZWZpbmUgY2VydCBkZWJ1Z2dpbmc7IHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24KKworMjAxMS0wMy0xMCAyMToyMSAgcnN0b3J5CisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzIwNTc2NTogaGFuZGxlIHJlY29uZmlnIGZvciBjZXJ0U2VjTmFtZQorICAgdG9rZW4KKworMjAxMS0wMy0xMCAyMDowMSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9zbm1wZC5jOgorCisgICBTcGVsbGluZyBmaXggaW4gYSBzb3VyY2UgY29kZSBjb21tZW50OiBtZXNzZ2VzIC0+IG1lc3NhZ2VzLgorCisyMDExLTAzLTEwIDE5OjU1ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBNaW5vciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24KKyAgIG9mIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpLgorCisyMDExLTAzLTEwIDE5OjQ4ICBidmFzc2NoZQorCisgICAqIGFnZW50L3NubXBkLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzIwMzgwNjogQXZvaWQgdGhhdCB0aGUgbWFpbiBhZ2VudAorICAgcHJvY2Vzc2luZyBsb29wIC0gd2hlbiB1c2luZyBtb3JlIHRoYW4gRkRfU0VUU0laRSBmaWxlCisgICBkZXNjcmlwdG9ycyAtIGNhbiBjYXVzZSBtZW1vcnkgY29ycnVwdGlvbiBieSBpbnZva2luZyBzZWxlY3QoKS4KKworMjAxMS0wMy0xMCAxOTo0MyAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAzMjAzODA2OiBBZGQgdGhlIGZ1bmN0aW9uCisgICBuZXRzbm1wX2xhcmdlX3NlbGVjdCgpLgorCisyMDExLTAzLTEwIDE4OjU1ICBidmFzc2NoZQorCisgICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDlsYXJnZV9mZF9zZXRfY2xpYi5jOgorCisgICBBZGRlZCBhIG1pbmltYWwgdW5pdCB0ZXN0IGZvciBuZXRzbm1wX2xhcmdlX2ZkX3NldC4KKworMjAxMS0wMy0xMCAxODo1MiAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzIwMzgwNjogTWFrZQorICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCkgY2xlYXIgYWxsIHJlbGV2YW50IGZpbGUKKyAgIGRlc2NyaXB0b3JzLgorCisyMDExLTAzLTEwIDE1OjUxICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcC10Yy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTc4Mzg5OiBGaXggaW5jb25zaXN0ZW50IGhhbmRsaW5nIG9mIFRaCisgICBvZmZzZXRzCisKKzIwMTEtMDMtMTAgMTU6NDAgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGU6CisKKyAgIElnbm9yZSBvYmplY3QgZmlsZXMgYW5kIGxpYnJhcmllcworCisyMDExLTAzLTEwIDE1OjA1ICBkdHMxMgorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0czoKKworICAgSWdub3JlIG9iamVjdCBmaWxlcyBhbmQgbGlicmFyaWVzCisKKzIwMTEtMDMtMTAgMTQ6MzIgIGhhcmRha2VyCisKKyAgICogYXBwcy9NYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisKKyAgIG1ha2UgdmFyaWFibGUgbmFtZXMgbWF0Y2gKKworMjAxMS0wMy0xMCAxNDoyOCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYzoKKworICAgRml4ZWQgdHdvIGNvbXBpbGVyIHdhcm5pbmdzLgorCisyMDExLTAzLTEwIDE0OjI0ICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgorCisgICBmaXhlZCBpbnN0YWxsYXRpb24gdmFyaWFibGVzIGZvciB0aGUgb3B0aW9uYWwgU0VUIHByb2dyYW1zCisKKzIwMTEtMDMtMDggMDA6NTMgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlczoKKworICAgY2htb2QgYSt4CisKKzIwMTEtMDMtMDggMDA6MTUgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6CisKKyAgIHByaW50IGFuIGVycm9yIGlmIHRoZSBlbmQgb2YgYSBmaWxlIHdhcyByZWFjaGVkIGFuZCB3ZSdyZSBub3QKKyAgIGJhY2sKKyAgIGludG8gdGhlIHN0YXRlIHdlIGNhbiB3cml0ZTsgb3RoZXJ3aXNlIGEgY2xvc2luZyAjaWZkZWYgaXMKKyAgIG1pc3NpbmcuCisKKzIwMTEtMDMtMDggMDA6MTUgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmM6CisKKyAgIGZpeCBlbmRpZiBjb21tZW50IHRvIG1hdGNoIHRoZSBvcGVuaW5nIGlmZGVmCisKKzIwMTEtMDMtMDggMDA6MTUgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6CisKKyAgIHJlc2V0IHRoZSBjYW53cml0ZSBmbGFnIGZvciBldmVyeSBmaWxlCisKKzIwMTEtMDMtMDggMDA6MTUgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlczoKKworICAgdGVtcG9yYXJpbHkgbGVhdmUgaW4gaGVhZGVyIGZpbGVzCisKKzIwMTEtMDMtMDggMDA6MTQgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CisKKyAgIGNoYW5nZSB0aGUgdW5pcXVlIGZpbGUgY2hlY2sgdG8gb25lIHRoYXQgaXMgbm90IGluIHRoZSBtaWJncm91cAorICAgZGlyZWN0b3J5CisKKzIwMTEtMDMtMDggMDA6MTQgIGhhcmRha2VyCisKKyAgICogIHRlc3RpbmcvZnVsbHRlc3RzL3JlYWQtb25seSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3JlYWQtb25seS9UMDE0MXNubXB2MmNzZXRmYWlsX3NpbXBsZToKKworICAgYSB0ZXN0IGZvciBlbnN1cmluZyB0aGUgYWdlbnQgcmVqZWN0cyBTRVQgcmVxdWVzdHMgd2l0aAorICAgLS1lbmFibGUtcmVhZC1vbmx5CisKKzIwMTEtMDMtMDggMDA6MTQgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlOgorCisgICBhZGQgYmFjayBpbiB0aGUgc3RvcGFnZW50IGNvbW1hbmQKKworMjAxMS0wMy0wOCAwMDoxNCAgaGFyZGFrZXIKKworICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAxcGR1X3R5cGVfY2xpYi5jLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYywgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwM3BkdV9wYXJzZV9jbGliLmM6CisKKyAgIHVuaXQgdGVzdHMgd3JpdGVuIGZvciB0aGUgcmVhZC1vbmx5IHN1cHBvcnQgY29udmVydGVkIHRvIHdvcmsKKyAgIHdpdGggb3Igd2l0aG91dCByZWFkLW9ubHkKKworMjAxMS0wMy0wOCAwMDoxMyAgaGFyZGFrZXIKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGU6CisKKyAgIGRvbid0IHJ1biB0aGUgc2V0IHRlc3QgaWYgbm9fd3JpdGVfc3VwcG9ydCBpcyB0dXJuZWQgb24KKworMjAxMS0wMy0wOCAwMDoxMyAgaGFyZGFrZXIKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzBzbm1wdjN1c2VyY3JlYXRpb25fc2ltcGxlOgorCisgICBza2lwIGlmIG5vX3dyaXRlX3N1cHBvcnQKKworMjAxMS0wMy0wOCAwMDoxMyAgaGFyZGFrZXIKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGU6CisKKyAgIEEgbmV3IHRlc3QgdG8gY2hlY2sgd2hldGhlciBTTk1QdjJjIFNFVHMgdG8gc3lzQ29udGFjdCB3b3JrIGFzCisgICBleHBlY3RlZAorCisyMDExLTAzLTA4IDAwOjEzICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3Zhbnljb25maWc6CisKKyAgIGFsbG93IGZvciB2MmMgU0VUIHN1cHBvcnQgdGVzdGluZworCisyMDExLTAzLTA4IDAwOjEyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jOgorCisgICBBbGxvdyBmb3Igc2luZ2xlIHF1b3RlcyBmb3IgdmFjbSBjb250ZXh0IG5hbWUgcXVvdGluZyB0b28KKworMjAxMS0wMy0wNyAxOToxOSAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmU6CisKKyAgIGZpeCB0aGUgY29uZmlndXJlIHRlc3RzIHRvIGluY2x1ZGUgdGhlIHdvcmQgdGVzdCBpbiB0aGUgdGVzdAorCisyMDExLTAzLTA3IDE5OjE4ICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKKworICAgZml4IHRoZSBjb25maWd1cmUgdGVzdHMgdG8gaW5jbHVkZSB0aGUgd29yZCB0ZXN0IGluIHRoZSB0ZXN0CisKKzIwMTEtMDMtMDcgMTk6MTggIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlczoKKworICAgQWRkZWQgYW4gYW5ub3lpbmdseSBsb25nIGxpc3Qgb2YgZXhjZXB0aW9ucyB0aGF0IG5lZWRzIHRvIGJlCisgICBhdXRvbWF0ZWQKKworMjAxMS0wMy0wNyAxOToxOCAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzOgorCisgICBBIHF1aWNrIHBlcmwgc2NyaXB0IHRvIHJlbW92ZSB1bm5lZWRlZCBjb2RlIG1vZHVsZXMgZnJvbSB0aGUKKyAgIG1vZHVsZXMgZGlyZWN0b3J5CisKKzIwMTEtMDMtMDcgMTk6MTggIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmMsIAorICAgICAgICBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL3NubXB1c20uYywgc25tcGxpYi92YWNtLmM6CisKKyAgIG1vcmUgaW1wcm92ZW1lbnRzIChyZW1vdmVtZW50cykgZm9yIGZlYXR1cml6YXRpb24gYW5kIHJlYWQtb25seQorICAgc3VwcG9ydAorCisyMDExLTAzLTA3IDE3OjE5ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMzE5NTUzNzogTWlub3IgYmluYXJ5X2FycmF5IGNvbnRhaW5lcgorICAgc29ydCBvcHRpbWl6YXRpb24KKworMjAxMS0wMy0wNiAxOTo0NyAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmM6CisKKyAgIFRhYnMgdG8gc3BhY2VzCisKKzIwMTEtMDMtMDYgMTE6MjggIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnM6CisKKyAgIENvbmZpZ3VyZSBjaGVjayBmb3IgZ2V0aG9zdG5hbWUyCisgICBVc2UgZ2V0YWRkcmluZm8gaWYgYXZhaWxhYmxlLiBOb3cgd29ya3MgZm9yIFNvbGFyaXMgKGFuZAorICAgV2luZG93cz8pCisKKzIwMTEtMDMtMDUgMTk6MTYgIG1hZ2ZyCisKKyAgICogYXBwcy9zbm1wdGVzdC5jOgorCisgICBBZGQgZHJvcHBlZCB8fCdzIGZyb20gcjIwMDcyCisKKzIwMTEtMDMtMDUgMTI6NTAgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cFJlc3VsdHNUYWJsZS5jOgorCisgICBDbGVhbiB1cCwgYW5kIGNvc29saWRhdGUgcmVzdWx0IHRhYmxlIHJvdyBjcmVhdGlvbiBpbnRvIGEgbmV3CisgICBmdW5jdGlvbi4KKyAgIFNhdmVzIDIwMCBsaW5lcyBvZiBjb2RlLCB3aXRoIChob3BlZnVsbHkpIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlCisKKzIwMTEtMDMtMDUgMDY6MTcgIGhhcmRha2VyCisKKyAgICogIGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvc25tcHRlc3QuYywgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgorCisgICBkb24ndCBidWlsZCBTRVQgcmVsYXRlZCBhcHBzIHdpdGggLS1lbmFibGUtcmVhZC1vbmx5CisKKzIwMTEtMDMtMDUgMDY6MTYgIGhhcmRha2VyCisKKyAgICogIGFnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBmaXggaXNzdWVzIHdpdGggY29tYmluaW5nIC0tZW5hYmxlLW1pbmltYWxpc3QgYW5kCisgICAtLWVuYWJsZS1yZWFkLW9ubHkKKworMjAxMS0wMy0wNSAwNjoxNiAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGU6CisKKyAgIGJldHRlciBvdXRwdXQgZm9yIGZpbmRpbmcgb2JqZWN0IHN5bWJvbHMuCisKKzIwMTEtMDMtMDQgMjE6NTYgIGJhZXJtCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6CisKKyAgIGxhc3QgY29tbWl0OiBjaGFuZ2VzIHRvIGFsbG93IHBhcnNpbmcgb2YgZmVhdHVlcnMgZmlsZXMgdG8gZ2V0CisgICBhbGwgbWluaW1hbGlzdCB0YWdzIHdoaWNoIGFyZSB0aGVuIHByb2Nlc3NlZCBmb3IgcmVtb3ZhbAorICAgCisgICB0aGlzIGNvbW1pdDogY2hhbmdlZCBjb21tZW50cy93aGl0ZSBzcGFjZQorCisyMDExLTAzLTA0IDE5OjI3ICBiYWVybQorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jOgorCisgICBhZGRlZCBub193cml0ZSBzdXBwb3J0IHRvIGV4dGVuZC5jCisKKzIwMTEtMDMtMDQgMTk6MjYgIGJhZXJtCisKKyAgICogYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jOgorCisgICBBZGRlZCBtaXNzaW5nICNlbmRpZiBjb21tZW50IGZvciByZW1vdmUgaWZkZWYgY29kZSBzdXBwb3J0CisKKzIwMTEtMDMtMDQgMTk6MjQgIGJhZXJtCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGw6CisKKyAgIGFkZGVkIGNoYW5nZXMgdG8gYWxsb3cgY29kZSByZW1vdmFsIGluLXBsYWNlCisgICAoaS5lLiBkb2VzIG5vdCByZXF1aXJlIGNyZWF0aW5nIGEgbmV3IGZpbGUpCisKKzIwMTEtMDMtMDQgMTk6MjMgIGJhZXJtCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9pZ25vcmUucmVnZXhwOgorCisgICBhZGRpbmcgYSBpZ25vcmUucmVnZXhwIGZpbGUgdGhhdCBjYW4gYmUgdXNlZCB3aXRoCisgICByZW1vdmVpZmRlZmNvZGUucGwKKworMjAxMS0wMy0wNCAxOToyMCAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6CisKKyAgIGFkZCBhIG91dGdvaW5nIGxpbmsgdG8gdGhlIHBhcmVudCBtYXJraW5nIHBhZ2UKKworMjAxMS0wMy0wNCAxOToxOSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6CisKKyAgIEFkZGVkIGEgd2lraSBvdXRwdXQgbW9kZQorCisyMDExLTAzLTA0IDE5OjE5ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgTm90ZSB0aGF0IHRoZSBvcmcgb3V0cHV0IGlzIHRoZSBkZWZhdWx0IGluIHRoZSBoZWxwIG91dHB1dAorCisyMDExLTAzLTA0IDE1OjA5ICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWUgPiAzMiBiaXRzJyBpbgorICAgVUNELVNOTVAtTUlCOjpzeXN0ZW1TdGF0cyBvbiBMaW51eAorCisyMDExLTAzLTA0IDE0OjQ5ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgcmVjbGFzc2lmaWNhdGlvbiBvZiB0aGUgcmVtYWluaW5nIGZlYXR1cmVzIGludG8gYSBoaWVyYXJjaHkKKworMjAxMS0wMy0wNCAxNDo0OSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICBkb24ndCBkb3VibGUtZGVjbGFyZSBjZXJ0X3V0aWxzCisKKzIwMTEtMDMtMDQgMTQ6NDkgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOgorCisgICB0aGUgaXBhZGRyZXNzX2xpbnV4IHdhcyBpbmNvcnJlY3RseSBtYXJrZWQgYXMgbmVlZGluZworICAgY2VydF9maW5nZXJwcmludHMKKworMjAxMS0wMy0wNCAxNDo0OCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgorCisgICBwdXQgdGhlIGFnZW50X3JlZ2lzdHJ5IGZlYXR1cmUgaW4gbGlibmV0c25tcGFnZW50LgorCisyMDExLTAzLTAzIDEwOjU2ICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOgorCisgICBDSEFOR0VTOiBXaW4zMjogRGVwcmVjYXRlZCBsaWJzbm1wLmRlZiAtIGFkZCBORVRTTk1QX0lNUE9SVCB0bworICAgZnVuY3Rpb24gZGVjbGFyYXRpb25zIGluc3RlYWQgdG8gZXhwb3J0IGEgZnVuY3Rpb24gZnJvbQorICAgbmV0c25tcC5kbGwuCisKKzIwMTEtMDMtMDMgMTA6NDggIGJ2YXNzY2hlCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg6CisKKyAgIEFkZGVkIG1pc3NpbmcgTkVUU05NUF9JTVBPUlQgZGVjbGFyYXRpb25zLgorCisyMDExLTAzLTAzIDEwOjI0ICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRlZiwgd2luMzIvbGlidWNkbWlicy9saWJ1Y2RtaWJzLmRlZjoKKworICAgUmVtb3ZlZCB0d28gb2Jzb2xldGUgV2luMzIgZmlsZXMuCisKKzIwMTEtMDMtMDMgMTA6MDkgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jOgorCisgICBUcml2aWFsIGNvbW1lbnQgZml4OiBzbm1wSVB2NkJhc2VEb21haW4uYyBjb250YWlucyBJUHY2IGJhc2UKKyAgIHRyYW5zcG9ydCBzdXBwb3J0IGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIElQdjQuCisKKzIwMTEtMDMtMDIgMTk6MTAgIGJ2YXNzY2hlCisKKyAgICogc25tcGxpYjoKKworICAgQWRkZWQgc25tcHNtX3NodXRkb3duLmggdG8gdGhlIFN1YnZlcnNpb24gaWdub3JlIGxpc3QgYmVjYXVzZQorICAgaXQncyBhIGdlbmVyYXRlZCBmaWxlLgorCisyMDExLTAzLTAyIDE1OjU4ICBidmFzc2NoZQorCisgICAqIHdpbjMyL2NvbmZpZy5oOgorCisgICBSZW1vdmVkIGFuIG9ic29sZXRlIGZpbGUuCisKKzIwMTEtMDMtMDIgMTU6NTIgIGJ2YXNzY2hlCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oLCB3aW4zMi9zbm1wc21fc2h1dGRvd24uaCwgIAorICAgICAgIHdpbjMyL3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oOgorCisgICBCdWlsZHMgYWdhaW4gd2l0aCBWaXN1YWwgU3R1ZGlvIGFmdGVyIHRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlCisgICAiZmVhdHVyZSIgZmVhdHVyZS4KKworMjAxMS0wMy0wMiAxNTo0OCAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9zbm1wc21faW5pdC5oOgorCisgICBSZW1vdmVkIGEgbWlzbGVhZGluZyBjb21tZW50LgorCisyMDExLTAzLTAyIDA4OjQwICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgorCisgICBDb3JyZWN0IHRoZSBjaGVjayBvZiB3ZXRoZXIgdXNtIHNlY3VyaXR5IGlzIGVuYWJsZWQuCisgICBSZWdlbmVyYXRlIGNvbmZpZ3VyZS4KKworMjAxMS0wMy0wMiAwODozOSAgbWFnZnIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBSZWdlbmVyYXRlCisKKzIwMTEtMDMtMDIgMDg6MjEgIG1hZ2ZyCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgQWRkIG1pc3NpbmcgZGVwZW5kZW5jaWVzCisKKzIwMTEtMDMtMDIgMDc6MTkgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljCisKKzIwMTEtMDMtMDIgMDc6MTkgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9jb250YWluZXIuYzoKKworICAgU3BsaXQgdGhlIGNvbnRhaW5lcl9jb21wYXJlX2Z1bmN0aW9ucyBmZWF0dXJlIGludG8KKyAgIGNvbnRhaW5lcl9jb21wYXJlX21lbSwKKyAgIGNvbnRhaW5lcl9jb21wYXJlX2xvbmcsIGNvbnRhaW5lcl9jb21wYXJlX3Vsb25nLAorICAgY29udGFpbmVyX2NvbXBhcmVfaW50MzIgYW5kCisgICBjb250YWluZXJfY29tcGFyZV91aW50MzIKKyAgIFVuaWZ5IHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBhcmUgZnVuY3Rpb25zIGZ1cnRoZXIuCisKKzIwMTEtMDMtMDIgMDc6MTkgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9jb250YWluZXIuYzoKKworICAgQ2hhbmdlIHRoZSBzcGVsbGluZyBvZiB0aGUgY29udGFpbmVyX2NvbXBhcmVfY3N0cmluZyBmZWF0dXJlIHRvCisgICBjb250YWluZXJfbmNvbXBhcmVfY3N0cmluZyBhcyB0aGF0IGlzIHRoZSBmdW5jdGlvbiB0aGF0IGlzCisgICBndWFyZGVkIGJ5IHRoYXQKKyAgIGF0dHJpYnV0ZS4KKworMjAxMS0wMy0wMiAwNzoxNyAgbWFnZnIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaDoKKworICAgQWRkIHRoZSBtaXNzaW5nIHJlcGxhY2VtZW50IG1hY3JvIGZvciBzbm1wX2luaXRfc3RhdGlzdGljcworCisyMDExLTAzLTAyIDA3OjE2ICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOgorCisgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWNfYnkgdGFrZXMgdHdvIGFyZ3VtZW50cyBzbyBsZXQgdGhlCisgICByZXBsYWNlbWVudCBtYWNybworICAgdGFrZSB0d28gYXJndW1lbnRzIGFzIHdlbGwuCisKKzIwMTEtMDItMjcgMTM6NTUgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jOgorCisgICBGaXggdHlwbyBpbiByMTk5OTAKKworMjAxMS0wMi0yNiAxMDo1MyAgbWFnZnIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2s6CisKKyAgIFJlbW92ZSBsaW5lcyBzdGFydGluZyB3aXRoICNkZWZpbmUgaW4gdGhlIG91dHB1dCBvZiB0aGUKKyAgIHByZXByb2Nlc3NvcgorICAgV2hlbiBnY2MgLUUgaXMgY2FsbGVkIHdpdGggLWdnZGIzIChvciAtZEQpIHRoZW4gYWxsIHRoZSBtYWNybworICAgZGVmaW5pdGlvbnMgYXJlCisgICBwYXNzZWQgdGhyb3VnaCB0aGUgcHJlcHJvY2Vzc29yIGFuZCB0aGF0IG1lc3NlcyB1cCBvdXIKKyAgIHByb2Nlc3NpbmcuCisKKzIwMTEtMDItMjYgMTA6NTIgIG1hZ2ZyCisKKyAgICogTWFrZWZpbGUucnVsZXM6CisKKyAgIFB1dCB0aGUgZ2VuZXJhdGVkIGZpbGUgaW4gdGhlIGJ1aWxkIHRyZWUsIG5vdCB0aGUgc291cmNlIHRyZWUuCisKKzIwMTEtMDItMjYgMDE6MjMgIGhhcmRha2VyCisKKyAgICogIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAKKyAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgbW92ZWQgYSBidW5jaCBvZiBmZWF0dXJlcyBpbnRvIHRoZSBsaWJuZXRzbm1wbWlicyBmZWF0dXJlIHNldC4KKworMjAxMS0wMi0yNiAwMToyMiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF9pbmRleC5jLCAgIAorICAgICAgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywgYWdlbnQvYWdlbnRfdHJhcC5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jLCBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jLCAgIAorICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0cywgc25tcGxpYi9taWIuYzoKKworICAgY2xhc3NpZmllZCBsaWJuZXRzbm1wYWdlbnQgZmVhdHVyZXMKKworMjAxMS0wMi0yNiAwMToyMSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgcmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIGxpYnJhcmllcyAoc25tcGxpYiBmaXJzdCkKKworMjAxMS0wMi0yNiAwMToyMSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgb3V0cHV0IGNsZWFudXAgYW5kIGFkZGVkIGFnZW50LW1pYnMgYW5kIGxvZ2dpbmcgb3B0aW9ucworCisyMDExLTAyLTI2IDAxOjIxICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBhZGQgYSBkZWZhdWx0IHNldCBvZiBhcmd1bWVudHMKKyAgIGNhbGN1bGF0ZSByZXN1bHRpbmcgc2l6ZXMKKworMjAxMS0wMi0yNiAwMToyMSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL2Rpcl91dGlscy5jOgorCisgICBBZGRlZCBhIG1pc3NpbmcgOworCisyMDExLTAyLTI2IDAxOjIwICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBwcmVmaXggdGhlIG91dHB1dCBmaWxlcyB3aXRoIGEgbnVtYmVyIHRvIGluZGljYXRlIG9yZGVyCisKKzIwMTEtMDItMjYgMDE6MjAgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIHNhdmUgdGhlIHJlc3VsdHMgb2YgdGhlIHN5c3RlbSBleGVjdXRpb25zCisKKzIwMTEtMDItMjYgMDE6MjAgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGVuYWJsZSBidWlsZGluZyBvZiB0aGUgcmVzdWx0aW5nIGNvbWJpbmF0aW9ucworICAgQWRkIGEgLW4gZmxhZyBmb3IgZHJ5LXJ1bnMKKworMjAxMS0wMi0yNiAwMToyMCAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0czoKKworICAgZW5hYmxlIHRoZSAtdCB0YWcgZm9yIGxpbWl0aW5nIHR5cGVzCisKKzIwMTEtMDItMjYgMDE6MTkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIEFkZGVkIGFyZ3VtZW50IHBhcnNpbmcgYW5kIGFyZ3VtZW50cyBmb3Igc2VsZWN0aW5nIGFuZCBsaXN0aW5nCisgICB0eXBlcworCisyMDExLTAyLTI2IDAxOjE5ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBnZW5lcmF0ZSBjb25maWd1cmUgc2NyaXB0IGFyZ3VtZW50cyBmcm9tIHNwZWNzCisKKzIwMTEtMDItMjYgMDE6MTkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHM6CisKKyAgIGFkZGVkIGEgYnVuY2ggb2YgbmV3IGZlYXR1cmUgb3B0aW9ucyBhbmQgY2xlYW5lZCB1cCBhIGJpdAorCisyMDExLTAyLTI2IDAxOjE5ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3Qvc2l6ZXRlc3RzOgorCisgICBhZGRlZCBhIG5ldyAobm90IHlldCB3b3JraW5nKSBzY3JpcHQgdG8gdGVzdCBzaXppbmcgb2YgdmFyaW91cworICAgYXJndW1lbnQgc2V0cworCisyMDExLTAyLTI2IDAwOjI2ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIFNpbXBsaWZ5IHRoZSBjb2RlLiBVbmlmeSBzb21lIGRlYnVnIGxvZ3MuCisKKzIwMTEtMDItMjYgMDA6MTkgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzoKKworICAgUmVkdWNlIHRoZSBzY29wZSBvZiBhIGZldyB2YXJpYWJsZXMKKworMjAxMS0wMi0yNiAwMDoxNiAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgorCisgICBSZW1vdmUgc29tZSB1bnVzZWQgaW5jbHVkZXMuCisKKzIwMTEtMDItMjYgMDA6MTUgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzoKKworICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbml0aWFsaXplL3VuaW5pdGlhbGl6ZSBtb2R1bGVzIHdpdGggNjQKKyAgIGNoYXJhY3RlciBuYW1lcyBhbmQgbm90IHN1ZmZlciB3aWxkIHdyaXRlcy4KKworMjAxMS0wMi0yNiAwMDoxMiAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgorCisgICBDb2RlIHJlc3RydWN0dXJpbmcgLSBwdXQgdGhlIG1hbmFnZWQgcm91dGluZXMgYmVmb3JlIHRoZQorICAgbWFuYWdtZW50IGNvZGUuCisKKzIwMTEtMDItMjYgMDA6MTEgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaDoKKworICAgQ0hBTkdFUzogbGlibmV0c25tcG1pYnM6IE1ha2UgYWxsIGZ1bmN0aW9ucyBpbiB0aGUgZGxtb2QgbW9kdWxlCisgICB0aGF0IGRvbid0IGhhdmUgdG8gYmUgcHVibGljIHN0YXRpYworCisyMDExLTAyLTI2IDAwOjA3ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIFJlbmFtZSBkZWluaXRfZGxtb2QgdG8gc2h1dGRvd25fZGxtb2QgYXMgdGhhdCBpcyB3aGF0IGl0IHJlYWxseQorICAgaXMgYWJvdXQuCisKKzIwMTEtMDItMjUgMTg6MjQgIGJhZXJtCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYzoKKworICAgYWRkaW5nIG1pbmltYWxpc3QgaWZkZWZzIHRvIG5ldC1zbm1wLXZhY20gbWliCisKKzIwMTEtMDItMjUgMTY6MDkgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOgorCisgICBwcm9wZXJseSBoYW5kbGUgdHdpbiBjaGlsZHJlbjsgYWxzbyBzb3J0IHRoZSBjaGlsZCBsaXN0CisgICBhbHBoYWJldGljYWxseS4KKworMjAxMS0wMi0yNSAxNjowOSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgorCisgICBJIHN1cHBvc2UgbG9nZ2luZyBzaG91bGQgcHJvYmFibHkgZGVmYXVsdCB0byBiZWluZyBhIHdhbnRlZAorICAgb3B0aW9uIDotKQorCisyMDExLTAyLTI1IDE2OjA5ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgb3JnLWxpbmsgdGhlIGZpbGVzIGluIHRoZSBvdXRwdXQKKworMjAxMS0wMi0yNSAxNjowOCAgaGFyZGFrZXIKKworICAgKiAgTWFrZWZpbGUucnVsZXMsIGFnZW50L01ha2VmaWxlLmluLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sICAgCisgICAgICBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2ssIHNubXBsaWIvTWFrZWZpbGUuaW46CisKKyAgIG1ha2UgdGhlIGZlYXR1cmVzLWNoZWNrIHNjcmlwdCB0cmFjayB0aGUgZnVsbCBzb3VyY2UgcGF0aAorCisyMDExLTAyLTI1IDE2OjA4ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1tYWtlZG9jczoKKworICAgY2hhbmdlIHRoZSBmdW5jdGlvbiBuYW1lcyB0byBtYXRjaCB0aGF0IGl0J3MgcHJpbnRpbmcgdG8gb3JnLW1vZGUKKyAgIGF0IHRoZSBtb21lbnQuCisKKzIwMTEtMDItMjUgMTY6MDggIGhhcmRha2VyCisKKyAgICogIHNubXBsaWIvZmlsZV91dGlscy5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL29pZF9zdGFzaC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3NubXBfbG9nZ2luZy5jLCBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIGxhc3Qgb2YgdGhlIGZlYXR1cmUgY2xhc3NpZmljYXRpb24gaW4gbGlibmV0c25tcAorCisyMDExLTAyLTI1IDE2OjA3ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9sY2RfdGltZS5jLCBzbm1wbGliL3NjYXBpLmM6CisKKyAgIG1ha2UgdGhlIHVzbV9zdXBwb3J0IHV0aWxpdGllcyBzZWxmLWRlY2xhcmUgdGhlbXNlbHZlcyBhcworICAgY2hpbGRyZW4gdG8KKyAgIG1ha2Ugc3VyZSB0aGV5J3JlIHByb3Blcmx5IGluY2x1ZGVkIGR1cmluZyBkZXBlbmRlbmN5IG9yZGVyaW5nCisKKzIwMTEtMDItMjUgMTY6MDcgIGhhcmRha2VyCisKKyAgICogIHNubXBsaWIvY2FsbGJhY2suYywgc25tcGxpYi9jZXJ0X3V0aWwuYywgc25tcGxpYi9jaGVja192YXJiaW5kLmMsIAorICAgICAgICBzbm1wbGliL2NvbnRhaW5lci5jLCBzbm1wbGliL2RhdGFfbGlzdC5jLCAgIAorICAgICAgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMsIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCAgIAorICAgICAgc25tcGxpYi9maWxlX3V0aWxzLmMsIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIHN1cGVyc3RydWN0dXJhbGl6YXRpb25pemluZyB0aGUgZmVhdHVyZXMKKworMjAxMS0wMi0yNSAxNjowNyAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi9yZWFkX2NvbmZpZy5jLCBzbm1wbGliL3NubXAtdGMuYywgc25tcGxpYi9zbm1wX2NsaWVudC5jLCAgCisgICAgICAgc25tcGxpYi9zbm1wX2VudW0uYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCBzbm1wbGliL3N5c3RlbS5jLCAKKyAgICAgICAgc25tcGxpYi90ZXh0X3V0aWxzLmMsIHNubXBsaWIvdG9vbHMuYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jLCBzbm1wbGliL3VjZF9jb21wYXQuYzoKKworICAgc2lnbmlmaWNhbnQgcGFyZW50L2NoaWxkIGZlYXR1cmUgY2xhc3NpZmljYXRpb24KKworMjAxMS0wMi0yNSAxNjowNiAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcHVzbS5jOgorCisgICBjbGFzc2lmeSBhIGZldyBjb21wb25lbnRzIGludG8gYSB0b3AtbGV2ZWwgbGlibmV0c25tcCBjb21wb25lbnQKKworMjAxMS0wMi0yNSAxNjowNiAgaGFyZGFrZXIKKworICAgKiAgc25tcGxpYi9rZXl0b29scy5jLCBzbm1wbGliL2xjZF90aW1lLmMsIHNubXBsaWIvc2NhcGkuYywgICAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jOgorCisgICBzdHJ1Y3R1cml6ZSB0aGUgdXNtIGZlYXR1cmVzCisKKzIwMTEtMDItMjUgMTY6MDYgIGhhcmRha2VyCisKKyAgICogIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMsICAgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYywgc25tcGxpYi9jb250YWluZXJfbnVsbC5jLCAgIAorICAgICAgc25tcGxpYi9kaXJfdXRpbHMuYzoKKworICAgc3RydWN0dXJlIHRoZSBjb250YWluZXIgZmVhdHVyZXMgaW50byBhIGhpZXJhcmNoeQorCisyMDExLTAyLTI1IDE2OjA1ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6CisKKyAgIGdyb3VwIHRoZSBsb2dnaW5nIGhhbmRsZXJzIHVuZGVyIGEgcGFyZW50IGZlYXR1cmUKKworMjAxMS0wMi0yNSAxNjowNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6CisKKyAgIGZpeCB0aGUgZXhwZWN0IGFyZ3VtZW50IGNvdW50CisKKzIwMTEtMDItMjUgMTY6MDUgIGhhcmRha2VyCisKKyAgICogbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOgorCisgICBmaXggdGhlIG5hbWUgb2YgdGhlIGV4cGVjdGVkIGlucHV0IGZpbGUKKworMjAxMS0wMi0yNSAxNjowNSAgaGFyZGFrZXIKKworICAgKiBsb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3M6CisKKyAgIGFyZ3VtZW50IHBhcnNpbmcgYW5kIHVzYWdlKCkgb3V0cHV0CisKKzIwMTEtMDItMjUgMTY6MDQgIGhhcmRha2VyCisKKyAgICogIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYywgc25tcGxpYi9vaWRfc3Rhc2guYzoKKworICAgLSBhZGRlZCB0d28gb2lkX3N0YXNoIGZ1bmN0aW9ucyBhcyBpbmRpdmlkdWFsIGZlYXR1cmVzCisgICAtIGNsZWFuZWQgdXAgc29tZSB3YXJuaW5ncyBpbiB0aGUgdGFibGVfaXRlcmF0b3IgY29kZQorCisyMDExLTAyLTI1IDEyOjU1ICBkdHMxMgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOgorCisgICBGaXggdGhlIGNvbW1hbmQgdG8gY3JlYXRlIGEgbmV3IFNWTiB0YWcgbGluZQorICAgCisgICAoSGF2aW5nIGJyb3VnaHQgdGhlIHN0cnVjdHVyZSBvZiB0aGUgNS41LnggYnJhbmNoCisgICBpbnRvIGxpbmUgd2l0aCB0aGUgb3RoZXIgYnJhbmNoZXMsIHRoZSBwcmV2aW91cworICAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqIGJyYW5jaGVzLCByYXRoZXIKKyAgIHRoYW4ganVzdCBtb3N0IG9mIHRoZW0hKQorCisyMDExLTAyLTI1IDExOjEwICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcHYzLmM6CisKKyAgIEF2b2lkIGEgcG9zc2libGUgY3Jhc2ggaWYgdGhlIGVuZ2luZUlEIGlzIG5vdCBhdmFpbGFibGUgb3Igc2V0LgorCisyMDExLTAyLTI1IDAwOjQwICBiYWVybQorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuaDoKKworICAgYWRkaW5nIGlmZGVmIGNvZGUgZm9yIG1pbmltYWxpc3Qgc3VwcG9ydCBvZiBkaWZmbWFuIG1pYgorCisyMDExLTAyLTI0IDE5OjIxICBiYWVybQorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaDoKKworICAgQWRkaW5nIG1pbmltYWxpc3QgaWZkZWZzIHRvIGhvc3QgcmVzb3VyY2UgbWliCisKKzIwMTEtMDItMjQgMDU6NDYgIGhhcmRha2VyCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBzbm1wbGliL2RhdGFfbGlzdC5jOgorCisgICBtYXJrIHRoZSBkYXRhX2xpc3QgZnVuY3Rpb24gdGhhdCdzIG9ubHkgdXNlZCBpbiBzdGFjaF9jYWNoaW5nIGFzCisgICBhIGZlYXR1cmUKKworMjAxMS0wMi0yNCAwNTo0NiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6CisKKyAgIHdob29wcy4KKworMjAxMS0wMi0yNCAwNTo0NiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6CisKKyAgIG1vcmUgbWlzc2luZyBzdGFzaCByZWZlcmVuY2VzCisKKzIwMTEtMDItMjQgMDU6NDUgIGhhcmRha2VyCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jOgorCisgICBpZmRlZmVkL2ZlYXR1cmVkIG91dCBhIG1pc3Npbmcgc3Rhc2hfY2FjaGUgc2VjdGlvbgorCisyMDExLTAyLTI0IDA1OjQ1ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKKworICAgbWFrZSB0aGUgcHJlZml4X2luZm8gbW9yZSBoaWVyYXJjaGljYWwgYW5kIHN1Yi1mZWF0dXJlIHRoZSB1bnVzZWQKKyAgIG9uZQorCisyMDExLTAyLTI0IDA1OjQ1ICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZToKKworICAgZG8gaW5jbHVkZSB0aGUgcGVybC9weXRob24gY29kZSB3aGVuIHNlYXJjaGluZyBmb3IgZmlsZXMKKworMjAxMS0wMi0yNCAwNTo0NSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6CisKKyAgIG1ha2UgdGhlIHNlbWktdXNlZCB0YWJsZV90ZGF0YSBmdW5jdGlvbnMgY2hpbGRyZW4gb2YKKyAgIHRhYmxlX3RkYXRhX2FsbAorICAgaW5zdGVhZCBvZiBqdXN0IHRhYmxlX3RkYXRhCisKKzIwMTEtMDItMjMgMjI6MDAgIG1hZ2ZyCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jOgorCisgICBDb3JyZWN0IHR5cG8KKworMjAxMS0wMi0yMyAyMTo1NCAgbWFnZnIKKworICAgKiBzbm1wbGliL3BhcnNlLmM6CisKKyAgIENvcnJlY3QgdHlwbworCisyMDExLTAyLTIzIDIxOjEwICBuYmEKKworICAgKiBhZ2VudC9zbm1wX3ZhcnMuYzoKKworICAgcHJvcGVyIGluY2x1ZGUgb2YgcHJvdG90eXBlCisKKzIwMTEtMDItMjMgMjE6MDcgIGhhcmRha2VyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc190cmFuc3BvcnRzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIGNvbXBhdCBzb21lIGZlYXR1cmUgaGVhZGVyIGNoaWNrZW4gYW5kIGVnZyBwcm9ibGVtcworCisyMDExLTAyLTIzIDE1OjI3ICBuYmEKKworICAgKiBzbm1wbGliL3NubXB1c20uYzoKKworICAgdW5zaWduZWQganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzCisKKzIwMTEtMDItMjMgMTU6MjMgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgdW5zaWduZWQganVnZ2xpbmcgdG8gcmVtb3ZlIHdhcm5pbmdzCisKKzIwMTEtMDItMjMgMTU6MjAgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi5oOgorCisgICBFbmFibGUgKHByb2JhYmx5IGZvcmdvdHRlbikgaXBBZGRyZXNzUHJlZml4VGFibGUKKworMjAxMS0wMi0yMyAxNDozMCAgaGFyZGFrZXIKKworICAgKiAgbG9jYWwvbWluaW1hbGlzdCwgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLWNoZWNrLCAgIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzLCAgIAorICAgICAgbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZSwgICAKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZSwgICAKKyAgICAgIGxvY2FsL21pbmltYWxpc3QvcmVtb3ZlaWZkZWZjb2RlLnBsOgorCisgICBhZGRlZCBvdGhlciBtaXNzaW5nICduZXcnIGZpbGVzIG5vdCBpbmNsdWRlZCBpbiB0aGUgbWluaW1hbGlzdAorICAgcGF0Y2ggZmlsZQorCisyMDExLTAyLTIzIDA5OjU0ICBuYmEKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2ZyZWVic2Q0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbmV0YnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fb3BlbmJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfZnJlZWJzZDQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X25ldGJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfb3BlbmJzZC5jOgorCisgICBMb2FkaW5nIElQdjYgZGF0YSBpcyBhIG5vLW5vIHdoZW4gSVB2NiBub3QgZW5hYmxlZAorCisyMDExLTAyLTIzIDA5OjM2ICBuYmEKKworICAgKiBhcHBzL3NubXB0YWJsZS5jOgorCisgICBGaXggYnVnIDMxMTg2MzE6IHNubXB0YWJsZSBzZWdmYXVsdHMgaWYgaW5kZXggY29udGFpbnMgOgorICAgY2hhcmFjdGVyCisKKzIwMTEtMDItMjMgMDk6MzAgIG5iYQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q4Lmg6CisKKyAgIEZyZWVCU0QgOCBzdXBwb3J0CisKKzIwMTEtMDItMjMgMDE6NDggIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oOgorCisgICBhZGRlZCBtaXNzaW5nIG5ldC1zbm1wLWZlYXR1cmVzLmgKKworMjAxMS0wMi0yMyAwMDowMSAgaGFyZGFrZXIKKworICAgKiAgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLnJ1bGVzLCBNYWtlZmlsZS50b3AsIGFnZW50L01ha2VmaWxlLmluLCAgIAorICAgICAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF9pbmRleC5jLCAgIAorICAgICAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywgICAKKyAgICAgIGFnZW50L2FnZW50X3RyYXAuYywgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9iYWJ5X3N0ZXBzLmMsIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jLCBhZ2VudC9oZWxwZXJzL21vZGVfZW5kX2NhbGwuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvbXVsdGlwbGV4ZXIuYywgYWdlbnQvaGVscGVycy9vbGRfYXBpLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jLCBhZ2VudC9oZWxwZXJzL3Jvd19tZXJnZS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zY2FsYXIuYywgYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmMsIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgIAorICAgICAgIGFnZW50L2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMsIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfcm93LmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMsIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4sIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdENvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tpbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BlcmZzdGF0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfY29uc3RhbnRzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jLCBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgsIAorICAgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmMsIAorICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYywgYWdlbnQvc25tcF9hZ2VudC5jLCAgIAorICAgICAgYWdlbnQvc25tcF92YXJzLmMsIGFnZW50L3NubXBkLmMsIGFwcHMvTWFrZWZpbGUuaW4sICAgCisgICAgICBhcHBzL2FnZW50eHRyYXAuYywgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5jLCBhcHBzL3NubXBuZXRzdGF0L25ldHN0YXQuaCwgICAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvcm91dGUuYywgYXBwcy9zbm1wdGVzdC5jLCBhcHBzL3NubXB0cmFuc2xhdGUuYywgIAorICAgICAgIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMsICAgCisgICAgICBhcHBzL3NubXB0cmFwZF9zcWwuYywgY29uZmlndXJlLCBjb25maWd1cmUuYWMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCAKKyAgICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfc2VjdXJpdHlfbW9kdWxlcywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3RyYW5zcG9ydHMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczIsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wa3NtLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHBlcmwvT0lEL09JRC54cywgICAKKyAgICAgIHBlcmwvU05NUC9TTk1QLnhzLCBwZXJsL2FnZW50L2FnZW50LnhzLCBzbm1wbGliL01ha2VmaWxlLmluLCAgIAorICAgICAgc25tcGxpYi9jYWxsYmFjay5jLCBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL2NoZWNrX3ZhcmJpbmQuYywgCisgICAgICAgIHNubXBsaWIvY29udGFpbmVyLmMsIHNubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMsICAgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYywgc25tcGxpYi9jb250YWluZXJfbnVsbC5jLCAgIAorICAgICAgc25tcGxpYi9kYXRhX2xpc3QuYywgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMsICAgCisgICAgICBzbm1wbGliL2Rpcl91dGlscy5jLCBzbm1wbGliL2ZkX2V2ZW50X21hbmFnZXIuYywgICAKKyAgICAgIHNubXBsaWIvZmlsZV91dGlscy5jLCBzbm1wbGliL2ludDY0LmMsIHNubXBsaWIva2V5dG9vbHMuYywgICAKKyAgICAgIHNubXBsaWIvbGNkX3RpbWUuYywgc25tcGxpYi9taWIuYywgc25tcGxpYi9vaWRfc3Rhc2guYywgICAKKyAgICAgIHNubXBsaWIvcGFyc2UuYywgc25tcGxpYi9yZWFkX2NvbmZpZy5jLCBzbm1wbGliL3NjYXBpLmMsICAgCisgICAgICBzbm1wbGliL3NubXAtdGMuYywgc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3NubXBfY2xpZW50LmMsICAgCisgICAgICBzbm1wbGliL3NubXBfZW51bS5jLCBzbm1wbGliL3NubXBfbG9nZ2luZy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX29wZW5zc2wuYywgc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYywgICAKKyAgICAgIHNubXBsaWIvc25tcF9zZWNtb2QuYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wa3NtLmMsIHNubXBsaWIvc25tcHRzbS5jLCBzbm1wbGliL3NubXB1c20uYywgICAKKyAgICAgIHNubXBsaWIvc25tcHYzLmMsIHNubXBsaWIvc3lzdGVtLmMsIHNubXBsaWIvdGV4dF91dGlscy5jLCAgIAorICAgICAgc25tcGxpYi90b29scy5jLCBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4uYywgc25tcGxpYi91Y2RfY29tcGF0LmMsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M2NvbmZpZywgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdXNtY29uZmlnYmFzZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdmFjbWNvbmZpZywgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybV9zaW1wbGUsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1hdXRoX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3QyX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3QzX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3Rfc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYwdHJhcGRwZXJsX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MWFnZW50cGVybF9zaW1wbGUsICAgCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTNhZ2VudHh0cmFwX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExNGFnZW50eGFnZW50eHRyYXBfc2ltcGxlOgorCisgICBORVdTOiBwYWNrYWdpbmc6IEVuYWJsZSBtaWNyby1hbmQtbWFjcm8tZmVhdHVyZSBtYW5hZ2VtZW50IHdpdGhpbgorICAgTmV0LVNOTVA7IHRoaXMgYWRkcyBhIG51bWJlciBvZiBuZXcgZmxhZ3MgdG8gY29uZmlndXJlCisgICAoLS1lbmFibGUtbWluaW1hbGlzdCBhbmQgLS1lbmFibGUtcmVhZC1vbmx5KS4gVGhlc2UgY2hhbmdlcyBhcmUKKyAgIGRlc2lnbmVkIHRvIHJlbW92ZSBtdWNoIG9mIHRoZSBpbmxpbmUgY29kZSB0aGF0IGlzbid0IGFsd2F5cworICAgbmVjZXNzYXJ5IG9yIGRlc2lyZWQuIFNjcmlwdHMgZXhpc3QgKGFuZCB3aWxsIGJlIGltcHJvdmVkKSB0bworICAgc3RpcCBvdXQgdW51c2VkIGNvbXBvbmVudHMgZnJvbSB0aGUgY29kZSBlbnRpcmVseSB0byBlbmFibGUgYQorICAgc2hvcnRlciByZXZpZXcgcHJvY2VzcyBmb3IgdXBncmFkaW5nIHRvIG5ldyByZWxlYXNlcy4gVGhpcyB3b3JrCisgICB3YXMgZG9uZSBieSBXZXMgSGFyZGFrZXIgYW5kIE1pY2hhZWwgQmFlciBmcm9tIFNQQVJUQSwgSW5jLiBidXQKKyAgIGlzIGJlaW5nIGNoZWNrZWQgaW4gYXMgYSBsYXJnZSBwYXRjaCBzaW5jZSBjb252ZXJ0aW5nIHRoZSBtaWNybworICAgcGF0Y2hlcyBmcm9tIGdpdCB0byBzdm4gdHVyZW5kIG91dCB0byBiZSBpbXBvc3NpYmxlCisKKzIwMTEtMDItMjIgMjM6NTUgIGhhcmRha2VyCisKKyAgICogRkFROgorCisgICB1c2UgdGhlIHdpa2kgVVJMIGluc3RlYWQgb2YgdGhlIHR1dG9yaWFsLTUgVVJMIGZvciB0aGUgc25tcHRyYXAKKyAgIHR1dG9yaWFsCisKKzIwMTEtMDItMjEgMjI6NDAgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa2luZm8uYzoKKworICAgcHJvcGVyIHByb2Nlc3Mgc3RhdHVzIHZhbHVlcyBmb3IgbmV0YnNkCisKKzIwMTEtMDItMjEgMjI6MzkgIG5iYQorCisgICAqIHNubXBsaWIvc2NhcGkuYzoKKworICAgY29uZGl0aW9uYWxpemUgdmFyaWFibGUKKworMjAxMS0wMi0yMSAyMjoyMCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmg6CisKKyAgIHRjcC1taWIvdWRwLW1pYiBzdXBwb3J0IGZvciB0aGUgKmJzZHMKKworMjAxMS0wMi0yMSAyMjoxNiAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9uZXRic2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9vcGVuYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfZnJlZWJzZDQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X25ldGJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfb3BlbmJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIHRjcC1taWIvdWRwLW1pYiBzdXBwb3J0IGZvciB0aGUgKmJzZHMKKworMjAxMS0wMi0yMSAyMjowNSAgbmJhCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgUHJvcGVybHkgZW5kIGRlYnVnIG1lc3NhZ2Ugd2l0aCBuZXdsaW5lCisKKzIwMTEtMDItMjEgMjI6MDQgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jOgorCisgICByZW1vdmUgdmFyIHRoYXQgc2hhZG93cyB0aGUgdXNlZnVsIG9uZQorCisyMDExLTAyLTIxIDIyOjAyICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmM6CisKKyAgIG1ham9yIGZpZGRsaW5nIHRvIGdldCB0aGluZ3Mgd29ya2luZyBmb3Igb3BlbmJzZCB0b28uIFRoaXMgc2hvdWxkCisgICByZWFsbHkgYmUgcmV3b3JrZWQgdG8gdXNlIHRoZSB0Y3AtbWliL3VkcC1taWIvZGF0YV9hY2Nlc3MKKworMjAxMS0wMi0yMSAyMTo1OSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYzoKKworICAgZml4IHRjcCBzdGF0ZXMgZm9yIGRyYWdvbmZseWJzZAorCisyMDExLTAyLTIxIDIxOjU3ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS5oOgorCisgICBlbmFibGUgbmV3IHRjcC91ZHAgbWlicyBmb3Igc29sYXJpcworCisyMDExLTAyLTIxIDIxOjUzICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmM6CisKKyAgIERvIG5vdCB1c2UgYzk5CisKKzIwMTEtMDItMjEgMTk6MDggIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIFVwZGF0ZWQgY29tbWVudCBhYm91dCB3aGVyZSBtYWtlcmVsZWFzZSBjb21lcyBmcm9tIChub3cgZ2l0aHViKQorCisyMDExLTAyLTIwIDA5OjI0ICBidmFzc2NoZQorCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzE4NTUyODogc2h1dGRvd25fbWFzdGVyX2FnZW50IGRvZXNuJ3QgY2xvc2UKKyAgIFVEUCBzb2NrZXQKKyAgIChGaXhlcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIHIxOTUxMS4pCisKKzIwMTEtMDItMTggMTQ6NDMgIGpzYWZyYW5laworCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaCwgbWFuL3NubXBkLmNvbmYuNS5kZWY6CisKKyAgIENIQU5HRVM6IHNubXBkOiByZXdvcmtlZCBoclN0b3JhZ2VUYWJsZSB0byBzdXBwb3J0IGxhcmdlCisgICBmaWxlc3lzdGVtcy4KKyAgIAorICAgVGhlIGhyU3RvcmFnZUFsbG9jYXRpb25Vbml0cyBkb2VzIG5vdCByZXBvcnQgcmVhbCBhbGxvY2F0aW9uIHVuaXQKKyAgIHNpemUsCisgICBidXQgc29tZSBjYWxjdWxhdGVkIHZhbHVlIHNvIGhyU3RvcmFnZUFsbG9jYXRpb25Vbml0cyAqCisgICBoclN0b3JhZ2VTaXplCisgICBnaXZlcyByZWFsIHNpemUgb2YgdGhlIGZpbGVzeXN0ZW0uCisgICAKKyAgIFRoaXMgY2FsY3VsYXRpb24gaGFwcGVucyBvbmx5IHdoZW4gaHJTdG9yYWdlU2l6ZSBpcyB0b28gc21hbGwKKyAgICgzMmJpdHMpCisgICBmb3IgZmlsZXN5c3RlbSBzaXplLCBlLmcuIGZpbGVzeXN0ZW1zIGxhcmdlciB0aGFuIDhUQiB3aXRoIDQwOTYKKyAgIGJ5dGVzCisgICBibG9jayBzaXplLgorICAgCisgICBUaGlzIGNhbGN1bGF0aW9uIGNhbiBiZSB0dXJuZWQgb2ZmIGJ5ICdyZWFsU3RvcmFnZVVuaXRzJyBjb25maWcKKyAgIG9wdGlvbi4KKworMjAxMS0wMi0xOCAxNDoyOSAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW50dHlwZXMuaDoKKworICAgQWRkIEpGUyBhbmQgWEZTIHRvIGxpc3Qgb2Yga25vd24gZmlsZXN1c3RlbXMKKworMjAxMS0wMi0xNyAxMToyOCAganNhZnJhbmVrCisKKyAgICogbG9jYWwvc25tcC1icmlkZ2UtbWliOgorCisgICBGaXhlZCBzbm1wLWJyaWRnZS1taWIgaW4gc3RhbmRhbG9uZSAoYWdlbnR4KSB2ZXJzaW9uLgorICAgRG9uJ3QgZGVjbGFyZSBsb2NhbCB2YXJpYWJsZXMgaW5zaWRlIGJsb2NrLiBQYXRjaCBwcm92aWRlZCBieQorICAgSmVucyBPc3RlcmthbXAuCisKKzIwMTEtMDItMTYgMTQ6NTYgIGpzYWZyYW5laworCisgICAqIGxvY2FsL3NubXAtYnJpZGdlLW1pYjoKKworICAgRml4ZWQgc25tcC1icmlkZ2UtbWliIHdoZW4gd29ya2luZyBpbiB0aGUgZW1iZWRkZWQgcGVybC4KKworMjAxMS0wMi0xNiAxMzoxNiAganNhZnJhbmVrCisKKyAgICogbG9jYWwvc25tcC1icmlkZ2UtbWliOgorCisgICBGaXhlZCBHRVRORVhUIHByb2Nlc3NpbmcgaW4gc25tcC1icmlkZ2UtbWliLgorCisyMDExLTAyLTE1IDIyOjI0ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jOgorCisgICBQcm9wZXJseSBzYXZlIGVudHJpZXMgZm9yIE5ldEJTRCBhbmQgRHJhZ29uRmx5CisKKzIwMTEtMDItMTUgMjI6MTggIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jOgorCisgICByZW1vdmUgcmVkdW5kYW50IGluY2x1ZGVzCisKKzIwMTEtMDItMTUgMjE6NDYgIG5iYQorCisgICAqIGNvbmZpZ3VyZToKKworICAgcmVydW4gYXV0b2hlYWRlci9hdXRvY29uZgorCisyMDExLTAyLTE1IDIxOjMzICBuYmEKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaDoKKworICAgaW5jbHVkZSBzeXMvdHlwZXMuaCBiZWZvcmUgc3lzL3NvY2tldC5oCisKKzIwMTEtMDItMTUgMjE6MjYgIG5iYQorCisgICAqIG00L25ldHNubXBfc2VhcmNoX2xpYnMubTQ6CisKKyAgIFRvbyBtdWNoIHF1b3RpbmcgaXMgYmFkCisKKzIwMTEtMDItMTUgMjE6MTEgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS5oLCBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2Lmg6CisKKyAgIEZpeCBJUHY2IFRDUCBhbmQgVURQIHRhYmxlcywgKkJTRCBzdXBwb3J0CisKKzIwMTEtMDItMTUgMjA6NDUgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cFJlc3VsdHNUYWJsZS5jOgorCisgICBLaWxsIGNvbXBpbGVyIHdhcm5pbmdzCisKKzIwMTEtMDItMTUgMjA6NDQgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmM6CisKKyAgIEZpbHRlciBJUHY2IGVudHJpZXMgZnJvbSBJUHY0IHRhYmxlCisKKzIwMTEtMDItMTUgMjA6NDIgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmM6CisKKyAgIFByb3BlciB1c2Ugb2YgZ2V0cHJvYzIgYW5kIGRyYWdvbmZseSBzdXBwb3J0CisKKzIwMTEtMDItMTUgMjA6NDEgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmM6CisKKyAgIGdldHZmc3N0YXQgaXMgb25seSBmb3IgTmV0QlNECisKKzIwMTEtMDItMTUgMjA6MzkgIG5iYQorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgorCisgICBEZXRlY3QgbmVlZCBmb3IgLWxrdm0gaW4gcHJvcGVyIHRpbWUKKworMjAxMS0wMi0xNSAxOTo0MiAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgorCisgICByZW1vdmUgdGhlIHN0YXRlbWVudCBhYm91dCBlbmFibGluZyBzdGRlcnIgYnkgZGVmYXVsdC4KKworMjAxMS0wMi0xNSAxOTo0MiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYzoKKworICAgcmVtb3ZlIDMgZnVuY3Rpb25zIHRoYXQgYXMgZmFyIGFzIEkgY2FuIHRlbGwgaGF2ZSBwb3NzaWJseSBuZXZlcgorICAgYmVlbiB1c2VkCisKKzIwMTEtMDItMTQgMTQ6MzggIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvc25tcGQuYzoKKworICAgRml4ZWQgYSBNaW5HVy1zcGVjaWZpYyBjb21waWxlciB3YXJuaW5nLgorCisyMDExLTAyLTEzIDE2OjI4ICBtYWdmcgorCisgICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgQ0hBTkdFUzogTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBzdGF0aWMgYXBwbGljYXRpb25zIHVzaW5nCisgICBuZXQtc25tcC1jb25maWcgYW5kIHRoZSAtKmxpYnMgZmxhZ3Mgb25jZSBtb3JlLgorCisyMDExLTAyLTEwIDE1OjEzICBkdHMxMgorCisgICAqIHNubXBsaWIvbWliLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxNjU4Nzg6IENhdGNoIGJ1ZmZlciBvdmVycnVuIG9uCisgICA2NC1iaXQgc3lzdGVtcworCisyMDExLTAyLTEwIDE1OjA2ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNTI0MTI6IEhhbmRsZSAoYW5kIHJlcG9ydCkgcHJvYmxlbXMKKyAgIHJlYWRpbmcgL3Byb2Mvdm1zdGF0CisKKzIwMTEtMDItMDkgMDc6MzQgIGJ2YXNzY2hlCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oOgorCisgICBCdWlsZGluZyBETEwgYW5kIFBlcmwgbW9kdWxlcyB3aXRoIHdpbjMyL2J1aWxkLmJhdCB3b3JrcyBhZ2Fpbi4KKworMjAxMS0wMi0wOCAxOTozOCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaDoKKworICAgUmVtb3ZlIHRoZSBmdW5jdGlvbnMgbWFya2VkIGFzIGRlcHJlY2F0ZWQgYW5kIHNhZmUgZm9yIHJlbW92YWwgaW4KKyAgIDUuNi4KKworMjAxMS0wMi0wOCAxNzo0MSAgaGFyZGFrZXIKKworICAgKiBwZXJsL1NOTVAvU05NUC54cywgcGVybC9hZ2VudC9hZ2VudC5wbToKKworICAgQ0hBTkdFUzogcGVybDogcGF0Y2ggZnJvbSBNYXJ0aW4gQnVjazogZG9uJ3QgYWx3YXlzIG9wZW4gc3RkZXJyCisgICBhcyB0aGUgY2FsbHMgdG8gc25tcF9sb2cgYWxyZWFkeSBkbyB0aGlzIGFuZCBpdCBtZXNzZXMgdXAgdGhlCisgICBhZ2VudCB3aGVuIGVtYmVkZGVkCisKKzIwMTEtMDItMDggMTc6MzcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogRml4IGEgc3RybGVuIGNhbGN1bGF0aW9uIGFzIHBvaW50ZWQgb3V0IGJ5CisgICBLb25zdGFudGluIEJheWRhcm92CisKKzIwMTEtMDItMDcgMjA6MDcgIGhhcmRha2VyCisKKyAgICogbWFuL3NubXAuY29uZi41LmRlZjoKKworICAgZG9jdW1lbnQgdGhlIDMgbmV3IFNTSCBjb25maWcgdG9rZW5zCisKKzIwMTEtMDItMDcgMjA6MDcgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYzoKKworICAgQ0hBTkdFUzogbGlibmV0c25tcDogbWFkZSB0aGUgU1NIIHRyYW5zcG9ydCBjb25maWd1cmFibGUgYXMgaXQKKyAgIHNob3VsZCBiZS4KKworMjAxMS0wMi0wNyAyMDowNyAgaGFyZGFrZXIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oOgorCisgICBBZGRlZCBkZWZhdWx0X3N0b3JlIHN0cmluZ3MgZm9yIHNzaDogdXNlcm5hbWUsIHB1YmtleSwgcHJpdmtleQorCisyMDExLTAyLTA2IDA2OjM0ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYzoKKworICAgU2ltcGxpZnkgdGhlIGNvbnRyb2wgZmxvdyB0byBhbGxvdyBmb3IgbW9yZSBvcHRpbWl6YXRpb24uCisKKzIwMTEtMDItMDMgMjI6NDIgIHRhbmRlcnMKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzE3MTg3ODogVXNpbmcgU05NUHYzIGNvbnRleHQgZG9lcyBub3QKKyAgIHdvcmsKKworMjAxMS0wMi0wMiAwNzowOSAgbWFnZnIKKworICAgKiBhZ2VudC9zbm1wZC5jOgorCisgICBJbmNsdWRlIHRoZSBVU0lOR18gdmFyaWFibGVzIGZyb20gdGhlIGFnZW50IGxpYnJhcnkgYXMgd2VsbCwgaW4KKyAgIHBhcnRpY3VsYXIgdGhlCisgICBVU0lOR19BR0VOVFhfKiB2YXJpYWJsZXMuCisKKzIwMTEtMDItMDEgMTM6MDcgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYzoKKworICAgRG9uJ3QgY2hlY2sgZm9yIDMyLzY0Yml0IHdyYXAgaW4gY2FsY3VsYXRlZCBlbnRyaWVzLgorCisyMDExLTAyLTAxIDA5OjQxICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCB0aGUgYWdlbnQgd3JpdGluZyAnbG9va3MgbGlrZSBhIDY0Yml0IHdyYXAsCisgICBidXQgcHJldiE9bmV3JyBpbiBzeXNsb2cgd2hlbiBjb21wdXRpbmcgaXBTeXN0ZW1TdGF0cworICAgCisgICBXaXRob3V0IHRoZSBtZW1jcHksIHByZXZfdmFscy0+c3RhdHMgYW5kIG5ld192YWxzLT5zdGF0cyBjb3VsZAorICAgZ2V0IGRpZmZlcmVudCwKKyAgIHdoaWNoIGNvdWxkIG11Y2ggbXVjaCBsYXRlciAod2hlbiBhIGNvdW50ZXIgZ2V0cyBiaWdnZXIgdGhhbiAzMgorICAgYml0cykgcmVzdWx0CisgICBpbiAncHJldiE9bmV3JyBtZXNzYWdlIGluIHN5c2xvZy4gVHlwaWNhbGx5IHRoaXMgaGFwcGVucyBhZnRlcgorICAgbG9uZyB0aW1lIG9mCisgICB1cHRpbWUgYW5kIGl0IGlzIHZlcnkgaGFyZCB0byByZXByb2R1Y2UuCisKKzIwMTEtMDItMDEgMDc6MTkgIG1hZ2ZyCisKKyAgICogYWdlbnQvc25tcGQuYzoKKworICAgUmVtb3ZlIHNvbWUgdW51c2VkIGluY2x1ZGVzCisKKzIwMTEtMDEtMzEgMjI6MzkgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jOgorCisgICBhZGRwcm90b3R5cGVzIGFuZCByZW1vdmUgdW51c2VkIHZhcnMKKworMjAxMS0wMS0zMSAyMjozNyAgbmJhCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb24uaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZVRhYmxlLmMsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L2luZXQ2LmM6CisKKyAgIGNvbnN0IGp1Z2dsaW5nIHRvIHJlbW92ZSB3YXJuaW5ncworCisyMDExLTAxLTMxIDIyOjMwICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzoKKworICAgZGlza2lvIGZvciBkcmFnb25mbHkKKworMjAxMS0wMS0zMSAyMjoyOCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jOgorCisgICBwcm9wZXJseSBuYW1lIGluaXRhbGl6ZXIgZnVuY3Rpb24gZm9yIGNwdV9raW5mbworCisyMDExLTAxLTMwIDE1OjIxICBtYWdmcgorCisgICAqIGFwcHMvYWdlbnR4dHJhcC5jOgorCisgICBSZWR1Y2UgdGhlIG51bWJlciBvZiB1c2VkIGluY2x1ZGUgZmlsZXMuCisKKzIwMTEtMDEtMzAgMDk6MzUgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogQWRkIG1pc3NpbmcgZnVuY3Rpb24gZGVjbGFyYXRpb24KKworMjAxMS0wMS0zMCAwMTowNiAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzMTUxODk3OiBmZCBsZWFrIHcvIC9wcm9jL3BhcnRpdGlvbnMKKyAgIHJlYWQgaW4gZGlza2lvCisKKzIwMTEtMDEtMjkgMjM6MzYgIHRhbmRlcnMKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jOgorCisgICBORVdTOiBzbm1wZDogQlVHOiAzMTY2NTY4OiBoclN5c3RlbVByb2Nlc3NlcyBtaXNzaW5nIGluIDUuNi81LjYuMQorCisyMDExLTAxLTI3IDA5OjM1ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIEFmdGVyIHRlbiB5ZWFycyBpbnRlbnNpdmUgdXNlLCBhbiAiZXhwZXJpbWVudGFsIgorICAgZmVhdHVyZSBjYW4gcHJvYmFibHkgYmUgcmVsZWFzZWQgZm9yIGdlbmVyYWwgdXNlLgorCisyMDExLTAxLTI2IDE2OjUwICBoYXJkYWtlcgorCisgICAqIGxvY2FsL21pYjJjOgorCisgICBDSEFOR0VTOiBtaWIyYzogbWFrZSB0aGUgbWliMmMgZm9yZWFjaCByYW5nZXMgd29yayBhcyBhZHZlcnRpc2VkCisgICBpbiB0aGUgY29tbWVudHMuCisKKzIwMTEtMDEtMjYgMTY6NDkgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI3c25tcHYzRGVmYXVsdHNfc2ltcGxlOgorCisgICBhIHRlc3QgdG8gZW5zdXJlIHYzL1VTTSBzbm1wLmNvbmYgc2V0dGluZ3Mgd29yaworCisyMDExLTAxLTI2IDE2OjQ5ICBoYXJkYWtlcgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOgorCisgICByZW1vdmUgdGVzdG9wdHMKKworMjAxMS0wMS0yNiAwOToxMiAganNhZnJhbmVrCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgcmFyZSByYWNlIGNvbmRpdGlvbiB3aGVuIGNvdW50aW5nIHByb2Nlc3NlcworICAgZm9yIFVDRC1TTk1QLU1JQjo6cHJUYWJsZQorICAgCisgICBUaGUgWFggcHJvY2VzcyBjYW4gZXhpdCBhZnRlciBmb3BlbigvcHJvYy9YWC9zdGF0dXMpIGFuZCBiZWZvcmUKKyAgIGZnZXRzKCkgZnJvbSBpdC4gc25tcGQgc2hvdWxkIGNvbnRpbnVlIHdpdGggb3RoZXIgcHJvY2Vzc2VzIGFuZAorICAgbm90IHRvIHN0b3AuCisKKzIwMTEtMDEtMTkgMTM6NTcgIGpzYWZyYW5laworCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOgorCisgICBNYWtlIHVzIGNvbXBhdGlibGUgd2l0aCBycG0tNC45LCBycG1HZXRGaWxlc3lzdGVtTGlzdCBkb2VzIG5vdAorICAgZXhpc3QgYW55bW9yZSwgc28gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgc2hvdWxkIG5vdCBjaGVjayBpdC4KKworMjAxMS0wMS0xOSAwNjozMSAgbmJhCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOgorCisgICBkaXNrSU9MQXggcmVxdWlyZXMgZXhwIHdoaWNoIG1heSByZXF1aXJlIC1sbQorCisyMDExLTAxLTE4IDIyOjM5ICBuYmEKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBhdXRvaGVhZGVyCisKKzIwMTEtMDEtMTggMjI6MzcgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaDoKKworICAgRmluZCBwcm9wZXIgaWYtbWliIGludGVyZmFjZSBmb3IgTmV0QlNECisKKzIwMTEtMDEtMTggMjI6MzYgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKKworICAgdHlwbworCisyMDExLTAxLTE4IDIyOjM1ICBuYmEKKworICAgKiBhY2NvbmZpZy5oOgorCisgICBkZWZpbmUgZHJhZ29uZmx5aWQKKworMjAxMS0wMS0xNCAxMzoyNCAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICBBZGQgSVB2NiBzdXBwb3J0IGZvciBjcmVhdGluZyByb3dzIGluIGlwQWRkcmVzc3RhYmxlLgorICAgCisgICBVc2luZyBTTk1QIFNFVCwgaXQgaXMgbm93IHBvc3NpYmxlIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSBJUHY2CisgICBhZGRyZXNzZXMgb24gYW4gaW50ZXJmYWNlLgorCisyMDExLTAxLTE0IDEyOjI4ICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gUm9iZXJ0IFN0b3J5OiBmaXhlZCBhZGRpbmcgbmV3IGFkZHJlc3NlcyB0bworICAgaXBBZGRyZXNzVGFibGUKKyAgIAorICAgTG9uZyB0aW1lIGFnbywgdGhlcmUgd2FzIGEgYnVncmVwb3J0WzFdIHJlZ2FyZGluZyBpcEFkZHJlc3NUYWJsZQorICAgb24KKyAgIG5ldC1zbm1wLWNvZGVycyBsaXN0IGFuZCByc3RvcnkncyBleHBlcmltZW50YWwgcGF0Y2ggd2l0aG91dCBhbnkKKyAgIGZlZWRiYWNrLgorICAgTm93IEkndmUgZ290IGZldyBjb21wbGFpbnRzIHRoYXQgU05NUCBTRVQgb24gaXBBZGRyZXNzVGFibGUKKyAgIHByb2R1Y2VzIHRoZQorICAgc2FtZSBlcnJvcnMgYW5kIGd1ZXNzIHdoYXQsIHRoZSBwYXRjaCBmaXhlcyB0aGVtLgorICAgCisgICBbMV06CisgICBodHRwOi8vc291cmNlZm9yZ2UubmV0L21haWxhcmNoaXZlL2ZvcnVtLnBocD90aHJlYWRfbmFtZT0yMDA2MDkyMDEzNDkzNS4zNWIzNmVkNiU0MGRldi5mdXR6Lm9yZyZmb3J1bV9uYW1lPW5ldC1zbm1wLWNvZGVycworCisyMDExLTAxLTE0IDA2OjI1ICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKKworICAgcmVtb3ZlIGNvbXBsZXRlbHkgdXNlbGVzcyBhbmQgbm9uc2Vuc2ljYWwgY29kZQorCisyMDExLTAxLTEzIDE3OjI0ICByc3RvcnkKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgYWxsb2NhdGUgc3BhY2UgZm9yIGFycmF5IE5VTEwgdGVybWluYXRpb24KKworMjAxMS0wMS0xMyAxNTo1NiAgZHRzMTIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgRW5zdXJlIHJlbGVhc2VzIGFyZSBpbnN0YWxsZWQgdG8gdGhlIGNvcnJlY3QgcGF0aCB3aXRoaW4gdGhlCisgICAvdGFncyBTVk4gdHJlZQorCisyMDExLTAxLTEzIDE1OjE1ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuYzoKKworICAgUmVtb3ZlIEMrKyBjb21tZW50cworCisyMDExLTAxLTEzIDEzOjE3ICBkdHMxMgorCisgICAqIGFnZW50L2F1dG9fbmxpc3QuYzoKKworICAgRml4IGJyb2tlbiBwYXRjaAorCisyMDExLTAxLTEzIDEyOjE0ICBkdHMxMgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOgorCisgICBDb25maWd1cmUgZml4ZXMgZm9yIERyYWdvbkZseSBzdXBwb3J0CisKKzIwMTEtMDEtMTMgMTI6MDQgIGR0czEyCisKKyAgICogIGFnZW50L2F1dG9fbmxpc3QuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RyYWdvbmZseS5oOgorCisgICBDb2RlIGZpeGVzIGZvciBEcmFnb25GbHkgc3VwcG9ydAorCisyMDExLTAxLTEzIDExOjMzICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfbmV0YnNkLmM6CisKKyAgIEZpeCB0eXBvCisKKzIwMTEtMDEtMTIgMjE6MjMgIHJzdG9yeQorCisgICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYzoKKworICAgbWVyZ2UgZHVwbGljYXRlZCBzaHV0ZG93biBmdW5jdGlvbnMKKworMjAxMS0wMS0xMiAyMDoxMSAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oOgorCisgICBSZWltcGxlbWVudCBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMigpIGJ5IGFkZGluZyB0aGUgZmxhZworICAgTkVUU05NUF9JVEVSQVRPUl9PV05TX0lJTkZPIGZvcgorICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvLiBSZW1vdmUKKyAgIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yX2hhbmRsZXIyKCkgYmVjYXVzZSBpdCBpcyBub3cKKyAgIHN1cGVyZmx1b3VzLgorCisyMDExLTAxLTEyIDE5OjIyICBidmFzc2NoZQorCisgICAqIGFnZW50L3NubXBfdmFycy5jOgorCisgICBBdm9pZCB0aGF0IHRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgYSBtaXNzaW5nIGRlY2xhcmF0aW9uIGZvcgorICAgbmV0c25tcF9jZXJ0c19hZ2VudF9pbml0KCkuCisKKzIwMTEtMDEtMTIgMTk6MjAgIGJ2YXNzY2hlCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFBhcmFtZXRlcnMvdXNtREhQYXJhbWV0ZXJzLmM6CisKKyAgIEdldCByaWQgb2YgYSBjb21waWxlciB3YXJuaW5nIGluCisgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFBhcmFtZXRlcnMvdXNtREhQYXJhbWV0ZXJzLmMuCisKKzIwMTEtMDEtMTIgMTk6MDQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyAoZm9ybWF0IHNwZWNpZmljYXRpb24gbWlzbWF0Y2gpIHRoYXQgd2FzCisgICBpbnRyb2R1Y2VkCisgICBpbiByMTk4MDggKCJzbm1wZDogUEFUQ0hFUzogMjk3NTI1NDogQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mCisgICBjbG9zZWQgc2Vzc2lvbnMiKS4KKworMjAxMS0wMS0xMiAxNTowMyAgcnN0b3J5CisKKyAgICogIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYzoKKworICAgQ0hBTkdFUzogc25tcDogcGF0Y2g6IDMwOTY3MjU6IHN5c09SVGFibGUgcmVnaXN0YXRpb24gZm9yCisgICBub3RpZmljYXRpb24gbG9nIG1pYgorICAgCisgICBvcmlnaW5hbCBwYXRjaCBmaXhlZCBzZXZlcmFsIGlzc3Vlcywgb3RoZXIgcGFydHMgYXBwbGllZCBlYXJsaWVyCisKKzIwMTEtMDEtMTEgMTc6MjcgIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oOgorCisgICBkbyBub3QgaW5jbHVkZSBpcHY2IHN0cnVjdCBpZiBpcHY2IGlzIG5vdCBlbmFibGVkCisKKzIwMTEtMDEtMTEgMTY6MDQgIGR0czEyCisKKyAgICogb3YvVUNELWZpZWxkcywgb3Yvb2lkX3RvX3N5bS5pbiwgb3Yvb2lkX3RvX3R5cGUuaW46CisKKyAgIFJlY29nbmlzZSBBZ2VudCBPSUQgZm9yIERyYWdvbkZseSBzeXN0ZW1zIChhbmQgZ2VuZXJhbCB0aWR5aW5nCisgICB1cCkKKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorICAgCisgICBRbjogU2hvdWxkIHRoZXNlIGJlIHVwZGF0ZWQgdG8gcmVmZXIgdG8gTmV0LVNOTVAgKHJhdGhlciB0aGFuCisgICBVQ0QpPworCisyMDExLTAxLTExIDE2OjAxICBkdHMxMgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBtaWJzL05FVC1TTk1QLVRDLnR4dCwgICAKKyAgICAgIG1pYnMvVUNELVNOTVAtTUlCLnR4dCwgc2Vkc2NyaXB0LmluOgorCisgICBEZWZpbmUgQWdlbnQgT0lEIGZvciBEcmFnb25GbHkgc3lzdGVtcworICAgKGFuZCBnZW5lcmFsIHRpZHlpbmcgdXApCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKworMjAxMS0wMS0xMSAxNToyNyAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jOgorCisgICBOZXRCU0QgRHJhZ29uRmx5IHN1cHBvcnQgZm9yIFVEUCAmIFRDUCB0YWJsZXMKKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTExIDE0OjQxICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmM6CisKKyAgIENIQU5HRVM6IE5ldEJTRDogRHJhZ29uRmx5IHN1cHBvcnQKKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTExIDE0OjM2ICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzOgorCisgICBOZXRCU0QvRHJhZ29uRmx5ICdzdHJ1Y3QgaWZuZXQnIHJlcXVpcmVzIEtFUk5FTCwgYnV0IG5vdCBfS0VSTkVMCisgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KKyAgIChJIGhvcGUgSSd2ZSBnb3QgdGhpcyBvbmUgcmlnaHQhKQorCisyMDExLTAxLTExIDEzOjM0ICBqc2FmcmFuZWsKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogZnJvbSBCaWxsIEZlbm5lcjogZml4IHNlbmRpbmcgb2YgVURQIHJlc3BvbnNlcworICAgZnJvbSBtdWx0aWhvbWVkIGFnZW50cy4KKyAgIAorICAgVHJ5IHRvIHNlbmQgdGhlIHJlc3BvbnNlIGFzIGl0IHdhcyBiZWZvcmUgTmV0LVNOTVAgNS42IChhc3N1bWluZworICAgdGhlIGFwcHJvcHJpYXRlIHJlcXVlc3Qgd2FzIHVuaWNhc3QpIGFuZCBvbmx5IGlmIGl0IGZhaWxzIHRyeSB0bworICAgc2V0IGlmX2luZGV4ICh0aGUgcmVxdWVzdCBtdXN0IGJlIGJyb2FkY2FzdCkuCisKKzIwMTEtMDEtMTEgMTM6MjIgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOgorCisgICBSZWFsbHkgaGFuZGxlIHN5c3RlbXMgd2l0aCAnc3RydWN0IHRpbWVzcGVjIGlmbmV0LmlmX2xhc3RjaGFuZ2UnCisgICAobWlzc2luZyBlbGVtZW50IGZyb20gU1ZOIHJldmlzaW9uIDE5ODQxKQorCisyMDExLTAxLTExIDEyOjI0ICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6CisKKyAgIEFkZGl0aW9uYWwgaGVhZGVycyB3aGVuIHRlc3RpbmcgZm9yIElQdjYgaGVhZGVycworICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTI6MTQgIGR0czEyCisKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmM6CisKKyAgIE1pc3NpbmcgdHlwZSB1bmRlciBkYXJ3aW4KKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTExIDEyOjEwICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgorCisgICBOZXRCU0Qgc3VwcG9ydCBmb3IgRGlzayBJL08gc3RhdHMKKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTExIDEyOjAxICBkdHMxMgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIEhhbmRsZSBzeXN0ZW1zIHdpdGggJ3N0cnVjdCB0aW1lc3BlYyBpZm5ldC5pZl9sYXN0Y2hhbmdlJyAocmF0aGVyCisgICB0aGFuIHN0cnVjdCB0aW1ldmFsKQorICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTE6MjcgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5oLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuaDoKKworICAgUHVsbCBpbiBrZXJuZWxfbmV0YnNkIG1vZHVsZSB3aGVuIHJlcXVpcmVkCisgICBbQmFzZWQgb24gZml4IGZyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTEgMTA6MzYgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaDoKKworICAgQ0hBTkdFUzogTmV0QlNEOiBSZXRyaWV2ZSBNSUItSUkgbmV0d29yayBzdGF0aXN0aWNzIHZpYSBzeXNjdGwKKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTExIDA3OjA0ICBuYmEKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CisKKyAgIEZpeCBmb3IgcGNpX2xvb2t1cF9uYW1lIGFuZCBSSEVMNAorCisyMDExLTAxLTEwIDE2OjU2ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmM6CisKKyAgIEFkZCBzdXBwb3J0IGZvciBkYXJ3aW4KKyAgIChUaGUgcGF0Y2ggZnJvbSB0aGUgTmV0QlNEIGFyY2hpdmUgYXBwZWFycyB0byBiZSBlc3NlbnRpYWxseSB0aGUKKyAgIHNhbWUgYXMgdGhlIGVxdWl2YWxlbnQgY29kZSBmcm9tIHRoZSBPcGVuQlNEIHBhdGNoIGFyY2hpdmUpCisKKzIwMTEtMDEtMTAgMTY6NTQgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmM6CisKKyAgIEFkZCBzdXBwb3J0IGZvciBkYXJ3aW4KKyAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTEwIDE0OjU1ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYzoKKworICAgQ0hBTkdFUzogTmV0QlNEOiBVcGRhdGUgbWVtb3J5IGFuZCBDUFUgc3RhdGlzdGljcyBoYW5kbGluZworICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMTAgMTQ6MjIgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmM6CisKKyAgIEZpeCBkaXZpZGUtYnktemVybyBlcnJvciBpbiBDUFUgcGVyZm9ybWFuY2Ugc3RhdGlzdGljcworICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDkgMjI6NTQgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYywgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgorCisgICBDSEFOR0VTOiBPcGVuQlNEOiBVcGRhdGUgU1dSdW4gY29kZSB0byB1c2Uga3ZtX2dldHByb2MyCisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDkgMjE6MzAgIGR0czEyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczoKKworICAgQ0hBTkdFUzogYnVpbGQ6IE9wZW5CU0Q6IEZpeCBvcmRlciBvZiBoZWFkZXJzIHdoZW4gY2hlY2tpbmcKKyAgIDxuZXRpbmV0L2luX3BjYi5oPgorICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTA5IDE5OjQ0ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmM6CisKKyAgIEFtZW5kIGhvdyBtdWx0aS1DUFUgc3RhdGlzdGljcyBhcmUgcmV0cmVpdmVkIHVzaW5nIHN5c2N0bCBvbgorICAgT3BlbkJTRCBzeXN0ZW1zCisgICAoaWYgdGhpcyBibG9jayB3YXMgYWN0aXZlLCB3aGljaCBpdCBpc24ndCwgYnV0IHRoYXQncyBub3QKKyAgIGltcG9ydGFudCByaWdodCBub3QpCisgICBbQmFzZWQgb24gT3BlbkJTRCBwYXRjaCBhcmNoaXZlLCBhbWVuZGVkIChwcm9iYWJseSB3cm9uZ2x5KSBieQorICAgRFRTXQorCisyMDExLTAxLTA5IDE4OjEzICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYzoKKworICAgc3lzY3RsIHRha2VzIGEgJ3NpemVfdCcgdmFyaWFibGUgZm9yIHRoZSBzaXplIHBhcmFtZXRlcgorCisyMDExLTAxLTA5IDE4OjExICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa2luZm8uYzoKKworICAgc3lzY3RsIHRha2VzIGEgJ3NpemVfdCcgdmFyaWFibGUgZm9yIHRoZSBzaXplIHBhcmFtZXRlcgorCisyMDExLTAxLTA4IDA4OjMwICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfc2VjdXJpdHlfbW9kdWxlczoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IEZpeCAtLXdpdGgtc2VjdXJpdHktbW9kdWxlcyBoYW5kbGluZworICAgQWxsb3cgcmVwZWF0ZWQgbW9kdWxlcyAodHNtLHRzbSkgYXMgd2VsbCBhcyBkZWZhaWx0IG1vZHVsZXMgKHVzbSkKKyAgIE1vdmUgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGZpbGVzIGFmdGVyIHRoZSBjaGVja2luZworCisyMDExLTAxLTA4IDAwOjQ3ICBtYWdmcgorCisgICAqIGFjY29uZmlnLmgsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFVwZGF0ZSBhY2NvbmZpZy5oIHdpdGggY2hhbmdlcyBmcm9tIHIxOTgxOS4KKyAgIFJlcnVuIGF1dG9oZWFkZXIuCisKKzIwMTEtMDEtMDcgMjA6NTYgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYzoKKworICAgQ0hBTkdFUzogT3BlbkJTRDogU3VwcG9ydCB1cGRhdGluZyB0aGUgcm91dGluZyB0YWJsZQorICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTA3IDIwOjI5ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmM6CisKKyAgIFNldCAnbmV4dCcgZmllbGQgZm9yIHVkcCBlbnRyeSBsaW5rZWQgbGlzdCBvbiBPcGVuQlNENAorICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQorICAgCisgICBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBzZXQgaW4gPG5ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmg+CisKKzIwMTEtMDEtMDcgMjA6MTIgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmM6CisKKyAgIFVzZSBhIHN1aXRhYmxlIGNvbnN0YW50IGZvciBDV0QgYnVmZmVyIHNpemUKKyAgIFtCYXNlZCBvbiBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMjA6MDcgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOgorCisgICBNb3ZlIGdsb2JhbCB2YXJpYWJsZSBpbnRvIHRoZSBtZXRob2Qgd2hlcmUgaXQncyB1c2VkLgorICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTA3IDE2OjQ4ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmM6CisKKyAgIEhhbmRsZSBzeXN0ZW1zIHdpdGhvdXQgSUZNX1RPS0VOCisgICBbRnJvbSBPcGVuQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTQ6MzggIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9mcmVlYnNkLmM6CisKKyAgIFVwZGF0ZSByZXRyaWV2YWwgb2YgY2FjaGUgdXNhZ2Ugc3RhdGlzdGljcyBvbiBGcmVlQlNECisgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTQ6MjAgIGR0czEyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgSW5jcmVhc2UgbWF4aW11bSBzaXplIG9mIGV4ZWN1dGUgb3V0cHV0IGNhY2hlCisgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTQ6MDkgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jOgorCisgICBSZW1vdmUgZHVwbGljYXRlIGluY2x1ZGUgZGlyZWN0aXZlcworICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTM6NDcgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYzoKKworICAgSGFuZGxlIHN5c3RlbXMgd2hlcmUgUlRGX0xMSU5GTyBpcyBub3QgZGVmaW5lZAorICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTA3IDEzOjQwICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzoKKworICAgSW5jbHVkZSB6ZnMgbW91bnQgcG9pbnRzIGZvciBkaXNrIHJlcG9ydHMgdW5kZXIgRnJlZUJTRAorICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTA3IDEzOjM0ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaDoKKworICAgUHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlLWluY2x1c2lvbgorICAgW0Zyb20gRnJlZUJTRCBwYXRjaGVzIGFyY2hpdmVdCisKKzIwMTEtMDEtMDcgMTM6MjQgIGR0czEyCisKKyAgICogIHNubXBsaWIvY2FsbGJhY2suYywgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMsIHNubXBsaWIva2V5dG9vbHMuYywgIAorICAgICAgIHNubXBsaWIvbGNkX3RpbWUuYywgc25tcGxpYi9taWIuYywgc25tcGxpYi9wYXJzZS5jLCAgIAorICAgICAgc25tcGxpYi9zY2FwaS5jLCBzbm1wbGliL3NubXBfYXV0aC5jLCBzbm1wbGliL3NubXBfZGVidWcuYywgICAKKyAgICAgIHNubXBsaWIvc25tcF9sb2dnaW5nLmMsIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYywgICAKKyAgICAgIHNubXBsaWIvc25tcHVzbS5jLCBzbm1wbGliL3Rvb2xzLmM6CisKKyAgIEluY2x1ZGUgPHVuaXN0ZC5oPgorICAgW0Zyb20gQlNEIHBhdGNoZXMgYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxMzoyMSAgZHRzMTIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIEF2b2lkIGNhbGxiYWNrIHJlLXVzZSBvZiBjbG9zZWQgc2Vzc2lvbnMuCisgICAoUGFydCBvZiBwYXRjaCAjMjk3NTI1NCAtIHNlZSBTVk4gcmV2aXNpb24gMTk4MDgpCisKKzIwMTEtMDEtMDcgMTI6NTUgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jOgorCisgICBGcmVlQlNEIHVzZXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgbmFtaW5nIHNjaGVtZSBmb3Igc3RydWN0IGlmcmVxCisgICBbRnJvbSBGcmVlQlNEIHBhdGNoZXMgYXJjaGl2ZV0KKworMjAxMS0wMS0wNyAxMjoyMiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jOgorCisgICBFbnN1cmUgVENQIHRhYmxlIGluZm9ybWF0aW9uIGlzIGxvYWRlZCBiZWZvcmUgY291bnRpbmcKKyAgIGNvbm5lY3Rpb25zCisgICBbRnJvbSBGcmVlQlNEIHBhdGNoIGFyY2hpdmVdCisKKzIwMTEtMDEtMDYgMTk6MzUgIGhhcmRha2VyCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC5wbToKKworICAgRml4IGRvY3VtZW50YXRpb24gYnVnIHBvaW50ZWQgb3V0IGluIGNwYW4gYnVnICM1MjYxOAorCisyMDExLTAxLTA2IDE0OjExICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk3NTI1NDogQXZvaWQgY2FsbGJhY2sgcmUtdXNlIG9mIGNsb3NlZAorICAgc2Vzc2lvbnMKKyAgIAorICAgUW46IFNob3VsZCB0aGlzIGFsc28gYmUgYXBwbGllZCB3aGVuIG1haW4gc2Vzc2lvbiBpcyBOVUxMPworCisyMDExLTAxLTA2IDEzOjIxICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgICBGaXggbWlzbGVhZGluZyBpbmRlbnRhdGlvbgorICAgCisgICBRbjogU2hvdWxkIHRoaXMgY2FsbCAnc3ViYWdlbnRfc3RhcnR1cCcgcmF0aGVyIHRoYW4KKyAgICdhZ2VudHhfcmVvcGVuX3Nlc3Npb24nPworICAgUW46IFdoeSBkb2Vzbid0IHRoaXMgYXR0ZW1wdCB0byByZS1vcGVuIHRoZSBzZXNzaW9uIGlmIGl0IHdhcworICAgb3JpZ2luYWxseSBOVUxMPworCisyMDExLTAxLTA2IDEyOjQ2ICBkdHMxMgorCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDI5NDE4MTE6IEhhbmRsZSBzdWNjZXNzZnVsIHJlcXVlc3RzIHdpdGgKKyAgIHJlcUlEIDAKKworMjAxMS0wMS0wNiAwOTozOCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmM6CisKKyAgIFNwZWxsaW5nIGZpeDogSW5pdGlhbHppZXMgLT4gSW5pdGlhbGl6ZXMuCisKKzIwMTEtMDEtMDYgMDk6MzUgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEFkZGVkIG5ldHNubXBfZ2V0X3RhYmxlX2l0ZXJhdG9yMigpLgorICAgQ0hBTkdFUzogYWdlbnQ6IEFkZGVkIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKCkuCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgbmV0c25tcF9oYW5kbGVyX293bnNfaXRlcmF0b3JfaW5mbygpLgorICAgQ0hBTkdFUzogYWdlbnQ6IEZpeGVkIGxlYWstYXQtZXhpdCB0cmlnZ2VyZWQgYnkgc25tcE5vdGlmeVRhYmxlLgorICAgQ0hBTkdFUzogYWdlbnQ6IEZpeGVkIGxlYWstYXQtZXhpdCB0cmlnZ2VyZWQgYnkKKyAgIHNubXBUYXJnZXRBZGRyVGFibGUuCisgICBBbHNvLCByZXN0b3JlZCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBvZgorICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcigpLgorCisyMDExLTAxLTA2IDA0OjQ1ICByc3RvcnkKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaDoKKworICAgaW5jbHVkZSBzeXMvc29ja2V0LmggaWYgYXZhaWxhYmxlCisKKzIwMTEtMDEtMDUgMTQ6MDYgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTM0MzIzOiBGaXggY3Jhc2ggd2hlbiBjb21wYXJpbmcgaW52YWxpZAorICAgT0lEcworCisyMDExLTAxLTA1IDE0OjA0ICBkdHMxMgorCisgICAqIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIENIQU5HRVM6IHNubXB0cmFwZDogQlVHUzogMzE1MTI1NDogRml4IGNyYXNoIHdpdGggaW52YWxpZAorICAgdHJhcGhhbmRsZSBkaXJlY3RpdmUKKworMjAxMS0wMS0wNSAwOTo1NSAgZHRzMTIKKworICAgKiBhcHBzL3NubXB3YWxrLmM6CisKKyAgIEV4cGFuZCB0YWIgY2hhcmFjdGVycworCisyMDExLTAxLTA0IDIyOjA2ICBtYWdmcgorCisgICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogQ2hlY2sgdGhhdCB0aGUgYXJndW1lbnQgdG8KKyAgIG5ldHNubXBfdHJhbnNwb3J0X2NvcHkgaXMgbm9uLU5VTEwKKworMjAxMS0wMS0wNCAxODoyNCAgaGFyZGFrZXIKKworICAgKiBDT1BZSU5HOgorCisgICBDb3B5cmlnaHQgdXBkYXRlIGZvciAyMDExCisKKzIwMTEtMDEtMDQgMTI6MDEgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6CisKKyAgIEZpeCBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIFdpbjMyIE1JQi1JSQorICAgaW1wbGVtZW50YXRpb24uCisKKzIwMTEtMDEtMDMgMTk6NDggIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYzoKKworICAgUmVtb3ZlZCB0d28gdW51c2VkIHZhcmlhYmxlcy4KKworMjAxMS0wMS0wMyAxOTo0NyAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIEZpeGVkIGEgcmVjZW50bHkgaW50cm9kdWNlZCBtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCBzcGVjaWZpY2F0aW9uCisgICBhbmQgYXJndW1lbnQgbGlzdC4KKworMjAxMS0wMS0wMyAxOTo0NyAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzoKKworICAgR2V0IHJpZCBvZiByZWNlbnRseSBpbnRyb2R1Y2VkIGNvbXBpbGVyIHdhcm5pbmdzIGJ5IGFkZGluZyB0d28KKyAgICNpbmNsdWRlIGRpcmVjdGl2ZXMgYW5kIGNvbW1lbnRpbmcgb3V0IHR3byB1bnVzZWQgZnVuY3Rpb25zLgorCisyMDExLTAxLTAyIDA1OjQ4ICByc3RvcnkKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jOgorCisgICBkb24ndCBmcmVlIGNhbGxlcnMgcHRyCisKKzIwMTEtMDEtMDIgMDU6NDggIHJzdG9yeQorCisgICAqICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgYWdlbnQvc25tcF9hZ2VudC5jLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9pZi5jLCBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYywgICAKKyAgICAgIHNubXBsaWIva2V5dG9vbHMuYywgc25tcGxpYi9taWIuYywgc25tcGxpYi9zbm1wX2FwaS5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdjMuYywgc25tcGxpYi90b29scy5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5jLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvc25tcHYzL1QwNDBrZXltYW5hZ2V0ZXN0X2NhcHAuYzoKKworICAgY2xlYW4gdXAgU05NUF9GUkVFIHVzYWdlCisKKzIwMTEtMDEtMDIgMDU6NDcgIHJzdG9yeQorCisgICAqIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYzoKKworICAgZml4IGN1dC1uLXBhc3RlIGVycm9yIGluIGRlYnVnIHRva2VuCisKKzIwMTEtMDEtMDIgMDU6NDcgIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oOgorCisgICBmaXggZnVuY3Rpb24gbmFtZSBpbiBwcm90b3R5cGUKKworMjAxMS0wMS0wMiAwNTo0NiAgcnN0b3J5CisKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIGZpeCBjb21waWxlciB3YXJuaW5nCisKKzIwMTEtMDEtMDIgMDU6NDYgIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCwgc25tcGxpYi9jb250YWluZXIuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogcmVtb3ZlIGlubGluZSB2ZXJzaW9ucyBvZiBjb250YWluZXIgZnVuY3MKKworMjAxMS0wMS0wMiAwNTo0NiAgcnN0b3J5CisKKyAgICogc25tcGxpYi9jZXJ0X3V0aWwuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogZG9udCByZXR1cm4gZW1wdHkgYXJyYXkKKworMjAxMS0wMS0wMiAwNTo0NiAgcnN0b3J5CisKKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWYsIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5jOgorCisgICBmaXggdHlwb3MvZ3JhbW1hciBpbiBtYW4gcGFnZXMvY29tbWVudHMgKG5vIGNvZGUgY2hhbmdlcykKKworMjAxMS0wMS0wMiAwNTo0NSAgcnN0b3J5CisKKyAgICogIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYywgcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOgorCisgICBORVdTOiBzbm1wbGliOiBhZGQgbmV3IHRyYW5zcG9ydCBjb25maWcgdG9rZW5zCisgICBsb2NhbENlcnQvcGVlckNlcnQsCisgICBkZXByZWNhdGUgb3VyX2lkZW50aXR5LCB0aGVpcl9pZGVudGl0eQorCisyMDExLTAxLTAyIDA1OjQ1ICByc3RvcnkKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwgbWFuL3NubXBjbWQuMS5kZWYsICAgCisgICAgICBtYW4vc25tcGQuY29uZi41LmRlZiwgc25tcGxpYi9jZXJ0X3V0aWwuYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOgorCisgICBORVdTOiBzbm1wbGliOiBpbnRyb2R1Y2UgbmV3IGxvY2FsQ2VydC9wZWVyQ2VydCwgZGVwcmVjYXRlCisgICBzZXJ2ZXJDZXJ0LCBjbGllbnRDZXJ0LCBkZWZYNTA5U2VydmVyUHViLCBkZWZYNTA5Q2xpZW50UHViCisKKzIwMTEtMDEtMDIgMDU6NDQgIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oLCAgIAorICAgICAgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYywgCisgICAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmM6CisKKyAgIE5FV1M6IHNubXBsaWI6IGFkZCBJUHY2IHN1cHBvcnQgdG8gRFRMU1VEUCB0cmFuc3BvcnQKKyAgIENIQU5HRVM6IHNubXBsaWI6IHVzZSBuZXcgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlIGluCisgICBuZXRzbm1wX2FkZHJfcGFpcgorICAgQ0hBTkdFUzogc25tcGxpYjogYWRkIGJhc2VfdHJhbnNwb3J0IHB0ciBmb3IgdHVubmVsZWQgdHJhbnNwb3J0cworCisyMDExLTAxLTAyIDA1OjQyICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBza2lwIG5vbi1BRl9JTkVUIGludGVyZmFjZXMgd2hlbiBsb2FkaW5nIGlwdjQKKyAgIGFkZHJzCisKIDIwMTAtMTItMjkgMDE6MzcgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CkBAIC05Mzk3LDM3ICszNDU0MCw2IEBACiAKICAgIE5FV1M6IHNubXBkOiBQYXRjaCBmcm9tIE5pZWxzIHRvIGZpeCBWQUNNIHBlcnNpc3RhbnQgc3RvcmFnZS4KIAotMjAxMC0xMi0yMSAxNjozMyAgaGFyZGFrZXIKLQotICAgKiBDSEFOR0VTOgotCi0gICBmaXhlZCB0aGUgTkVXUyBmaWxlIHRvIG1lbnRpb24gNS42LjEgaW5zdGVhZCBvZiA1LjcKLQotMjAxMC0xMi0yMSAxNjozMiAgaGFyZGFrZXIKLQotICAgKiBORVdTOgotCi0gICBmaXhlZCB0aGUgTkVXUyBmaWxlIHRvIG1lbnRpb24gNS42LjEgaW5zdGVhZCBvZiA1LjcKLQotMjAxMC0xMi0yMSAxNTo1MCAgaGFyZGFrZXIKLQotICAgKiBDSEFOR0VTOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDEwLTEyLTIxIDE1OjA4ICBoYXJkYWtlcgotCi0gICAqIGNvbmZpZ3VyZToKLQotICAgZml4ZWQgYXV0b2NvbmYgdmVyc2lvbgotCi0yMDEwLTEyLTIxIDE1OjA3ICBoYXJkYWtlcgotCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCi0gICAgICBkaXN0L25ldC1zbm1wLnNwZWM6Ci0KLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCiAyMDEwLTEyLTIxIDExOjI5ICBkdHMxMgogCiAgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOgpAQCAtOTQ2MSwxMiArMzQ1NzMsNiBAQAogICAgQ0hBTkdFUzogc25tcGQ6IFBhdGNoIGZyb20gQ2xhdXMgS2xlaW4gdG8gZml4IGVuZ2luZWlkIGdlbmVyYXRpb24KICAgIG9uIG91dGdvaW5nIHYzIHRyYXBzIGZyb20gdGhlIGFnZW50CiAKLTIwMTAtMTItMTAgMDU6MTkgIGhhcmRha2VyCi0KLSAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6Ci0KLSAgIGZpeCBtYWtlIHRlc3Qgb3B0aW9ucwotCiAyMDEwLTEyLTA4IDEzOjE3ICBqc2FmcmFuZWsKIAogICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmM6CkBAIC05NDgwLDI1ICszNDU4Niw2IEBACiAgICB0aGUgbG9hZGluZwogICAgb2YgdGhlIGxpc3QgYSBiaXQuCiAKLTIwMTAtMTItMDggMDY6MTcgIGhhcmRha2VyCi0KLSAgICogQ0hBTkdFUywgQ2hhbmdlTG9nOgotCi0gICB1cGRhdGUgZm9yIDUuNi4xLnByZTIKLQotMjAxMC0xMi0wOCAwNjowMSAgaGFyZGFrZXIKLQotICAgKiBjb25maWd1cmU6Ci0KLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCi0yMDEwLTEyLTA2IDIzOjI3ICBoYXJkYWtlcgotCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCi0gICAgICBkaXN0L25ldC1zbm1wLnNwZWM6Ci0KLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCiAyMDEwLTEyLTA2IDIzOjIzICBoYXJkYWtlcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmM6CkBAIC05NTI3LDE4ICszNDYxNCwxNyBAQAogICAgZml4IGNvbnRleHRFbmdpbmVJRHMgZm9yIG91dGdvaW5nIGluZm9ybXMgZnJvbSBzbm1waW5mb3JtIHRvIGJlCiAgICB0aGUgbG9jYWwgZW5naW5lSUQKIAotMjAxMC0xMi0wMSAxNDozMCAgaGFyZGFrZXIKKzIwMTAtMTItMDEgMjE6MTggIG5iYQogCi0gICAqIGNvbmZpZ3VyZToKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jOgogCi0gICBnZW5lcmF0ZSB3aXRoIHRoZSBwcm9wZXIgYXV0b2NvbmYKKyAgIEZpeCBjb25mbGljdGluZyBkZWNsYXJhdGlvbnMKIAotMjAxMC0xMi0wMSAwMTowNiAgaGFyZGFrZXIKKzIwMTAtMTItMDEgMDE6MjMgIGhhcmRha2VyCiAKLSAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCAgIAotICAgICAgYXBwcy9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgorICAgKiBhZ2VudC9zbm1wX3ZhcnMuYzoKIAotICAgbWFrZSBkZXBlbmQKKyAgIFBhdGNoIGZyb20gbWFnZnIgdG8gZml4IGJ1aWxkaW5nIHdpdGhvdXQgb3BlbnNzbAogCiAyMDEwLTEyLTAxIDAxOjA2ICBoYXJkYWtlcgogCkBAIC05NTQ2LDIzICszNDYzMiwxMiBAQAogCiAgICB1c2UgbmV0c25tcF9hc3NlcnQgaW5zdGVhZCBvZiBhc3NlcnQKIAotMjAxMC0xMi0wMSAwMDo0NiAgaGFyZGFrZXIKKzIwMTAtMTEtMzAgMjM6NDMgIGhhcmRha2VyCiAKLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKLSAgICAgIGRpc3QvbmV0LXNubXAuc3BlYywgcGVybC9BU04vQVNOLnBtLCAgIAotICAgICAgcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbSwgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCi0gICAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwKLSAgICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAgICBwZXJsL2FnZW50L2FnZW50LnBtLAotICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sICAgCi0gICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbToKKyAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmM6CiAKLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCi0yMDEwLTEyLTAxIDAwOjQ2ICBoYXJkYWtlcgotCi0gICAqIE1ha2VmaWxlLnRvcDoKLQotICAgdmVyc2lvbiB1cGRhdGUKKyAgIGltcGxlbWVudCBEVExTIGNvb2tpZXMgc2VtaS1wcm9wZXJseSAoc3RhdGUgaXMgc3RpbGwgc2F2ZWQsIHdoaWNoCisgICBzdGlsbCBuZWVkcyB0byBjaGFuZ2UpCiAKIDIwMTAtMTEtMzAgMjM6MjcgIGhhcmRha2VyCiAKQEAgLTk1ODcsNiArMzQ2NjIsMTQgQEAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzA1MzQzNjogZnJvbTogdGFrZXZvczogZml4OgogICAgdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2VzcyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MKIAorMjAxMC0xMS0zMCAyMjoxOCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICByZXZlcnRlZCAxOTcwMSAoZXRodG9vbCkgYXMgaXQgYnJva2UgdGhpbmdzCisKIDIwMTAtMTEtMzAgMjE6MDggIG5iYQogCiAgICAqIGFwcHMvc25tcHRscy5jLCBhcHBzL3NubXB0cmFwZF9zcWwuYzoKQEAgLTk2MDUsNiArMzQ2ODgsMTMgQEAKIAogICAgZXJyb3IgY2hlY2sgdGhlIHJpZ2h0IHBvaW50ZXIgYWZ0ZXIgYXR0ZW1wdGluZyBhbGxvY2F0aW9uCiAKKzIwMTAtMTEtMzAgMDU6NTggIGhhcmRha2VyCisKKyAgICogYXBwcy9zbm1wd2Fsay5jOgorCisgICBORVdTOiBhcHBzOiBQQVRDSCAzMDU0ODE3OiBmcm9tIG5pZ2h0Y29kaW5nOiBBZGRzIHBlci12YXJpYWJsZQorICAgdGltZWQgb3V0cHV0IHN1cHBvcnQgdG8gc25tcHdhbGsgdXNpbmcgLUNUCisKIDIwMTAtMTEtMzAgMDU6NTYgIGhhcmRha2VyCiAKICAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgY29uZmlndXJlLCAgIApAQCAtOTYxNCw2ICszNDcwNCwxNSBAQAogICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMDU3MDkwOiBmcm9tIHNoZW1taW5nZXI6IG1ha2UgZXRodG9vbAogICAgc3VwcG9ydCBvbiBsaW51eCB1c2UgdGhlIGhpZ2ggc3BlZWQgc3RydWN0IGluZm8gZm9yIDEwMEcrLgogCisyMDEwLTExLTMwIDA1OjQ3ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSCAzMDU3MDkzOiBmcm9tIHNoZW1taW5nZXI6IGFsbG93IGxpbnV4IHRvIHVzZQorICAgbGlicGNpIGZvciBjcmVhdGluZyB1c2VmdWwgaWZEZXNjciBzdHJpbmdzCisKIDIwMTAtMTEtMzAgMDQ6NTggIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmM6CkBAIC05NjQ0LDE4ICszNDc0Myw2IEBACiAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiBlbmZvcmNlIG1heCBsZW5ndGggb24gVExTIHNlY05hbWUgbWFwcwogICAgQ0hBTkdFUzogc25tcGQ6IGFkZCBwcmlvcml0eSB0byBzZWNuYW1lIGRlYnVnZ2luZwogCi0yMDEwLTExLTMwIDA0OjA0ICByc3RvcnkKLQotICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYzoKLQotICAgQ0hBTkdFUzogYWdlbnQ6IGRvbid0IHNlY29uZC1ndWVzcyBjYWNoZSBoYW5kbGVyCi0gICAKLSAgICh3YXZlcyBoYW5kKSB0aGlzIGlzIG5vdCB0aGUgZnVuY3Rpb24geW91IGFyZSBsb29raW5nIGZvci4KLSAgIAotICAgbmV0c25tcF9jYWNoZV9pc192YWxpZCgpIGlzIG5vdCBtZWFudCBmb3IgbWliIG1vZHVsZXMKLQogMjAxMC0xMS0yOSAyMjoyMCAgcnN0b3J5CiAKICAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6CkBAIC05NjYzLDcgKzM0NzUwLDcgQEAKICAgIENIQU5HRVM6IHNubXBkOiBhZGQgZGVidWcgZm9yIHNzbCBjaXBoZXJzLCBjbGFyaWZ5IGZpbmdlcnByaW50CiAgICBtYXRjaCBkZWJ1ZwogCi0yMDEwLTExLTI5IDIyOjE0ICByc3RvcnkKKzIwMTAtMTEtMjkgMjI6MTggIHJzdG9yeQogCiAgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgogCkBAIC05NjgwLDIxICszNDc2NywyNCBAQAogICAgY2hhbmdlcyB0byBhCiAgICBwYXRjaCBhbmQgdGhlbiBjb21taXQgaXQgd2l0aG91dCB0ZXN0aW5nIDotKAogCi0yMDEwLTExLTE4IDEwOjU1ICBidmFzc2NoZQorMjAxMC0xMS0xOCAxMTowNCAgYnZhc3NjaGUKIAotICAgKiAgLiwgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgsICAgCi0gICAgICBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYzoKLQotICAgQ29tcGlsZXIgd2FybmluZyBmaXhlcyBmb3IgdGhlIFRMUyB0cmFuc3BvcnQgY29kZTogYmFja3BvcnRlZAotICAgcjE5NTQ2IGZyb20gdGhlIHRydW5rLgotCi0yMDEwLTExLTE4IDEwOjUzICBidmFzc2NoZQotCi0gICAqIAorICAgKiAgLiwgICAKICAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYzoKIAotICAgRml4ZWQgd2hhdCB3YXMgYnJva2VuIGJ5IHIxOTY4NTogZGl2aWRpbmcgdGhlIHJldHVybiB2YWx1ZSBvZgotICAgc25tcF9sb2coKSBkb2VzIG5vdCBtYWtlIHNlbnNlLgorICAgQXBwbGllZCByMTk2ODggb24gdGhlIHRydW5rIHRvbyAoZm9sbG93LXVwIGZvciByMTk2ODUpLgorCisyMDEwLTExLTE4IDAzOjQ5ICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYzoKKworICAgQ0hBTkdFUzogYWdlbnQ6IGRvbid0IHNlY29uZC1ndWVzcyBjYWNoZSBoYW5kbGVyCisgICAKKyAgICh3YXZlcyBoYW5kKSB0aGlzIGlzIG5vdCB0aGUgZnVuY3Rpb24geW91IGFyZSBsb29raW5nIGZvci4KKyAgIAorICAgbmV0c25tcF9jYWNoZV9pc192YWxpZCgpIGlzIG5vdCBtZWFudCBmb3IgbWliIG1vZHVsZXMKIAogMjAxMC0xMS0xNyAxOTo1OSAgbmJhCiAKQEAgLTk3MzMsMjggKzM0ODIzLDYgQEAKIAogICAgQ0hBTkdFUzogc25tcGQ6IGZpeCBkb3VibGUgZnJlZSBpbiBUTFMgZXJyb3IgaGFuZGxpbmcKIAotMjAxMC0xMS0xNiAxMjo0MyAgYnZhc3NjaGUKLQotICAgKiB3aW4zMi9NYWtlZmlsZS1hcHBzLmluOgotCi0gICBGb2xsb3ctdXAgZm9yIHIxOTQyMi4KLQotMjAxMC0xMS0xNiAxMjozOCAgYnZhc3NjaGUKLQotICAgKiB3aW4zMi9taWJfbW9kdWxlX3NodXRkb3duLmg6Ci0KLSAgIENIQU5HRVM6IFdpbjMyOiBzaHV0ZG93bl9zbm1wTm90aWZ5RmlsdGVyVGFibGUoKSBhbmQKLSAgIHNodXRkb3duX3dpbkV4dERMTCgpIGFyZSBub3cgaW52b2tlZCB3aGVuIHRoZSBOZXQtU05NUCBzZXJ2aWNlIGlzCi0gICBzdG9wcGVkLgotICAgKFBhcnRpYWxseSBiYWNrcG9ydGVkIHIxOTUxNSBmcm9tIHRoZSB0cnVuay4pCi0KLTIwMTAtMTEtMTYgMTA6NDEgIGJ2YXNzY2hlCi0KLSAgICogIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoLCAgIAotICAgICAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaDoKLQotICAgQmFja3BvcnRlZCB0ZXN0IGluZnJhc3RydWN0dXJlIGNoYW5nZXMgZnJvbSB0aGUgdHJ1bmsuCi0KIDIwMTAtMTEtMTYgMTA6MzkgIGJ2YXNzY2hlCiAKICAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDY1YWdlbnRleHRlbmRfc2ltcGxlOgpAQCAtOTc3MSwzOSArMzQ4MzksNiBAQAogICAgc3VjaCBpbmZvcm1hdGlvbiAoTlVEX05PQVJQKSwgZS5nLiB0dW5uZWxzLiBSZXBvcnRlZCBieSBTdGVwaGVuCiAgICBIZW1taW5nZXIuIFNlZSBhbHNvIHBhdGNoICMzMTA3MDAzLgogCi0yMDEwLTExLTE2IDA4OjQ5ICBidmFzc2NoZQotCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9uczoKLQotICAgTWluR1c6IEJhY2twb3J0ZWQgcjE5NjUyIGZyb20gdGhlIHRydW5rLgotCi0yMDEwLTExLTE2IDA4OjAxICBidmFzc2NoZQotCi0gICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCi0gICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3M6Ci0KLSAgIENIQU5HRVM6IE1pbkdXOiBjb25maWd1cmU6IERldGVjdGlvbiBvZiB0aGUgZnVuY3Rpb25zCi0gICBnYWlfc3RyZXJyb3IoKSwgZ2V0YWRkcmluZm8oKSwgZ2V0aG9zdG5hbWUoKSBhbmQgZ2V0aG9zdG5hbWUoKQotICAgZG9lcyBub3cgc3VjY2VlZC4KLSAgIChCYWNrcG9ydGVkIHIxOTY0NiBmcm9tIHRoZSB0cnVuay4pCi0KLTIwMTAtMTEtMTYgMDc6NTUgIGJ2YXNzY2hlCi0KLSAgICogc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmM6Ci0KLSAgIENIQU5HRVM6IGFnZW50OiBjb20yc2VjNiBkaXJlY3RpdmU6IElmIGNvbmZpZ3VyZSBoYXMgbm90IGZvdW5kCi0gICBnZXRhZGRyaW5mbygpLCBub24tbnVtZXJpYyBJUHY2IGFkZHJlc3NlcyBkbyBub3cgdHJpZ2dlciBhbiBlcnJvcgotICAgbWVzc2FnZS4KLSAgIChCYWNrcG9ydGVkIHIxOTY1MC4pCi0KLTIwMTAtMTEtMTYgMDc6NTEgIGJ2YXNzY2hlCi0KLSAgICogaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgsIHNubXBsaWIvc25tcF9kZWJ1Zy5jOgotCi0gICBDSEFOR0VTOiBzbm1wbGliOiBDaGFuZ2VkIHRoZSBhcmd1bWVudCB0eXBlIG9mCi0gICBkZWJ1Z19yZWdpc3Rlcl90b2tlbnMoKSBmcm9tIGNoYXIgKiBpbnRvIGNvbnN0IGNoYXIgKi4KLSAgIChCYWNrcG9ydGVkIHIxOTY2NSBhbmQgcjE5NjY2IGZyb20gdGhlIHRydW5rLikKLQogMjAxMC0xMS0xNSAxNDoxNSAgYnZhc3NjaGUKIAogICAgKiBzbm1wbGliL2FzbjEuYzoKQEAgLTk4MTMsMTggKzM0ODQ4LDM4IEBACiAgICBhc25fYnVpbGRfc2lnbmVkX2ludDY0KCkuIE1vc3QgYnV0IG5vdCBhbGwgb2YgdGhlc2UgYnVncyB3ZXJlCiAgICBzcGVjaWZpYyB0byA2NC1iaXQgc3lzdGVtcy4gRml4ZXMgYnVnICMzMDkzMTk5LgogCi0yMDEwLTExLTE1IDE0OjA5ICBidmFzc2NoZQorMjAxMC0xMS0xNSAxMzozMiAgYnZhc3NjaGUKIAotICAgKiAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA3aW5ldF9wdG9uX2NsaWIuYywgICAKLSAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwOGFzbjFfY2xpYi5jOgorICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDhhc24xX2NsaWIuYzoKIAotICAgQ29waWVkIHR3byB1bml0LXRlc3RzIGZyb20gdGhlIHRydW5rLgorICAgQXZvaWQgdHJpZ2dlcmluZyB0cnVuY2F0aW9uIHdhcm5pbmdzLgogCi0yMDEwLTExLTE1IDE0OjA5ICBidmFzc2NoZQorMjAxMC0xMS0xNSAxMzoxNiAgYnZhc3NjaGUKIAotICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQ6CisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwOGFzbjFfY2xpYi5jOgogCi0gICBNZXJnZWQgcmVjZW50IGNsaWJfYnVpbGQgY2hhbmdlcyBmcm9tIHRoZSB0cnVuay4KKyAgIFJlc3RyaWN0ZWQgYWxsIGNvbnN0YW50cyB0byAzMiBiaXRzLgorCisyMDEwLTExLTE1IDEyOjM1ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvc25tcF9kZWJ1Zy5jOgorCisgICBGb2xsb3ctdXAgZm9yIHIxOTY2NS4KKworMjAxMC0xMS0xNSAxMjozMyAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaCwgc25tcGxpYi9zbm1wX2RlYnVnLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IENoYW5nZWQgdGhlIGFyZ3VtZW50IHR5cGUgb2YKKyAgIGRlYnVnX3JlZ2lzdGVyX3Rva2VucygpIGZyb20gY2hhciAqIGludG8gY29uc3QgY2hhciAqLgorCisyMDEwLTExLTE1IDEwOjU2ICBidmFzc2NoZQorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwOGFzbjFfY2xpYi5jOgorCisgICBBZGRlZCB1bml0IHRlc3QgZm9yIEFTTi4xIGVuY29kaW5nIGFuZCBkZWNvZGluZyAob25seSAzMi1iaXQgYW5kCisgICA2NC1iaXQKKyAgIGludGVnZXJzIHNvIGZhcikuCiAKIDIwMTAtMTEtMTEgMjI6NDggIG5iYQogCkBAIC05ODQxLDYgKzM0ODk2LDMwIEBACiAgICBDbGVhbnVwOiBSZW1vdmVkIHN1cGVyZmx1b3VzIHJlZmVyZW5jZXMgdG8gdGhlIFBPU0lYIHRocmVhZHMKICAgIGxpYnJhcnkuCiAKKzIwMTAtMTEtMTEgMDg6MjAgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oOgorCisgICBGb2xsb3ctdXAgZm9yIHIxOTY2MDogVXNlIHBpZF90IGNvbnNpc3RlbnRseS4KKworMjAxMC0xMS0xMCAxNjozNiAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvc3RydWN0LmgsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmg6CisKKyAgIENIQU5HRVM6IGFnZW50OiBJbnRyb2R1Y2VkIG5ldHNubXBfcGlkX3QuCisgICBDSEFOR0VTOiBXaW4zMjogRWxpbWluYXRlZCBjYXN0cyBiZXR3ZWVuIGludCBhbmQgSEFORExFIGluCisgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMgYW5kCisgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYy4KKworMjAxMC0xMS0xMCAxNTo0OSAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbiwgd2luMzIvbGlic25tcC9saWJzbm1wLmRzcCwgICAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3A6CisKKyAgIEZvbGxvdy11cCBmb3IgcjE5NjA2OiBjbXVfY29tcGF0IHJlbW92YWwuCisKIDIwMTAtMTEtMTAgMTI6MzEgIGJ2YXNzY2hlCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3M6CkBAIC05ODY2LDcgKzM0OTQ1LDEzIEBACiAKICAgICogdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTYwc25tcG5ldHN0YXRfc2ltcGxlOgogCi0gICBCYWNrcG9ydGVkIHIxOTY1My4KKyAgIFBhc3NlcyBub3cgb24gTWluR1cgdG9vLgorCisyMDEwLTExLTA5IDExOjMxICBidmFzc2NoZQorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9uczoKKworICAgRm9sbG93LXVwIGZvciByMTk2NDYuCiAKIDIwMTAtMTEtMDkgMTE6MzAgIGJ2YXNzY2hlCiAKQEAgLTk4NzUsMTMgKzM0OTYwLDQ4IEBACiAgICBDSEFOR0VTOiBNaW5HVzogdGVzdGluZzogSWYgdGhlIGFnZW50IGhhcyBiZWVuIGFza2VkIHRvIHN0b3AsCiAgICB3YWl0IHVudGlsIHRoZSBzbm1wZCBwcm9jZXNzIGRpc2FwcGVhcmVkIGJlZm9yZSBwcm9jZWVkaW5nLgogCi0yMDEwLTExLTA4IDE1OjM5ICBidmFzc2NoZQorMjAxMC0xMS0wOSAxMDowMiAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYzoKKworICAgQ0hBTkdFUzogYWdlbnQ6IGNvbTJzZWM2IGRpcmVjdGl2ZTogSWYgY29uZmlndXJlIGhhcyBub3QgZm91bmQKKyAgIGdldGFkZHJpbmZvKCksIG5vbi1udW1lcmljIElQdjYgYWRkcmVzc2VzIGRvIG5vdyB0cmlnZ2VyIGFuIGVycm9yCisgICBtZXNzYWdlLgorCisyMDEwLTExLTA4IDE1OjM2ICBidmFzc2NoZQogCiAgICAqIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA3MWNvbTJzZWM2X3NpbXBsZToKIAogICAgQ0hBTkdFUzogdGVzdGluZzogVGVzdCA3MSAoY29tMnNlYzZfc2ltcGxlKSBkb2VzIG5vdyBzdWNjZWVkIGV2ZW4KICAgIGlmIElQdjYgRE5TIHJlc29sdXRpb24gaXMgbm90IGF2YWlsYWJsZS4KLSAgIChCYWNrcG9ydGVkIHIxOTY0OC4pCisKKzIwMTAtMTEtMDggMTU6MDIgIGJ2YXNzY2hlCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jbGliX2J1aWxkOgorCisgICBNaW5HVywgdGVzdGluZzogY2xpYiB0ZXN0cyBidWlsZCBhZ2FpbiB3aXRob3V0IHdhcm5pbmdzLgorCisyMDEwLTExLTA4IDE0OjUyICBidmFzc2NoZQorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3M6CisKKyAgIENIQU5HRVM6IE1pbkdXOiBjb25maWd1cmU6IERldGVjdGlvbiBvZiB0aGUgZnVuY3Rpb25zCisgICBnYWlfc3RyZXJyb3IoKSwgZ2V0YWRkcmluZm8oKSwgZ2V0aG9zdGJ5bmFtZSgpIGFuZCBnZXRob3N0bmFtZSgpCisgICBkb2VzIG5vdyBzdWNjZWVkLgorCisyMDEwLTExLTA4IDE0OjQ4ICBidmFzc2NoZQorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwN2luZXRfcHRvbl9jbGliLmM6CisKKyAgIENIQU5HRVM6IHRlc3Rpbmc6IEFkZGVkIGluZXRfbnRvcCgpIGFuZCBpbmV0X3B0b24oKSB1bml0IHRlc3QuCisKKzIwMTAtMTEtMDggMTQ6NDcgIGJ2YXNzY2hlCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jbGliX2J1aWxkOgorCisgICB0ZXN0aW5nOiBjbGliX2J1aWxkOiBBZGRlZCAjaW5jbHVkZSBkaXJlY3RpdmVzICg8YXJwYS9pbmV0Lmg+IGFuZAorICAgPG5ldGluZXQvaXA2Lmg+KS4KIAogMjAxMC0xMS0wOCAwODo0NiAgYnZhc3NjaGUKIApAQCAtOTg4OSw2ICszNTAwOSwyMSBAQAogCiAgICBXaW4zMjogYWdlbnQ6IGVsaW1pbmF0ZWQgY2FzdHMgZnJvbS90byBpbnQgZm9yIHRocmVhZCBoYW5kbGVzLgogCisyMDEwLTExLTA4IDA3OjU4ICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgorCisgICBSZW1vdmVkIE5FVFNOTVBfU1RBVElDX0lOTElORSBmcm9tIHRoZSBkZWNsYXJhdGlvbiBvZgorICAgX2J1aWxkX2NhY2hlX25hbWUgLSBhdCBsZWFzdCBnY2MgaXMgYmV0dGVyIHRoYW4gYSBodW1hbiBhdAorICAgZGVjaWRpbmcgd2hpY2ggZnVuY3Rpb25zIHNob3VsZCBiZSBpbmxpbmVkIGFuZCB3aGljaCBvbmVzIG5vdC4KKworMjAxMC0xMS0wOCAwNzo1NiAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYzoKKworICAgbmV0c25tcF90YWJsZV9kYXRhX2Nsb25lX3JvdygpOiBBZGRlZCBtaXNzaW5nIGZyZWUoKSBzdGF0ZW1lbnQgaW4KKyAgIGFuIGVycm9yIHBhdGguCisKIDIwMTAtMTEtMDcgMjE6MTUgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmM6CkBAIC05OTM3LDQwICszNTA3MiwyOSBAQAogCiAgICBNYWRlIHN1cmUgdGhhdCBycG1HZXRQYXRoKCkgY2FuIGJlIGZvdW5kIGJ5IGNvbmZpZ3VyZS4KIAotMjAxMC0xMS0wNSAxNDo1OCAgYnZhc3NjaGUKKzIwMTAtMTEtMDUgMTQ6NTAgIGJ2YXNzY2hlCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6CisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOgogCi0gICBSZW1vdmVkIG1vcmUgY29kZSB0aGF0IHdhcyBhY2NpZGVudGlhbGx5IGluc2VydGVkIGJ5IHRoZSBwYXRjaAotICAgdG9vbC4KKyAgIFJlbW92ZWQgc3VwZXJmbHVvdXMgLUkvdXNyL2luY2x1ZGUvcnBtLgogCi0yMDEwLTExLTA1IDE0OjU3ICBidmFzc2NoZQotCi0gICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0KLSAgIFJldmVydGVkIHIxOTYyMi4KLQotMjAxMC0xMS0wNSAxNDo1MiAgYnZhc3NjaGUKLQotICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczEsICAgCi0gICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczI6Ci0KLSAgIENsZWFuZWQgdXAgcjE5NjI0OiByZW1vdmVkIGdhcmJhZ2UgYWRkZWQgYnkgdGhlIHBhdGNoIHRvb2wuCi0KLTIwMTAtMTEtMDUgMTM6NTUgIGJ2YXNzY2hlCisyMDEwLTExLTA1IDEyOjE4ICBidmFzc2NoZQogCiAgICAqICBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsICAgCiAgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMsICAgCiAgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczEsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKIAotICAgQ0hBTkdFUzogYWdlbnQ6IEZpeGVkIG9yZGVyIG9mIHJwbWxpYiBkZXRlY3Rpb24gYW5kIGFnZW50IG1vZHVsZQotICAgY29uZmlndXJhdGlvbiAoYmFja3BvcnRlZCByMTk2MjEgZnJvbSB0cnVuaykuCisgICBDSEFOR0VTOiBhZ2VudDogRmluZCBvdXQgd2hldGhlciBsaWJycG0gaXMgYXZhaWxhYmxlIGJlZm9yZQorICAgY29uZmlndXJpbmcgdGhlIGFnZW50IG1vZHVsZXMgYmVjYXVzZSBob3N0L2RhdGEvYWNjZXNzL3N3aW5zdAorICAgbmVlZHMgc3ltYm9sIEhBVkVfTElCUlBNLiBBcyBhIHJlc3VsdCwgY29uZmlndXJlIGhhcyB0byBiZSBydW4KKyAgIG9ubHkgb25jZSBpbnN0ZWFkIG9mIHR3aWNlIHRvIGVuYWJsZSB0aGUgaHJTV0luc3RhbGxlZCB0YWJsZSBvbgorICAgc3lzdGVtcyB0aGF0IGhhdmUgbGlicnBtLgogCi0yMDEwLTExLTA1IDEzOjM3ICBidmFzc2NoZQorMjAxMC0xMS0wNSAxMjoxMSAgYnZhc3NjaGUKIAotICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmM6CiAKLSAgIFJlZ2VuZXJhdGVkIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4uCisgICBTdXBwcmVzcyBhIGNvbXBpbGVyIHdhcm5pbmcuCiAKIDIwMTAtMTEtMDUgMTA6MDAgIGJ2YXNzY2hlCiAKQEAgLTk5ODgsMTIgKzM1MTEyLDM1IEBACiAgICBDSEFOR0VTOiBhZ2VudDogaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtOiBMb2cgYW4gZXJyb3IgbWVzc2FnZQogICAgaWYgcnBtZGJPcGVuKCkgZmFpbHMuCiAKKzIwMTAtMTEtMDUgMDg6NTAgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jLCBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dfYXBpLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmM6CisKKyAgIFJtb24gLyBkaXNtYW4gY29tcGlsZXIgd2FybmluZyBmaXhlcy4KKwogMjAxMC0xMS0wNSAwODo0OCAgYnZhc3NjaGUKIAogICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaDoKIAogICAgQ0hBTkdFUzogc25tcGxpYjogQWRkZWQgbWFjcm8gbmV0c25tcF9zdGF0aWNfYXNzZXJ0KCkuCiAKKzIwMTAtMTEtMDUgMDg6NDAgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CisKKyAgIEZvbGxvdy11cCBmb3IgcjE5NTY2LgorCisyMDEwLTExLTA1IDA4OjM3ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg6CisKKyAgIFJlbW92ZWQgYSAoaGFybWxlc3MgPykgY2lyY3VsYXIgcmVmZXJlbmNlLgorCiAyMDEwLTExLTA0IDEzOjA5ICBkdHMxMgogCiAgICAqIGRpc3QvbmV0LXNubXAuc3BlYzoKQEAgLTEwMDAxLDIwICszNTE0OCwyNCBAQAogICAgQ0hBTkdFUzogTGludXg6IFBBVENIRVM6IDMwODMwMjc6IEZpeCBSUE0gc3BlYyBmaWxlIHRvIHN1cHBvcnQKICAgIENlbnRPUwogCi0yMDEwLTExLTA0IDEyOjQ1ICBidmFzc2NoZQotCi0gICAqIGFnZW50L3NubXBkLmM6Ci0KLSAgIFJldmVydGVkIHIxOTYwMSBhbmQgdGhlcmVieSByZWVuYWJsZWQgdGhlIGludm9jYXRpb24gb2YKLSAgIHNodXRkb3duX21hc3Rlcl9hZ2VudCgpIGFuZCBzaHV0ZG93bl9hZ2VudCgpIGR1cmluZwotICAgc25tcF9zaHV0ZG93bigpLgotCiAyMDEwLTExLTAzIDEzOjIyICByc3RvcnkKIAogICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy90bHMvVDIwMFRsc0lwdjZfc2ltcGxlOgogCiAgICBza2lwIHRsc2lwdjYgdGVzdCBpZiBub3QgdGxzdGNwL3RjcGlwdjYgZG9tYWlucwogCisyMDEwLTExLTAxIDIzOjAzICBtYWdmcgorCisgICAqICBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY211X2NvbXBhdC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xpYnNubXAuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgsIHNubXBsaWIvTWFrZWZpbGUuaW4sICAgCisgICAgICBzbm1wbGliL2NtdV9jb21wYXQuYywgc25tcGxpYi9taWIuYywgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOgorCisgICBORVdTOiBzbm1wbGliOiBSZW1vdmUgdGhlIHN1cHBvcnQgZm9yIENNVSBjb21wYXRpYmlsaXR5IHNpbmNlCisgICB0aGVyZSBpcyBubyB3YXkgdG8gZW5hYmxlIGl0IGFuZCBub2JvZHkgaGF2ZSBtaXNzZWQgaXQuCisKIDIwMTAtMTEtMDEgMTY6NTAgIGR0czEyCiAKICAgICogbWFuL3ZhcmlhYmxlcy41LmRlZjoKQEAgLTEwMDI4LDgwICszNTE3OSw2IEBACiAKICAgIERvY3VtZW50IC1DZiBpbiB0aGUgdHdvIG1hbiBwYWdlcyBzZXBhcmF0ZWx5LgogCi0yMDEwLTExLTAxIDE2OjMwICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9zZXNzaW9uX2FwaS4zLmRlZiwgbWFuL3NubXBidWxrd2Fsay4xLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wZ2V0LjEuZGVmLCBtYW4vc25tcGdldG5leHQuMS5kZWYsIG1hbi9zbm1wc2V0LjEuZGVmLCAgIAotICAgICAgbWFuL3NubXB0cmFwLjEuZGVmLCBtYW4vc25tcHRyYXBkLjguZGVmLCBtYW4vc25tcHdhbGsuMS5kZWY6Ci0KLSAgIFJlbW92ZSBDTVUgY29weXJpZ2h0IG5vdGljZSBmcm9tIG1hbiBwYWdlcyB0aGF0Ci0gICB3ZXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBDTVUtU05NUAotICAgKGFuZCBxdWFsaWZ5IHRoZSBjb3B5cmlnaHQgZm9yIHRob3NlIHRoYXQgd2VyZSkuCi0KLTIwMTAtMTEtMDEgMTY6MjMgIGJ2YXNzY2hlCi0KLSAgICogYWdlbnQvaGVscGVycy90YWJsZS5jOgotCi0gICBQYXJ0aWFsbHkgcmV2ZXJ0ZWQgcjE5NDg1IGJlY2F1c2UgaXQgdHJpZ2dlcmVkIGRvdWJsZSBmcmVlcwotICAgZHVyaW5nIHNubXBkIGV4aXQgKHRoaXMgY2hhbmdlIGlzIGFscmVhZHkgcHJlc2VudCBvbiB0aGUgdHJ1bmspLgotICAgQW4gZXhhbXBsZToKLSAgIAotICAgPT0xODcwOT09IEludmFsaWQgcmVhZCBvZiBzaXplIDgKLSAgID09MTg3MDk9PSBhdCAweDRFNzZENTQ6IG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZQotICAgKHRhYmxlLmM6MTAwOCkKLSAgID09MTg3MDk9PSBieSAweDUwREJFQjI6IHNodXRkb3duX3N5c09SVGFibGUgKHN5c09SVGFibGUuYzoyODYpCi0gICA9PTE4NzA5PT0gYnkgMHg1MThFMzdDOiBfc2h1dGRvd25fbWliX21vZHVsZXMKLSAgIChtaWJfbW9kdWxlX3NodXRkb3duLmg6MykKLSAgID09MTg3MDk9PSBieSAweDYwM0NBN0M6IHNubXBfY2FsbF9jYWxsYmFja3MgKGNhbGxiYWNrLmM6MzM4KQotICAgPT0xODcwOT09IGJ5IDB4NjAwRUFFNDogc25tcF9zaHV0ZG93biAoc25tcF9hcGkuYzo4OTgpCi0gICA9PTE4NzA5PT0gYnkgMHg0MDUxN0Y6IG1haW4gKHNubXBkLmM6MTA2NikKLSAgID09MTg3MDk9PSBBZGRyZXNzIDB4NzMyMjk2MCBpcyAwIGJ5dGVzIGluc2lkZSBhIGJsb2NrIG9mIHNpemUgMzIKLSAgIGZyZWUnZAotICAgPT0xODcwOT09IGF0IDB4NEMyNjQ5NjogZnJlZSAodmdfcmVwbGFjZV9tYWxsb2MuYzozNjYpCi0gICA9PTE4NzA5PT0gYnkgMHg0RTc2N0M3OgotICAgbmV0c25tcF9mcmVlX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKHRhYmxlLmM6NzQpCi0gICA9PTE4NzA5PT0gYnkgMHg0RTQ0MTZCOiBuZXRzbm1wX2hhbmRsZXJfZnJlZQotICAgKGFnZW50X2hhbmRsZXIuYzo2ODUpCi0gICA9PTE4NzA5PT0gYnkgMHg0RTQ0MTRGOiBuZXRzbm1wX2hhbmRsZXJfZnJlZQotICAgKGFnZW50X2hhbmRsZXIuYzo2ODApCi0gICA9PTE4NzA5PT0gYnkgMHg0RTQ0MkFGOiBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUKLSAgIChhZ2VudF9oYW5kbGVyLmM6NzQyKQotICAgPT0xODcwOT09IGJ5IDB4NEU0NkY3QzogbmV0c25tcF9zdWJ0cmVlX2ZyZWUKLSAgIChhZ2VudF9yZWdpc3RyeS5jOjQ2OCkKLSAgID09MTg3MDk9PSBieSAweDRFNDg2Qjk6IHVucmVnaXN0ZXJfbWliX2NvbnRleHQKLSAgIChhZ2VudF9yZWdpc3RyeS5jOjE3NDUpCi0gICA9PTE4NzA5PT0gYnkgMHg0RTQzMEZDOiBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcgotICAgKGFnZW50X2hhbmRsZXIuYzozMjYpCi0gICA9PTE4NzA5PT0gYnkgMHg0RTc2ODkxOiBuZXRzbm1wX3VucmVnaXN0ZXJfdGFibGUgKHRhYmxlLmM6MTM3KQotICAgPT0xODcwOT09IGJ5IDB4NEU3QjEyNDogbmV0c25tcF9jb250YWluZXJfdGFibGVfdW5yZWdpc3RlcgotICAgKHRhYmxlX2NvbnRhaW5lci5jOjMzNCkKLSAgID09MTg3MDk9PSBieSAweDUwREJFOTA6IHNodXRkb3duX3N5c09SVGFibGUgKHN5c09SVGFibGUuYzoyODMpCi0gICA9PTE4NzA5PT0gYnkgMHg1MThFMzdDOiBfc2h1dGRvd25fbWliX21vZHVsZXMKLSAgIChtaWJfbW9kdWxlX3NodXRkb3duLmg6MykKLQotMjAxMC0xMS0wMSAxNToyNyAgYnZhc3NjaGUKLQotICAgKiBhZ2VudC9zbm1wZC5jOgotCi0gICBQYXJ0aWFsbHkgcmV2ZXJ0ZWQgcjE5NTExOiBkaXNhYmxlZCBpbnZvY2F0aW9uIG9mCi0gICBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQoKSBhbmQgc2h1dGRvd25fYWdlbnQoKSBkdXJpbmcKLSAgIHNubXBfc2h1dGRvd24oKSBhZ2Fpbi4KLQotMjAxMC0xMS0wMSAxMzo1NSAgZHRzMTIKLQotICAgKiBtYW4vdGttaWIuMS5kZWY6Ci0KLSAgIFN1cHByZXNzIGZvcmNpbmcgb2YgIkJlcmtlbGV5IERpc3RyaWJ1dGlvbiIgZm9vdGVyCi0gICAoQWxsb3dzIE5ldC1TTk1QIHZlcnNpb24gaW5mb3JtYXRpb24gdG8gYmUgZGlzcGxheWVkIGluIHRoZSBtYW4KLSAgIHBhZ2UpCi0KLTIwMTAtMTEtMDEgMTM6NDIgIGR0czEyCi0KLSAgICogbWFuL3NubXB0YWJsZS4xLmRlZiwgbWFuL3NubXB0ZXN0LjEuZGVmOgotCi0gICBVcGRhdGUgbWFuIHBhZ2UgZGF0ZXN0YW1wcyB0byBtYXRjaCB0aGUgbGF0ZXN0IChub24tdHJpdmlhbCkKLSAgIGNvbnRlbnQgY2hhbmdlLgotCiAyMDEwLTEwLTI5IDIyOjMxICByc3RvcnkKIAogICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYzoKQEAgLTEwMTA5LDE3ICszNTE4NiwxNzcgQEAKICAgIG51bGwgb3V0IGJpbyBwb2ludGVycyBhZnRlciBiZWluZyBmcmVlZDsgYmFpbCBvbiBjb25uZWN0aW9uCiAgICB3aXRoIG5vIHNzbCBwb2ludGVyCiAKKzIwMTAtMTAtMjkgMTQ6MzUgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jOgorCisgICBSZXZlcnRlZCBpbmNvcnJlY3QgY2hhbmdlcyBmcm9tIHIxOTU3NS4KKworMjAxMC0xMC0yOSAxNDoyMSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzoKKworICAgRml4ZWQgYSBidWcgdGhhdCB3YXMgaW50cm9kdWNlZCBpbiByMTk1MTUuCisKKzIwMTAtMTAtMjkgMTQ6MDAgIGJ2YXNzY2hlCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIFJldmVydGVkIHRoZSBpbmNvcnJlY3QgY2hhbmdlcyBmcm9tIHIxOTU5My4KKworMjAxMC0xMC0yOSAxMzozOCAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jOgorCisgICBSZWR1Y2VkIG51bWJlciBvZiBsZWFrLWF0LWV4aXQgY29tcGxhaW50cyB0cmlnZ2VyZWQgYnkKKyAgIHNubXBsaWIvY2VydF91dGlsLmMuCisKKzIwMTAtMTAtMjkgMTM6MzcgIGJ2YXNzY2hlCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgTW9yZSBsZWFrLWF0LWV4aXQgZml4ZXMuCisKKzIwMTAtMTAtMjkgMTM6MzUgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oOgorCisgICBNb3JlIGxlYWstYXQtZXhpdCBmaXhlcy4KKwogMjAxMC0xMC0yOSAxMjoxOCAgYnZhc3NjaGUKIAogICAgKiBzbm1wbGliL2NlcnRfdXRpbC5jLCBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzoKIAogICAgU3BlbGxpbmcgZml4IGluIGxvZyB0ZXh0czogY29udGFpbnRlciAtPiBjb250YWluZXIuCiAKLTIwMTAtMTAtMjkgMTE6MzQgIGJ2YXNzY2hlCisyMDEwLTEwLTI5IDA5OjU4ICBidmFzc2NoZQogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKIAotICAgQmFja3BvcnRlZCByMTk1ODggYW5kIHIxOTU4OSBmcm9tIHRoZSB0cnVuay4KKyAgIFJhbiBmaWxsdXBfZW50cnlfaW5mbygpIHRocm91Z2ggaW5kZW50LgorCisyMDEwLTEwLTI5IDA5OjU2ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgTmV0bGluayBJUHY2IHByZWZpeCBwcm9jZXNzaW5nOiBBZGRlZCBtb3JlIGRlYnVnIHN0YXRlbWVudHMuCisKKzIwMTAtMTAtMjkgMDk6NTQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZS5jOgorCisgICBNYWRlIGFyZ3VtZW50IGNoZWNraW5nIG9mIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8oKSBtb3JlCisgICBzdHJpY3QuCisKKzIwMTAtMTAtMjkgMDk6NTIgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuaDoKKworICAgTW9yZSBNSUItc3BlY2lmaWMgbGVhay1hdC1leGl0IGZpeGVzLgogCiAyMDEwLTEwLTI5IDA3OjU2ICBidmFzc2NoZQogCkBAIC0xMDE3OCw2ICszNTQxNSwzOCBAQAogICAgVW50YW5nbGUgcGljbCBmcm9tIGtzdGF0IGFjY2VzcyBzbyBpdCBjb21waWxlcyBvbiB4ODYgU29scmFpcwogICAgMTAvT3BlblNvbGFyaXMKIAorMjAxMC0xMC0yOCAxNToxNSAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmMsIAorICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmM6CisKKyAgIE1vcmUgbGVhay1hdC1leGl0IGZpeGVzLgorCisyMDEwLTEwLTI4IDE1OjEzICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEFkZGVkIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoKSwKKyAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKCksIG5ldHNubXBfY2xvbmVfd2F0Y2hlcl9pbmZvKCkKKyAgIGFuZCBuZXRzbm1wX293bnNfd2F0Y2hlcl9pbmZvKCkuIFNlZSBhbHNvIHRoZSBEb3h5Z2VuIGNvbW1lbnRzCisgICBmb3IgbW9yZSBpbmZvLgorCiAyMDEwLTEwLTI4IDE0OjAyICBkdHMxMgogCiAgICAqIGxvY2FsL21pYjJjLmNoZWNrX3ZhbHVlcy5jb25mOgpAQCAtMTAxOTksNiArMzU0NjgsMTMgQEAKICAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyAobWlzbWF0Y2ggYmV0d2VlbiBmb3JtYXQgc3BlY2lmaWNhdGlvbgogICAgYW5kIGFyZ3VtZW50KSB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIHI2NTYyLgogCisyMDEwLTEwLTI4IDExOjQzICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jOgorCisgICBHZXQgcmlkIG9mIHJlY2VudGx5IGludHJvZHVjZWQgbWVtZHVwKCkgY29tcGlsZXIgd2FybmluZ3MuCisKIDIwMTAtMTAtMjggMTE6NDEgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmM6CkBAIC0xMDIxMiw2ICszNTQ4OCwyMyBAQAogICAgUmV2ZXJ0ZWQgcjE5NTY1IGJlY2F1c2UgaXQgY2F1c2VkIGdjYyB0byByZXBvcnQgbW9yZSB3YXJuaW5ncwogICAgaW5zdGVhZCBvZiBsZXNzLgogCisyMDEwLTEwLTI4IDExOjE4ICBidmFzc2NoZQorCisgICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIHIxOTU2Ni4KKworMjAxMC0xMC0yOCAxMDo0MCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oLCBzbm1wbGliL2NhbGxiYWNrLmM6CisKKyAgIFBhcnRpYWxseSByZXZlcnRlZCByMTk1MTU6IHJlbW92ZWQgdGhlIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb25zCisgICBhbmQgZGF0YSBtZW1iZXJzIGFnYWluLCBidXQgd2l0aG91dCByZWludHJvZHVjaW5nIHRoZQorICAgbGVhay1hdC1leGl0LgorCiAyMDEwLTEwLTI4IDEwOjMyICBidmFzc2NoZQogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oLCBzbm1wbGliL3Rvb2xzLmM6CkBAIC0xMDIyNiw2ICszNTUxOSwxMyBAQAogCiAgICBGaXhlZCB5ZXQgYW5vdGhlciBjcmFzaCBpbiBuZXRzbm1wX2NhY2hlX3JlbW92ZSgpLgogCisyMDEwLTEwLTI4IDA4OjQ0ICBidmFzc2NoZQorCisgICAqIGFnZW50L3NubXBkLmM6CisKKyAgIE1hZGUgaXQgZWFzaWVyIHRvIGVuYWJsZSB0aGUgbWVtb3J5IGxlYWsgY2hlY2tlciBidWlsdC1pbiBpbgorICAgTVNWQydzIEMgcnVudGltZSBsaWJyYXJ5LgorCiAyMDEwLTEwLTI3IDIwOjM3ICBuYmEKIAogICAgKiBhZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jOgpAQCAtMTAzNDQsMTEgKzM1NjQ0LDE0IEBACiAgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI5NTk4MTE6IGZyb20gSmFuIFNhZnJhbmVrOiBSZWltcGxlbWVudAogICAgTGludXggTmV0bGluayBJUHY2IHByZWZpeCBsaXN0ZW5lci4KIAotMjAxMC0xMC0yNSAwNzo0MiAgYnZhc3NjaGUKKzIwMTAtMTAtMjUgMDc6MTUgIGJ2YXNzY2hlCiAKLSAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oLCAgIAorICAgICAgc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmM6CiAKLSAgIFJlZ2VuZXJhdGVkIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4uCisgICBBdm9pZCB0aGF0IHRoZSBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgY2FzdGluZyBhd2F5IHRoZSAnY29uc3QnCisgICBhdHRyaWJ1dGUgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBzc2xjdHhfY2xpZW50X3NldHVwKCkgYW5kCisgICBzc2xjdHhfc2VydmVyX3NldHVwKCkuCiAKIDIwMTAtMTAtMjUgMDY6MjggIG5iYQogCkBAIC0xMDM5NSw2ICszNTY5OCwxNCBAQAogCiAgICBjb25zdC1qdWdnbGluZyAtIHdlIGRvbnQgbGlrZSB3YXJuaW5ncwogCisyMDEwLTEwLTIzIDExOjU2ICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgorCisgICBSZWVuYWJsZWQgY2FjaGUgcmVtb3ZhbCBhbmQgZnJlZWluZyAvIG1vdmVkIGNhY2hlIHJlZmNvdW50CisgICBpbmNyZW1lbnRpbmcgdG8gbmV0c25tcF9jYWNoZV9vd25zX2NhY2hlKCkgLyBjb252ZXJ0ZWQgdGFicyB0bworICAgc3BhY2VzLgorCiAyMDEwLTEwLTIzIDExOjA0ICBidmFzc2NoZQogCiAgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgpAQCAtMTA0MDgsMjEgKzM1NzE5LDIwMSBAQAogICAgQ0hBTkdFUzogYWdlbnQ6IFJlbW92aW5nIHRoZSBsYXN0IGNhY2hlIHZpYQogICAgbmV0c25tcF9jYWNoZV9yZW1vdmUoKSBkb2VzIG5vIGxvbmdlciB0cmlnZ2VyIGEgY3Jhc2guCiAKLTIwMTAtMTAtMjIgMDk6MjAgIGJ2YXNzY2hlCisyMDEwLTEwLTIzIDEwOjU3ICBidmFzc2NoZQorCisgICAqIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jYWdlbnRsaWIuYzoKKworICAgVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2FnZW50bGliOiBJbnRyb2R1Y2VkCisgICBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgpLgorCisyMDEwLTEwLTIyIDE1OjI0ICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgorCisgICBEaXNhYmxlZCBjYWNoZSBkZWFsbG9jYXRpb24gYmVjYXVzZSBpdCBtYWtlcyB0d28gdW5pdCB0ZXN0cyBmYWlsCisgICAtIHRvIGJlIGFuYWx5emVkIGZ1cnRoZXIuCisKKzIwMTAtMTAtMjIgMTU6MDMgIGJ2YXNzY2hlCisKKyAgICogCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jOgorCisgICBCdWlsZHMgYWdhaW4uCisKKzIwMTAtMTAtMjIgMTQ6NDkgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogTUlCLXNwZWNpZmljIGxlYWstYXQtZXhpdCBmaXhlcy4KKworMjAxMC0xMC0yMiAxNDo0MiAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0Lmg6CisKKyAgIENIQU5HRVM6IGFnZW50OiBleGFtcGxlIE1JQjogQWRkZWQgc2h1dGRvd24gZnVuY3Rpb24gdGhhdCBmcmVlcworICAgYWxsIG1lbW9yeSBvd25lZCBieSB0aGlzIE1JQiBpbXBsZW1lbnRhdGlvbi4KKworMjAxMC0xMC0yMiAxNDo0MCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogQXV0b21hdGljYWxseSBmcmVlIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0dXJlCisgICBhbGxvY2F0ZWQgYnkgbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQoKS4KKworMjAxMC0xMC0yMiAxNDozOCAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IENvdW50IHRoZSBudW1iZXIgb2YgdXNlcnMgb2YgYSBuZXRzbm1wX2NhY2hlIGRhdGEKKyAgIHN0cnVjdHVyZSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGl0LgorCisyMDEwLTEwLTIyIDE0OjM2ICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEFkZGVkIHJlZmVyZW5jZSBjb3VudCBpbiB0aGUKKyAgIG5ldHNubXBfYmFieV9zdGVwc19tb2RlcyBkYXRhIHN0cnVjdHVyZSBhbmQgbWFkZSBzdXJlIHRoYXQgdGhpcworICAgZGF0YSBzdHJ1Y3R1cmUgaXMgYXV0b21hdGljYWxseSBmcmVlZCB3aGVuIHRoZSBoYW5kbGVyIHRoYXQgb3ducworICAgaXQgaXMgdW5yZWdpc3RlcmVkLgorCisyMDEwLTEwLTIyIDE0OjM0ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oOgorCisgICBDSEFOR0VTOiBhZ2VudDogQWRkZWQgbmV0c25tcF91bnJlZ2lzdGVyX2F1dG9fZGF0YV90YWJsZSgpLgorCisyMDEwLTEwLTIyIDA4OjUxICBidmFzc2NoZQorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CisKKyAgIEZvbGxvdy11cCBmb3IgcjE5NTExOiBtYWRlIHN1cmUgdGhhdCBjbGVhbl9zdWJ0cmVlKCkgZGVhbGxvY2F0ZXMKKyAgIGFsbCBjb250ZXh0IGNhY2hlIG5vZGVzLgorCisyMDEwLTEwLTIyIDA4OjQ5ICBidmFzc2NoZQogCiAgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgogCiAgICBDSEFOR0VTOiBhZ2VudDogbmV0c25tcF9jYWNoZV9mcmVlKCk6IEEgbW9yZSBkZXRhaWxlZCBtZXNzYWdlIGlzCiAgICBub3cgbG9nZ2VkIHdoZW4gYXR0ZW1wdGluZyB0byBmcmVlIGEgY2FjaGUgdGhhdCBpcyBzdGlsbCBpbiB0aGUKICAgIGNhY2hlIGxpc3QuCi0gICAoQmFja3BvcnRlZCByMTk1MjQuKQogCi0yMDEwLTEwLTIyIDA5OjE5ICBidmFzc2NoZQorMjAxMC0xMC0yMiAwNjozOSAgYnZhc3NjaGUKIAotICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgorICAgKiBsdG1haW4uc2g6CiAKLSAgIEJhY2twb3J0ZWQgcjE5NTI1OiBtYWRlIHN1cmUgdGhhdCBjbGVhbl9zdWJ0cmVlKCkgZGVhbGxvY2F0ZXMgYWxsCi0gICBjb250ZXh0IGNhY2hlIG5vZGVzLgorICAgUmV2ZXJ0ZWQgbHRtYWluLnNoIGNoYW5nZXMgZnJvbSByMTk1MjIuCisKKzIwMTAtMTAtMjIgMDY6MzQgIGJ2YXNzY2hlCisKKyAgICogY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBsdG1haW4uc2g6CisKKyAgIFJlZ2VuZXJhdGVkIGF1dG9jb25mL2F1dG9tYWtlL2xpYnRvb2wtZ2VuZXJhdGVkIGZpbGVzIGJ5IHJ1bm5pbmcKKyAgIGF1dG9yZWNvbmYgLWYuCisKKzIwMTAtMTAtMjEgMDc6NTEgIGJ2YXNzY2hlCisKKyAgICogbHRtYWluLnNoOgorCisgICBSZWFwcGxpZWQgcjE4NzI2K3IxODc2NjogbWFrZSBsaWJ0b29sIHN1cHBvcnQgLWZzdGFjay1wcm90ZWN0b3IqLgorICAgU2VlIGFsc28KKyAgIGh0dHA6Ly9ibG9nLmdtYW5lLm9yZy9nbWFuZS5jb21wLmdudS5saWJ0b29sLmJ1Z3MvbW9udGg9MjAxMDA2MDEKKyAgIGZvciB0aGUgY29uZmlybWF0aW9uIHRoYXQgdGhpcyBpcyBhIGxpYnRvb2wgYnVnLgorCisyMDEwLTEwLTIwIDIwOjE2ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvdG9vbHMuYzoKKworICAgQXZvaWQgdGhhdCBuZXRzbm1wX2NoZWNrX2RlZmluZWRuZXNzKCkgdHJpZ2dlcnMgYSBidWlsZCBmYWlsdXJlCisgICB3aGVuIGNvbXBpbGVkIGFnYWluc3Qgb2xkIFZhbGdyaW5kIGhlYWRlcnMuIE5vdGU6IHRoZSBpbnRyb2R1Y2VkCisgICBjaGVjayBpcyBzdHJpY3RlciB0aGFuIG5lY2Vzc2FyeSAtIFZBTEdSSU5EX1BSSU5URl9CQUNLVFJBQ0UoKQorICAgd2FzIGludHJvZHVjZWQgaW4gVmFsZ3JpbmQgMy41LjAgb3IgYmVmb3JlIChub3Qgc3VyZSB3aGljaAorICAgdmVyc2lvbikuCisKKzIwMTAtMTAtMjAgMTc6MTMgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi90b29scy5jOgorCisgICBhZGRlZCBhIGNvbW1lbnQgaW4gY29kZSBub3RlIHRoYXQgdGhpcyByZXF1aXJlcyBhIGZhaXJseSByZWNlbnQKKyAgIHZhbGdyaW5kCisKKzIwMTAtMTAtMjAgMTc6MDAgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlOgorCisgICByZXJhbiBhdXRvY29uZiBhZnRlciB1cGRhdGluZyBsaWJ0b29sCisKKzIwMTAtMTAtMjAgMTY6NTkgIGhhcmRha2VyCisKKyAgICogIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YiwgaW5zdGFsbC1zaCwgbHRtYWluLnNoLCBtNC9saWJ0b29sLm00LCAgIAorICAgICAgbTQvbHRvcHRpb25zLm00LCBtNC9sdHZlcnNpb24ubTQsIG00L2x0fm9ic29sZXRlLm00OgorCisgICB1cGRhdGUgdG8gbGlidG9vbCAyLjQKKworMjAxMC0xMC0yMCAxNjo1OSAgaGFyZGFrZXIKKworICAgKiBjb25maWd1cmUsIGRpc3QvYXV0b2NvbmYtdmVyc2lvbjoKKworICAgdXBkYXRlZCB0byBhdXRvY29uZiAyLjY4CisKKzIwMTAtMTAtMjAgMTQ6MjYgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oLCBzbm1wbGliL2NhbGxiYWNrLmMsICAgCisgICAgICB3aW4zMi9taWJfbW9kdWxlX3NodXRkb3duLmg6CisKKyAgIENIQU5HRVM6IGFnZW50OiBBZGRlZCB0aGUgZnVuY3Rpb25zIG5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlKCkKKyAgIGFuZCBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZSgpLgorICAgQ0hBTkdFUzogYWdlbnQ6IE1lbW9yeSBhbGxvY2F0ZWQgYnkgbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKCkKKyAgIGZvciBzdG9yaW5nIFNOTVAgdmFyaWFibGVzIGlzIG5vdyBmcmVlZCB3aGVuIHRoZSBhc3NvY2lhdGVkCisgICBoYW5kbGVyIGlzIHVucmVnaXN0ZXJlZC4KKyAgIENIQU5HRVM6IGFnZW50OiBDYWxsYmFjayBmdW5jdGlvbiBkYXRhIGRlYWxsb2NhdGlvbiBkb2VzIG5vCisgICBsb25nZXIgZnJlZSB0aGUgbWVtb3J5IGFsbG9jYXRlZCBmb3IgdGhlIEFnZW50WCBzZXNzaW9uIC0gdGhlCisgICBtZW1vcnkgdGhhdCB3YXMgYWxsb2NhdGVkIGZvciBBZ2VudFggc2Vzc2lvbnMgaXMgbm93IGRlYWxsb2NhdGVkCisgICBqdXN0IGFzIHRoYXQgZm9yIGFueSBvdGhlciBzZXNzaW9uLiBUaGlzIGZpeGVzIGEgbGVhay1hdC1leGl0LgorICAgQ0hBTkdFUzogYWdlbnQ6IE5vdGlmeSBmaWx0ZXIgdGFibGU6IENhbGxiYWNrIGZ1bmN0aW9uIGRhdGEKKyAgIGRlYWxsb2NhdGlvbiBkb2VzIG5vIGxvbmdlciBmcmVlIHRoZSBkYXRhIGluCisgICAqICAgICAqc25tcE5vdGlmeUZpbHRlclRhYmxlX2lmX2N0eC5jb250YWluZXIgLSB0aGlzIGlzIG5vdyBkb25lIGJ5ICAKKyAgICAgICBzaHV0ZG93bl9zbm1wTm90aWZ5RmlsdGVyVGFibGUoKS4gICAgQ0hBTkdFUzogV2luMzI6CisgICAgICBzaHV0ZG93bl9zbm1wTm90aWZ5RmlsdGVyVGFibGUoKSBhbmQKKworICAgc2h1dGRvd25fd2luRXh0RExMKCkgYXJlIG5vdyBpbnZva2VkIHdoZW4gdGhlIE5ldC1TTk1QIHNlcnZpY2UgaXMKKyAgIHN0b3BwZWQuCisKKzIwMTAtMTAtMjAgMTM6NDcgIGJ2YXNzY2hlCisKKyAgICogdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA1dGFibGVfZGF0YXNldF9jYWdlbnRsaWIuYzoKKworICAgVW5pdC10ZXN0aW5nLCBUMDA1dGFibGVfZGF0YXNldF9jYWdlbnRsaWI6IGFkZGVkIGluaXRfYWdlbnQoKSBhbmQKKyAgIHNodXRkb3duX2FnZW50KCkgY2FsbHMuCiAKIDIwMTAtMTAtMjAgMTM6MTIgIG5iYQogCkBAIC0xMDQzMCw2ICszNTkyMSwxMiBAQAogCiAgICBGaXggbm9uLUFOU0kgZnVuY3Rpb24gaGVhZGluZwogCisyMDEwLTEwLTIwIDEyOjUxICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jOgorCisgICBmaXggaXBDaWRyUm91dGVUYWJsZSAobWFzaykgZm9yIGxpdHRsZSBlbmRpYW4gc3lzdGVtcworCiAyMDEwLTEwLTIwIDEwOjM0ICBidmFzc2NoZQogCiAgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsICAgCkBAIC0xMDQ1MCw2ICszNTk0NywyNyBAQAogICAgaXMgZm9yIHRoaXMgY2hhbmdlIHRoYXQgaXQgd2FzIG5lY2Vzc2FyeSB0byBpbnRyb2R1Y2UgdGhlIG5ldwogICAgZnVuY3Rpb24gc25tcF9zZXNzX3Nlc3Npb25fbG9va3VwKCkuCiAKKzIwMTAtMTAtMTkgMjM6NDkgIG1hZ2ZyCisKKyAgICogIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNnNubXB2MmNnZXRmYWlsX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MXNubXB2MmN0cmFwX3NpbXBsZSwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MnNubXB2MmNpbmZvcm1fc2ltcGxlLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTQxc25tcHYyY3ZhY21nZXRmYWlsX3NpbXBsZToKKworICAgQ0hBTkdFUzogdGVzdGluZzogQWRkIG1pc3NpbmcgcHJlY29uZGl0aW9ucworCisyMDEwLTEwLTE5IDIyOjExICBoYXJkYWtlcgorCisgICAqIGRpc3QvcGF0bWU6CisKKyAgIGRvbid0IGRlZmF1bHQgdG8gYXBwbHlpbmcgdG8gNS4yCisKKzIwMTAtMTAtMTkgMjI6MTAgIGhhcmRha2VyCisKKyAgICogZGlzdC9wYXRtZToKKworICAgYWRkZWQgdGhlIDUuNiBicmFuY2gKKwogMjAxMC0xMC0xOSAyMToxMyAgbmJhCiAKICAgICogc25tcGxpYi9wYXJzZS5jOgpAQCAtMTA1MjIsMTEgKzM2MDQwLDU3IEBACiAgICByZWRlZmluaXRpb24gb2YgdGhlIG1hbGxvYygpIG1hY3JvIGR1cmluZyBidWlsZGluZyB0aGUgTmV0LVNOTVAKICAgIHNvdXJjZSBjb2RlLgogCi0yMDEwLTEwLTE4IDEwOjM1ICBidmFzc2NoZQorMjAxMC0xMC0xOSAwNzowNCAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaDoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEZhY3RvciBvdXQgY29tbW9uIGNvbmZpZ19hZGRfbWliIHN0YXRtZW50cworCisyMDEwLTEwLTE4IDE0OjIyICBidmFzc2NoZQorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgorCisgICBNYXJrIHRoZSBwcm9wZXIgaGFuZGxlciB0aGF0IG93bnMgdGhlIHRhYmxlIHJlZ2lzdHJhdGlvbgorICAgaW5mb3JtYXRpb24uCisKKzIwMTAtMTAtMTggMTA6NTQgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmg6CisKKyAgIENIQU5HRVM6IGFnZW50OiBBZGRlZCBmdW5jdGlvbnMgbmV0c25tcF9oYW5kbGVyX293bnNfdGFicmVxKCksCisgICBuZXRzbm1wX3JlZ2lzdHJhdGlvbl9vd25zX3RhYnJlcSgpLCBuZXRzbm1wX2l0ZXJhdG9yX2Nsb25lKCkuCisgICBFeHBvcnRlZCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2Nsb25lKCkuCisgICBDSEFOR0VTOiBhZ2VudDogTW9kaWZpZWQgbmV0c25tcF9pdGVyYXRvcl9kZWxldGVfdGFibGUoKSBzdWNoCisgICB0aGF0IGl0IGZyZWVzIHRoZSB0YWJsZSByZWdpc3RyYXRpb24gaW5mb3JtYXRpb24gc3RvcmVkIGluIGEKKyAgIHRhYmxlIGl0ZXJhdG9yIHRvby4KKyAgIENIQU5HRVM6IGFnZW50OiBNb2RpZmllZCBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcl9oYW5kbGVyKCkKKyAgIHN1Y2ggdGhhdCB0aGUgdGFibGUgaXRlcmF0b3IgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgZnJlZWQKKyAgIHdoZW4gdGhlIGFzc29jaWF0ZWQgaGFuZGxlciBpcyBmcmVlZC4KKyAgIAorICAgUmVzdG9yZWQgdGhlIGJlaGF2aW9yIG9mIG5ldHNubXBfZ2V0X3RhYmxlX2hhbmRsZXIoKSB0byB0aGF0IG9mCisgICByMTk0NDksIHRoYXQgaXMsIG5vdCBzZXR0aW5nIHVwIHRoZSBkYXRhX2ZyZWUgcG9pbnRlciBiZWNhdXNlIG5vdAorICAgYWxsIGNhbGxlcnMgb2YgbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcigpIGV4cGVjdCB0aGF0IHRhYmxlCisgICByZWdpc3RyYXRpb24gaW5mb3JtYXRpb24gaXMgZnJlZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBoYW5kbGVyIGlzCisgICBmcmVlZC4KKworMjAxMC0xMC0xOCAxMDozNCAgYnZhc3NjaGUKIAogICAgKiBzbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jOgogCi0gICBCYWNrcG9ydGVkIHIxOTQ5MSB0byB0aGUgVjUuNiBicmFuY2ggKGNvbXBpbGVyIHdhcm5pbmcgZml4KS4KKyAgIEZpeGVkIGEgY29tcGlsZXIgd2FybmluZyBhYm91dCBjYXN0aW5nIGF3YXkgY29uc3RuZXNzLgogCiAyMDEwLTEwLTE4IDA4OjUyICBidmFzc2NoZQogCkBAIC0xMDYyOSw2ICszNjE5MywxNCBAQAogICAgQ0hBTkdFUzogdGVzdGluZzogSXQgaXMgYWdhaW4gcG9zc2libGUgdG8gcnVuIGFuIGluZGl2aWR1YWwgdGVzdAogICAgdmlhIHRoZSBzY3JpcHQgdGVzdGluZy9SVU5URVNUUy4KIAorMjAxMC0xMC0xNyAxNDoyOCAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaCwgc25tcGxpYi90b29scy5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBBZGRlZCB0aGUgZnVuY3Rpb24gbmV0c25tcF9jaGVja19kZWZpbmVkbmVzcygpLAorICAgd2hpY2ggaGVscHMgdG8gZmluZCB0aGUgY2F1c2Ugb2YgdW5kZWZpbmVkIHZhbHVlIGVycm9ycyBhcworICAgcmVwb3J0ZWQgYnkgVmFsZ3JpbmQuCisKIDIwMTAtMTAtMTcgMTQ6MjQgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmg6CkBAIC0xMDYzNiw2ICszNjIwOCwxMyBAQAogICAgUmVtb3ZlZCBhbiBvYnNvbGV0ZSBkZWNsYXJhdGlvbjogdGhlIGZ1bmN0aW9uIGFnZW50eF9idWlsZCgpIGhhcwogICAgYmVlbiByZW1vdmVkIGEgbG9uZyB0aW1lIGFnby4KIAorMjAxMC0xMC0xNyAxNDowNSAgYnZhc3NjaGUKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIEFkZGVkIGNvbmZpZ3VyZSB0ZXN0IGZvciB0aGUgVmFsZ3JpbmQgaGVhZGVyIGZpbGVzLgorCiAyMDEwLTEwLTE3IDEyOjAxICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvc25tcF9vcGVuc3NsLmM6CkBAIC0xMDY1MSw3ICszNjIzMCw4IEBACiAKIDIwMTAtMTAtMTcgMDk6MzYgIGJ2YXNzY2hlCiAKLSAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oLCAgIAorICAgKiAgYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYywgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaCwgICAKICAgICAgIHNubXBsaWIvc25tcF9vcGVuc3NsLmMsIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5jOgogCiAgICBGaXhlZCBhIGZldyBjb21waWxlciB3YXJuaW5ncyBieSBpbnNlcnRpbmcgYXBwcm9wcmlhdGUgY2FzdHMuCkBAIC0xMDY2NCw2ICszNjI0NCw1NiBAQAogCiAgICBORVRTTk1QX1JFTU9WRV9DT05TVCgpLXJlbGF0ZWQgY2xlYW51cC4KIAorMjAxMC0xMC0xNyAwMTo0MSAgbWFnZnIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZGVmYXVsdF9tb2R1bGVzLmgsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCwgICAKKyAgICAgIGFnZW50L3NubXBkLmM6CisKKyAgIE5FV1M6IHNubXBkOiBSZW1vdmUgdXRpbF9mdW5jcy9FeGl0IGZyb20gdGhlIHJlcXVpcmVtZW50IHNldHMgb2YKKyAgIHV0aWxfZnVuY3MgYW5kIGRlZmF1bHRfbW9kdWxlcy4KKyAgIE5FV1M6IHNubXBkOiBOZXZlciB1c2UgRXhpdCB0byB0ZXJtaW5hdGUgdGhlIGFnZW50LgorCisyMDEwLTEwLTE2IDIyOjMyICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCBhZ2VudC9zbm1wZC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogTWFrZSB0aGUgc2V0dGluZyBvZiB0aGUgYXJndnJlc3RhcnQqIHZhcmlhYmxlcworICAgb3B0aW9uYWwgb24gVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRS4KKyAgIE5FV1M6IHNubXBkOiBSZW1vdmUgdXRpbF9mdW5jcy9yZXN0YXJ0IGZyb20gdGhlIHJlcXVpcmVtZW50IHNldHMKKyAgIG9mIHV0aWxfZnVuY3MgYW5kIGRlZmF1bHRfbW9kdWxlcy4KKyAgIENIQU5HRVM6IHNubXBkOiBBZGQgdXRpbF9mdW5jcy9yZXN0YXJ0IHRvIHRoZSByZXF1aXJlbWVudCBzZXQgb2YKKyAgIHVjZC1zbm1wL3ZlcnNpb25pbmZvLgorCisyMDEwLTEwLTE2IDIyOjA1ICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogRXh0ZW5kIHRoZSBkb2N1bWVudGF0aW9uIGZvciBkYXRhX2Nsb25lIGFuZAorICAgZGF0YV9mcmVlCisKKzIwMTAtMTAtMTYgMjI6MDMgIG1hZ2ZyCisKKyAgICogYWdlbnQvaGVscGVycy93YXRjaGVyLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGNvcHkgd2F0Y2hlZCBkYXRhIGl0ZW1zCisgICB3aXRob3V0IG1lbW9yeSBsZWFrcy4KKworMjAxMC0xMC0xNiAyMjowMSAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgY21wCisKKzIwMTAtMTAtMTYgMTk6NDQgIG1hZ2ZyCisKKyAgICogYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IERvIG5vdCBsZWFrIHRoZSBsaW1pdHMgb2Ygc2NhbGFyX2dyb3VwIG9iamVjdHMgb24KKyAgIHNodXRkb3duLgorCiAyMDEwLTEwLTE2IDA4OjM3ICBidmFzc2NoZQogCiAgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGNvbmZpZ3VyZSwgICAKQEAgLTEwNjcxLDEwICszNjMwMSwyNiBAQAogCiAgICBTcGVsbGluZyBmaXg6IGR1bHBpY2F0ZSAtPiBkdXBsaWNhdGUuCiAKKzIwMTAtMTAtMTYgMDg6MzQgIGJ2YXNzY2hlCisKKyAgICogCisgICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jOgorCisgICBBZGRlZCBtb3JlIHRlc3QgY29kZS4KKworMjAxMC0xMC0xNiAwODozMyAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKKworICAgRm9sbG93LXVwIGZvciByMTk0NjU6IGhhbmRsZSBvdXQtb2YtbWVtb3J5IHByb3Blcmx5IC8gcmVtb3ZlZCBhCisgICBkdXBsaWNhdGUgZnVuY3Rpb24uCisKIDIwMTAtMTAtMTUgMTk6MTcgIGJ2YXNzY2hlCiAKICAgICogIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2FnZW50bGliX2J1aWxkLCAgIAogICAgICAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jYWdlbnRsaWJfcnVuLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jbGliX2J1aWxkLCAgIAogICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA1dGFibGVfZGF0YXNldF9jYWdlbnRsaWIuYywgICAKICAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNXRhYmxlX2RhdGFzZXRfY2xpYi5jLCAgIAogICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jYWdlbnRsaWIuYywKQEAgLTEwNjg0LDM2ICszNjMzMCwzMiBAQAogICAgQ0hBTkdFUzogdGVzdGluZzogSW50cm9kdWNlZCBuZXcgdGVzdCB0eXBlIG5leHQgdG8gY2FwcCBhbmQgY2xpYjoKICAgIGNhZ2VudGxpYi4KIAorMjAxMC0xMC0xNSAxODo1NiAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYywgYWdlbnQvaGVscGVycy90YWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCwgICAKKyAgICAgIHRlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2xpYi5jOgorCisgICBORVdTOiBzbm1wbGliOiBBZGRlZCBuZXRzbm1wX21pYl9oYW5kbGVyLmRhdGFfY2xvbmUsIGEgZnVuY3Rpb24KKyAgIHBvaW50ZXIgdGhhdCBkZWZpbmVzIGhvdyB0byBjbG9uZSBuZXRzbm1wX21pYl9oYW5kbGVyLm15dm9pZC4KKyAgIE11c3QgYmUgZGVmaW5lZCBpZiBhbmQgb25seSBpZiBkYXRhX2ZyZWUgaXMgc2V0LiBUaGUgZnVuY3Rpb24KKyAgIG5ldHNubXBfaGFuZGxlcl9kdXAoKSBkb2VzIG5vdyBjbG9uZSBNSUIgaGFuZGxlciBwcml2YXRlIGRhdGEgaWYKKyAgIGRhdGFfY2xvbmUoKSBpcyBzZXQuIFByZXZpb3VzbHkgYWZ0ZXIgZHVwbGljYXRpbmcgYSBNSUIgaGFuZGxlcgorICAgYW5kIHVucmVnaXN0ZXJpbmcgb25lIG9mIHRoZSB0d28gTUlCIGhhbmRsZXJzLCB0aGUgcHJpdmF0ZSBkYXRhCisgICBwb2ludGVyIChteXZvaWQpIG9mIHRoZSBvdGhlciBiZWNhbWUgYSBkYW5nbGluZyBwb2ludGVyLiBOb3RlOgorICAgYWRkaXRpb24gb2YgbmV0c25tcF9taWJfaGFuZGxlci5kYXRhX2Nsb25lIGlzIGFuIEFCSSBjaGFuZ2UuCisgICBDSEFOR0VTOiB0ZXN0aW5nOiBhZGRlZCBtb3JlIHRlc3QgY2FzZXMgdG8gdGhlIGhhbmRsZXIKKyAgIHJlZ2lzdHJhdGlvbiB0ZXN0LgorCiAyMDEwLTEwLTE1IDE4OjMyICBidmFzc2NoZQogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYzoKIAogICAgRml4ZWQgYSBjb21waWxlciB3YXJuaW5nLgogCi0yMDEwLTEwLTE1IDEyOjU0ICBidmFzc2NoZQotCi0gICAqICB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQsICAgCi0gICAgICB0ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NsaWIuYzoKLQotICAgQ0hBTkdFUzogdGVzdGluZzogVW5pdCB0ZXN0cyBjYW4gbm93IGludm9rZSBmdW5jdGlvbnMgZnJvbQotICAgbGliYWdlbnQuCi0gICBDSEFOR0VTOiB0ZXN0aW5nOiBBZGRlZCB1bml0IHRlc3QgZm9yIHRhYmxlX2RhdGFzZXQuCi0gICAoQmFja3BvcnRlZCBmcm9tIHIxOTQ1MCBmcm9tIHRoZSB0cnVuay4pCi0KLTIwMTAtMTAtMTUgMTI6NTMgIGJ2YXNzY2hlCi0KLSAgICogIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMsICAgCi0gICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKLSAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oLCAgIAotICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0Lmg6Ci0KLSAgIENIQU5HRVM6IHNubXBsaWI6IEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuCi0gICBDSEFOR0VTOiBzbm1wbGliOiBBZGRlZCBkZWNsYXJhdGlvbiBmb3IgdGhlIGZ1bmN0aW9uCi0gICBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkgaW4gYSBwdWJsaWMgYWdlbnQgaGVhZGVyIGZpbGUuCi0gICBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBtZW1vcnkgbGVhayBpbgotICAgbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpLgotICAgKEJhY2twb3J0ZWQgcjE5NDUwIGFuZCByMTk0NTQgZnJvbSB0cnVuay4pCi0KIDIwMTAtMTAtMTUgMTI6MzAgIGJ2YXNzY2hlCiAKICAgICogIGFnZW50L2FnZW50X2hhbmRsZXIuYywgICAKQEAgLTEwNzQ4LDYgKzM2MzkwLDMwIEBACiAgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IEJ1aWxkcyBub3cgY29ycmVjdGx5IHdpdGggYSA2NC1iaXQKICAgIGNvbXBpbGVyLgogCisyMDEwLTEwLTE1IDA5OjQ1ICBidmFzc2NoZQorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogc25tcF9zaHV0ZG93bigpOiBhZGRlZCBjYWxsIHRvCisgICBuZXRzbm1wX2NlcnRzX3NodXRkb3duKCkuCisKKzIwMTAtMTAtMTUgMDY6NDUgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CisKKyAgIEZvbGxvdy11cCBmb3IgcjE5NDUwOiBsZXQgbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQoKSBmcmVlCisgICBhbGwgdGFibGVfZGF0YXNldC1yZWxhdGVkIG1lbW9yeS4KKworMjAxMC0xMC0xNCAyMzoxNSAgbWFnZnIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3RyYW5zcG9ydHMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSBpdCBwb3NzaWJsZSB0byByZWdlbmVyYXRlIHVzaW5nIGF1dG9jb25mCisgICAyLjY4LgorCiAyMDEwLTEwLTE0IDIzOjAxICBtYWdmcgogCiAgICAqICBzbm1wbGliL3NubXBfbG9nZ2luZy5jLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMsICAgCkBAIC0xMDc1NSwxMiArMzY0MjEsMjUgQEAKIAogICAgQ0hBTkdFUzogc25tcGxpYjogQmUgY29uc3QgY29ycmVjdCBvdmVyIGNhbGxzIHRvIHN0ciogZnVuY3Rpb25zLgogCi0yMDEwLTEwLTE0IDIyOjU3ICBtYWdmcgorMjAxMC0xMC0xNCAxNToxOSAgYnZhc3NjaGUKIAotICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L2NsaWJfYnVpbGQ6CisgICAqICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9jbGliX2J1aWxkLCAgIAorICAgICAgdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA1dGFibGVfZGF0YXNldF9jbGliLmM6CiAKLSAgIENIQU5HRVM6IHRlc3Rpbmc6IEdlbmVyYXRlIGEgbm9ybWFsICNsaW5lIGRpcmVjdGl2ZSBhcyBwZXIgQzk5Ci0gICBpbnN0ZWFkIG9mIHRoZSBjb21waWxlci1zcGVjaWZpYyAjPG4+LWRpcmVjdGl2ZS4KKyAgIENIQU5HRVM6IHNubXBsaWI6IEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuCisgICBDSEFOR0VTOiBzbm1wbGliOiBBZGRlZCBkZWNsYXJhdGlvbiBmb3IgdGhlIGZ1bmN0aW9uCisgICBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKCkgaW4gYSBwdWJsaWMgYWdlbnQgaGVhZGVyIGZpbGUuCisgICBDSEFOR0VTOiBzbm1wbGliOiBGaXhlZCBtZW1vcnkgbGVhayBpbgorICAgbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpLgorICAgQ0hBTkdFUzogc25tcGxpYjogRml4ZWQgbWVtb3J5IGxlYWsgdHJpZ2dlcmVkIGJ5IHVucmVnaXN0ZXJpbmcgYQorICAgdGFibGUgaGFuZGxlci4KKyAgIENIQU5HRVM6IHRlc3Rpbmc6IFVuaXQgdGVzdHMgY2FuIG5vdyBpbnZva2UgZnVuY3Rpb25zIGZyb20KKyAgIGxpYmFnZW50LgorICAgQ0hBTkdFUzogdGVzdGluZzogQWRkZWQgdW5pdCB0ZXN0IGZvciB0YWJsZV9kYXRhc2V0LgogCiAyMDEwLTEwLTE0IDE0OjA1ICBidmFzc2NoZQogCkBAIC0xMDgyMSwxMiArMzY1MDAsNjAgQEAKICAgIE1hZGUgc3VyZSB0aGF0IHRoZSB2YXJpYWJsZSAkU05NUF9CQVNFRElSIGlzIGF2YWlsYWJsZSBpbiB0aGUKICAgIFQwMDBjb25maWd1cmUgdGVzdC4KIAorMjAxMC0xMC0xNCAwNjoxOSAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJlZ2VuZXJhdGVkCisKIDIwMTAtMTAtMTQgMDU6MzYgIG5iYQogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jOgogCiAgICBRdWVsbCB3YXJuaW5ncwogCisyMDEwLTEwLTE0IDAzOjUwICByc3RvcnkKKworICAgKiAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luNy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oLCBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICB0ZXN0IGZvciBvcGVuc3NsIHNoYSAyMjQvMjU2LzM4NS81MTIgc3VwcG9ydCBpbnN0ZWFkIG9mCisgICBoYXJkY29kaW5nCisKKzIwMTAtMTAtMTQgMDM6NTAgIHJzdG9yeQorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2g6CisKKyAgIGFkZCBPVVRQVVRFTlZWQVJTIHRvIHNhdmUgaW1wb3J0YW50IGVudmlyb25tZW50IHZhcmlhYmxlczsgd2hlbgorICAgU05NUF9WRVJCT1NFCisgICBpcyBzZXQsIHNhdmUgZW52IHZhcnMgYW5kIGNvbW1hbmQgdG8gaW5kaXZpZHVhbCBpbnZva2VkIGZpbGUgZm9yCisgICBlYWNoIHRlc3Q7CisgICBzYXZlIGVudiB2YXJzIGFuZCBjb21tYW5kIGZvciBlYWNoIFNUQVJUUFJPRworCisyMDEwLTEwLTE0IDAzOjUwICByc3RvcnkKKworICAgKiB0ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9URVNUQ09ORi5zaDoKKworICAgQ0hBTkdFUzogdGVzdGluZzogYXV0by1jcmVhdGUgdXNlciBzcGVjaWZpZWQgU05NUF9UTVBESVIgYW5kCisgICBTTk1QX1RNUF9QRVJTSVNURU5URElSIHRvbzsgZGVmYXVsdCBTTk1QX1RNUF9QRVJTSVNURU5ESVIgYmFzZWQKKyAgIG9uIFNOTVBfVE1QRElSCisgICBmb3IgdXNlciBzcGVjaWZpZWQgU05NUF9UTVBESVIKKworMjAxMC0xMC0xNCAwMzo0OSAgcnN0b3J5CisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEwLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW44LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45Lmg6CisKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBjaGVjayBmb3IgL2Rldi9rbWVtIGluc3RlYWQgb2YgYXNzdW1pbmcgaXQKKyAgIGV4aXN0cyBhbmQgaGFyZGNvZGluZyB3aGVuIGl0IGlzIG5vdCB0aGVyZQorCiAyMDEwLTEwLTE0IDAzOjI4ICByc3RvcnkKIAogICAgKiAgc25tcGxpYi9zbm1wdHNtLmMsIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wRFRMU1VEUERvbWFpbi5jLCAgIApAQCAtMTA4NzEsNyArMzY1OTgsMTQgQEAKIAogICAgY2hlY2sgZm9yIG51bGwgYmVmb3JlIGRlcmVmCiAKLTIwMTAtMTAtMTMgMTY6NTUgIGhhcmRha2VyCisyMDEwLTEwLTEzIDIwOjEyICBtYWdmcgorCisgICAqIHRlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvY2xpYl9idWlsZDoKKworICAgQ0hBTkdFUzogdGVzdGluZzogR2VuZXJhdGUgYSBub3JtYWwgI2xpbmUgZGlyZWN0aXZlIGFzIHBlciBDOTkKKyAgIGluc3RlYWQgb2YgdGhlIGNvbXBpbGVyLXNwZWNpZmljICM8bj4tZGlyZWN0aXZlLgorCisyMDEwLTEwLTEzIDE2OjUzICBoYXJkYWtlcgogCiAgICAqIGRpc3QvYXV0b2NvbmYtdmVyc2lvbiwgdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDAwY29uZmlndXJlOgogCkBAIC0xMDg5NSw4ICszNjYyOSw5IEBACiAKIDIwMTAtMTAtMTMgMTE6NTMgIGJ2YXNzY2hlCiAKLSAgICogIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiwgICAKLSAgICAgIHdpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46CisgICAqICB3aW4zMi9NYWtlZmlsZS1hcHBzLmluLCB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjoKIAogICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBiYXRjaCBidWlsZCB3aXRoIE9wZW5TU0wgZW5hYmxlZCBhbmQKICAgIHdpdGggcmVjZW50IE9wZW5TU0wgZGV2ZWxvcG1lbnQgZmlsZXMgd29ya3MgYWdhaW4uCkBAIC0xMTA1NSwxMiArMzY3OTAsNiBAQAogICAgc3VwcG9ydCB0aGUgLUUgZmxhZyB0byBncmVwLCB1c2UgYXV0b2NvbmYgdG8gZmluZCB0aGUgcmlnaHQgZWdyZXAKICAgIGF0IGFsbCB0aW1lcy4KIAotMjAxMC0xMC0xMSAxNDoxMSAgaGFyZGFrZXIKLQotICAgKiAuOgotCi0gICBjcmVhdGUgcGF0Y2ggYnJhbmNoIGNvcHkKLQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBDaGFuZ2VzOiBWNS42LlJDMyAtPiBWNS42CkBAIC0yNDI4MSw3ICs1MDAxMCw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogZnJvbSAiTWFyY3VzIFLDvGNrZXJ0IjogZml4IHBvc3NpYmxlIGNyYXNoIHdoZW4KKyAgIENIQU5HRVM6IHNubXBkOiBmcm9tICJNYXJjdXMgUueIrfWAkYvvvaT1gI+x54it9YCRi++9pPWAjLTniK31gJGL772k9YCMteeIrfWAkYvvvaT1gI+x54it9YCRi++9pPWAjLTmnotrZXJ0IjogZml4IHBvc3NpYmxlIGNyYXNoIHdoZW4KICAgIDY0LWJpdCBjb3VudGVycyBpbiBpcFN5c3RlbVN0YXRzVGFibGUgZ2V0IGJpZ2dlciB0aGFuIDJeMzIKIAogMjAwOS0wOC0wMyAxOToyNyAgbWFnZnIKQEAgLTM3ODc0LDcgKzYzNjAzLDcgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBmcm9tICJNYXJjdXMgUsO8Y2tlcnQiOiBmaXggcG9zc2libGUgY3Jhc2ggd2hlbgorICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gIk1hcmN1cyBS54it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOeIrfWAkYvvvaT1gIy154it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOaei2tlcnQiOiBmaXggcG9zc2libGUgY3Jhc2ggd2hlbgogICAgNjQtYml0IGNvdW50ZXJzIGluIGlwU3lzdGVtU3RhdHNUYWJsZSBnZXQgYmlnZ2VyIHRoYW4gMl4zMgogCiAyMDA5LTA4LTAzIDE5OjI3ICBtYWdmcgpAQCAtNDAzMzQsMTQgKzY2MDYzLDE0IEBACiAgICAqIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOgogCiAgICBGaXggc3JjL2RzdCBjb25mdXNpb24KLSAgIFBhdGNoIHByb3ZpZGVkIGJ5IEtyenlzenRvZiBPbMSZZHpraQorICAgUGF0Y2ggcHJvdmlkZWQgYnkgS3J6eXN6dG9mIE9s54it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOeIrfWAkYvvvaT1gIy25ZuYemtpCiAKIDIwMDktMDEtMjggMDk6MjkgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6CiAKICAgIENIQU5HRVM6IEZpeCB0d28gYnVncyB3aXRoIHNtdXggcGFzc3dvcmQgc3VwcG9ydC4KLSAgIFBhdGNoIHN1cHBsaWVkIGJ5IEtyenlzenRvZiBPbMSZZHpraQorICAgUGF0Y2ggc3VwcGxpZWQgYnkgS3J6eXN6dG9mIE9s54it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOeIrfWAkYvvvaT1gIy25ZuYemtpCiAKIDIwMDktMDEtMjMgMTQ6NTMgIGpzYWZyYW5lawogCkBAIC01NDI1NCw3ICs3OTk4Myw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOgogCi0gICBIYW5kbGUgZnVsbC1sZW5ndGggSVB2NiBhZGRyZXNzZXMuICBGaXggc3VwcGxpZWQgYnkgUmFkZWsgVm9rw6FsCisgICBIYW5kbGUgZnVsbC1sZW5ndGggSVB2NiBhZGRyZXNzZXMuICBGaXggc3VwcGxpZWQgYnkgUmFkZWsgVm9r54it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOeIrfWAkYvvvaT1gIy154it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOOAlQogCiAyMDA2LTAxLTMwIDAxOjUyICBkdHMxMgogCkBAIC01NDMwMSw3ICs4MDAzMCw3IEBACiAsIHNubXBsaWIvc25tcF9hcGkuYywgcGVybC9TTk1QL1NOTVAucG06CiAKICAgIEhhbmRsZSBub24taW5jcmVhc2luZyBPSURzIGR1cmluZyBhIChwZXJsKSBidWxrd2Fsay4KLSAgIFBhdGNoICMxMzY0NjUwIGZyb20gT2xlIEJqw7hybiBIZXNzZW4KKyAgIFBhdGNoICMxMzY0NjUwIGZyb20gT2xlIEJq54it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOeIrfWAkYvvvaT1gIy154it9YCRi++9pPWAj7HniK31gJGL772k9YCMtOWXt24gSGVzc2VuCiAKIDIwMDYtMDEtMjcgMDM6MDcgIGR0czEyCiAKQEAgLTcwMDQwLDcgKzk1NzY5LDcgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CiAKLSAgIGZpeCBmbG9hdCBjYWxjIGluIHZhcl9leHRlbnNpYmxlX2Rpc2sgcGVyIEhhcmFsZCBTdHJh32JlcmdlciA8aHNAc3lzbG9nLmF0PgorICAgZml4IGZsb2F0IGNhbGMgaW4gdmFyX2V4dGVuc2libGVfZGlzayBwZXIgSGFyYWxkIFN0cmHniK31gJGL772k9YCPseeIrfWAkYvvvaT1gIy144ODZXJnZXIgPGhzQHN5c2xvZy5hdD4KIAogMjAwNC0wOC0zMSAxNDowMiAgaGFyZGFrZXIKIApAQCAtNzI2MjcsNyArOTgzNTYsNyBAQAogICAgKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKIAogICAgRml4IGhhbmRsaW5nIG9mIC0tZW5hYmxlLWxvY2FsLXNtdXggb3B0aW9uCi0gICAoUGF0Y2ggIzk0OTgwOCBmcm9tIEVyaWsgxG5nZ+VyZCkKKyAgIChQYXRjaCAjOTQ5ODA4IGZyb20gRXJpayDniK31gJGL772k9YCPseeIrfWAkYvvvaT1gIy054it9YCRi++9pPWAjLZuZ2fniK31gJGL772k9YCPseeIrfWAkYvvvaT1gIy16ISaZCkKIAogMjAwNC0wNi0xOCAwNjo0NiAgZHRzMTIKIApAQCAtMTAzNTkzLDcgKzEyOTMyMiw3IEBACiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvOiBocl9zd3J1bi5jIChWNC0yLXBhdGNoZXMuNSksIGhyX3N3cnVuLmMKIDoKIAotICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRuRuZ2VyKQorICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRueIrfWAkYvvvaT1gI+x54it9YCRi++9pPWAjLXnqatnZXIpCiAgICAKIDIwMDEtMDMtMTQgMDU6MjIgIGpicG4KIApAQCAtMTA4MTE4LDcgKzEzMzg0Nyw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmM6CiAKLSAgIC0gKG1lbW9yeS5jKTogUGF0Y2ggZnJvbSBSYWduYXIgS2r4cnN0YWQ6CisgICAtIChtZW1vcnkuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq54it9YCRi++9pPWAj7HniK31gJGL772k9YCMteeIrfWAkYvvvaT1gIy/cnN0YWQ6CiAgICAgIC0gZml4ZWQgbGludXggcHJvYmxlbTogd3JvbmcgcGFyYW1zIGdldHRpbmcgcmV0dXJuZWQuCiAgICAKIDIwMDAtMDUtMjUgMDU6MzggIG1zbGlmY2FrCkBAIC0xMDk4OTgsNyArMTM1NjI3LDcgQEAKIAogICAgLSAoY29uZmlndXJlKiB1Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyk6CiAgICAgIC0gUHJvdmlkZSBtaXNzaW5nICdnZXRwYWdlc2l6ZScgcm91dGluZSBmb3IgU29sYXJpcyAyLjQKLSAgICAgICAoVGhhbmtzIHRvIFJhZ25hciBLavhyc3RhZCkKKyAgICAgICAoVGhhbmtzIHRvIFJhZ25hciBLaueIrfWAkYvvvaT1gI+x54it9YCRi++9pPWAjLXniK31gJGL772k9YCMv3JzdGFkKQogICAgCiAyMDAwLTAyLTE2IDIwOjE3ICBtc2xpZmNhawogCkBAIC0xMTcyMjYsNyArMTQyOTU1LDcgQEAKICAgICAgbG9hZGF2ZS5jLCBtZW1vcnlfc29sYXJpczIuYywgcGFzcy5jLCBwYXNzX3BlcnNpc3QuYywgcHJvYy5jLAogICAgICB2ZXJzaW9uaW5mby5jLCBhbGFybS5jLCBldmVudC5jLCBNYWtlZmlsZS5pbiwgcGFyc2UuYywgc25tcC5jLAogICAgICBzbm1wX2RlYnVnLmMsIHNubXBfbG9nZ2luZy5jLCBzbm1wX2xvZ2dpbmcuaCk6IFBhdGNoIGZyb20gUmFnbmFyCi0gICAgIEtq+HJzdGFkOgorICAgICBLaueIrfWAkYvvvaT1gI+x54it9YCRi++9pPWAjLXniK31gJGL772k9YCMv3JzdGFkOgogICAgICAtIGRvIGZpbGUsIHN0ZGVyciwgYW5kIHN5c2xvZyBzdXBwb3J0LgogICAgCiAxOTk5LTA3LTE1IDA4OjQ1ICBoYXJkYWtlcgpAQCAtMTE3MzY5LDcgKzE0MzA5OCw3IEBACiAKICAgICogYWdlbnQvc25tcGQuYzoKIAotICAgLSAoc25tcGQuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq+HJzdGFkOgorICAgLSAoc25tcGQuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq54it9YCRi++9pPWAj7HniK31gJGL772k9YCMteeIrfWAkYvvvaT1gIy/cnN0YWQ6CiAgICAgIC0gQWRkIG9wdGlvbnMgZm9yIHN3aXRjaGluZyB0byBhIGdpdmVuIHVpZCBhbmQgZ2lkLgogICAgCiAxOTk5LTA3LTA4IDE1OjE2ICBoYXJkYWtlcgpAQCAtMTM0MTM4LDcgKzE1OTg2Nyw3IEBACiAKICAgICogc25tcGxpYi9taWIuYzoKIAotICAgRml4IGEgQyBwcmVjZWRlbmNlIGJvdGNoLXVwLCB0aGFua3MgdG8gRmFicu1jaW8gTGFzIENhc2FzIDxGYWJyaWNpb0BhdGFuLmNvbS5icj4KKyAgIEZpeCBhIEMgcHJlY2VkZW5jZSBib3RjaC11cCwgdGhhbmtzIHRvIEZhYnLniK31gJGL772k9YCRi++9pOatu+KAsmNpbyBMYXMgQ2FzYXMgPEZhYnJpY2lvQGF0YW4uY29tLmJyPgogICAgCiAyMDAzLTAyLTI2IDE0OjE0ICBuYmEKIApAQCAtMTUwOTIxLDcgKzE3NjY1MCw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC86IGhyX3N3cnVuLmMgKFY0LTItcGF0Y2hlcy41KSwgaHJfc3dydW4uYzoKIAotICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRuRuZ2VyKQorICAgRml4IExpbnV4IGZpbGUgZGVzY3JpcHRvciBsZWFrIChyZXBvcnRlZCBieSBPbGl2ZXIgRueIrfWAkYvvvaT1gI+x54it9YCRi++9pPWAjLXnqatnZXIpCiAgICAKIDIwMDEtMDMtMTQgMDU6MjIgIGpicG4KIApAQCAtMTU1MTY2LDcgKzE4MDg5NSw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgogCi0gICBGaXggTGludXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgKHJlcG9ydGVkIGJ5IE9saXZlciBG5G5nZXIpCisgICBGaXggTGludXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgKHJlcG9ydGVkIGJ5IE9saXZlciBG54it9YCRi++9pPWAj7HniK31gJGL772k9YCMteepq2dlcikKICAgIAogMjAwMS0wMy0xMyAxMzoyMCAgaGFyZGFrZXIKIApAQCAtMTU4NDEyLDcgKzE4NDE0MSw3IEBACiAJCiAyMDAwLTA1LTI1IDEwOjA3ICBoYXJkYWtlcgogCi0JLSAobWVtb3J5LmMpOiBQYXRjaCBmcm9tIFJhZ25hciBLavhyc3RhZDoKKwktIChtZW1vcnkuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq54it9YCRi++9pPWAj7HniK31gJGL772k9YCMteeIrfWAkYvvvaT1gIy/cnN0YWQ6CiAJICAtIGZpeGVkIGxpbnV4IHByb2JsZW06IHdyb25nIHBhcmFtcyBnZXR0aW5nIHJldHVybmVkLgogCQogMjAwMC0wNS0yNSAwNTozOCAgbXNsaWZjYWsKQEAgLTE1OTYwMSw3ICsxODUzMzAsNyBAQAogCiAJLSAoY29uZmlndXJlKiB1Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyk6CiAJICAtIFByb3ZpZGUgbWlzc2luZyAnZ2V0cGFnZXNpemUnIHJvdXRpbmUgZm9yIFNvbGFyaXMgMi40Ci0JICAgIChUaGFua3MgdG8gUmFnbmFyIEtq+HJzdGFkKQorCSAgICAoVGhhbmtzIHRvIFJhZ25hciBLaueIrfWAkYvvvaT1gI+x54it9YCRi++9pPWAjLXniK31gJGL772k9YCMv3JzdGFkKQogCQogMjAwMC0wMi0xNiAyMDoxNyAgbXNsaWZjYWsKIApAQCAtMTY0OTM1LDcgKzE5MDY2NCw3IEBACiAgICAgLSAoc25tcGRlbHRhLmMsIGludDY0LmMsIGludDY0LmgpOiBtaW5pbWFsIGM2NCBzdXBwb3J0IGZvciBzbm1wZGVsdGEuIFVudGVzdGVkLgogCiBoYXJkYWtlciAgOCBKdWwgOTkgMTY6MDI6NTgKLSAgICAtIChzbm1wZC5jKTogUGF0Y2ggZnJvbSBSYWduYXIgS2r4cnN0YWQ6CisgICAgLSAoc25tcGQuYyk6IFBhdGNoIGZyb20gUmFnbmFyIEtq54it9YCRi++9pPWAj7HniK31gJGL772k9YCMteeIrfWAkYvvvaT1gIy/cnN0YWQ6CiAgICAgICAtIEFkZCBvcHRpb25zIGZvciBzd2l0Y2hpbmcgdG8gYSBnaXZlbiB1aWQgYW5kIGdpZC4KIAogZGF2ZXMgIDkgSnVsIDk5IDAxOjQ5OjQ5CkBAIC0xNjQ5ODIsNyArMTkwNzExLDcgQEAKICAgICAgIGxvYWRhdmUuYywgbWVtb3J5X3NvbGFyaXMyLmMsIHBhc3MuYywgcGFzc19wZXJzaXN0LmMsIHByb2MuYywKICAgICAgIHZlcnNpb25pbmZvLmMsIGFsYXJtLmMsIGV2ZW50LmMsIE1ha2VmaWxlLmluLCBwYXJzZS5jLCBzbm1wLmMsCiAgICAgICBzbm1wX2RlYnVnLmMsIHNubXBfbG9nZ2luZy5jLCBzbm1wX2xvZ2dpbmcuaCk6IFBhdGNoIGZyb20gUmFnbmFyCi0gICAgICBLavhyc3RhZDoKKyAgICAgIEtq54it9YCRi++9pPWAj7HniK31gJGL772k9YCMteeIrfWAkYvvvaT1gIy/cnN0YWQ6CiAgICAgICAtIGRvIGZpbGUsIHN0ZGVyciwgYW5kIHN5c2xvZyBzdXBwb3J0LgogCiBoYXJkYWtlciAyMCBKdWwgOTkgMTc6MDY6NTMKZGlmZiAtLWdpdCBhL0ZBUSBiL0ZBUQppbmRleCBhMmJkNjhhLi40ZmNjZWEyIDEwMDY0NAotLS0gYS9GQVEKKysrIGIvRkFRCkBAIC0xLDcgKzEsNyBAQAogICAgICAgRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMgKEZBUSkgZm9yIHRoZSBVQ0QvTmV0LVNOTVAgcGFja2FnZQogICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCQkgICAgICAgRkFRIEF1dGhvcjogRGF2ZSBTaGllbGQKLQkJCU5ldC1TTk1QIFZlcnNpb246IDUuNi4yCisJCQlOZXQtU05NUCBWZXJzaW9uOiA1LjcuMy5yYzEKIAkgICAgTmV0LVNOTVAvVUNELVNOTVAgUHJvamVjdCBMZWFkZXI6IFdlcyBIYXJkYWtlcgogCSAgICAgRW1haWw6IG5ldC1zbm1wLWNvZGVyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKIApAQCAtMTMxNCw3ICsxMzE0LDcgQEAKICAgY292ZXJlZCBpbiB0aGUgQUdFTlQgYW5kIENPRElORyBzZWN0aW9ucy4KIAogICBZb3Ugc2hvdWxkIGFsc28gcmVhZCB0aGUgc25tcHRyYXAgdHV0b3JpYWwgYXQKLQlodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L2NvbW1hbmRzL3NubXB0cmFwLmh0bWwKKyAgICAgICAgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvd2lraS9pbmRleC5waHAvVFVUOnNubXB0cmFwCiAgIHdoaWNoIHdpbGwgaGVscCB5b3UgdW5kZXJzdGFuZCBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIGtub3cgYWJvdXQgdHJhcHMuCiAKIApAQCAtMTM1MSw3ICsxMzUxLDcgQEAKICAgICAgICAgZm9yd2FyZCBkZWZhdWx0ICAgICAgICAgICAgICAgICAgMTAuMC4wLjIKIAogICBUaGVyZSdzIGEgdHV0b3JpYWwgd2l0aCBtb3JlIGRldGFpbHMgb24gdGhlIHdlYiBzaXRlIGF0Ci0JaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwtNS9jb21tYW5kcy9zbm1wdHJhcC5odG1sCisgICAgICAgIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3dpa2kvaW5kZXgucGhwL1RVVDpzbm1wdHJhcAogCiAKIApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgppbmRleCAxNzRkNjFjLi5jZmNkZjczIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAtNyw2ICs3LDcgQEAKIFZQQVRICQk9IEBzcmNkaXJACiAKIFNVQkRJUlMJCT0gc25tcGxpYiBATUFJTlNVQlNACitGVFNVQkRJUlMJPSBARlRNQUlOU1VCU0Agc25tcGxpYgogVEVTVERJUlMJPSB0ZXN0aW5nCiAKIENQUAkJPSBAQ1BQQCAJCQkJCSAgICAgICAgXApAQCAtMTQsNyArMTUsNyBAQAogCQktRERPTlRfSU5DX1NUUlVDVFMgLURCSU5ESVI9JChiaW5kaXIpIAkJICAgICAgICBcCiAJCSQoRVhUUkFDUFBGTEFHUykKIAotSU5TVEFMTEhFQURFUlM9dmVyc2lvbi5oCitJTlNUQUxMSEVBREVSUz12ZXJzaW9uLmggbmV0LXNubXAtZmVhdHVyZXMuaAogSU5DTFVERVNVQkRJUj1zeXN0ZW0KIElOQ0xVREVTVUJESVJIRUFERVJTPSBhaXguaCBic2QuaCBic2RpMy5oIGJzZGk0LmggYnNkaS5oIGN5Z3dpbi5oIFwKIAlkYXJ3aW4uaCBkYXJ3aW43LmggZGFyd2luOC5oIGRhcndpbjkuaCBkYXJ3aW4xMC5oIGRyYWdvbmZseS5oIGR5bml4LmggXApAQCAtMjksNiArMzAsNyBAQAogSU5DTFVERVNVQkRJUjI9bWFjaGluZQogSU5DTFVERVNVQkRJUkhFQURFUlMyPWdlbmVyaWMuaAogSU5TVEFMTEJVSUxUSEVBREVSUz1pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCitJTlNUQUxMQlVJTFRJTkNMVURFSEVBREVSUz1ARkVBVFVSRUhFQURFUlNACiBJTlNUQUxMQklOU0NSSVBUUz1uZXQtc25tcC1jb25maWcgbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIKIElOU1RBTExVQ0RIRUFERVJTPXVjZC1zbm1wLWNvbmZpZy5oIHZlcnNpb24uaCBtaWJfbW9kdWxlX2NvbmZpZy5oCiAKQEAgLTQ1LDEzICs0NywyMCBAQAogIyBwZXJsIHNwZWNpZmljCiAjCiAjIHllcywgb3JkZXIgbWF0dGVycyBoZXJlLiAgZGVmYXVsdF9zdG9yZSBtdXN0IG9jY3VyIGJlZm9yZSBhbnl0aGluZyBlbHNlCi1QRVJMTU9EVUxFUz1kZWZhdWx0X3N0b3JlIFNOTVAgQVNOIE9JRCBhZ2VudAorUEVSTE1PRFVMRVM9ZGVmYXVsdF9zdG9yZSBTTk1QIEFTTiBPSUQgYWdlbnQgVHJhcFJlY2VpdmVyCitQRVJMTU9EVUxFRlRTPXBlcmwvZGVmYXVsdF9zdG9yZS9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuZnQgXAorCXBlcmwvU05NUC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuZnQgXAorCXBlcmwvQVNOL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5mdCBcCisJcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmZ0IFwKKwlwZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5mdCBcCisJcGVybC9UcmFwUmVjZWl2ZXIvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmZ0CiBQRVJMQVJHUz1AUEVSTEFSR1NACiAKICMKICMgcHl0aG9uIHNwZWNpZmljCiAjCiBQWVRIT05BUkdTPUBQWVRIT05BUkdTQAorUFlUSE9OTU9EVUxFRlRTPXB5dGhvbi9uZXRzbm1wL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5mdAogCiAjCiAjIGxpYnRvb2wKQEAgLTU5LDkgKzY4LDE0IEBACiBMSUJUT09MX0RFUFMgPSBATElCVE9PTF9ERVBTQAogCiAjCisjIGZlYXR1cmUgY2hlY2tzIGZvciBvcHRpb25hbCBjb21wb25lbnRzCisjCitGVE9USEVSVEFSR1M9QFBFUkxGRUFUVVJFU0AgQFBZVEhPTkZFQVRVUkVTQAorCisjCiAjIHRhcmdldHMKICMKLWFsbDogICAgc2Vkc2NyaXB0IEVYQU1QTEUuY29uZiBzdGFuZGFyZGFsbCBuZXQtc25tcC1jb25maWcteCBuZXQtc25tcC1jcmVhdGUtdjMtdXNlciBAUEVSTFRBUkdTQCBAUFlUSE9OVEFSR1NACithbGw6ICAgIHNlZHNjcmlwdCBFWEFNUExFLmNvbmYgIEBGRUFUVVJFVEFSR1NAIHN0YW5kYXJkYWxsIG5ldC1zbm1wLWNvbmZpZy14IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIEBQRVJMVEFSR1NAIEBQWVRIT05UQVJHU0AKIAogc3RhcnQtZmxhZzoKIAlAdG91Y2ggYnVpbGQtaW4tcHJvZ3Jlc3MtZmxhZwpAQCAtNzMsMjMgKzg3LDIzIEBACiAJJChTSEVMTCkgLi9jb25maWcuc3RhdHVzIC0tcmVjaGVjawogCiAKLXNubXBsaWI6Citzbm1wbGliOiBARkVBVFVSRVRBUkdTQAogCUAoY2Qgc25tcGxpYjsgJChNQUtFKSApCiAKLWFnZW50OgorYWdlbnQ6IEBGRUFUVVJFVEFSR1NACiAJQChjZCBzbm1wbGliOyAkKE1BS0UpICkKIAlAKGNkIGFnZW50OyAkKE1BS0UpICkKIAotYXBwczoKK2FwcHM6IEBGRUFUVVJFVEFSR1NACiAJQChjZCBzbm1wbGliOyAkKE1BS0UpICkKIAlAKGNkIGFnZW50OyAkKE1BS0UpIGxpYnMpCiAJQChjZCBhcHBzOyAkKE1BS0UpICkKIAotc25tcGdldCBzbm1wYnVsa2dldCBzbm1wd2FsayBzbm1wYnVsa3dhbGsgc25tcHRyYW5zbGF0ZSBzbm1wc3RhdHVzIHNubXBkZWx0YSBzbm1wdGFibGUgc25tcHRlc3Qgc25tcHNldCBzbm1wdXNtIHNubXB2YWNtIHNubXBnZXRuZXh0IGVuY29kZV9rZXljaGFuZ2Ugc25tcGRmIHNubXB0cmFwIHNubXB0bHM6Citzbm1wZ2V0IHNubXBidWxrZ2V0IHNubXB3YWxrIHNubXBidWxrd2FsayBzbm1wdHJhbnNsYXRlIHNubXBzdGF0dXMgc25tcGRlbHRhIHNubXB0YWJsZSBzbm1wdGVzdCBzbm1wc2V0IHNubXB1c20gc25tcHZhY20gc25tcGdldG5leHQgZW5jb2RlX2tleWNoYW5nZSBzbm1wZGYgc25tcHRyYXAgc25tcHRsczogQEZFQVRVUkVUQVJHU0AKIAlAKGNkIHNubXBsaWI7ICQoTUFLRSkgKQogCUAoY2QgYXBwczsgJChNQUtFKSAkQCApCiAKLWFnZW50eHRyYXAgc25tcHRyYXBkOgorYWdlbnR4dHJhcCBzbm1wdHJhcGQ6IEBGRUFUVVJFVEFSR1NACiAJQChjZCBzbm1wbGliOyAkKE1BS0UpICkKIAlAKGNkIGFnZW50OyAkKE1BS0UpIGxpYnMpCiAJQChjZCBhcHBzOyAkKE1BS0UpICRAICkKQEAgLTE1MCw3ICsxNjQsNyBAQAogZGlzdGFsbDogJHtzcmNkaXJ9L2NvbmZpZ3VyZSAke3NyY2Rpcn0vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAKIAogT1RIRVJDTEVBTlRBUkdFVFM9RVhBTVBMRS5jb25mIHNlZHNjcmlwdAotT1RIRVJDTEVBTlRPRE9TPXBlcmxjbGVhbiBAUFlUSE9OQ0xFQU5UQVJHU0AKK09USEVSQ0xFQU5UT0RPUz1wZXJsY2xlYW4gQFBZVEhPTkNMRUFOVEFSR1NAIGNsZWFuZmVhdHVyZXMgcGVybGNsZWFuZmVhdHVyZXMgcHl0aG9uY2xlYW5mZWF0dXJlcwogCiAjCiAjIHBlcmwgc3BlY2lmaWMgYnVpbGQgcnVsZXMKQEAgLTE5MSwxMyArMjA1LDIxIEBACiAJQGlmIHRlc3QgLWYgcGVybC9NYWtlZmlsZTsgdGhlbiBcCiAJICAgKCBjZCBwZXJsIDsgJChNQUtFKSBjbGVhbiApIDsgXAogCWZpCisKIHBlcmxyZWFsY2xlYW46CiAJQGlmIHRlc3QgLWYgcGVybC9NYWtlZmlsZTsgdGhlbiBcCiAJICAgKCBjZCBwZXJsIDsgJChNQUtFKSByZWFsY2xlYW4gKSA7IFwKIAlmaQogCisuaC5mdDoKKwkkKEZFQVRVUkVDSEVDSykgLS1mZWF0dXJlLWdsb2JhbCAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaCBgZGlybmFtZSAkPGAgJDwgJEAgJChDQykgLUkgJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUgLUkgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIC1FICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAtYwogCi0jCitwZXJsZmVhdHVyZXM6ICQoUEVSTE1PRFVMRUZUUykKKworcGVybGNsZWFuZmVhdHVyZXM6CisJJChSTSkgJChQRVJMTU9EVUxFRlRTKQorCisKICMgcHl0aG9uIHNwZWNpZmljIGJ1aWxkIHJ1bGVzCiAjCiBQWU1BS0U9JChQWVRIT04pIHNldHVwLnB5ICQoUFlUSE9OQVJHUykKQEAgLTIyNSw2ICsyNDcsMTAgQEAKIHB5dGhvbmNsZWFuOgogCUAoZGlyPWBwd2RgOyBjZCBweXRob247ICQoUFlNQUtFKSBjbGVhbiAtLWJhc2VkaXI9JCRkaXIpCiAKK3B5dGhvbmZlYXR1cmVzOiAkKFBZVEhPTk1PRFVMRUZUUykKKworcHl0aG9uY2xlYW5mZWF0dXJlczoKKwkkKFJNKSAkKFBZVEhPTk1PRFVMRUZUUykKIAogIwogIyBtYWtlIGRpc3RjbGVhbiBjb21wbGV0ZWx5IHJlbW92ZXMgYWxsIHRyYWNlcyBvZiBidWlsZGluZyBpbmNsdWRpbmcKQEAgLTI0OSw3ICsyNzUsOCBAQAogCXJtIC1mIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAkJXAogCQlpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAkJXAogCQlpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmggXAotCQlzbm1wbGliL3NubXBzbV9pbml0LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCQlpbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oICAgICAgICAgICAgICAgICAgXAorCQlzbm1wbGliL3NubXBzbV9pbml0Lmggc25tcGxpYi9zbm1wc21fc2h1dGRvd24uaCAgICAgXAogICAgICAgICAgICAgICAgIHNubXBsaWIvdHJhbnNwb3J0cy9zbm1wX3RyYW5zcG9ydF9pbml0cy5oICAgICAgICAgICBcCiAJCWFnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9pbmNsdWRlcy5oIAlcCiAJCWFnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9pbml0cy5oIAlcCkBAIC0yNTgsNyArMjg1LDggQEAKIAkJYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oIAlcCiAJCWFnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5pdHMuaCAJXAogCQlhZ2VudC9taWJncm91cC9taWJfbW9kdWxlX3NodXRkb3duLmggCVwKLQkJYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9kb3RfY29uZi5oCisJCWFnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfZG90X2NvbmYuaCAgICBcCisJCWxvY2FsL3NubXBjb25mCiAJcm0gLXJmIG1rCiAJcm0gLWYgKi5jb3JlCiAKQEAgLTQzMCwzICs0NTgsNCBAQAogCXNubXBnZXQgc25tcGJ1bGtnZXQgc25tcHdhbGsgc25tcGJ1bGt3YWxrIHNubXB0cmFuc2xhdGUgc25tcHN0YXR1cyBcCiAJc25tcGRlbHRhIHNubXB0YWJsZSBzbm1wdGVzdCBzbm1wc2V0IHNubXB1c20gc25tcHZhY20gc25tcGdldG5leHQgXAogCWVuY29kZV9rZXljaGFuZ2Ugc25tcGRmIHNubXB0cmFwIHNubXB0cmFwZAorLlBIT05ZOiBwZXJsZmVhdHVyZXMgcHl0aG9uZmVhdHVyZXMKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnJ1bGVzIGIvTWFrZWZpbGUucnVsZXMKaW5kZXggNjU2ODdlZi4uOWU5ZTkwMCAxMDA2NDQKLS0tIGEvTWFrZWZpbGUucnVsZXMKKysrIGIvTWFrZWZpbGUucnVsZXMKQEAgLTE0LDYgKzE0LDYyIEBACiAKIG9ianM6ICR7T0JKU30gJHtMT0JKU30KIAorIyBmZWF0dXJlcyByZXF1aXJlIHRoYXQgc3ViZGlycyBiZSBtYWRlICpmaXJzdCogdG8gZ2V0IGRlcGVuZGVuY3kKKyMgY29sbGVjdGlvbiBwcm9jZXNzZWQgaW4gdGhlIHJpZ2h0IG9yZGVyCisuUEhPTlk6IGZlYXR1cmVzIGZ0b2JqcyBmdHN1YmRpcnMKK2ZlYXR1cmVzOiAkKEZUT1RIRVJUQVJHUykgZnRzdWJkaXJzIGZ0b2JqcyAkKEZFQVRVUkVGSUxFKQorZnRvYmpzOiAkKEZUT0JKUykKKyQoRkVBVFVSRUZJTEUpOiAkKEZUT0JKUykgJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUvbmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmgKKwljYXQgJChGVE9CSlMpID4gJChGRUFUVVJFRklMRSkuaW4KKwkkKEZFQVRVUkVQUk9DRVNTKSAkKEZFQVRVUkVGSUxFKSAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaCBARkVBVFVSRV9SRU1PVkVfRkxBR1NAIEBGRUFUVVJFX0FERF9GTEFHU0AKK2Z0c3ViZGlyczoKKwlAaWYgdGVzdCAiJChGVFNVQkRJUlMpIiAhPSAiIjsgdGhlbiBcCisJICAgIFNVQkRJUlM9IiQoRlRTVUJESVJTKSIgOyAgICAgICAgXAorICAgICAgICBlbHNlIAkJCSAJICAgIFwKKyAgICAgICAgICAgIFNVQkRJUlM9IiQoU1VCRElSUykiIDsgICAgICAgICAgXAorICAgICAgICBmaSA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJaWYgdGVzdCAiJCRTVUJESVJTIiAhPSAiIjsgdGhlbiBcCisJCWl0PSIkJFNVQkRJUlMiIDsgXAorCQlmb3IgaSBpbiAkJGl0IDsgZG8gXAorCQkJZWNobyAibWFraW5nIGZlYXR1cmVzIGluIGBwd2RgLyQkaSI7IFwKKwkJCSggY2QgJCRpIDsgJChNQUtFKSBmZWF0dXJlcyApIDsgXAorCQkJaWYgdGVzdCAkJD8gIT0gMCA7IHRoZW4gXAorCQkJCWV4aXQgMSA7IFwKKwkJCWZpICBcCisJCWRvbmUgXAorCWZpCisKKy5QSE9OWTogY2xlYW5mZWF0dXJlcyBjbGVhbmZlYXR1cmVzc3ViZGlycworY2xlYW5mZWF0dXJlczogY2xlYW5mZWF0dXJlc3N1YmRpcnMKKwkgICAgICAgcm0gLWYgJChGVE9CSlMpCisJICAgICAgIHJtIC1mICQoRkVBVFVSRUZJTEUpCisJICAgICAgIHJtIC1mICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oCisKK2NsZWFuZmVhdHVyZXNzdWJkaXJzOgorCUBpZiB0ZXN0ICIkKEZUU1VCRElSUykiICE9ICIiOyB0aGVuIFwKKwkgICAgU1VCRElSUz0iJChGVFNVQkRJUlMpIiA7ICAgICAgICBcCisgICAgICAgIGVsc2UgCQkJIAkgICAgXAorICAgICAgICAgICAgU1VCRElSUz0iJChTVUJESVJTKSIgOyAgICAgICAgICBcCisgICAgICAgIGZpIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlpZiB0ZXN0ICIkJFNVQkRJUlMiICE9ICIiOyB0aGVuIFwKKwkJaXQ9IiQkU1VCRElSUyIgOyBcCisJCWZvciBpIGluICQkaXQgOyBkbyBcCisJCQllY2hvICJtYWtpbmcgY2xlYW5mZWF0dXJlcyBpbiBgcHdkYC8kJGkiOyBcCisJCQkoIGNkICQkaSA7ICQoTUFLRSkgY2xlYW5mZWF0dXJlcyApIDsgXAorCQkJaWYgdGVzdCAkJD8gIT0gMCA7IHRoZW4gXAorCQkJCWV4aXQgMSA7IFwKKwkJCWZpICBcCisJCWRvbmUgXAorCWZpCisKKyMgZmVhdHVyZS1jaGVjayBkZWZpbml0aW9ucworLlNVRkZJWEVTOiAuZnQKKy5jLmZ0OgorCUB0ZXN0IC1mICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oIHx8IFwKKwkgICAgZWNobyAiLyogR2VuZXJhdGVkIGJ5IG1ha2UuIERvIG5vdCBtb2RpZnkgZGlyZWN0bHkgKi8iIFwKKwkJPiAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaAorCSQoRkVBVFVSRUNIRUNLKSAtLWZlYXR1cmUtZ2xvYmFsICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oICQobXlzdWJkaXIpICQ8ICRAICQoQ0MpIC1FICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSAtYworCiBzdWJkaXJzOgogCUBpZiB0ZXN0ICIkKFNVQkRJUlMpIiAhPSAiIjsgdGhlbiBcCiAJCWl0PSIkKFNVQkRJUlMpIiA7IFwKQEAgLTQyLDYgKzk4LDcgQEAKICMgaGVhZGVycwogIwogIyBzZXQgSU5TVEFMTEhFQURFUlMgdG8gYSBsaXN0IG9mIHRoaW5ncyB0byBpbnN0YWxsIGluIGVhY2ggbWFrZWZpbGUuCisjIHNldCBJTlNUQUxMQlVJTFRJTkNMVURFSEVBREVSUyBhIGxpc3QgYnVpbHQgYW5kIHBsYWNlZCBpbnRvIGluY2x1ZGUvbmV0LXNubXAvCiAjIHNldCBJTlNUQUxMQlVJTFRIRUFERVJTIHRvIGEgbGlzdCBvZiB0aGluZ3MgdG8gaW5zdGFsbCBmcm9tIGJ1aWxkZGlyCiAjIHNldCBJTlNUQUxMU1VCRElSSEVBREVSUyBhbmQgSU5TVEFMTFNVQkRJUiB0byBzdWJkaXJlY3RvcnkgaGVhZGVycwogIyBzZXQgSU5TVEFMTFNVQkRJUkhFQURFUlMyIGFuZCBJTlNUQUxMU1VCRElSMiB0byBtb3JlIHN1YmRpcmVjdG9yeSBoZWFkZXJzCkBAIC01MCw2ICsxMDcsMTYgQEAKIGluc3RhbGxoZWFkZXJzOiBpbnN0YWxsbG9jYWxoZWFkZXJzIEBpbnN0YWxsdWNkaGVhZGVyc0AgaW5zdGFsbHN1YmRpcmhlYWRlcnMKIAogaW5zdGFsbGxvY2FsaGVhZGVyczoKKwlAaWYgdGVzdCAiJChJTlNUQUxMQlVJTFRJTkNMVURFSEVBREVSUykiICE9ICIiIDsgdGhlbiBcCisJCWVjaG8gY3JlYXRpbmcgZGlyZWN0b3J5ICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKSA7IFwKKwkJaXQ9IiQoSU5TVEFMTEJVSUxUSU5DTFVERUhFQURFUlMpIiA7IFwKKwkJJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS9saWJyYXJ5IDsgXAorCQkkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpL2FnZW50IDsgXAorCQlmb3IgaSBpbiAkJGl0IDsgZG8gXAorCQkJJChJTlNUQUxMX0RBVEEpIGluY2x1ZGUvbmV0LXNubXAvJCRpICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS8kJGkgOyBcCisJCQllY2hvICJpbnN0YWxsaW5nICQkaSBpbiAkKElOU1RBTExfUFJFRklYKSQoaW5jbHVkZWRpcikvJCRpIiA7IFwKKwkJZG9uZSBcCisJZmkKIAlAaWYgdGVzdCAiJChJTlNUQUxMSEVBREVSUykiICE9ICIiIDsgdGhlbiBcCiAJCWVjaG8gY3JlYXRpbmcgZGlyZWN0b3J5ICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKSA7IFwKIAkJaXQ9IiQoSU5TVEFMTEhFQURFUlMpIiA7IFwKQEAgLTMyNyw3ICszOTQsNyBAQAogIyBjbGVhbmluZyB0YXJnZXRzCiAjCiBjbGVhbjogY2xlYW5zdWJkaXJzICQoT1RIRVJDTEVBTlRPRE9TKQotCSQoTElCVE9PTENMRUFOKSAke09CSlN9ICR7TE9CSlN9IGNvcmUgJChTVEFOREFSRENMRUFOVEFSR0VUUykgJChPVEhFUkNMRUFOVEFSR0VUUykKKwkkKExJQlRPT0xDTEVBTikgJHtPQkpTfSAke0xPQkpTfSAgJHtGVE9CSlN9IGNvcmUgJChTVEFOREFSRENMRUFOVEFSR0VUUykgJChPVEhFUkNMRUFOVEFSR0VUUykKIAogY2xlYW5zdWJkaXJzOgogCUBpZiB0ZXN0ICIkKFNVQkRJUlMpIiAhPSAiIjsgdGhlbiBcCkBAIC00MDQsNSArNDcxLDUgQEAKIC5QSE9OWTogY2xlYW4gY2xlYW5zdWJkaXJzIGxpbnQgXAogCWluc3RhbGwgaW5zdGFsbHByb2dzIGluc3RhbGxoZWFkZXJzIGluc3RhbGxsaWJzIFwKIAlpbnN0YWxsYmluIGluc3RhbGxzYmluIGluc3RhbGxzdWJkaXJzIFwKLQlhbGwgc3ViZGlycyBzdGFuZGFyZGFsbCBvYmpzIFwKKwlhbGwgc3ViZGlycyBzdGFuZGFyZGFsbCBvYmpzIGZlYXR1cmVzIFwKIAlkZXBlbmQgbm9zeXNkZXBlbmQgZGlzdGRlcGVuZCBkZXBlbmRkaXJzIG5vc3lzZGVwZW5kZGlycyBkaXN0ZGVwZW5kZGlycwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUudG9wIGIvTWFrZWZpbGUudG9wCmluZGV4IDMzNGZiYjguLjUwM2Y2MWUgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnRvcAorKysgYi9NYWtlZmlsZS50b3AKQEAgLTM2LDYgKzM2LDggQEAKIElOU1RBTEwJCT0gJChMSUJUT09MKSAtLW1vZGU9aW5zdGFsbCBASU5TVEFMTEAKIFVOSU5TVEFMTAk9ICQoTElCVE9PTCkgLS1tb2RlPXVuaW5zdGFsbCBybSAtZgogTElCVE9PTENMRUFOCT0gJChMSUJUT09MKSAtLW1vZGU9Y2xlYW4gcm0gLWYKK0ZFQVRVUkVDSEVDSwk9ICQodG9wX3NyY2RpcikvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLWNoZWNrCitGRUFUVVJFUFJPQ0VTUwk9ICQodG9wX3NyY2RpcikvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZQogSU5TVEFMTF9EQVRBICAgID0gQElOU1RBTExfREFUQUAKIFNFRAkJPSBAU0VEQAogTE5fUwkJPSBATE5fU0AKQEAgLTQ0LDYgKzQ2LDcgQEAKIFBFUkwgICAgICAgICAgICA9IEBQRVJMUFJPR0AKIFBZVEhPTiAgICAgICAgICA9IEBQWVRIT05QUk9HQAogRklORCAgICAgICAgICAgID0gQEZJTkRACitFR1JFUCAgICAgICAgICAgPSBARUdSRVBACiAKICMKICMgQ29tcGlsZXIgYXJndW1lbnRzCkBAIC03NywxNCArODAsMTQgQEAKICMgNS4zIHdhcyBhdCAxMCwgNS40IGlzIGF0IDE1LCAuLi4gIFRoaXMgbGVhdmVzIHNvbWUgcm9vbSBmb3IgbmVlZGVkCiAjIGNoYW5nZXMgZm9yIHBhc3QgcmVsZWFzZXMgaWYgYWJzb2x1dGVseSBuZWNlc3NhcnkuCiAjCi1MSUJDVVJSRU5UICA9IDI1CitMSUJDVVJSRU5UICA9IDMwCiBMSUJBR0UgICAgICA9IDAKLUxJQlJFVklTSU9OID0gMgorTElCUkVWSVNJT04gPSAzCiAKIExJQl9MRF9DTUQgICAgICA9ICQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChMSU5LQ0MpICQoQ0ZMQUdTKSAtcnBhdGggJChsaWJkaXIpIC12ZXJzaW9uLWluZm8gJChMSUJDVVJSRU5UKTokKExJQlJFVklTSU9OKTokKExJQkFHRSkgLW8KIExJQl9FWFRFTlNJT04gICA9IGxhCiBMSUJfVkVSU0lPTiAgICAgPQotTElCX0xEQ09ORklHX0NNRCA9ICQoTElCVE9PTCkgLS1tb2RlPWZpbmlzaCAkKGxpYmRpcikKK0xJQl9MRENPTkZJR19DTUQgPSAkKExJQlRPT0wpIC0tbW9kZT1maW5pc2ggJChJTlNUQUxMX1BSRUZJWCkkKGxpYmRpcikKIExJTksJCT0gJChMSUJUT09MKSAtLW1vZGU9bGluayAkKExJTktDQykKICMgUkFOTElCIAk9IEBSQU5MSUJACiBSQU5MSUIJCT0gOgpkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKaW5kZXggYmFhY2UyMS4uOTM5NmFlZSAxMDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC0zLDMwICszLDEzMiBAQAogdGhhdCBoYXZlIGJlZW4gZml4ZWQvYXBwbGllZCwgYW5kIHRoZSBDaGFuZ2VMb2cgZmlsZSBmb3IgYSBjb21wcmVoZW5zaXZlCiBsaXN0aW5nIG9mIGFsbCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvZGUuCiAKLSo1LjYuMioKKyo1LjcuMyoKKyAgICBNYW55IG1hbnkgYnVnIGZpeGVzIGFuZCBtaW5vciBpbXByb3ZlbWVudHMKKworICAgIHNubXBkLCBzbm1wdHJhcGQgYW5kIGFwcHM6CisgICAgICAtIFBhdGNoIDI1MjU6IGZyb20gUnlhbiBTdGVpbm1ldHo6IEZpeCBhcmd1bWVudCBsZW5ndGggcGFyc2luZyBvZiB0aGUKKwlob3N0IHJlc291cmNlcyBtaWIKKyAgICAgIC0gTWFrZSBFTlZfU0VQQVJBVE9SX0NIQVIgY29uZmlndXJhYmxlCisgICAgICAtIFNFQ1VSSVRZOiBhIGRlbmlhbCBvZiBzZXJ2aWNlIGF0dGFjayB2ZWN0b3Igd2FzIGRpc2NvdmVyZWQgb24KKyAgICAgICAgdGhlIGxpbnV4IGltcGxlbWVudGF0aW9uIG9mIHRoZSBJQ01QLU1JQi4gIFRoaXMgcmVsZWFzZSBmaXhlcworICAgICAgICB0aGlzIGJ1ZyBhbmQgYWxsIHVzZXJzIGFyZSBlbmNvdXJhZ2VkIHRvIHVwZGF0ZSB0aGVpciBTTk1QCisgICAgICAgIGFnZW50IGlmIHRoZXkgbWFrZSB1c2Ugb2YgdGhlIElDTVAtTUlCIHRhYmxlIG9iamVjdHMuCisKKyAgICBwZXJsOgorICAgICAgLSBCVUc6IDI0MDI6IEFkZCBzdXBwb3J0IGZvciBTTk1QdjMgdHJhcHMKKworICAgIFdpbmRvd3M6CisgICAgICAtIFBvcnQgYmF0Y2ggYnVpbGQgaW5mcmFzdHJ1Y3R1cmUgdG8gVmlzdWFsIFN0dWRpbyAyMDEwIGFuZCBsYXRlcgorCUZyb20gVmlzdWFsIFN0dWRpbyAyMDEwIG9uIGl0IGlzIG5vIGxvbmdlciBwb3NzaWJsZSB0byBzcGVjaWZ5CisJaW5jbHVkZSBvciBsaWJyYXJ5IGRpcmVjdG9yaWVzIGdsb2JhbGx5IC0gdGhlc2UgaGF2ZSB0byBiZQorCXNwZWNpZmllZCBwZXIgcHJvamVjdC4gSGVuY2UgdHdvIGFkZGl0aW9uYWwgbWVudSBlbnRyaWVzIGluCisJYnVpbGQuYmF0IHRoYXQgYWxsb3cgdG8gc3BlY2lmeSB0aGVzZSBkaXJlY3Rvcmllcy4KKworKjUuNy4yKgorICAgIHNubXA6CisgICAgICAtIEJVRzogMzUyNjU0OTogQ1ZFLTIwMTItMjE0MSBBcnJheSBpbmRleCBlcnJvciBsZWFkaW5nIHRvIGNyYXNoCiAKICAgICBzbm1wZDoKLSAgICAgIC0gW1BBVENIIDMxOTg3ODFdOiBGaXggY29tcGlsYXRpb24gb2YgZGlzbWFuL3twaW5nLHRyYWNlcm91dGV9IG1vZHVsZXMKLSAgICAgIC0gW0JVRyAzMTY2NTY4XTogRml4IG1pc3NpbmcgaHJTeXN0ZW1Qcm9jZXNzZXMgdmFsdWVzCi0gICAgICAtIFtCVUcgMzUyNjU0OV06IENWRS0yMDEyLTIxNDEgQXJyYXkgaW5kZXggZXJyb3IgbGVhZGluZyB0byBjcmFzaAotICAgICAgLSBbQlVHIDM1MzIwOTBdOiBGaXggaGlnaCBpZkluZGV4IHZhbHVlcyBjcmFzaGluZyBockRldmljZURlc2NyCi0gICAgICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIHdpbGwgYWZmZWN0IHRoZSBpbmRleGluZyBvZiAqYWxsKiBlbnRyaWVzIGluCi0gICAgICAgICAgICAgIHRoZSBockRldmljZVRhYmxlLiAgQXNzdW1wdGlvbnMgYXMgdG8gd2hhdCBpbmRleCBhIGdpdmVuIGRldmljZQotICAgICAgICAgICAgICB3aWxsIHVzZSwgYXJlIG5vIGxvbmdlciB2YWxpZC4KKyAgICAgIC0gQlVHOiAzNTMyMDkwOiBGaXggaGlnaCBpZkluZGV4IHZhbHVlcyBjcmFzaGluZyBockRldmljZURlc2NyCiAKICAgICBidWlsZGluZzoKLSAgICAgIC0gW1BBVENIIDIwOTExNTZdOiBGaXggcGFyYWxsZWwgYnVpbGRzICh1c2luZyAnbWFrZSAtaiA8Tj4nKQorICAgICAgLSBQQVRDSDogMjA5MTE1NjogY29ycmVjdGx5IGRlY2xhcmUgZGVwZW5kZW5jaWVzIGluIE1ha2VmaWxlLiAnbWFrZQorICAgICAgICAtaiA8Tj4nIHNob3VsZCB3b3JrIG5vdy4gQmFja3BvcnQgdGhpcyB0byBWNS00IGFzIGl0IGlzIG5lZWRlZCBmb3IKKyAgICAgICAgY29ycmVjdCBvcGVyYXRpb24gaW4gdGhlIHNpbmdsZSB0aHJlYWRlZCBjYXNlIG9mIG1ha2UgbWlibGliIGFzCisgICAgICAgIHdlbGwuCiAKLSo1LjYuMSoKKyAgICBNYW55IG90aGVyIG1pc2NlbGxhbmVvdXMgbWlub3IgYnVnIGZpeGVzCiAKLSAgICBHZW5lcmFsOgotICAgICAgLSBUaGUgRFRMUyBhbmQgVExTIHRyYW5zcG9ydHMgYW5kIHRoZSBUU00gc2VjdXJpdHkgbW9kZWwgYXJlIG5vCi0gICAgICAgIGxvbmdlciAiYmV0YSIgKHRoZXkndmUgdW5kZXJnb25lIHJpZ29yb3VzIGludGVyb3BlcmFiaWxpdHkgdGVzdGluZykuCi0gICAgICAtIE1hbnkgQnVnIEZpeGVzIChzZWUgdGhlIENIQU5HRVMgYW5kIENoYW5nZUxvZyBmaWxlcyBmb3IgZnVsbCBkZXRhaWxzKQorKjUuNy4xKgogCi0gICAgc25tcGQ6Ci0gICAgICAtIFtQQVRDSCAzMTQxNDYyXTogRml4IG11bHRpLW9wYmplY3QgQWdlbnRYIHN1YmFnZW50IHJlcXVlc3RzCi0gICAgICAtIEZpeCBWQUNNIHBlcnNpc3RhbnQgc3RvcmFnZS4KKyAgbGlibmV0c25tcDoKKyAgICAgIC0gRml4ZWQgdGhlIG1pYi1wYXJzaW5nLWJ1ZyBpbnRyb2R1Y2VkIHNob3J0bHkgYmVmb3JlIDUuNworCisgIGFnZW50OgorICAgICAgLSBmaXhlZCByb3VuZGluZyBlcnJvcnMgZm9yIGRpc2sgcGVyY2VudGFnZSBjYWxjdWxhdGlvbnMKKworICBvcGVuYnNkOgorICAgICAgLSBiZXR0ZXIgc3VwcG9ydCBmb3IgcmVjZW50IG9wZW5ic2QgcmVsZWFzZXMKKworICBmZWF0dXJlczoKKyAgICAgIC0gYnVnIGZpeGVzIHdpdGggbWluaW1hbGlzdCBzdXBwb3J0IGFmdGVyIGFkZGl0aW9uYWwgdXNlciBmZWVkYmFjaworCisgIE1hbnkgb3RoZXIgbWlzY2VsbGFuZW91cyBtaW5vciBidWcgZml4ZXMKKworKjUuNyoKKworICBzbm1wZDoKKyAgICAgIC0gRGVsaXZlcnkgb2YgZGF0YSB2aWEgcmVndWxhcmlseSBzY2hlZHVsZWQgbm90aWZpY2F0aW9ucy4KKyAgICAgICAgKHNlZSAiRGF0YSBEZWxpdmVyeSB2aWEgTm90ZmljYXRpb25zIiBpbiBzbm1wZC5jb25mKQorICAgICAgLSBNYW55IHRpbWUtYmFzZWQgY29uZmlnIG9wdGlvbnMgY2FuIHRha2UgKG0paW5zLCAoaClvdXJzLCAuLi4gYXJndW1lbnRzCisgICAgICAgIChzZWUgdGhlIHNubXBkLmNvbmYgbWFudWFsIHBhZ2UpCisgICAgICAtIFRoZSBQSU5HIGFuZCBUUkFDRVJPVVRFIE1JQnMgbm93IGNvbXBpbGUgYW5kIHdvcmstaXNoIG9uIGxpbnV4CisgICAgICAgIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3dpa2kvaW5kZXgucGhwL0RJU01BTgorICAgICAgLSBNaWIgaGFuZGxlcnMgY2FuIG5vdyBpbXBsZW1lbnQgYSBkYXRhX2Nsb25lIGZ1bmN0aW9uIGZvcgorICAgICAgICBjbG9uaW5nIHRoZSBteXZvaWQgc3RydWN0dXJlIHZhcmlhYmxlIHRvIGF2b2lkIGRhbmdsaW5nIHBvaW50ZXJzCisgICAgICAtIEZpeGVkIHBlcnNpc3RlbnQgc3RvcmFnZSBvZiBWQUNNIE1JQiBjb25maWd1cmF0aW9uCisgICAgICAtIE11bHRpLWhvbWVkIGFnZW50cyBzZW5kIFVEUCByZXNwb25zZXMgZnJvbSB0aGUgcHJvcGVyIElQIGFkZHJlc3MKKyAgICAgIC0gVGhlIGhyU3RvcmFnZVRhYmxlIGltcGxlbWVudGF0aW9uIG5vdyBzdXBwb3J0cyBsYXJnZSBmaWxlc3lzdGVtcyBiZXR0ZXIKKyAgICAgIC0gb3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUgdGFibGVzCisgICAgICAtIEFkZGVkIGEgZGVsaXZlcnlCeU5vdGlmeSBjb25maWcgdG9rZW4gZm9yIHJlZ3VsYXIgZGF0YSBkZWxpdmVyeQorICAgICAgICAoc2VlIHRoZSBzbm1wZC5jb25mIG1hbnVhbCBwYWdlIGFuZCB0aGUgTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQikKKyAgICAgIC0gW1BBVENIIDMxNDE0NjJdOiBmaXggYWdlbnR4IHN1YmFnZW50IGlzc3VlcyB3aXRoIG11bHRpcGxlLW9iamVjdCByZXF1ZXN0cworICAgICAgLSBbUEFUQ0ggMzA1NzA5M106IGxpbnV4IHVzZXMgbGlicGNpIGZvciBjcmVhdGluZyB1c2VmdWwgaWZEZXNjciBzdHJpbmdzCisgICAgICAtIFtQQVRDSCAzMTMxMzk3XTogaHVnZSBzcGVlZHVwcyBvZiB0aGUgVENQL1VEUCBUYWJsZXMKKworICBsaWJuZXRzbm1wOgorICAgICAgLSBSZW1vdmVkIHRoZSBvbGRlciBDTVUgY29tcGF0aWJpbGl0eSBzdXBwb3J0CisgICAgICAtIFRoZSBTU0ggdHJhbnNwb3J0IGlzIG5vdyBjb25maWd1cmFibGUKKworICBUTFMvRFRMUyBzdXBwb3J0OgorICAgICAgLSBUaGUgU05NUCBvdmVyIERUTFMgdHJhbnNwb3J0IG5vdyBwcm9wZXJseSBzdXBwb3J0cyBJUHY2CisgICAgICAtIEludHJvZHVjZWQgbmV3IGNvbmZpZ3VyYXRpb24gdG9rZW5zOiBsb2NhbENlcnQvcGVlckNlcnQKKyAgICAgICAgKGRlcHJlY2F0aW5nIHNlcnZlckNlcnQsIGNsaWVudENlcnQsIGRlZlg1MDlTZXJ2ZXJQdWIsIGRlZlg1MDlDbGllbnRQdWIpCisgICAgICAtIFZhcmlvdXMgZml4ZXMgZm9yIHRoZSBUTFMvRFRMUyB0cmFuc3BvcnRzCisKKyAgYXBwczoKKyAgICAgIC0gQWRkZWQgYSBwZXItdmFyaWFibGUgdGltZWQgb3V0cHV0IHN1cHBvcnQgdG8gc25tcHdhbGsgdXNpbmcgLUNUCisgICAgICAtIHNubXBpbmZvcm0gbm93IGNvcnJlY3RseSB1c2VzIHRoZSBsb2NhbCBlbmdpbmVJRCBmb3IgaW5mb3JtcworICAgICAgLSBBIG51bWJlciBvZiBtaWIyYyBidWcgZml4ZXMKKyAgICAgIC0gTmV3IHNubXAuY29uZiB0b2tlbnMgZm9yIHRpbWVvdXRzIGFuZCByZXRyaWVzCisKKyAgYnVpbGRpbmc6CisgICAgICAtIE5ldyBmbGFncyB0byByZWR1Y2UgdGhlIGFtb3VudCBvZiBjb21waWxlZCBjb2RlIHRvIGJhcmUgbWluaW11bXMuCisgICAgICAgIFRoaXMgaXMgcHJvdmlkZWQgYnkgYSBuZXcgZ2VuZXJpYyBmZWF0dXJlIG1hcmtpbmcvc2VsZWN0aW9uIG1lY2hhbmlzbS4KKyAgICAgICAgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvd2lraS9pbmRleC5waHAvRmVhdHVyZV9NYXJraW5nX2FuZF9TZWxlY3Rpb24KKyAgICAgIC0gSXQncyBub3cgcG9zc2libGUgdG8gYnVpbGQgd2l0aG91dCBTTk1QdjMvVVNNCisgICAgICAgIChlLmcuLCBpZiB5b3Ugb25seSB3YW50IFRMUy9EVExTIHdpdGggU05NUHYzL1RTTSkKKyAgICAgIC0gSXQncyBwb3NzaWJsZSB0byBidWlsZCB0aGUgc3VpdGUgd2l0aCBubyBTRVQgc3VwcG9ydAorICAgICAgICBjb25maWd1cmUgdXNpbmcgLS1lbmFibGUtcmVhZC1vbmx5CisgICAgICAtIEl0J3MgcG9zc2libGUgdG8gYnVpbGQgdGhlIGFnZW50IGFzIGEgbm90aWZ5LW9ubHkgYWdlbnQKKyAgICAgICAgY29uZmlndXJlIHVzaW5nIC0tZW5hYmxlLW5vdGlmeS1vbmx5CisgICAgICAtIEFkZGVkIGEgc2NyaXB0IHRvIHRlc3QgbWVtb3J5IHVzYWdlIHdpdGggdmFyaW91cyBjb25maWcgb3B0aW9ucworICAgICAgICAoc2VlIHRoZSBsb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0cyBzY3JpcHQpCisgICAgICAtIE5ldC1TTk1QIGNhbiBub3cgYmUgYnVpbHQgdG8gcGVyZm9ybSBsb2NhbCBETlNTRUMgdmFsaWRhdGlvbgorICAgICAgICAoaW5zdGFsbCBETlNTRUMtVG9vbHMnIGxpYnZhbCBhbmQgdXNlIC0td2l0aC1sb2NhbC1kbnNzZWMtdmFsaWRhdGlvbikKKworICB0ZXN0aW5nOgorICAgICAgLSBhIG51bWJlciBvZiBuZXcgQVBJIHVuaXQtdGVzdHMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBzdWl0ZQorICAgICAgICAodG8gcnVuIHRoZSB0ZXN0czogY2QgdGVzdGluZyAmJiAuL1JVTkZVTExURVNUUyAtZyB1bml0LXRlc3RzKQorICAgICAgLSBUaGUgdW5pdCB0ZXN0cyBjYW4gYmUgbW9yZSBlYXNpbHkgcnVuIHVuZGVyIHZhbGdyaW5kCisgICAgICAgIChTZWUgaHR0cDovL2JpdC5seS9qc2dSbnYgZm9yIGRldGFpbHMpCisKKyAgb3BlbmJzZDoKKyAgICAgIC0gU3VwcG9ydCBmb3IgdXBkYXRpbmcgdGhlIHJvdXRpbmcgdGFibGUgdmlhIFNOTVAKKworICB3aW4zMjoKKyAgICAgIC0gVGhlIHRlc3Rpbmcgc3VpdGUgd29ya3MgYmV0dGVyIHVuZGVyIHdpbjMyIGVudmlyb25tZW50cworICAgICAgLSBNYW55IGJ1aWxkaW5nIGZpeGVzIGZvciB0aGUgd2luMzIgZW52aXJvbm1lbnQocykKKworICBzb2xhcmlzOgorICAgICAgLSBOZXQtU05NUCBub3cgc3VwcG9ydHMgdGhlIFNDVFAtTUlCCisKKyAgRHJhZ29uRmx5QlNELCBGcmVlQlNEODoKKyAgICAgIC0gTmV0LVNOTVAgc2hvdWxkIG5vdyB3b3JrIG9uIERyYWdvbkZseUJTRCBhbmQgRnJlZUJTRDgKKworICBBbmQgb2YgY291cnNlOgorICAgICAgLSBNYW55IG90aGVyIGJ1ZyBmaXhlcy4gIFNlZSB0aGUgQ0hBTkdFUyBhbmQgQ2hhbmdlTG9nIGZvciBkZXRhaWxzLgogCiAqNS42KgogCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggMjhiNjY2Yi4uOTY5OTgzNiAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw0ICsxLDQgQEAKLQkgICAgICAgUkVBRE1FIGZpbGUgZm9yIG5ldC1zbm1wIFZlcnNpb246IDUuNi4yCisJICAgICAgIFJFQURNRSBmaWxlIGZvciBuZXQtc25tcCBWZXJzaW9uOiA1LjcuMy5yYzEKIAogRElTQ0xBSU1FUgogCkBAIC0zNTIsNiArMzUyLDkgQEAKICAgICBBbmRlcnMgUGVyc3NvbiA8YXBlcnNzb25AdXNlcnMuc291cmNlZm9yZ2UubmV0PgogICAgIFJvamVyIDxyb2plckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CiAgICAgQmFydCBWYW4gQXNzY2hlIDxiYXJ0LnZhbmFzc2NoZUBnbWFpbC5jb20+CisgICAgUGFibG8gQ2FyYm9uaSA8cGNhcmJvbmlAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorICAgIEJpbGwgRmVubmVyIDxmZW5uZXJAZ21haWwuY29tPgorICAgIEJyaWFuIFNpcG9zIDxic2lwb3Nya2ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogCiAgIFdlJ3ZlIHByb2JhYmx5IGZvcmdvdHRlbiBwZW9wbGUgb24gdGhpcyBsaXN0LiAgTGV0IHVzIGtub3cgaWYgeW91J3ZlCiAgIGNvbnRyaWJ1dGVkIGNvZGUgYW5kIHdlJ3ZlIGxlZnQgeW91IG91dC4KZGlmZiAtLWdpdCBhL1JFQURNRS53aW4zMiBiL1JFQURNRS53aW4zMgppbmRleCBhOGI2YmYwLi5lNDkyNDNiIDEwMDY0NAotLS0gYS9SRUFETUUud2luMzIKKysrIGIvUkVBRE1FLndpbjMyCkBAIC00LDEyICs0LDExIEBACiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAotVGhpcyBndWlkZSBkZXNjcmliZXMgYnVpbGRpbmcgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyA2LjAgYW5kIGhpZ2hlciwgd2l0aAotdGhlIGdjYyBjb21waWxlciBmcm9tIE1pbkdXIC8gTVNZUywgYW5kIHdpdGggdGhlIGdjYyBjb21waWxlciBmcm9tIEN5Z3dpbi4KLUFzIGRldmVsb3BlcnMgYnVpbGQgd2l0aCBvdGhlciBXaW4zMiBlbnZpcm9ubWVudHMsIHRoZWlyIG5vdGVzIHdpbGwgYmUgCi1pbmNsdWRlZCBoZXJlLgorVGhpcyBndWlkZSBkZXNjcmliZXMgaG93IHRvIGJ1aWxkIE5ldC1TTk1QIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKyssIHRoZQorTWluR1cgZ2NjIGNvbXBpbGVyIG9yIHRoZSBDeWd3aW4gZ2NjIGNvbXBpbGVyLiAgQXMgZGV2ZWxvcGVycyBidWlsZCB3aXRoIG90aGVyCitXaW4zMiBlbnZpcm9ubWVudHMsIHRoZWlyIG5vdGVzIHdpbGwgYmUgaW5jbHVkZWQgaGVyZS4KIAotVGhlIHJlbWFpbmRlciBvZiB0aGlzIGd1aWRlIGhhcyB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIDoKK1RoZSBzZWN0aW9ucyBpbiB0aGlzIGd1aWRlIGFyZToKIAogQ3VycmVudCBTdGF0dXMgZm9yIFdpbjMyIHBsYXRmb3JtcwogSW50ZXJhY3Rpb25zIHdpdGggT3RoZXIgVmVuZG9yJ3MgUHJvZHVjdHMKQEAgLTM5LDEzICszOCwxNCBAQAogCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKLSogU3RhdHVzIGFzIG9mIDIxLVNlcC0yMDEwIGZvciBXaW4zMiBwbGF0Zm9ybXMKKyogTmV0LVNOTVAgc3RhdHVzIGZvciBXaW4zMiBwbGF0Zm9ybXMKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBBbGwgYXBwbGljYXRpb25zIGJ1aWxkIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBDKysgNi4wLCBNaWNyb3NvZnQgRGV2ZWxvcG1lbnQKIEVudmlyb25tZW50IDIwMDMgKE1TVkMgNy4wLzcuMSksIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMDUsIE1pY3Jvc29mdAotVmlzdWFsIFN0dWRpbyAyMDA4LCBnY2MgdW5kZXIgQ3lnd2luIGFuZCBnY2MgdW5kZXIgTWluR1cuICAKK1Zpc3VhbCBTdHVkaW8gMjAwOCwgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAxMCwgZ2NjIHVuZGVyIEN5Z3dpbiBhbmQgZ2NjCit1bmRlciBNaW5HVy4KIAogICAtICBBbGwgb2YgdGhlIGFwcGxpY2F0aW9ucyB3b3JrIChzbm1wd2Fsaywgc25tcGdldCwgc25tcHNldCwgc25tcHRyYXAsIC4uLikuCiAgIC0gIFRoZSBzeXN0ZW0sIHNubXAsIGlwLCB0Y3AsIHVkcCBhbmQgaWNtcCBNSUItZ3JvdXBzIHdvcmsgKHJlcXVpcmVzIHRoZQpAQCAtODAsNiArODAsMTEgQEAKICAgLSAgQm90aCBidWlsZGluZyB2aWEgdGhlIGludGVyYWN0aXZlIGRldmVsb3BtZW50IGVudmlyb25tZW50IGFuZCB2aWEgdGhlCiAgICAgIGNvbW1hbmQgbGluZSAobm1ha2UpIGlzIHN1cHBvcnRlZC4KIAorICAtICBXaXRoIFZpc3VhbCBTdHVkaW8gMjAwNSBhbmQgbGF0ZXIsIHRoZSBOZXQtU05NUCBzb3VyY2UgY29kZSBjYW4gYmUKKyAgICAgY29tcGlsZWQgaW50byBlaXRoZXIgMzItYml0IG9yIDY0LWJpdCBleGVjdXRhYmxlcyAodGhlIGFtZDY0L3g2NAorICAgICBhcmNoaXRlY3R1cmUpLiBQcmV2aW91cyBWaXN1YWwgU3R1ZGlvIHZlcnNpb25zIHN1cHBvcnQgMzItYml0IGV4ZWN1dGFibGVzCisgICAgIG9ubHkuCisKIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqCkBAIC00NzMsOCArNDc4LDggQEAKIHRoZSBEZWJ1ZyBhbmQgUmVsZWFzZSB2ZXJzaW9ucyBvZiBhbiBhcHBsaWNhdGlvbiBjYW4gYmUgYnVpbHQgYW5kIHRlc3RlZAogc2VwYXJhdGVseS4KIAotVkMrKyA2LjAsIDcuMSwgOC4wICgyMDA1KSBhbmQgOS4wICgyMDA4KSBoYXZlIGJlZW4gdGVzdGVkLiAgQnVpbGRpbmcgd2l0aAotZWFybGllciBNaWNyb3NvZnQgY29tcGlsZXIgdmVyc2lvbnMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KK1ZDKysgNi4wLCA3LjEsIDguMCAoMjAwNSksIDkuMCAoMjAwOCkgYW5kIDEwLjAgKDIwMTApIGhhdmUgYmVlbiB0ZXN0ZWQuCitCdWlsZGluZyB3aXRoIGVhcmxpZXIgTWljcm9zb2Z0IGNvbXBpbGVyIHZlcnNpb25zIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuCiAKIE5vdGU6IGlmIHlvdSB3YW50IHRvIGRpc3RyaWJ1dGUgdGhlIGdlbmVyYXRlZCBleGVjdXRhYmxlLCB5b3Ugd2lsbCBhbHNvIG5lZWQKIHRvIGRpc3RyaWJ1dGUgdGhlIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFJlZGlzdHJpYnV0YWJsZSBQYWNrYWdlLiBDaGVjayB0aGUKQEAgLTUzMiwxMiArNTM3LDIyIEBACiAKIDEuICBPcGVuIGEgY29tbWFuZCBwcm9tcHQKIAotMi4gIEluaXRpYWxpemUgdGhlIFZpc3VhbCBTdHVkaW8gYnVpbGQgZW52aXJvbm1lbnQgYnkgcnVubmluZyBWQ1ZBUlMzMi5iYXQKKzIuICBXaGVuIGJ1aWxkaW5nIHdpdGggT3BlblNTTCwgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgSU5DTFVERSBhbmQgTElCCisgICAgc3VjaCB0aGF0IHRoZXNlIHBvaW50IGF0IHRoZSBwcm9wZXIgT3BlblNTTCBkaXJlY3Rvcmllcy4gQW4gZXhhbXBsZToKKworICAgIHNldCBJTkNMVURFPUM6XE9wZW5TU0wtV2luMzJcaW5jbHVkZQorICAgIHNldCBMSUI9QzpcT3BlblNTTC1XaW4zMlxsaWJcVkNcc3RhdGljCisKKzMuICBJbml0aWFsaXplIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkIGVudmlyb25tZW50IGJ5IHJ1bm5pbmcgdmN2YXJzYWxsLmJhdAogICAgIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiB0aGUgYmluIGZvbGRlciBvZiB5b3VyIFZpc3VhbCBTdHVkaW8gaW5zdGFsbCBmb2xkZXIuCisgICAgSWYgeW91IHdhbnQgdG8gZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIGluc3RlYWQgb2YgMzItYml0IGJpbmFyaWVzLCBydW4KKyAgICB2Y3ZhcnNhbGwuYmF0IHdpdGggdGhlIGFtZDY0IGFyZ3VtZW50LiBTZWUgYWxzbyAiSG93IHRvOiBFbmFibGUgYSA2NC1CaXQKKyAgICBWaXN1YWwgQysrIFRvb2xzZXQgYXQgdGhlIENvbW1hbmQgTGluZSIgZm9yIG1vcmUgaW5mb3JtYXRpb24KKyAgICAoaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3g0ZDJjMDlzJTI4dj12cy44MCUyOS5hc3B4KS4KIAotMy4gIFJ1biB3aW4zMlxidWlsZC5iYXQKKzQuICBSdW4gd2luMzJcYnVpbGQuYmF0CiAKLTQuICBUaGUgZm9sbG93aW5nIHNjcmVlbiB3aWxsIGFwcGVhcjoKKzUuICBUaGUgZm9sbG93aW5nIHNjcmVlbiB3aWxsIGFwcGVhcjoKIAogICAgIE5ldC1TTk1QIGJ1aWxkIGFuZCBpbnN0YWxsIG9wdGlvbnMKICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01NjYsNyArNTgxLDcgQEAKIAogICAgIFNlbGVjdCBvcHRpb24gdG8gc2V0IC8gdG9nZ2xlOiAgCiAKLTUuICBUb2dnbGUgdGhlIG9wdGlvbnMgb24gYW5kIG9mZiBhcyBkZXNpcmVkIGJ5IHR5cGluZyB0aGUgbGluZSBudW1iZXIgCis2LiAgVG9nZ2xlIHRoZSBvcHRpb25zIG9uIGFuZCBvZmYgYXMgZGVzaXJlZCBieSB0eXBpbmcgdGhlIGxpbmUgbnVtYmVyIAogICAgIGZvbGxvd2VkIGJ5IDxlbnRlcj4uICAKIAogICAgIFRvIGNvbXBpbGUgd2l0aCBPcGVuU1NMLCB0aGUgT3BlblNTTCBsaWJyYXJ5IGFuZCBoZWFkZXIgZmlsZXMgbXVzdCAKQEAgLTU4Niw3ICs2MDEsNyBAQAogCiAgICAgV2hlbiB5b3UgYXJlIHJlYWR5IHRvIGJ1aWxkLCB0eXBlIGYgPGVudGVyPgogCi02LiAgQnVpbGRpbmcgd2lsbCBiZWdpbi4gIEZvbGxvd2luZyBpcyBhIHNhbXBsZSBzY3JlZW4gc2hvdCBvZiBhIHF1aWV0IGJ1aWxkOgorNy4gIEJ1aWxkaW5nIHdpbGwgYmVnaW4uICBGb2xsb3dpbmcgaXMgYSBzYW1wbGUgc2NyZWVuIHNob3Qgb2YgYSBxdWlldCBidWlsZDoKIAogICAgIEJ1aWxkaW5nLi4uCiAgICAgCkBAIC02MDgsNyArNjIzLDcgQEAKICAgICAKICAgICBEb25lIQogCi03LiAgSWYgdGhlIGZvbGRlciB0aGF0IE5ldC1TTk1QIHdhcyBpbnN0YWxsZWQgdG8gaXMgZXZlciBjaGFuZ2VkLCBtb2RpZnkgdGhlIAorOC4gIElmIHRoZSBmb2xkZXIgdGhhdCBOZXQtU05NUCB3YXMgaW5zdGFsbGVkIHRvIGlzIGV2ZXIgY2hhbmdlZCwgbW9kaWZ5IHRoZSAKICAgICBzeXN0ZW0gZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHJlZ2lzdHJ5IGtleXMgYXMgZXhwbGFpbmVkIGluIHRoZSAKICAgICAnQ29uZmlndXJhdGlvbl9PdmVydmlldy5odG1sJyBmaWxlIGxvY2F0ZWQgaW4gd2luMzIvZGlzdC9odG1saGVscC4KIApAQCAtNzI4LDEwICs3NDMsMTIgQEAKIDUuIEJ1aWxkIHRoZSBhZ2VudCBhbmQgdGhlIGFwcGxpY2F0aW9ucwogCiAgICBhLiBPcGVuIHdpbjMyLmRzdyAoc3RhdGljIGJ1aWxkKSBvciB3aW4zMmRsbC5kc3cgKGR5bmFtaWMgYnVpbGQpLgotICAgYi4gQ2xpY2sgIkJ1aWxkLT5CYXRjaCBCdWlsZC4uLiIgIAotICAgYy4gU2VsZWN0IHRoZSBwcm9qZWN0cyBhbmQgY29uZmlndXJhdGlvbnMgeW91IHdhbnQgdG8gYnVpbGQuCi0gICBkLiBDbGljayAiUmVCdWlsZCBBbGwiLgotICAgZS4gV2hlbiBidWlsZGluZyBpcyBkb25lLCBWaWV3IHRoZSBPdXRwdXQgd2luZG93LCBjbGlwIGFuZAorICAgYi4gSWYgeW91IHdhbnQgdG8gZ2VuZXJhdGUgNjQtYml0IGJpbmFyaWVzIGluc3RlYWQgb2YgMzItYml0IGJpbmFyaWVzLAorICAgICAgc2VsZWN0ICJCdWlsZC9Db25maWd1cmF0aW9uIE1hbmFnZXIiIGFuZCBhZGQgdGhlICJ4NjQiIHBsYXRmb3JtLgorICAgYy4gU2VsZWN0ICJCdWlsZC9CYXRjaCBCdWlsZC4uLiIgIAorICAgZC4gU2VsZWN0IHRoZSBwcm9qZWN0cyBhbmQgY29uZmlndXJhdGlvbnMgeW91IHdhbnQgdG8gYnVpbGQuCisgICBlLiBDbGljayAiUmVCdWlsZCBBbGwiLgorICAgZi4gV2hlbiBidWlsZGluZyBpcyBkb25lLCBWaWV3IHRoZSBPdXRwdXQgd2luZG93LCBjbGlwIGFuZAogICAgICAgc2F2ZSB0byBhIHRleHQgZmlsZSBpZiB0aGVyZSBpcyBzb21lIGluZm9ybWF0aW9uIHRvIHNoYXJlLgogCiA2LiAgSWYgdGhlIFBlcmwgbW9kdWxlcyBhcmUgcmVxdWlyZWQsIGNvbnRpbnVlIHdpdGggdGhlIG5leHQgc2VjdGlvbjoKQEAgLTkxOCwxNiArOTM1LDEwIEBACiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogVGhlIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbiBzdXBwb3J0cyBTTk1QIG92ZXIgSVB2NC1iYXNlZCB0cmFuc3BvcnRzLgotSG93ZXZlciwgV2luZG93cyBYUCBhbmQgV2luZG93cyAyMDAwIGluY2x1ZGUgYW4gSVB2Ni1jYXBhYmxlIHN0YWNrLCB3aGljaAorSG93ZXZlciBXaW5kb3dzIDIwMDAgYW5kIGxhdGVyIGluY2x1ZGUgYW4gSVB2Ni1jYXBhYmxlIHN0YWNrIHdoaWNoCiBjYW4gYmUgdXNlZCB0byBwcm92aWRlIFNOTVAgb3ZlciBJUHY2LiAgVG8gZW5hYmxlIElQdjYsIHRoZSBNaWNyb3NvZnQgUFNESyAKLWlzIHJlcXVpcmVkIGFuZCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgdG8gdGhlIE5ldC1TTk1QIHdpbjMyIFZpc3VhbCBDKysgCi1jb25maWd1cmF0aW9uIGFyZSBuZWVkZWQ6Ci0KLVByb2plY3QgY2hhbmdlcwotPT09PT09PT09PT09PT09Ci0KLSAxLiBFZGl0IHRoZSB3aW4zMlxuZXQtc25tcFxuZXQtc25tcC1jb25maWcuaCBoZWFkZXIgZmlsZS4gIENoYW5nZQotICAgIHRoZSBzaW5nbGUgSU5FVDYgbGluZSBmcm9tOgoraXMgcmVxdWlyZWQgYW5kIE5FVFNOTVBfRU5BQkxFX0lQVjYgaGFzIHRvIGJlIGVuYWJsZWQgaW4KK3dpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oLiBDaGFuZ2UgdGhlIGZvbGxvd2luZyBzaW5nbGUgbGluZSBmcm9tOgogCiAgICAgICAgIC8qICN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCiAKQEAgLTkzNSwyMCArOTQ2LDcgQEAKIAogICAgICAgIAkjZGVmaW5lIE5FVFNOTVBfRU5BQkxFX0lQVjYgMQogCi0gMi4gRWRpdCB0aGUgd2luMzJcbGlic25tcF9kbGxcbGlic25tcC5kZWYgZmlsZS4gIEFsbCB0aGUgSVB2NiBmdW5jdGlvbnMgd2lsbAotICAgIGJlIGNvbW1lbnRlZCBvdXQgYW5kIHdpbGwgbmVlZCB0byBiZSBlbmFibGVkIGJ5IHJlbW92aW5nICc7SVB2NicgZnJvbSB0aGUKLSAgICBiZWdpbm5pbmcgb2YgZWFjaCBsaW5lLiAgCi0KLSAgICBGb3IgZXhhbXBsZSwgY2hhbmdlOgotCi0KLSAgICAgICAgO0lQdjYgICAgICAgIG5ldHNubXBfdWRwNl9wYXJzZV9zZWN1cml0eQotCi0gICAgdG86Ci0KLSAgICAgICAgICAgICAgICBuZXRzbm1wX3VkcDZfcGFyc2Vfc2VjdXJpdHkKLQotIDMuIENvbnRpbnVlIHdpdGggdGhlIHNlY3Rpb24gJ01pY3Jvc29mdCBWaXN1YWwgQysrIC0gQnVpbGRpbmciCitOZXh0LCBjb250aW51ZSB3aXRoIHRoZSBzZWN0aW9uICdNaWNyb3NvZnQgVmlzdWFsIEMrKyAtIEJ1aWxkaW5nIgogCiAKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMTAyNyw5ICsxMDI1LDcgQEAKIGZvciBXaW5kb3dzIGJhc2VkIHN5c3RlbXMuIFRoZSBjeWd3aW4xLmRsbCBwcm92aWRlcyBhIFBPU0lYIGVtdWxhdGlvbiBsYXllciAKIHRoYXQgc2ltcGxpZmllcyBwb3J0aW5nIFVuaXggLyBMaW51eCBhcHBsaWNhdGlvbnMgdG8gV2luZG93cy4gVGhlIEN5Z3dpbiBkbGxzCiBhcmUgcmVxdWlyZWQgaWYgYW4gYXBwbGljYXRpb24gaXMgdG8gYmUgZGlzdHJpYnV0ZWQuIFRoZSBkZXBlbmRlbmN5IG9uIHRoZSAKLUN5Z3dpbiBkbGxzIGNhbiBiZSBlbGltaW5hdGVkIHdpdGggdGhlIC0tbW5vLWN5Z3dpbiBjb21waWxlciBmbGFnLCB3aGljaCB1c2VzCi1NaW5HVyB0byBjb21waWxlIGEgbmF0aXZlIFdpbmRvd3MgYmluYXJ5LCBidXQgdGhlIGJlbmVmaXQgb2YgdGhlIFBPU0lYIGVtdWxhdGlvbgotaXMgbG9zdC4gVGhlIEN5Z3dpbiB0b29sIGNoYWluIGFuZCBkb2N1bWVudGF0aW9uIGNhbiBiZSBmb3VuZCBhdDoKK1RoZSBDeWd3aW4gdG9vbCBjaGFpbiBhbmQgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQ6CiAKIGh0dHA6Ly9zb3VyY2VzLnJlZGhhdC5jb20vY3lnd2luLwogCkBAIC0xMDU5LDYgKzEwNTUsNyBAQAogQXMgYW4gZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb25maWd1cmUgb3B0aW9ucyBjcmVhdGUgYSB3b3JraW5nIHNldCBvZgogcHJvZ3JhbXM6CiAKK0VOVl9TRVBBUkFUT1I9IjoiIFwKIC4vY29uZmlndXJlIFwKIAktLXdpdGgtbWliLW1vZHVsZXM9Imhvc3QgYWdlbnR4IGRpc21hbi9ldmVudC1taWIgZXhhbXBsZXMvZXhhbXBsZSIgXAogCS0td2l0aC1vdXQtbWliLW1vZHVsZXM9aG9zdC9ocl9uZXR3b3JrIFwKZGlmZiAtLWdpdCBhL2FjY29uZmlnLmggYi9hY2NvbmZpZy5oCmluZGV4IGYzZjdiZmUuLjEyZjg1YzYgMTAwNjQ0Ci0tLSBhL2FjY29uZmlnLmgKKysrIGIvYWNjb25maWcuaApAQCAtMjcsMTUgKzI3LDYgQEAKICAqLwogI2lmbmRlZiBORVRTTk1QX05PX0FVVE9DT05GX0RFRklOSVRJT05TCiAKLQotI2lmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChtaW5ndzMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCi0jZGVmaW5lIEVOVl9TRVBBUkFUT1IgIjsiCi0jZGVmaW5lIEVOVl9TRVBBUkFUT1JfQ0hBUiAnOycKLSNlbHNlCi0jZGVmaW5lIEVOVl9TRVBBUkFUT1IgIjoiCi0jZGVmaW5lIEVOVl9TRVBBUkFUT1JfQ0hBUiAnOicKLSNlbmRpZgotCiAvKiBkZWZpbml0aW9ucyBhZGRlZCBieSBjb25maWd1cmUgb24tdGhlLWZseSAqLwogQFRPUEAKIEBCT1RUT01ACkBAIC00OTQsMTEgKzQ4NSw4IEBACiAgICBhbmQgYXJlIG5vdCB1c2luZyB0aGUgVUMtRGF2aXMgU05NUCBsaWJyYXJ5LiAqLwogI2RlZmluZSBVQ0RfU05NUF9MSUJSQVJZIDEKIAotLyogYWRkIGluIHJlY2VudCBDTVUgbGlicmFyeSBleHRlbnNpb25zIChub3QgY29tcGxldGUpICovCi0jdW5kZWYgQ01VX0NPTVBBVElCTEUKLQogLyogZmluYWwgY29uY2x1c2lvbiBvbiBubGlzdCB1c2FnZSAqLwotI2lmIGRlZmluZWQoSEFWRV9OTElTVCkgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9OTElTVF9OX1ZBTFVFKSAmJiAhZGVmaW5lZChORVRTTk1QX0RPTlRfVVNFX05MSVNUKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCisjaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUpICYmICFkZWZpbmVkKE5FVFNOTVBfRE9OVF9VU0VfTkxJU1QpICYmIGRlZmluZWQoSEFWRV9LTUVNKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCiAjZGVmaW5lIE5FVFNOTVBfQ0FOX1VTRV9OTElTVAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FnZW50L01ha2VmaWxlLmRlcGVuZCBiL2FnZW50L01ha2VmaWxlLmRlcGVuZAppbmRleCBiYTQyYzVjLi4yNTk3ZjQxIDEwMDY0NAotLS0gYS9hZ2VudC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvTWFrZWZpbGUuZGVwZW5kCkBAIC01LDYgKzUsNyBAQAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yNCwxMSArMjUsOCBAQAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTczLDYgKzcxLDcgQEAKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTIsNiArMTExLDcgQEAKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTEzMSwxMSArMTMxLDggQEAKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xNzksNiArMTc2LDcgQEAKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjIyLDYgKzIyMCw3IEBACiAuL2FnZW50X2luZGV4LmxvOiBtaWJncm91cC9zdHJ1Y3QuaCAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTI0MSwxMSArMjQwLDggQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yODksNiArMjg1LDcgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzM0LDQwICszMzEsMjIgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3NubXB2My91c21Db25mLmggbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2FnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5jbHVkZXMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIG1pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9SbW9uL3Jvd3MuaCBtaWJncm91cC9SbW9uL2FndXRpbC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9SbW9uL3N0YXRpc3RpY3MuaCBtaWJncm91cC9SbW9uL2FsYXJtVGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmggbWliZ3JvdXAvUm1vbi9ldmVudC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaCBtaWJncm91cC9ob3N0L2hyX2RldmljZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX290aGVyLmggbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5oIG1pYmdyb3VwL2hvc3QvaHJfcHJpbnQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmggbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9leGFtcGxlcy93YXRjaGVkLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvUm1vbi9yb3dzLmggbWliZ3JvdXAvUm1vbi9hZ3V0aWwuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmggbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL1Jtb24vaGlzdG9yeS5oIG1pYmdyb3VwL1Jtb24vZXZlbnQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaApAQCAtMzgwLDggKzM1OSw4IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS90Y3AuaCBtaWJncm91cC9taWJJSS9pY21wLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL21pYklJL3VkcC5oIG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oIG1pYmdyb3VwL21pYklJL2lwdjYuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oIC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaCBtaWJncm91cC91Y2Qtc25tcC9wcm9jLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmgKQEAgLTQwMSwxMyArMzgwLDM1IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9hZ2VudC9uc0RlYnVnLmggbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1TZXNzaW9uL3NubXBUbHN0bVNlc3Npb24uaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1QYXJhbXNUYWJsZS9zbm1wVGxzdG1QYXJhbXNUYWJsZS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmggbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmgKQEAgLTQxNyw2ICs0MTgsMTAgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oCkBAIC01MDcsNiArNTEyLDcgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9kb3RfY29uZi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2RvdF9jb25mLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNTI2LDExICs1MzIsOCBAQAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTU3NCw2ICs1NzcsNyBAQAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC02MzUsMTEgKzYzOSw4IEBACiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNjQ5LDYgKzY1MCw3IEBACiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNjgzLDYgKzY4NSw3IEBACiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzI1LDYgKzcyOCw3IEBACiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oCiAuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtNzQzLDExICs3NDcsOCBAQAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTc5MSw2ICs3OTIsNyBAQAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTgzMCw3ICs4MzIsNiBAQAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaAogLi9hdXRvX25saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2F1dG9fbmxpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL2tlcm5lbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaApAQCAtODU1LDExICs4NTYsOCBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTg2OSw2ICs4NjcsNyBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05MDMsNiArOTAyLDcgQEAKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCkBAIC05NDAsNDEgKzk0MCwyMyBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oIG0ybS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9zdHJ1Y3QuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5jbHVkZXMuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIG1pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL3Jvd3MuaCBtaWJncm91cC9SbW9uL2FndXRpbC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL3N0YXRpc3RpY3MuaCBtaWJncm91cC9SbW9uL2FsYXJtVGFibGUuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmggbWliZ3JvdXAvUm1vbi9ldmVudC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmggbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaCBtaWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmggbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuaCBtaWJncm91cC9ob3N0L2hyX290aGVyLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfcHJvYy5oIG1pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX3ByaW50LmggbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmggbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9leGFtcGxlcy93YXRjaGVkLmggbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5oIG1pYmdyb3VwL1Jtb24vcm93cy5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL2FndXRpbC5oIG1pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL2FsYXJtVGFibGUuaCBtaWJncm91cC9SbW9uL2hpc3RvcnkuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvUm1vbi9ldmVudC5oIG1pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVTY2FsYXJzLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgKLS4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c0NvbmYuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmggbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaCBtaWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaApAQCAtOTg0LDcgKzk2Niw3IEBACiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9hdC5oIG1pYmdyb3VwL21pYklJL3RjcC5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9pY21wLmggbWliZ3JvdXAvbWliSUkvdWRwLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oIG1pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL2lwdjYuaCBtaWJncm91cC91Y2Qtc25tcC9kaXNrLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL2lwdjYuaCBtaWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmgKIC4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaCBtaWJncm91cC91Y2Qtc25tcC9wcm9jLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmggbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaApAQCAtMTAwMywxMyArOTg1LDM1IEBACiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmggbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9hZ2VudC9uc0NhY2hlLmggbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVTY2FsYXJzLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmgKKy4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c0NvbmYuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtU2Vzc2lvbi9zbm1wVGxzdG1TZXNzaW9uLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtUGFyYW1zVGFibGUvc25tcFRsc3RtUGFyYW1zVGFibGUuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtU3RhdHMvc25tcFRzbVN0YXRzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIG1pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL3VkcFRhYmxlLmggbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmgKQEAgLTEwMTgsNyArMTAyMiwxMiBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfY29uc3RhbnRzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaApAQCAtMTEyNiwxMSArMTEzNSw4IEBACiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTE0MCw2ICsxMTQ2LDcgQEAKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTE3NCw2ICsxMTgxLDcgQEAKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTIxNCw2ICsxMjIyLDcgQEAKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2JqZWN0X21vbml0b3IuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTIzMywxMSArMTI0Miw4IEBACiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTI4MSw2ICsxMjg3LDcgQEAKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMzIwLDEwICsxMzI3LDExIEBACiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaCBzbm1wZC5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaAotLi9zbm1wX2FnZW50LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC0xMzQwLDExICsxMzQ4LDggQEAKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMzg3LDYgKzEzOTIsNyBAQAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNDI2LDE3MSArMTQzMiw3IEBACiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmggbTJtLmggc25tcGQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc3RydWN0LmggLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzLmggbWliZ3JvdXAvdXRpbF9mdW5jcy9FeGl0LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvcmVzdGFydC5oIG1pYmdyb3VwL3N0cnVjdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKLS4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5jbHVkZXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIG1pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oIG1pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmggbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9ocl9vdGhlci5oIG1pYmdyb3VwL2hvc3QvaHJfcHJvYy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX25ldHdvcmsuaCBtaWJncm91cC9ob3N0L2hyX3ByaW50LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfZGlzay5oIG1pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuaCBtaWJncm91cC9leGFtcGxlcy93YXRjaGVkLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmggbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9SbW9uL3Jvd3MuaCBtaWJncm91cC9SbW9uL2FndXRpbC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9SbW9uL3N0YXRpc3RpY3MuaCBtaWJncm91cC9SbW9uL2FsYXJtVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmggbWliZ3JvdXAvUm1vbi9ldmVudC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlU2NhbGFycy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmggbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5oIG1pYmdyb3VwL3NubXB2My91c21Vc2VyLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5oIG1pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oIG1pYmdyb3VwL21pYklJL2F0LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL2lwLmggbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmggbWliZ3JvdXAvbWliSUkvYXQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvdGNwLmggbWliZ3JvdXAvbWliSUkvaWNtcC5oIG1pYmdyb3VwL21pYklJL3VkcC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9pcHY2LmggbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJkZWZzLmggbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oIG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmggbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9leHRlbmQuaCBtaWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9maWxlLmggbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuaCBtaWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9tZW1vcnkuaCBtaWJncm91cC91Y2Qtc25tcC92bXN0YXQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuaCBtaWJncm91cC9hZ2VudC9uc0RlYnVnLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2FnZW50L25zQ2FjaGUuaCBtaWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5oIG1pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5oIG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmggbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuaCBtaWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaAotLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX29pZHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2VudW1zLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcHN0YXRzLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zY29wZXpvbmUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2VudW1zLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX29pZHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvcm91dGUuaAotLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfaGVhZGVycy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy90Y3BDb25uLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmggbWliZ3JvdXAvc211eC9zbXV4LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaCBtaWJncm91cC9zbXV4L3NtdXguaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xNjEwLDExICsxNDUyLDggQEAKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xNjI0LDYgKzE0NjMsNyBAQAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTY1OCw2ICsxNDk4LDcgQEAKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE3MTYsMTEgKzE1NTcsOCBAQAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE3MzAsNiArMTU2OCw3IEBACiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzY0LDYgKzE2MDMsNyBAQAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTgxMiw2ICsxNjUyLDcgQEAKIC4vc25tcF92YXJzLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtQ29uZi5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCiAuL3NubXBfdmFycy5sbzogc25tcF9wZXJsLmggLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnRfbW9kdWxlX2luaXRzLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE4MzEsMTEgKzE2NzIsOCBAQAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE4NzksNiArMTcxNyw3IEBACiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTkxOSw2ICsxNzU4LDcgQEAKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xOTM4LDExICsxNzc4LDggQEAKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xOTg2LDYgKzE4MjMsNyBAQAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjA0NCwxMSArMTg4Miw4IEBACiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjA1OCw2ICsxODkzLDcgQEAKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjA5Miw2ICsxOTI4LDcgQEAKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjEzMSw2ICsxOTY4LDcgQEAKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yMTUwLDExICsxOTg4LDggQEAKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yMTk4LDYgKzIwMzMsNyBAQAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjI1NiwxMSArMjA5Miw4IEBACiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjI3MCw2ICsyMTAzLDcgQEAKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIzMDQsNiArMjEzOCw3IEBACiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yMzQzLDYgKzIxNzgsNyBAQAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yMzYyLDExICsyMTk4LDggQEAKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yNDEwLDYgKzIyNDMsNyBAQAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI0NDksNiArMjI4Myw3IEBACiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTI0NjgsMTEgKzIzMDMsOCBAQAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI1MTYsNiArMjM0OCw3IEBACiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yNTc0LDExICsyNDA3LDggQEAKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yNTg4LDYgKzI0MTgsNyBAQAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI2MjIsNiArMjQ1Myw3IEBACiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjY4MCwxMSArMjUxMiw4IEBACiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjY5NCw2ICsyNTIzLDcgQEAKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI3MjgsNiArMjU1OCw3IEBACiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yNzg2LDExICsyNjE3LDggQEAKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yODAwLDYgKzI2MjgsNyBAQAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjgzNCw2ICsyNjYzLDcgQEAKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI4OTMsMTEgKzI3MjMsOCBAQAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI5MDcsNiArMjczNCw3IEBACiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI5NDEsNiArMjc2OSw3IEBACiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI5ODAsNiArMjgwOSw3IEBACiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTI5OTksMTEgKzI4MjksOCBAQAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTMwNDcsNiArMjg3NCw3IEBACiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTMxMDUsMTEgKzI5MzMsOCBAQAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTMxMTksNiArMjk0NCw3IEBACiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTMxNTMsNiArMjk3OSw3IEBACiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTMyMTEsMTEgKzMwMzgsOCBAQAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTMyMjUsNiArMzA0OSw3IEBACiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTMyNTksNiArMzA4NCw3IEBACiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTMzMTcsMTEgKzMxNDMsOCBAQAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTMzMzEsNiArMzE1NCw3IEBACiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTMzNjUsNiArMzE4OSw3IEBACiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTM0MDQsNiArMzIyOSw3IEBACiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTM0MjMsMTEgKzMyNDksOCBAQAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM0NzEsNiArMzI5NCw3IEBACiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTM1MTAsNiArMzMzNCw3IEBACiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zNTI5LDExICszMzU0LDggQEAKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zNTc3LDYgKzMzOTksNyBAQAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTM2MTUsOSArMzQzOCwxMCBAQAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zNjM3LDExICszNDYxLDggQEAKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zNjg1LDYgKzM1MDYsNyBAQAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzcyNiw2ICszNTQ4LDcgQEAKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMzc0NSwxMSArMzU2OCw4IEBACiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzc5Myw2ICszNjEzLDcgQEAKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zODMyLDYgKzM2NTMsNyBAQAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTM4NTEsMTEgKzM2NzMsOCBAQAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM4OTksNiArMzcxOCw3IEBACiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzkzOCw2ICszNzU4LDcgQEAKIC4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTM5NTcsMTEgKzM3NzgsOCBAQAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTQwMDUsNiArMzgyMyw3IEBACiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQwNDQsNiArMzg2Myw3IEBACiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNDA2MywxMSArMzg4Myw4IEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNDExMSw2ICszOTI4LDcgQEAKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQxNTAsNiArMzk2OCw3IEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00MTY5LDExICszOTg4LDggQEAKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC00MjE3LDYgKzQwMzMsNyBAQAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDI1Niw2ICs0MDczLDcgQEAKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNDI3NSwxMSArNDA5Myw4IEBACiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNDMyMyw2ICs0MTM4LDcgQEAKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00MzYzLDYgKzQxNzksNyBAQAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00MzgyLDExICs0MTk5LDggQEAKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC00NDMwLDYgKzQyNDQsNyBAQAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00NDY5LDYgKzQyODQsNyBAQAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNDQ4OCwxMSArNDMwNCw4IEBACiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNDUzNiw2ICs0MzQ5LDcgQEAKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00NTc1LDYgKzQzODksNyBAQAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00NTk0LDExICs0NDA5LDggQEAKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC00NjQyLDYgKzQ0NTQsNyBAQAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDcwMCwxMSArNDUxMyw4IEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNDcxNCw2ICs0NTI0LDcgQEAKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDc0OCw2ICs0NTU5LDcgQEAKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDc4OSw2ICs0NjAxLDcgQEAKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguaAogLi9taWJncm91cC9rZXJuZWxfc3Vub3M1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQ4MDgsMTEgKzQ2MjEsOCBAQAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTQ4NTYsNiArNDY2Niw3IEBACiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQ4OTYsNiArNDcwNyw3IEBACiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQ5MTUsMTEgKzQ3MjcsOCBAQAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTQ5NjMsNiArNDc3Miw3IEBACiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNTAwMSwxNCArNDgxMSwxMyBAQAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvRXhpdC5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL3Jlc3RhcnQuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiBtaWJncm91cC91dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC9zdHJ1Y3QuaCAuL21pYmdyb3VwL3V0aWxfZnVuY3MuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuL21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuL21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4vbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4vbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuL21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliZGVmcy5oCiAuL21pYmdyb3VwL3dpbkV4dERMTC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJncm91cC93aW5FeHRETEwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJncm91cC93aW5FeHRETEwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApkaWZmIC0tZ2l0IGEvYWdlbnQvTWFrZWZpbGUuaW4gYi9hZ2VudC9NYWtlZmlsZS5pbgppbmRleCBmYTUxMGE5Li43NDhiMDFjIDEwMDY0NAotLS0gYS9hZ2VudC9NYWtlZmlsZS5pbgorKysgYi9hZ2VudC9NYWtlZmlsZS5pbgpAQCAtMyw2ICszLDcgQEAKICMKIAogdG9wX2J1aWxkZGlyCT0gLi4KK215c3ViZGlyPWFnZW50CiAKICMgdXNlIEdOVSB2cGF0aCwgaWYgYXZhaWxhYmxlLCB0byBvbmx5IHNldCBhIHBhdGggZm9yIHNvdXJjZSBhbmQgaGVhZGVycwogIyBWUEFUSCB3aWxsIHBpY2sgdXAgb2JqZWN0cyB0b28sIHdoaWNoIGlzIGJhZCBpZiB5b3UgYXJlIHNoYXJpbmcgYQpAQCAtMTYsNiArMTcsNyBAQAogIyB3aGF0IHRvIGluc3RhbGwKICMKIFNVQkRJUlM9aGVscGVycyBtaWJncm91cAorRlRTVUJESVJTPW1pYmdyb3VwIGhlbHBlcnMKIAogSU5TVEFMTFNCSU5QUk9HUz0gQFNOTVBEQAogSU5TVEFMTExJQlMJPSBsaWJuZXRzbm1wYWdlbnQuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pCkBAIC03Niw4ICs3OCw3IEBACiAKIElOQ0xVREVNSUJHUk9VUERJUj1hZ2VudC9taWJncm91cAogSU5DTFVERU1JQkdST1VQRElSSEVBREVSUz1zdHJ1Y3QuaCB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIFwKLQl1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggXAotCXV0aWxfZnVuY3MvRXhpdC5oIHV0aWxfZnVuY3MvcmVzdGFydC5oCisJdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAKIE9USEVSSU5TVEFMTD1pbnN0YWxsbWliZ3JvdXBoZWFkZXJzIEBFTUJFRFBFUkxJTlNUQUxMQAogT1RIRVJVTklOU1RBTEw9QEVNQkVEUEVSTFVOSU5TVEFMTEAKQEAgLTExNiw5ICsxMTcsMTAgQEAKIAogTEFHRU5UTElCUwk9IEBMQUdFTlRMSUJTQAogTE1JQkxJQlMJPSBATE1JQkxJQlNACitWQUxfTElCUwk9IEBWQUxfTElCU0AKIFBFUkxMRE9QVFNfRk9SX0FQUFMgPSBAUEVSTExET1BUU19GT1JfQVBQU0AKIFBFUkxMRE9QVFNfRk9SX0xJQlMgPSBAUEVSTExET1BUU19GT1JfTElCU0AKLUxJQlMJCT0gJChVU0VMSUJTKSBAQUdFTlRMSUJTQCAkKFBFUkxMRE9QVFNfRk9SX0FQUFMpCitMSUJTCQk9ICQoVVNFTElCUykgQEFHRU5UTElCU0AgJChQRVJMTERPUFRTX0ZPUl9BUFBTKSAkKFZBTF9MSUJTKQogT1VSX0FHRU5UX0xJQlMJPSAkKEFHRU5UTElCKSAkKE1JQkxJQikgJChMSUJTKSBARExMSUJTQAogQ1BQRkxBR1MJPSAkKFRPUF9JTkNMVURFUykgLUkuICQoQUdFTlRfSU5DTFVERVMpICQoTUlCR1JPVVBfSU5DTFVERVMpIFwKIAkJICAkKFNOTVBMSUJfSU5DTFVERVMpIEBDUFBGTEFHU0AgCkBAIC0xMzAsMjUgKzEzMiwxNyBAQAogCiAjIGxpYm5ldHNubXBtaWJzIG9iamVjdHMuCiBAbWliZ3JvdXBfbGlzdF9sb0AKK0BtaWJncm91cF9saXN0X2Z0QAogQG1pYmdyb3VwX2xpc3Rfb0AKIEBhZ2VudGdyb3VwX2xpc3RfbG9ACitAYWdlbnRncm91cF9saXN0X2Z0QAogQGFnZW50Z3JvdXBfbGlzdF9vQAorRlRNSUJPQkpTCT0gJChtaWJncm91cF9saXN0X2Z0KSBtaWJfbW9kdWxlcy5mdCBhdXRvX25saXN0LmZ0CiBMTUlCT0JKUwk9ICQobWliZ3JvdXBfbGlzdF9sbykgbWliX21vZHVsZXMubG8gYXV0b19ubGlzdC5sbwogTUlCT0JKUwkJPSAkKG1pYmdyb3VwX2xpc3RfbykgbWliX21vZHVsZXMubyBhdXRvX25saXN0Lm8KIAogIyBsaWJuZXRzbm1wYWdlbnQgb2JqZWN0cwogTElCQUdFTlRPQkpTPSBcCi0JYWdlbnRfaGFuZGxlci5vIFwKLQlhZ2VudF9pbmRleC5vIFwKLQlhZ2VudF9yZWFkX2NvbmZpZy5vIFwKLQlhZ2VudF9yZWdpc3RyeS5vIFwKLQlhZ2VudF9zeXNPUlRhYmxlLm8gXAotCWFnZW50X3RyYXAubyBcCi0Ja2VybmVsLm8gXAotCXNubXBfYWdlbnQubyBcCi0Jc25tcF92YXJzLm8gXAotCSQoYWdlbnRncm91cF9saXN0X28pIFwKLQlAT1RIRVJBR0VOVExJQk9CSlNAIFwKIAloZWxwZXJzL2FsbF9oZWxwZXJzLm8gXAogCWhlbHBlcnMvYmFieV9zdGVwcy5vIFwKIAloZWxwZXJzL2J1bGtfdG9fbmV4dC5vIFwKQEAgLTE3NSwyMCArMTY5LDIwIEBACiAJaGVscGVycy90YWJsZV9pdGVyYXRvci5vIFwKIAloZWxwZXJzL3RhYmxlX3Jvdy5vIFwKIAloZWxwZXJzL3RhYmxlX3RkYXRhLm8gXAotCWhlbHBlcnMvd2F0Y2hlci5vCisJaGVscGVycy93YXRjaGVyLm8gXAorCWFnZW50X2hhbmRsZXIubyBcCisJYWdlbnRfaW5kZXgubyBcCisJYWdlbnRfcmVhZF9jb25maWcubyBcCisJYWdlbnRfcmVnaXN0cnkubyBcCisJYWdlbnRfc3lzT1JUYWJsZS5vIFwKKwlhZ2VudF90cmFwLm8gXAorCWtlcm5lbC5vIFwKKwlzbm1wX2FnZW50Lm8gXAorCXNubXBfdmFycy5vIFwKKwkkKGFnZW50Z3JvdXBfbGlzdF9vKSBcCisJQE9USEVSQUdFTlRMSUJPQkpTQAogCiBMTElCQUdFTlRPQkpTPSBcCi0JYWdlbnRfaGFuZGxlci5sbyBcCi0JYWdlbnRfaW5kZXgubG8gXAotCWFnZW50X3JlYWRfY29uZmlnLmxvIFwKLQlhZ2VudF9yZWdpc3RyeS5sbyBcCi0JYWdlbnRfc3lzT1JUYWJsZS5sbyBcCi0JYWdlbnRfdHJhcC5sbyBcCi0Ja2VybmVsLmxvIFwKLQlzbm1wX2FnZW50LmxvIFwKLQlzbm1wX3ZhcnMubG8gXAotCSQoYWdlbnRncm91cF9saXN0X2xvKSBcCi0JQE9USEVSQUdFTlRMSUJMT0JKU0AgXAogCWhlbHBlcnMvYWxsX2hlbHBlcnMubG8gXAogCWhlbHBlcnMvYmFieV9zdGVwcy5sbyBcCiAJaGVscGVycy9idWxrX3RvX25leHQubG8gXApAQCAtMjE1LDE4ICsyMDksNzIgQEAKIAloZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvIFwKIAloZWxwZXJzL3RhYmxlX3Jvdy5sbyBcCiAJaGVscGVycy90YWJsZV90ZGF0YS5sbyBcCi0JaGVscGVycy93YXRjaGVyLmxvCisJaGVscGVycy93YXRjaGVyLmxvIFwKKwlhZ2VudF9oYW5kbGVyLmxvIFwKKwlhZ2VudF9pbmRleC5sbyBcCisJYWdlbnRfcmVhZF9jb25maWcubG8gXAorCWFnZW50X3JlZ2lzdHJ5LmxvIFwKKwlhZ2VudF9zeXNPUlRhYmxlLmxvIFwKKwlhZ2VudF90cmFwLmxvIFwKKwlrZXJuZWwubG8gXAorCXNubXBfYWdlbnQubG8gXAorCXNubXBfdmFycy5sbyBcCisJJChhZ2VudGdyb3VwX2xpc3RfbG8pIFwKKwlAT1RIRVJBR0VOVExJQkxPQkpTQAorCitMTElCQUdFTlRGVFM9IFwKKwloZWxwZXJzL2FsbF9oZWxwZXJzLmZ0IFwKKwloZWxwZXJzL2JhYnlfc3RlcHMuZnQgXAorCWhlbHBlcnMvYnVsa190b19uZXh0LmZ0IFwKKwloZWxwZXJzL2NhY2hlX2hhbmRsZXIuZnQgXAorCWhlbHBlcnMvZGVidWdfaGFuZGxlci5mdCBcCisJaGVscGVycy9pbnN0YW5jZS5mdCBcCisJaGVscGVycy9tb2RlX2VuZF9jYWxsLmZ0IFwKKwloZWxwZXJzL211bHRpcGxleGVyLmZ0IFwKKwloZWxwZXJzL251bGwuZnQgXAorCWhlbHBlcnMvb2xkX2FwaS5mdCBcCisJaGVscGVycy9yZWFkX29ubHkuZnQgXAorCWhlbHBlcnMvcm93X21lcmdlLmZ0IFwKKwloZWxwZXJzL3NjYWxhci5mdCBcCisJaGVscGVycy9zY2FsYXJfZ3JvdXAuZnQgXAorCWhlbHBlcnMvc2VyaWFsaXplLmZ0IFwKKwloZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5mdCBcCisJaGVscGVycy9zdGFzaF9jYWNoZS5mdCBcCisJaGVscGVycy9zdGFzaF90b19uZXh0LmZ0IFwKKwloZWxwZXJzL3RhYmxlLmZ0IFwKKwloZWxwZXJzL3RhYmxlX2FycmF5LmZ0IFwKKwloZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5mdCBcCisJaGVscGVycy90YWJsZV9kYXRhLmZ0IFwKKwloZWxwZXJzL3RhYmxlX2RhdGFzZXQuZnQgXAorCWhlbHBlcnMvdGFibGVfaXRlcmF0b3IuZnQgXAorCWhlbHBlcnMvdGFibGVfcm93LmZ0IFwKKwloZWxwZXJzL3RhYmxlX3RkYXRhLmZ0IFwKKwloZWxwZXJzL3dhdGNoZXIuZnQgXAorCWFnZW50X2hhbmRsZXIuZnQgXAorCWFnZW50X2luZGV4LmZ0IFwKKwlhZ2VudF9yZWFkX2NvbmZpZy5mdCBcCisJYWdlbnRfcmVnaXN0cnkuZnQgXAorCWFnZW50X3N5c09SVGFibGUuZnQgXAorCWFnZW50X3RyYXAuZnQgXAorCWtlcm5lbC5mdCBcCisJc25tcF9hZ2VudC5mdCBcCisJc25tcF92YXJzLmZ0IFwKKwkkKGFnZW50Z3JvdXBfbGlzdF9mdCkgXAorCUBPVEhFUkFHRU5UTElCTEZUU0AKIAogIyBUaGUgYWdlbnQgb2JqZWN0cy4KIEFHRU5UT0JKUz1zbm1wZC5vIEBvdGhlcl9hZ2VudG9ianNACiBMQUdFTlRPQkpTPXNubXBkLmxvIEBvdGhlcl9sYWdlbnRvYmpzQAorRlRBR0VOVE9CSlM9c25tcGQuZnQgQG90aGVyX2Z0YWdlbnRvYmpzQAogCiAjCiAjIERlZmluZSBPQkpTIGFuZCBMT0JKUyBmb3IgY2xlYW4gdGFyZ2V0IChqdXN0IHRoaXMgZGlyZWN0b3J5KQogIwogT0JKUwkJPSAkKExJQkFHRU5UT0JKUykgICQoQUdFTlRPQkpTKSAgbWliX21vZHVsZXMubyAgYXV0b19ubGlzdC5vCiBMT0JKUwkJPSAkKExMSUJBR0VOVE9CSlMpICQoTEFHRU5UT0JKUykgbWliX21vZHVsZXMubG8gYXV0b19ubGlzdC5sbworRlRPQkpTCQk9ICQoTExJQkFHRU5URlRTKSAkKEZUQUdFTlRPQkpTKSBtaWJfbW9kdWxlcy5mdCBhdXRvX25saXN0LmZ0CiAKK0ZFQVRVUkVGSUxFICAgICA9ICQodG9wX2J1aWxkZGlyKS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2ZlYXR1cmVzLmgKIAogYWxsOiBhZ2VudGxpYiBzdWJkaXJzIG1pYmxpYiAkKElOU1RBTExCSU5QUk9HUykgJChJTlNUQUxMU0JJTlBST0dTKQogCmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF9oYW5kbGVyLmMgYi9hZ2VudC9hZ2VudF9oYW5kbGVyLmMKaW5kZXggY2E2YWU0Yy4uNTllOTYxMyAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfaGFuZGxlci5jCisrKyBiL2FnZW50L2FnZW50X2hhbmRsZXIuYwpAQCAtOSw2ICs5LDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKQEAgLTIxLDYgKzIyLDkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfaGFuZGxlciwgbGlibmV0c25tcGFnZW50KQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZCwgYWdlbnRfaGFuZGxlcikKIAogc3RhdGljIG5ldHNubXBfbWliX2hhbmRsZXIgKl9jbG9uZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKml0KTsKIApAQCAtNTc2LDYgKzU4MCw3IEBACiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsgICAgLyogbGVnYWwgKi8KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtNTkwLDYgKzU5NSw3IEBACiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmtub3duIG1vZGUgaW4gbmV0c25tcF9jYWxsX2hhbmRsZXJzISBidWchXG4iKTsKQEAgLTY0MSw2ICs2NDcsOCBAQAogICoKICAqICBAcmV0dXJuIFJldHVybnMgU05NUEVSUl9TVUNDRVNTIG9yIFNOTVBfRVJSXyogZXJyb3IgY29kZS4KICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXJfb25lX3JlcXVlc3QsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9DQUxMX05FWFRfSEFORExFUl9PTkVfUkVRVUVTVAogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyX29uZV9yZXF1ZXN0KG5ldHNubXBfbWliX2hhbmRsZXIgKmN1cnJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCkBAIC02NjIsNiArNjcwLDcgQEAKICAgICByZXF1ZXN0cy0+bmV4dCA9IHJlcXVlc3Q7CiAgICAgcmV0dXJuIHJldDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfQ0FMTF9ORVhUX0hBTkRMRVJfT05FX1JFUVVFU1QgKi8KIAogLyoqIERlYWxsb2NhdGVzIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBoYW5kbGVyLgogICogIFRoZSBoYW5kbGVyIGlzIHJlbW92ZWQgZnJvbSBjaGFpbiBhbmQgdGhlbiBmcmVlZC4KQEAgLTcwNCwyNyArNzEzLDQxIEBACiB7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaCA9IE5VTEw7CiAKLSAgICBpZiAoaGFuZGxlciA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBpZiAoIWhhbmRsZXIpCisgICAgICAgIGdvdG8gZXJyOwogCiAgICAgaCA9IF9jbG9uZV9oYW5kbGVyKGhhbmRsZXIpOworICAgIGlmICghaCkKKyAgICAgICAgZ290byBlcnI7CiAKLSAgICBpZiAoaCAhPSBOVUxMKSB7CisgICAgLyoKKyAgICAgKiBQcm92aWRpbmcgYSBjbG9uZSBmdW5jdGlvbiB3aXRob3V0IGEgZnJlZSBmdW5jdGlvbiBpcyBhc2tpbmcgZm9yCisgICAgICogbWVtb3J5IGxlYWtzLCBhbmQgcHJvdmlkaW5nIGEgZnJlZSBmdW5jdGlvbiB3aXRob3V0IGNsb25lIGZ1bmN0aW9uCisgICAgICogaXMgYXNraW5nIGZvciBtZW1vcnkgY29ycnVwdGlvbi4gSGVuY2UgdGhlIGxvZyBzdGF0ZW1lbnQgYmVsb3cuCisgICAgICovCisgICAgaWYgKCEhaGFuZGxlci0+ZGF0YV9jbG9uZSAhPSAhIWhhbmRsZXItPmRhdGFfZnJlZSkKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImRhdGFfY2xvbmUgLyBkYXRhX2ZyZWUgaW5jb25zaXN0ZW50ICglcylcbiIsCisgICAgICAgICAgICAgICAgIGhhbmRsZXItPmhhbmRsZXJfbmFtZSk7CisgICAgaWYgKGhhbmRsZXItPm15dm9pZCAmJiBoYW5kbGVyLT5kYXRhX2Nsb25lKSB7CisgICAgICAgIGgtPm15dm9pZCA9IGhhbmRsZXItPmRhdGFfY2xvbmUoaGFuZGxlci0+bXl2b2lkKTsKKyAgICAgICAgaWYgKCFoLT5teXZvaWQpCisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICB9IGVsc2UKICAgICAgICAgaC0+bXl2b2lkID0gaGFuZGxlci0+bXl2b2lkOwotICAgICAgICBoLT5kYXRhX2ZyZWUgPSBoYW5kbGVyLT5kYXRhX2ZyZWU7CisgICAgaC0+ZGF0YV9jbG9uZSA9IGhhbmRsZXItPmRhdGFfY2xvbmU7CisgICAgaC0+ZGF0YV9mcmVlID0gaGFuZGxlci0+ZGF0YV9mcmVlOwogCi0gICAgICAgIGlmIChoYW5kbGVyLT5uZXh0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGgtPm5leHQgPSBuZXRzbm1wX2hhbmRsZXJfZHVwKGhhbmRsZXItPm5leHQpOwotICAgICAgICAgICAgaWYgKGgtPm5leHQgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGgpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaC0+bmV4dC0+cHJldiA9IGg7Ci0gICAgICAgIH0KLSAgICAgICAgaC0+cHJldiA9IE5VTEw7Ci0gICAgICAgIHJldHVybiBoOworICAgIGlmIChoYW5kbGVyLT5uZXh0ICE9IE5VTEwpIHsKKyAgICAgICAgaC0+bmV4dCA9IG5ldHNubXBfaGFuZGxlcl9kdXAoaGFuZGxlci0+bmV4dCk7CisgICAgICAgIGlmICghaC0+bmV4dCkKKyAgICAgICAgICAgIGdvdG8gZXJyOworICAgICAgICBoLT5uZXh0LT5wcmV2ID0gaDsKICAgICB9CisgICAgaC0+cHJldiA9IE5VTEw7CisgICAgcmV0dXJuIGg7CisKK2VycjoKKyAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtODk0LDkgKzkxNywxMCBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQU5ETEVSX01BUktfUkVRVUVTVFNfQVNfREVMRUdBVEVECiAvKiogU2V0cyBhIGxpc3Qgb2YgcmVxdWVzdHMgYXMgZGVsZWdhdGVkIG9yIG5vdCBkZWxlZ2F0ZWQuCiAgKiAgU3dlZXBzIHRocm91Z2ggZ2l2ZW4gY2hhaW4gb2YgcmVxdWVzdHMgYW5kIHNldHMgJ2RlbGVnYXRlZCcKLSAqICBmbGFnIGFjY29yZGluZ2x5IHRvIHRoZSBpc2RlbGVnYXRlZCBwYXJhbWV0ZXIuCisgKiAgZmxhZyBhY2NvcmRpbmdseSB0byB0aGUgaXNkZWxlZ2FkZWQgcGFyYW1ldGVyLgogICoKICAqICBAcGFyYW0gcmVxdWVzdHMgUmVxdWVzdCBsaXN0LgogICogIEBwYXJhbSBpc2RlbGVnYXRlZCBOZXcgdmFsdWUgb2YgdGhlICdkZWxlZ2F0ZWQnIGZsYWcuCkBAIC05MTAsNiArOTM0LDcgQEAKICAgICAgICAgcmVxdWVzdHMgPSByZXF1ZXN0cy0+bmV4dDsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQU5ETEVSX01BUktfUkVRVUVTVFNfQVNfREVMRUdBVEVEICovCiAKIC8qKiBBZGRzIGRhdGEgZnJvbSBub2RlIGxpc3QgdG8gdGhlIHJlcXVlc3QgaW5mb3JtYXRpb24gc3RydWN0dXJlLgogICogIERhdGEgaW4gdGhlIHJlcXVlc3QgY2FuIGJlIGxhdGVyIGV4dHJhY3RlZCBhbmQgdXNlZCBieSBzdWJtb2R1bGVzLgpAQCAtMTI0Nyw2ICsxMjcyLDcgQEAKICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiYWdlbnRfbW9kZSIsIHN0cmR1cCgiR0VUIiksIE1PREVfR0VUKTsKICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiYWdlbnRfbW9kZSIsIHN0cmR1cCgiR0VUTkVYVCIpLCBNT0RFX0dFVE5FWFQpOwogICAgIHNlX2FkZF9wYWlyX3RvX3NsaXN0KCJhZ2VudF9tb2RlIiwgc3RyZHVwKCJHRVRCVUxLIiksIE1PREVfR0VUQlVMSyk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHNlX2FkZF9wYWlyX3RvX3NsaXN0KCJhZ2VudF9tb2RlIiwgc3RyZHVwKCJTRVRfQkVHSU4iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBNT0RFX1NFVF9CRUdJTik7CiAgICAgc2VfYWRkX3BhaXJfdG9fc2xpc3QoImFnZW50X21vZGUiLCBzdHJkdXAoIlNFVF9SRVNFUlZFMSIpLApAQCAtMTI4Nyw2ICsxMzEzLDcgQEAKICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiYmFieXN0ZXBfbW9kZSIsIHN0cmR1cCgicG9zdF9yZXF1ZXN0IiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgTU9ERV9CU1RFUF9QT1NUX1JFUVVFU1QpOwogICAgIHNlX2FkZF9wYWlyX3RvX3NsaXN0KCJiYWJ5c3RlcF9tb2RlIiwgc3RyZHVwKCJvcmlnaW5hbCIpLCAweGZmZmYpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgLyoKICAgICAgKiB4eHgtcmtzOiBobW1tLi4gd2lsbCB0aGlzIHdvcmsgZm9yIG1vZGVzIHdoaWNoIGFyZSBvcidkIHRvZ2V0aGVyPwpkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfaW5kZXguYyBiL2FnZW50L2FnZW50X2luZGV4LmMKaW5kZXggNGE4OWY4OS4uMDEyOTIxNyAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfaW5kZXguYworKysgYi9hZ2VudC9hZ2VudF9pbmRleC5jCkBAIC04LDYgKzgsNyBAQAogCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KQEAgLTQ3LDYgKzQ4LDEwIEBACiAjaW5jbHVkZSAiYWdlbnR4L2NsaWVudC5oIgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhZ2VudF9pbmRleF9hbGwsIGxpYm5ldHNubXBhZ2VudCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlbW92ZV9pbmRleCwgYWdlbnRfaW5kZXhfYWxsKQorCiAgICAgICAgIC8qCiAgICAgICAgICAqIEluaXRpYWwgc3VwcG9ydCBmb3IgaW5kZXggYWxsb2NhdGlvbgogICAgICAgICAgKi8KQEAgLTQ1MCwxMiArNDU1LDE2IEBACiAgICAgICAgICAqIFJlbGVhc2UgYW4gYWxsb2NhdGVkIGluZGV4LAogICAgICAgICAgKiAgIHRvIGFsbG93IGl0IHRvIGJlIHVzZWQgZWxzZXdoZXJlCiAgICAgICAgICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlbGVhc2VfaW5kZXgsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVMRUFTRV9JTkRFWAogaW50CiByZWxlYXNlX2luZGV4KG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmJpbmQpCiB7CiAgICAgcmV0dXJuICh1bnJlZ2lzdGVyX2luZGV4KHZhcmJpbmQsIFRSVUUsIE5VTEwpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFTEVBU0VfSU5ERVggKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFTU9WRV9JTkRFWAogICAgICAgICAvKgogICAgICAgICAgKiBDb21wbGV0ZWx5IHJlbW92ZSBhbiBhbGxvY2F0ZWQgaW5kZXgsCiAgICAgICAgICAqICAgZHVlIHRvIGVycm9ycyBpbiB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MuCkBAIC00NjUsNiArNDc0LDcgQEAKIHsKICAgICByZXR1cm4gKHVucmVnaXN0ZXJfaW5kZXgodmFyYmluZCwgRkFMU0UsIHNzKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRU1PVkVfSU5ERVggKi8KIAogdm9pZAogdW5yZWdpc3Rlcl9pbmRleF9ieV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNzKQpAQCAtNTg4LDYgKzU5OCw4IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1bnJlZ2lzdGVyX2luZGV4ZXMsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5SRUdJU1RFUl9JTkRFWEVTCiBpbnQKIHVucmVnaXN0ZXJfc3RyaW5nX2luZGV4KG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbiwgY2hhciAqY3ApCiB7CkBAIC02MjcsNiArNjM5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfbGVuICogc2l6ZW9mKG9pZCkpOwogICAgIHJldHVybiAodW5yZWdpc3Rlcl9pbmRleCgmdmFyYmluZCwgRkFMU0UsIG1haW5fc2Vzc2lvbikpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5SRUdJU1RFUl9JTkRFWEVTICovCiAKIHZvaWQKIGR1bXBfaWR4X3JlZ2lzdHJ5KHZvaWQpCkBAIC02OTIsNiArNzA1LDggQEAKICAgICB9CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb3VudF9pbmRleGVzLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTlVTRUQKIHVuc2lnbmVkIGxvbmcKIGNvdW50X2luZGV4ZXMob2lkICogbmFtZSwgc2l6ZV90IG5hbWVsZW4sIGludCBpbmNsdWRlX3VuYWxsb2NhdGVkKQogewpAQCAtNzExLDcgKzcyNiw3IEBACiAgICAgfQogICAgIHJldHVybiBuOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTlVTRUQgKi8KIAogI2lmZGVmIFRFU1RJTkcKIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJiaW5kOwpkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYyBiL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmMKaW5kZXggNjFkNjY2Ny4uZjllZjFhZiAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYworKysgYi9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jCkBAIC0zLDYgKzMsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TWVNfUEFSQU1fSAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgpAQCAtMTA2LDE3ICsxMDcsMTggQEAKICNpbmNsdWRlICJhZ2VudF9tb2R1bGVfaW5jbHVkZXMuaCIKICNpbmNsdWRlICJtaWJfbW9kdWxlX2luY2x1ZGVzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhZ2VudF9yZWFkX2NvbmZpZ19hbGwsIGxpYm5ldHNubXBhZ2VudCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBkX3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIsIGFnZW50X3JlYWRfY29uZmlnX2FsbCkKKwogI2lmZGVmIEhBVkVfVU5JU1REX0gKIHZvaWQKIHNubXBkX3NldF9hZ2VudF91c2VyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotI2lmIGRlZmluZWQoSEFWRV9HRVRQV05BTSkgJiYgZGVmaW5lZChIQVZFX1BXRF9IKQotICAgIHN0cnVjdCBwYXNzd2QgICppbmZvOwotI2VuZGlmCi0KICAgICBpZiAoY3B0clswXSA9PSAnIycpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgKmVjcDsKICAgICAgICAgaW50ICAgICAgICAgICAgIHVpZDsKKwogICAgICAgICB1aWQgPSBzdHJ0b3VsKGNwdHIgKyAxLCAmZWNwLCAxMCk7CiAgICAgICAgIGlmICgqZWNwICE9IDApIHsKICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIkJhZCBudW1iZXIiKTsKQEAgLTEyNCw0NyArMTI2LDUxIEBACiAJICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCSAgICAgICBORVRTTk1QX0RTX0FHRU5UX1VTRVJJRCwgdWlkKTsKIAl9Ci0gICAgfQogI2lmIGRlZmluZWQoSEFWRV9HRVRQV05BTSkgJiYgZGVmaW5lZChIQVZFX1BXRF9IKQotICAgIGVsc2UgaWYgKChpbmZvID0gZ2V0cHduYW0oY3B0cikpICE9IE5VTEwpIHsKLSAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAotCQkJICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIGluZm8tPnB3X3VpZCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigiVXNlciBub3QgZm91bmQgaW4gcGFzc3dkIGRhdGFiYXNlIik7Ci0gICAgfQotICAgIGVuZHB3ZW50KCk7CisgICAgICAgIHN0cnVjdCBwYXNzd2QgICppbmZvOworCisgICAgICAgIGluZm8gPSBnZXRwd25hbShjcHRyKTsKKyAgICAgICAgaWYgKGluZm8pCisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIGluZm8tPnB3X3VpZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIlVzZXIgbm90IGZvdW5kIGluIHBhc3N3ZCBkYXRhYmFzZSIpOworICAgICAgICBlbmRwd2VudCgpOwogI2VuZGlmCisgICAgfQogfQogCiB2b2lkCiBzbm1wZF9zZXRfYWdlbnRfZ3JvdXAoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7Ci0jaWYgZGVmaW5lZChIQVZFX0dFVEdSTkFNKSAmJiBkZWZpbmVkKEhBVkVfR1JQX0gpCi0gICAgc3RydWN0IGdyb3VwICAgKmluZm87Ci0jZW5kaWYKLQogICAgIGlmIChjcHRyWzBdID09ICcjJykgewogICAgICAgICBjaGFyICAgICAgICAgICAqZWNwOwogICAgICAgICBpbnQgICAgICAgICAgICAgZ2lkID0gc3RydG91bChjcHRyICsgMSwgJmVjcCwgMTApOworCiAgICAgICAgIGlmICgqZWNwICE9IDApIHsKICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIkJhZCBudW1iZXIiKTsKIAl9IGVsc2UgewogICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfR1JPVVBJRCwgZ2lkKTsKIAl9Ci0gICAgfQogI2lmIGRlZmluZWQoSEFWRV9HRVRHUk5BTSkgJiYgZGVmaW5lZChIQVZFX0dSUF9IKQotICAgIGVsc2UgaWYgKChpbmZvID0gZ2V0Z3JuYW0oY3B0cikpICE9IE5VTEwpIHsKLSAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAotCQkJICAgTkVUU05NUF9EU19BR0VOVF9HUk9VUElELCBpbmZvLT5ncl9naWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIkdyb3VwIG5vdCBmb3VuZCBpbiBncm91cCBkYXRhYmFzZSIpOwotICAgIH0KLSAgICBlbmRwd2VudCgpOworICAgICAgICBzdHJ1Y3QgZ3JvdXAgICAqaW5mbzsKKworICAgICAgICBpbmZvID0gZ2V0Z3JuYW0oY3B0cik7CisgICAgICAgIGlmIChpbmZvKQorICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfR1JPVVBJRCwgaW5mby0+Z3JfZ2lkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiR3JvdXAgbm90IGZvdW5kIGluIGdyb3VwIGRhdGFiYXNlIik7CisgICAgICAgIGVuZGdyZW50KCk7CiAjZW5kaWYKKyAgICB9CiB9CiAjZW5kaWYKIAorI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiB2b2lkCiBzbm1wZF9zZXRfYWdlbnRfYWRkcmVzcyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKQEAgLTE5MSw2ICsxOTcsNyBAQAogICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCSAgTkVUU05NUF9EU19BR0VOVF9QT1JUUywgYnVmKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAKIHZvaWQKIGluaXRfYWdlbnRfcmVhZF9jb25maWcoY29uc3QgY2hhciAqYXBwKQpAQCAtMjQ4LDkgKzI1NSwxMSBAQAogICAgIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigiYWdlbnRncm91cCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBkX3NldF9hZ2VudF9ncm91cCwgTlVMTCwgImdyb3VwaWQiKTsKICNlbmRpZgorI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKCJhZ2VudGFkZHJlc3MiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wZF9zZXRfYWdlbnRfYWRkcmVzcywgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNOTVAgYmluZCBhZGRyZXNzIik7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCBhcHAsICJxdWl0IiwgCiAJCQkgICAgICAgTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKIAkJCSAgICAgICBORVRTTk1QX0RTX0FHRU5UX1FVSVRfSU1NRURJQVRFTFkpOwpAQCAtMzA2LDExICszMTUsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZXIsIGhlbHApOwogfQogCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfU05NUERfVU5SRUdJU1RFUl9DT05GSUdfSEFORExFUgorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfU05NUERfVU5SRUdJU1RFUl9DT05GSUdfSEFORExFUiAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUERfVU5SRUdJU1RFUl9DT05GSUdfSEFORExFUgogdm9pZAogc25tcGRfdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICp0b2tlbikKIHsKICAgICB1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcih0b2tlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QRF9VTlJFR0lTVEVSX0NPTkZJR19IQU5ETEVSICovCiAKIC8qCiAgKiB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgYnkgbWliLW1vZHVsZXMgdG8gc3RvcmUgcGVybWVuYW50CmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF9yZWdpc3RyeS5jIGIvYWdlbnQvYWdlbnRfcmVnaXN0cnkuYwppbmRleCBkYmFhNDhjLi4wZGQ2YzQyIDEwMDY0NAotLS0gYS9hZ2VudC9hZ2VudF9yZWdpc3RyeS5jCisrKyBiL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmMKQEAgLTIyLDYgKzIyLDggQEAKICNkZWZpbmUgSU5fU05NUF9WQVJTX0MKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKICNpbmNsdWRlIDxzaWduYWwuaD4KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC02NCw2ICs2NiwxMCBAQAogI2luY2x1ZGUgImFnZW50eC9jbGllbnQuaCIKICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfcmVnaXN0cnlfYWxsLCBsaWJuZXRzbm1wYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1bnJlZ2lzdGVyX21pYl90YWJsZV9yb3csIGFnZW50X3JlZ2lzdHJ5X2FsbCkKKwogLyoqIEBkZWZncm91cCBhZ2VudF9sb29rdXBfY2FjaGUgTG9va3VwIGNhY2hlLCBzdG9yaW5nIHRoZSByZWdpc3RlcmVkIE9JRHMuCiAgKiAgICAgTWFpbnRhaW4gdGhlIGNhY2hlIHVzZWQgZm9yIGxvY2F0aW5nIHN1Yi10cmVlcyBhbmQgT0lEcy4KICAqICAgQGluZ3JvdXAgYWdlbnRfcmVnaXN0cnkKQEAgLTIxMyw3ICsyMTksNyBAQAogICogIEBzZWUgc25tcF9vaWRfY29tcGFyZSgpCiAgKi8KIE5FVFNOTVBfU1RBVElDX0lOTElORSBsb29rdXBfY2FjaGUgKgotbG9va3VwX2NhY2hlX2ZpbmQoY29uc3QgY2hhciAqY29udGV4dCwgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW4sCitsb29rdXBfY2FjaGVfZmluZChjb25zdCBjaGFyICpjb250ZXh0LCBjb25zdCBvaWQgKm5hbWUsIHNpemVfdCBuYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgIGludCAqcmV0Y21wKSB7CiAgICAgbG9va3VwX2NhY2hlX2NvbnRleHQgKmNwdHI7CiAgICAgbG9va3VwX2NhY2hlICpyZXQgPSBOVUxMOwpAQCAtNTQ4LDYgKzU1NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnB0ci0+b2lkX29mZik7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX3N1YnRyZWVfY29tcGFyZSxuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX1NVQlRSRUVfQ09NUEFSRQogLyoqIENvbXBhcmVzIE9JRHMgb2YgZ2l2ZW4gc3VidHJlZXMuCiAgKgogICogIEBwYXJhbSBhcCxicCBQb2ludGVycyB0byB0aGUgc3VidHJlZXMgdG8gYmUgY29tcGFyZWQuCkBAIC01NjEsNiArNTY5LDcgQEAKIHsKICAgICByZXR1cm4gc25tcF9vaWRfY29tcGFyZShhcC0+bmFtZV9hLCBhcC0+bmFtZWxlbiwgYnAtPm5hbWVfYSwgYnAtPm5hbWVsZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9TVUJUUkVFX0NPTVBBUkUgKi8KIAogLyoqIEpvaW5zIHRoZSBnaXZlbiBzdWJ0cmVlIHdpdGggdGhlIGN1cnJlbnQgdHJlZS4KICAqICBUcmVlcyBhcmUgam9pbmVkIGFuZCB0aGUgb25lIHN1cHBsaWVkIGFzIHBhcmFtZXRlciBpcyBmcmVlZC4KQEAgLTc0MSw5ICs3NTAsOCBAQAogaW50CiBuZXRzbm1wX3N1YnRyZWVfbG9hZChuZXRzbm1wX3N1YnRyZWUgKm5ld19zdWIsIGNvbnN0IGNoYXIgKmNvbnRleHRfbmFtZSkKIHsKLSAgICBuZXRzbm1wX3N1YnRyZWUgKnRyZWUxLCAqdHJlZTIsICpuZXcyOworICAgIG5ldHNubXBfc3VidHJlZSAqdHJlZTEsICp0cmVlMjsKICAgICBuZXRzbm1wX3N1YnRyZWUgKnByZXYsICpuZXh0OwotICAgIGludCAgICAgICAgICAgICByZXMsIHJjID0gMDsKIAogICAgIGlmIChuZXdfc3ViID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE1JQl9SRUdJU1RFUkVEX09LOyAgICAgICAvKiBEZWdlbmVyYXRlIGNhc2UgKi8KQEAgLTc4NSw3ICs3OTMsNyBAQAogICAgIC8qICBIYW5kbGUgbmV3IHN1YnRyZWVzIHRoYXQgc3RhcnQgaW4gdmlyZ2luIHRlcnJpdG9yeS4gICovCiAKICAgICBpZiAodHJlZTEgPT0gTlVMTCkgewotCW5ldzIgPSBOVUxMOworICAgICAgICBuZXRzbm1wX3N1YnRyZWUgKm5ldzIgPSBOVUxMOwogCS8qICBJcyB0aGVyZSBhbnkgb3ZlcmxhcCB3aXRoIGxhdGVyIHN1YnRyZWVzPyAgKi8KIAlpZiAodHJlZTIgJiYgc25tcF9vaWRfY29tcGFyZShuZXdfc3ViLT5lbmRfYSwgbmV3X3N1Yi0+ZW5kX2xlbiwKIAkJCQkgICAgICB0cmVlMi0+c3RhcnRfYSwgdHJlZTItPnN0YXJ0X2xlbikgPiAwKSB7CkBAIC04NDQsMTAgKzg1Miw4IEBACiAJICAgIElmIHRoZSBuZXcgc3VidHJlZSBleHRlbmRzIGJleW9uZCB0aGlzIGV4aXN0aW5nIHJlZ2lvbiwKIAkgICAgICAgICAgICBzcGxpdCBpdCwgYW5kIHJlY3Vyc2UgdG8gbWVyZ2UgdGhlIHR3byBwYXJ0cy4gICovCiAKLQlyYyA9IHNubXBfb2lkX2NvbXBhcmUobmV3X3N1Yi0+ZW5kX2EsIG5ld19zdWItPmVuZF9sZW4sIAotCQkJICAgICAgdHJlZTEtPmVuZF9hLCB0cmVlMS0+ZW5kX2xlbik7Ci0KLSAgICAgICAgc3dpdGNoIChyYykgeworCXN3aXRjaCAoc25tcF9vaWRfY29tcGFyZShuZXdfc3ViLT5lbmRfYSwgbmV3X3N1Yi0+ZW5kX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUxLT5lbmRfYSwgdHJlZTEtPmVuZF9sZW4pKSB7CiAKIAljYXNlIC0xOgogCSAgICAvKiAgRXhpc3Rpbmcgc3VidHJlZSBjb250YWlucyBuZXcgb25lLiAgKi8KQEAgLTkxOCwxNSArOTI0LDE4IEBACiAKIAljYXNlICAxOgogCSAgICAvKiAgTmV3IHN1YnRyZWUgY29udGFpbnMgdGhlIGV4aXN0aW5nIG9uZS4gICovCi0JICAgIG5ldzIgPSBuZXRzbm1wX3N1YnRyZWVfc3BsaXQobmV3X3N1YiwgdHJlZTEtPmVuZF9hLHRyZWUxLT5lbmRfbGVuKTsKLQkgICAgcmVzID0gbmV0c25tcF9zdWJ0cmVlX2xvYWQobmV3X3N1YiwgY29udGV4dF9uYW1lKTsKLQkgICAgaWYgKHJlcyAhPSBNSUJfUkVHSVNURVJFRF9PSykgewotICAgICAgICAgICAgICAgIG5ldHNubXBfcmVtb3ZlX3N1YnRyZWUobmV3Mik7Ci0JCW5ldHNubXBfc3VidHJlZV9mcmVlKG5ldzIpOwotCQlyZXR1cm4gcmVzOwotCSAgICB9Ci0JICAgIHJldHVybiBuZXRzbm1wX3N1YnRyZWVfbG9hZChuZXcyLCBjb250ZXh0X25hbWUpOwotCX0KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3N1YnRyZWUgKm5ldzIgPQorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3N1YnRyZWVfc3BsaXQobmV3X3N1YiwgdHJlZTEtPmVuZF9hLHRyZWUxLT5lbmRfbGVuKTsKKyAgICAgICAgICAgICAgICBpbnQgcmVzID0gbmV0c25tcF9zdWJ0cmVlX2xvYWQobmV3X3N1YiwgY29udGV4dF9uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IE1JQl9SRUdJU1RFUkVEX09LKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVtb3ZlX3N1YnRyZWUobmV3Mik7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc3VidHJlZV9mcmVlKG5ldzIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gbmV0c25tcF9zdWJ0cmVlX2xvYWQobmV3MiwgY29udGV4dF9uYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTk1NCw3ICs5NjMsNyBAQAogfQogCiBuZXRzbm1wX3N1YnRyZWUgKgotbmV0c25tcF9zdWJ0cmVlX2ZpbmRfcHJldihvaWQgKm5hbWUsIHNpemVfdCBsZW4sIG5ldHNubXBfc3VidHJlZSAqc3VidHJlZSwKK25ldHNubXBfc3VidHJlZV9maW5kX3ByZXYoY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbGVuLCBuZXRzbm1wX3N1YnRyZWUgKnN1YnRyZWUsCiAJCQkgIGNvbnN0IGNoYXIgKmNvbnRleHRfbmFtZSkKIHsKICAgICBsb29rdXBfY2FjaGUgKmxvb2t1cF9jYWNoZSA9IE5VTEw7CkBAIC0xMDI1LDcgKzEwMzQsNyBAQAogfQogCiBuZXRzbm1wX3N1YnRyZWUgKgotbmV0c25tcF9zdWJ0cmVlX2ZpbmRfbmV4dChvaWQgKm5hbWUsIHNpemVfdCBsZW4sCituZXRzbm1wX3N1YnRyZWVfZmluZF9uZXh0KGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IGxlbiwKIAkJCSAgbmV0c25tcF9zdWJ0cmVlICpzdWJ0cmVlLCBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCiB7CiAgICAgbmV0c25tcF9zdWJ0cmVlICpteXB0ciA9IE5VTEw7CkBAIC0xMDQ4LDcgKzEwNTcsNyBAQAogfQogCiBuZXRzbm1wX3N1YnRyZWUgKgotbmV0c25tcF9zdWJ0cmVlX2ZpbmQob2lkICpuYW1lLCBzaXplX3QgbGVuLCBuZXRzbm1wX3N1YnRyZWUgKnN1YnRyZWUsIAorbmV0c25tcF9zdWJ0cmVlX2ZpbmQoY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbGVuLCBuZXRzbm1wX3N1YnRyZWUgKnN1YnRyZWUsIAogCQkgICAgIGNvbnN0IGNoYXIgKmNvbnRleHRfbmFtZSkKIHsKICAgICBuZXRzbm1wX3N1YnRyZWUgKm15cHRyOwpAQCAtMTExNiw3ICsxMTI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIGludCBwZXJmb3JtX2NhbGxiYWNrKQogewogICAgIG5ldHNubXBfc3VidHJlZSAqc3VidHJlZSwgKnN1YjI7Ci0gICAgaW50ICAgICAgICAgICAgIHJlcywgaTsKKyAgICBpbnQgICAgICAgICAgICAgcmVzOwogICAgIHN0cnVjdCByZWdpc3Rlcl9wYXJhbWV0ZXJzIHJlZ19wYXJtczsKICAgICBpbnQgb2xkX2xvb2t1cF9jYWNoZV92YWwgPSBuZXRzbm1wX2dldF9sb29rdXBfY2FjaGVfc2l6ZSgpOwogCkBAIC0xMTk3LDYgKzEyMDYsNyBAQAogCXJlc3Qgb2YgdGhlIHJhbmdlLiAgKi8KIAogICAgIGlmIChyZXMgPT0gTUlCX1JFR0lTVEVSRURfT0sgJiYgcmFuZ2Vfc3ViaWQgIT0gMCkgeworICAgICAgICBpbnQgaTsKIAlmb3IgKGkgPSBtaWJsb2NbcmFuZ2Vfc3ViaWQgLSAxXSArIDE7IGkgPD0gKGludClyYW5nZV91Ym91bmQ7IGkrKykgewogCSAgICBzdWIyID0gbmV0c25tcF9zdWJ0cmVlX2RlZXBjb3B5KHN1YnRyZWUpOwogCkBAIC0xMzkyLDcgKzE0MDIsNyBAQAogICogICAgICAgICAgICAgICAgICAgICBJZiByYW5nZV9zdWJpZCBpcyB6ZXJvLCB0aGVuIHRoaXMgcGFyYW1ldGVyIGlzIGlnbm9yZWQuCiAgKgogICogIEBwYXJhbSBzcyAKLSAqICBAcGFyYW0gY29udGV4dCAKKyAqICBAcGFyYW0gY29udGV4dAogICogIEBwYXJhbSB0aW1lb3V0IAogICogIEBwYXJhbSBmbGFncyAKICAqCkBAIC0xNDA1LDEwICsxNDE1LDEwIEBACiAgKi8KIGludAogcmVnaXN0ZXJfbWliX2NvbnRleHQoY29uc3QgY2hhciAqbW9kdWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YXJpYWJsZSAqdmFyLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIsCiAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFyc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW12YXJzLAotICAgICAgICAgICAgICAgICAgICAgb2lkICogbWlibG9jLAorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbWlibG9jLAogICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG1pYmxvY2xlbiwKICAgICAgICAgICAgICAgICAgICAgIGludCBwcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgIGludCByYW5nZV9zdWJpZCwKQEAgLTE0NzAsMTAgKzE0ODAsMTAgQEAKICAqLwogaW50CiByZWdpc3Rlcl9taWJfcmFuZ2UoY29uc3QgY2hhciAqbW9kdWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFyc2l6ZSwKICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywKLSAgICAgICAgICAgICAgICAgICBvaWQgKiBtaWJsb2MsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbWlibG9jLAogICAgICAgICAgICAgICAgICAgIHNpemVfdCBtaWJsb2NsZW4sCiAgICAgICAgICAgICAgICAgICAgaW50IHByaW9yaXR5LAogICAgICAgICAgICAgICAgICAgIGludCByYW5nZV9zdWJpZCwgb2lkIHJhbmdlX3Vib3VuZCwgbmV0c25tcF9zZXNzaW9uICogc3MpCkBAIC0xNTE5LDEwICsxNTI5LDEwIEBACiAgKi8KIGludAogcmVnaXN0ZXJfbWliX3ByaW9yaXR5KGNvbnN0IGNoYXIgKm1vZHVsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2YXIsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bXZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgb2lkICogbWlibG9jLCBzaXplX3QgbWlibG9jbGVuLCBpbnQgcHJpb3JpdHkpCisgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbWlibG9jLCBzaXplX3QgbWlibG9jbGVuLCBpbnQgcHJpb3JpdHkpCiB7CiAgICAgcmV0dXJuIHJlZ2lzdGVyX21pYl9yYW5nZShtb2R1bGVOYW1lLCB2YXIsIHZhcnNpemUsIG51bXZhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJsb2MsIG1pYmxvY2xlbiwgcHJpb3JpdHksIDAsIDAsIE5VTEwpOwpAQCAtMTU1OSw5ICsxNTY5LDkgQEAKICAqLwogaW50CiByZWdpc3Rlcl9taWIoY29uc3QgY2hhciAqbW9kdWxlTmFtZSwKLSAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKICAgICAgICAgICAgICBzaXplX3QgdmFyc2l6ZSwKLSAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywgb2lkICogbWlibG9jLCBzaXplX3QgbWlibG9jbGVuKQorICAgICAgICAgICAgIHNpemVfdCBudW12YXJzLCBjb25zdCBvaWQgKiBtaWJsb2MsIHNpemVfdCBtaWJsb2NsZW4pCiB7CiAgICAgcmV0dXJuIHJlZ2lzdGVyX21pYl9wcmlvcml0eShtb2R1bGVOYW1lLCB2YXIsIHZhcnNpemUsIG51bXZhcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJsb2MsIG1pYmxvY2xlbiwgREVGQVVMVF9NSUJfUFJJT1JJVFkpOwpAQCAtMTc2Myw2ICsxNzczLDcgQEAKICAgICByZXR1cm4gTUlCX1VOUkVHSVNURVJFRF9PSzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfTUlCX1RBQkxFX1JPVwogaW50CiBuZXRzbm1wX3VucmVnaXN0ZXJfbWliX3RhYmxlX3JvdyhvaWQgKiBuYW1lLCBzaXplX3QgbGVuLCBpbnQgcHJpb3JpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmFyX3N1YmlkLCBvaWQgcmFuZ2VfdWJvdW5kLApAQCAtMTg0MSw2ICsxODUyLDcgQEAKIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5SRUdJU1RFUl9NSUJfVEFCTEVfUk9XICovCiAKIC8qKgogICogVW5yZWdpc3RlcnMgYSBtb2R1bGUgcmVnaXN0ZXJlZCBhZ2FpbnN0IGEgZ2l2ZW4gT0lEIChvciByYW5nZSkgaW4gdGhlIGRlZmF1bHQgY29udGV4dC4gCkBAIC0yMTM5LDkgKzIxNTEsMTAgQEAKICAgICByZXR1cm4gMTsKIH0KIAotCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZ2V0X3Nlc3Npb25fZm9yX29pZCxuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfU0VTU0lPTl9GT1JfT0lECiBuZXRzbm1wX3Nlc3Npb24gKgotZ2V0X3Nlc3Npb25fZm9yX29pZChvaWQgKm5hbWUsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKmNvbnRleHRfbmFtZSkKK2dldF9zZXNzaW9uX2Zvcl9vaWQoY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbGVuLCBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpCiB7CiAgICAgbmV0c25tcF9zdWJ0cmVlICpteXB0cjsKIApAQCAtMjE1OSw2ICsyMTcyLDcgQEAKICAgICAgICAgcmV0dXJuIG15cHRyLT5zZXNzaW9uOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0dFVF9TRVNTSU9OX0ZPUl9PSUQgKi8KIAogdm9pZAogc2V0dXBfdHJlZSh2b2lkKQpAQCAtMjI5NCwxNSArMjMwOCw5IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAocyAhPSBOVUxMKSB7Ci0gICAgICAgIFNOTVBfRlJFRShzKTsKLSAgICB9Ci0gICAgaWYgKGUgIT0gTlVMTCkgewotICAgICAgICBTTk1QX0ZSRUUoZSk7Ci0gICAgfQotICAgIGlmICh2ICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKHYpOwotICAgIH0KKyAgICBTTk1QX0ZSRUUocyk7CisgICAgU05NUF9GUkVFKGUpOworICAgIFNOTVBfRlJFRSh2KTsKIAogICAgIGR1bXBfaWR4X3JlZ2lzdHJ5KCk7CiB9CkBAIC0yMzExLDYgKzIzMTksOSBAQAogLyogRW5kIG9mIE1JQiByZWdpc3RyYXRpb24gY29kZSAqLwogCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9zaWduYWwsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1NJR05BTAorCiAvKiogQGRlZmdyb3VwIGFnZW50X3NpZ25hbHMgUE9TSVggc2lnbmFscyBzdXBwb3J0IGZvciBhZ2VudHMuCiAgKiAgICAgUmVnaXN0ZXJpbmcgYW5kIHVucmVnaXN0ZXJpbmcgc2lnbmFsIGhhbmRsZXJzLgogICogICBAaW5ncm91cCBhZ2VudF9yZWdpc3RyeQpAQCAtMjQwOCw1ICsyNDE5LDcgQEAKIC8qKiAgQH0gKi8KIC8qIEVuZCBvZiBzaWduYWxzIHN1cHBvcnQgY29kZSAqLwogCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9TSUdOQUwgKi8KKwogLyoqICBAfSAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF90cmFwLmMgYi9hZ2VudC9hZ2VudF90cmFwLmMKaW5kZXggZjVkYmNjYS4uMDgwYjhiZiAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfdHJhcC5jCisrKyBiL2FnZW50L2FnZW50X3RyYXAuYwpAQCAtMTgsNiArMTgsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9VTklTVERfSAogI2luY2x1ZGUgPHVuaXN0ZC5oPgpAQCAtNjQsNiArNjUsMTQgQEAKICNpbmNsdWRlICJhZ2VudHgvcHJvdG9jb2wuaCIKICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfdHJhcF9hbGwsIGxpYm5ldHNubXBhZ2VudCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRyYXBfdmFyc193aXRoX2NvbnRleHQsIGFnZW50X3RyYXBfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlbW92ZV90cmFwX3Nlc3Npb24sIGFnZW50X3RyYXBfYWxsKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2VuZF92M3RyYXAsbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2VuZF90cmFwX3BkdSxuZXRzbm1wX3VudXNlZCkKKwogc3RydWN0IHRyYXBfc2luayB7CiAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNwOwogICAgIHN0cnVjdCB0cmFwX3NpbmsgKm5leHQ7CkBAIC0xNzUsNiArMTg0LDcgQEAKICAgICByZXR1cm4gMTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFTU9WRV9UUkFQX1NFU1NJT04KIGludAogcmVtb3ZlX3RyYXBfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzcykKIHsKQEAgLTIwNyw2ICsyMTcsNyBAQAogICAgIH0KICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFTU9WRV9UUkFQX1NFU1NJT04gKi8KIAogI2lmICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjEpIHx8ICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDKQogc3RhdGljIGludApAQCAtODkzLDggKzkwNCw2IEBACiB7CiAgICAgbmV0c25tcF9wZHUgICAgKnBkdTsKICAgICBpbnQgICAgICAgICAgICByZXN1bHQ7Ci0gICAgaW50ICAgICAgICAgICAgbGVuOwotCiAKICAgICBpZiAoIXNlc3MgfHwgIXRlbXBsYXRlX3BkdSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTI4LDcgKzkzNyw3IEBACiAgICAgICAgICAgICAgICAgKHNlc3MtPnNlY3VyaXR5RW5naW5lSURMZW4gPT0gMCkpIHsKICAgICAgICAgICAgIHVfY2hhciAgICAgICAgICB0bXBbU1BSSU5UX01BWF9MRU5dOwogCi0gICAgICAgICAgICBsZW4gPSBzbm1wdjNfZ2V0X2VuZ2luZUlEKHRtcCwgc2l6ZW9mKHRtcCkpOworICAgICAgICAgICAgaW50IGxlbiA9IHNubXB2M19nZXRfZW5naW5lSUQodG1wLCBzaXplb2YodG1wKSk7CiAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5RW5naW5lSUQgPSBuZXRzbm1wX21lbWR1cCh0bXAsIGxlbik7CiAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4gPSBsZW47CiAgICAgICAgIH0KQEAgLTk1Niw2ICs5NjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgodHJhcF92ZXJzaW9uX2lkKSwgdmFycyk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UUkFQX1ZBUlNfV0lUSF9DT05URVhUCiAvKiBTZW5kIGEgdHJhcCB1bmRlciBhIGNvbnRleHQgKi8KIHZvaWQgc2VuZF90cmFwX3ZhcnNfd2l0aF9jb250ZXh0KGludCB0cmFwLCBpbnQgc3BlY2lmaWMsIAogICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMsIGNvbnN0IGNoYXIgKmNvbnRleHQpCkBAIC05NzAsNiArOTgwLDcgQEAKIAkJCQkJCQkJICBjb250ZXh0LCAwKTsKICAgICAJCiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UUkFQX1ZBUlNfV0lUSF9DT05URVhUICovCiAKIC8qKgogICogU2VuZHMgYW4gU05NUHYxIHRyYXAgKG9yIHRoZSBTTk1QdjIgZXF1aXZhbGVudCkgdG8gdGhlIGxpc3Qgb2YgIApAQCAtMTA0MSwxOCArMTA1MiwyMiBAQAogICoKICAqIEBzZWUgc2VuZF92MnRyYXAKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NFTkRfVjNUUkFQCiB2b2lkIHNlbmRfdjN0cmFwKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgY29uc3QgY2hhciAqY29udGV4dCkKIHsKICAgICBuZXRzbm1wX3NlbmRfdHJhcHMoLTEsIC0xLCAKICAgICAgICAgICAgICAgICAgICAgICAgdHJhcF92ZXJzaW9uX2lkLCBPSURfTEVOR1RIKHRyYXBfdmVyc2lvbl9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgIHZhcnMsIGNvbnRleHQsIDApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VORF9WM1RSQVAgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NFTkRfVFJBUF9QRFUKIHZvaWQKIHNlbmRfdHJhcF9wZHUobmV0c25tcF9wZHUgKnBkdSkKIHsKICAgICBzZW5kX3RyYXBfdmFycygtMSwgLTEsIHBkdS0+dmFyaWFibGVzKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NFTkRfVFJBUF9QRFUgKi8KIAogCiAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kIGIvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKaW5kZXggODNmYmQyNy4uZDIwZTEyNSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKQEAgLTUsNiArNSw3IEBACiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC03Myw2ICs3NCw3IEBACiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExMyw2ICsxMTUsNyBAQAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xODAsNiArMTgzLDcgQEAKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yNTIsNiArMjU2LDcgQEAKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI4Niw2ICsyOTEsNyBAQAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzI1LDYgKzMzMSw3IEBACiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTM5Miw2ICszOTksNyBAQAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQ2NCw2ICs0NzIsNyBAQAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQ5OCw2ICs1MDcsNyBAQAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTUzNyw2ICs1NDcsNyBAQAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNjA0LDYgKzYxNSw3IEBACiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTY0Myw2ICs2NTUsNyBAQAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNzEwLDYgKzcyMyw3IEBACiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzgyLDYgKzc5Niw3IEBACiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTgxNiw2ICs4MzEsNyBAQAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC04ODgsNiArOTA0LDcgQEAKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05MjIsNiArOTM5LDcgQEAKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC05OTQsNiArMTAxMiw3IEBACiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTAyOCw2ICsxMDQ3LDcgQEAKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTAxLDYgKzExMjEsNyBAQAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTEzNSw2ICsxMTU2LDcgQEAKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExNzQsNiArMTE5Niw3IEBACiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMjQxLDYgKzEyNjQsNyBAQAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTMxMyw2ICsxMzM3LDcgQEAKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEzNDcsNiArMTM3Miw3IEBACiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNDE5LDYgKzE0NDUsNyBAQAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTQ1Myw2ICsxNDgwLDcgQEAKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1MjUsNiArMTU1Myw3IEBACiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNTU5LDYgKzE1ODgsNyBAQAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTU5OCw2ICsxNjI4LDcgQEAKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE2NjUsNiArMTY5Niw3IEBACiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNzA0LDYgKzE3MzYsNyBAQAogLi9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE3NzEsNiArMTgwNCw3IEBACiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE4MDksOSArMTg0MywxMCBAQAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfdG9fbmV4dC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE4NzksNiArMTkxNCw3IEBACiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTkyMCw2ICsxOTU2LDcgQEAKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0LmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE5ODcsNiArMjAyNCw3IEBACiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIwMjYsNiArMjA2NCw3IEBACiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTIwOTMsNiArMjEzMiw3IEBACiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIxMzIsNiArMjE3Miw3IEBACiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjE5OSw2ICsyMjQwLDcgQEAKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIyMzgsNiArMjI4MCw3IEBACiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTIzMDUsNiArMjM0OCw3IEBACiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjM0NCw2ICsyMzg4LDcgQEAKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yNDExLDYgKzI0NTYsNyBAQAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI0NTAsNiArMjQ5Niw3IEBACiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yNTE3LDYgKzI1NjQsNyBAQAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yNTU3LDYgKzI2MDUsNyBAQAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjYyNCw2ICsyNjczLDcgQEAKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI2NjMsNiArMjcxMyw3IEBACiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjczMCw2ICsyNzgxLDcgQEAKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjc2OSw2ICsyODIxLDcgQEAKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTI4MzYsNiArMjg4OSw3IEBACiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jIGIvYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jCmluZGV4IDFlZDEwOGEuLmUxZTFiNzggMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYworKysgYi9hZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMKQEAgLTIsNiArMiw3IEBACiAgKiAgQHsgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0xMiw2ICsxMyw5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtaWJfaGVscGVycywgbGlibmV0c25tcGFnZW50KQorCisKIC8qKiBjYWxsIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBmb3IgYWxsIGhhbmRsZXJzIHdpdGggaW5pdF8gcm91dGluZXMuICovCiB2b2lkCiBuZXRzbm1wX2luaXRfaGVscGVycyh2b2lkKQpAQCAtMjAsOCArMjQsMTYgQEAKICAgICBuZXRzbm1wX2luaXRfc2VyaWFsaXplKCk7CiAgICAgbmV0c25tcF9pbml0X3JlYWRfb25seV9oZWxwZXIoKTsKICAgICBuZXRzbm1wX2luaXRfYnVsa190b19uZXh0X2hlbHBlcigpOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVQKICAgICBuZXRzbm1wX2luaXRfdGFibGVfZGF0YXNldCgpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQVNFVCAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUk9XX01FUkdFCisgICAgbmV0c25tcF9pbml0X3Jvd19tZXJnZSgpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUk9XX01FUkdFICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUKICAgICBuZXRzbm1wX2luaXRfc3Rhc2hfY2FjaGVfaGVscGVyKCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRSAqLwogfQogCiAvKiogQGRlZmdyb3VwIHV0aWxpdGllcyB1dGlsaXR5X2hhbmRsZXJzCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL2JhYnlfc3RlcHMuYyBiL2FnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jCmluZGV4IDg1MTVkZWEuLmQ3OWFjYmMgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jCisrKyBiL2FnZW50L2hlbHBlcnMvYmFieV9zdGVwcy5jCkBAIC0zLDkgKzMsMTkgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGJhYnlfc3RlcHMsIG1pYl9oZWxwZXJzKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfQkFCWV9TVEVQUworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfcmVxdWVzdHNfZXJyb3IpCisjZW5kaWYKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0JBQllfU1RFUFMKKwogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaD4KIAogI2RlZmluZSBCQUJZX1NURVBTX1BFUl9NT0RFX01BWCAgICAgNApAQCAtMTQsNiArMjQsNyBAQAogc3RhdGljIHVfc2hvcnQgZ2V0X21vZGVfbWFwW0JBQllfU1RFUFNfUEVSX01PREVfTUFYXSA9IHsKICAgICBNT0RFX0JTVEVQX1BSRV9SRVFVRVNULCBNT0RFX0JTVEVQX09CSkVDVF9MT09LVVAsIEJTVEVQX1VTRV9PUklHSU5BTCwgTU9ERV9CU1RFUF9QT1NUX1JFUVVFU1QgfTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0YXRpYyB1X3Nob3J0IHNldF9tb2RlX21hcFtTTk1QX01TR19JTlRFUk5BTF9TRVRfTUFYXVtCQUJZX1NURVBTX1BFUl9NT0RFX01BWF0gPSB7CiAgICAgLypSMSovCiAgICAgeyBNT0RFX0JTVEVQX1BSRV9SRVFVRVNULCBNT0RFX0JTVEVQX09CSkVDVF9MT09LVVAsIE1PREVfQlNURVBfUk9XX0NSRUFURSwKQEAgLTMzLDYgKzQ0LDcgQEAKICAgICB7IE1PREVfQlNURVBfVU5ET19DT01NSVQsIE1PREVfQlNURVBfVU5ET19TRVQsIE1PREVfQlNURVBfVU5ET19DTEVBTlVQLAogICAgICAgTU9ERV9CU1RFUF9QT1NUX1JFUVVFU1R9CiB9OworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiBzdGF0aWMgaW50CiBfYmFieV9zdGVwc19oZWxwZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKQEAgLTUxLDYgKzYzLDIwIEBACiAgKiAgQHsKICAqLwogCitzdGF0aWMgbmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzICoKK25ldHNubXBfYmFieV9zdGVwc19tb2Rlc19yZWYobmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzICptZCkKK3sKKyAgICBtZC0+cmVmY250Kys7CisgICAgcmV0dXJuIG1kOworfQorCitzdGF0aWMgdm9pZAorbmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzX2RlcmVmKG5ldHNubXBfYmFieV9zdGVwc19tb2RlcyAqbWQpCit7CisgICAgaWYgKC0tbWQtPnJlZmNudCA9PSAwKQorCWZyZWUobWQpOworfQorCiAvKiogcmV0dXJucyBhIGJhYnlfc3RlcHMgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4KICAqICBoYW5kbGVyIGNoYWluLgogICovCkBAIC03MSw3ICs5NywxMCBAQAogICAgICAgICBtaCA9IE5VTEw7CiAgICAgfQogICAgIGVsc2UgeworCW1kLT5yZWZjbnQgPSAxOwogICAgICAgICBtaC0+bXl2b2lkID0gbWQ7CisJbWgtPmRhdGFfY2xvbmUgPSAodm9pZCAqKCopKHZvaWQgKikpbmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzX3JlZjsKKwltaC0+ZGF0YV9mcmVlID0gKHZvaWQgKCopKHZvaWQgKikpbmV0c25tcF9iYWJ5X3N0ZXBzX21vZGVzX2RlcmVmOwogICAgICAgICBpZiAoMCA9PSBtb2RlcykKICAgICAgICAgICAgIG1vZGVzID0gQkFCWV9TVEVQX0FMTDsKICAgICAgICAgbWQtPnJlZ2lzdGVyZWQgPSBtb2RlczsKQEAgLTEwNCw2ICsxMzMsNyBAQAogCiAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgLyoKICAgICAgICAgICogY2xlYXIgY29tcGxldGVkIG1vZGVzCkBAIC0xMjEsNiArMTUxLDcgQEAKICAgICBjYXNlIE1PREVfU0VUX1VORE86CiAgICAgICAgIG1vZGVfbWFwX3B0ciA9IHNldF9tb2RlX21hcFtyZXFpbmZvLT5tb2RlXTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAKICAgICBkZWZhdWx0OgogICAgICAgICAvKgpAQCAtMjIyLDYgKzI1Myw3IEBACiAgICAgICAgIGlmIChCU1RFUF9VU0VfT1JJR0lOQUwgIT0gbW9kZV9tYXBfcHRyW2ldKSB7CiAgICAgICAgICAgICB1X2ludCAgICBtb2RlX2ZsYWc7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogc2tpcCB1bmRvIGNvbW1pdCBpZiBjb21taXQgd2Fzbid0IGhpdCwgYW5kCiAgICAgICAgICAgICAgKiB1bmRvX2NsZWFudXAgaWYgdW5kb19zZXR1cCB3YXNuJ3QgaGl0LgpAQCAtMjQwLDYgKzI3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgIHNraXBwaW5nIHVuZG8gY2xlYW51cCAobm8gdW5kbyBzZXR1cClcbiIpKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICAgICAgcmVxaW5mby0+bW9kZSA9IG1vZGVfbWFwX3B0cltpXTsKICAgICAgICAgICAgIG1vZGVfZmxhZyA9IG5ldHNubXBfYmFieV9zdGVwX21vZGUyZmxhZyggbW9kZV9tYXBfcHRyW2ldICk7CkBAIC0yOTMsNyArMzI2LDEwIEBACiAgICAgICAgICAqIGluIGNvbW1pdCwgZnJlZSBvciB1bmRvLikKICAgICAgICAgICovCiAgICAgICAgIGlmIChNT0RFX0lTX0dFVChzYXZlX21vZGUpCi0gICAgICAgICAgICB8fCAoc2F2ZV9tb2RlIDwgU05NUF9NU0dfSU5URVJOQUxfU0VUX0NPTU1JVCkpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgICAgICB8fCAoc2F2ZV9tb2RlIDwgU05NUF9NU0dfSU5URVJOQUxfU0VUX0NPTU1JVCkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgICAgICkgewogICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2NoZWNrX3JlcXVlc3RzX2Vycm9yKHJlcXVlc3RzKTsKICAgICAgICAgICAgIGlmKHJjKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImJhYnlfc3RlcHMiLCAiICAgRVJST1I6cmVxdWVzdCBlcnJvclxuIikpOwpAQCAtMzE1LDEyICszNTEsMTUgQEAKICAqICBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUKICAqICB1c2UuCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9pbml0LG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfQkFCWV9TVEVQU19IQU5ETEVSX0lOSVQKIHZvaWQKIG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2luaXQodm9pZCkKIHsKICAgICBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXJfYnlfbmFtZSgiYmFieV9zdGVwcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KEJBQllfU1RFUF9BTEwpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfQkFCWV9TVEVQU19IQU5ETEVSX0lOSVQgKi8KIAogLyoqIEB9ICovCiAKQEAgLTM5MSw2ICs0MzAsNyBAQAogICAgICAgICAgICAgbWV0aG9kID0gYWNjZXNzX21ldGhvZHMtPmdldF92YWx1ZXM7CiAgICAgICAgIGJyZWFrOwogICAgICAgICAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX0JTVEVQX0NIRUNLX1ZBTFVFOgogICAgICAgICBpZiggYWNjZXNzX21ldGhvZHMtPm9iamVjdF9zeW50YXhfY2hlY2tzICkKICAgICAgICAgICAgIG1ldGhvZCA9IGFjY2Vzc19tZXRob2RzLT5vYmplY3Rfc3ludGF4X2NoZWNrczsKQEAgLTQ0MCw2ICs0ODAsNyBAQAogICAgICAgICBpZiggYWNjZXNzX21ldGhvZHMtPnVuZG9fY2xlYW51cCApCiAgICAgICAgICAgICBtZXRob2QgPSBhY2Nlc3NfbWV0aG9kcy0+dW5kb19jbGVhbnVwOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgCiAgICAgY2FzZSBNT0RFX0JTVEVQX1BPU1RfUkVRVUVTVDoKICAgICAgICAgaWYoIGFjY2Vzc19tZXRob2RzLT5wb3N0X3JlcXVlc3QgKQpAQCAtNDg0LDYgKzUyNSw3IEBACiAgICAgc3dpdGNoKCBtb2RlICkgewogICAgICAgICBjYXNlIE1PREVfQlNURVBfT0JKRUNUX0xPT0tVUDoKICAgICAgICAgICAgIHJldHVybiBCQUJZX1NURVBfT0JKRUNUX0xPT0tVUDsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgTU9ERV9CU1RFUF9TRVRfVkFMVUU6CiAgICAgICAgICAgICByZXR1cm4gQkFCWV9TVEVQX1NFVF9WQUxVRTsKICAgICAgICAgY2FzZSBNT0RFX0JTVEVQX0lSUkVWRVJTSUJMRV9DT01NSVQ6CkBAIC01MDgsNiArNTUwLDcgQEAKICAgICAgICAgICAgIHJldHVybiBCQUJZX1NURVBfQ09NTUlUOwogICAgICAgICBjYXNlIE1PREVfQlNURVBfVU5ET19DT01NSVQ6CiAgICAgICAgICAgICByZXR1cm4gQkFCWV9TVEVQX1VORE9fQ09NTUlUOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoInVua25vd24gZmxhZyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MTYsMyArNTU5LDcgQEAKIH0KIC8qKiAgQH0gKi8KIAorI2Vsc2UgIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQkFCWV9TVEVQUyAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChiYWJ5X3N0ZXBzKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0JBQllfU1RFUFMgKi8KKwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMgYi9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYwppbmRleCA2YmIzMmEwLi41MjBhNGNmIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYworKysgYi9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYwpAQCAtOSw2ICs5LDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMjEsNiArMjIsMTEgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNhY2hlX2hhbmRsZXIsIG1pYl9oZWxwZXJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2FjaGVfZmluZF9ieV9vaWQsIGNhY2hlX2hhbmRsZXIpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2FjaGVfZ2V0X2hlYWQsIGNhY2hlX2hhbmRsZXIpCisKIHN0YXRpYyBuZXRzbm1wX2NhY2hlICAqY2FjaGVfaGVhZCA9IE5VTEw7CiBzdGF0aWMgaW50ICAgICAgICAgICAgIGNhY2hlX291dHN0YW5kaW5nX3ZhbGlkID0gMDsKIHN0YXRpYyBpbnQgICAgICAgICAgICAgX2NhY2hlX2xvYWQoIG5ldHNubXBfY2FjaGUgKmNhY2hlICk7CkBAIC03OSw2ICs4NSwxNCBAQAogICogIHRoZSBjYWNoZSB3aGVuIGl0IGV4cGlyZXMuIFRoaXMgaXMgdXNlZnVsIGZvciBrZWVwaW5nIHRoZSBjYWNoZSBmcmVzaCwKICAqICBldmVuIGluIHRoZSBhYnNlbmNlIG9mIGluY29taW5nIHNubXAgcmVxdWVzdHMuCiAgKgorICogIElmIE5FVFNOTVBfQ0FDSEVfUkVTRVRfVElNRVJfT05fVVNFIGlzIHNldCwgdGhlIGV4cGlyeSB0aW1lciB3aWxsIGJlCisgKiAgcmVzZXQgb24gZWFjaCBjYWNoZSBhY2Nlc3MuIEluIHByYWN0aWNlIHRoZSAndGltZW91dCcgYmVjb21lcyBhIHRpbWVyCisgKiAgd2hpY2ggdHJpZ2dlcnMgd2hlbiB0aGUgY2FjaGUgaXMgbm8gbG9uZ2VyIG5lZWRlZC4gVGhpcyBpcyB1c2VmdWwKKyAqICBpZiB0aGUgY2FjaGUgaXMgYXV0b21hdGljYWxseSBrZXB0IHN5bmNocm9uaXplZDogZS5nLiBieSByZWNlaXZpbmcKKyAqICBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBmcm9tIE5ldGxpbmssIGlub3RpZnkgb3Igc2ltaWxhci4gVGhpcyBzaG91bGQKKyAqICBub3QgYmUgdXNlZCBpZiBjYWNoZSBpcyBub3Qgc3luY2hyb25pemVkIGF1dG9tYXRpY2FsbHkgYXMgaXQgd291bGQKKyAqICByZXN1bHQgaW4gc3RhbGUgY2FjaGUgaW5mb3JtYXRpb24gd2hlbiBpZiBwb2xsaW5nIGhhcHBlbnMgdG9vIGZhc3QuCisgKgogICoKICAqICBIZXJlIGFyZSBzb21lIHN1Z2dlc3Rpb25zIGZvciBzb21lIGNvbW1vbiBzaXR1YXRpb25zLgogICoKQEAgLTExMCwxMiArMTI0LDIwIEBACiAgKiAgICAgICAgICBORVRTTk1QX0NBQ0hFX0RPTlRfQVVUT19SRUxFQVNFCiAgKiAgICAgICAgICBORVRTTk1QX0NBQ0hFX0FVVE9fUkVMT0FECiAgKgorICogIER5bmFtaWNhbGx5IHVwZGF0ZWQsIHVubG9hZGVkIGFmdGVyIHRpbWVvdXQ6CisgKiAgICAgIElmIHRoZSBjYWNoZSBpcyBrZXB0IHVwIHRvIGRhdGUgZHluYW1pY2FsbHkgYnkgbGlzdGVuaW5nIGZvcgorICogICAgICBjaGFuZ2Ugbm90aWZpY2F0aW9ucyBzb21laG93LCBidXQgaXQgc2hvdWxkIG5vdCBiZSBpbiBtZW1vcnkKKyAqICAgICAgaWYgaXQncyBub3QgbmVlZGVkLiBTZXQgdGhlIGZvbGxvd2luZyBmbGFnOgorICoKKyAqICAgICAgICAgIE5FVFNOTVBfQ0FDSEVfUkVTRVRfVElNRVJfT05fVVNFCisgKgogICogIEB7CiAgKi8KIAogc3RhdGljIHZvaWQKIF9jYWNoZV9mcmVlKCBuZXRzbm1wX2NhY2hlICpjYWNoZSApOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FDSEVfR0VUX0hFQUQKIC8qKiBnZXQgY2FjaGUgaGVhZAogICogQGludGVybmFsCiAgKiB1bmFkdmVydGlzZWQgZnVuY3Rpb24gdG8gZ2V0IGNhY2hlIGhlYWQuIFlvdSByZWFsbHkgc2hvdWxkIG5vdApAQCAtMTI2LDcgKzE0OCw5IEBACiB7CiAgICAgcmV0dXJuIGNhY2hlX2hlYWQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUNIRV9HRVRfSEVBRCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FDSEVfRklORF9CWV9PSUQKIC8qKiBmaW5kIGV4aXN0aW5nIGNhY2hlCiAgKi8KIG5ldHNubXBfY2FjaGUgKgpAQCAtMTQyLDYgKzE2Niw3IEBACiAgICAgCiAgICAgcmV0dXJuIE5VTEw7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUNIRV9GSU5EX0JZX09JRCAqLwogCiAvKiogcmV0dXJucyBhIGNhY2hlCiAgKi8KQEAgLTE4Niw2ICsyMTEsMjIgQEAKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKK3N0YXRpYyBuZXRzbm1wX2NhY2hlICoKK25ldHNubXBfY2FjaGVfcmVmKG5ldHNubXBfY2FjaGUgKmNhY2hlKQoreworICAgIGNhY2hlLT5yZWZjbnQrKzsKKyAgICByZXR1cm4gY2FjaGU7Cit9CisKK3N0YXRpYyB2b2lkCituZXRzbm1wX2NhY2hlX2RlcmVmKG5ldHNubXBfY2FjaGUgKmNhY2hlKQoreworICAgIGlmICgtLWNhY2hlLT5yZWZjbnQgPT0gMCkgeworICAgICAgICBuZXRzbm1wX2NhY2hlX3JlbW92ZShjYWNoZSk7CisgICAgICAgIG5ldHNubXBfY2FjaGVfZnJlZShjYWNoZSk7CisgICAgfQorfQorCiAvKiogZnJlZXMgYSBjYWNoZQogICovCiBpbnQKQEAgLTIwNSw4ICsyNDYsOCBAQAogICAgICAgICAgICAgc3ByaW50X3JlYWxsb2Nfb2JqaWQoKHVfY2hhciAqKikgJmJ1ZiwgJmJ1Zl9sZW4sICZvdXRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgcG9zLT5yb290b2lkLCBwb3MtPnJvb3RvaWRfbGVuKTsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAotCQkgICAgICJub3QgZnJlZWluZyBjYWNoZSB3aXRoIHJvb3QgT0lEICVzIChzdGlsbCBpbiBsaXN0KVxuIiwKLQkJICAgICBidWYpOworICAgICAgICAgICAgICAgICAgICAgIm5vdCBmcmVlaW5nIGNhY2hlIHdpdGggcm9vdCBPSUQgJXMgKHN0aWxsIGluIGxpc3QpXG4iLAorICAgICAgICAgICAgICAgICAgICAgYnVmKTsKICAgICAgICAgICAgIGZyZWUoYnVmKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgIH0KQEAgLTIxOCw2ICsyNTksOSBAQAogICAgIGlmIChjYWNoZS0+dmFsaWQpCiAgICAgICAgIF9jYWNoZV9mcmVlKGNhY2hlKTsKIAorICAgIGlmIChjYWNoZS0+dGltZXN0YW1wTSkKKwlmcmVlKGNhY2hlLT50aW1lc3RhbXBNKTsKKwogICAgIGlmIChjYWNoZS0+cm9vdG9pZCkKICAgICAgICAgZnJlZShjYWNoZS0+cm9vdG9pZCk7CiAKQEAgLTM1Myw2ICszOTcsMTcgQEAKICAgICByZXR1cm4gcmV0OwogfQogCisvKiogTWFrZXMgc3VyZSB0aGF0IG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHRoZSBjYWNoZSBpcyBmcmVlZCB3aGVuIHRoZSBoYW5kbGVyCisgKiAgaXMgdW5yZWdpc3RlcmVkLgorICovCit2b2lkIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9vd25zX2NhY2hlKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIpCit7CisgICAgbmV0c25tcF9hc3NlcnQoaGFuZGxlci0+bXl2b2lkKTsKKyAgICAoKG5ldHNubXBfY2FjaGUgKiloYW5kbGVyLT5teXZvaWQpLT5yZWZjbnQrKzsKKyAgICBoYW5kbGVyLT5kYXRhX2Nsb25lID0gKHZvaWQgKigqKSh2b2lkICopKW5ldHNubXBfY2FjaGVfcmVmOworICAgIGhhbmRsZXItPmRhdGFfZnJlZSA9ICh2b2lkKCopKHZvaWQqKSluZXRzbm1wX2NhY2hlX2RlcmVmOworfQorCiAvKiogcmV0dXJucyBhIGNhY2hlIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uICAKICAqLwogbmV0c25tcF9taWJfaGFuZGxlciAqCkBAIC0zNjgsMTIgKzQyMywxNSBAQAogICAgICAgICBjYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKHRpbWVvdXQsIGxvYWRfaG9vaywgZnJlZV9ob29rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RvaWQsIHJvb3RvaWRfbGVuKTsKICAgICAgICAgcmV0LT5teXZvaWQgPSAodm9pZCAqKSBjYWNoZTsKKyAgICAgICAgbmV0c25tcF9jYWNoZV9oYW5kbGVyX293bnNfY2FjaGUocmV0KTsKICAgICB9CiAgICAgcmV0dXJuIHJldDsKIH0KIAogLyoqIGZ1bmN0aW9uYWxseSB0aGUgc2FtZSBhcyBjYWxsaW5nIG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpIGJ1dCBhbHNvCiAgKiBpbmplY3RzIGEgY2FjaGUgaGFuZGxlciBhdCB0aGUgc2FtZSB0aW1lIGZvciB5b3UuICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobmV0c25tcF9jYWNoZV9oYW5kbGVyX3JlZ2lzdGVyLG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfQ0FDSEVfSEFORExFUl9SRUdJU1RFUgogaW50CiBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfcmVnaXN0ZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqIHJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSogY2FjaGUpCkBAIC0zODQsOSArNDQyLDEyIEBACiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9DQUNIRV9IQU5ETEVSX1JFR0lTVEVSICovCiAKIC8qKiBmdW5jdGlvbmFsbHkgdGhlIHNhbWUgYXMgY2FsbGluZyBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIoKSBidXQgYWxzbwogICogaW5qZWN0cyBhIGNhY2hlIGhhbmRsZXIgYXQgdGhlIHNhbWUgdGltZSBmb3IgeW91LiAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG5ldHNubXBfcmVnaXN0ZXJfY2FjaGVfaGFuZGxlcixuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX1JFR0lTVEVSX0NBQ0hFX0hBTkRMRVIKIGludAogbmV0c25tcF9yZWdpc3Rlcl9jYWNoZV9oYW5kbGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKiByZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0aW1lb3V0LCBOZXRzbm1wQ2FjaGVMb2FkICogbG9hZF9ob29rLApAQCAtNDAwLDggKzQ2MSw5IEBACiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9SRUdJU1RFUl9DQUNIRV9IQU5ETEVSICovCiAKLU5FVFNOTVBfU1RBVElDX0lOTElORSBjaGFyICoKK3N0YXRpYyBjaGFyICoKIF9idWlsZF9jYWNoZV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgY2hhciAqZHVwID0gKGNoYXIqKW1hbGxvYyhzdHJsZW4obmFtZSkgKyBzdHJsZW4oQ0FDSEVfTkFNRSkgKyAyKTsKQEAgLTQ0MSwxMSArNTAzLDE0IEBACiB9CiAKIC8qKiBFeHRyYWN0IHRoZSBjYWNoZSBpbmZvcm1hdGlvbiBmb3IgYSBnaXZlbiByZXF1ZXN0IChQRFUpICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobmV0c25tcF9leHRyYWN0X2NhY2hlX2luZm8sbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9FWFRSQUNUX0NBQ0hFX0lORk8KIG5ldHNubXBfY2FjaGUgICoKIG5ldHNubXBfZXh0cmFjdF9jYWNoZV9pbmZvKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICogcmVxaW5mbykKIHsKICAgICByZXR1cm4gbmV0c25tcF9jYWNoZV9yZXFpbmZvX2V4dHJhY3QocmVxaW5mbywgQ0FDSEVfTkFNRSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0VYVFJBQ1RfQ0FDSEVfSU5GTyAqLwogCiAKIC8qKiBDaGVjayBpZiB0aGUgY2FjaGUgdGltZW91dCBoYXMgcGFzc2VkLiBTZXRzIGFuZCByZXR1cm4gdGhlIGV4cGlyZWQgZmxhZy4gKi8KQEAgLTQ1NCwxMSArNTE5LDEzIEBACiB7CiAgICAgaWYoTlVMTCA9PSBjYWNoZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYoIWNhY2hlLT52YWxpZCB8fCAoTlVMTCA9PSBjYWNoZS0+dGltZXN0YW1wKSB8fCAoLTEgPT0gY2FjaGUtPnRpbWVvdXQpKQorICAgIGlmIChjYWNoZS0+ZXhwaXJlZCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYoIWNhY2hlLT52YWxpZCB8fCAoTlVMTCA9PSBjYWNoZS0+dGltZXN0YW1wTSkgfHwgKC0xID09IGNhY2hlLT50aW1lb3V0KSkKICAgICAgICAgY2FjaGUtPmV4cGlyZWQgPSAxOwogICAgIGVsc2UKLSAgICAgICAgY2FjaGUtPmV4cGlyZWQgPSBhdGltZV9yZWFkeShjYWNoZS0+dGltZXN0YW1wLCAxMDAwICogY2FjaGUtPnRpbWVvdXQpOworICAgICAgICBjYWNoZS0+ZXhwaXJlZCA9IG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKGNhY2hlLT50aW1lc3RhbXBNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAgKiBjYWNoZS0+dGltZW91dCk7CiAgICAgCiAgICAgcmV0dXJuIGNhY2hlLT5leHBpcmVkOwogfQpAQCAtNDkyLDExICs1NTksMTQgQEAKIC8qKiBJcyB0aGUgY2FjaGUgdmFsaWQgZm9yIGEgZ2l2ZW4gcmVxdWVzdD8KICAqIGZvciBiYWNrd2FyZHMgY29tcGF0YWJpbGl0eS4gbmV0c25tcF9jYWNoZV9pc192YWxpZCgpIGlzIHByZWZlcnJlZC4KICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG5ldHNubXBfaXNfY2FjaGVfdmFsaWQsbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9JU19DQUNIRV9WQUxJRAogaW50CiBuZXRzbm1wX2lzX2NhY2hlX3ZhbGlkKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICogcmVxaW5mbykKIHsKICAgICByZXR1cm4gbmV0c25tcF9jYWNoZV9pc192YWxpZChyZXFpbmZvLCBDQUNIRV9OQU1FKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfSVNfQ0FDSEVfVkFMSUQgKi8KIAogLyoqIEltcGxlbWVudHMgdGhlIGNhY2hlIGhhbmRsZXIgKi8KIGludApAQCAtNTI2LDcgKzU5Niw3IEBACiAgICAgICAgICAgICAgICAgICAgImNhY2hlIG5vdCBmb3VuZCwgZGlzYWJsZWQgb3IgaGFkIG5vIGxvYWQgbWV0aG9kXG4iKSk7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogICAgIH0KLSAgICBzbnByaW50ZihhZGRyc3RyLCBzaXplb2YoYWRkcnN0ciksICIlcCIsIGNhY2hlKTsKKyAgICBzbnByaW50ZihhZGRyc3RyLHNpemVvZihhZGRyc3RyKSwgIiVsZCIsIChsb25nIGludCljYWNoZSk7CiAgICAgREVCVUdNU0dUTCgoImhlbHBlcjpjYWNoZV9oYW5kbGVyIiwgInVzaW5nIGNhY2hlICVzOiAiLCBhZGRyc3RyKSk7CiAgICAgREVCVUdNU0dPSUQoKCJoZWxwZXI6Y2FjaGVfaGFuZGxlciIsIGNhY2hlLT5yb290b2lkLCBjYWNoZS0+cm9vdG9pZF9sZW4pKTsKICAgICBERUJVR01TRygoImhlbHBlcjpjYWNoZV9oYW5kbGVyIiwgIlxuIikpOwpAQCAtNTQ2LDcgKzYxNiw5IEBACiAgICAgY2FzZSBNT0RFX0dFVDoKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICBjYXNlIE1PREVfR0VUQlVMSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgLyoKICAgICAgICAgICogb25seSB0b3VjaCBjYWNoZSBvbmNlIHBlciBwZHUgcmVxdWVzdCwgdG8gcHJldmVudCBhIGNhY2hlCkBAIC01NjgsNiArNjQwLDcgQEAKICAgICAgICAgLyoqIG5leHQgaGFuZGxlciBjYWxsZWQgYXV0b21hdGljYWxseSAtICdBVVRPX05FWFQnICovCiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtNTg5LDYgKzY2Miw3IEBACiAgICAgICAgIH0KICAgICAgICAgLyoqIG5leHQgaGFuZGxlciBjYWxsZWQgYXV0b21hdGljYWxseSAtICdBVVRPX05FWFQnICovCiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJjYWNoZV9oYW5kbGVyOiBVbnJlY29nbmlzZWQgbW9kZSAoJWQpXG4iLApAQCAtNTk2LDYgKzY3MCw4IEBACiAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX0VSUl9HRU5FUlIpOwogICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgIH0KKyAgICBpZiAoY2FjaGUtPmZsYWdzICYgTkVUU05NUF9DQUNIRV9SRVNFVF9USU1FUl9PTl9VU0UpCisgICAgICAgIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoJmNhY2hlLT50aW1lc3RhbXBNKTsKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIApAQCAtNjQwLDEwICs3MTYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHJlbGVhc2VfY2FjaGVkX3Jlc291cmNlcywgTlVMTCk7CiAgICAgICAgIGNhY2hlX291dHN0YW5kaW5nX3ZhbGlkID0gMTsKICAgICB9Ci0gICAgaWYgKGNhY2hlLT50aW1lc3RhbXApCi0gICAgICAgIGF0aW1lX3NldE1hcmtlcihjYWNoZS0+dGltZXN0YW1wKTsKLSAgICBlbHNlCi0gICAgICAgIGNhY2hlLT50aW1lc3RhbXAgPSBhdGltZV9uZXdNYXJrZXIoKTsKKyAgICBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCZjYWNoZS0+dGltZXN0YW1wTSk7CiAgICAgREVCVUdNU0dUKCgiaGVscGVyOmNhY2hlX2hhbmRsZXIiLCAiIGxvYWRlZCAoJWQpXG4iLCBjYWNoZS0+dGltZW91dCkpOwogCiAgICAgcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvaW5zdGFuY2UuYyBiL2FnZW50L2hlbHBlcnMvaW5zdGFuY2UuYwppbmRleCAyZDA3YjY5Li5hNWVlODQxIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMKKysrIGIvYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jCkBAIC05LDYgKzksNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0yNiw3ICsyNywxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZShpbnN0YW5jZSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnN0YW5jZSwgbWliX2hlbHBlcnMpCisKIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2VfcyB7CisgICAgaW50ICAgcmVmY250OwogICAgIGNoYXIgKmZpbGVfbmFtZTsKICAgICBGSUxFICpmaWxlcDsKICAgICB1X2NoYXIgdHlwZTsKQEAgLTM5LDYgKzQ0LDIyIEBACiAgKiAgQHsKICAqLwogCitzdGF0aWMgbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZSAqCituZXRzbm1wX251bV9maWxlX2luc3RhbmNlX3JlZihuZXRzbm1wX251bV9maWxlX2luc3RhbmNlICpuZmkpCit7CisgICAgbmZpLT5yZWZjbnQrKzsKKyAgICByZXR1cm4gbmZpOworfQorCitzdGF0aWMgdm9pZAorbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZV9kZXJlZihuZXRzbm1wX251bV9maWxlX2luc3RhbmNlICpuZmkpCit7CisgICAgaWYgKC0tbmZpLT5yZWZjbnQgPT0gMCkgeworCWZyZWUobmZpLT5maWxlX25hbWUpOworCWZyZWUobmZpKTsKKyAgICB9Cit9CisKIC8qKgogICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBoZWxwZXIgaGFuZGxlciwgY2FsbHMgbmV0c25tcF9jcmVhdGVfaGFuZGxlciwgd2hpY2gKICAqIHRoZW4gY291bGQgYmUgcmVnaXN0ZXJlZCwgdXNpbmcgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKCkuCkBAIC0xMTEsNyArMTMyLDcgQEAKIGdldF9yZWcoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgY29uc3QgY2hhciAqb3VybmFtZSwKICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAotICAgICAgICB2b2lkICppdCwKKyAgICAgICAgbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZSAqaXQsCiAgICAgICAgIGludCBtb2RlcywKICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzY2FsYXJoLCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIsCiAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKQpAQCAtMTI2LDcgKzE0Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkLCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVzKTsKICAgICAgICAgbXloYW5kbGVyID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcihvdXJuYW1lLCBzY2FsYXJoKTsKLSAgICAgICAgbXloYW5kbGVyLT5teXZvaWQgPSAodm9pZCAqKSBpdDsKKyAgICAgICAgbXloYW5kbGVyLT5teXZvaWQgPSBpdDsKKwlteWhhbmRsZXItPmRhdGFfY2xvbmUgPSAodm9pZCooKikodm9pZCopKW5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2VfcmVmOworCW15aGFuZGxlci0+ZGF0YV9mcmVlID0gKHZvaWQoKikodm9pZCopKW5ldHNubXBfbnVtX2ZpbGVfaW5zdGFuY2VfZGVyZWY7CiAgICAgICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIobXlyZWcsIG15aGFuZGxlcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbXlyZWcgPQpAQCAtMTM0LDcgKzE1NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGFyaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZXMpOwotICAgICAgICBteXJlZy0+aGFuZGxlci0+bXl2b2lkID0gKHZvaWQgKikgaXQ7CisgICAgICAgIG15cmVnLT5oYW5kbGVyLT5teXZvaWQgPSBpdDsKKwlteXJlZy0+aGFuZGxlci0+ZGF0YV9jbG9uZQorCSAgICA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX251bV9maWxlX2luc3RhbmNlX3JlZjsKKwlteXJlZy0+aGFuZGxlci0+ZGF0YV9mcmVlCisJICAgID0gKHZvaWQgKCopKHZvaWQgKikpbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZV9kZXJlZjsKICAgICB9CiAgICAgaWYgKGNvbnRleHROYW1lKQogICAgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwpAQCAtMTQyLDYgKzE2OSw4IEBACiB9CiAKIC8qIFdhdGNoZWQgJ2xvbmcnIGluc3RhbmNlcyBhcmUgd3JpdGFibGUgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBzeXN0ZW1zICAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlYWRfb25seV91bG9uZ19pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfVUxPTkdfSU5TVEFOQ0UKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCkBAIC0xNDksMjggKzE3OCwzNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwKICAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX1VMT05HX0lOU1RBTkNFICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1bG9uZ19pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTE9OR19JTlNUQU5DRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JXUklURSksCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVfbG9uZyksCiAgICAgICAgICAgICAgICAgICAgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VMT05HX0lOU1RBTkNFICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9DT1VOVEVSMzJfSU5TVEFOQ0UKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKQEAgLTE3OSwxNCArMjE0LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSksCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVfbG9uZyksCiAgICAgICAgICAgICAgICAgICAgQVNOX0NPVU5URVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0NPVU5URVIzMl9JTlNUQU5DRSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9vbmx5X2xvbmdfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0xPTkdfSU5TVEFOQ0UKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLApAQCAtMTk0LDI2ICsyMzIsMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9MT05HX0lOU1RBTkNFICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihsb25nX2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPTkdfSU5TVEFOQ0UKIGludAogbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihsb25nKSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9OR19JTlNUQU5DRSAqLwogCiAvKiBXYXRjaGVkICdpbnQnIGluc3RhbmNlcyBhcmUgb25seSB3cml0YWJsZSBvbiAzMi1iaXQgc3lzdGVtcyAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX29ubHlfdWludF9pbnN0YW5jZSxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfVUlOVF9JTlNUQU5DRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91aW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCkBAIC0yMjEsNDIgKzI2NSw1MSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKml0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSksCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVuc2lnbmVkIGludCksCiAgICAgICAgICAgICAgICAgICAgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9VSU5UX0lOU1RBTkNFICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1aW50X2luc3RhbmNlLGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VJTlRfSU5TVEFOQ0UKIGludAogbmV0c25tcF9yZWdpc3Rlcl91aW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JXUklURSksCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVuc2lnbmVkIGludCksCiAgICAgICAgICAgICAgICAgICAgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VJTlRfSU5TVEFOQ0UgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlYWRfb25seV9pbnRfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0lOVF9JTlNUQU5DRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSksCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGludCksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9JTlRfSU5TVEFOQ0UgKi8KIAogICAvKgogICAgKiBDb21wYXRpYmlsaXR5IHdpdGggZWFybGllciAoaW5jb25zaXN0ZW50bHkgbmFtZWQpIHJvdXRpbmUKICAgICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZSxuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfSU5UX0lOU1RBTkNFCiBpbnQKIHJlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLApAQCAtMjY2LDExICszMTksMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LCBzdWJoYW5kbGVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9JTlRfSU5TVEFOQ0UgKi8KIAogLyoKICAqIENvbnRleHQgcmVnaXN0cmF0aW9ucwogICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfaW5zdGFuY2VfY29udGV4dCxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfVUxPTkdfSU5TVEFOQ0VfQ09OVEVYVAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCkBAIC0yODUsMTEgKzM0MSwxNCBAQAogICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSk7CiAgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQogICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVfbG9uZyksIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfVUxPTkdfSU5TVEFOQ0VfQ09OVEVYVCAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2VfY29udGV4dCxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9VTE9OR19JTlNUQU5DRV9DT05URVhUCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKQEAgLTMwMiwxMSArMzYxLDE0IEBACiAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JXUklURSk7CiAgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQogICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVfbG9uZyksIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9VTE9OR19JTlNUQU5DRV9DT05URVhUICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlX2NvbnRleHQsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX0NPVU5URVIzMl9JTlNUQU5DRV9DT05URVhUCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLApAQCAtMzIxLDExICszODMsMTQgQEAKICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpOwogICAgIGlmIChteXJlZyAmJiBjb250ZXh0TmFtZSkKICAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgbXlyZWcsIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLCBBU05fQ09VTlRFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfQ09VTlRFUjMyX0lOU1RBTkNFX0NPTlRFWFQgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlX2NvbnRleHQsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX0xPTkdfSU5TVEFOQ0VfQ09OVEVYVAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLApAQCAtMzQwLDExICs0MDUsMTQgQEAKICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpOwogICAgIGlmIChteXJlZyAmJiBjb250ZXh0TmFtZSkKICAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlMigKICAgICAgICAgbXlyZWcsIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihsb25nKSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX0xPTkdfSU5TVEFOQ0VfQ09OVEVYVCAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfbG9uZ19pbnN0YW5jZV9jb250ZXh0LGluc3RhbmNlKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX0xPTkdfSU5TVEFOQ0VfQ09OVEVYVAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLApAQCAtMzU3LDExICs0MjUsMTQgQEAKICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKTsKICAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCiAgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX0xPTkdfSU5TVEFOQ0VfQ09OVEVYVCAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfaW50X2luc3RhbmNlX2NvbnRleHQsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfSU5UX0lOU1RBTkNFX0NPTlRFWFQKIGludAogbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLApAQCAtMzc1LDExICs0NDYsMTQgQEAKICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKTsKICAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCiAgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIoCiAgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoaW50KSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfSU5UX0lOU1RBTkNFX0NPTlRFWFQgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dCxpbnN0YW5jZSkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfSU5UX0lOU1RBTkNFX0NPTlRFWFQKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCkBAIC0zOTMsMTQgKzQ2NywxNyBAQAogICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSk7CiAgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQogICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGludCksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JFQURfT05MWV9JTlRfSU5TVEFOQ0VfQ09OVEVYVCAqLwogCiAvKgogICogQ29tcGF0aWJpbGl0eSB3aXRoIGVhcmxpZXIgKGluY29uc2lzdGVudGx5IG5hbWVkKSByb3V0aW5lCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX29ubHlfaW50X2luc3RhbmNlX2NvbnRleHQsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0lOVF9JTlNUQU5DRV9DT05URVhUCiBpbnQKIHJlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKQEAgLTQxMyw3ICs0OTAsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXQsIHN1YmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHROYW1lKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFQURfT05MWV9JTlRfSU5TVEFOQ0VfQ09OVEVYVCAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfTlVNX0ZJTEVfSU5TVEFOQ0UKIGludAogbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCkBAIC00MzgsMTEgKzUxOCwxMiBAQAogICAgICAgICByZXR1cm4gTUlCX1JFR0lTVFJBVElPTl9GQUlMRUQ7CiAgICAgfQogCisgICAgbmZpLT5yZWZjbnQgPSAxOwogICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAiZmlsZV9udW1faGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBuZmksCiAgICAgICAgICAgICAgICAgICAgIG1vZGUsIG5ldHNubXBfaW5zdGFuY2VfbnVtX2ZpbGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgY29udGV4dE5hbWUpOwogICAgIGlmIChOVUxMID09IG15cmVnKSB7Ci0gICAgICAgIGZyZWUobmZpKTsgLyogU05NUF9GUkVFIG92ZXJraWxsIG9uIGxvY2FsIHZhciAqLworICAgICAgICBuZXRzbm1wX251bV9maWxlX2luc3RhbmNlX2RlcmVmKG5maSk7CiAgICAgICAgIHJldHVybiBNSUJfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKICAgICB9CiAKQEAgLTQ1Myw3ICs1MzQsMTAgQEAKIAogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKG15cmVnKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX05VTV9GSUxFX0lOU1RBTkNFICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3Rlcl9pbnRfaW5zdGFuY2UsaW5zdGFuY2UpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfSU5UX0lOU1RBTkNFCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGFuIGludCBoZWxwZXIgaGFuZGxlciB0byBhIHNwZWNpZmllZCBPSUQuCiAgKgpAQCAtNDc3LDEyICs1NjEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKAogICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JXUklURSksCiAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGludCksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX0lOVF9JTlNUQU5DRSAqLwogCiAjaWZkZWYgSEFWRV9ETUFMTE9DX0gKIHN0YXRpYyB2b2lkIGZyZWVfd3JhcHBlcih2b2lkICogcCkKQEAgLTQ5MywyOTAgKzU3OCw2IEBACiAjZGVmaW5lIGZyZWVfd3JhcHBlciBmcmVlCiAjZW5kaWYKIAotI2lmbmRlZiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TCi0KLS8qKgotICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKLSAqLwotaW50Ci1uZXRzbm1wX2luc3RhbmNlX3Vsb25nX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKLXsKLQotICAgIHVfbG9uZyAgICAgICAgICppdCA9ICh1X2xvbmcgKikgaGFuZGxlci0+bXl2b2lkOwotICAgIHVfbG9uZyAgICAgICAgICppdF9zYXZlOwotCi0gICAgREVCVUdNU0dUTCgoIm5ldHNubXBfaW5zdGFuY2VfdWxvbmdfaGFuZGxlciIsICJHb3QgcmVxdWVzdDogICVkXG4iLAotICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpKTsKLQotICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewotICAgICAgICAvKgotICAgICAgICAgKiBkYXRhIHJlcXVlc3RzIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfR0VUOgotICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX1VOU0lHTkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBpdCwgc2l6ZW9mKCppdCkpOwotICAgICAgICBicmVhazsKLQotICAgICAgICAvKgotICAgICAgICAgKiBTRVQgcmVxdWVzdHMuICBTaG91bGQgb25seSBnZXQgaGVyZSBpZiByZWdpc3RlcmVkIFJXUklURSAKLSAgICAgICAgICovCi0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKLSAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgIT0gQVNOX1VOU0lHTkVEKQotICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfV1JPTkdUWVBFKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgotICAgICAgICAvKgotICAgICAgICAgKiBzdG9yZSBvbGQgaW5mbyBmb3IgdW5kbyBsYXRlciAKLSAgICAgICAgICovCi0gICAgICAgIGl0X3NhdmUgPSBuZXRzbm1wX21lbWR1cChpdCwgc2l6ZW9mKHVfbG9uZykpOwotICAgICAgICBpZiAoaXRfc2F2ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotICAgICAgICB9Ci0gICAgICAgIG5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhKHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElOU1RBTkNFX0hBTkRMRVJfTkFNRSwgaXRfc2F2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmcmVlX3dyYXBwZXIpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKLSAgICAgICAgLyoKLSAgICAgICAgICogdXBkYXRlIGN1cnJlbnQgCi0gICAgICAgICAqLwotICAgICAgICBERUJVR01TR1RMKCgidGVzdGhhbmRsZXIiLCAidXBkYXRlZCB1X2xvbmcgJWx1IC0+ICVsdVxuIiwgKml0LAotICAgICAgICAgICAgICAgICAgICAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSkpOwotICAgICAgICAqaXQgPSAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX1VORE86Ci0gICAgICAgICppdCA9Ci0gICAgICAgICAgICAqKCh1X2xvbmcgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5TVEFOQ0VfSEFORExFUl9OQU1FKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6Ci0gICAgY2FzZSBNT0RFX1NFVF9GUkVFOgotICAgICAgICAvKgotICAgICAgICAgKiBub3RoaW5nIHRvIGRvIAotICAgICAgICAgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgaWYgKGhhbmRsZXItPm5leHQgJiYgaGFuZGxlci0+bmV4dC0+YWNjZXNzX21ldGhvZCkKLSAgICAgICAgcmV0dXJuIG5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXIoaGFuZGxlciwgcmVnaW5mbywgcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMpOwotCi0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLS8qKgotICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKLSAqLwotaW50Ci1uZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCi17Ci0KLSAgICB1X2xvbmcgICAgICAgICAqaXQgPSAodV9sb25nICopIGhhbmRsZXItPm15dm9pZDsKLQotICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyIiwKLSAgICAgICAgICAgICAgICAiR290IHJlcXVlc3Q6ICAlZFxuIiwgcmVxaW5mby0+bW9kZSkpOwotCi0gICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGRhdGEgcmVxdWVzdHMgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9HRVQ6Ci0gICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgaXQsIHNpemVvZigqaXQpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogU0VUIHJlcXVlc3RzLiAgU2hvdWxkIG9ubHkgZ2V0IGhlcmUgaWYgcmVnaXN0ZXJlZCBSV1JJVEUgCi0gICAgICAgICAqLwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsCi0gICAgICAgICAgICAgICAgICJuZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyOiBpbGxlZ2FsIG1vZGVcbiIpOwotICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9HRU5FUlIpOwotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLSAgICB9Ci0gICAgaWYgKGhhbmRsZXItPm5leHQgJiYgaGFuZGxlci0+bmV4dC0+YWNjZXNzX21ldGhvZCkKLSAgICAgICAgcmV0dXJuIG5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXIoaGFuZGxlciwgcmVnaW5mbywgcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMpOwotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi0vKioKLSAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42Ci0gKi8KLWludAotbmV0c25tcF9pbnN0YW5jZV9sb25nX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKLXsKLQotICAgIGxvbmcgICAgICAgICAgICppdCA9IChsb25nICopIGhhbmRsZXItPm15dm9pZDsKLSAgICBsb25nICAgICAgICAgICAqaXRfc2F2ZTsKLQotICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlciIsICJHb3QgcmVxdWVzdDogICVkXG4iLAotICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpKTsKLQotICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewotICAgICAgICAvKgotICAgICAgICAgKiBkYXRhIHJlcXVlc3RzIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfR0VUOgotICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIGl0LCBzaXplb2YoKml0KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFNFVCByZXF1ZXN0cy4gIFNob3VsZCBvbmx5IGdldCBoZXJlIGlmIHJlZ2lzdGVyZWQgUldSSVRFIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgotICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSAhPSBBU05fSU5URUdFUikKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1dST05HVFlQRSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKLSAgICAgICAgLyoKLSAgICAgICAgICogc3RvcmUgb2xkIGluZm8gZm9yIHVuZG8gbGF0ZXIgCi0gICAgICAgICAqLwotICAgICAgICBpdF9zYXZlID0gbmV0c25tcF9tZW1kdXAoaXQsIHNpemVvZihsb25nKSk7Ci0gICAgICAgIGlmIChpdF9zYXZlID09IE5VTEwpIHsKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5TVEFOQ0VfSEFORExFUl9OQU1FLCBpdF9zYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVfd3JhcHBlcikpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgotICAgICAgICAvKgotICAgICAgICAgKiB1cGRhdGUgY3VycmVudCAKLSAgICAgICAgICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJ0ZXN0aGFuZGxlciIsICJ1cGRhdGVkIHVfbG9uZyAlbHUgLT4gJWx1XG4iLCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpKSk7Ci0gICAgICAgICppdCA9ICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKLSAgICAgICAgKml0ID0KLSAgICAgICAgICAgICooKHVfbG9uZyAqKSBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlNUQU5DRV9IQU5ETEVSX05BTUUpKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICBjYXNlIE1PREVfU0VUX0ZSRUU6Ci0gICAgICAgIC8qCi0gICAgICAgICAqIG5vdGhpbmcgdG8gZG8gCi0gICAgICAgICAqLwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgaWYgKGhhbmRsZXItPm5leHQgJiYgaGFuZGxlci0+bmV4dC0+YWNjZXNzX21ldGhvZCkKLSAgICAgICAgcmV0dXJuIG5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXIoaGFuZGxlciwgcmVnaW5mbywgcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMpOwotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi0vKioKLSAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42Ci0gKi8KLWludAotbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQotewotCi0gICAgaW50ICppdCA9IChpbnQgKikgaGFuZGxlci0+bXl2b2lkOwotICAgIGludCAqaXRfc2F2ZTsKLSAgICBsb25nIHRtcF9pdDsKLSAgICAKLSAgICBERUJVR01TR1RMKCgibmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlciIsICJHb3QgcmVxdWVzdDogICVkXG4iLAotICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpKTsKLQotICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewotICAgICAgICAvKgotICAgICAgICAgKiBkYXRhIHJlcXVlc3RzIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfR0VUOgotCS8qCi0JICogVXNlIGEgbG9uZyBoZXJlLCBvdGhlcndpc2Ugb24gNjQgYml0IHVzZSBvZiBhbiBpbnQgd291bGQgZmFpbAotCSAqLwotCXRtcF9pdCA9ICppdDsKLSAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmdG1wX2l0LCBzaXplb2YodG1wX2l0KSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFNFVCByZXF1ZXN0cy4gIFNob3VsZCBvbmx5IGdldCBoZXJlIGlmIHJlZ2lzdGVyZWQgUldSSVRFIAotICAgICAgICAgKi8KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgotICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSAhPSBBU05fSU5URUdFUikKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1dST05HVFlQRSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKLSAgICAgICAgLyoKLSAgICAgICAgICogc3RvcmUgb2xkIGluZm8gZm9yIHVuZG8gbGF0ZXIgCi0gICAgICAgICAqLwotICAgICAgICBpdF9zYXZlID0gbmV0c25tcF9tZW1kdXAoaXQsIHNpemVvZihpbnQpKTsKLSAgICAgICAgaWYgKGl0X3NhdmUgPT0gTlVMTCkgewotICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7Ci0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLSAgICAgICAgfQotICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJTlNUQU5DRV9IQU5ETEVSX05BTUUsIGl0X3NhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZnJlZV93cmFwcGVyKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHVwZGF0ZSBjdXJyZW50IAotICAgICAgICAgKi8KLSAgICAgICAgREVCVUdNU0dUTCgoInRlc3RoYW5kbGVyIiwgInVwZGF0ZWQgaW50ICVkIC0+ICVsZFxuIiwgKml0LAotICAgICAgICAgICAgICAgICAgICAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSkpOwotICAgICAgICAqaXQgPSAoaW50KSAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX1VORE86Ci0gICAgICAgICppdCA9Ci0gICAgICAgICAgICAqKCh1X2ludCAqKSBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOU1RBTkNFX0hBTkRMRVJfTkFNRSkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgotICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKLSAgICAgICAgLyoKLSAgICAgICAgICogbm90aGluZyB0byBkbyAKLSAgICAgICAgICovCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoaGFuZGxlci0+bmV4dCAmJiBoYW5kbGVyLT5uZXh0LT5hY2Nlc3NfbWV0aG9kKQotICAgICAgICByZXR1cm4gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7Ci0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLSNlbmRpZiAvKiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TICovCi0KIGludAogbmV0c25tcF9pbnN0YW5jZV9udW1fZmlsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTc4NCw3ICs1ODUsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCiB7CiAgICAgbmV0c25tcF9udW1fZmlsZV9pbnN0YW5jZSAqbmZpOwotICAgIHVfbG9uZyBpdCwgKml0X3NhdmU7CisgICAgdV9sb25nIGl0OworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICB1X2xvbmcgKml0X3NhdmU7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgaW50IHJjOwogCiAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBoYW5kbGVyKTsKQEAgLTgyNiw2ICs2MzAsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBTRVQgcmVxdWVzdHMuICBTaG91bGQgb25seSBnZXQgaGVyZSBpZiByZWdpc3RlcmVkIFJXUklURSAKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgPT0gbmZpLT5maWxlcCk7CiAgICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IG5maS0+dHlwZSkKQEAgLTg5OCw2ICs3MDMsMTIgQEAKICAgICAgICAgICAgIG5maS0+ZmlsZXAgPSBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJuZXRzbm1wX2luc3RhbmNlX251bV9maWxlX2hhbmRsZXI6IGlsbGVnYWwgbW9kZVxuIik7CisgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogICAgIH0KIAogICAgIGlmIChoYW5kbGVyLT5uZXh0ICYmIGhhbmRsZXItPm5leHQtPmFjY2Vzc19tZXRob2QpCkBAIC05MDYsOTMgKzcxNyw2IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKLSNpZm5kZWYgTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUwotCi0vKioKLSAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42Ci0gKi8KLWludAotbmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKLXsKLQotICAgIHVuc2lnbmVkIGludCAqaXQgPSAodW5zaWduZWQgaW50ICopIGhhbmRsZXItPm15dm9pZDsKLSAgICB1bnNpZ25lZCBpbnQgKml0X3NhdmU7Ci0gICAgdW5zaWduZWQgbG9uZyB0bXBfaXQ7Ci0gICAgCi0gICAgREVCVUdNU0dUTCgoIm5ldHNubXBfaW5zdGFuY2VfdWludF9oYW5kbGVyIiwgIkdvdCByZXF1ZXN0OiAgJWRcbiIsCi0gICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSkpOwotCi0gICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGRhdGEgcmVxdWVzdHMgCi0gICAgICAgICAqLwotICAgIGNhc2UgTU9ERV9HRVQ6Ci0JLyoKLQkgKiBVc2UgYSBsb25nIGhlcmUsIG90aGVyd2lzZSBvbiA2NCBiaXQgdXNlIG9mIGFuIGludCB3b3VsZCBmYWlsCi0JICovCi0JdG1wX2l0ID0gKml0OwotICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX1VOU0lHTkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmdG1wX2l0LCBzaXplb2YodW5zaWduZWQgbG9uZykpOwotICAgICAgICBicmVhazsKLQotICAgICAgICAvKgotICAgICAgICAgKiBTRVQgcmVxdWVzdHMuICBTaG91bGQgb25seSBnZXQgaGVyZSBpZiByZWdpc3RlcmVkIFJXUklURSAKLSAgICAgICAgICovCi0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKLSAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgIT0gQVNOX1VOU0lHTkVEKQotICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfV1JPTkdUWVBFKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgotICAgICAgICAvKgotICAgICAgICAgKiBzdG9yZSBvbGQgaW5mbyBmb3IgdW5kbyBsYXRlciAKLSAgICAgICAgICovCi0gICAgICAgIGl0X3NhdmUgPSBuZXRzbm1wX21lbWR1cChpdCwgc2l6ZW9mKHVfaW50KSk7Ci0gICAgICAgIGlmIChpdF9zYXZlID09IE5VTEwpIHsKLSAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSU5TVEFOQ0VfSEFORExFUl9OQU1FLCBpdF9zYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWVfd3JhcHBlcikpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgotICAgICAgICAvKgotICAgICAgICAgKiB1cGRhdGUgY3VycmVudCAKLSAgICAgICAgICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJ0ZXN0aGFuZGxlciIsICJ1cGRhdGVkIHVpbnQgJWQgLT4gJWxkXG4iLCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpKSk7Ci0gICAgICAgICppdCA9ICh1bnNpZ25lZCBpbnQpICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKLSAgICAgICAgKml0ID0KLSAgICAgICAgICAgICooKHVfaW50ICopIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5TVEFOQ0VfSEFORExFUl9OQU1FKSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6Ci0gICAgY2FzZSBNT0RFX1NFVF9GUkVFOgotICAgICAgICAvKgotICAgICAgICAgKiBub3RoaW5nIHRvIGRvIAotICAgICAgICAgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChoYW5kbGVyLT5uZXh0ICYmIGhhbmRsZXItPm5leHQtPmFjY2Vzc19tZXRob2QpCi0gICAgICAgIHJldHVybiBuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyKGhhbmRsZXIsIHJlZ2luZm8sIHJlcWluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzKTsKLSAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KLQotI2VuZGlmIC8qIE5FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlMgKi8KLQogaW50CiBuZXRzbm1wX2luc3RhbmNlX2hlbHBlcl9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCkBAIC0xMDI1LDYgKzc0OSw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtMTA0MCw2ICs3NjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMpOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgICAgIGlmIChjbXAgPCAwIHx8IChjbXAgPT0gMCAmJiByZXF1ZXN0cy0+aW5jbHVzaXZlKSkgewpAQCAtMTA2NSw2ICs3OTEsMTEgQEAKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJuZXRzbm1wX2luc3RhbmNlX2hlbHBlcl9oYW5kbGVyOiBpbGxlZ2FsIG1vZGVcbiIpOworICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9HRU5FUlIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICB9CiAgICAgLyoKICAgICAgKiBnb3QgaGVyZSBvbmx5IGlmIGlsbGVnYWwgbW9kZSBmb3VuZCAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5jIGIvYWdlbnQvaGVscGVycy9tb2RlX2VuZF9jYWxsLmMKaW5kZXggZDdkZDMwMi4uMGJmY2M2OSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9tb2RlX2VuZF9jYWxsLmMKKysrIGIvYWdlbnQvaGVscGVycy9tb2RlX2VuZF9jYWxsLmMKQEAgLTksMTIgKzksMTcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZShtb2RlX2VuZF9jYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1vZGVfZW5kX2NhbGwsIG1pYl9oZWxwZXJzKQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTU9ERV9FTkRfQ0FMTAogLyoqIEBkZWZncm91cCBtb2RlX2VuZF9jYWxsIG1vZGVfZW5kX2NhbGwKICAqICBBdCB0aGUgZW5kIG9mIGEgc2VyaWVzIG9mIHJlcXVlc3RzLCBjYWxsIGFub3RoZXIgaGFuZGxlciBob29rLgogICogIEhhbmRsZXJzIHRoYXQgd2FudCB0byBsb29wIHRocm91Z2ggYSBzZXJpZXMgb2YgcmVxdWVzdHMgYW5kIHRoZW4KQEAgLTExMyw1ICsxMTgsMTAgQEAKICAgICAKICAgICByZXR1cm4gcmV0MjsKIH0KKyNlbHNlCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKG1vZGVfZW5kX2NhbGwpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTU9ERV9FTkRfQ0FMTCAqLworCisKIC8qKiAgQH0gKi8KIApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jIGIvYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jCmluZGV4IGU1NDNmNTcuLjJhN2E2NjQgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvbXVsdGlwbGV4ZXIuYworKysgYi9hZ2VudC9oZWxwZXJzL211bHRpcGxleGVyLmMKQEAgLTg0LDYgKzg0LDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xMDAsNiArMTAxLDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogWFhYOiBwcm9jZXNzIFNFVHMgc3BlY2lhbGx5LCBhbmQgcG9zc2libHkgb3RoZXJzIAogICAgICAgICAgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5zdXBwb3J0ZWQgbW9kZSBmb3IgbXVsdGlwbGV4ZXI6ICVkXG4iLAogICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvb2xkX2FwaS5jIGIvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMKaW5kZXggZmRjOGJkNi4uZDJiOTlkOSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMKKysrIGIvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMKQEAgLTEzLDYgKzEzLDggQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgogCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKICNkZWZpbmUgTUlCX0NMSUVOVFNfQVJFX0VWSUwgMQogCiAjaWZkZWYgSEFWRV9ETUFMTE9DX0gKQEAgLTQ5LDYgKzUxLDE5IEBACiAgICAgcmV0dXJuIG5ldHNubXBfY3JlYXRlX2hhbmRsZXIoIm9sZF9hcGkiLCBuZXRzbm1wX29sZF9hcGlfaGVscGVyKTsKIH0KIAorc3RydWN0IHZhcmlhYmxlICoKK25ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlKGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqdmFyKQoreworICAgIHN0cnVjdCB2YXJpYWJsZSAqdmFyMiA9IE5VTEw7CisgICAgCisgICAgaWYgKHZhcikgeworICAgICAgICBjb25zdCBpbnQgdmFyc2l6ZSA9IG9mZnNldG9mKHN0cnVjdCB2YXJpYWJsZSwgbmFtZSkgKyB2YXItPm5hbWVsZW4gKiBzaXplb2YodmFyLT5uYW1lWzBdKTsKKyAgICAgICAgdmFyMiA9IG1hbGxvYyh2YXJzaXplKTsKKyAgICAgICAgaWYgKHZhcjIpCisgICAgICAgICAgICBtZW1jcHkodmFyMiwgdmFyLCB2YXJzaXplKTsKKyAgICB9CisgICAgcmV0dXJuIHZhcjI7Cit9CiAKIC8qKiBSZWdpc3RlcnMgYW4gb2xkIEFQSSBzZXQgaW50byB0aGUgbWliIHRyZWUuICBGdW5jdGlvbmFsbHkgdGhpcwogICogbWltaWNzIHRoZSBvbGQgcmVnaXN0ZXJfbWliX2NvbnRleHQoKSBmdW5jdGlvbiAoYW5kIGluIGZhY3QgdGhlIG5ldwpAQCAtNTYsMTAgKzcxLDEwIEBACiAgKi8KIGludAogbmV0c25tcF9yZWdpc3Rlcl9vbGRfYXBpKGNvbnN0IGNoYXIgKm1vZHVsZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcnNpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bXZhcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbWlibG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG1pYmxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbWlibG9jbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmFuZ2Vfc3ViaWQsCkBAIC04MCw5ICs5NSw4IEBACiAgICAgICAgIGlmIChyZWdpbmZvID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogCi0gICAgICAgIHZwID0gbmV0c25tcF9tZW1kdXAoKGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY29uc3QgY2hhciAqKSB2YXIgKyB2YXJzaXplICogaSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyc2l6ZSk7CisJdnAgPSBuZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZSgoY29uc3Qgc3RydWN0IHZhcmlhYmxlICopCisJCQkJCSgoY29uc3QgY2hhciAqKSB2YXIgKyB2YXJzaXplICogaSkpOwogCiAgICAgICAgIHJlZ2luZm8tPmhhbmRsZXIgPSBnZXRfb2xkX2FwaV9oYW5kbGVyKCk7CiAgICAgICAgIHJlZ2luZm8tPmhhbmRsZXJOYW1lID0gc3RyZHVwKG1vZHVsZU5hbWUpOwpAQCAtMTAwLDYgKzExNCw5IEBACiAgICAgICAgIG1lbWNweShyZWdpbmZvLT5yb290b2lkICsgbWlibG9jbGVuLCB2cC0+bmFtZSwgdnAtPm5hbWVsZW4KICAgICAgICAgICAgICAgICogc2l6ZW9mKG9pZCkpOwogICAgICAgICByZWdpbmZvLT5oYW5kbGVyLT5teXZvaWQgPSAodm9pZCAqKSB2cDsKKyAgICAgICAgcmVnaW5mby0+aGFuZGxlci0+ZGF0YV9jbG9uZQorCSAgICA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZTsKKyAgICAgICAgcmVnaW5mby0+aGFuZGxlci0+ZGF0YV9mcmVlID0gZnJlZTsKIAogICAgICAgICByZWdpbmZvLT5wcmlvcml0eSA9IHByaW9yaXR5OwogICAgICAgICByZWdpbmZvLT5yYW5nZV9zdWJpZCA9IHJhbmdlX3N1YmlkOwpAQCAtMTA3LDE0ICsxMjQsMTUgQEAKICAgICAgICAgcmVnaW5mby0+cmFuZ2VfdWJvdW5kID0gcmFuZ2VfdWJvdW5kOwogICAgICAgICByZWdpbmZvLT50aW1lb3V0ID0gdGltZW91dDsKICAgICAgICAgcmVnaW5mby0+Y29udGV4dE5hbWUgPSAoY29udGV4dCkgPyBzdHJkdXAoY29udGV4dCkgOiBOVUxMOwotICAgICAgICByZWdpbmZvLT5tb2RlcyA9IEhBTkRMRVJfQ0FOX1JXUklURTsKKyAgICAgICAgcmVnaW5mby0+bW9kZXMgPSB2cC0+YWNsID09IE5FVFNOTVBfT0xEQVBJX1JPTkxZID8gSEFORExFUl9DQU5fUk9OTFkgOgorICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURTsKIAogICAgICAgICAvKgogICAgICAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgaW4gdGhlIG1pYiB0cmVlIAogICAgICAgICAgKi8KICAgICAgICAgaWYgKG5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcihyZWdpbmZvKSAhPSBNSUJfUkVHSVNURVJFRF9PSykgewogICAgICAgICAgICAgLyoqIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWdpbmZvKTsgYWxyZWFkeSBmcmVlZCAqLwotICAgICAgICAgICAgU05NUF9GUkVFKHZwKTsKKyAgICAgICAgICAgIC8qIFNOTVBfRlJFRSh2cCk7IGFscmVhZHkgZnJlZWQgKi8KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwpAQCAtMTIzLDcgKzE0MSw3IEBACiAvKiogcmVnaXN0ZXJzIGEgcm93IHdpdGhpbiBhIG1pYiB0YWJsZSAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX21pYl90YWJsZV9yb3coY29uc3QgY2hhciAqbW9kdWxlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdmFyc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBtaWJsb2MsCkBAIC0xMzcsOCArMTU1LDggQEAKICAgICBvaWQgICAgICAgICAgICAgdWJvdW5kID0gMDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBudW12YXJzOyBpKyspIHsKLSAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2ciA9Ci0gICAgICAgICAgICAoc3RydWN0IHZhcmlhYmxlICopICgoY2hhciAqKSB2YXIgKyAoaSAqIHZhcnNpemUpKTsKKyAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2ciA9CisgICAgICAgICAgICAoY29uc3Qgc3RydWN0IHZhcmlhYmxlICopICgoY29uc3QgY2hhciAqKSB2YXIgKyAoaSAqIHZhcnNpemUpKTsKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcjsKICAgICAgICAgaWYgKCB2YXJfc3ViaWQgPiAoaW50KW1pYmxvY2xlbiApIHsKICAgICAgICAgICAgIGJyZWFrOyAgICAvKiBkb2Vzbid0IG1ha2Ugc2Vuc2UgKi8KQEAgLTE3OSwxNCArMTk3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICByLT5yb290b2lkX2xlbikpOwogICAgICAgICBERUJVR01TRygoIm5ldHNubXBfcmVnaXN0ZXJfbWliX3RhYmxlX3JvdyIsICIoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgKHZhcl9zdWJpZCAtIHZyLT5uYW1lbGVuKSkpOwotICAgICAgICByLT5oYW5kbGVyLT5teXZvaWQgPSAodm9pZCAqKSBtYWxsb2ModmFyc2l6ZSk7CisgICAgICAgIHItPmhhbmRsZXItPm15dm9pZCA9IG5ldHNubXBfZHVwbGljYXRlX3ZhcmlhYmxlKHZyKTsKKyAgICAgICAgci0+aGFuZGxlci0+ZGF0YV9jbG9uZSA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZTsKKyAgICAgICAgci0+aGFuZGxlci0+ZGF0YV9mcmVlID0gZnJlZTsKIAogICAgICAgICBpZiAoci0+aGFuZGxlci0+bXl2b2lkID09IE5VTEwpIHsKICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyKTsKICAgICAgICAgICAgIHJjID0gTUlCX1JFR0lTVFJBVElPTl9GQUlMRUQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBtZW1jcHkoKGNoYXIgKikgci0+aGFuZGxlci0+bXl2b2lkLCB2ciwgdmFyc2l6ZSk7CiAKICAgICAgICAgci0+Y29udGV4dE5hbWUgPSAoY29udGV4dCkgPyBzdHJkdXAoY29udGV4dCkgOiBOVUxMOwogCkBAIC0yNTYsMTMgKzI3NSwxMyBAQAogICAgIGludCAgICAgICAgICAgICBzdGF0dXM7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZwOwotICAgIFdyaXRlTWV0aG9kICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOwotICAgIHNpemVfdCAgICAgICAgICBsZW47Ci0gICAgdV9jaGFyICAgICAgICAgKmFjY2VzcyA9IE5VTEw7CiAgICAgbmV0c25tcF9vbGRfYXBpX2NhY2hlICpjYWNoZXB0cjsKICAgICBuZXRzbm1wX2FnZW50X3Nlc3Npb24gKm9sZGFzcCA9IE5VTEw7Ci0gICAgb2lkICAgICAgICAgICAgIHRtcF9uYW1lW01BWF9PSURfTEVOXTsKKyAgICB1X2NoYXIgICAgICAgICAqYWNjZXNzID0gTlVMTDsKKyAgICBXcml0ZU1ldGhvZCAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKKyAgICBzaXplX3QgICAgICAgICAgbGVuOwogICAgIHNpemVfdCAgICAgICAgICB0bXBfbGVuOworICAgIG9pZCAgICAgICAgICAgICB0bXBfbmFtZVtNQVhfT0lEX0xFTl07CiAKICAgICB2cCA9IChzdHJ1Y3QgdmFyaWFibGUgKikgaGFuZGxlci0+bXl2b2lkOwogCkBAIC0yOTMsNyArMzEyLDkgQEAKICAgICAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgICAgIGNhc2UgTU9ERV9HRVRORVhUOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogQWN0dWFsbHkgY2FsbCB0aGUgb2xkIG1pYi1tb2R1bGUgZnVuY3Rpb24gCiAgICAgICAgICAgICAgKi8KQEAgLTMyNCw3ICszNDUsOSBAQAogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogcmVzdWx0IHJldHVybmVkIAogICAgICAgICAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgICAgICBpZiAocmVxaW5mby0+bW9kZSAhPSBNT0RFX1NFVF9SRVNFUlZFMSkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3ZwLT50eXBlLCBhY2Nlc3MsIGxlbik7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzQ5LDcgKzM3Miw5IEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogQUFBOiBmYWxsIHRocm91Z2ggZm9yIGV2ZXJ5dGhpbmcgdGhhdCBpcyBhIHNldCAoc2VlIEJCQikgCiAgICAgICAgICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBpZiAocmVxaW5mby0+bW9kZSAhPSBNT0RFX1NFVF9SRVNFUlZFMSkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhY2hlcHRyID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX29sZF9hcGlfY2FjaGUpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYyBiL2FnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmMKaW5kZXggYjg1Y2ZiNS4uMGIwNmQ0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYworKysgYi9hZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jCkBAIC00NCw2ICs0NCw3IEBACiAKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC01Miw2ICs1Myw3IEBACiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgU05NUF9FUlJfTk9UV1JJVEFCTEUpOwogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBjYXNlIE1PREVfR0VUOgogICAgIGNhc2UgTU9ERV9HRVRORVhUOgpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYyBiL2FnZW50L2hlbHBlcnMvcm93X21lcmdlLmMKaW5kZXggOTNkMzUzMi4uNGE4ZTQ3NiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYworKysgYi9hZ2VudC9oZWxwZXJzL3Jvd19tZXJnZS5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0xMSw2ICsxMiwxMiBAQAogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yocm93X21lcmdlLCByb3dfbWVyZ2VfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJvd19tZXJnZV9hbGwsIG1pYl9oZWxwZXJzKQorCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ST1dfTUVSR0UKIC8qKiBAZGVmZ3JvdXAgcm93X21lcmdlIHJvd19tZXJnZQogICogIENhbGxzIHN1YiBoYW5kbGVycyB3aXRoIHJlcXVlc3QgZm9yIG9uZSByb3cgYXQgYSB0aW1lLgogICogIEBpbmdyb3VwIHV0aWxpdGllcwpAQCAtMzgsNiArNDUsOCBAQAogCiAvKiogZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKCkgYnV0IGFsc28KICAqIGluamVjdHMgYSByb3dfbWVyZ2UgaGFuZGxlciBhdCB0aGUgc2FtZSB0aW1lIGZvciB5b3UuICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVnaXN0ZXJfcm93X21lcmdlLCByb3dfbWVyZ2VfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1JPV19NRVJHRQogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3Jvd19tZXJnZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKQogewpAQCAtNDUsNiArNTQsNyBAQAogCQkgICAgbmV0c25tcF9nZXRfcm93X21lcmdlX2hhbmRsZXIocmVnaW5mby0+cm9vdG9pZF9sZW4rMSkpOwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9ST1dfTUVSR0UgKi8KIAogc3RhdGljIHZvaWQKIF9ybV9zdGF0dXNfZnJlZSh2b2lkICptZW0pCkBAIC0zNjIsNSArMzcyLDEwIEBACiAgICAgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyX2J5X25hbWUoInJvd19tZXJnZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfcm93X21lcmdlX2hhbmRsZXIoLTEpKTsKIH0KKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUk9XX01FUkdFICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHJvd19tZXJnZSk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ST1dfTUVSR0UgKi8KKworCiAvKiogIEB9ICovCiAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvc2NhbGFyLmMgYi9hZ2VudC9oZWxwZXJzL3NjYWxhci5jCmluZGV4IGI3MzRjMDQuLjdhNGM5ZTAgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvc2NhbGFyLmMKKysrIGIvYWdlbnQvaGVscGVycy9zY2FsYXIuYwpAQCAtMTYyLDYgKzE2Miw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtMTgwLDYgKzE4MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRbcmVnaW5mby0+cm9vdG9pZF9sZW4rK10gPSAwOwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYyBiL2FnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmMKaW5kZXggMDljZWUxYS4uNmI3ZjA5OCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYworKysgYi9hZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jCkBAIC0xNSw2ICsxNSwxNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAKK3N0YXRpYyBuZXRzbm1wX3NjYWxhcl9ncm91cCoKK2Nsb25lX3NjYWxhcl9ncm91cChuZXRzbm1wX3NjYWxhcl9ncm91cCogc3JjKQoreworICBuZXRzbm1wX3NjYWxhcl9ncm91cCAqdCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9zY2FsYXJfZ3JvdXApOworICBpZih0ICE9IE5VTEwpIHsKKyAgICB0LT5sYm91bmQgPSBzcmMtPmxib3VuZDsKKyAgICB0LT51Ym91bmQgPSBzcmMtPnVib3VuZDsKKyAgfQorICByZXR1cm4gdDsKK30KKwogLyoqIEBkZWZncm91cCBzY2FsYXJfZ3JvdXBfZ3JvdXAgc2NhbGFyX2dyb3VwCiAgKiAgUHJvY2VzcyBncm91cHMgb2Ygc2NhbGFycy4KICAqICBAaW5ncm91cCBsZWFmCkBAIC0zOCw2ICs0OSw4IEBACiAJICAgIHNncm91cC0+bGJvdW5kID0gZmlyc3Q7CiAJICAgIHNncm91cC0+dWJvdW5kID0gbGFzdDsKICAgICAgICAgICAgIHJldC0+bXl2b2lkID0gKHZvaWQgKilzZ3JvdXA7CisgICAgICAgICAgICByZXQtPmRhdGFfZnJlZSA9IGZyZWU7CisgICAgICAgICAgICByZXQtPmRhdGFfY2xvbmUgPSAodm9pZCAqKCopKHZvaWQgKikpY2xvbmVfc2NhbGFyX2dyb3VwOwogCX0KICAgICB9CiAgICAgcmV0dXJuIHJldDsKQEAgLTk2LDEyICsxMDksMTQgQEAKICAgICAgICAgcmV0ID0gU05NUF9OT1NVQ0hPQkpFQ1Q7CiAgICAgICAgIC8qIEZhbGx0aHJvdWdoICovCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgogICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgogICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGlmIChjbXAgIT0gMCB8fAogICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGggPD0gcmVnaW5mby0+cm9vdG9pZF9sZW4pIHsKIAkgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmMgYi9hZ2VudC9oZWxwZXJzL3NubXBfZ2V0X3N0YXRpc3RpYy5jCmluZGV4IGI5ZGFjNzYuLmVmYWMyYWMgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvc25tcF9nZXRfc3RhdGlzdGljLmMKKysrIGIvYWdlbnQvaGVscGVycy9zbm1wX2dldF9zdGF0aXN0aWMuYwpAQCAtMSw5ICsxLDE5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoaGVscGVyX3N0YXRpc3RpY3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGVscGVyX3N0YXRpc3RpY3MsIG1pYl9oZWxwZXJzKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSEVMUEVSX1NUQVRJU1RJQ1MKKy8qIGlmIHdlJ3JlIG5vdCBuZWVkZWQsIHRoZW4gbmVpdGhlciBpcyB0aGlzICovCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdGF0aXN0aWNzKQorI2VuZGlmCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IRUxQRVJfU1RBVElTVElDUwogc3RhdGljIGludAogbmV0c25tcF9nZXRfc3RhdGlzdGljX2hlbHBlcl9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTQ2LDMgKzU2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X3N0YXRpc3RpY19oYW5kbGVyKGJlZ2luIC0gc3RhcnQpKTsKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mbywgc3RhcnQsIHN0YXJ0ICsgKGVuZCAtIGJlZ2luKSk7CiB9CisjZWxzZSAvKiAhTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IRUxQRVJfR0VUX1NUQVRJU1RJQ1MgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoaGVscGVyX3N0YXRpc3RpY3MpOworI2VuZGlmIC8qICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hFTFBFUl9HRVRfU1RBVElTVElDUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jIGIvYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jCmluZGV4IGM5OTgzNjMuLjVkYTE3OTYgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYworKysgYi9hZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMKQEAgLTEsMjQgKzEsMjUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHN0YXNoX2NhY2hlKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN0YXNoX2NhY2hlLCBtaWJfaGVscGVycykKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9TVEFTSF9DQUNIRQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2l0ZXJhdGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfZ2V0X2RhdGEpCisjZW5kaWYKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfdG9fbmV4dC5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KKwogZXh0ZXJuIE5ldHNubXBDYWNoZUxvYWQgX25ldHNubXBfc3Rhc2hfY2FjaGVfbG9hZDsKIGV4dGVybiBOZXRzbm1wQ2FjaGVGcmVlIF9uZXRzbm1wX3N0YXNoX2NhY2hlX2ZyZWU7CiAgCi0jaWZkZWYgSEFWRV9ETUFMTE9DX0gKLXN0YXRpYyB2b2lkIGZyZWVfd3JhcHBlcih2b2lkICogcCkKLXsKLSAgICBmcmVlKHApOwotfQotI2Vsc2UKLSNkZWZpbmUgZnJlZV93cmFwcGVyIGZyZWUKLSNlbmRpZgotCiAvKiogQGRlZmdyb3VwIHN0YXNoX2NhY2hlIHN0YXNoX2NhY2hlCiAgKiAgQXV0b21hdGljYWxseSBjYWNoZXMgZGF0YSBmb3IgY2VydGFpbiBoYW5kbGVycy4KICAqICBUaGlzIGhhbmRsZXIgY2FjaGVzIGRhdGEgaW4gYW4gb3B0aW1pemVkIHdheSB3aGljaCBtYXkgYWxsZXZpYXRlCkBAIC03MSw3ICs3Miw3IEBACiAgICAgfQogCiAgICAgaGFuZGxlci0+bXl2b2lkID0gY2luZm87Ci0gICAgaGFuZGxlci0+ZGF0YV9mcmVlID0gJmZyZWVfd3JhcHBlcjsKKyAgICBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZShoYW5kbGVyKTsKIAogICAgIHJldHVybiBoYW5kbGVyOwogfQpAQCAtMjQ2LDMgKzI0Nyw2IEBACiB9CiAvKiogIEB9ICovCiAKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoc3Rhc2hfY2FjaGUpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5jIGIvYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMKaW5kZXggZjY3OWUwNC4uZDdiYWZmZCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMKKysrIGIvYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMKQEAgLTEsOCArMSwxOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHN0YXNoX3RvX25leHQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3Rhc2hfdG9fbmV4dCwgbWliX2hlbHBlcnMpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9TVEFTSF9UT19ORVhUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2gpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfYWRkX2RhdGEpCisjZW5kaWYKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX1RPX05FWFQKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0Lmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oPgpAQCAtMTE0LDMgKzEyNCw2IEBACiB9CiAvKiogIEB9ICovCiAKKyNlbHNlICAvKiAhIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfVE9fTkVYVCAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChzdGFzaF90b19uZXh0KTsKKyNlbmRpZiAvKiAhIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfVE9fTkVYVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZS5jIGIvYWdlbnQvaGVscGVycy90YWJsZS5jCmluZGV4IDllYjAxMzIuLjg4MmU4NGMgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGUuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlLmMKQEAgLTIxLDExICsyMSwxNiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2gpCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKQEAgLTM0LDYgKzM5LDEzIEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9hbGwsIG1pYl9oZWxwZXJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfYnVpbGRfcmVzdWx0LCB0YWJsZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZ2V0X29yX2NyZWF0ZV9yb3dfc3Rhc2gsIHRhYmxlX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWdpc3RyYXRpb25fb3duc190YWJsZV9pbmZvLCB0YWJsZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfc3BhcnNlLCB0YWJsZV9hbGwpCisKIHN0YXRpYyB2b2lkICAgICB0YWJsZV9oZWxwZXJfY2xlYW51cChuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhdHVzKTsKQEAgLTEwNSw2ICsxMTcsMzEgQEAKICAgICByZXR1cm4gcmV0OwogfQogCisvKiogQ29uZmlndXJlcyBhIGhhbmRsZXIgc3VjaCB0aGF0IHRhYmxlIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBpcyBmcmVlZCBieQorICogIG5ldHNubXBfaGFuZGxlcl9mcmVlKCkuIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiBoYW5kbGVyLT5teXZvaWQgcG9pbnRzIHRvCisgKiAgYW4gb2JqZWN0IG9mIHR5cGUgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mby4KKyAqLwordm9pZCBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIpCit7CisgICAgbmV0c25tcF9hc3NlcnQoaGFuZGxlcik7CisgICAgbmV0c25tcF9hc3NlcnQoaGFuZGxlci0+bXl2b2lkKTsKKyAgICBoYW5kbGVyLT5kYXRhX2Nsb25lCisJPSAodm9pZCAqKCopKHZvaWQgKikpIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fY2xvbmU7CisgICAgaGFuZGxlci0+ZGF0YV9mcmVlCisJPSAodm9pZCAoKikodm9pZCAqKSkgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlOworfQorCisvKiogQ29uZmlndXJlcyBhIGhhbmRsZXIgc3VjaCB0aGF0IHRhYmxlIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiBpcyBmcmVlZCBieQorICogIG5ldHNubXBfaGFuZGxlcl9mcmVlKCkuIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiByZWctPmhhbmRsZXItPm15dm9pZAorICogIHBvaW50cyB0byBhbiBvYmplY3Qgb2YgdHlwZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvLgorICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNUUkFUSU9OX09XTlNfVEFCTEVfSU5GTwordm9pZCBuZXRzbm1wX3JlZ2lzdHJhdGlvbl9vd25zX3RhYmxlX2luZm8obmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnKQoreworICAgIGlmIChyZWcpCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8ocmVnLT5oYW5kbGVyKTsKK30KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVFJBVElPTl9PV05TX1RBQkxFX0lORk8gKi8KIAogLyoqIGNyZWF0ZXMgYSB0YWJsZSBoYW5kbGVyIGdpdmVuIHRoZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCwKICAqICBpbnNlcnRzIGl0IGludG8gdGhlIHJlcXVlc3QgY2hhaW4gYW5kIHRoZW4gY2FsbHMKQEAgLTEyNiw3ICsxNjMsNiBAQAogewogICAgIC8qIExvY2F0ZSAidGhpcyIgcmVnaW5mbyAqLwogICAgIC8qIFNOTVBfRlJFRShyZWdpbmZvLT5teXZvaWQpOyAqLwotICAgIC8qIHJlZ2luZm8tPm15dm9pZCA9IE5VTEw7ICovCiAgICAgcmV0dXJuIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOwogfQogCkBAIC0yMTIsMTUgKzI0OCwyMCBAQAogICAgICAqIGluIHRoZSBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mby4gCiAgICAgICovCiAgICAgaWYgKG5ldHNubXBfYWdlbnRfZ2V0X2xpc3RfZGF0YShyZXFpbmZvLCBoYW5kbGVyLT5uZXh0LT5oYW5kbGVyX25hbWUpKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBpZiAoTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkpIHsKICAgICAgICAgICAgIHJldHVybiBuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyKGhhbmRsZXIsIHJlZ2luZm8sIHJlcWluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7CiAgICAgICAgIH0gZWxzZSB7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAvKiogWFhYLXJrczogbWVtb3J5IGxlYWsuIGFkZCBjbGVhbnVwIGhhbmRsZXI/ICovCiAgICAgICAgICAgICBuZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXRzKHJlcWluZm8pOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAoIE1PREVfSVNfU0VUKHJlcWluZm8tPm1vZGUpICYmCiAgICAgICAgICAocmVxaW5mby0+bW9kZSAhPSBNT0RFX1NFVF9SRVNFUlZFMSkpIHsKICAgICAgICAgLyoKQEAgLTIzNiw2ICsyNzcsNyBAQAogICAgICAgICAgICAgbmVlZF9wcm9jZXNzaW5nID0gMTsKICAgICB9CiAgICAgZWxzZSB7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIC8qCiAgICAgICAgICAqIGZvciBHRVRTLCBvbmx5IGNvbnRpbnVlIGlmIHdlIGhhdmUgYXQgbGVhc3Qgb25lIHZhbGlkIHJlcXVlc3QuCiAgICAgICAgICAqIGZvciBSRVNFUlZFMSwgb25seSBjb250aW51ZSBpZiB3ZSBoYXZlIGluZGV4ZXMgZm9yIGFsbCByZXF1ZXN0cy4KQEAgLTI3MSw2ICszMTMsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEpIHsKICAgICAgICAgICAgIERFQlVHSUYoImhlbHBlcjp0YWJsZTpzZXQiKSB7CiAgICAgICAgICAgICAgICAgdV9jaGFyICAgICAgICAgKmJ1ZiA9IE5VTEw7CkBAIC0yOTgsNiArMzQxLDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICAvKgogICAgICAgICAgKiBjaGVjayB0byBtYWtlIHN1cmUgaXRzIGluIHRhYmxlIHJhbmdlIApAQCAtMzUzLDEwICszOTcsMTMgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiAgUmVqZWN0IHJlcXVlc3RzIG9mIHRoZSBmb3JtICdteVRhYmxlLk4nICAgKE4gIT0gMSkKICAgICAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKQogICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfTk9UV1JJVEFCTEUpOwotICAgICAgICAgICAgZWxzZSBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVCkKKyAgICAgICAgICAgIGVsc2UKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUKQogICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hPQkpFQ1QpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC00MjgsMTAgKzQ3NSwxMiBAQAogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogIFJlamVjdCByZXF1ZXN0cyBvZiB0aGUgZm9ybSAnbXlFbnRyeS5OJyAgIChpbnZhbGlkIE4pCiAgICAgICAgICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKQogICAgICAgICAgICAgICAgICAgICB0YWJsZV9oZWxwZXJfY2xlYW51cChyZXFpbmZvLCByZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVCkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICAgICAgdGFibGVfaGVscGVyX2NsZWFudXAocmVxaW5mbywgcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hPQkpFQ1QpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDk5LDggKzU0OCwxMCBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVCApIHsKICAgICAgICAgICAgICAgICB0YWJsZV9oZWxwZXJfY2xlYW51cChyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX05PU1VDSE9CSkVDVCk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgfSBlbHNlIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxICkgewogICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsIFNOTVBfRVJSX05PVFdSSVRBQkxFKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC02MjMsNiArNjc0LDcgQEAKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoZWxwZXI6dGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgaW5kZXgoZXMpIGZvciB0YWJsZSAtIHNraXBwaW5nXG4iKSk7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICBpZiAoIE1PREVfSVNfU0VUKHJlcWluZm8tPm1vZGUpICkgewogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogbm8gcG9pbnQgaW4gY29udGludWluZyB3aXRob3V0IGluZGV4ZXMgZm9yIHNldC4KQEAgLTYzNSw2ICs2ODcsNyBAQAogICAgICAgICAgICAgICAgIG5lZWRfcHJvY2Vzc2luZyA9IDA7IC8qIGRvbid0IGNhbGwgbmV4dCBoYW5kbGVyICovCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICB0YWJsZV9oZWxwZXJfY2xlYW51cChyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX05PU1VDSElOU1RBTkNFKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC02NDMsNyArNjk2LDkgQEAKICAgICAgICAgKytuZWVkX3Byb2Nlc3Npbmc7CiAKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZm9yIGVhY2ggcmVxdWVzdCAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAvKgogICAgICAqIGJhaWwgaWYgdGhlcmUgaXMgbm90aGluZyBmb3Igb3VyIGNoaWxkIGhhbmRsZXJzCkBAIC03NTYsNiArODExLDcgQEAKIAogLyoqIGNyZWF0ZSBzcGFyc2UgdGFibGUgaGFuZGxlcgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfU1BBUlNFCiBuZXRzbm1wX21pYl9oYW5kbGVyICoKIG5ldHNubXBfc3BhcnNlX3RhYmxlX2hhbmRsZXJfZ2V0KHZvaWQpCiB7CkBAIC04MDIsOCArODU4LDEwIEBACiAgICAgLyoqIGJvdGggaGFuZGxlcnMgbm93IGluIHJlZ2luZm8sIHNvIG5vdGhpbmcgdG8gZG8gb24gZXJyb3IgKi8KICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfU1BBUlNFICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0JVSUxEX1JFU1VMVAogLyoqIEJ1aWxkcyB0aGUgcmVzdWx0IHRvIGJlIHJldHVybmVkIHRvIHRoZSBhZ2VudCBnaXZlbiB0aGUgdGFibGUgaW5mb3JtYXRpb24uCiAgKiAgVXNlIHRoaXMgZnVuY3Rpb24gdG8gcmV0dXJuIHJlc3VsdHMgZnJvbSBsb3dlbCBsZXZlbCBoYW5kbGVycyB0bwogICogIHRoZSBhZ2VudC4gIEl0IHRha2VzIGNhcmUgb2YgYnVpbGRpbmcgdGhlIHByb3BlciByZXN1bHRpbmcgb2lkCkBAIC04MzcsNyArODk1LDYgQEAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCi0KIC8qKiBnaXZlbiBhIHJlZ2lzdHJhdGlvbiBpbmZvIG9iamVjdCwgYSByZXF1ZXN0IG9iamVjdCBhbmQgdGhlIHRhYmxlCiAgKiAgaW5mbyBvYmplY3QgaXQgYnVpbGRzIHRoZSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWUgb2lkIGZyb20gdGhlCiAgKiAgaW5kZXggdmFsdWVzIGFuZCBjb2x1bW4gaW5mb3JtYXRpb24gZm91bmQgaW4gdGhlIHRhYmxlX2luZm8KQEAgLTg3NCw2ICs5MzEsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0JVSUxEX1JFU1VMVCAqLwogCiAvKiogZ2l2ZW4gYSByZWdpc3RyYXRpb24gaW5mbyBvYmplY3QsIGEgcmVxdWVzdCBvYmplY3QgYW5kIHRoZSB0YWJsZQogICogIGluZm8gb2JqZWN0IGl0IGJ1aWxkcyB0aGUgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lIG9pZCBmcm9tIHRoZQpAQCAtOTkyLDYgKzEwNTAsMjIgQEAKICAgICByZXR1cm4gMDsKIH0KIAorbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqCituZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2Nsb25lKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRyaSkKK3sKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICpjb3B5OworICAgIGNvcHkgPSBtYWxsb2Moc2l6ZW9mKCpjb3B5KSk7CisgICAgaWYgKGNvcHkpIHsKKyAgICAgICAgKmNvcHkgPSAqdHJpOworICAgICAgICBjb3B5LT5pbmRleGVzID0gc25tcF9jbG9uZV92YXJiaW5kKHRyaS0+aW5kZXhlcyk7CisgICAgICAgIGlmICghY29weS0+aW5kZXhlcykgeworICAgICAgICAgICAgZnJlZShjb3B5KTsKKyAgICAgICAgICAgIGNvcHkgPSBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjb3B5OworfQorCiB2b2lkCiBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdHJpKQogewpAQCAtMTE1MCw2ICsxMjI0LDcgQEAKICAgICB2YV9lbmQoZGVidWdhcmdzKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0YXRpYyB2b2lkCiBfcm93X3N0YXNoX2RhdGFfbGlzdF9mcmVlKHZvaWQgKnB0cikgewogICAgIG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKip0bXAgPSAobmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqKilwdHI7CkBAIC0xMTU3LDYgKzEyMzIsNyBAQAogICAgIGZyZWUocHRyKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0dFVF9PUl9DUkVBVEVfUk9XX1NUQVNICiAvKiogcmV0dXJucyBhIHJvdy13aWRlIHBsYWNlIHRvIHN0b3JlIGRhdGEgaW4uCiAgICAgQHRvZG8gVGhpcyBmdW5jdGlvbiB3aWxsIGxpa2VseSBjaGFuZ2UgdG8gYWRkIGZyZWUgcG9pbnRlciBmdW5jdGlvbnMuICovCiBuZXRzbm1wX29pZF9zdGFzaF9ub2RlICoqCkBAIC0xMTgzLDYgKzEyNTksOCBAQAogICAgIH0KICAgICByZXR1cm4gc3Rhc2hwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfR0VUX09SX0NSRUFURV9ST1dfU1RBU0ggKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoKICAqIGFkdmFuY2UgdGhlIHRhYmxlIGluZm8gY29sbnVtIHRvIHRoZSBuZXh0IGNvbHVtbiwgb3IgMCBpZiB0aGVyZSBhcmUgbm8gbW9yZQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jCmluZGV4IGI5OTg5MjkuLjdjOThhYWUgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0yMCw2ICsyMSwxNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfYXJyYXlfYWxsLCBtaWJfaGVscGVycykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2FycmF5X3JlZ2lzdGVyLHRhYmxlX2FycmF5X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9hcnJheV9maW5kX3RhYmxlX2FycmF5X2hhbmRsZXIsdGFibGVfYXJyYXlfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2FycmF5X2V4dHJhY3RfYXJyYXlfY29udGV4dCx0YWJsZV9hcnJheV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfYXJyYXlfY2hlY2tfcm93X3N0YXR1cyx0YWJsZV9hcnJheV9hbGwpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVIKKwogLyoKICAqIHNubXAuaDojZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9CRUdJTiAgICAgICAgLTEgCiAgKiBzbm1wLmg6I2RlZmluZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTEgICAgIDAgCkBAIC0xOTQsNiArMjA0LDcgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWdpbmZvLCB0YWJyZWcpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQVJSQVlfUkVHSVNURVIKIGludAogbmV0c25tcF90YWJsZV9hcnJheV9yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJyZWcsCkBAIC0yMDcsOCArMjE4LDEwIEBACiAgICAgcmV0dXJuIG5ldHNubXBfdGFibGVfY29udGFpbmVyX3JlZ2lzdGVyKHJlZ2luZm8sIHRhYnJlZywgY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciwgZ3JvdXBfcm93cyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9SRUdJU1RFUiAqLwogCiAvKiogZmluZCB0aGUgaGFuZGxlciBmb3IgdGhlIHRhYmxlX2FycmF5IGhlbHBlci4gKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9GSU5EX1RBQkxFX0FSUkFZX0hBTkRMRVIKIG5ldHNubXBfbWliX2hhbmRsZXIgKgogbmV0c25tcF9maW5kX3RhYmxlX2FycmF5X2hhbmRsZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbykKIHsKQEAgLTIyNCwxNSArMjM3LDE5IEBACiAKICAgICByZXR1cm4gbWg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9GSU5EX1RBQkxFX0FSUkFZX0hBTkRMRVIgKi8KIAogLyoqIGZpbmQgdGhlIGNvbnRleHQgZGF0YSB1c2VkIGJ5IHRoZSB0YWJsZV9hcnJheSBoZWxwZXIgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9FWFRSQUNUX0FSUkFZX0NPTlRFWFQKIG5ldHNubXBfY29udGFpbmVyICAgICAgKgogbmV0c25tcF9leHRyYWN0X2FycmF5X2NvbnRleHQobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIChuZXRzbm1wX2NvbnRhaW5lciopbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwgVEFCTEVfQVJSQVlfTkFNRSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9FWFRSQUNUX0FSUkFZX0NPTlRFWFQgKi8KIAogLyoqIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIHZhbGlkYXRlIFJvd1N0YXR1cyB0cmFuc2l0aW9ucy4gKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9DSEVDS19ST1dfU1RBVFVTCiBpbnQKIG5ldHNubXBfdGFibGVfYXJyYXlfY2hlY2tfcm93X3N0YXR1cyhuZXRzbm1wX3RhYmxlX2FycmF5X2NhbGxiYWNrcyAqY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2dyb3VwICphZywKQEAgLTMxMSw2ICszMjgsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9BUlJBWV9DSEVDS19ST1dfU1RBVFVTICovCiAKIC8qKiBAfSAqLwogCkBAIC0zNDUsMzcgKzM2MywxMyBAQAogLyoKICAqIGNvbnRleHQgaW5mbyBmb3IgU0VUIHJlcXVlc3RzCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiB0eXBlZGVmIHN0cnVjdCBzZXRfY29udGV4dF9zIHsKICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm87CiAgICAgdGFibGVfY29udGFpbmVyX2RhdGEgKnRhZDsKICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzOwogfSBzZXRfY29udGV4dDsKLQotc3RhdGljIHZvaWQKLXJlbGVhc2VfbmV0c25tcF9yZXF1ZXN0X2dyb3VwKG5ldHNubXBfaW5kZXggKmcsIHZvaWQgKnYpCi17Ci0gICAgbmV0c25tcF9yZXF1ZXN0X2dyb3VwX2l0ZW0gKnRtcDsKLSAgICBuZXRzbm1wX3JlcXVlc3RfZ3JvdXAgKmdyb3VwID0gKG5ldHNubXBfcmVxdWVzdF9ncm91cCAqKSBnOwotCi0gICAgaWYgKCFnKQotICAgICAgICByZXR1cm47Ci0gICAgd2hpbGUgKGdyb3VwLT5saXN0KSB7Ci0gICAgICAgIHRtcCA9IGdyb3VwLT5saXN0OwotICAgICAgICBncm91cC0+bGlzdCA9IHRtcC0+bmV4dDsKLSAgICAgICAgZnJlZSh0bXApOwotICAgIH0KLQotICAgIGZyZWUoZ3JvdXApOwotfQotCi1zdGF0aWMgdm9pZAotcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXBzKHZvaWQgKnZwKQotewotICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gKG5ldHNubXBfY29udGFpbmVyKil2cDsKLSAgICBDT05UQUlORVJfRk9SX0VBQ0goYywgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKikKLSAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXAsIE5VTEwpOwotICAgIENPTlRBSU5FUl9GUkVFKGMpOwotfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiB2b2lkCiBidWlsZF9uZXdfb2lkKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCkBAIC02MDAsMTAgKzU5NCwxMiBAQAogICAgICAgICByb3cgPSBnLT5leGlzdGluZ19yb3cgPSAobmV0c25tcF9pbmRleCopQ09OVEFJTkVSX0ZJTkQodGFkLT50YWJsZSwgJmluZGV4KTsKICAgICAgICAgaWYgKCFnLT5leGlzdGluZ19yb3cpIHsKICAgICAgICAgICAgIGlmICghdGFkLT5jYi0+Y3JlYXRlX3JvdykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgICAgICBpZihNT0RFX0lTX1NFVChhZ3RyZXFfaW5mby0+bW9kZSkpCiAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoYWd0cmVxX2luZm8sIGN1cnJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfTk9UV1JJVEFCTEUpOwogICAgICAgICAgICAgICAgIGVsc2UKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihhZ3RyZXFfaW5mbywgY3VycmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSElOU1RBTkNFKTsKICAgICAgICAgICAgICAgICBmcmVlKGcpOwpAQCAtNjMyLDYgKzYyOCwzMyBAQAogICAgIH0gLyoqIGZvciggY3VycmVudCAuLi4gKSAqLwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorc3RhdGljIHZvaWQKK3JlbGVhc2VfbmV0c25tcF9yZXF1ZXN0X2dyb3VwKG5ldHNubXBfaW5kZXggKmcsIHZvaWQgKnYpCit7CisgICAgbmV0c25tcF9yZXF1ZXN0X2dyb3VwX2l0ZW0gKnRtcDsKKyAgICBuZXRzbm1wX3JlcXVlc3RfZ3JvdXAgKmdyb3VwID0gKG5ldHNubXBfcmVxdWVzdF9ncm91cCAqKSBnOworCisgICAgaWYgKCFnKQorICAgICAgICByZXR1cm47CisgICAgd2hpbGUgKGdyb3VwLT5saXN0KSB7CisgICAgICAgIHRtcCA9IGdyb3VwLT5saXN0OworICAgICAgICBncm91cC0+bGlzdCA9IHRtcC0+bmV4dDsKKyAgICAgICAgZnJlZSh0bXApOworICAgIH0KKworICAgIGZyZWUoZ3JvdXApOworfQorCitzdGF0aWMgdm9pZAorcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXBzKHZvaWQgKnZwKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gKG5ldHNubXBfY29udGFpbmVyKil2cDsKKyAgICBDT05UQUlORVJfRk9SX0VBQ0goYywgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKikKKyAgICAgICAgICAgICAgICAgICAgICAgcmVsZWFzZV9uZXRzbm1wX3JlcXVlc3RfZ3JvdXAsIE5VTEwpOworICAgIENPTlRBSU5FUl9GUkVFKGMpOworfQorCiBzdGF0aWMgdm9pZAogcHJvY2Vzc19zZXRfZ3JvdXAobmV0c25tcF9pbmRleCAqbywgdm9pZCAqYykKIHsKQEAgLTgyNSw2ICs4NDgsNyBAQAogCiAgICAgcmV0dXJuIGNvbnRleHQuc3RhdHVzOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC04NjAsNiArODg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbW9kZV9uYW1lW2FndHJlcV9pbmZvLT5tb2RlXSkpOwogICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAoTU9ERV9JU19TRVQoYWd0cmVxX2luZm8tPm1vZGUpKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIG5ldHNubXBfbXV0ZXhfbG9jaygmdGFkLT5sb2NrKTsKQEAgLTg3MCw2ICs4OTUsNyBAQAogICAgICAgICAgKiBuZXRzbm1wX211dGV4X3VubG9jaygmdGFkLT5sb2NrKTsKICAgICAgICAgICovCiAgICAgfSBlbHNlCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIHJjID0gcHJvY2Vzc19nZXRfcmVxdWVzdHMocmVnaW5mbywgYWd0cmVxX2luZm8sIHJlcXVlc3RzLCB0YWQpOwogCiAgICAgaWYgKHJjICE9IFNOTVBfRVJSX05PRVJST1IpIHsKQEAgLTg4OSw0ICs5MTUsNSBAQAogICAgIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUiAqLwogLyoqIEBlbmRjb25kICovCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYwppbmRleCA4MmM3ZjI5Li4wOGU5NzQxIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0yMCw2ICsyMSwxNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcHJvdmlkZSh0YWJsZV9jb250YWluZXIpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfY29udGFpbmVyLCB0YWJsZV9jb250YWluZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2NvbnRhaW5lcl9yZXBsYWNlX3JvdywgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfZXh0cmFjdCwgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfbWFuYWdlbWVudCwgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfcm93X3JlbW92ZSwgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfcm93X2luc2VydCwgdGFibGVfY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9jb250YWluZXJfYWxsLCBtaWJfaGVscGVycykKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUgorCiAvKgogICogc25tcC5oOiNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfU0VUX0JFR0lOICAgICAgICAtMSAKICAqIHNubXAuaDojZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMSAgICAgMCAKQEAgLTM1LDYgKzQ3LDkgQEAKICAqLwogdHlwZWRlZiBzdHJ1Y3QgY29udGFpbmVyX3RhYmxlX2RhdGFfcyB7CiAKKyAgICAvKiogTnVtYmVyIG9mIGhhbmRsZXJzIHdob3NlIG15dm9pZCBwb2ludGVyIHBvaW50cyB0byB0aGlzIHN0cnVjdHVyZS4gKi8KKyAgICBpbnQgcmVmY250OworCiAgICAvKiogcmVnaXN0cmF0aW9uIGluZm8gZm9yIHRoZSB0YWJsZSAqLwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRibHJlZ19pbmZvOwogCkBAIC0xNjAsNiArMTc1LDcgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfTUFOQUdFTUVOVAogY29udGFpbmVyX3RhYmxlX2RhdGEgKgogbmV0c25tcF90Y29udGFpbmVyX2NyZWF0ZV90YWJsZSggY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGxvbmcgZmxhZ3MgKQpAQCAtMjA0LDYgKzIyMCw3IEBACiAgICAgU05NUF9GUkVFKHRhYmxlKTsKICAgICByZXR1cm47CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfTUFOQUdFTUVOVCAqLwogCiAgICAgLyoKICAgICAgKiBUaGUgdmFyaW91cyBzdGFuZGFsb25lIHJvdyBvcGVyYXRpb24gcm91dGluZXMKQEAgLTIzMCw2ICsyNDcsNyBAQAogICAgIHJldHVybiBOVUxMOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX1JFUExBQ0VfUk9XCiBpbnQKIG5ldHNubXBfdGNvbnRhaW5lcl9yZXBsYWNlX3JvdyggY29udGFpbmVyX3RhYmxlX2RhdGEgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2luZGV4ICpvbGRfcm93LCBuZXRzbm1wX2luZGV4ICpuZXdfcm93ICkKQEAgLTI0MCw2ICsyNTgsNyBAQAogICAgIG5ldHNubXBfdGNvbnRhaW5lcl9hZGRfcm93KCAgICB0YWJsZSwgbmV3X3JvdyApOwogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX1JFUExBQ0VfUk9XICovCiAKICAgICAvKiBuZXRzbm1wX3Rjb250YWluZXJfcmVtb3ZlX2RlbGV0ZV9yb3coKSB3aWxsIGJlIHRhYmxlLXNwZWNpZmljIHRvbyAqLwogCkBAIC0yNTAsNiArMjY5LDIwIEBACiAgKgogICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCitzdGF0aWMgY29udGFpbmVyX3RhYmxlX2RhdGEgKgorbmV0c25tcF9jb250YWluZXJfdGFibGVfZGF0YV9jbG9uZShjb250YWluZXJfdGFibGVfZGF0YSAqdGFkKQoreworICAgICsrdGFkLT5yZWZjbnQ7CisgICAgcmV0dXJuIHRhZDsKK30KKworc3RhdGljIHZvaWQKK25ldHNubXBfY29udGFpbmVyX3RhYmxlX2RhdGFfZnJlZShjb250YWluZXJfdGFibGVfZGF0YSAqdGFkKQoreworICAgIGlmICgtLXRhZC0+cmVmY250ID09IDApCisJZnJlZSh0YWQpOworfQorCiAvKiogcmV0dXJucyBhIG5ldHNubXBfbWliX2hhbmRsZXIgb2JqZWN0IGZvciB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLwogbmV0c25tcF9taWJfaGFuZGxlciAqCiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldChuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJyZWcsCkBAIC0yNzQsNiArMzA3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgdGFkLT5yZWZjbnQgPSAxOwogICAgIHRhZC0+dGJscmVnX2luZm8gPSB0YWJyZWc7ICAvKiB3ZSBuZWVkIGl0IHRvbywgYnV0IGl0IHJlYWxseSBpcyBub3Qgb3VycyAqLwogICAgIGlmKGtleV90eXBlKQogICAgICAgICB0YWQtPmtleV90eXBlID0ga2V5X3R5cGU7CkBAIC0yOTAsNiArMzI0LDggQEAKICAgICAgICAgY29udGFpbmVyLT5uY29tcGFyZSA9IG5ldHNubXBfbmNvbXBhcmVfbmV0c25tcF9pbmRleDsKICAgICAKICAgICBoYW5kbGVyLT5teXZvaWQgPSAodm9pZCopdGFkOworICAgIGhhbmRsZXItPmRhdGFfY2xvbmUgPSAodm9pZCAqKCopKHZvaWQgKikpbmV0c25tcF9jb250YWluZXJfdGFibGVfZGF0YV9jbG9uZTsKKyAgICBoYW5kbGVyLT5kYXRhX2ZyZWUgPSAodm9pZCAoKikodm9pZCAqKSluZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9kYXRhX2ZyZWU7CiAgICAgaGFuZGxlci0+ZmxhZ3MgfD0gTUlCX0hBTkRMRVJfQVVUT19ORVhUOwogICAgIAogICAgIHJldHVybiBoYW5kbGVyOwpAQCAtMzI4LDE5ICszNjQsMjMgQEAKICAgICBpZiAodGFkKSB7CiAgICAgICAgIENPTlRBSU5FUl9GUkVFKCB0YWQtPnRhYmxlICk7CiAgICAgICAgIHRhZC0+dGFibGUgPSBOVUxMOwotICAgICAgICBmcmVlKHRhZCk7Ci0gICAgICAgIHJlZ2luZm8tPmhhbmRsZXItPm15dm9pZCA9IE5VTEw7CisJLyoKKwkgKiBOb3RlOiBkb24ndCBmcmVlIHRoZSBtZW1vcnkgdGFkIHBvaW50cyBhdCBoZXJlIC0gdGhhdCBpcyBkb25lCisJICogYnkgbmV0c25tcF9jb250YWluZXJfdGFibGVfZGF0YV9mcmVlKCkuCisJICovCiAgICAgfQogICAgIHJldHVybiBuZXRzbm1wX3VucmVnaXN0ZXJfdGFibGUoIHJlZ2luZm8gKTsKIH0KIAogLyoqIHJldHJpZXZlIHRoZSBjb250YWluZXIgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUl9FWFRSQUNUCiBuZXRzbm1wX2NvbnRhaW5lcioKIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2NvbnRhaW5lcl9leHRyYWN0KG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0KQogewogICAgIHJldHVybiAobmV0c25tcF9jb250YWluZXIgKikKICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3QsIFRBQkxFX0NPTlRBSU5FUl9DT05UQUlORVIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX0VYVFJBQ1QgKi8KIAogI2lmbmRlZiBORVRTTk1QX1VTRV9JTkxJTkUKIC8qKiBmaW5kIHRoZSBjb250ZXh0IGRhdGEgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLwpAQCAtMzY1LDYgKzQwNSw3IEBACiB9CiAjZW5kaWYgLyogaW5saW5lICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfUk9XX0lOU0VSVAogLyoqIGluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRhYmxlX2NvbnRhaW5lciBlbnRyeSBpbnRvIGEgcmVxdWVzdCBsaXN0ICovCiB2b2lkCiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfaW5zZXJ0KG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0LApAQCAtNDMyLDcgKzQ3Myw5IEBACiAgICAgICAgIH0KICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVJfUk9XX0lOU0VSVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSX1JPV19SRU1PVkUKIC8qKiByZW1vdmVzIGEgdGFibGVfY29udGFpbmVyIGVudHJ5IGZyb20gYSByZXF1ZXN0IGxpc3QgKi8KIHZvaWQKIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19yZW1vdmUobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCkBAIC00OTksNiArNTQyLDcgQEAKICAgICAgICAgfQogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0NPTlRBSU5FUl9ST1dfUkVNT1ZFICovCiAKIC8qKiBAY29uZCAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTYxMCwxMSArNjU0LDE1IEBACiAgICAgICAgICAgICAgKiBub3QgcmVzdWx0cyBmb3VuZC4gRm9yIGEgZ2V0LCB0aGF0IGlzIGFuIGVycm9yCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZV9jb250YWluZXIiLCAibm8gcm93IGZvdW5kXG4iKSk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgaWYoKGFndHJlcV9pbmZvLT5tb2RlICE9IE1PREVfU0VUX1JFU0VSVkUxKSB8fCAvKiBnZXQgKi8KICAgICAgICAgICAgICAgIChyZWdpbmZvLT5tb2RlcyAmIEhBTkRMRVJfQ0FOX05PVF9DUkVBVEUpKSB7IC8qIG5vIGNyZWF0ZSAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoYWd0cmVxX2luZm8sIHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIH0KICAgICB9IC8qKiBHRVQvU0VUICovCiAgICAgCkBAIC02NzYsNyArNzI0LDExIEBACiAgICAgICogcmVnaXN0cmF0aW9uLgogICAgICAqLwogICAgIG9sZG1vZGUgPSBhZ3RyZXFfaW5mby0+bW9kZTsKLSAgICBpZihNT0RFX0lTX0dFVChvbGRtb2RlKSB8fCAoTU9ERV9TRVRfUkVTRVJWRTEgPT0gb2xkbW9kZSkpIHsKKyAgICBpZihNT0RFX0lTX0dFVChvbGRtb2RlKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICAgICB8fCAoTU9ERV9TRVRfUkVTRVJWRTEgPT0gb2xkbW9kZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgKSB7CiAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpjdXJyX3JlcXVlc3Q7CiAgICAgICAgIC8qCiAgICAgICAgICAqIExvb3AgdGhyb3VnaCBlYWNoIG9mIHRoZSByZXF1ZXN0cywgYW5kCkBAIC04MTYsNCArODY4LDkgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfQ09OVEFJTkVSICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHRhYmxlX2NvbnRhaW5lcik7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9DT05UQUlORVIgKi8KIC8qKiBAfSAqLworCisKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKaW5kZXggYzNhN2Y5ZS4uNjU5ZDkwMyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKKysrIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTE0LDYgKzE1LDI3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGUuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfYWxsLCBtaWJfaGVscGVycykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGEsIHRhYmxlX2RhdGFfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3JlYWRfb25seV90YWJsZV9kYXRhLCB0YWJsZV9kYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihleHRyYWN0X3RhYmxlX3Jvd19kYXRhLCB0YWJsZV9kYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnNlcnRfdGFibGVfcm93LCB0YWJsZV9kYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSwgdGFibGVfZGF0YV9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX2V4dHJhcywgdGFibGVfZGF0YV9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX2NyZWF0ZV90YWJsZSwgdGFibGVfZGF0YV9leHRyYXMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YV9jcmVhdGVfcm93LCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX2NvcHlfcm93LCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX3JlbW92ZV9kZWxldGVfcm93LCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX3VucmVnaXN0ZXIsIHRhYmxlX2RhdGFfZXh0cmFzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFfcm93X2NvdW50LCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX3Jvd19vcGVyYXRpb25zLCB0YWJsZV9kYXRhX2V4dHJhcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhX3Jvd19maXJzdCwgdGFibGVfZGF0YV9leHRyYXMpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBCisKIC8qKiBAZGVmZ3JvdXAgdGFibGVfZGF0YSB0YWJsZV9kYXRhCiAgKiAgSGVscHMgeW91IGltcGxlbWVudCBhIHRhYmxlIHdpdGggZGF0YW1hdHRlZCBzdG9yYWdlLgogICogIEBpbmdyb3VwIHRhYmxlCkBAIC05MCw2ICsxMTIsNyBAQAogICAgICAgICBuZXdyb3ctPmluZGV4X29pZCA9CiAgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChyb3ctPmluZGV4X29pZCwgcm93LT5pbmRleF9vaWRfbGVuKTsKICAgICAgICAgaWYgKCFuZXdyb3ctPmluZGV4X29pZCkgeworICAgICAgICAgICAgZnJlZShuZXdyb3ctPmluZGV4ZXMpOwogICAgICAgICAgICAgZnJlZShuZXdyb3cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTI4NywxMiArMzEwLDE1IEBACiAgICAgICogR2VuZXJpYyBBUEkgLSBtb3N0bHkgcmVuYW1lZCB3cmFwcGVycwogICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfQ1JFQVRFX1RBQkxFCiBuZXRzbm1wX3RhYmxlX2RhdGEgKgogbmV0c25tcF90YWJsZV9kYXRhX2NyZWF0ZV90YWJsZShjb25zdCBjaGFyICpuYW1lLCBsb25nIGZsYWdzKQogewogICAgIHJldHVybiBuZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhKCBuYW1lICk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX0NSRUFURV9UQUJMRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9ERUxFVEVfVEFCTEUKIHZvaWQKIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUoIG5ldHNubXBfdGFibGVfZGF0YSAqdGFibGUgKQogewpAQCAtMzEyLDE0ICszMzgsMTMgQEAKICAgICB9CiAgICAgdGFibGUtPmZpcnN0X3JvdyA9IE5VTEw7CiAKLSAgICBpZiAodGFibGUtPm5hbWUpIHsKLSAgICAgICAgU05NUF9GUkVFKHRhYmxlLT5uYW1lKTsKLSAgICAgICAgdGFibGUtPm5hbWUgPSBOVUxMOwotICAgIH0KKyAgICBTTk1QX0ZSRUUodGFibGUtPm5hbWUpOwogICAgIFNOTVBfRlJFRSh0YWJsZSk7CiAgICAgcmV0dXJuOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9ERUxFVEVfVEFCTEUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfQ1JFQVRFX1JPVwogbmV0c25tcF90YWJsZV9yb3cgKgogbmV0c25tcF90YWJsZV9kYXRhX2NyZWF0ZV9yb3coIHZvaWQqIGVudHJ5ICkKIHsKQEAgLTMyOCw5ICszNTMsMTEgQEAKICAgICAgICAgcm93LT5kYXRhID0gZW50cnk7CiAgICAgcmV0dXJuIHJvdzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfQ1JFQVRFX1JPVyAqLwogCiAgICAgLyogbmV0c25tcF90YWJsZV9kYXRhX2Nsb25lX3JvdygpIGRlZmluZWQgYWJvdmUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfQ09QWV9ST1cKIGludAogbmV0c25tcF90YWJsZV9kYXRhX2NvcHlfcm93KCBuZXRzbm1wX3RhYmxlX3JvdyAgKm9sZF9yb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcm93ICAqbmV3X3JvdyApCkBAIC0zNDgsNiArMzc1LDcgQEAKICAgICAvKiBYWFggLSBEb2Vzbid0IGNvcHkgdGFibGUtc3BlY2lmaWMgcm93IHN0cnVjdHVyZSAqLwogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9DT1BZX1JPVyAqLwogCiAgICAgLyoKICAgICAgKiBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3JvdygpCkBAIC0zNTcsMTIgKzM4NSwxNCBAQAogICAgICAqICAgICBhbGwgZGVmaW5lZCBhYm92ZQogICAgICAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9SRU1PVkVfREVMRVRFX1JPVwogdm9pZCAqCiBuZXRzbm1wX3RhYmxlX2RhdGFfcmVtb3ZlX2RlbGV0ZV9yb3cobmV0c25tcF90YWJsZV9kYXRhICp0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JvdyAqcm93KQogewogICAgIHJldHVybiBuZXRzbm1wX3RhYmxlX2RhdGFfcmVtb3ZlX2FuZF9kZWxldGVfcm93KHRhYmxlLCByb3cpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9SRU1PVkVfREVMRVRFX1JPVyAqLwogCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTQwNCw2ICs0MzQsOCBAQAogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRhYmxlX2luZm8pOwogfQogCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUdJU1RFUl9SRUFEX09OTFlfVEFCTEVfREFUQQogLyoqIHJlZ2lzdGVycyBhIGhhbmRsZXIgYXMgYSByZWFkLW9ubHkgZGF0YSB0YWJsZQogICogIElmIHRhYmxlX2luZm8gIT0gTlVMTCwgaXQgcmVnaXN0ZXJzIGl0IGFzIGEgbm9ybWFsIHRhYmxlIHRvby4gKi8KIGludApAQCAtNDE0LDEzICs0NDYsMTYgQEAKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIG5ldHNubXBfZ2V0X3JlYWRfb25seV9oYW5kbGVyKCkpOwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEocmVnaW5mbywgdGFibGUsIHRhYmxlX2luZm8pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfUkVBRF9PTkxZX1RBQkxFX0RBVEEgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfVU5SRUdJU1RFUgogaW50CiBuZXRzbm1wX3VucmVnaXN0ZXJfdGFibGVfZGF0YShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKQogewogICAgIC8qIGZyZWUgdGFibGU7ICovCiAgICAgcmV0dXJuIG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZShyZWdpbmZvKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfVU5SRUdJU1RFUiAqLwogCiAvKgogICogVGhlIGhlbHBlciBoYW5kbGVyIHRoYXQgdGFrZXMgY2FyZSBvZiBwYXNzaW5nIGEgc3BlY2lmaWMgcm93IG9mCkBAIC00NTMsNyArNDg4LDkgQEAKICAgICAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgICAgIGNhc2UgTU9ERV9HRVRORVhUOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhKHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFX0RBVEFfVEFCTEUsIHRhYmxlLCBOVUxMKSk7CkBAIC01MjcsOSArNTY0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAgICAgKiBlcXVhbCBtYXRjaCwgcmV0dXJuIHRoZSBuZXh0IHJvdyAKICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9IHJvdy0+bmV4dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9IHJvdy0+bmV4dDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qCkBAIC02MDYsNiArNjQxLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICAgICAgdmFsaWRfcmVxdWVzdCA9IDE7CiAgICAgICAgICAgICBpZiAoTlVMTCAhPQpAQCAtNjMwLDYgKzY2Niw3IEBACiAgICAgICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKICAgICAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICAgICAgdmFsaWRfcmVxdWVzdCA9IDE7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgfQogICAgIH0KQEAgLTY3Miw2ICs3MDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfREFUQV9ST1cpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRVhUUkFDVF9UQUJMRV9ST1dfREFUQQogLyoqIGV4dHJhY3RzIHRoZSBkYXRhIGZyb20gdGhlIHJvdyBiZWluZyBhY2Nlc3NlZCBwYXNzZWQgZnJvbSB0aGUKICAqIHRhYmxlX2RhdGEgaGVscGVyICovCiB2b2lkICAgICAgICAgICAqCkBAIC02ODQsNyArNzIyLDkgQEAKICAgICBlbHNlCiAgICAgICAgIHJldHVybiBOVUxMOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRVhUUkFDVF9UQUJMRV9ST1dfREFUQSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5TRVJUX1RBQkxFX1JPVwogLyoqIGluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRhYmxlX2RhdGEgcm93IGludG8gYSByZXF1ZXN0ICovCiB2b2lkCiBuZXRzbm1wX2luc2VydF90YWJsZV9yb3cobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCkBAIC03NDksNiArNzg5LDcgQEAKICAgICAgICAgfQogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOU0VSVF9UQUJMRV9ST1cgKi8KIAogLyogYnVpbGRzIGEgcmVzdWx0IGdpdmVuIGEgcm93LCBhIHZhcmJpbmQgdG8gc2V0IGFuZCB0aGUgZGF0YSAqLwogaW50CkBAIC04NjAsMTEgKzkwMSwxMyBAQAogICAgICAqIEdlbmVyaWMgQVBJIC0gbW9zdGx5IHJlbmFtZWQgd3JhcHBlcnMKICAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JPV19GSVJTVAogbmV0c25tcF90YWJsZV9yb3cgKgogbmV0c25tcF90YWJsZV9kYXRhX3Jvd19maXJzdChuZXRzbm1wX3RhYmxlX2RhdGEgKnRhYmxlKQogewogICAgIHJldHVybiBuZXRzbm1wX3RhYmxlX2RhdGFfZ2V0X2ZpcnN0X3Jvdyh0YWJsZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JPV19GSVJTVCAqLwogCiBuZXRzbm1wX3RhYmxlX3JvdyAqCiBuZXRzbm1wX3RhYmxlX2RhdGFfcm93X2dldCggIG5ldHNubXBfdGFibGVfZGF0YSAqdGFibGUsCkBAIC05MjksMTEgKzk3MiwxMyBAQAogICAgIHJldHVybiBuZXRzbm1wX3RhYmxlX2RhdGFfcm93X25leHRfYnlvaWQodGFibGUsIGluc3RhbmNlLCBsZW4pOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9ST1dfQ09VTlQKIGludAogbmV0c25tcF90YWJsZV9kYXRhX3Jvd19jb3VudChuZXRzbm1wX3RhYmxlX2RhdGEgKnRhYmxlKQogewogICAgIHJldHVybiBuZXRzbm1wX3RhYmxlX2RhdGFfbnVtX3Jvd3ModGFibGUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9ST1dfQ09VTlQgKi8KIAogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC05NDMsNiArOTg4LDcgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1JPV19PUEVSQVRJT05TCiB2b2lkICoKIG5ldHNubXBfdGFibGVfZGF0YV9lbnRyeV9maXJzdChuZXRzbm1wX3RhYmxlX2RhdGEgKnRhYmxlKQogewpAQCAtMTAwMiw2ICsxMDQ4LDcgQEAKICAgICAgICAgbmV0c25tcF90YWJsZV9kYXRhX3Jvd19uZXh0X2J5b2lkKHRhYmxlLCBpbnN0YW5jZSwgbGVuKTsKICAgICByZXR1cm4gKHJvdyA/IHJvdy0+ZGF0YSA6IE5VTEwgKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFfUk9XX09QRVJBVElPTlMgKi8KIAogICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgKiBHZW5lcmljIEFQSSAtIG1vc3RseSByZW5hbWVkIHdyYXBwZXJzCkBAIC0xMDEzLDUgKzEwNjAsOSBAQAogICoKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHRhYmxlX2RhdGEpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQSAqLworCiAvKiogQH0gCiAgKi8KZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMKaW5kZXggMjQwM2IyZi4uOTMxYzI3YSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMKKysrIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMKQEAgLTEsNSArMSw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0xMSw2ICsxMywzNCBAQAogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YXNldF9hbGwsIG1pYl9oZWxwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFzZXQsIHRhYmxlX2RhdGFzZXRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX2RhdGFzZXRfcmVtb3ZlX3JvdywgdGFibGVfZGF0YXNldF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfZGF0YV9zZXRfY29sdW1uLCB0YWJsZV9kYXRhc2V0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhc2V0X2dldF9uZXdyb3csIHRhYmxlX2RhdGFzZXRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3NldF9hZGRfaW5kZXhlcywgdGFibGVfZGF0YXNldF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGVsZXRlX3RhYmxlX2RhdGFfc2V0LCB0YWJsZV9kYXRhc2V0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93LCB0YWJsZV9kYXRhc2V0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9kYXRhc2V0X3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlLCB0YWJsZV9kYXRhc2V0X2FsbCkKKworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1RBQkxFX0RBVEFTRVQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2dldF9vcl9jcmVhdGVfcm93X3N0YXNoKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YV9kZWxldGVfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2dldF9kYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2FkZF9kYXRhKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1RBQkxFX0RBVEFTRVQgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVQKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaCkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShtaWJfdG9fYXNuX3R5cGUpCisjZW5kaWYgLyogTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HICovCisKIHN0YXRpYyBuZXRzbm1wX2RhdGFfbGlzdCAqYXV0b190YWJsZXM7CiAKIHR5cGVkZWYgc3RydWN0IGRhdGFfc2V0X3RhYmxlc19zIHsKQEAgLTEzNCw2ICsxNjQsNyBAQAogfQogCiAvKiogcmVtb3ZlcyBhIHJvdyBmcm9tIHRoZSB0YWJsZSwgYnV0IGRvZXNuJ3QgZGVsZXRlL2ZyZWUgdGhlIGNvbHVtbiB2YWx1ZXMgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBU0VUX1JFTU9WRV9ST1cKIE5FVFNOTVBfSU5MSU5FIHZvaWQKIG5ldHNubXBfdGFibGVfZGF0YXNldF9yZW1vdmVfcm93KG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yb3cgKnJvdykKQEAgLTE0Myw2ICsxNzQsNyBAQAogCiAgICAgbmV0c25tcF90YWJsZV9kYXRhX3JlbW92ZV9hbmRfZGVsZXRlX3Jvdyh0YWJsZS0+dGFibGUsIHJvdyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBU0VUX1JFTU9WRV9ST1cgKi8KIAogLyoqIHJlbW92ZXMgYSByb3cgZnJvbSB0aGUgdGFibGUgYW5kIHRoZW4gZGVsZXRlcyBpdCAoYW5kIGFsbCBpdHMgZGF0YSkgKi8KIE5FVFNOTVBfSU5MSU5FIHZvaWQKQEAgLTE3Miw2ICsyMDQsNyBAQAogICAgIHJldHVybiB0YWJsZV9zZXQ7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUxFVEVfVEFCTEVfREFUQV9TRVQKIHZvaWQgbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0KQogewogICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqcHRyLCAqbmV4dDsKQEAgLTE5MCw2ICsyMjMsNyBAQAogICAgIG5ldHNubXBfdGFibGVfZGF0YV9kZWxldGVfdGFibGUodGFibGVfc2V0LT50YWJsZSk7CiAgICAgZnJlZSh0YWJsZV9zZXQpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVMRVRFX1RBQkxFX0RBVEFfU0VUICovCiAKIC8qKiBjbG9uZXMgYSBkYXRhc2V0IHJvdywgaW5jbHVkaW5nIGFsbCBkYXRhLiAqLwogbmV0c25tcF90YWJsZV9yb3cgKgpAQCAtMjUwLDkgKzI4NCwxMCBAQAogICAgIGZvciAoOyBkZWZyb3c7IGRlZnJvdyA9IGRlZnJvdy0+bmV4dCkgewogICAgICAgICBuZXRzbm1wX3NldF9yb3dfY29sdW1uKHJvdywgZGVmcm93LT5jb2x1bW4sIGRlZnJvdy0+dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZyb3ctPmRhdGEudm9pZHAsIGRlZnJvdy0+ZGF0YV9sZW4pOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKGRlZnJvdy0+d3JpdGFibGUpCiAgICAgICAgICAgICBuZXRzbm1wX21hcmtfcm93X2NvbHVtbl93cml0YWJsZShyb3csIGRlZnJvdy0+Y29sdW1uLCAxKTsKLQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIHJvdzsKIH0KQEAgLTMyNyw2ICszNjIsNyBAQAogICogIHRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBjYWxsaW5nIG5ldHNubXBfdGFibGVfc2V0X2FkZF9kZWZhdWx0X3JvdwogICogIHJlcGVhdGVkbHkgZm9yIHlvdS4KICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1NFVF9NVUxUSV9BRERfREVGQVVMVF9ST1cKIHZvaWQKIG5ldHNubXBfdGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdyhuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0c2V0LCAuLi4pCiB7CkBAIC0zNDksNyArMzg1LDcgQEAKIAogICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9TRVRfTVVMVElfQUREX0RFRkFVTFRfUk9XICovCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCkBAIC0zODksNiArNDI1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9kYXRhX3NldCAqZGF0YV9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8pCiB7CisgICAgaW50IHJldDsKKwogICAgIGlmIChOVUxMID09IHRhYmxlX2luZm8pIHsKICAgICAgICAgLyoKICAgICAgICAgICogYWxsb2NhdGUgdGhlIHRhYmxlIGlmIG9uZSB3YXNuJ3QgYWxsb2NhdGVkIApAQCAtNDI2LDggKzQ2NCwxMSBAQAogCiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfdGFibGVfZGF0YV9zZXRfaGFuZGxlcihkYXRhX3NldCkpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEocmVnaW5mbywgZGF0YV9zZXQtPnRhYmxlLAorICAgIHJldCA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YShyZWdpbmZvLCBkYXRhX3NldC0+dGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9pbmZvKTsKKyAgICBpZiAocmV0ID09IFNOTVBFUlJfU1VDQ0VTUyAmJiByZWdpbmZvLT5oYW5kbGVyKQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKHJlZ2luZm8tPmhhbmRsZXItPm5leHQpOworICAgIHJldHVybiByZXQ7CiB9CiAKIG5ld3Jvd19zdGFzaCAgICoKQEAgLTQ4OCw2ICs1MjksNyBAQAogICAgICAgICByb3cgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfcm93KHJlcXVlc3QpOwogICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmIChNT0RFX0lTX1NFVChyZXFpbmZvLT5tb2RlKSkgewogCiAgICAgICAgICAgICAvKgpAQCAtNTU2LDEyICs1OTgsMTcgQEAKICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUyKQogICAgICAgICAgICAgICAgIHJvdyA9IG5ld3JvdzsKICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIGlmIChyb3cpCiAgICAgICAgICAgICBkYXRhID0gKG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqKSByb3ctPmRhdGE7CiAKICAgICAgICAgaWYgKCFyb3cgfHwgIXRhYmxlX2luZm8gfHwgIWRhdGEpIHsKLSAgICAgICAgICAgIGlmICghTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkgfHwgIXRhYmxlX2luZm8pIHsKKyAgICAgICAgICAgIGlmICghdGFibGVfaW5mbworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICAgICAgICAgICAgICB8fCAhTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hJTlNUQU5DRSk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC01OTIsNiArNjM5LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgICAvKgpAQCAtODA4LDYgKzg1NiwxMiBAQAogCQluZXdyb3cgPSBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAidGFibGVfZGF0YXNldDogdW5rbm93biBtb2RlIHBhc3NlZCBpbnRvIHRoZSBoYW5kbGVyXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTgyOCw2ICs4ODIsNyBAQAogLyoqCiAgKiBleHRyYWN0cyBhIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgcG9pbnRlciBmcm9tIGEgZ2l2ZW4gcmVxdWVzdAogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQV9TRVRfQ09MVU1OCiBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2UgKgogbmV0c25tcF9leHRyYWN0X3RhYmxlX2RhdGFfc2V0X2NvbHVtbihuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY29sdW1uKQpAQCAtODM5LDcgKzg5NCw3IEBACiAgICAgfQogICAgIHJldHVybiBkYXRhOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBX1NFVF9DT0xVTU4gKi8KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICoKQEAgLTg2Nyw5ICs5MjIsMjMgQEAKICAgICBpZiAoIXJlZ2lzdHJhdGlvbl9uYW1lKSB7CiAgICAgICAgIHJlZ2lzdHJhdGlvbl9uYW1lID0gdGFibGVfc2V0LT50YWJsZS0+bmFtZTsKICAgICB9Ci0gICAgbmV0c25tcF9hZGRfbGlzdF9kYXRhKCZhdXRvX3RhYmxlcywgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KHJlZ2lzdHJhdGlvbl9uYW1lLCB0YWJsZXMsIE5VTEwpKTsgICAgIC8qIFhYWCAqLworICAgIG5ldHNubXBfYWRkX2xpc3RfZGF0YSgmYXV0b190YWJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdChyZWdpc3RyYXRpb25fbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlcywgZnJlZSkpOyAgICAgLyogWFhYICovCiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9EQVRBU0VUX1VOUkVHSVNURVJfQVVUT19EQVRBX1RBQkxFCisvKiogVW5kbyB0aGUgZWZmZWN0IG9mIG5ldHNubXBfcmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKCkuCisgKi8KK3ZvaWQKK25ldHNubXBfdW5yZWdpc3Rlcl9hdXRvX2RhdGFfdGFibGUobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0LAorCQkJCSAgIGNoYXIgKnJlZ2lzdHJhdGlvbl9uYW1lKQoreworICAgIG5ldHNubXBfcmVtb3ZlX2xpc3Rfbm9kZSgmYXV0b190YWJsZXMsIHJlZ2lzdHJhdGlvbl9uYW1lCisJCQkgICAgID8gcmVnaXN0cmF0aW9uX25hbWUgOiB0YWJsZV9zZXQtPnRhYmxlLT5uYW1lKTsKK30KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVRfVU5SRUdJU1RFUl9BVVRPX0RBVEFfVEFCTEUgKi8KKwogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcKIHN0YXRpYyB2b2lkCiBfdGFibGVfc2V0X2FkZF9pbmRleGVzKG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldCwgc3RydWN0IHRyZWUgKnRwKQpAQCAtMTEzMiw4ICsxMjAxLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICJhZGRpbmcgZGF0YSBhdCBjb2x1bW4gJWQgb2YgdHlwZSAlZFxuIiwgZHItPmNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgZHItPnR5cGUpKTsKICAgICAgICAgbmV0c25tcF9zZXRfcm93X2NvbHVtbihyb3csIGRyLT5jb2x1bW4sIGRyLT50eXBlLCBidWYsIGJ1Zl9zaXplKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmIChkci0+d3JpdGFibGUpCiAgICAgICAgICAgICBuZXRzbm1wX21hcmtfcm93X2NvbHVtbl93cml0YWJsZShyb3csIGRyLT5jb2x1bW4sIDEpOyAgICAgICAvKiBtYWtlIHdyaXRhYmxlICovCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByYyA9IG5ldHNubXBfdGFibGVfZGF0YV9hZGRfcm93KHRhYmxlcy0+dGFibGVfc2V0LT50YWJsZSwgcm93KTsKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IHJjKSB7CkBAIC0xMTQ2LDYgKzEyMTcsNyBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBuZXRzbm1wX29pZF9zdGFzaF9ub2RlICoqCiBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZ2V0X29yX2NyZWF0ZV9zdGFzaChuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKmRhdGF0YWJsZSwKQEAgLTExNzYsNiArMTI0OCw3IEBACiAgICAgcmV0dXJuIHN0YXNocDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVRfR0VUX05FV1JPVwogbmV0c25tcF90YWJsZV9yb3cgKgogbmV0c25tcF90YWJsZV9kYXRhc2V0X2dldF9uZXdyb3cobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKQEAgLTExOTksNiArMTI3Miw4IEBACiAKICAgICByZXR1cm4gbmV3cm93c3Rhc2gtPm5ld3JvdzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVRfR0VUX05FV1JPVyAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgpAQCAtMTI0Nyw2ICsxMzIyLDcgQEAKICAgICByZXR1cm4gc3RhcnQ7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAvKioKICAqIG1hcmtzIGEgZ2l2ZW4gY29sdW1uIGluIGEgcm93IGFzIHdyaXRhYmxlIG9yIG5vdC4KICAqLwpAQCAtMTI4MCw2ICsxMzU2LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoqCiAgKiBTZXRzIGEgZ2l2ZW4gY29sdW1uIGluIGEgcm93IHdpdGggZGF0YSBnaXZlbiBhIHR5cGUsIHZhbHVlLApAQCAtMTM1NCw2ICsxNDMxLDcgQEAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCiAgKiBEYXRhIFNldCBBUEk6IEluZGV4IG9wZXJhdGlvbnMKQEAgLTEzNzEsNiArMTQ0OSw3IEBACiAKIC8qKiBhZGRzIG11bHRpcGxlIGluZGV4ZXMgdG8gYSB0YWJsZV9kYXRhc2V0IGhlbHBlciBvYmplY3QuCiAgKiAgVG8gZW5kIHRoZSBsaXN0LCB1c2UgYSAwIGFmdGVyIHRoZSBsaXN0IG9mIEFTTiBpbmRleCB0eXBlcy4gKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9TRVRfQUREX0lOREVYRVMKIHZvaWQKIG5ldHNubXBfdGFibGVfc2V0X2FkZF9pbmRleGVzKG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pCkBAIC0xMzg2LDYgKzE0NjUsMTAgQEAKIAogICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfU0VUX0FERF9JTkRFWEVTICovCiAKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfREFUQVNFVCAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZCh0YWJsZV9kYXRhc2V0KTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0RBVEFTRVQgKi8KIC8qKiBAfSAKICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jCmluZGV4IDg3Yzc0MTIuLjhlZDVjZDAgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMKQEAgLTg0LDYgKzg0LDcgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTk5LDYgKzEwMCwxOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9pdGVyYXRvcl9hbGwsIG1pYl9oZWxwZXJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfaXRlcmF0b3JfaW5zZXJ0X2NvbnRleHQsIHRhYmxlX2l0ZXJhdG9yX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9pdGVyYXRvcl9jcmVhdGVfdGFibGUsIHRhYmxlX2l0ZXJhdG9yX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9pdGVyYXRvcl9yb3dfZmlyc3QsIHRhYmxlX2l0ZXJhdG9yX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9pdGVyYXRvcl9yb3dfY291bnQsIHRhYmxlX2l0ZXJhdG9yX2FsbCkKKworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1NUQVNIX0NBQ0hFCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRhX2xpc3RfZ2V0X2xpc3Rfbm9kZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaF9hZGRfZGF0YSkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9TVEFTSF9DQUNIRSAqLworCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgogICogSXRlcmF0b3IgQVBJOiBUYWJsZSBtYWludGVuYW5jZQpAQCAtMTE3LDYgKzEzMCw3IEBACiAgICAgICoKICAgICAgKiBUaW1lIHdpbGwgc2hvdyB3aGV0aGVyIHRoaXMgaXMgYSBzZW5zaWJsZSBhcHByb2FjaCBvciBub3QuCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfQ1JFQVRFX1RBQkxFCiBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKgogbmV0c25tcF9pdGVyYXRvcl9jcmVhdGVfdGFibGUoIE5ldHNubXBfRmlyc3RfRGF0YV9Qb2ludCAqZmlyc3REUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05leHRfRGF0YV9Qb2ludCAgKm5leHREUCwKQEAgLTEzNyw3ICsxNTEsOSBAQAogCiAgICAgcmV0dXJuIGlpbmZvOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfQ1JFQVRFX1RBQkxFICovCiAKKy8qKiBGcmVlIHRoZSBtZW1vcnkgdGhhdCB3YXMgYWxsb2NhdGVkIGZvciBhIHRhYmxlIGl0ZXJhdG9yLiAqLwogdm9pZAogbmV0c25tcF9pdGVyYXRvcl9kZWxldGVfdGFibGUoIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8gKQogewpAQCAtMTQ4LDYgKzE2NCw3IEBACiAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKCBpaW5mby0+aW5kZXhlcyApOwogICAgICAgICBpaW5mby0+aW5kZXhlcyA9IE5VTEw7CiAgICAgfQorICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZShpaW5mby0+dGFibGVfcmVnaW5mbyk7CiAgICAgU05NUF9GUkVFKCBpaW5mbyApOwogfQogCkBAIC0xNjUsNyArMTgyLDM3IEBACiAgKgogICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCi0vKiogcmV0dXJucyBhIG5ldHNubXBfbWliX2hhbmRsZXIgb2JqZWN0IGZvciB0aGUgdGFibGVfaXRlcmF0b3IgaGVscGVyICovCitzdGF0aWMgbmV0c25tcF9pdGVyYXRvcl9pbmZvICoKK25ldHNubXBfaXRlcmF0b3JfcmVmKG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8pCit7CisgICAgaWluZm8tPnJlZmNudCsrOworICAgIHJldHVybiBpaW5mbzsKK30KKworc3RhdGljIHZvaWQKK25ldHNubXBfaXRlcmF0b3JfZGVyZWYobmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbykKK3sKKyAgICBpZiAoLS1paW5mby0+cmVmY250ID09IDApCisgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfZGVsZXRlX3RhYmxlKGlpbmZvKTsKK30KKwordm9pZCBuZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKG5ldHNubXBfbWliX2hhbmRsZXIgKmgpCit7CisgICAgbmV0c25tcF9hc3NlcnQoaCk7CisgICAgbmV0c25tcF9hc3NlcnQoaC0+bXl2b2lkKTsKKyAgICAoKG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqKShoLT5teXZvaWQpKS0+cmVmY250Kys7CisgICAgaC0+ZGF0YV9jbG9uZSA9ICh2b2lkICooKikodm9pZCAqKSluZXRzbm1wX2l0ZXJhdG9yX3JlZjsKKyAgICBoLT5kYXRhX2ZyZWUgID0gKHZvaWQoKikodm9pZCAqKSluZXRzbm1wX2l0ZXJhdG9yX2RlcmVmOworfQorCisvKioKKyAqIFJldHVybnMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIG9iamVjdCBmb3IgdGhlIHRhYmxlX2l0ZXJhdG9yIGhlbHBlci4KKyAqCisgKiBUaGUgY2FsbGVyIHJlbWFpbnMgdGhlIG93bmVyIG9mIHRoZSBpdGVyYXRvciBpbmZvcm1hdGlvbiBvYmplY3QgaWYKKyAqIHRoZSBmbGFnIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPIGhhcyBub3QgYmVlbiBzZXQsIGFuZCB0aGUgY3JlYXRlZAorICogaGFuZGxlciBiZWNvbWVzIHRoZSBvd25lciBvZiB0aGUgaXRlcmF0b3IgaW5mb3JtYXRpb24gaWYgdGhlIGZsYWcKKyAqIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPIGhhcyBiZWVuIHNldC4KKyAqLwogbmV0c25tcF9taWJfaGFuZGxlciAqCiBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcl9oYW5kbGVyKG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8pCiB7CkBAIC0xODIsNiArMjI5LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBtZS0+bXl2b2lkID0gaWluZm87CisgICAgaWYgKGlpbmZvLT5mbGFncyAmIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPKQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKG1lKTsKICAgICByZXR1cm4gbWU7CiB9CiAKQEAgLTE5NSw3ICsyNDQsMTEgQEAKICAqCiAgKiBAcGFyYW0gcmVnaW5mbyBpcyBhIHBvaW50ZXIgdG8gYSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHN0cnVjdAogICoKLSAqIEBwYXJhbSBpaW5mbyBpcyBhIHBvaW50ZXIgdG8gYSBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gc3RydWN0CisgKiBAcGFyYW0gaWluZm8gQSBwb2ludGVyIHRvIGEgbmV0c25tcF9pdGVyYXRvcl9pbmZvIHN0cnVjdC4gSWYgdGhlIGZsYWcKKyAqIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPIGlzIG5vdCBzZXQgaW4gaWluZm8tPmZsYWdzLCB0aGUgY2FsbGVyIHJlbWFpbnMKKyAqIHRoZSBvd25lciBvZiB0aGlzIHN0cnVjdHVyZS4gQW5kIGlmIHRoZSBmbGFnIE5FVFNOTVBfSEFORExFUl9PV05TX0lJTkZPIGlzCisgKiBzZXQgaW4gaWluZm8tPmZsYWdzLCBvd25lcnNoaXAgb2YgdGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBwYXNzZWQgdG8gdGhlCisgKiBoYW5kbGVyLgogICoKICAqIEByZXR1cm4gTUlCX1JFR0lTVEVSRURfT0sgaXMgcmV0dXJuZWQgaWYgdGhlIHJlZ2lzdHJhdGlvbiB3YXMgYSBzdWNjZXNzLgogICoJRmFpbHVyZXMgYXJlIE1JQl9SRUdJU1RSQVRJT05fRkFJTEVELCBNSUJfRFVQTElDQVRFX1JFR0lTVFJBVElPTi4KQEAgLTIwNiw3ICsyNTksOSBAQAogbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvKQogeworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFCiAgICAgcmVnaW5mby0+bW9kZXMgfD0gSEFORExFUl9DQU5fU1RBU0g7CisjZW5kaWYgIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF90YWJsZV9pdGVyYXRvcl9oYW5kbGVyKGlpbmZvKSk7CiAgICAgaWYgKCFpaW5mbykKQEAgLTIzNyw2ICsyOTIsNyBAQAogICAgIHJldHVybiBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0LCBUQUJMRV9JVEVSQVRPUl9OQU1FKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX0lURVJBVE9SX0lOU0VSVF9DT05URVhUCiAvKiogaW5zZXJ0cyB0YWJsZV9pdGVyYXRvciBzcGVjaWZpYyBkYXRhIGZvciBhIG5ld2x5CiAgKiAgY3JlYXRlZCByb3cgaW50byBhIHJlcXVlc3QgKi8KIE5FVFNOTVBfSU5MSU5FIHZvaWQKQEAgLTMwMSw2ICszNTcsNyBAQAogICAgICAgICB9CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfSU5TRVJUX0NPTlRFWFQgKi8KIAogI2RlZmluZSBUSV9SRVFVRVNUX0NBQ0hFICJ0aV9jYWNoZSIKIApAQCAtNDAzLDEyICs0NjAsMTQgQEAKICAgICB2b2lkICAgICAgICAgICAqY2FsbGJhY2tfZGF0YV9jb250ZXh0ID0gTlVMTDsKICAgICB0aV9jYWNoZV9pbmZvICAqdGlfaW5mbyA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgIHJlcXVlc3RfY291bnQgPSAwOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFCiAgICAgbmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqKmNpbmZvID0gTlVMTDsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKm9sZF9pbmRleGVzID0gTlVMTCwgKnZiOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX3JlZ19pbmZvID0gTlVMTDsKICAgICBpbnQgaTsKICAgICBuZXRzbm1wX2RhdGFfbGlzdCAgICAqbGRhdGEgPSBOVUxMOwotICAgIAorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUgKi8KKwogICAgIGlpbmZvID0gKG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqKSBoYW5kbGVyLT5teXZvaWQ7CiAgICAgaWYgKCFpaW5mbyB8fCAhcmVnaW5mbyB8fCAhcmVxaW5mbykKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKQEAgLTQzNCw2ICs0OTMsNyBAQAogCiAgICAgLyogcHJlbGltaW5hcnkgYW5hbHlzaXMgKi8KICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRQogICAgIGNhc2UgTU9ERV9HRVRfU1RBU0g6CiAgICAgICAgIGNpbmZvID0gbmV0c25tcF9leHRyYWN0X3N0YXNoX2NhY2hlKHJlcWluZm8pOwogICAgICAgICB0YWJsZV9yZWdfaW5mbyA9IG5ldHNubXBfZmluZF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyhyZWdpbmZvKTsKQEAgLTQ1Miw2ICs1MTIsNyBAQAogICAgICAgICAvKiByZW1lbWJlciB0aGUgaW5kZXhlcyB0aGF0IHdlcmUgb3JpZ2luYWxseSBwYXJzZWQuICovCiAgICAgICAgIG9sZF9pbmRleGVzID0gdGFibGVfaW5mby0+aW5kZXhlczsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRSAqLwogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgICAgIGZvcihyZXF1ZXN0ID0gcmVxdWVzdHMgOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgewpAQCAtNTA1LDggKzU2NiwxMSBAQAogICAgICAqLwogICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUIHx8CiAgICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRORVhUIHx8Ci0gICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRfU1RBU0ggfHwKLSAgICAgICAgcmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSkgeworICAgICAgICByZXFpbmZvLT5tb2RlID09IE1PREVfR0VUX1NUQVNICisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgICAgICB8fCByZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICkgewogICAgICAgICAvKgogICAgICAgICAgKiBDb3VudCB0aGUgbnVtYmVyIG9mIHJlcXVlc3QgaW4gdGhlIGxpc3QsCiAgICAgICAgICAqICAgc28gdGhhdCB3ZSdsbCBrbm93IHdoZW4gd2UncmUgZmluaXNoZWQKQEAgLTU5NSw3ICs2NTksOSBAQAogCiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9HRVQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgLyogbG9va2luZyBmb3IgZXhhY3QgbWF0Y2hlcyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfb2lkX25vYWxsb2MobXluYW1lLCBNQVhfT0lEX0xFTiwgJm15bmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvaWQsIGNvbG9pZF9sZW4sIGluZGV4X3NlYXJjaCk7CkBAIC02MzAsNiArNjk2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RBU0hfQ0FDSEUKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNT0RFX0dFVF9TVEFTSDoKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbGxlY3QgZGF0YSBmb3IgZWFjaCBjb2x1bW4gZm9yIGV2ZXJ5IHJvdyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfb2lkX25vYWxsb2MobXluYW1lLCBNQVhfT0lEX0xFTiwgJm15bmFtZV9sZW4sCkBAIC02ODEsNiArNzQ4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUgPSBNT0RFX0dFVF9TVEFTSDsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmICAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVNIX0NBQ0hFICovCiAKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb29raW5nIGZvciAibmV4dCIgbWF0Y2hlcyAqLwpAQCAtNzIwLDEyICs3ODgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgICAgICAgICAgICAgICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAvKiBuZWVkZWQgcHJvY2Vzc2luZyBhbHJlYWR5IGRvbmUgaW4gUkVTRVJWRTEgKi8KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLApAQCAtNzg4LDggKzg1OCwxMSBAQAogICAgIH0KIAogICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUIHx8Ci0gICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRORVhUIHx8Ci0gICAgICAgIHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEpIHsKKyAgICAgICAgcmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVE5FWFQKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgIHx8IHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfUkVTRVJWRTEKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICAgICAgKSB7CiAgICAgICAgIC8qIHBlciByZXF1ZXN0IGxhc3QgbWludXRlIHByb2Nlc3NpbmcgKi8KICAgICAgICAgZm9yKHJlcXVlc3QgPSByZXF1ZXN0cyA7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQpAQCAtODI1LDcgKzg5OCw5IEBACiAgICAgICAgICAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCiAKICAgICAgICAgICAgIGNhc2UgTU9ERV9HRVQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICBpZiAodGlfaW5mby0+ZGF0YV9jb250ZXh0KQogICAgICAgICAgICAgICAgICAgICAvKiB3ZSBkb24ndCBhZGQgYSBmcmVlIHBvaW50ZXIsIHNpbmNlIGl0J3MgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIFRJX1JFUVVFU1RfQ0FDSEUgaW5zdGVhZCAqLwpAQCAtODQ4LDEwICs5MjMsMTIgQEAKICAgICAgICAgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRORVhUKSB7CiAgICAgICAgICAgICByZXFpbmZvLT5tb2RlID0gTU9ERV9HRVQ7CiAgICAgICAgIH0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRQogICAgIH0gZWxzZSBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX0dFVF9TVEFTSCkgewogICAgICAgICBuZXRzbm1wX2ZyZWVfcmVxdWVzdF9kYXRhX3NldHMocmVxdG1wKTsKICAgICAgICAgU05NUF9GUkVFKHJlcXRtcCk7CiAgICAgICAgIHRhYmxlX2luZm8tPmluZGV4ZXMgPSBvbGRfaW5kZXhlczsKKyNlbmRpZiAgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFTSF9DQUNIRSAqLwogICAgIH0KIAogCkBAIC04ODIsNiArOTU5LDcgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9JVEVSQVRPUl9ST1dfRklSU1QKIHZvaWQgKgogbmV0c25tcF9pdGVyYXRvcl9yb3dfZmlyc3QoIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8gKSB7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2cDEsICp2cDI7CkBAIC05MDAsNiArOTc4LDcgQEAKICAgICBzbm1wX2ZyZWVfdmFyYmluZCggdnAxICk7CiAgICAgcmV0dXJuIGN0eDI7ICAvKiBvciAqY3R4MiA/PyAqLwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfUk9XX0ZJUlNUICovCiAKIHZvaWQgKgogbmV0c25tcF9pdGVyYXRvcl9yb3dfZ2V0KCBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvLCB2b2lkICpyb3cgKQpAQCAtMTEwOCw2ICsxMTg3LDcgQEAKICAgICByZXR1cm4gKCB2cDIgPyBjdHgyIDogTlVMTCApOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfUk9XX0NPVU5UCiBpbnQKIG5ldHNubXBfaXRlcmF0b3Jfcm93X2NvdW50KCBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvICkKIHsKQEAgLTExNDMsNiArMTIyMyw3IEBACiAgICAgc25tcF9mcmVlX3ZhcmJpbmQoIHZwMSApOwogICAgIHJldHVybiBpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfSVRFUkFUT1JfUk9XX0NPVU5UICovCiAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYyBiL2FnZW50L2hlbHBlcnMvdGFibGVfcm93LmMKaW5kZXggYmJjNDg0Zi4uMmEzM2YyMyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jCkBAIC04LDYgKzgsNyBAQAogI2RlZmluZSBUQUJMRV9ST1dfREFUQSAgInRhYmxlX3JvdyIKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0yMyw2ICsyNCwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfcm93X2FsbCwgbWliX2hlbHBlcnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV9yb3dfZXh0cmFjdCwgdGFibGVfcm93X2FsbCkKKworCiAvKgogICogc25tcC5oOiNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfU0VUX0JFR0lOICAgICAgICAtMSAKICAqIHNubXAuaDojZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMSAgICAgMCAKQEAgLTE1NCwxMSArMTYwLDEzIEBACiAKIAogLyoqIHJldHVybiB0aGUgcm93IGRhdGEgc3RydWN0dXJlIHN1cHBsaWVkIHRvIHRoZSB0YWJsZV9yb3cgaGVscGVyICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfUk9XX0VYVFJBQ1QKIHZvaWQgKgogbmV0c25tcF90YWJsZV9yb3dfZXh0cmFjdChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKIHsKICAgICByZXR1cm4gbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwgVEFCTEVfUk9XX0RBVEEpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfUk9XX0VYVFJBQ1QgKi8KIC8qKiBAY29uZCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jIGIvYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jCmluZGV4IGNmMTY2ZTMuLjg4NjUwODQgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTE5LDYgKzIwLDIyIEBACiAjaW5jbHVkZSA8ZG1hbGxvYy5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV90ZGF0YV9hbGwsIG1pYl9oZWxwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3RkYXRhLCB0YWJsZV90ZGF0YV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfdGRhdGFfZGVsZXRlX3RhYmxlLCB0YWJsZV90ZGF0YV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGFibGVfdGRhdGFfZXh0cmFjdF90YWJsZSwgdGFibGVfdGRhdGFfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRhYmxlX3RkYXRhX3JlbW92ZV9yb3csIHRhYmxlX3RkYXRhX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0YWJsZV90ZGF0YV9pbnNlcnRfcm93LCB0YWJsZV90ZGF0YV9hbGwpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9UQUJMRV9UREFUQQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfVEFCTEVfVERBVEFfUkVNT1ZFX1JPVworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19yZW1vdmUpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfVEFCTEVfVERBVEFfUkVNT1ZFX1JPVyAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX1RBQkxFX1REQVRBICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQQorCiAvKiogQGRlZmdyb3VwIHRkYXRhIHRkYXRhCiAgKiAgSW1wbGVtZW50IGEgdGFibGUgd2l0aCBkYXRhbWF0dGVkIHN0b3JhZ2UuCiAgKiAgQGluZ3JvdXAgdGFibGUKQEAgLTcyLDYgKzg5LDcgQEAKICAgICByZXR1cm4gdGFibGU7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQV9ERUxFVEVfVEFCTEUKIC8qKiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgJ3RkYXRhJyB0YWJsZSBkYXRhIHN0cnVjdHVyZSAqLwogdm9pZAogbmV0c25tcF90ZGF0YV9kZWxldGVfdGFibGUobmV0c25tcF90ZGF0YSAqdGFibGUpCkBAIC04Nyw2ICsxMDUsNyBAQAogICAgIFNOTVBfRlJFRSh0YWJsZSk7CiAgICAgcmV0dXJuOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEFfREVMRVRFX1RBQkxFICovCiAKIC8qKiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBuZXcgcm93IGRhdGEgc3RydWN0dXJlICovCiBuZXRzbm1wX3RkYXRhX3JvdyAqCkBAIC05Nyw2ICsxMTYsOCBAQAogfQogCiAvKiogY2xvbmVzIGEgJ3RkYXRhJyByb3cuIERPRVMgTk9UIENMT05FIFRIRSBUQUJMRS1TUEVDSUZJQyBFTlRSWSBEQVRBLiAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkYXRhX2Nsb25lX3JvdywgdGFibGVfdGRhdGFfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0NMT05FX1JPVwogbmV0c25tcF90ZGF0YV9yb3cgKgogbmV0c25tcF90ZGF0YV9jbG9uZV9yb3cobmV0c25tcF90ZGF0YV9yb3cgKnJvdykKIHsKQEAgLTEyOSw5ICsxNTAsMTIgQEAKIAogICAgIHJldHVybiBuZXdyb3c7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9DTE9ORV9ST1cgKi8KIAogLyoqIGNvcHkgdGhlIGNvbnRlbnRzIG9mIGEgJ3RkYXRhJyByb3cuCiAgICAgRE9FUyBOT1QgQ09QWSBUSEUgVEFCTEUtU1BFQ0lGSUMgRU5UUlkgREFUQS4gKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0ZGF0YV9jb3B5X3JvdywgdGFibGVfdGRhdGFfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0NPUFlfUk9XCiBpbnQKIG5ldHNubXBfdGRhdGFfY29weV9yb3cobmV0c25tcF90ZGF0YV9yb3cgKmRzdF9yb3csIG5ldHNubXBfdGRhdGFfcm93ICpzcmNfcm93KQogewpAQCAtMTU1LDYgKzE3OSw3IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0NPUFlfUk9XICovCiAKIC8qKiBkZWxldGVzIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgc3BlY2lmaWVkIHJvdwogICogIHJldHVybnMgdGhlIHRhYmxlLXNwZWNpZmljIGVudHJ5IGRhdGEKQEAgLTIzMSw2ICsyNTYsOCBAQAogfQogCiAvKiogc3dhcHMgb3V0IG9yaWdyb3cgd2l0aCBuZXdyb3cuICBUaGlzIGRvZXMgKm5vdCogZGVsZXRlL2ZyZWUgYW55dGhpbmchICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRhdGFfcmVwbGFjZV9yb3csIHRhYmxlX3RkYXRhX2FsbCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9SRVBMQUNFX1JPVwogdm9pZAogbmV0c25tcF90ZGF0YV9yZXBsYWNlX3JvdyhuZXRzbm1wX3RkYXRhICp0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RkYXRhX3JvdyAqb3JpZ3JvdywKQEAgLTIzOSw2ICsyNjYsNyBAQAogICAgIG5ldHNubXBfdGRhdGFfcmVtb3ZlX3Jvdyh0YWJsZSwgb3JpZ3Jvdyk7CiAgICAgbmV0c25tcF90ZGF0YV9hZGRfcm93KHRhYmxlLCBuZXdyb3cpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfUkVQTEFDRV9ST1cgKi8KIAogLyoqCiAgKiByZW1vdmVzIGEgcm93IGZyb20gdGhlIGdpdmVuIHRhYmxlIGFuZCByZXR1cm5zIGl0IChubyBmcmVlJ3MgY2FsbGVkKQpAQCAtMzMzLDcgKzM2MSw5IEBACiAgICAgICAgIG5lZWRfcHJvY2Vzc2luZyA9IDA7IC8qIG9ubHkgbmVlZCBwcm9jZXNzaW5nIGlmIHNvbWUgdmFycyBmb3VuZCAqLwogICAgICAgICAvKiogRmFsbCB0aHJvdWdoICovCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCkBAIC0zODAsMTMgKzQxMCwxNyBAQAogICAgICAgICAgICAgICAgICAgdGFibGUtPmNvbnRhaW5lciwgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkYXRhX3VucmVnaXN0ZXIsIHRhYmxlX3RkYXRhX2FsbCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9VTlJFR0lTVEVSCiBpbnQKIG5ldHNubXBfdGRhdGFfdW5yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvKQogewogICAgIC8qIGZyZWUgdGFibGU7ICovCiAgICAgcmV0dXJuIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3VucmVnaXN0ZXIocmVnaW5mbyk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9VTlJFR0lTVEVSICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQV9FWFRSQUNUX1RBQkxFCiAvKiogZXh0cmFjdHMgdGhlIHRkYXRhIHRhYmxlIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlICovCiBuZXRzbm1wX3RkYXRhICoKIG5ldHNubXBfdGRhdGFfZXh0cmFjdF90YWJsZShuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKQEAgLTM5NCw4ICs0MjgsMTEgQEAKICAgICByZXR1cm4gKG5ldHNubXBfdGRhdGEgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfVERBVEFfVEFCTEUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEFfRVhUUkFDVF9UQUJMRSAqLwogCiAvKiogZXh0cmFjdHMgdGhlIHRkYXRhIGNvbnRhaW5lciBmcm9tIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSAqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkYXRhX2V4dHJhY3RfY29udGFpbmVyLCB0YWJsZV90ZGF0YV9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERBVEFfRVhUUkFDVF9DT05UQUlORVIKIG5ldHNubXBfY29udGFpbmVyICoKIG5ldHNubXBfdGRhdGFfZXh0cmFjdF9jb250YWluZXIobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QpCiB7CkBAIC00MDMsNiArNDQwLDcgQEAKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwgVEFCTEVfVERBVEFfVEFCTEUpOwogICAgIHJldHVybiAoIHRkYXRhID8gdGRhdGEtPmNvbnRhaW5lciA6IE5VTEwgKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX0VYVFJBQ1RfQ09OVEFJTkVSICovCiAKIC8qKiBleHRyYWN0cyB0aGUgdGRhdGEgcm93IGJlaW5nIGFjY2Vzc2VkIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlICovCiBuZXRzbm1wX3RkYXRhX3JvdyAqCkBAIC00MjQsNiArNDYyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQUJMRV9UREFUQV9JTlNFUlRfUk9XCiAvKiogaW5zZXJ0cyBhIG5ld2x5IGNyZWF0ZWQgdGRhdGEgcm93IGludG8gYSByZXF1ZXN0ICovCiBORVRTTk1QX0lOTElORSB2b2lkCiBuZXRzbm1wX2luc2VydF90ZGF0YV9yb3cobmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QsCkBAIC00MzEsNyArNDcwLDkgQEAKIHsKICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfaW5zZXJ0KHJlcXVlc3QsIChuZXRzbm1wX2luZGV4ICopcm93KTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBX0lOU0VSVF9ST1cgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBX1JFTU9WRV9ST1cKIC8qKiBpbnNlcnRzIGEgbmV3bHkgY3JlYXRlZCB0ZGF0YSByb3cgaW50byBhIHJlcXVlc3QgKi8KIE5FVFNOTVBfSU5MSU5FIHZvaWQKIG5ldHNubXBfcmVtb3ZlX3RkYXRhX3JvdyhuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKQEAgLTQzOSw2ICs0ODAsNyBAQAogewogICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19yZW1vdmUocmVxdWVzdCwgKG5ldHNubXBfaW5kZXggKilyb3cpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEFCTEVfVERBVEFfUkVNT1ZFX1JPVyAqLwogCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTUzNiw2ICs1NzgsOCBAQAogICAgIHJldHVybiAobmV0c25tcF90ZGF0YV9yb3cqKUNPTlRBSU5FUl9ORVhUKCB0YWJsZS0+Y29udGFpbmVyLCAmaW5kZXggKTsKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRkYXRhX3Jvd19jb3VudCwgdGFibGVfdGRhdGFfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX1JPV19DT1VOVAogaW50CiBuZXRzbm1wX3RkYXRhX3Jvd19jb3VudChuZXRzbm1wX3RkYXRhICp0YWJsZSkKIHsKQEAgLTU0Myw2ICs1ODcsNyBAQAogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoIHRhYmxlLT5jb250YWluZXIgKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1REQVRBX1JPV19DT1VOVCAqLwogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKgpAQCAtNTUyLDYgKzU5Nyw4IEBACiAKIAogLyoqIGNvbXBhcmUgYSByb3cgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggdmFsdWVzICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRhdGFfY29tcGFyZV9pZHgsIHRhYmxlX3RkYXRhX2FsbCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9DT01QQVJFX0lEWAogaW50CiBuZXRzbm1wX3RkYXRhX2NvbXBhcmVfaWR4KG5ldHNubXBfdGRhdGFfcm93ICAgICAqcm93LAogICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmluZGV4ZXMpCkBAIC01NjMsNiArNjEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBpbmRleGVzKTsKICAgICByZXR1cm4gbmV0c25tcF90ZGF0YV9jb21wYXJlX29pZChyb3csIHNlYXJjaGZvciwgc2VhcmNoZm9yX2xlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UREFUQV9DT01QQVJFX0lEWCAqLwogCiAvKiogY29tcGFyZSBhIHJvdyB3aXRoIHRoZSBnaXZlbiBpbmRleCBPSUQgKi8KIGludApAQCAtNTk0LDYgKzY0MiwxMCBAQAogICAgIHJldHVybiBzbm1wX29pZHRyZWVfY29tcGFyZSggaW5kZXgtPm9pZHMsIGluZGV4LT5sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJldG8sICAgY29tcGFyZXRvX2xlbik7CiB9CisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKHRhYmxlX3RkYXRhKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RBQkxFX1REQVRBICovCisKIAogLyoqIEB9IAogICovCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3dhdGNoZXIuYyBiL2FnZW50L2hlbHBlcnMvd2F0Y2hlci5jCmluZGV4IGRlNTk2ODAuLjliMzkzM2IgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvd2F0Y2hlci5jCisrKyBiL2FnZW50L2hlbHBlcnMvd2F0Y2hlci5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0xOSw2ICsyMCwxOSBAQAogI2RlZmluZSBmcmVlX3dyYXBwZXIgZnJlZQogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfYWxsLCBtaWJfaGVscGVycykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih3YXRjaGVyX2NyZWF0ZV9pbmZvNiwgd2F0Y2hlcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yod2F0Y2hlcl9yZWdpc3Rlcl90aW1lc3RhbXAsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfdWxvbmdfc2NhbGFyLCB3YXRjaGVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih3YXRjaGVyX3JlYWRfb25seV91bG9uZ19zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfcmVhZF9vbmx5X2ludF9zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfbG9uZ19zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHdhdGNoZXJfcmVhZF9vbmx5X2xvbmdfc2NhbGFyLCB3YXRjaGVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih3YXRjaGVyX2ludF9zY2FsYXIsIHdhdGNoZXJfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlYWRfb25seV9jb3VudGVyMzJfc2NhbGFyLCB3YXRjaGVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih3YXRjaGVyX3NwaW5sb2NrLCB3YXRjaGVyX2FsbCkKKwogLyoqIEBkZWZncm91cCB3YXRjaGVyIHdhdGNoZXIKICAqICBXYXRjaCBhIHNwZWNpZmllZCB2YXJpYWJsZSBhbmQgcHJvY2VzcyBpdCBhcyBhbiBpbnN0YW5jZSBvciBzY2FsYXIgb2JqZWN0CiAgKiAgQGluZ3JvdXAgbGVhZgpAQCAtNTEsNiArNjUsNyBAQAogICAgIHJldHVybiB3aW5mbzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfQ1JFQVRFX0lORk82CiBuZXRzbm1wX3dhdGNoZXJfaW5mbyAqCiBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm82KHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBzaXplX3QgbWF4X3NpemUsIHNpemVfdCogc2l6ZV9wKQpAQCAtNjEsNiArNzYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3ApOwogICAgIHJldHVybiB3aW5mbzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfQ1JFQVRFX0lORk82ICovCiAKIG5ldHNubXBfd2F0Y2hlcl9pbmZvICoKIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8obmV0c25tcF93YXRjaGVyX2luZm8gKndpbmZvLApAQCAtODIsNiArOTgsMTEgQEAKICAgICByZXR1cm4gd2luZm87CiB9CiAKKy8qKgorICogUmVnaXN0ZXIgYSB3YXRjaGVkIHNjYWxhci4gVGhlIGNhbGxlciByZW1haW5zIHRoZSBvd25lciBvZiB3YXRjaGluZm8uCisgKgorICogQHNlZSBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKCkKKyAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3YXRjaGluZm8pCkBAIC05NSw2ICsxMTYsMzAgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShyZWdpbmZvKTsKIH0KIAorLyoqCisgKiBSZWdpc3RlciBhIHdhdGNoZWQgc2NhbGFyLiBPd25lcnNoaXAgb2Ygd2F0Y2hpbmZvIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBoYW5kbGVyLgorICoKKyAqIEBzZWUgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKCkKKyAqLworaW50CituZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisJCQkJICAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2F0Y2hpbmZvKQoreworICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKndoYW5kbGVyOworCisgICAgd2hhbmRsZXIgICAgICAgICA9IG5ldHNubXBfZ2V0X3dhdGNoZXJfaGFuZGxlcigpOworICAgIHdoYW5kbGVyLT5teXZvaWQgPSAodm9pZCAqKXdhdGNoaW5mbzsKKyAgICBuZXRzbm1wX293bnNfd2F0Y2hlcl9pbmZvKHdoYW5kbGVyKTsKKworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgd2hhbmRsZXIpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKHJlZ2luZm8pOworfQorCisvKioKKyAqIFJlZ2lzdGVyIGEgd2F0Y2hlZCBzY2FsYXIuIFRoZSBjYWxsZXIgcmVtYWlucyB0aGUgb3duZXIgb2Ygd2F0Y2hpbmZvLgorICoKKyAqIEBzZWUgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIoKQorICovCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3YXRjaGluZm8pCkBAIC0xMDgsNiArMTUzLDM0IEBACiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKHJlZ2luZm8pOwogfQogCisvKioKKyAqIFJlZ2lzdGVyIGEgd2F0Y2hlZCBzY2FsYXIuIE93bmVyc2hpcCBvZiB3YXRjaGluZm8gaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGhhbmRsZXIuCisgKgorICogQHNlZSBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCkKKyAqLworaW50CituZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgKndhdGNoaW5mbykKK3sKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICp3aGFuZGxlcjsKKworICAgIHdoYW5kbGVyICAgICAgICAgPSBuZXRzbm1wX2dldF93YXRjaGVyX2hhbmRsZXIoKTsKKyAgICB3aGFuZGxlci0+bXl2b2lkID0gKHZvaWQgKil3YXRjaGluZm87CisgICAgbmV0c25tcF9vd25zX3dhdGNoZXJfaW5mbyh3aGFuZGxlcik7CisKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIHdoYW5kbGVyKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIocmVnaW5mbyk7Cit9CisKK3ZvaWQKK25ldHNubXBfb3duc193YXRjaGVyX2luZm8obmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcikKK3sKKyAgICBuZXRzbm1wX2Fzc2VydChoYW5kbGVyKTsKKyAgICBuZXRzbm1wX2Fzc2VydChoYW5kbGVyLT5teXZvaWQpOworICAgIGhhbmRsZXItPmRhdGFfY2xvbmUgPSAodm9pZCAqKCopKHZvaWQgKikpbmV0c25tcF9jbG9uZV93YXRjaGVyX2luZm87CisgICAgaGFuZGxlci0+ZGF0YV9mcmVlID0gZnJlZTsKK30KKwogLyoqIEBjb25kICovCiAKIE5FVFNOTVBfU1RBVElDX0lOTElORSBzaXplX3QKQEAgLTE5MSw2ICsyNjQsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBTRVQgcmVxdWVzdHMuICBTaG91bGQgb25seSBnZXQgaGVyZSBpZiByZWdpc3RlcmVkIFJXUklURSAKICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IHdpbmZvLT50eXBlKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9XUk9OR1RZUEUpOwpAQCAtMjQ2LDYgKzMyMCwxMiBAQAogCiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndhdGNoZXIgaGFuZGxlciBjYWxsZWQgd2l0aCBhbiB1bmtub3duIG1vZGU6ICVkXG4iLAorICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKIAogICAgIH0KIApAQCAtMjg0LDYgKzM2NCw3IEBACiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKHJlZ2luZm8pOyAgIC8qIFhYWCAtIG9yIGluc3RhbmNlPyAqLwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUdJU1RFUl9USU1FU1RBTVAKIGludAogbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3RpbWVzdGFtcChuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZXJfdCB0aW1lc3RhbXApCkBAIC0yOTQsNiArMzc1LDcgQEAKIAogICAgIHJldHVybiBuZXRzbm1wX3dhdGNoZWRfdGltZXN0YW1wX3JlZ2lzdGVyKHdoYW5kbGVyLCByZWdpbmZvLCB0aW1lc3RhbXApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUdJU1RFUl9USU1FU1RBTVAgKi8KIAogCiBpbnQKQEAgLTMzMSwxMSArNDEzLDEzIEBACiAgICAgICAgICAqIFRpbWVzdGFtcHMgYXJlIGluaGVyZW50bHkgUmVhZC1Pbmx5LAogICAgICAgICAgKiAgc28gZG9uJ3QgbmVlZCB0byBzdXBwb3J0IFNFVCByZXF1ZXN0cy4KICAgICAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfTk9UV1JJVEFCTEUpOwogICAgICAgICBoYW5kbGVyLT5mbGFncyB8PSBNSUJfSEFORExFUl9BVVRPX05FWFRfT1ZFUlJJREVfT05DRTsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIC8qIG5leHQgaGFuZGxlciBjYWxsZWQgYXV0b21hdGljYWxseSAtICdBVVRPX05FWFQnICovCkBAIC0zNDksNiArNDMzLDggQEAKICAgICAgKgogICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1NQSU5MT0NLCisKIG5ldHNubXBfbWliX2hhbmRsZXIgKgogbmV0c25tcF9nZXRfd2F0Y2hlZF9zcGlubG9ja19oYW5kbGVyKHZvaWQpCiB7CkBAIC0zNzQsNyArNDYwLDcgQEAKICAgICB3aW5mbyAgICAgICAgICAgID0gbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKCh2b2lkICopc3BpbmxvY2ssCiAJCSAgICAgICAgICAgc2l6ZW9mKGludCksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgd2hhbmRsZXIpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKHJlZ2luZm8sIHdpbmZvKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIocmVnaW5mbywgd2luZm8pOwogfQogCiAKQEAgLTM5OCw2ICs0ODQsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBFbnN1cmUgdGhlIGFzc2lnbmVkIHZhbHVlIG1hdGNoZXMgdGhlIGN1cnJlbnQgb25lCiAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKQEAgLTQxOCwxMSArNTA1LDEzIEBACiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAJKCpzcGlubG9jaykrKzsKIAlicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICAvKiBuZXh0IGhhbmRsZXIgY2FsbGVkIGF1dG9tYXRpY2FsbHkgLSAnQVVUT19ORVhUJyAqLwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9TUElOTE9DSyAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC00MzEsMTE4ICs1MjAsMTQyIEBACiAgICAgICoKICAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2Nsb25lX3dhdGNoZXJfaW5mbyhuZXRzbm1wX3dhdGNoZXJfaW5mbyAqd2luZm8pCit7CisgICAgbmV0c25tcF93YXRjaGVyX2luZm8gKmNvcHkgPSBtYWxsb2Moc2l6ZW9mKCpjb3B5KSk7CisgICAgaWYgKGNvcHkpCisJKmNvcHkgPSAqd2luZm87CisgICAgcmV0dXJuIGNvcHk7Cit9CisKK3N0YXRpYyBpbnQKK3JlZ2lzdGVyX3NjYWxhcl93YXRjaGVyKGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwgaW50IG1vZGUpCit7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbyA9IE5VTEw7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqd2hhbmRsZXIgPSBOVUxMOworICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvKiB3YXRjaGluZm8gPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oZGF0YSwgc2l6ZSwgdHlwZSwgV0FUQ0hFUl9GSVhFRF9TSVpFKTsKKyAgICBpZiAod2F0Y2hpbmZvKQorICAgICAgICB3aGFuZGxlciA9IG5ldHNubXBfZ2V0X3dhdGNoZXJfaGFuZGxlcigpOworICAgIGlmICh3YXRjaGluZm8gJiYgd2hhbmRsZXIpIHsKKyAgICAgICAgd2hhbmRsZXItPm15dm9pZCA9IHdhdGNoaW5mbzsKKwluZXRzbm1wX293bnNfd2F0Y2hlcl9pbmZvKHdoYW5kbGVyKTsKKyAgICAgICAgcmVnaW5mbyA9CisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgbW9kZSk7CisgICAgfQorICAgIGlmICh3YXRjaGluZm8gJiYgd2hhbmRsZXIgJiYgcmVnaW5mbykgeworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIHdoYW5kbGVyKTsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKHJlZ2luZm8pOworICAgIH0KKyAgICBpZiAod2hhbmRsZXIpCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKHdoYW5kbGVyKTsKKyAgICBlbHNlIGlmICh3YXRjaGluZm8pCisgICAgICAgIGZyZWUod2F0Y2hpbmZvKTsKKyAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKK30KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfVUxPTkdfU0NBTEFSCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFICksCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCi0gICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCB1X2xvbmcgKSwKLSAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSApKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJfc2NhbGFyX3dhdGNoZXIoCisgICAgICAgIG5hbWUsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAorICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIHVfbG9uZyApLAorICAgICAgICBBU05fVU5TSUdORUQsIHN1YmhhbmRsZXIsIEhBTkRMRVJfQ0FOX1JXUklURSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9XQVRDSEVSX1VMT05HX1NDQUxBUiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfVUxPTkdfU0NBTEFSCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKLSAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZICksCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCi0gICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCB1X2xvbmcgKSwKLSAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSApKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJfc2NhbGFyX3dhdGNoZXIoCisgICAgICAgIG5hbWUsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAorICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIHVfbG9uZyApLAorICAgICAgICBBU05fVU5TSUdORUQsIHN1YmhhbmRsZXIsIEhBTkRMRVJfQ0FOX1JPTkxZKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfUkVBRF9PTkxZX1VMT05HX1NDQUxBUiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9MT05HX1NDQUxBUgogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKLSAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSApLAotICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAotICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggbG9uZyApLAotICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUgKSk7CisgICAgcmV0dXJuIHJlZ2lzdGVyX3NjYWxhcl93YXRjaGVyKAorICAgICAgICBuYW1lLCByZWdfb2lkLCByZWdfb2lkX2xlbiwKKyAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCBsb25nICksCisgICAgICAgIEFTTl9JTlRFR0VSLCBzdWJoYW5kbGVyLCBIQU5ETEVSX0NBTl9SV1JJVEUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9MT05HX1NDQUxBUiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfTE9OR19TQ0FMQVIKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkgKSwKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKLSAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIGxvbmcgKSwKLSAgICAgICAgICAgICAgICAgICBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFICkpOworICAgIHJldHVybiByZWdpc3Rlcl9zY2FsYXJfd2F0Y2hlcigKKyAgICAgICAgbmFtZSwgcmVnX29pZCwgcmVnX29pZF9sZW4sCisgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggbG9uZyApLAorICAgICAgICBBU05fSU5URUdFUiwgc3ViaGFuZGxlciwgSEFORExFUl9DQU5fUk9OTFkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfTE9OR19TQ0FMQVIgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9JTlRfU0NBTEFSCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfaW50X3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKLSAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSApLAotICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAotICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggaW50ICksCi0gICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSApKTsKKyAgICByZXR1cm4gcmVnaXN0ZXJfc2NhbGFyX3dhdGNoZXIoCisgICAgICAgIG5hbWUsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAorICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIGludCApLAorICAgICAgICBBU05fSU5URUdFUiwgc3ViaGFuZGxlciwgSEFORExFUl9DQU5fUldSSVRFKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfSU5UX1NDQUxBUiAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfV0FUQ0hFUl9SRUFEX09OTFlfSU5UX1NDQUxBUgogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAotICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkgKSwKLSAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKLSAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoIGludCApLAotICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUgKSk7CisgICAgcmV0dXJuIHJlZ2lzdGVyX3NjYWxhcl93YXRjaGVyKAorICAgICAgICBuYW1lLCByZWdfb2lkLCByZWdfb2lkX2xlbiwKKyAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCBpbnQgKSwKKyAgICAgICAgQVNOX0lOVEVHRVIsIHN1YmhhbmRsZXIsIEhBTkRMRVJfQ0FOX1JPTkxZKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1dBVENIRVJfUkVBRF9PTkxZX0lOVF9TQ0FMQVIgKi8KIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9PTkxZX0NPVU5URVIzMl9TQ0FMQVIKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKLSAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgIHJlZ19vaWQsIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZICksCi0gICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCi0gICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKCB1X2xvbmcgKSwKLSAgICAgICAgICAgICAgICAgICBBU05fQ09VTlRFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFICkpOworICAgIHJldHVybiByZWdpc3Rlcl9zY2FsYXJfd2F0Y2hlcigKKyAgICAgICAgbmFtZSwgcmVnX29pZCwgcmVnX29pZF9sZW4sCisgICAgICAgICh2b2lkICopaXQsIHNpemVvZiggdV9sb25nICksCisgICAgICAgIEFTTl9DT1VOVEVSLCBzdWJoYW5kbGVyLCBIQU5ETEVSX0NBTl9ST05MWSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX09OTFlfQ09VTlRFUjMyX1NDQUxBUiAqLwogLyoqICBAfSAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQgYi9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQKaW5kZXggZGFiZjBhYi4uYTRlOTcxMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kCisrKyBiL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZApAQCAtMzgsNiArMzgsNyBAQAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03Myw2ICs3NCw3IEBACiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExNCw2ICsxMTYsNyBAQAogLi9oZWFkZXJfY29tcGxleC5sbzogaGVhZGVyX2NvbXBsZXguaAogLi9rZXJuZWxfc3Vub3M1LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE4MSw2ICsxODQsNyBAQAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yMjEsNiArMjI1LDcgQEAKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdGVzdGhhbmRsZXIubG86IHRlc3RoYW5kbGVyLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTI4OCw2ICsyOTMsNyBAQAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTMyNiwxMyArMzMyLDE1IEBACiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmggc3RydWN0LmgKLS4vdXRpbF9mdW5jcy5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91dGlsX2Z1bmNzLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAorLi91dGlsX2Z1bmNzLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3V0aWxfZnVuY3MubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL3V0aWxfZnVuY3MubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCB1dGlsaXRpZXMvZXhlY3V0ZS5oCiAuL3V0aWxfZnVuY3MubG86IHVjZC1zbm1wL2Vycm9ybWliLmggbWliZGVmcy5oCiAuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi93aW5FeHRETEwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi93aW5FeHRETEwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQwMCw2ICs0MDgsNyBAQAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDQyLDYgKzQ1MSw3IEBACiAuL2FnZW50L2V4dGVuZC5sbzogYWdlbnQvZXh0ZW5kLmggdXRpbGl0aWVzL2V4ZWN1dGUuaCBzdHJ1Y3QuaAogLi9hZ2VudC9leHRlbmQubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIG1pYmRlZnMuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNTA5LDYgKzUxOSw3IEBACiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNTgyLDYgKzU5Myw3IEBACiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNjE2LDYgKzYyOCw3IEBACiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNjU2LDYgKzY2OSw3IEBACiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogYWdlbnQvbnNEZWJ1Zy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNzIzLDYgKzczNyw3IEBACiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC03NjMsNiArNzc4LDcgQEAKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogYWdlbnQvbnNMb2dnaW5nLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTgzMCw2ICs4NDYsNyBAQAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTg3MCw2ICs4ODcsNyBAQAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtOTM3LDYgKzk1NSw3IEBACiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC05NzcsNiArOTk2LDcgQEAKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMDQ0LDYgKzEwNjQsNyBAQAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMDg0LDYgKzExMDUsNyBAQAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTExNTEsNiArMTE3Myw3IEBACiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExOTIsNiArMTIxNSw3IEBACiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9hZ2VudC9zbm1wZC5oIGFnZW50eC9hZ2VudHhfY29uZmlnLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IGFnZW50eC9wcm90b2NvbC5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMjU5LDYgKzEyODMsNyBAQAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzMDAsNiArMTMyNSw3IEBACiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaW5kZXguaAogLi9hZ2VudHgvY2xpZW50LmxvOiBhZ2VudHgvcHJvdG9jb2wuaCBhZ2VudHgvY2xpZW50LmggYWdlbnR4L3N1YmFnZW50LmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTEzNjcsNiArMTM5Myw3IEBACiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQxMSw2ICsxNDM4LDcgQEAKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi9hZ2VudHgvbWFzdGVyLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE0NzgsNiArMTUwNiw3IEBACiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTU1Miw2ICsxNTgxLDcgQEAKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1ODYsOSArMTYxNiwxMSBAQAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IGFnZW50eC9wcm90b2NvbC5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTY1Niw2ICsxNjg4LDcgQEAKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE3MDAsNyArMTczMywxMTcgQEAKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi9hZ2VudHgvc3ViYWdlbnQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL2RlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKKy4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkubG86IC4vZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xNzY4LDYgKzE5MTEsNyBAQAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xODA4LDYgKzE5NTIsNyBAQAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE4NzUsNiArMjAyMCw3IEBACiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE5MTgsNiArMjA2NCw3IEBACiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xOTg1LDYgKzIxMzIsNyBAQAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIwNTksNiArMjIwNyw3IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIwOTMsNiArMjI0Miw3IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIxNjgsNiArMjMxOCw3IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yMjAyLDYgKzIzNTMsNyBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjI3Nyw2ICsyNDI5LDcgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yMzExLDYgKzI0NjQsNyBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTIzNTMsNiArMjUwNyw3IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yNDIwLDYgKzI1NzUsNyBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI0OTksNiArMjY1NSw3IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjUzMyw2ICsyNjkwLDcgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yNjA4LDYgKzI3NjYsNyBAQAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNjQyLDYgKzI4MDEsNyBAQAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0yNzE0LDYgKzI4NzQsNyBAQAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI3NDgsNiArMjkwOSw3IEBACiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMjgyMSw2ICsyOTgzLDcgQEAKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yODU1LDYgKzMwMTgsNyBAQAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTI5MjgsNiArMzA5Miw3IEBACiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yOTYyLDYgKzMxMjcsNyBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzAwMyw2ICszMTY5LDcgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTMwNzAsNiArMzIzNyw3IEBACiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTMxMTQsNiArMzI4Miw3IEBACiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMzE4MSw2ICszMzUwLDcgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwuaApAQCAtMzIxOSw2ICszMzg5LDcgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzI1Myw2ICszNDI0LDcgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfZW51bXMuaApAQCAtMzI5MCw2ICszNDYyLDcgQEAKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTMzMjQsNiArMzQ5Nyw3IEBACiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zMzY0LDYgKzM1MzgsNyBAQAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiBub3RpZmljYXRpb24uaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMzQzMSw2ICszNjA2LDcgQEAKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0zNTAzLDYgKzM2NzksNyBAQAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM1MzcsNiArMzcxNCw3IEBACiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzYxMSw2ICszNzg5LDcgQEAKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNjQ1LDYgKzM4MjQsNyBAQAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTM3MTgsNiArMzg5OCw3IEBACiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM3NTIsNiArMzkzMyw3IEBACiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCkBAIC0zNzk0LDYgKzM5NzYsNyBAQAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzgyOCw2ICs0MDExLDcgQEAKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCkBAIC0zODM4LDYgKzQwMjIsNyBAQAogLi9ob3N0L2hyX2Rpc2subG86IC4vaG9zdC9ocl9kaXNrLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0zOTA1LDYgKzQwOTAsNyBAQAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMzk0Nyw2ICs0MTMzLDcgQEAKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiBob3N0X3Jlcy5oIC4vaG9zdC9ocl9maWxlc3lzLmggLi9ob3N0L2hyX3N0b3JhZ2UuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4vaG9zdC9ocl9kaXNrLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQwMTQsNiArNDIwMSw3IEBACiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDA5MCw2ICs0Mjc4LDcgQEAKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC00MTI0LDYgKzQzMTMsNyBAQAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTQxNjcsNiArNDM1Nyw3IEBACiAuL2hvc3QvaHJoX3N0b3JhZ2UubG86IGhvc3RfcmVzLmggLi9ob3N0L2hyaF9maWxlc3lzLmggLi9ob3N0L2hyaF9zdG9yYWdlLmgKIC4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi9ob3N0L2hyX2Rpc2suaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTQyMzQsNiArNDQyNSw3IEBACiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC00MzA5LDYgKzQ1MDEsNyBAQAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQzNDMsNiArNDUzNiw3IEBACiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKQEAgLTQzODYsNiArNDU4MCw3IEBACiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQ0MjAsNiArNDYxNSw3IEBACiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCkBAIC00NDY0LDYgKzQ2NjAsNyBAQAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQ0OTgsNiArNDY5NSw3IEBACiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKQEAgLTQ1MDUsOSArNDcwMyw5IEBACiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4vaG9zdC9ocl9wcmludC5oIHN0cnVjdC5oIHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuL2hvc3QvaHJfcHJpbnQuaCBzdHJ1Y3QuaCB1dGlsX2Z1bmNzLmgKIC4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL2hvc3QvaHJfcHJpbnQubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHV0aWxfZnVuY3MvcmVzdGFydC5oCisuL2hvc3QvaHJfcHJpbnQubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTQ1NDMsNiArNDc0MSw3IEBACiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC00NTc3LDYgKzQ3NzYsNyBAQAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDY1NCw2ICs0ODU0LDcgQEAKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTQ2ODgsNiArNDg4OSw3IEBACiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaApAQCAtNDc2Myw2ICs0OTY1LDcgQEAKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDc5Nyw2ICs1MDAwLDcgQEAKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNDgzOCw2ICs1MDQyLDcgQEAKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgKIC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiBob3N0X3Jlcy5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtNDkwNiw2ICs1MTExLDcgQEAKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKQEAgLTQ5NDUsNiArNTE1MSw3IEBACiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNDk4Myw2ICs1MTkwLDcgQEAKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaApAQCAtNTAyNyw2ICs1MjM1LDcgQEAKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTUwNjEsNiArNTI3MCw3IEBACiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC01MTM2LDYgKzUzNDYsNyBAQAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC01MTcwLDYgKzUzODEsNyBAQAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC01MjExLDYgKzU0MjMsNyBAQAogLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oCiAuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaCAuL2hvc3QvaHJTV1J1blRhYmxlLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNTI3OCw2ICs1NDkxLDcgQEAKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNTMxOSw2ICs1NTMzLDcgQEAKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IGhvc3RfcmVzLmggLi9ob3N0L2hyX3N5c3RlbS5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC01Mzg2LDYgKzU2MDEsNyBAQAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC01NDYyLDYgKzU2NzgsNyBAQAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC01NDk2LDYgKzU3MTMsNyBAQAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC01NTczLDYgKzU3OTEsNyBAQAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTU2MDcsNiArNTgyNiw3IEBACiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNTY1MCw2ICs1ODcwLDcgQEAKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9taWJJSS9pY21wLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggLi9taWJJSS9pY21wLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vYWdlbnQva2VybmVsLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtNTcxOCw2ICs1OTM5LDcgQEAKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC01NzYwLDkgKzU5ODIsMTIgQEAKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oIHN0cnVjdC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oIHN0cnVjdC5oIHV0aWxfZnVuY3MuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2FnZW50L2tlcm5lbC5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC01ODMxLDYgKzYwNTYsNyBAQAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNTkwOSw2ICs2MTM1LDcgQEAKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNTk0Myw2ICs2MTcwLDcgQEAKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNjAyMiw2ICs2MjUwLDcgQEAKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNjA1Niw2ICs2Mjg1LDcgQEAKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNjA5Nyw2ICs2MzI3LDcgQEAKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2VudW1zLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtNjE2NSw2ICs2Mzk2LDcgQEAKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC02MjQzLDYgKzY0NzUsNyBAQAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTYyNzcsMTAgKzY1MTAsMTIgQEAKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfZW51bXMuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNjM0OCw2ICs2NTgzLDcgQEAKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC02MzkwLDYgKzY2MjYsNyBAQAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9hZ2VudC9rZXJuZWwuaCAuL21pYklJL2lwdjYuaCAuL21pYklJL3Zhcl9yb3V0ZS5oCiAuL21pYklJL2lwdjYubG86IC4vbWliSUkvcm91dGVfd3JpdGUuaCAuL21pYklJL2F0LmggLi9taWJJSS9pbnRlcmZhY2VzLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC02NDU3LDYgKzY2OTQsNyBAQAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNjQ5NSw3ICs2NzMzLDcgQEAKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4vbWliSUkva2VybmVsX2xpbnV4LmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuL21pYklJL2tlcm5lbF9saW51eC5oIC4vbWliSUkva2VybmVsX21pYi5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtNjUzMCw2ICs2NzY4LDcgQEAKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC02NTY0LDYgKzY4MDMsNyBAQAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTY2MDMsNiArNjg0MywxMTUgQEAKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4vbWliSUkva2VybmVsX25ldGJzZC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL21pYklJL2tlcm5lbF9zeXNjdGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vbWliSUkva2VybmVsX3N5c2N0bC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAorLi9taWJJSS9rZXJuZWxfc3lzY3RsLmxvOiAuL21pYklJL2tlcm5lbF9zeXNjdGwuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTY2MzcsNiArNjk4Niw3IEBACiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC02NjcxLDYgKzcwMjEsNyBAQAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNjc0NCw2ICs3MDk1LDcgQEAKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNjc3OCw2ICs3MTMwLDcgQEAKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNjgxOSw2ICs3MTcyLDcgQEAKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4vbWliSUkvaXAuaCAuL21pYklJL3Zhcl9yb3V0ZS5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuL21pYklJL3JvdXRlX3dyaXRlLmggLi9taWJJSS9hdC5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTY4ODYsNiArNzI0MCw3IEBACiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTY5MjYsNiArNzI4MSw3IEBACiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuL21pYklJL3NldFNlcmlhbE5vLmgKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC02OTkzLDYgKzczNDksNyBAQAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzAzNSw2ICs3MzkyLDcgQEAKIC4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi9taWJJSS9zbm1wX21pYl81XzUuaCAuL21pYklJL3VwZGF0ZXMuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC03MTAyLDYgKzc0NjAsNyBAQAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC03MTc3LDYgKzc1MzYsNyBAQAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTcyMTEsNiArNzU3MSw3IEBACiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzI1NCw2ICs3NjE1LDcgQEAKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuL21pYklJL3N5c09SVGFibGUuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtNzMyMSw2ICs3NjgzLDcgQEAKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC03MzYxLDEyICs3NzI0LDEyIEBACiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHV0aWxfZnVuY3MvcmVzdGFydC5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IHN0cnVjdC5oIHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHN0cnVjdC5oCisuL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuL21pYklJL3N5c3RlbV9taWIuaCAuL21pYklJL3VwZGF0ZXMuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdGNwLmxvOiAuL21pYklJL21pYklJX2NvbW1vbi5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vYWdlbnQva2VybmVsLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTc0MzYsNiArNzc5OSw3IEBACiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC03NDgwLDYgKzc4NDQsNyBAQAogLi9taWJJSS90Y3AubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCAuL21pYklJL3RjcC5oCiAuL21pYklJL3RjcC5sbzogLi9taWJJSS90Y3BUYWJsZS5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4vbWliSUkvbWliSUlfY29tbW9uLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2FnZW50L2tlcm5lbC5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTc1NDksNiArNzkxNCw3IEBACiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTc2MjUsNiArNzk5MSw3IEBACiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03NjU5LDYgKzgwMjYsNyBAQAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzczOCw2ICs4MTA2LDcgQEAKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtNzc3Miw2ICs4MTQxLDcgQEAKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtNzg0Niw2ICs4MjE2LDcgQEAKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03ODgwLDYgKzgyNTEsNyBAQAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTc5NTIsNiArODMyNCw3IEBACiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03OTg2LDYgKzgzNTksNyBAQAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtODA2MCw2ICs4NDM0LDcgQEAKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTgwOTQsNiArODQ2OSw3IEBACiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC04MTY3LDYgKzg1NDMsNyBAQAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtODIwMSw2ICs4NTc4LDcgQEAKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTgyNDMsNiArODYyMSw3IEBACiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuL21pYklJL3ZhY21fdmFycy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuL21pYklJL3JvdXRlX2hlYWRlcnMuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtODMxMSw2ICs4NjkwLDcgQEAKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTgzNTMsNyArODczMyw5IEBACiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4vbWliSUkvaXAuaCAuL21pYklJL3Zhcl9yb3V0ZS5oIC4vbWliSUkvcm91dGVfd3JpdGUuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4vbWliSUkvYXQuaCAuLi8uLi9hZ2VudC9rZXJuZWwuaCAuL21pYklJL2ludGVyZmFjZXMuaAotLi9taWJJSS92YXJfcm91dGUubG86IHN0cnVjdC5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogc3RydWN0LmggdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi9taWJJSS92YXJfcm91dGUubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtODM4OCw2ICs4NzcwLDcgQEAKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTg0MjIsNiArODgwNSw3IEBACiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC04NDYyLDYgKzg4NDYsNyBAQAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCAuL21pc2MvaXBmd2FjYy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC04NTI5LDYgKzg5MTQsNyBAQAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTg1NzEsNiArODk1Nyw3IEBACiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtODYzOCw2ICs5MDI1LDcgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtODY3OSw2ICs5MDY3LDcgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IGhlYWRlcl9jb21wbGV4LmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtODc0Niw2ICs5MTM1LDcgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC04ODMyLDYgKzkyMjIsNyBAQAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC04ODY2LDYgKzkyNTcsNyBAQAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC04OTM5LDYgKzkzMzEsNyBAQAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTg5NzMsNiArOTM2Niw3IEBACiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtOTAxMyw2ICs5NDA3LDcgQEAKIC4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9SbW9uL2FsYXJtLmxvOiAuL1Jtb24vYWxhcm0uaCAuL1Jtb24vYWd1dGlsX2FwaS5oIC4vUm1vbi9yb3dfYXBpLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC05MDgwLDYgKzk0NzUsNyBAQAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtOTEyMCw2ICs5NTE2LDcgQEAKIC4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL1Jtb24vYWxhcm1UYWJsZS5sbzogdXRpbGl0aWVzL2lxdWVyeS5oIC4vUm1vbi9hbGFybVRhYmxlLmgKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTkxODcsNiArOTU4NCw3IEBACiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtOTI2MCw2ICs5NjU4LDcgQEAKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTkyOTQsNiArOTY5Myw3IEBACiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC05MzY3LDYgKzk3NjcsNyBAQAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTQwMSw2ICs5ODAyLDcgQEAKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTk0NzQsNiArOTg3Niw3IEBACiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC05NTA4LDYgKzk5MTEsNyBAQAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtOTU4Miw2ICs5OTg2LDcgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTYxNiw2ICsxMDAyMSw3IEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTk2OTAsNiArMTAwOTYsNyBAQAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTcyNCw2ICsxMDEzMSw3IEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC05Nzk4LDYgKzEwMjA2LDcgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTgzMiw2ICsxMDI0MSw3IEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTk5MDYsNiArMTAzMTYsNyBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTk0MCw2ICsxMDM1MSw3IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMDAxNCw2ICsxMDQyNiw3IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwMDQ4LDYgKzEwNDYxLDcgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTAxMjIsNiArMTA1MzYsNyBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTAxNTYsNiArMTA1NzEsNyBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTAyMzAsNiArMTA2NDYsNyBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwMjY0LDYgKzEwNjgxLDcgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMDMzOCw2ICsxMDc1Niw3IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTAzNzIsNiArMTA3OTEsNyBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEwNDQ2LDYgKzEwODY2LDcgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA0ODAsNiArMTA5MDEsNyBAQAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMDU1NCw2ICsxMDk3Niw3IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDU4OCw2ICsxMTAxMSw3IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMDY2MSw2ICsxMTA4NSw3IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA2OTUsNiArMTExMjAsNyBAQAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEwNzY4LDYgKzExMTk0LDcgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA4MDIsNiArMTEyMjksNyBAQAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMDg3NSw2ICsxMTMwMyw3IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwOTA5LDYgKzExMzM4LDcgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTA5NTAsNiArMTEzODAsNyBAQAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzoga2VybmVsX3N1bm9zNS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTExMDE3LDYgKzExNDQ4LDcgQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTEwOTgsNiArMTE1MzAsNyBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTExMzIsNiArMTE1NjUsNyBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTExNzQsMTAgKzExNjA4LDggQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzL3Jlc3RhcnQuaCBzdHJ1Y3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBzdHJ1Y3QuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMTEyMTMsNiArMTE2NDUsNyBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTExMjQ3LDYgKzExNjgwLDcgQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTMyNCw2ICsxMTc1OCw3IEBACiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTEzNTgsNiArMTE3OTMsNyBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExNDAwLDEzICsxMTgzNiwxMiBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzL3Jlc3RhcnQuaCBzdHJ1Y3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHN0cnVjdC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiBrZXJuZWxfc3Vub3M1LmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMTQ3NCw2ICsxMTkwOSw3IEBACiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTU0Nyw2ICsxMTk4Myw3IEBACiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTE1ODEsNiArMTIwMTgsNyBAQAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExNjU0LDYgKzEyMDkyLDcgQEAKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTE2ODgsNiArMTIxMjcsNyBAQAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMTc2MSw2ICsxMjIwMSw3IEBACiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTExNzk1LDYgKzEyMjM2LDcgQEAKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTE4MzUsNiArMTIyNzcsNyBAQAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaCBzbXV4LmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4vc211eC9zbm1wX3JpcDIuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMTkwMiw2ICsxMjM0NSw3IEBACiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTExOTQ0LDYgKzEyMzg4LDcgQEAKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3NubXB2My9zbm1wRW5naW5lLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTIwMTEsNiArMTI0NTYsNyBAQAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMjA4Niw2ICsxMjUzMiw3IEBACiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTIxMjAsNiArMTI1NjcsNyBAQAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEyMTk1LDYgKzEyNjQzLDcgQEAKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTIyMjksNiArMTI2NzgsNyBAQAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMjI2OCw2ICsxMjcxOCw3IEBACiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMjMzNSw2ICsxMjc4Niw3IEBACiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTI0MTAsNiArMTI4NjIsNyBAQAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTI0NDQsNiArMTI4OTcsNyBAQAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTI0ODYsNiArMTI5NDAsNyBAQAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggLi9zbm1wdjMvdXNtU3RhdHMuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMjU1Myw2ICsxMzAwOCw3IEBACiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEyNjI2LDYgKzEzMDgyLDcgQEAKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTI2NjAsNiArMTMxMTcsNyBAQAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMjczNCw2ICsxMzE5Miw3IEBACiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTI3NjgsNiArMTMyMjcsNyBAQAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEyODA4LDYgKzEzMjY4LDcgQEAKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTI4NzUsNiArMTMzMzYsNyBAQAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEyOTE2LDYgKzEzMzc4LDcgQEAKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oIHRhcmdldC5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTEyOTgzLDYgKzEzNDQ2LDcgQEAKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTMwNTYsNiArMTM1MjAsNyBAQAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEzMDkwLDYgKzEzNTU1LDcgQEAKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMzE2Myw2ICsxMzYyOSw3IEBACiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTMxOTcsNiArMTM2NjQsNyBAQAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdHNtLW1pYi9zbm1wVHNtQ29uZmlndXJhdGlvblVzZVByZWZpeC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RzbS1taWIvc25tcFRzbUNvbmZpZ3VyYXRpb25Vc2VQcmVmaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi90c20tbWliL3NubXBUc21Db25maWd1cmF0aW9uVXNlUHJlZml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzMjcwLDYgKzEzNzM4LDcgQEAKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMzMwNCw2ICsxMzc3Myw3IEBACiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTMzODUsNiArMTM4NTUsNyBAQAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEzNDE5LDYgKzEzODkwLDcgQEAKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xMzQ5NCw2ICsxMzk2Niw3IEBACiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTM1MjgsNiArMTQwMDEsNyBAQAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvZGlza19ody5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL2Rpc2tfaHcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9kaXNrX2h3LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzNjAzLDYgKzE0MDc3LDcgQEAKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEzNjM3LDYgKzE0MTEyLDcgQEAKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzNjc4LDYgKzE0MTU0LDcgQEAKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi91Y2Qtc25tcC9kaXNraW8uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMzc0NSw2ICsxNDIyMiw3IEBACiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzNzgzLDEwICsxNDI2MSw2IEBACiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IHN0cnVjdC5oIHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuL3VjZC1zbm1wL2RsbW9kLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMTM4MjIsNiArMTQyOTYsNyBAQAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMzg1Niw2ICsxNDMzMSw3IEBACiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTEzODk4LDYgKzE0Mzc0LDcgQEAKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4vdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTM5NjUsNiArMTQ0NDIsNyBAQAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE0MDA2LDEwICsxNDQ4NCw5IEBACiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogc3RydWN0LmggLi91Y2Qtc25tcC9leHRlbnNpYmxlLmggbWliZGVmcy5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHV0aWxfZnVuY3MvcmVzdGFydC5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiB1dGlsaXRpZXMvZXhlY3V0ZS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKQEAgLTE0MDQ2LDYgKzE0NTIzLDcgQEAKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDA4MCw2ICsxNDU1OCw3IEBACiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQxNTQsNiArMTQ2MzMsNyBAQAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0MTg4LDYgKzE0NjY4LDcgQEAKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNDIyOCw2ICsxNDcwOSw3IEBACiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi91Y2Qtc25tcC9ocHV4LmggbWliZGVmcy5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTQyOTUsNiArMTQ3NzcsNyBAQAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQzNjksNiArMTQ4NTIsNyBAQAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTQ0MDMsNiArMTQ4ODcsNyBAQAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQ0NzgsNiArMTQ5NjMsNyBAQAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0NTEyLDYgKzE0OTk4LDcgQEAKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNDU4OSw2ICsxNTA3Niw3IEBACiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0NjIzLDYgKzE1MTExLDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQ2OTgsNiArMTUxODcsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTQ3MzIsNiArMTUyMjIsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQ4MDYsNiArMTUyOTcsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDg0MCw2ICsxNTMzMiw3IEBACiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE0OTE1LDYgKzE1NDA4LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE0OTQ5LDYgKzE1NDQzLDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1MDI0LDYgKzE1NTE5LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1MDU4LDYgKzE1NTU0LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1MDk3LDEwICsxNTU5NCw4IEBACiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy9yZXN0YXJ0Lmggc3RydWN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuL3VjZC1zbm1wL21lbW9yeS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuaCBtaWJkZWZzLmgKQEAgLTE1MTM4LDYgKzE1NjMzLDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTUxNzIsNiArMTU2NjgsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNTI0Nyw2ICsxNTc0NCw3IEBACiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1MjgxLDYgKzE1Nzc5LDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTUzNTYsNiArMTU4NTUsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTUzOTAsNiArMTU4OTAsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTU0MzMsNiArMTU5MzQsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4vdWNkLXNubXAvbWVtb3J5LmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTU1MDAsNiArMTYwMDIsNyBAQAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1NTQwLDkgKzE2MDQzLDggQEAKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiBzdHJ1Y3QuaCAuL3VjZC1zbm1wL3Bhc3MuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5oIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAotLi91Y2Qtc25tcC9wYXNzLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggdXRpbF9mdW5jcy9yZXN0YXJ0LmgKKy4vdWNkLXNubXAvcGFzcy5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMTU1NzgsNiArMTYwODAsNyBAQAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNTYxMiw2ICsxNjExNSw3IEBACiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1NjUxLDEyICsxNjE1NSwxMiBAQAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL0V4aXQuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL3Jlc3RhcnQuaCBzdHJ1Y3QuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBzdHJ1Y3QuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xNTcyNCw2ICsxNjIyOCw3IEBACiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNTc2NCwxMiArMTYyNjksMTEgQEAKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogc3RydWN0LmggLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmggLi91Y2Qtc25tcC9leHRlbnNpYmxlLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9FeGl0LmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTU4MzcsNiArMTYzNDEsNyBAQAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE1ODc3LDExICsxNjM4MiwxMiBAQAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL3Byb2MubG86IHN0cnVjdC5oIC4vdWNkLXNubXAvcHJvYy5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi91Y2Qtc25tcC9lcnJvcm1pYi5oIHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL0V4aXQuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuL3VjZC1zbm1wL2Vycm9ybWliLmggdXRpbF9mdW5jcy5oCiAuL3VjZC1zbm1wL3Byb2MubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAotLi91Y2Qtc25tcC9wcm9jLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggLi4vLi4vYWdlbnQva2VybmVsLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTU5NDksNiArMTY0NTUsNyBAQAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNTk4OSw2ICsxNjQ5Niw3IEBACiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuL3VjZC1zbm1wL3Byb3h5LmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTYwNTYsNiArMTY1NjQsNyBAQAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNjA5NSwxMCArMTY2MDQsOCBAQAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogc3RydWN0LmggLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvRXhpdC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzL3Jlc3RhcnQuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIHV0aWxfZnVuY3MvcmVzdGFydC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC0xNjEzNCw2ICsxNjY0MSw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE2MTY4LDYgKzE2Njc2LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTYyNDIsNiArMTY3NTEsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTYyNzYsNiArMTY3ODYsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTYzNTEsNiArMTY4NjIsNyBAQAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTYzODUsNiArMTY4OTcsNyBAQAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTY0NjAsNiArMTY5NzMsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNjQ5NCw2ICsxNzAwOCw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE2NTY5LDYgKzE3MDg0LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE2NjAzLDYgKzE3MTE5LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE2Njc3LDYgKzE3MTk0LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE2NzExLDYgKzE3MjI5LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE2Nzg3LDYgKzE3MzA2LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTY4MjEsNiArMTczNDEsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNjg2Miw2ICsxNzM4Myw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiBtaWJkZWZzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuL3VjZC1zbm1wL3Ztc3RhdC5oIC4vdWNkLXNubXAvdm1zdGF0X2hwdXguaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTE2OTI5LDYgKzE3NDUxLDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE3MDA1LDYgKzE3NTI4LDcgQEAKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTcwMzksNiArMTc1NjMsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNzExNCw2ICsxNzYzOSw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzE0OCw2ICsxNzY3NCw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC0xNzIyMiw2ICsxNzc0OSw3IEBACiAuL3V0aWxfZnVuY3MvRXhpdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi91dGlsX2Z1bmNzL0V4aXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbF9mdW5jcy9FeGl0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzI1OCw2ICsxNzc4Niw3IEBACiAuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE3Mjk3LDYgKzE3ODI2LDcgQEAKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzMzMSw2ICsxNzg2MSw3IEBACiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTc0MDQsNiArMTc5MzUsNyBAQAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc0MzgsNiArMTc5NzAsNyBAQAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTc1MTEsNiArMTgwNDQsNyBAQAogLi91dGlsX2Z1bmNzL3Jlc3RhcnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc1NDUsNiArMTgwNzksNyBAQAogLi91dGlsX2Z1bmNzL3Jlc3RhcnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9yZXN0YXJ0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3V0aWxfZnVuY3MvcmVzdGFydC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC0xNzU4MCw2ICsxODExNSw3IEBACiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE3NjE0LDYgKzE4MTUwLDcgQEAKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTc2NTUsNiArMTgxOTIsNyBAQAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmggLi91dGlsaXRpZXMvZXhlY3V0ZS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiBzdHJ1Y3QuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTc3MjIsNiArMTgyNjAsNyBAQAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKQEAgLTE3Nzk1LDYgKzE4MzM0LDcgQEAKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE3ODI5LDYgKzE4MzY5LDcgQEAKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmluIGIvYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4KaW5kZXggZjY0MWFiNy4uMjM0MWFiNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4KKysrIGIvYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4KQEAgLTEsNCArMSw2IEBACiB0b3BfYnVpbGRkaXI9Li4vLi4KK215c3ViZGlyPWFnZW50L21pYmdyb3VwCisKICMgY3VycmVudGx5IGFzc3VtZXMgZ2NjOiAgICAoWFhYOiBmaXggdmlhIGNvbmZpZ3VyZSB0ZXN0cykKIERMRkxBR1M9LWZQSUMgLXNoYXJlZAogCkBAIC0xNiw2ICsxOCw4IEBACiAKIE9USEVSQ0xFQU5UQVJHRVRTPUBkbGxjbGVhbnNACiAKK0ZFQVRVUkVGSUxFPS4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZmVhdHVyZXMtbWliZ3JvdXBzLmgKKwogIyBOZWVkIGEgc3BlY2lhbCAuYyAtPiAubyBkZWZpbml0aW9uIGhlcmUgdG8gbWFrZSBzdXJlIHdlIHBsYWNlIHRoZQogIyBvYmplY3QgZmlsZXMgaW4gdGhlIHN1YiBkaXJlY3RvcnkuCiAKQEAgLTI1LDEwICsyOSwxMiBAQAogQG1pYl9tb2R1bGVfbGlzdF9vQAogQG1pYl9tb2R1bGVfbGlzdF9sb0AKIEBtaWJfbW9kdWxlX2xpc3RfY0AKK0BtaWJfbW9kdWxlX2xpc3RfZnRACiAKLU9CSlMgID0gJChtaWJfbW9kdWxlX2xpc3RfbykKLUxPQkpTID0gJChtaWJfbW9kdWxlX2xpc3RfbG8pCi1TUkNTICA9ICQobWliX21vZHVsZV9saXN0X2MpCitPQkpTICAgPSAkKG1pYl9tb2R1bGVfbGlzdF9vKQorTE9CSlMgID0gJChtaWJfbW9kdWxlX2xpc3RfbG8pCitTUkNTICAgPSAkKG1pYl9tb2R1bGVfbGlzdF9jKQorRlRPQkpTID0gJChtaWJfbW9kdWxlX2xpc3RfZnQpCiAKIGFsbDogc3RhbmRhcmRhbGwgJChMT0JKUykKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYwppbmRleCBjOWMyYWVhLi42MTgxNjI4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYwpAQCAtMTAsMTEgKzEwLDIyIEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKICNpbmNsdWRlICJhbGFybVRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHF1ZXJ5X3NldF9kZWZhdWx0X3Nlc3Npb24pCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfZXh0cmFjdF90YWJsZSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5X3BkdV9zZXNzaW9uKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKiogSW5pdGlhbGl6ZXMgdGhlIGFsYXJtVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X2FsYXJtVGFibGUodm9pZCkKQEAgLTY2LDcgKzc3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhbGFybWVkX3Zhcl9sZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgc2FtcGxlX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdGhlX3RocmVzaG9sZCwgY2hhciAqYWxhcm1fZGVzY3IpOworICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHRoZV90aHJlc2hvbGQsIGNvbnN0IGNoYXIgKmFsYXJtX2Rlc2NyKTsKIAogI2RlZmluZSBBTEFSTV9TVFIxX0xFTgkzMgogdHlwZWRlZiBlbnVtIHsKQEAgLTE4MCw4ICsxOTEsOCBAQAogICAgICAgICByZXR1cm4gOwogICAgIH0KIAotICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1JbmRleC4lZCBsYXN0IHZhbHVlICglZClcbiIsIGVudHJ5LT5hbGFybUluZGV4LCBlbnRyeS0+bGFzdF9hYnNfdmFsdWUpKTsKLSAgICBERUJVR01TR1RMKCgicm1vbjphbGFybVRhYmxlIiwgImFsYXJtSW5kZXguJWQgbmV3X3ZhbHVlICglZClcbiIsIGVudHJ5LT5hbGFybUluZGV4LCBuZXdfdmFsdWUpKTsKKyAgICBERUJVR01TR1RMKCgicm1vbjphbGFybVRhYmxlIiwgImFsYXJtSW5kZXguJWxkIGxhc3QgdmFsdWUgKCVsZClcbiIsIGVudHJ5LT5hbGFybUluZGV4LCBlbnRyeS0+bGFzdF9hYnNfdmFsdWUpKTsKKyAgICBERUJVR01TR1RMKCgicm1vbjphbGFybVRhYmxlIiwgImFsYXJtSW5kZXguJWxkIG5ld192YWx1ZSAoJWxkKVxuIiwgZW50cnktPmFsYXJtSW5kZXgsIG5ld192YWx1ZSkpOwogCiAgICAgZW50cnktPmFsYXJtVmFsdWUgPSAoU0FNUExFX1RZUEVfQUJTT0xVVEUgPT0gZW50cnktPmFsYXJtU2FtcGxlVHlwZSkgPwogICAgICAgICBuZXdfdmFsdWUgOiBuZXdfdmFsdWUgLSBlbnRyeS0+bGFzdF9hYnNfdmFsdWU7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMgYi9hZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMKaW5kZXggOGQyZDRhMS4uYmI4N2JmZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYwpAQCAtMTksNiArMTksNyBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC00OSw2ICs1MCw4IEBACiAjaW5jbHVkZSAiYWd1dGlsX2FwaS5oIgogI2luY2x1ZGUgInJvd19hcGkuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25wcmludF9vYmppZCkKKwogLyoKICAqIEZpbGUgc2NvcGUgZGVmaW5pdGlvbnMgc2VjdGlvbiAKICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dfYXBpLmggYi9hZ2VudC9taWJncm91cC9SbW9uL3Jvd19hcGkuaAppbmRleCAyZDNjODMyLi45ZjU3NmJlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL3Jvd19hcGkuaAorKysgYi9hZ2VudC9taWJncm91cC9SbW9uL3Jvd19hcGkuaApAQCAtNzksNyArNzksNyBAQAogICogQXBpIHByb3RvdHlwZXMgCiAgKi8KIHZvaWQgICAgICAgICAgICBST1dBUElfaW5pdF90YWJsZShUQUJMRV9ERUZJTlRJT05fVCAqIHRhYmxlX3B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIG1heF9udW1iZXJfb2ZfZW50cmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTlRSWV9DQUxMQkFDS19UICogQ2xia0NyZWF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTlRSWV9DQUxMQkFDS19UICogQ2xia0Nsb25lLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMgYi9hZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuYwppbmRleCA5MjRhOTNiLi5hYzI2ZTMwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuYworKysgYi9hZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAKIHZvaWQKIFJPV0FQSV9pbml0X3RhYmxlKFRBQkxFX0RFRklOVElPTl9UICogdGFibGVfcHRyLAotICAgICAgICAgICAgICAgICAgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICB1X2xvbmcgbWF4X251bWJlcl9vZl9lbnRyaWVzLAogICAgICAgICAgICAgICAgICAgRU5UUllfQ0FMTEJBQ0tfVCAqIENsYmtDcmVhdGUsCiAgICAgICAgICAgICAgICAgICBFTlRSWV9DQUxMQkFDS19UICogQ2xia0Nsb25lLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYwppbmRleCAyMzllZWIzLi40ODM3OWEyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYwpAQCAtMSw1ICsxLDYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3dhdGNoZXIuaD4KQEAgLTE1LDYgKzE2LDEyIEBACiAjZGVmaW5lIFNIRUxMQ09NTUFORCAzCiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZXh0cmFjdF90YWJsZV9yb3dfZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGluc2VydF90YWJsZV9yb3cpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIG9pZCAgbnNfZXh0ZW5kX29pZFtdICAgID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCAzLCAyIH07CiBvaWQgIGV4dGVuZF9jb3VudF9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgMywgMiwgMSB9Owogb2lkICBleHRlbmRfY29uZmlnX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCAzLCAyLCAyIH07CkBAIC0yNyw3ICszNCw3IEBACiAgICAgc2l6ZV90ICAgICAgICAgICAgICBvaWRfbGVuOwogICAgIGxvbmcgICAgICAgICAgICAgICAgbnVtX2VudHJpZXM7CiAgICAgbmV0c25tcF9leHRlbmQgICAgICplaGVhZDsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICAgICpyZWdbM107CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAgICAqcmVnWzRdOwogICAgIHN0cnVjdCBleHRlbmRfcmVnaXN0cmF0aW9uX2Jsb2NrX3MgKm5leHQ7CiB9IGV4dGVuZF9yZWdpc3RyYXRpb25fYmxvY2s7CiBleHRlbmRfcmVnaXN0cmF0aW9uX2Jsb2NrICplcmVnX2hlYWQgPSBOVUxMOwpAQCAtNTAsNiArNTcsNyBAQAogV3JpdGVNZXRob2QgZml4RXhlYzJFcnJvcjsKIEZpbmRWYXJNZXRob2QgdmFyX2V4dGVuc2libGVfb2xkOwogb2lkICBvbGRfZXh0ZW5zaWJsZV92YXJpYWJsZXNfb2lkW10gPSB7IE5FVFNOTVBfVUNEQVZJU19NSUIsIE5FVFNOTVBfU0hFTExNSUJOVU0sIDEgfTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgdmFyaWFibGUyIG9sZF9leHRlbnNpYmxlX3ZhcmlhYmxlc1tdID0gewogICAgIHtNSUJJTkRFWCwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtNSUJJTkRFWH19LApAQCAtNjYsNiArNzQsMjQgQEAKICAgICB7RVJST1JGSVhDTUQsICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JGSVhDTUR9fQogfTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KK3N0cnVjdCB2YXJpYWJsZTIgb2xkX2V4dGVuc2libGVfdmFyaWFibGVzW10gPSB7CisgICAge01JQklOREVYLCAgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge01JQklOREVYfX0sCisgICAge0VSUk9STkFNRSwgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge0VSUk9STkFNRX19LAorICAgIHtTSEVMTENPTU1BTkQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtTSEVMTENPTU1BTkR9fSwKKyAgICB7RVJST1JGTEFHLCAgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JGTEFHfX0sCisgICAge0VSUk9STVNHLCAgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge0VSUk9STVNHfX0sCisgICAge0VSUk9SRklYLCAgICAgQVNOX0lOVEVHRVIsICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JGSVh9fSwKKyAgICB7RVJST1JGSVhDTUQsICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JGSVhDTUR9fQorfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZW5kaWYKIAogCkBAIC05Nyw3ICsxMjMsOCBAQAogICAgIG5ldHNubXBfdGFibGVfZGF0YSAgICAgICAgICAgICAgICAqZGluZm87CiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAgICp0aW5mbzsKICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICAgICAgKndpbmZvOwotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgICAqcmVnOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgICAqcmVnID0gTlVMTDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjOwogCiAgICAgZm9yICggZXB0cj1lcmVnX2hlYWQ7IGVwdHI7IGVwdHI9ZXB0ci0+bmV4dCApIHsKICAgICAgICAgaWYgKCFzbm1wX29pZF9jb21wYXJlKCBiYXNlLCBsZW4sIGVwdHItPnJvb3Rfb2lkLCBlcHRyLT5vaWRfbGVuKSkKQEAgLTEwNSw2ICsxMzIsOCBAQAogICAgIH0KICAgICBpZiAoIWVwdHIpIHsKICAgICAgICAgZXB0ciA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIGV4dGVuZF9yZWdpc3RyYXRpb25fYmxvY2sgKTsKKyAgICAgICAgaWYgKCFlcHRyKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGVwdHItPnJvb3Rfb2lkID0gc25tcF9kdXBsaWNhdGVfb2JqaWQoIGJhc2UsIGxlbiApOwogICAgICAgICBlcHRyLT5vaWRfbGVuICA9IGxlbjsKICAgICAgICAgZXB0ci0+bnVtX2VudHJpZXMgPSAwOwpAQCAtMTI1LDEwICsxNTQsMjAgQEAKICAgICB0aW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl9FWFRDRkdfRklSU1RfQ09MVU1OOwogICAgIHRpbmZvLT5tYXhfY29sdW1uID0gQ09MVU1OX0VYVENGR19MQVNUX0NPTFVNTjsKICAgICBvaWRfYnVmW2xlbl0gPSAyOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgICA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICJuc0V4dGVuZENvbmZpZ1RhYmxlIiwgaGFuZGxlX25zRXh0ZW5kQ29uZmlnVGFibGUsIAogICAgICAgICAgICAgICAgIG9pZF9idWYsIGxlbisxLCBIQU5ETEVSX0NBTl9SV1JJVEUpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YSggcmVnLCBkaW5mbywgdGluZm8gKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgICA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJuc0V4dGVuZENvbmZpZ1RhYmxlIiwgaGFuZGxlX25zRXh0ZW5kQ29uZmlnVGFibGUsIAorICAgICAgICAgICAgICAgIG9pZF9idWYsIGxlbisxLCBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhKCByZWcsIGRpbmZvLCB0aW5mbyApOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKHJlZy0+aGFuZGxlci0+bmV4dCk7CiAgICAgZXB0ci0+cmVnWzBdID0gcmVnOwogCiAgICAgICAgIC8qCkBAIC0xNDUsNyArMTg0LDEwIEBACiAgICAgcmVnICAgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAibnNFeHRlbmRPdXQxVGFibGUiLCBoYW5kbGVfbnNFeHRlbmRPdXRwdXQxVGFibGUsIAogICAgICAgICAgICAgICAgIG9pZF9idWYsIGxlbisxLCBIQU5ETEVSX0NBTl9ST05MWSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhKCByZWcsIGRpbmZvLCB0aW5mbyApOworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhKCByZWcsIGRpbmZvLCB0aW5mbyApOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpCisgICAgICAgIGdvdG8gYmFpbDsKKyAgICBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKHJlZy0+aGFuZGxlci0+bmV4dCk7CiAgICAgZXB0ci0+cmVnWzFdID0gcmVnOwogCiAgICAgICAgIC8qCkBAIC0xNjQsNyArMjA2LDEwIEBACiAgICAgcmVnICAgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAibnNFeHRlbmRPdXQyVGFibGUiLCBoYW5kbGVfbnNFeHRlbmRPdXRwdXQyVGFibGUsIAogICAgICAgICAgICAgICAgIG9pZF9idWYsIGxlbisxLCBIQU5ETEVSX0NBTl9ST05MWSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSggcmVnLCB0aW5mbyApOworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZSggcmVnLCB0aW5mbyApOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpCisgICAgICAgIGdvdG8gYmFpbDsKKyAgICBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKHJlZy0+aGFuZGxlci0+bmV4dCk7CiAgICAgZXB0ci0+cmVnWzJdID0gcmVnOwogCiAgICAgICAgIC8qCkBAIC0xNzcsOSArMjIyLDQ0IEBACiAgICAgd2luZm8gPSBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCiAgICAgICAgICAgICAgICAgJihlcHRyLT5udW1fZW50cmllcyksIHNpemVvZihlcHRyLT5udW1fZW50cmllcyksCiAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhciggcmVnLCB3aW5mbyApOworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIoIHJlZywgd2luZm8gKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICBnb3RvIGJhaWw7CisgICAgZXB0ci0+cmVnWzNdID0gcmVnOwogCiAgICAgcmV0dXJuIGVwdHI7CisKK2JhaWw6CisgICAgaWYgKGVwdHItPnJlZ1szXSkKKyAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoZXB0ci0+cmVnWzNdKTsKKyAgICBpZiAoZXB0ci0+cmVnWzJdKQorICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcihlcHRyLT5yZWdbMl0pOworICAgIGlmIChlcHRyLT5yZWdbMV0pCisgICAgICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKGVwdHItPnJlZ1sxXSk7CisgICAgaWYgKGVwdHItPnJlZ1swXSkKKyAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoZXB0ci0+cmVnWzBdKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK191bnJlZ2lzdGVyX2V4dGVuZChleHRlbmRfcmVnaXN0cmF0aW9uX2Jsb2NrICplcHRyKQoreworICAgIGV4dGVuZF9yZWdpc3RyYXRpb25fYmxvY2sgKnByZXY7CisKKyAgICBuZXRzbm1wX2Fzc2VydChlcHRyKTsKKyAgICBmb3IgKHByZXYgPSBlcmVnX2hlYWQ7IHByZXYgJiYgcHJldi0+bmV4dCAhPSBlcHRyOyBwcmV2ID0gcHJldi0+bmV4dCkKKwk7CisgICAgaWYgKHByZXYpIHsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoZXB0ciA9PSBwcmV2LT5uZXh0KTsKKwlwcmV2LT5uZXh0ID0gZXB0ci0+bmV4dDsKKyAgICB9IGVsc2UgeworICAgICAgICBuZXRzbm1wX2Fzc2VydChlcHRyID09IGVyZWdfaGVhZCk7CisJZXJlZ19oZWFkID0gZXB0ci0+bmV4dDsKKyAgICB9CisKKyAgICBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKGVwdHItPmRpbmZvKTsKKyAgICBmcmVlKGVwdHItPnJvb3Rfb2lkKTsKKyAgICBmcmVlKGVwdHIpOwogfQogCiBpbnQKQEAgLTE5Myw2ICsyNzMsNyBAQAogICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlciggZXB0ci0+cmVnWzBdICk7CiAgICAgICAgIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKCBlcHRyLT5yZWdbMV0gKTsKICAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoIGVwdHItPnJlZ1syXSApOworICAgICAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlciggZXB0ci0+cmVnWzNdICk7CiAgICAgICAgIFNOTVBfRlJFRShlcHRyKTsKICAgICB9CiAgICAgZXJlZ19oZWFkID0gTlVMTDsKQEAgLTIyNCw2ICszMDUsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuZF9jbGVhcl9jYWxsYmFjaywgTlVMTCk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX2V4dGVuZCh2b2lkKQoreworI2lmbmRlZiBVU0lOR19VQ0RfU05NUF9FWFRFTlNJQkxFX01PRFVMRQorICAgIGZyZWUoY29tcGF0YWJpbGl0eV9lbnRyaWVzKTsKKyAgICBjb21wYXRhYmlsaXR5X2VudHJpZXMgPSBOVUxMOworI2VuZGlmCisgICAgd2hpbGUgKGVyZWdfaGVhZCkKKwlfdW5yZWdpc3Rlcl9leHRlbmQoZXJlZ19oZWFkKTsKK30KKwogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAgICAgKgogICAgICAgICAgKiAgQ2FjaGVkLWRhdGEgaG9va3MKQEAgLTQ2NSw2ICs1NTcsMTAgQEAKICAgICB9CiAKICAgICBlcHRyICAgICAgPSBfcmVnaXN0ZXJfZXh0ZW5kKCBvaWRfYnVmLCBvaWRfbGVuICk7CisgICAgaWYgKCFlcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJGYWlsZWQgdG8gcmVnaXN0ZXIgZXh0ZW5kIGVudHJ5ICclcycgLSBwb3NzaWJseSBkdXBsaWNhdGUgbmFtZS5cbiIsIGV4ZWNfbmFtZSApOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIGV4dGVuc2lvbiA9IF9uZXdfZXh0ZW5zaW9uKCBleGVjX25hbWUsIGZsYWdzLCBlcHRyICk7CiAgICAgaWYgKGV4dGVuc2lvbikgewogICAgICAgICBleHRlbnNpb24tPmNvbW1hbmQgID0gc3RyZHVwKCBleGVjX2NvbW1hbmQgKTsKQEAgLTYyNyw2ICs3MjMsNyBAQAogICAgICAgICAgKgogICAgICAgICAgKioqKioqKioqKi8KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBWYWxpZGF0ZSB0aGUgbmV3IGFzc2lnbm1lbnRzCkBAIC05NTIsNiArMTA0OSw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX0VSUl9HRU5FUlIpOwpAQCAtOTU5LDYgKzEwNTcsNyBAQAogICAgICAgICB9CiAgICAgfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIC8qCiAgICAgICogSWYgd2UncmUgbWFya2luZyBhIGdpdmVuIHJvdyBhcyBhY3RpdmUsCiAgICAgICogIHRoZW4gd2UgbmVlZCB0byBjaGVjayB0aGF0IGl0J3MgcmVhZHkuCkBAIC05ODMsNyArMTA4Miw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKQEAgLTE0NzEsNiArMTU3MSw3IEBACiAgICAgaWR4ID0gbmFtZVtuYW1lX2xlbi0xXSAtMTsKICAgICBleHRlbiA9ICZjb21wYXRhYmlsaXR5X2VudHJpZXNbIGlkeCBdOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgaWYgKHZhcl92YWxfdHlwZSAhPSBBU05fSU5URUdFUikgewpAQCAtMTQ5MSw2ICsxNTkyLDcgQEAKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKICAgICAgICAgbmV0c25tcF9jYWNoZV9jaGVja19hbmRfcmVsb2FkKCBleHRlbi0+ZWZpeF9lbnRyeS0+Y2FjaGUgKTsKICAgICB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQotI2VuZGlmCisjZW5kaWYgLyogVVNJTkdfVUNEX1NOTVBfRVhURU5TSUJMRV9NT0RVTEUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmgKaW5kZXggNGIxODFmOS4uOGI3NmNkNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmgKQEAgLTI4LDYgKzI4LDcgQEAKIH0gbmV0c25tcF9leHRlbmQ7CiAKIHZvaWQgICAgICAgICAgICAgICAgIGluaXRfZXh0ZW5kKHZvaWQpOwordm9pZCAgICAgICAgICAgICAgICAgc2h1dGRvd25fZXh0ZW5kKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgaGFuZGxlX25zRXh0ZW5kQ29uZmlnVGFibGU7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBoYW5kbGVfbnNFeHRlbmRPdXRwdXQxVGFibGU7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBoYW5kbGVfbnNFeHRlbmRPdXRwdXQyVGFibGU7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMKaW5kZXggNTgxNWU5MC4uZDMyMjYzYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zY2FsYXIuaD4KQEAgLTEyLDYgKzEzLDkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmg+CiAjaW5jbHVkZSAiYWdlbnQvbnNDYWNoZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjYWNoZV9nZXRfaGVhZCkKKworCiAvKgogICogdXNlIHVuYWR2ZXJ0aXNlZCBmdW5jdGlvbiB0byBnZXQgY2FjaGUgaGVhZC4gWW91IHJlYWxseSBzaG91bGQgbm90CiAgKiBkbyB0aGlzLCBzaW5jZSB0aGUgaW50ZXJuYWwgc3RvcmFnZSBtZWNoYW5pc20gbWlnaHQgY2hhbmdlLgpAQCAtMTAyLDcgKzEwNiw3IEBACiAgICAgLyoKICAgICAgKiAuLi4uIGFuZCByZWdpc3RlciB0aGUgdGFibGUgd2l0aCB0aGUgYWdlbnQuCiAgICAgICovCi0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcigKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMigKICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAidHpDYWNoZVRhYmxlIiwgaGFuZGxlX25zQ2FjaGVUYWJsZSwKICAgICAgICAgICAgIG5zQ2FjaGVUYWJsZV9vaWQsIE9JRF9MRU5HVEgobnNDYWNoZVRhYmxlX29pZCksCkBAIC0xMzcsNiArMTQxLDcgQEAKIAlicmVhazsKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAJZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKCByZXF1ZXN0LT5zdGF0dXMgIT0gMCApIHsKQEAgLTE1OCw2ICsxNjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9DQUNIRV9USU1FT1VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpAQCAtMTg3LDYgKzE5Myw3IEBACiAJYnJlYWs7CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogCWZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmICggcmVxdWVzdC0+c3RhdHVzICE9IDAgKSB7CkBAIC0yMTEsNiArMjE4LDcgQEAKIAluZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9OT19DQUNISU5HLCBlbmFibGVkKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpAQCAtMjk1LDkgKzMwMywxMCBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAkJfQogCQlzdGF0dXMgPSAoY2FjaGVfZW50cnktPmVuYWJsZWQgPwotCSAgICAgICAgICAgICAgICAgICAoY2FjaGVfZW50cnktPnRpbWVzdGFtcCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICghYXRpbWVfcmVhZHkoY2FjaGVfZW50cnktPnRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDAqY2FjaGVfZW50cnktPnRpbWVvdXQpID8KKwkgICAgICAgICAgICAgICAgICAgKGNhY2hlX2VudHJ5LT50aW1lc3RhbXBNID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhY2hlX2VudHJ5LT50aW1lb3V0ID49IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFuZXRzbm1wX3JlYWR5X21vbm90b25pYyhjYWNoZV9lbnRyeS0+dGltZXN0YW1wTSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMDAwKmNhY2hlX2VudHJ5LT50aW1lb3V0KSA/CiAJICAgICAgICAgICAgICAgICAgICAgICAgTlNDQUNIRV9TVEFUVVNfQUNUSVZFOgogCSAgICAgICAgICAgICAgICAgICAgICAgIE5TQ0FDSEVfU1RBVFVTX0VYUElSRUQpIDoKIAkgICAgICAgICAgICAgICAgICAgICAgTlNDQUNIRV9TVEFUVVNfRU1QVFkpIDoKQEAgLTMxNCw2ICszMjMsNyBAQAogCWJyZWFrOwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQgIT0gMCkKQEAgLTQwNCwxNCArNDE0LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAkJICAgIGNhc2UgTlNDQUNIRV9TVEFUVVNfRU1QVFk6CiAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9lbnRyeS0+ZnJlZV9jYWNoZShjYWNoZV9lbnRyeSwgY2FjaGVfZW50cnktPm1hZ2ljKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoY2FjaGVfZW50cnktPnRpbWVzdGFtcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYWNoZV9lbnRyeS0+dGltZXN0YW1wID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoY2FjaGVfZW50cnktPnRpbWVzdGFtcE0pOworICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfZW50cnktPnRpbWVzdGFtcE0gPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAJCX0KIAkgICAgICAgIGJyZWFrOwogCSAgICB9CiAJfQogCWJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYwppbmRleCA1MzRkMThjLi44OWE5MGIwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jCkBAIC05MSw3ICs5MSw3IEBACiAgICAgLyoKICAgICAgKiAuLi4uIGFuZCByZWdpc3RlciB0aGUgdGFibGUgd2l0aCB0aGUgYWdlbnQuCiAgICAgICovCi0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcigKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMigKICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAidHpEZWJ1Z1RhYmxlIiwgaGFuZGxlX25zRGVidWdUYWJsZSwKICAgICAgICAgICAgIG5zRGVidWdUb2tlblRhYmxlX29pZCwgT0lEX0xFTkdUSChuc0RlYnVnVG9rZW5UYWJsZV9vaWQpLApAQCAtMTI0LDYgKzEyNCw3IEBACiAJYnJlYWs7CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogCWZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQgIT0gMCkKQEAgLTE0OSw2ICsxNTAsNyBAQAogCSAgICBlbmFibGVkID0gMDsKIAlzbm1wX3NldF9kb19kZWJ1Z2dpbmcoIGVuYWJsZWQgKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpAQCAtMTc5LDYgKzE4MSw3IEBACiAJYnJlYWs7CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogCWZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQgIT0gMCkKQEAgLTIwNCw2ICsyMDcsNyBAQAogCSAgICBlbmFibGVkID0gMDsKIAlzbm1wX3NldF9kb19kZWJ1Z2dpbmcoIGVuYWJsZWQgKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpAQCAtMjM1LDYgKzIzOSw3IEBACiAJYnJlYWs7CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogCWZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQgIT0gMCkKQEAgLTI2MSw2ICsyNjYsNyBAQAogCW5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELAogCSAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRFVNUF9QQUNLRVQsIGVuYWJsZWQpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CkBAIC0zNDUsNiArMzUxLDcgQEAKIAlicmVhazsKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAJZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewogICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCAhPSAwKQpAQCAtNDUxLDYgKzQ1OCw3IEBACiAJICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jCmluZGV4IDM0NGU1M2EuLjdmMjBiZGIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NjYWxhci5oPgpAQCAtMTIsNiArMTMsMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oPgogI2luY2x1ZGUgImFnZW50L25zTG9nZ2luZy5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShsb2dnaW5nX2V4dGVybmFsKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2l0ZXJhdG9yX2luc2VydF9jb250ZXh0KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKgogICogT0lEIGFuZCBjb2x1bW5zIGZvciB0aGUgbG9nZ2luZyB0YWJsZS4KICAqLwpAQCAtNTgsNyArNjQsNyBAQAogICAgIC8qCiAgICAgICogLi4uLiBhbmQgcmVnaXN0ZXIgdGhlIHRhYmxlIHdpdGggdGhlIGFnZW50LgogICAgICAqLwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IoCisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIoCiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgInR6TG9nZ2luZ1RhYmxlIiwgaGFuZGxlX25zTG9nZ2luZ1RhYmxlLAogICAgICAgICAgICAgbnNMb2dnaW5nVGFibGVfb2lkLCBPSURfTEVOR1RIKG5zTG9nZ2luZ1RhYmxlX29pZCksCkBAIC0xODYsNiArMTkyLDcgQEAKIAlicmVhazsKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgICAgICBpZiAoIHJlcXVlc3QtPnN0YXR1cyAhPSAwICkgewpAQCAtNDU4LDYgKzQ2NSw3IEBACiAJICAgIH0KIAl9CiAJYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jCmluZGV4IDFkNzYzZjMuLjg0YmQ4ZmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMKQEAgLTQsMTAgKzQsMTMgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibnNNb2R1bGVUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhc2V0KQorCiB2b2lkCiBuc01vZHVsZVRhYmxlX2ZyZWUodm9pZCAqY29udGV4dCwgbmV0c25tcF9pdGVyYXRvcl9pbmZvICpkb250X2NhcmUpCiB7CkBAIC03Miw3ICs3NSw3IEBACiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoImluaXRpYWxpemVfdGFibGVfbnNNb2R1bGVUYWJsZSIsCiAgICAgICAgICAgICAgICAgIlJlZ2lzdGVyaW5nIHRhYmxlIG5zTW9kdWxlVGFibGUgYXMgYSB0YWJsZSBpdGVyYXRvclxuIikpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IobXlfaGFuZGxlciwgaWluZm8pOworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKG15X2hhbmRsZXIsIGlpbmZvKTsKIH0KIAogLyoqIEluaXRpYWxpemVzIHRoZSBuc01vZHVsZVRhYmxlIG1vZHVsZSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYwppbmRleCBkYzFmN2ZhLi5kN2QzY2U5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYwpAQCAtMyw2ICszLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTEwLDYgKzExLDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oPgogI2luY2x1ZGUgIm5zVHJhbnNhY3Rpb25UYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhc2V0KQorCiAvKiogSW5pdGlhbGl6ZSB0aGUgbnNUcmFuc2FjdGlvblRhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0J3MgY29udGVudHMKICAgIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCiB2b2lkCkBAIC02MSw3ICs2NCw3IEBACiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoImluaXRpYWxpemVfdGFibGVfbnNUcmFuc2FjdGlvblRhYmxlIiwKICAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgdGFibGUgbnNUcmFuc2FjdGlvblRhYmxlIGFzIGEgdGFibGUgaXRlcmF0b3JcbiIpKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG15X2hhbmRsZXIsIGlpbmZvKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMihteV9oYW5kbGVyLCBpaW5mbyk7CiB9CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbnNUcmFuc2FjdGlvblRhYmxlIG1vZHVsZSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMKaW5kZXggNDEwYjAwMi4uNzlmYTk3ZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jCkBAIC00LDExICs0LDE4IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3ZhY20uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIm5zVmFjbUFjY2Vzc1RhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3N0b3JhZ2V0eXBlKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfaXRlcmF0b3JfaW5zZXJ0X2NvbnRleHQpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qKiBJbml0aWFsaXplcyB0aGUgbnNWYWNtQWNjZXNzVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X3JlZ2lzdGVyX25zVmFjbV9jb250ZXh0KGNvbnN0IGNoYXIgKmNvbnRleHQpCkBAIC0yMiwxMCArMjksMTcgQEAKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gICAgICAgICAgICppaW5mbzsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAibnNWYWNtQWNjZXNzVGFibGUiLCBuc1ZhY21BY2Nlc3NUYWJsZV9oYW5kbGVyLAogICAgICAgICBuc1ZhY21BY2Nlc3NUYWJsZV9vaWQsIE9JRF9MRU5HVEgobnNWYWNtQWNjZXNzVGFibGVfb2lkKSwKICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgIm5zVmFjbUFjY2Vzc1RhYmxlIiwgbnNWYWNtQWNjZXNzVGFibGVfaGFuZGxlciwKKyAgICAgICAgbnNWYWNtQWNjZXNzVGFibGVfb2lkLCBPSURfTEVOR1RIKG5zVmFjbUFjY2Vzc1RhYmxlX29pZCksCisgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNDYsNyArNjAsNyBAQAogICAgIGlmICggY29udGV4dCAmJiBjb250ZXh0WzBdICkKICAgICAgICAgcmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0KTsKIAotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IocmVnLCBpaW5mbyk7CisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIocmVnLCBpaW5mbyk7CiB9CiAKIHZvaWQKQEAgLTE4OSw2ICsyMDMsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtMzM0LDYgKzM0OSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jCmluZGV4IGVlYzgyNzEuLmI1OTBjN2EgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYwpAQCAtMiw2ICsyLDcgQEAKICAqICBBZ2VudFggQ29uZmlndXJhdGlvbgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC0yMCw2ICsyMSw5IEBACiAjaW5jbHVkZSAiYWdlbnR4L2FnZW50eF9jb25maWcuaCIKICNpbmNsdWRlICJhZ2VudHgvcHJvdG9jb2wuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodXNlcl9pbmZvcm1hdGlvbikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0cmluZ190aW1lX3RvX3NlY3MpCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIENvbW1vbiBtYXN0ZXIgYW5kIHN1Yi1hZ2VudApAQCAtMTE2LDggKzEyMCwxMiBAQAogdm9pZAogYWdlbnR4X3BhcnNlX2FnZW50eF90aW1lb3V0KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotICAgIGludCB4ID0gYXRvaShjcHRyKTsKKyAgICBpbnQgeCA9IG5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcyhjcHRyKTsKICAgICBERUJVR01TR1RMKCgiYWdlbnR4L2NvbmZpZy90aW1lb3V0IiwgIiVzXG4iLCBjcHRyKSk7CisgICAgaWYgKHggPT0gLTEpIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigiSW52YWxpZCB0aW1lb3V0IHZhbHVlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfQUdFTlRYX1RJTUVPVVQsIHggKiBPTkVfU0VDKTsKIH0KQEAgLTE1MiwxMSArMTYwLDE0IEBACiAgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoIjphZ2VudHgiLCB0b2tlbiwgcGFyc2VyLCByZWxlYXNlciwgaGVscCk7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhZ2VudHhfdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlciwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUdFTlRYX1VOUkVHSVNURVJfQ09ORklHX0hBTkRMRVIKIHZvaWQKIGFnZW50eF91bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKnRva2VuKQogewogICAgIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoIjphZ2VudHgiLCB0b2tlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BR0VOVFhfVU5SRUdJU1RFUl9DT05GSUdfSEFORExFUiAqLwogCiB2b2lkCiBhZ2VudHhfY29uZmlnX2luaXQodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYwppbmRleCA1ODk4N2UzLi5kMzZmZTJkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jCkBAIC0zLDYgKzMsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxlcnJuby5oPgpAQCAtNDEsNiArNDIsOCBAQAogI2luY2x1ZGUgImFnZW50eC9jbGllbnQuaCIKICNpbmNsdWRlICJhZ2VudHgvc3ViYWdlbnQuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc2V0X2FnZW50X3VwdGltZSkKKwogICAgICAgICAvKgogICAgICAgICAgKiBBZ2VudFggaGFuZGxpbmcgdXRpbGl0eSByb3V0aW5lcwogICAgICAgICAgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jCmluZGV4IDFmZmMwNDMuLmM0MmE0MmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMKQEAgLTE0LDYgKzE0LDcgQEAKIAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpZiBIQVZFX0lPX0gKICNpbmNsdWRlIDxpby5oPgogI2VuZGlmCkBAIC01MCw2ICs1MSwxMCBAQAogI2luY2x1ZGUgImFnZW50eC9wcm90b2NvbC5oIgogI2luY2x1ZGUgImFnZW50eC9tYXN0ZXJfYWRtaW4uaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHVuaXhfc29ja2V0X3BhdGhzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZnJlZV9hZ2VudF9zbm1wX3Nlc3Npb25fYnlfc2Vzc2lvbikKKwogdm9pZAogcmVhbF9pbml0X21hc3Rlcih2b2lkKQogewpAQCAtNDYwLDYgKzQ2NSw3IEBACiAgICAgICAgIHBkdSA9IHNubXBfcGR1X2NyZWF0ZShBR0VOVFhfTVNHX0dFVE5FWFQpOwogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUoQUdFTlRYX01TR19URVNUU0VUKTsKICAgICAgICAgYnJlYWs7CkBAIC00ODMsNiArNDg5LDcgQEAKICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CiAgICAgICAgIHBkdSA9IHNubXBfcGR1X2NyZWF0ZShBR0VOVFhfTVNHX0NMRUFOVVBTRVQpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYwppbmRleCA4NjY5MzZlLi40ZWFlYWI2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jCkBAIC0yLDYgKzIsNyBAQAogICogIEFnZW50WCBBZG1pbmlzdHJhdGl2ZSByZXF1ZXN0IGhhbmRsaW5nCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgSEFWRV9TVFJJTkdfSApAQCAtNDEsNiArNDIsMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmg+CiAjaW5jbHVkZSAibWFzdGVyLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHVucmVnaXN0ZXJfbWliX3RhYmxlX3JvdykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRyYXBfdmFyc193aXRoX2NvbnRleHQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjYWxjdWxhdGVfc2VjdGltZV9kaWZmKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYWxsb2NhdGVfZ2xvYmFsY2FjaGVpZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJlbW92ZV9pbmRleCkKIAogbmV0c25tcF9zZXNzaW9uICoKIGZpbmRfYWdlbnR4X3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbiwgaW50IHNlc3NpZCkKQEAgLTk3LDcgKzEwMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9sZW5ndGgpOwogICAgIHNwLT5zZWN1cml0eUF1dGhQcm90b0xlbiA9IHBkdS0+dmFyaWFibGVzLT5uYW1lX2xlbmd0aDsKICAgICBzcC0+c2VjdXJpdHlOYW1lID0gc3RyZHVwKChjaGFyICopIHBkdS0+dmFyaWFibGVzLT52YWwuc3RyaW5nKTsKLSAgICBzcC0+ZW5naW5lVGltZSA9IChuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkgKyA1MCkgLyAxMDA7CisgICAgc3AtPmVuZ2luZVRpbWUgPSAodWludDMyX3QpKChuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkgKyA1MCkgLyAxMDApICYgMHg3ZmZmZmZmZkw7CiAKICAgICBzcC0+c3Vic2Vzc2lvbiA9IHNlc3Npb247ICAgLyogbGluayBiYWNrIHRvIGhlYWQgKi8KICAgICBzcC0+ZmxhZ3MgfD0gU05NUF9GTEFHU19TVUJTRVNTSU9OOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYwppbmRleCAxYzAwZGIxLi4xZjlkMzFjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYwpAQCAtMiw2ICsyLDcgQEAKICAqICBBZ2VudFggc3ViLWFnZW50CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWZkZWYgSEFWRV9TVERMSUJfSApAQCAtNDQsNiArNDUsMTEgQEAKIAogI2luY2x1ZGUgInN1YmFnZW50LmgiCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihhZ2VudHhfc3ViYWdlbnQsIGFnZW50eF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnR4X2VuYWJsZV9zdWJhZ2VudCwgYWdlbnR4X3N1YmFnZW50KQorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZW1vdmVfdHJhcF9zZXNzaW9uKQorCiAjaWZkZWYgVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRQogCiBzdGF0aWMgU05NUENhbGxiYWNrIHN1YmFnZW50X3JlZ2lzdGVyX3BpbmdfYWxhcm07CkBAIC01MywxMCArNTksMTIgQEAKIGludCAgICAgICAgICAgICBoYW5kbGVfc3ViYWdlbnRfcmVzcG9uc2UoaW50IG9wLCBuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVxaWQsIG5ldHNubXBfcGR1ICpwZHUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKm1hZ2ljKTsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQgICAgICAgICAgICAgaGFuZGxlX3N1YmFnZW50X3NldF9yZXNwb25zZShpbnQgb3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlcWlkLCBuZXRzbm1wX3BkdSAqcGR1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqbWFnaWMpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIHZvaWQgICAgICAgICAgICBzdWJhZ2VudF9zdGFydHVwX2NhbGxiYWNrKHVuc2lnbmVkIGludCBjbGllbnRyZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpOwogaW50ICAgICAgICAgICAgIHN1YmFnZW50X29wZW5fbWFzdGVyX3Nlc3Npb24odm9pZCk7CkBAIC0xNTYsMTIgKzE2NCwxNSBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FHRU5UWF9FTkFCTEVfU1VCQUdFTlQKIHZvaWQKIG5ldHNubXBfZW5hYmxlX3N1YmFnZW50KHZvaWQpIHsKICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIE5FVFNOTVBfRFNfQUdFTlRfUk9MRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNVQl9BR0VOVCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BR0VOVFhfRU5BQkxFX1NVQkFHRU5UICovCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgYWdlbnRfbmV0c25tcF9zZXRfaW5mbyAqCiBzYXZlX3NldF92YXJzKG5ldHNubXBfc2Vzc2lvbiAqIHNzLCBuZXRzbm1wX3BkdSAqcGR1KQogewpAQCAtMjMwLDYgKzI0MSw3IEBACiAgICAgICAgIHByZXYgPSBwdHI7CiAgICAgfQogfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogc3RhdGljIHZvaWQKIHNlbmRfYWdlbnR4X2Vycm9yKG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbiwgbmV0c25tcF9wZHUgKnBkdSwgaW50IGVycnN0YXQsIGludCBlcnJpbmRleCkKQEAgLTM5Myw2ICs0MDUsNyBAQAogICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4L3N1YmFnZW50IiwgIiAgLT4gcmVzcG9uc2VcbiIpKTsKICAgICAgICAgcmV0dXJuIDE7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBBR0VOVFhfTVNHX1RFU1RTRVQ6CiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYWFdXVyB3ZSBoYXZlIHRvIG1hcCB0aGlzIHR3aWNlIHRvIGJvdGggUkVTRVJWRTEgYW5kIFJFU0VSVkUyIApAQCAtNDcwLDYgKzQ4Myw3IEBACiAgICAgICAgIG15Y2FsbGJhY2sgPSBoYW5kbGVfc3ViYWdlbnRfc2V0X3Jlc3BvbnNlOwogICAgICAgICByZXRtYWdpYyA9IGFzaTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIFNOTVBfRlJFRShzbWFnaWMpOwpAQCAtNTQxLDExICs1NTUsMTMgQEAKICAgICAgICAgICAgICAgICAodW5zaWduZWQpcGR1LT5yZXFpZCwgKHVuc2lnbmVkKXBkdS0+dHJhbnNpZCwKICAgICAgICAgICAgICAgICAodW5zaWduZWQpcGR1LT5zZXNzaWQpKTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9GUkVFIHx8CiAgICAgICAgIHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19JTlRFUk5BTF9TRVRfVU5ETyB8fAogICAgICAgICBwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfSU5URVJOQUxfU0VUX0NPTU1JVCkgewogICAgICAgICBmcmVlX3NldF92YXJzKHNtYWdpYy0+c2Vzc2lvbiwgcGR1KTsKICAgICB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgaWYgKHNtYWdpYy0+b3JpZ2luYWxfY29tbWFuZCA9PSBBR0VOVFhfTVNHX0dFVE5FWFQpIHsKICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsCkBAIC02MDcsNiArNjIzLDcgQEAKICAgICByZXR1cm4gMTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogaGFuZGxlX3N1YmFnZW50X3NldF9yZXNwb25zZShpbnQgb3AsIG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sIGludCByZXFpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKnBkdSwgdm9pZCAqbWFnaWMpCkBAIC02NjgsNyArNjg1LDcgQEAKICAgICBERUJVR01TR1RMKCgiYWdlbnR4L3N1YmFnZW50IiwgIiAgRklOSVNIRURcbiIpKTsKICAgICByZXR1cm4gMTsKIH0KLQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogCiBpbnQKQEAgLTY3Nyw3ICs2OTQsNyBAQAogewogICAgIHN0cnVjdCByZWdpc3Rlcl9wYXJhbWV0ZXJzICpyZWdfcGFybXMgPQogICAgICAgICAoc3RydWN0IHJlZ2lzdGVyX3BhcmFtZXRlcnMgKikgc2VydmVyYXJnOwotICAgIG5ldHNubXBfc2Vzc2lvbiAqYWdlbnR4X3NzID0gKG5ldHNubXBfc2Vzc2lvbiAqKSBjbGllbnRhcmc7CisgICAgbmV0c25tcF9zZXNzaW9uICphZ2VudHhfc3MgPSAqKG5ldHNubXBfc2Vzc2lvbiAqKiljbGllbnRhcmc7CiAKICAgICBpZiAobWlub3JJRCA9PSBTTk1QRF9DQUxMQkFDS19SRUdJU1RFUl9PSUQpCiAgICAgICAgIHJldHVybiBhZ2VudHhfcmVnaXN0ZXIoYWdlbnR4X3NzLApAQCAtNzAzLDcgKzcyMCw3IEBACiB7CiAgICAgY29uc3Qgc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgKnJlZ19wYXJtcyA9CiAgICAgICAgIChjb25zdCBzdHJ1Y3QgcmVnaXN0ZXJfc3lzT1JfcGFyYW1ldGVycyAqKSBzZXJ2ZXJhcmc7Ci0gICAgbmV0c25tcF9zZXNzaW9uICphZ2VudHhfc3MgPSAobmV0c25tcF9zZXNzaW9uICopIGNsaWVudGFyZzsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKmFnZW50eF9zcyA9ICoobmV0c25tcF9zZXNzaW9uICoqKWNsaWVudGFyZzsKIAogICAgIGlmIChtaW5vcklEID09IFNOTVBEX0NBTExCQUNLX1JFR19TWVNPUikKICAgICAgICAgcmV0dXJuIGFnZW50eF9hZGRfYWdlbnRjYXBzKGFnZW50eF9zcywKQEAgLTcxOSw3ICs3MzYsNyBAQAogc3RhdGljIGludAogc3ViYWdlbnRfc2h1dGRvd24oaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsIHZvaWQgKmNsaWVudGFyZykKIHsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKnRoZXNlc3Npb24gPSAobmV0c25tcF9zZXNzaW9uICopY2xpZW50YXJnOworICAgIG5ldHNubXBfc2Vzc2lvbiAqdGhlc2Vzc2lvbiA9ICoobmV0c25tcF9zZXNzaW9uICoqKWNsaWVudGFyZzsKICAgICBERUJVR01TR1RMKCgiYWdlbnR4L3N1YmFnZW50IiwgInNodXR0aW5nIGRvd24gc2Vzc2lvbi4uLi5cbiIpKTsKICAgICBpZiAodGhlc2Vzc2lvbiA9PSBOVUxMKSB7CiAJREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsICJFbXB0eSBzZXNzaW9uIHRvIHNodXRkb3duXG4iKSk7CkBAIC03NDcsMjIgKzc2NCwyOSBAQAogdm9pZAogYWdlbnR4X3JlZ2lzdGVyX2NhbGxiYWNrcyhuZXRzbm1wX3Nlc3Npb24gKiBzKQogeworICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc19wOworCiAgICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsCiAgICAgICAgICAgICAgICAgInJlZ2lzdGVyaW5nIGNhbGxiYWNrcyBmb3Igc2Vzc2lvbiAlcFxuIiwgcykpOworICAgIHNlc3NfcCA9IG5ldHNubXBfbWVtZHVwKCZzLCBzaXplb2YocykpOworICAgIG5ldHNubXBfYXNzZXJ0KHNlc3NfcCk7CisgICAgcy0+bXl2b2lkID0gc2Vzc19wOworICAgIGlmICghc2Vzc19wKQorICAgICAgICByZXR1cm47CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksIFNOTVBfQ0FMTEJBQ0tfU0hVVERPV04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJhZ2VudF9zaHV0ZG93biwgcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJhZ2VudF9zaHV0ZG93biwgc2Vzc19wKTsKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdJU1RFUl9PSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfcmVnaXN0cmF0aW9uX2NhbGxiYWNrLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHNlc3NfcCk7CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfVU5SRUdJU1RFUl9PSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfcmVnaXN0cmF0aW9uX2NhbGxiYWNrLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHNlc3NfcCk7CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHX1NZU09SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgc2Vzc19wKTsKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19VTlJFR19TWVNPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHNlc3NfcCk7CiB9CiAKIC8qCkBAIC03NzUsMTkgKzc5OSwyMCBAQAogICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLAogICAgICAgICAgICAgICAgICJ1bnJlZ2lzdGVyaW5nIGNhbGxiYWNrcyBmb3Igc2Vzc2lvbiAlcFxuIiwgc3MpKTsKICAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLCBTTk1QX0NBTExCQUNLX1NIVVRET1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJhZ2VudF9zaHV0ZG93biwgc3MsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJhZ2VudF9zaHV0ZG93biwgc3MtPm15dm9pZCwgMSk7CiAgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFR0lTVEVSX09JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgc3MsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfcmVnaXN0cmF0aW9uX2NhbGxiYWNrLCBzcy0+bXl2b2lkLCAxKTsKICAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfVU5SRUdJU1RFUl9PSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHNzLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgc3MtPm15dm9pZCwgMSk7CiAgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFR19TWVNPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzcywgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgc3MtPm15dm9pZCwgMSk7CiAgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHX1NZU09SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHNzLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzcy0+bXl2b2lkLCAxKTsKKyAgICBTTk1QX0ZSRUUoc3MtPm15dm9pZCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaCBiL2FnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oCmluZGV4IDFkNzY3YWUuLmZjNWYyNmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oCkBAIC01LDYgKzUsMTMgQEAKIC8qIHRoZXNlIGdvIGludG8gYm90aCB0aGUgbWluaSBhZ2VudCBhbmQgdGhlIGZ1bGwgYWdlbnQgKi8KIGNvbmZpZ19yZXF1aXJlKHNubXB2M21pYnMpCiAKKy8qIHZlcnkgZmV3IGRlZmF1bHQgbWlicyAqLworY29uZmlnX2FkZF9taWIoU05NUHYyLU1JQikKK2NvbmZpZ19hZGRfbWliKElGLU1JQikKK2NvbmZpZ19hZGRfbWliKElQLU1JQikKK2NvbmZpZ19hZGRfbWliKFRDUC1NSUIpCitjb25maWdfYWRkX21pYihVRFAtTUlCKQorCiAjaWZkZWYgTkVUU05NUF9NSU5JX0FHRU5UCiAKIC8qIGxpbWl0IHRoZSBtaWJJSSBtb2R1bGVzIHRvIHRoZSBiYXJlIG1pbmltdW0gKi8KQEAgLTEzLDE1ICsyMCw2IEBACiBjb25maWdfcmVxdWlyZShtaWJJSS9zeXNPUlRhYmxlKQogY29uZmlnX3JlcXVpcmUobWliSUkvdmFjbV92YXJzKQogY29uZmlnX3JlcXVpcmUobWliSUkvdmFjbV9jb25mKQotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9FeGl0KQotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9yZXN0YXJ0KQotCi0vKiB2ZXJ5IGZldyBkZWZhdWx0IG1pYnMgKi8KLWNvbmZpZ19hZGRfbWliKFNOTVB2Mi1NSUIpCi1jb25maWdfYWRkX21pYihJRi1NSUIpCi1jb25maWdfYWRkX21pYihJUC1NSUIpCi1jb25maWdfYWRkX21pYihUQ1AtTUlCKQotY29uZmlnX2FkZF9taWIoVURQLU1JQikKIAogI2Vsc2UgLyogIU5FVFNOTVBfTUlOSV9BR0VOVCA9PSB0aGUgZnVsbCBzaGFiYW5nICovCiAKQEAgLTMzLDIyICszMSwyMSBAQAogY29uZmlnX3JlcXVpcmUoYWdlbnRfbWlicykKIGNvbmZpZ19yZXF1aXJlKGFnZW50eCkKIGNvbmZpZ19yZXF1aXJlKGRpc21hbi9ldmVudCkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBjb25maWdfcmVxdWlyZShkaXNtYW4vc2NoZWR1bGUpCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogY29uZmlnX3JlcXVpcmUodXRpbGl0aWVzKQogCiAvKiBkZWZhdWx0IE1JQnMgdG8gYXV0by1pbmNsdWRlIGZvciBwYXJzaW5nICovCiAvKiBOT1RFOiB3ZSBjb25zaWRlciB0aGVzZSBNSUJzIHVzZXJzIHdpbGwgbGlrZWx5IHdhbnQgdG8gbG9hZCBieQogICAgZGVmYXVsdCwgZXZlbiBpZiB0aGV5J3JlIG5vdCBzdXBwb3J0aW5nIGl0IGluIHRoZSBhZ2VudCAoaWUsIHRoZQogICAgY29tbWFuZCBsaW5lIHRvb2xzIG5lZWQgdG8gbG9hZCB0aGVtIGFueXdheSkgKi8KLWNvbmZpZ19hZGRfbWliKFNOTVB2Mi1NSUIpCi1jb25maWdfYWRkX21pYihJRi1NSUIpCi1jb25maWdfYWRkX21pYihJUC1NSUIpCi1jb25maWdfYWRkX21pYihUQ1AtTUlCKQotY29uZmlnX2FkZF9taWIoVURQLU1JQikKIGNvbmZpZ19hZGRfbWliKEhPU1QtUkVTT1VSQ0VTLU1JQikKIGNvbmZpZ19hZGRfbWliKE5PVElGSUNBVElPTi1MT0ctTUlCKQogY29uZmlnX2FkZF9taWIoRElTTUFOLUVWRU5ULU1JQikKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBjb25maWdfYWRkX21pYihESVNNQU4tU0NIRURVTEUtTUlCKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyogYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGV4dHJhIG1vZHVsZXMgKi8KIC8qIHRoZXNlIHN5bWJvbHMgYXJlIHNldCBpbiB0aGUgaG9zdCBzcGVjaWZpYyBuZXQtc25tcC9zeXN0ZW0vPG9zPi5oIGZpbGVzICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5jIGIvYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODk4NzlhCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuYwpAQCAtMCwwICsxLDQ3NSBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bGltaXRzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9maWZvKQorCisjaW5jbHVkZSAiZGVsaXZlckJ5Tm90aWZ5LmgiCisKKy8qIHdlIHNob3VsZCBuZXZlciBzcGxpdCBiZXlvbmQgdGhpcyAqLworI2RlZmluZSBNQVhfTUVTU0FHRV9DT1VOVCAxMjgKKyNkZWZpbmUgQkFTRV9QQUNLRVRfU0laRSAxMDAgLyogc2hvdWxkIGJlIGVub3VnaCB0byBzdG9yZSBTTk1QdjMgbXNnIGhlYWRlcnMgKi8KKworLyogaWYgdiBpcyAhTlVMTCwgdGhlbiBlc3RpbWF0ZSBpdCdzIGxpa2VseSBzaXplICovCisjZGVmaW5lIEVTVElNQVRFX1ZBUl9TSVpFKHYpICh2Pyh2LT5uYW1lX2xlbmd0aCArIHYtPnZhbF9sZW4gKyA4KTowKQorCit2b2lkIHBhcnNlX2RlbGl2ZXJfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK3ZvaWQgcGFyc2VfZGVsaXZlcl9tYXhzaXplX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7Cit2b2lkIHBhcnNlX2RhdGFfbm90aWZpY2F0aW9uX29pZF9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOwordm9pZCBwYXJzZV9wZXJpb2RpY190aW1lX29pZF9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOwordm9pZCBwYXJzZV9tZXNzYWdlX251bWJlcl9vaWRfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK3ZvaWQgcGFyc2VfbWF4X21lc3NhZ2VfbnVtYmVyX29pZF9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOwordm9pZCBmcmVlX2RlbGl2ZXJfY29uZmlnKHZvaWQpOworCitzdGF0aWMgdm9pZCBfc2NoZWR1bGVfbmV4dF9leGVjdXRlX3RpbWUodm9pZCk7CisKK29pZCAgICBkYXRhX25vdGlmaWNhdGlvbl9vaWRbTUFYX09JRF9MRU5dCisgICAgICAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDMsIDEsIDUsIDQsIDAsIDEgfTsKK3NpemVfdCBkYXRhX25vdGlmaWNhdGlvbl9vaWRfbGVuID0gMTM7CisKK29pZCAgICBuZXRzbm1wX3BlcmlvZGljX3RpbWVfb2lkW01BWF9PSURfTEVOXQorICAgICAgID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAzLCAxLCA1LCAzLCAxLCAwIH07CitzaXplX3QgbmV0c25tcF9wZXJpb2RpY190aW1lX29pZF9sZW4gPSAxMzsKKworb2lkICAgIG5ldHNubXBfbWVzc2FnZV9udW1iZXJfb2lkW01BWF9PSURfTEVOXQorICAgICAgID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAzLCAxLCA1LCAzLCAyLCAwIH07CitzaXplX3QgbmV0c25tcF9tZXNzYWdlX251bWJlcl9vaWRfbGVuID0gMTM7CisKK29pZCAgICBuZXRzbm1wX21heF9tZXNzYWdlX251bWJlcl9vaWRbTUFYX09JRF9MRU5dCisgICAgICAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDMsIDEsIDUsIDMsIDMsIDAgfTsKK3NpemVfdCBuZXRzbm1wX21heF9tZXNzYWdlX251bWJlcl9vaWRfbGVuID0gMTM7CisKK29pZCBvYmppZF9zbm1wdHJhcFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA0LCAxLCAwIH07CisKKyNkZWZpbmUgREVGQVVMVF9NQVhfREVMSVZFUl9TSVpFIC0xOworc3RhdGljIGludCBkZWZhdWx0X21heF9zaXplOwordW5zaWduZWQgaW50IGFsYXJtX3JlZzsKK3N0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqZGVsaXZlcl9jb250YWluZXI7CisKK3N0YXRpYyBpbnQKK19kZWxpdmVyX2NvbXBhcmUoZGVsaXZlcl9ieV9ub3RpZnkgKmxocywgZGVsaXZlcl9ieV9ub3RpZnkgKnJocykgeworICAgIC8qIHNvcnQgYnkgdGhlIG5leHRfcnVuIHRpbWUgKi8KKyAgICBpZiAobGhzLT5uZXh0X3J1biA8IHJocy0+bmV4dF9ydW4pCisgICAgICAgIHJldHVybiAtMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAxOworfQorCisvKiogSW5pdGlhbGl6ZXMgdGhlIG10ZVRyaWdnZXIgbW9kdWxlICovCit2b2lkCitpbml0X2RlbGl2ZXJCeU5vdGlmeSh2b2lkKQoreworICAgIC8qIHJlZ2lzdGVyIHRoZSBjb25maWcgdG9rZW5zICovCisgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoImRlbGl2ZXJCeU5vdGlmeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcnNlX2RlbGl2ZXJfY29uZmlnLCAmZnJlZV9kZWxpdmVyX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWy1wXSBbLW1dIFstcyBtYXhzaXplXSBGUkVRVUVOQ1kgT0lEIik7CisKKyAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiZGVsaXZlckJ5Tm90aWZ5TWF4UGFja2V0U2l6ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcnNlX2RlbGl2ZXJfbWF4c2l6ZV9jb25maWcsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpemVJbkJ5dGVzIik7CisKKyAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiZGVsaXZlckJ5Tm90aWZ5T2lkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyc2VfZGF0YV9ub3RpZmljYXRpb25fb2lkX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAvKiBYWFg6IHJlc2V0IHRvIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0lEIik7CisKKyAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiZGVsaXZlckJ5Tm90aWZ5RnJlcXVlbmN5T2lkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyc2VfcGVyaW9kaWNfdGltZV9vaWRfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIC8qIFhYWDogcmVzZXQgdG8gZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPSUQiKTsKKworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkZWxpdmVyQnlOb3RpZnlNZXNzYWdlTnVtYmVyT2lkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyc2VfbWVzc2FnZV9udW1iZXJfb2lkX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAvKiBYWFg6IHJlc2V0IHRvIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0lEIik7CisKKyAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiZGVsaXZlckJ5Tm90aWZ5TWF4TWVzc2FnZU51bWJlck9pZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcnNlX21heF9tZXNzYWdlX251bWJlcl9vaWRfY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIC8qIFhYWDogcmVzZXQgdG8gZGVmYXVsdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPSUQiKTsKKworICAgIC8qIGNyZWF0ZSB0aGUgY29udGFpbmVyIHRvIHN0b3JlIHRoZSBjb25maWcgb2JqZWN0cyovCisgICAgZGVsaXZlcl9jb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJkZWxpdmVyQnlOb3RpZnk6ZmlmbyIpOworICAgIGlmIChOVUxMID09IGRlbGl2ZXJfY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJkZWxpdmVyQnlOb3RpZnk6IGZhaWxlZCB0byBpbml0aWFsaXplIG91ciBkYXRhIGNvbnRhaW5lclxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZGVsaXZlcl9jb250YWluZXItPmNvbnRhaW5lcl9uYW1lID0gc3RyZHVwKCJkZWxpdmVyQnlOb3RpZnkiKTsKKyAgICBkZWxpdmVyX2NvbnRhaW5lci0+Y29tcGFyZSA9IChuZXRzbm1wX2NvbnRhaW5lcl9jb21wYXJlICopIF9kZWxpdmVyX2NvbXBhcmU7CisKKyAgICAvKiBzZXQgdGhlIGRlZmF1bHRzICovCisgICAgZGVmYXVsdF9tYXhfc2l6ZSA9IERFRkFVTFRfTUFYX0RFTElWRVJfU0laRTsKKworICAgIGFsYXJtX3JlZyA9IDA7Cit9CisKK3ZvaWQKK19wYXJzZV9jb25maWdfb2lkKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lLAorICAgICAgICAgICAgICAgICAgb2lkICpvaWRfc3RvcmUsIHNpemVfdCAqb2lkX3N0b3JlX2xlbikgeworICAgIHNpemVfdCB0bXBfbGVuID0gTUFYX09JRF9MRU47CisgICAgLyogcGFyc2UgdGhlIE9JRCBnaXZlbiAqLworCisgICAgaWYgKCFzbm1wX3BhcnNlX29pZChsaW5lLCBvaWRfc3RvcmUsICZ0bXBfbGVuKSkgeworICAgICAgICBjaGFyIGJ1ZltTUFJJTlRfTUFYX0xFTl07CisgICAgICAgIHNucHJpbnRmKGJ1ZiwgU1BSSU5UX01BWF9MRU4tMSwgInVua25vd24gJXMgT0lEOiAlcyIsIHRva2VuLCBsaW5lKTsKKyAgICAgICAgY29uZmlnX3BlcnJvcihidWYpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgKm9pZF9zdG9yZV9sZW4gPSB0bXBfbGVuOworfQorCit2b2lkCitwYXJzZV9kYXRhX25vdGlmaWNhdGlvbl9vaWRfY29uZmlnKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKSB7CisgICAgX3BhcnNlX2NvbmZpZ19vaWQodG9rZW4sIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgZGF0YV9ub3RpZmljYXRpb25fb2lkLCAmZGF0YV9ub3RpZmljYXRpb25fb2lkX2xlbik7Cit9CisKK3ZvaWQKK3BhcnNlX3BlcmlvZGljX3RpbWVfb2lkX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkgeworICAgIF9wYXJzZV9jb25maWdfb2lkKHRva2VuLCBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGVyaW9kaWNfdGltZV9vaWQsICZuZXRzbm1wX3BlcmlvZGljX3RpbWVfb2lkX2xlbik7Cit9CisKK3ZvaWQKK3BhcnNlX21lc3NhZ2VfbnVtYmVyX29pZF9jb25maWcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpIHsKKyAgICBfcGFyc2VfY29uZmlnX29pZCh0b2tlbiwgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX21lc3NhZ2VfbnVtYmVyX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAmbmV0c25tcF9tZXNzYWdlX251bWJlcl9vaWRfbGVuKTsKK30KKwordm9pZAorcGFyc2VfbWF4X21lc3NhZ2VfbnVtYmVyX29pZF9jb25maWcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpIHsKKyAgICBfcGFyc2VfY29uZmlnX29pZCh0b2tlbiwgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX21heF9tZXNzYWdlX251bWJlcl9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgJm5ldHNubXBfbWF4X21lc3NhZ2VfbnVtYmVyX29pZF9sZW4pOworfQorCit2b2lkCitwYXJzZV9kZWxpdmVyX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkgeworICAgIGNvbnN0IGNoYXIgKmNwID0gbGluZTsKKyAgICBjaGFyIGJ1ZltTUFJJTlRfTUFYX0xFTl07CisgICAgc2l6ZV90IGJ1Zl9sZW4gPSBTUFJJTlRfTUFYX0xFTjsKKyAgICBpbnQgbWF4X3NpemUgPSBERUZBVUxUX01BWF9ERUxJVkVSX1NJWkU7CisgICAgaW50IGZyZXF1ZW5jeTsKKyAgICBvaWQgdGFyZ2V0X29pZFtNQVhfT0lEX0xFTl07CisgICAgc2l6ZV90IHRhcmdldF9vaWRfbGVuID0gTUFYX09JRF9MRU47CisgICAgZGVsaXZlcl9ieV9ub3RpZnkgKm5ld19ub3RpZnkgPSBOVUxMOworICAgIGludCBmbGFncyA9IDA7CisKKyAgICB3aGlsZShjcCAmJiAqY3AgPT0gJy0nKSB7CisgICAgICAgIHN3aXRjaCAoKihjcCsxKSkgeworICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgICAgIGNwID0gc2tpcF90b2tlbl9jb25zdChjcCk7CisgICAgICAgICAgICBpZiAoIWNwKSB7CisgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigibm8gYXJndW1lbnQgZ2l2ZW4gdG8gLXMiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtYXhfc2l6ZSA9IGF0b2koY3ApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAncCc6CisgICAgICAgICAgICBmbGFncyA9IGZsYWdzIHwgTkVUU05NUF9ERUxJVkVSX05PX1BFUklPRF9PSUQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICdtJzoKKyAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgfCBORVRTTk1QX0RFTElWRVJfTk9fTVNHX0NPVU5UUzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJ1bmtub3duIGZsYWciKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjcCA9IHNraXBfdG9rZW5fY29uc3QoY3ApOworICAgIH0KKworICAgIGlmICghY3ApIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigibm8gZnJlcXVlbmN5IGdpdmVuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY29weV9ud29yZChjcCwgYnVmLCBidWZfbGVuKTsKKyAgICBmcmVxdWVuY3kgPSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoYnVmKTsKKyAgICBjcCA9IHNraXBfdG9rZW5fY29uc3QoY3ApOworCisgICAgaWYgKGZyZXF1ZW5jeSA8PSAwKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoImlsbGVnYWwgZnJlcXVlbmN5IGdpdmVuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWNwKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoIm5vIE9JRCBnaXZlbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogcGFyc2UgdGhlIE9JRCBnaXZlbiAqLworICAgIGlmICghc25tcF9wYXJzZV9vaWQoY3AsIHRhcmdldF9vaWQsICZ0YXJnZXRfb2lkX2xlbikpIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigidW5rbm93biBkZWxpdmVyQnlOb3RpZnkgT0lEIik7CisgICAgICAgIERFQlVHTVNHVEwoKCJkZWxpdmVyQnlOb3RpZnkiLCAiVGhlIE9JRCB3aXRoIHRoZSBwcm9ibGVtOiAlc1xuIiwgY3ApKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIHNldCB1cCB0aGUgb2JqZWN0IHRvIHN0b3JlIGFsbCB0aGUgZGF0YSAqLworICAgIG5ld19ub3RpZnkgPSBTTk1QX01BTExPQ19UWVBFREVGKGRlbGl2ZXJfYnlfbm90aWZ5KTsKKyAgICBuZXdfbm90aWZ5LT5mcmVxdWVuY3kgPSBmcmVxdWVuY3k7CisgICAgbmV3X25vdGlmeS0+bWF4X3BhY2tldF9zaXplID0gbWF4X3NpemU7CisgICAgbmV3X25vdGlmeS0+bGFzdF9ydW4gPSB0aW1lKE5VTEwpOworICAgIG5ld19ub3RpZnktPm5leHRfcnVuID0gbmV3X25vdGlmeS0+bGFzdF9ydW4gKyBmcmVxdWVuY3k7CisgICAgbmV3X25vdGlmeS0+ZmxhZ3MgPSBmbGFnczsKKworICAgIG5ld19ub3RpZnktPnRhcmdldCA9IG1hbGxvYyh0YXJnZXRfb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICBuZXdfbm90aWZ5LT50YXJnZXRfbGVuID0gdGFyZ2V0X29pZF9sZW47CisgICAgbWVtY3B5KG5ld19ub3RpZnktPnRhcmdldCwgdGFyZ2V0X29pZCwgdGFyZ2V0X29pZF9sZW4qc2l6ZW9mKG9pZCkpOworCisgICAgLyogWFhYOiBuZWVkIHRvIGRvIHRoZSB3aG9sZSBjb250YWluZXIgKi8KKyAgICBzbm1wX2FsYXJtX3JlZ2lzdGVyKGNhbGN1bGF0ZV90aW1lX3VudGlsX25leHRfcnVuKG5ld19ub3RpZnksIE5VTEwpLCAwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICZkZWxpdmVyX2V4ZWN1dGUsIE5VTEwpOworCisgICAgLyogYWRkIGl0IHRvIHRoZSBjb250YWluZXIgKi8KKyAgICBDT05UQUlORVJfSU5TRVJUKGRlbGl2ZXJfY29udGFpbmVyLCBuZXdfbm90aWZ5KTsKKyAgICBfc2NoZWR1bGVfbmV4dF9leGVjdXRlX3RpbWUoKTsKK30KKwordm9pZAorcGFyc2VfZGVsaXZlcl9tYXhzaXplX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkgeworICAgIGRlZmF1bHRfbWF4X3NpemUgPSBhdG9pKGxpbmUpOworfQorCitzdGF0aWMgdm9pZAorX2ZyZWVfZGVsaXZlcl9vYmooZGVsaXZlcl9ieV9ub3RpZnkgKm9iaiwgdm9pZCAqY29udGV4dCkgeworICAgIG5ldHNubXBfYXNzZXJ0X29yX3JldHVybihvYmogIT0gTlVMTCwgKTsKKyAgICBTTk1QX0ZSRUUob2JqLT50YXJnZXQpOworICAgIFNOTVBfRlJFRShvYmopOworfQorCit2b2lkCitmcmVlX2RlbGl2ZXJfY29uZmlnKHZvaWQpIHsKKyAgICBkZWZhdWx0X21heF9zaXplID0gREVGQVVMVF9NQVhfREVMSVZFUl9TSVpFOworICAgIENPTlRBSU5FUl9DTEVBUihkZWxpdmVyX2NvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9mcmVlX2RlbGl2ZXJfb2JqLCBOVUxMKTsKKyAgICBpZiAoYWxhcm1fcmVnKSB7CisgICAgICAgIHNubXBfYWxhcm1fdW5yZWdpc3RlcihhbGFybV9yZWcpOworICAgICAgICBhbGFybV9yZWcgPSAwOworICAgIH0KK30KKwordm9pZAorZGVsaXZlcl9leGVjdXRlKHVuc2lnbmVkIGludCBjbGllbnRyZWcsIHZvaWQgKmNsaWVudGFyZykgeworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgKndhbGtlciwgKmRlbGl2ZXJfbm90aWZpY2F0aW9uLCAqdmFydG1wOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqcmVhZHlfZm9yX2RlbGl2ZXJ5W01BWF9NRVNTQUdFX0NPVU5UXTsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3M7CisgICAgaW50IHJjLCBpOworICAgIGRlbGl2ZXJfYnlfbm90aWZ5ICpvYmo7CisgICAgbmV0c25tcF9pdGVyYXRvciAqaXRlcmF0b3I7CisgICAgdGltZV90ICAgICAgICAgICAgbm93ID0gdGltZShOVUxMKTsKKyAgICB1X2xvbmcgICAgICAgICAgICBtZXNzYWdlX2NvdW50LCBtYXhfbWVzc2FnZV9jb3VudCwgdG1wX2xvbmc7CisgICAgdV9sb25nICAgICAgICAgICAqbWF4X21lc3NhZ2VfY291bnRfcHRyc1tNQVhfTUVTU0FHRV9DT1VOVF07CisgICAgc2l6ZV90ICAgICAgICAgICAgZXN0aW1hdGVkX3BrdF9zaXplOworCisgICAgREVCVUdNU0dUTCgoImRlbGl2ZXJCeU5vdGlmeSIsICJTdGFydGluZyB0aGUgZXhlY3V0ZSByb3V0aW5lXG4iKSk7CisKKyAgICAvKiBYWFg6IG5lZWQgdG8gZG8gdGhlIHdob2xlIGNvbnRhaW5lciAqLworICAgIGl0ZXJhdG9yID0gQ09OVEFJTkVSX0lURVJBVE9SKGRlbGl2ZXJfY29udGFpbmVyKTsKKyAgICBuZXRzbm1wX2Fzc2VydF9vcl9yZXR1cm4oaXRlcmF0b3IgIT0gTlVMTCwpOworCisgICAgc2VzcyA9IG5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbigpOworCisgICAgZm9yKG9iaiA9IElURVJBVE9SX0ZJUlNUKGl0ZXJhdG9yKTsgb2JqOworICAgICAgICBvYmogPSBJVEVSQVRPUl9ORVhUKGl0ZXJhdG9yKSkgeworCisgICAgICAgIC8qIGNoZWNrIGlmIHdlIG5lZWQgdG8gcnVuIHRoaXMgb25lIHlldCAqLworICAgICAgICBpZiAob2JqLT5uZXh0X3J1biA+IG5vdykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1heF9tZXNzYWdlX2NvdW50ID0gMTsKKyAgICAgICAgbWVzc2FnZV9jb3VudCA9IDA7CisKKyAgICAgICAgLyogZmlsbCB0aGUgdmFyYmluZCBsaXN0IHdpdGggdGhlIHRhcmdldCBvYmplY3QgKi8KKyAgICAgICAgdmFycyA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG5ldHNubXBfdmFyaWFibGVfbGlzdCApOworICAgICAgICBzbm1wX3NldF92YXJfb2JqaWQoIHZhcnMsIG9iai0+dGFyZ2V0LCBvYmotPnRhcmdldF9sZW4gKTsKKyAgICAgICAgdmFycy0+dHlwZSA9IEFTTl9OVUxMOworCisgICAgICAgIC8qIHdhbGsgdGhlIE9JRCB0cmVlIGZvciB0aGUgZGF0YSAqLworICAgICAgICByYyA9IG5ldHNubXBfcXVlcnlfd2Fsayh2YXJzLCBzZXNzKTsKKyAgICAgICAgaWYgKHJjICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgICAgIC8qIFhYWDogZGlzYWJsZT8gYW5kIHJlc2V0IHRoZSBuZXh0IHF1ZXJ5IHRpbWUgcG9pbnQhICovCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZGVsaXZlckJ5Tm90aWZ5OiBmYWlsZWQgdG8gaXNzdWUgdGhlIHF1ZXJ5Iik7CisgICAgICAgICAgICBJVEVSQVRPUl9SRUxFQVNFKGl0ZXJhdG9yKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHdhbGtlciA9IHZhcnM7CisKKyAgICAgICAgd2hpbGUgKHdhbGtlcikgeworCisgICAgICAgICAgICAvKiBTZXQgdXAgdGhlIG5vdGlmaWNhdGlvbiBpdHNlbGYgKi8KKyAgICAgICAgICAgIGRlbGl2ZXJfbm90aWZpY2F0aW9uID0gTlVMTDsKKyAgICAgICAgICAgIGVzdGltYXRlZF9wa3Rfc2l6ZSA9IEJBU0VfUEFDS0VUX1NJWkU7CisKKyAgICAgICAgICAgIC8qIGFkZCBpbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgKi8KKyAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJmRlbGl2ZXJfbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmppZF9zbm1wdHJhcCwgT0lEX0xFTkdUSChvYmppZF9zbm1wdHJhcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9PQkpFQ1RfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfbm90aWZpY2F0aW9uX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9ub3RpZmljYXRpb25fb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgICAgIGVzdGltYXRlZF9wa3Rfc2l6ZSArPSBFU1RJTUFURV9WQVJfU0laRShkZWxpdmVyX25vdGlmaWNhdGlvbik7CisKKyAgICAgICAgICAgIC8qIGFkZCBpbiB0aGUgY3VycmVudCBtZXNzYWdlIG51bWJlciBpbiB0aGlzIHNlcXVlbmNlICovCisgICAgICAgICAgICBpZiAoIShvYmotPmZsYWdzICYgTkVUU05NUF9ERUxJVkVSX05PX1BFUklPRF9PSUQpKSB7CisgICAgICAgICAgICAgICAgdG1wX2xvbmcgPSBvYmotPmZyZXF1ZW5jeTsKKyAgICAgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZkZWxpdmVyX25vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGVyaW9kaWNfdGltZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BlcmlvZGljX3RpbWVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB2b2lkICopICZ0bXBfbG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0bXBfbG9uZykpOworICAgICAgICAgICAgICAgIGVzdGltYXRlZF9wa3Rfc2l6ZSArPSBFU1RJTUFURV9WQVJfU0laRShkZWxpdmVyX25vdGlmaWNhdGlvbik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIGFkZCBpbiB0aGUgY3VycmVudCBtZXNzYWdlIG51bWJlciBpbiB0aGlzIHNlcXVlbmNlICovCisgICAgICAgICAgICBtZXNzYWdlX2NvdW50Kys7CisgICAgICAgICAgICBpZiAobWVzc2FnZV9jb3VudCA+IE1BWF9NRVNTQUdFX0NPVU5UKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImRlbGl2ZXJ5IGNvbnN0cnVjdCBncmV3IHRvbyBsYXJnZS4uLiAgZ2l2aW5nIHVwXG4iKTsKKyAgICAgICAgICAgICAgICAvKiBYWFg6IGRpc2FibGUgaXQgKi8KKyAgICAgICAgICAgICAgICAvKiBYWFg6IHNlbmQgYSBub3RpZmljYXRpb24gYWJvdXQgaXQ/ICovCisgICAgICAgICAgICAgICAgSVRFUkFUT1JfUkVMRUFTRShpdGVyYXRvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBzdG9yZSB0aGlzIGZvciBsYXRlciB1cGRhdGluZyBhbmQgc2VuZGluZyAqLworICAgICAgICAgICAgcmVhZHlfZm9yX2RlbGl2ZXJ5W21lc3NhZ2VfY291bnQtMV0gPSBkZWxpdmVyX25vdGlmaWNhdGlvbjsKKworICAgICAgICAgICAgaWYgKCEob2JqLT5mbGFncyAmIE5FVFNOTVBfREVMSVZFUl9OT19NU0dfQ09VTlRTKSkgeworICAgICAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJmRlbGl2ZXJfbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9tZXNzYWdlX251bWJlcl9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX21lc3NhZ2VfbnVtYmVyX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgdm9pZCAqKSAmbWVzc2FnZV9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtZXNzYWdlX2NvdW50KSk7CisgICAgICAgICAgICAgICAgZXN0aW1hdGVkX3BrdF9zaXplICs9IEVTVElNQVRFX1ZBUl9TSVpFKGRlbGl2ZXJfbm90aWZpY2F0aW9uKTsKKworICAgICAgICAgICAgICAgIC8qIGFkZCBpbiB0aGUgbWF4IG1lc3NhZ2UgbnVtYmVyIGNvdW50IGZvciB0aGlzIHNlcXVlbmNlICovCisgICAgICAgICAgICAgICAgdmFydG1wID0gc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmZGVsaXZlcl9ub3RpZmljYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX21heF9tZXNzYWdlX251bWJlcl9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX21heF9tZXNzYWdlX251bWJlcl9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX1VOU0lHTkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHZvaWQgKikgJm1heF9tZXNzYWdlX2NvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1heF9tZXNzYWdlX2NvdW50KSk7CisgICAgICAgICAgICAgICAgZXN0aW1hdGVkX3BrdF9zaXplICs9IEVTVElNQVRFX1ZBUl9TSVpFKGRlbGl2ZXJfbm90aWZpY2F0aW9uKTsKKworICAgICAgICAgICAgICAgIC8qIHdlJ2xsIG5lZWQgdG8gdXBkYXRlIHRoaXMgY291bnRlciBsYXRlciAqLworICAgICAgICAgICAgICAgIG1heF9tZXNzYWdlX2NvdW50X3B0cnNbbWVzc2FnZV9jb3VudC0xXSA9CisgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFydG1wLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyoganVzdCB0byBiZSBzdXJlICovCisgICAgICAgICAgICAgICAgbWF4X21lc3NhZ2VfY291bnRfcHRyc1ttZXNzYWdlX2NvdW50LTFdID0gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLyogY29weSBpbiB0aGUgY29sbGVjdGVkIGRhdGEgKi8KKyAgICAgICAgICAgIHdoaWxlKHdhbGtlcikgeworICAgICAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJmRlbGl2ZXJfbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa2VyLT5uYW1lLCB3YWxrZXItPm5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa2VyLT50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fsa2VyLT52YWwuc3RyaW5nLCB3YWxrZXItPnZhbF9sZW4pOworCisgICAgICAgICAgICAgICAgLyogOCBieXRlIHBhZGRpbmcgZm9yIEFTTiBlbmNvZGluZ3MgYW4gYSBmZXcgZXh0cmEgT0lEIGJ5dGVzICovCisgICAgICAgICAgICAgICAgZXN0aW1hdGVkX3BrdF9zaXplICs9IEVTVElNQVRFX1ZBUl9TSVpFKHdhbGtlcik7CisKKyAgICAgICAgICAgICAgICB3YWxrZXIgPSB3YWxrZXItPm5leHRfdmFyaWFibGU7CisKKyAgICAgICAgICAgICAgICAvKiBpZiB0aGUgY3VycmVudCBzaXplIFBMVVMgdGhlIG5leHQgb25lICh3aGljaCBpcyBub3cKKyAgICAgICAgICAgICAgICAgICBpbiAnd2Fsa2VyJykgaXMgZ3JlYXRlciB0aGFuIHRoZSBsaW1ldCB0aGVuIHdlIHN0b3AgaGVyZSAqLworICAgICAgICAgICAgICAgIGlmIChvYmotPm1heF9wYWNrZXRfc2l6ZSA+IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgZXN0aW1hdGVkX3BrdF9zaXplICsKKyAgICAgICAgICAgICAgICAgICAgRVNUSU1BVEVfVkFSX1NJWkUod2Fsa2VyKSA+PQorICAgICAgICAgICAgICAgICAgICBvYmotPm1heF9wYWNrZXRfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIHNlbmQgb3V0IHRoZSBub3RpZmljYXRpb24gKi8KKyAgICAgICAgICAgIHNlbmRfdjJ0cmFwKGRlbGl2ZXJfbm90aWZpY2F0aW9uKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvcihpID0gMDsgaSA8IG1lc3NhZ2VfY291bnQ7IGkrKykgeworICAgICAgICAgICAgLyogdXBkYXRlIHRoZSBtYXggY291bnQgcG9pbnRlciAqLworICAgICAgICAgICAgaWYgKG1heF9tZXNzYWdlX2NvdW50X3B0cnNbaV0pCisgICAgICAgICAgICAgICAgKihtYXhfbWVzc2FnZV9jb3VudF9wdHJzW2ldKSA9IG1lc3NhZ2VfY291bnQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHNlbmRfdjJ0cmFwKHJlYWR5X2Zvcl9kZWxpdmVyeVtpXSk7CisgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZChyZWFkeV9mb3JfZGVsaXZlcnlbaV0pOworICAgICAgICB9CisKKyAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CisKKyAgICAgICAgLyogcmVjb3JkIHRoaXMgYXMgdGhlIHRpbWUgcHJvY2Vzc2VkICovCisgICAgICAgIC8qIFhYWDogdGhpcyBtYXkgY3JlZXAgYnkgYSBmZXcgc2Vjb25kcyB3aGVuIHByb2Nlc3NpbmcgYW5kIG1heWJlIHdlIHdhbnQKKyAgICAgICAgICAgdG8gZG8gdGhlIHRpbWUgc3RhbXAgYXQgdGhlIGJlZ2lubmluZz8gKi8KKyAgICAgICAgb2JqLT5sYXN0X3J1biA9IHRpbWUoTlVMTCk7CisgICAgfQorICAgIElURVJBVE9SX1JFTEVBU0UoaXRlcmF0b3IpOworCisgICAgLyogY2FsY3VsYXRlIHRoZSBuZXh0IHRpbWUgdG8gc2xlZXAgZm9yICovCisgICAgX3NjaGVkdWxlX25leHRfZXhlY3V0ZV90aW1lKCk7Cit9CisKK2ludAorY2FsY3VsYXRlX3RpbWVfdW50aWxfbmV4dF9ydW4oZGVsaXZlcl9ieV9ub3RpZnkgKml0LCB0aW1lX3QgKm5vdykgeworICAgIHRpbWVfdCAgICAgICAgICBsb2NhbF9ub3c7CisKKyAgICAvKiBpZiB3ZSB3ZXJlbid0IHBhc3NlZCBhIHZhbGlkIHRpbWUsIGZha2UgaXQgKi8KKyAgICBpZiAoTlVMTCA9PSBub3cpIHsKKyAgICAgICAgbm93ID0gJmxvY2FsX25vdzsKKyAgICAgICAgdGltZSgmbG9jYWxfbm93KTsKKyAgICB9CisKKyAgICBuZXRzbm1wX2Fzc2VydF9vcl9yZXR1cm4oaXQtPmxhc3RfcnVuICE9IDAsIC0xKTsKKworICAgIC8qIHNldCB0aGUgdGltZXN0YW1wIGZvciB0aGUgbmV4dCBydW4gKi8KKyAgICBpdC0+bmV4dF9ydW4gPSBpdC0+bGFzdF9ydW4gKyBpdC0+ZnJlcXVlbmN5OworCisgICAgLyogaG93IGxvbmcgdW50aWwgdGhlIG5leHQgcnVuPyAqLworICAgIHJldHVybiBpdC0+bmV4dF9ydW4gLSAqbm93OworfQorCitzdGF0aWMgdm9pZAorX3NjaGVkdWxlX25leHRfZXhlY3V0ZV90aW1lKHZvaWQpIHsKKyAgICB0aW1lX3QgICAgICAgICAgICAgbG9jYWxfbm93ID0gdGltZShOVUxMKTsKKyAgICBpbnQgICAgICAgICAgICAgICAgc2xlZXBfZm9yID0gSU5UX01BWDsKKyAgICBpbnQgICAgICAgICAgICAgICAgbmV4dF90aW1lOworICAgIG5ldHNubXBfaXRlcmF0b3IgICppdGVyYXRvcjsKKyAgICBkZWxpdmVyX2J5X25vdGlmeSAqb2JqOworCisgICAgREVCVUdNU0dUTCgoImRlbGl2ZXJCeU5vdGlmeSIsICJDYWxjdWxhdGluZyBzY2hlZHVsaW5nIG5lZWRlZFxuIikpOworCisgICAgaWYgKGFsYXJtX3JlZykgeworICAgICAgICBzbm1wX2FsYXJtX3VucmVnaXN0ZXIoYWxhcm1fcmVnKTsKKyAgICAgICAgYWxhcm1fcmVnID0gMDsKKyAgICB9CisKKyAgICBpdGVyYXRvciA9IENPTlRBSU5FUl9JVEVSQVRPUihkZWxpdmVyX2NvbnRhaW5lcik7CisgICAgaWYgKE5VTEwgPT0gaXRlcmF0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGZvcihvYmogPSBJVEVSQVRPUl9GSVJTVChpdGVyYXRvcik7IG9iajsKKyAgICAgICAgb2JqID0gSVRFUkFUT1JfTkVYVChpdGVyYXRvcikpIHsKKyAgICAgICAgbmV4dF90aW1lID0gY2FsY3VsYXRlX3RpbWVfdW50aWxfbmV4dF9ydW4ob2JqLCAmbG9jYWxfbm93KTsKKyAgICAgICAgREVCVUdNU0dUTCgoImRlbGl2ZXJCeU5vdGlmeSIsICIgIG9iajogJWQgKGxhc3Q9JWQsIG5leHRfcnVuPSVkKVxuIiwgbmV4dF90aW1lLCBvYmotPmxhc3RfcnVuLCBvYmotPm5leHRfcnVuKSk7CisgICAgICAgIGlmIChuZXh0X3RpbWUgPCBzbGVlcF9mb3IpCisgICAgICAgICAgICBzbGVlcF9mb3IgPSBuZXh0X3RpbWU7CisgICAgfQorCisgICAgaWYgKHNsZWVwX2ZvciAhPSBJTlRfTUFYKSB7CisgICAgICAgIGlmIChzbGVlcF9mb3IgPCAxKQorICAgICAgICAgICAgc2xlZXBfZm9yID0gMTsgLyogZ2l2ZSBhdCBsZWFzdCBhIHNtYWxsIHBhdXNlICovCisgICAgICAgIERFQlVHTVNHVEwoKCJkZWxpdmVyQnlOb3RpZnkiLCAiTmV4dCBleGVjdXRpb24gaW4gJWQgKG1heCA9ICVkKSBzZWNvbmRzXG4iLAorICAgICAgICAgICAgICAgICAgICBzbGVlcF9mb3IsIElOVF9NQVgpKTsKKyAgICAgICAgYWxhcm1fcmVnID0gc25tcF9hbGFybV9yZWdpc3RlcihzbGVlcF9mb3IsIDAsICZkZWxpdmVyX2V4ZWN1dGUsIE5VTEwpOworICAgIH0KKworICAgIElURVJBVE9SX1JFTEVBU0UoaXRlcmF0b3IpOworfQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kZWxpdmVyL2RlbGl2ZXJCeU5vdGlmeS5oIGIvYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTJjMzY2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGVsaXZlci9kZWxpdmVyQnlOb3RpZnkuaApAQCAtMCwwICsxLDQwIEBACisjaWZuZGVmIERFTElWRVJCWU5PVElGWV9ICisjZGVmaW5lIERFTElWRVJCWU5PVElGWV9IIDEKKworI2lmIFRJTUVfV0lUSF9TWVNfVElNRQorIyBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBpbmNsdWRlIDx0aW1lLmg+CisjZWxzZQorIyBpZiBIQVZFX1NZU19USU1FX0gKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGVsc2UKKyMgIGluY2x1ZGUgPHRpbWUuaD4KKyMgZW5kaWYKKyNlbmRpZgorCitjb25maWdfYWRkX21pYihORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCKQorCit2b2lkIGluaXRfZGVsaXZlckJ5Tm90aWZ5KHZvaWQpOworCit2b2lkIHBhcnNlX2RlbGl2ZXJfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK3ZvaWQgZnJlZV9kZWxpdmVyX2NvbmZpZyh2b2lkKTsKKworU05NUEFsYXJtQ2FsbGJhY2sgZGVsaXZlcl9leGVjdXRlOworCisjZGVmaW5lIE5FVFNOTVBfREVMSVZFUl9OT19QRVJJT0RfT0lEICAgMHgwMQorI2RlZmluZSBORVRTTk1QX0RFTElWRVJfTk9fTVNHX0NPVU5UUyAgIDB4MDIKKworLyogaW1wbGVtZW50YXRpb24gZGV0YWlscyAqLwordHlwZWRlZiBzdHJ1Y3QgZGVsaXZlcl9ieV9ub3RpZnlfcyB7CisgICBpbnQgICAgIGZyZXF1ZW5jeTsKKyAgIGludCAgICAgbGFzdF9ydW47CisgICBpbnQgICAgIG5leHRfcnVuOworICAgb2lkICAgICp0YXJnZXQ7CisgICBzaXplX3QgIHRhcmdldF9sZW47CisgICBpbnQgICAgIG1heF9wYWNrZXRfc2l6ZTsKKyAgIGludCAgICAgZmxhZ3M7Cit9IGRlbGl2ZXJfYnlfbm90aWZ5OworCitpbnQgY2FsY3VsYXRlX3RpbWVfdW50aWxfbmV4dF9ydW4oZGVsaXZlcl9ieV9ub3RpZnkgKml0LCB0aW1lX3QgKm5vdyk7CisKKyNlbmRpZiAvKiBkZWxpdmVyQnlOb3RpZnlfaCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4uaAppbmRleCA4MGYzZTFmLi42YjdjZGQ1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4uaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4uaApAQCAtMyw3ICszLDEwIEBACiAgKi8KIGNvbmZpZ19yZXF1aXJlKGRpc21hbi9ldmVudC1taWIpCiBjb25maWdfcmVxdWlyZShkaXNtYW4vZXhwcmVzc2lvbi1taWIpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorLyogdGhlIHNjaGVkdWxlIG1pYiBpcyBhbGwgYWJvdXQgd3JpdGluZyAoU0VUcykgKi8gCiBjb25maWdfcmVxdWlyZShkaXNtYW4vc2NoZWR1bGUpCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogLyogY29uZmlnX3JlcXVpcmUoZGlzbWFuL25zbG9va3VwLW1pYikgICAqLwogLyogY29uZmlnX3JlcXVpcmUoZGlzbWFuL3BpbmctbWliKSAgICAgICAqLwogLyogY29uZmlnX3JlcXVpcmUoZGlzbWFuL3RyYWNlcm91dGUtbWliKSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYwppbmRleCAwNTM2MGQzLi5iYzRmZjBiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYwpAQCAtNCwxMiArNCwxNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnQuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVPYmplY3RzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkaXNtYW5fZGVidWdnaW5nLCBsaWJuZXRzbm1wbWlicykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtdGVldmVudCwgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobXRlZXZlbnRfcmVtb3ZlZW50cnksIG10ZWV2ZW50KQorCiBuZXRzbm1wX3RkYXRhICpldmVudF90YWJsZV9kYXRhOwogCiAgICAgLyoKQEAgLTExOSw2ICsxMjQsNyBAQAogICAgICAqCiAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ESVNNQU5fREVCVUdHSU5HCiB2b2lkCiBfbXRlRXZlbnRfZHVtcCh2b2lkKQogewpAQCAtMTQwLDcgKzE0Niw3IEBACiAgICAgfQogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6ZHVtcCIsICJFdmVudFRhYmxlICVkIGVudHJpZXNcbiIsIGkpKTsKIH0KLQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRElTTUFOX0RFQlVHR0lORyAqLwogCiAvKgogICogQ3JlYXRlIGEgbmV3IHJvdyBpbiB0aGUgZXZlbnQgdGFibGUgCkBAIC0xOTYsNiArMjAyLDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTVRFRVZFTlRfUkVNT1ZFRU5UUlkKIC8qCiAgKiBSZW1vdmUgYSByb3cgZnJvbSB0aGUgZXZlbnQgdGFibGUgCiAgKi8KQEAgLTIwOCw5ICsyMTUsOSBAQAogICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAvKiBOb3RoaW5nIHRvIHJlbW92ZSAqLwogICAgIGVudHJ5ID0gKHN0cnVjdCBtdGVFdmVudCAqKQogICAgICAgICBuZXRzbm1wX3RkYXRhX3JlbW92ZV9hbmRfZGVsZXRlX3JvdyhldmVudF90YWJsZV9kYXRhLCByb3cpOwotICAgIGlmIChlbnRyeSkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTVRFRVZFTlRfUkVNT1ZFRU5UUlkgKi8KIAogICAgIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgICAqCkBAIC0yMjIsMTAgKzIyOSwxMiBAQAogX210ZUV2ZW50X2ZpcmVfbm90aWZ5KCBzdHJ1Y3QgbXRlRXZlbnQgICAgKmV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRlVHJpZ2dlciAgKnRyaWdnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqc3VmZml4LCBzaXplX3Qgc2Z4X2xlbiApOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogX210ZUV2ZW50X2ZpcmVfc2V0KCAgICBzdHJ1Y3QgbXRlRXZlbnQgICAgKmV2ZW50LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRlVHJpZ2dlciAgKnRyaWdnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqc3VmZml4LCBzaXplX3Qgc2Z4X2xlbiApOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiBpbnQKIG10ZUV2ZW50X2ZpcmUoIGNoYXIgKm93bmVyLCBjaGFyICpldmVudCwgICAgICAvKiBFdmVudCB0byBpbnZva2UgICAgKi8KQEAgLTI2MSwxMSArMjcwLDEzIEBACiAgICAgICAgIF9tdGVFdmVudF9maXJlX25vdGlmeSggZW50cnksIHRyaWdnZXIsIHN1ZmZpeCwgc19sZW4gKTsKICAgICAgICAgZmlyZWQgPSAxOwogICAgIH0KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgaWYgKGVudHJ5LT5tdGVFdmVudEFjdGlvbnMgJiBNVEVfRVZFTlRfU0VUKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6ZmlyZSIsICJGaXJpbmcgc2V0IGV2ZW50XG4iKSk7CiAgICAgICAgIF9tdGVFdmVudF9maXJlX3NldCggZW50cnksIHRyaWdnZXIsIHN1ZmZpeCwgc19sZW4gKTsKICAgICAgICAgZmlyZWQgPSAxOwogICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGlmICghZmlyZWQpCiAgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6ZmlyZSIsICJNYXRjaGVkIGV2ZW50IGlzIGVtcHR5XG4iKSk7CkBAIC00MzQsNiArNDQ1LDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogaW50CiBfbXRlRXZlbnRfZmlyZV9zZXQoIHN0cnVjdCBtdGVFdmVudCAgICplbnRyeSwgICAgICAvKiBUaGUgZXZlbnQgdG8gZmlyZSAqLwogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbXRlVHJpZ2dlciAqdHJpZ2dlciwgICAgLyogVHJpZ2dlciB0aGF0IGZpcmVkICovCkBAIC00NzcsNCArNDg5LDQgQEAKIAogICAgIC8qIFhYWCAtIE5lZWQgdG8gY2hlY2sgcmVzdWx0ICovCiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuYwppbmRleCA3MmUzYWUzLi4yNDE5MmE2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaD4KQEAgLTExLDYgKzEyLDcgQEAKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnQuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKIAogLyoqIEluaXRpYWxpemVzIHRoZSBtdGVFdmVudHNDb25mIG1vZHVsZSAqLwogdm9pZApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMKaW5kZXggOTM0YTFjNS4uN2QyYzk0YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jCkBAIC03LDExICs3LDE5IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudC5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfb2lkKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyogSW5pdGlhbGl6ZXMgdGhlIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yMCw3ICsyOCw2IEBACiAgICAgc3RhdGljIG9pZCAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCA4OCwgMSwgNCwgMyB9OwogICAgIHNpemVfdCAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgobXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAgICAgLyoKICAgICAgKiBFbnN1cmUgdGhlIChjb21iaW5lZCkgdGFibGUgY29udGFpbmVyIGlzIGF2YWlsYWJsZS4uLgpAQCAtMzAsMTEgKzM3LDE5IEBACiAgICAgLyoKICAgICAgKiAuLi4gdGhlbiBzZXQgdXAgdGhlIE1JQiBpbnRlcmZhY2UgdG8gdGhlIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUgc2xpY2UKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNTIsNiArNjcsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRfdGFibGVfZGF0YSkpOwogfQogCit2b2lkCitzaHV0ZG93bl9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQogCiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSB0YWJsZSAqLwpAQCAtMTA5LDYgKzEzMiw4IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTIzNSw2ICsyNjAsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAppbmRleCBiZTJiY2M2Li5hYmQ2MTEwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgKQEAgLTksNiArOSw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jCmluZGV4IDk3NzgzYzEuLmVlNjk2ZjEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYwpAQCAtNywxMSArNywyMCBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnQuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX29pZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiBJbml0aWFsaXplcyB0aGUgbXRlRXZlbnRTZXRUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTIwLDcgKzI5LDYgQEAKICAgICBzdGF0aWMgb2lkICBtdGVFdmVudFNldFRhYmxlX29pZFtdICAgPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDg4LCAxLCA0LCA0IH07CiAgICAgc2l6ZV90ICAgICAgbXRlRXZlbnRTZXRUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChtdGVFdmVudFNldFRhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKICAgICAvKgogICAgICAqIEVuc3VyZSB0aGUgKGNvbWJpbmVkKSB0YWJsZSBjb250YWluZXIgaXMgYXZhaWxhYmxlLi4uCkBAIC0zMCwxMSArMzgsMTkgQEAKICAgICAvKgogICAgICAqIC4uLiB0aGVuIHNldCB1cCB0aGUgTUlCIGludGVyZmFjZSB0byB0aGUgbXRlRXZlbnRTZXRUYWJsZSBzbGljZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlRXZlbnRTZXRUYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0VGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRTZXRUYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0VGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlRXZlbnRTZXRUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0VGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRTZXRUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0VGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC01Miw2ICs2OCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF90YWJsZV9kYXRhKSk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX210ZUV2ZW50U2V0VGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CisKIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBtdGVFdmVudFNldFRhYmxlIHRhYmxlICovCiBpbnQKQEAgLTEyMyw2ICsxNDgsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtMjc4LDYgKzMwNCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oCmluZGV4IGI4Y2IxMjQuLjcxZWMwOWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaApAQCAtOSw2ICs5LDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfbXRlRXZlbnRTZXRUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9tdGVFdmVudFNldFRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbXRlRXZlbnRTZXRUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMKaW5kZXggMmMyMWU2Ny4uYzViNTM0ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jCkBAIC03LDEyICs3LDI0IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnQuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnlfcGR1X3Nlc3Npb24pCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG10ZWV2ZW50X3JlbW92ZWVudHJ5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiBJbml0aWFsaXplcyB0aGUgbXRlRXZlbnRUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTIxLDcgKzMzLDYgQEAKICAgICBzdGF0aWMgb2lkICBtdGVFdmVudFRhYmxlX29pZFtdICAgPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDg4LCAxLCA0LCAyIH07CiAgICAgc2l6ZV90ICAgICAgbXRlRXZlbnRUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChtdGVFdmVudFRhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKICAgICAvKgogICAgICAqIEVuc3VyZSB0aGUgKGNvbWJpbmVkKSB0YWJsZSBjb250YWluZXIgaXMgYXZhaWxhYmxlLi4uCkBAIC0zMSwxMSArNDIsMTkgQEAKICAgICAvKgogICAgICAqIC4uLiB0aGVuIHNldCB1cCB0aGUgTUlCIGludGVyZmFjZSB0byB0aGUgbXRlRXZlbnRUYWJsZSBzbGljZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlRXZlbnRUYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50VGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRUYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50VGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlRXZlbnRUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50VGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnRUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50VGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC01Myw2ICs3MiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF90YWJsZV9kYXRhKSk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX210ZUV2ZW50VGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgbXRlRXZlbnRUYWJsZSB0YWJsZSAqLwogaW50CkBAIC0xMTEsNiArMTM4LDggQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtMzM4LDYgKzM2Nyw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAgICAgfQogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6bWliIiwgIlRhYmxlIGhhbmRsZXIsIGRvbmVcbiIpKTsKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5oCmluZGV4IGE3ZDc1NjAuLmFkYzFjMzAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaApAQCAtOSw2ICs5LDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfbXRlRXZlbnRUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9tdGVFdmVudFRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbXRlRXZlbnRUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmMKaW5kZXggMTIzYWY3Zi4uY2Y5NTBjMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5jCkBAIC0yMzYsOCArMjM2LDcgQEAKICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgLyogTm90aGluZyB0byByZW1vdmUgKi8KICAgICBlbnRyeSA9IChzdHJ1Y3QgbXRlT2JqZWN0ICopCiAgICAgICAgIG5ldHNubXBfdGRhdGFfcmVtb3ZlX2FuZF9kZWxldGVfcm93KG9iamVjdHNfdGFibGVfZGF0YSwgcm93KTsKLSAgICBpZiAoZW50cnkpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmMKaW5kZXggNTg0M2Y1OC4uZjdmNmUwMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuYwpAQCAtNywxMSArNywyMSBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfb2lkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG10ZU9iamVjdHNUYWJsZSBtb2R1bGUgKi8KIHZvaWQKIGluaXRfbXRlT2JqZWN0c1RhYmxlKHZvaWQpCkBAIC0yMCw3ICszMCw2IEBACiAgICAgc3RhdGljIG9pZCBtdGVPYmplY3RzVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDg4LCAxLCAzLCAxIH07CiAgICAgc2l6ZV90ICAgICBtdGVPYmplY3RzVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgobXRlT2JqZWN0c1RhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKICAgICAvKgogICAgICAqIEVuc3VyZSB0aGUgb2JqZWN0IHRhYmxlIGNvbnRhaW5lciBpcyBhdmFpbGFibGUuLi4KQEAgLTMwLDExICszOSwxOSBAQAogICAgIC8qCiAgICAgICogLi4uIHRoZW4gc2V0IHVwIHRoZSBNSUIgaW50ZXJmYWNlIHRvIHRoaXMgdGFibGUKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZU9iamVjdHNUYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZU9iamVjdHNUYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVPYmplY3RzVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVPYmplY3RzVGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlT2JqZWN0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlT2JqZWN0c1RhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZU9iamVjdHNUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZU9iamVjdHNUYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTUwLDYgKzY3LDE1IEBACiAgICAgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIG9iamVjdHNfdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX210ZU9iamVjdHNUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KKwogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIG10ZU9iamVjdHNUYWJsZSB0YWJsZSAqLwogaW50CkBAIC0xMDUsNiArMTMxLDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTMxNCw2ICszNDEsNyBAQAogICAgICAgICBzbm1wX3N0b3JlX25lZWRlZChOVUxMKTsKIAogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaAppbmRleCAxNGJmYjI2Li5mNWNkN2JjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oCkBAIC05LDYgKzksNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9tdGVPYmplY3RzVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fbXRlT2JqZWN0c1RhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbXRlT2JqZWN0c1RhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYwppbmRleCBjZjUxZWRiLi41YTBkY2JhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMKQEAgLTQsMTEgKzQsMTYgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlRXZlbnQuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRpc21hbl9kZWJ1Z2dpbmcsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG10ZXRyaWdnZXIsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG10ZXRyaWdnZXJfcmVtb3ZlZW50cnksIG10ZXRyaWdnZXIpCisKIG5ldHNubXBfdGRhdGEgKnRyaWdnZXJfdGFibGVfZGF0YTsKIAogb2lkICAgIF9zeXNVcFRpbWVfaW5zdGFuY2VbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgMywgMCB9OwpAQCAtNTMsNiArNTgsNyBAQAogICAgICAqCiAgICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ESVNNQU5fREVCVUdHSU5HCiB2b2lkCiBfbXRlVHJpZ2dlcl9kdW1wKHZvaWQpCiB7CkBAIC03NCw3ICs4MCw3IEBACiAgICAgfQogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6ZHVtcCIsICJUcmlnZ2VyVGFibGUgJWQgZW50cmllc1xuIiwgaSkpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ESVNNQU5fREVCVUdHSU5HICovCiAKIC8qCiAgKiBDcmVhdGUgYSBuZXcgcm93IGluIHRoZSB0cmlnZ2VyIHRhYmxlIApAQCAtMTQyLDYgKzE0OCw3IEBACiAgICAgcmV0dXJuIHJvdzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01URVRSSUdHRVJfUkVNT1ZFRU5UUlkKIC8qCiAgKiBSZW1vdmUgYSByb3cgZnJvbSB0aGUgdHJpZ2dlciB0YWJsZSAKICAqLwpAQCAtMTU5LDYgKzE2Niw3IEBACiAgICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTVRFVFJJR0dFUl9SRU1PVkVFTlRSWSAqLwogCiAgICAgLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jCmluZGV4IGFkNDY5ZDcuLmVkMWVjMzAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuYwpAQCAtNywxMSArNywxOSBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTIwLDcgKzI4LDYgQEAKICAgICBzdGF0aWMgb2lkIG10ZVRCb29sVGFibGVfb2lkW10gICAgPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDg4LCAxLCAyLCA1IH07CiAgICAgc2l6ZV90ICAgICBtdGVUQm9vbFRhYmxlX29pZF9sZW4gID0gT0lEX0xFTkdUSChtdGVUQm9vbFRhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKICAgICAvKgogICAgICAqIEVuc3VyZSB0aGUgKGNvbWJpbmVkKSB0YWJsZSBjb250YWluZXIgaXMgYXZhaWxhYmxlLi4uCkBAIC0zMCwxMSArMzcsMTkgQEAKICAgICAvKgogICAgICAqIC4uLiB0aGVuIHNldCB1cCB0aGUgTUlCIGludGVyZmFjZSB0byB0aGUgbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSBzbGljZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlckJvb2xlYW5UYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJCb29sZWFuVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVEJvb2xUYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRCb29sVGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlckJvb2xlYW5UYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJCb29sZWFuVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVEJvb2xUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRCb29sVGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLApAQCAtNTEsNiArNjYsMTQgQEAKICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiVHJpZ2dlciBCb29sIFRhYmxlXG4iKSk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX210ZVRyaWdnZXJCb29sZWFuVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSB0YWJsZSAqLwogaW50CkBAIC0xMjgsNiArMTUxLDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTI4NSw2ICszMDksNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJCb29sZWFuVGFibGUuaAppbmRleCBkMmQyZGNiLi5mMmRkZDc3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgKQEAgLTksNiArOSw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X210ZVRyaWdnZXJCb29sZWFuVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG10ZVRyaWdnZXJCb29sZWFuVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMKaW5kZXggM2NlOTEwNi4uZTdiYjY5YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgpAQCAtMTQsNiArMTUsNyBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG10ZVRyaWdnZXJDb25mIG1vZHVsZSAqLwogdm9pZApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJEZWx0YVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYwppbmRleCBlMDkyOTgyLi5jMmMyZThlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuYwpAQCAtNywxMSArNywxNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oIgogI2luY2x1ZGUgImRpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9vaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG10ZVRyaWdnZXJEZWx0YVRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjEsNiArMjcsNyBAQAogICAgIHNpemVfdCAgICAgIG10ZVREZWx0YVRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKG10ZVREZWx0YVRhYmxlX29pZCk7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CisgICAgaW50ICAgICAgICAgcmM7CiAKICAgICAvKgogICAgICAqIEVuc3VyZSB0aGUgKGNvbWJpbmVkKSB0YWJsZSBjb250YWluZXIgaXMgYXZhaWxhYmxlLi4uCkBAIC0zMCwxMSArMzcsMTkgQEAKICAgICAvKgogICAgICAqIC4uLiB0aGVuIHNldCB1cCB0aGUgTUlCIGludGVyZmFjZSB0byB0aGUgbXRlVHJpZ2dlckRlbHRhVGFibGUgc2xpY2UKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJEZWx0YVRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckRlbHRhVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVERlbHRhVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVURGVsdGFUYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyRGVsdGFUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJEZWx0YVRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVREZWx0YVRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVERlbHRhVGFibGVfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sCkBAIC00Nyw3ICs2MiwxMCBAQAogICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRTsKIAogICAgIC8qIFJlZ2lzdGVyIHRoaXMgdXNpbmcgdGhlIChjb21tb24pIHRyaWdnZXJfdGFibGVfZGF0YSBjb250YWluZXIgKi8KLSAgICBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgdHJpZ2dlcl90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKKyAgICByYyA9IG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCB0cmlnZ2VyX3RhYmxlX2RhdGEsIHRhYmxlX2luZm8pOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpCisgICAgICAgIHJldHVybjsKKyAgICBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKHJlZy0+aGFuZGxlci0+bmV4dCk7CiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDppbml0IiwgIlRyaWdnZXIgRGVsdGEgVGFibGVcbiIpKTsKIH0KIApAQCAtMTA5LDYgKzEyNyw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC0yNDgsNiArMjY3LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jCmluZGV4IDI1MDI2ZWUuLjIyYjY4M2UgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMKQEAgLTcsMTEgKzcsMTggQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyogSW5pdGlhbGl6ZXMgdGhlIG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTIwLDcgKzI3LDcgQEAKICAgICBzdGF0aWMgb2lkIG10ZVRFeGlzdFRhYmxlX29pZFtdICAgPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDg4LCAxLCAyLCA0IH07CiAgICAgc2l6ZV90ICAgICBtdGVURXhpc3RUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChtdGVURXhpc3RUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworICAgIGludCAgICAgICAgcmM7CiAKICAgICAvKgogICAgICAqIEVuc3VyZSB0aGUgKGNvbWJpbmVkKSB0YWJsZSBjb250YWluZXIgaXMgYXZhaWxhYmxlLi4uCkBAIC0zMCwxMSArMzcsMTkgQEAKICAgICAvKgogICAgICAqIC4uLiB0aGVuIHNldCB1cCB0aGUgTUlCIGludGVyZmFjZSB0byB0aGUgbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlIHNsaWNlCiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVEV4aXN0VGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVURXhpc3RUYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVEV4aXN0VGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVURXhpc3RUYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTQ3LDcgKzYyLDExIEBACiAgICAgdGFibGVfaW5mby0+bWF4X2NvbHVtbiA9IENPTFVNTl9NVEVUUklHR0VSRVhJU1RFTkNFRVZFTlQ7CiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSB0cmlnZ2VyX3RhYmxlX2RhdGEgY29udGFpbmVyICovCi0gICAgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIHRyaWdnZXJfdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7CisgICAgcmMgPSBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgdHJpZ2dlcl90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQorICAgICAgICByZXR1cm47CisKKyAgICBuZXRzbm1wX2hhbmRsZXJfb3duc190YWJsZV9pbmZvKHJlZy0+aGFuZGxlci0+bmV4dCk7CiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDppbml0IiwgIlRyaWdnZXIgRXhpc3QgVGFibGVcbiIpKTsKIH0KIApAQCAtMTIzLDYgKzE0Miw3IEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKICAgICAgICAgICovCkBAIC0yNjQsNiArMjg0LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5jCmluZGV4IDE0NWYwNzkuLjg4YzJmOGIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmMKQEAgLTcsMTIgKzcsMjcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeV9wZHVfc2Vzc2lvbikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfb2lkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdWludCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG10ZXRyaWdnZXJfcmVtb3ZlZW50cnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90cnV0aHZhbHVlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgbXRlVHJpZ2dlclRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjEsNyArMzYsNiBAQAogICAgIHN0YXRpYyBvaWQgIG10ZVRyaWdnZXJUYWJsZV9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCA4OCwgMSwgMiwgMiB9OwogICAgIHNpemVfdCAgICAgIG10ZVRyaWdnZXJUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChtdGVUcmlnZ2VyVGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogICAgIC8qCiAgICAgICogRW5zdXJlIHRoZSAoY29tYmluZWQpIHRhYmxlIGNvbnRhaW5lciBpcyBhdmFpbGFibGUuLi4KQEAgLTMxLDExICs0NSwxOSBAQAogICAgIC8qCiAgICAgICogLi4uIHRoZW4gc2V0IHVwIHRoZSBNSUIgaW50ZXJmYWNlIHRvIHRoZSBtdGVUcmlnZ2VyVGFibGUgc2xpY2UKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJUYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlclRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTUyLDYgKzc0LDE1IEBACiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDppbml0IiwgIlRyaWdnZXIgVGFibGVcbiIpKTsKIH0KIAordm9pZAorc2h1dGRvd25fbXRlVHJpZ2dlclRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQorCiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgbXRlVHJpZ2dlclRhYmxlIHRhYmxlICovCiBpbnQKQEAgLTE1Miw2ICsxODMsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CiAgICAgICAgICAqLwpAQCAtNDY4LDYgKzUwMCw5IEBACiAgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKE5VTEwpOwogCiAgICAgICAgIGJyZWFrOworCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCmluZGV4IGUzODI2MTIuLmM1YzM5M2EgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmgKQEAgLTExLDYgKzExLDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfbXRlVHJpZ2dlclRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX210ZVRyaWdnZXJUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIG10ZVRyaWdnZXJUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jCmluZGV4IDFmNjY0OWUuLjVhZWQwYzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMKQEAgLTcsMTEgKzcsMTggQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaCIKICNpbmNsdWRlICJkaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yMCw3ICsyNyw2IEBACiAgICAgc3RhdGljIG9pZCBtdGVUVGhyZXNoVGFibGVfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgODgsIDEsIDIsIDYgfTsKICAgICBzaXplX3QgICAgIG10ZVRUaHJlc2hUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChtdGVUVGhyZXNoVGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogICAgIC8qCiAgICAgICogRW5zdXJlIHRoZSAoY29tYmluZWQpIHRhYmxlIGNvbnRhaW5lciBpcyBhdmFpbGFibGUuLi4KQEAgLTMwLDExICszNiwxOSBAQAogICAgIC8qCiAgICAgICogLi4uIHRoZW4gc2V0IHVwIHRoZSBNSUIgaW50ZXJmYWNlIHRvIHRoZSBtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUgc2xpY2UKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oIm10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUVGhyZXNoVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVUVGhyZXNoVGFibGVfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRUaHJlc2hUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZVRUaHJlc2hUYWJsZV9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKQEAgLTUxLDYgKzY1LDE1IEBACiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDppbml0IiwgIlRyaWdnZXIgVGhyZXNob2xkIFRhYmxlXG4iKSk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KKwogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSB0YWJsZSAqLwogaW50CkBAIC0xNjUsNiArMTg4LDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogV3JpdGUtc3VwcG9ydAogICAgICAgICAgKi8KQEAgLTM1OCw2ICszODIsOCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaAppbmRleCAyODJjYzY3Li44MGY1ZjJhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oCkBAIC05LDYgKzksNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMKaW5kZXggZGJjMjIxNy4uYTc1OWUyZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuYwpAQCAtNywxMSArNywxNCBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKKwogLyogSW5pdGlhbGl6ZXMgdGhlIGV4cEV4cHJlc3Npb25FcnJvclRhYmxlIG1vZHVsZSAqLwogdm9pZAogaW5pdF9leHBFcnJvclRhYmxlKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYwppbmRleCA1MThkZDg4Li44MjZkNjc5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0xNCw2ICsxNSw4IEBACiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXF1ZXJ5KQorCiAvKiBJbml0aWFsaXplcyB0aGUgZXhwRXhwcmVzc2lvbkNvbmYgbW9kdWxlICovCiB2b2lkCiBpbml0X2V4cEV4cHJlc3Npb25Db25mKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jCmluZGV4IDkwNmI1ZTUuLjc5YWE3MTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jCkBAIC03LDEyICs3LDIxIEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvblRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeV9wZHVfc2Vzc2lvbikKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyogSW5pdGlhbGl6ZXMgdGhlIGV4cEV4cHJlc3Npb25UYWJsZSBtb2R1bGUgKi8KIHZvaWQKIGluaXRfZXhwRXhwcmVzc2lvblRhYmxlKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RDb25mLmMKaW5kZXggYzc1YzkzNC4uNjQwNjlkOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdENvbmYuYwpAQCAtNCwxMiArNCwxNSBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwT2JqZWN0Q29uZi5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCisKIC8qIEluaXRpYWxpemVzIHRoZSBleHBPYmplY3RDb25mIG1vZHVsZSAqLwogdm9pZAogaW5pdF9leHBPYmplY3RDb25mKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYwppbmRleCA5YzQ5YzBkLi5hZGRhNDM4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMKQEAgLTcsMTEgKzcsMTggQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfb2lkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qIEluaXRpYWxpemVzIHRoZSBleHBPYmplY3RUYWJsZSBtb2R1bGUgKi8KIHZvaWQKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEVycm9yVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEVycm9yVGFibGUuYwppbmRleCBjNjA1ZTlhLi4xZmViM2VlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXJyb3JUYWJsZS5jCkBAIC0xMzksNCArMTM5LDYgQEAKICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5leHBFcnJvckluc3RhbmNlTGVuICogc2l6ZW9mKG9pZCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPmV4cEVycm9ySW5zdGFuY2U7CiAgICAgfQorCisgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jCmluZGV4IDVhYWI5NTIuLjIxMjk1MmQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jCkBAIC0yMSw2ICsyMSw3IEBACiAgKiBUaGlzIHNob3VsZCBhbHdheXMgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIGFueXRoaW5nIGVsc2UgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgpAQCAtNDUsNiArNDYsMTAgQEAKICNpbmNsdWRlICJleHBPYmplY3RUYWJsZS5oIgogI2luY2x1ZGUgImV4cFZhbHVlVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGRvbWFpbl9zdXBwb3J0KQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qCiAgKiBleHBFeHByZXNzaW9uVGFibGVfdmFyaWFibGVzX29pZDoKQEAgLTMxOCw5ICszMjMsNyBAQAogICAgIGNoYXIgICAgICAgICAgICpjcHRyOwogICAgIHNpemVfdCAgICAgICAgICB0bXBpbnQ7CiAgICAgc3RydWN0IGV4cEV4cHJlc3Npb25UYWJsZV9kYXRhICpTdG9yYWdlVG1wOwotICAgIHN0cnVjdCBleHBPYmplY3RUYWJsZV9kYXRhICpPYmplY3RTdG9yYWdlVG1wOwotICAgIHN0cnVjdCBleHBWYWx1ZVRhYmxlX2RhdGEgKlZhbHVlU3RvcmFnZVRtcDsKLSAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaW5kZXgsICpoY19vYmplY3QsICpoY192YWx1ZTsKKyAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaW5kZXg7CiAKICAgICBERUJVR01TR1RMKCgiZXhwRXhwcmVzc2lvblRhYmxlIiwgInN0b3JpbmcgZGF0YS4uLiAgIikpOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYwppbmRleCBmY2FkZmU3Li5lMDU3ZjU2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMKQEAgLTIyLDYgKzIyLDcgQEAKICAqIFRoaXMgc2hvdWxkIGFsd2F5cyBiZSBpbmNsdWRlZCBmaXJzdCBiZWZvcmUgYW55dGhpbmcgZWxzZSAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2VuZGlmCkBAIC0zNCw2ICszNSw5IEBACiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjZW5kaWYKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qCiAgKiBtaW5pbWFsIGluY2x1ZGUgZGlyZWN0aXZlcyAKQEAgLTIxNiw3ICsyMjAsNiBAQAogcGFyc2VfZXhwT2JqZWN0VGFibGUoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCiB7CiAgICAgc2l6ZV90ICAgICAgICAgIHRtcGludDsKLSAgICBvaWQgICAgICAgICAgICAqdG1wb2lkID0gTlVMTDsKICAgICBzdHJ1Y3QgZXhwT2JqZWN0VGFibGVfZGF0YSAqU3RvcmFnZVRtcCA9CiAgICAgICAgIFNOTVBfTUFMTE9DX1NUUlVDVChleHBPYmplY3RUYWJsZV9kYXRhKTsKIApAQCAtNDAzLDYgKzQwNiw3IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgREVCVUdNU0dUTCgoImV4cE9iamVjdFRhYmxlIiwgInN0b3JhZ2UgZG9uZVxuIikpOworICAgIHJldHVybiAwOwogfQogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cFZhbHVlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cFZhbHVlVGFibGUuYwppbmRleCBkM2MwMjk1Li42YjMxNWM2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jCkBAIC0yNDUsNyArMjQ1LDYgQEAKICAgICBjaGFyICAgICAgICAgICAqcmVzdWx0LCAqcmVzdWx0YmFrOwogICAgIGNoYXIgICAgICAgICAgICp0ZW1wLCAqdGVtcGJhazsKICAgICBjaGFyICAgICAgICAgICAgaW50Y2hhclsxMF07Ci0gICAgaW50ICAgICAgICAgICAgIGRvbGxhcjEsIGRvbGxhcjI7CiAgICAgaW50ICAgICAgICAgICAgIGkgPSAwLCBqLCBrLCBsOwogICAgIGxvbmcgICAgICAgICAgICB2YWx1ZTsKICAgICB1bnNpZ25lZCBsb25nICAgcmVzdWx0X3VfbG9uZzsKQEAgLTMyMiw3ICszMjEsNiBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlX2xpc3QgKnZhcnM7CiAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzOwotICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGNvdW50ID0gMTsKIAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIEluaXRpYWxpemUgdGhlIFNOTVAgbGlicmFyeQpAQCAtMzY5LDcgKzM2Nyw3IEBACiAKICAgICAgICAgICAgICAgICB2YXJzID0gcmVzcG9uc2UtPnZhcmlhYmxlczsKICAgICAgICAgICAgICAgICB2YWx1ZSA9ICoodmFycy0+dmFsLmludGVnZXIpOwotICAgICAgICAgICAgICAgIHNwcmludGYoaW50Y2hhciwgIiV1IiwgdmFsdWUpOworICAgICAgICAgICAgICAgIHNwcmludGYoaW50Y2hhciwgIiVsdSIsIHZhbHVlKTsKICAgICAgICAgICAgICAgICBmb3IgKGsgPSAxOyBrIDw9IHN0cmxlbihpbnRjaGFyKTsgaysrKSB7CiAgICAgICAgICAgICAgICAgICAgICpyZXN1bHQgPSBpbnRjaGFyW2sgLSAxXTsKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Kys7CkBAIC00MzMsMTUgKzQzMSwxMSBAQAogCiAKIHZvaWQKLWJ1aWxkX3ZhbHVldGFibGUoKQorYnVpbGRfdmFsdWV0YWJsZSh2b2lkKQogewogICAgIHN0cnVjdCBleHBFeHByZXNzaW9uVGFibGVfZGF0YSAqZXhwc3RvcmFnZTsKICAgICBzdHJ1Y3QgZXhwT2JqZWN0VGFibGVfZGF0YSAqb2Jqc3RvcmFnZSwgKm9iamZvdW5kID0gTlVMTDsKICAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaW5kZXgsICpvYmplY3RfaGNpbmRleDsKLSAgICBjaGFyICAgICAgICAgICAqb3duZXI7Ci0gICAgc2l6ZV90ICAgICAgICAgIG93bmVyX2xlbjsKLSAgICBjaGFyICAgICAgICAgICAqbmFtZTsKLSAgICBzaXplX3QgICAgICAgICAgbmFtZV9sZW47CiAgICAgY2hhciAgICAgICAgICAgKmV4cHJlc3Npb247CiAgICAgb2lkICAgICAgICAgICAgKmluZGV4OwogICAgIGludCAgICAgICAgICAgICBpID0gMCwgaiwgbDsKQEAgLTUyNSw5ICs1MTksNyBAQAogICAgICAgICAgICAgb2lkICAgICAgICAgICAgKm5leHRfT0lEOwogICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIG5leHRfT0lEX2xlbjsKICAgICAgICAgICAgIHRhZ2dldE9JRF9sZW4gPSBvYmpmb3VuZC0+ZXhwT2JqZWN0SURMZW47Ci0gICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGVfbGlzdCAqdmFyczsKICAgICAgICAgICAgIGludCAgICAgICAgICAgICBzdGF0dXM7Ci0gICAgICAgICAgICBpbnQgICAgICAgICAgICAgY291bnQgPSAxOwogICAgICAgICAgICAgc3RydWN0IHNubXBfc2Vzc2lvbiAqc3M7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogSW5pdGlhbGl6ZSB0aGUgU05NUCBsaWJyYXJ5CkBAIC02MzksMTIgKzYzMSw3IEBACiAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQogewogCi0gICAgc3RhdGljIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyczsKLSAgICBzaXplX3QgICAgICAgICAgbmV3bGVuID0KLSAgICAgICAgKmxlbmd0aCAtIChzaXplb2YoZXhwVmFsdWVUYWJsZV92YXJpYWJsZXNfb2lkKSAvIHNpemVvZihvaWQpICsKLSAgICAgICAgICAgICAgICAgICAzIC0gMSk7CiAgICAgc3RydWN0IGV4cFZhbHVlVGFibGVfZGF0YSAqU3RvcmFnZVRtcCA9IE5VTEw7Ci0gICAgdW5zaWduZWQgaW50ICAgIGNvdW50ZXIzMjsKIAogCiAKQEAgLTcxOSw2ICs3MDYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBkZWZhdWx0OgogICAgICAgICBFUlJPUl9NU0coIiIpOworCXJldHVybiBOVUxMOwogICAgIH0KIH0KIApAQCAtNzg4LDYgKzc3Niw3IEBACiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmV0dXJuIChhIC8gYik7CiAgICAgfQorICAgIHJldHVybiAwOwogfQogCiB1bnNpZ25lZCBsb25nCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYwppbmRleCAzZTA3ODZmLi40OGFkZDY4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMKQEAgLTQsMTAgKzQsMTQgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9kYXRhc2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdykKKwogbmV0c25tcF90YWJsZV9kYXRhX3NldCAqbXRlRXZlbnROb3RpZl90YWJsZV9zZXQ7CiAKIApAQCAtNjEsMTIgKzY1LDIxIEBACiAgICAgICogbm90ZTogaWYgeW91IGRvbid0IG5lZWQgYSBzdWJoYW5kbGVyIHRvIGRlYWwgd2l0aCBhbnkgYXNwZWN0cwogICAgICAqIG9mIHRoZSByZXF1ZXN0LCBjaGFuZ2UgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9oYW5kbGVyIHRvICJOVUxMIiAKICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhX3NldChuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSksIG10ZUV2ZW50Tm90aWZfdGFibGVfc2V0LCBOVUxMKTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGFfc2V0KG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIm10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLCBtdGVFdmVudE5vdGlmX3RhYmxlX3NldCwgTlVMTCk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogfQogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUgbW9kdWxlICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZUV2ZW50VGFibGUuYwppbmRleCBiNGJkN2ExLi4yMmJhZDczIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIm10ZVRyaWdnZXJUYWJsZS5oIgpAQCAtMTEsNiArMTIsOSBAQAogI2luY2x1ZGUgIm10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaCIKICNpbmNsdWRlICJtdGVPYmplY3RzVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YXNldCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3cpCisKIHN0YXRpYyBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQgPSBOVUxMOwogCiAvKiogSW5pdGlhbGl6ZSB0aGUgbXRlRXZlbnRUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuYwppbmRleCA3N2RiZTEwLi4wOWNlYjJhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jCkBAIC04LDYgKzgsNyBAQAogICogVGhpcyBzaG91bGQgYWx3YXlzIGJlIGluY2x1ZGVkIGZpcnN0IGJlZm9yZSBhbnl0aGluZyBlbHNlIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjZW5kaWYKQEAgLTE3LDYgKzE4LDkgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qCiAgKiBtaW5pbWFsIGluY2x1ZGUgZGlyZWN0aXZlcyAKQEAgLTQ4LDYgKzUyLDcgQEAKICAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgdmFyaWFibGUyIG10ZU9iamVjdHNUYWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCkBAIC02Myw2ICs2OCwyNCBAQAogICAgICB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLCB7MSwgNX19LAogCiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBtdGVPYmplY3RzVGFibGVfdmFyaWFibGVzW10gPSB7CisgICAgLyoKKyAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAorICAgICAqLworI2RlZmluZSAgIE1URU9CSkVDVFNJRCAgICAgICAgICA1CisgICAge01URU9CSkVDVFNJRCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVPYmplY3RzVGFibGUsIDIsIHsxLCAzfX0sCisjZGVmaW5lICAgTVRFT0JKRUNUU0lEV0lMRENBUkQgIDYKKyAgICB7TVRFT0JKRUNUU0lEV0lMRENBUkQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZU9iamVjdHNUYWJsZSwgMiwgezEsIDR9fSwKKyNkZWZpbmUgICBNVEVPQkpFQ1RTRU5UUllTVEFUVVMgIDcKKyAgICB7TVRFT0JKRUNUU0VOVFJZU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVPYmplY3RzVGFibGUsIDIsIHsxLCA1fX0sCisKK307CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKgogICogKEwgPSBsZW5ndGggb2YgdGhlIG9pZHN1ZmZpeCkgCiAgKi8KQEAgLTMwMiw2ICszMjUsMTAgQEAKIAogICAgIERFQlVHTVNHVEwoKCJtdGVPYmplY3RzVGFibGUiLAogICAgICAgICAgICAgICAgICJ2YXJfbXRlT2JqZWN0c1RhYmxlOiBFbnRlcmluZy4uLiAgXG4iKSk7CisKKwkvKiBzZXQgZGVmYXVsdCB2YWx1ZSAqLworCSp3cml0ZV9tZXRob2QgPSBOVUxMOworCiAgICAgLyoKICAgICAgKiB0aGlzIGFzc3VtZXMgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbGwgeW91ciBkYXRhIHByb3Blcmx5CiAgICAgICovCkBAIC0zMjAsMTcgKzM0NywyMyBAQAogCiAKICAgICBjYXNlIE1URU9CSkVDVFNJRDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVPYmplY3RzSUQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IChTdG9yYWdlVG1wLT5tdGVPYmplY3RzSURMZW4pICogc2l6ZW9mKG9pZCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZU9iamVjdHNJRDsKIAogICAgIGNhc2UgTVRFT0JKRUNUU0lEV0lMRENBUkQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlT2JqZWN0c0lEV2lsZGNhcmQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVPYmplY3RzSURXaWxkY2FyZCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlT2JqZWN0c0lEV2lsZGNhcmQ7CiAKICAgICBjYXNlIE1URU9CSkVDVFNFTlRSWVNUQVRVUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVPYmplY3RzRW50cnlTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVPYmplY3RzRW50cnlTdGF0dXMpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZU9iamVjdHNFbnRyeVN0YXR1czsKIApAQCAtMzQzLDYgKzM3Niw3IEBACiAKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogCiBpbnQKIHdyaXRlX210ZU9iamVjdHNJRChpbnQgYWN0aW9uLApAQCAtNzg4LDYgKzgyMiw5IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKwogdm9pZAogbXRlX2FkZF9vYmplY3RzKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcnMsCiAgICAgICAgICAgICAgICAgc3RydWN0IG10ZVRyaWdnZXJUYWJsZV9kYXRhICppdGVtLCBjb25zdCBjaGFyICpvd25lciwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuaAppbmRleCBkM2MzYzUwLi40ZDQ0Yzg3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oCkBAIC01OSwxMSArNTksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG9pZG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2lkbmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaXN3aWxkKTsKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZU9iamVjdHNJRDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZU9iamVjdHNJRFdpbGRjYXJkOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlT2JqZWN0c0VudHJ5U3RhdHVzOwotCi0gICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVPYmplY3RzRW50cnlTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMKaW5kZXggZmJhNDk4MC4uNWIxNzkyNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jCkBAIC00OCw2ICs0OCw3IEBACiAgKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyQm9vbGVhblRhYmxlX3ZhcmlhYmxlc1tdID0gewogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKQEAgLTczLDggKzc0LDM2IEBACiAjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5FVkVOVCAgOQogICAgIHtNVEVUUklHR0VSQk9PTEVBTkVWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgN319LAotCiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyQm9vbGVhblRhYmxlX3ZhcmlhYmxlc1tdID0geworICAgIC8qCisgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKKyAgICAgKi8KKyNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkNPTVBBUklTT04gIDMKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5DT01QQVJJU09OLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgMX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFOVkFMVUUgIDQKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5WQUxVRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDJ9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTlNUQVJUVVAgIDUKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5TVEFSVFVQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgM319LAorI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFOT0JKRUNUU09XTkVSICA2CisgICAge01URVRSSUdHRVJCT09MRUFOT0JKRUNUU09XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCA0fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5PQkpFQ1RTICA3CisgICAge01URVRSSUdHRVJCT09MRUFOT0JKRUNUUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgNX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFORVZFTlRPV05FUiAgOAorICAgIHtNVEVUUklHR0VSQk9PTEVBTkVWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDZ9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkVWRU5UICA5CisgICAge01URVRSSUdHRVJCT09MRUFORVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDd9fSwKK307CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKgogICogKEwgPSBsZW5ndGggb2YgdGhlIG9pZHN1ZmZpeCkgCiAgKi8KQEAgLTEyNiw2ICsxNTUsMTAgQEAKIAogICAgIERFQlVHTVNHVEwoKCJtdGVUcmlnZ2VyQm9vbGVhblRhYmxlIiwKICAgICAgICAgICAgICAgICAidmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGU6IEVudGVyaW5nLi4uICBcbiIpKTsKKworCS8qIHNldCBkZWZhdWx0IHZhbHVlICovCisJKndyaXRlX21ldGhvZCA9IE5VTEw7CisKICAgICAvKgogICAgICAqIHRoaXMgYXNzdW1lcyB5b3UgaGF2ZSByZWdpc3RlcmVkIGFsbCB5b3VyIGRhdGEgcHJvcGVybHkKICAgICAgKi8KQEAgLTE0NCwzNyArMTc3LDUxIEBACiAKIAogICAgIGNhc2UgTVRFVFJJR0dFUkJPT0xFQU5DT01QQVJJU09OOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJCb29sZWFuQ29tcGFyaXNvbjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuQ29tcGFyaXNvbik7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5Db21wYXJpc29uOwogCiAgICAgY2FzZSBNVEVUUklHR0VSQk9PTEVBTlZBTFVFOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJCb29sZWFuVmFsdWU7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhblZhbHVlKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhblZhbHVlOwogCiAgICAgY2FzZSBNVEVUUklHR0VSQk9PTEVBTlNUQVJUVVA6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5TdGFydHVwOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5TdGFydHVwKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhblN0YXJ0dXA7CiAKICAgICBjYXNlIE1URVRSSUdHRVJCT09MRUFOT0JKRUNUU09XTkVSOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJCb29sZWFuT2JqZWN0c093bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbk9iamVjdHNPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5PYmplY3RzT3duZXI7CiAKICAgICBjYXNlIE1URVRSSUdHRVJCT09MRUFOT0JKRUNUUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbk9iamVjdHM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuT2JqZWN0c0xlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckJvb2xlYW5PYmplY3RzOwogCiAgICAgY2FzZSBNVEVUUklHR0VSQk9PTEVBTkVWRU5UT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5FdmVudE93bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbkV2ZW50T3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJCb29sZWFuRXZlbnRPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkJPT0xFQU5FVkVOVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyQm9vbGVhbkV2ZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbkV2ZW50TGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQm9vbGVhbkV2ZW50OwogCkBAIC0xODcsNiArMjM0LDcgQEAKIAogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKIGludAogd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5Db21wYXJpc29uKGludCBhY3Rpb24sCkBAIC04MDAsMyArODQ4LDUgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuaAppbmRleCBmNjg1NTg2Li42NDEzZGE1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgKQEAgLTMxLDYgKzMxLDcgQEAKICAgICAgdm9pZCAgICAgICAgICAgIGluaXRfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSh2b2lkKTsKICAgICAgRmluZFZhck1ldGhvZCAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5Db21wYXJpc29uOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckJvb2xlYW5WYWx1ZTsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJCb29sZWFuU3RhcnR1cDsKQEAgLTM4LDYgKzM5LDcgQEAKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJCb29sZWFuT2JqZWN0czsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJCb29sZWFuRXZlbnRPd25lcjsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJCb29sZWFuRXZlbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYwppbmRleCAxMzdlMDk3Li5jODI5ZTZhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYwpAQCAtNDgsNiArNDgsNyBAQAogICovCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlckRlbHRhVGFibGVfdmFyaWFibGVzW10gPSB7CiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IApAQCAtNjEsOCArNjIsMjQgQEAKICNkZWZpbmUgICBNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURUWVBFICA1CiAgICAge01URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFRZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyRGVsdGFUYWJsZSwgMiwgezEsIDN9fSwKLQogfTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KK3N0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlckRlbHRhVGFibGVfdmFyaWFibGVzW10gPSB7CisgICAgLyoKKyAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAorICAgICAqLworI2RlZmluZSAgIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRCAgMworICAgIHtNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSUQsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckRlbHRhVGFibGUsIDIsIHsxLCAxfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEV0lMRENBUkQgIDQKKyAgICB7TVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEV0lMRENBUkQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgMn19LAorI2RlZmluZSAgIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFRZUEUgIDUKKyAgICB7TVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckRlbHRhVGFibGUsIDIsIHsxLCAzfX0sCit9OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoKICAqIChMID0gbGVuZ3RoIG9mIHRoZSBvaWRzdWZmaXgpIAogICovCkBAIC0xMTQsNiArMTMxLDEwIEBACiAKICAgICBERUJVR01TR1RMKCgibXRlVHJpZ2dlckRlbHRhVGFibGUiLAogICAgICAgICAgICAgICAgICJ2YXJfbXRlVHJpZ2dlckRlbHRhVGFibGU6IEVudGVyaW5nLi4uICBcbiIpKTsKKworICAgIC8qIHNldCBkZWZhdWx0IHZhbHVlICovCisJKndyaXRlX21ldGhvZCA9IE5VTEw7CisKICAgICAvKgogICAgICAqIHRoaXMgYXNzdW1lcyB5b3UgaGF2ZSByZWdpc3RlcmVkIGFsbCB5b3VyIGRhdGEgcHJvcGVybHkKICAgICAgKi8KQEAgLTEyOSwyNCArMTUwLDI5IEBACiAKIAogICAgIGNhc2UgTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0KICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRExlbiAqIHNpemVvZihvaWQpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SUQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFdJTERDQVJEOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFdpbGRjYXJkOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPQogICAgICAgICAgICAgc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFdpbGRjYXJkKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT4KICAgICAgICAgICAgIG10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFdpbGRjYXJkOwogCiAgICAgY2FzZSBNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURUWVBFOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFR5cGU7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURUeXBlKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURUeXBlOwogCi0KICAgICBkZWZhdWx0OgogICAgICAgICBFUlJPUl9NU0coIiIpOwogICAgIH0KQEAgLTE1NSw3ICsxODEsNyBAQAogCiAKIAotCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogaW50CiB3cml0ZV9tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SUQoaW50IGFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtNDE0LDMgKzQ0MCw0IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmgKaW5kZXggMGU4YTE3ZS4uZmE0ODcyYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmgKQEAgLTMwLDggKzMwLDEwIEBACiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X210ZVRyaWdnZXJEZWx0YVRhYmxlKHZvaWQpOwogICAgICBGaW5kVmFyTWV0aG9kICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlEV2lsZGNhcmQ7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURUeXBlOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfTVRFVFJJR0dFUkRFTFRBVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jCmluZGV4IGM1NzYxYjUuLjRlNmI2NGIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCkBAIC03MCw4ICs3MSwzMyBAQAogI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VFVkVOVCAgOAogICAgIHtNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDZ9fSwKLQogfTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KK3N0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlX3ZhcmlhYmxlc1tdID0geworICAgIC8qCisgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKKyAgICAgKi8KKyNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFVEVTVCAgMworICAgIHtNVEVUUklHR0VSRVhJU1RFTkNFVEVTVCwgQVNOX0JJVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgMX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VTVEFSVFVQICA0CisgICAge01URVRSSUdHRVJFWElTVEVOQ0VTVEFSVFVQLCBBU05fQklUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUsIDIsIHsxLCAyfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRU9CSkVDVFNPV05FUiAgNQorICAgIHtNVEVUUklHR0VSRVhJU1RFTkNFT0JKRUNUU09XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDN9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFT0JKRUNUUyAgNgorICAgIHtNVEVUUklHR0VSRVhJU1RFTkNFT0JKRUNUUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUsIDIsIHsxLCA0fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UT1dORVIgIDcKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgNX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VFVkVOVCAgOAorICAgIHtNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgNn19LAorfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qCiAgKiAoTCA9IGxlbmd0aCBvZiB0aGUgb2lkc3VmZml4KSAKICAqLwpAQCAtMTMxLDYgKzE1NywxMCBAQAogCiAgICAgREVCVUdNU0dUTCgoIm10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSIsCiAgICAgICAgICAgICAgICAgInZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGU6IEVudGVyaW5nLi4uICBcbiIpKTsKKworCS8qIHNldCBkZWZhdWx0IHZhbHVlICovCisJKndyaXRlX21ldGhvZCA9IE5VTEw7CisKICAgICAvKgogICAgICAqIHRoaXMgYXNzdW1lcyB5b3UgaGF2ZSByZWdpc3RlcmVkIGFsbCB5b3VyIGRhdGEgcHJvcGVybHkKICAgICAgKi8KQEAgLTE0OSwzMiArMTc5LDQ0IEBACiAKIAogICAgIGNhc2UgTVRFVFJJR0dFUkVYSVNURU5DRVRFU1Q6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZVRlc3Q7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VUZXN0TGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlVGVzdDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkVYSVNURU5DRVNUQVJUVVA6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZVN0YXJ0dXA7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VTdGFydHVwTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlU3RhcnR1cDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkVYSVNURU5DRU9CSkVDVFNPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlT2JqZWN0c093bmVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlT2JqZWN0c093bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlT2JqZWN0c093bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VSRVhJU1RFTkNFT0JKRUNUUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlT2JqZWN0czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHNMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzOwogCiAgICAgY2FzZSBNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlRPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnRPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50T3duZXJMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VFdmVudE93bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFeGlzdGVuY2VFdmVudDsKIApAQCAtMTg3LDYgKzIyOSw3IEBACiAKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogCiBpbnQKIHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VUZXN0KGludCBhY3Rpb24sCkBAIC03MzUsMyArNzc4LDUgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgKaW5kZXggNDBkYmQ0ZS4uNzVjNjQyNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaApAQCAtMjksMTEgKzI5LDEzIEBACiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSh2b2lkKTsKICAgICAgRmluZFZhck1ldGhvZCAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGU7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlVGVzdDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VTdGFydHVwOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHNPd25lcjsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckV4aXN0ZW5jZUV2ZW50T3duZXI7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9NVEVUUklHR0VSRVhJU1RFTkNFVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jCmluZGV4IDVhMmJkN2IuLjgwYTQ1YTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMKQEAgLTgsNiArOCw3IEBACiAgKiBUaGlzIHNob3VsZCBhbHdheXMgYmUgaW5jbHVkZWQgZmlyc3QgYmVmb3JlIGFueXRoaW5nIGVsc2UgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgpAQCAtMjAsNiArMjEsMTMgQEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShtaWJfc25wcmludF92YXJpYWJsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRkb21haW5fc3VwcG9ydCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3VpbnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdHJpbmdfdGltZV90b19zZWNzKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qCiAgKiBtaW5pbWFsIGluY2x1ZGUgZGlyZWN0aXZlcyAKQEAgLTc4LDYgKzg2LDcgQEAKICAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJUYWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCkBAIC0xMjEsOCArMTMwLDU0IEBACiAjZGVmaW5lICAgTVRFVFJJR0dFUkVOVFJZU1RBVFVTICAxNwogICAgIHtNVEVUUklHR0VSRU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxNX19LAotCiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBtdGVUcmlnZ2VyVGFibGVfdmFyaWFibGVzW10gPSB7CisgICAgLyoKKyAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAorICAgICAqLworI2RlZmluZSAgIE1URVRSSUdHRVJDT01NRU5UICAgICA1CisgICAge01URVRSSUdHRVJDT01NRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDN9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEVTVCAgICAgICAgNgorICAgIHtNVEVUUklHR0VSVEVTVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA0fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlNBTVBMRVRZUEUgIDcKKyAgICB7TVRFVFJJR0dFUlNBTVBMRVRZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDV9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVkFMVUVJRCAgICAgOAorICAgIHtNVEVUUklHR0VSVkFMVUVJRCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA2fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlZBTFVFSURXSUxEQ0FSRCAgOQorICAgIHtNVEVUUklHR0VSVkFMVUVJRFdJTERDQVJELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA3fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRBUkdFVFRBRyAgIDEwCisgICAge01URVRSSUdHRVJUQVJHRVRUQUcsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgOH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJDT05URVhUTkFNRSAgMTEKKyAgICB7TVRFVFJJR0dFUkNPTlRFWFROQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDl9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSQ09OVEVYVE5BTUVXSUxEQ0FSRCAgMTIKKyAgICB7TVRFVFJJR0dFUkNPTlRFWFROQU1FV0lMRENBUkQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDEwfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkZSRVFVRU5DWSAgIDEzCisgICAge01URVRSSUdHRVJGUkVRVUVOQ1ksIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxMX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJPQkpFQ1RTT1dORVIgIDE0CisgICAge01URVRSSUdHRVJPQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgMTJ9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VST0JKRUNUUyAgICAgMTUKKyAgICB7TVRFVFJJR0dFUk9CSkVDVFMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgMTN9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSRU5BQkxFRCAgICAgMTYKKyAgICB7TVRFVFJJR0dFUkVOQUJMRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDE0fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUkVOVFJZU1RBVFVTICAxNworICAgIHtNVEVUUklHR0VSRU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDE1fX0sCit9OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoKICAqIChMID0gbGVuZ3RoIG9mIHRoZSBvaWRzdWZmaXgpIAogICovCkBAIC00MDMsOCArNDU4LDE3IEBACiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdyJzoKICAgICAgICAgICAgIGlmIChjcCkgeworICAgICAgICAgICAgICAgIGludCBmcmVxOwogICAgICAgICAgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgICAgICAgICAgICAgU3RvcmFnZU5ldy0+bXRlVHJpZ2dlckZyZXF1ZW5jeSA9IHN0cnRvdWwoYnVmLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBmcmVxID0gbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKGJ1Zik7CisgICAgICAgICAgICAgICAgaWYgKGZyZXEgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiSW52YWxpZCAtciB2YWx1ZVxuIik7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIFhYWDogZnJlZSBTdG9yYWdlTmV3IAorICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTdG9yYWdlTmV3LT5tdGVUcmlnZ2VyRnJlcXVlbmN5ID0gKHVuc2lnZW5kIGxvbmcpIGZyZXE7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIk5vIHBhcmFtZXRlciBhZnRlciAtciBnaXZlblxuIik7CiAgICAgICAgICAgICAgICAgLyoKQEAgLTU5Myw3ICs2NTcsNyBAQAogCiAgICAgREVCVUdNU0dUTCgoIm10ZVRyaWdnZXJUYWJsZSIsICJhZGRlZCBzaW1wbGUgbW9uaXRvcjogJXNcbiIsCiAgICAgICAgICAgICAgICAgU3RvcmFnZU5ldy0+bXRlVHJpZ2dlck5hbWUpKTsKLX0KK30gLyogcGFyc2Vfc2ltcGxlX21vbml0b3IgKi8KIAogCiAvKgpAQCAtMTA3Niw5ICsxMTQwLDcgQEAKICAgICAgICAgbXRlX2VuYWJsZV90cmlnZ2VyKFN0b3JhZ2VUbXApOwogCiAgICAgREVCVUdNU0dUTCgoIm10ZVRyaWdnZXJUYWJsZSIsICJkb25lLlxuIikpOwotfQotCi0KK30gLyogcGFyc2VfbXRlVHJpZ2dlclRhYmxlICovCiAKIAogLyoKQEAgLTE0MjksMTQgKzE0OTEsMjAgQEAKIAogICAgIERFQlVHTVNHVEwoKCJtdGVUcmlnZ2VyVGFibGUiLAogICAgICAgICAgICAgICAgICJ2YXJfbXRlVHJpZ2dlclRhYmxlOiBFbnRlcmluZy4uLiAgXG4iKSk7CisKKwkvKiBzZXQgZGVmYXVsdCB2YWx1ZSAqLworCSp3cml0ZV9tZXRob2QgPSBOVUxMOworCiAgICAgLyoKICAgICAgKiB0aGlzIGFzc3VtZXMgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbGwgeW91ciBkYXRhIHByb3Blcmx5CiAgICAgICovCiAgICAgaWYgKChTdG9yYWdlVG1wID0KICAgICAgICAgIGhlYWRlcl9jb21wbGV4KG10ZVRyaWdnZXJUYWJsZVN0b3JhZ2UsIHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgdmFyX2xlbiwgd3JpdGVfbWV0aG9kKSkgPT0gTlVMTCkgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKHZwLT5tYWdpYyA9PSBNVEVUUklHR0VSRU5UUllTVEFUVVMpCiAgICAgICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckVudHJ5U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xNDQ4LDY3ICsxNTE2LDkzIEBACiAKIAogICAgIGNhc2UgTVRFVFJJR0dFUkNPTU1FTlQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckNvbW1lbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJDb21tZW50TGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQ29tbWVudDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRFU1Q6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRlc3Q7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUZXN0TGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGVzdDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlNBTVBMRVRZUEU6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclNhbXBsZVR5cGU7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyU2FtcGxlVHlwZSk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclNhbXBsZVR5cGU7CiAKICAgICBjYXNlIE1URVRSSUdHRVJWQUxVRUlEOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJWYWx1ZUlEOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVmFsdWVJRExlbiAqIHNpemVvZihvaWQpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVmFsdWVJRDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlZBTFVFSURXSUxEQ0FSRDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVmFsdWVJRFdpbGRjYXJkOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclZhbHVlSURXaWxkY2FyZCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclZhbHVlSURXaWxkY2FyZDsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRBUkdFVFRBRzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGFyZ2V0VGFnOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGFyZ2V0VGFnTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGFyZ2V0VGFnOwogCiAgICAgY2FzZSBNVEVUUklHR0VSQ09OVEVYVE5BTUU6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckNvbnRleHROYW1lOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQ29udGV4dE5hbWVMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJDb250ZXh0TmFtZTsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkNPTlRFWFROQU1FV0lMRENBUkQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckNvbnRleHROYW1lV2lsZGNhcmQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyQ29udGV4dE5hbWVXaWxkY2FyZCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckNvbnRleHROYW1lV2lsZGNhcmQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJGUkVRVUVOQ1k6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckZyZXF1ZW5jeTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJGcmVxdWVuY3kpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJGcmVxdWVuY3k7CiAKICAgICBjYXNlIE1URVRSSUdHRVJPQkpFQ1RTT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlck9iamVjdHNPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlck9iamVjdHNPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlck9iamVjdHNPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUk9CSkVDVFM6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlck9iamVjdHM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJPYmplY3RzTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyT2JqZWN0czsKIAogICAgIGNhc2UgTVRFVFJJR0dFUkVOQUJMRUQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlckVuYWJsZWQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRW5hYmxlZCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlckVuYWJsZWQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJFTlRSWVNUQVRVUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyRW50cnlTdGF0dXM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyRW50cnlTdGF0dXMpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJFbnRyeVN0YXR1czsKIApAQCAtMTUyMSw3ICsxNjE1LDcgQEAKIAogCiAKLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogd3JpdGVfbXRlVHJpZ2dlckNvbW1lbnQoaW50IGFjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC0xNjA4LDcgKzE3MDIsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJDb21tZW50ICovCiAKIAogCkBAIC0xNjk1LDcgKzE3ODksNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJUZXN0ICovCiAKIAogCkBAIC0xNzc4LDcgKzE4NzIsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJTYW1wbGVUeXBlICovCiAKIAogCkBAIC0xODcyLDcgKzE5NjYsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJWYWx1ZUlEICovCiAKIAogCkBAIC0xOTU2LDcgKzIwNTAsNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJWYWx1ZUlEV2lsZGNhcmQgKi8KIAogCiAKQEAgLTIwNDUsNyArMjEzOSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlclRhcmdldFRhZyAqLwogCiAKIApAQCAtMjEzNSw3ICsyMjI5LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyQ29udGV4dE5hbWUgKi8KIAogCiAKQEAgLTIyMTksNyArMjMxMyw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlckNvbnRleHROYW1lV2lsZGNhcmQgKi8KIAogCiAKQEAgLTIzMDYsNyArMjQwMCw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlckZyZXF1ZW5jeSAqLwogCiAKIApAQCAtMjM5Niw3ICsyNDkwLDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyT2JqZWN0c093bmVyICovCiAKIAogCkBAIC0yNDg1LDcgKzI1NzksNyBAQAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Cit9IC8qIHdyaXRlX210ZVRyaWdnZXJPYmplY3RzICovCiAKIAogCkBAIC0yNTc0LDEwICsyNjY4LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi0KLQorfSAvKiB3cml0ZV9tdGVUcmlnZ2VyRW5hYmxlZCAqLwogCiAKIApAQCAtMjkwNSw3ICsyOTk2LDExIEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0KK30gLyogd3JpdGVfbXRlVHJpZ2dlckVudHJ5U3RhdHVzICovCisKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKwogCiAvKgogICogc2VuZCB0cmFwIApAQCAtMzAwMCw3ICszMDk1LDggQEAKIAogICAgIHNlbmRfdjJ0cmFwKHZhcl9saXN0KTsKICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJfbGlzdCk7Ci19Cit9IC8qIHNlbmRfbXRlX3RyYXAgKi8KKwogCiB2b2lkCiBsYXN0X3N0YXRlX2NsZWFuKHZvaWQgKmRhdGEpCkBAIC0zMDEwLDYgKzMxMDYsNyBAQAogICAgIFNOTVBfRlJFRShjbGVhbm1lKTsKIH0KIAorCiAvKgogICogcmV0cmlldmVzIHJlcXVlc3RlZCBpbmZvIGluIHBkdSBmcm9tIHRoZSBjdXJyZW50IHRhcmdldCAKICAqLwpAQCAtMzEwMSw3ICszMTk4LDcgQEAKICAgICBidWZbc2l6ZW9mKGJ1ZikgLSAxXSA9ICdcMCc7CiAgICAgREVCVUdNU0dUTCgoIm10ZVRyaWdnZXJUYWJsZSIsICJnb3QgYSB2YXJpYWJsZXM6ICVzXG4iLCBidWYpKTsKICAgICByZXR1cm4gcmVzcG9uc2U7Ci19Cit9IC8qIG10ZV9nZXRfcmVzcG9uc2UgKi8KIAogCiAvKgpAQCAtMzEzMiw3ICszMjI5LDYgQEAKIH0KIAogCi0KIC8qCiAgKiBSZXR1cm4gMCBpZiB0aGUgZGlzY29udGludWl0eSBvYmplY3Qgd2FzIGNoZWNrZWQgYW5kIG5vIGRpc2NvbnRpbnVpdHkgaGFzCiAgKiBvY2N1cnJlZCwgMSBpZiB0aGUgZGlzY29udGludWl0eSBvYmplY3Qgd2FzIGNoZWNrZWQgYW5kIGEgZGlzY29udGludWl0eQpAQCAtMzI2Myw3ICszMzU5LDcgQEAKICAgICAgKi8KICAgICBERUJVR01TR1RMKCgibXRlX2Rpc2NvIiwgIm5vIGRpc2NvbnRpbnVpdHlcbiIpKTsKICAgICByZXR1cm4gMDsKLX0KK30gLyogbXRlX2Rpc2NvbnRpbnVpdHlfb2NjdXJyZWQgKi8KIAogCiB2b2lkCkBAIC0zNjcwLDcgKzM3NjYsOCBAQAogICAgIH0KIAogICAgIGl0ZW0tPnN0YXJ0ZWQgPSBNVEVfU1RBUlRFRDsKLX0KK30gLyogbXRlX3J1bl90cmlnZ2VyICovCisKIAogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oCmluZGV4IDE4OTE0ZGQuLmM0Mjc2MDIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmgKQEAgLTIyOSw3ICsyMjksNyBAQAogICAgICBuZXRzbm1wX3BkdSAgICAqbXRlX2dldF9yZXNwb25zZShzdHJ1Y3QgbXRlVHJpZ2dlclRhYmxlX2RhdGEgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKik7CiAKLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJDb21tZW50OwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlclRlc3Q7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyU2FtcGxlVHlwZTsKQEAgLTI0Myw4ICsyNDMsNyBAQAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlck9iamVjdHM7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyRW5hYmxlZDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJFbnRyeVN0YXR1czsKLQotICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlckVudHJ5U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICB2b2lkICAgICAgICAgICAgbXRlX2VuYWJsZV90cmlnZ2VyKHN0cnVjdCBtdGVUcmlnZ2VyVGFibGVfZGF0YSAqaXRlbSk7CiAgICAgIHZvaWQgICAgICAgICAgICBtdGVfZGlzYWJsZV90cmlnZ2VyKHN0cnVjdCBtdGVUcmlnZ2VyVGFibGVfZGF0YQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jCmluZGV4IDI4YjMzZDguLmJlOTYzYzEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdHJ1Y3QgdmFyaWFibGUyIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCkBAIC05NywxMyArOTgsNjUgQEAKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HRVZFTlQgIDE3CiAgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTV9fSwKLQogfTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KK3N0cnVjdCB2YXJpYWJsZTIgbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlX3ZhcmlhYmxlc1tdID0geworICAgIC8qCisgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKKyAgICAgKi8KKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEU1RBUlRVUCAgMworICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEU1RBUlRVUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERSSVNJTkcgIDQKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lORywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMn19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HICA1CisgICAge01URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAzfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HICA2CisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lORywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgNH19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkcgIDcKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElORywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgNX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERPQkpFQ1RTT1dORVIgIDgKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA2fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFMgIDkKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgN319LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERSSVNJTkdFVkVOVE9XTkVSICAxMAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA4fX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5UICAxMQorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgOX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HRVZFTlRPV05FUiAgMTIKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDEwfX0sCisjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVCAgMTMKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxMX19LAorI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5UT1dORVIgIDE0CisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTJ9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkdFVkVOVCAgMTUKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTN9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HRVZFTlRPV05FUiAgMTYKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTR9fSwKKyNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HRVZFTlQgIDE3CisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxNX19LAorfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKKwogLyoKICAqIChMID0gbGVuZ3RoIG9mIHRoZSBvaWRzdWZmaXgpIAogICovCiAKLQogLyoKICAqIGdsb2JhbCBzdG9yYWdlIG9mIG91ciBkYXRhLCBzYXZlZCBpbiBhbmQgY29uZmlndXJlZCBieSBoZWFkZXJfY29tcGxleCgpIAogICovCkBAIC0xNTEsNiArMjA0LDEwIEBACiAKICAgICBERUJVR01TR1RMKCgibXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlIiwKICAgICAgICAgICAgICAgICAidmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZTogRW50ZXJpbmcuLi4gIFxuIikpOworCisJLyogc2V0IGRlZmF1bHQgdmFsdWUgKi8KKwkqd3JpdGVfbWV0aG9kID0gTlVMTDsKKwogICAgIC8qCiAgICAgICogdGhpcyBhc3N1bWVzIHlvdSBoYXZlIHJlZ2lzdGVyZWQgYWxsIHlvdXIgZGF0YSBwcm9wZXJseQogICAgICAqLwpAQCAtMTcwLDgwICsyMjcsMTEwIEBACiAKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRFNUQVJUVVA6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZFN0YXJ0dXA7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkU3RhcnR1cCk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZFN0YXJ0dXA7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERSSVNJTkc6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZzsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmcpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmc7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmcpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkc6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmc7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkc6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZzsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmcpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmc7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERPQkpFQ1RTT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZE9iamVjdHNPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZE9iamVjdHNPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZE9iamVjdHNPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFM6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZE9iamVjdHM7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRPYmplY3RzTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkT2JqZWN0czsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5UT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZ0V2ZW50T3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudE93bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nRXZlbnRPd25lcjsKIAogICAgIGNhc2UgTVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5UOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZ0V2ZW50TGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nRXZlbnQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HRVZFTlRPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZ0V2ZW50T3duZXI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nRXZlbnRPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmdFdmVudE93bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5UOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nRXZlbnQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nRXZlbnRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nRXZlbnQ7CiAKICAgICBjYXNlIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5UT1dORVI6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nRXZlbnRPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nRXZlbnRPd25lckxlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+CiAgICAgICAgICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudE93bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkdFVkVOVDoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0gU3RvcmFnZVRtcC0+bXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nRXZlbnRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50OwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HRVZFTlRPV05FUjoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nRXZlbnRPd25lcjsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICp2YXJfbGVuID0KICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmdFdmVudE93bmVyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBTdG9yYWdlVG1wLT4KICAgICAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmdFdmVudE93bmVyOwogCiAgICAgY2FzZSBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HRVZFTlQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZ0V2ZW50OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBTdG9yYWdlVG1wLT5tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nRXZlbnRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIFN0b3JhZ2VUbXAtPm10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmdFdmVudDsKIApAQCAtMjU2LDcgKzM0Myw3IEBACiAKIAogCi0KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogaW50CiB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkU3RhcnR1cChpbnQgYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTE2MDcsMyArMTY5NCw1IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oCmluZGV4IDdhYTZjZWMuLjhmMzMwMTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICAgICAgdm9pZCAgICAgICAgICAgIGluaXRfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlKHZvaWQpOwogICAgICBGaW5kVmFyTWV0aG9kICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZTsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRTdGFydHVwOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZFJpc2luZzsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nOwpAQCAtNDIsNSArNDMsNiBAQAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhUmlzaW5nRXZlbnQ7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9tdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFGYWxsaW5nRXZlbnRPd25lcjsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX210ZVRyaWdnZXJUaHJlc2hvbGREZWx0YUZhbGxpbmdFdmVudDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX01URVRSSUdHRVJUSFJFU0hPTERUQUJMRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jCmluZGV4IDIyNWM5NWMuLjBmNzFkYTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jCkBAIC0xNiw5ICsxNiwxNCBAQAogICogVGhpcyBzaG91bGQgYWx3YXlzIGJlIGluY2x1ZGVkIGZpcnN0IGJlZm9yZSBhbnl0aGluZyBlbHNlIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjaW5jbHVkZSA8bmV0ZGIuaD4KIApAQCAtNDYsNiArNTEsNyBAQAogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODIsIDEsIDMgfTsKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RydWN0IHZhcmlhYmxlMiBsb29rdXBDdGxUYWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXgKQEAgLTYzLDYgKzY5LDI1IEBACiAgICAge0NPTFVNTl9MT09LVVBDVExST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDh9fQogfTsKKyNlbHNlIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KK3N0cnVjdCB2YXJpYWJsZTIgbG9va3VwQ3RsVGFibGVfdmFyaWFibGVzW10gPSB7CisgICAgLyoKKyAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4CisgICAgICovCisgICAge0NPTFVNTl9MT09LVVBDVExUQVJHRVRBRERSRVNTVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCAzfX0sCisgICAge0NPTFVNTl9MT09LVVBDVExUQVJHRVRBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA0fX0sCisgICAge0NPTFVNTl9MT09LVVBDVExPUEVSU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDV9fSwKKyAgICB7Q09MVU1OX0xPT0tVUENUTFRJTUUsICAgICAgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgNn19LAorICAgIHtDT0xVTU5fTE9PS1VQQ1RMUkMsICAgICAgICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA3fX0sCisgICAge0NPTFVNTl9MT09LVVBDVExST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgOH19Cit9OworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogCiAvKgpAQCAtMzczLDYgKzM5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKnZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKIHsKICAgICBzdHJ1Y3QgbG9va3VwVGFibGVfZGF0YSAqU3RvcmFnZVRtcCA9IE5VTEw7CisgICAgICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOwogCiAgICAgLyoKICAgICAgKiB0aGlzIGFzc3VtZXMgeW91IGhhdmUgcmVnaXN0ZXJlZCBhbGwgeW91ciBkYXRhIHByb3Blcmx5CkBAIC0zOTAsMTIgKzQxNiwxNiBAQAogICAgICAqLwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBDT0xVTU5fTE9PS1VQQ1RMVEFSR0VUQUREUkVTU1RZUEU6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbG9va3VwQ3RsVGFyZ2V0QWRkcmVzc1R5cGU7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihTdG9yYWdlVG1wLT5sb29rdXBDdGxUYXJnZXRBZGRyZXNzVHlwZSk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bG9va3VwQ3RsVGFyZ2V0QWRkcmVzc1R5cGU7CiAKICAgICBjYXNlIENPTFVNTl9MT09LVVBDVExUQVJHRVRBRERSRVNTOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX2xvb2t1cEN0bFRhcmdldEFkZHJlc3M7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAqdmFyX2xlbiA9IChTdG9yYWdlVG1wLT5sb29rdXBDdGxUYXJnZXRBZGRyZXNzTGVuKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgU3RvcmFnZVRtcC0+bG9va3VwQ3RsVGFyZ2V0QWRkcmVzczsKIApAQCAtNDEyLDcgKzQ0Miw5IEBACiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgU3RvcmFnZVRtcC0+bG9va3VwQ3RsUmM7CiAKICAgICBjYXNlIENPTFVNTl9MT09LVVBDVExST1dTVEFUVVM6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfbG9va3VwQ3RsUm93U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoU3RvcmFnZVRtcC0+bG9va3VwQ3RsUm93U3RhdHVzKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBTdG9yYWdlVG1wLT5sb29rdXBDdGxSb3dTdGF0dXM7CiAKQEAgLTUwNSw5ICs1MzcsOSBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cHN0YXJ0LCBOVUxMKTsKLSAgICAgICAgbG9va3VwID0gZ2V0aG9zdGJ5YWRkcigmYWRkcl9pbiwgc2l6ZW9mKGFkZHJfaW4pLCBBRl9JTkVUKTsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cGVuZCwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBzdGFydCk7CisgICAgICAgIGxvb2t1cCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigmYWRkcl9pbiwgc2l6ZW9mKGFkZHJfaW4pLCBBRl9JTkVUKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cGVuZCk7CiAgICAgICAgIHRpbWV1c2UgPSAxMDAwMDAwICogKHRwZW5kLnR2X3NlYyAtIHRwc3RhcnQudHZfc2VjKSArCiAgICAgICAgICAgICB0cGVuZC50dl91c2VjIC0gdHBzdGFydC50dl91c2VjOwogICAgICAgICB0aW1ldXNlIC89IDEwMDA7CkBAIC01NTUsOSArNTg3LDkgQEAKICAgICAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzID0geyAwLCBBRl9JTkVUNiwgU09DS19ER1JBTSB9OwogI2VuZGlmCiAKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cHN0YXJ0LCBOVUxMKTsKLSAgICAgICAgbG9va3VwID0gZ2V0aG9zdGJ5bmFtZShhZGRyZXNzKTsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cGVuZCwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBzdGFydCk7CisgICAgICAgIGxvb2t1cCA9IG5ldHNubXBfZ2V0aG9zdGJ5bmFtZShhZGRyZXNzKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cGVuZCk7CiAgICAgICAgIHRpbWV1c2U0ID0gMTAwMDAwMCAqICh0cGVuZC50dl9zZWMgLSB0cHN0YXJ0LnR2X3NlYykgKwogICAgICAgICAgICAgdHBlbmQudHZfdXNlYyAtIHRwc3RhcnQudHZfdXNlYzsKICAgICAgICAgaWYgKGxvb2t1cCA9PSBOVUxMKSB7CkBAIC01ODQsNiArNjE2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGFkZF9yZXN1bHQoaXRlbSwgbiwgSU5FVEFERFJFU1NUWVBFX1VOS05PV04sICIiLCAwKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJsb29rdXBDdGxUYWJsZSIsICJBZGRpbmcgJWQgJXNcbiIsIG4sIGJ1ZikpOwogCiAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMSkKICAgICAgICAgICAgICAgICAgICAgaXRlbS0+UmVzdWx0c1RhYmxlID0gdGVtcDsKQEAgLTU5Niw5ICs2MjksOSBAQAogICAgICAgICB9CiAKICNpZiBIQVZFX0dFVEFERFJJTkZPCi0gICAgICAgIGdldHRpbWVvZmRheSgmdHBzdGFydCwgTlVMTCk7Ci0gICAgICAgIHJlcyA9IGdldGFkZHJpbmZvKGFkZHJlc3MsIE5VTEwsICZoaW50cywgJmFpcyk7Ci0gICAgICAgIGdldHRpbWVvZmRheSgmdHBlbmQsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRwc3RhcnQpOworICAgICAgICByZXMgPSBuZXRzbm1wX2dldGFkZHJpbmZvKGFkZHJlc3MsIE5VTEwsICZoaW50cywgJmFpcyk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBlbmQpOwogICAgICAgICB0aW1ldXNlNiA9IDEwMDAwMDAgKiAodHBlbmQudHZfc2VjIC0gdHBzdGFydC50dl9zZWMpICsKICAgICAgICAgICAgIHRwZW5kLnR2X3VzZWMgLSB0cHN0YXJ0LnR2X3VzZWM7CiAKQEAgLTYxNiwxNCArNjQ5LDE0IEBACiAgICAgICAgICAgICAgICAgc3dpdGNoIChhaXAtPmFpX2ZhbWlseSkgewogICAgICAgICAgICAgICAgIGNhc2UgQUZfSU5FVDoKICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9wKGFpcC0+YWlfZmFtaWx5LAotICAgICAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luICopYWlwLT5haV9hZGRyKS0+c2luX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luICopYWlwLT5haV9hZGRyKS0+c2luX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBidWYsIHNpemVvZihidWYpKTsKICAgICAgICAgICAgICAgICAgICAgYnVmbGVuID0gc3RybGVuKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBhZGRfcmVzdWx0KGl0ZW0sIG4sIElORVRBRERSRVNTVFlQRV9JUFY0LCBidWYsIGJ1Zmxlbik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgQUZfSU5FVDY6CiAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvcChhaXAtPmFpX2ZhbWlseSwKLSAgICAgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilhaXAtPmFpX2FkZHIpLT5zaW42X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luNiAqKWFpcC0+YWlfYWRkciktPnNpbjZfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogICAgICAgICAgICAgICAgICAgICBidWZsZW4gPSBzdHJsZW4oYnVmKTsKICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGFkZF9yZXN1bHQoaXRlbSwgbiwgSU5FVEFERFJFU1NUWVBFX0lQVjYsIGJ1ZiwgYnVmbGVuKTsKQEAgLTY0Niw5ICs2NzksOSBAQAogICAgICAgICAgICAgZnJlZWFkZHJpbmZvKGFpcyk7CiAgICAgICAgIH0KICNlbGlmIEhBVkVfR0VUSE9TVEJZTkFNRTIKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cHN0YXJ0LCBOVUxMKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cHN0YXJ0KTsKICAgICAgICAgbG9va3VwID0gZ2V0aG9zdGJ5bmFtZTIoYWRkcmVzcywgQUZfSU5FVDYpOwotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRwZW5kLCBOVUxMKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cGVuZCk7CiAgICAgICAgIHRpbWV1c2U2ID0gMTAwMDAwMCAqICh0cGVuZC50dl9zZWMgLSB0cHN0YXJ0LnR2X3NlYykgKwogICAgICAgICAgICAgdHBlbmQudHZfdXNlYyAtIHRwc3RhcnQudHZfdXNlYzsKIApAQCAtNzE1LDkgKzc0OCw5IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJsb29rdXBDdGxUYWJsZSIsICJlcnJvciEgXG4iKSk7CiAKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cHN0YXJ0LCBOVUxMKTsKLSAgICAgICAgbG9va3VwID0gZ2V0aG9zdGJ5YWRkcigmYWRkcl9pbjYsIHNpemVvZihhZGRyX2luNiksIEFGX0lORVQ2KTsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0cGVuZCwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHBzdGFydCk7CisgICAgICAgIGxvb2t1cCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigmYWRkcl9pbjYsIHNpemVvZihhZGRyX2luNiksIEFGX0lORVQ2KTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0cGVuZCk7CiAgICAgICAgIHRpbWV1c2UgPSAxMDAwMDAwICogKHRwZW5kLnR2X3NlYyAtIHRwc3RhcnQudHZfc2VjKSArCiAgICAgICAgICAgICB0cGVuZC50dl91c2VjIC0gdHBzdGFydC50dl91c2VjOwogICAgICAgICB0aW1ldXNlIC89IDEwMDA7CkBAIC04OTIsNiArOTI1LDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogaW50CiB3cml0ZV9sb29rdXBDdGxUYXJnZXRBZGRyZXNzVHlwZShpbnQgYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTEzNzgsMyArMTQxMiw0IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmgKaW5kZXggN2E3MjlhYi4uMDg1YjI1YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmgKQEAgLTY0LDEyICs2NCwxMyBAQAogdm9pZCAgICAgICAgICAgIHBhcnNlX2xvb2t1cEN0bFRhYmxlKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKIFNOTVBDYWxsYmFjayAgICBzdG9yZV9sb29rdXBDdGxUYWJsZTsKIAotCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKIFdyaXRlTWV0aG9kICAgICB3cml0ZV9sb29rdXBDdGxUYXJnZXRBZGRyZXNzVHlwZTsKIFdyaXRlTWV0aG9kICAgICB3cml0ZV9sb29rdXBDdGxUYXJnZXRBZGRyZXNzOwogV3JpdGVNZXRob2QgICAgIHdyaXRlX2xvb2t1cEN0bFJvd1N0YXR1czsKIAogV3JpdGVNZXRob2QgICAgIHdyaXRlX2xvb2t1cEN0bFJvd1N0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qCiAgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBsb29rdXBDdGxUYWJsZSAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMKaW5kZXggMzUyMThmOC4uODdiMDllZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMKQEAgLTU1LDYgKzU1LDcgQEAKIHN0YXRpYyBfX2lubGluZV9fIGludCBpcHY2X2FkZHJfYW55KHN0cnVjdCBpbjZfYWRkciAqKTsKIHN0YXRpYyBjaGFyICAgICpwcl9hZGRyKHN0cnVjdCBpbjZfYWRkciAqLCBpbnQpOwogc3RhdGljIGNoYXIgICAgKnByX2FkZHJfbihzdHJ1Y3QgaW42X2FkZHIgKik7Cit2b2lkIHBpbmdDdGxUYWJsZV9jbGVhbmVyKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqdGhlc3R1ZmYpOwogCiAvKgogICpwaW5nQ3RsVGFibGVfdmFyaWFibGVzX29pZDoKQEAgLTY0LDYgKzY1LDcgQEAKIAogb2lkICAgICAgICAgICAgIHBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkW10gPQogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODAsIDEsIDIgfTsKK3N0YXRpYyBjb25zdCBpbnQgcGluZ0N0bFRhYmxlX3ZhcmlhYmxlc19vaWRfbGVuID0gc2l6ZW9mKHBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkKS9zaXplb2YocGluZ0N0bFRhYmxlX3ZhcmlhYmxlc19vaWRbMF0pOwogCiAvKiB0cmFwICovCiBvaWQgICAgICAgICAgICAgcGluZ1Byb2JlRmFpbGVkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDgwLCAwLCAxIH07CkBAIC0xNTcsMTQgKzE1OSwyNCBAQAogICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiZG9uZS5cbiIpKTsKIH0KIAordm9pZCBzaHV0ZG93bl9waW5nQ3RsVGFibGUodm9pZCkKK3sKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLCBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX3BpbmdDdGxUYWJsZSwgTlVMTCwgMSk7CisgICAgc25tcGRfdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigicGluZ0N0bFRhYmxlIik7CisgICAgdW5yZWdpc3Rlcl9taWIocGluZ0N0bFRhYmxlX3ZhcmlhYmxlc19vaWQsIHBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkX2xlbik7CisgICAgcGluZ0N0bFRhYmxlX2NsZWFuZXIocGluZ0N0bFRhYmxlU3RvcmFnZSk7CisgICAgcGluZ0N0bFRhYmxlU3RvcmFnZSA9IE5VTEw7Cit9CisKIHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqCiBjcmVhdGVfcGluZ0N0bFRhYmxlX2RhdGEodm9pZCkKIHsKICAgICBzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKlN0b3JhZ2VOZXcgPSBOVUxMOworCiAgICAgU3RvcmFnZU5ldyA9IFNOTVBfTUFMTE9DX1NUUlVDVChwaW5nQ3RsVGFibGVfZGF0YSk7Ci0gICAgaWYgKFN0b3JhZ2VOZXcgPT0gTlVMTCkgewotICAgICAgICBleGl0KDEpOwotICAgIH0KKyAgICBpZiAoU3RvcmFnZU5ldyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVGFyZ2V0QWRkcmVzc1R5cGUgPSAxOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUYXJnZXRBZGRyZXNzID0gc3RyZHVwKCIiKTsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVGFyZ2V0QWRkcmVzc0xlbiA9IDA7CkBAIC0xNzIsMTkgKzE4NCwxNyBAQAogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUaW1lT3V0ID0gMzsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsUHJvYmVDb3VudCA9IDE7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bEFkbWluU3RhdHVzID0gMjsKLSAgICBTdG9yYWdlTmV3LT5waW5nQ3RsRGF0YUZpbGwgPSAoY2hhciAqKSBtYWxsb2Moc3RybGVuKCIwMCIpICsgMSk7CisgICAgU3RvcmFnZU5ldy0+cGluZ0N0bERhdGFGaWxsID0gc3RyZHVwKCIwMCIpOwogICAgIGlmIChTdG9yYWdlTmV3LT5waW5nQ3RsRGF0YUZpbGwgPT0gTlVMTCkgewotICAgICAgICBleGl0KDEpOworICAgICAgICBmcmVlKFN0b3JhZ2VOZXcpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtY3B5KFN0b3JhZ2VOZXctPnBpbmdDdGxEYXRhRmlsbCwgIjAwIiwgc3RybGVuKCIwMCIpICsgMSk7Ci0gICAgU3RvcmFnZU5ldy0+cGluZ0N0bERhdGFGaWxsW3N0cmxlbigiMDAiKV0gPSAnXDAnOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxEYXRhRmlsbExlbiA9IHN0cmxlbihTdG9yYWdlTmV3LT5waW5nQ3RsRGF0YUZpbGwpOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxGcmVxdWVuY3kgPSAwOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxNYXhSb3dzID0gNTA7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFN0b3JhZ2VUeXBlID0gMTsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVHJhcEdlbmVyYXRpb24gPSBzdHJkdXAoIiIpOwogICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxUcmFwR2VuZXJhdGlvbkxlbiA9IDA7Ci0gICAgU3RvcmFnZU5ldy0+cGluZ0N0bFRyYXBHZW5lcmF0aW9uTGVuID0gMDsKICAgICBTdG9yYWdlTmV3LT5waW5nQ3RsVHJhcFByb2JlRmFpbHVyZUZpbHRlciA9IDE7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFRyYXBUZXN0RmFpbHVyZUZpbHRlciA9IDE7CiAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFR5cGUgPSBjYWxsb2MoMSwgc2l6ZW9mKG9pZCkgKiBzaXplb2YoMikpOyAgICAgICAvKiAwLjAgKi8KQEAgLTIwNSw2ICsyMTUsMjAgQEAKICAgICByZXR1cm4gU3RvcmFnZU5ldzsKIH0KIAorc3RhdGljIHZvaWQgZnJlZV9waW5nQ3RsVGFibGVfZGF0YShzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKlN0b3JhZ2VEZWwpCit7CisgICAgbmV0c25tcF9hc3NlcnQoU3RvcmFnZURlbCk7CisgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsT3duZXJJbmRleCk7CisgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsVGVzdE5hbWUpOworICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bFRhcmdldEFkZHJlc3MpOworICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bERhdGFGaWxsKTsKKyAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxUcmFwR2VuZXJhdGlvbik7CisgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsVHlwZSk7CisgICAgZnJlZShTdG9yYWdlRGVsLT5waW5nQ3RsRGVzY3IpOworICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bFNvdXJjZUFkZHJlc3MpOworICAgIGZyZWUoU3RvcmFnZURlbCk7Cit9CisKIC8qCiAgKiBwaW5nQ3RsVGFibGVfYWRkKCk6IGFkZHMgYSBzdHJ1Y3R1cmUgbm9kZSB0byBvdXIgZGF0YSBzZXQgCiAgKi8KQEAgLTIyMSwxNSArMjQ1LDE2IEBACiAgICAgICovCiAKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LCB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLCB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgIC8qIHBpbmdDdGxPcGVyYXRpb25OYW1lICovCi0KLQorICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKICAgICBoZWFkZXJfY29tcGxleF9hZGRfZGF0YSgmcGluZ0N0bFRhYmxlU3RvcmFnZSwgdmFycywgdGhlZGF0YSk7CiAKICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgInJlZ2lzdGVyZWQgYW4gZW50cnlcbiIpKTsKLSAgICB2YXJzID0gTlVMTDsKLSAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgImRvbmUuXG4iKSk7CisKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCkBAIC0yMzcsMTIgKzI2MiwxNiBAQAogcGluZ1Jlc3VsdHNUYWJsZV9hZGQoc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICp0aGVkYXRhKQogewogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyc19saXN0ID0gTlVMTDsKLSAgICBzdHJ1Y3QgcGluZ1Jlc3VsdHNUYWJsZV9kYXRhICpwID0gTlVMTDsKKyAgICBzdHJ1Y3QgcGluZ1Jlc3VsdHNUYWJsZV9kYXRhICpwOworCiAgICAgcCA9IHRoZWRhdGEtPnBpbmdSZXN1bHRzOwogICAgIGlmICh0aGVkYXRhLT5waW5nUmVzdWx0cyAhPSBOVUxMKSB7CiAKLSAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBwLT5waW5nQ3RsT3duZXJJbmRleCwgcC0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBwLT5waW5nQ3RsVGVzdE5hbWUsIHAtPnBpbmdDdGxUZXN0TmFtZUxlbik7ICAgICAgLyogcGluZ0N0bE9wZXJhdGlvbk5hbWUgKi8KKyAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnBpbmdDdGxUZXN0TmFtZSwgcC0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKIAogICAgICAgICAvKgogICAgICAgICAgKiBYWFg6IGZpbGwgaW4gZGVmYXVsdCByb3cgdmFsdWVzIGhlcmUgaW50byBTdG9yYWdlTmV3IApAQCAtMjYyLDggKzI5MSw2IEBACiAKICAgICB9CiAKLSAgICBERUJVR01TR1RMKCgicGluZ1Jlc3VsdHNUYWJsZSIsICJkb25lLlxuIikpOwotICAgIHZhcnNfbGlzdCA9IE5VTEw7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KIApAQCAtMjcyLDExICsyOTksMTggQEAKIHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9hZGQoc3RydWN0IHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kYXRhICp0aGVkYXRhKQogewogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyc19saXN0OworCiAgICAgdmFyc19saXN0ID0gTlVMTDsKICAgICBpZiAodGhlZGF0YSAhPSBOVUxMKSB7Ci0gICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgIC8qIHBpbmdDdGxUZXN0TmFtZSAqLwotICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9VTlNJR05FRCwgKGNoYXIgKikgJnRoZWRhdGEtPnBpbmdQcm9iZUhpc3RvcnlJbmRleCwgc2l6ZW9mKHRoZWRhdGEtPnBpbmdQcm9iZUhpc3RvcnlJbmRleCkpOyAvKiBwaW5nUHJvYmVIaXN0b3J5SW5kZXggKi8KKyAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9VTlNJR05FRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhlZGF0YS0+cGluZ1Byb2JlSGlzdG9yeUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0aGVkYXRhLT5waW5nUHJvYmVIaXN0b3J5SW5kZXgpKTsKIAogICAgICAgICAvKgogICAgICAgICAgKiBYWFg6IGZpbGwgaW4gZGVmYXVsdCByb3cgdmFsdWVzIGhlcmUgaW50byBTdG9yYWdlTmV3IApAQCAtMjk1LDU2ICszMjksNDMgQEAKICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsICJvdXQgZmluaXNoZWRcbiIpKTsKICAgICB9CiAgICAgCi0gICAgdmFyc19saXN0ID0gTlVMTDsKLSAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwgImRvbmUuXG4iKSk7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KIAogaW50CiBwaW5nUHJvYmVIaXN0b3J5VGFibGVfYWRkYWxsKHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqdGhlZGF0YSkKIHsKLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnNfbGlzdCA9IE5VTEw7Ci0gICAgc3RydWN0IHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kYXRhICpwID0gTlVMTDsKLSAgICBwID0gdGhlZGF0YS0+cGluZ1Byb2JlSGlzOwotICAgIGlmICh0aGVkYXRhLT5waW5nUHJvYmVIaXMgIT0gTlVMTCkKLSAgICAgICAgZG8gewotICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBwLT5waW5nQ3RsT3duZXJJbmRleCwgcC0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHAtPnBpbmdDdGxUZXN0TmFtZSwgcC0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgIC8qIHBpbmdDdGxUZXN0TmFtZSAqLwotICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyc19saXN0LCBOVUxMLCAwLCBBU05fVU5TSUdORUQsIChjaGFyICopICZwLT5waW5nUHJvYmVIaXN0b3J5SW5kZXgsIHNpemVvZihwLT5waW5nUHJvYmVIaXN0b3J5SW5kZXgpKTsgLyogcGluZ1Byb2JlSGlzdG9yeUluZGV4ICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzX2xpc3Q7CisgICAgc3RydWN0IHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kYXRhICpwOwogCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogWFhYOiBmaWxsIGluIGRlZmF1bHQgcm93IHZhbHVlcyBoZXJlIGludG8gU3RvcmFnZU5ldyAKLSAgICAgICAgICAgICAqIAotICAgICAgICAgICAgICovCisgICAgZm9yIChwID0gdGhlZGF0YS0+cGluZ1Byb2JlSGlzOyBwOyBwID0gcC0+bmV4dCkgeworICAgICAgICB2YXJzX2xpc3QgPSBOVUxMOworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzX2xpc3QsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPnBpbmdDdGxUZXN0TmFtZUxlbik7CisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnNfbGlzdCwgTlVMTCwgMCwgQVNOX1VOU0lHTkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwLT5waW5nUHJvYmVIaXN0b3J5SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHAtPnBpbmdQcm9iZUhpc3RvcnlJbmRleCkpOworICAgICAgICBoZWFkZXJfY29tcGxleF9hZGRfZGF0YSgmcGluZ1Byb2JlSGlzdG9yeVRhYmxlU3RvcmFnZSwgdmFyc19saXN0LCBwKTsKKyAgICB9CiAKLQotICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsICJhZGRpbmcgZGF0YS4uLiAgIikpOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIGFkZCB0aGUgaW5kZXggdmFyaWFibGVzIHRvIHRoZSB2YXJiaW5kIGxpc3QsIHdoaWNoIGlzIAotICAgICAgICAgICAgICogdXNlZCBieSBoZWFkZXJfY29tcGxleCB0byBpbmRleCB0aGUgZGF0YSAKLSAgICAgICAgICAgICAqLwotCi0gICAgICAgICAgICBoZWFkZXJfY29tcGxleF9hZGRfZGF0YSgmcGluZ1Byb2JlSGlzdG9yeVRhYmxlU3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcnNfbGlzdCwgcCk7Ci0KLQotICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsICJvdXQgZmluaXNoZWRcbiIpKTsKLSAgICAgICAgICAgIHZhcnNfbGlzdCA9IE5VTEw7Ci0gICAgICAgICAgICBwID0gcC0+bmV4dDsKLSAgICAgICAgfSB3aGlsZSAocCAhPSBOVUxMKTsKLQotICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLCAiZG9uZS5cbiIpKTsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCiB2b2lkCiBwaW5nQ3RsVGFibGVfY2xlYW5lcihzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKnRoZXN0dWZmKQogewotICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRyOworICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRyLCAqbmV4dDsKKyAgICBzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKlN0b3JhZ2VEZWw7CiAKICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwgImNsZWFuZXJvdXQgICIpKTsKLSAgICBmb3IgKGhjaXB0ciA9IHRoZXN0dWZmOyBoY2lwdHIgIT0gTlVMTDsgaGNpcHRyID0gaGNpcHRyLT5uZXh0KSB7Ci0gICAgICAgIGhlYWRlcl9jb21wbGV4X2V4dHJhY3RfZW50cnkoJnBpbmdDdGxUYWJsZVN0b3JhZ2UsIGhjaXB0cik7CisgICAgZm9yIChoY2lwdHIgPSB0aGVzdHVmZjsgaGNpcHRyOyBoY2lwdHIgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBoY2lwdHItPm5leHQ7CisgICAgICAgIFN0b3JhZ2VEZWwgPSBoZWFkZXJfY29tcGxleF9leHRyYWN0X2VudHJ5KCZwaW5nQ3RsVGFibGVTdG9yYWdlLCBoY2lwdHIpOworICAgICAgICBmcmVlX3BpbmdDdGxUYWJsZV9kYXRhKFN0b3JhZ2VEZWwpOwogICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwgImNsZWFuZXIgICIpKTsKICAgICB9CiB9CkBAIC04NDIsMTAgKzg2MywxNSBAQAogICAgIHNpemVfdCAgICAgICAgICBuZXdvaWRfbGVuOwogICAgIHVuc2lnbmVkIGxvbmcgICBjb3VudCA9IDA7CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgICAvKiBwaW5nQ3RsT3BlcmF0aW9uTmFtZSAqLworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKIAogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKIAogICAgIGZvciAoaGNpcHRyMiA9IHBpbmdQcm9iZUhpc3RvcnlUYWJsZVN0b3JhZ2U7IGhjaXB0cjIgIT0gTlVMTDsKICAgICAgICAgIGhjaXB0cjIgPSBoY2lwdHIyLT5uZXh0KSB7CkBAIC04NjMsMTcgKzg4OSwyMSBAQAogewogICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRyMiA9IE5VTEw7CiAgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lsYXN0ID0gTlVMTDsKLSAgICBzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgKlN0b3JhZ2VUbXAgPSBOVUxMOworICAgIHN0cnVjdCBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGF0YSAqU3RvcmFnZVRtcCwgKlN0b3JhZ2VEZWw7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKICAgICBvaWQgICAgICAgICAgICAgbmV3b2lkW01BWF9PSURfTEVOXTsKICAgICBzaXplX3QgICAgICAgICAgbmV3b2lkX2xlbjsKICAgICB0aW1lX3QgICAgICAgICAgbGFzdF90aW1lID0gMjE0NzQ4MzY0NzsKICAgICB0aW1lX3QgICAgICAgICAgdHA7CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgICAvKiBwaW5nQ3RsT3BlcmF0aW9uTmFtZSAqLwotCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKIAogICAgIGZvciAoaGNpbGFzdCA9IGhjaXB0cjIgPSBwaW5nUHJvYmVIaXN0b3J5VGFibGVTdG9yYWdlOyBoY2lwdHIyICE9IE5VTEw7CiAgICAgICAgICBoY2lwdHIyID0gaGNpcHRyMi0+bmV4dCkgewpAQCAtODkzLDcgKzkyMywyNSBAQAogCiAgICAgICAgIH0KICAgICB9Ci0gICAgaGVhZGVyX2NvbXBsZXhfZXh0cmFjdF9lbnRyeSgmcGluZ1Byb2JlSGlzdG9yeVRhYmxlU3RvcmFnZSwgaGNpbGFzdCk7CisgICAgU3RvcmFnZURlbCA9CisgICAgICAgIGhlYWRlcl9jb21wbGV4X2V4dHJhY3RfZW50cnkoJnBpbmdQcm9iZUhpc3RvcnlUYWJsZVN0b3JhZ2UsIGhjaWxhc3QpOworICAgIGZvciAoaGNpcHRyMiA9IHBpbmdDdGxUYWJsZVN0b3JhZ2U7IGhjaXB0cjI7IGhjaXB0cjIgPSBoY2lwdHIyLT5uZXh0KSB7CisgICAgICAgIHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqdG1wOworCisgICAgICAgIHRtcCA9IGhjaXB0cjItPmRhdGE7CisgICAgICAgIGlmICh0bXAtPnBpbmdQcm9iZUhpcyA9PSBTdG9yYWdlRGVsKSB7CisgICAgICAgICAgICB0bXAtPnBpbmdQcm9iZUhpcyA9IHRtcC0+cGluZ1Byb2JlSGlzLT5uZXh0OworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdQcm9iZUhpc3RvcnlUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiZGVsZXRpbmcgdGhlIGxhc3Qgb25lIHN1Y2NlZWRlZCFcbiIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIAl9CisgICAgfQorICAgIGlmIChTdG9yYWdlRGVsKSB7CisgICAgICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ1Byb2JlSGlzdG9yeVRpbWUpOworICAgICAgICBmcmVlKFN0b3JhZ2VEZWwtPnBpbmdDdGxUZXN0TmFtZSk7CisgICAgICAgIGZyZWUoU3RvcmFnZURlbC0+cGluZ0N0bE93bmVySW5kZXgpOworICAgICAgICBmcmVlKFN0b3JhZ2VEZWwpOworICAgIH0KICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwKICAgICAgICAgICAgICAgICAiZGVsZXRlIHRoZSBsYXN0IG9uZSBzdWNjZXNzIVxuIikpOwogfQpAQCAtOTY5LDggKzEwMTcsMTAgQEAKIHsKICAgICBjaGFyICAgICAgICAgICAqcHRyOwogCi0gICAgaWYgKChwdHIgPSBzb2NrX250b3BfaG9zdChzYSwgc2FsZW4pKSA9PSBOVUxMKQotICAgICAgICBwcmludGYoInNvY2tfbnRvcF9ob3N0IGVycm9yIik7IC8qIGluZXRfbnRvcCgpIHNldHMgZXJybm8gKi8KKyAgICBpZiAoKHB0ciA9IHNvY2tfbnRvcF9ob3N0KHNhLCBzYWxlbikpID09IE5VTEwpIHsKKyAgICAgICAgLyogaW5ldF9udG9wKCkgc2V0cyBlcnJubyAqLworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoInBpbmdDdGxUYWJsZTogc29ja19udG9wX2hvc3QoKSIpOworICAgIH0KICAgICByZXR1cm4gKHB0cik7CiB9CiAKQEAgLTEwMjMsNyArMTA3Myw3IEBACiAgICAgaGludHMuYWlfZmFtaWx5ID0gZmFtaWx5OyAgIC8qIEFGX1VOU1BFQywgQUZfSU5FVCwgQUZfSU5FVDYsIGV0Yy4gKi8KICAgICBoaW50cy5haV9zb2NrdHlwZSA9IHNvY2t0eXBlOyAgICAgICAvKiAwLCBTT0NLX1NUUkVBTSwgU09DS19ER1JBTSwgZXRjLiAqLwogCi0gICAgaWYgKChuID0gZ2V0YWRkcmluZm8oaG9zdCwgc2VydiwgJmhpbnRzLCAmcmVzKSkgIT0gMCkKKyAgICBpZiAoKG4gPSBuZXRzbm1wX2dldGFkZHJpbmZvKGhvc3QsIHNlcnYsICZoaW50cywgJnJlcykpICE9IDApCiAgICAgICAgIHJldHVybiAoTlVMTCk7CiAKICAgICByZXR1cm4gKHJlcyk7ICAgICAgICAgICAgICAgLyogcmV0dXJuIHBvaW50ZXIgdG8gZmlyc3Qgb24gbGlua2VkIGxpc3QgKi8KQEAgLTEwNTEsMTcgKzExMDEsMTggQEAKICAgICBoaW50cy5haV9mYW1pbHkgPSBmYW1pbHk7ICAgLyogMCwgQUZfSU5FVCwgQUZfSU5FVDYsIGV0Yy4gKi8KICAgICBoaW50cy5haV9zb2NrdHlwZSA9IHNvY2t0eXBlOyAgICAgICAvKiAwLCBTT0NLX1NUUkVBTSwgU09DS19ER1JBTSwgZXRjLiAqLwogCi0gICAgaWYgKChuID0gZ2V0YWRkcmluZm8oaG9zdCwgc2VydiwgJmhpbnRzLCAmcmVzKSkgIT0gMCkKKyAgICBpZiAoKG4gPSBuZXRzbm1wX2dldGFkZHJpbmZvKGhvc3QsIHNlcnYsICZoaW50cywgJnJlcykpICE9IDApIHsKICNpZiBIQVZFX0dBSV9TVFJFUlJPUgotICAgICAgICBwcmludGYoImhvc3Rfc2VydiBlcnJvciBmb3IgJXMsICVzOiAlcyIsCi0gICAgICAgICAgICAgICAoaG9zdCA9PSBOVUxMKSA/ICIobm8gaG9zdG5hbWUpIiA6IGhvc3QsCi0gICAgICAgICAgICAgICAoc2VydiA9PSBOVUxMKSA/ICIobm8gc2VydmljZSBuYW1lKSIgOiBzZXJ2LAotICAgICAgICAgICAgICAgZ2FpX3N0cmVycm9yKG4pKTsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImhvc3Rfc2VydiBlcnJvciBmb3IgJXMsICVzOiAlcyIsCisgICAgICAgICAgICAgICAgIChob3N0ID09IE5VTEwpID8gIihubyBob3N0bmFtZSkiIDogaG9zdCwKKyAgICAgICAgICAgICAgICAgKHNlcnYgPT0gTlVMTCkgPyAiKG5vIHNlcnZpY2UgbmFtZSkiIDogc2VydiwKKyAgICAgICAgICAgICAgICAgZ2FpX3N0cmVycm9yKG4pKTsKICNlbHNlCi0gICAgICAgIHByaW50ZigiaG9zdF9zZXJ2IGVycm9yIGZvciAlcywgJXMiLAotICAgICAgICAgICAgICAgKGhvc3QgPT0gTlVMTCkgPyAiKG5vIGhvc3RuYW1lKSIgOiBob3N0LAotICAgICAgICAgICAgICAgKHNlcnYgPT0gTlVMTCkgPyAiKG5vIHNlcnZpY2UgbmFtZSkiIDogc2Vydik7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJob3N0X3NlcnYgZXJyb3IgZm9yICVzLCAlcyIsCisgICAgICAgICAgICAgICAgIChob3N0ID09IE5VTEwpID8gIihubyBob3N0bmFtZSkiIDogaG9zdCwKKyAgICAgICAgICAgICAgICAgKHNlcnYgPT0gTlVMTCkgPyAiKG5vIHNlcnZpY2UgbmFtZSkiIDogc2Vydik7CiAjZW5kaWYKKyAgICB9CiAKICAgICByZXR1cm4gKHJlcyk7ICAgICAgICAgICAgICAgLyogcmV0dXJuIHBvaW50ZXIgdG8gZmlyc3Qgb24gbGlua2VkIGxpc3QgKi8KIH0KQEAgLTExMDUsMTMgKzExNTYsMTYgQEAKICAgICBvaWQgICAgICAgICAgICAgcGluZ1Jlc3VsdHNTZW5kUHJvYmVzW10gPQogICAgICAgICB7IDEsIDMsIDYsIDEsIDIsIDEsIDgwLCAxLCAzLCAxLCA4IH07CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgLyogcGluZ0N0bE93bmVySW5kZXggKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7IC8qIHBpbmdDdGxPcGVyYXRpb25OYW1lICovCi0gICAgU3RvcmFnZVRtcCA9IFNOTVBfTUFMTE9DX1NUUlVDVChwaW5nUmVzdWx0c1RhYmxlX2RhdGEpOwotICAgIGlmICgoU3RvcmFnZVRtcCA9Ci0gICAgICAgICAoc3RydWN0IHBpbmdSZXN1bHRzVGFibGVfZGF0YSAqKQotICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7CisgICAgU3RvcmFnZVRtcCA9IGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycyk7CisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CisgICAgaWYgKCFTdG9yYWdlVG1wKQorICAgICAgICByZXR1cm47CiAKICAgICAvKgogICAgICAqIHNubXBUcmFwIG9pZCAKQEAgLTEyMzcsMTQgKzEyOTEsMTYgQEAKICAgICAvKiBzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgKiBjdXJyZW50PU5VTEw7ICovCiAgICAgc3RydWN0IHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kYXRhIGN1cnJlbnRfdmFyOwogICAgIGludCAgICAgICAgICAgICBzb2NrZmQ7CisgICAgaW50ICAgICAgICAgICAgIHNlbGVjdF9yZXN1bHQ7CiAgICAgaW50ICAgICAgICAgICAgIGN1cnJlbnRfcHJvYmVfdGVtcDsKICAgICBpbnQgICAgICAgICAgICAgc3VjY2Vzc19wcm9iZSA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIGZhaWxfcHJvYmUgPSAwOwogICAgIGludCAgICAgICAgICAgICBmbGFnOwotICAgIHVuc2lnbmVkIGxvbmcgICpzdW1ydHQ7CisgICAgdW5zaWduZWQgbG9uZyAgIHN1bXJ0dDsKICAgICBzdHJ1Y3QgdGltZXZhbCAgdHY7CiAKLSAgICBzdW1ydHQgPSAodW5zaWduZWQgbG9uZyAqKSBtYWxsb2Moc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKTsKKyAgICBtZW1zZXQoc2VuZGJ1ZiwgMCwgc2l6ZW9mKHNlbmRidWYpKTsKKwogICAgIHNvY2tmZCA9IHNvY2tldChwci0+c2FzZW5kLT5zYV9mYW1pbHksIFNPQ0tfUkFXLCBwci0+aWNtcHByb3RvKTsKICAgICBpZiAoc29ja2ZkIDwgMCkgewogCXNubXBfbG9nX3BlcnJvcigicGluZ0N0bFRhYmxlOiBmYWlsZWQgdG8gY3JlYXRlIHNvY2tldCIpOwpAQCAtMTI2MywyOSArMTMxOSwyOSBAQAogICAgICAgICAoKnByLT5mc2VuZCkgKGRhdGFsZW4sIHBpZCwgbnNlbnQsIHNvY2tmZCwgc2VuZGJ1Zik7CiAgICAgICAgIG5zZW50Kys7CiAgICAgICAgIGxlbiA9IHByLT5zYWxlbjsKLSAgICAgICAgaWYgKHJlYWRhYmxlX3RpbWVvKHNvY2tmZCwgaXRlbS0+cGluZ0N0bFRpbWVPdXQpID09IDApIHsKLSAgICAgICAgICAgIC8qIHByaW50Zigic29ja2V0IHRpbWVvdXQhXG4iKTsgKi8KLSAgICAgICAgICAgIG4gPSAtMTsKLSAgICAgICAgICAgIGZhaWxfcHJvYmUgPSBmYWlsX3Byb2JlICsgMTsKLSAgICAgICAgICAgIGZsYWcgPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbiA9IHJlY3Zmcm9tKHNvY2tmZCwgcmVjdmJ1Ziwgc2l6ZW9mKHJlY3ZidWYpLCAwLCBwci0+c2FyZWN2LAotICAgICAgICAgICAgICAgICAgICAgICAgICZsZW4pOwotICAgICAgICAgICAgc3VjY2Vzc19wcm9iZSA9IHN1Y2Nlc3NfcHJvYmUgKyAxOwotICAgICAgICAgICAgZmxhZyA9IDA7Ci0gICAgICAgIH0KKyAgICAgICAgc2VsZWN0X3Jlc3VsdCA9IHJlYWRhYmxlX3RpbWVvKHNvY2tmZCwgaXRlbS0+cGluZ0N0bFRpbWVPdXQpOworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoc2VsZWN0X3Jlc3VsdCA9PSAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJzb2NrZXQgdGltZW91dFxuIikpOworICAgICAgICAgICAgICAgIG4gPSAtMTsKKyAgICAgICAgICAgICAgICBmYWlsX3Byb2JlID0gZmFpbF9wcm9iZSArIDE7CisgICAgICAgICAgICAgICAgZmxhZyA9IDE7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG4gPSByZWN2ZnJvbShzb2NrZmQsIHJlY3ZidWYsIHNpemVvZihyZWN2YnVmKSwgMCwgcHItPnNhcmVjdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxlbik7CisgICAgICAgICAgICAgICAgc3VjY2Vzc19wcm9iZSA9IHN1Y2Nlc3NfcHJvYmUgKyAxOworICAgICAgICAgICAgICAgIGZsYWcgPSAwOworICAgICAgICAgICAgfQogCi0gICAgICAgIGdldHRpbWVvZmRheSgmdHZhbCwgTlVMTCk7CisgICAgICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2YWwpOwogCi0gICAgICAgIHRpbWUoJnRpbWVwKTsKKyAgICAgICAgICAgIHRpbWUoJnRpbWVwKTsKIAotICAgICAgICAoKnByLT5mcHJvYykgKHJlY3ZidWYsIG4sICZ0dmFsLCB0aW1lcCwgaXRlbSwgYWksIGRhdGFsZW4sIG1pbnJ0dCwKLSAgICAgICAgICAgICAgICAgICAgICBtYXhydHQsIHN1bXJ0dCwgYXZlcmFnZXJ0dCwgY3VycmVudF9wcm9iZV90ZW1wLAotICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NfcHJvYmUsIGZhaWxfcHJvYmUsIGZsYWcsICZjdXJyZW50X3ZhciwgcGlkKTsKLSAgICAgICAgaWYgKGN1cnJlbnRfcHJvYmVfdGVtcCA+PSBpdGVtLT5waW5nQ3RsUHJvYmVDb3VudCkgewotICAgICAgICAgICAgU05NUF9GUkVFKHN1bXJ0dCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgICAgICgqcHItPmZwcm9jKSAocmVjdmJ1ZiwgbiwgJnR2YWwsIHRpbWVwLCBpdGVtLCBhaSwgZGF0YWxlbiwgbWlucnR0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhydHQsICZzdW1ydHQsIGF2ZXJhZ2VydHQsIGN1cnJlbnRfcHJvYmVfdGVtcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc19wcm9iZSwgZmFpbF9wcm9iZSwgZmxhZywgJmN1cnJlbnRfdmFyLCBwaWQpOworICAgICAgICAgICAgc2VsZWN0X3Jlc3VsdCA9IHJlYWRhYmxlX3RpbWVvKHNvY2tmZCwgMCk7CisgICAgICAgIH0gd2hpbGUgKHNlbGVjdF9yZXN1bHQgPiAwKTsKICAgICB9CiAgICAgY2xvc2Uoc29ja2ZkKTsKIH0KQEAgLTEzMjAsOSArMTM3NiwxMSBAQAogICAgIHN0YXRpYyBpbnQgICAgICBwcm9iZUZhaWxlZCA9IDA7CiAgICAgc3RhdGljIGludCAgICAgIHRlc3RGYWlsZWQgPSAwOwogICAgIHN0YXRpYyBpbnQgICAgICBzZXJpZXMgPSAwOwotCiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKICAgICBzdHJ1Y3QgcGluZ1Jlc3VsdHNUYWJsZV9kYXRhICpTdG9yYWdlTmV3ID0gTlVMTDsKKworICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAicHJvY192NChmbGFnID0gJWQpXG4iLCBmbGFnKSk7CisKICAgICBpZiAoZmxhZyA9PSAwKSB7CiAgICAgICAgIHNlcmllcyA9IDA7CiAgICAgICAgIGlwID0gKHN0cnVjdCBpcCAqKSBwdHI7IC8qIHN0YXJ0IG9mIElQIGhlYWRlciAqLwpAQCAtMTMzMCwxNCArMTM4OCwyMCBAQAogCiAgICAgICAgIGljbXAgPSAoc3RydWN0IGljbXAgKikgKHB0ciArIGhsZW4xKTsgICAvKiBzdGFydCBvZiBJQ01QIGhlYWRlciAqLwogICAgICAgICBpZiAoKGljbXBsZW4gPSBsZW4gLSBobGVuMSkgPCA4KQotICAgICAgICAgICAgcHJpbnRmKCJpY21wbGVuICglZCkgPCA4IiwgaWNtcGxlbik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgImljbXBsZW4gKCVkKSA8IDgiLCBpY21wbGVuKSk7CisKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJJQ01QIHR5cGUgPSAlZCAoJXNhIHJlcGx5KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgaWNtcC0+aWNtcF90eXBlLAorICAgICAgICAgICAgICAgICAgICBpY21wLT5pY21wX3R5cGUgPT0gSUNNUF9FQ0hPUkVQTFkgPyAiIiA6ICJub3QgYSAiKSk7CiAKICAgICAgICAgaWYgKGljbXAtPmljbXBfdHlwZSA9PSBJQ01QX0VDSE9SRVBMWSkgewotICAgICAgICAgICAgaWYgKGljbXAtPmljbXBfaWQgIT0gcGlkKQotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOyAgICAgICAgIC8qIG5vdCBhIHJlc3BvbnNlIHRvIG91ciBFQ0hPX1JFUVVFU1QgKi8KLSAgICAgICAgICAgIGlmIChpY21wbGVuIDwgMTYpCi0gICAgICAgICAgICAgICAgcHJpbnRmKCJpY21wbGVuICglZCkgPCAxNiIsIGljbXBsZW4pOworICAgICAgICAgICAgaWYgKGljbXAtPmljbXBfaWQgIT0gcGlkKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJub3QgYSByZXNwb25zZSB0byBvdXIgRUNIT19SRVFVRVNUXG4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmIChpY21wbGVuIDwgMTYpCisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJpY21wbGVuICglZCkgPCAxNiIsIGljbXBsZW4pKTsKIAogICAgICAgICAgICAgdHZzZW5kID0gKHN0cnVjdCB0aW1ldmFsICopIGljbXAtPmljbXBfZGF0YTsKIApAQCAtMTM0NSwxNCArMTQwOSwxOSBAQAogICAgICAgICAgICAgICAgIHJvdW5kX2RvdWJsZSgoMTAwMDAwMCAqICh0dnJlY3YtPnR2X3NlYyAtIHR2c2VuZC0+dHZfc2VjKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dnJlY3YtPnR2X3VzZWMgLSB0dnNlbmQtPnR2X3VzZWMpIC8gMTAwMCk7CiAKLSAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LCBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLCBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAvKiBwaW5nQ3RsVGVzdE5hbWUgKi8KKyAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAKLQotICAgICAgICAgICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFycykpID09IE5VTEwpCisgICAgICAgICAgICBTdG9yYWdlTmV3ID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKTsKKyAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOworICAgICAgICAgICAgaWYgKCFTdG9yYWdlTmV3KSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJTdG9yYWdlTmV3ID09IE5VTExcbiIpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9TVUNITkFNRTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGN1cnJlbnRfcHJvYmUgPT0gMSkgewogICAgICAgICAgICAgICAgICphdmVyYWdlcnR0ID0gcnR0OwpAQCAtMTM2MCw3ICsxNDI5LDYgQEAKICAgICAgICAgICAgICAgICAqbWF4cnR0ID0gcnR0OwogICAgICAgICAgICAgICAgICpzdW1ydHQgPSBydHQ7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByaW50ZigiZWxzZVxuIik7CiAgICAgICAgICAgICAgICAgaWYgKHJ0dCA8ICptaW5ydHQpCiAgICAgICAgICAgICAgICAgICAgICptaW5ydHQgPSBydHQ7CiAgICAgICAgICAgICAgICAgaWYgKHJ0dCA+ICptYXhydHQpCkBAIC0xMzg0LDYgKzE0NTIsNyBAQAogICAgICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzUnR0U3VtT2ZTcXVhcmVzICsgcnR0ICogcnR0OwogCiAJICAgIFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzTGFzdEdvb2RQcm9iZV90aW1lID0gdGltZXA7CisgICAgICAgICAgICBmcmVlKFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzTGFzdEdvb2RQcm9iZSk7CiAgICAgICAgICAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c0xhc3RHb29kUHJvYmUgPQogICAgICAgICAgICAgICAgIG5ldHNubXBfbWVtZHVwKGRhdGVfbl90aW1lKCZ0aW1lcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzTGFzdEdvb2RQcm9iZUxlbiksCkBAIC0xNDI4LDUyICsxNDk3LDM5IEBACiAKICAgICAgICAgICAgIGlmIChTdG9yYWdlTmV3LT5waW5nUmVzdWx0c1NlbmRQcm9iZXMgPT0gMSkKICAgICAgICAgICAgICAgICBpdGVtLT5waW5nUHJvYmVIaXMgPSB0ZW1wOwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgKGN1cnJlbnRfdGVtcCktPm5leHQgPSB0ZW1wOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjdXJyZW50X3RlbXAgPSB0ZW1wOwogCi0gICAgICAgICAgICBpZiAoU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNTZW5kUHJvYmVzID49Ci0gICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFByb2JlQ291bnQpIHsKKyAgICAgICAgICAgIGlmIChTdG9yYWdlTmV3LT5waW5nUmVzdWx0c1NlbmRQcm9iZXMgPj0gaXRlbS0+cGluZ0N0bFByb2JlQ291bnQpCiAgICAgICAgICAgICAgICAgY3VycmVudF90ZW1wLT5uZXh0ID0gTlVMTDsKLSAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGl0ZW0tPnBpbmdQcm9iZUhpcyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9jb3VudChpdGVtKSA8Ci0gICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxNYXhSb3dzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwaW5nUHJvYmVIaXN0b3J5VGFibGVfYWRkKGN1cnJlbnRfdGVtcCkgIT0KLSAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBFUlJfU1VDQ0VTUykKLSAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lzdGVyZWQgYW4gZW50cnkgZXJyb3JcbiIpKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChwaW5nUHJvYmVIaXN0b3J5VGFibGVfY291bnQoaXRlbSkgPj0gaXRlbS0+cGluZ0N0bE1heFJvd3MpCiAgICAgICAgICAgICAgICAgICAgIHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9kZWxMYXN0KGl0ZW0pOwotICAgICAgICAgICAgICAgICAgICBpZiAocGluZ1Byb2JlSGlzdG9yeVRhYmxlX2FkZChjdXJyZW50X3RlbXApICE9Ci0gICAgICAgICAgICAgICAgICAgICAgICBTTk1QRVJSX1NVQ0NFU1MpCi0gICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ1Byb2JlSGlzdG9yeVRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpc3RlcmVkIGFuIGVudHJ5IGVycm9yXG4iKSk7Ci0KLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHBpbmdQcm9iZUhpc3RvcnlUYWJsZV9hZGQoY3VycmVudF90ZW1wKSAhPSBTTk1QRVJSX1NVQ0NFU1MpCisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nUHJvYmVIaXN0b3J5VGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkIHRvIGFkZCBhIHJvd1xuIikpOwogCSAgICB9CiAgICAgICAgIH0KLSAgICB9Ci0KLSAgICBlbHNlIGlmIChmbGFnID09IDEpCi0gICAgewotCi0KKyAgICB9IGVsc2UgaWYgKGZsYWcgPT0gMSkgewogICAgICAgICBpZiAoc2VyaWVzID09IDApCiAgICAgICAgICAgICBwcm9iZUZhaWxlZCA9IDE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHByb2JlRmFpbGVkID0gcHJvYmVGYWlsZWQgKyAxOwogICAgICAgICBzZXJpZXMgPSAxOwogICAgICAgICB0ZXN0RmFpbGVkID0gdGVzdEZhaWxlZCArIDE7Ci0gICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LCBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7IC8qICBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7ICAgICAvKiBwaW5nQ3RsVGVzdE5hbWUgKi8KKyAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAKLQotICAgICAgICBpZiAoKFN0b3JhZ2VOZXcgPQotICAgICAgICAgICAgIGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycykpID09IE5VTEwpCisgICAgICAgIFN0b3JhZ2VOZXcgPSBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpOworICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICAgICAgaWYgKCFTdG9yYWdlTmV3KQogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PU1VDSE5BTUU7CiAKICAgICAgICAgaWYgKGN1cnJlbnRfcHJvYmUgPT0gMSkgewpAQCAtMTYwMyw3ICsxNjU5LDcgQEAKICAgICBpY21wLT5pY21wX2NvZGUgPSAwOwogICAgIGljbXAtPmljbXBfaWQgPSBwaWQ7CiAgICAgaWNtcC0+aWNtcF9zZXEgPSBuc2VudDsKLSAgICBnZXR0aW1lb2ZkYXkoKHN0cnVjdCB0aW1ldmFsICopIGljbXAtPmljbXBfZGF0YSwgTlVMTCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKChzdHJ1Y3QgdGltZXZhbCAqKSBpY21wLT5pY21wX2RhdGEpOwogCiAgICAgbGVuID0gOCArIGRhdGFsZW47ICAgICAgICAgIC8qIGNoZWNrc3VtIElDTVAgaGVhZGVyIGFuZCBkYXRhICovCiAgICAgaWNtcC0+aWNtcF9ja3N1bSA9IDA7CkBAIC0xNjIxLDEyICsxNjc3LDE1IEBACiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKICAgICBzdHJ1Y3QgcGluZ1Jlc3VsdHNUYWJsZV9kYXRhICpTdG9yYWdlTmV3ID0gTlVMTDsKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LCBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAgKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7IC8qIHBpbmdDdGxUZXN0TmFtZSAgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsKIAotCi0gICAgaWYgKChTdG9yYWdlTmV3ID0KLSAgICAgICAgIGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycykpID09IE5VTEwpCisgICAgU3RvcmFnZU5ldyA9IGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwgdmFycyk7CisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFycyk7CisgICAgaWYgKCFTdG9yYWdlTmV3KQogICAgICAgICByZXR1cm47CiAKICAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c1NlbmRQcm9iZXMgPSAwOwpAQCAtMTY1NCwzNCArMTcxMyw0MSBAQAogCiAgICAgICAgIGFpID0gaG9zdF9zZXJ2KGhvc3QsIE5VTEwsIDAsIDApOwogCi0gICAgICAgIHByaW50ZigiUElORyAlcyAoJXMpOiAlZCBkYXRhIGJ5dGVzXG4iLCBhaS0+YWlfY2Fub25uYW1lLAotICAgICAgICAgICAgICAgc29ja19udG9wX2hvc3QoYWktPmFpX2FkZHIsIGFpLT5haV9hZGRybGVuKSwgZGF0YWxlbik7CisgICAgICAgIGlmIChhaSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJQSU5HICVzICglcyk6ICVkIGRhdGEgYnl0ZXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBhaS0+YWlfY2Fub25uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgc29ja19udG9wX2hvc3QoYWktPmFpX2FkZHIsIGFpLT5haV9hZGRybGVuKSwgZGF0YWxlbikpOwogCi0gICAgICAgIC8qCi0gICAgICAgICAqIDRpbml0aWFsaXplIGFjY29yZGluZyB0byBwcm90b2NvbCAKLSAgICAgICAgICovCi0gICAgICAgIGlmIChhaS0+YWlfZmFtaWx5ID09IEFGX0lORVQpIHsKLSAgICAgICAgICAgIHByID0gJnByb3RvX3Y0OworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIDRpbml0aWFsaXplIGFjY29yZGluZyB0byBwcm90b2NvbCAKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGFpLT5haV9mYW1pbHkgPT0gQUZfSU5FVCkgeworICAgICAgICAgICAgICAgIHByID0gJnByb3RvX3Y0OwogI2lmZGVmCUlQVjYKLSAgICAgICAgfSBlbHNlIGlmIChhaS0+YWlfZmFtaWx5ID09IEFGX0lORVQ2KSB7Ci0gICAgICAgICAgICBwciA9ICZwcm90b192NjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYWktPmFpX2ZhbWlseSA9PSBBRl9JTkVUNikgeworICAgICAgICAgICAgICAgIHByID0gJnByb3RvX3Y2OwogCi0gICAgICAgICAgICBpZiAoSU42X0lTX0FERFJfVjRNQVBQRUQoJigoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaS0+YWlfYWRkciktPnNpbjZfYWRkcikpKQotICAgICAgICAgICAgICAgIHByaW50ZigiY2Fubm90IHBpbmcgSVB2NC1tYXBwZWQgSVB2NiBhZGRyZXNzIik7CisgICAgICAgICAgICAgICAgaWYgKElONl9JU19BRERSX1Y0TUFQUEVEKCYoKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFpLT5haV9hZGRyKS0+c2luNl9hZGRyKSkpCisgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjYW5ub3QgcGluZyBJUHY0LW1hcHBlZCBJUHY2IGFkZHJlc3MiKTsKICNlbmRpZgotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHByaW50ZigidW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCIsIGFpLT5haV9mYW1pbHkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCIsIGFpLT5haV9mYW1pbHkpOworICAgICAgICAgICAgfQogCi0gICAgICAgIHByLT5zYXNlbmQgPSBhaS0+YWlfYWRkcjsKLSAgICAgICAgcHItPnNhcmVjdiA9IGNhbGxvYygxLCBhaS0+YWlfYWRkcmxlbik7Ci0gICAgICAgIHByLT5zYWxlbiA9IGFpLT5haV9hZGRybGVuOwotICAgICAgICByZWFkbG9vcChpdGVtLCBhaSwgZGF0YWxlbiwgbWlucnR0LCBtYXhydHQsIGF2ZXJhZ2VydHQsIHBpZCk7CisgICAgICAgICAgICBwci0+c2FzZW5kID0gYWktPmFpX2FkZHI7CisgICAgICAgICAgICBwci0+c2FyZWN2ID0gY2FsbG9jKDEsIGFpLT5haV9hZGRybGVuKTsKKyAgICAgICAgICAgIHByLT5zYWxlbiA9IGFpLT5haV9hZGRybGVuOworICAgICAgICAgICAgcmVhZGxvb3AoaXRlbSwgYWksIGRhdGFsZW4sIG1pbnJ0dCwgbWF4cnR0LCBhdmVyYWdlcnR0LCBwaWQpOworICAgICAgICAgICAgZnJlZShwci0+c2FyZWN2KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJQSU5HOiBuYW1lIHJlc29sdXRpb24gZm9yICVzIGZhaWxlZC5cbiIsIGhvc3QpOworICAgICAgICB9CiAKICAgICAgICAgU05NUF9GUkVFKG1pbnJ0dCk7CiAgICAgICAgIFNOTVBfRlJFRShtYXhydHQpOwogICAgICAgICBTTk1QX0ZSRUUoYXZlcmFnZXJ0dCk7Ci0gICAgICAgIFNOTVBfRlJFRShhaSk7CisgICAgICAgIGZyZWVhZGRyaW5mbyhhaSk7CiAgICAgfQogCiAgICAgZWxzZSBpZiAoaXRlbS0+cGluZ0N0bFRhcmdldEFkZHJlc3NUeXBlID09IDIpIHsKQEAgLTE3NTcsMTMgKzE4MjMsMTEgQEAKICAgICAgICAgaG9zdG5hbWUgPSB0YXJnZXQ7CiAKICAgICAgICAgaWYgKGlwdjZfYWRkcl9hbnkoJnNvdXJjZS5zaW42X2FkZHIpKSB7Ci0KICAgICAgICAgICAgIHNvY2tsZW5fdCAgICAgICBhbGVuOwogICAgICAgICAgICAgaW50ICAgICAgICAgICAgIHByb2JlX2ZkID0gc29ja2V0KEFGX0lORVQ2LCBTT0NLX0RHUkFNLCAwKTsKIAogICAgICAgICAgICAgaWYgKHByb2JlX2ZkIDwgMCkgewotICAgICAgICAgICAgICAgIHByaW50ZigiZXJyb3IhXG4iKTsKLSAgICAgICAgICAgICAgICBwZXJyb3IoInNvY2tldCIpOworICAgICAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcigicGluZ0N0bFRhYmxlOiBJUHY2IGRhdGFncmFtIHNvY2tldCBjcmVhdGlvbiIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChkZXZpY2UpIHsKQEAgLTE3ODIsNiArMTg0Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW9jdGwocHJvYmVfZmQsIFNJT0NHSUZJTkRFWCwgJmlmcikgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJwaW5nOiB1bmtub3duIGlmYWNlICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZShwcm9iZV9mZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3Rob3Auc2luNl9zY29wZV9pZCA9IGlmci5pZnJfaWZpbmRleDsKQEAgLTE3OTQsMTIgKzE4NTksMTQgQEAKICAgICAgICAgICAgICAgICAocHJvYmVfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJmZpcnN0aG9wLAogICAgICAgICAgICAgICAgICBzaXplb2YoZmlyc3Rob3ApKSA9PSAtMSkgewogICAgICAgICAgICAgICAgIHBlcnJvcigiY29ubmVjdCIpOworICAgICAgICAgICAgICAgIGNsb3NlKHByb2JlX2ZkKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhbGVuID0gc2l6ZW9mKHNvdXJjZSk7CiAgICAgICAgICAgICBpZiAoZ2V0c29ja25hbWUocHJvYmVfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikgJnNvdXJjZSwgJmFsZW4pCiAgICAgICAgICAgICAgICAgPT0gLTEpIHsKICAgICAgICAgICAgICAgICBwZXJyb3IoImdldHNvY2tuYW1lIik7CisgICAgICAgICAgICAgICAgY2xvc2UocHJvYmVfZmQpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNvdXJjZS5zaW42X3BvcnQgPSAwOwpAQCAtMTkxMiwxNSArMTk3OSwxNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcHJpbnRmKCJQSU5HICVzKCVzKSAiLCBob3N0bmFtZSwKLSAgICAgICAgICAgICAgIHByX2FkZHIoJndoZXJldG8uc2luNl9hZGRyLCBvcHRpb25zKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiUElORyAlcyglcykgIiwgaG9zdG5hbWUsCisgICAgICAgICAgICAgICAgICAgIHByX2FkZHIoJndoZXJldG8uc2luNl9hZGRyLCBvcHRpb25zKSkpOwogICAgICAgICBpZiAoZmxvd2xhYmVsKQotICAgICAgICAgICAgcHJpbnRmKCIsIGZsb3cgMHglMDV4LCAiLCAodW5zaWduZWQpIG50b2hsKGZsb3dsYWJlbCkpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIsIGZsb3cgMHglMDV4LCAiLAorICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKSBudG9obChmbG93bGFiZWwpKSk7CiAgICAgICAgIGlmIChkZXZpY2UgfHwgKG9wdGlvbnMgJiBGX05VTUVSSUMpKSB7Ci0gICAgICAgICAgICBwcmludGYoImZyb20gJXMgJXM6ICIsCi0gICAgICAgICAgICAgICAgICAgcHJfYWRkcl9uKCZzb3VyY2Uuc2luNl9hZGRyKSwgZGV2aWNlID8gOiAiIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgImZyb20gJXMgJXM6ICIsCisgICAgICAgICAgICAgICAgICAgICAgICBwcl9hZGRyX24oJnNvdXJjZS5zaW42X2FkZHIpLCBkZXZpY2UgPyA6ICIiKSk7CiAgICAgICAgIH0KLSAgICAgICAgcHJpbnRmKCIlZCBkYXRhIGJ5dGVzXG4iLCBkYXRhbGVuKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIlZCBkYXRhIGJ5dGVzXG4iLCBkYXRhbGVuKSk7CiAKICAgICAgICAgc2V0dXAoaWNtcF9zb2NrLCBvcHRpb25zLCB1aWQsIHRpbWVvdXQsIHByZWxvYWQsIGludGVydmFsLCBkYXRhbGVuLAogICAgICAgICAgICAgICAoY2hhciAqKSBvdXRwYWNrLCAmaWRlbnQsICZzdGFydF90aW1lLCAmc2NyZWVuX3dpZHRoLApAQCAtMTk0NiwxOCArMjAxNCwyMCBAQAogICAgIGNoYXIgICAgICAgICAgICpob3N0ID0gTlVMTDsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMgPSBOVUxMOwogCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgLyogcGluZ0N0bFRlc3ROYW1lICAqLworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4TGVuKTsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLCBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCi0KLSAgICBpZiAoKFN0b3JhZ2VOZXcgPQotICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKSkgIT0gTlVMTCkgeworICAgIFN0b3JhZ2VOZXcgPSBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpOworICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOworICAgIGlmIChTdG9yYWdlTmV3KSB7CiAgICAgICAgIFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzU2VuZFByb2JlcyA9IDA7CiAgICAgICAgIFN0b3JhZ2VOZXctPnBpbmdSZXN1bHRzUHJvYmVSZXNwb25zZXMgPSAwOwogICAgICAgICByZXR1cm47Ci0KICAgICB9Ci0gICAgYWkgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBhZGRyaW5mbykpOworCiAgICAgaG9zdCA9IGl0ZW0tPnBpbmdDdGxUYXJnZXRBZGRyZXNzOwogICAgIGFpID0gaG9zdF9zZXJ2KGhvc3QsIE5VTEwsIDAsIDApOwogICAgIFN0b3JhZ2VUbXAgPSBTTk1QX01BTExPQ19TVFJVQ1QocGluZ1Jlc3VsdHNUYWJsZV9kYXRhKTsKQEAgLTE5ODAsMjYgKzIwNTAsMTQgQEAKIAogICAgIGlmIChpdGVtLT5waW5nQ3RsVGFyZ2V0QWRkcmVzc1R5cGUgPT0gMQogICAgICAgICB8fCBpdGVtLT5waW5nQ3RsVGFyZ2V0QWRkcmVzc1R5cGUgPT0gMTYpIHsKLSAgICAgICAgaWYgKGFpID09IE5VTEwpIHsKLSAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzVHlwZSA9IDA7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzcyA9IHN0cmR1cCgiIik7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc0xlbiA9IDA7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc1R5cGUgPSAxOwotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPQotICAgICAgICAgICAgICAgIChjaGFyICopCi0gICAgICAgICAgICAgICAgbWFsbG9jKHN0cmxlbihzb2NrX250b3BfaG9zdChhaS0+YWlfYWRkciwgYWktPmFpX2FkZHJsZW4pKQotICAgICAgICAgICAgICAgICAgICAgICArIDEpOwotICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3MgPQotICAgICAgICAgICAgICAgIHN0cmR1cChzb2NrX250b3BfaG9zdChhaS0+YWlfYWRkciwgYWktPmFpX2FkZHJsZW4pKTsKLSAgICAgICAgICAgIFN0b3JhZ2VUbXAtPgotICAgICAgICAgICAgICAgIHBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzW3N0cmxlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzb2NrX250b3BfaG9zdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWktPmFpX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhaS0+YWlfYWRkcmxlbikpXSA9ICdcMCc7Ci0gICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc0xlbiA9Ci0gICAgICAgICAgICAgICAgc3RybGVuKHNvY2tfbnRvcF9ob3N0KGFpLT5haV9hZGRyLCBhaS0+YWlfYWRkcmxlbikpOwotICAgICAgICB9CisgICAgICAgIGNvbnN0IGNoYXIqIHN0cjsKKworICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc1R5cGUgPSBhaSA/IDEgOiAwOworICAgICAgICBzdHIgPSBhaSA/IHNvY2tfbnRvcF9ob3N0KGFpLT5haV9hZGRyLCBhaS0+YWlfYWRkcmxlbikgOiBOVUxMOworICAgICAgICBpZiAoIXN0cikKKyAgICAgICAgICAgIHN0ciA9ICIiOworICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzcyA9IHN0cmR1cChzdHIpOworICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc0xlbiA9IHN0cmxlbihzdHIpOwogICAgIH0KICAgICBpZiAoaXRlbS0+cGluZ0N0bFRhcmdldEFkZHJlc3NUeXBlID09IDIpIHsKIApAQCAtMjAxNCwxMCArMjA3Miw3IEBACiAKICAgICAgICAgaWYgKGluZXRfcHRvbihBRl9JTkVUNiwgaG9zdCwgJnRvLT5zaW42X2FkZHIpID4gMCkgewogICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NUeXBlID0gMjsKLSAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzID0KLSAgICAgICAgICAgICAgICAoY2hhciAqKSBtYWxsb2Moc3RybGVuKGhvc3QpICsgMSk7CiAgICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzcyA9IHN0cmR1cChob3N0KTsKLSAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzW3N0cmxlbihob3N0KV0gPSAnXDAnOwogICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3NMZW4gPSBzdHJsZW4oaG9zdCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBocCA9IGdldGhvc3RieW5hbWUyKGhvc3QsIEFGX0lORVQ2KTsKQEAgLTIwMjYsMTMgKzIwODEsOCBAQAogICAgICAgICAgICAgICAgIG1lbW1vdmUoKGNhZGRyX3QpICYgdG8tPnNpbjZfYWRkciwgaHAtPmhfYWRkciwgMTYpOwogICAgICAgICAgICAgICAgIGhvc3RuYW1lID0gaW5ldF9udG9wKEFGX0lORVQ2LCAmdG8tPnNpbjZfYWRkciwgcGEsIDY0KTsKICAgICAgICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc1R5cGUgPSAyOwotICAgICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzID0KLSAgICAgICAgICAgICAgICAgICAgKGNoYXIgKikgbWFsbG9jKHN0cmxlbihob3N0bmFtZSkgKyAxKTsKICAgICAgICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzcyA9IHN0cmR1cChob3N0bmFtZSk7Ci0gICAgICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNJcFRhcmdldEFkZHJlc3Nbc3RybGVuKGhvc3RuYW1lKV0gPQotICAgICAgICAgICAgICAgICAgICAnXDAnOwotICAgICAgICAgICAgICAgIFN0b3JhZ2VUbXAtPnBpbmdSZXN1bHRzSXBUYXJnZXRBZGRyZXNzTGVuID0KLSAgICAgICAgICAgICAgICAgICAgc3RybGVuKGhvc3RuYW1lKTsKKyAgICAgICAgICAgICAgICBTdG9yYWdlVG1wLT5waW5nUmVzdWx0c0lwVGFyZ2V0QWRkcmVzc0xlbiA9IHN0cmxlbihob3N0bmFtZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICh2b2lkKSBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhY2Vyb3V0ZTogdW5rbm93biBob3N0ICVzXG4iLCBob3N0KTsKQEAgLTIwNjEsOCArMjExMSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgU05NUF9GUkVFKGFpKTsKLQorICAgIGZyZWVhZGRyaW5mbyhhaSk7CiB9CiAKIApAQCAtMjA3MiwxMiArMjEyMSwxNiBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycyA9IE5VTEw7CiAgICAgc3RydWN0IHBpbmdSZXN1bHRzVGFibGVfZGF0YSAqU3RvcmFnZVRtcCA9IE5VTEw7CiAKLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOyAgICAgICAvKiBwaW5nQ3RsT3duZXJJbmRleCAqLwotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgICAvKiBwaW5nQ3RsVGVzdE5hbWUgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAKLQotICAgIGlmICgoU3RvcmFnZVRtcCA9Ci0gICAgICAgICBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpKSA9PSBOVUxMKQorICAgIFN0b3JhZ2VUbXAgPSBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsIHZhcnMpOworICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOworICAgIGlmICghU3RvcmFnZVRtcCkKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PU1VDSE5BTUU7CiAgICAgU3RvcmFnZVRtcC0+cGluZ1Jlc3VsdHNPcGVyU3RhdHVzID0gdmFsOwogCkBAIC0yMDg5LDE5ICsyMTQyLDIzIEBACiBpbnQKIHBpbmdSZXN1bHRzVGFibGVfZGVsKHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqdGhlZGF0YSkKIHsKLSAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cjIgPSBOVUxMOworICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRyMiwgKm5leHQ7CiAgICAgc3RydWN0IHBpbmdSZXN1bHRzVGFibGVfZGF0YSAqU3RvcmFnZURlbCA9IE5VTEw7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKICAgICBvaWQgICAgICAgICAgICAgbmV3b2lkW01BWF9PSURfTEVOXTsKICAgICBzaXplX3QgICAgICAgICAgbmV3b2lkX2xlbjsKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LCB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLCB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgIC8qIHBpbmdDdGxPcGVyYXRpb25OYW1lICovCi0KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sIE5VTEwsIDAsIHZhcnMpOworICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOwogCi0gICAgZm9yIChoY2lwdHIyID0gcGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2U7IGhjaXB0cjIgIT0gTlVMTDsKLSAgICAgICAgIGhjaXB0cjIgPSBoY2lwdHIyLT5uZXh0KSB7CisgICAgZm9yIChoY2lwdHIyID0gcGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2U7IGhjaXB0cjI7IGhjaXB0cjIgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBoY2lwdHIyLT5uZXh0OwogICAgICAgICBpZiAoc25tcF9vaWRfY29tcGFyZShuZXdvaWQsIG5ld29pZF9sZW4sIGhjaXB0cjItPm5hbWUsIG5ld29pZF9sZW4pCiAgICAgICAgICAgICA9PSAwKSB7CiAgICAgICAgICAgICBTdG9yYWdlRGVsID0KQEAgLTIxMjUsMTkgKzIxODIsMjMgQEAKIGludAogcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RlbChzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKnRoZWRhdGEpCiB7Ci0gICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHIyID0gTlVMTDsKKyAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cjIsICpuZXh0OwogICAgIHN0cnVjdCBwaW5nUHJvYmVIaXN0b3J5VGFibGVfZGF0YSAqU3RvcmFnZURlbCA9IE5VTEw7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzID0gTlVMTDsKICAgICBvaWQgICAgICAgICAgICAgbmV3b2lkW01BWF9PSURfTEVOXTsKICAgICBzaXplX3QgICAgICAgICAgbmV3b2lkX2xlbjsKIAotICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnBpbmdDdGxPd25lckluZGV4LCB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAgIC8qIHBpbmdDdGxPd25lckluZGV4ICovCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+cGluZ0N0bFRlc3ROYW1lLCB0aGVkYXRhLT5waW5nQ3RsVGVzdE5hbWVMZW4pOyAgIC8qIHBpbmdDdGxPcGVyYXRpb25OYW1lICovCi0KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+cGluZ0N0bE93bmVySW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEtPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sIE5VTEwsIDAsIHZhcnMpOworICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOwogCi0gICAgZm9yIChoY2lwdHIyID0gcGluZ1Byb2JlSGlzdG9yeVRhYmxlU3RvcmFnZTsgaGNpcHRyMiAhPSBOVUxMOwotICAgICAgICAgaGNpcHRyMiA9IGhjaXB0cjItPm5leHQpIHsKKyAgICBmb3IgKGhjaXB0cjIgPSBwaW5nUHJvYmVIaXN0b3J5VGFibGVTdG9yYWdlOyBoY2lwdHIyOyBoY2lwdHIyID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gaGNpcHRyMi0+bmV4dDsKICAgICAgICAgaWYgKHNubXBfb2lkX2NvbXBhcmUobmV3b2lkLCBuZXdvaWRfbGVuLCBoY2lwdHIyLT5uYW1lLCBuZXdvaWRfbGVuKQogICAgICAgICAgICAgPT0gMCkgewogICAgICAgICAgICAgU3RvcmFnZURlbCA9CkBAIC00MDExLDE0ICs0MDcyLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKIHsKLSAgICBzdHJ1Y3QgcGluZ0N0bFRhYmxlX2RhdGEgKlN0b3JhZ2VUbXAgPSBOVUxMOworICAgIHN0cnVjdCBwaW5nQ3RsVGFibGVfZGF0YSAqU3RvcmFnZVRtcDsKICAgICBzdGF0aWMgc3RydWN0IHBpbmdDdGxUYWJsZV9kYXRhICpTdG9yYWdlTmV3LCAqU3RvcmFnZURlbDsKICAgICBzaXplX3QgICAgICAgICAgbmV3bGVuID0KICAgICAgICAgbmFtZV9sZW4gLSAoc2l6ZW9mKHBpbmdDdGxUYWJsZV92YXJpYWJsZXNfb2lkKSAvIHNpemVvZihvaWQpICsKICAgICAgICAgICAgICAgICAgICAgMyAtIDEpOwogICAgIHN0YXRpYyBpbnQgICAgICBvbGRfdmFsdWU7CiAgICAgaW50ICAgICAgICAgICAgIHNldF92YWx1ZTsKLSAgICBzdGF0aWMgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzLCAqdnA7CiAgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHIgPSBOVUxMOwogCiAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsCkBAIC00MTE3LDYgKzQxNzcsOCBAQAogICAgICAgICAgKiBtZW1vcnkgcmVzZXZlcmF0aW9uLCBmaW5hbCBwcmVwYXJhdGlvbi4uLiAKICAgICAgICAgICovCiAgICAgICAgIGlmIChTdG9yYWdlVG1wID09IE5VTEwpIHsKKyAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgKnZwOworCiAgICAgICAgICAgICBpZiAoc2V0X3ZhbHVlID09IFJTX0RFU1RST1kpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICAgICAgICAgIH0KQEAgLTQxMzYsMTUgKzQxOTgsMTQgQEAKICAgICAgICAgICAgICAgICAgKG5hbWUKICAgICAgICAgICAgICAgICAgIFtzaXplb2YocGluZ0N0bFRhYmxlX3ZhcmlhYmxlc19vaWQpIC8gc2l6ZW9mKG9pZCkgKwogICAgICAgICAgICAgICAgICAgIDJdKSwgbmV3bGVuLCB2YXJzKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAqIFhYWDogZnJlZSwgemVybyB2YXJzIAotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIC8qIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOyAqLworICAgICAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOwogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdnAgPSB2YXJzOwogCiAgICAgICAgICAgICBTdG9yYWdlTmV3ID0gY3JlYXRlX3BpbmdDdGxUYWJsZV9kYXRhKCk7CisgICAgICAgICAgICBpZiAoIVN0b3JhZ2VOZXcpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICAgICAgICAgIGlmICh2cC0+dmFsX2xlbiA8PSAzMikgewogICAgICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnBpbmdDdGxPd25lckluZGV4ID0gbWFsbG9jKHZwLT52YWxfbGVuICsgMSk7CiAgICAgICAgICAgICAgICAgbWVtY3B5KFN0b3JhZ2VOZXctPnBpbmdDdGxPd25lckluZGV4LCB2cC0+dmFsLnN0cmluZywKQEAgLTQxODEsMTAgKzQyNDIsNyBAQAogICAgICAgICAgICAgU3RvcmFnZU5ldy0+cGluZ0N0bFJvd1N0YXR1cyA9IHNldF92YWx1ZTsKIAogCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogWFhYOiBmcmVlLCB6ZXJvIHZhcnMsIG5vIGxvbmdlciBuZWVkZWQ/IAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICAvKiBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsgKi8KKyAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOwogICAgICAgICB9CiAKIApAQCAtNDE5NSwxMiArNDI1MywxNyBAQAogCiAgICAgY2FzZSBGUkVFOgogICAgICAgICAvKgotICAgICAgICAgKiBYWFg6IGZyZWUsIHplcm8gdmFycyAKLSAgICAgICAgICovCi0KLSAgICAgICAgLyoKICAgICAgICAgICogUmVsZWFzZSBhbnkgcmVzb3VyY2VzIHRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCAKICAgICAgICAgICovCisKKyAgICAgICAgaWYgKHNldF92YWx1ZSA9PSBSU19ERVNUUk9ZICYmIFN0b3JhZ2VOZXcpCisgICAgICAgICAgICBmcmVlX3BpbmdDdGxUYWJsZV9kYXRhKFN0b3JhZ2VOZXcpOworICAgICAgICBTdG9yYWdlTmV3ID0gTlVMTDsKKworICAgICAgICBpZiAoU3RvcmFnZURlbCkgeworICAgICAgICAgICAgZnJlZV9waW5nQ3RsVGFibGVfZGF0YShTdG9yYWdlRGVsKTsKKyAgICAgICAgICAgIFN0b3JhZ2VEZWwgPSBOVUxMOworICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCiAKQEAgLTQyNzEsMTAgKzQzMzQsOCBAQAogICAgICAgICAgICAgICAgIGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkocGluZ0N0bFRhYmxlU3RvcmFnZSwgU3RvcmFnZU5ldyk7CiAgICAgICAgICAgICBTdG9yYWdlRGVsID0KICAgICAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9leHRyYWN0X2VudHJ5KCZwaW5nQ3RsVGFibGVTdG9yYWdlLCBoY2lwdHIpOwotCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogWFhYOiBmcmVlIGl0IAotICAgICAgICAgICAgICovCisgICAgICAgICAgICBmcmVlX3BpbmdDdGxUYWJsZV9kYXRhKFN0b3JhZ2VEZWwpOworICAgICAgICAgICAgU3RvcmFnZURlbCA9IE5VTEw7CiAgICAgICAgIH0gZWxzZSBpZiAoU3RvcmFnZURlbCAhPSBOVUxMKSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogcm93IGRlbGV0aW9uLCBzbyBhZGQgaXQgYWdhaW4gCkBAIC00MjgyLDYgKzQzNDMsNyBAQAogICAgICAgICAgICAgcGluZ0N0bFRhYmxlX2FkZChTdG9yYWdlRGVsKTsKICAgICAgICAgICAgIHBpbmdSZXN1bHRzVGFibGVfYWRkKFN0b3JhZ2VEZWwpOwogICAgICAgICAgICAgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2FkZGFsbChTdG9yYWdlRGVsKTsKKyAgICAgICAgICAgIFN0b3JhZ2VEZWwgPSBOVUxMOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgU3RvcmFnZVRtcC0+cGluZ0N0bFJvd1N0YXR1cyA9IG9sZF92YWx1ZTsKICAgICAgICAgfQpAQCAtNDMwMywzNyArNDM2NSw4IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoU3RvcmFnZURlbCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogaWYoc3RybGVuKFN0b3JhZ2VEZWwtPnBpbmdDdGxPd25lckluZGV4KSE9MCkKLSAgICAgICAgICAgICAqIFNOTVBfRlJFRShTdG9yYWdlRGVsLT5waW5nQ3RsT3duZXJJbmRleCk7Ci0gICAgICAgICAgICAgKiBwcmludGYoIkNPTU1JVDEgXG4iKTsKLSAgICAgICAgICAgICAqIGlmKHN0cmxlbihTdG9yYWdlRGVsLT5waW5nQ3RsVGVzdE5hbWUpIT0wKQotICAgICAgICAgICAgICogU05NUF9GUkVFKFN0b3JhZ2VEZWwtPnBpbmdDdGxUZXN0TmFtZSk7Ci0gICAgICAgICAgICAgKiBwcmludGYoIkNPTU1JVDIgXG4iKTsKLSAgICAgICAgICAgICAqIGlmKHN0cmxlbihTdG9yYWdlRGVsLT5waW5nQ3RsVGFyZ2V0QWRkcmVzcykhPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bFRhcmdldEFkZHJlc3MpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQzIFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bERhdGFGaWxsKSE9MCkKLSAgICAgICAgICAgICAqIFNOTVBfRlJFRShTdG9yYWdlRGVsLT5waW5nQ3RsRGF0YUZpbGwpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQ0IFxuIik7Ci0gICAgICAgICAgICAgKiBpZihzdHJsZW4oU3RvcmFnZURlbC0+cGluZ0N0bFRyYXBHZW5lcmF0aW9uKSE9MCkKLSAgICAgICAgICAgICAqIFNOTVBfRlJFRShTdG9yYWdlRGVsLT5waW5nQ3RsVHJhcEdlbmVyYXRpb24pOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQ1IFxuIik7Ci0gICAgICAgICAgICAgKiBpZihTdG9yYWdlRGVsLT5waW5nQ3RsVHlwZUxlbiE9MCkKLSAgICAgICAgICAgICAqIFNOTVBfRlJFRShTdG9yYWdlRGVsLT5waW5nQ3RsVHlwZSk7Ci0gICAgICAgICAgICAgKiBwcmludGYoIkNPTU1JVDYgXG4iKTsKLSAgICAgICAgICAgICAqIGlmKHN0cmxlbihTdG9yYWdlRGVsLT5waW5nQ3RsRGVzY3IpIT0wKQotICAgICAgICAgICAgICogU05NUF9GUkVFKFN0b3JhZ2VEZWwtPnBpbmdDdGxEZXNjcik7Ci0gICAgICAgICAgICAgKiBwcmludGYoIkNPTU1JVDcgXG4iKTsKLSAgICAgICAgICAgICAqIGlmKHN0cmxlbihTdG9yYWdlRGVsLT5waW5nQ3RsU291cmNlQWRkcmVzcykhPTApCi0gICAgICAgICAgICAgKiBTTk1QX0ZSRUUoU3RvcmFnZURlbC0+cGluZ0N0bFNvdXJjZUFkZHJlc3MpOwotICAgICAgICAgICAgICogcHJpbnRmKCJDT01NSVQ4IFxuIik7Ci0gICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGZyZWVfcGluZ0N0bFRhYmxlX2RhdGEoU3RvcmFnZURlbCk7CiAgICAgICAgICAgICBTdG9yYWdlRGVsID0gTlVMTDsKLSAgICAgICAgICAgIC8qIFN0b3JhZ2VEZWwgPSAwOyAqLwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFhYWDogZnJlZSBpdCwgaXRzIGRlYWQgCi0gICAgICAgICAgICAgKi8KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmIChTdG9yYWdlVG1wCiAgICAgICAgICAgICAgICAgJiYgU3RvcmFnZVRtcC0+cGluZ0N0bFJvd1N0YXR1cyA9PSBSU19DUkVBVEVBTkRHTykgewpAQCAtNDUwNiwxNCArNDUzOSwxMyBAQAogICAgICAqIENoZWNrIHRoYXQgcGFja2V0cyA8IHJhdGUqdGltZSArIHByZWxvYWQgCiAgICAgICovCiAgICAgaWYgKCgqY3VyX3RpbWUpLnR2X3NlYyA9PSAwKSB7Ci0KLSAgICAgICAgZ2V0dGltZW9mZGF5KGN1cl90aW1lLCBOVUxMKTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKGN1cl90aW1lKTsKICAgICAgICAgdG9rZW5zID0gaW50ZXJ2YWwgKiAocHJlbG9hZCAtIDEpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxvbmcgICAgICAgICAgICBudG9rZW5zOwogICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgdHY7CiAKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHYpOwogICAgICAgICBudG9rZW5zID0gKHR2LnR2X3NlYyAtICgqY3VyX3RpbWUpLnR2X3NlYykgKiAxMDAwICsKICAgICAgICAgICAgICh0di50dl91c2VjIC0gKCpjdXJfdGltZSkudHZfdXNlYykgLyAxMDAwOwogICAgICAgICBpZiAoIWludGVydmFsKSB7CkBAIC00NzM4LDcgKzQ3NzAsNyBAQAogCiAgICAgKmlkZW50ID0gZ2V0cGlkKCkgJiAweEZGRkY7CiAKLSAgICBnZXR0aW1lb2ZkYXkoc3RhcnRfdGltZSwgTlVMTCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKHN0YXJ0X3RpbWUpOwogCiAjaWYgMAogICAgIGlmICgqZGVhZGxpbmUpIHsKQEAgLTQ4MjIsMTEgKzQ4NTQsMTEgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChucGFja2V0cyAmJiBucmVjZWl2ZWQgPj0gbnBhY2tldHMpIHsKLSAgICAgICAgICAgIHByaW50ZigibnBhY2tldHMsbnJlY2VpdmVkPSVsZFxuIiwgbnJlY2VpdmVkKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAibnBhY2tldHMsbnJlY2VpdmVkPSVsZFxuIiwgbnJlY2VpdmVkKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVhZGxpbmUgJiYgbmVycm9ycykgewotICAgICAgICAgICAgcHJpbnRmKCJkZWFkbGluZVxuIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgImRlYWRsaW5lXG4iKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC00ODQxLDcgKzQ4NzMsNyBAQAogICAgICAgICAgKiBTZW5kIHByb2JlcyBzY2hlZHVsZWQgdG8gdGhpcyB0aW1lLiAKICAgICAgICAgICovCiAgICAgICAgIGRvIHsKLSAgICAgICAgICAgIHByaW50ZigicGluZ2VyXG4iKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAicGluZ2VyXG4iKSk7CiAgICAgICAgICAgICBuZXh0ID0KICAgICAgICAgICAgICAgICBwaW5nZXIoaWNtcF9zb2NrLCBwcmVsb2FkLCBjbXNnbGVuLCBjbXNnYnVmLCB3aGVyZXRvLAogICAgICAgICAgICAgICAgICAgICAgICAmcnR0X2FkZGVuZCwgdWlkLCBvcHRpb25zLCBpbnRlcnZhbCwgZGF0YWxlbiwKQEAgLTQ4NDksMTEgKzQ4ODEsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgZGVhZGxpbmUsICZhY2tlZCwgJm5wYWNrZXRzLCAmbnJlY2VpdmVkLAogICAgICAgICAgICAgICAgICAgICAgICAmbnRyYW5zbWl0dGVkLCAmbmVycm9ycywgJmNvbmZpcm1fZmxhZywgJmNvbmZpcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICZwaXBlc2l6ZSwgJmN1cl90aW1lKTsKLSAgICAgICAgICAgIHByaW50ZigiMTpuZXh0PSVkXG4iLCBuZXh0KTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiMTpuZXh0PSVkXG4iLCBuZXh0KSk7CiAgICAgICAgICAgICBuZXh0ID0KICAgICAgICAgICAgICAgICBzY2hlZHVsZV9leGl0KG5leHQsIGRlYWRsaW5lLCAmbnBhY2tldHMsICZucmVjZWl2ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbnRyYW5zbWl0dGVkLCAmdG1heCk7Ci0gICAgICAgICAgICBwcmludGYoIjI6bmV4dD0lZFxuIiwgbmV4dCk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIjI6bmV4dD0lZFxuIiwgbmV4dCkpOwogICAgICAgICB9IHdoaWxlIChuZXh0IDw9IDApOwogCiAgICAgICAgIC8qCkBAIC00OTQyLDggKzQ5NzQsNiBAQAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGluZ1Byb2JlSGlzdG9yeVRhYmxlX2RhdGEgKnRlbXAgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMgPSBOVUxMOwogCi0KLQogICAgICAgICAgICAgICAgICAgICBpZiAoc2VyaWVzID09IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9iZUZhaWxlZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgIGVsc2UKQEAgLTQ5NTEsMTMgKzQ5ODEsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VyaWVzID0gMTsKICAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCA9IHRlc3RGYWlsZWQgKyAxOwogCi0gICAgICAgICAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LCBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7ICAgICAvKiAgcGluZ0N0bE93bmVySW5kZXggICovCi0gICAgICAgICAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZSwgaXRlbS0+cGluZ0N0bFRlc3ROYW1lTGVuKTsgLyogIHBpbmdDdGxUZXN0TmFtZSAgKi8KKyAgICAgICAgICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsT3duZXJJbmRleExlbik7CisgICAgICAgICAgICAgICAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bFRlc3ROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7CiAKLQotICAgICAgICAgICAgICAgICAgICBpZiAoKFN0b3JhZ2VOZXcgPQotICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9jb21wbGV4X2dldChwaW5nUmVzdWx0c1RhYmxlU3RvcmFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFycykpID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIFN0b3JhZ2VOZXcgPSBoZWFkZXJfY29tcGxleF9nZXQocGluZ1Jlc3VsdHNUYWJsZVN0b3JhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFycyk7CisgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKHZhcnMpOworICAgICAgICAgICAgICAgICAgICBpZiAoIVN0b3JhZ2VOZXcpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgICAgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNTZW5kUHJvYmVzID0KQEAgLTUwNTIsNyArNTA4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIG5vdF9vdXJzID0gMTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByaW50ZigiY2M+PTAsZWxzZVxuIik7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJjYz49MCxlbHNlXG4iKSk7CiAjaWZkZWYgU09fVElNRVNUQU1QCiAgICAgICAgICAgICAgICAgZm9yIChjID0gQ01TR19GSVJTVEhEUigmbXNnKTsgYzsgYyA9IENNU0dfTlhUSERSKCZtc2csIGMpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjLT5jbXNnX2xldmVsICE9IFNPTF9TT0NLRVQgfHwKQEAgLTUwNjcsNyArNTEwMSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKChvcHRpb25zICYgRl9MQVRFTkNZKSB8fCByZWN2X3RpbWVwID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKChvcHRpb25zICYgRl9MQVRFTkNZKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgaW9jdGwoaWNtcF9zb2NrLCBTSU9DR1NUQU1QLCAmcmVjdl90aW1lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdldHRpbWVvZmRheSgmcmVjdl90aW1lLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmcmVjdl90aW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmVjdl90aW1lcCA9ICZyZWN2X3RpbWU7CiAgICAgICAgICAgICAgICAgfQogCkBAIC01MTY3LDE5ICs1MjAxLDE0IEBACiAgICAgICAgIHN0cnVjdCB0aW1ldmFsICB0bXBfdHY7CiAgICAgICAgIG1lbWNweSgmdG1wX3R2LCBwdHIsIHNpemVvZih0bXBfdHYpKTsKIAotICAgICAgcmVzdGFtcDoKICAgICAgICAgdHZzdWIodHYsICZ0bXBfdHYpOwogICAgICAgICB0cmlwdGltZSA9IHR2LT50dl9zZWMgKiAxMDAwMDAwICsgdHYtPnR2X3VzZWM7CiAgICAgICAgIGlmICh0cmlwdGltZSA8IDApIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogdGltZSBvZiBkYXkgZ29lcyBiYWNrICglbGR1cyksIHRha2luZyBjb3VudGVybWVhc3VyZXMuXG4iLAotICAgICAgICAgICAgICAgICAgICB0cmlwdGltZSk7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfSU5GTywKKyAgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiBpbnZhbGlkIHRpbWVzdGFtcCBpbiBJQ01QIHJlc3BvbnNlLlxuIik7CiAgICAgICAgICAgICB0cmlwdGltZSA9IDA7Ci0gICAgICAgICAgICBpZiAoIShvcHRpb25zICYgRl9MQVRFTkNZKSkgewotICAgICAgICAgICAgICAgIGdldHRpbWVvZmRheSh0diwgTlVMTCk7CisgICAgICAgICAgICBpZiAoIShvcHRpb25zICYgRl9MQVRFTkNZKSkKICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEZfTEFURU5DWTsKLSAgICAgICAgICAgICAgICBnb3RvIHJlc3RhbXA7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFjc2ZhaWxlZCkgewogICAgICAgICAgICAgKCp0c3VtKSArPSB0cmlwdGltZTsKQEAgLTUyMjEsMzIgKzUyNTAsMzQgQEAKICAgICB9IGVsc2UgewogICAgICAgICBpbnQgICAgICAgICAgICAgaTsKICAgICAgICAgX191OCAgICAgICAgICAgKmNwLCAqZHA7Ci0gICAgICAgIHByaW50ZigiJWQgYnl0ZXMgZnJvbSAlczogaWNtcF9zZXE9JXUiLCBjYywgZnJvbSwgc2VxKTsKKworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiVkIGJ5dGVzIGZyb20gJXM6IGljbXBfc2VxPSV1IiwgY2MsIGZyb20sCisgICAgICAgICAgICAgICAgICAgIHNlcSkpOwogCiAgICAgICAgIGlmIChob3BzID49IDApCi0gICAgICAgICAgICBwcmludGYoIiB0dGw9JWQiLCBob3BzKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiIHR0bD0lZCIsIGhvcHMpKTsKIAogICAgICAgICBpZiAoY2MgPCBkYXRhbGVuICsgOCkgewotICAgICAgICAgICAgcHJpbnRmKCIgKHRydW5jYXRlZClcbiIpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIgKHRydW5jYXRlZClcbiIpKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CiAgICAgICAgIGlmICh0aW1pbmcpIHsKICAgICAgICAgICAgIGlmICh0cmlwdGltZSA+PSAxMDAwMDApCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIgdGltZT0lbGQgbXMiLCB0cmlwdGltZSAvIDEwMDApOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiIHRpbWU9JWxkIG1zIiwgdHJpcHRpbWUgLyAxMDAwKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0cmlwdGltZSA+PSAxMDAwMCkKLSAgICAgICAgICAgICAgICBwcmludGYoIiB0aW1lPSVsZC4lMDFsZCBtcyIsIHRyaXB0aW1lIC8gMTAwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgKHRyaXB0aW1lICUgMTAwMCkgLyAxMDApOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiIHRpbWU9JWxkLiUwMWxkIG1zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlwdGltZSAvIDEwMDAsICh0cmlwdGltZSAlIDEwMDApIC8gMTAwKSk7CiAgICAgICAgICAgICBlbHNlIGlmICh0cmlwdGltZSA+PSAxMDAwKQotICAgICAgICAgICAgICAgIHByaW50ZigiIHRpbWU9JWxkLiUwMmxkIG1zIiwgdHJpcHRpbWUgLyAxMDAwLAotICAgICAgICAgICAgICAgICAgICAgICAodHJpcHRpbWUgJSAxMDAwKSAvIDEwKTsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiB0aW1lPSVsZC4lMDJsZCBtcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpcHRpbWUgLyAxMDAwLCAodHJpcHRpbWUgJSAxMDAwKSAvIDEwKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcHJpbnRmKCIgdGltZT0lbGQuJTAzbGQgbXMiLCB0cmlwdGltZSAvIDEwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgIHRyaXB0aW1lICUgMTAwMCk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIgdGltZT0lbGQuJTAzbGQgbXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaXB0aW1lIC8gMTAwMCwgdHJpcHRpbWUgJSAxMDAwKSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGR1cGZsYWcpCi0gICAgICAgICAgICBwcmludGYoIiAoRFVQISkiKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiIChEVVAhKSIpKTsKICAgICAgICAgaWYgKGNzZmFpbGVkKQotICAgICAgICAgICAgcHJpbnRmKCIgKEJBRCBDSEVDS1NVTSEpIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiAoQkFEIENIRUNLU1VNISkiKSk7CiAKICAgICAgICAgLyoKICAgICAgICAgICogY2hlY2sgdGhlIGRhdGEgCkBAIC01MjU1LDEzICs1Mjg2LDE0IEBACiAgICAgICAgIGRwID0gKHVfY2hhciAqKSZvdXRwYWNrWzggKyBzaXplb2Yoc3RydWN0IHRpbWV2YWwpXTsKICAgICAgICAgZm9yIChpID0gc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKTsgaSA8IGRhdGFsZW47ICsraSwgKytjcCwgKytkcCkgewogICAgICAgICAgICAgaWYgKCpjcCAhPSAqZHApIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIlxud3JvbmcgZGF0YSBieXRlICMlZCBzaG91bGQgYmUgMHgleCBidXQgd2FzIDB4JXgiLAotICAgICAgICAgICAgICAgICAgICAgICBpLCAqZHAsICpjcCk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxud3JvbmcgZGF0YSBieXRlICMlZCBzaG91bGQgYmUgMHgleCBidXQgd2FzIDB4JXgiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksICpkcCwgKmNwKSk7CiAgICAgICAgICAgICAgICAgY3AgPSAodV9jaGFyICopIHB0ciArIHNpemVvZihzdHJ1Y3QgdGltZXZhbCk7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKTsgaSA8IGRhdGFsZW47ICsraSwgKytjcCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoKGkgJSAzMikgPT0gc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiXG4jJWRcdCIsIGkpOwotICAgICAgICAgICAgICAgICAgICBwcmludGYoIiV4ICIsICpjcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIlxuIyVkXHQiLCBpKSk7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiJXggIiwgKmNwKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNTI2OSwxMiArNTMwMSwxNiBAQAogICAgIH0KIAogCi0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgaXRlbS0+cGluZ0N0bE93bmVySW5kZXgsIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4TGVuKTsgICAgIC8qICBwaW5nQ3RsT3duZXJJbmRleCAgKi8KLSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsIGl0ZW0tPnBpbmdDdGxUZXN0TmFtZUxlbik7IC8qICBwaW5nQ3RsVGVzdE5hbWUgICovCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0tPnBpbmdDdGxPd25lckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS0+cGluZ0N0bE93bmVySW5kZXhMZW4pOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLT5waW5nQ3RsVGVzdE5hbWVMZW4pOwogCi0KLSAgICBpZiAoKFN0b3JhZ2VOZXcgPQotICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKSkgPT0gTlVMTCkKKyAgICBTdG9yYWdlTmV3ID0gaGVhZGVyX2NvbXBsZXhfZ2V0KHBpbmdSZXN1bHRzVGFibGVTdG9yYWdlLCB2YXJzKTsKKyAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXJzKTsKKyAgICBpZiAoIVN0b3JhZ2VOZXcpCiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1NVQ0hOQU1FOwogCiAKQEAgLTUyODksNiArNTMyNSw3IEBACiAgICAgU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNSdHRTdW1PZlNxdWFyZXMgPSAqdHN1bTI7CiAKICAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c0xhc3RHb29kUHJvYmVfdGltZSA9IHRpbWVwOworICAgIGZyZWUoU3RvcmFnZU5ldy0+cGluZ1Jlc3VsdHNMYXN0R29vZFByb2JlKTsKICAgICBTdG9yYWdlTmV3LT5waW5nUmVzdWx0c0xhc3RHb29kUHJvYmUgPQogICAgICAgICBuZXRzbm1wX21lbWR1cChkYXRlX25fdGltZSgmdGltZXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZTdG9yYWdlTmV3LT5waW5nUmVzdWx0c0xhc3RHb29kUHJvYmVMZW4pLApAQCAtNTM5OSwyMCArNTQzNiwyMSBAQAogCiAgICAgcHV0Y2hhcignXG4nKTsKICAgICBmZmx1c2goc3Rkb3V0KTsKLSAgICBwcmludGYoIi0tLSAlcyBwaW5nIHN0YXRpc3RpY3MgLS0tXG4iLCBob3N0bmFtZSk7CisgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICItLS0gJXMgcGluZyBzdGF0aXN0aWNzIC0tLVxuIiwgaG9zdG5hbWUpKTsKIAogICAgIGlmICgqbnJlcGVhdHMpCi0gICAgICAgIHByaW50ZigiLCArJWxkIGR1cGxpY2F0ZXMiLCAqbnJlcGVhdHMpOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiwgKyVsZCBkdXBsaWNhdGVzIiwgKm5yZXBlYXRzKSk7CiAgICAgaWYgKCpuY2hlY2tzdW0pCi0gICAgICAgIHByaW50ZigiLCArJWxkIGNvcnJ1cHRlZCIsICpuY2hlY2tzdW0pOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiwgKyVsZCBjb3JydXB0ZWQiLCAqbmNoZWNrc3VtKSk7CiAgICAgaWYgKCpuZXJyb3JzKQotICAgICAgICBwcmludGYoIiwgKyVsZCBlcnJvcnMiLCAqbmVycm9ycyk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCArJWxkIGVycm9ycyIsICpuZXJyb3JzKSk7CiAgICAgaWYgKCpudHJhbnNtaXR0ZWQpIHsKLSAgICAgICAgcHJpbnRmKCIsICVkJSUgbG9zcyIsCi0gICAgICAgICAgICAgICAoaW50KSAoKCgobG9uZyBsb25nKSAoKCpudHJhbnNtaXR0ZWQpIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm5yZWNlaXZlZCkpKSAqIDEwMCkgLwotICAgICAgICAgICAgICAgICAgICAgICgqbnRyYW5zbWl0dGVkKSkpOwotICAgICAgICBwcmludGYoIiwgdGltZSAlbGRtcyIsIDEwMDAgKiB0di50dl9zZWMgKyB0di50dl91c2VjIC8gMTAwMCk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCAlZCUlIGxvc3MiLAorICAgICAgICAgICAgICAgICAgICAoaW50KSAoKCgobG9uZyBsb25nKSAoKCpudHJhbnNtaXR0ZWQpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqbnJlY2VpdmVkKSkpICogMTAwKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm50cmFuc21pdHRlZCkpKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiLCB0aW1lICVsZG1zIiwKKyAgICAgICAgICAgICAgICAgICAgMTAwMCAqIHR2LnR2X3NlYyArIHR2LnR2X3VzZWMgLyAxMDAwKSk7CiAgICAgfQogICAgIHB1dGNoYXIoJ1xuJyk7CiAKQEAgLTU0MjMsMjEgKzU0NjEsMjMgQEAKICAgICAgICAgKCp0c3VtMikgLz0gKCpucmVjZWl2ZWQpICsgKCpucmVwZWF0cyk7CiAgICAgICAgIHRtZGV2ID0gbGxzcXJ0KCgqdHN1bTIpIC0gKCp0c3VtKSAqICgqdHN1bSkpOwogCi0gICAgICAgIHByaW50ZgotICAgICAgICAgICAgKCJydHQgbWluL2F2Zy9tYXgvbWRldiA9ICVsZC4lMDNsZC8lbHUuJTAzbGQvJWxkLiUwM2xkLyVsZC4lMDNsZCBtcyIsCi0gICAgICAgICAgICAgKCp0bWluKSAvIDEwMDAsICgqdG1pbikgJSAxMDAwLAotICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSAoKCp0c3VtKSAvIDEwMDApLCAobG9uZykgKCgqdHN1bSkgJSAxMDAwKSwKLSAgICAgICAgICAgICAoKnRtYXgpIC8gMTAwMCwgKCp0bWF4KSAlIDEwMDAsIHRtZGV2IC8gMTAwMCwgdG1kZXYgJSAxMDAwKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJydHQgbWluL2F2Zy9tYXgvbWRldiA9ICVsZC4lMDNsZC8lbHUuJTAzbGQiCisgICAgICAgICAgICAgICAgICAgICIvJWxkLiUwM2xkLyVsZC4lMDNsZCBtcyIsCisgICAgICAgICAgICAgICAgICAgICgqdG1pbikgLyAxMDAwLCAoKnRtaW4pICUgMTAwMCwKKyAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpICgoKnRzdW0pIC8gMTAwMCksIChsb25nKSAoKCp0c3VtKSAlIDEwMDApLAorICAgICAgICAgICAgICAgICAgICAoKnRtYXgpIC8gMTAwMCwgKCp0bWF4KSAlIDEwMDAsIHRtZGV2IC8gMTAwMCwKKyAgICAgICAgICAgICAgICAgICAgdG1kZXYgJSAxMDAwKSk7CiAgICAgfQogICAgIGlmICgoKnBpcGVzaXplKSA+IDEpCi0gICAgICAgIHByaW50ZigiLCBwaXBlICVkIiwgKnBpcGVzaXplKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIsIHBpcGUgJWQiLCAqcGlwZXNpemUpKTsKICAgICBpZiAoKCpudHJhbnNtaXR0ZWQpID4gMQogICAgICAgICAmJiAoIWludGVydmFsIHx8IChvcHRpb25zICYgKEZfRkxPT0QgfCBGX0FEQVBUSVZFKSkpKSB7CiAgICAgICAgIGludCAgICAgICAgICAgICBpcGcgPQogICAgICAgICAgICAgKDEwMDAwMDAgKiAobG9uZyBsb25nKSB0di50dl9zZWMgKwogICAgICAgICAgICAgIHR2LnR2X3VzZWMpIC8gKCgqbnRyYW5zbWl0dGVkKSAtIDEpOwotICAgICAgICBwcmludGYoIiwgaXBnL2V3bWEgJWQuJTAzZC8lZC4lMDNkIG1zIiwgaXBnIC8gMTAwMCwgaXBnICUgMTAwMCwKLSAgICAgICAgICAgICAgICgqcnR0KSAvIDgwMDAsICgoKnJ0dCkgLyA4KSAlIDEwMDApOworICAgICAgICBERUJVR01TR1RMKCgicGluZ0N0bFRhYmxlIiwgIiwgaXBnL2V3bWEgJWQuJTAzZC8lZC4lMDNkIG1zIiwKKyAgICAgICAgICAgICAgICAgICAgaXBnIC8gMTAwMCwgaXBnICUgMTAwMCwKKyAgICAgICAgICAgICAgICAgICAgKCpydHQpIC8gODAwMCwgKCgqcnR0KSAvIDgpICUgMTAwMCkpOwogICAgIH0KICAgICBwdXRjaGFyKCdcbicpOwogICAgIHJldHVybjsKQEAgLTU0NjAsMTkgKzU1MDAsMTkgQEAKICAgICAgICAgICAgICgoKGxvbmcgbG9uZykgKCgqbnRyYW5zbWl0dGVkKSAtCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm5yZWNlaXZlZCkpKSAqIDEwMCkgLyAoKm50cmFuc21pdHRlZCk7CiAKLSAgICBmcHJpbnRmKHN0ZGVyciwgIlxyJWxkLyVsZCBwYWNrZXRzLCAlZCUlIGxvc3MiLCAqbnRyYW5zbWl0dGVkLAotICAgICAgICAgICAgKm5yZWNlaXZlZCwgbG9zcyk7CisgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJcbiVsZC8lbGQgcGFja2V0cywgJWQlJSBsb3NzIiwgKm50cmFuc21pdHRlZCwKKyAgICAgICAgICAgICAgICAqbnJlY2VpdmVkLCBsb3NzKSk7CiAKICAgICBpZiAoKCpucmVjZWl2ZWQpICYmIHRpbWluZykgewogICAgICAgICB0YXZnID0gKCp0c3VtKSAvICgoKm5yZWNlaXZlZCkgKyAoKm5yZXBlYXRzKSk7CiAKLSAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAgICAgIiwgbWluL2F2Zy9ld21hL21heCA9ICVsZC4lMDNsZC8lbHUuJTAzbGQvJWQuJTAzZC8lbGQuJTAzbGQgbXMiLAotICAgICAgICAgICAgICAgICgqdG1pbikgLyAxMDAwLCAoKnRtaW4pICUgMTAwMCwgdGF2ZyAvIDEwMDAsIHRhdmcgJSAxMDAwLAotICAgICAgICAgICAgICAgICgqcnR0KSAvIDgwMDAsICgoKnJ0dCkgLyA4KSAlIDEwMDAsICgqdG1heCkgLyAxMDAwLAotICAgICAgICAgICAgICAgICgqdG1heCkgJSAxMDAwKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICIsIG1pbi9hdmcvZXdtYS9tYXggPSAlbGQuJTAzbGQvJWx1LiUwM2xkIgorICAgICAgICAgICAgICAgICAgICAiLyVkLiUwM2QvJWxkLiUwM2xkIG1zIiwKKyAgICAgICAgICAgICAgICAgICAgKCp0bWluKSAvIDEwMDAsICgqdG1pbikgJSAxMDAwLCB0YXZnIC8gMTAwMCwgdGF2ZyAlIDEwMDAsCisgICAgICAgICAgICAgICAgICAgICgqcnR0KSAvIDgwMDAsICgoKnJ0dCkgLyA4KSAlIDEwMDAsICgqdG1heCkgLyAxMDAwLAorICAgICAgICAgICAgICAgICAgICAoKnRtYXgpICUgMTAwMCkpOwogICAgIH0KLSAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJcbiIpKTsKIH0KIAogCkBAIC01NTMwLDEyICs1NTcwLDEwIEBACiAgICAgICAgIGlmIChvcHRpb25zICYgRl9GTE9PRCkKICAgICAgICAgICAgIHdyaXRlKFNURE9VVF9GSUxFTk8sICJFIiwgMSk7CiAgICAgICAgIGVsc2UgaWYgKGUtPmVlX2Vycm5vICE9IEVNU0dTSVpFKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJwaW5nOiBsb2NhbCBlcnJvcjogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGUtPmVlX2Vycm5vKSk7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAicGluZzogbG9jYWwgZXJyb3I6ICVzXG4iLCBzdHJlcnJvcihlLT5lZV9lcnJubykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgInBpbmc6IGxvY2FsIGVycm9yOiBNZXNzYWdlIHRvbyBsb25nLCBtdHU9JXVcbiIsCi0gICAgICAgICAgICAgICAgICAgIGUtPmVlX2luZm8pOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInBpbmc6IGxvY2FsIGVycm9yOiBNZXNzYWdlIHRvbyBsb25nLCBtdHU9JXVcbiIsCisgICAgICAgICAgICAgICAgICAgICBlLT5lZV9pbmZvKTsKICAgICAgICAgKCpuZXJyb3JzKSsrOwogICAgIH0gZWxzZSBpZiAoZS0+ZWVfb3JpZ2luID09IFNPX0VFX09SSUdJTl9JQ01QNikgewogICAgICAgICBpZiAocmVzIDwgc2l6ZW9mKGljbXBoKSB8fApAQCAtNTY1Nyw3ICs1Njk1LDcgQEAKICAgICBpY21waCA9IChzdHJ1Y3QgaWNtcDZfaGRyICopIGJ1ZjsKICAgICBpZiAoY2MgPCA4KSB7CiAgICAgICAgIGlmIChvcHRpb25zICYgRl9WRVJCT1NFKQotICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJwaW5nOiBwYWNrZXQgdG9vIHNob3J0ICglZCBieXRlcylcbiIsIGNjKTsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJwaW5nOiBwYWNrZXQgdG9vIHNob3J0ICglZCBieXRlcylcbiIsIGNjKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogICAgIGlmIChpY21waC0+aWNtcDZfdHlwZSA9PSBJQ01QNl9FQ0hPX1JFUExZKSB7CkBAIC01NzEwLDE2ICs1NzQ4LDE3IEBACiAgICAgICAgICAgICAgICAgd3JpdGUoU1RET1VUX0ZJTEVOTywgIlxiRSIsIDIpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJpbnRmKCJGcm9tICVzOiBpY21wX3NlcT0ldSAiLAotICAgICAgICAgICAgICAgICAgIHByX2FkZHIoJmZyb20tPnNpbjZfYWRkciwgb3B0aW9ucyksCi0gICAgICAgICAgICAgICAgICAgaWNtcGgxLT5pY21wNl9zZXEpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInBpbmdDdGxUYWJsZSIsICJGcm9tICVzOiBpY21wX3NlcT0ldSAiLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJfYWRkcigmZnJvbS0+c2luNl9hZGRyLCBvcHRpb25zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGljbXBoMS0+aWNtcDZfc2VxKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogV2UndmUgZ290IHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIEVDSE9SRVBMWSAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKCEob3B0aW9ucyAmIEZfVkVSQk9TRSkgfHwgdWlkKQogICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgcHJpbnRmKCJGcm9tICVzOiAiLCBwcl9hZGRyKCZmcm9tLT5zaW42X2FkZHIsIG9wdGlvbnMpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwaW5nQ3RsVGFibGUiLCAiRnJvbSAlczogIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByX2FkZHIoJmZyb20tPnNpbjZfYWRkciwgb3B0aW9ucykpKTsKICAgICAgICAgfQogICAgICAgICAvKiBwcl9pY21waChpY21waC0+aWNtcDZfdHlwZSwgaWNtcGgtPmljbXA2X2NvZGUsIG50b2hsKGljbXBoLT5pY21wNl9tdHUpKTsgKi8KICAgICB9CkBAIC01Nzg0LDggKzU4MjMsOCBAQAogICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7CiAKICAgICBpZiAoIShvcHRpb25zICYgRl9OVU1FUklDKSkKLSAgICAgICAgaHAgPSBnZXRob3N0YnlhZGRyKChfX3U4ICopIGFkZHIsIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgQUZfSU5FVDYpOworICAgICAgICBocCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigoX191OCAqKSBhZGRyLCBzaXplb2Yoc3RydWN0IGluNl9hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUZfSU5FVDYpOwogCiAgICAgcmV0dXJuIGhwID8gaHAtPmhfbmFtZSA6IHByX2FkZHJfbihhZGRyKTsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgKaW5kZXggZWE4ZGEzMS4uY2E2OWQxMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmgKQEAgLTIwNiw2ICsyMDYsNyBAQAogICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAogICovCiB2b2lkICAgICAgICAgICAgaW5pdF9waW5nQ3RsVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fcGluZ0N0bFRhYmxlKHZvaWQpOwogRmluZFZhck1ldGhvZCAgIHZhcl9waW5nQ3RsVGFibGU7CiB2b2lkICAgICAgICAgICAgcGFyc2VfcGluZ0N0bFRhYmxlKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKIFNOTVBDYWxsYmFjayAgICBzdG9yZV9waW5nQ3RsVGFibGU7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmMKaW5kZXggNGZiOTg1MC4uMGNiZGJjNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuYwpAQCAtNCwxMiArNCwxNiBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgImRpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuaCIKICNpbmNsdWRlICJkaXNtYW4vc2NoZWR1bGUvc2NoZWRDb25mLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHN0cmluZ190aW1lX3RvX3NlY3MpCisKIHN0YXRpYyBpbnQgc2NoZWRFbnRyaWVzOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIHNjaGVkQ29uZiBtb2R1bGUgKi8KQEAgLTUxLDcgKzU1LDcgQEAKIHsKICAgICBuZXRzbm1wX3RkYXRhX3JvdyAgICAgICAqcm93OwogICAgIHN0cnVjdCBzY2hlZFRhYmxlX2VudHJ5ICplbnRyeTsKLSAgICBjaGFyICAgYnVmWzI0XTsKKyAgICBjaGFyICAgYnVmWzI0XSwgdG1wYnVmW1NQUklOVF9NQVhfTEVOXTsKICAgICBsb25nICAgZnJlcXVlbmN5OwogICAgIGxvbmcgICB2YWx1ZTsKICAgICBzaXplX3QgdG1waW50OwpAQCAtNjUsNyArNjksMTMgQEAKICAgICAvKgogICAgICAqICBQYXJzZSB0aGUgY29uZmlndXJlIGRpcmVjdGl2ZSBsaW5lCiAgICAgICovCi0gICAgbGluZSA9IHJlYWRfY29uZmlnX3JlYWRfZGF0YShBU05fSU5URUdFUiwgICBsaW5lLCAmZnJlcXVlbmN5LCAmdG1waW50KTsKKyAgICBsaW5lID0gY29weV9ud29yZChsaW5lLCB0bXBidWYsIHNpemVvZih0bXBidWYpKTsKKyAgICBmcmVxdWVuY3kgPSBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3ModG1wYnVmKTsKKyAgICBpZiAoZnJlcXVlbmN5ID09IC0xKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoIklsbGVnYWwgZnJlcXVlbmN5IHNwZWNpZmllZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgbGluZSA9IHJlYWRfY29uZmlnX3JlYWRfZGF0YShBU05fT0JKRUNUX0lELCBsaW5lLCAmdmFyX3B0ciwgICAmdmFyX2xlbik7CiAgICAgaWYgKHZhcl9sZW4gPT0gMCkgewogICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIHNwZWNpZmljYXRpb24gZm9yIHNjaGVkVmFyaWFibGUiKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYwppbmRleCBjOTE0NzY5Li5jM2RiMzRmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jCkBAIC00LDExICs0LDE2IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgImRpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuaCIKICNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlxdWVyeSkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNjaGVkX25leHRyb3d0aW1lLCBuZXRzbm1wX3VudXNlZCkKKwogbmV0c25tcF90ZGF0YSAqc2NoZWR1bGVfdGFibGU7CiAKIApAQCAtMjk3LDE1ICszMDIsMTQgQEAKICAgICAgICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuID0gbm93ICsgZW50cnktPnNjaGVkSW50ZXJ2YWw7CiAgICAgICAgIH0KICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTp0aW1lIiwgInBlcmlvZGljOiAoJWxkKSAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnNjaGVkTmV4dFJ1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0aW1lKCZlbnRyeS0+c2NoZWROZXh0UnVuKSkpOworICAgICAgICAgICAgICAgICAgICAobG9uZykgZW50cnktPnNjaGVkTmV4dFJ1biwgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTQ0hFRF9UWVBFX09ORVNIT1Q6CiAgICAgICAgIGlmICggZW50cnktPnNjaGVkTGFzdFJ1biApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6dGltZSIsICJvbmUtc2hvdDogZXhwaXJlZCAoJWxkKSAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnNjaGVkTmV4dFJ1biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0aW1lKCZlbnRyeS0+c2NoZWROZXh0UnVuKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgKGxvbmcpIGVudHJ5LT5zY2hlZE5leHRSdW4sCisgICAgICAgICAgICAgICAgICAgICAgICBjdGltZSgmZW50cnktPnNjaGVkTmV4dFJ1bikpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvKiBGYWxsdGhyb3VnaCAqLwpAQCAtMzQyLDggKzM0Niw4IEBACiAgICAgICAgICAqICAgIHRoZSBmaXJzdCBzcGVjaWZpZWQgZGF5IChpbiB0aGF0IG1vbnRoKQogICAgICAgICAgKi8KIAotICAgICAgICBsb2NhbHRpbWVfciggJm5vdywgJm5vd190bSApOwotICAgICAgICBsb2NhbHRpbWVfciggJm5vdywgJm5leHRfdG0gKTsKKyAgICAgICAgKHZvaWQpIGxvY2FsdGltZV9yKCAmbm93LCAmbm93X3RtICk7CisgICAgICAgICh2b2lkKSBsb2NhbHRpbWVfciggJm5vdywgJm5leHRfdG0gKTsKIAogICAgICAgICBuZXh0X3RtLnRtX21vbj0tMTsKICAgICAgICAgbmV4dF90bS50bV9tZGF5PS0xOwpAQCAtNDIwLDggKzQyNCw3IEBACiAgICAgICAgICAqLwogICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuID0gbWt0aW1lKCAmbmV4dF90bSApOwogICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOnRpbWUiLCAiY2FsZW5kYXI6ICglbGQpICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CisgICAgICAgICAgICAgICAgICAgIChsb25nKSBlbnRyeS0+c2NoZWROZXh0UnVuLCBjdGltZSgmZW50cnktPnNjaGVkTmV4dFJ1bikpKTsKICAgICAgICAgcmV0dXJuOwogCiAgICAgZGVmYXVsdDoKQEAgLTQzNSwxMSArNDM4LDEzIEBACiAgICAgcmV0dXJuOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0NIRURfTkVYVFJPV1RJTUUKIHZvaWQKIHNjaGVkX25leHRSb3dUaW1lKCBuZXRzbm1wX3RkYXRhX3JvdyAqcm93ICkKIHsKICAgICBzY2hlZF9uZXh0VGltZSgoc3RydWN0IHNjaGVkVGFibGVfZW50cnkgKikgcm93LT5kYXRhICk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TQ0hFRF9ORVhUUk9XVElNRSAqLwogCiAvKgogICogY3JlYXRlIGEgbmV3IHJvdyBpbiB0aGUgdGFibGUgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuYwppbmRleCBkODg2M2ZkLi5iYmE0OGZkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmMKQEAgLTcsMTIgKzcsMjcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAidXRpbGl0aWVzL2lxdWVyeS5oIgogI2luY2x1ZGUgImRpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuaCIKICNpbmNsdWRlICJkaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcXVlcnlfcGR1X3Nlc3Npb24pCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRhdGVfbl90aW1lKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdWludCkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX29pZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKwogLyoqIEluaXRpYWxpemVzIHRoZSBzY2hlZFRhYmxlIG1vZHVsZSAqLwogdm9pZAogaW5pdF9zY2hlZFRhYmxlKHZvaWQpCkBAIC0yMCw3ICszNSw2IEBACiAgICAgc3RhdGljIG9pZCAgICAgIHNjaGVkVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDYzLCAxLCAyIH07CiAgICAgc2l6ZV90ICAgICAgICAgIHNjaGVkVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgoc2NoZWRUYWJsZV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTppbml0IiwgIkluaXRpYWxpemluZyB0YWJsZVxuIikpOwogICAgIC8qCkBAIC00OCw2ICs2MiwxNCBAQAogICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCBzY2hlZHVsZV90YWJsZSwgdGFibGVfaW5mbyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3NjaGVkVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9Cit9CiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc2NoZWRUYWJsZSB0YWJsZSAqLwogaW50CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAppbmRleCBlZmQxZjJlLi41MjAzM2JhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZFRhYmxlLmgKQEAgLTgsNiArOCw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X3NjaGVkVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2NoZWRUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjaGVkVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMKaW5kZXggNDZmZTk3ZC4uYjkyNWM1ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMKQEAgLTE4LDEwICsxOCwxNSBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8cHRocmVhZC5oPgogI2luY2x1ZGUgPG1hdGguaD4KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICNpbmNsdWRlICJ0cmFjZVJvdXRlQ3RsVGFibGUuaCIKICNpbmNsdWRlICJ0cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmgiCiAjaW5jbHVkZSAidHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLmgiCkBAIC0xNjk1LDggKzE3MDAsNiBAQAogICAgICAgICAgKiBCYWNrIG91dCBhbnkgY2hhbmdlcyBtYWRlIGluIHRoZSBBQ1RJT04gY2FzZSAKICAgICAgICAgICovCiAgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVGFyZ2V0QWRkcmVzcyk7Ci0gICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzID0gTlVMTDsKLQogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVGFyZ2V0QWRkcmVzcyA9IHRtcHZhcjsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFRhcmdldEFkZHJlc3NMZW4gPSB0bXBsZW47CiAgICAgICAgIGJyZWFrOwpAQCAtMjQ2OSw3ICsyNDcyLDYgQEAKICAgICAgICAgICogQmFjayBvdXQgYW55IGNoYW5nZXMgbWFkZSBpbiB0aGUgQUNUSU9OIGNhc2UgCiAgICAgICAgICAqLwogICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFNvdXJjZUFkZHJlc3MpOwotICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsU291cmNlQWRkcmVzcyA9IE5VTEw7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxTb3VyY2VBZGRyZXNzID0gdG1wdmFyOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsU291cmNlQWRkcmVzc0xlbiA9IHRtcGxlbjsKICAgICAgICAgYnJlYWs7CkBAIC0yNjUxLDcgKzI2NTMsNiBAQAogICAgICAgICAgKiBCYWNrIG91dCBhbnkgY2hhbmdlcyBtYWRlIGluIHRoZSBBQ1RJT04gY2FzZSAKICAgICAgICAgICovCiAgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsTWlzY09wdGlvbnMpOwotICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsTWlzY09wdGlvbnMgPSBOVUxMOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsTWlzY09wdGlvbnMgPSB0bXB2YXI7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxNaXNjT3B0aW9uc0xlbiA9IHRtcGxlbjsKICAgICAgICAgYnJlYWs7CkBAIC0zMzAxLDcgKzMzMDIsNiBAQAogICAgICAgICAgKiBCYWNrIG91dCBhbnkgY2hhbmdlcyBtYWRlIGluIHRoZSBBQ1RJT04gY2FzZSAKICAgICAgICAgICovCiAgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsRGVzY3IpOwotICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsRGVzY3IgPSBOVUxMOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsRGVzY3IgPSB0bXB2YXI7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxEZXNjckxlbiA9IHRtcGxlbjsKICAgICAgICAgYnJlYWs7CkBAIC0zNDg0LDcgKzM0ODQsNiBAQAogICAgICAgICAgKiBCYWNrIG91dCBhbnkgY2hhbmdlcyBtYWRlIGluIHRoZSBBQ1RJT04gY2FzZSAKICAgICAgICAgICovCiAgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVHJhcEdlbmVyYXRpb24pOwotICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVHJhcEdlbmVyYXRpb24gPSBOVUxMOwogICAgICAgICBTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVHJhcEdlbmVyYXRpb24gPSB0bXB2YXI7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUcmFwR2VuZXJhdGlvbkxlbiA9IHRtcGxlbjsKICAgICAgICAgYnJlYWs7CkBAIC0zNjYwLDcgKzM2NTksNiBAQAogICAgICAgICAgKiBCYWNrIG91dCBhbnkgY2hhbmdlcyBtYWRlIGluIHRoZSBBQ1RJT04gY2FzZSAKICAgICAgICAgICovCiAgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT50cmFjZVJvdXRlQ3RsVHlwZSk7Ci0gICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUeXBlID0gTlVMTDsKICAgICAgICAgU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZUN0bFR5cGUgPSB0bXB2YXI7CiAgICAgICAgIFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVDdGxUeXBlTGVuID0gdG1wbGVuOwogICAgICAgICBicmVhazsKQEAgLTU5ODEsNyArNTk3OSw3IEBACiAgICAgICAgIHJldHVybiAoaGkpOwogICAgIH0KIAotICAgIGhwID0gZ2V0aG9zdGJ5bmFtZShob3N0bmFtZSk7CisgICAgaHAgPSBuZXRzbm1wX2dldGhvc3RieW5hbWUoaG9zdG5hbWUpOwogICAgIGlmIChocCA9PSBOVUxMKSB7CiAgICAgICAgIEZwcmludGYoc3RkZXJyLCAiJXM6IHVua25vd24gaG9zdCAlc1xuIiwgInRyYWNlcm91dGUiLCBob3N0bmFtZSk7CiAgICAgICAgIHByaW50ZigiaHA9TlVMTFxuIik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmMKaW5kZXggMTllNzNiNi4uYWJhNmNmMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYwpAQCAtMTgsNiArMTgsOCBAQAogCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2VuZGlmCkBAIC00MCw2ICs0Miw4IEBACiAjaW5jbHVkZSAidHJhY2VSb3V0ZUhvcHNUYWJsZS5oIgogI2luY2x1ZGUgImhlYWRlcl9jb21wbGV4LmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFzZXQpCisKIC8qCiAgKnRyYWNlUm91dGVSZXN1bHRzVGFibGVfdmFyaWFibGVzX29pZDoKICAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYwppbmRleCBlZjgzNDUwLi42ZWI2OWY3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMKQEAgLTM5LDcgKzM5LDggQEAKICAgICBmb3IgKHAgPSBhZGRyczsgcDsgcCA9IHAtPmlmYV9uZXh0KSB7CiAKICAgICAgICAgaWYgKCFsaXN0X2hlYWQpIHsKLSAgICAgICAgICAgIGlmICggKGxpc3RfaGVhZCA9IChzdHJ1Y3QgaWZuYW1lICopIG1hbGxvYyAoc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKSkgPCAwKSB7CisgICAgICAgICAgICBsaXN0X2hlYWQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKTsKKyAgICAgICAgICAgIGlmICghbGlzdF9oZWFkKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmRvdDNTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwpAQCAtNTksNyArNjAsOCBAQAogICAgICAgICBpZiAobmFtZXB0cjEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIChuYW1lcHRyMi0+aWZuX25leHQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICBuYW1lcHRyMi0+aWZuX25leHQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKTsKKyAgICAgICAgaWYgKCFuYW1lcHRyMi0+aWZuX25leHQpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggNTQxNDAwMS4uNzRmMzNiZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMjExLDcgKzIxMSw2IEBACiBpbnQKIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQogewotICAgIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CiAgICAgc2l6ZV90ICAgICAgICAgIGNvdW50ID0gMDsKICAgICBpbnQgICAgICAgICAgICAgZmQ7CiAjaWYgZGVmaW5lZChsaW51eCkKQEAgLTI2OSw2ICsyNjgsOCBAQAogICAgICAqLwogCiAgICAgZm9yIChwID0gbGlzdF9oZWFkOyBwOyBwID0gcC0+aWZuX25leHQpIHsKKyAgICAgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKwogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgInByb2Nlc3NpbmcgJyVzJ1xuIiwgcC0+bmFtZSkpOwogCiAgICAgICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwppbmRleCA3NDM0MjRhLi5lMDc0MWYzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMxLDYgKzMxLDcgQEAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAvKgpAQCAtNDYsNiArNDcsMTAgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuYyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmMKaW5kZXggZGFlZDhmMy4uY2M2YTA0YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuYworKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5jCkBAIC02NSw4ICs2NSwxOCBAQAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3cpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh1bnJlZ2lzdGVyX2F1dG9fZGF0YV90YWJsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRlbGV0ZV90YWJsZV9kYXRhX3NldCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFzZXQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YXNldF91bnJlZ2lzdGVyX2F1dG9fZGF0YV90YWJsZSkKKworc3RhdGljIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldDsKKwogLyoKICAqIG91ciBpbml0aWFsaXphdGlvbiByb3V0aW5lLCBhdXRvbWF0aWNhbGx5IGNhbGxlZCBieSB0aGUgYWdlbnQgCiAgKi8KQEAgLTc2LDcgKzg2LDYgQEAKIHZvaWQKIGluaXRfZGF0YV9zZXQodm9pZCkKIHsKLSAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQ7CiAgICAgbmV0c25tcF90YWJsZV9yb3cgKnJvdzsKIAogICAgIC8qCkBAIC0yMDQsMyArMjEzLDExIEBACiAKICAgICBERUJVR01TR1RMKCgiZXhhbXBsZV9kYXRhX3NldCIsICJEb25lIGluaXRpYWxpemluZy5cbiIpKTsKIH0KKwordm9pZAorc2h1dGRvd25fZGF0YV9zZXQodm9pZCkKK3sKKyAgICBuZXRzbm1wX3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKHRhYmxlX3NldCwgTlVMTCk7CisgICAgbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQodGFibGVfc2V0KTsKKyAgICB0YWJsZV9zZXQgPSBOVUxMOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaCBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmgKaW5kZXggZTU2ZjYwMC4uYzljZjhiMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaAorKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oCkBAIC02LDYgKzYsNyBAQAogI2VuZGlmCiAKIHZvaWQgICAgICAgICAgICBpbml0X2RhdGFfc2V0KHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX2RhdGFfc2V0KHZvaWQpOwogCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5jIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5jCmluZGV4IDgzM2E0ZjcuLjVkNTQ1NjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuYworKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmMKQEAgLTE3Miw2ICsxNzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRlbGF5X3RpbWUpKTsKICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgLyoKICAgICAgICAgICogY2hlY2sgdHlwZSAKQEAgLTI0Niw2ICsyNDcsNyBAQAogICAgICAgICAgKiB3ZSBkb24ndCBoYXZlIGFueXRoaW5nIHRvIGFjdHVhbGx5IGRvIGhlcmUgCiAgICAgICAgICAqLwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMKaW5kZXggYjY5MWE3Zi4uOGVhMmQwMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jCkBAIC00LDEyICs0LDE3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIm5ldFNubXBIb3N0c1RhYmxlLmgiCiAjaW5jbHVkZSAibmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuaCIKICNpbmNsdWRlICJuZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2dldF9kYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUob2lkX3N0YXNoX2FkZF9kYXRhKQorCiBzdGF0aWMgbmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqdW5kb1N0b3JhZ2UgPSBOVUxMOwogc3RhdGljIG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKmNvbW1pdFN0b3JhZ2UgPSBOVUxMOwogCkBAIC05Miw3ICs5Nyw3IEBACiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoImluaXRpYWxpemVfdGFibGVfbmV0U25tcEhvc3RzVGFibGUiLAogICAgICAgICAgICAgICAgICJSZWdpc3RlcmluZyB0YWJsZSBuZXRTbm1wSG9zdHNUYWJsZSBhcyBhIHRhYmxlIGl0ZXJhdG9yXG4iKSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihteV9oYW5kbGVyLCBpaW5mbyk7CisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIobXlfaGFuZGxlciwgaWluZm8pOwogfQogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIG5ldFNubXBIb3N0c1RhYmxlIG1vZHVsZSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmMKaW5kZXggNGNiOTMzOS4uMjVhNzMzMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuYworKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5jCkBAIC0xNCwxMSArMTQsMTQgQEAKICAqIHN0YW5kYXJkIGhlYWRlcnMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMuaCIKICNpbmNsdWRlICJuZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5oIgogI2luY2x1ZGUgIm5ldFNubXBIb3N0c1RhYmxlX2VudW1zLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3N0b3JhZ2VfdHJhbnNpdGlvbikKKwogLyoqIERlY2lkZXMgaWYgYW4gaW5jb21pbmcgdmFsdWUgZm9yIHRoZSBuZXRTbm1wSG9zdEFkZHJlc3NUeXBlIG1pYiBub2RlIGlzIGxlZ2FsLgogICogIEBwYXJhbSB0eXBlICAgIFRoZSBpbmNvbWluZyBkYXRhIHR5cGUuCiAgKiAgQHBhcmFtIHZhbCAgICAgVGhlIHZhbHVlIHRvIGJlIGNoZWNrZWQuCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmMgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmMKaW5kZXggNDM4MGZjZS4uZGI0ZDI5NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuYwpAQCAtMjMsMTMgKzIzLDIwIEBACiAgKiBzdGFydCBiZSBpbmNsdWRpbmcgdGhlIGFwcHJvcHJpYXRlIGhlYWRlciBmaWxlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAvKgorICogaWYgLS1lbmFibGUtbWluaW1hbGlzdCBoYXMgYmVlbiB0dXJuZWQgb24sIHdlIG5lZWQgdG8gcmVnaXN0ZXIKKyAqIHRoZSBzdXBwb3J0IHdlIG5lZWQgc28gdGhlIG5lZWRlZCBmdW5jdGlvbnMgYXJlbid0IHJlbW92ZWQgYXQgY29tcGlsZSB0aW1lCisgKi8KK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGxvbmdfaW5zdGFuY2UpCisKKy8qCiAgKiBUaGVuLCB3ZSBkZWNsYXJlIHRoZSB2YXJpYWJsZXMgd2Ugd2FudCB0byBiZSBhY2Nlc3NlZCAKICAqLwotc3RhdGljIGxvbmcgICAgICBleGFtcGxlMSA9IDQyOyAgLyogZGVmYXVsdCB2YWx1ZSAqLworc3RhdGljIGxvbmcgICAgIGV4YW1wbGUxID0gNDI7ICAvKiBkZWZhdWx0IHZhbHVlICovCiAKIC8qCiAgKiBvdXIgaW5pdGlhbGl6YXRpb24gcm91dGluZSwgYXV0b21hdGljYWxseSBjYWxsZWQgYnkgdGhlIGFnZW50IApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jCmluZGV4IDJiNjg2OGUuLjI3NzIwMDEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmMKQEAgLTEsOCArMSwxNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2NwdS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGFyZHdhcmVfY3B1LCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhhcmR3YXJlX2NwdV9jb3B5X3N0YXRzLCBoYXJkd2FyZV9jcHUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGFyZHdhcmVfY3B1X2xvYWQsIGhhcmR3YXJlX2NwdSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihoYXJkd2FyZV9jcHVfZ2V0X2NhY2hlLCBoYXJkd2FyZV9jcHUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGFyZHdhcmVfY3B1X2dldF9ieU5hbWUsIGhhcmR3YXJlX2NwdSkKKwogZXh0ZXJuIE5ldHNubXBDYWNoZUxvYWQgbmV0c25tcF9jcHVfYXJjaF9sb2FkOwogc3RhdGljIHZvaWQgX2NwdV91cGRhdGVfc3RhdHMoIHVuc2lnbmVkIGludCwgdm9pZCogKTsKIApAQCAtMTA3LDE0ICsxMTUsMTQgQEAKICAgICAgICAgICAgIHJldHVybiBjcHU7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGNwdSkKLSAgICAgICAgU05NUF9GUkVFKGNwdSk7IC8qIGp1c3QgaW4gY2FzZSAqLworICAgIFNOTVBfRlJFRShjcHUpOyAvKiBqdXN0IGluIGNhc2UgKi8KICAgICByZXR1cm4gTlVMTDsgIC8qIFNob3VsZG4ndCBoYXBwZW4hICovCiB9CiAKICAgICAvKgogICAgICAqIFdvcmsgd2l0aCBhIGxpc3Qgb2YgQ1BVIGVudHJpZXMsIGluZGV4ZWQgYnkgbmFtZQogICAgICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hBUkRXQVJFX0NQVV9HRVRfQllOQU1FCiBuZXRzbm1wX2NwdV9pbmZvICpuZXRzbm1wX2NwdV9nZXRfYnlOYW1lKCBjaGFyICpuYW1lLCBpbnQgY3JlYXRlICkgewogICAgIG5ldHNubXBfY3B1X2luZm8gKmNwdTsKIApAQCAtMTUyLDExICsxNjAsMTUgQEAKICAgICB9CiAgICAgcmV0dXJuIGNwdTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hBUkRXQVJFX0NQVV9HRVRfQllOQU1FICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQVJEV0FSRV9DUFVfR0VUX0NBQ0hFCiBuZXRzbm1wX2NhY2hlICpuZXRzbm1wX2NwdV9nZXRfY2FjaGUoIHZvaWQgKSB7CiAgICAgcmV0dXJuIF9jcHVfY2FjaGU7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQVJEV0FSRV9DUFVfR0VUX0NBQ0hFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQVJEV0FSRV9DUFVfTE9BRAogaW50IG5ldHNubXBfY3B1X2xvYWQoIHZvaWQgKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIElmIHdlJ3JlIGF1dG9tYXRpY2FsbHkgdXBkYXRpbmcgdGhlIHN0YXRzIHJlZ3VsYXJseSwKQEAgLTE2NSw2ICsxNzcsNyBAQAogICAgIHJldHVybiAoIF9jcHVBdXRvVXBkYXRlID8gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbmV0c25tcF9jYWNoZV9jaGVja19hbmRfcmVsb2FkKCBfY3B1X2NhY2hlICkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEFSRFdBUkVfQ1BVX0xPQUQgKi8KIAogICAgIC8qCiAgICAgICogQ2FsbCB0aGUgc3lzdGVtLXNwZWNpZmljIGxvYWQgcm91dGluZSByZWd1bGFybHksCkBAIC0yMjAsMTAgKzIzMywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LT53YWl0X3RpY2tzICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0+a2Vybl90aWNrcyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUtPmludHJwdF90aWNrcyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUtPnNpcnFfdGlja3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUtPnNpcnFfdGlja3MgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B1LT5zdGVhbF90aWNrcyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHUtPmd1ZXN0X3RpY2tzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdS0+Z3Vlc3RuaWNlX3RpY2tzOwogICAgIH0KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hBUkRXQVJFX0NQVV9DT1BZX1NUQVRTCiB2b2lkIF9jcHVfY29weV9zdGF0cyggbmV0c25tcF9jcHVfaW5mbyAqY3B1ICkKIHsKICAgICBuZXRzbm1wX2NwdV9pbmZvICpjcHUyOwpAQCAtMjQzLDYgKzI2MCw5IEBACiAgICAgY3B1Mi0+a2Vybl90aWNrcyA9IGNwdS0+a2Vybl90aWNrczsKICAgICBjcHUyLT5pbnRycHRfdGlja3MgPSBjcHUtPmludHJwdF90aWNrczsKICAgICBjcHUyLT5zaXJxX3RpY2tzID0gY3B1LT5zaXJxX3RpY2tzOworICAgIGNwdTItPnN0ZWFsX3RpY2tzID0gY3B1LT5zdGVhbF90aWNrczsKKyAgICBjcHUyLT5ndWVzdF90aWNrcyA9IGNwdS0+Z3Vlc3RfdGlja3M7CisgICAgY3B1Mi0+Z3Vlc3RuaWNlX3RpY2tzID0gY3B1LT5ndWVzdG5pY2VfdGlja3M7CiAKICAgICBjcHUyLT5uSW50ZXJydXB0cyAgPSBjcHUtPm5JbnRlcnJ1cHRzOwogICAgIGNwdTItPm5DdHhTd2l0Y2hlcyA9IGNwdS0+bkN0eFN3aXRjaGVzOwpAQCAtMjUxLDMgKzI3MSw0IEBACiAgICAgY3B1Mi0+cGFnZUluICAgICA9IGNwdS0+cGFnZUluOwogICAgIGNwdTItPnBhZ2VPdXQgICAgPSBjcHUtPnBhZ2VPdXQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IQVJEV0FSRV9DUFVfQ09QWV9TVEFUUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9raW5mby5jCmluZGV4IGZhY2JjN2IuLjM3Y2Y4NDcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa2luZm8uYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tpbmZvLmMKQEAgLTIsNiArMiw3IEBACiAgKiAgRHJhZ29uRmx5IGtpbmZvIGludGVyZmFjZQogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1Lmg+CkBAIC0xMyw2ICsxNCw3IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoYXJkd2FyZV9jcHVfY29weV9zdGF0cykKIHZvaWQgX2NwdV9jb3B5X3N0YXRzKCBuZXRzbm1wX2NwdV9pbmZvICpjcHUgKTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMKaW5kZXggNWQ2ZWFmMS4uYjFkYzMwOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYwpAQCAtOTksMTEgKzk5LDEyIEBACiAgICAgc3RhdGljIGNoYXIgKmJ1ZmYgID0gTlVMTDsKICAgICBzdGF0aWMgaW50ICAgYnNpemUgPSAwOwogICAgIHN0YXRpYyBpbnQgICBmaXJzdCA9IDE7Ci0gICAgc3RhdGljIGludCAgIGhhc19jcHVfMjYgPSAxOworICAgIHN0YXRpYyBpbnQgICBudW1fY3B1bGluZV9lbGVtID0gMDsKICAgICBpbnQgICAgICAgICAgYnl0ZXNfcmVhZCwgc3RhdGZkLCBpOwogICAgIGNoYXIgICAgICAgICpiMSwgKmIyOwogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXNlbGwgPSAwLCBjaWNlbGwgPSAwLCBjc3lzbGwgPSAwLCBjaWRlbGwgPSAwLAotICAgICAgICAgICAgICAgICAgICAgICBjaW93bGwgPSAwLCBjaXJxbGwgPSAwLCBjc29mdGxsID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgY2lvd2xsID0gMCwgY2lycWxsID0gMCwgY3NvZnRsbCA9IDAsIGNzdGVhbGxsID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgY2d1ZXN0bGwgPSAwLCBjZ3Vlc3RfbmljZWxsID0gMDsKICAgICBuZXRzbm1wX2NwdV9pbmZvKiBjcHU7CiAKICAgICBpZiAoKHN0YXRmZCA9IG9wZW4oU1RBVF9GSUxFLCBPX1JET05MWSwgMCkpID09IC0xKSB7CkBAIC0xNTgsMjIgKzE1OSwzMyBAQAogICAgICAgICAgICAgYjErKzsKICAgICAgICAgfQogCi0JaWYgKCFoYXNfY3B1XzI2IHx8Ci0gICAgICAgICAgICBzc2NhbmYoYjEsICIlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1IiwgJmN1c2VsbCwKLSAgICAgICAgICAgICAgICAgICAmY2ljZWxsLCAmY3N5c2xsLCAmY2lkZWxsLCAmY2lvd2xsLCAmY2lycWxsLCAmY3NvZnRsbCkgIT0gNykgewotCSAgICBoYXNfY3B1XzI2ID0gMDsKLQkgICAgc3NjYW5mKGIxLCAiJWxsdSAlbGx1ICVsbHUgJWxsdSIsICZjdXNlbGwsICZjaWNlbGwsICZjc3lzbGwsCi0gICAgICAgICAgICAgICAgICAgJmNpZGVsbCk7CisgICAgICAgIG51bV9jcHVsaW5lX2VsZW0gPSBzc2NhbmYoYjEsICIlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1IiwKKyAgICAgICAgICZjdXNlbGwsICZjaWNlbGwsICZjc3lzbGwsICZjaWRlbGwsICZjaW93bGwsICZjaXJxbGwsICZjc29mdGxsLCAmY3N0ZWFsbGwsICZjZ3Vlc3RsbCwgJmNndWVzdF9uaWNlbGwpOworICAgICAgICBERUJVR01TR1RMKCgiY3B1IiwgIi9wcm9jL3N0YXQgY3B1IGxpbmUgbnVtYmVyIG9mIGVsZW1lbnRzOiAlaVxuIiwgbnVtX2NwdWxpbmVfZWxlbSkpOwogCi0JfSBlbHNlIHsKLSAgICAgICAgICAgIGNwdS0+d2FpdF90aWNrcyAgID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljaW93bGw7Ci0gICAgICAgICAgICBjcHUtPmludHJwdF90aWNrcyA9ICh1bnNpZ25lZCBsb25nIGxvbmcpY2lycWxsOwotICAgICAgICAgICAgY3B1LT5zaXJxX3RpY2tzICAgPSAodW5zaWduZWQgbG9uZyBsb25nKWNzb2Z0bGw7Ci0gCX0KLSAgICAgICAgY3B1LT51c2VyX3RpY2tzID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljdXNlbGw7Ci0gICAgICAgIGNwdS0+bmljZV90aWNrcyA9ICh1bnNpZ25lZCBsb25nIGxvbmcpY2ljZWxsOwotICAgICAgICBjcHUtPnN5c190aWNrcyAgPSAodW5zaWduZWQgbG9uZyBsb25nKWNzeXNsbDsKLSAgICAgICAgY3B1LT5pZGxlX3RpY2tzID0gKHVuc2lnbmVkIGxvbmcgbG9uZyljaWRlbGw7CisgICAgICAgIC8qIGtlcm5lbCAyLjYuMzMgYW5kIGFib3ZlICovCisgICAgICAgIGlmIChudW1fY3B1bGluZV9lbGVtID09IDEwKSB7CisgICAgICAgICAgICBjcHUtPmd1ZXN0bmljZV90aWNrcyA9IGNndWVzdF9uaWNlbGw7CisgICAgICAgIH0KKyAgICAgICAgLyoga2VybmVsIDIuNi4yNCBhbmQgYWJvdmUgKi8KKyAgICAgICAgaWYgKG51bV9jcHVsaW5lX2VsZW0gPj0gOSkgeworICAgICAgICAgICAgY3B1LT5ndWVzdF90aWNrcyA9IGNndWVzdGxsOworICAgICAgICB9CisgICAgICAgIC8qIGtlcm5lbCAyLjYuMTEgYW5kIGFib3ZlICovCisgICAgICAgIGlmIChudW1fY3B1bGluZV9lbGVtID49IDgpIHsKKyAgICAgICAgICAgIGNwdS0+c3RlYWxfdGlja3MgPSBjc3RlYWxsbDsKKyAgICAgICAgfQorICAgICAgICAvKiBrZXJuZWwgMi42ICovCisgICAgICAgIGlmIChudW1fY3B1bGluZV9lbGVtID49IDUpIHsKKyAgICAgICAgICAgIGNwdS0+d2FpdF90aWNrcyAgID0gY2lvd2xsOworICAgICAgICAgICAgY3B1LT5pbnRycHRfdGlja3MgPSBjaXJxbGw7CisgICAgICAgICAgICBjcHUtPnNpcnFfdGlja3MgICA9IGNzb2Z0bGw7CisgICAgICAgIH0KKyAgICAgICAgLyogcmVzdCAqLworICAgICAgICBjcHUtPnVzZXJfdGlja3MgPSBjdXNlbGw7CisgICAgICAgIGNwdS0+bmljZV90aWNrcyA9IGNpY2VsbDsKKyAgICAgICAgY3B1LT5zeXNfdGlja3MgID0gY3N5c2xsOworICAgICAgICBjcHUtPmlkbGVfdGlja3MgPSBjaWRlbGw7CiAgICAgfQogICAgIGlmICggYjEgPT0gYnVmZiApIHsKIAlpZiAoZmlyc3QpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbWFjaC5jCmluZGV4IGQ1MjdiM2QuLjdmMDkwYzkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbWFjaC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbWFjaC5jCkBAIC0xMDgsNiArMTA4LDcgQEAKICAgICBjcHUwLT5wYWdlSW4gPSB2bXN0YXQucGFnZWluczsKICAgICBjcHUwLT5wYWdlT3V0ID0gdm1zdGF0LnBhZ2VvdXRzOwogCS8qIG5vdCBpbXBsZW1lbnRlZDogc3dhcEluLCBzd2FwT3V0LCBuSW50ZXJydXB0cywgbkN0eFN3aXRjaGVzICovCisgICAgcmV0dXJuIDE7CiB9CiAKICAJICAJIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9ubGlzdC5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9ubGlzdC5jCmluZGV4IGE5ZWIxZTIuLjk3NDAyOGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbmxpc3QuYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMKQEAgLTMsNiArMyw3IEBACiAgKiAgICAgZS5nLiBGcmVlQlNECiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaD4KQEAgLTMxLDYgKzMyLDcgQEAKICNkZWZpbmUgQ1BVX1NZTUJPTCAgImNwX3RpbWUiCiAjZGVmaW5lIE1FTV9TWU1CT0wgICJjbnQiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhhcmR3YXJlX2NwdV9jb3B5X3N0YXRzKQogdm9pZCBfY3B1X2NvcHlfc3RhdHMoIG5ldHNubXBfY3B1X2luZm8gKmNwdSApOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGVyZnN0YXQuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGVyZnN0YXQuYwppbmRleCBmMGZmMmQyLi41ZmRkNTMxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BlcmZzdGF0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wZXJmc3RhdC5jCkBAIC0zLDYgKzMsNyBAQAogICogICAgIGUuZy4gQUlYCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaD4KQEAgLTE0LDYgKzE1LDcgQEAKICNpbmNsdWRlIDxzeXMvcHJvdG9zdy5oPgogI2luY2x1ZGUgPGxpYnBlcmZzdGF0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhhcmR3YXJlX2NwdV9jb3B5X3N0YXRzKQogdm9pZCBfY3B1X2NvcHlfc3RhdHMoIG5ldHNubXBfY3B1X2luZm8gKmNwdSApOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jCmluZGV4IDI5MjgyZjguLjVlY2I2OGUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYwpAQCAtMyw2ICszLDcgQEAKICAqICAgICBlLmcuIEJTRC9PUywgTmV0QlNELCBPcGVuQlNELCBsYXRlciBEYXJ3aW4gcmVsZWFzZXMKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2NwdS5oPgpAQCAtMzAsNiArMzEsOCBAQAogI2luY2x1ZGUgPHZtL3ZtX2V4dGVybi5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhhcmR3YXJlX2NwdV9jb3B5X3N0YXRzKQorCiB2b2lkIF9jcHVfY29weV9zdGF0cyggbmV0c25tcF9jcHVfaW5mbyAqY3B1ICk7CiAKICAgICAvKgpAQCAtODcsMTEgKzkwLDggQEAKICNkZWZpbmUgTkVUU05NUF9LRVJOX0NQVSAgS0VSTl9DUFRJTUUKIAogI2VsaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLSNkZWZpbmUgTkVUU05NUF9LRVJOX0NQVSAgMCAgICAvKiBkdW1teSB2YWx1ZSAtIHN5c2N0bG5hbWV0b21pYigyKSBzaG91bGQgYmUgdXNlZCAqLwotI2lmIGRlZmluZWQoSEFWRV9LRVJOX0NQX1RJTUVTKQogI2RlZmluZSBORVRTTk1QX0tFUk5fTUNQVSAxICAgIC8qIEVuYWJsZSBzdXBwb3J0IGZvciBtdWx0aS1jcHUgc3RhdHMuIFZhbGlkIGZvciBGcmVlQlNEID49Ni40LCA+PTcuMSwgPj04LjAgYW5kIGJleW9uZCAqLwogI2RlZmluZSBORVRTTk1QX0tFUk5fTUNQVV9UWVBFIE5FVFNOTVBfQ1BVX1NUQVRTCi0jZW5kaWYKIAogI2Vsc2UKICNlcnJvciAiTm8gQ1BVIHN0YXRpc3RpY3Mgc3lzY3RsIHRva2VuIgpAQCAtMTU5LDkgKzE1OSw2IEBACiAgICAgICogTG9hZCB0aGUgbGF0ZXN0IENQVSB1c2FnZSBzdGF0aXN0aWNzCiAgICAgICovCiBpbnQgbmV0c25tcF9jcHVfYXJjaF9sb2FkKCBuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqbWFnaWMgKSB7Ci0jaWZkZWYgTkVUU05NUF9LRVJOX01DUFUKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICBpOwotI2VuZGlmCiAKICAgICAvKgogICAgICAqIFN0cmljdGx5IHNwZWFraW5nLCBCU0RpIG91Z2h0IHRvIHVzZQpAQCAtMTcxLDE0ICsxNjgsMTkgQEAKICAgICAgKiBEb24ndCBmaWdodCBpdCwgRGF2ZSAtIGdvIHdpdGggdGhlIGZsb3cuLi4uCiAgICAgICovCiAgICAgTkVUU05NUF9DUFVfU1RBVFMgY3B1X3N0YXRzW0NQVVNUQVRFU107CisgICAgc2l6ZV90ICAgICAgICAgY3B1X3NpemUgID0gc2l6ZW9mKGNwdV9zdGF0cyk7CiAjaWYgIWRlZmluZWQoX19GcmVlQlNEX18pICYmICFkZWZpbmVkKF9fTmV0QlNEX18pCiAgICAgaW50ICAgICAgICAgICAgY3B1X21pYltdID0geyBDVExfS0VSTiwgTkVUU05NUF9LRVJOX0NQVSB9OwogI2VuZGlmCisjaWZkZWYgX19GcmVlQlNEX18KKyAgICBzdGF0aWMgaW50ICAgICBjcF90aW1lcyA9IC0xOworI2VuZGlmCiAjaWZkZWYgS0VSTl9DUFRJTUUyCiAgICAgaW50ICAgICAgICAgICAgbWNwdV9taWJbXSA9IHsgQ1RMX0tFUk4sIEtFUk5fQ1BUSU1FMiwgMCB9OwogI2VuZGlmCi0gICAgc2l6ZV90ICAgICAgICAgY3B1X3NpemUgID0gc2l6ZW9mKGNwdV9zdGF0cyk7CiAjaWZkZWYgTkVUU05NUF9LRVJOX01DUFUgCisgICAgaW50ICAgICAgICAgICAgaTsKKyAgICBpbnQgICAgICAgICAgICBhY3RfY3B1ID0gY3B1X251bTsKICAgICBORVRTTk1QX0tFUk5fTUNQVV9UWVBFICptY3B1X3N0YXRzOwogICAgIHNpemVfdCAgICAgICAgIG1jcHVfc2l6ZTsKICNlbmRpZgpAQCAtMTg3LDcgKzE4OSw3IEBACiAgICAgc2l6ZV90ICAgICAgICAgbWVtX3NpemUgID0gc2l6ZW9mKE5FVFNOTVBfVk1fU1RBVFNfVFlQRSk7CiAgICAgbmV0c25tcF9jcHVfaW5mbyAqY3B1ID0gbmV0c25tcF9jcHVfZ2V0X2J5SWR4KCAtMSwgMCApOwogCi0jaWYgKGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19OZXRCU0RfXykpCisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX05ldEJTRF9fKQogICAgIHN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lIiwgY3B1X3N0YXRzLCAmY3B1X3NpemUsIE5VTEwsIDApOwogI2Vsc2UKICAgICBzeXNjdGwoY3B1X21pYiwgMiwgIGNwdV9zdGF0cywgJmNwdV9zaXplLCBOVUxMLCAwKTsKQEAgLTIxNywyNCArMjE5LDM2IEBACiAjZW5kaWYKIAogI2lmZGVmIE5FVFNOTVBfS0VSTl9NQ1BVCi0jaWYgZGVmaW5lZChIQVZFX0tFUk5fQ1BfVElNRVMpCi0gICAgc3lzY3RsYnluYW1lKCJrZXJuLmNwX3RpbWVzIiwgTlVMTCwgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CisjaWYgZGVmaW5lZChLRVJOX0NQVElNRTIpCisgICAgbWNwdV9zaXplICA9IGNwdV9udW0qc2l6ZW9mKGNwdV9zdGF0cyk7CiAgICAgbWNwdV9zdGF0cyA9IG1hbGxvYyhtY3B1X3NpemUpOwotICAgIHN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lcyIsIG1jcHVfc3RhdHMsICZtY3B1X3NpemUsIE5VTEwsIDApOwotI2VsaWYgZGVmaW5lZChLRVJOX0NQVElNRTIpCi0gICAgbWNwdV9zaXplICA9IHNpemVvZihjcHVfc3RhdHMpOwotICAgIG1jcHVfc3RhdHMgPSBtYWxsb2MobWNwdV9zaXplKTsKLSNlbHNlCisjZWxpZiBkZWZpbmVkKF9fTmV0QlNEX18pCiAgICAgbWNwdV9zaXplICA9IGNwdV9udW0qc2l6ZW9mKGNwdV9zdGF0cyk7CiAgICAgbWNwdV9zdGF0cyA9IG1hbGxvYyhtY3B1X3NpemUpOwogICAgIHN5c2N0bGJ5bmFtZSgia2Vybi5jcF90aW1lIiwgbWNwdV9zdGF0cywgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CisjZWxpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQorICAgIGlmIChjcF90aW1lcyA9PSAtMSkgeworCWludCByZXQgPSBzeXNjdGxieW5hbWUoImtlcm4uY3BfdGltZXMiLCBOVUxMLCAmbWNwdV9zaXplLCBOVUxMLCAwKTsKKwljcF90aW1lcyA9IHJldCA9PSAtMSA/IDAgOiAxOworICAgIH0KKyAgICBpZiAoY3BfdGltZXMpIHsKKwlzeXNjdGxieW5hbWUoImtlcm4uY3BfdGltZXMiLCBOVUxMLCAmbWNwdV9zaXplLCBOVUxMLCAwKTsKKwltY3B1X3N0YXRzID0gbWFsbG9jKG1jcHVfc2l6ZSk7CisJc3lzY3RsYnluYW1lKCJrZXJuLmNwX3RpbWVzIiwgbWNwdV9zdGF0cywgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CisgICAgfQorICAgIGVsc2UgeworCW1jcHVfc2l6ZSAgPSBzaXplb2YoY3B1X3N0YXRzKTsKKwltY3B1X3N0YXRzID0gbWFsbG9jKG1jcHVfc2l6ZSk7CisJc3lzY3RsYnluYW1lKCJrZXJuLmNwX3RpbWUiLCBtY3B1X3N0YXRzLCAmbWNwdV9zaXplLCBOVUxMLCAwKTsKKwlhY3RfY3B1ID0gMTsKKyAgICB9CiAjZW5kaWYKLSAgICBmb3IgKCBpID0gMDsgaSA8IGNwdV9udW07IGkrKyApIHsKKyAgICBmb3IgKCBpID0gMDsgaSA8IGFjdF9jcHU7IGkrKyApIHsKICAgICAgICAgY3B1ID0gbmV0c25tcF9jcHVfZ2V0X2J5SWR4KCBpLCAwICk7CiAgICAgICAgIC8qIFhYWCAtIHBlci1DUFUgc3RhdGlzdGljcyAtIG1jcHVfbWliW2ldLj8/PyAqLwogI2lmZGVmIEtFUk5fQ1BUSU1FMgogCW1jcHVfbWliWzJdID0gaTsKLQlzeXNjdGwobWNwdV9taWIsIDMsIG1jcHVfc3RhdHMsICZtY3B1X3NpemUsIE5VTEwsIDApOworCXN5c2N0bChtY3B1X21pYiwgMywgbWNwdV9zdGF0cytpKkNQVVNUQVRFUywgJm1jcHVfc2l6ZSwgTlVMTCwgMCk7CiAjZW5kaWYKIAkvKiBBbG1vc3QgY29weSAmIHBhc3RlIG9mIHByZXZpb3VzIGNwdSBzdGF0cyBzdHVmZiA6KSAqLwogCWNwdS0+dXNlcl90aWNrcyA9IG1jcHVfc3RhdHNbKGkqQ1BVU1RBVEVTKStDUF9VU0VSXTsKQEAgLTI1MCw3ICsyNjQsNyBAQAogCSAgICAgKiAgIFhYWCAtIERvIHRoZXNlIHJlYWxseSBiZWxvbmcgaGVyZSA/CiAJICAgICAqLwogCi0JLyogVGhlcmUncyBubyByZWFsbHkgbmVlZCB0byBleGVjdXRlIGFub3RoZXIgc3lzY3RsKCkKKwkvKiBUaGVyZSdzIG5vIHJlYWwgbmVlZCB0byBleGVjdXRlIGFub3RoZXIgc3lzY3RsKCkKIAkgKgogCSAqIHN5c2N0bChtZW1fbWliLCAyLCAmbWVtX3N0YXRzLCAmbWVtX3NpemUsIE5VTEwsIDApOwogCSAqLwpAQCAtMjY2LDEwICsyODAsMTAgQEAKICNlbmRpZgogICAgIH0KICAgICBmcmVlKG1jcHVfc3RhdHMpOwotI2Vsc2UKKyNlbHNlCS8qIE5FVFNOTVBfS0VSTl9NQ1BVICovCiAgICAgICAgIC8qIENvcHkgIm92ZXJhbGwiIGZpZ3VyZXMgdG8gY3B1MCBlbnRyeSAqLwogICAgIF9jcHVfY29weV9zdGF0cyggY3B1ICk7Ci0jZW5kaWYKKyNlbmRpZiAgLyogTkVUU05NUF9LRVJOX01DUFUgKi8KIAogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oCmluZGV4IGUzMGE1YTYuLjhjYmY0MzkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzLmgKQEAgLTMsNiArMyw4IEBACiBjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsKQogI2VsaWYgZGVmaW5lZChIQVZFX0dFVFZGU1NUQVQpIHx8IGRlZmluZWQoSEFWRV9HRVRGU1NUQVQpCiBjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cykKLSNlbHNlCisjZWxpZiBkZWZpbmVkKEhBVkVfR0VUTU5URU5UKSAmJiAhZGVmaW5lZChpcml4NikKIGNvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQpCisjZWxzZQorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvZnN5cy9mc3lzX3ZvaWQpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jCmluZGV4IGFkZGIzMmEuLjA1MDI3ZjQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYwpAQCAtMTYxLDYgKzE2MSw4IEBACiAgICAgICAgIGlmICggIHN0YXRzW2ldLk5TRlNfRkxBR1MgJiBNTlRfUk9PVEZTICkgewogICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfRlNfRkxBR19CT09UQUJMRTsKICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgbmV0c25tcF9mc3lzX2NhbGN1bGF0ZTMyKGVudHJ5KTsKICAgICB9CisKKyAgICBmcmVlKHN0YXRzKTsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYwppbmRleCA4ZWI0M2NlLi45ZmJiMDY4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bC5jCkBAIC05Niw3ICs5Niw3IEBACiAgICAgLyoKICAgICAgKiBSZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IG1vdW50ZWQgZmlsZXN5c3RlbXMuLi4KICAgICAgKi8KLSAgICByZXQgPSBtbnRjdGwoTUNUTF9RVUVSWSwgc2l6ZW9mKHVpbnQpLCAmc2l6ZSk7CisgICAgcmV0ID0gbW50Y3RsKE1DVExfUVVFUlksIHNpemVvZih1aW50KSwgKHZvaWQgKikgJnNpemUpOwogICAgIGlmICggcmV0ICE9IDAgfHwgc2l6ZTw9MCApIHsKICAgICAgICAgc25tcF9sb2dfcGVycm9yKCAiaW5pdGlhbCBtbnRjdGwgZmFpbGVkIiApOwogICAgICAgICByZXR1cm47CkBAIC0xMDgsNyArMTA4LDcgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHJldCA9IG1udGN0bChNQ1RMX1FVRVJZLCBzaXplLCBhaXhtbnQgKTsKKyAgICByZXQgPSBtbnRjdGwoTUNUTF9RVUVSWSwgc2l6ZSwgKHZvaWQgKikgYWl4bW50KTsKICAgICBpZiAoIHJldCA8PSAwICkgewogICAgICAgICBmcmVlKGFpeG1udCk7CiAgICAgICAgIHNubXBfbG9nX3BlcnJvciggIm1haW4gbW50Y3RsIGZhaWxlZCIgKTsKQEAgLTE3Myw2ICsxNzMsNyBAQAogICAgICAgICBlbnRyeS0+YXZhaWwgPSAgc3RhdF9idWYuZl9iYXZhaWw7CiAgICAgICAgIGVudHJ5LT5pbnVtc190b3RhbCA9IHN0YXRfYnVmLmZfZmlsZXM7CiAgICAgICAgIGVudHJ5LT5pbnVtc19hdmFpbCA9IHN0YXRfYnVmLmZfZmZyZWU7CisgICAgICAgIG5ldHNubXBfZnN5c19jYWxjdWxhdGUzMihlbnRyeSk7CiAgICAgfQogICAgIGZyZWUoYWl4bW50KTsKICAgICBhaXhtbnQgID0gTlVMTDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYwppbmRleCA2M2E4NTM4Li45NGQyM2RiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jCkBAIC0yNTUsNiArMjU1LDcgQEAKICAgICAgICAgICAgIGVudHJ5LT5hdmFpbCA9ICBzdGF0X2J1Zi5mX2JhdmFpbDsKICAgICAgICAgZW50cnktPmludW1zX3RvdGFsID0gc3RhdF9idWYuZl9maWxlczsKICAgICAgICAgZW50cnktPmludW1zX2F2YWlsID0gc3RhdF9idWYuZl9mZnJlZTsKKyAgICAgICAgbmV0c25tcF9mc3lzX2NhbGN1bGF0ZTMyKGVudHJ5KTsKICAgICB9CiAgICAgZmNsb3NlKCBmcCApOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX3ZvaWQuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c192b2lkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkYzM0NAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c192b2lkLmMKQEAgLTAsMCArMSwyNCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmg+CisKK2ludAorX2ZzeXNfcmVtb3RlKCBjaGFyICpkZXZpY2UsIGludCB0eXBlICkKK3sKKyAgICByZXR1cm4gMDsKK30KKworaW50CitfZnN5c190eXBlKCBjaGFyICp0eXBlbmFtZSApCit7CisgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9VTktOT1dOOworfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICkKK3sgfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9sb2FkKCB2b2lkICkKK3sgfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYwppbmRleCAwNDhlZTY2Li5hNmNkOTRkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYwpAQCAtMSw4ICsxLDEzIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oPgorI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAorI2luY2x1ZGUgPGludHR5cGVzLmg+CisjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGh3X2ZzeXNfZ2V0X2NvbnRhaW5lciwgbmV0c25tcF91bnVzZWQpCiAKIGV4dGVybiB2b2lkICAgICAgICAgICAgIG5ldHNubXBfZnN5c19hcmNoX2xvYWQoIHZvaWQgKTsKIGV4dGVybiB2b2lkICAgICAgICAgICAgIG5ldHNubXBfZnN5c19hcmNoX2luaXQoIHZvaWQgKTsKQEAgLTU5LDEwICs2NCwxMiBAQAogICAgIF9mc3lzX2ZyZWUoKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hXX0ZTWVNfR0VUX0NPTlRBSU5FUgogLyoKICAqICBSZXR1cm4gdGhlIG1haW4gZnN5cyBjb250YWluZXIKICAqLwogbmV0c25tcF9jb250YWluZXIgKm5ldHNubXBfZnN5c19nZXRfY29udGFpbmVyKCB2b2lkICkgeyByZXR1cm4gX2ZzeXNfY29udGFpbmVyOyB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IV19GU1lTX0dFVF9DT05UQUlORVIgKi8KIAogLyoKICAqICBSZXR1cm4gdGhlIG1haW4gZnN5cyBjYWNoZSBjb250cm9sIHN0cnVjdHVyZSAoaWYgZGVmaW5lZCkKQEAgLTIzNiw3ICsyNDMsNyBAQAogICAgICAgICBzcC0+aWR4Lm9pZHNbMF0gPSArK19mc3lzX2lkeDsKICAgICB9CiAKLSAgICBERUJVR01TR1RMKCgiZnN5czpuZXciLCAiQ3JlYXRlIGZpbGVzeXN0ZW0gZW50cnkgKGluZGV4ID0gJWRcbiIsIF9mc3lzX2lkeCkpOworICAgIERFQlVHTVNHVEwoKCJmc3lzOm5ldyIsICJDcmVhdGUgZmlsZXN5c3RlbSBlbnRyeSAoaW5kZXggPSAlZClcbiIsIF9mc3lzX2lkeCkpOwogICAgIENPTlRBSU5FUl9JTlNFUlQoIF9mc3lzX2NvbnRhaW5lciwgc3AgKTsKICAgICByZXR1cm4gc3A7CiB9CkBAIC0yNDcsNyArMjU0LDcgQEAKICAqICAgIChhdHRlbXB0aW5nIHRvIGF2b2lkIDMyLWJpdCBvdmVyZmxvdyEpCiAgKi8KIHVuc2lnbmVkIGxvbmcgbG9uZwotX2ZzeXNfdG9fSyggaW50IHNpemUsIGludCB1bml0cyApCitfZnN5c190b19LKCB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSwgdW5zaWduZWQgbG9uZyBsb25nIHVuaXRzICkKIHsKICAgICBpbnQgZmFjdG9yID0gMTsKIApAQCAtMzA5LDMgKzMxNiwzNCBAQAogICAgIHJldHVybiAoaW50KXY7CiB9CiAKKyNpZm5kZWYgSU5UMzJfTUFYCisjZGVmaW5lIElOVDMyX01BWCAweDdmZmZmZmZmCisjZW5kaWYKKworI2lmbmRlZiBQUkl1NjQKKyNkZWZpbmUgUFJJdTY0ICJsbHUiCisjZW5kaWYKKworLyogcmVjYWxjdWxhdGUgZi0+c2l6ZV8zMiwgdXNlZF8zMiwgYXZhaWxfMzIgYW5kIHVuaXRzXzMyIGZyb20gZi0+c2l6ZSAmIGNvbXAuKi8KK3ZvaWQKK25ldHNubXBfZnN5c19jYWxjdWxhdGUzMihuZXRzbm1wX2ZzeXNfaW5mbyAqZikKK3sKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgcyA9IGYtPnNpemU7CisgICAgdW5zaWduZWQgc2hpZnQgPSAwOworCisgICAgd2hpbGUgKHMgPiBJTlQzMl9NQVgpIHsKKyAgICAgICAgcyA9IHMgPj4gMTsKKyAgICAgICAgc2hpZnQrKzsKKyAgICB9CisKKyAgICBmLT5zaXplXzMyID0gczsKKyAgICBmLT51bml0c18zMiA9IGYtPnVuaXRzIDw8IHNoaWZ0OworICAgIGYtPmF2YWlsXzMyID0gZi0+YXZhaWwgPj4gc2hpZnQ7CisgICAgZi0+dXNlZF8zMiA9IGYtPnVzZWQgPj4gc2hpZnQ7CisKKyAgICBERUJVR01TR1RMKCgiZnN5cyIsICJSZXN1bHRzIG9mIDMyLWJpdCBjb252ZXJzaW9uOiBzaXplICUiIFBSSXU2NCAiIC0+ICVsdTsiCisJCSIgdW5pdHMgJSIgUFJJdTY0ICIgLT4gJWx1OyBhdmFpbCAlIiBQUkl1NjQgIiAtPiAlbHU7IgorICAgICAgICAgICAgICAgICIgdXNlZCAlIiBQUkl1NjQgIiAtPiAlbHVcbiIsCisJCSh1aW50NjRfdClmLT5zaXplLCBmLT5zaXplXzMyLCAodWludDY0X3QpZi0+dW5pdHMsIGYtPnVuaXRzXzMyLAorCQkodWludDY0X3QpZi0+YXZhaWwsIGYtPmF2YWlsXzMyLCAodWludDY0X3QpZi0+dXNlZCwgZi0+dXNlZF8zMikpOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaAppbmRleCBjMzM0NTBhLi43ZTRlODhlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaApAQCAtMyw3ICszLDcgQEAKICNpZiBkZWZpbmVkKGxpbnV4KQogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9saW51eCkKIAotI2VsaWYgKGRlZmluZWQoZGFyd2luNykgfHwgZGVmaW5lZChkYXJ3aW44KSB8fCBkZWZpbmVkKGRhcndpbjkpKQorI2VsaWYgKGRlZmluZWQoZGFyd2luKSkKIGNvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL21lbW9yeS9tZW1vcnlfZGFyd2luKQogCiAjZWxpZiAoZGVmaW5lZChmcmVlYnNkMikgfHwgZGVmaW5lZChmcmVlYnNkMykgfHwgZGVmaW5lZChmcmVlYnNkNCkgIHx8IGRlZmluZWQoZnJlZWJzZDUpfHwgZGVmaW5lZChmcmVlYnNkNikpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmMKaW5kZXggYjE4YTliOC4uMWY0NDc0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9od19tZW0uYwpAQCAtMywxNCArMywyNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5Lmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaGFyZHdhcmVfbWVtb3J5LCBuZXRzbm1wX3VudXNlZCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV9nZXRfY2FjaGUsIGhhcmR3YXJlX21lbW9yeSkKKwogZXh0ZXJuIE5ldHNubXBDYWNoZUxvYWQgbmV0c25tcF9tZW1fYXJjaF9sb2FkOwogCiBuZXRzbm1wX21lbW9yeV9pbmZvICpfbWVtX2hlYWQgID0gTlVMTDsKIG5ldHNubXBfY2FjaGUgICAgICAgKl9tZW1fY2FjaGUgPSBOVUxMOwogCisjaWZkZWYgZGFyd2luCisvKiB0aGUgY29kZSBpbiBtZW1vcnlfZGFyd2luLmMgaXMgKnZlcnkqIGV4cGVuc2l2ZSAqLworI2RlZmluZQlNRU1PUllfQ0FDSEVfU0VDT05EUwkzMDAKKyNlbHNlCisjZGVmaW5lCU1FTU9SWV9DQUNIRV9TRUNPTkRTCTUKKyNlbmRpZgorCiB2b2lkIGluaXRfaHdfbWVtKCB2b2lkICkgewogICAgIG9pZCBuc01lbW9yeVtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCAzMSB9OwotICAgIF9tZW1fY2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSggNSwgbmV0c25tcF9tZW1fYXJjaF9sb2FkLCBOVUxMLAorICAgIF9tZW1fY2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSggTUVNT1JZX0NBQ0hFX1NFQ09ORFMsIG5ldHNubXBfbWVtX2FyY2hfbG9hZCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zTWVtb3J5LCBPSURfTEVOR1RIKG5zTWVtb3J5KSk7CiB9CiAKQEAgLTg3LDkgKzEwMCwxMSBAQAogCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9HRVRfQ0FDSEUKIG5ldHNubXBfY2FjaGUgKm5ldHNubXBfbWVtb3J5X2dldF9jYWNoZSggdm9pZCApIHsKICAgICByZXR1cm4gX21lbV9jYWNoZTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9HRVRfQ0FDSEUgKi8KIAogaW50IG5ldHNubXBfbWVtb3J5X2xvYWQoIHZvaWQgKSB7CiAgICAgIHJldHVybiBuZXRzbm1wX2NhY2hlX2NoZWNrX2FuZF9yZWxvYWQoIF9tZW1fY2FjaGUgKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZGFyd2luLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2Rhcndpbi5jCmluZGV4IDQ5MTRmMGMuLjQ0NjJjNDUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZGFyd2luLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9kYXJ3aW4uYwpAQCAtNSwxMCArNSwxNCBAQAogCiAjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8bWFjaC9tYWNoX2hvc3QuaD4KKwogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogCisjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CisjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPElPS2l0L3BzL0lPUG93ZXJTb3VyY2VzLmg+CiAKIC8qCiAgKiBSZXRhaW5lZCBmcm9tIFVDRCBpbXBsZW1lbnRhdGlvbgpAQCAtNDQsOCArNDgsNyBAQAogICAgICBtYWNoX3BvcnQgPSBtYWNoX2hvc3Rfc2VsZigpOwogICAgICBlcnJvciA9IGhvc3RfcHJvY2Vzc29yX3NldHMobWFjaF9wb3J0LCAmcHNldHMsICZwY250KTsKICAgICAgaWYgKGVycm9yICE9IEtFUk5fU1VDQ0VTUykgewotICAgICAgICBzbnByaW50ZihlcnJtc2csIHNpemVvZihlcnJtc2cpLCAiRXJyb3IgaW4gaG9zdF9wcm9jZXNzb3Jfc2V0cygpOiAlc1xuIiwgbWFjaF9lcnJvcl9zdHJpbmcoZXJyb3IpKTsKLSAgICAgICAgc25tcF9sb2dfcGVycm9yKGVycm1zZyk7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJFcnJvciBpbiBob3N0X3Byb2Nlc3Nvcl9zZXRzKCk6ICVzXG4iLCBtYWNoX2Vycm9yX3N0cmluZyhlcnJvcikpOwogICAgICAgICByZXR1cm4oMCk7CiAgICAgIH0KIApAQCAtNzUsNyArNzgsMTEgQEAKICAgICAgICAgICAgIGZvciAoYWRkcmVzcyA9IDA7OyBhZGRyZXNzICs9IHNpemUpIHsKICAgICAgICAgICAgICAgICAvKiBHZXQgbWVtb3J5IHJlZ2lvbi4gKi8KICAgICAgICAgICAgICAgICBjb3VudCA9IFZNX1JFR0lPTl9FWFRFTkRFRF9JTkZPX0NPVU5UOyAKLSAgICAgICAgICAgICAgICBpZiAodm1fcmVnaW9uKHRhc2tzW2pdLCAmYWRkcmVzcywgJnNpemUsIFZNX1JFR0lPTl9FWFRFTkRFRF9JTkZPLCAodm1fcmVnaW9uX2V4dGVuZGVkX2luZm9fdCkmaW5mbywgJmNvdW50LCAmb2JqZWN0X25hbWUpICE9IEtFUk5fU1VDQ0VTUykgeworI2lmIGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisgICAgICAgICAgICAgICAgaWYgKHZtX3JlZ2lvbl82NCh0YXNrc1tqXSwgJmFkZHJlc3MsICZzaXplLCBWTV9SRUdJT05fRVhURU5ERURfSU5GTywgJmluZm8sICZjb3VudCwgJm9iamVjdF9uYW1lKSAhPSBLRVJOX1NVQ0NFU1MpIHsKKyNlbHNlCisgICAgICAgICAgICAgICAgaWYgKHZtX3JlZ2lvbih0YXNrc1tqXSwgJmFkZHJlc3MsICZzaXplLCBWTV9SRUdJT05fRVhURU5ERURfSU5GTywgJmluZm8sICZjb3VudCwgJm9iamVjdF9uYW1lKSAhPSBLRVJOX1NVQ0NFU1MpIHsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgICAvKiBObyBtb3JlIG1lbW9yeSByZWdpb25zLiAqLwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYwppbmRleCA2MGFmOWU2Li5lMzRkYTE5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmMKQEAgLTI2LDkgKzI2LDkgQEAKIAlpbnQgICAgICAgICAgICAgYSA9IDA7CiAKICAgICAgICAgd2hpbGUgKChkYXRhID0gc2Vuc29yc19nZXRfZmVhdHVyZXMoIGNoaXAsICZhKSkpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgImdldF9mZWF0dXJlcyAoJXMsICVkKVxuIiwgZGF0YS0+bmFtZSwgZGF0YS0+bnVtYmVyKSk7CiAJICAgIGludCAgICAgICAgICAgICBiID0gMDsKLSAKKworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiZ2V0X2ZlYXR1cmVzICglcywgJWQpXG4iLCBkYXRhLT5uYW1lLCBkYXRhLT5udW1iZXIpKTsKIAogICAgICAgICAgICAgd2hpbGUgKChkYXRhMiA9IHNlbnNvcnNfZ2V0X2FsbF9zdWJmZWF0dXJlcyggY2hpcCwgZGF0YSwgJmIpKSkgewogICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICpsYWJlbCA9IE5VTEw7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jIGIvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYwppbmRleCBlZTQyNTQ0Li5kMzRkOTA2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMKQEAgLTE4LDYgKzE4LDEzIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJoZWFkZXJfY29tcGxleC5oIgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhlYWRlcl9jb21wbGV4X2FsbCwgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihoZWFkZXJfY29tcGxleF9mcmVlX2FsbCwgaGVhZGVyX2NvbXBsZXhfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGhlYWRlcl9jb21wbGV4X2ZpbmRfZW50cnksIGhlYWRlcl9jb21wbGV4X2FsbCkKKwogaW50CiBoZWFkZXJfY29tcGxleF9nZW5lcmF0ZV92YXJvaWQobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyKQogewpAQCAtMzM3LDggKzM0NCw5IEBACiB9CiAKIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqCi1oZWFkZXJfY29tcGxleF9hZGRfZGF0YShzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLCB2b2lkICpkYXRhKQoraGVhZGVyX2NvbXBsZXhfbWF5YmVfYWRkX2RhdGEoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2FsbG93X2R1cGxpY2F0ZXMpCiB7CiAgICAgb2lkICAgICAgICAgICAgIG5ld29pZFtNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIG5ld29pZF9sZW47CkBAIC0zNDksNyArMzU3LDggQEAKIAogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXIpOwogICAgIHJldCA9Ci0gICAgICAgIGhlYWRlcl9jb21wbGV4X2FkZF9kYXRhX2J5X29pZCh0aGVkYXRhLCBuZXdvaWQsIG5ld29pZF9sZW4sIGRhdGEpOworICAgICAgICBoZWFkZXJfY29tcGxleF9tYXliZV9hZGRfZGF0YV9ieV9vaWQodGhlZGF0YSwgbmV3b2lkLCBuZXdvaWRfbGVuLCBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9udF9hbGxvd19kdXBsaWNhdGVzKTsKICAgICAvKgogICAgICAqIGZyZWUgdGhlIHZhcmlhYmxlIGxpc3QsIGJ1dCBub3QgdGhlIGVuY2xvc2VkIGRhdGEhICBpdCdzIG5vdCBvdXJzISAKICAgICAgKi8KQEAgLTM1OCwzNCArMzY3LDIxIEBACiB9CiAKIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqCi1oZWFkZXJfY29tcGxleF9hZGRfZGF0YV9ieV9vaWQoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBuZXdvaWQsIHNpemVfdCBuZXdvaWRfbGVuLCB2b2lkICpkYXRhKQoraGVhZGVyX2NvbXBsZXhfYWRkX2RhdGEoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgdm9pZCAqZGF0YSkKIHsKLSAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cm4sICpoY2lwdHJwLCAqb3Vyc2VsZjsKLSAgICBpbnQgcmM7CisgICAgcmV0dXJuCisgICAgICAgIGhlYWRlcl9jb21wbGV4X21heWJlX2FkZF9kYXRhKHRoZWRhdGEsIHZhciwgZGF0YSwgMCk7Cit9CiAKLSAgICBpZiAodGhlZGF0YSA9PSBOVUxMIHx8IG5ld29pZCA9PSBOVUxMIHx8IGRhdGEgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBmb3IgKGhjaXB0cm4gPSAqdGhlZGF0YSwgaGNpcHRycCA9IE5VTEw7Ci0gICAgICAgICBoY2lwdHJuICE9IE5VTEw7IGhjaXB0cnAgPSBoY2lwdHJuLCBoY2lwdHJuID0gaGNpcHRybi0+bmV4dCkgewotICAgICAgICAvKgotICAgICAgICAgKiBYWFg6IGNoZWNrIGZvciA9PSBhbmQgZXJyb3IgKG92ZXJsYXBwaW5nIHRhYmxlIGVudHJpZXMpIAotICAgICAgICAgKiA4LzIwMDUgcmtzIE9rLCBJIGFkZGVkIGR1cGxpY2F0ZSBlbnRyeSBjaGVjaywgYnV0IG9ubHkgbG9nCi0gICAgICAgICAqICAgICAgICAgICAgd2FybmluZyBhbmQgY29udGludWUsIGJlY2F1c2UgaXQgc2VlbXMgdGhhdCBub2JvZHkKLSAgICAgICAgICogICAgICAgICAgICB0aGF0IGNhbGxzIHRoaXMgZnVjbnRpb24gZG9lcyBlcnJvciBjaGVja2luZyEuCi0gICAgICAgICAqLwotICAgICAgICByYyA9IHNubXBfb2lkX2NvbXBhcmUoaGNpcHRybi0+bmFtZSwgaGNpcHRybi0+bmFtZWxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld29pZCwgbmV3b2lkX2xlbik7Ci0gICAgICAgIGlmIChyYyA+IDApCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZWxzZSBpZiAoMCA9PSByYykgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJoZWFkZXJfY29tcGxleF9hZGRfZGF0YV9ieV9vaWQgd2l0aCAiCi0gICAgICAgICAgICAgICAgICAgICAiZHVwbGljYXRlIGluZGV4LlxuIik7Ci0gICAgICAgICAgICAvKiogdW5jb21tZW50IG51bGwgcmV0dXJuIHdoZW4gY2FsbGVycyBkbyBlcnJvciBjaGVja2luZyAqLwotICAgICAgICAgICAgLyoqIHJldHVybiBOVUxMOyAqLwotICAgICAgICB9Ci0gICAgfQorc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoKK19oZWFkZXJfY29tcGxleF9hZGRfYmV0d2VlbihzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGNpcHRycCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhjaXB0cm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbmV3b2lkLCBzaXplX3QgbmV3b2lkX2xlbiwgdm9pZCAqZGF0YSkKK3sKKyAgICBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKm91cnNlbGY7CiAKICAgICAvKgogICAgICAqIG5wdHIgc2hvdWxkIG5vdyBwb2ludCB0byB0aGUgc3BvdCB0aGF0IHdlIG5lZWQgdG8gYWRkIG91cnNlbHZlcwpAQCAtNDI5LDYgKzQyNSw1MCBAQAogICAgIHJldHVybiBoY2lwdHJwOwogfQogCisKK3N0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqCitoZWFkZXJfY29tcGxleF9tYXliZV9hZGRfZGF0YV9ieV9vaWQoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBuZXdvaWQsIHNpemVfdCBuZXdvaWRfbGVuLCB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkb250X2FsbG93X2R1cGxpY2F0ZXMpCit7CisgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2lwdHJuLCAqaGNpcHRycDsKKyAgICBpbnQgcmM7CisKKyAgICBpZiAodGhlZGF0YSA9PSBOVUxMIHx8IG5ld29pZCA9PSBOVUxMIHx8IGRhdGEgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBmb3IgKGhjaXB0cm4gPSAqdGhlZGF0YSwgaGNpcHRycCA9IE5VTEw7CisgICAgICAgICBoY2lwdHJuICE9IE5VTEw7IGhjaXB0cnAgPSBoY2lwdHJuLCBoY2lwdHJuID0gaGNpcHRybi0+bmV4dCkgeworICAgICAgICAvKgorICAgICAgICAgKiBYWFg6IGNoZWNrIGZvciA9PSBhbmQgZXJyb3IgKG92ZXJsYXBwaW5nIHRhYmxlIGVudHJpZXMpIAorICAgICAgICAgKiA4LzIwMDUgcmtzIE9rLCBJIGFkZGVkIGR1cGxpY2F0ZSBlbnRyeSBjaGVjaywgYnV0IG9ubHkgbG9nCisgICAgICAgICAqICAgICAgICAgICAgd2FybmluZyBhbmQgY29udGludWUsIGJlY2F1c2UgaXQgc2VlbXMgdGhhdCBub2JvZHkKKyAgICAgICAgICogICAgICAgICAgICB0aGF0IGNhbGxzIHRoaXMgZnVjbnRpb24gZG9lcyBlcnJvciBjaGVja2luZyEuCisgICAgICAgICAqLworICAgICAgICByYyA9IHNubXBfb2lkX2NvbXBhcmUoaGNpcHRybi0+bmFtZSwgaGNpcHRybi0+bmFtZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld29pZCwgbmV3b2lkX2xlbik7CisgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZWxzZSBpZiAoMCA9PSByYykgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJoZWFkZXJfY29tcGxleF9hZGRfZGF0YV9ieV9vaWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAiZHVwbGljYXRlIGluZGV4LlxuIik7CisgICAgICAgICAgICBpZiAoZG9udF9hbGxvd19kdXBsaWNhdGVzKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIF9oZWFkZXJfY29tcGxleF9hZGRfYmV0d2Vlbih0aGVkYXRhLCBoY2lwdHJwLCBoY2lwdHJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3b2lkLCBuZXdvaWRfbGVuLCBkYXRhKTsKK30KKworc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoKK2hlYWRlcl9jb21wbGV4X2FkZF9kYXRhX2J5X29pZChzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG5ld29pZCwgc2l6ZV90IG5ld29pZF9sZW4sIHZvaWQgKmRhdGEpCit7CisgICAgcmV0dXJuIGhlYWRlcl9jb21wbGV4X21heWJlX2FkZF9kYXRhX2J5X29pZCh0aGVkYXRhLCBuZXdvaWQsIG5ld29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLCAwKTsKK30KKwogLyoKICAqIGV4dHJhY3RzIGFuIGVudHJ5IGZyb20gdGhlIHN0b3JhZ2Ugc3BhY2UgKHJlbW92aW5nIGl0IGZyb20gZnV0dXJlCiAgKiBhY2Nlc3NlcykgYW5kIHJldHVybnMgdGhlIGRhdGEgc3RvcmVkIHRoZXJlCkBAIC00ODUsNiArNTI1LDcgQEAKIC8qCiAgKiBjb21wbGV0ZWx5IHdpcGUgb3V0IGFsbCBlbnRyaWVzIGluIG91ciBkYXRhIHN0b3JlIAogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEVBREVSX0NPTVBMRVhfRlJFRV9BTEwKIHZvaWQKIGhlYWRlcl9jb21wbGV4X2ZyZWVfYWxsKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqdGhlc3R1ZmYsCiAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb21wbGV4Q2xlYW5lciAqIGNsZWFuZXIpCkBAIC00OTYsNyArNTM3LDkgQEAKICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZnJlZV9lbnRyeShoY2lwdHIsIGNsZWFuZXIpOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0hFQURFUl9DT01QTEVYX0ZSRUVfQUxMICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9IRUFERVJfQ09NUExFWF9GSU5EX0VOVFJZCiBzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKgogaGVhZGVyX2NvbXBsZXhfZmluZF9lbnRyeShzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKnRoZXN0dWZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp0aGVlbnRyeSkKQEAgLTUwNyw2ICs1NTAsNyBAQAogICAgICAgICAgaGNpcHRyID0gaGNpcHRyLT5uZXh0KTsKICAgICByZXR1cm4gaGNpcHRyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSEVBREVSX0NPTVBMRVhfRklORF9FTlRSWSAqLwogCiAjaWZkZWYgVEVTVElORwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5oIGIvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguaAppbmRleCAyMDI4Y2VlLi4yYTE3MjhhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmgKQEAgLTU3LDYgKzU3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqdGhlZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdmFyLCB2b2lkICpkYXRhKTsKK3N0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaGVhZGVyX2NvbXBsZXhfbWF5YmVfYWRkX2RhdGEoc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICoqdGhlZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZG9udF9hbGxvd19kdXBsaWNhdGVzKTsKIAogLyoKICAqIE5vdGU6IG5ld29pZCBpcyBjb3BpZWQvY2xvbmVkIGZvciB5b3UgCkBAIC02OCw1ICs3MiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdvaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSk7CitzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKmhlYWRlcl9jb21wbGV4X21heWJlX2FkZF9kYXRhX2J5X29pZChzdHJ1Y3QgaGVhZGVyX2NvbXBsZXhfaW5kZXggKip0aGVkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbmV3b2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5ld29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRvbnRfYWxsb3dfZHVwbGljYXRlcyk7CiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX0hFQURFUl9DT01QTEVYX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5jCmluZGV4IGJiNTUxODEuLjNlZjA1ZTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYwpAQCAtNyw2ICs3LDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaD4KQEAgLTE0LDYgKzE1LDEwIEBACiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzb2Z0d2FyZV9pbnN0YWxsZWQsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3dpbnN0X2VudHJ5X3JlbW92ZSwgbmV0c25tcF91bnVzZWQpCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAKQEAgLTE4MSw2ICsxODYsNyBAQAogLyoKICAqIHJlbW92ZSBhIHJvdyBmcm9tIHRoZSB0YWJsZSAKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NXSU5TVF9FTlRSWV9SRU1PVkUKIHZvaWQKIG5ldHNubXBfc3dpbnN0X2VudHJ5X3JlbW92ZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnkpCkBAIC0xOTAsNiArMTk2LDcgQEAKICAgICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgLyogTm90aGluZyB0byByZW1vdmUgKi8KICAgICBDT05UQUlORVJfUkVNT1ZFKGNvbnRhaW5lciwgZW50cnkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1dJTlNUX0VOVFJZX1JFTU9WRSAqLwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgKaW5kZXggMGM4MDU2MS4uYmRhM2U0NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oCkBAIC0xNCw3ICsxNCw2IEBACiAvKgogICogYWxsIHBsYXRmb3JtcyB1c2UgdGhpcyBnZW5lcmljIGNvZGUKICAqLwotY29uZmlnX3JlcXVpcmUoaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QpCiBjb25maWdfZXhjbHVkZShob3N0L2hyX3N3aW5zdCkKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X2Rhcndpbi5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMKaW5kZXggYmJmNWEyZi4uN2E0NzM3MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMKQEAgLTcsNiArNyw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KQEAgLTI2LDYgKzI3LDkgQEAKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgogI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZGlyZWN0b3J5KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiBzdGF0aWMgaW50IF9hZGRfYXBwbGljYXRpb25zX2luX2RpcihuZXRzbm1wX2NvbnRhaW5lciAqLCBjb25zdCBjaGFyKiBwYXRoKTsKQEAgLTEyNSw3ICsxMjksOCBAQAogICAgIHJldHVybiAwOwogfQogCi12b2lkICBfZHVtcF9mbGFncyh1X2xvbmcgZmxhZ3MpCitzdGF0aWMgdm9pZAorX2R1bXBfZmxhZ3ModV9sb25nIGZsYWdzKQogewogICAgIHN0YXRpYyBzdHJ1Y3QgewogICAgICAgICBjb25zdCBjaGFyKm5hbWU7CkBAIC0yNTEsNiArMjU2LDggQEAKICAgICAgICAgICAgIHJjID0gLTE7CiAgICAgICAgICAgICBTTk1QX0NGUmVsZWFzZShwcm9kTmFtZSk7CiAgICAgICAgICAgICBTTk1QX0NGUmVsZWFzZSh2ZXJzaW9uKTsKKyAgICAgICAgICAgIENGUmVsZWFzZShjdXJyZW50UGF0aCk7CisgICAgICAgICAgICBDRlJlbGVhc2UoY3VycmVudFVSTCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yODEsNyArMjg4LDcgQEAKICAgICByZXR1cm4gcmM7CiB9CiAKLWludAorc3RhdGljIGludAogX2NoZWNrX2J1bmRsZWRfYXBwKENGVVJMUmVmIGN1cnJlbnRVUkwsIENGU3RyaW5nUmVmICpwcm9kTmFtZSwKICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiAqdmVyc2lvbiwgY29uc3QgY2hhciogZmlsZSkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYwppbmRleCBiYzhlZTJlLi5hMTIyY2IxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jCkBAIC0zLDYgKzMsNyBAQAogICogICAgIGhyU1dJbnN0YWxsZWRUYWJsZSBkYXRhIGFjY2VzczoKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CkBAIC0zMSwxMiArMzIsMTkgQEAKICNpbmNsdWRlIDxwa2dpbmZvLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfUEtHX0gKKyNkZWZpbmUgcmVzdHJpY3QKKyNpbmNsdWRlIDxwa2cuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRhdGVfbl90aW1lKQorCiAgICAvKgogICAgICogTG9jYXRpb24gb2YgcGFja2FnZSBkaXJlY3RvcnkuCiAgICAgKiBVc2VkIGZvcjoKQEAgLTk0LDUyICsxMDIsMTE1IEBACiAgICAgc2l6ZV90ICAgICAgICAgICAgICAgIGRhdGVfbGVuOwogICAgIGludCAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICBuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnk7CisjaWZkZWYgSEFWRV9MSUJQS0cKKyAgICBzdHJ1Y3QgcGtnZGIgKmRiID0gTlVMTDsKKyAgICBzdHJ1Y3QgcGtnZGJfaXQgKml0ID0gTlVMTDsKKyAgICBzdHJ1Y3QgcGtnICpwa2cgPSBOVUxMOworICAgIGNoYXIgcGtnbmFtZVsgU05NUF9NQVhQQVRIIF07CisgICAgY2hhciBwa2dkYXRlWyBCVUZTSVogXTsKKyAgICBpbnQgcGtnbmcgPSAwOwogCi0gICAgaWYgKCAhcGtnX2RpcmVjdG9yeVswXSApIHsKLSAgICAgICAgcmV0dXJuIDE7ICAgIC8qIENhbid0IHJlcG9ydCBpbnN0YWxsZWQgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGVyZSBpc24ndCBhIGxpc3Qgb2YgdGhlbSEgKi8KKyAgICBpZiAocGtnX2luaXQoTlVMTCwgTlVMTCkpIHsKKyAgICAgICAgc25tcF9sb2coIExPR19FUlIsICJTV0luc3Q6IGVycm9yIGluaXRpYWxpemluZyBwa2duZyBkYlxuIiApOworICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgZCA9IG9wZW5kaXIoIHBrZ19kaXJlY3RvcnkgKTsKLSAgICBpZiAoIWQpCisKKyAgICBpZiAocGtnZGJfb3BlbigmZGIsIFBLR0RCX0RFRkFVTFQpICE9IEVQS0dfT0spIHsKKwlzbm1wX2xvZyggTE9HX0VSUiwgIlNXSW5zdDogZXJyb3Igb3BlbmluZyBwa2duZyBkYlxuIiApOwogCXJldHVybiAxOwotICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGQpKSAhPSBOVUxMKSB7Ci0gICAgICAgIGlmICggJy4nID09IGRwLT5kX25hbWVbMF0gKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd2luc3RfZW50cnlfY3JlYXRlKCBpKysgKTsKLSAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCi0gICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLwotICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworICAgIH0KKworICAgIGlmIChwa2dfc3RhdHVzKE5VTEwpID09IFBLR19TVEFUVVNfQUNUSVZFKSB7CisJcGtnbmcgPSAxOworICAgIH0gZWxzZSB7CisJc25tcF9sb2coIExPR19JTkZPLCAiU1dJbnN0OiBub3QgYSBwa2duZyBzeXN0ZW1cbiIgKTsKKyAgICB9CisKKyAgICAvKiBpZiB3ZSBhcmUgdXNpbmcgRnJlZUJTRCdzIHBrZ25nICovCisgICAgaWYgKHBrZ25nKSB7CisgICAgICAgIGlmICgoaXQgPSBwa2dkYl9xdWVyeShkYiwgTlVMTCwgTUFUQ0hfQUxMKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcF9sb2coIExPR19FUlIsICJTV0luc3Q6IGVycm9yIHF1ZXJ5aW5nIHBrZ25nIGRiXG4iICk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlIChwa2dkYl9pdF9uZXh0KGl0LCAmcGtnLCBQS0dfTE9BRF9CQVNJQykgPT0gRVBLR19PSykgeworICAgICAgICAgICAgcGtnX3NucHJpbnRmKHBrZ25hbWUsIHNpemVvZihwa2duYW1lKSwgIiVuLSV2IiwgcGtnLCBwa2cpOworICAgICAgICAgICAgcGtnX3NucHJpbnRmKHBrZ2RhdGUsIHNpemVvZihwa2dkYXRlKSwgIiV0IiwgcGtnKTsKKworICAgICAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3aW5zdF9lbnRyeV9jcmVhdGUoIGkrKyApOworCisgICAgICAgICAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworCisgICAgICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgICAgICBlbnRyeS0+c3dOYW1lX2xlbiA9IHNucHJpbnRmKCBlbnRyeS0+c3dOYW1lLCBzaXplb2YoZW50cnktPnN3TmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwa2duYW1lICk7CisgICAgICAgICAgICBpZiAoZW50cnktPnN3TmFtZV9sZW4gPj0gc2l6ZW9mKGVudHJ5LT5zd05hbWUpKQorICAgICAgICAgICAgICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc2l6ZW9mKGVudHJ5LT5zd05hbWUpLTE7CisKKyAgICAgICAgICAgIGluc3RhbGxfdGltZSA9IGF0b2kocGtnZGF0ZSk7CisgICAgICAgICAgICBjcCA9IGRhdGVfbl90aW1lKCAmaW5zdGFsbF90aW1lLCAmZGF0ZV9sZW4gKTsKKyAgICAgICAgICAgIG1lbWNweSggZW50cnktPnN3RGF0ZSwgY3AsIGRhdGVfbGVuICk7CisgICAgICAgICAgICBlbnRyeS0+c3dEYXRlX2xlbiA9IGRhdGVfbGVuOworICAgICAgICB9CisKKyAgICAgICAgcGtnZGJfaXRfZnJlZShpdCk7CisgICAgICAgIHBrZ2RiX2Nsb3NlKGRiKTsKKyAgICAgICAgcGtnX3NodXRkb3duKCk7CisgICAgfSBlbHNlIHsKKyNlbmRpZiAvKiBIQVZFX0xJQlBLRyAqLworICAgICAgICBpZiAoICFwa2dfZGlyZWN0b3J5WzBdICkgeworICAgICAgICAgICAgcmV0dXJuIDE7ICAgIC8qIENhbid0IHJlcG9ydCBpbnN0YWxsZWQgcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGVyZSBpc24ndCBhIGxpc3Qgb2YgdGhlbSEgKi8KKyAgICAgICAgfQorCisgICAgICAgIGQgPSBvcGVuZGlyKCBwa2dfZGlyZWN0b3J5ICk7CisgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgIHJldHVybiAxOworCisgICAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGQpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoICcuJyA9PSBkcC0+ZF9uYW1lWzBdICkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHNucHJpbnRmKCBidWYsIEJVRlNJWiwgIiVzLyVzIiwgcGtnX2RpcmVjdG9yeSwgZHAtPmRfbmFtZSApOworICAgICAgICAgICAgaWYgKHN0YXQoIGJ1ZiwgJnN0YXRfYnVmICkgPCAwKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3aW5zdF9lbnRyeV9jcmVhdGUoIGkrKyApOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CiAKICNpZmRlZiBIQVZFX1BLR0lORk8KLSAgICAgICAgdiA9IHBrZ3BhcmFtKCBkcC0+ZF9uYW1lLCAiVkVSU0lPTiIgKTsKLSAgICAgICAgYyA9IHBrZ3BhcmFtKCBkcC0+ZF9uYW1lLCAiQ0FURUdPUlkiICk7CisJICAgIHYgPSBwa2dwYXJhbSggZHAtPmRfbmFtZSwgIlZFUlNJT04iICk7CisJICAgIGMgPSBwa2dwYXJhbSggZHAtPmRfbmFtZSwgIkNBVEVHT1JZIiApOwogCi0gICAgICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc25wcmludGYoIGVudHJ5LT5zd05hbWUsIHNpemVvZihlbnRyeS0+c3dOYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLSVzIiwgZHAtPmRfbmFtZSwgdiApOwotCWlmIChlbnRyeS0+c3dOYW1lX2xlbiA+PSBzaXplb2YoZW50cnktPnN3TmFtZSkpCi0JICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc2l6ZW9mKGVudHJ5LT5zd05hbWUpLTE7Ci0gICAgICAgIGVudHJ5LT5zd1R5cGUgPSAoTlVMTCAhPSBzdHJzdHIoIGMsICJzeXN0ZW0iKSkKLSAgICAgICAgICAgICAgICAgICAgICAgID8gMiAgICAgIC8qIG9wZXJhdGluZ1N5c3RlbSAqLwotICAgICAgICAgICAgICAgICAgICAgICAgOiA0OyAgICAgLyogIGFwcGxpY2F0aW9uICAgICovCisJICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc25wcmludGYoIGVudHJ5LT5zd05hbWUsIHNpemVvZihlbnRyeS0+c3dOYW1lKSwKKwkJCQkJICAiJXMtJXMiLCBkcC0+ZF9uYW1lLCB2ICk7CisJICAgIGlmIChlbnRyeS0+c3dOYW1lX2xlbiA+PSBzaXplb2YoZW50cnktPnN3TmFtZSkpCisJCWVudHJ5LT5zd05hbWVfbGVuID0gc2l6ZW9mKGVudHJ5LT5zd05hbWUpLTE7CisJICAgIGVudHJ5LT5zd1R5cGUgPSAoTlVMTCAhPSBzdHJzdHIoIGMsICJzeXN0ZW0iKSkKKwkJCSAgICA/IDIgICAgICAvKiBvcGVyYXRpbmdTeXN0ZW0gKi8KKwkJCSAgICA6IDQ7ICAgICAvKiAgYXBwbGljYXRpb24gICAgKi8KIAotICAgICAgICAvKiBEbyB3ZSBuZWVkIHRvIGZyZWUgJ3YnICYgJ2MnID8/PyAqLworCSAgICAvKiBEbyB3ZSBuZWVkIHRvIGZyZWUgJ3YnICYgJ2MnID8/PyAqLwogI2Vsc2UKLSAgICAgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzbnByaW50ZiggZW50cnktPnN3TmFtZSwgc2l6ZW9mKGVudHJ5LT5zd05hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBkcC0+ZF9uYW1lICk7Ci0JaWYgKGVudHJ5LT5zd05hbWVfbGVuID49IHNpemVvZihlbnRyeS0+c3dOYW1lKSkKLQkgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzaXplb2YoZW50cnktPnN3TmFtZSktMTsKKwkgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzbnByaW50ZiggZW50cnktPnN3TmFtZSwgc2l6ZW9mKGVudHJ5LT5zd05hbWUpLAorCQkJCQkgICIlcyIsIGRwLT5kX25hbWUgKTsKKwkgICAgaWYgKGVudHJ5LT5zd05hbWVfbGVuID49IHNpemVvZihlbnRyeS0+c3dOYW1lKSkKKwkJZW50cnktPnN3TmFtZV9sZW4gPSBzaXplb2YoZW50cnktPnN3TmFtZSktMTsKIAotICAgICAgICAvKiBubyBpbmZvcm1hdGlvbiBhYm91dCBPL1MgdnMgYXBwbGljYXRpb24gcGFja2FnZXMgPz8/ICovCisJICAgIC8qIG5vIGluZm9ybWF0aW9uIGFib3V0IE8vUyB2cyBhcHBsaWNhdGlvbiBwYWNrYWdlcyA/Pz8gKi8KICNlbmRpZgogCi0gICAgICAgIHNucHJpbnRmKCBidWYsIEJVRlNJWiwgIiVzLyVzIiwgcGtnX2RpcmVjdG9yeSwgZHAtPmRfbmFtZSApOwotICAgICAgICBzdGF0KCBidWYsICZzdGF0X2J1ZiApOwotICAgICAgICBpbnN0YWxsX3RpbWUgPSBzdGF0X2J1Zi5zdF9tdGltZTsKLSAgICAgICAgY3AgPSBkYXRlX25fdGltZSggJmluc3RhbGxfdGltZSwgJmRhdGVfbGVuICk7Ci0gICAgICAgIG1lbWNweSggZW50cnktPnN3RGF0ZSwgY3AsIGRhdGVfbGVuICk7Ci0gICAgICAgIGVudHJ5LT5zd0RhdGVfbGVuID0gZGF0ZV9sZW47CisJICAgIGluc3RhbGxfdGltZSA9IHN0YXRfYnVmLnN0X210aW1lOworCSAgICBjcCA9IGRhdGVfbl90aW1lKCAmaW5zdGFsbF90aW1lLCAmZGF0ZV9sZW4gKTsKKwkgICAgbWVtY3B5KCBlbnRyeS0+c3dEYXRlLCBjcCwgZGF0ZV9sZW4gKTsKKwkgICAgZW50cnktPnN3RGF0ZV9sZW4gPSBkYXRlX2xlbjsKKwl9CisJY2xvc2VkaXIoIGQgKTsKKyNpZmRlZiBIQVZFX0xJQlBLRwogICAgIH0KLSAgICBjbG9zZWRpciggZCApOworI2VuZGlmCiAKICAgICBERUJVR01TR1RMKCgic3dpbnN0OmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKICAgICAgICAgICAgICAgICAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMKaW5kZXggZGFlOGY2YS4uNzE1OTViZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMKQEAgLTMsNiArMyw3IEBACiAgKiAgICAgaHJTV0luc3RhbGxlZFRhYmxlIGRhdGEgYWNjZXNzOgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWZkZWYgSEFWRV9TVERMSUJfSApAQCAtNDMsNiArNDQsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKKwogICAgLyoKICAgICAqIExvY2F0aW9uIG9mIFJQTSBwYWNrYWdlIGRpcmVjdG9yeS4KICAgICAqIFVzZWQgZm9yOgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jCmluZGV4IDgxMjAzMGYuLmQxOGVhNWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMKQEAgLTksMTEgKzksMTYgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzb2Z0d2FyZV9ydW5uaW5nLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN3cnVuX21heF9wcm9jZXNzZXMsIHNvZnR3YXJlX3J1bm5pbmcpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3dydW5fY291bnRfcHJvY2Vzc2VzX2J5X25hbWUsIHNvZnR3YXJlX3J1bm5pbmcpCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgpAQCAtNzYsMTIgKzgxLDE1IEBACiAgICAgcmV0dXJuICggc3dydW5fY29udGFpbmVyID8gQ09OVEFJTkVSX1NJWkUoc3dydW5fY29udGFpbmVyKSA6IDAgKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NXUlVOX01BWF9QUk9DRVNTRVMKIGludAogc3dydW5fbWF4X3Byb2Nlc3Nlcyggdm9pZCApCiB7CiAgICAgcmV0dXJuIF9zd3J1bl9tYXg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TV1JVTl9NQVhfUFJPQ0VTU0VTICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TV1JVTl9DT1VOVF9QUk9DRVNTRVNfQllfTkFNRQogaW50CiBzd3J1bl9jb3VudF9wcm9jZXNzZXNfYnlfbmFtZSggY2hhciAqbmFtZSApCiB7CkBAIC0xMDIsNyArMTEwLDcgQEAKIAogICAgIHJldHVybiBpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TV1JVTl9DT1VOVF9QUk9DRVNTRVNfQllfTkFNRSAqLwogCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2Rhcndpbi5jCmluZGV4IGJiZWZjNGUuLjNiMDBmZTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9kYXJ3aW4uYwpAQCAtMTIwLDcgKzEyMCw3IEBACiAgICAgICAgICAqIHNraXAgZW1wdHkgbmFtZXMuCiAgICAgICAgICAqIHBfc3RhdCA9IChTSURMfFNSVU58U1NMRUVQfFNTVE9QfFNaT01CKQogICAgICAgICAgKi8KLSAgICAgICAgaWYgKChOVUxMID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbSkgfHwKKyAgICAgICAgaWYgKCgnXDAnID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbVswXSkgfHwKICAgICAgICAgICAgICgwID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfcGlkKSkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiIHNraXBwaW5nIHBfY29tbSAnJXMnLCBwaWQgJTVkLCBwX3BzdGF0ICVkXG4iLApAQCAtMTkzLDcgKzE5Myw3IEBACiAgICAgICAgICAgICB9IGF0LCBuczsKICAgICAgICAgICAgIGF0LnVxID0gdGFza2luZm8ucHRpbmZvLnB0aV90b3RhbF91c2VyICsKICAgICAgICAgICAgICAgICAgICAgdGFza2luZm8ucHRpbmZvLnB0aV90b3RhbF9zeXN0ZW07Ci0gICAgICAgICAgICBucy51dyA9IEFic29sdXRlVG9OYW5vc2Vjb25kcyggYXQudXcgKTsKKyAgICAgICAgICAgIG5zID0gYXQ7CiAgICAgICAgICAgICBucy51cSA9IG5zLnVxIC8gMTAwMDAwMDBMTDsgLyogbmFubyB0byBkZWNpICovCiAgICAgICAgICAgICBpZiAodGFza19tZW0gPiBJTlQzMl9NQVgpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwgU1dSVU5JTkRFTlQgIm1lbSBvdmVyZmxvd1xuIikpOwpAQCAtMjEwLDcgKzIxMCw3IEBACiAgICAgZnJlZShwcm9jZXNzZXMpOwogCiAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKLSAgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTM4Niw4ICszODYsOCBAQAogICAgICAgICAgICAgYnJlYWs7IC8qIEVuZCBvZiBleGVjX3BhdGggcmVhY2hlZC4gKi8KICAgICB9CiAgICAgaWYgKGNwICE9IGV4ZWNfcGF0aCArIGxlbikgewotICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsIiBPRkYgQlkgJWRcbiIsCi0gICAgICAgICAgICAgICAgICAgIChleGVjX3BhdGggKyBsZW4pIC0gY3ApKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCAiIE9GRiBCWSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgKGludCkoKGV4ZWNfcGF0aCArIGxlbikgLSBjcCkpKTsKICAgICAgICAgbmV0c25tcF9hc3NlcnQoIGNwID09IGV4ZWNfcGF0aCArIGxlbiApOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmMKaW5kZXggNmY5NDBiZi4uYWQ4YWVlMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5jCkBAIC0yMyw2ICsyMyw4IEBACiAKICNkZWZpbmUgTVlUQUJMRSAiaHJTV0luc3RhbGxlZFRhYmxlIgogCitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKwogc3RhdGljIHZvaWQgX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYyk7CiBzdGF0aWMgaW50IF9jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqbWFnaWMpOwogCkBAIC0zNiw2ICszOCwxNSBAQAogICAgIGluaXRpYWxpemVfdGFibGVfaHJTV0luc3RhbGxlZFRhYmxlKCk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX2hyU1dJbnN0YWxsZWRUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KK30KKwogLyoqIEluaXRpYWxpemUgdGhlIGhyU1dJbnN0YWxsZWRUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KIHZvaWQKIGluaXRpYWxpemVfdGFibGVfaHJTV0luc3RhbGxlZFRhYmxlKHZvaWQpCkBAIC00OCw3ICs1OSw2IEBACiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IE5VTEw7CiAgICAgbmV0c25tcF9jYWNoZSAqY2FjaGUgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgREVCVUdNU0dUTCgoImhyU1dJbnN0YWxsZWQiLCAiaW5pdGlhbGl6ZVxuIikpOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuaAppbmRleCAyYTFkYTIzLi40OGYxN2U4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgKQEAgLTExLDYgKzExLDcgQEAKICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKICAqLwogdm9pZCAgICAgICAgICAgIGluaXRfaHJTV0luc3RhbGxlZFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX2hyU1dJbnN0YWxsZWRUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2hyU1dJbnN0YWxsZWRUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGhyU1dJbnN0YWxsZWRUYWJsZV9oYW5kbGVyOwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jCmluZGV4IDBiZjQ3MWIuLjQzYjQ0ZDEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jCkBAIC0zMiw4ICszMiwxNSBAQAogICAgIGluaXRpYWxpemVfdGFibGVfaHJTV1J1blBlcmZUYWJsZSgpOwogfQogCit2b2lkCitzaHV0ZG93bl9oclNXUnVuUGVyZlRhYmxlKHZvaWQpCit7CisgICAgc2h1dGRvd25fdGFibGVfaHJTV1J1blBlcmZUYWJsZSgpOworfQorCiBleHRlcm4gb2lkICAgICAgaHJTV1J1blRhYmxlX29pZFtdOwogZXh0ZXJuIHNpemVfdCAgIGhyU1dSdW5UYWJsZV9vaWRfbGVuOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplIHRoZSBoclNXUnVuUGVyZlRhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwogdm9pZApAQCAtNDUsNyArNTIsNiBAQAogICAgICAgICBPSURfTEVOR1RIKGhyU1dSdW5QZXJmVGFibGVfb2lkKTsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWc7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CiAKICAgICByZWcgPQogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaHJTV1J1blBlcmZUYWJsZSIsCkBAIC0xMjgsNiArMTM0LDE1IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9oclNXUnVuUGVyZlRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQorCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIGhyU1dSdW5QZXJmVGFibGUgdGFibGUgKi8KIGludAogaHJTV1J1blBlcmZUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCmluZGV4IGI3OTM2MjcuLjQ1M2ZkYTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCkBAIC0yMSw3ICsyMSw5IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X2hyU1dSdW5QZXJmVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25faHJTV1J1blBlcmZUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2hyU1dSdW5QZXJmVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfaHJTV1J1blBlcmZUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGhyU1dSdW5QZXJmVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5jCmluZGV4IDlkOTI4NDEuLjAzYWQyNTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYwpAQCAtMjYsNiArMjYsOCBAQAogCiAjZGVmaW5lIE1ZVEFCTEUgImhyU1dSdW5UYWJsZSIKIAorc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CisKIC8qKiBJbml0aWFsaXplcyB0aGUgaHJTV1J1blRhYmxlIG1vZHVsZSAqLwogdm9pZAogaW5pdF9oclNXUnVuVGFibGUodm9pZCkKQEAgLTM2LDYgKzM4LDE1IEBACiAgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXUnVuVGFibGUoKTsKIH0KIAordm9pZAorc2h1dGRvd25faHJTV1J1blRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKwluZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisJdGFibGVfaW5mbyA9IE5VTEw7CisgICAgfQorfQorCiBvaWQgICAgICBoclNXUnVuVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCA0LCAyIH07CiBzaXplX3QgICBoclNXUnVuVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaHJTV1J1blRhYmxlX29pZCk7CiAKQEAgLTQ1LDEzICs1NiwxNSBAQAogewogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZzsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNpZmRlZiBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9XUklURV9TVVBQT1JUCiAjICBkZWZpbmUgU1dSVU5fQUNDRVNTX0xFVkVMIEhBTkRMRVJfQ0FOX1JXUklURQogI2Vsc2UKICMgIGRlZmluZSBTV1JVTl9BQ0NFU1NfTEVWRUwgSEFORExFUl9DQU5fUk9OTFkKICNlbmRpZgorI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKKyMgIGRlZmluZSBTV1JVTl9BQ0NFU1NfTEVWRUwgSEFORExFUl9DQU5fUk9OTFkKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oTVlUQUJMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV1J1blRhYmxlX2hhbmRsZXIsCkBAIC0yMTcsNiArMjMwLDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNpZmRlZiBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKQEAgLTMyOSw2ICszNDMsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogI2VuZGlmIC8qIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQgKi8KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmgKaW5kZXggNmNhNDk4OS4uZGU4MGZjMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCkBAIC0yMiw2ICsyMiw3IEBACiAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgCiAgKi8KIHZvaWQgICAgICAgICAgICBpbml0X2hyU1dSdW5UYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl9oclNXUnVuVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXUnVuVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBoclNXUnVuVGFibGVfaGFuZGxlcjsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYwppbmRleCA2NzkyNjRiLi5jNGFjNTJmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYwpAQCAtMTMzLDggKzEzMywxMCBAQAogdm9pZCAgICAgICAgICAgIEluaXRfSFJfRGlzayh2b2lkKTsKIGludCAgICAgICAgICAgICBHZXRfTmV4dF9IUl9EaXNrKHZvaWQpOwogaW50ICAgICAgICAgICAgIEdldF9OZXh0X0hSX0Rpc2tfUGFydGl0aW9uKGNoYXIgKiwgc2l6ZV90LCBpbnQpOworI2lmICEoZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikgfHwgZGVmaW5lZChhaXg3KSkKIHN0YXRpYyB2b2lkICAgICBBZGRfSFJfRGlza19lbnRyeShjb25zdCBjaGFyICosIGludCwgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGludCwgaW50KTsKKyNlbmRpZgogc3RhdGljIHZvaWQgICAgIFNhdmVfSFJfRGlza19HZW5lcmFsKHZvaWQpOwogc3RhdGljIHZvaWQgICAgIFNhdmVfSFJfRGlza19TcGVjaWZpYyh2b2lkKTsKIHN0YXRpYyBpbnQgICAgICBRdWVyeV9EaXNrKGludCwgY29uc3QgY2hhciAqKTsKQEAgLTE1MCw3ICsxNTIsOSBAQAogc3RhdGljIGludCAgICAgIEhSRF9pbmRleDsKIHN0YXRpYyBjaGFyICAgICBIUkRfc2F2ZWRNb2RlbFs0MF07CiBzdGF0aWMgbG9uZyAgICAgSFJEX3NhdmVkQ2FwYWNpdHkgPSAxMDQ0OworI2lmIGRlZmluZWQoRElPQ19ERVNDUklCRSkgfHwgZGVmaW5lZChES0lPQ0lORk8pIHx8IGRlZmluZWQoSEFWRV9MSU5VWF9IRFJFR19IKQogc3RhdGljIGludCAgICAgIEhSRF9zYXZlZEZsYWdzOworI2VuZGlmCiBzdGF0aWMgdGltZV90ICAgSFJEX2hpc3RvcnlbSFJERVZfVFlQRV9NQVNLICsgMV07CiAKICNpZmRlZiBESU9DX0RFU0NSSUJFCkBAIC02NjgsNiArNjcyLDcgQEAKIHN0YXRpYyBIUkRfZGlza190IGRpc2tfZGV2aWNlc1tNQVhfTlVNQkVSX0RJU0tfVFlQRVNdOwogc3RhdGljIGludCAgICAgIEhSX251bWJlcl9kaXNrX3R5cGVzID0gMDsKIAorI2lmICEoZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikgfHwgZGVmaW5lZChhaXg3KSkKIHN0YXRpYyB2b2lkCiBBZGRfSFJfRGlza19lbnRyeShjb25zdCBjaGFyICpkZXZwYXJ0X3N0cmluZywKICAgICAgICAgICAgICAgICAgIGludCBmaXJzdF9jdGwsCkBAIC03MjQsNiArNzI5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZGV2cGFydF9zdHJpbmcsIG5icl9jcmVhdGVkKSk7CiAjZW5kaWYKIH0KKyNlbmRpZgogCiB2b2lkCiBJbml0X0hSX0Rpc2sodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMKaW5kZXggNjBhMTYyOS4uYjIzZDMyMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5Lmg+CkBAIC02Myw2ICs2NCwxMCBAQAogI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzZV9maW5kX2ZyZWVfdmFsdWVfaW5fc2xpc3QpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGN0aW1lX3RvX3RpbWV0KQorCiAjaWYgZGVmaW5lZChic2RpNCkgfHwgZGVmaW5lZChmcmVlYnNkMykgfHwgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChmcmVlYnNkNSkgfHwgZGVmaW5lZChkYXJ3aW4pCiAjaWYgSEFWRV9HRVRGU1NUQVQgJiYgZGVmaW5lZChNRlNOQU1FTEVOKQogI2RlZmluZSBNT1VOVF9ORlMJIm5mcyIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMKaW5kZXggNDhkNzQ3ZC4uNmNjZTU4YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oPgpAQCAtMjIsNiArMjMsOSBAQAogI2luY2x1ZGUgIm1pYklJL2ludGVyZmFjZXMuaCIKICNpbmNsdWRlICJocl9uZXR3b3JrLmgiCiAKKyNpZiAhZGVmaW5lZCggc29sYXJpczIgKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW50ZXJmYWNlX2xlZ2FjeSkKKyNlbmRpZiAvKiAhc29sYXJpczIgKi8KIAogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jCmluZGV4IGFiZTc2OTIuLjNiOWFiZDYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYwpAQCAtNDcsNiArNDcsMTAgQEAKICNpZmRlZiBORVRTTk1QX0NBTl9HRVRfRElTS19MQUJFTAogc3RhdGljIGNoYXIgICAgIEhSUF9zYXZlZExhYmVsWzEwMjRdOwogI2VuZGlmCisjaWZkZWYgZGFyd2luCitleHRlcm4gaW50CitHZXRfSFJfRGlza19MYWJlbChjaGFyICpzdHJpbmcsIHNpemVfdCBzdHJfbGVuLCBjb25zdCBjaGFyICpkZXZmdWxsKTsKKyNlbmRpZgogCiBzdGF0aWMgaW50ICAgICAgSFJQX0Rpc2tJbmRleDsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMKaW5kZXggYzAzYWU0NC4uMjU1ODJiZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TWVNfUEFSQU1fSAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgpAQCAtNzEsNiArNzIsOCBAQAogCiAjZGVmaW5lIEhSU1dJTlNUX01PTk9UT05JQ0FMTFlfSU5DUkVBU0lORwogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKKwogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgS2VybmVsICYgaW50ZXJmYWNlIGluZm9ybWF0aW9uLApAQCAtNTEyLDkgKzUxNSwxMiBAQAogICAgICAgICAgICAgICAgIHNucHJpbnRmKHN0cmluZywgc2l6ZW9mKHN0cmluZyksICIlcy8lcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpLT5zd2lfZGlyZWN0b3J5LCBzd2ktPnN3aV9uYW1lKTsKICAgICAgICAgICAgICAgICBzdHJpbmdbIHNpemVvZihzdHJpbmcpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgICAgc3RhdChzdHJpbmcsICZzdGF0X2J1Zik7Ci0gICAgICAgICAgICAgICAgcmV0ID0gZGF0ZV9uX3RpbWUoJnN0YXRfYnVmLnN0X210aW1lLCB2YXJfbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RhdChzdHJpbmcsICZzdGF0X2J1ZikgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0ID0gZGF0ZV9uX3RpbWUoJnN0YXRfYnVmLnN0X210aW1lLCB2YXJfbGVuKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwogICAgICAgICAgICAgfSBlbHNlIHsKK2VycjoKICNpZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUwogICAgICAgICAgICAgICAgIHJldCA9IE5VTEw7CiAjZWxzZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jCmluZGV4IGRkYTFkM2YuLmY0MGU5OTcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMKQEAgLTUyNCw2ICs1MjQsMTIgQEAKICAgICBpZiAoKGNwID0gZ2V0X3Byb2NfZmlsZV9saW5lKCIvcHJvYy8lZC9zdGF0IiwgcGlkLCBidWYsIGJ1ZmxlbikpID09IE5VTEwgKQogCXJldHVybiBOVUxMOwogICAgIGZvciAoaSA9IDA7ICpjcCAmJiBpIDwgc2tpcDsgKytpKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFRoZSBzZWNvbmQgZmllbGQgaXMgJ2NvbW0nIGFuZCBjYW4gY29udGFpbiBzcGFjZXMuIEhlbmNlIHNraXAgdG8KKyAgICAgICAgICogdGhlIGNsb3NpbmcgcGFyZW50aGVzaXMuCisgICAgICAgICAqLworICAgICAgICBpZiAoaSA9PSAxICYmICpjcCA9PSAnKCcpCisgICAgICAgICAgICBjcCA9IHN0cnJjaHIoY3AsICcpJyk7CiAJY3AgPSBza2lwX3RvX25leHRfZmllbGQoY3ApOwogICAgIH0KICAgICByZXR1cm4gY3A7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYwppbmRleCA4OGIwZmJiLi5kOTljYzdkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMKQEAgLTE1LDYgKzE1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZWxzZQpAQCAtNzcsNiArNzgsOCBAQAogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShkYXRlX25fdGltZSkKKwogI2lmICFkZWZpbmVkKFVUTVBfRklMRSkgJiYgZGVmaW5lZChfUEFUSF9VVE1QKQogI2RlZmluZSBVVE1QX0ZJTEUgX1BBVEhfVVRNUAogI2VuZGlmCkBAIC05OCwxMSArMTAxLDE2IEBACiAjaWYgZGVmaW5lZChzb2xhcmlzMikKIHN0YXRpYyBzdHJ1Y3Qgb3BlbnByb21pbyAqIG9wX21hbGxvYyhzaXplX3Qgc2l6ZSk7CiBzdGF0aWMgdm9pZCBvcF9mcmVlKHN0cnVjdCBvcGVucHJvbWlvICpvcCk7CisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBzdGF0aWMgaW50IHNldF9zb2xhcmlzX2Jvb3Rjb21tYW5kX3BhcmFtZXRlcihpbnQgYWN0aW9uLCB1X2NoYXIgKiB2YXJfdmFsLCB1X2NoYXIgdmFyX3ZhbF90eXBlLCBzaXplX3QgdmFyX3ZhbF9sZW4sIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogc3RhdGljIGludCBzZXRfc29sYXJpc19lZXByb21fcGFyYW1ldGVyKGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUsIHNpemVfdCB2YWx1ZV9sZW4pOwogc3RhdGljIGludCBnZXRfc29sYXJpc19lZXByb21fcGFyYW1ldGVyKGNvbnN0IGNoYXIgKnBhcmFtZXRlciwgY2hhciAqb3V0cHV0KTsKIHN0YXRpYyBsb25nICAgICBnZXRfbWF4X3NvbGFyaXNfcHJvY2Vzc2VzKHZvaWQpOwogI2VuZGlmCisKIHN0YXRpYyBpbnQgICAgICBnZXRfbG9hZF9kZXYodm9pZCk7CiBzdGF0aWMgaW50ICAgICAgY291bnRfdXNlcnModm9pZCk7CiBleHRlcm4gaW50ICAgICAgY291bnRfcHJvY2Vzc2VzKHZvaWQpOwpAQCAtMTIzLDYgKzEzMSw3IEBACiAjZGVmaW5lCUhSU1lTX01BWFBST0NTCQk3CiAKICNpZiBkZWZpbmVkKHNvbGFyaXMyKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIHN0cnVjdCB2YXJpYWJsZTIgaHJzeXN0ZW1fdmFyaWFibGVzW10gPSB7CiAgICAge0hSU1lTX1VQVElNRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9ocnN5cywgMSwgezF9fSwKQEAgLTEzOSw2ICsxNDgsMjQgQEAKICAgICB7SFJTWVNfTUFYUFJPQ1MsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX2hyc3lzLCAxLCB7N319CiB9OworI2Vsc2UgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworc3RydWN0IHZhcmlhYmxlMiBocnN5c3RlbV92YXJpYWJsZXNbXSA9IHsKKyAgICB7SFJTWVNfVVBUSU1FLCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7MX19LAorICAgIHtIUlNZU19EQVRFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7Mn19LAorICAgIHtIUlNZU19MT0FEX0RFViwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHszfX0sCisgICAge0hSU1lTX0xPQURfUEFSQU0sIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs0fX0sCisgICAge0hSU1lTX1VTRVJTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs1fX0sCisgICAge0hSU1lTX1BST0NTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs2fX0sCisgICAge0hSU1lTX01BWFBST0NTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezd9fQorfTsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZWxzZQogc3RydWN0IHZhcmlhYmxlMiBocnN5c3RlbV92YXJpYWJsZXNbXSA9IHsKICAgICB7SFJTWVNfVVBUSU1FLCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKQEAgLTE1Nyw2ICsxODQsNyBAQAogICAgICB2YXJfaHJzeXMsIDEsIHs3fX0KIH07CiAjZW5kaWYKKwogb2lkICAgICAgICAgICAgIGhyc3lzdGVtX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDEgfTsKIAogCkBAIC0yNTAsNyArMjc4LDkgQEAKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICBjYXNlIEhSU1lTX0RBVEU6CiAjaWYgZGVmaW5lZChIQVZFX01LVElNRSkgJiYgZGVmaW5lZChIQVZFX1NUSU1FKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCiAgICAgICAgICp3cml0ZV9tZXRob2Q9bnNfc2V0X3RpbWU7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogI2VuZGlmCiAgICAgICAgIHRpbWUoJm5vdyk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGRhdGVfbl90aW1lKCZub3csIHZhcl9sZW4pOwpAQCAtMjY2LDcgKzI5Niw5IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogI2VsaWYgZGVmaW5lZChzb2xhcmlzMikKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2Q9c2V0X3NvbGFyaXNfYm9vdGNvbW1hbmRfcGFyYW1ldGVyOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgaWYgKCBnZXRfc29sYXJpc19lZXByb21fcGFyYW1ldGVyKCJib290LWNvbW1hbmQiLGJvb3RwYXJhbSkgKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJ1bmFibGUgdG8gbG9va3VwIGJvb3QtY29tbWFuZCBmcm9tIGVlcHJvbVxuIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTM2NSw2ICszOTcsNyBAQAogICAgIGZyZWUob3ApOwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogc3RhdGljIGludAogc2V0X3NvbGFyaXNfYm9vdGNvbW1hbmRfcGFyYW1ldGVyKGludCBhY3Rpb24sCiAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLApAQCAtNDI5LDYgKzQ2Miw3IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogc3RhdGljIGludCBzZXRfc29sYXJpc19lZXByb21fcGFyYW1ldGVyKGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHZhcl92YWxfbGVuKSB7CkBAIC01MDgsNiArNTQyLDcgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX01LVElNRSkgJiYgZGVmaW5lZChIQVZFX1NUSU1FKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogbnNfc2V0X3RpbWUoaW50IGFjdGlvbiwKICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC02MDEsNiArNjM2LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogI2VuZGlmCiAKICAgICAgICAgICAgICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmgKaW5kZXggNWUxMmMwZC4uZmVmZmE2MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5oCkBAIC05LDcgKzksOSBAQAogZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2hyc3lzOwogCiAjaWYgZGVmaW5lZChIQVZFX01LVElNRSkgJiYgZGVmaW5lZChIQVZFX1NUSU1FKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludCBuc19zZXRfdGltZShpbnQgYWN0aW9uLCB1X2NoYXIgKiB2YXJfdmFsLCB1X2NoYXIgdmFyX3ZhbF90eXBlLCBzaXplX3QgdmFyX3ZhbF9sZW4sIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICNlbmRpZgogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9IUlNZU1RFTV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMKaW5kZXggZWMzNDNlZC4uNGFhYjZhMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYwpAQCAtMTQsNiArMTQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9tZW1vcnkuaD4KQEAgLTYwLDYgKzYxLDggQEAKICNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGF0ZV9uX3RpbWUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjdGltZV90b190aW1ldCkKIAogI2RlZmluZSBIUkZTX01PTk9UT05JQ0FMTFlfSU5DUkVBU0lORwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmMKaW5kZXggYzQ1OGQ0ZC4uY2EyZjg1NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYwpAQCAtMTMwLDYgKzEzMCwxMCBAQAogCQkJICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTKTsKIAorICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCBhcHBuYW1lLCAicmVhbFN0b3JhZ2VVbml0cyIsCisgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1JFQUxTVE9SQUdFVU5JVFMpOworCiAgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInN0b3JhZ2VVc2VORlMiLCBwYXJzZV9zdG9yYWdlX2NvbmZpZywgTlVMTCwKIAkiMSB8IDJcdFx0KDEgPSBlbmFibGUsIDIgPSBkaXNhYmxlKSIpOwogfQpAQCAtNDE0LDI3ICs0MTgsMzkgQEAKICAgICAgICAgICAgIHJldHVybiAodV9jaGFyICopIG1lbS0+ZGVzY3I7CiAgICAgICAgIH0KICAgICBjYXNlIEhSU1RPUkVfVU5JVFM6Ci0gICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkKLSAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+dW5pdHM7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpIHsKKyAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfUkVBTFNUT1JBR0VVTklUUykpCisgICAgICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51bml0cyAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51bml0c18zMjsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICggIW1lbSB8fCBtZW0tPnVuaXRzID09IC0xICkKICAgICAgICAgICAgICAgICBnb3RvIHRyeV9uZXh0OwogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBtZW0tPnVuaXRzOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgY2FzZSBIUlNUT1JFX1NJWkU6Ci0gICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkKLSAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+c2l6ZTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkgeworICAgICAgICAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9SRUFMU1RPUkFHRVVOSVRTKSkKKyAgICAgICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnNpemUgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+c2l6ZV8zMjsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICggIW1lbSB8fCBtZW0tPnNpemUgPT0gLTEgKQogICAgICAgICAgICAgICAgIGdvdG8gdHJ5X25leHQ7CiAgICAgICAgICAgICBsb25nX3JldHVybiA9IG1lbS0+c2l6ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwogICAgIGNhc2UgSFJTVE9SRV9VU0VEOgotICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpCi0gICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnVzZWQ7Ci0gICAgICAgIGVsc2UgeworICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpIHsKKyAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfUkVBTFNUT1JBR0VVTklUUykpCisgICAgICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51c2VkICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnVzZWRfMzI7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT5zaXplID09IC0xIHx8IG1lbS0+ZnJlZSA9PSAtMSApCiAgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT5zaXplIC0gbWVtLT5mcmVlOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jCmluZGV4IDVmNWM3ZmYuLjI2ZTMxZmMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMKQEAgLTQsMTUgKzQsMjUgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKLSNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oIgotI2luY2x1ZGUgImlmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCIKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KIAorI2luY2x1ZGUgIm1pYklJL21pYklJX2NvbW1vbi5oIgorI2luY2x1ZGUgImlmLW1pYi9pZlRhYmxlL2lmVGFibGUuaCIKKyNpbmNsdWRlICJpZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgiCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnRlcmZhY2VfYWxsLCBsaWJuZXRzbm1wbWlicykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnRlcmZhY2UsIGludGVyZmFjZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJmYWNlX2FjY2Vzc19lbnRyeV9zZXRfYWRtaW5fc3RhdHVzLCBpbnRlcmZhY2VfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9sZWdhY3ksIGludGVyZmFjZV9hbGwpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JTlRFUkZBQ0VfQUNDRVNTX0VOVFJZX1NFVF9BRE1JTl9TVEFUVVMKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGludGVyZmFjZV9hcmNoX3NldF9hZG1pbl9zdGF0dXMpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSU5URVJGQUNFX0FDQ0VTU19FTlRSWV9TRVRfQURNSU5fU1RBVFVTICovCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgpAQCAtMzM3LDYgKzM0Nyw3IEBACiAgICAgZnJlZShlbnRyeSk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfTEVHQUNZCiAvKgogICogQmxlY2ggLSBiYWNrd2FyZHMgY29tcGF0aWJsZSBtaWJJSS9pbnRlcmZhY2VzIHN0eWxlIGludGVyZmFjZQogICogZnVuY3Rpb25zLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHVwZGF0ZSBvbGRlciBtb2R1bGVzIHRvIHVzZQpAQCAtMzQ2LDMzICszNTcsMzMgQEAKICAgICAhIGRlZmluZWQoIE5FVFNOTVBfTk9fQkFDS1dBUkRTX0NPTVBBVEFCSUxJVFkgKQogCiBzdGF0aWMgbmV0c25tcF9pdGVyYXRvciAqaXQgPSBOVUxMOwotc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpjID0gTlVMTDsKLXN0YXRpYyBuZXRzbm1wX2ludGVyZmFjZV9lbnRyeSAqZSA9IE5VTEw7CitzdGF0aWMgaWZUYWJsZV9yb3dyZXFfY3R4ICpyb3cgPSBOVUxMOwogCiAvKioKLSAqIAorICogU2V0dXAgYW4gaXRlcmF0b3IgZm9yIHNjYW5uaW5nIHRoZSBpbnRlcmZhY2VzIHVzaW5nIHRoZSBjYWNoZWQgZW50cnkKKyAqIGZyb20gaWYtbWliL2lmVGFibGUuCiAgKi8KIHZvaWQKIEludGVyZmFjZV9TY2FuX0luaXQodm9pZCkKIHsKLSAgICAvKgotICAgICAqIGlmVGFibGUgY29udGFpbmVyIHNob3VsZG4ndCBjaGFuZ2UsIHNvIHdlIHNob3VsZG4nIGhhdmUgdG8KLSAgICAgKiByZS1mZXRjaCBpdCBldmVyeSB0aW1lLgotICAgICAqLwotICAgIGlmIChOVUxMICE9IGMpCi0gICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9jb250YWluZXJfZnJlZShjLCAwKTsKLQotICAgIGMgPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfY29udGFpbmVyX2xvYWQoTlVMTCwgMCk7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnQgPSBOVUxMOworICAgIG5ldHNubXBfY2FjaGUgKmNhY2hlICAgID0gTlVMTDsgCiAgICAgCi0gICAgaWYgKE5VTEwgIT0gYykgeworICAgIGNhY2hlID0gbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZChpZlRhYmxlX29pZCwgaWZUYWJsZV9vaWRfc2l6ZSk7CisgICAgaWYgKE5VTEwgIT0gY2FjaGUpIHsKKyAgICAgICAgbmV0c25tcF9jYWNoZV9jaGVja19hbmRfcmVsb2FkKGNhY2hlKTsKKyAgICAgICAgY29udCA9IChuZXRzbm1wX2NvbnRhaW5lciopIGNhY2hlLT5tYWdpYzsKKyAgICB9CisgICAgCisgICAgaWYgKE5VTEwgIT0gY29udCkgewogICAgICAgICBpZiAoTlVMTCAhPSBpdCkKICAgICAgICAgICAgIElURVJBVE9SX1JFTEVBU0UoaXQpOwogICAgIAotICAgICAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUihjKTsKKyAgICAgICAgaXQgPSBDT05UQUlORVJfSVRFUkFUT1IoY29udCk7CiAgICAgfQogICAgCiAgICAgaWYgKE5VTEwgIT0gaXQpCi0gICAgICAgIGUgPSAobmV0c25tcF9pbnRlcmZhY2VfZW50cnkqKUlURVJBVE9SX0ZJUlNUKGl0KTsKKyAgICAgICAgcm93ID0gKGlmVGFibGVfcm93cmVxX2N0eCopSVRFUkFUT1JfRklSU1QoaXQpOwogfQogCiBpbnQKQEAgLTM5NCw5ICs0MDUsMTIgQEAKIEludGVyZmFjZV9TY2FuX05leHRJbnQoaW50ICppbmRleCwgY2hhciAqbmFtZSwgbmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKiplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGMpCiB7Ci0gICAgaWYgKE5VTEwgPT0gZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgbmV0c25tcF9pbnRlcmZhY2VfZW50cnkqIGUgPSBOVUxMOwogCisgICAgaWYgKE5VTEwgPT0gcm93KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICBlID0gcm93LT5kYXRhLmlmZW50cnk7CiAgICAgaWYoaW5kZXgpCiAgICAgICAgICppbmRleCA9IGUtPmluZGV4OwogCkBAIC00MDYsMTMgKzQyMCwxNCBAQAogICAgIGlmIChlbnRyeSkKICAgICAgICAgKmVudHJ5ID0gZTsKIAotICAgIGUgPSAobmV0c25tcF9pbnRlcmZhY2VfZW50cnkqKUlURVJBVE9SX05FWFQoaXQpOworICAgIHJvdyA9IChpZlRhYmxlX3Jvd3JlcV9jdHgqKSBJVEVSQVRPUl9ORVhUKGl0KTsKIAogICAgIHJldHVybiAxOwogfQogI2VuZGlmIC8qIE5FVFNOTVBfTk9fQkFDS1dBUkRTX0NPTVBBVEFCSUxJVFkgKi8KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9MRUdBQ1kgKi8KIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FDQ0VTU19FTlRSWV9TRVRfQURNSU5fU1RBVFVTCiAvKioKICAqCiAgKiBAcmV0dmFsIDAgICA6IHN1Y2Nlc3MKQEAgLTQ0MSw2ICs0NTYsNyBAQAogICAgIHJldHVybiByYzsKIH0KICNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FDQ0VTU19FTlRSWV9TRVRfQURNSU5fU1RBVFVTICovCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgpAQCAtNDU2LDYgKzQ3Miw3IEBACiAgICAgICAgICAgICAgICAgICAoKGNvbnN0IG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICopIHJocyktPm5hbWUpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfQUNDRVNTX0lOVEVSRkFDRV9OT0FSQ0gKIC8qKgogICovCiBzdGF0aWMgdm9pZApAQCAtNDYzLDYgKzQ4MCw3IEBACiB7CiAgICAgbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2VudHJ5X2ZyZWUoZW50cnkpOwogfQorI2VuZGlmCiAKIC8qKgogICovCkBAIC02ODEsOCArNjk5LDcgQEAKICAgICAgICAoMCA9PSBzdHJjbXAobGhzLT5kZXNjciwgcmhzLT5kZXNjcikpKQogICAgICAgICA7CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChOVUxMICE9IGxocy0+ZGVzY3IpCi0gICAgICAgICAgICBTTk1QX0ZSRUUobGhzLT5kZXNjcik7CisgICAgICAgIFNOTVBfRlJFRShsaHMtPmRlc2NyKTsKICAgICAgICAgaWYgKHJocy0+ZGVzY3IpIHsKICAgICAgICAgICAgIGxocy0+ZGVzY3IgPSBzdHJkdXAocmhzLT5kZXNjcik7CiAgICAgICAgICAgICBpZihOVUxMID09IGxocy0+ZGVzY3IpCkBAIC03MTAsOCArNzI3LDcgQEAKICAgICAgICAgaWYocmhzLT5wYWRkcl9sZW4pCiAgICAgICAgICAgICBtZW1jcHkobGhzLT5wYWRkcixyaHMtPnBhZGRyLHJocy0+cGFkZHJfbGVuKTsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoTlVMTCAhPSBsaHMtPnBhZGRyKQotICAgICAgICAgICAgU05NUF9GUkVFKGxocy0+cGFkZHIpOworICAgICAgICBTTk1QX0ZSRUUobGhzLT5wYWRkcik7CiAgICAgICAgIGlmIChyaHMtPnBhZGRyKSB7CiAgICAgICAgICAgICBsaHMtPnBhZGRyID0gKGNoYXIqKW1hbGxvYyhyaHMtPnBhZGRyX2xlbik7CiAgICAgICAgICAgICBpZihOVUxMID09IGxocy0+cGFkZHIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMKaW5kZXggNWJmYmY5YS4uZGIyYzI0NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYwpAQCAtNCw2ICs0LDcgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKICNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oIgpAQCAtMTMsNiArMTQsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oPgogI2luY2x1ZGUgImlmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9pb2N0bF9mbGFnc19zZXQsIGludGVyZmFjZV9hbGwpCisKICNpZmRlZiBIQVZFX05FVF9JRl9ICiAjaW5jbHVkZSA8bmV0L2lmLmg+CiAjZW5kaWYKQEAgLTI4Miw2ICsyODUsNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9JT0NUTF9GTEFHU19TRVQKIC8qKgogICogaW50ZXJmYWNlIGVudHJ5IGZsYWdzIGlvY3RsIHdyYXBwZXIKICAqCkBAIC0zNDksNiArMzUzLDcgQEAKIAogICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0lPQ1RMX0ZMQUdTX1NFVCAqLwogI2VuZGlmIC8qIFNJT0NHSUZGTEFHUyAqLwogCiAjaWZkZWYgU0lPQ0dJRk1UVQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jCmluZGV4IGRmMDk3MzcuLmYxOTZmYzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMKQEAgLTQsMTQgKzQsNTYgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZmRfZXZlbnRfbWFuYWdlcikKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRlbGV0ZV9wcmVmaXhfaW5mbykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNyZWF0ZV9wcmVmaXhfaW5mbykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbnRlcmZhY2VfYXJjaF9zZXRfYWRtaW5fc3RhdHVzLCBpbnRlcmZhY2VfYWxsKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSU5URVJGQUNFX0FSQ0hfU0VUX0FETUlOX1NUQVRVUworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW50ZXJmYWNlX2lvY3RsX2ZsYWdzX3NldCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTICovCisKKyNpZmRlZiBIQVZFX1BDSV9MT09LVVBfTkFNRQorI2luY2x1ZGUgPHBjaS9wY2kuaD4KKyNpbmNsdWRlIDxzZXRqbXAuaD4KK3N0YXRpYyBzdHJ1Y3QgcGNpX2FjY2VzcyAqcGNpX2FjY2VzczsKKworLyogQXZvaWQgbGV0dGluZyBsaWJwY2kgY2FsbCBleGl0KDEpIHdoZW4gbm8gUENJIGJ1cyBpcyBhdmFpbGFibGUuICovCitzdGF0aWMgaW50IGRvX2xvbmdqbXAgPTA7CitzdGF0aWMgam1wX2J1ZiBlcnJfYnVmOworc3RhdGljIHZvaWQKK25ldHNubXBfcGNpX2Vycm9yKGNoYXIgKm1zZywgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICBjaGFyICpidWY7CisgICAgaW50IGJ1ZmxlbjsKKworICAgIHZhX3N0YXJ0KGFyZ3MsIG1zZyk7CisgICAgYnVmbGVuID0gc3RybGVuKCJwY2lsaWI6ICIpK3N0cmxlbihtc2cpKzI7CisgICAgYnVmID0gbWFsbG9jKGJ1Zmxlbik7CisgICAgc25wcmludGYoYnVmLCBidWZsZW4sICJwY2lsaWI6ICVzXG4iLCBtc2cpOworICAgIHNubXBfdmxvZyhMT0dfRVJSLCBidWYsIGFyZ3MpOworICAgIGZyZWUoYnVmKTsKKyAgICB2YV9lbmQoYXJncyk7CisgICAgaWYgKGRvX2xvbmdqbXApCisJbG9uZ2ptcChlcnJfYnVmLCAxKTsKKyAgICBlbHNlCisJZXhpdCgxKTsKK30KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9MSU5VWF9FVEhUT09MX0gKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2lmbmRlZiBIQVZFX1BDSV9MT09LVVBfTkFNRQogdHlwZWRlZiBfX3U2NCB1NjQ7ICAgICAgICAgLyogaGFjaywgc28gd2UgbWF5IGluY2x1ZGUga2VybmVsJ3MgZXRodG9vbC5oICovCiB0eXBlZGVmIF9fdTMyIHUzMjsgICAgICAgICAvKiBkaXR0byAqLwogdHlwZWRlZiBfX3UxNiB1MTY7ICAgICAgICAgLyogZGl0dG8gKi8KIHR5cGVkZWYgX191OCB1ODsgICAgICAgICAgIC8qIGRpdHRvICovCisjZW5kaWYKKwogI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KICNlbmRpZiAvKiBIQVZFX0xJTlVYX0VUSFRPT0xfSCAqLwogCkBAIC0zNCw3ICs3Niw2IEBACiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KIApAQCAtMTI3LDYgKzE2OCwyNiBAQAogICAgIGxpc3RfaW5mby5saXN0X2hlYWQgPSAmcHJlZml4X2hlYWRfbGlzdDsKICAgICBuZXRzbm1wX3ByZWZpeF9saXN0ZW4oKTsKICNlbmRpZgorCisjaWZkZWYgSEFWRV9QQ0lfTE9PS1VQX05BTUUKKyAgICBwY2lfYWNjZXNzID0gcGNpX2FsbG9jKCk7CisgICAgaWYgKCFwY2lfYWNjZXNzKSB7CisJc25tcF9sb2coTE9HX0VSUiwgInBjaWxpYjogcGNpX2FsbG9jIGZhaWxlZFxuIik7CisJcmV0dXJuOworICAgIH0KKworICAgIHBjaV9hY2Nlc3MtPmVycm9yID0gbmV0c25tcF9wY2lfZXJyb3I7CisKKyAgICBkb19sb25nam1wID0gMTsKKyAgICBpZiAoc2V0am1wKGVycl9idWYpKSB7CisgICAgICAgIHBjaV9jbGVhbnVwKHBjaV9hY2Nlc3MpOworCXNubXBfbG9nKExPR19FUlIsICJwY2lsaWI6IHBjaV9pbml0IGZhaWxlZFxuIik7CisgICAgICAgIHBjaV9hY2Nlc3MgPSBOVUxMOworICAgIH0KKyAgICBlbHNlIGlmIChwY2lfYWNjZXNzKQorCXBjaV9pbml0KHBjaV9hY2Nlc3MpOworICAgIGRvX2xvbmdqbXAgPSAwOworI2VuZGlmCiB9CiAKIC8qCkBAIC0yNTYsNiArMzE3LDY5IEBACiAgICAgfQogfQogCisjaWZkZWYgSEFWRV9QQ0lfTE9PS1VQX05BTUUKKworLyogR2V0IHZhbHVlIGZyb20gc3lzZnMgZmlsZSAqLworc3RhdGljIGludCBzeXNmc19nZXRfaWQoY29uc3QgY2hhciAqcGF0aCwgdW5zaWduZWQgc2hvcnQgKmlkKQoreworICAgIEZJTEUgKmZpbjsKKyAgICBpbnQgbjsKKworICAgIGlmICghKGZpbiA9IGZvcGVuKHBhdGgsICJyIikpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlIiwKKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBvcGVuICVzXG4iLCBwYXRoKSk7CisJcmV0dXJuIDA7CisgICAgfQorCisgICAgbiA9IGZzY2FuZihmaW4sICIlaHgiLCBpZCk7CisgICAgZmNsb3NlKGZpbik7CisKKyAgICByZXR1cm4gbiA9PSAxOworfQorCisvKiBHZXQgaW50ZXJmYWNlIGRlc2NyaXB0aW9uIGZvciBQQ0kgZGV2aWNlCisgKiBieSB1c2luZyBzeXNmcyB0byBmaW5kIHZlbmRvciBhbmQgZGV2aWNlCisgKiB0aGVuIGxvb2t1cCBuYW1lICgtbHBjaSkKKyAqCisgKiBGb3Igc29mdHdhcmUgaW50ZXJmYWNlcyB0aGVyZSBpcyBubyBQQ0kgaW5mb3JtYXRpb24KKyAqIHNvIGRlc2NyaXB0aW9uIHdpbGwgbm90IGJlIHNldC4KKyAqLworc3RhdGljIHZvaWQKK19hcmNoX2ludGVyZmFjZV9kZXNjcmlwdGlvbl9nZXQobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKmVudHJ5KQoreworICAgIGNvbnN0IGNoYXIgKmRlc2NyOworICAgIGNoYXIgYnVmWzI1Nl07CisgICAgdW5zaWduZWQgc2hvcnQgdmVuZG9yX2lkLCBkZXZpY2VfaWQ7CisKKyAgICBpZiAoIXBjaV9hY2Nlc3MpCisJcmV0dXJuOworCisgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKKwkgICAgICIvc3lzL2NsYXNzL25ldC8lcy9kZXZpY2UvdmVuZG9yIiwgZW50cnktPm5hbWUpOworCisgICAgaWYgKCFzeXNmc19nZXRfaWQoYnVmLCAmdmVuZG9yX2lkKSkKKwlyZXR1cm47CisKKyAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLAorCSAgICAgIi9zeXMvY2xhc3MvbmV0LyVzL2RldmljZS9kZXZpY2UiLCBlbnRyeS0+bmFtZSk7CisKKyAgICBpZiAoIXN5c2ZzX2dldF9pZChidWYsICZkZXZpY2VfaWQpKQorCXJldHVybjsKKworICAgIGRlc2NyID0gcGNpX2xvb2t1cF9uYW1lKHBjaV9hY2Nlc3MsIGJ1Ziwgc2l6ZW9mKGJ1ZiksCisJCQkgICAgUENJX0xPT0tVUF9WRU5ET1IgfCBQQ0lfTE9PS1VQX0RFVklDRSwKKwkJCSAgICB2ZW5kb3JfaWQsIGRldmljZV9pZCwgMCwgMCk7CisgICAgaWYgKGRlc2NyKSB7CisJZnJlZShlbnRyeS0+ZGVzY3IpOworCWVudHJ5LT5kZXNjciA9IHN0cmR1cChkZXNjcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2UiLAorICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHBjaV9sb29rdXBfbmFtZSB2ZW5kb3I9JSNoeCBkZXZpY2U9JSNoeFxuIiwKKwkJICAgIHZlbmRvcl9pZCwgZGV2aWNlX2lkKSk7CisgICAgfQorfQorI2VuZGlmCisKIAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKIC8qKgpAQCAtNjEzLDkgKzczNyw5IEBACiAgICAgICAgIH0KICAgICAgICAgZW50cnktPm5zX2ZsYWdzID0gZmxhZ3M7IC8qIGluaXRpYWwgZmxhZ3M7IHdlJ2xsIHNldCBtb3JlIGxhdGVyICovCiAKLSAgICAgICAgLyoKLSAgICAgICAgICogeHh4LXJrczogZ2V0IGRlc2NyIGJ5IGxpbmtpbmcgbWVtIGZyb20gL3Byb2MvcGNpIGFuZCAvcHJvYy9pb21lbQotICAgICAgICAgKi8KKyNpZmRlZiBIQVZFX1BDSV9MT09LVVBfTkFNRQorCV9hcmNoX2ludGVyZmFjZV9kZXNjcmlwdGlvbl9nZXQoZW50cnkpOworI2VuZGlmCiAKIAogICAgICAgICAvKgpAQCAtNzc5LDYgKzkwMyw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTCiBpbnQKIG5ldHNubXBfYXJjaF9zZXRfYWRtaW5fc3RhdHVzKG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICogZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWZBZG1pblN0YXR1c192YWwpCkBAIC03OTUsNiArOTIwLDcgQEAKICAgICByZXR1cm4gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2lvY3RsX2ZsYWdzX3NldCgtMSwgZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUZGX1VQLCBhbmRfY29tcGxlbWVudCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTICovCiAKICNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAogLyoqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX29wZW5ic2QuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jCmluZGV4IDIwNDU2OGIuLjgzNDBkYzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jCkBAIC00LDEwICs0LDEzIEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCiAjaW5jbHVkZSAiaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9hcmNoX3NldF9hZG1pbl9zdGF0dXMsIGludGVyZmFjZV9hbGwpCisKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaWYgSEFWRV9TWVNfSU9DVExfSApAQCAtMzg2LDYgKzM4OSw3IEBACiAgICAgcmV0dXJuICpzcGVlZDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BUkNIX1NFVF9BRE1JTl9TVEFUVVMKIGludAogbmV0c25tcF9hcmNoX3NldF9hZG1pbl9zdGF0dXMobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKiBlbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpZkFkbWluU3RhdHVzX3ZhbCkKQEAgLTM5OSw0ICs0MDMsNSBAQAogCiAgICAgcmV0dXJuIC00OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FSQ0hfU0VUX0FETUlOX1NUQVRVUyAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3NvbGFyaXMyLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3NvbGFyaXMyLmMKaW5kZXggMmIwZmM0Yy4uOGFhNDdmOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYwpAQCAtMiw2ICsyLDcgQEAKICAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0IGZvciBTb2xhcmlzCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAiaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCIKICNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCkBAIC0xNiw2ICsxNyw4IEBACiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJmYWNlX2FyY2hfc2V0X2FkbWluX3N0YXR1cywgaW50ZXJmYWNlX2FsbCkKKwogc3RhdGljIGludCBfc2V0X2lwX2ZsYWdzX3Y0KG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICosIG1pYjJfaWZFbnRyeV90ICopOwogc3RhdGljIGludCBfbWF0Y2hfaWZuYW1lX3Y0YWRkcih2b2lkICppZm5hbWUsIHZvaWQgKmlwYWRkcik7CiBzdGF0aWMgaW50IF9nZXRfdjRhZGRyKG1pYjJfaWZFbnRyeV90ICppZmUsIG1pYjJfaXBBZGRyRW50cnlfdCAqZSk7CkBAIC0zNDUsNiArMzQ4LDcgQEAKIH0KICNlbmRpZiAvKiBTT0xBUklTX0hBVkVfSVBWNl9NSUJfU1VQUE9SVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJGQUNFX0FSQ0hfU0VUX0FETUlOX1NUQVRVUwogaW50CiBuZXRzbm1wX2FyY2hfc2V0X2FkbWluX3N0YXR1cyhuZXRzbm1wX2ludGVyZmFjZV9lbnRyeSAqIGVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlmQWRtaW5TdGF0dXNfdmFsKQpAQCAtMzU2LDMgKzM2MCw0IEBACiAgICAgICovCiAgICAgcmV0dXJuICgtMSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYwppbmRleCBjY2UzODgxLi42MDc2ZDE5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmMKQEAgLTYsNiArNiw3IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCiAjaW5jbHVkZSAiaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCIKQEAgLTI5LDYgKzMwLDggQEAKICNpbmNsdWRlIDxuZXQvaWZfdHlwZXMuaD4KICNpbmNsdWRlIDxuZXQvaWZfbWVkaWEuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGludGVyZmFjZV9hcmNoX3NldF9hZG1pbl9zdGF0dXMsIGludGVyZmFjZV9hbGwpCisKIC8qCiAgKiBhY2NvdW50IGZvciBtaW5vciBkaWZmZXJlbmNlcyBiZXR3ZWVuIEZyZWVCU0QgYW5kIE9wZW5CU0QuCiAgKiBJZiB0aGlzIGdldHMgdW5ydWx5LCBzcGxpdCBzdHVmZiBvdXQgaW50byB0aGUgcmVzcGVjdGl2ZQpAQCAtNTYxLDYgKzU2NCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTlRFUkZBQ0VfQVJDSF9TRVRfQURNSU5fU1RBVFVTCiBpbnQKIG5ldHNubXBfYXJjaF9zZXRfYWRtaW5fc3RhdHVzKG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICogZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWZBZG1pblN0YXR1c192YWwpCkBAIC01NzUsMyArNTc5LDQgQEAKIAogICAgIHJldHVybiAtNDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSRkFDRV9BUkNIX1NFVF9BRE1JTl9TVEFUVVMgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYwppbmRleCA4MDgyOWNjLi5kOWI3MjUyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jCkBAIC0xNCw5ICsxNCwxNCBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGludGVyZmFjZV9hY2Nlc3NfZW50cnlfc2V0X2FkbWluX3N0YXR1cykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoKICAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCiAgKi8KQEAgLTE3ODMsNiArMTc4OCw5IEBACiAKIAogLyoqIEB9ICovCisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtMjMyOSw2ICsyMzM3LDggQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWZUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMgKi8KIAogCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiBzdGF0aWMgaW50CiBfaWZfbnVtYmVyX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCmluZGV4IDQ1MmI4NjMuLmU5MDYzNGYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKQEAgLTQ1MSw2ICs0NTEsNyBAQAogCiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAvKgogICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKiBTRVQgZnVuY3Rpb24gZGVjbGFyYXRpb25zCkBAIC02NjYsNyArNjY3LDcgQEAKIAogCiAgICAgaW50ICAgICAgICAgICAgIGlmVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzKGlmVGFibGVfcm93cmVxX2N0eCAqIGN0eCk7Ci0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAvKgogICAgICAqIERVTU1ZIG1hcmtlcnMsIGlnbm9yZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDY0ZGQ3OTMuLmZiODM4ZWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTgsOSArOCwxMiBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2xpbmtlZF9saXN0KQorCiAvKgogICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNDlkZTM1Ni4uNDFkMzhlZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Nyw2ICs0OCwyMSBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZnRhYmxlX2NvbnRhaW5lcl9nZXQsIGlmVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmeHRhYmxlX3NodXRkb3duX2ludGVyZmFjZSwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaWZYVGFibGVfY29udGFpbmVyX3NpemUsIGlmWFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZlhUYWJsZV9yZWdpc3RyYXRpb25fc2V0LCBpZlhUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaWZYVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaWZYVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmWFRhYmxlX2NvbnRhaW5lcl9nZXQsIGlmWFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZnRhYmxlX2NvbnRhaW5lcl9zaXplLCBpZlRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpZnRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGlmVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmdGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaWZUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODIsMTkgKzk4LDIzIEBACiBzdGF0aWMgdm9pZCAgICAgX2lmVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlmVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaWZUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlmVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpZlRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpZlRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaWZUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaWZUYWJsZV9yZWdpc3RyYXRpb24gKgogaWZUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlmVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtMTAyLDEyICsxMjIsMTUgQEAKICAgICBpZlRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlmVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaWZUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogdV9pbnQKIGlmVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xNDUsNyArMTY4LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZUYWJsZV9vYmplY3RfbG9va3VwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlRhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlRhYmxlX3VuZG9fc2V0dXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNjAsNyArMTgzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogaWZUYWJsZV9kYXRhICAgKmlmVGFibGVfYWxsb2NhdGVfZGF0YSh2b2lkKTsKIApAQCAtMjUwLDcgKzI3Myw3IEBACiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgPSBfbWZkX2lmVGFibGVfcG9zdF9yZXF1ZXN0OwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yNzMsNyArMjk2LDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfaWZUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yODYsMTEgKzMwOSwxNCBAQAogICAgIHJlZ2luZm8gPQogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSgiaWZUYWJsZSIsIGhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmVGFibGVfb2lkLCBpZlRhYmxlX29pZF9zaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhBTkRMRVJfQ0FOX1JXUklURQotI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAgfAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KKyAgICAgICAgICAgICk7CisKICAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBpZlRhYmxlXG4iKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMzA4LDcgKzMzNCw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMzEsNyArMzU3LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTM3Myw3ICszOTksNyBAQAogICAgICAqLwogICAgIHsKICAgICAgICAgY29uc3Qgb2lkICAgICAgIGlmdGxjX29pZFtdID0geyBJRlRBQkxFX0xBU1RfQ0hBTkdFIH07Ci0gICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlmVGFibGVMYXN0Q2hhbmdlZCIsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmdGxjX29pZCwgT0lEX0xFTkdUSChpZnRsY19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCkBAIC0xMDM5LDggKzEwNjUsOCBAQAogCiAKIAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0xODE4LDcgKzE4NDQsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaWZUYWJsZV9pcnJldmVyc2libGVfY29tbWl0ICovCi0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTE5NjQsNiArMTk5MCw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pZlRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlRBQkxFX0VYVEVSTkFMX0FDQ0VTUwogaWZUYWJsZV9yb3dyZXFfY3R4ICoKIGlmVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlmVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKIHsKQEAgLTE5ODksMyArMjAxNiw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCmluZGV4IDIzZjcxMzcuLmJiM2U3MzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yOSw2ICszMCw5IEBACiAKICNpbmNsdWRlICJpZlhUYWJsZV9pbnRlcmZhY2UuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaWZUYWJsZV9jb250YWluZXJfZ2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaWZUYWJsZV9jb250YWluZXJfc2l6ZSkKKwogLyoKICAqIG5vdCBzdXJlIGlmIHdlIHdhbnQgdG8gc3VwcG9ydCBzZXQgZm9yIHByb21pc2N1b3VzIG1vZGUsIGJlY2F1c2UKICAqIDEpIGNhcmVmdWwgdGhvdWdodCBzaG91bGQgZ28gaW50byBhbnkgc2V0dGFibGUgb2JqZWN0IHRoYXQgcGVyZm9ybXMKQEAgLTE1NzIsNiArMTU3Niw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmQ291bnRlckRpc2NvbnRpbnVpdHlUaW1lX2dldCAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKIC8qKiBAfSAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKQEAgLTI1MzAsNSArMjUzNSw3IEBACiAgICAgcmV0dXJuIHJjOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZlhUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMgKi8KIAorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoqIEB9ICovCiAvKiogQHsgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKaW5kZXggZjliMjVkNC4uYmEyMmY5NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKQEAgLTIxOCw3ICsyMTgsNyBAQAogICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjMxLjEuMSwgbGVuZ3RoOiA5CiAgICAgICovCiAKLQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpbnQgICAgICAgICAgICAgaWZYVGFibGVfdW5kb19zZXR1cChpZlhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CiAgICAgaW50ICAgICAgICAgICAgIGlmWFRhYmxlX3VuZG9fY2xlYW51cChpZlhUYWJsZV9yb3dyZXFfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOwpAQCAtNDM4LDcgKzQzOCw3IEBACiAKIAogICAgIGludCAgICAgICAgICAgICBpZlhUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMoaWZYVGFibGVfcm93cmVxX2N0eCAqIGN0eCk7Ci0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAvKgogICAgICAqIERVTU1ZIG1hcmtlcnMsIGlnbm9yZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oCmluZGV4IDcyOGVmNTcuLjY3ZTE5OTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9jb25zdGFudHMuaAorKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfY29uc3RhbnRzLmgKQEAgLTY3LDcgKzY3LDExIEBACiAgICAgICogVE9ETzo0MDU6cjogUmV2aWV3IElGWFRBQkxFX1NFVFRBQkxFX0NPTFMgbWFjcm8uCiAgICAgICogT1IgdG9nZXRoZXIgYWxsIHRoZSB3cml0YWJsZSBjb2xzLgogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNkZWZpbmUgSUZYVEFCTEVfU0VUVEFCTEVfQ09MUyAoQ09MVU1OX0lGTElOS1VQRE9XTlRSQVBFTkFCTEVfRkxBRyB8IENPTFVNTl9JRkFMSUFTX0ZMQUcpCisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisjZGVmaW5lIElGWFRBQkxFX1NFVFRBQkxFX0NPTFMgMAorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAgICAgLyoKICAgICAgKiBOT1RFUyBvbiBlbnVtcwogICAgICAqID09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggMTUwNzRlYS4uMjNiNTBkMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsOCBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00OCw2ICs1MCwxNiBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlmWFRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNhY2hlX2ZpbmRfYnlfb2lkKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MSwxOSArOTMsMjMgQEAKIHN0YXRpYyB2b2lkICAgICBfaWZYVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlmWFRhYmxlX2ludGVyZmFjZV9jdHggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaWZYVGFibGVfY29udGFpbmVyX2dldCh2b2lkKQogewogICAgIHJldHVybiBpZlhUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfUkVHSVNUUkFUSU9OX0dFVAogaWZYVGFibGVfcmVnaXN0cmF0aW9uICoKIGlmWFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaWZYVGFibGVfaWZfY3R4LnVzZXJfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaWZYVGFibGVfcmVnaXN0cmF0aW9uICoKIGlmWFRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaWZYVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtMTAxLDEyICsxMTcsMTUgQEAKICAgICBpZlhUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGWFRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lGWFRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlmWFRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGlmWFRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogdV9pbnQKIGlmWFRhYmxlX2RpcnR5X2dldCh2b2lkKQpAQCAtMTMwLDcgKzE0OSw3IEBACiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlhUYWJsZV9wb3N0X3JlcXVlc3Q7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlhUYWJsZV9vYmplY3RfbG9va3VwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZYVGFibGVfZ2V0X3ZhbHVlczsKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaWZYVGFibGVfY2hlY2tfb2JqZWN0czsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lmWFRhYmxlX3VuZG9fc2V0dXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pZlhUYWJsZV9zZXRfdmFsdWVzOwpAQCAtMTQ1LDcgKzE2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciwgaW50IGNvbHVtbik7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIGlmWFRhYmxlX2RhdGEgICppZlhUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpOwogCkBAIC0yMjMsNyArMjQyLDcgQEAKICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaWZYVGFibGVfcG9zdF9yZXF1ZXN0OwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yNDYsNyArMjY1LDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfaWZYVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAgICAgKgpAQCAtMjYwLDExICsyNzksMTQgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUoImlmWFRhYmxlIiwgaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZYVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlhUYWJsZV9vaWRfc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fQkFCWV9TVEVQCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIQU5ETEVSX0NBTl9SV1JJVEUKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fQkFCWV9TVEVQIHwKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURQorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkKKyNlbmRpZiAgICAgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KKyAgICAgICAgICAgICk7CisKICAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBpZlhUYWJsZVxuIik7CiAgICAgICAgIHJldHVybjsKQEAgLTI4Miw3ICszMDQsNyBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMzA1LDcgKzMyNyw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CkBAIC0zNTIsNiArMzc0LDcgQEAKICAqIEBpbnRlcm5hbAogICogU2h1dGRvd24gdGhlIHRhYmxlIGlmWFRhYmxlCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9TSFVURE9XTl9JTlRFUkZBQ0UKIHZvaWQKIF9pZlhUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoaWZYVGFibGVfcmVnaXN0cmF0aW9uICogcmVnX3B0cikKIHsKQEAgLTM2MCw2ICszODMsNyBAQAogICAgICAqLwogICAgIF9pZlhUYWJsZV9jb250YWluZXJfc2h1dGRvd24oJmlmWFRhYmxlX2lmX2N0eCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JRlhUQUJMRV9TSFVURE9XTl9JTlRFUkZBQ0UgKi8KIAogdm9pZAogaWZYVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpCkBAIC05MTIsNyArOTM2LDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pZlhUYWJsZV9nZXRfdmFsdWVzICovCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTExOTMsNyArMTIxNyw2IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaWZYVGFibGVfY2hlY2tfb2JqZWN0cyAqLwogCi0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIFNFVDogY2hlY2sgZGVwZW5kZW5jaWVzCkBAIC0xNzA5LDcgKzE3MzIsOCBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaWZYVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTE3OTgsMTMgKzE4MjIsMTcgQEAKIHZvaWQKIGlmWFRhYmxlX2NvbnRhaW5lcl9pbml0X3BlcnNpc3RlbmNlKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCiB7CisgICAgbmV0c25tcF9jb250YWluZXIgKipjb250YWluZXJfcDsKICAgICBpbnQgICAgICAgICAgICAgcmM7CiAKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcihOVUxMLCByb3dfdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lmWFRhYmxlX2NvbnRhaW5lcl9yb3dfcmVzdG9yZSwgTlVMTCwgTlVMTCk7CisgICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyKTsKKyAgICBjb250YWluZXJfcCA9IG5ldHNubXBfbWVtZHVwKCZjb250YWluZXIsIHNpemVvZihjb250YWluZXIpKTsKKyAgICBuZXRzbm1wX2Fzc2VydChjb250YWluZXJfcCk7CiAgICAgcmMgPSBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaWZYVGFibGVfY29udGFpbmVyX3NhdmVfcm93cywgY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2lmWFRhYmxlX2NvbnRhaW5lcl9zYXZlX3Jvd3MsIGNvbnRhaW5lcl9wKTsKIAogICAgIGlmIChyYyAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgcmVnaXN0ZXJpbmcgZm9yIFNUT1JFX0RBVEEgY2FsbGJhY2sgIgpAQCAtMTgyNyw3ICsxODU1LDcgQEAKICAgICAvKgogICAgICAqIHNhdmUgYWxsIHJvd3MKICAgICAgKi8KLSAgICBDT05UQUlORVJfRk9SX0VBQ0goKG5ldHNubXBfY29udGFpbmVyICopIGNsaWVudGFyZywKKyAgICBDT05UQUlORVJfRk9SX0VBQ0goKihuZXRzbm1wX2NvbnRhaW5lciAqKiljbGllbnRhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKQogICAgICAgICAgICAgICAgICAgICAgICBfaWZYVGFibGVfY29udGFpbmVyX3Jvd19zYXZlLCB0eXBlKTsKIApAQCAtMjE0NCw2ICsyMTcyLDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpZlhUYWJsZV9yb3dyZXFfY3R4ICoKIGlmWFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpZlhUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQogewpAQCAtMjE2OSwzICsyMTk4LDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSUZYVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGUuaAppbmRleCBhMmI0ZWU0Li4yYzczMWE2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlLmgKQEAgLTIyLDYgKzIyLDEwIEBACiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXgpCiBjb25maWdfcmVxdWlyZShpcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bCkKKyNlbGlmIGRlZmluZWQoIGZyZWVic2Q3ICkgfHwgZGVmaW5lZCggbmV0YnNkNSApIHx8IGRlZmluZWQoIG9wZW5ic2Q0ICkgfHwgZGVmaW5lZCggZHJhZ29uZmx5ICkgfHwgZGVmaW5lZCggZGFyd2luICkKK2NvbmZpZ19yZXF1aXJlKGlwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bCkKKyNlbGlmIGRlZmluZWQoc29sYXJpczIpICYmIGRlZmluZWQoIEhBVkVfTUlCMl9JUElGU1RBVFNFTlRSWV9UICkKK2NvbmZpZ19yZXF1aXJlKGlwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3NvbGFyaXMpCiAjZWxzZQogY29uZmlnX2Vycm9yKHRoZSByb3V0ZSBkYXRhIGFjY2VzcyBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKaW5kZXggZTI5MDFmOS4uODRjMTgxMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKQEAgLTI0Miw4ICsyNDIsNyBAQAogICAgIGxocy0+cnRfcHJvdG8gPSByaHMtPnJ0X3Byb3RvOwogCiAjaWZkZWYgVVNJTkdfSVBfRk9SV0FSRF9NSUJfSVBDSURSUk9VVEVUQUJMRV9JUENJRFJST1VURVRBQkxFX01PRFVMRQotICAgIGlmIChOVUxMICE9IGxocy0+cnRfaW5mbykKLSAgICAgICAgU05NUF9GUkVFKGxocy0+cnRfaW5mbyk7CisgICAgU05NUF9GUkVFKGxocy0+cnRfaW5mbyk7CiAgICAgaWYgKE5VTEwgIT0gcmhzLT5ydF9pbmZvKQogICAgICAgICBzbm1wX2Nsb25lX21lbSgodm9pZCAqKikgJmxocy0+cnRfaW5mbywgcmhzLT5ydF9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICByaHMtPnJ0X2luZm9fbGVuICogc2l6ZW9mKG9pZCkpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMKaW5kZXggODE1YzQxNS4uZmY4OTE2MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bC5jCkBAIC01Niw2ICs1Niw3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvcm91dGUuaD4KIAogI2luY2x1ZGUgImlwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuaCIKQEAgLTk3LDcgKzk4LDcgQEAKIAogICAgIHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19SQVcsIE5FVFNOTVBfUk9VVEVfV1JJVEVfUFJPVE9DT0wpOwogICAgIGlmIChzIDwgMCkgewotICAgICAgICBzbm1wX2xvZ19wZXJyb3IoInNvY2tldCIpOworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoIm5ldHNubXBfaW9jdGxfcm91dGVfc2V0X3Y0OiBzb2NrZXQiKTsKICAgICAgICAgcmV0dXJuIC0zOwogICAgIH0KIApAQCAtMTA2LDcgKzEwNyw3IEBACiAgICAgZHN0LnNpbl9mYW1pbHkgPSBBRl9JTkVUOwogICAgIG1lbWNweSgmZHN0LnNpbl9hZGRyLnNfYWRkciwgZW50cnktPnJ0X2Rlc3QsIDQpOwogICAgIERFQlVHU1RSID0gaW5ldF9udG9hKGRzdC5zaW5fYWRkcik7Ci0gICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZSIsIioqKiByb3V0ZSB0byAlc1xuIiwgREVCVUdTVFIpKTsKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlIiwiYWRkIHJvdXRlIHRvICVzXG4iLCBERUJVR1NUUikpOwogCiAgICAgZ2F0ZXdheS5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICBtZW1jcHkoJmdhdGV3YXkuc2luX2FkZHIuc19hZGRyLCBlbnRyeS0+cnRfbmV4dGhvcCwgNCk7CkBAIC0xMTQsNyArMTE1LDEwIEBACiAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZSIsIiAgICB2aWEgJXNcbiIsIERFQlVHU1RSKSk7CiAKICAgICBtYXNrLnNpbl9mYW1pbHkgPSBBRl9JTkVUOwotICAgIG1hc2suc2luX2FkZHIuc19hZGRyID0gaHRvbmwoMCk7CisgICAgaWYgKGVudHJ5LT5ydF9wZnhfbGVuICE9IDApCisJbWFzay5zaW5fYWRkci5zX2FkZHIgPSBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X21hc2soZW50cnktPnJ0X3BmeF9sZW4pOworICAgIGVsc2UKKwltYXNrLnNpbl9hZGRyLnNfYWRkciA9IGVudHJ5LT5ydF9tYXNrOwogICAgIERFQlVHU1RSID0gaW5ldF9udG9hKG1hc2suc2luX2FkZHIpOwogICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGUiLCIgICAgbWFzayAlc1xuIiwgREVCVUdTVFIpKTsKIApAQCAtMTMzLDMwICsxMzcsMzEgQEAKICNlbmRpZgogCiAgICAgcmMgPSBpb2N0bChzLCBTSU9DQUREUlQsIChjYWRkcl90KSAmIHJvdXRlKTsKLSAgICBjbG9zZShzKTsKICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgIHNubXBfbG9nX3BlcnJvcigiaW9jdGwiKTsKLSAgICAgICAgcmV0dXJuIC00OworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoIm5ldHNubXBfaW9jdGxfcm91dGVfc2V0X3Y0OiBpb2N0bCIpOworICAgICAgICByYyA9IC00OwogICAgIH0KKyAgICBjbG9zZShzKTsKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiByYzsKIH0KICNlbmRpZgogCiAjaWYgZGVmaW5lZCBTSU9DREVMUlQgJiYgIWRlZmluZWQoaXJpeDYpCiBpbnQgX25ldHNubXBfaW9jdGxfcm91dGVfZGVsZXRlX3Y0KG5ldHNubXBfcm91dGVfZW50cnkgKiBlbnRyeSkKIHsKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gZHN0OworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBkc3QsIG1hc2s7CiAgICAgc3RydWN0IHNvY2thZGRyX2luIGdhdGV3YXk7CiAgICAgaW50ICAgICAgICAgICAgIHMsIHJjOwogICAgIFJURU5UUlkgICAgICAgICByb3V0ZTsKKyAgICBjaGFyICAgICAgICAgICAqREVCVUdTVFI7CiAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGVudHJ5KTsgLyogY2hlY2tlZCBpbiBuZXRzbm1wX2FyY2hfcm91dGVfZGVsZXRlICovCiAgICAgbmV0c25tcF9hc3NlcnQoKDQgPT0gZW50cnktPnJ0X2Rlc3RfbGVuKSAmJiAoNCA9PSBlbnRyeS0+cnRfbmV4dGhvcF9sZW4pKTsKIAogICAgIHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19SQVcsIE5FVFNOTVBfUk9VVEVfV1JJVEVfUFJPVE9DT0wpOwogICAgIGlmIChzIDwgMCkgewotICAgICAgICBzbm1wX2xvZ19wZXJyb3IoInNvY2tldCIpOworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoIm5ldHNubXBfaW9jdGxfcm91dGVfZGVsZXRlX3Y0OiBzb2NrZXQiKTsKICAgICAgICAgcmV0dXJuIC0zOwogICAgIH0KIApAQCAtMTY0LDExICsxNjksMjAgQEAKIAogICAgIGRzdC5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKICAgICBtZW1jcHkoJmRzdC5zaW5fYWRkci5zX2FkZHIsIGVudHJ5LT5ydF9kZXN0LCA0KTsKKyAgICBERUJVR1NUUiA9IGluZXRfbnRvYShkc3Quc2luX2FkZHIpOworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGUiLCJkZWwgcm91dGUgdG8gJXNcbiIsIERFQlVHU1RSKSk7CisKKyAgICBtYXNrLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgIGlmIChlbnRyeS0+cnRfcGZ4X2xlbiAhPSAwKQorCW1hc2suc2luX2FkZHIuc19hZGRyID0gbmV0c25tcF9pcGFkZHJlc3NfaXB2NF9tYXNrKGVudHJ5LT5ydF9wZnhfbGVuKTsKKyAgICBlbHNlCisJbWFzay5zaW5fYWRkci5zX2FkZHIgPSBlbnRyeS0+cnRfbWFzazsKIAogICAgIGdhdGV3YXkuc2luX2ZhbWlseSA9IEFGX0lORVQ7CiAgICAgbWVtY3B5KCZnYXRld2F5LnNpbl9hZGRyLnNfYWRkciwgZW50cnktPnJ0X25leHRob3AsIDQpOwogCiAgICAgbWVtY3B5KCZyb3V0ZS5ydF9kc3QsICZkc3QsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKyAgICBtZW1jcHkoJnJvdXRlLnJ0X2dlbm1hc2ssICZtYXNrLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSk7CiAgICAgbWVtY3B5KCZyb3V0ZS5ydF9nYXRld2F5LCAmZ2F0ZXdheSwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwogCiAgICAgaWYgKDMyID09IGVudHJ5LT5ydF9wZnhfbGVuKQpAQCAtMTgyLDExICsxOTYsMTEgQEAKICNlbmRpZgogCiAgICAgcmMgPSBpb2N0bChzLCBTSU9DREVMUlQsIChjYWRkcl90KSAmIHJvdXRlKTsKLSAgICBjbG9zZShzKTsKICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgIHNubXBfbG9nX3BlcnJvcigiaW9jdGwiKTsKKyAgICAgICAgc25tcF9sb2dfcGVycm9yKCJuZXRzbm1wX2lvY3RsX3JvdXRlX2RlbGV0ZV92NDogaW9jdGwiKTsKICAgICAgICAgcmMgPSAtNDsKICAgICB9CisgICAgY2xvc2Uocyk7CiAKICAgICByZXR1cm4gcmM7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYwppbmRleCBmOGQ3OGE5Li4wZjgwZmU4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmMKQEAgLTcyLDcgKzcyLDcgQEAKICAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgIHJ0ZW50X25hbWVbMzJdOwogICAgICAgICBpbnQgICAgICAgICAgICAgcmVmY250LCByYzsKLSAgICAgICAgdWludDMyX3QgICAgICAgIGRlc3QsIG5leHRob3AsIG1hc2ssIHRtcF9tYXNrOworICAgICAgICB1aW50MzJfdCAgICAgICAgZGVzdCwgbmV4dGhvcCwgbWFzazsKICAgICAgICAgdW5zaWduZWQgICAgICAgIGZsYWdzLCB1c2U7CiAKICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9lbnRyeV9jcmVhdGUoKTsKQEAgLTg5LDcgKzg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICogWFhYOiBmaXggdHlwZSBvZiB0aGUgYXJncyAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgICZmbGFncywgJnJlZmNudCwgJnVzZSwgJmVudHJ5LT5ydF9tZXRyaWMxLAotICAgICAgICAgICAgICAgICAgICAmdG1wX21hc2spOworICAgICAgICAgICAgICAgICAgICAmbWFzayk7CiAgICAgICAgIERFQlVHTVNHVEwoKCI5OmFjY2Vzczpyb3V0ZTpjb250YWluZXIiLCAibGluZSB8JXN8XG4iLCBsaW5lKSk7CiAgICAgICAgIGlmICg4ICE9IHJjKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLApAQCAtMTIxLDEwICsxMjEsOCBAQAogICAgICAgICAgKi8KICAgICAgICAgZW50cnktPm5zX3J0X2luZGV4ID0gKysoKmluZGV4KTsKIAotICAgICAgICBtYXNrID0gaHRvbmwodG1wX21hc2spOwotCiAjaWZkZWYgVVNJTkdfSVBfRk9SV0FSRF9NSUJfSVBDSURSUk9VVEVUQUJMRV9JUENJRFJST1VURVRBQkxFX01PRFVMRQotICAgICAgICBlbnRyeS0+cnRfbWFzayA9IG1hc2s7CisgICAgICAgIG1lbWNweSgmZW50cnktPnJ0X21hc2ssICZtYXNrLCA0KTsKICAgICAgICAgLyoqIGVudHJ5LT5ydF90b3MgPSBYWFg7ICovCiAgICAgICAgIC8qKiBydCBpbmZvID8/ICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3NvbGFyaXMuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3NvbGFyaXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDhhZDIyCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc29sYXJpcy5jCkBAIC0wLDAgKzEsMjU4IEBACisvKgorICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQkCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgIm1pYklJL21pYklJX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9yb3V0ZS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oPgorCisjaW5jbHVkZSA8aW5ldC9pcC5oPgorI2luY2x1ZGUgPGluZXQvbWliMi5oPgorCisjaW5jbHVkZSAiaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuaCIKKyNpbmNsdWRlICJpcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oIgorI2luY2x1ZGUgImlmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuaCIKKworc3RhdGljIGludCBfbG9hZF92NChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2xvbmcgKmNvdW50KTsKK3N0YXRpYyBpbnQgX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9sb25nICpjb3VudCk7CisKKy8qKiBhcmNoIHNwZWNpZmljIGxvYWQKKyAqIEBpbnRlcm5hbAorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBubyBjb250YWluZXIgc3BlY2lmaWVkCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBvcGVuIGRhdGEgZmlsZQorICovCitpbnQKK25ldHNubXBfYWNjZXNzX3JvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICB1X2xvbmcgICAgICAgICAgY291bnQgPSAwOworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAicm91dGVfY29udGFpbmVyX2FyY2hfbG9hZCAoZmxhZ3MgJXgpXG4iLCBsb2FkX2ZsYWdzKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc19yb3V0ZVxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByYyA9IF9sb2FkX3Y0KGNvbnRhaW5lciwgJmNvdW50KTsKKyAgICAKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgaWYoKDAgIT0gcmMpIHx8IChsb2FkX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfUk9VVEVfTE9BRF9JUFY0X09OTFkpKQorICAgICAgICByZXR1cm4gcmM7CisKKyAgICAvKgorICAgICAqIGxvYWQgaXB2Ni4gaXB2NiBtb2R1bGUgbWlnaHQgbm90IGJlIGxvYWRlZCwKKyAgICAgKiBzbyBpZ25vcmUgLTIgZXJyIChmaWxlIG5vdCBmb3VuZCkKKyAgICAgKi8KKyAgICByYyA9IF9sb2FkX3Y2KGNvbnRhaW5lciwgJmNvdW50KTsKKyAgICBpZiAoLTIgPT0gcmMpCisgICAgICAgIHJjID0gMDsKKyNlbmRpZgorCisgICAgcmV0dXJuIHJjOworfQorCisvKgorICogY3JlYXRlIGEgbmV3IGVudHJ5CisgKi8KK2ludAorbmV0c25tcF9hcmNoX3JvdXRlX2NyZWF0ZShuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKDQgIT0gZW50cnktPnJ0X2Rlc3RfbGVuKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczpyb3V0ZTpjcmVhdGUiLCAib25seSBpcHY0IHN1cHBvcnRlZFxuIikpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgLyogcmV0dXJuIF9uZXRzbm1wX2lvY3RsX3JvdXRlX3NldF92NChlbnRyeSk7ICovCisgICAgcmV0dXJuIC0yOworfQorCisvKgorICogY3JlYXRlIGEgbmV3IGVudHJ5CisgKi8KK2ludAorbmV0c25tcF9hcmNoX3JvdXRlX2RlbGV0ZShuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKDQgIT0gZW50cnktPnJ0X2Rlc3RfbGVuKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczpyb3V0ZTpjcmVhdGUiLCAib25seSBpcHY0IHN1cHBvcnRlZFxuIikpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgLyogcmV0dXJuIF9uZXRzbm1wX2lvY3RsX3JvdXRlX2RlbGV0ZV92NChlbnRyeSk7ICovCisgICAgcmV0dXJuIC0yOworfQorCisKK3N0YXRpYyBpbnQKK0lQX0NtcF9Sb3V0ZSh2b2lkICphZGRyLCB2b2lkICplcCkKK3sKKyAgICBtaWIyX2lwUm91dGVFbnRyeV90ICpFcCA9IGVwLCAqQWRkciA9IGFkZHI7CisKKyAgICBpZiAoKEVwLT5pcFJvdXRlRGVzdCA9PSBBZGRyLT5pcFJvdXRlRGVzdCkgJiYKKyAgICAgICAgKEVwLT5pcFJvdXRlTmV4dEhvcCA9PSBBZGRyLT5pcFJvdXRlTmV4dEhvcCkgJiYKKyAgICAgICAgKEVwLT5pcFJvdXRlVHlwZSA9PSBBZGRyLT5pcFJvdXRlVHlwZSkgJiYKKyAgICAgICAgKEVwLT5pcFJvdXRlUHJvdG8gPT0gQWRkci0+aXBSb3V0ZVByb3RvKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVNYXNrID09IEFkZHItPmlwUm91dGVNYXNrKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX21heF9mcmFnID09IEFkZHItPmlwUm91dGVJbmZvLnJlX21heF9mcmFnKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX3J0dCA9PSBBZGRyLT5pcFJvdXRlSW5mby5yZV9ydHQpICYmCisgICAgICAgIChFcC0+aXBSb3V0ZUluZm8ucmVfcmVmID09IEFkZHItPmlwUm91dGVJbmZvLnJlX3JlZikgJiYKKyAgICAgICAgKEVwLT5pcFJvdXRlSW5mby5yZV9mcmFnX2ZsYWcgPT0gQWRkci0+aXBSb3V0ZUluZm8ucmVfZnJhZ19mbGFnKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX3NyY19hZGRyID09IEFkZHItPmlwUm91dGVJbmZvLnJlX3NyY19hZGRyKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX2lyZV90eXBlID09IEFkZHItPmlwUm91dGVJbmZvLnJlX2lyZV90eXBlKSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX29icGt0ID09IEFkZHItPmlwUm91dGVJbmZvLnJlX29icGt0KSAmJgorICAgICAgICAoRXAtPmlwUm91dGVJbmZvLnJlX2licGt0ID09IEFkZHItPmlwUm91dGVJbmZvLnJlX2licGt0KQorICAgICAgICApCisgICAgICAgIHJldHVybiAoMCk7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gKDEpOyAgICAgICAgICAgICAvKiBOb3QgZm91bmQgKi8KK30KKworCitzdGF0aWMgaW50CitJUDZfQ21wX1JvdXRlKHZvaWQgKmFkZHIsIHZvaWQgKmVwKQoreworICAgIG1pYjJfaXB2NlJvdXRlRW50cnlfdCAqRXAgPSBlcCwgKkFkZHIgPSBhZGRyOworCisgICAgaWYgKChtZW1jbXAoJkVwLT5pcHY2Um91dGVEZXN0LCAmQWRkci0+aXB2NlJvdXRlRGVzdCwgMTYpID09IDApICYmCisgICAgICAgIChtZW1jbXAoJkVwLT5pcHY2Um91dGVOZXh0SG9wLCAmQWRkci0+aXB2NlJvdXRlTmV4dEhvcCwgMTYpID09IDApICYmCisgICAgICAgIChFcC0+aXB2NlJvdXRlVHlwZSA9PSBBZGRyLT5pcHY2Um91dGVUeXBlKSAmJgorICAgICAgICAoRXAtPmlwdjZSb3V0ZUluZm8ucmVfbWF4X2ZyYWcgPT0gQWRkci0+aXB2NlJvdXRlSW5mby5yZV9tYXhfZnJhZykgJiYKKyAgICAgICAgKEVwLT5pcHY2Um91dGVJbmZvLnJlX3J0dCA9PSBBZGRyLT5pcHY2Um91dGVJbmZvLnJlX3J0dCkgJiYKKyAgICAgICAgKEVwLT5pcHY2Um91dGVJbmZvLnJlX3JlZiA9PSBBZGRyLT5pcHY2Um91dGVJbmZvLnJlX3JlZikgJiYKKyAgICAgICAgKEVwLT5pcHY2Um91dGVJbmZvLnJlX2ZyYWdfZmxhZyA9PSBBZGRyLT5pcHY2Um91dGVJbmZvLnJlX2ZyYWdfZmxhZykgJiYKKyAgICAgICAgKG1lbWNtcCgmRXAtPmlwdjZSb3V0ZUluZm8ucmVfc3JjX2FkZHIsICZBZGRyLT5pcHY2Um91dGVJbmZvLnJlX3NyY19hZGRyLCAxNikgPT0gMCkgJiYKKyAgICAgICAgKEVwLT5pcHY2Um91dGVJbmZvLnJlX2lyZV90eXBlID09IEFkZHItPmlwdjZSb3V0ZUluZm8ucmVfaXJlX3R5cGUpICYmCisgICAgICAgIChFcC0+aXB2NlJvdXRlSW5mby5yZV9vYnBrdCA9PSBBZGRyLT5pcHY2Um91dGVJbmZvLnJlX29icGt0KSAmJgorICAgICAgICAoRXAtPmlwdjZSb3V0ZUluZm8ucmVfaWJwa3QgPT0gQWRkci0+aXB2NlJvdXRlSW5mby5yZV9pYnBrdCkKKyAgICAgICAgKQorICAgICAgICByZXR1cm4gKDApOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuICgxKTsgICAgICAgICAgICAgLyogTm90IGZvdW5kICovCit9CisKKworc3RhdGljIGludCBfbG9hZF92NChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2xvbmcgKmNvdW50KQoreworICAgIG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5OworICAgIG1pYjJfaXBSb3V0ZUVudHJ5X3QgQ3VyZW50cnksIE5leHRlbnRyeTsKKyAgICBpbnQgcmVxX3R5cGU7CisKKyAgICBmb3IgKE5leHRlbnRyeS5pcFJvdXRlRGVzdCA9ICh1X2xvbmcpIC0yLCByZXFfdHlwZSA9IEdFVF9GSVJTVDs7CisgICAgICAgICAgICAgTmV4dGVudHJ5ID0gQ3VyZW50cnksIHJlcV90eXBlID0gR0VUX05FWFQpIHsKKwlpZiAoZ2V0TWlic3RhdChNSUJfSVBfUk9VVEUsICZDdXJlbnRyeSwgc2l6ZW9mKG1pYjJfaXBSb3V0ZUVudHJ5X3QpLAorCQkgICAgICAgcmVxX3R5cGUsICZJUF9DbXBfUm91dGUsICZOZXh0ZW50cnkpICE9IDApCisJICAgIGJyZWFrOworI2lmZGVmIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUKKwlpZiAoQ3VyZW50cnkuaXBSb3V0ZUluZm8ucmVfaXJlX3R5cGUgJiBJUkVfQ0FDSEUpCisJICAgIGNvbnRpbnVlOworI2VuZGlmIC8qIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUgKi8KKwlpZiAoQ3VyZW50cnkuaXBSb3V0ZUluZm8ucmVfaXJlX3R5cGUgJiBJUkVfQlJPQURDQVNUKQorCSAgICBjb250aW51ZTsKKwllbnRyeSA9IG5ldHNubXBfYWNjZXNzX3JvdXRlX2VudHJ5X2NyZWF0ZSgpOworCUN1cmVudHJ5LmlwUm91dGVJZkluZGV4Lm9fYnl0ZXNbQ3VyZW50cnkuaXBSb3V0ZUlmSW5kZXgub19sZW5ndGhdID0gJ1wwJzsKKwllbnRyeS0+aWZfaW5kZXggPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfaW5kZXhfZmluZCgKKyAgICAgICAgICAgICAgICBDdXJlbnRyeS5pcFJvdXRlSWZJbmRleC5vX2J5dGVzKTsKKwllbnRyeS0+bnNfcnRfaW5kZXggPSBlbnRyeS0+aWZfaW5kZXg7CisKKwllbnRyeS0+cnRfZGVzdF90eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CisJZW50cnktPnJ0X2Rlc3RfbGVuID0gNDsKKwltZW1jcHkoZW50cnktPnJ0X2Rlc3QsICZDdXJlbnRyeS5pcFJvdXRlRGVzdCwgNCk7CisJbWVtY3B5KCZlbnRyeS0+cnRfbWFzaywgJkN1cmVudHJ5LmlwUm91dGVNYXNrLCA0KTsKKworCWVudHJ5LT5ydF9uZXh0aG9wX3R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNDsKKwllbnRyeS0+cnRfbmV4dGhvcF9sZW4gPSA0OworCW1lbWNweShlbnRyeS0+cnRfbmV4dGhvcCwgJkN1cmVudHJ5LmlwUm91dGVOZXh0SG9wLCA0KTsKKworCWVudHJ5LT5ydF9wZnhfbGVuID0gbmV0c25tcF9pcGFkZHJlc3NfaXB2NF9wcmVmaXhfbGVuKEN1cmVudHJ5LmlwUm91dGVNYXNrKTsKKwllbnRyeS0+cnRfdHlwZSA9IEN1cmVudHJ5LmlwUm91dGVUeXBlOworCWVudHJ5LT5ydF9wcm90byA9IEN1cmVudHJ5LmlwUm91dGVQcm90bzsKKwllbnRyeS0+cnRfYWdlID0gQ3VyZW50cnkuaXBSb3V0ZUFnZTsKKwllbnRyeS0+cnRfbWV0cmljMSA9IEN1cmVudHJ5LmlwUm91dGVNZXRyaWMxOworCWVudHJ5LT5ydF9tZXRyaWMyID0gQ3VyZW50cnkuaXBSb3V0ZU1ldHJpYzI7CisJZW50cnktPnJ0X21ldHJpYzMgPSBDdXJlbnRyeS5pcFJvdXRlTWV0cmljMzsKKwllbnRyeS0+cnRfbWV0cmljNCA9IEN1cmVudHJ5LmlwUm91dGVNZXRyaWM0OworCisJLyoKKwkgKiBpbnNlcnQgaW50byBjb250YWluZXIKKwkgKi8KKwlpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKKwkgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLCAiZXJyb3Igd2l0aCByb3V0ZV9lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKwkgICAgbmV0c25tcF9hY2Nlc3Nfcm91dGVfZW50cnlfZnJlZShlbnRyeSk7CisJICAgIGNvbnRpbnVlOworCX0KKwkqY291bnQrKzsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKworc3RhdGljIGludCBfbG9hZF92NihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2xvbmcgKmNvdW50KQoreworICAgIG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5OworICAgIG1pYjJfaXB2NlJvdXRlRW50cnlfdCBDdXJlbnRyeSwgTmV4dGVudHJ5OworICAgIGludCByZXFfdHlwZTsKKworICAgIG1lbXNldCgmTmV4dGVudHJ5LCAwLCBzaXplb2YoTmV4dGVudHJ5KSk7CisgICAgZm9yIChyZXFfdHlwZSA9IEdFVF9GSVJTVDs7CisgICAgICAgICAgICAgTmV4dGVudHJ5ID0gQ3VyZW50cnksIHJlcV90eXBlID0gR0VUX05FWFQpIHsKKwlpZiAoZ2V0TWlic3RhdChNSUJfSVA2X1JPVVRFLCAmQ3VyZW50cnksIHNpemVvZihtaWIyX2lwdjZSb3V0ZUVudHJ5X3QpLAorCQkgICAgICAgcmVxX3R5cGUsICZJUDZfQ21wX1JvdXRlLCAmTmV4dGVudHJ5KSAhPSAwKQorCSAgICBicmVhazsKKyNpZmRlZiBIQVZFX0RFRklORURfSVJFX0NBQ0hFCisJaWYgKEN1cmVudHJ5LmlwdjZSb3V0ZUluZm8ucmVfaXJlX3R5cGUgJiBJUkVfQ0FDSEUpCisJICAgIGNvbnRpbnVlOworI2VuZGlmIC8qIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUgKi8KKwlpZiAoQ3VyZW50cnkuaXB2NlJvdXRlSW5mby5yZV9pcmVfdHlwZSAmIElSRV9CUk9BRENBU1QpCisJICAgIGNvbnRpbnVlOworCWVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfcm91dGVfZW50cnlfY3JlYXRlKCk7CisJQ3VyZW50cnkuaXB2NlJvdXRlSWZJbmRleC5vX2J5dGVzW0N1cmVudHJ5LmlwdjZSb3V0ZUlmSW5kZXgub19sZW5ndGhdID0gJ1wwJzsKKwllbnRyeS0+aWZfaW5kZXggPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfaW5kZXhfZmluZCgKKyAgICAgICAgICAgICAgICBDdXJlbnRyeS5pcHY2Um91dGVJZkluZGV4Lm9fYnl0ZXMpOworCWVudHJ5LT5uc19ydF9pbmRleCA9IGVudHJ5LT5pZl9pbmRleDsKKworCWVudHJ5LT5ydF9kZXN0X3R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKKwllbnRyeS0+cnRfZGVzdF9sZW4gPSAxNjsKKwltZW1jcHkoZW50cnktPnJ0X2Rlc3QsICZDdXJlbnRyeS5pcHY2Um91dGVEZXN0LCAxNik7CisKKwllbnRyeS0+cnRfbmV4dGhvcF90eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjY7CisJZW50cnktPnJ0X25leHRob3BfbGVuID0gMTY7CisJbWVtY3B5KGVudHJ5LT5ydF9uZXh0aG9wLCAmQ3VyZW50cnkuaXB2NlJvdXRlTmV4dEhvcCwgMTYpOworCisJZW50cnktPnJ0X3BmeF9sZW4gPSBDdXJlbnRyeS5pcHY2Um91dGVQZnhMZW5ndGg7CisJZW50cnktPnJ0X3R5cGUgPSBDdXJlbnRyeS5pcHY2Um91dGVUeXBlOworCWVudHJ5LT5ydF9wcm90byA9IEN1cmVudHJ5LmlwdjZSb3V0ZVByb3RvY29sOworCWVudHJ5LT5ydF9hZ2UgPSBDdXJlbnRyeS5pcHY2Um91dGVBZ2U7CisJZW50cnktPnJ0X3BvbGljeSA9IGNhbGxvYygzLCBzaXplb2Yob2lkKSk7CisJZW50cnktPnJ0X3BvbGljeV9sZW4gPSAzOworCWVudHJ5LT5ydF9wb2xpY3lbMl0gPSBDdXJlbnRyeS5pcHY2Um91dGVQb2xpY3k7CisJZW50cnktPnJ0X21ldHJpYzEgPSBDdXJlbnRyeS5pcHY2Um91dGVNZXRyaWM7CisJZW50cnktPnJ0X21ldHJpYzIgPSBDdXJlbnRyeS5pcHY2Um91dGVXZWlnaHQ7CisKKwkvKgorCSAqIGluc2VydCBpbnRvIGNvbnRhaW5lcgorCSAqLworCWlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkgeworCSAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsICJlcnJvciB3aXRoIHJvdXRlX2VudHJ5OiBpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworCSAgICBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9lbnRyeV9mcmVlKGVudHJ5KTsKKwkgICAgY29udGludWU7CisJfQorCSpjb3VudCsrOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc3lzY3RsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRmOTI2YgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX3N5c2N0bC5jCkBAIC0wLDAgKzEsNDM2IEBACisvKgorICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQkCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgIm1pYklJL21pYklJX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9yb3V0ZS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oPgorI2luY2x1ZGUgPG5ldC9pZl9kbC5oPgorCisjaW5jbHVkZSAiaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc3lzY3RsLmgiCisjaW5jbHVkZSAiaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9jb25zdGFudHMuaCIKKyNpbmNsdWRlICJpZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmgiCisKK3N0YXRpYyBpbnQgX2xvYWRfaXB2NChuZXRzbm1wX2NvbnRhaW5lciosIGludCopOworc3RhdGljIGludCBfbG9hZF9pcHY2KG5ldHNubXBfY29udGFpbmVyKiwgaW50Kik7CitzdGF0aWMgaW50IF9jcmVhdGVfaXB2NChuZXRzbm1wX3JvdXRlX2VudHJ5ICopOworc3RhdGljIGludCBfY3JlYXRlX2lwdjYobmV0c25tcF9yb3V0ZV9lbnRyeSAqKTsKK3N0YXRpYyBpbnQgX2RlbGV0ZV9pcHY0KG5ldHNubXBfcm91dGVfZW50cnkgKik7CitzdGF0aWMgaW50IF9kZWxldGVfaXB2NihuZXRzbm1wX3JvdXRlX2VudHJ5ICopOworCisjaWYgIWRlZmluZWQoU0FfU0laRSkgJiYgIWRlZmluZWQoUlRfUk9VTkRVUCkKKyNkZWZpbmUgUlRfUk9VTkRVUChhKSAgXAorICAgICAgICAoKGEpID4gMCA/ICgxICsgKCgoYSkgLSAxKSB8IChzaXplb2YobG9uZykgLSAxKSkpIDogc2l6ZW9mKGxvbmcpKQorI2VuZGlmCisjaWZuZGVmIFNBX1NJWkUKKyNkZWZpbmUgU0FfU0laRSh4KSBSVF9ST1VORFVQKCgoc3RydWN0IHNvY2thZGRyICopKHgpKS0+c2FfbGVuKQorI2VuZGlmCisKKy8qKiBhcmNoIHNwZWNpZmljIGxvYWQKKyAqIEBpbnRlcm5hbAorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBubyBjb250YWluZXIgc3BlY2lmaWVkCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBhY2Nlc3MgZGF0YSBzb3VyY2UKKyAqLworaW50CituZXRzbm1wX2FjY2Vzc19yb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsCisJCQkJCSB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCBjb3VudCwgZXJyOworCisgICAgZXJyID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwgInJvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWRcbiIpKTsKKworICAgIGlmIChjb250YWluZXIgPT0gTlVMTCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3JvdXRlXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGVyciA9IF9sb2FkX2lwdjQoY29udGFpbmVyLCAmY291bnQpOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJfbG9hZF9pcHY0IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChlcnIgIT0gMCB8fCBsb2FkX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfUk9VVEVfTE9BRF9JUFY0X09OTFkpCisJcmV0dXJuIGVycjsKKworICAgIGVyciA9IF9sb2FkX2lwdjYoY29udGFpbmVyLCAmY291bnQpOworICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICBORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJfbG9hZF9pcHY2IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworb3V0OgorICAgIHJldHVybiAoZXJyID09IDAgPyAwIDogLTMpOworfQorCisvKiogYXJjaCBzcGVjaWZpYyBuZXcgcm91dGUgZW50cnkgY3JlYXRpb24KKyAqIEBpbnRlcm5hbAorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBpbnZhbGlkIGVudHJ5IHNwZWNpZmllZAorICogQHJldHZhbCAtMiBjb3VsZCBub3QgY3JlYXRlIHJvdXRlIGVudHJ5CisgKi8KK2ludAorbmV0c25tcF9hcmNoX3JvdXRlX2NyZWF0ZShuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpbnQgZXJyOworCisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHN3aXRjaCAoZW50cnktPnJ0X2Rlc3RfdHlwZSkgeworICAgIGNhc2UgSU5FVEFERFJFU1NUWVBFX0lQVjQ6CisgICAgICAgIGVyciA9IF9jcmVhdGVfaXB2NChlbnRyeSk7CisgICAgICAgIGJyZWFrOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBjYXNlIElORVRBRERSRVNTVFlQRV9JUFY2OgorICAgICAgICBlcnIgPSBfY3JlYXRlX2lwdjYoZW50cnkpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIGVyciA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIChlcnIgPT0gMCA/IDAgOiAtMik7Cit9CisKKy8qKiBhcmNoIHNwZWNpZmljIG5ldyByb3V0ZSBlbnRyeSBkZWxldGlvbgorICogQGludGVybmFsCisgKgorICogQHJldHZhbCAgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGludmFsaWQgZW50cnkgc3BlY2lmaWVkCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBkZWxldGUgcm91dGUgZW50cnkKKyAqLworaW50CituZXRzbm1wX2FyY2hfcm91dGVfZGVsZXRlKG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5KQoreworICAgIGludCBlcnI7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgInJvdXRlX2NvbnRhaW5lcl9hcmNoX2RlbGV0ZVxuIikpOworCisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHN3aXRjaCAoZW50cnktPnJ0X2Rlc3RfdHlwZSkgeworICAgIGNhc2UgSU5FVEFERFJFU1NUWVBFX0lQVjQ6CisgICAgICAgIGVyciA9IF9kZWxldGVfaXB2NChlbnRyeSk7CisgICAgICAgIGJyZWFrOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBjYXNlIElORVRBRERSRVNTVFlQRV9JUFY2OgorICAgICAgICBlcnIgPSBfZGVsZXRlX2lwdjYoZW50cnkpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CisgICAgICAgIGVyciA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIChlcnIgPT0gMCA/IDAgOiAtMik7Cit9CisKKyNpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKG5ldGJzZDQpIHx8IGRlZmluZWQob3BlbmJzZCkgfHwgZGVmaW5lZChkYXJ3aW4pCitzdGF0aWMgaW50CitfdHlwZV9mcm9tX2ZsYWdzKGludCBmbGFncykKK3sKKyAgICBpZiAoZmxhZ3MgJiBSVEZfVVApIHsKKyAgICAgICAgaWYgKGZsYWdzICYgUlRGX0JMQUNLSE9MRSkKKyAgICAgICAgICAgIHJldHVybiBJTkVUQ0lEUlJPVVRFVFlQRV9SRUpFQ1Q7CisjaWZkZWYgUlRGX0xPQ0FMCisgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgUlRGX0xPQ0FMKQorICAgICAgICAgICAgcmV0dXJuIElORVRDSURSUk9VVEVUWVBFX0xPQ0FMOworI2VuZGlmCisgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgUlRGX0dBVEVXQVkpCisgICAgICAgICAgICByZXR1cm4gSU5FVENJRFJST1VURVRZUEVfUkVNT1RFOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gSU5FVENJRFJST1VURVRZUEVfT1RIRVI7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisKK3N0YXRpYyBpbnQKK19sb2FkX3JvdXRpbmdfdGFibGVfZnJvbV9zeXNjdGwobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgaW50ICppbmRleCwKKyAgICBpbnQgZmFtaWx5KQoreworICAgIGNoYXIgKmJ1ZiwgKmxpbSwgKm5leHQ7CisgICAgaW50IG1pYls2XTsKKyAgICBzaXplX3QgbmVlZGVkOworICAgIGludCBlcnI7CisgICAgdV9jaGFyIGRlc3RfbGVuLCBkZXN0X3R5cGU7CisgICAgc3RydWN0IHJ0X21zZ2hkciAqcnRtOworCisgICAgYnVmID0gTlVMTDsKKyAgICBlcnIgPSAwOworCisgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUKSB7CisgICAgICAgIGRlc3RfbGVuID0gNDsKKyAgICAgICAgZGVzdF90eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CisgICAgfSBlbHNlIGlmIChmYW1pbHkgPT0gQUZfSU5FVDYpIHsKKyAgICAgICAgZGVzdF9sZW4gPSAxNjsKKyAgICAgICAgZGVzdF90eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjY7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyID0gRUlOVkFMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBtaWJbMF0gPSBDVExfTkVUOworICAgIG1pYlsxXSA9IFBGX1JPVVRFOworICAgIG1pYlsyXSA9IDA7CisgICAgbWliWzNdID0gZmFtaWx5OworICAgIG1pYls0XSA9IE5FVF9SVF9EVU1QOworICAgIG1pYls1XSA9IDA7CisKKyAgICBpZiAoc3lzY3RsKG1pYiwgKHNpemVvZihtaWIpIC8gc2l6ZW9mKG1pYlswXSkpLCBOVUxMLCAmbmVlZGVkLCBOVUxMLAorICAgICAgICAwKSA9PSAtMSkgeworICAgICAgICBlcnIgPSBlcnJubzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgaWYgKChidWYgPSBtYWxsb2MobmVlZGVkKSkgPT0gTlVMTCkgeworICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGlmIChzeXNjdGwobWliLCAoc2l6ZW9mKG1pYikgLyBzaXplb2YobWliWzBdKSksIGJ1ZiwgJm5lZWRlZCwgTlVMTCwKKyAgICAgICAgMCkgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGxpbSA9IGJ1ZiArIG5lZWRlZDsKKworICAgIGZvciAobmV4dCA9IGJ1ZjsgbmV4dCA8IGxpbTsgbmV4dCArPSBydG0tPnJ0bV9tc2dsZW4pIHsgICAgCisJc3RydWN0IHNvY2thZGRyICppZl9uYW1lID0gTlVMTCwgKmlmX2FkZHIgPSBOVUxMOworCXN0cnVjdCBzb2NrYWRkciAqZGVzdF9zYSA9IE5VTEwsICpnYXRld2F5X3NhID0gTlVMTCwgKm5ldG1hc2tfc2EgPSBOVUxMOworCW5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5OworCWNoYXIgKmFkZHJfcHRyOworCisgICAgICAgIHJ0bSA9IChzdHJ1Y3QgcnRfbXNnaGRyKiluZXh0OworCisgICAgICAgIC8qIAorICAgICAgICAgKiBTb21lIGNvZGUgaW4gbmV0c3RhdCBjaGVja3MgZm9yIHRoaXMgKCJuZXRtYXNrcyBkb25lIiBjYXNlKS4KKyAgICAgICAgICogRmlsdGVyIHRoaXMgb3V0IChJIGRvbid0IGtub3cgd2h5IGl0IHNob3VsZCBleGlzdCkuCisgICAgICAgICAqLworICAgICAgICBpZiAocnRtLT5ydG1fYWRkcnMgPT0gUlRBX0RTVCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfcm91dGVfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChlbnRyeSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIC0zOworICAgICAgICBtZW1zZXQoZW50cnktPnJ0X2Rlc3QsIDAsIGRlc3RfbGVuKTsKKyAgICAgICAgZW50cnktPnJ0X21hc2sgPSAwOworICAgICAgICBtZW1zZXQoZW50cnktPnJ0X25leHRob3AsIDAsIGRlc3RfbGVuKTsKKworICAgICAgICBhZGRyX3B0ciA9IChjaGFyICopKHJ0bSArIDEpOworCisJaWYgKHJ0bS0+cnRtX2FkZHJzICYgIFJUQV9EU1QpIHsKKwkgICAgZGVzdF9zYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyX3B0cjsKKwkgICAgYWRkcl9wdHIgKz0gU0FfU0laRShkZXN0X3NhKTsKKwl9CisJaWYgKHJ0bS0+cnRtX2FkZHJzICYgIFJUQV9HQVRFV0FZKSB7CisJICAgIGdhdGV3YXlfc2EgPSAoc3RydWN0IHNvY2thZGRyICopYWRkcl9wdHI7CisJICAgIGFkZHJfcHRyICs9IFNBX1NJWkUoZ2F0ZXdheV9zYSk7CisJfQorCWlmIChydG0tPnJ0bV9hZGRycyAmICBSVEFfTkVUTUFTSykgeworCSAgICBuZXRtYXNrX3NhID0gKHN0cnVjdCBzb2NrYWRkciAqKWFkZHJfcHRyOworCSAgICBhZGRyX3B0ciArPSBTQV9TSVpFKG5ldG1hc2tfc2EpOworCX0KKwlpZiAocnRtLT5ydG1fYWRkcnMgJiAgUlRBX0lGUCkgeworCSAgICBpZl9uYW1lID0gKHN0cnVjdCBzb2NrYWRkciAqKWFkZHJfcHRyOworCSAgICBhZGRyX3B0ciArPSBTQV9TSVpFKGlmX25hbWUpOworCX0KKwlpZiAocnRtLT5ydG1fYWRkcnMgJiAgUlRBX0lGQSkgeworCSAgICBpZl9hZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKWFkZHJfcHRyOworCSAgICBhZGRyX3B0ciArPSBTQV9TSVpFKGlmX2FkZHIpOworCX0KKworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSBydG0tPnJ0bV9pbmRleDsKKworICAgICAgICAvKiBhcmJpdHJhcnkgaW5kZXggKi8KKyAgICAgICAgZW50cnktPm5zX3J0X2luZGV4ID0gKysoKmluZGV4KTsKKworICAgICAgICAvKiBjb3B5IGRlc3QgJiBuZXh0IGhvcCAqLworICAgICAgICBlbnRyeS0+cnRfZGVzdF90eXBlID0gZGVzdF90eXBlOworICAgICAgICBlbnRyeS0+cnRfZGVzdF9sZW4gPSBkZXN0X2xlbjsKKyAgICAgICAgaWYgKHJ0bS0+cnRtX2FkZHJzICYgUlRBX0RTVCkgeworICAgICAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cnRfZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luKilkZXN0X3NhKS0+c2luX2FkZHIsIGRlc3RfbGVuKTsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgICAgICBpZiAoZmFtaWx5ID09IEFGX0lORVQ2KQorICAgICAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cnRfZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luNiopZGVzdF9zYSktPnNpbjZfYWRkciwgZGVzdF9sZW4pOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICBlbnRyeS0+cnRfbmV4dGhvcF90eXBlID0gZGVzdF90eXBlOworICAgICAgICBlbnRyeS0+cnRfbmV4dGhvcF9sZW4gPSBkZXN0X2xlbjsKKyAgICAgICAgaWYgKHJ0bS0+cnRtX2FkZHJzICYgUlRBX0dBVEVXQVkpIHsKKyAgICAgICAgICAgIGlmIChmYW1pbHkgPT0gQUZfSU5FVCkKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPnJ0X25leHRob3AsCisgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiopZ2F0ZXdheV9zYSktPnNpbl9hZGRyLCBkZXN0X2xlbik7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUNikKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPnJ0X25leHRob3AsCisgICAgICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYqKWdhdGV3YXlfc2EpLT5zaW42X2FkZHIsIGRlc3RfbGVuKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cnRfbmV4dGhvcCwKKyAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luKilpZl9hZGRyKS0+c2luX2FkZHIsIGRlc3RfbGVuKTsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgICAgICBpZiAoZmFtaWx5ID09IEFGX0lORVQ2KQorICAgICAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cnRfbmV4dGhvcCwKKyAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luNiopaWZfYWRkciktPnNpbjZfYWRkciwgZGVzdF9sZW4pOworI2VuZGlmCisgICAgICAgIH0KKworICAgICAgICBpZiAoZmFtaWx5ID09IEFGX0lORVQpIHsKKwkgICAgaWYgKG5ldG1hc2tfc2EpIHsKKyAgICAgICAgICAgIC8qIGNvdW50IGJpdHMgaW4gbWFzayAqLworCQllbnRyeS0+cnRfcGZ4X2xlbiA9IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfcHJlZml4X2xlbigKKwkJCSgoc3RydWN0IHNvY2thZGRyX2luICopbmV0bWFza19zYSktPnNpbl9hZGRyLnNfYWRkcik7CisJCW1lbWNweSgmZW50cnktPnJ0X21hc2ssICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKW5ldG1hc2tfc2EpLT5zaW5fYWRkciwgNCk7CisJICAgIH0KKwkgICAgZWxzZSB7CisJCWVudHJ5LT5ydF9wZnhfbGVuID0gMzI7CisJICAgIH0KKyAgICAgICAgfQorI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUNikgeworCSAgICBpZiAobmV0bWFza19zYSkgeworICAgICAgICAgICAgLyogY291bnQgYml0cyBpbiBtYXNrICovCisJCWVudHJ5LT5ydF9wZnhfbGVuID0gbmV0c25tcF9pcGFkZHJlc3NfaXB2Nl9wcmVmaXhfbGVuKAorCQkJKChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopbmV0bWFza19zYSktPnNpbjZfYWRkcik7CisJCW1lbWNweSgmZW50cnktPnJ0X21hc2ssICYoKHN0cnVjdCBzb2NrYWRkcl9pbjYgKiluZXRtYXNrX3NhKS0+c2luNl9hZGRyLCAxNik7CisJICAgIH0KKwkgICAgZWxzZSB7CisJCWVudHJ5LT5ydF9wZnhfbGVuID0gMTI4OworCSAgICB9CisgICAgICAgIH0KKyNlbmRpZgorCisjaWZkZWYgVVNJTkdfSVBfRk9SV0FSRF9NSUJfSU5FVENJRFJST1VURVRBQkxFX0lORVRDSURSUk9VVEVUQUJMRV9NT0RVTEUKKyAgICAgICAgLyoKKyAgICBpbmV0Q2lkclJvdXRlUG9saWN5IE9CSkVDVC1UWVBFIAorICAgICAgICBTWU5UQVggICAgIE9CSkVDVCBJREVOVElGSUVSIAorICAgICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlIAorICAgICAgICBTVEFUVVMgICAgIGN1cnJlbnQgCisgICAgICAgIERFU0NSSVBUSU9OIAorICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGlzIGFuIG9wYXF1ZSBvYmplY3Qgd2l0aG91dCBhbnkgZGVmaW5lZCAKKyAgICAgICAgICAgICAgICBzZW1hbnRpY3MuICBJdHMgcHVycG9zZSBpcyB0byBzZXJ2ZSBhcyBhbiBhZGRpdGlvbmFsIAorICAgICAgICAgICAgICAgIGluZGV4IHdoaWNoIG1heSBkZWxpbmVhdGUgYmV0d2VlbiBtdWx0aXBsZSBlbnRyaWVzIHRvIAorICAgICAgICAgICAgICAgIHRoZSBzYW1lIGRlc3RpbmF0aW9uLiAgVGhlIHZhbHVlIHsgMCAwIH0gc2hhbGwgYmUgdXNlZCAKKyAgICAgICAgICAgICAgICBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBvYmplY3QuIgorICAgICAgICAqLworCWVudHJ5LT5ydF9wb2xpY3kgPSBjYWxsb2MoMywgc2l6ZW9mKG9pZCkpOworCWVudHJ5LT5ydF9wb2xpY3lbMl0gPSBlbnRyeS0+aWZfaW5kZXg7CisJZW50cnktPnJ0X3BvbGljeV9sZW4gPSBzaXplb2Yob2lkKSozOworI2VuZGlmCisKKyAgICAgICAgZW50cnktPnJ0X3R5cGUgPSBfdHlwZV9mcm9tX2ZsYWdzKHJ0bS0+cnRtX2ZsYWdzKTsKKwllbnRyeS0+cnRfYWdlID0gcnRtLT5ydG1fcm14LnJteF9leHBpcmU7CisJZW50cnktPnJ0X25leHRob3BfYXMgPSAwOworCS8qIGVudHJ5LT5ydF9tZXRyaWMxID0gcnRtLT5ydG1fcm14LnJteF9ob3Bjb3VudDsgKi8KKworICAgICAgICBpZiAocnRtLT5ydG1fZmxhZ3MgJiBSVEZfRFlOQU1JQykKKyAgICAgICAgICAgIGVudHJ5LT5ydF9wcm90byA9IElBTkFJUFJPVVRFUFJPVE9DT0xfSUNNUDsKKyAgICAgICAgZWxzZSBpZiAocnRtLT5ydG1fZmxhZ3MgJiBSVEZfU1RBVElDKQorICAgICAgICAgICAgZW50cnktPnJ0X3Byb3RvID0gSUFOQUlQUk9VVEVQUk9UT0NPTF9ORVRNR01UOworI2lmZGVmIFJURl9MT0NBTAorICAgICAgICBlbHNlIGlmIChydG0tPnJ0bV9mbGFncyAmIFJURl9MT0NBTCkKKyAgICAgICAgICAgIGVudHJ5LT5ydF9wcm90byA9IElBTkFJUFJPVVRFUFJPVE9DT0xfTE9DQUw7CisjZW5kaWYKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPnJ0X3Byb3RvID0gSUFOQUlQUk9VVEVQUk9UT0NPTF9PVEhFUjsKKworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAiZXJyb3Igd2l0aCByb3V0ZV9lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX3JvdXRlX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICB9CisKK291dDoKKyAgICBmcmVlKGJ1Zik7CisKKyAgICByZXR1cm4gZXJyOworfQorCisvKioKKyAqIG5ldHNubXBfYWNjZXNzX3JvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWQqIGZ1bmN0aW9ucy4KKyAqLworc3RhdGljIGludAorX2xvYWRfaXB2NChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCBpbnQgKmluZGV4KQoreworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICJyb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkIGlwdjRcbiIpKTsKKyAgICByZXR1cm4gX2xvYWRfcm91dGluZ190YWJsZV9mcm9tX3N5c2N0bChjb250YWluZXIsIGluZGV4LCBBRl9JTkVUKTsKK30KKworc3RhdGljIGludAorX2xvYWRfaXB2NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCBpbnQgKmluZGV4KQoreworCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6cm91dGU6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAicm91dGVfY29udGFpbmVyX2FyY2hfbG9hZCBpcHY2XG4iKSk7CisgICAgcmV0dXJuIF9sb2FkX3JvdXRpbmdfdGFibGVfZnJvbV9zeXNjdGwoY29udGFpbmVyLCBpbmRleCwgQUZfSU5FVDYpOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCisvKioKKyAqIG5ldHNubXBfYWNjZXNzX3JvdXRlX2NyZWF0ZSogZnVuY3Rpb25zLgorICoKKyAqIFRPRE86IGFkZCBsb2dpYyBzaW1pbGFyIHRvIG5ld3JvdXRlKC4uKSBpbiBzYmluL3JvdXRlL3JvdXRlLmMgLgorICovCitzdGF0aWMgaW50CitfY3JlYXRlX2lwdjQobmV0c25tcF9yb3V0ZV9lbnRyeSAqZW50cnkpCit7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2NyZWF0ZV9pcHY2KG5ldHNubXBfcm91dGVfZW50cnkgKmVudHJ5KQoreworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICogbmV0c25tcF9hY2Nlc3Nfcm91dGVfZGVsZXRlKiBmdW5jdGlvbnMuCisgKgorICogVE9ETzogYWRkIGxvZ2ljIHNpbWlsYXIgdG8gbmV3cm91dGUoLi4pIGluIHNiaW4vcm91dGUvcm91dGUuYyAuCisgKi8KK3N0YXRpYyBpbnQKK19kZWxldGVfaXB2NChuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSkKK3sKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitfZGVsZXRlX2lwdjYobmV0c25tcF9yb3V0ZV9lbnRyeSAqZW50cnkpCit7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorCisjZW5kaWYKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZiAvKiBkZWZpbmVkKGZyZWVic2Q3KSB8fCBkZWZpbmVkKG5ldGJzZCkgfHwgZGVmaW5lZChvcGVuYnNkKSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc3lzY3RsLmggYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9zeXNjdGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWVjY2M3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfc3lzY3RsLmgKQEAgLTAsMCArMSw5IEBACisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGlmYWRkcnMuaD4KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwppbmRleCA4ZGVmMWQ5Li4wZjAxM2VhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jCkBAIC0xNCw2ICsxNCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yNiw2ICsyNyw5IEBACiAKICNpbmNsdWRlICJpbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaXplKQorCiBjb25zdCBvaWQgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZFtdID0geyBJTkVUQ0lEUlJPVVRFVEFCTEVfT0lEIH07CiBjb25zdCBpbnQgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaW5ldENpZHJSb3V0ZVRhYmxlX29pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYwppbmRleCA1NTljMGNhLi41ZGY0NmI2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE2IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldENpZHJSb3V0ZVRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NpemUsIGluZXRDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGluZXRDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIGluZXRDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9nZXQsIGluZXRDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTgyLDE5ICs5MywyMyBAQAogICAgICAgICAgICAgICAgIF9pbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NodXRkb3duKGluZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2VfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaW5ldENpZHJSb3V0ZVRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGluZXRDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb24gKgogaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaW5ldENpZHJSb3V0ZVRhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpbmV0Q2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uX3NldChpbmV0Q2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKQEAgLTEwNCwxMiArMTE5LDE1IEBACiAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRDSURSUk9VVEVUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaW5ldENpZHJSb3V0ZVRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIHVfaW50CiBpbmV0Q2lkclJvdXRlVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xNDAsNyArMTU4LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9wb3N0X3JlcXVlc3Q7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfb2JqZWN0X2xvb2t1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfb2JqZWN0czsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV91bmRvX3NldHVwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNTAsNyArMTY4LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV91bmRvX2NvbW1pdDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9pcnJldmVyc2libGVfY29tbWl0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX2NoZWNrX2RlcGVuZGVuY2llczsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAogICAgICAgICAgICAgICAgIF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfaW5kZXhlcyhpbmV0Q2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOwpAQCAtMjM3LDcgKzI1NSw3IEBACiAgICAgICAgIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX3Bvc3RfcmVxdWVzdDsKIAogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICAvKgogICAgICAqIFJFUVVJUkVEIHdyYXBwZXJzIGZvciBzZXQgcmVxdWVzdCBoYW5kbGluZwogICAgICAqLwpAQCAtMjYyLDcgKzI4MCw3IEBACiAgICAgICovCiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MgPQogICAgICAgICBfbWZkX2luZXRDaWRyUm91dGVUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yOTgsNyArMzE2LDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTMyMSw3ICszMzksNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTIxMCw2ICsxMjI4LDggQEAKICAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOwogCisgICAgLyogTU9SRSBDSEVDS0lORyBSRVFVSVJFRCAqLworCiAgICAgLyoKICAgICAgKiAoSU5ERVgpIGluZXRDaWRyUm91dGVEZXN0KDIpL0luZXRBZGRyZXNzL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9hL3cvZS9SL2QvaCAKICAgICAgKi8KQEAgLTEzMDgsNyArMTMyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgcm93cmVxX2N0eCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfaW5kZXhlcyAqLwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0yMTkyLDcgKzIyMTIsNyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaW5ldENpZHJSb3V0ZVRhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQgKi8KLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgpAQCAtMjMyOCw5ICsyMzQ4LDkgQEAKIAogICAgIGlmX2N0eC0+Y29udGFpbmVyLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgiaW5ldENpZHJSb3V0ZVRhYmxlIik7CiAKLSAgICAvKiBzZXQgYWxsb3cgZHVwbGljYXRlcyB0aGlzIG1ha2VzIGluc2VydCBPKDEpICovCi0gICAgbmV0c25tcF9iaW5hcnlfYXJyYXlfb3B0aW9uc19zZXQoaWZfY3R4LT5jb250YWluZXIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEFJTkVSX0tFWV9BTExPV19EVVBMSUNBVEVTKTsKKyAgIC8qIHNldCBhbGxvdyBkdXBsaWNhdGVzIHRoaXMgbWFrZXMgaW5zZXJ0IE8oMSkgKi8KKyAgIG5ldHNubXBfYmluYXJ5X2FycmF5X29wdGlvbnNfc2V0KGlmX2N0eC0+Y29udGFpbmVyLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEFJTkVSX0tFWV9BTExPV19EVVBMSUNBVEVTKTsKIAogICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCiAgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7CkBAIC0yMzUzLDYgKzIzNzMsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUQ0lEUlJPVVRFVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpbmV0Q2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqCiBpbmV0Q2lkclJvdXRlVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGluZXRDaWRyUm91dGVUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMjM4MCwzICsyNDAxLDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVENJRFJST1VURVRBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGEzMWY0Y2MuLjQ1Zjg0ODMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE3IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9zaXplLCBpcENpZHJSb3V0ZVRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGlwQ2lkclJvdXRlVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQ2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaXBDaWRyUm91dGVUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0LCBpcENpZHJSb3V0ZVRhYmxlX2V4dGVybmFsX2FjY2VzcykKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODEsMTkgKzkzLDIzIEBACiAgICAgICAgICAgICAgICAgX2lwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwQ2lkclJvdXRlVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBDaWRyUm91dGVUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUENJRFJST1VURVRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaXBDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwQ2lkclJvdXRlVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtMTAxLDEyICsxMTcsMTUgQEAKICAgICBpcENpZHJSb3V0ZVRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUENJRFJST1VURVRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXBDaWRyUm91dGVUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQ0lEUlJPVVRFVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogdV9pbnQKIGlwQ2lkclJvdXRlVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xMzAsNyArMTQ5LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQ2lkclJvdXRlVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBDaWRyUm91dGVUYWJsZV9vYmplY3RfbG9va3VwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBDaWRyUm91dGVUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcENpZHJSb3V0ZVRhYmxlX3VuZG9fc2V0dXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcENpZHJSb3V0ZVRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNDQsNyArMTYzLDcgQEAKICAgICAgICAgICAgICAgICBfaXBDaWRyUm91dGVUYWJsZV91bmRvX2NvbHVtbihpcENpZHJSb3V0ZVRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAogICAgICAgICAgICAgICAgIF9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrX2luZGV4ZXMoaXBDaWRyUm91dGVUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CkBAIC0yMjcsNyArMjQ2LDcgQEAKICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaXBDaWRyUm91dGVUYWJsZV9wb3N0X3JlcXVlc3Q7CiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyoKICAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKICAgICAgKi8KQEAgLTI0NSw3ICsyNjQsNyBAQAogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQgPSBfbWZkX2lwQ2lkclJvdXRlVGFibGVfdW5kb19jb21taXQ7CiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0ID0KICAgICAgICAgX21mZF9pcENpZHJSb3V0ZVRhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yNzgsNyArMjk3LDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTMwMSw3ICszMjAsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTE1MSw3ICsxMTcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgcm93cmVxX2N0eCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrX2luZGV4ZXMgKi8KIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBTRVQgcHJvY2Vzc2luZwpAQCAtMjE0NSw3ICsyMTY0LDcgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwQ2lkclJvdXRlVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yMzA0LDYgKzIzMjMsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBDaWRyUm91dGVUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIGlwQ2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqCiBpcENpZHJSb3V0ZVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcENpZHJSb3V0ZVRhYmxlX21pYl9pbmRleCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMjMzMSwzICsyMzUxLDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBDSURSUk9VVEVUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaAppbmRleCBlOWMzNzFiLi42NDhjYjI4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oCkBAIC0xOCw4ICsxOCwxMiBAQAogICogICAgYmUgaGFuZGxlZCBpbiB0aGUgKl9ocHV4LmggaGVhZGVyIGZpbGUuCiAgKi8KIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uKQotI2lmIGRlZmluZWQoIGxpbnV4ICkKKyNpZiBkZWZpbmVkKCBIQVZFX0xJTlVYX1JUTkVUTElOS19IICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbmV0bGluaykKKyNlbGlmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXgpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkNyApIHx8IGRlZmluZWQgKCBuZXRic2Q1ICkgfHwgZGVmaW5lZCggb3BlbmJzZDQgKSB8fCBkZWZpbmVkKCBkcmFnb25mbHkgKSB8fCBkZWZpbmVkKCBkYXJ3aW4gKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2FycF9zeXNjdGwpCiAjZWxzZQogLyoKICAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMKaW5kZXggNWM3ZDZkNS4uMjk1ODcxOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jCkBAIC0xMSwxMDIgKzExLDYgQEAKIAogLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qCi0gKiBsb2NhbCBzdGF0aWMgcHJvdG90eXBlcwotICovCi1zdGF0aWMgdm9pZCBfYWNjZXNzX2FycF9lbnRyeV9yZWxlYXNlKG5ldHNubXBfYXJwX2VudHJ5ICogZW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVudXNlZCk7Ci0KLS8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKgotICogZXh0ZXJuYWwgcGVyLWFyY2hpdGVjdHVyZSBmdW5jdGlvbnMgcHJvdG90eXBlcwotICoKLSAqIFRoZXNlIHNob3VsZG4ndCBiZSBjYWxsZWQgYnkgdGhlIGdlbmVyYWwgcHVibGljLCBzbyB0aGV5IGFyZW4ndCBpbgotICogdGhlIGhlYWRlciBmaWxlLgotICovCi1leHRlcm4gaW50Ci1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncyk7Ci0KLQotLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qCi0gKiBjb250YWluZXIgZnVuY3Rpb25zCi0gKi8KLS8qKgotICovCi1uZXRzbm1wX2NvbnRhaW5lciAqCi1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2luaXQodV9pbnQgZmxhZ3MpCi17Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjE7Ci0KLSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmFycDpjb250YWluZXIiLCAiaW5pdFxuIikpOwotCi0gICAgLyoKLSAgICAgKiBjcmVhdGUgdGhlIGNvbnRhaW5lcnMuIG9uZSBpbmRleGVkIGJ5IGlmSW5kZXgsIHRoZSBvdGhlcgotICAgICAqIGluZGV4ZWQgYnkgaWZOYW1lLgotICAgICAqLwotICAgIGNvbnRhaW5lcjEgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3NfYXJwOnRhYmxlX2NvbnRhaW5lciIpOwotICAgIGlmIChOVUxMID09IGNvbnRhaW5lcjEpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBjb250YWluZXIxOwotfQotCi0vKioKLSAqIEByZXR2YWwgTlVMTCAgZXJyb3IKLSAqIEByZXR2YWwgIU5VTEwgcG9pbnRlciB0byBjb250YWluZXIKLSAqLwotbmV0c25tcF9jb250YWluZXIqCi1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKLXsKLSAgICBpbnQgcmM7Ci0KLSAgICBERUJVR01TR1RMKCgiYWNjZXNzOmFycDpjb250YWluZXIiLCAibG9hZFxuIikpOwotCi0gICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7Ci0gICAgICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImFjY2VzczphcnA6dGFibGVfY29udGFpbmVyIik7Ci0gICAgICAgIGlmIChjb250YWluZXIpCi0gICAgICAgICAgICBjb250YWluZXItPmNvbnRhaW5lcl9uYW1lID0gc3RyZHVwKCJhcnAiKTsKLSAgICB9Ci0gICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3NfYXJwXG4iKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgcmMgPSAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9hcmNoX2xvYWQoY29udGFpbmVyLCBsb2FkX2ZsYWdzKTsKLSAgICBpZiAoMCAhPSByYykgewotICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfQVJQX0ZSRUVfTk9GTEFHUyk7Ci0gICAgICAgIGNvbnRhaW5lciA9IE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNvbnRhaW5lcjsKLX0KLQotdm9pZAotbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZyZWVfZmxhZ3MpCi17Ci0gICAgREVCVUdNU0dUTCgoImFjY2VzczphcnA6Y29udGFpbmVyIiwgImZyZWVcbiIpKTsKLQotICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjb250YWluZXIgZm9yIG5ldHNubXBfYWNjZXNzX2FycF9mcmVlXG4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmKCEgKGZyZWVfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9ET05UX0NMRUFSKSkgewotICAgICAgICAvKgotICAgICAgICAgKiBmcmVlIGFsbCBpdGVtcy4KLSAgICAgICAgICovCi0gICAgICAgIENPTlRBSU5FUl9DTEVBUihjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKV9hY2Nlc3NfYXJwX2VudHJ5X3JlbGVhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSAgICB9Ci0KLSAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfQVJQX0ZSRUVfS0VFUF9DT05UQUlORVIpKQotICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOwotfQotCi0vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyoKICAqIGFycF9lbnRyeSBmdW5jdGlvbnMKICAqLwogLyoqCkBAIC0xNDAsMTQgKzQ0LDYgQEAKICAqLwogCiAvKioKLSAqLwotdm9pZAotX2FjY2Vzc19hcnBfZW50cnlfcmVsZWFzZShuZXRzbm1wX2FycF9lbnRyeSAqIGVudHJ5LCB2b2lkICpjb250ZXh0KQotewotICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKLX0KLQotLyoqCiAgKiBVcGRhdGUgZ2l2ZW4gZW50cnkgd2l0aCBuZXcgZGF0YS4gQ2FsY3VsYXRlIG5ldyBhcnBfbGFzdF91cGRhdGVkLCBpZiBhbnkKICAqIGZpZWxkIGlzIGNoYW5nZWQuCiAgKi8KQEAgLTE1Niw2ICs1Miw3IEBACiB7CiAgICAgaW50IG1vZGlmaWVkID0gMDsKIAorICAgIGVudHJ5LT5nZW5lcmF0aW9uID0gbmV3X2RhdGEtPmdlbmVyYXRpb247CiAgICAgaWYgKGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiAhPSBuZXdfZGF0YS0+YXJwX2lwYWRkcmVzc19sZW4KICAgICAgICAgICAgIHx8IG1lbWNtcChlbnRyeS0+YXJwX2lwYWRkcmVzcywgbmV3X2RhdGEtPmFycF9pcGFkZHJlc3MsIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbikgIT0gMCApIHsKICAgICAgICAgbW9kaWZpZWQgPSAxOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jCmluZGV4IDRkZGFmZmQuLmEyZmE0OWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMKQEAgLTE0LDY4ICsxNCw3NCBAQAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL3R5cGVzLmg+Ci0jaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAotI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgotI2VuZGlmCi0jaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgotI2RlZmluZSBOSVA2KGFkZHIpIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlswXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsxXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsyXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlszXSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls0XSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls1XSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls2XSksIFwKLSAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls3XSkKLSNkZWZpbmUgTklQNl9GTVQgIiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eCIKLSNlbmRpZgogCi1pbnQgX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOwotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKLXN0YXRpYyBpbnQgX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOwotI2VuZGlmCi0jaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAotaW50IGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChpbnQgc2QsIGludCAqc3RhdHVzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmZiwgc2l6ZV90IHNpemUpOwotaW50IGZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwKLSAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5sbXApOwotI2VuZGlmCi0vKioKLSAqLwotaW50Ci1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQorc3RhdGljIGludCBfbG9hZF92NChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2Vzcyk7CisKK25ldHNubXBfYXJwX2FjY2VzcyAqCituZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlKHVfaW50IGluaXRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBBY2Nlc3NBcnBVcGRhdGUgKnVwZGF0ZV9ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwR0MgKmdjX2hvb2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY2FjaGVfdGltZW91dCwgaW50ICpjYWNoZV9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY2FjaGVfZXhwaXJlZCkKIHsKLSAgICBpbnQgcmMgPSAwLCBpZHhfb2Zmc2V0ID0gMDsKKyAgICBuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzczsKIAotICAgIHJjID0gX2xvYWRfdjQoY29udGFpbmVyLCBpZHhfb2Zmc2V0KTsKLSAgICBpZihyYyA8IDApIHsKLSAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9LRUVQX0NPTlRBSU5FUjsKLSAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgIGFjY2VzcyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9hcnBfYWNjZXNzKTsKKyAgICBpZiAoTlVMTCA9PSBhY2Nlc3MpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibWFsbG9jIGVycm9yIGluIG5ldHNubXBfYWNjZXNzX2FycF9jcmVhdGVcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQotICAgIGlkeF9vZmZzZXQgPSAocmMgPCAwKSA/IDAgOiByYzsKKyAgICBhY2Nlc3MtPmFyY2hfbWFnaWMgPSBOVUxMOworICAgIGFjY2Vzcy0+bWFnaWMgPSBOVUxMOworICAgIGFjY2Vzcy0+dXBkYXRlX2hvb2sgPSB1cGRhdGVfaG9vazsKKyAgICBhY2Nlc3MtPmdjX2hvb2sgPSBnY19ob29rOworICAgIGFjY2Vzcy0+c3luY2hyb25pemVkID0gMDsKIAotICAgIHJjID0gX2xvYWRfdjYoY29udGFpbmVyLCBpZHhfb2Zmc2V0KTsKLSAgICBpZihyYyA8IDApIHsKLSAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9LRUVQX0NPTlRBSU5FUjsKLSAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOwotICAgIH0KLSNlbmRpZgorICAgIGlmIChjYWNoZV90aW1lb3V0ICE9IE5VTEwpCisgICAgICAgICpjYWNoZV90aW1lb3V0ID0gNTsKKyAgICBpZiAoY2FjaGVfZmxhZ3MgIT0gTlVMTCkKKyAgICAgICAgKmNhY2hlX2ZsYWdzIHw9IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FECisgICAgICAgICAgICAgICAgICAgICAgICB8IE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQ7CisgICAgYWNjZXNzLT5jYWNoZV9leHBpcmVkID0gY2FjaGVfZXhwaXJlZDsKIAotICAgIC8qCi0gICAgICogcmV0dXJuIG5vIGVycm9ycyAoMCkgaWYgd2UgZm91bmQgYW55IGludGVyZmFjZXMKLSAgICAgKi8KLSAgICBpZihyYyA+IDApCi0gICAgICAgIHJjID0gMDsKKyAgICByZXR1cm4gYWNjZXNzOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX2RlbGV0ZShuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBpZiAoTlVMTCA9PSBhY2Nlc3MpCisgICAgICAgIHJldHVybiAwOworCisgICAgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChhY2Nlc3MpOworICAgIGZyZWUoYWNjZXNzKTsKKworICAgIHJldHVybiAwOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpCit7CisgICAgaW50IHJjID0gMDsKKworICAgIGFjY2Vzcy0+Z2VuZXJhdGlvbisrOworICAgIHJjID1fbG9hZF92NChhY2Nlc3MpOworICAgIGFjY2Vzcy0+Z2NfaG9vayhhY2Nlc3MpOworICAgIGFjY2Vzcy0+c3luY2hyb25pemVkID0gKHJjID09IDApOwogCiAgICAgcmV0dXJuIHJjOwogfQogCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKwogLyoqCiAgKi8KLWludAotX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpCitzdGF0aWMgaW50CitfbG9hZF92NChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKIHsKICAgICBGSUxFICAgICAgICAgICAqaW47CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTI4XTsKQEAgLTg1LDcgKzkxLDcgQEAKICAgICBjaGFyICAgICAgICAgICAqYXJwX3Rva2VuOwogICAgIGludCAgICAgICAgICAgICBpOwogCi0gICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gYWNjZXNzKTsKIAogI2RlZmluZSBQUk9DRklMRSAiL3Byb2MvbmV0L2FycCIKICAgICBpZiAoIShpbiA9IGZvcGVuKFBST0NGSUxFLCAiciIpKSkgewpAQCAtMTMyLDYgKzEzOCw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGxvb2sgdXAgaWZJbmRleAogICAgICAgICAgKi8KKyAgICAgICAgZW50cnktPmdlbmVyYXRpb24gPSBhY2Nlc3MtPmdlbmVyYXRpb247CiAgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9pbmRleF9maW5kKGlmbmFtZSk7CiAgICAgICAgIGlmKDAgPT0gZW50cnktPmlmX2luZGV4KSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJjb3VsZG4ndCBmaW5kIGlmSW5kZXggZm9yICclcycsIHNraXBwaW5nXG4iLApAQCAtMTQ0LDcgKzE1MSw3IEBACiAgICAgICAgICAqIG5vdyB0aGF0IHdlJ3ZlIHBhc3NlZCBhbGwgdGhlIHBvc3NpYmxlICdjb250aW51ZScsIGFzc2lnbgogICAgICAgICAgKiBpbmRleCBvZmZzZXQuCiAgICAgICAgICAqLwotICAgICAgICBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OworICAgICAgICAvKiBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OyAqLwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIHBhcnNlIGlwIGFkZHIKQEAgLTE5OSwyNDkgKzIwNiw5IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCBlbnRyeSB0byBjb250YWluZXIKICAgICAgICAgICovCi0gICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKLSAgICAgICAgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczphcnA6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBhcnBfZW50cnk6IGluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7Ci0gICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfZnJlZShlbnRyeSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBhY2Nlc3MtPnVwZGF0ZV9ob29rKGFjY2VzcywgZW50cnkpOwogICAgIH0KIAogICAgIGZjbG9zZShpbik7Ci0gICAgaWYoIHJjIDwgMCApCi0gICAgICAgIHJldHVybiByYzsKLQotICAgIHJldHVybiBpZHhfb2Zmc2V0OwotfQotCi0jaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKLXN0YXRpYyBpbnQKLV9sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQotewotICAgIGNoYXIgICAgICAgICAgICAgIGJ1ZmZlclsxNjM4NF07Ci0jaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQotICAgIHN0cnVjdCBubG1zZ2hkciAgICpubG1wOwotI2VuZGlmCi0gICAgaW50ICAgICAgICAgICAgICAgc2QgPSAwOwotICAgIGludCAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7Ci0gICAgaW50ICAgICAgICAgICAgICAgcmMgPSAwOwotICAgIGludCAgICAgICAgICAgICAgIGxlbiwgcmVxX2xlbjsKLSAgICBuZXRzbm1wX2FycF9lbnRyeSAqZW50cnk7Ci0KLSAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7Ci0jaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQotICAgIGlmKChzZCA9IHNvY2tldCAoUEZfTkVUTElOSywgU09DS19ER1JBTSwgTkVUTElOS19ST1VURSkpIDwgMCkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJVbmFibGUgdG8gY3JlYXRlIG5ldGxpbmsgc29ja2V0XG4iKTsKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIH0KLQotICAgIGlmKGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChzZCwgJnN0YXR1cywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPCAwKSB7Ci0gICAgICAgc25tcF9sb2coTE9HX0VSUiwiVW5hYmxlIHRvIGZldGNoIHRyYW5zbGF0aW9uIHRhYmxlIGluZm9cbiIpOwotICAgICAgIGNsb3NlKHNkKTsKLSAgICAgICByZXR1cm4gLTI7Ci0gICAgfQotCi0gICAgZm9yIChubG1wID0gKHN0cnVjdCBubG1zZ2hkciAqKWJ1ZmZlcjsgc3RhdHVzID4gc2l6ZW9mKCpubG1wKTsgKSB7Ci0gICAgICAgICBsZW4gPSBubG1wLT5ubG1zZ19sZW47Ci0gICAgICAgICByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKLSAgICAgICAgIGlmIChyZXFfbGVuIDwgMCB8fCBsZW4gPiBzdGF0dXMpIHsKLSAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJpbnZhbGlkIGxlbmd0aFxuIik7Ci0gICAgICAgICAgICAgcmV0dXJuIC0yOwotICAgICAgICAgfQotICAgICAgICAgaWYgKCFOTE1TR19PSyAobmxtcCwgc3RhdHVzKSkgewotICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIk5MTVNHIG5vdCBPS1xuIik7Ci0gICAgICAgICAgICAgcmV0dXJuIC0yOwotICAgICAgICAgfQotICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfY3JlYXRlKCk7Ci0gICAgICAgICBpZihOVUxMID09IGVudHJ5KSB7Ci0gICAgICAgICAgICByYyA9IC0zOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OwotICAgICAgICAgaWYoZmlsbHVwX2VudHJ5X2luZm8gKGVudHJ5LCBubG1wKSA8IDApIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6YXJwOmxvYWRfdjYiLCAic2tpcHBpbmcgbmV0bGluayBtZXNzYWdlIHRoYXQiCi0gICAgICAgICAgICAgICAgICAgICAgICAiIGRpZCBub3QgY29udGFpbiB2YWxpZCBBUlAgaW5mb3JtYXRpb25cbiIpKTsKLSAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKLSAgICAgICAgICAgIHN0YXR1cyAtPSBOTE1TR19BTElHTihsZW4pOwotICAgICAgICAgICAgbmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIqKSgoY2hhciopbmxtcCArIE5MTVNHX0FMSUdOKGxlbikpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICB9Ci0gICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOwotICAgICAgICAgc3RhdHVzIC09IE5MTVNHX0FMSUdOKGxlbik7Ci0gICAgICAgICBubG1wID0gKHN0cnVjdCBubG1zZ2hkciopKChjaGFyKilubG1wICsgTkxNU0dfQUxJR04obGVuKSk7Ci0gICAgfQotCi0gICAgY2xvc2Uoc2QpOwotI2VuZGlmCi0gICAgaWYocmM8MCkgewotICAgICAgICByZXR1cm4gcmM7Ci0gICAgfQotCi0gICAgcmV0dXJuIGlkeF9vZmZzZXQ7Ci19Ci0jaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQotaW50IAotZ2V0X3RyYW5zbGF0aW9uX3RhYmxlX2luZm8gKGludCBzZCwgaW50ICpzdGF0dXMsIGNoYXIgKmJ1ZmYsIHNpemVfdCBzaXplKQotewotICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICAgICAgc3RydWN0IG5sbXNnaGRyIG47Ci0gICAgICAgICAgICAgICAgc3RydWN0IG5kbXNnIHI7Ci0gICAgICAgICAgICAgICAgY2hhciAgIGJ1ZlsxMDI0XTsKLSAgICB9IHJlcTsKLSAgICBzdHJ1Y3QgcnRhdHRyICAgKnJ0YTsKLQotICAgIG1lbXNldCgmcmVxLCAwLCBzaXplb2YocmVxKSk7Ci0gICAgcmVxLm4ubmxtc2dfbGVuID0gTkxNU0dfTEVOR1RIIChzaXplb2Yoc3RydWN0IG5kbXNnKSk7Ci0gICAgcmVxLm4ubmxtc2dfZmxhZ3MgPSBOTE1fRl9SRVFVRVNUIHwgTkxNX0ZfUk9PVDsKLSAgICByZXEubi5ubG1zZ190eXBlID0gUlRNX0dFVE5FSUdIOwotCi0gICAgcmVxLnIubmRtX2ZhbWlseSA9IEFGX0lORVQ2OwotICAgIHJ0YSA9IChzdHJ1Y3QgcnRhdHRyICopKCgoY2hhciAqKSZyZXEpICsgTkxNU0dfQUxJR04ocmVxLm4ubmxtc2dfbGVuKSk7Ci0gICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCgxNik7Ci0KLSAgICBpZihzZW5kKHNkLCAmcmVxLCByZXEubi5ubG1zZ19sZW4sIDApIDwgMCkgewotICAgICAgIHNubXBfbG9nKExPR19FUlIsIlNlbmRpbmcgcmVxdWVzdCBmYWlsZWRcbiIpOwotICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYoKCpzdGF0dXMgPSByZWN2KHNkLCBidWZmLCBzaXplLCAwKSkgPCAwKSB7Ci0gICAgICAgc25tcF9sb2coTE9HX0VSUiwiUmVjaWV2aW5nIHJlcXVlc3QgZmFpbGVkXG4iKTsKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIGlmKCpzdGF0dXMgPT0gMCkgewotICAgICAgIHNubXBfbG9nKExPR19FUlIsIkVuZCBvZiBmaWxlXG4iKTsKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIHJldHVybiAwOwogfQotCi1pbnQKLWZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwgc3RydWN0IG5sbXNnaGRyICpubG1wKQotewotICAgIHN0cnVjdCBuZG1zZyAgICpydG1wOwotICAgIHN0cnVjdCBpbjZfYWRkciAqaW42cDsKLSAgICBzdHJ1Y3QgcnRhdHRyICAqdGJbTkRBX01BWCArIDFdLCAqcnRhOwotICAgIHNpemVfdCAgICAgICAgICBpbl9sZW4sIG91dF9sZW47Ci0gICAgdW5zaWduZWQgaW50ICAgIGk7Ci0gICAgaW50ICAgICAgICAgICAgIGxlbmd0aDsKLSAgICBjaGFyICAgICAgICAgICAgYWRkcls0MF07Ci0gICAgdV9jaGFyICAgICAgICAgKmJ1ZjsKLSAgICB1X2NoYXIgICAgICAgICAqaHdhZGRyOwotCi0gICAgcnRtcCA9IChzdHJ1Y3QgbmRtc2cgKikgTkxNU0dfREFUQShubG1wKTsKLSAgICBpZiAobmxtcC0+bmxtc2dfdHlwZSAhPSBSVE1fTkVXTkVJR0gpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIldyb25nIG5ldGxpbmsgbWVzc2FnZSB0eXBlICVkXG4iLCBubG1wLT5ubG1zZ190eXBlKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGlmIChydG1wLT5uZG1fc3RhdGUgIT0gTlVEX05PQVJQKSB7Ci0gICAgICAgIG1lbXNldCh0YiwgMCwgc2l6ZW9mKHN0cnVjdCBydGF0dHIgKikgKiAoTkRBX01BWCArIDEpKTsKLSAgICAgICAgbGVuZ3RoID0gbmxtcC0+bmxtc2dfbGVuIC0gTkxNU0dfTEVOR1RIKHNpemVvZigqcnRtcCkpOwotICAgICAgICBpZiAobGVuZ3RoIDwgMCkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5ldGxpbmsgbWVzc2FnZSBsZW5ndGggJWQgPCAlZCBpcyBpbnZhbGlkXG4iLAotICAgICAgICAgICAgICAgICAgICAgbmxtcC0+bmxtc2dfbGVuLCAoaW50KU5MTVNHX0xFTkdUSChzaXplb2YoKnJ0bXApKSk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyoKLSAgICAgICAgICogdGhpcyBpcyB3aGF0IHRoZSBrZXJuZWwtcmVtb3ZlZCBOREFfUlRBIGRlZmluZSBkaWQgCi0gICAgICAgICAqLwotICAgICAgICBydGEgPSAoKHN0cnVjdCBydGF0dHIgKikgKCgoY2hhciAqKSAocnRtcCkpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTE1TR19BTElHTihzaXplb2Yoc3RydWN0IG5kbXNnKSkpKTsKLSAgICAgICAgd2hpbGUgKFJUQV9PSyhydGEsIGxlbmd0aCkpIHsKLSAgICAgICAgICAgIGlmIChydGEtPnJ0YV90eXBlIDw9IE5EQV9NQVgpCi0gICAgICAgICAgICAgICAgdGJbcnRhLT5ydGFfdHlwZV0gPSBydGE7Ci0gICAgICAgICAgICBydGEgPSBSVEFfTkVYVChydGEsIGxlbmd0aCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGxlbmd0aCkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlJlY2VpdmVkIHVuZXZlbiBudW1iZXIgb2YgbmV0bGluayIKLSAgICAgICAgICAgICAgICAgICAgICAgICIgbWVzc2FnZXMgLSAlZCBieXRlcyByZW1haW5pbmdcbiIsIGxlbmd0aCk7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgLyoKLSAgICAgICAgICogRmlsbCB1cCB0aGUgaW5kZXgKLSAgICAgICAgICovCi0gICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IHJ0bXAtPm5kbV9pZmluZGV4OwotICAgICAgICAvKgotICAgICAgICAgKiBGaWxsIHVwIGlwIGFkZHJlc3MgCi0gICAgICAgICAqLwotICAgICAgICBpZiAodGJbTkRBX0RTVF0pIHsKLSAgICAgICAgICAgIG1lbXNldCgmYWRkciwgJ1wwJywgc2l6ZW9mKGFkZHIpKTsKLSAgICAgICAgICAgIGluNnAgPSAoc3RydWN0IGluNl9hZGRyICopIFJUQV9EQVRBKHRiW05EQV9EU1RdKTsKLSAgICAgICAgICAgIHNwcmludGYoYWRkciwgTklQNl9GTVQsIE5JUDYoKmluNnApKTsKLSAgICAgICAgICAgIGluX2xlbiA9IGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiA9Ci0gICAgICAgICAgICAgICAgc2l6ZW9mKGVudHJ5LT5hcnBfaXBhZGRyZXNzKTsKLSAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KDE2ID09IGluX2xlbik7Ci0gICAgICAgICAgICBvdXRfbGVuID0gMDsKLSAgICAgICAgICAgIGJ1ZiA9IGVudHJ5LT5hcnBfaXBhZGRyZXNzOwotICAgICAgICAgICAgaWYgKDEgIT0gbmV0c25tcF9oZXhfdG9fYmluYXJ5KCZidWYsICZpbl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9sZW4sIDAsIGFkZHIsICI6IikpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgcGFyc2luZyAnJXMnLCBza2lwcGluZ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoMTYgPT0gb3V0X2xlbik7Ci0gICAgICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSBvdXRfbGVuOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0YltOREFfTExBRERSXSkgewotICAgICAgICAgICAgbWVtc2V0KCZhZGRyLCAnXDAnLCBzaXplb2YoYWRkcikpOwotICAgICAgICAgICAgaHdhZGRyID0gUlRBX0RBVEEodGJbTkRBX0xMQUREUl0pOwotICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gPSBSVEFfUEFZTE9BRCh0YltOREFfTExBRERSXSk7Ci0gICAgICAgICAgICBidWYgPSBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuOyBpKyspCi0gICAgICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc1tpXSA9IGh3YWRkcltpXTsKLSAgICAgICAgfQotCi0gICAgICAgIHN3aXRjaCAocnRtcC0+bmRtX3N0YXRlKSB7Ci0gICAgICAgIGNhc2UgTlVEX0lOQ09NUExFVEU6Ci0gICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9JTkNPTVBMRVRFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlVEX1JFQUNIQUJMRToKLSAgICAgICAgY2FzZSBOVURfUEVSTUFORU5UOgotICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUkVBQ0hBQkxFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlVEX1NUQUxFOgotICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfU1RBTEU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfREVMQVk6Ci0gICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9ERUxBWTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE5VRF9QUk9CRToKLSAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1BST0JFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTlVEX0ZBSUxFRDoKLSAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0lOVkFMSUQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfTk9ORToKLSAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX1VOS05PV047Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJVbnJlY29nbml6ZWQgQVJQIGVudHJ5IHN0YXRlICVkIiwgcnRtcC0+bmRtX3N0YXRlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoIChydG1wLT5uZG1fc3RhdGUpIHsKLSAgICAgICAgY2FzZSBOVURfSU5DT01QTEVURToKLSAgICAgICAgY2FzZSBOVURfRkFJTEVEOgotICAgICAgICBjYXNlIE5VRF9OT05FOgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0lOVkFMSUQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfUkVBQ0hBQkxFOgotICAgICAgICBjYXNlIE5VRF9TVEFMRToKLSAgICAgICAgY2FzZSBOVURfREVMQVk6Ci0gICAgICAgIGNhc2UgTlVEX1BST0JFOgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0RZTkFNSUM7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBOVURfUEVSTUFORU5UOgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX1NUQVRJQzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0xPQ0FMOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAvKiBjb3VsZCBub3QgY3JlYXRlIGRhdGEgZm9yIHRoaXMgaW50ZXJmYWNlICovCi0gICAgfQotCi0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX25ldGxpbmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDU5YzIzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9uZXRsaW5rLmMKQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisKKworc3RhdGljIGludCBmaWxsdXBfZW50cnlfaW5mbyhuZXRzbm1wX2FycF9lbnRyeSAqZW50cnksIHN0cnVjdCBubG1zZ2hkciAqaCk7CitzdGF0aWMgdm9pZCBuZXRzbm1wX2FjY2Vzc19hcnBfcmVhZF9uZXRsaW5rKGludCBmZCwgdm9pZCAqZGF0YSk7CisKKy8qKgorICovCituZXRzbm1wX2FycF9hY2Nlc3MgKgorbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZSh1X2ludCBpbml0X2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwVXBkYXRlICp1cGRhdGVfaG9vaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcEFjY2Vzc0FycEdDICpnY19ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNhY2hlX3RpbWVvdXQsIGludCAqY2FjaGVfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNhY2hlX2V4cGlyZWQpCit7CisgICAgbmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3M7CisKKyAgICBhY2Nlc3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfYXJwX2FjY2Vzcyk7CisgICAgaWYgKE5VTEwgPT0gYWNjZXNzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm1hbGxvYyBlcnJvciBpbiBuZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlXG4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgYWNjZXNzLT5hcmNoX21hZ2ljID0gTlVMTDsKKyAgICBhY2Nlc3MtPm1hZ2ljID0gTlVMTDsKKyAgICBhY2Nlc3MtPnVwZGF0ZV9ob29rID0gdXBkYXRlX2hvb2s7CisgICAgYWNjZXNzLT5nY19ob29rID0gZ2NfaG9vazsKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDA7CisKKyAgICBpZiAoY2FjaGVfdGltZW91dCAhPSBOVUxMKQorICAgICAgICAqY2FjaGVfdGltZW91dCA9IDU7CisgICAgaWYgKGNhY2hlX2ZsYWdzICE9IE5VTEwpCisgICAgICAgICpjYWNoZV9mbGFncyB8PSBORVRTTk1QX0NBQ0hFX1JFU0VUX1RJTUVSX09OX1VTRSB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FEOworICAgIGFjY2Vzcy0+Y2FjaGVfZXhwaXJlZCA9IGNhY2hlX2V4cGlyZWQ7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOm5ldGxpbms6YXJwIiwgImNyZWF0ZSBhcnAgY2FjaGVcbiIpKTsKKworICAgIHJldHVybiBhY2Nlc3M7Cit9CisKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfZGVsZXRlKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKQoreworICAgIGlmIChOVUxMID09IGFjY2VzcykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBuZXRzbm1wX2FjY2Vzc19hcnBfdW5sb2FkKGFjY2Vzcyk7CisgICAgZnJlZShhY2Nlc3MpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfbG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBpbnQgciwgZmQgPSAodWludHB0cl90KSBhY2Nlc3MtPmFyY2hfbWFnaWM7CisgICAgc3RydWN0IHsKKyAgICAgICAgc3RydWN0IG5sbXNnaGRyIG47CisgICAgICAgIHN0cnVjdCBuZG1zZyByOworICAgIH0gcmVxOworCisgICAgaWYgKGFjY2Vzcy0+c3luY2hyb25pemVkKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmIChmZCA9PSAwKSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9ubCBzYTsKKworICAgICAgICBmZCA9IHNvY2tldChQRl9ORVRMSU5LLCBTT0NLX0RHUkFNLCBORVRMSU5LX1JPVVRFKTsKKyAgICAgICAgaWYgKGZkIDwgMCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQ6IG5ldGxpbmsgc29ja2V0IGNyZWF0ZSBlcnJvclxuIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgYWNjZXNzLT5hcmNoX21hZ2ljID0gKHZvaWQgKikodWludHB0cl90KWZkOworCisgICAgICAgIG1lbXNldCgmc2EsIDAsIHNpemVvZihzYSkpOworICAgICAgICBzYS5ubF9mYW1pbHkgPSBBRl9ORVRMSU5LOworICAgICAgICBzYS5ubF9ncm91cHMgPSBSVE1HUlBfTkVJR0g7CisgICAgICAgIGlmIChiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyKikgJnNhLCBzaXplb2Yoc2EpKSA8IDApIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfYWNjZXNzX2FycF9sb2FkOiBuZXRsaW5rIGJpbmQgZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZWdpc3Rlcl9yZWFkZmQoZmQsIG5ldHNubXBfYWNjZXNzX2FycF9yZWFkX25ldGxpbmssIGFjY2VzcykgIT0gMCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQ6IGVycm9yIHJlZ2lzdGVyaW5nIG5ldGxpbmsgc29ja2V0XG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6bmV0bGluazphcnAiLCAic3luY2hyb25pemluZyBhcnAgdGFibGVcbiIpKTsKKworICAgIGFjY2Vzcy0+Z2VuZXJhdGlvbisrOworCisgICAgbWVtc2V0KCZyZXEsIDAsIHNpemVvZihyZXEpKTsKKyAgICByZXEubi5ubG1zZ19sZW4gPSBzaXplb2YocmVxKTsKKyAgICByZXEubi5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1QgfCBOTE1fRl9ST09UOworICAgIHJlcS5uLm5sbXNnX3R5cGUgPSBSVE1fR0VUTkVJR0g7CisgICAgcmVxLnIubmRtX2ZhbWlseSA9IEFGX1VOU1BFQzsKKworICAgIHIgPSBzZW5kKGZkLCAmcmVxLCByZXEubi5ubG1zZ19sZW4sIDApOworICAgIGlmIChyIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJuZXRzbm1wX2FjY2Vzc19hcnBfcmVmcmVzaDogc2VuZCBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd2hpbGUgKCFhY2Nlc3MtPnN5bmNocm9uaXplZCkKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX3JlYWRfbmV0bGluayhmZCwgYWNjZXNzKTsKKyAgICBhY2Nlc3MtPmdjX2hvb2soYWNjZXNzKTsKKworICAgIHJldHVybiAwOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBpbnQgZmQ7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOm5ldGxpbms6YXJwIiwgInVubG9hZCBhcnAgY2FjaGVcbiIpKTsKKworICAgIGZkID0gKHVpbnRwdHJfdCkgYWNjZXNzLT5hcmNoX21hZ2ljOworICAgIGlmIChmZCA+IDApIHsKKyAgICAgICAgIHVucmVnaXN0ZXJfcmVhZGZkKGZkKTsKKyAgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgIGFjY2Vzcy0+YXJjaF9tYWdpYyA9IE5VTEw7CisJIGFjY2Vzcy0+c3luY2hyb25pemVkID0gMDsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIG5ldHNubXBfYWNjZXNzX2FycF9yZWFkX25ldGxpbmsoaW50IGZkLCB2b2lkICpkYXRhKQoreworICAgIG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzID0gKG5ldHNubXBfYXJwX2FjY2VzcyAqKSBkYXRhOworICAgIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeTsKKyAgICBjaGFyIGJ1ZlsxNjM4NF07CisgICAgc3RydWN0IG5sbXNnaGRyICpoOworICAgIGludCByLCBsZW47CisKKyAgICBkbyB7CisgICAgICAgIHIgPSByZWN2KGZkLCBidWYsIHNpemVvZihidWYpLCBNU0dfRE9OVFdBSVQpOworICAgICAgICBpZiAociA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJuZXRsaW5rIGJ1ZmZlciBvdmVycnVuXG4iKTsKKyAgICAgICAgICAgIGFjY2Vzcy0+c3luY2hyb25pemVkID0gMDsKKyAgICAgICAgICAgIGlmIChhY2Nlc3MtPmNhY2hlX2V4cGlyZWQgIT0gTlVMTCkKKwkJKmFjY2Vzcy0+Y2FjaGVfZXhwaXJlZCA9IDE7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IHdoaWxlICgwKTsKKyAgICBsZW4gPSByOworCisgICAgZm9yIChoID0gKHN0cnVjdCBubG1zZ2hkciAqKSBidWY7IE5MTVNHX09LKGgsIGxlbik7IGggPSBOTE1TR19ORVhUKGgsIGxlbikpIHsKKyAgICAgICAgIGlmIChoLT5ubG1zZ190eXBlID09IE5MTVNHX0RPTkUpIHsKKyAgICAgICAgICAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDE7CisgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICB9CisKKyAgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6bmV0bGluazphcnAiLCAiYXJwIG5ldGxpbmsgbm90aWZpY2F0aW9uXG4iKSk7CisgICAgCisgICAgICAgICBlbnRyeS0+Z2VuZXJhdGlvbiA9IGFjY2Vzcy0+Z2VuZXJhdGlvbjsKKyAgICAgICAgIHIgPSBmaWxsdXBfZW50cnlfaW5mbyAoZW50cnksIGgpOworICAgICAgICAgaWYgKHIgPiAwKSB7CisgICAgICAgICAgICAgYWNjZXNzLT51cGRhdGVfaG9vayhhY2Nlc3MsIGVudHJ5KTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgImZpbGxpbmcgZW50cnkgaW5mbyBmYWlsZWRcbiIpKTsKKyAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpuZXRsaW5rOmFycCIsICJmaWxsaW5nIGVudHJ5IGluZm8gZmFpbGVkXG4iKSk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2ZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwgc3RydWN0IG5sbXNnaGRyICpubG1wKQoreworICAgIHN0cnVjdCBuZG1zZyAgICpydG1wOworICAgIHN0cnVjdCBydGF0dHIgICp0YltOREFfTUFYICsgMV0sICpydGE7CisgICAgaW50ICAgICAgICAgICAgIGxlbmd0aDsKKworICAgIHJ0bXAgPSAoc3RydWN0IG5kbXNnICopIE5MTVNHX0RBVEEobmxtcCk7CisgICAgc3dpdGNoIChubG1wLT5ubG1zZ190eXBlKSB7CisgICAgY2FzZSBSVE1fTkVXTkVJR0g6CisgICAgICAgIGlmIChydG1wLT5uZG1fc3RhdGUgPT0gTlVEX0ZBSUxFRCkKKyAgICAgICAgICAgIGVudHJ5LT5mbGFncyA9IE5FVFNOTVBfQUNDRVNTX0FSUF9FTlRSWV9GTEFHX0RFTEVURTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmZsYWdzID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSVE1fREVMTkVJR0g6CisgICAgICAgIGVudHJ5LT5mbGFncyA9IE5FVFNOTVBfQUNDRVNTX0FSUF9FTlRSWV9GTEFHX0RFTEVURTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSVE1fR0VUTkVJR0g6CisgICAgICAgIHJldHVybiAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6bmV0bGluazphcnAiLAorICAgICAgICAgICAgICAgICAgICAiV3JvbmcgTmV0bGluayBtZXNzYWdlIHR5cGUgJWRcbiIsIG5sbXAtPm5sbXNnX3R5cGUpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChydG1wLT5uZG1fc3RhdGUgPT0gTlVEX05PQVJQKSB7CisgICAgICAgIC8qIE5VRF9OT0FSUCBpcyBmb3IgYnJvYWRjYXN0IGFkZHJlc3NlcyBhbmQgc2ltaWxhciwKKyAgICAgICAgICogZHJvcCB0aGVtIHNpbGVudGx5ICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIG1lbXNldCh0YiwgMCwgc2l6ZW9mKHN0cnVjdCBydGF0dHIgKikgKiAoTkRBX01BWCArIDEpKTsKKyAgICBsZW5ndGggPSBubG1wLT5ubG1zZ19sZW4gLSBOTE1TR19MRU5HVEgoc2l6ZW9mKCpydG1wKSk7CisgICAgcnRhID0gKChzdHJ1Y3QgcnRhdHRyICopICgoKGNoYXIgKikgKHJ0bXApKSArIE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgbmRtc2cpKSkpOworICAgIHdoaWxlIChSVEFfT0socnRhLCBsZW5ndGgpKSB7CisgICAgICAgIGlmIChydGEtPnJ0YV90eXBlIDw9IE5EQV9NQVgpCisgICAgICAgICAgICB0YltydGEtPnJ0YV90eXBlXSA9IHJ0YTsKKyAgICAgICAgcnRhID0gUlRBX05FWFQocnRhLCBsZW5ndGgpOworICAgIH0KKworICAgIC8qCisgICAgICogRmlsbCB1cCB0aGUgaW5kZXggYW5kIGFkZHJlc3NlcworICAgICAqLworICAgIGVudHJ5LT5pZl9pbmRleCA9IHJ0bXAtPm5kbV9pZmluZGV4OworICAgIGlmICh0YltOREFfRFNUXSkgeworICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSBSVEFfUEFZTE9BRCh0YltOREFfRFNUXSk7CisgICAgICAgIGlmIChlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPiBzaXplb2YoZW50cnktPmFycF9pcGFkZHJlc3MpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibmV0bGluayBpcCBhZGRyZXNzIGxlbmd0aCAlZCBpcyB0b28gbG9uZ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KGVudHJ5LT5hcnBfaXBhZGRyZXNzLCBSVEFfREFUQSh0YltOREFfRFNUXSksCisgICAgICAgZW50cnktPmFycF9pcGFkZHJlc3NfbGVuKTsKKyAgICB9CisgICAgaWYgKHRiW05EQV9MTEFERFJdKSB7CisgICAgICAgIGVudHJ5LT5hcnBfcGh5c2FkZHJlc3NfbGVuID0gUlRBX1BBWUxPQUQodGJbTkRBX0xMQUREUl0pOworICAgICAgICBpZiAoZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gPiBzaXplb2YoZW50cnktPmFycF9waHlzYWRkcmVzcykpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJuZXRsaW5rIGh3IGFkZHJlc3MgbGVuZ3RoICVkIGlzIHRvbyBsb25nXG4iLAorICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4pOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX3BoeXNhZGRyZXNzLCBSVEFfREFUQSh0YltOREFfTExBRERSXSksCisgICAgICAgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbik7CisgICAgfQorCisgICAgc3dpdGNoIChydG1wLT5uZG1fc3RhdGUpIHsKKyAgICBjYXNlIE5VRF9JTkNPTVBMRVRFOgorICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9JTkNPTVBMRVRFOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9SRUFDSEFCTEU6CisgICAgY2FzZSBOVURfUEVSTUFORU5UOgorICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9SRUFDSEFCTEU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlVEX1NUQUxFOgorICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9TVEFMRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOVURfREVMQVk6CisgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0RFTEFZOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9QUk9CRToKKyAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUFJPQkU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTlVEX0ZBSUxFRDoKKyAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfSU5WQUxJRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOVURfTk9ORToKKyAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfVU5LTk9XTjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlVucmVjb2duaXplZCBBUlAgZW50cnkgc3RhdGUgJWQiLCBydG1wLT5uZG1fc3RhdGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHJ0bXAtPm5kbV9zdGF0ZSkgeworICAgIGNhc2UgTlVEX0lOQ09NUExFVEU6CisgICAgY2FzZSBOVURfRkFJTEVEOgorICAgIGNhc2UgTlVEX05PTkU6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9JTlZBTElEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9SRUFDSEFCTEU6CisgICAgY2FzZSBOVURfU1RBTEU6CisgICAgY2FzZSBOVURfREVMQVk6CisgICAgY2FzZSBOVURfUFJPQkU6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9EWU5BTUlDOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5VRF9QRVJNQU5FTlQ6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9TVEFUSUM7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IElORVRORVRUT01FRElBVFlQRV9MT0NBTDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIDE7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9zeXNjdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGU5Y2RhCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9zeXNjdGwuYwpAQCAtMCwwICsxLDMzMCBAQAorLyoKKyAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bmV0L2lmX2RsLmg+CisjaW5jbHVkZSA8bmV0L2lmX3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0L3JvdXRlLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaWYgIWRlZmluZWQoU0FfU0laRSkgJiYgIWRlZmluZWQoUlRfUk9VTkRVUCkKKyNkZWZpbmUgUlRfUk9VTkRVUChhKSAgXAorCSgoYSkgPiAwID8gKDEgKyAoKChhKSAtIDEpIHwgKHNpemVvZihsb25nKSAtIDEpKSkgOiBzaXplb2YobG9uZykpCisjZW5kaWYKKworc3RhdGljIGludCBfbG9hZF9hcnBfdGFibGVfZnJvbV9zeXNjdGwobmV0c25tcF9hcnBfYWNjZXNzICopOworc3RhdGljIGludCBfbG9hZF9uZHBfdGFibGVfZnJvbV9zeXNjdGwobmV0c25tcF9hcnBfYWNjZXNzICopOworCituZXRzbm1wX2FycF9hY2Nlc3MgKgorbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZSh1X2ludCBpbml0X2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwVXBkYXRlICp1cGRhdGVfaG9vaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcEFjY2Vzc0FycEdDICpnY19ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmNhY2hlX3RpbWVvdXQsIGludCAqY2FjaGVfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNhY2hlX2V4cGlyZWQpCit7CisgICAgbmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3M7CisKKyAgICBhY2Nlc3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfYXJwX2FjY2Vzcyk7CisgICAgaWYgKE5VTEwgPT0gYWNjZXNzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJtYWxsb2MgZXJyb3IgaW4gbmV0c25tcF9hY2Nlc3NfYXJwX2NyZWF0ZVxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGFjY2Vzcy0+YXJjaF9tYWdpYyA9IE5VTEw7CisgICAgYWNjZXNzLT5tYWdpYyA9IE5VTEw7CisgICAgYWNjZXNzLT51cGRhdGVfaG9vayA9IHVwZGF0ZV9ob29rOworICAgIGFjY2Vzcy0+Z2NfaG9vayA9IGdjX2hvb2s7CisgICAgYWNjZXNzLT5zeW5jaHJvbml6ZWQgPSAwOworCisgICAgaWYgKGNhY2hlX3RpbWVvdXQgIT0gTlVMTCkKKyAgICAgICAgKmNhY2hlX3RpbWVvdXQgPSA1OworICAgIGlmIChjYWNoZV9mbGFncyAhPSBOVUxMKQorICAgICAgICAqY2FjaGVfZmxhZ3MgfD0gTkVUU05NUF9DQUNIRV9ET05UX0ZSRUVfQkVGT1JFX0xPQUQKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRDsKKyAgICBhY2Nlc3MtPmNhY2hlX2V4cGlyZWQgPSBjYWNoZV9leHBpcmVkOworCisgICAgcmV0dXJuIGFjY2VzczsKK30KKworaW50IG5ldHNubXBfYWNjZXNzX2FycF9kZWxldGUobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpCit7CisgICAgaWYgKE5VTEwgPT0gYWNjZXNzKQorICAgICAgICByZXR1cm4gMDsKKworICAgIG5ldHNubXBfYWNjZXNzX2FycF91bmxvYWQoYWNjZXNzKTsKKyAgICBmcmVlKGFjY2Vzcyk7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IG5ldHNubXBfYWNjZXNzX2FycF9sb2FkKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKQoreworICAgIGludCBlcnIgPSAwOworCisgICAgYWNjZXNzLT5nZW5lcmF0aW9uKys7CisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICJyb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkIGlwdjRcbiIpKTsKKyAgICBlcnIgPSBfbG9hZF9hcnBfdGFibGVfZnJvbV9zeXNjdGwoYWNjZXNzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLAorICAgICAgICAgICAgIm5ldHNubXBfYWNjZXNzX2FycF9pcHY0IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBhY2Nlc3MtPmdjX2hvb2soYWNjZXNzKTsKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IChlcnIgPT0gMCk7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICJyb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkIGlwdjZcbiIpKTsKKyAgICBlcnIgPSBfbG9hZF9uZHBfdGFibGVfZnJvbV9zeXNjdGwoYWNjZXNzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLAorICAgICAgICAgICAgIm5ldHNubXBfYWNjZXNzX2FycF9pcHY2IGZhaWxlZCAlZFxuIiwgZXJyKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBhY2Nlc3MtPmdjX2hvb2soYWNjZXNzKTsKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IChlcnIgPT0gMCk7CisjZW5kaWYKKworb3V0OgorICAgIHJldHVybiAoZXJyID09IDAgPyAwIDogLTEpOworfQorCitpbnQgbmV0c25tcF9hY2Nlc3NfYXJwX3VubG9hZChuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBhY2Nlc3MtPnN5bmNocm9uaXplZCA9IDA7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2xvYWRfYXJwX3RhYmxlX2Zyb21fc3lzY3RsKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKQoreworICAgIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeTsKKyAgICBzdHJ1Y3QgcnRfbXNnaGRyICpydG07CisgICAgc3RydWN0IHNvY2thZGRyX2luYXJwICpzaW4yOworICAgIHN0cnVjdCBzb2NrYWRkcl9kbCAqc2RsOworICAgIGNoYXIgKmJ1ZiwgKmxpbSwgKm5ld2J1ZiwgKm5leHQ7CisgICAgaW50IG1pYls2XTsKKyAgICBzaXplX3QgbmVlZGVkOworICAgIGludCBlcnIsIHN0OworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBhY2Nlc3MpOworCisgICAgbWliWzBdID0gQ1RMX05FVDsKKyAgICBtaWJbMV0gPSBQRl9ST1VURTsKKyAgICBtaWJbMl0gPSAwOworICAgIG1pYlszXSA9IEFGX0lORVQ7CisgICAgbWliWzRdID0gTkVUX1JUX0ZMQUdTOworICAgIG1pYls1XSA9IFJURl9MTElORk87CisKKyAgICBlcnIgPSAwOworICAgIGJ1ZiA9IG5ld2J1ZiA9IE5VTEw7CisKKyAgICAvKiBUaGUgZm9sbG93aW5nIGxvZ2ljIHdhcyBhZGFwdGVkIGZyb20gc2VhcmNoKC4uKSBpbiB1c3Iuc2Jpbi9hcnAvYXJwLmMgKi8KKworICAgIGlmIChzeXNjdGwobWliLCA2LCBOVUxMLCAmbmVlZGVkLCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qIEVtcHR5IGFycCB0YWJsZS4gKi8KKyAgICBpZiAobmVlZGVkID09IDApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgZm9yICg7OykgeworICAgICAgICBuZXdidWYgPSByZWFsbG9jKGJ1ZiwgbmVlZGVkKTsKKyAgICAgICAgaWYgKG5ld2J1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBidWYgPSBuZXdidWY7CisgICAgICAgIHN0ID0gc3lzY3RsKG1pYiwgNiwgYnVmLCAmbmVlZGVkLCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKHN0ID09IDAgfHwgZXJybm8gIT0gRU5PTUVNKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5lZWRlZCArPSBuZWVkZWQgLyA4OyAvKiBYWFg6IHdoeSA4PyAqLworICAgIH0KKyAgICBpZiAoc3QgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGxpbSA9IGJ1ZiArIG5lZWRlZDsKKyAgICBmb3IgKG5leHQgPSBidWY7IG5leHQgPCBsaW07IG5leHQgKz0gcnRtLT5ydG1fbXNnbGVuKSB7CisKKyAgICAgICAgcnRtID0gKHN0cnVjdCBydF9tc2doZHIgKiluZXh0OworICAgICAgICBzaW4yID0gKHN0cnVjdCBzb2NrYWRkcl9pbmFycCopKHJ0bSArIDEpOworI2lmZGVmIFNBX1NJWkUKKyAgICAgICAgc2RsID0gKHN0cnVjdCBzb2NrYWRkcl9kbCopKChjaGFyICopc2luMiArIFNBX1NJWkUoc2luMikpOworI2Vsc2UKKwlzZGwgPSAoc3RydWN0IHNvY2thZGRyX2RsKikodm9pZCAqKShSVF9ST1VORFVQKHNpbjItPnNpbl9sZW4pICsgKGNoYXIgKikodm9pZCAqKXNpbjIpOworI2VuZGlmCisKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5LT5nZW5lcmF0aW9uID0gYWNjZXNzLT5nZW5lcmF0aW9uOworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSBydG0tPnJ0bV9pbmRleDsKKworICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSA0OworCisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX2lwYWRkcmVzcywgJnNpbjItPnNpbl9hZGRyLnNfYWRkciwKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbik7CisKKyAgICAgICAgLyogSFcgQWRkcmVzcyAqLworICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbiA9IDY7CisgICAgICAgIGlmICgwIDwgc2RsLT5zZGxfYWxlbiAmJgorICAgICAgICAgICAgc2RsLT5zZGxfYWxlbiA8PSBORVRTTk1QX0FDQ0VTU19BUlBfUEhZU0FERFJfQlVGX1NJWkUpIHsKKyAgICAgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX3BoeXNhZGRyZXNzLCBMTEFERFIoc2RsKSwgc2RsLT5zZGxfYWxlbik7CisgICAgICAgICAgICAvKiBQcm9jZXNzIHN0YXR1cyAqLworICAgICAgICAgICAgLyogWFhYOiBzZXR0aW5nIHRoaXMgdmFsdWUgZm9yIGFsbCBzdGF0ZXMgaXMgd3JvbmcuICovCisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9SRUFDSEFCTEU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzWzBdID0gJ1wwJzsKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0lOQ09NUExFVEU7CisgICAgICAgIH0KKworICAgICAgICAvKiBQcm9jZXNzIHR5cGUgKi8KKyAgICAgICAgLyogWFhYOiBtb3JlIHN0YXRlcyBzaG91bGQgYmUgaGFuZGxlZCBoZXJlLCBwcm9iYWJseS4uICovCisgICAgICAgIGlmIChydG0tPnJ0bV9ybXgucm14X2V4cGlyZSA9PSAwKQorICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX1NUQVRJQzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0RZTkFNSUM7CisKKyAgICAgICAgYWNjZXNzLT51cGRhdGVfaG9vayhhY2Nlc3MsIGVudHJ5KTsKKworICAgIH0KKworb3V0OgorICAgIGZyZWUoYnVmKTsKKyAgICByZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50CitfbG9hZF9uZHBfdGFibGVfZnJvbV9zeXNjdGwobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpCit7CisjaWYgMQorICAgIG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeTsKKyAgICBzdHJ1Y3QgcnRfbXNnaGRyICpydG07CisgICAgc3RydWN0IHNvY2thZGRyX2luNiAqc2luMjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfZGwgKnNkbDsKKyAgICBzaXplX3QgbmVlZGVkOworICAgIGludCBlcnIsIG1pYls2XSwgc3Q7CisgICAgY2hhciAqYnVmLCAqbGltLCAqbmV3YnVmLCAqbmV4dDsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gYWNjZXNzKTsKKworICAgIG1pYlswXSA9IENUTF9ORVQ7CisgICAgbWliWzFdID0gUEZfUk9VVEU7CisgICAgbWliWzJdID0gMDsKKyAgICBtaWJbM10gPSBBRl9JTkVUNjsKKyAgICBtaWJbNF0gPSBORVRfUlRfRkxBR1M7CisgICAgbWliWzVdID0gUlRGX0xMSU5GTzsKKworICAgIGVyciA9IDA7CisgICAgYnVmID0gbmV3YnVmID0gTlVMTDsKKworICAgIGlmIChzeXNjdGwobWliLCA2LCBOVUxMLCAmbmVlZGVkLCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIC8qIEVtcHR5IGFycCB0YWJsZS4gKi8KKyAgICBpZiAobmVlZGVkID09IDApCisgICAgICAgIGdvdG8gb3V0OworCisgICAgZm9yICg7OykgeworICAgICAgICBuZXdidWYgPSByZWFsbG9jKGJ1ZiwgbmVlZGVkKTsKKyAgICAgICAgaWYgKG5ld2J1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBidWYgPSBuZXdidWY7CisgICAgICAgIHN0ID0gc3lzY3RsKG1pYiwgNiwgYnVmLCAmbmVlZGVkLCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKHN0ID09IDAgfHwgZXJybm8gIT0gRU5PTUVNKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5lZWRlZCArPSBuZWVkZWQgLyA4OyAvKiBYWFg6IHdoeSA4PyAqLworICAgIH0KKyAgICBpZiAoc3QgPT0gLTEpIHsKKyAgICAgICAgZXJyID0gZXJybm87CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKworICAgIGxpbSA9IGJ1ZiArIG5lZWRlZDsKKyAgICBmb3IgKG5leHQgPSBidWY7IG5leHQgPCBsaW07IG5leHQgKz0gcnRtLT5ydG1fbXNnbGVuKSB7CisKKyAgICAgICAgcnRtID0gKHN0cnVjdCBydF9tc2doZHIgKiluZXh0OworICAgICAgICBzaW4yID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYqKShydG0gKyAxKTsKKyNpZmRlZiBTQV9TSVpFCisgICAgICAgIHNkbCA9IChzdHJ1Y3Qgc29ja2FkZHJfZGwqKSgoY2hhciAqKXNpbjIgKyBTQV9TSVpFKHNpbjIpKTsKKyNlbHNlCisJc2RsID0gKHN0cnVjdCBzb2NrYWRkcl9kbCopKHZvaWQgKikoUlRfUk9VTkRVUChzaW4yLT5zaW42X2xlbikgKyAoY2hhciAqKSh2b2lkICopc2luMik7CisjZW5kaWYKKworICAgICAgICBpZiAoIShydG0tPnJ0bV9mbGFncyAmIFJURl9IT1NUKSB8fAorICAgICAgICAgICAgSU42X0lTX0FERFJfTVVMVElDQVNUKCZzaW4yLT5zaW42X2FkZHIpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICBlcnIgPSBFTk9NRU07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5LT5nZW5lcmF0aW9uID0gYWNjZXNzLT5nZW5lcmF0aW9uOworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSBydG0tPnJ0bV9pbmRleDsKKworICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSAxNjsKKworICAgICAgICBtZW1jcHkoZW50cnktPmFycF9pcGFkZHJlc3MsICZzaW4yLT5zaW42X2FkZHIuczZfYWRkciwKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbik7CisKKyAgICAgICAgLyogSFcgQWRkcmVzcyAqLworICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbiA9IHNkbC0+c2RsX2FsZW47CisgICAgICAgIGlmICgwIDwgc2RsLT5zZGxfYWxlbiAmJgorICAgICAgICAgICAgc2RsLT5zZGxfYWxlbiA8PSBORVRTTk1QX0FDQ0VTU19BUlBfUEhZU0FERFJfQlVGX1NJWkUpIHsKKyAgICAgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX3BoeXNhZGRyZXNzLCBMTEFERFIoc2RsKSwgc2RsLT5zZGxfYWxlbik7CisgICAgICAgICAgICAvKiBQcm9jZXNzIHN0YXR1cyAqLworICAgICAgICAgICAgLyogWFhYOiBzZXR0aW5nIHRoaXMgdmFsdWUgZm9yIGFsbCBzdGF0ZXMgaXMgd3JvbmcuICovCisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9SRUFDSEFCTEU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzWzBdID0gJ1wwJzsKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0lOQ09NUExFVEU7CisgICAgICAgIH0KKworICAgICAgICAvKiBQcm9jZXNzIHR5cGUgKi8KKyAgICAgICAgLyogWFhYOiBtb3JlIHN0YXRlcyBzaG91bGQgYmUgaGFuZGxlZCBoZXJlLCBwcm9iYWJseS4uICovCisgICAgICAgIGlmIChydG0tPnJ0bV9ybXgucm14X2V4cGlyZSA9PSAwKQorICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX1NUQVRJQzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmFycF90eXBlID0gSU5FVE5FVFRPTUVESUFUWVBFX0RZTkFNSUM7CisKKyAgICAgICAgYWNjZXNzLT51cGRhdGVfaG9vayhhY2Nlc3MsIGVudHJ5KTsKKworICAgIH0KKworb3V0OgorICAgIGZyZWUoYnVmKTsKKyAgICByZXR1cm4gZXJyOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyLmgKaW5kZXggYTRkZmJiMS4uNDliOTkyNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oCkBAIC0yMCw2ICsyMCw4IEBACiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9jb21tb24pCiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfbGludXgpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkNCApIHx8IGRlZmluZWQoIG5ldGJzZDUgKSB8fCBkZWZpbmVkKCBvcGVuYnNkICkgfHwgZGVmaW5lZCggZHJhZ29uZmx5ICkgfHwgZGVmaW5lZCggZGFyd2luICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX3N5c2N0bCkKICNlbHNlCiAvKgogICogY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGZpbGUhCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9zeXNjdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX3N5c2N0bC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNDZlYjgKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9zeXNjdGwuYwpAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKgorICogJElkOiQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaD4KKworI2luY2x1ZGUgImlwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oIgorCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxuZXQvcm91dGUuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2lmICFkZWZpbmVkKFNBX1NJWkUpICYmICFkZWZpbmVkKFJUX1JPVU5EVVApCisjZGVmaW5lIFJUX1JPVU5EVVAoYSkgIFwKKyAgICAgICAgKChhKSA+IDAgPyAoMSArICgoKGEpIC0gMSkgfCAoc2l6ZW9mKGxvbmcpIC0gMSkpKSA6IHNpemVvZihsb25nKSkKKyNlbmRpZgorCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGxvY2FsIHN0YXRpYyBwcm90b3R5cGVzCisgKi8KK3N0YXRpYyBpbnQgX2xvYWRfZGVmYXVsdHJvdXRlcl9mcm9tX3N5c2N0bChuZXRzbm1wX2NvbnRhaW5lciAqLCBpbnQpOworCitzdGF0aWMgaW50IGlkeF9vZmZzZXQ7CisKKy8qCisgKiBpbml0aWFsaXplIGFyY2ggc3BlY2lmaWMgc3RvcmFnZQorICoKKyAqIEByZXR2YWwgIDA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgPDA6IGVycm9yCisgKi8KK2ludAorbmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfZW50cnlfaW5pdChuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmVudHJ5KQoreworICAgIC8qCisgICAgICogaW5pdAorICAgICAqLworICAgIHJldHVybiAwOworfQorCisvKioKKyAqCisgKiBAcmV0dmFsICAwIG5vIGVycm9ycworICogQHJldHZhbCAhMCBlcnJvcnMKKyAqLworaW50CituZXRzbm1wX2FyY2hfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgZXJyOworCisgICAgZXJyID0gMDsKKyAgICBpZHhfb2Zmc2V0ID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZGVmYXVsdHJvdXRlcjplbnRyeTphcmNoIiwgImxvYWRcbiIpKTsKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICJuZXRzbm1wX2FyY2hfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfbG9hZDogY29udGFpbmVyIGludmFsaWRcbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBlcnIgPSBfbG9hZF9kZWZhdWx0cm91dGVyX2Zyb21fc3lzY3RsKGNvbnRhaW5lciwgQUZfSU5FVCk7CisgICAgaWYgKGVyciAhPSAwKSB7CisgICAgICAgIHVfaW50IGZsYWdzID0gTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0tFRVBfQ09OVEFJTkVSOworICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgZXJyID0gX2xvYWRfZGVmYXVsdHJvdXRlcl9mcm9tX3N5c2N0bChjb250YWluZXIsIEFGX0lORVQ2KTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0ZSRUVfS0VFUF9DT05UQUlORVI7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLCBmbGFncyk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyNlbmRpZgorCitvdXQ6CisgICAgcmV0dXJuIGVycjsKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCBubyBlcnJvcnMKKyAqIEByZXR2YWwgITAgZXJyb3JzCisgKi8KK3N0YXRpYyBpbnQKK19sb2FkX2RlZmF1bHRyb3V0ZXJfZnJvbV9zeXNjdGwobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGZhbWlseSkKK3sKKyAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmVudHJ5OworICAgIHN0cnVjdCBydF9tc2doZHIgKnJ0bTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKmRzdF9zYSwgKmd3X3NhOworICAgIGNoYXIgKmJ1ZiwgKmxpbSwgKm5ld2J1ZiwgKm5leHQ7CisgICAgY2hhciBhZGRyZXNzW05FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfQlVGX1NJWkVdOworICAgIGludCBtaWJbNl07CisgICAgc2l6ZV90IGFkZHJlc3NfbGVuLCBuZWVkZWQ7CisgICAgaW50IGFkZHJlc3NfdHlwZSwgZXJyLCBwcmVmZXJlbmNlLCBzdDsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKworICAgIG1pYlswXSA9IENUTF9ORVQ7CisgICAgbWliWzFdID0gUEZfUk9VVEU7CisgICAgbWliWzJdID0gMDsKKyAgICBtaWJbM10gPSBmYW1pbHk7CisgICAgbWliWzRdID0gTkVUX1JUX0RVTVA7CisgICAgbWliWzVdID0gMDsKKworICAgIGVyciA9IDA7CisKKyAgICBidWYgPSBuZXdidWYgPSBOVUxMOworCisgICAgaWYgKGZhbWlseSA9PSBBRl9JTkVUKSB7CisgICAgICAgIGFkZHJlc3NfbGVuID0gNDsKKyAgICAgICAgYWRkcmVzc190eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIH0gZWxzZSBpZiAoZmFtaWx5ID09IEFGX0lORVQ2KSB7CisgICAgICAgIGFkZHJlc3NfbGVuID0gMTY7CisgICAgICAgIGFkZHJlc3NfdHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY2OworI2VuZGlmCisgICAgfSBlbHNlIHsKKyAgICAgICAgZXJyID0gRUlOVkFMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBpZiAoc3lzY3RsKG1pYiwgNiwgTlVMTCwgJm5lZWRlZCwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIGVyciA9IGVycm5vOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICAvKiBFbXB0eSBhcnAgdGFibGUuICovCisgICAgaWYgKG5lZWRlZCA9PSAwKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGZvciAoOzspIHsKKyAgICAgICAgbmV3YnVmID0gcmVhbGxvYyhidWYsIG5lZWRlZCk7CisgICAgICAgIGlmIChuZXdidWYgPT0gTlVMTCkgeworICAgICAgICAgICAgZXJyID0gRU5PTUVNOworICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgYnVmID0gbmV3YnVmOworICAgICAgICBzdCA9IHN5c2N0bChtaWIsIHNpemVvZihtaWIpIC8gc2l6ZW9mKG1pYlswXSksIGJ1ZiwgJm5lZWRlZCwgTlVMTCwgMCk7CisgICAgICAgIGlmIChzdCA9PSAwIHx8IGVycm5vICE9IEVOT01FTSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZWVkZWQgKz0gbmVlZGVkIC8gODsgLyogWFhYOiB3aHkgOD8gKi8KKyAgICB9CisgICAgaWYgKHN0ID09IC0xKSB7CisgICAgICAgIGVyciA9IGVycm5vOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKKyAgICBsaW0gPSBidWYgKyBuZWVkZWQ7CisgICAgZm9yIChuZXh0ID0gYnVmOyBuZXh0IDwgbGltOyBuZXh0ICs9IHJ0bS0+cnRtX21zZ2xlbikgeworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKwlzdHJ1Y3QgaW42X2FkZHIgaW42YWRkcl9hbnkgPSBJTjZBRERSX0FOWV9JTklUOworI2VuZGlmCisKKyAgICAgICAgcnRtID0gKHN0cnVjdCBydF9tc2doZHIgKiluZXh0OworCisgICAgICAgIGlmICghKHJ0bS0+cnRtX2FkZHJzICYgUlRBX0dBVEVXQVkpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZHN0X3NhID0gKHN0cnVjdCBzb2NrYWRkciopKHJ0bSArIDEpOworI2lmZGVmIFNBX1NJWkUKKyAgICAgICAgZ3dfc2EgPSAoc3RydWN0IHNvY2thZGRyKikoU0FfU0laRShkc3Rfc2EpICsgKGNoYXIqKWRzdF9zYSk7CisjZWxzZQorICAgICAgICBnd19zYSA9IChzdHJ1Y3Qgc29ja2FkZHIqKShSVF9ST1VORFVQKGRzdF9zYS0+c2FfbGVuKSArIChjaGFyKilkc3Rfc2EpOworI2VuZGlmCisKKyAgICAgICAgc3dpdGNoIChmYW1pbHkpIHsKKyAgICAgICAgY2FzZSBBRl9JTkVUOgorICAgICAgICAgICAgaWYgKCgoc3RydWN0IHNvY2thZGRyX2luKilkc3Rfc2EpLT5zaW5fYWRkci5zX2FkZHIgIT0gSU5BRERSX0FOWSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwkgICAgbWVtY3B5KGFkZHJlc3MsICYoKHN0cnVjdCBzb2NrYWRkcl9pbiopZ3dfc2EpLT5zaW5fYWRkci5zX2FkZHIsCisJICAgICAgICAgICBhZGRyZXNzX2xlbik7CisgICAgICAgICAgICBicmVhazsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgICAgICBpZiAobWVtY21wKCgoc3RydWN0IHNvY2thZGRyX2luNiopZHN0X3NhKS0+c2luNl9hZGRyLnM2X2FkZHIsCisJCQkmaW42YWRkcl9hbnksIHNpemVvZiBpbjZhZGRyX2FueSkgIT0gMCkKKwkJY29udGludWU7IC8qIFhYWDogbmVlZCB0byBkZXRlcm1pbmUgcXVhbGlmeWluZyBjcml0ZXJpYSBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgKiBkZWZhdWx0IGdhdGV3YXlzIGluIElQdjYuICovCisgICAgICAgICAgICBtZW1jcHkoYWRkcmVzcywgJigoc3RydWN0IHNvY2thZGRyX2luNiopZHN0X3NhKS0+c2luNl9hZGRyLnM2X2FkZHIsCisJCSAgIGFkZHJlc3NfbGVuKTsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9jcmVhdGUoKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpIHsKKyAgICAgICAgICAgIGVyciA9IEVOT01FTTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLyogWFhYOiB0aGlzIGlzIHdyb25nIChoYXJkY29kaW5nIHRoZSByb3V0ZXIgcHJlZmVyZW5jZSB0byBtZWRpdW0pLiAqLworICAgICAgICBwcmVmZXJlbmNlID0gMDsKKworICAgICAgICBlbnRyeS0+bnNfZHJfaW5kZXggICAgPSArK2lkeF9vZmZzZXQ7CisgICAgICAgIGVudHJ5LT5kcl9hZGRyZXNzdHlwZSA9IGFkZHJlc3NfdHlwZTsKKyAgICAgICAgZW50cnktPmRyX2FkZHJlc3NfbGVuID0gYWRkcmVzc19sZW47CisgICAgICAgIG1lbWNweShlbnRyeS0+ZHJfYWRkcmVzcywgYWRkcmVzcywgc2l6ZW9mKGFkZHJlc3MpKTsKKyAgICAgICAgZW50cnktPmRyX2lmX2luZGV4ID0gcnRtLT5ydG1faW5kZXg7CisgICAgICAgIGVudHJ5LT5kcl9saWZldGltZSAgICA9IHJ0bS0+cnRtX3JteC5ybXhfZXhwaXJlOworICAgICAgICBlbnRyeS0+ZHJfcHJlZmVyZW5jZSAgPSBwcmVmZXJlbmNlOworCisgICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczphcnA6Y29udGFpbmVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciB3aXRoIGRlZmF1bHRyb3V0ZXJfZW50cnk6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgfQorCitvdXQ6CisgICAgZnJlZShidWYpOworICAgIHJldHVybiBlcnI7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKaW5kZXggOWNmODE4MS4uZDc5YzdjMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaApAQCAtMjIsNiArMjIsOCBAQAogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eCkKICNlbGlmIGRlZmluZWQoIHNvbGFyaXMyICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkNyApIHx8IGRlZmluZWQoIG5ldGJzZDUgKSB8fCBkZWZpbmVkKCBvcGVuYnNkNCApIHx8IGRlZmluZWQoIGRyYWdvbmZseSApIHx8IGRlZmluZWQoIGRhcndpbiApCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3N5c2N0bCkKICNlbHNlCiBjb25maWdfZXJyb3IodGhlIGlwYWRkcmVzcyBkYXRhIGFjY2VzcyBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4pCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jCmluZGV4IGI5ZjNjNjcuLmE2NjM5ODUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYwpAQCAtMTIsNiArMTIsMTkgQEAKIAogI2luY2x1ZGUgImlwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9jb25zdGFudHMuaCIKIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfY29tbW9uLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc19jb21tb25fY29weV91dGlsaXRpZXMsIGlwYWRkcmVzc19jb21tb24pCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZGRyZXNzX2VudHJ5X2NvcHksIGlwYWRkcmVzc19jb21tb24pCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZGRyZXNzX2VudHJ5X3VwZGF0ZSwgaXBhZGRyZXNzX2NvbW1vbikKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfcHJlZml4X2NvcHksIGlwYWRkcmVzc19jb21tb25fY29weV91dGlsaXRpZXMpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JUEFERFJFU1NfRU5UUllfQ09QWQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX2FyY2hfZW50cnlfY29weSkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JUEFERFJFU1NfRU5UUllfQ09QWSAqLworCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKICAqIGxvY2FsIHN0YXRpYyBwcm90b3R5cGVzCkBAIC0yNDcsNiArMjYwLDcgQEAKICAgICByZXR1cm4gcmM7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfRU5UUllfVVBEQVRFCiAvKioKICAqIHVwZGF0ZSBhbiBvbGQgaXBhZGRyZXNzX2VudHJ5IGZyb20gYSBuZXcgb25lCiAgKgpAQCAtMzI5LDcgKzM0Myw5IEBACiAKICAgICByZXR1cm4gY2hhbmdlZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19FTlRSWV9VUERBVEUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19FTlRSWV9DT1BZCiAvKioKICAqIGNvcHkgYW4gIGlwYWRkcmVzc19lbnRyeQogICoKQEAgLTM2MSwxMiArMzc3LDE0IEBACiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfRU5UUllfQ09QWSAqLwogCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKICAqIFV0aWxpdHkgcm91dGluZXMKICAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX1BSRUZJWF9DT1BZCiAvKioKICAqIGNvcHkgdGhlIHByZWZpeCBwb3J0aW9uIG9mIGFuIGlwIGFkZHJlc3MKICAqLwpAQCAtMzkyLDYgKzQxMCw3IEBACiAKICAgICByZXR1cm4gcGZ4X2xlbjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19QUkVGSVhfQ09QWSAqLwogCiAKIC8qKgpAQCAtNDIyLDYgKzQ0MSw1MCBAQAogICAgIHJldHVybiBsZW47CiB9CiAKK2luX2FkZHJfdCBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X21hc2soaW50IGxlbikKK3sKKyAgICBpbnQgaSA9IDAsIG0gPSAweDgwOworICAgIGluX2FkZHJfdCBtYXNrOworICAgIHVuc2lnbmVkIGNoYXIgKm1wID0gKHVuc2lnbmVkIGNoYXIgKikmbWFzazsKKworICAgIGlmIChsZW4gPCAwIHx8IGxlbiA+IDMyKSBhYm9ydCgpOworCisgICAgbWVtc2V0KG1wLCAwLCBzaXplb2YobWFzaykpOworCisgICAgd2hpbGUgKGxlbiA+PSA4KSB7CisgICAgICAgIG1wW2ldID0gMHhGRjsKKwlsZW4gLT0gODsKKwlpKys7CisgICAgfQorICAgIHdoaWxlIChsZW4pIHsKKyAgICAgICAgbXBbaV0gfD0gbTsKKwltID4+PSAxOworCWxlbi0tOworICAgIH0KKyAgICByZXR1cm4gbWFzazsKK30KKworaW50CituZXRzbm1wX2lwYWRkcmVzc19pcHY2X3ByZWZpeF9sZW4oc3RydWN0IGluNl9hZGRyIG1hc2spCit7CisgICAgaW50IGksIGxlbiA9IDA7CisgICAgdW5zaWduZWQgY2hhciAqbXAgPSAodW5zaWduZWQgY2hhciAqKSZtYXNrLnM2X2FkZHI7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykKKwlpZiAobXBbaV0gPT0gMHhGRikgbGVuICs9IDg7CisJZWxzZSBicmVhazsKKworICAgIGlmIChpID09IDE2KQorCXJldHVybiBsZW47CisKKyAgICB3aGlsZSgweDgwICYgbXBbaV0pIHsKKyAgICAgICAgKytsZW47CisgICAgICAgIG1wW2ldIDw8PSAxOworICAgIH0KKworICAgIHJldHVybiBsZW47Cit9CisKIAogLyoqCiAgKi8KQEAgLTQ1NCw2ICs1MTcsNyBAQAogICAgIHJldHVybiBtZW1jbXAobGgtPmlhX2FkZHJlc3MsIHJoLT5pYV9hZGRyZXNzLCBsaC0+aWFfYWRkcmVzc19sZW4pOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0NPTU1PTl9DT1BZX1VUSUxJVElFUwogaW50CiBuZXRzbm1wX2lwYWRkcmVzc19mbGFnc19jb3B5KHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QWR2UHJlZmVycmVkTGlmZXRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QWR2VmFsaWRMaWZldGltZSwKQEAgLTQ5OCw0ICs1NjIsNSBAQAogICAgIH0KICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19DT01NT05fQ09QWV9VVElMSVRJRVMgKi8KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCmluZGV4IGYyODFiYjYuLjYwMjVmMDUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKQEAgLTQsNiArNCw3IEBACiAgKiAkSWQkCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCiAKQEAgLTIwLDYgKzIxLDggQEAKIAogI2luY2x1ZGUgImlwYWRkcmVzc19pb2N0bC5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZHJlc3NfaW9jdGxfZW50cnlfY29weSwgaXBhZGRyZXNzX2NvbW1vbikKKwogc3RhdGljIHZvaWQgX3ByaW50X2ZsYWdzKHNob3J0IGZsYWdzKTsKIAogI2RlZmluZSBMSVNUX1RPS0VOICJpb2N0bF9leHRyYXMiCkBAIC04Niw2ICs4OSw3IEBACiAgICAgbmV0c25tcF9yZW1vdmVfbGlzdF9ub2RlKCZlbnRyeS0+YXJjaF9kYXRhLCBMSVNUX1RPS0VOKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19JT0NUTF9FTlRSWV9DT1BZCiAvKioKICAqIGNvcHkgaW9jdGwgZXh0cmFzCiAgKgpAQCAtMTIyLDYgKzEyNiw3IEBACiAKICAgICByZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfSU9DVExfRU5UUllfQ09QWSAqLwogCiAvKioKICAqIGxvYWQgaXB2NCBhZGRyZXNzIHZpYSBpb2N0bApAQCAtMTU5LDYgKzE2NCwxNCBAQAogCiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICIgaW50ZXJmYWNlICVkLCAlc1xuIiwgaSwgaWZycC0+aWZyX25hbWUpKTsKKworICAgICAgICBpZiAoQUZfSU5FVCAhPSBpZnJwLT5pZnJfYWRkci5zYV9mYW1pbHkpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICAgICAiIHNraXBwaW5nICVzOyBub24gQUZfSU5FVCBmYW1pbHkgJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpZnJwLT5pZnJfbmFtZSwgaWZycC0+aWZyX2FkZHIuc2FfZmFtaWx5KSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCiAgICAgICAgIC8qCiAgICAgICAgICAqLwogICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9jcmVhdGUoKTsKQEAgLTE4Myw3ICsxOTYsNiBAQAogICAgICAgICAvKgogICAgICAgICAgKiBzZXQgaW5kZXhlcwogICAgICAgICAgKi8KLSAgICAgICAgbmV0c25tcF9hc3NlcnQoQUZfSU5FVCA9PSBpZnJwLT5pZnJfYWRkci5zYV9mYW1pbHkpOwogICAgICAgICBzaSA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJmlmcnAtPmlmcl9hZGRyOwogICAgICAgICBlbnRyeS0+aWFfYWRkcmVzc19sZW4gPSBzaXplb2Yoc2ktPnNpbl9hZGRyLnNfYWRkcik7CiAgICAgICAgIGlwdmFsID0gc2ktPnNpbl9hZGRyLnNfYWRkcjsKQEAgLTU0NSw2ICs1NTcsOTEgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCisvKioKKyAqIEFkZC9yZW1vdmUgSVB2NiBhZGRyZXNzIHVzaW5nIGlvY3RsLgorICogQHJldHZhbCAgMCA6IG5vIGVycm9yCisgKiBAcmV0dmFsIC0xIDogYmFkIHBhcmFtZXRlcgorICogQHJldHZhbCAtMiA6IGNvdWxkbid0IGNyZWF0ZSBzb2NrZXQKKyAqIEByZXR2YWwgLTMgOiBpb2N0bCBmYWlsZWQKKyAqLworaW50CitfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfdjYobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSwgaW50IG9wZXJhdGlvbikKK3sKKyNpZmRlZiBsaW51eAorICAgIC8qCisgICAgICogRnJvbSBsaW51eC9pcHY2LmguIEl0IGNhbm5vdCBiZSBpbmNsdWRlZCBiZWNhdXNlIGl0IGNvbGxpZGVzCisgICAgICogd2l0aCBuZXRpbmV0L2luLmgKKyAgICAgKi8KKyAgICBzdHJ1Y3QgaW42X2lmcmVxIHsKKyAgICAgICAgICAgIHN0cnVjdCBpbjZfYWRkciBpZnI2X2FkZHI7CisgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgaWZyNl9wcmVmaXhsZW47CisgICAgICAgICAgICBpbnQgICAgICAgICAgICAgaWZyNl9pZmluZGV4OworICAgIH07CisKKyAgICBzdHJ1Y3QgaW42X2lmcmVxICAgICAgICAgICAgICAgaWZycTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmMsIGZkID0gLTE7CisKKyAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOnNldCIsICJfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3Nfc2V0X3Y2IHN0YXJ0ZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBuZXRzbm1wX2Fzc2VydCgxNiA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pOworCisgICAgZmQgPSBzb2NrZXQoQUZfSU5FVDYsIFNPQ0tfREdSQU0sIDApOworICAgIGlmKGZkIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJjb3VsZG4ndCBjcmVhdGUgc29ja2V0XG4iKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICBtZW1zZXQoJmlmcnEsIDAsIHNpemVvZihpZnJxKSk7CisgICAgaWZycS5pZnI2X2lmaW5kZXggPSBlbnRyeS0+aWZfaW5kZXg7CisgICAgaWZycS5pZnI2X3ByZWZpeGxlbiA9IDY0OworCisgICAgbWVtY3B5KCZpZnJxLmlmcjZfYWRkciwgZW50cnktPmlhX2FkZHJlc3MsCisgICAgICAgICAgIGVudHJ5LT5pYV9hZGRyZXNzX2xlbik7CisKKyAgICByYyA9IGlvY3RsKGZkLCBvcGVyYXRpb24sICZpZnJxKTsKKyAgICBjbG9zZShmZCk7CisgICAgaWYocmMgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIHNldHRpbmcgYWRkcmVzczogJXMoJWQpXG4iLCBzdHJlcnJvcihlcnJubyksIGVycm5vKTsKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0KKyAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOnNldCIsICJfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3Nfc2V0X3Y2IGZpbmlzaGVkXG4iKSk7CisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIC8qIHdlIGRvbid0IHN1cHBvcnQgaXB2NiBvbiB0aGlzIHBsYXRmb3JtICh5ZXQpICovCisgICAgcmV0dXJuIC0zOworI2VuZGlmCisKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCA6IG5vIGVycm9yCisgKiBAcmV0dmFsIC0xIDogYmFkIHBhcmFtZXRlcgorICogQHJldHZhbCAtMiA6IGNvdWxkbid0IGNyZWF0ZSBzb2NrZXQKKyAqIEByZXR2YWwgLTMgOiBpb2N0bCBmYWlsZWQKKyAqLworaW50CitfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3Nfc2V0X3Y2KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICogZW50cnkpCit7CisgICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc192NihlbnRyeSwgU0lPQ1NJRkFERFIpOworfQorCisvKioKKyAqCisgKiBAcmV0dmFsICAwIDogbm8gZXJyb3IKKyAqIEByZXR2YWwgLTEgOiBiYWQgcGFyYW1ldGVyCisgKiBAcmV0dmFsIC0yIDogY291bGRuJ3QgY3JlYXRlIHNvY2tldAorICogQHJldHZhbCAtMyA6IGlvY3RsIGZhaWxlZAorICovCitpbnQKK19uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19kZWxldGVfdjYobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSkKK3sKKyAgICByZXR1cm4gX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3Y2KGVudHJ5LCBTSU9DRElGQUREUik7Cit9CisKIC8qKgogICogZ2V0IHRoZSBpbnRlcmZhY2UgY291bnQgYW5kIHBvcHVsYXRlIHRoZSBpZmNfYnVmCiAgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oCmluZGV4IGZjNmU3NzEuLmYyYjc4NDcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmgKQEAgLTIyLDYgKzIyLDExIEBACiBfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfcmVtb3ZlX3Y0KG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICogZW50cnkpOwogCiBpbnQKK19uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19zZXRfdjYobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSk7CitpbnQKK19uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19yZW1vdmVfdjYobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKiBlbnRyeSk7CisKK2ludAogbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2lvY3RsX2dldF9pbnRlcmZhY2VfY291bnQoaW50IHNkLCBzdHJ1Y3QgaWZjb25mICogaWZjKTsKIAogc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvCkBAIC01MCw2ICs1NSw4IEBACiAKIGludAogX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX2RlbGV0ZV92NChuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqIGVudHJ5KTsKK2ludAorX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX2RlbGV0ZV92NihuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqIGVudHJ5KTsKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMKaW5kZXggOGIzNGU4Ni4uZjFjZWYwYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYwpAQCAtNCw2ICs0LDcgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKIApAQCAtMTgsNiArMTksMTUgQEAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShwcmVmaXhfaW5mbykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGZpbmRfcHJlZml4X2luZm8pCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfYXJjaF9lbnRyeV9jb3B5LCBpcGFkZHJlc3NfY29tbW9uKQorCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX2lvY3RsX2VudHJ5X2NvcHkpCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWSAqLworCiAjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogI2luY2x1ZGUgPGFzbS90eXBlcy5oPgpAQCAtODMsNiArOTMsNyBAQAogICAgICAqLwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWQogLyoKICAqIGNvcHkgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCiAgKi8KQEAgLTEwNiw2ICsxMTcsNyBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWSAqLwogCiAvKgogICogY3JlYXRlIGEgbmV3IGVudHJ5CkBAIC0xMTYsMTIgKzEyOCwxNCBAQAogICAgIGlmIChOVUxMID09IGVudHJ5KQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoNCAhPSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKLSAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpjcmVhdGUiLCAib25seSBpcHY0IHN1cHBvcnRlZFxuIikpOworICAgIGlmICg0ID09IGVudHJ5LT5pYV9hZGRyZXNzX2xlbikgeworICAgICAgICByZXR1cm4gX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3NldF92NChlbnRyeSk7CisgICAgfSBlbHNlIGlmICgxNiA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICAgICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19zZXRfdjYoZW50cnkpOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6Y3JlYXRlIiwgIndyb25nIGxlbmd0aCBvZiBJUCBhZGRyZXNzXG4iKSk7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9Ci0KLSAgICByZXR1cm4gX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX3NldF92NChlbnRyeSk7CiB9CiAKIC8qCkBAIC0xMzMsMTIgKzE0NywxNCBAQAogICAgIGlmIChOVUxMID09IGVudHJ5KQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAoNCAhPSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICBpZiAoNCA9PSBlbnRyeS0+aWFfYWRkcmVzc19sZW4pIHsKKyAgICAgICAgcmV0dXJuIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19kZWxldGVfdjQoZW50cnkpOworICAgIH0gZWxzZSBpZiAoMTYgPT0gZW50cnktPmlhX2FkZHJlc3NfbGVuKSB7CisgICAgICAgIHJldHVybiBfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfZGVsZXRlX3Y2KGVudHJ5KTsKKyAgICB9IGVsc2UgewogICAgICAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOmNyZWF0ZSIsICJvbmx5IGlwdjQgc3VwcG9ydGVkXG4iKSk7CiAgICAgICAgIHJldHVybiAtMjsKICAgICB9Ci0KLSAgICByZXR1cm4gX25ldHNubXBfaW9jdGxfaXBhZGRyZXNzX2RlbGV0ZV92NChlbnRyeSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jCmluZGV4IDM5NzkwMzcuLmUyNDg1ZTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMKQEAgLTMsNiArMyw3IEBACiAgKgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTE0LDYgKzE1LDggQEAKICNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCiAjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcGFkZHJlc3NfYXJjaF9lbnRyeV9jb3B5LCBpcGFkZHJlc3NfY29tbW9uKQorCiBzdGF0aWMgaW50IF9sb2FkX3Y0KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKICNpZiBkZWZpbmVkKCBORVRTTk1QX0VOQUJMRV9JUFY2ICkKIHN0YXRpYyBpbnQgX2xvYWRfdjYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOwpAQCAtNDMsNiArNDYsNyBAQAogICAgICAqLwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTX0FSQ0hfRU5UUllfQ09QWQogLyoKICAqIGNvcHkgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCiAgKi8KQEAgLTU1LDYgKzU5LDcgQEAKICAgICAgKi8KICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19BUkNIX0VOVFJZX0NPUFkgKi8KIAogLyoKICAqIGNyZWF0ZSBhIG5ldyBlbnRyeQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zeXNjdGwuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc3lzY3RsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE2MjIxYgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc3lzY3RsLmMKQEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZCQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CisKKyNpbmNsdWRlICJpcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfY29uc3RhbnRzLmgiCisjaW5jbHVkZSAiaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnN0YW50cy5oIgorI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MuaCIKKworI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHByZWZpeF9pbmZvKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZmluZF9wcmVmaXhfaW5mbykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwYWRkcmVzc19hcmNoX2VudHJ5X2NvcHksIGlwYWRkcmVzc19jb21tb24pCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JUEFERFJFU1NfQVJDSF9FTlRSWV9DT1BZCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcGFkZHJlc3NfaW9jdGxfZW50cnlfY29weSkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9JUEFERFJFU1NfQVJDSF9FTlRSWV9DT1BZICovCisKKyNpbmNsdWRlICJpcGFkZHJlc3NfaW9jdGwuaCIKKyNpZmRlZiBTVVBQT1JUX1BSRUZJWF9GTEFHUworZXh0ZXJuIHByZWZpeF9jYnggKnByZWZpeF9oZWFkX2xpc3Q7CisjZW5kaWYKKworI2RlZmluZSBST1VORFVQKGEpIFwKKyAgKChhKSA+IDAgPyAoMSArICgoKGEpIC0gMSkgfCAoc2l6ZW9mKGxvbmcpIC0gMSkpKSA6IHNpemVvZihsb25nKSkKKworLyoKKyAqIGluaXRpYWxpemUgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCisgKgorICogQHJldHZhbCAgMDogc3VjY2VzcworICogQHJldHZhbCA8MDogZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2VudHJ5X2luaXQobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5KQoreworICAgIC8qCisgICAgICogaW5pdCBpcHY0IHN0dWZmCisgICAgICovCisgICAgLyogaWYgKE5VTEwgPT0gbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfZW50cnlfaW5pdChlbnRyeSkpICovCisgICAgLyogICAgIHJldHVybiAtMTsgKi8KKworICAgIC8qCisgICAgICogaW5pdCBpcHY2IHN0dWZmCisgICAgICogICBzbyBmYXIsIHdlIGNhbiBqdXN0IHNoYXJlIHRoZSBpcHY0IHN0dWZmLCBzbyBub3RoaW5nIHRvIGRvCisgICAgICovCisgICAgCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBjbGVhbnVwIGFyY2ggc3BlY2lmaWMgc3RvcmFnZQorICovCit2b2lkCituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2VudHJ5X2NsZWFudXAobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5KQoreworICAgIC8qCisgICAgICogY2xlYW51cCBpcHY0IHN0dWZmCisgICAgICovCisgICAgLypuZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19lbnRyeV9jbGVhbnVwKGVudHJ5KTsgKi8KKworICAgIC8qCisgICAgICogY2xlYW51cCBpcHY2IHN0dWZmCisgICAgICogICBzbyBmYXIsIHdlIGNhbiBqdXN0IHNoYXJlIHRoZSBpcHY0IHN0dWZmLCBzbyBub3RoaW5nIHRvIGRvCisgICAgICovCit9CisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NfQVJDSF9FTlRSWV9DT1BZCisvKgorICogY29weSBhcmNoIHNwZWNpZmljIHN0b3JhZ2UKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2VudHJ5X2NvcHkobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqcmhzKQoreworICAgIGludCByYzsKKworICAgIHJjID0gMDsKKworICAgIC8qCisgICAgICogY29weSBpcHY0IHN0dWZmCisgICAgICovCisgICAgLypyYyA9IG5ldHNubXBfaW9jdGxfaXBhZGRyZXNzX2VudHJ5X2NvcHkobGhzLCByaHMpOyAqLworICAgIGlmIChyYykKKyAgICAgICAgcmV0dXJuIHJjOworCisgICAgLyoKKyAgICAgKiBjb3B5IGlwdjYgc3R1ZmYKKyAgICAgKiAgIHNvIGZhciwgd2UgY2FuIGp1c3Qgc2hhcmUgdGhlIGlwdjQgc3R1ZmYsIHNvIG5vdGhpbmcgdG8gZG8KKyAgICAgKi8KKworICAgIHJldHVybiByYzsKK30KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU19BUkNIX0VOVFJZX0NPUFkgKi8KKworLyoKKyAqIGNyZWF0ZSBhIG5ldyBlbnRyeQorICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfY3JlYXRlKG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKDQgPT0gZW50cnktPmlhX2FkZHJlc3NfbGVuKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgaWYgKDE2ID09IGVudHJ5LT5pYV9hZGRyZXNzX2xlbikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpjcmVhdGUiLCAid3JvbmcgbGVuZ3RoIG9mIElQIGFkZHJlc3NcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KK30KKworLyoKKyAqIGNyZWF0ZSBhIG5ldyBlbnRyeQorICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfZGVsZXRlKG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgaWYgKDQgPT0gZW50cnktPmlhX2FkZHJlc3NfbGVuKSB7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9IGVsc2UgaWYgKDE2ID09IGVudHJ5LT5pYV9hZGRyZXNzX2xlbikgeworICAgICAgICByZXR1cm4gLTM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpjcmVhdGUiLCAib25seSBpcHY0IHN1cHBvcnRlZFxuIikpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorfQorCisvKioKKyAqCisgKiBAcmV0dmFsICAwIG5vIGVycm9ycworICogQHJldHZhbCAhMCBlcnJvcnMKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5ID0gTlVMTDsKKyAgICB1X2NoYXIgKmlmX2xpc3QgPSBOVUxMLCAqY3A7CisgICAgc2l6ZV90IGlmX2xpc3Rfc2l6ZSA9IDA7CisgICAgaW50IHN5c2N0bF9vaWRbXSA9IHsgQ1RMX05FVCwgUEZfUk9VVEUsIDAsIDAsIE5FVF9SVF9JRkxJU1QsIDAgfTsKKyAgICBzdHJ1Y3QgaWZhX21zZ2hkciAqaWZhOworICAgIHN0cnVjdCBzb2NrYWRkciAqYTsKKyAgICBpbnQgYW1hc2s7CisgICAgaW50IHJjID0gMDsKKyAgICBpbnQgaWR4X29mZnNldCA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXI6c3lzY3RsIiwKKyAgICAgICAgICAgICAgICAibG9hZCAoZmxhZ3MgJXUpXG4iLCBsb2FkX2ZsYWdzKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGludGVyZmFjZVxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoc3lzY3RsKHN5c2N0bF9vaWQsIHNpemVvZihzeXNjdGxfb2lkKS9zaXplb2YoaW50KSwgMCwKKyAgICAgICAgICAgICAgICZpZl9saXN0X3NpemUsIDAsIDApID09IC0xKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgZ2V0IGludGVyZmFjZSBpbmZvIChzaXplKVxuIik7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICBpZl9saXN0ID0gKHVfY2hhciopbWFsbG9jKGlmX2xpc3Rfc2l6ZSk7CisgICAgaWYgKGlmX2xpc3QgPT0gTlVMTCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgaW50ZXJmYWNlIGluZm8gIgorICAgICAgICAgICAgICAgICAiKCV6dSBieXRlcylcbiIsIGlmX2xpc3Rfc2l6ZSk7CisgICAgICAgIHJldHVybiAtMzsKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXI6c3lzY3RsIiwKKyAgICAgICAgICAgICAgICAgICAgImFsbG9jYXRlZCAlenUgYnl0ZXMgZm9yIGlmX2xpc3RcbiIsIGlmX2xpc3Rfc2l6ZSkpOworICAgIH0KKworICAgIGlmIChzeXNjdGwoc3lzY3RsX29pZCwgc2l6ZW9mKHN5c2N0bF9vaWQpL3NpemVvZihpbnQpLCBpZl9saXN0LAorICAgICAgICAgICAgICAgJmlmX2xpc3Rfc2l6ZSwgMCwgMCkgPT0gLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBnZXQgaW50ZXJmYWNlIGluZm9cbiIpOworICAgICAgICBmcmVlKGlmX2xpc3QpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgLyogcGFzcyAyOiB3YWxrIGFkZHJlc3NlcyAqLworICAgIGZvciAoY3AgPSBpZl9saXN0OyBjcCA8IGlmX2xpc3QgKyBpZl9saXN0X3NpemU7IGNwICs9IGlmYS0+aWZhbV9tc2dsZW4pIHsKKyAgICAgICAgaWZhID0gKHN0cnVjdCBpZmFfbXNnaGRyICopIGNwOworICAgICAgICBpbnQgcnRheDsKKworICAgICAgICBpZiAoaWZhLT5pZmFtX3R5cGUgIT0gUlRNX05FV0FERFIpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXI6c3lzY3RsIiwKKyAgICAgICAgICAgICAgICAgICAgInJlY2VpdmVkIDB4JXggaW4gUlRNX05FV0FERFIgZm9yIGlmaW5kZXggJXVcbiIsCisgICAgICAgICAgICAgICAgICAgIGlmYS0+aWZhbV9hZGRycywgaWZhLT5pZmFtX2luZGV4KSk7CisKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChlbnRyeSA9PSBOVUxMKSB7CisgICAgICAgICAgICByYyA9IC0zOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBhID0gKHN0cnVjdCBzb2NrYWRkciAqKSAoaWZhICsgMSk7CisgICAgICAgIGVudHJ5LT5pYV9zdGF0dXMgPSBJUEFERFJFU1NTVEFUVVNUQ19VTktOT1dOOworICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfT1RIRVI7CisJZW50cnktPmlhX2FkZHJlc3NfbGVuID0gMDsKKyAgICAgICAgZm9yIChhbWFzayA9IGlmYS0+aWZhbV9hZGRycywgcnRheCA9IDA7IGFtYXNrICE9IDA7IGFtYXNrID4+PSAxLCBydGF4KyspIHsKKyAgICAgICAgICAgIGlmICgoYW1hc2sgJiAxKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgZW50cnktPm5zX2lhX2luZGV4ID0gKytpZHhfb2Zmc2V0OworICAgICAgICAgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IGlmYS0+aWZhbV9pbmRleDsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXI6c3lzY3RsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWQ6IGE9JXAsIHNhX2xlbj0lZCwgc2FfZmFtaWx5PTB4JXhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCllbnRyeS0+aWZfaW5kZXgsIGEsIGEtPnNhX2xlbiwgYS0+c2FfZmFtaWx5KSk7CisKKyAgICAgICAgICAgICAgICBpZiAoYS0+c2FfZmFtaWx5ID09IEFGX0lORVQgfHwgYS0+c2FfZmFtaWx5ID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luICphNCA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhOworCQkgICAgY2hhciBzdHJbMTI4XTsKKwkJICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lcjpzeXNjdGwiLAorCQkgICAgICAgICAgICAgICAgIklQdjQgYWRkciAlc1xuIiwgaW5ldF9udG9wKEFGX0lORVQsICZhNC0+c2luX2FkZHIuc19hZGRyLCBzdHIsIDEyOCkpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ0YXggPT0gUlRBWF9JRkEpIHsKKwkJCWVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPmlhX2FkZHJlc3MsICZhNC0+c2luX2FkZHIuc19hZGRyLCBlbnRyeS0+aWFfYWRkcmVzc19sZW4pOworCQkgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChydGF4ID09IFJUQVhfTkVUTUFTSykKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5pYV9wcmVmaXhfbGVuID0gbmV0c25tcF9pcGFkZHJlc3NfaXB2NF9wcmVmaXhfbGVuKGE0LT5zaW5fYWRkci5zX2FkZHIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChhLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiAqYTYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWE7CisJCSAgICBjaGFyIHN0clsxMjhdOworCQkgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyOnN5c2N0bCIsCisJCSAgICAgICAgICAgICAgICAiSVB2NiBhZGRyICVzXG4iLCBpbmV0X250b3AoQUZfSU5FVDYsICZhNi0+c2luNl9hZGRyLnM2X2FkZHIsIHN0ciwgMTI4KSkpOworICAgICAgICAgICAgICAgICAgICBpZiAocnRheCA9PSBSVEFYX0lGQSkgeworCQkJZW50cnktPmlhX2FkZHJlc3NfbGVuID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPmlhX2FkZHJlc3MsICZhNi0+c2luNl9hZGRyLCBlbnRyeS0+aWFfYWRkcmVzc19sZW4pOworCQkgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChydGF4ID09IFJUQVhfTkVUTUFTSykgeworICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmlhX3ByZWZpeF9sZW4gPSBuZXRzbm1wX2lwYWRkcmVzc19pcHY2X3ByZWZpeF9sZW4oYTYtPnNpbjZfYWRkcik7CisJCQlERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXI6c3lzY3RsIiwKKwkJCSAgICAgICAgICAgICJwcmVmaXhfbGVuPSVkXG4iLCBlbnRyeS0+aWFfcHJlZml4X2xlbikpOworCQkgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhID0gKHN0cnVjdCBzb2NrYWRkciAqKSAoICgoY2hhciAqKSBhKSArIFJPVU5EVVAoYS0+c2FfbGVuKSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisJaWYgKGVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9PSAwKSB7CisJICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lcjpzeXNjdGwiLAorCSAgICAgICAgICAgICAgICAiZW50cnkgc2tpcHBlZFxuIikpOworCSAgICBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfZnJlZShlbnRyeSk7CisJfQorCWVsc2UgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSkgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCJlcnJvciB3aXRoIGlwYWRkcmVzc19lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGlmX2xpc3QgIT0gTlVMTCkKKyAgICAgICAgZnJlZShpZl9saXN0KTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfY29tbW9uLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19jb21tb24uaAppbmRleCAyZjBhNjNhLi5lYmVhMjFkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19jb21tb24uaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19jb21tb24uaApAQCAtMTksNiArMTksOCBAQAogICovCiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXgpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkNCApIHx8IGRlZmluZWQoIG5ldGJzZDUgKSB8fCBkZWZpbmVkKCBvcGVuYnNkNCApIHx8IGRlZmluZWQoIGRyYWdvbmZseSApIHx8IGRlZmluZWQoIGRhcndpbiApCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19zeXNjdGwpCiAjZWxzZQogLyoKICAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQpAQCAtMjYsNCArMjgsMyBAQAogICovCiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFycy11bmtub3duLWFyY2gpCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMKaW5kZXggNmJhMzU2Yi4uODVlOTEyYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jCkBAIC01LDExICs1LDE2IEBACiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcF9zY2FsYXJzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlKQorCiBzdGF0aWMgY29uc3QgY2hhciBpcGZ3X25hbWVbXSA9ICIvcHJvYy9zeXMvbmV0L2lwdjQvY29uZi9hbGwvZm9yd2FyZGluZyI7CitzdGF0aWMgY29uc3QgY2hhciBpcHR0bF9uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2RlZmF1bHRfdHRsIjsKIHN0YXRpYyBjb25zdCBjaGFyIGlwZnc2X25hbWVbXSA9ICIvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi9hbGwvZm9yd2FyZGluZyI7CitzdGF0aWMgY29uc3QgY2hhciBpcGhvcDZfbmFtZVtdID0gIi9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mL2FsbC9ob3BfbGltaXQiOwogCiBpbnQKIG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRm9yd2FyZGluZ19nZXQodV9sb25nICp2YWx1ZSkKQEAgLTgwLDYgKzg1LDcwIEBACiB9CiAKIGludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBEZWZhdWx0VFRMX2dldCh1X2xvbmcgKnZhbHVlKQoreworICAgIEZJTEUgKmZpbGVwOworICAgIGludCByYzsKKworICAgIGlmIChOVUxMID09IHZhbHVlKQorICAgICAgICByZXR1cm4gLTE7CisKKworICAgIGZpbGVwID0gZm9wZW4oaXB0dGxfbmFtZSwgInIiKTsKKyAgICBpZiAoTlVMTCA9PSBmaWxlcCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdFRUTCIsICJjb3VsZCBub3Qgb3BlbiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXB0dGxfbmFtZSkpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgcmMgPSBmc2NhbmYoZmlsZXAsICIlbHUiLCB2YWx1ZSk7CisgICAgZmNsb3NlKGZpbGVwKTsKKyAgICBpZiAoMSAhPSByYykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdFRUTCIsICJjb3VsZCBub3QgcmVhZCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXB0dGxfbmFtZSkpOworICAgICAgICByZXR1cm4gLTM7CisgICAgfQorCisgICAgaWYgKCgwID09ICp2YWx1ZSkgfHwgKDI1NSA8ICp2YWx1ZSkpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAidW5leHBlY3RlZCB2YWx1ZSAlbGQgaW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICp2YWx1ZSwgaXB0dGxfbmFtZSkpOworICAgICAgICByZXR1cm4gLTQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBEZWZhdWx0VFRMX3NldCh1X2xvbmcgdmFsdWUpCit7CisgICAgRklMRSAqZmlsZXA7CisgICAgaW50IHJjOworCisgICAgaWYgKHZhbHVlID09IDAgfHwgdmFsdWUgPiAyNTUpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRUVEwiLCAiYmFkIHZhbHVlICVsZCBmb3IgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBpcHR0bF9uYW1lKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKworICAgIGZpbGVwID0gZm9wZW4oaXB0dGxfbmFtZSwgInciKTsKKyAgICBpZiAoTlVMTCA9PSBmaWxlcCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdFRUTCIsICJjb3VsZCBub3Qgb3BlbiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXB0dGxfbmFtZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICB9CisKKyAgICByYyA9IGZwcmludGYoZmlsZXAsICIlbGQiLCB2YWx1ZSk7CisgICAgZmNsb3NlKGZpbGVwKTsKKyAgICBpZiAoMSAhPSByYykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdFRUTCIsICJjb3VsZCBub3Qgd3JpdGUgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwdHRsX25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CiBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBGb3J3YXJkaW5nX2dldCh1X2xvbmcgKnZhbHVlKQogewogICAgIEZJTEUgKmZpbGVwOwpAQCAtMTQ2LDMgKzIxNSw4MCBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRGVmYXVsdEhvcExpbWl0X2dldCh1X2xvbmcgKnZhbHVlKQoreworICAgIEZJTEUgKmZpbGVwOworICAgIGludCByYzsKKworICAgIGlmIChOVUxMID09IHZhbHVlKQorICAgICAgICByZXR1cm4gLTE7CisKKworICAgIGZpbGVwID0gZm9wZW4oaXBob3A2X25hbWUsICJyIik7CisgICAgaWYgKE5VTEwgPT0gZmlsZXApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRIb3BMaW1pdCIsICJjb3VsZCBub3Qgb3BlbiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXBob3A2X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIHJjID0gZnNjYW5mKGZpbGVwLCAiJWx1IiwgdmFsdWUpOworICAgIGZjbG9zZShmaWxlcCk7CisgICAgaWYgKDEgIT0gcmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcERlZmF1bHRIb3BMaW1pdCIsICJjb3VsZCBub3QgcmVhZCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXBob3A2X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0KKworICAgIGlmICgoMCA9PSAqdmFsdWUpIHx8ICgyNTUgPCAqdmFsdWUpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0SG9wTGltaXQiLCAidW5leHBlY3RlZCB2YWx1ZSAlbGQgaW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICp2YWx1ZSwgaXBob3A2X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIC00OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcERlZmF1bHRIb3BMaW1pdF9zZXQodV9sb25nIHZhbHVlKQoreworICAgIEZJTEUgKmZpbGVwOworICAgIGludCByYzsKKworICAgIGlmICh2YWx1ZSA9PSAwIHx8IHZhbHVlID4gMjU1KSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0SG9wTGltaXQiLCAiYmFkIHZhbHVlICVsZCBmb3IgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBpcGhvcDZfbmFtZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdWQUxVRTsKKyAgICB9CisKKyAgICBmaWxlcCA9IGZvcGVuKGlwaG9wNl9uYW1lLCAidyIpOworICAgIGlmIChOVUxMID09IGZpbGVwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0SG9wTGltaXQiLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwaG9wNl9uYW1lKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworICAgIH0KKworICAgIHJjID0gZnByaW50ZihmaWxlcCwgIiVsZCIsIHZhbHVlKTsKKyAgICBmY2xvc2UoZmlsZXApOworICAgIGlmICgxICE9IHJjKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBEZWZhdWx0SG9wTGltaXQiLCAiY291bGQgbm90IHdyaXRlICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGhvcDZfbmFtZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCit2b2lkCituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19yZWdpc3Rlcl9oYW5kbGVycyh2b2lkKQoreworICAgIHN0YXRpYyBvaWQgaXBSZWFzbVRpbWVvdXRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDEzLCAwIH07CisKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlCisgICAgICAgICgiaXBSZWFzbVRpbWVvdXQiLAorICAgICAgICAgaXBSZWFzbVRpbWVvdXRfb2lkLCBPSURfTEVOR1RIKGlwUmVhc21UaW1lb3V0X29pZCksCisgICAgICAgICAiL3Byb2Mvc3lzL25ldC9pcHY0L2lwZnJhZ190aW1lIiwgQVNOX0lOVEVHRVIsCisgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgTlVMTCwgTlVMTCk7CisKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX3N5c2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfc3lzY3RsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY5Yzc0MwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX3N5c2N0bC5jCkBAIC0wLDAgKzEsMjkxIEBACisvKgorICogIElQLU1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZCQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwX3NjYWxhcnMuaD4KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9wcm90b3N3Lmg+CisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKworLyogWFhYOiB0aGUgdmFsdWVzIHBhc3NlZCB0byBuZXRzbm1wX2FyY2hfaXBfc2NhbGFycyguLikgbWF5IG9yIG1heSBub3QgYmUKKyAqIHBvcnRhYmxlIHRvIHRoZSBvdGhlciBCU0RzIC0tIGl0IHNlZW1zIHRvIGJlIHBvcnRhYmxlIGJhY2sgdG8gRnJlZUJTRCA0LngKKyAqIChEYXJ3aW4gMTAuOC4wKSBhdCBsZWFzdC4KKyAqLworCitzdGF0aWMgaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoY29uc3QgY2hhciAqYWNjZXNzX21vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWliW10sIHNpemVfdCBtaWJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqb2xkX3ZhbHVlLCB1X2xvbmcgKm5ld192YWx1ZSkKK3sKKyAgICBpbnQgbmV3aW50LCBvbGRpbnQ7CisgICAgc2l6ZV90IG5lZWRlZDsKKyAgICBpbnQgcmM7CisKKyAgICBuZWVkZWQgPSBzaXplb2Yob2xkaW50KTsKKyAgICBpZiAobmV3X3ZhbHVlKQorICAgICAgICBuZXdpbnQgPSAqbmV3X3ZhbHVlOworCisgICAgcmMgPSBzeXNjdGwobWliLCBtaWJfbGVuLCAmb2xkaW50LCAmbmVlZGVkLAorICAgICAgICAgICAgICAgIG5ld192YWx1ZSA/ICZuZXdpbnQgOiBOVUxMLCAobmV3X3ZhbHVlID8gc2l6ZW9mKG5ld2ludCkgOiAwKSk7CisgICAgaWYgKHJjID09IC0xKSB7CisgICAgICAgIERFQlVHTVNHVEwoKGFjY2Vzc19tb2R1bGUsICJzeXNjdGwgJXMgZmFpbGVkIC0gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIChuZXdfdmFsdWUgPT0gTlVMTCA/ICJnZXQiIDogInNldCIpLAorICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpKTsKKyAgICB9CisgICAgKm9sZF92YWx1ZSA9IG9sZGludDsKKyAgICByZXR1cm4gcmM7Cit9CisKK2ludCBpcERlZmF1bHRUVExfbWliW10gPSB7CisgICAgQ1RMX05FVCwKKyAgICBQRl9JTkVULAorICAgIElQUFJPVE9fSVAsCisgICAgSVBDVExfREVGVFRMCit9OworCitpbnQgaXBGb3J3YXJkaW5nX21pYltdID0geworICAgIENUTF9ORVQsCisgICAgUEZfSU5FVCwKKyAgICBJUFBST1RPX0lQLAorICAgIElQQ1RMX0ZPUldBUkRJTkcKK307CisKK2ludCBpcHY2SXBEZWZhdWx0SG9wTGltaXRfbWliW10gPSB7CisgICAgQ1RMX05FVCwKKyAgICBQRl9JTkVUNiwKKyAgICBJUFBST1RPX0lQLAorICAgIElQVjZDVExfREVGSExJTQorfTsKKworaW50IGlwdjZJcEZvcndhcmRpbmdfbWliW10gPSB7CisgICAgQ1RMX05FVCwKKyAgICBQRl9JTkVUNiwKKyAgICBJUFBST1RPX0lQLAorICAgIElQVjZDVExfRk9SV0FSRElORworfTsKKworI2RlZmluZSBNSUJfTEVOKGEpCQkoc2l6ZW9mKGEpIC8gc2l6ZW9mKCphKSkKKworI2RlZmluZSBJUERFRkFVTFRUVExfTEVOCU1JQl9MRU4oaXBEZWZhdWx0VFRMX21pYikKKyNkZWZpbmUgSVBGT1JXQVJESU5HX0xFTglNSUJfTEVOKGlwRm9yd2FyZGluZ19taWIpCisjZGVmaW5lIElQVjZJUERFRkFVTFRIT1BMSU1JVF9MRU4JTUlCX0xFTihpcHY2SXBEZWZhdWx0SG9wTGltaXRfbWliKQorI2RlZmluZSBJUFY2SVBGT1JXQVJESU5HX0xFTglNSUJfTEVOKGlwdjZJcEZvcndhcmRpbmdfbWliKQorCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9nZXQodV9sb25nICp2YWx1ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoTlVMTCA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoImFjY2VzczppcERlZmF1bHRUVEwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFRUTF9taWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBERUZBVUxUVFRMX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgTlVMTCk7CisgICAgaWYgKHJjICE9IDApCisgICAgICAgIHJldHVybiAtMjsKKworICAgIHJldHVybiAwOworfQorCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9zZXQodV9sb25nIHZhbHVlKQoreworICAgIGludCByYzsKKworICAgIGlmICgxID09IHZhbHVlKQorICAgICAgICA7CisgICAgZWxzZSBpZiAoMiA9PSB2YWx1ZSkKKyAgICAgICAgdmFsdWUgPSAwOworICAgIGVsc2UgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRGVmYXVsdFRUTCIsICJiYWQgdmFsdWUgJWxkXG4iLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdWQUxVRTsKKyAgICB9CisKKyAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX3N5c2N0bCgiYWNjZXNzOmlwRm9yd2FyZGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBGb3J3YXJkaW5nX21pYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUEZPUldBUkRJTkdfTEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICZ2YWx1ZSk7CisgICAgaWYgKHJjICE9IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiAwOworfQorCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRm9yd2FyZGluZ19nZXQodV9sb25nICp2YWx1ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoTlVMTCA9PSB2YWx1ZSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoImFjY2VzczppcEZvcndhcmRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRm9yd2FyZGluZ19taWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBGT1JXQVJESU5HX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgTlVMTCk7CisgICAgaWYgKHJjICE9IDApCisgICAgICAgIHJldHVybiAtMjsKKworICAgIC8qIE9uIEZyZWVCU0QgNy4yIGF0IGxlYXN0LCB0aGUgdmFsdWUgcGFzc2VkIHRvIHRoZSBzeXNjdGwgY2FuIGJlIGNvZXJjZWQKKyAgICAgKiBpbnRvIGEgbm9uLXplcm8gdmFsdWU7IGNvbnZlcnQgaXQgaW50byBhIHZhbHVlIHRoYXQncyBzYW5lIHBlciB0aGUKKyAgICAgKiBJUC1NSUIgZGVmaW5pdGlvbi4KKyAgICAgKi8KKyAgICBpZiAoKnZhbHVlICE9IDApCisgICAgICAgICp2YWx1ZSA9IDE7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfc2V0KHVfbG9uZyB2YWx1ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoMSA9PSB2YWx1ZSkKKyAgICAgICAgOworICAgIGVsc2UgaWYgKDIgPT0gdmFsdWUpCisgICAgICAgIHZhbHVlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcEZvcndhcmRpbmciLCAiYmFkIHZhbHVlICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfQorCisgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoImFjY2VzczppcEZvcndhcmRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRm9yd2FyZGluZ19taWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBGT1JXQVJESU5HX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmdmFsdWUpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBEZWZhdWx0SG9wTGltaXRfZ2V0KHVfbG9uZyAqdmFsdWUpCit7CisgICAgaW50IHJjOworCisgICAgaWYgKE5VTEwgPT0gdmFsdWUpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfc3lzY3RsKCJhY2Nlc3M6aXB2NklwRGVmYXVsdEhvcExpbWl0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQVjZJUERFRkFVTFRIT1BMSU1JVF9MRU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUsIE5VTEwpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTI7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBEZWZhdWx0SG9wTGltaXRfc2V0KHVfbG9uZyB2YWx1ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoMSA9PSB2YWx1ZSkKKyAgICAgICAgOworICAgIGVsc2UgaWYgKDIgPT0gdmFsdWUpCisgICAgICAgIHZhbHVlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcHY2SXBEZWZhdWx0SG9wTGltaXQiLCAiYmFkIHZhbHVlICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfQorCisgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoImFjY2VzczppcEZvcndhcmRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZJcERlZmF1bHRIb3BMaW1pdF9taWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBWNklQREVGQVVMVEhPUExJTUlUX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmdmFsdWUpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBGb3J3YXJkaW5nX2dldCh1X2xvbmcgKnZhbHVlKQoreworICAgIGludCByYzsKKworICAgIGlmIChOVUxMID09IHZhbHVlKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX3N5c2N0bCgiYWNjZXNzOmlwdjZJcEZvcndhcmRpbmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZJcEZvcndhcmRpbmdfbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQVjZJUEZPUldBUkRJTkdfTEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBOVUxMKTsKKyAgICBpZiAocmMgIT0gMCkKKyAgICAgICAgcmV0dXJuIC0yOworCisgICAgLyogT24gRnJlZUJTRCA3LjIgYXQgbGVhc3QsIHRoZSB2YWx1ZSBwYXNzZWQgdG8gdGhlIHN5c2N0bCBjYW4gYmUgY29lcmNlZAorICAgICAqIGludG8gYSBub24temVybyB2YWx1ZTsgY29udmVydCBpdCBpbnRvIGEgdmFsdWUgdGhhdCdzIHNhbmUgcGVyIHRoZQorICAgICAqIElQLU1JQiBkZWZpbml0aW9uLgorICAgICAqLworICAgIGlmICgqdmFsdWUgIT0gMCkKKyAgICAgICAgKnZhbHVlID0gMTsKKworICAgIHJldHVybiAwOworfQorCitpbnQKK25ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcEZvcndhcmRpbmdfc2V0KHVfbG9uZyB2YWx1ZSkKK3sKKyAgICBpbnQgcmM7CisKKyAgICBpZiAoMSA9PSB2YWx1ZSkKKyAgICAgICAgOworICAgIGVsc2UgaWYgKDIgPT0gdmFsdWUpCisgICAgICAgIHZhbHVlID0gMDsKKyAgICBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcEZvcndhcmRpbmciLCAiYmFkIHZhbHVlICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgfQorCisgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19zeXNjdGwoImFjY2VzczppcHY2SXBGb3J3YXJkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2SXBGb3J3YXJkaW5nX21pYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUFY2SVBGT1JXQVJESU5HX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAmdmFsdWUpOworICAgIGlmIChyYyAhPSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGxvbmcgaXBSZWFzbVRpbWVvdXRfdmFsOworCit2b2lkCituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19yZWdpc3Rlcl9oYW5kbGVycyh2b2lkKQoreworICAgIHN0YXRpYyBvaWQgaXBSZWFzbVRpbWVvdXRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDEzLCAwIH07CisKKyAgICAvKiAKKyAgICAgKiBUaGlzIHZhbHVlIGlzIHN0YXRpYyBhdCBjb21waWxlIHRpbWUgb24gRnJlZUJTRDsgaXQgcmVhbGx5IHNob3VsZCBiZSBhCisgICAgICogcHJvYmVkIHZpYSBlaXRoZXIgc3lzY3RsIG9yIHN5c2NvbmYgYXQgcnVudGltZSBhcyB0aGUgY29tcGlsZWQgdmFsdWUgYW5kCisgICAgICogdGhlIHJ1bnRpbWUgdmFsdWUgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGNhbiB2YXJ5LgorICAgICAqCisgICAgICogUGxlYXNlIHJlZmVyIHRvIHN5cy9wcm90b3N3LmggZm9yIG1vcmUgZGV0YWlscyBvbiB3aGF0IHRoaXMgdmFsdWUgaXMgKGluCisgICAgICogcGFydGljdWxhciBQUl9TTE9XSFopLgorICAgICAqLworICAgIGlwUmVhc21UaW1lb3V0X3ZhbCA9IElQRlJBR1RUTCAvIFBSX1NMT1dIWjsKKworICAgIG5ldHNubXBfcmVnaXN0ZXJfbG9uZ19pbnN0YW5jZSgiaXBSZWFzbVRpbWVvdXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcFJlYXNtVGltZW91dF9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoaXBSZWFzbVRpbWVvdXRfb2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlwUmVhc21UaW1lb3V0X3ZhbCwgTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCmluZGV4IDI4ODEwZTMuLjUxNDgwN2EgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCkBAIC0yMiw2ICsyMiw4IEBACiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXgpCiAjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc29sYXJpczIpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkNyApIHx8IGRlZmluZWQoIG5ldGJzZDUgKSB8fCBkZWZpbmVkKCBvcGVuYnNkNCApIHx8IGRlZmluZWQoIGRyYWdvbmZseSApIHx8IGRlZmluZWQoIGRhcndpbiApCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc3lzY3RsKQogI2Vsc2UKIGNvbmZpZ19lcnJvcih0aGUgc3lzdGVtc3RhdHMgZGF0YSBhY2Nlc3MgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuKQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc3lzY3RsLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc3lzY3RsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFjYTE2ZAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zeXNjdGwuYwpAQCAtMCwwICsxLDc5MSBAQAorLyoKKyAqICBpcFN5c3RlbVN0YXRzVGFibGUgYW5kIGlwSWZTdGF0c1RhYmxlIGludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQkCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcHN0YXRzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaD4KKworI2luY2x1ZGUgIi4uL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCIKKworI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCisjZGVmaW5lIF9LRVJORUwgMQorI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTAorI2VuZGlmCisjaWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUworI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMKKyNlbmRpZgorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzeXMvcHJvdG9zdy5oPgorCisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNpZiBIQVZFX05FVElORVQ2X0lQNl9WQVJfSAorI2luY2x1ZGUgPG5ldGluZXQ2L2lwNl92YXIuaD4KKyNlbmRpZgorI2lmbmRlZiBmcmVlYnNkNworI2luY2x1ZGUgPG5ldGluZXQ2L2luNl92YXIuaD4KKyNlbmRpZgorCisjaWZkZWYgZGFyd2luCisKKy8qIFRoaXMgc3RydWN0IGlzIGluIG5ldGluZXQ2L2lwNl92YXIuaCB3aGljaCBBcHBsZSBmb3Igb2JzY3VyZSByZWFzb25zCisgKiBkbyBub3QgZGlzdHJpYnV0ZSBhcyBwYXJ0IG9mIC91c3IvaW5jbHVkZSA6LSgKKyAqLworCitzdHJ1Y3QJaXA2c3RhdCB7CisJdV9xdWFkX3QgaXA2c190b3RhbDsJCS8qIHRvdGFsIHBhY2tldHMgcmVjZWl2ZWQgKi8KKwl1X3F1YWRfdCBpcDZzX3Rvb3Nob3J0OwkJLyogcGFja2V0IHRvbyBzaG9ydCAqLworCXVfcXVhZF90IGlwNnNfdG9vc21hbGw7CQkvKiBub3QgZW5vdWdoIGRhdGEgKi8KKwl1X3F1YWRfdCBpcDZzX2ZyYWdtZW50czsJLyogZnJhZ21lbnRzIHJlY2VpdmVkICovCisJdV9xdWFkX3QgaXA2c19mcmFnZHJvcHBlZDsJLyogZnJhZ3MgZHJvcHBlZChkdXBzLCBvdXQgb2Ygc3BhY2UpICovCisJdV9xdWFkX3QgaXA2c19mcmFndGltZW91dDsJLyogZnJhZ21lbnRzIHRpbWVkIG91dCAqLworCXVfcXVhZF90IGlwNnNfZnJhZ292ZXJmbG93OwkvKiBmcmFnbWVudHMgdGhhdCBleGNlZWRlZCBsaW1pdCAqLworCXVfcXVhZF90IGlwNnNfZm9yd2FyZDsJCS8qIHBhY2tldHMgZm9yd2FyZGVkICovCisJdV9xdWFkX3QgaXA2c19jYW50Zm9yd2FyZDsJLyogcGFja2V0cyByY3ZkIGZvciB1bnJlYWNoYWJsZSBkZXN0ICovCisJdV9xdWFkX3QgaXA2c19yZWRpcmVjdHNlbnQ7CS8qIHBhY2tldHMgZm9yd2FyZGVkIG9uIHNhbWUgbmV0ICovCisJdV9xdWFkX3QgaXA2c19kZWxpdmVyZWQ7CS8qIGRhdGFncmFtcyBkZWxpdmVyZWQgdG8gdXBwZXIgbGV2ZWwqLworCXVfcXVhZF90IGlwNnNfbG9jYWxvdXQ7CQkvKiB0b3RhbCBpcCBwYWNrZXRzIGdlbmVyYXRlZCBoZXJlICovCisJdV9xdWFkX3QgaXA2c19vZHJvcHBlZDsJCS8qIGxvc3QgcGFja2V0cyBkdWUgdG8gbm9idWZzLCBldGMuICovCisJdV9xdWFkX3QgaXA2c19yZWFzc2VtYmxlZDsJLyogdG90YWwgcGFja2V0cyByZWFzc2VtYmxlZCBvayAqLworCXVfcXVhZF90IGlwNnNfZnJhZ21lbnRlZDsJLyogZGF0YWdyYW1zIHN1Y2Vzc2Z1bGx5IGZyYWdtZW50ZWQgKi8KKwl1X3F1YWRfdCBpcDZzX29mcmFnbWVudHM7CS8qIG91dHB1dCBmcmFnbWVudHMgY3JlYXRlZCAqLworCXVfcXVhZF90IGlwNnNfY2FudGZyYWc7CQkvKiBkb24ndCBmcmFnbWVudCBmbGFnIHdhcyBzZXQsIGV0Yy4gKi8KKwl1X3F1YWRfdCBpcDZzX2JhZG9wdGlvbnM7CS8qIGVycm9yIGluIG9wdGlvbiBwcm9jZXNzaW5nICovCisJdV9xdWFkX3QgaXA2c19ub3JvdXRlOwkJLyogcGFja2V0cyBkaXNjYXJkZWQgZHVlIHRvIG5vIHJvdXRlICovCisJdV9xdWFkX3QgaXA2c19iYWR2ZXJzOwkJLyogaXA2IHZlcnNpb24gIT0gNiAqLworCXVfcXVhZF90IGlwNnNfcmF3b3V0OwkJLyogdG90YWwgcmF3IGlwIHBhY2tldHMgZ2VuZXJhdGVkICovCisJdV9xdWFkX3QgaXA2c19iYWRzY29wZTsJCS8qIHNjb3BlIGVycm9yICovCisJdV9xdWFkX3QgaXA2c19ub3RtZW1iZXI7CS8qIGRvbid0IGpvaW4gdGhpcyBtdWx0aWNhc3QgZ3JvdXAgKi8KKwl1X3F1YWRfdCBpcDZzX254dGhpc3RbMjU2XTsJLyogbmV4dCBoZWFkZXIgaGlzdG9yeSAqLworCXVfcXVhZF90IGlwNnNfbTE7CQkvKiBvbmUgbWJ1ZiAqLworCXVfcXVhZF90IGlwNnNfbTJtWzMyXTsJCS8qIHR3byBvciBtb3JlIG1idWYgKi8KKwl1X3F1YWRfdCBpcDZzX21leHQxOwkJLyogb25lIGV4dCBtYnVmICovCisJdV9xdWFkX3QgaXA2c19tZXh0Mm07CQkvKiB0d28gb3IgbW9yZSBleHQgbWJ1ZiAqLworCXVfcXVhZF90IGlwNnNfZXh0aGRydG9vbG9uZzsJLyogZXh0IGhkciBhcmUgbm90IGNvbnRpbnVvdXMgKi8KKwl1X3F1YWRfdCBpcDZzX25vZ2lmOwkJLyogbm8gbWF0Y2ggZ2lmIGZvdW5kICovCisJdV9xdWFkX3QgaXA2c190b29tYW55aGRyOwkvKiBkaXNjYXJkZWQgZHVlIHRvIHRvbyBtYW55IGhlYWRlcnMgKi8KKworCS8qCisJICogc3RhdGlzdGljcyBmb3IgaW1wcm92ZW1lbnQgb2YgdGhlIHNvdXJjZSBhZGRyZXNzIHNlbGVjdGlvbgorCSAqIGFsZ29yaXRobToKKwkgKiBYWFg6IGhhcmRjb2RlZCAxNiA9ICMgb2YgaXA2IG11bHRpY2FzdCBzY29wZSB0eXBlcyArIDEKKwkgKi8KKwkvKiBudW1iZXIgb2YgdGltZXMgdGhhdCBhZGRyZXNzIHNlbGVjdGlvbiBmYWlscyAqLworCXVfcXVhZF90IGlwNnNfc291cmNlc19ub25lOworCS8qIG51bWJlciBvZiB0aW1lcyB0aGF0IGFuIGFkZHJlc3Mgb24gdGhlIG91dGdvaW5nIEkvRiBpcyBjaG9zZW4gKi8KKwl1X3F1YWRfdCBpcDZzX3NvdXJjZXNfc2FtZWlmWzE2XTsKKwkvKiBudW1iZXIgb2YgdGltZXMgdGhhdCBhbiBhZGRyZXNzIG9uIGEgbm9uLW91dGdvaW5nIEkvRiBpcyBjaG9zZW4gKi8KKwl1X3F1YWRfdCBpcDZzX3NvdXJjZXNfb3RoZXJpZlsxNl07CisJLyoKKwkgKiBudW1iZXIgb2YgdGltZXMgdGhhdCBhbiBhZGRyZXNzIHRoYXQgaGFzIHRoZSBzYW1lIHNjb3BlCisJICogZnJvbSB0aGUgZGVzdGluYXRpb24gaXMgY2hvc2VuLgorCSAqLworCXVfcXVhZF90IGlwNnNfc291cmNlc19zYW1lc2NvcGVbMTZdOworCS8qCisJICogbnVtYmVyIG9mIHRpbWVzIHRoYXQgYW4gYWRkcmVzcyB0aGF0IGhhcyBhIGRpZmZlcmVudCBzY29wZQorCSAqIGZyb20gdGhlIGRlc3RpbmF0aW9uIGlzIGNob3Nlbi4KKwkgKi8KKwl1X3F1YWRfdCBpcDZzX3NvdXJjZXNfb3RoZXJzY29wZVsxNl07CisJLyogbnVtYmVyIG9mIHRpbWVzIHRoYXQgYW4gZGVwcmVjYXRlZCBhZGRyZXNzIGlzIGNob3NlbiAqLworCXVfcXVhZF90IGlwNnNfc291cmNlc19kZXByZWNhdGVkWzE2XTsKKworCXVfcXVhZF90IGlwNnNfZm9yd2FyZF9jYWNoZWhpdDsKKwl1X3F1YWRfdCBpcDZzX2ZvcndhcmRfY2FjaGVtaXNzOworfTsKKworI2VuZGlmIC8qIGRhcndpbiovCisKK3N0YXRpYyBpbnQgX3N5c3RlbXN0YXRzX3Y0KG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpOworCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKK3N0YXRpYyBpbnQgX3N5c3RlbXN0YXRzX3Y2KG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpOworI2VuZGlmCisKK3N0YXRpYyBpbnQgbmNwdXM7CisKK3ZvaWQKK25ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2FyY2hfaW5pdCh2b2lkKQoreworICAgIGludCAgICBuY3B1X21pYltdICA9IHsgQ1RMX0hXLCBIV19OQ1BVIH07CisgICAgc2l6ZV90IHNpeiA9IHNpemVvZihuY3B1cyk7CisgICAgaWYgKHN5c2N0bChuY3B1X21pYiwgMiwgJm5jcHVzLCAmc2l6LCBOVUxMLCAwKSA8IDApIHsKKwlzbm1wX2xvZ19wZXJyb3IoImh3Lm5jcHUiKTsKKyAgICAgICAgbmNwdXMgPSAxOworICAgIH0KK30KKworLyoKKyAqCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgbm8gY29udGFpbmVyIHNwZWNpZmllZAorICogQHJldHZhbCAtMiBjb3VsZCBub3Qgb3BlbiBmaWxlCisgKiBAcmV0dmFsIC0zIGNvdWxkIG5vdCBjcmVhdGUgZW50cnkgKHByb2JhYmx5IG1hbGxvYykKKyAqIEByZXR2YWwgLTQgZmlsZSBmb3JtYXQgZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfYXJjaF9sb2FkKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCByYzE7CisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKyAgICBpbnQgcmMyOworI2VuZGlmCisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc19zeXN0ZW1zdGF0c19cbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIC8qCisgICAgICogbG9hZCB2NCBhbmQgdjYgc3RhdHMuIEV2ZW4gaWYgb25lIGZhaWxzLCB0cnkgdGhlIG90aGVyLgorICAgICAqIElmIHRoZXkgaGF2ZSB0aGUgc2FtZSByYywgcmV0dXJuIGl0LiBpZiB0aGUgZGlmZmVyLCByZXR1cm4KKyAgICAgKiB0aGUgc21hbGxlciBvbmUuIE5vIGxvZyBtZXNzYWdlcywgc2luY2UgZWFjaCBpbmRpdmlkdWFsIGZ1bmN0aW9uCisgICAgICogd291bGQgaGF2ZSBsb2dnZWQgaXRzIG93biBtZXNzYWdlLgorICAgICAqLworICAgIHJjMSA9IF9zeXN0ZW1zdGF0c192NChjb250YWluZXIsIGxvYWRfZmxhZ3MpOworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisgICAgcmMyID0gX3N5c3RlbXN0YXRzX3Y2KGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CisgICAgaWYgKChyYzEgPT0gcmMyKSB8fCAocmMxIDwgcmMyKSkKKyAgICAgICAgcmV0dXJuIHJjMTsKKyAgICAgICAgCisgICAgcmV0dXJuIHJjMjsKKyNlbHNlCisgICAgcmV0dXJuIHJjMTsKKyNlbmRpZgorfQorCisvKgorICogQmFzZWQgb24gbG9hZF9mbGFncywgbG9hZCBpcFN5c3RlbVN0YXRzVGFibGUgb3IgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjQgZW50cmllcy4gCisgKi8KKyNpZmRlZiBfX05ldEJTRF9fCisKK3N0YXRpYyBpbnQKK19zeXN0ZW1zdGF0c192NChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKmVudHJ5ID0gTlVMTDsKKyAgICB1aW50NjRfdCBpcHN0YXRbSVBfTlNUQVRTXTsKKyAgICBzaXplX3QgbGVuID0gc2l6ZW9mKGlwc3RhdCk7CisKKyAgICBpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5pcC5zdGF0cyIsICZpcHN0YXQsICZsZW4sIE5VTEwsIDApIDwgMCkgeworCU5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgIkNhbm5vdCBzeXNjdGxieW5hbWUgbmV0LmluZXQuaXAuc3RhdHNcbiIpKTsKKwlyZXR1cm4gLTI7CisgICAgfQorCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXI6YXJjaCIsICJsb2FkIHY0IChmbGFncyAleClcbiIsCisgICAgICAgICAgICAgICAgbG9hZF9mbGFncykpOworCisgICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyICE9IE5VTEwpOyAvKiBsb2FkIGZ1bmN0aW9uIHNob3VsZGEgY2hlY2tlZCB0aGlzICovCisKKyAgICBpZiAobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSkgeworICAgICAgICAvKiB3ZSBkbyBub3Qgc3VwcG9ydCBpcElmU3RhdHNUYWJsZSBmb3IgaXB2NCAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgxLCAwLAorCQkiaXBTeXN0ZW1TdGF0c1RhYmxlLmlwdjQiKTsKKyAgICBpZihOVUxMID09IGVudHJ5KSB7CisJc25tcF9sb2coTE9HX0VSUiwgInN5c3RlbXN0YXRzX3Y0OiBjYW5ub3QgY3JlYXRlIGVudHJ5XG4iKTsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfZnJlZShjb250YWluZXIsCisJCQkJCQkgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfTk9GTEFHUyk7CisJcmV0dXJuIC0zOworICAgIH0KKworICAgIC8qCisgICAgICogT0sgLSB3ZSd2ZSBub3cgZ290IChvciBjcmVhdGVkKSB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yCisgICAgICogICAgICB0aGlzIHN5c3RlbXN0YXRzLCBpbmNsdWRpbmcgYW55ICJzdGF0aWMiIGluZm9ybWF0aW9uLgorICAgICAqIE5vdyBwYXJzZSB0aGUgcmVzdCBvZiB0aGUgbGluZSAoaS5lLiBzdGFydGluZyBmcm9tICdzdGF0cycpCisgICAgICogICAgICB0byBleHRyYWN0IHRoZSByZWxldmFudCBzdGF0aXN0aWNzLCBhbmQgcG9wdWxhdGUKKyAgICAgKiAgICAgIGRhdGEgc3RydWN0dXJlIGFjY29yZGluZ2x5LgorICAgICAqLworCisgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3cgPSBpcHN0YXRbSVBfU1RBVF9UT1RBTF0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX1RPVEFMXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSW5IZHJFcnJvcnMgPSBpcHN0YXRbSVBfU1RBVF9CQURTVU1dCisJCSAgICArIGlwc3RhdFtJUF9TVEFUX1RPT1NIT1JUXSArIGlwc3RhdFtJUF9TVEFUX1RPT1NNQUxMXQorCSAgICAgICAgICAgICsgaXBzdGF0W0lQX1NUQVRfQkFESExFTl0gKyBpcHN0YXRbSVBfU1RBVF9CQURMRU5dOworICAgIGVudHJ5LT5zdGF0cy5JbkFkZHJFcnJvcnMgPSBpcHN0YXRbSVBfU1RBVF9DQU5URk9SV0FSRF07CisgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5sb3cgPSBpcHN0YXRbSVBfU1RBVF9GT1JXQVJEXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5oaWdoID0gaXBzdGF0W0lQX1NUQVRfRk9SV0FSRF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkluVW5rbm93blByb3RvcyA9IGlwc3RhdFtJUF9TVEFUX05PUFJPVE9dOworICAgIGVudHJ5LT5zdGF0cy5JbkRpc2NhcmRzID0gaXBzdGF0W0lQX1NUQVRfRlJBR0RST1BQRURdOworICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMubG93ID0gaXBzdGF0W0lQX1NUQVRfREVMSVZFUkVEXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5oaWdoID0gaXBzdGF0W0lQX1NUQVRfREVMSVZFUkVEXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3cgPSBpcHN0YXRbSVBfU1RBVF9MT0NBTE9VVF0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dFJlcXVlc3RzLmhpZ2ggPSBpcHN0YXRbSVBfU1RBVF9MT0NBTE9VVF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93ID0gaXBzdGF0W0lQX1NUQVRfT0RST1BQRURdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5oaWdoID0gaXBzdGF0W0lQX1NUQVRfT0RST1BQRURdID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmxvdyA9IGlwc3RhdFtJUF9TVEFUX05PR0lGXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX05PR0lGXSA+PiAzMjsKKyAgICAvKiBlbnRyeS0+c3RhdHMuID0gc2Nhbl92YWxzWzEyXTsgLyAqIFJlYXNtVGltZW91dCAqLworICAgIGVudHJ5LT5zdGF0cy5SZWFzbVJlcWRzID0gaXBzdGF0W0lQX1NUQVRfRlJBR01FTlRTXTsKKyAgICBlbnRyeS0+c3RhdHMuUmVhc21PS3MgPSBpcHN0YXRbSVBfU1RBVF9SRUFTU0VNQkxFRF07CisgICAgZW50cnktPnN0YXRzLlJlYXNtRmFpbHMgPSBpcHN0YXRbSVBfU1RBVF9GUkFHRFJPUFBFRF0KKwkJICAgICsgaXBzdGF0W0lQX1NUQVRfRlJBR1RJTUVPVVRdOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3MubG93ID0gaXBzdGF0W0lQX1NUQVRfRlJBR01FTlRTXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gaXBzdGF0W0lQX1NUQVRfRlJBR01FTlRTXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMubG93ID0gaXBzdGF0W0lQX1NUQVRfQ0FOVEZSQUddICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX0NBTlRGUkFHXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5sb3cgPSBpcHN0YXRbSVBfU1RBVF9PRlJBR01FTlRTXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMuaGlnaCA9IGlwc3RhdFtJUF9TVEFUX09GUkFHTUVOVFNdID4+IDMyOworCisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNT0tTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTUZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdDUkVBVEVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdID0gMTsKKworICAgIC8qCisgICAgICogYWRkIHRvIGNvbnRhaW5lcgorICAgICAqLworICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKKyAgICB7CisJc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHdpdGggc3lzdGVtc3RhdHNfdjQ6IGluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKTsKKwluZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKworc3RhdGljIGludAorX3N5c3RlbXN0YXRzX3Y2X2xvYWRfc3lzdGVtc3RhdHMobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisgICAgdWludDY0X3QgaXBzdGF0W0lQNl9OU1RBVFNdOworICAgIHNpemVfdCBsZW4gPSBzaXplb2YoaXBzdGF0KTsKKworICAgIGlmIChzeXNjdGxieW5hbWUoIm5ldC5pbmV0Ni5pcDYuc3RhdHMiLCAmaXBzdGF0LCAmbGVuLCBOVUxMLCAwKSA8IDApIHsKKwlORVRTTk1QX0xPR09OQ0UoKExPR19FUlIsICJDYW5ub3Qgc3lzY3RsYnluYW1lIG5ldC5pbmV0Ni5pcDYuc3RhdHNcbiIpKTsKKwlyZXR1cm4gLTI7CisgICAgfQorCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXI6YXJjaCIsICJsb2FkIHY2IChmbGFncyAleClcbiIsCisgICAgICAgICAgICAgICAgbG9hZF9mbGFncykpOworCisgICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyICE9IE5VTEwpOyAvKiBsb2FkIGZ1bmN0aW9uIHNob3VsZGEgY2hlY2tlZCB0aGlzICovCisKKyAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgyLCAwLAorCQkiaXBTeXN0ZW1TdGF0c1RhYmxlLmlwdjYiKTsKKyAgICBpZihOVUxMID09IGVudHJ5KSB7CisJc25tcF9sb2coTE9HX0VSUiwgInN5c3RlbXN0YXRzX3Y2X2xvYWRfc3lzdGVtc3RhdHM6IGNhbm5vdCBjcmVhdGUgZW50cnlcbiIpOworCW5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwKKwkJCQkJCSAgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfRlJFRV9OT0ZMQUdTKTsKKwlyZXR1cm4gLTM7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBPSyAtIHdlJ3ZlIG5vdyBnb3QgKG9yIGNyZWF0ZWQpIHRoZSBkYXRhIHN0cnVjdHVyZSBmb3IKKyAgICAgKiAgICAgIHRoaXMgc3lzdGVtc3RhdHMsIGluY2x1ZGluZyBhbnkgInN0YXRpYyIgaW5mb3JtYXRpb24uCisgICAgICovCisKKyAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmxvdyA9IGlwc3RhdFtJUDZfU1RBVF9UT1RBTF0gJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9UT1RBTF0gPj4gMzI7CisgICAgZW50cnktPnN0YXRzLkluSGRyRXJyb3JzID0gaXBzdGF0W0lQNl9TVEFUX0JBRE9QVElPTlNdCisJCSAgICArIGlwc3RhdFtJUDZfU1RBVF9UT09TSE9SVF0gKyBpcHN0YXRbSVA2X1NUQVRfVE9PU01BTExdCisJCSAgICArIGlwc3RhdFtJUDZfU1RBVF9UT09NQU5ZSERSXSArIGlwc3RhdFtJUDZfU1RBVF9FWFRIRFJUT09MT05HXTsKKyAgICBlbnRyeS0+c3RhdHMuSW5BZGRyRXJyb3JzID0gaXBzdGF0W0lQNl9TVEFUX0NBTlRGT1JXQVJEXTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IGlwc3RhdFtJUDZfU1RBVF9GT1JXQVJEXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX0ZPUldBUkRdID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5JbkRpc2NhcmRzID0gaXBzdGF0W0lQNl9TVEFUX0ZSQUdEUk9QUEVEXTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IGlwc3RhdFtJUDZfU1RBVF9ERUxJVkVSRURdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmhpZ2ggPSBpcHN0YXRbSVA2X1NUQVRfREVMSVZFUkVEXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfTE9DQUxPVVRdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX0xPQ0FMT1VUXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfT0RST1BQRURdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX09EUk9QUEVEXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5sb3cgPSBpcHN0YXRbSVA2X1NUQVRfTk9HSUZdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5oaWdoID0gaXBzdGF0W0lQNl9TVEFUX05PR0lGXSA+PiAzMjsKKyAgICAvKiBlbnRyeS0+c3RhdHMuID0gc2Nhbl92YWxzWzEyXTsgLyAqIFJlYXNtVGltZW91dCAqLworICAgIGVudHJ5LT5zdGF0cy5SZWFzbVJlcWRzID0gaXBzdGF0W0lQNl9TVEFUX0ZSQUdNRU5UU107CisgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gaXBzdGF0W0lQNl9TVEFUX1JFQVNTRU1CTEVEXTsKKyAgICBlbnRyeS0+c3RhdHMuUmVhc21GYWlscyA9IGlwc3RhdFtJUDZfU1RBVF9GUkFHRFJPUFBFRF0KKwkJICAgICsgaXBzdGF0W0lQNl9TVEFUX0ZSQUdUSU1FT1VUXTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdyA9IGlwc3RhdFtJUDZfU1RBVF9GUkFHTUVOVFNdICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmhpZ2ggPSBpcHN0YXRbSVA2X1NUQVRfRlJBR01FTlRTXSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMubG93ID0gaXBzdGF0W0lQNl9TVEFUX0NBTlRGUkFHXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmhpZ2ggPSBpcHN0YXRbSVA2X1NUQVRfQ0FOVEZSQUddID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmxvdyA9IGlwc3RhdFtJUDZfU1RBVF9PRlJBR01FTlRTXSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMuaGlnaCA9IGlwc3RhdFtJUDZfU1RBVF9PRlJBR01FTlRTXSA+PiAzMjsKKworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkhEUkVSUk9SU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5BRERSRVJST1JTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lORElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5ERUxJVkVSU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRESVNDQVJEU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVROT1JPVVRFU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01SRVFEU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01PS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR09LU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHRkFJTFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0RJU0NPTlRJTlVJVFlUSU1FXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUZSRVNIUkFURV0gPSAxOworCisgICAgLyoKKyAgICAgKiBhZGQgdG8gY29udGFpbmVyCisgICAgICovCisgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSkgPCAwKQorICAgIHsKKwlzbm1wX2xvZyhMT0dfRVJSLCAic3lzdGVtc3RhdHNfdjZfbG9hZF9zeXN0ZW1zdGF0czogY2Fubm90IGluc2VydCBlbnRyeVxuIik7CisJREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXIiLCJlcnJvciB3aXRoIHN5c3RlbXN0YXRzX2VudHJ5OiBpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworCW5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisKKy8qCisgKiBsb2FkIGlwSWZTdGF0c1RhYmxlIGZvciBpcHY2IGVudHJpZXMKKyAqLworc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX2lmc3RhdHMobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBzdHJ1Y3QgaWZfbmFtZWluZGV4ICppZnMgPSBpZl9uYW1laW5kZXgoKTsKKyAgICBpbnQgaXg7CisgICAgaW50IHJjID0gMDsKKworICAgIGZvciAoaXggPSAwOyBpZnNbaXhdLmlmX2luZGV4OyBpeCsrKSB7CisJc3RydWN0IGluNl9pZnN0YXQgKmlmczY7CisJc3RydWN0IGluNl9pZnJlcSBpZnI7CisJaW50IHM7CisKKwltZW1zZXQoJmlmciwgMCwgc2l6ZW9mKGlmcikpOworCXN0cm5jcHkoaWZyLmlmcl9uYW1lLCBpZnNbaXhdLmlmX25hbWUsIHNpemVvZihpZnIuaWZyX25hbWUpLTEpOworCWlmICgocyA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgMCkpIDwgMCkgeworCSAgICByYyA9IC0xOworCSAgICBicmVhazsKKwl9CisJaWYgKGlvY3RsKHMsIFNJT0NHSUZTVEFUX0lONiwgKGNhZGRyX3QpJmlmcikgPCAwKSB7CisJICAgIHJjID0gLTI7CisJICAgIGNsb3NlKHMpOworCSAgICBicmVhazsKKwl9CisJY2xvc2Uocyk7CisJaWZzNiA9ICZpZnIuaWZyX2lmcnUuaWZydV9zdGF0OworICAgIH0KKyAgICBpZl9mcmVlbmFtZWluZGV4KGlmcyk7CisgICAgcmV0dXJuIHJjOworfQorI2VuZGlmCisKKyNlbHNlCisKK3N0YXRpYyBpbnQKK19zeXN0ZW1zdGF0c192NChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKmVudHJ5ID0gTlVMTDsKKyNpZmRlZiBfX0RyYWdvbkZseV9fCisgICAgc2l6ZV90IGxlbiA9IG5jcHVzKnNpemVvZihzdHJ1Y3QgaXBfc3RhdHMpOworICAgIHN0cnVjdCBpcF9zdGF0cyAqaXBzdGF0ID0gbWFsbG9jKGxlbik7CisgICAgaW50IGM7CisjZWxzZQorICAgIHNpemVfdCBsZW4gPSBzaXplb2Yoc3RydWN0IGlwc3RhdCk7CisgICAgc3RydWN0IGlwc3RhdCAqaXBzdGF0ID0gbWFsbG9jKGxlbik7CisjZW5kaWYKKyAgICBpbnQgbWliW10gPSB7IENUTF9ORVQsIFBGX0lORVQsIElQUFJPVE9fSVAsIElQQ1RMX1NUQVRTIH07CisKKyAgICBpZiAoc3lzY3RsKG1pYiwgc2l6ZW9mKG1pYikgLyBzaXplb2YobWliWzBdKSwgaXBzdGF0LCAmbGVuLCBOVUxMLCAwKSA9PSAtMSkgeworCXNubXBfbG9nX3BlcnJvcigiQ2Fubm90IHN5c2N0bGJ5bmFtZSBuZXQuaW5ldC5pcC5zdGF0cyIpOworCWZyZWUoaXBzdGF0KTsKKwlyZXR1cm4gLTI7CisgICAgfQorCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXI6YXJjaCIsICJsb2FkIHY0IChmbGFncyAleClcbiIsCisgICAgICAgICAgICAgICAgbG9hZF9mbGFncykpOworCisgICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyICE9IE5VTEwpOyAvKiBsb2FkIGZ1bmN0aW9uIHNob3VsZGEgY2hlY2tlZCB0aGlzICovCisKKyAgICBpZiAobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSkgeworICAgICAgICAvKiB3ZSBkbyBub3Qgc3VwcG9ydCBpcElmU3RhdHNUYWJsZSBmb3IgaXB2NCAqLworCWZyZWUoaXBzdGF0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMSwgMCwKKwkJImlwU3lzdGVtU3RhdHNUYWJsZS5pcHY0Iik7CisgICAgaWYoTlVMTCA9PSBlbnRyeSkgeworCW5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwKKwkJCQkJCSAgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfRlJFRV9OT0ZMQUdTKTsKKwlmcmVlKGlwc3RhdCk7CisJcmV0dXJuIC0zOworICAgIH0KKworICAgIC8qCisgICAgICogT0sgLSB3ZSd2ZSBub3cgZ290IChvciBjcmVhdGVkKSB0aGUgZGF0YSBzdHJ1Y3R1cmUgZm9yCisgICAgICogICAgICB0aGlzIHN5c3RlbXN0YXRzLCBpbmNsdWRpbmcgYW55ICJzdGF0aWMiIGluZm9ybWF0aW9uLgorICAgICAqIE5vdyBwYXJzZSB0aGUgcmVzdCBvZiB0aGUgbGluZSAoaS5lLiBzdGFydGluZyBmcm9tICdzdGF0cycpCisgICAgICogICAgICB0byBleHRyYWN0IHRoZSByZWxldmFudCBzdGF0aXN0aWNzLCBhbmQgcG9wdWxhdGUKKyAgICAgKiAgICAgIGRhdGEgc3RydWN0dXJlIGFjY29yZGluZ2x5LgorICAgICAqLworCisjaWZkZWYgZHJhZ29uZmx5CisgICAgZm9yIChjID0gMTsgYyA8IG5jcHVzOyBjKyspIHsKKwlpbnQgaSwgbiA9IHNpemVvZihzdHJ1Y3QgaXBfc3RhdHMpL3NpemVvZih1X2xvbmcpOworCXVfbG9uZyAqdXAgPSAodV9sb25nICopaXBzdGF0OworCXVfbG9uZyAqY3AgPSAodV9sb25nICopKGlwc3RhdCtjKTsKKwlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisJICAgICp1cCArPSAqY3A7CisJICAgIHVwKys7CisJICAgIGNwKys7CisJfQorICAgIH0KKyNlbmRpZgorICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93ID0gaXBzdGF0LT5pcHNfdG90YWwgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmhpZ2ggPSBpcHN0YXQtPmlwc190b3RhbCA+PiAzMjsKKyNlbmRpZgorICAgIGVudHJ5LT5zdGF0cy5JbkhkckVycm9ycyA9IGlwc3RhdC0+aXBzX2JhZHN1bSArIGlwc3RhdC0+aXBzX3Rvb3Nob3J0CisJCSAgICAgICAgICAgICsgaXBzdGF0LT5pcHNfdG9vc21hbGwgKyBpcHN0YXQtPmlwc19iYWRobGVuCisJCQkgICAgKyBpcHN0YXQtPmlwc19iYWRsZW47CisgICAgZW50cnktPnN0YXRzLkluQWRkckVycm9ycyA9IGlwc3RhdC0+aXBzX2NhbnRmb3J3YXJkOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93ID0gaXBzdGF0LT5pcHNfZm9yd2FyZCAmIDB4ZmZmZmZmZmY7CisjaWZuZGVmIGRhcndpbgorICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaCA9IGlwc3RhdC0+aXBzX2ZvcndhcmQgPj4gMzI7CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuSW5Vbmtub3duUHJvdG9zID0gaXBzdGF0LT5pcHNfbm9wcm90bzsKKyAgICBlbnRyeS0+c3RhdHMuSW5EaXNjYXJkcyA9IGlwc3RhdC0+aXBzX2ZyYWdkcm9wcGVkOworICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMubG93ID0gaXBzdGF0LT5pcHNfZGVsaXZlcmVkICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5oaWdoID0gaXBzdGF0LT5pcHNfZGVsaXZlcmVkID4+IDMyOworI2VuZGlmCisgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93ID0gaXBzdGF0LT5pcHNfbG9jYWxvdXQgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gaXBzdGF0LT5pcHNfbG9jYWxvdXQgPj4gMzI7CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5sb3cgPSBpcHN0YXQtPmlwc19vZHJvcHBlZCAmIDB4ZmZmZmZmZmY7CisjaWZuZGVmIGRhcndpbgorICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmhpZ2ggPSBpcHN0YXQtPmlwc19vZHJvcHBlZCA+PiAzMjsKKyNlbmRpZgorICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmxvdyA9IGlwc3RhdC0+aXBzX25vZ2lmICYgMHhmZmZmZmZmZjsKKyNpZm5kZWYgZGFyd2luCisgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMuaGlnaCA9IGlwc3RhdC0+aXBzX25vZ2lmID4+IDMyOworI2VuZGlmCisgICAgLyogZW50cnktPnN0YXRzLiA9IHNjYW5fdmFsc1sxMl07IC8gKiBSZWFzbVRpbWVvdXQgKi8KKyAgICBlbnRyeS0+c3RhdHMuUmVhc21SZXFkcyA9IGlwc3RhdC0+aXBzX2ZyYWdtZW50czsKKyAgICBlbnRyeS0+c3RhdHMuUmVhc21PS3MgPSBpcHN0YXQtPmlwc19yZWFzc2VtYmxlZDsKKyAgICBlbnRyeS0+c3RhdHMuUmVhc21GYWlscyA9IGlwc3RhdC0+aXBzX2ZyYWdkcm9wcGVkICsgaXBzdGF0LT5pcHNfZnJhZ3RpbWVvdXQ7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5sb3cgPSBpcHN0YXQtPmlwc19mcmFnbWVudHMgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmhpZ2ggPSBpcHN0YXQtPmlwc19mcmFnbWVudHMgPj4gMzI7CisjZW5kaWYKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMubG93ID0gaXBzdGF0LT5pcHNfY2FudGZyYWcgJiAweGZmZmZmZmZmOworI2lmbmRlZiBkYXJ3aW4KKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnRmFpbHMuaGlnaCA9IGlwc3RhdC0+aXBzX2NhbnRmcmFnID4+IDMyOworI2VuZGlmCisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gaXBzdGF0LT5pcHNfb2ZyYWdtZW50cyAmIDB4ZmZmZmZmZmY7CisjaWZuZGVmIGRhcndpbgorICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBpcHN0YXQtPmlwc19vZnJhZ21lbnRzID4+IDMyOworI2VuZGlmCisKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5IRFJFUlJPUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOQUREUkVSUk9SU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTlVOS05PV05QUk9UT1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lORElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5ERUxJVkVSU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRESVNDQVJEU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVROT1JPVVRFU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01SRVFEU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01PS1NdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR09LU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHRkFJTFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0RJU0NPTlRJTlVJVFlUSU1FXSA9IDE7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUZSRVNIUkFURV0gPSAxOworCisgICAgLyoKKyAgICAgKiBhZGQgdG8gY29udGFpbmVyCisgICAgICovCisgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSkgPCAwKQorICAgIHsKKwlERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzOmNvbnRhaW5lciIsImVycm9yIHdpdGggc3lzdGVtc3RhdHNfZW50cnk6IGluc2VydCBpbnRvIGNvbnRhaW5lciBmYWlsZWQuXG4iKSk7CisJbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfZnJlZShlbnRyeSk7CisgICAgfQorCisgICAgZnJlZShpcHN0YXQpOworICAgIHJldHVybiAwOworfQorCisKKyNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQorCisvKgorICogbG9hZCBpcFN5c3RlbVN0YXRzVGFibGUgZm9yIGlwdjYgZW50cmllcworICovCitzdGF0aWMgaW50IAorX3N5c3RlbXN0YXRzX3Y2X2xvYWRfc3lzdGVtc3RhdHMobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBzdHJ1Y3QgaXA2c3RhdCBpcDZzdGF0OworICAgIGludCBtaWJbXSA9IHsgQ1RMX05FVCwgQUZfSU5FVDYsIElQUFJPVE9fSVBWNiwgSVBWNkNUTF9TVEFUUyB9OworICAgIHNpemVfdCBsZW4gPSBzaXplb2YoaXA2c3RhdCk7CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOworCisgICAgaWYgKHN5c2N0bChtaWIsIHNpemVvZihtaWIpIC8gc2l6ZW9mKG1pYlswXSksICZpcDZzdGF0LCAmbGVuLCBOVUxMLCAwKSA9PSAtMSkgeworICAJTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAiQ2Fubm90IHN5c2N0bChDVExfTkVULCBBRl9JTkVUNiwgSVBQUk9UT19JUFY2LCBJUFY2Q1RMX1NUQVRTKVxuIikpOworCXJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMiwgMCwKKyAgICAgICAgICAgICJpcFN5c3RlbVN0YXRzVGFibGUuaXB2NiIpOworICAgIGlmKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMzsKKyAgICAKKyAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmxvdyA9IGlwNnN0YXQuaXA2c190b3RhbCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDSW5SZWNlaXZlcy5oaWdoID0gaXA2c3RhdC5pcDZzX3RvdGFsID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTXSA9IDE7CisgICAgLyoKKyAgICBlbnRyeS0+c3RhdHMuSENJbk9jdGV0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDSW5PY3RldHMuaGlnaCA9IHNjYW5fdmFsICA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5PQ1RFVFNdID0gMTsKKyAgICAqLworICAgIGVudHJ5LT5zdGF0cy5JbkhkckVycm9ycyA9IGlwNnN0YXQuaXA2c19iYWRvcHRpb25zICsgaXA2c3RhdC5pcDZzX3Rvb3Nob3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaXA2c3RhdC5pcDZzX3Rvb3NtYWxsICsgaXA2c3RhdC5pcDZzX2JhZHZlcnMKKwkJCSAgICAgKyBpcDZzdGF0LmlwNnNfdG9vbWFueWhkcjsKKyNpZiBIQVZFX1NUUlVDVF9JUDZTVEFUX0lQNlNfRVhUSERSVE9PTE9ORworICAgIGVudHJ5LT5zdGF0cy5JbkhkckVycm9ycyArPSBpcDZzdGF0LmlwNnNfZXh0aGRydG9vbG9uZzsKKyNlbmRpZgorICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5IRFJFUlJPUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbk5vUm91dGVzLmxvdyA9IGlwNnN0YXQuaXA2c19jYW50Zm9yd2FyZCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDSW5Ob1JvdXRlcy5oaWdoID0gaXA2c3RhdC5pcDZzX2NhbnRmb3J3YXJkID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk5PUk9VVEVTXSA9IDE7CisgICAgLyoKKyAgICBlbnRyeS0+c3RhdHMuaW5BZGRyRXJyb3JzID0gMDsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOQUREUkVSUk9SU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5JblVua25vd25Qcm90b3MgPSBzY2FuX3ZhbDsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVU5LTk9XTlBST1RPU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5JblRydW5jYXRlZFBrdHMgPSBzY2FuX3ZhbCAgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5UUlVOQ0FURURQS1RTXSA9IDE7CisgICAgKi8KKyAgICBlbnRyeS0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMubG93ID0gaXA2c3RhdC5pcDZzX2ZvcndhcmQgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5oaWdoID0gaXA2c3RhdC5pcDZzX2ZvcndhcmQgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lORk9SV0RBVEFHUkFNU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5SZWFzbVJlcWRzID0gaXA2c3RhdC5pcDZzX2ZyYWdtZW50czsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuUmVhc21PS3MgPSBpcDZzdGF0LmlwNnNfcmVhc3NlbWJsZWQ7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5SZWFzbUZhaWxzID0gaXA2c3RhdC5pcDZzX2ZyYWdkcm9wcGVkICsgaXA2c3RhdC5pcDZzX2ZyYWd0aW1lb3V0OworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01GQUlMU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5JbkRpc2NhcmRzID0gaXA2c3RhdC5pcDZzX2ZyYWdkcm9wcGVkOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMubG93ID0gaXA2c3RhdC5pcDZzX2RlbGl2ZXJlZCAgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMuaGlnaCA9IGlwNnN0YXQuaXA2c19kZWxpdmVyZWQgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3cgPSBpcDZzdGF0LmlwNnNfbG9jYWxvdXQgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dFJlcXVlc3RzLmhpZ2ggPSBpcDZzdGF0LmlwNnNfbG9jYWxvdXQgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVFJFUVVFU1RTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMubG93ID0gaXA2c3RhdC5pcDZzX25vcm91dGUgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSBpcDZzdGF0LmlwNnNfbm9yb3V0ZSA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IGlwNnN0YXQuaXA2c19mb3J3YXJkICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmhpZ2ggPSBpcDZzdGF0LmlwNnNfZm9yd2FyZCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdyA9IGlwNnN0YXQuaXA2c19vZHJvcHBlZCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMuaGlnaCA9IGlwNnN0YXQuaXA2c19vZHJvcHBlZCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnUmVxZHMubG93ID0gKGlwNnN0YXQuaXA2c19mcmFnbWVudGVkICsgaXA2c3RhdC5pcDZzX2NhbnRmcmFnKSAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ1JlcWRzLmhpZ2ggPSAoaXA2c3RhdC5pcDZzX2ZyYWdtZW50ZWQgKyBpcDZzdGF0LmlwNnNfY2FudGZyYWcpID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdyA9IGlwNnN0YXQuaXA2c19mcmFnbWVudGVkICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmhpZ2ggPSBpcDZzdGF0LmlwNnNfZnJhZ21lbnRlZCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR09LU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5sb3cgPSBpcDZzdGF0LmlwNnNfY2FudGZyYWcgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5oaWdoID0gaXA2c3RhdC5pcDZzX2NhbnRmcmFnID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHRkFJTFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5sb3cgPSBpcDZzdGF0LmlwNnNfb2ZyYWdtZW50cyAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMuaGlnaCA9IGlwNnN0YXQuaXA2c19vZnJhZ21lbnRzID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10gPSAxOworICAgIC8qCisgICAgZW50cnktPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRUcmFuc21pdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRNY2FzdE9jdGV0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVE9DVEVUU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdFBrdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUUEtUU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RPY3RldHMubG93ID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVE9DVEVUU10gPSAxOworICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RQS1RTXSA9IDE7CisgICAgZW50cnktPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRPY3RldHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRPQ1RFVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENJbkJjYXN0UGt0cy5sb3cgPSBzY2FuX3ZhbCAgJiAweGZmZmZmZmZmOworICAgIGVudHJ5LT5zdGF0cy5IQ0luQmNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5CQ0FTVFBLVFNdID0gMTsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRCY2FzdFBrdHMubG93ID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKKyAgICBlbnRyeS0+c3RhdHMuSENPdXRCY2FzdFBrdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRCQ0FTVFBLVFNdID0gMTsKKyAgICAqLworCisgICAgLyoKKyAgICAgKiBhZGQgdG8gY29udGFpbmVyCisgICAgICovCisgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSkgPCAwKSB7CisJREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXIiLCJlcnJvciB3aXRoIHN5c3RlbXN0YXRzX2VudHJ5OiBpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworCW5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgIH0KKworICAgIHJldHVybiAxOworfQorCisjZGVmaW5lIERFVl9TTk1QNl9ESVJOQU1FICAgIi9wcm9jL25ldC9kZXZfc25tcDYiCisjZGVmaW5lIElGSU5ERVhfTElORSAgICAgICAgImlmSW5kZXgiCisjZGVmaW5lIERFVl9GSUxFTkFNRV9MRU4gICAgNjQKKworLyoKKyAqIGxvYWQgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjYgZW50cmllcworICovCitzdGF0aWMgaW50IAorX3N5c3RlbXN0YXRzX3Y2X2xvYWRfaWZzdGF0cyhuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIERJUiAgICAgICAgICAgICpkZXZfc25tcDZfZGlyOworICAgIHN0cnVjdCBkaXJlbnQgICpkZXZfc25tcDZfZW50cnk7CisgICAgY2hhciAgICAgICAgICAgZGV2X2ZpbGVuYW1lW0RFVl9GSUxFTkFNRV9MRU5dOworICAgIEZJTEUgICAgICAgICAgICpkZXZpbjsKKyAgICBjaGFyICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIGNoYXIgICAgICAgICAgICpzdGFydCA9IGxpbmU7CisgICAgaW50ICAgICAgICAgICAgcmM7CisgICAgY2hhciAgICAgICAgICAgKnNjYW5fc3RyOworICAgIHVpbnRtYXhfdCAgICAgICBzY2FuX3ZhbDsKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplbnRyeSA9IE5VTEw7CisgICAgICAgICAgICAKKyAgICAvKgorICAgICAqIHRyeSB0byBvcGVuIC9wcm9jL25ldC9kZXZfc25tcDYgZGlyZWN0b3J5LiBJZiB3ZSBjYW4ndCwgdGhhdCcgb2sgLQorICAgICAqIG1heWJlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGN1cnJlbnQgcnVubmluZyBrZXJuZWwuCisgICAgICovCisgICAgaWYgKChkZXZfc25tcDZfZGlyID0gb3BlbmRpcihERVZfU05NUDZfRElSTkFNRSkpID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppZnN0YXRzIiwKKyAgICAgICAgIkZhaWxlZCB0byBsb2FkIElQdjYgSWZTdGF0cyBUYWJsZSAobGludXgpXG4iKSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIFJlYWQgZWFjaCBwZXIgaW50ZXJmYWNlIHN0YXRpc3RpY3MgcHJvYyBmaWxlCisgICAgICovCisgICAgcmMgPSAwOworICAgIHdoaWxlICgoZGV2X3NubXA2X2VudHJ5ID0gcmVhZGRpcihkZXZfc25tcDZfZGlyKSkgIT0gTlVMTCkgeworICAgICAgICBpZiAoZGV2X3NubXA2X2VudHJ5LT5kX25hbWVbMF0gPT0gJy4nKQorICAgICAgICAgICAgY29udGludWU7CisgICAgCisgICAgICAgIGlmIChzbnByaW50ZihkZXZfZmlsZW5hbWUsIERFVl9GSUxFTkFNRV9MRU4sICIlcy8lcyIsIERFVl9TTk1QNl9ESVJOQU1FLAorICAgICAgICAgICAgICAgIGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lKSA+IERFVl9GSUxFTkFNRV9MRU4pIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJJbnRlcmZhY2UgbmFtZSAlcyBpcyB0b28gbG9uZ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgZGV2X3NubXA2X2VudHJ5LT5kX25hbWUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5VTEwgPT0gKGRldmluID0gZm9wZW4oZGV2X2ZpbGVuYW1lLCAiciIpKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBvcGVuICVzXG4iLCBkZXZfZmlsZW5hbWUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogSWYgYSBzdGF0IGZpbGUgbmFtZSBpcyBtYWRlIG9mIGRpZ2l0cywgdGhlIG5hbWUgaXMgaW50ZXJmYWNlIGluZGV4LgorICAgICAgICAgKiBJZiBpdCBpcyBhbiBpbnRlcmZhY2UgbmFtZSwgdGhlIGZpbGUgaW5jbHVkZXMgYSBsaW5lIGxhYmVsZWQgaWZJbmRleC4KKyAgICAgICAgICovCisgICAgICAgIGlmIChpc2RpZ2l0KGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lWzBdKSkgeworICAgICAgICAgICAgc2Nhbl92YWwgPSBzdHJ0b3VsbChkZXZfc25tcDZfZW50cnktPmRfbmFtZSwgTlVMTCwgMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSAoc3RhcnQgPSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGRldmluKSkpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMgZG9lc24ndCBpbmNsdWRlIGFueSBsaW5lc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldl9maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIGlmICgwICE9IHN0cm5jbXAoc3RhcnQsIElGSU5ERVhfTElORSwgNykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMgZG9lc24ndCBpbmNsdWRlIGlmSW5kZXggbGluZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIGZjbG9zZShkZXZpbik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNjYW5fc3RyID0gc3RycmNocihsaW5lLCAnICcpOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gc2Nhbl9zdHIpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMgaXMgd3JvbmcgZm9ybWF0IiwgZGV2X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2Nhbl92YWwgPSBzdHJ0b3VsbChzY2FuX3N0ciwgTlVMTCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKDIsIHNjYW5fdmFsLAorICAgICAgICAgICAgICAgICJpcElmU3RhdHNUYWJsZS5pcHY2Iik7CisgICAgICAgIGlmKE5VTEwgPT0gZW50cnkpIHsKKyAgICAgICAgICAgIGZjbG9zZShkZXZpbik7CisgICAgICAgICAgICBjbG9zZWRpcihkZXZfc25tcDZfZGlyKTsKKyAgICAgICAgICAgIHJldHVybiAtMzsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogX3N5c3RlbXN0YXRzX3Y2X2xvYWRfZmlsZShlbnRyeSwgZGV2aW4pOyAqLworICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgIH0KKyAgICBjbG9zZWRpcihkZXZfc25tcDZfZGlyKTsKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZiAvKiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCisjZW5kaWYKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKy8qCisgKiBCYXNlZCBvbiBsb2FkX2ZsYWdzLCBsb2FkIGlwU3lzdGVtU3RhdHNUYWJsZSBvciBpcElmU3RhdHNUYWJsZSBmb3IgaXB2NiBlbnRyaWVzLiAKKyAqLworc3RhdGljIGludAorX3N5c3RlbXN0YXRzX3Y2KG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czpjb250YWluZXI6YXJjaCIsICJsb2FkIHY2IChmbGFncyAldSlcbiIsCisgICAgICAgICAgICAgICAgbG9hZF9mbGFncykpOworCisgICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyICE9IE5VTEwpOyAvKiBsb2FkIGZ1bmN0aW9uIHNob3VsZGEgY2hlY2tlZCB0aGlzICovCisKKyAgICBpZiAobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSkgeworICAgICAgICAvKiBsb2FkIGlwSWZTdGF0c1RhYmxlICovCisgICAgICAgIHJldHVybiBfc3lzdGVtc3RhdHNfdjZfbG9hZF9pZnN0YXRzKGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogbG9hZCBpcFN5c3RlbVN0YXRzVGFibGUgKi8KKyAgICAgICAgcmV0dXJuIF9zeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzKGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CisgICAgfQorfQorI2VuZGlmIC8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaAppbmRleCA4NWE4NzM4Li43M2FmYWU2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCkBAIC0xNTUsOSArMTU1LDYgQEAKICAgICAgICAgaW50ICAgICAgICAgICAgIGluZXROZXRUb01lZGlhUm93U3RhdHVzLAogICAgICAgICAgICAgaW5ldE5ldFRvTWVkaWFSb3dTdGF0dXNfdW5kbzsKIAotICAgICAgICAvKiBmbGFnLCBpZiB0aGUgcm93IHdhcyBwcmVzZW50IGluIGxhc3QgcmVhZCBmcm9tIG9wZXJhdGluZyBzeXN0ZW0gKi8KLSAgICAgICAgaW50IHZhbGlkOwotCiAgICAgICAgIC8qCiAgICAgICAgICAqIHN0b3JhZ2UgZm9yIGZ1dHVyZSBleHBhbnNpb24KICAgICAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggOGZkZGI3MC4uMWVjOGNjNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtOCw2ICs4LDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTE5LDYgKzIwLDkgQEAKIAogI2luY2x1ZGUgImluZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2xpZm8pCitzdGF0aWMgbmV0c25tcF9hcnBfYWNjZXNzICogYXJwX2FjY2VzcyA9IE5VTEw7CisKIC8qKiBAaW5ncm91cCBpbnRlcmZhY2UgCiAgKiBAYWRkdG9ncm91cCBkYXRhX2FjY2VzcyBkYXRhX2FjY2VzczogUm91dGluZXMgdG8gYWNjZXNzIGRhdGEKICAqCkBAIC03MSw2ICs3NSwxMjMgQEAKICAqLwogCiAvKioKKyAqIGNoZWNrIGVudHJ5IGZvciB1cGRhdGUKKyAqLworc3RhdGljIHZvaWQKK19hZGRfb3JfdXBkYXRlX2FycF9lbnRyeShuZXRzbm1wX2FycF9lbnRyeSAqYXJwX2VudHJ5LAorICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQoreworICAgIGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgKm9sZDsKKyAgICBpbnQgICAgICAgICAgICAgaW5ldEFkZHJlc3NUeXBlOworCisgICAgREVCVUdUUkFDRTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gYXJwX2VudHJ5KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQgdGhlIGFkZHIgbGVuIHRvIGFuIGluZXRBZGRyZXNzVHlwZQorICAgICAqLworICAgIHN3aXRjaCAoYXJwX2VudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbikgeworICAgIGNhc2UgNDoKKyAgICAgICAgaW5ldEFkZHJlc3NUeXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSAxNjoKKyAgICAgICAgaW5ldEFkZHJlc3NUeXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjY7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImluZXROZXRUb01lZGlhVGFibGU6X2FkZF9vcl91cGRhdGVfYXJwZW50cnk6IHVuc3VwcG9ydGVkIGFkZHJlc3MgdHlwZSwgbGVuID0gJWRcbiIsIGFycF9lbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4pOworICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfZnJlZShhcnBfZW50cnkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBhbGxvY2F0ZSBhbiByb3cgY29udGV4dCBhbmQgc2V0IHRoZSBpbmRleChlcyksIHRoZW4gdHJ5IHRvIGZpbmQgaXQgaW4KKyAgICAgKiB0aGUgY2FjaGUuCisgICAgICovCisgICAgcm93cmVxX2N0eCA9IGluZXROZXRUb01lZGlhVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChhcnBfZW50cnksIE5VTEwpOworICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgorICAgICAgICAoTUZEX1NVQ0NFU1MgPT0gaW5ldE5ldFRvTWVkaWFUYWJsZV9pbmRleGVzX3NldAorICAgICAgICAgKHJvd3JlcV9jdHgsIHJvd3JlcV9jdHgtPmRhdGEtPmlmX2luZGV4LCBpbmV0QWRkcmVzc1R5cGUsCisgICAgICAgICAgKGNoYXIgKikgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2lwYWRkcmVzcywKKyAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5hcnBfaXBhZGRyZXNzX2xlbikpKSB7CisKKyAgICAgICAgLyogdHJ5IHRvIGZpbmQgb2xkIGVudHJ5ICovCisgICAgICAgIG9sZCA9IChpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHgqKUNPTlRBSU5FUl9GSU5EKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgICAgIGlmIChhcnBfZW50cnktPmZsYWdzICYgTkVUU05NUF9BQ0NFU1NfQVJQX0VOVFJZX0ZMQUdfREVMRVRFKSB7CisgICAgICAgICAgICAvKiBkZWxldGUgZXhpc3RpbmcgZW50cnkgKi8KKyAgICAgICAgICAgIGlmIChvbGQgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIENPTlRBSU5FUl9SRU1PVkUoY29udGFpbmVyLCBvbGQpOworICAgICAgICAgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KG9sZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlIGlmIChvbGQgIT0gTlVMTCkgeworICAgICAgICAgICAgLyogdGhlIGVudHJ5IGlzIGFscmVhZHkgdGhlcmUsIHVwZGF0ZSBpdCAqLworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X3VwZGF0ZShvbGQtPmRhdGEsIGFycF9lbnRyeSk7CisgICAgICAgICAgICAvKiBkZWxldGUgdGhlIGF1eGlsaWFyeSBjb250ZXh0IHdlIHVzZWQgdG8gZmluZCB0aGUgZW50cnkKKyAgICAgICAgICAgICAqICh0aGlzIGRlbGV0ZXMgYWxzbyBhcnBfZW50cnkpICovCisgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGNyZWF0ZSBuZXcgZW50cnkgYW5kIGFkZCBpdCB0byB0aGUgY2FjaGUqLworICAgICAgICAgICAgcm93cmVxX2N0eC0+aW5ldE5ldFRvTWVkaWFSb3dTdGF0dXMgPSBST1dTVEFUVVNfQUNUSVZFOworICAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2xhc3RfdXBkYXRlZCA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHJvd3JlcV9jdHgpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgorICAgICAgICAgICAgICAgICAgICAgImluZXROZXRUb01lZGlhVGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGFycF9lbnRyeSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCAgX2FycF9ob29rX3VwZGF0ZShuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcywgbmV0c25tcF9hcnBfZW50cnkgKmVudHJ5KQoreworICAgIF9hZGRfb3JfdXBkYXRlX2FycF9lbnRyeShlbnRyeSwgYWNjZXNzLT5tYWdpYyk7Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1bnNpZ25lZCBnZW5lcmF0aW9uOworICAgIG5ldHNubXBfY29udGFpbmVyICp0b19kZWxldGU7Cit9IF9jb2xsZWN0X2N0eDsKKworLyoqCisgKiBQdXQgYWxsIGVudHJpZXMgd2l0aCBvdXRkYXRlZCBnZW5lcmF0aW9uIHRvIGRlbGV0aW9uIGxpc3QuCisgKi8KK3N0YXRpYyB2b2lkCitfY29sbGVjdF9pbnZhbGlkX2FycF9jdHgoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbGxlY3RfY3R4ICpjY3R4KQoreworICAgIGlmIChjdHgtPmRhdGEtPmdlbmVyYXRpb24gIT0gY2N0eC0+Z2VuZXJhdGlvbikKKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjY3R4LT50b19kZWxldGUsIGN0eCk7Cit9CisKK3N0YXRpYyB2b2lkIF9hcnBfaG9va19nYyhuZXRzbm1wX2FycF9hY2Nlc3MgKmFjY2VzcykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gYWNjZXNzLT5tYWdpYzsKKyAgICBfY29sbGVjdF9jdHggY2N0eDsKKworICAgIGNjdHgudG9fZGVsZXRlID0gbmV0c25tcF9jb250YWluZXJfZmluZCgibGlmbyIpOworICAgIGNjdHguZ2VuZXJhdGlvbiA9IGFjY2Vzcy0+Z2VuZXJhdGlvbjsKKworICAgIENPTlRBSU5FUl9GT1JfRUFDSChjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY29sbGVjdF9pbnZhbGlkX2FycF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICZjY3R4KTsKKworICAgIHdoaWxlIChDT05UQUlORVJfU0laRShjY3R4LnRvX2RlbGV0ZSkpIHsKKyAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpjdHggPSAoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4KilDT05UQUlORVJfRklSU1QoY2N0eC50b19kZWxldGUpOworICAgICAgICBDT05UQUlORVJfUkVNT1ZFKGNvbnRhaW5lciwgY3R4KTsKKyAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoY3R4KTsKKyAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShjY3R4LnRvX2RlbGV0ZSwgTlVMTCk7CisgICAgfQorICAgIENPTlRBSU5FUl9GUkVFKGNjdHgudG9fZGVsZXRlKTsKK30KKworLyoqCiAgKiBjb250YWluZXIgaW5pdGlhbGl6YXRpb24KICAqCiAgKiBAcGFyYW0gY29udGFpbmVyX3B0cl9wdHIgQSBwb2ludGVyIHRvIGEgY29udGFpbmVyIHBvaW50ZXIuIElmIHlvdQpAQCAtMTIwLDEwNCArMjQxLDE5IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvKgotICAgICAqIFRPRE86MzQ1OkE6IFNldCB1cCBpbmV0TmV0VG9NZWRpYVRhYmxlIGNhY2hlIHByb3BlcnRpZXMuCi0gICAgICoKLSAgICAgKiBBbHNvIGZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiBzZXQgcGFyYW1ldGVycyBmb3IgdGhlCi0gICAgICogY2FjaGUuIERvIG5vdCBjaGFuZ2UgdGhlIG1hZ2ljIHBvaW50ZXIsIGFzIGl0IGlzIHVzZWQKLSAgICAgKiBieSB0aGUgTUZEIGhlbHBlci4gVG8gY29tcGxldGVseSBkaXNhYmxlIGNhY2hpbmcsIHNldAotICAgICAqIGNhY2hlLT5lbmFibGVkIHRvIDAuCi0gICAgICovCi0gICAgY2FjaGUtPnRpbWVvdXQgPSBJTkVUTkVUVE9NRURJQVRBQkxFX0NBQ0hFX1RJTUVPVVQ7IC8qIHNlY29uZHMgKi8KLQotICAgIC8qIFdlIHdhbnQgdG8gbWFudWFsbHkgZGVsZXRlIGVudHJpZXMgaW4gdGhlIGNhY2hlIHRvIGtlZXAgTGFzdFVwZGF0ZWQKLSAgICAgKiB0aW1lc3RhbXAuICovCi0gICAgY2FjaGUtPmZsYWdzIHw9IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FECi0gICAgICAgICAgICAgICAgICAgIHwgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRDsKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfaW5pdCAqLwotCi0vKioKLSAqIFB1dCBhbGwgZW50cmllcyB3aXRoIHZhbGlkICE9MSB0byB0aGUgbGlzdCB0byBkZWxldGUuCi0gKi8KLXN0YXRpYyB2b2lkCi1fY29sbGVjdF9pbnZhbGlkX2FycF9jdHgoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpjdHgsCi0gICAgICAgIG5ldHNubXBfY29udGFpbmVyICp0b19kZWxldGUpCi17Ci0gICAgaWYgKGN0eC0+dmFsaWQpCi0gICAgICAgICAgICBjdHgtPnZhbGlkID0gMDsKLSAgICBlbHNlCi0gICAgICAgIENPTlRBSU5FUl9JTlNFUlQodG9fZGVsZXRlLCBjdHgpOwotfQotCi0vKioKLSAqIGNoZWNrIGVudHJ5IGZvciB1cGRhdGUKLSAqLwotc3RhdGljIHZvaWQKLV9hZGRfb3JfdXBkYXRlX2FycF9lbnRyeShuZXRzbm1wX2FycF9lbnRyeSAqYXJwX2VudHJ5LAotICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQotewotICAgIGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgKm9sZDsKLSAgICBpbnQgICAgICAgICAgICAgaW5ldEFkZHJlc3NUeXBlOwotCi0gICAgREVCVUdUUkFDRTsKLQotICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gYXJwX2VudHJ5KTsKLSAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7Ci0KLSAgICAvKgotICAgICAqIGNvbnZlcnQgdGhlIGFkZHIgbGVuIHRvIGFuIGluZXRBZGRyZXNzVHlwZQotICAgICAqLwotICAgIHN3aXRjaCAoYXJwX2VudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbikgewotICAgIGNhc2UgNDoKLSAgICAgICAgaW5ldEFkZHJlc3NUeXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSAxNjoKLSAgICAgICAgaW5ldEFkZHJlc3NUeXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjY7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2ZyZWUoYXJwX2VudHJ5KTsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVuc3VwcG9ydGVkIGFkZHJlc3MgdHlwZVxuIik7CisgICAgYXJwX2FjY2VzcyA9IG5ldHNubXBfYWNjZXNzX2FycF9jcmVhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19BUlBfQ1JFQVRFX05PRkxBR1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBfYXJwX2hvb2tfdXBkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX2FycF9ob29rX2djLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNhY2hlLT50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNhY2hlLT5mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZjYWNoZS0+ZXhwaXJlZCk7CisgICAgaWYgKGFycF9hY2Nlc3MgPT0gTlVMTCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGNyZWF0ZSBhcnAgYWNjZXNzIGluIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX2luaXRcbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgLyoKLSAgICAgKiBhbGxvY2F0ZSBhbiByb3cgY29udGV4dCBhbmQgc2V0IHRoZSBpbmRleChlcyksIHRoZW4gdHJ5IHRvIGZpbmQgaXQgaW4KLSAgICAgKiB0aGUgY2FjaGUuCi0gICAgICovCi0gICAgcm93cmVxX2N0eCA9IGluZXROZXRUb01lZGlhVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChhcnBfZW50cnksIE5VTEwpOwotICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgotICAgICAgICAoTUZEX1NVQ0NFU1MgPT0gaW5ldE5ldFRvTWVkaWFUYWJsZV9pbmRleGVzX3NldAotICAgICAgICAgKHJvd3JlcV9jdHgsIHJvd3JlcV9jdHgtPmRhdGEtPmlmX2luZGV4LCBpbmV0QWRkcmVzc1R5cGUsCi0gICAgICAgICAgKGNoYXIgKikgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2lwYWRkcmVzcywKLSAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5hcnBfaXBhZGRyZXNzX2xlbikpKSB7Ci0KLSAgICAgICAgLyogdHJ5IHRvIGZpbmQgb2xkIGVudHJ5ICovCi0gICAgICAgIG9sZCA9IChpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHgqKUNPTlRBSU5FUl9GSU5EKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7Ci0gICAgICAgIGlmIChvbGQgIT0gTlVMTCkgewotICAgICAgICAgICAgLyogdGhlIGVudHJ5IGlzIGFscmVhZHkgdGhlcmUsIHVwZGF0ZSBpdCAqLwotICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X3VwZGF0ZShvbGQtPmRhdGEsIGFycF9lbnRyeSk7Ci0gICAgICAgICAgICBvbGQtPnZhbGlkID0gMTsgLyogZG8gbm90IGRlbGV0ZSBpdCBpbiBmb2xsb3dpbmcgc3dlZXAgKi8KLSAgICAgICAgICAgIC8qIGRlbGV0ZSB0aGUgYXV4aWxpYXJ5IGNvbnRleHQgd2UgdXNlZCB0byBmaW5kIHRoZSBlbnRyeQotICAgICAgICAgICAgICogKHRoaXMgZGVsZXRlcyBhbHNvIGFycF9lbnRyeSkgKi8KLSAgICAgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY3JlYXRlIG5ldyBlbnRyeSBhbmQgYWRkIGl0IHRvIHRoZSBjYWNoZSovCi0gICAgICAgICAgICByb3dyZXFfY3R4LT5pbmV0TmV0VG9NZWRpYVJvd1N0YXR1cyA9IFJPV1NUQVRVU19BQ1RJVkU7Ci0gICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5hcnBfbGFzdF91cGRhdGVkID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7Ci0gICAgICAgICAgICByb3dyZXFfY3R4LT52YWxpZCA9IDE7IC8qIGRvIG5vdCBkZWxldGUgaXQgaW4gZm9sbG93aW5nIHN3ZWVwICovCi0gICAgICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAocm93cmVxX2N0eCkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCi0gICAgICAgICAgICAgICAgICAgICAiaW5ldE5ldFRvTWVkaWFUYWJsZSBjYWNoZS5cbiIpOwotICAgICAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2ZyZWUoYXJwX2VudHJ5KTsKLSAgICB9Ci19Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX2luaXQgKi8KIAogLyoqCiAgKiBjb250YWluZXIgc2h1dGRvd24KQEAgLTI0MCwxMiArMjc2LDE2IEBACiB7CiAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKIAorICAgIGlmIChOVUxMICE9IGFycF9hY2Nlc3MpIHsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2RlbGV0ZShhcnBfYWNjZXNzKTsKKyAgICAgICAgYXJwX2FjY2VzcyA9IE5VTEw7CisgICAgfQorCiAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cikgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiYmFkIHBhcmFtcyB0byBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93blxuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogLyoqCkBAIC0yODQsNTQgKzMyNCwxMSBAQAogaW50CiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCiB7Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmFycF9jb250YWluZXI7Ci0gICAgbmV0c25tcF9jb250YWluZXIgKnRvX2RlbGV0ZSA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImxpZm8iKTsKLQogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmluZXROZXRUb01lZGlhVGFibGU6aW5ldE5ldFRvTWVkaWFUYWJsZV9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOwogCi0gICAgLyoKLSAgICAgKiBUT0RPOjM1MTpNOiB8LT4gTG9hZC91cGRhdGUgZGF0YSBpbiB0aGUgaW5ldE5ldFRvTWVkaWFUYWJsZSBjb250YWluZXIuCi0gICAgICogbG9vcCBvdmVyIHlvdXIgaW5ldE5ldFRvTWVkaWFUYWJsZSBkYXRhLCBhbGxvY2F0ZSBhIHJvd3JlcSBjb250ZXh0LAotICAgICAqIHNldCB0aGUgaW5kZXgoZXMpIFthbmQgZGF0YSwgb3B0aW9uYWxseV0gYW5kIGluc2VydCBpbnRvCi0gICAgICogdGhlIGNvbnRhaW5lci4KLSAgICAgKi8KLSAgICBhcnBfY29udGFpbmVyID0KLSAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9sb2FkKE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19BUlBfTE9BRF9OT0ZMQUdTKTsKLSAgICBpZiAoTlVMTCA9PSBhcnBfY29udGFpbmVyKQotICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOyAgICAgICAgLyogbXNnIGFscmVhZHkgbG9nZ2VkICovCi0KLSAgICAvKgotICAgICAqIHdlIGp1c3QgZ290IGEgZnJlc2ggY29weSBvZiBkYXRhLiBzbmFyZiBkYXRhCi0gICAgICovCi0gICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGFycF9jb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfYWRkX29yX3VwZGF0ZV9hcnBfZW50cnksCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7Ci0KLSAgICAvKgotICAgICAqIERlbGV0ZSBhbGwgY2FjaGVkIGVudHJpZXMsIHdoaWNoIHdlcmUgbm90IHByb3ZpZGVkIGJ5Ci0gICAgICogbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9sb2FkCi0gICAgICovCi0gICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9jb2xsZWN0X2ludmFsaWRfYXJwX2N0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgdG9fZGVsZXRlKTsKLSAgICB3aGlsZSAoQ09OVEFJTkVSX1NJWkUodG9fZGVsZXRlKSkgewotICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKmN0eCA9IChpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHgqKUNPTlRBSU5FUl9GSVJTVCh0b19kZWxldGUpOwotICAgICAgICBDT05UQUlORVJfUkVNT1ZFKGNvbnRhaW5lciwgY3R4KTsKLSAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoY3R4KTsKLSAgICAgICAgQ09OVEFJTkVSX1JFTU9WRSh0b19kZWxldGUsIE5VTEwpOwotICAgIH0KLSAgICBDT05UQUlORVJfRlJFRSh0b19kZWxldGUpOwotCi0gICAgLyoKLSAgICAgKiBmcmVlIHRoZSBjb250YWluZXIuIHdlJ3ZlIGVpdGhlciBjbGFpbWVkIGVhY2ggZW50cnksIG9yIHJlbGVhc2VkIGl0LAotICAgICAqIHNvIHRoZSBhY2Nlc3MgZnVuY3Rpb24gZG9lc24ndCBuZWVkIHRvIGNsZWFyIHRoZSBjb250YWluZXIuCi0gICAgICovCi0gICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGFycF9jb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX0FSUF9GUkVFX0RPTlRfQ0xFQVIpOwotCi0gICAgREVCVUdNU0dUKCgidmVyYm9zZTppbmV0TmV0VG9NZWRpYVRhYmxlOmluZXROZXRUb01lZGlhVGFibGVfY2FjaGVfbG9hZCIsCi0gICAgICAgICAgICAgICAiJSIgTkVUU05NUF9QUkl6ICJ1IHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICBhcnBfYWNjZXNzLT5tYWdpYyA9IGNvbnRhaW5lcjsKKyAgICBpZiAobmV0c25tcF9hY2Nlc3NfYXJwX2xvYWQoYXJwX2FjY2VzcykgPCAwKQorICAgICAgICByZXR1cm4gTUZEX0VSUk9SOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9sb2FkICovCkBAIC0zNTQsNiArMzUxLDExIEBACiB7CiAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9mcmVlIiwgImNhbGxlZFxuIikpOwogCisgICAgaWYgKE5VTEwgIT0gYXJwX2FjY2VzcykgeworICAgICAgICBuZXRzbm1wX2FjY2Vzc19hcnBfdW5sb2FkKGFycF9hY2Nlc3MpOworICAgICAgICBhcnBfYWNjZXNzLT5tYWdpYyA9IE5VTEw7CisgICAgfQorCiAgICAgLyoKICAgICAgKiBUT0RPOjM4MDpNOiBGcmVlIGluZXROZXRUb01lZGlhVGFibGUgY29udGFpbmVyIGRhdGEuCiAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYwppbmRleCA2MmUzNjRmLi5jMTg2ODlhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE5IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldE5ldFRvTWVkaWFUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX3NpemUsIGluZXROZXRUb01lZGlhVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluZXROZXRUb01lZGlhVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaW5ldE5ldFRvTWVkaWFUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpbmV0TmV0VG9NZWRpYVRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9nZXQsIGluZXROZXRUb01lZGlhVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTgyLDE5ICs5NiwyMyBAQAogICAgICAgICAgICAgICAgIF9pbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZV9jdHggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUTkVUVE9NRURJQVRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX2dldCh2b2lkKQogewogICAgIHJldHVybiBpbmV0TmV0VG9NZWRpYVRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUTkVUVE9NRURJQVRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfUkVHSVNUUkFUSU9OX0dFVAogaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWdpc3RyYXRpb24gKgogaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGluZXROZXRUb01lZGlhVGFibGVfaWZfY3R4LnVzZXJfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUTkVUVE9NRURJQVRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGluZXROZXRUb01lZGlhVGFibGVfcmVnaXN0cmF0aW9uICoKIGluZXROZXRUb01lZGlhVGFibGVfcmVnaXN0cmF0aW9uX3NldChpbmV0TmV0VG9NZWRpYVRhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3cmVnKQpAQCAtMTA0LDEyICsxMjIsMTUgQEAKICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTkVUTkVUVE9NRURJQVRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaW5ldE5ldFRvTWVkaWFUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lORVRORVRUT01FRElBVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogdV9pbnQKIGluZXROZXRUb01lZGlhVGFibGVfZGlydHlfZ2V0KHZvaWQpCkBAIC0xMzMsNyArMTU0LDcgQEAKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2luZXROZXRUb01lZGlhVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV9vYmplY3RfbG9va3VwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV9nZXRfdmFsdWVzOwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX3VuZG9fc2V0dXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pbmV0TmV0VG9NZWRpYVRhYmxlX3NldF92YWx1ZXM7CkBAIC0xNDksNyArMTcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLCBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAogICAgICAgICAgICAgICAgIF9pbmV0TmV0VG9NZWRpYVRhYmxlX2NoZWNrX2luZGV4ZXMoaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICoKQEAgLTIzMiw3ICsyNTMsNyBAQAogICAgICAgICBfbWZkX2luZXROZXRUb01lZGlhVGFibGVfcG9zdF9yZXF1ZXN0OwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yNTcsNyArMjc4LDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yOTMsNyArMzE0LDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTMxNiw3ICszMzcsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTA5Nyw3ICsxMTE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgcm93cmVxX2N0eCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pbmV0TmV0VG9NZWRpYVRhYmxlX2NoZWNrX2luZGV4ZXMgKi8KIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBTRVQgcHJvY2Vzc2luZwpAQCAtMTgyMSw3ICsxODQyLDcgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2luZXROZXRUb01lZGlhVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xOTgwLDYgKzIwMDEsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqCiBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpbmV0TmV0VG9NZWRpYVRhYmxlX21pYl9pbmRleCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMjAwNywzICsyMDI5LDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5FVE5FVFRPTUVESUFUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggNGZiNjkwNS4uNDQzNzgyOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTgsNiArOCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yMSw2ICsyMiwxMCBAQAogCiAjaW5jbHVkZSAiaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGlwQWRkcmVzc1RhYmxlX2NvbnRhaW5lcl9nZXQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcGFkZHJlc3NfY29tbW9uX2NvcHlfdXRpbGl0aWVzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX3ByZWZpeF9jb3B5KQorCiAvKiogQGluZ3JvdXAgaW50ZXJmYWNlIAogICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCiAgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2ludGVyZmFjZS5jCmluZGV4IDk0MjQyNWQuLmUxNGEzMzcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE2IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZGRyZXNzcHJlZml4dGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4LCBpcGFkZHJlc3NwcmVmaXh0YWJsZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBhZGRyZXNzcHJlZml4dGFibGVfY29udGFpbmVyX2dldCwgaXBhZGRyZXNzcHJlZml4dGFibGVfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIGlwYWRkcmVzc3ByZWZpeHRhYmxlX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcEFkZHJlc3NQcmVmaXhUYWJsZV9yZWdpc3RyYXRpb25fc2V0LCBpcGFkZHJlc3NwcmVmaXh0YWJsZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBBZGRyZXNzUHJlZml4VGFibGVfY29udGFpbmVyX3NpemUsIGlwYWRkcmVzc3ByZWZpeHRhYmxlX2FsbCkKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MSwxOCArOTIsMjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaWZfY3R4KTsKIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTUFJFRklYVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaXBBZGRyZXNzUHJlZml4VGFibGVfY29udGFpbmVyX2dldCh2b2lkKQogewogICAgIHJldHVybiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTUFJFRklYVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTUFJFRklYVEFCTEVfUkVHSVNUUkFUSU9OX0dFVAogaXBBZGRyZXNzUHJlZml4VGFibGVfcmVnaXN0cmF0aW9uICoKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBBZGRyZXNzUHJlZml4VGFibGVfaWZfY3R4LnVzZXJfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTUFJFRklYVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTUFJFRklYVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaXBBZGRyZXNzUHJlZml4VGFibGVfcmVnaXN0cmF0aW9uICoKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaXBBZGRyZXNzUHJlZml4VGFibGVfcmVnaXN0cmF0aW9uICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3cmVnKQpAQCAtMTAyLDEyICsxMTgsMTUgQEAKICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1BSRUZJWFRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGlwQWRkcmVzc1ByZWZpeFRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTUFJFRklYVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogLyoKICAqIG1mZCBtdWx0aXBsZXhlciBtb2RlcwpAQCAtMjI5LDcgKzI0OCw4IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCisgICAgLyogWFhYIC0gYXJlIHRoZXNlIGFjdHVhbGx5IG5lY2Vzc2FyeT8gKi8KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTI1Miw3ICsyNzIsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtODQ5LDcgKzg2OSw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBBZGRyZXNzUHJlZml4VGFibGVfZ2V0X3ZhbHVlcyAqLwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTEwMTQsNiArMTAzNCw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcEFkZHJlc3NQcmVmaXhUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTUFJFRklYVEFCTEVfUk9XX0ZJTkRfQllfTUlCX0lOREVYCiBpcEFkZHJlc3NQcmVmaXhUYWJsZV9yb3dyZXFfY3R4ICoKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcEFkZHJlc3NQcmVmaXhUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCkBAIC0xMDQxLDMgKzEwNjIsNCBAQAogCiAgICAgcmV0dXJuIHJvd3JlcV9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NQUkVGSVhUQUJMRV9ST1dfRklORF9CWV9NSUJfSU5ERVggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMKaW5kZXggZWM0OGZjYS4uZGVmZjRlOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMKQEAgLTE0LDYgKzE0LDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTI4LDYgKzI5LDEwIEBACiAKICNpbmNsdWRlICJpcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfc3RvcmFnZV90cmFuc2l0aW9uKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaXBhZGRyZXNzX2VudHJ5X2NvcHkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcGFkZHJlc3NfcHJlZml4X2NvcHkpCisKIGNvbnN0IG9pZCAgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRbXSA9IHsgSVBBRERSRVNTVEFCTEVfT0lEIH07CiBjb25zdCBpbnQgICAgICAgaXBBZGRyZXNzVGFibGVfb2lkX3NpemUgPSBPSURfTEVOR1RIKGlwQWRkcmVzc1RhYmxlX29pZCk7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggY2ExYWU0Ny4uZDgwYjNlNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTgsNiArOCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yMiw2ICsyMyw4IEBACiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2xpZm8pCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpcGFkZHJlc3NfZW50cnlfdXBkYXRlKQogCiAvKiogQGluZ3JvdXAgaW50ZXJmYWNlIAogICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCkBAIC02NzMsOSArNjc2LDkgQEAKICAgICAgKiBUT0RPOjQzMDpNOiB8LT4gVmFsaWRhdGUgcG90ZW50aWFsIGlwQWRkcmVzc1RhYmxlIGluZGV4LgogICAgICAqCiAgICAgICoKLSAgICAgKiB4eHgtcmtzOiB3ZSBvbmx5IHBsYW4gaXB2NCBzdXBwb3J0IGluaXRpYWxseQogICAgICAqLwotICAgIGlmICgoNCAhPSByb3dyZXFfY3R4LT50YmxfaWR4LmlwQWRkcmVzc0FkZHJfbGVuKSkgeworICAgIGlmICgoNCAhPSByb3dyZXFfY3R4LT50YmxfaWR4LmlwQWRkcmVzc0FkZHJfbGVuKQorICAgICAgICAgICAgJiYgKDE2ICE9IHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkcl9sZW4pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiaW52YWxpZCBpbmRleCBmb3IgYSBuZXcgcm93IGluIHRoZSAiCiAgICAgICAgICAgICAgICAgICJpcEFkZHJlc3NUYWJsZSB0YWJsZS5cbiIpOwogICAgICAgICAvKgpAQCAtNjkyLDE1ICs2OTUsOSBAQAogICAgICAgICAgICAgcmV0dXJuIE1GRF9DQU5OT1RfQ1JFQVRFX05PVzsKICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPmlhX2FkZHJlc3NbMF0gPQotICAgICAgICAgICAgcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyWzBdOwotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5pYV9hZGRyZXNzWzFdID0KLSAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaXBBZGRyZXNzQWRkclsxXTsKLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+aWFfYWRkcmVzc1syXSA9Ci0gICAgICAgICAgICByb3dyZXFfY3R4LT50YmxfaWR4LmlwQWRkcmVzc0FkZHJbMl07Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPmlhX2FkZHJlc3NbM10gPQotICAgICAgICAgICAgcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyWzNdOwotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5pYV9hZGRyZXNzX2xlbiA9IDQ7CisgICAgICAgIG1lbWNweShyb3dyZXFfY3R4LT5kYXRhLT5pYV9hZGRyZXNzLCByb3dyZXFfY3R4LT50YmxfaWR4LmlwQWRkcmVzc0FkZHIsCisgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyX2xlbik7CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPmlhX2FkZHJlc3NfbGVuID0gcm93cmVxX2N0eC0+dGJsX2lkeC5pcEFkZHJlc3NBZGRyX2xlbjsKICAgICB9CiAKICAgICByZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggOThjM2FkMC4uNDg3NzBiMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMTkgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcEFkZHJlc3NUYWJsZV9leHRlcm5hbF9hY2Nlc3MsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYWJ5X3N0ZXBzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfY29udGFpbmVyX3Jvd19pbnNlcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQWRkcmVzc1RhYmxlX2NvbnRhaW5lcl9zaXplLCBpcEFkZHJlc3NUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBBZGRyZXNzVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgaXBBZGRyZXNzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwQWRkcmVzc1RhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIGlwQWRkcmVzc1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcEFkZHJlc3NUYWJsZV9jb250YWluZXJfZ2V0LCBpcEFkZHJlc3NUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtODAsMTkgKzk0LDIzIEBACiBzdGF0aWMgdm9pZAogICAgICAgICAgICAgICAgIF9pcEFkZHJlc3NUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIGlwQWRkcmVzc1RhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBBZGRyZXNzVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGlwQWRkcmVzc1RhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwQWRkcmVzc1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX1JFR0lTVFJBVElPTl9TRVQKIGlwQWRkcmVzc1RhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcEFkZHJlc3NUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGlwQWRkcmVzc1RhYmxlX3JlZ2lzdHJhdGlvbiAqIG5ld3JlZykKIHsKQEAgLTEwMCwxMiArMTE4LDE1IEBACiAgICAgaXBBZGRyZXNzVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOwogICAgIHJldHVybiBvbGQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUEFERFJFU1NUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpcEFkZHJlc3NUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQogewogICAgIHJldHVybiBDT05UQUlORVJfU0laRShpcEFkZHJlc3NUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQQUREUkVTU1RBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIHVfaW50CiBpcEFkZHJlc3NUYWJsZV9kaXJ0eV9nZXQodm9pZCkKQEAgLTEyOSw3ICsxNTAsNyBAQAogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBBZGRyZXNzVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBBZGRyZXNzVGFibGVfb2JqZWN0X2xvb2t1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQWRkcmVzc1RhYmxlX2dldF92YWx1ZXM7Ci0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwQWRkcmVzc1RhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcEFkZHJlc3NUYWJsZV91bmRvX3NldHVwOwogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBBZGRyZXNzVGFibGVfc2V0X3ZhbHVlczsKQEAgLTE0NCw3ICsxNjUsNyBAQAogICAgICAgICAgICAgICAgIF9pcEFkZHJlc3NUYWJsZV91bmRvX2NvbHVtbihpcEFkZHJlc3NUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAogICAgICAgICAgICAgICAgIF9pcEFkZHJlc3NUYWJsZV9jaGVja19pbmRleGVzKGlwQWRkcmVzc1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKQEAgLTIyMiw3ICsyNDMsNyBAQAogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0ID0gX21mZF9pcEFkZHJlc3NUYWJsZV9wb3N0X3JlcXVlc3Q7CiAKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgLyoKICAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKICAgICAgKi8KQEAgLTI0Niw3ICsyNjcsNyBAQAogICAgICAqLwogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzID0KICAgICAgICAgX21mZF9pcEFkZHJlc3NUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0yODIsNyArMzAzLDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTMwNSw3ICszMjYsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTA2MSw3ICsxMDgyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcEFkZHJlc3NUYWJsZV9jaGVja19pbmRleGVzICovCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTE4OTMsNyArMTkxNCw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcEFkZHJlc3NUYWJsZV9pcnJldmVyc2libGVfY29tbWl0ICovCi0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKQEAgLTIwNDIsNiArMjA2Myw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcEFkZHJlc3NUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpcEFkZHJlc3NUYWJsZV9yb3dyZXFfY3R4ICoKIGlwQWRkcmVzc1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcEFkZHJlc3NUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQogewpAQCAtMjA2NywzICsyMDg5LDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBBRERSRVNTVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IGIzNTRjM2QuLjdkN2RjZmUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC04LDYgKzgsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMTksNiArMjAsOCBAQAogCiAjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2xpZm8pCisKIC8qKiBAaW5ncm91cCBpbnRlcmZhY2UKICAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQogICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuYwppbmRleCA1MmNhNDRmLi40MGFkNzJiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxMCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC0yMjcsNyArMjMyLDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICAvKiBYWFggLSBhcmUgdGhlc2UgYWN0dWFsbHkgbmVjZXNzYXJ5PyAqLwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKQEAgLTI1MSw3ICsyNTYsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jCmluZGV4IDNmZDFkMDkuLjU1OWQxYzEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE4IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBJZlN0YXRzVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKworCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NpemUsIGlwSWZTdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fc2V0LCBpcElmU3RhdHNUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgaXBJZlN0YXRzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9nZXQsIGlwSWZTdGF0c1RhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MCwxOSArOTMsMjMgQEAKIHN0YXRpYyB2b2lkICAgIAogX2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBJRlNUQVRTVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2dldCh2b2lkKQogewogICAgIHJldHVybiBpcElmU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBJRlNUQVRTVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBJRlNUQVRTVEFCTEVfUkVHSVNUUkFUSU9OX0dFVAogaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBJRlNUQVRTVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBJRlNUQVRTVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtMTAwLDEyICsxMTcsMTUgQEAKICAgICBpcElmU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBJRlNUQVRTVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogLyoKICAqIGlwSWZTdGF0c1RhYmxlTGFzdENoYW5nZWQsIHdoaWNoIGlzIHRoZSBsYXN0IHRpbWUgdGhhdCBhIHJvdyBpbgpAQCAtMjI3LDYgKzI0NywxMyBAQAogICAgICAqLwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXApCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfT0JKRUNUX0xPT0tVUDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0yMzQsMTEgKzI2MSw2IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X3N5bnRheF9jaGVja3MpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfT0JKRUNUOwogCi0gICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QpCi0gICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUFJFX1JFUVVFU1Q7Ci0gICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQotICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKLQogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXApCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRVUDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NsZWFudXApCkBAIC0yNTQsNiArMjc2LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CkBAIC0yOTUsNyArMzE4LDcgQEAKICAgICAgKi8KICAgICB7CiAgICAgICAgIG9pZCAgICAgbGNfb2lkW10gPSB7IElQSUZTVEFUU1RBQkxFTEFTVENIQU5HRV9PSUQgfTsKLSAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICgiaXBJZlN0YXRzVGFibGVMYXN0Q2hhbmdlZCIsIE5VTEwsCiAgICAgICAgICAgICAgICAgIGxjX29pZCwgT0lEX0xFTkdUSChsY19vaWQpLAogICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCkBAIC0xMzY4LDYgKzEzOTEsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX0VYVEVSTkFMX0FDQ0VTUwogaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCiBpcElmU3RhdHNUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaXBJZlN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKIHsKQEAgLTEzOTMsMyArMTQxNyw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQSUZTVEFUU1RBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwppbmRleCAwOTdjZWJiLi5lMWNhMmNiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMTggQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcFN5c3RlbVN0YXRzVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKworCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplLCBpcFN5c3RlbVN0YXRzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fc2V0LCBpcFN5c3RlbVN0YXRzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpcFN5c3RlbVN0YXRzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0LCBpcFN5c3RlbVN0YXRzVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTgwLDE5ICs5MywyMyBAQAogICAgICAgICAgICAgICAgIF9pcFN5c3RlbVN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFNZU1RFTVNUQVRTVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBTeXN0ZW1TdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFNZU1RFTVNUQVRTVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9HRVQKIGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgogaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gaXBTeXN0ZW1TdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFNZU1RFTVNUQVRTVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCiBpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX3NldChpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3JlZykKQEAgLTEwMiwxMiArMTE5LDE1IEBACiAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lQU1lTVEVNU1RBVFNUQUJMRV9DT05UQUlORVJfU0laRQogaW50CiBpcFN5c3RlbVN0YXRzVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXBTeXN0ZW1TdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX0NPTlRBSU5FUl9TSVpFICovCiAKIC8qCiAgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKQEAgLTIyMCw3ICsyNDAsOCBAQAogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQorICAgIC8qIFhYWCAtIGFyZSB0aGVzZSBhY3R1YWxseSBuZWNlc3Nhcnk/ICovCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0yNDMsNyArMjY0LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTExNzUsNyArMTE5Niw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBTeXN0ZW1TdGF0c1RhYmxlX2dldF92YWx1ZXMgKi8KIAogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIFNFVCBwcm9jZXNzaW5nCkBAIC0xMzM5LDYgKzEzNjAsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFNZU1RFTVNUQVRTVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpcFN5c3RlbVN0YXRzVGFibGVfcm93cmVxX2N0eCAqCiBpcFN5c3RlbVN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlwU3lzdGVtU3RhdHNUYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMTM2NiwzICsxMzg4LDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBTWVNURU1TVEFUU1RBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMKaW5kZXggNzgwMjFhOS4uOTA5NjI2OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMTEsMjcgKzEyLDMzIEBACiAKICNpbmNsdWRlICJpcF9zY2FsYXJzLmgiCiAKLWludAorc3RhdGljIGludAogaGFuZGxlX2lwRm9yd2FyZGluZyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKIAotaW50CitzdGF0aWMgaW50CiBoYW5kbGVfaXBEZWZhdWx0VFRMKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpOworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKIAotaW50CitzdGF0aWMgaW50CiBoYW5kbGVfaXB2NklwRm9yd2FyZGluZyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKIAotaW50IGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWU7CitzdGF0aWMgaW50CitoYW5kbGVfaXB2NklwRGVmYXVsdEhvcExpbWl0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpOwogCi1pbnQKK3N0YXRpYyBpbnQgaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZTsKKworc3RhdGljIGludAogaGFuZGxlX2lwQWRkcmVzc1NwaW5Mb2NrKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKQEAgLTQyLDI2ICs0OSwyNCBAQAogaW5pdF9pcF9zY2FsYXJzKHZvaWQpCiB7CiAgICAgc3RhdGljIG9pZCAJICAgIGlwRm9yd2FyZGluZ19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNCwgMSB9OwotICAgIHN0YXRpYyBvaWQgCSAgICBpcERlZmF1bHRUVExfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDIsIDAgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgaXBSZWFzbVRpbWVvdXRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDEzLCAwIH07CisgICAgc3RhdGljIG9pZCAJICAgIGlwRGVmYXVsdFRUTF9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNCwgMiB9OwogICAgIHN0YXRpYyBvaWQgICAgICBpcHY2SXBGb3J3YXJkaW5nX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAyNSB9OwotICAgIHN0YXRpYyBvaWQgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfb2lkW10gPQotICAgICAgICB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDI2LCAwIH07CisgICAgc3RhdGljIG9pZCAgICAgIGlwdjZJcERlZmF1bHRIb3BMaW1pdF9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNCwgMjYgfTsKICAgICBzdGF0aWMgb2lkICAgICAgaXBBZGRyZXNzU3BpbkxvY2tfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDMzIH07CiAKICAgICBERUJVR01TR1RMKCgiaXBfc2NhbGFyIiwgIkluaXRpYWxpemluZ1xuIikpOwogCi0gICAgbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZQotICAgICAgICAoImlwUmVhc21UaW1lb3V0IiwKLSAgICAgICAgIGlwUmVhc21UaW1lb3V0X29pZCwgT0lEX0xFTkdUSChpcFJlYXNtVGltZW91dF9vaWQpLAotICAgICAgICAgIi9wcm9jL3N5cy9uZXQvaXB2NC9pcGZyYWdfdGltZSIsIEFTTl9JTlRFR0VSLAotICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksIE5VTEwsIE5VTEwpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcEZvcndhcmRpbmciLCBoYW5kbGVfaXBGb3J3YXJkaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBGb3J3YXJkaW5nX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoaXBGb3J3YXJkaW5nX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXBEZWZhdWx0VFRMIiwgaGFuZGxlX2lwRGVmYXVsdFRUTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFRUTF9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKGlwRGVmYXVsdFRUTF9vaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSk7CiAKICAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXB2NklwRm9yd2FyZGluZyIsIGhhbmRsZV9pcHY2SXBGb3J3YXJkaW5nLApAQCAtNzAsNiArNzUsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSk7CiAKICAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXB2NklwRGVmYXVsdEhvcExpbWl0IiwgaGFuZGxlX2lwdjZJcERlZmF1bHRIb3BMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NklwRGVmYXVsdEhvcExpbWl0X29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChpcHY2SXBEZWZhdWx0SG9wTGltaXRfb2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSk7CisKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXBBZGRyZXNzU3BpbkxvY2siLCBoYW5kbGVfaXBBZGRyZXNzU3BpbkxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1NwaW5Mb2NrX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChpcEFkZHJlc3NTcGluTG9ja19vaWQpLApAQCAtNzgsMjEgKzg5LDkgQEAKICAgICAvKiBJbml0aWFsaXplIHNwaW4gbG9jayB3aXRoIHJhbmRvbSB2YWx1ZSAqLwogICAgIGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWUgPSAoaW50KSByYW5kb20oKTsKIAotICAgIG5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2UKLSAgICAgICAgKCJpcHY2SXBEZWZhdWx0SG9wTGltaXQiLAotICAgICAgICAgaXB2NklwRGVmYXVsdEhvcExpbWl0X29pZCwgT0lEX0xFTkdUSChpcHY2SXBEZWZhdWx0SG9wTGltaXRfb2lkKSwKLSAgICAgICAgICIvcHJvYy9zeXMvbmV0L2lwdjYvY29uZi9kZWZhdWx0L2hvcF9saW1pdCIsIEFTTl9JTlRFR0VSLAotICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBOVUxMLCBOVUxMKTsKLQotICAgICBuZXRzbm1wX3JlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlCi0gICAgICAgICgiaXBEZWZhdWx0VFRMIiwKLSAgICAgICAgIGlwRGVmYXVsdFRUTF9vaWQsIE9JRF9MRU5HVEgoaXBEZWZhdWx0VFRMX29pZCksCi0gICAgICAgICAiL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2RlZmF1bHRfdHRsIiwgQVNOX0lOVEVHRVIsCi0gICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsIE5VTEwsIE5VTEwpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiB9CiAKLWludAorc3RhdGljIGludAogaGFuZGxlX2lwRm9yd2FyZGluZyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICpyZXFpbmZvLApAQCAtMTIyLDYgKzEyMSw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogU0VUIFJFUVVFU1QKICAgICAgICAgICoKQEAgLTE3OSw2ICsxNzksNyBAQAogICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9VTkRPRkFJTEVEKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yICovCkBAIC0xOTAsNyArMTkxLDEwNiBAQAogfQogCiAKLWludAorc3RhdGljIGludAoraGFuZGxlX2lwRGVmYXVsdFRUTChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAgICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICByYzsKKyAgICB1X2xvbmcgICB2YWx1ZTsKKworICAgIC8qIFdlIGFyZSBuZXZlciBjYWxsZWQgZm9yIGEgR0VUTkVYVCBpZiBpdCdzIHJlZ2lzdGVyZWQgYXMgYQorICAgICAgICJpbnN0YW5jZSIsIGFzIGl0J3MgIm1hZ2ljYWxseSIgaGFuZGxlZCBmb3IgdXMuICAqLworCisgICAgLyogYSBpbnN0YW5jZSBoYW5kbGVyIGFsc28gb25seSBoYW5kcyB1cyBvbmUgcmVxdWVzdCBhdCBhIHRpbWUsIHNvCisgICAgICAgd2UgZG9uJ3QgbmVlZCB0byBsb29wIG92ZXIgYSBsaXN0IG9mIHJlcXVlc3RzOyB3ZSdsbCBvbmx5IGdldCBvbmUuICovCisKKyAgICBzd2l0Y2gocmVxaW5mby0+bW9kZSkgeworCisgICAgICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgICAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9nZXQoJnZhbHVlKTsKKyAgICAgICAgICAgIGlmIChyYyAhPSAwKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hJTlNUQU5DRSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKKyAgICAgICAgLyoKKyAgICAgICAgICogU0VUIFJFUVVFU1QKKyAgICAgICAgICoKKyAgICAgICAgICogbXVsdGlwbGUgc3RhdGVzIGluIHRoZSB0cmFuc2FjdGlvbi4gIFNlZToKKyAgICAgICAgICogaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwtNS90b29sa2l0L21pYl9tb2R1bGUvc2V0LWFjdGlvbnMuanBnCisgICAgICAgICAqLworICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBzdG9yZSBvbGQgaW5mbyBmb3IgdW5kbyBsYXRlcgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9nZXQoJnZhbHVlKTsKKyAgICAgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfTk9DUkVBVElPTik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHVfbG9uZyAqdmFsdWVfc2F2ZTsKKyAgICAgICAgICAgICAgICB2YWx1ZV9zYXZlID0gbmV0c25tcF9tZW1kdXAoJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKKyAgICAgICAgICAgICAgICBpZiAoIE5VTEwgPT0gdmFsdWVfc2F2ZSApCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwdHRsIiwgdmFsdWVfc2F2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSkpOworCSAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisgICAgICAgICAgICAvKiBYWFg6IGZyZWUgcmVzb3VyY2VzIGFsbG9jYXRlZCBpbiBSRVNFUlZFMSBhbmQvb3IKKyAgICAgICAgICAgICAgIFJFU0VSVkUyLiAgU29tZXRoaW5nIGZhaWxlZCBzb21ld2hlcmUsIGFuZCB0aGUgc3RhdGVzCisgICAgICAgICAgICAgICBiZWxvdyB3b24ndCBiZSBjYWxsZWQuICovCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKKyAgICAgICAgICAgIC8qIFhYWDogcGVyZm9ybSB0aGUgdmFsdWUgY2hhbmdlIGhlcmUgKi8KKyAgICAgICAgICAgIHZhbHVlID0gICoocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpOworICAgICAgICAgICAgcmMgPSBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcERlZmF1bHRUVExfc2V0KHZhbHVlKTsKKyAgICAgICAgICAgIGlmICggMCAhPSByYyApIHsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCByYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyAgICAgICAgICAgICB2YWx1ZSA9CisgICAgICAgICAgICAgICAgICooKHVfbG9uZyAqKSBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcHR0bCIpKTsKKyAgICAgICAgICAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9zZXQodmFsdWUpOworICAgICAgICAgICAgIGlmICggMCAhPSByYyApIHsKKyAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfVU5ET0ZBSUxFRCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogd2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBzbyB0aGlzIGlzIGEgcmVhbGx5IGJhZCBlcnJvciAqLworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVua25vd24gbW9kZSAoJWQpIGluIGhhbmRsZV9pcERlZmF1bHRUVExcbiIsIHJlcWluZm8tPm1vZGUgKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKKworc3RhdGljIGludAogaGFuZGxlX2lwdjZJcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKQEAgLTIyMyw2ICszMjMsNyBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBTRVQgUkVRVUVTVAogICAgICAgICAgKgpAQCAtMjUyLDcgKzM1Myw3IEBACiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlwZnciLCB2YWx1ZV9zYXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXA2ZnciLCB2YWx1ZV9zYXZlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI3NSwxMiArMzc2LDEzIEBACiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICB2YWx1ZSA9CiAgICAgICAgICAgICAqKCh1X2xvbmcgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlwZnciKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlwNmZ3IikpOwogICAgICAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcEZvcndhcmRpbmdfc2V0KHZhbHVlKTsKICAgICAgICAgaWYgKCAwICE9IHJjICkgewogICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfVU5ET0ZBSUxFRCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgLyoKQEAgLTI5NCw3ICszOTYsOCBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCi1pbnQKKworc3RhdGljIGludAogaGFuZGxlX2lwQWRkcmVzc1NwaW5Mb2NrKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICAgKnJlcWluZm8sCkBAIC0zMTYsNiArNDE5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSkpOwogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFNFVCBSRVFVRVNUCiAgICAgICAgICAqCkBAIC0zNTEsNiArNDU1LDcgQEAKIAogICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CiAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yICovCkBAIC0zNjAsMyArNDY1LDEyMyBAQAogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisKKworc3RhdGljIGludAoraGFuZGxlX2lwdjZJcERlZmF1bHRIb3BMaW1pdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIHVfbG9uZyAgICAgICAgICB2YWx1ZTsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisgICAgLyoKKyAgICAgKiBXZSBhcmUgbmV2ZXIgY2FsbGVkIGZvciBhIEdFVE5FWFQgaWYgaXQncyByZWdpc3RlcmVkIGFzIGEKKyAgICAgKiAiaW5zdGFuY2UiLCBhcyBpdCdzICJtYWdpY2FsbHkiIGhhbmRsZWQgZm9yIHVzLiAgCisgICAgICovCisKKyAgICAvKgorICAgICAqIGEgaW5zdGFuY2UgaGFuZGxlciBhbHNvIG9ubHkgaGFuZHMgdXMgb25lIHJlcXVlc3QgYXQgYSB0aW1lLCBzbworICAgICAqIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIGEgbGlzdCBvZiByZXF1ZXN0czsgd2UnbGwgb25seSBnZXQgb25lLiAKKyAgICAgKi8KKworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworCisgICAgY2FzZSBNT0RFX0dFVDoKKworICAgICAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcERlZmF1bHRIb3BMaW1pdF9nZXQoJnZhbHVlKTsKKyAgICAgICAgaWYgKHJjICE9IDApIHsKKyAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hJTlNUQU5DRSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKKyAgICAgICAgfQorCisgICAgICAgIGJyZWFrOworCisjaWZkZWYgTk9UWUVUCisgICAgICAgIC8qCisgICAgICAgICAqIFNFVCBSRVFVRVNUCisgICAgICAgICAqCisgICAgICAgICAqIG11bHRpcGxlIHN0YXRlcyBpbiB0aGUgdHJhbnNhY3Rpb24uICBTZWU6CisgICAgICAgICAqIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvdG9vbGtpdC9taWJfbW9kdWxlL3NldC1hY3Rpb25zLmpwZworICAgICAgICAgKi8KKyAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorICAgICAgICAvKgorICAgICAgICAgKiBvciB5b3UgY291bGQgdXNlIG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZSBpbnN0ZWFkIAorICAgICAgICAgKi8KKyAgICAgICAgcmMgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIpOworICAgICAgICBpZiAocmMgIT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgcmMpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKKyAgICAgICAgLyoKKyAgICAgICAgICogWFhYIG1hbGxvYyAidW5kbyIgc3RvcmFnZSBidWZmZXIgCisgICAgICAgICAqLworICAgICAgICBpZiAoIC8qIFhYWCBpZiBtYWxsb2MsIG9yIHdoYXRldmVyLCBmYWlsZWQ6ICovICkgeworICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisgICAgICAgIC8qCisgICAgICAgICAqIFhYWDogZnJlZSByZXNvdXJjZXMgYWxsb2NhdGVkIGluIFJFU0VSVkUxIGFuZC9vcgorICAgICAgICAgKiBSRVNFUlZFMi4gIFNvbWV0aGluZyBmYWlsZWQgc29tZXdoZXJlLCBhbmQgdGhlIHN0YXRlcworICAgICAgICAgKiBiZWxvdyB3b24ndCBiZSBjYWxsZWQuIAorICAgICAgICAgKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKKyAgICAgICAgLyoKKyAgICAgICAgICogWFhYOiBwZXJmb3JtIHRoZSB2YWx1ZSBjaGFuZ2UgaGVyZSAKKyAgICAgICAgICovCisgICAgICAgIGlmICggLyogWFhYOiBlcnJvcj8gKi8gKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCAvKiBzb21lIGVycm9yICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKKyAgICAgICAgLyoKKyAgICAgICAgICogWFhYOiBkZWxldGUgdGVtcG9yYXJ5IHN0b3JhZ2UgCisgICAgICAgICAqLworICAgICAgICBpZiAoIC8qIFhYWDogZXJyb3I/ICovICkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHRyeSBfcmVhbGx5X3JlYWxseV8gaGFyZCB0byBuZXZlciBnZXQgdG8gdGhpcyBwb2ludCAKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfQ09NTUlURkFJTEVEKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyAgICAgICAgLyoKKyAgICAgICAgICogWFhYOiBVTkRPIGFuZCByZXR1cm4gdG8gcHJldmlvdXMgdmFsdWUgZm9yIHRoZSBvYmplY3QgCisgICAgICAgICAqLworICAgICAgICBpZiAoIC8qIFhYWDogZXJyb3I/ICovICkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHRyeSBfcmVhbGx5X3JlYWxseV8gaGFyZCB0byBuZXZlciBnZXQgdG8gdGhpcyBwb2ludCAKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfVU5ET0ZBSUxFRCk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKworICAgIGRlZmF1bHQ6CisgICAgICAgIC8qCisgICAgICAgICAqIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgc28gdGhpcyBpcyBhIHJlYWxseSBiYWQgZXJyb3IgCisgICAgICAgICAqLworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAidW5rbm93biBtb2RlICglZCkgaW4gaGFuZGxlX2lwdjZJcERlZmF1bHRIb3BMaW1pdFxuIiwKKyAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGYxZTc4NDQuLmE4NTFhMzAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00OCw2ICs0OSwxMCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC0zNDcsNyArMzUyLDcgQEAKICAgICAgKi8KICAgICB7CiAgICAgICAgIG9pZCAgICAgICAgICAgICBsY19vaWRbXSA9IHsgSVBWNElOVEVSRkFDRVRBQkxFTEFTVENIQU5HRV9PSUQgfTsKLSAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXB2NFRhYmxlTGFzdENoYW5nZWQiLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsY19vaWQsIE9JRF9MRU5HVEgobGNfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfc3ViYWdlbnQuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW50LmMKaW5kZXggM2M4NWE1NC4uMzViMmU5NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfc3ViYWdlbnQuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9zdWJhZ2VudC5jCkBAIC02LDkgKzYsMTQgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGFnZW50eF9lbmFibGVfc3ViYWdlbnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShhZ2VudF9jaGVja19hbmRfcHJvY2VzcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGVuYWJsZV9zdGRlcnJsb2cpCisKIC8qCiAgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAogICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGFhOGZjM2YuLmNiZDUzM2MgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00OCw2ICs0OSwxMCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC0zNDUsNyArMzUwLDcgQEAKICAgICAgKi8KICAgICB7CiAgICAgICAgIG9pZCAgICAgICAgICAgICBsY19vaWRbXSA9IHsgSVBWNklOVEVSRkFDRVRBQkxFTEFTVENIQU5HRV9PSUQgfTsKLSAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXB2NlRhYmxlTGFzdENoYW5nZWQiLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsY19vaWQsIE9JRF9MRU5HVEgobGNfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGE2ZTk1MmUuLmVmMjA4OGIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE5IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2l6ZSwgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2dldCwgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTg0LDE5ICs5OCwyMyBAQAogc3RhdGljIHZvaWQKIF9jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqbWFnaWMpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9DT05UQUlORVJfR0VUCiBuZXRzbm1wX2NvbnRhaW5lciAqCiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9DT05UQUlORVJfR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKgogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQogewogICAgIHJldHVybiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9SRUdJU1RSQVRJT05fU0VUCiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKgogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX3NldAogICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCkBAIC0xMDYsMTIgKzEyNCwxNSBAQAogICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfUkVHSVNUUkFUSU9OX1NFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNvbnRhaW5lcik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiAvKgogICogbWZkIG11bHRpcGxleGVyIG1vZGVzCkBAIC0yMjQsNiArMjQ1LDEzIEBACiAgICAgICovCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X2xvb2t1cCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9PQkpFQ1RfTE9PS1VQOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUFJFX1JFUVVFU1Q7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTIzMSwxMSArMjU5LDYgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3Rfc3ludGF4X2NoZWNrcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DSEVDS19PQkpFQ1Q7CiAKLSAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCkKLSAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QUkVfUkVRVUVTVDsKLSAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCi0gICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwotCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19zZXR1cCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX1NFVFVQOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY2xlYW51cCkKQEAgLTI1MSw2ICsyNzQsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTEwNTcsNiArMTA4MSw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfRVhURVJOQUxfQUNDRVNTCiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQpAQCAtMTA4NCw2ICsxMTA5LDcgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCiAKIHN0YXRpYyBpbnQKIF9jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqdm1hZ2ljKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jIGIvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jCmluZGV4IGNhM2M4MDkuLjMzMWVlNmQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYworKysgYi9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMKQEAgLTExMiw2ICsxMTIsOCBAQAogICAgIHtNSUJfSVA2LCAyMCAqIHNpemVvZihtaWIyX2lwdjZJZlN0YXRzRW50cnlfdCksICh2b2lkICopLTEsIDAsIDMwLCAwLCAwfSwKICNlbmRpZgogICAgIHtNSUJfSVA2X0FERFIsIDIwICogc2l6ZW9mKG1pYjJfaXB2NkFkZHJFbnRyeV90KSwgKHZvaWQgKiktMSwgMCwgMzAsIDAsIDB9LAorICAgIHtNSUJfSVA2X1JPVVRFLCAyMDAgKiBzaXplb2YobWliMl9pcHY2QWRkckVudHJ5X3QpLCAodm9pZCAqKS0xLCAwLCAzMCwgMCwgMH0sCisgICAge01JQl9JQ01QNiwgMjAgKiBzaXplb2YobWliMl9pcHY2SWZJY21wRW50cnlfdCksICh2b2lkICopLTEsIDAsIDMwLCAwLCAwfSwKICAgICB7TUlCX1RDUDZfQ09OTiwgMTAwMCAqIHNpemVvZihtaWIyX3RjcDZDb25uRW50cnlfdCksICh2b2lkICopIC0xLCAwLCAzMCwKICAgICAgMCwgMH0sCiAgICAge01JQl9VRFA2X0VORFBPSU5ULCAxMDAwICogc2l6ZW9mKG1pYjJfdWRwNkVudHJ5X3QpLCAodm9pZCAqKSAtMSwgMCwgMzAsCkBAIC0xNTIsNiArMTU0LDggQEAKICNlbmRpZgogICAgIHtNSUIyX0lQNiwgMH0sCiAgICAge01JQjJfSVA2LCBNSUIyX0lQNl9BRERSfSwKKyAgICB7TUlCMl9JUDYsIE1JQjJfSVA2X1JPVVRFfSwKKyAgICB7TUlCMl9JQ01QNiwgMH0sCiAgICAge01JQjJfVENQNiwgTUlCMl9UQ1A2X0NPTk59LAogICAgIHtNSUIyX1VEUDYsIE1JQjJfVURQNl9FTlRSWX0sCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCBiL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaAppbmRleCAwYmZmY2I5Li5iZjMzN2FlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oCkBAIC03Niw2ICs3Niw4IEBACiAjZW5kaWYKICAgICBNSUJfSVA2LAogICAgIE1JQl9JUDZfQUREUiwKKyAgICBNSUJfSVA2X1JPVVRFLAorICAgIE1JQl9JQ01QNiwKICAgICBNSUJfVENQNl9DT05OLAogICAgIE1JQl9VRFA2X0VORFBPSU5ULAogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkuaAppbmRleCAxYjk0YTU5Li5mMzE1N2ZjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJLmgKQEAgLTI1LDE1ICsyNSwxNiBAQAogCiAvKgogICogdGhlc2UgbmV3IG1vZHVsZSByZS1yZXdyaXRlcyBoYXZlIG9ubHkgYmVlbiBpbXBsZW1lbnRlZCBmb3IKLSAqIGxpbnV4LgorICogTGludXggYW5kICpCU0QuCiAgKi8KLSNpZiBkZWZpbmVkKCBsaW51eCApCisjaWYgZGVmaW5lZChsaW51eCkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYiBpcC1mb3J3YXJkLW1pYiB0Y3AtbWliIHVkcC1taWIpCisjZWxpZiBkZWZpbmVkKGRyYWdvbmZseSkgfHwgZGVmaW5lZChmcmVlYnNkNykgfHwgXAorICAgIGRlZmluZWQobmV0YnNkNSkgfHwgZGVmaW5lZChvcGVuYnNkNCkgfHwgZGVmaW5lZCggZGFyd2luICkKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYiBpcC1mb3J3YXJkLW1pYiB0Y3AtbWliIHVkcC1taWIpCiAjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQogY29uZmlnX3JlcXVpcmUodGNwLW1pYiB1ZHAtbWliKQotI2VsaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChkcmFnb25mbHkpCi1jb25maWdfcmVxdWlyZSh0Y3AtbWliIHVkcC1taWIpCi0jZWxpZiBkZWZpbmVkKG9wZW5ic2Q0KQorI2VsaWYgZGVmaW5lZChmcmVlYnNkNCkKIGNvbmZpZ19yZXF1aXJlKHRjcC1taWIgdWRwLW1pYikKICNlbGlmIGRlZmluZWQobmV0YnNkMSkKIGNvbmZpZ19yZXF1aXJlKHRjcC1taWIgdWRwLW1pYikKQEAgLTQ0LDQgKzQ1LDUgQEAKICAqLwogI2lmIGRlZmluZWQoIHNvbGFyaXMyICkgJiYgZGVmaW5lZCggSEFWRV9NSUIyX0lQSUZTVEFUU0VOVFJZX1QgKQogY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZSBpcC1taWIvaXBBZGRyZXNzVGFibGUpCitjb25maWdfcmVxdWlyZShpcC1mb3J3YXJkLW1pYikKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2F0LmMKaW5kZXggZTk2ODA3NC4uZjU3YmEyYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9hdC5jCkBAIC01MjUsNyArNTI1LDYgQEAKICAqLwogI2RlZmluZSBBUlBfQ0FDSEVfSU5DUiAxMDI0CiBzdGF0aWMgc3RydWN0IGFycHRhYiAqYXQgPSBOVUxMOwotc3RhdGljIGludCAgICAgIGFycHRhYl9jdXJyX21heF9zaXplID0gMDsKIAogI2VuZGlmCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwgKi8KQEAgLTYzMSw4ICs2MzAsMTAgQEAKIAogICAgIGkgPSAwOwogICAgIHdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluKSkgeworICAgICAgICBzdGF0aWMgaW50ICAgICAgYXJwdGFiX2N1cnJfbWF4X3NpemU7CiAgICAgICAgIHVfbG9uZyAgICAgICAgICB0bXBfYTsKICAgICAgICAgdW5zaWduZWQgaW50ICAgIHRtcF9mbGFnczsKKwogICAgICAgICBpZiAoaSA+PSBhcnB0YWJfY3Vycl9tYXhfc2l6ZSkgewogICAgICAgICAgICAgc3RydWN0IGFycHRhYiAgKm5ld3RhYiA9IChzdHJ1Y3QgYXJwdGFiICopCiAgICAgICAgICAgICAgICAgcmVhbGxvYyhhdCwgKHNpemVvZihzdHJ1Y3QgYXJwdGFiKSAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMKaW5kZXggNzYwYjFhNC4uYmU4MDNlZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYwpAQCAtNzEsNiArNzEsOTUgQEAKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCiAKKyNpZmRlZiBocHV4MTEKKyNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQlpbnQKKyNlbmRpZgorCisjaWZkZWYgbGludXgKKyNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRQlzdHJ1Y3QgaWNtcF9taWIKKyNkZWZpbmUgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCisjdW5kZWYgSUNNUFNUQVRfU1lNQk9MCisjZW5kaWYKKworI2lmZGVmIHNvbGFyaXMyCisjZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAorI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCW1pYjJfaWNtcF90CisjaW5jbHVkZSAia2VybmVsX21pYi5oIgorc3RhdGljIGludAorc29sYXJpc19yZWFkX2ljbXBfc3RhdChJQ01QX1NUQVRfU1RSVUNUVVJFICopOworc3RhdGljIGludAorc29sYXJpc19yZWFkX2ljbXBfbXNnX3N0YXQoSUNNUF9TVEFUX1NUUlVDVFVSRSAqLCBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqLCBpbnQgKik7CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorc3RhdGljIGludAorc29sYXJpc19yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqKTsKK3N0YXRpYyBpbnQKK3NvbGFyaXNfcmVhZF9pY21wNl9tc2dfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICosIHN0cnVjdCBpY21wNl9tc2dfbWliICosIGludCAqKTsKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBORVRCU0RfU1RBVFNfVklBX1NZU0NUTAorI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFICAgICBzdHJ1Y3QgaWNtcF9taWIKKyNkZWZpbmUgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCisjdW5kZWYgSUNNUF9OU1RBVFMKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9JUEhMUEFQSV9ICisjaW5jbHVkZSA8aXBobHBhcGkuaD4KKyNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRSBNSUJfSUNNUAorI2VuZGlmCisKKyNpZiAoZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKSAmJiBkZWZpbmVkKElDTVBDVExfU1RBVFMpKQorI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBpY21wX21pYgorI2RlZmluZSBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKKyN1bmRlZiBJQ01QU1RBVF9TWU1CT0wKKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWVNfSUNNUElQU1RBVFNfSAorLyogb3IgI2lmZGVmCQlIQVZFX1NZU19UQ1BJUFNUQVRTX0ggID8/PyAqLworI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBrbmEKKyNkZWZpbmUgVVNFU19UUkFESVRJT05BTF9JQ01QU1RBVAorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChJQ01QX1NUQVRfU1RSVUNUVVJFKQorI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBpY21wc3RhdAorI2RlZmluZSBVU0VTX1RSQURJVElPTkFMX0lDTVBTVEFUCisjZW5kaWYKKworSUNNUF9TVEFUX1NUUlVDVFVSRSBpY21wc3RhdDsKKyNpZiBkZWZpbmVkKHNvbGFyaXMyKSAmJiBkZWZpbmVkKE5FVFNOTVBfRU5BQkxFX0lQVjYpCitzdGF0aWMgc3RydWN0IGljbXA2X21pYiBpY21wNnN0YXQ7CisjZW5kaWYKKworLyogSWYgdGhleSBqdXN0IGFsbCBhZ3JlZWQgLi4uICovCisKKyNpZm5kZWYgSUNNUF9ERVNUX1VOUkVBQ0gKKyNkZWZpbmUgSUNNUF9ERVNUX1VOUkVBQ0ggSUNNUF9VTlJFQUNICisjZW5kaWYKKyNpZm5kZWYgSUNNUF9TT1VSQ0VfUVVFTkNICisjZGVmaW5lIElDTVBfU09VUkNFX1FVRU5DSCBJQ01QX1NPVVJDRVFVRU5DSAorI2VuZGlmCisjaWZuZGVmIElDTVBfVElNRV9FWENFRURFRAorI2RlZmluZSBJQ01QX1RJTUVfRVhDRUVERUQgSUNNUF9USU1YQ0VFRAorI2VuZGlmCisjaWZuZGVmIElDTVBfUEFSQU1FVEVSUFJPQgorI2RlZmluZSBJQ01QX1BBUkFNRVRFUlBST0IgSUNNUF9QQVJBTVBST0IKKyNlbmRpZgorI2lmbmRlZiBJQ01QX1RJTUVTVEFNUAorI2RlZmluZSBJQ01QX1RJTUVTVEFNUCBJQ01QX1RTVEFNUAorI2VuZGlmCisjaWZuZGVmIElDTVBfVElNRVNUQU1QUkVQTFkKKyNkZWZpbmUgSUNNUF9USU1FU1RBTVBSRVBMWSBJQ01QX1RTVEFNUFJFUExZCisjZW5kaWYKKyNpZm5kZWYgSUNNUF9BRERSRVNTCisjZGVmaW5lIElDTVBfQUREUkVTUyBJQ01QX01BU0tSRVEKKyNlbmRpZgorI2lmbmRlZiBJQ01QX0FERFJFU1NSRVBMWQorI2RlZmluZSBJQ01QX0FERFJFU1NSRVBMWSBJQ01QX01BU0tSRVBMWQorI2VuZGlmCisjaWZuZGVmIE1MRF9MSVNURU5FUl9SRURVQ1RJT04KKyNkZWZpbmUgTUxEX0xJU1RFTkVSX1JFRFVDVElPTiBNTERfTElTVEVORVJfRE9ORQorI2VuZGlmCisKIC8qCiAgKiBEZWZpbmUgdGhlIE9JRCBwb2ludGVyIHRvIHRoZSB0b3Agb2YgdGhlIG1pYiB0cmVlIHRoYXQgd2UncmUKICAqIHJlZ2lzdGVyaW5nIHVuZGVybmVhdGggCkBAIC04NCw3ICsxNzMsNyBAQAogZXh0ZXJuIGludCAgICAgIGlwX21vZHVsZV9jb3VudDsKICNlbmRpZgogCi0jaWZkZWYgbGludXgKKyNpZmRlZiBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKIHN0cnVjdCBpY21wX3N0YXRzX3RhYmxlX2VudHJ5IHsKIAl1aW50MzJfdCBpcFZlcjsKICAgICAgICAgdWludDMyX3QgaWNtcFN0YXRzSW5Nc2dzOwpAQCAtMTMwLDU0ICsyMTksNzkgQEAKIGljbXBfc3RhdHNfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdm1hZ2ljKQogewogCi0JLyoKLSAgICAgICAgICogbm90ZSBkb24ndCBib3RoZXIgdXNpbmcgdGhlIHBhc3NlZCBpbiBjYWNoZQotCSAqIGFuZCB2bWFnaWMgcG9pbnRlcnMuICBUaGV5IGFyZSB1c2VsZXNzIGFzIHRoZXkgCi0JICogY3VycmVudGx5IHBvaW50IHRvIHRoZSBpY21wIHN5c3RlbSBzdGF0cyBjYWNoZQkKLQkgKiBzaW5jZSBJIHNlZSBsaXR0bGUgcG9pbnQgaW4gcmVnaXN0ZXJpbmcgYW5vdGhlcgotCSAqIGNhY2hlIGZvciB0aGlzIHRhYmxlLiAgSXRzIG5vdCByZWFsbHkgbmVlZGVkCi0JICovCisgICAgLyoKKyAgICAgKiBub3RlIGRvbid0IGJvdGhlciB1c2luZyB0aGUgcGFzc2VkIGluIGNhY2hlCisgICAgICogYW5kIHZtYWdpYyBwb2ludGVycy4gIFRoZXkgYXJlIHVzZWxlc3MgYXMgdGhleSAKKyAgICAgKiBjdXJyZW50bHkgcG9pbnQgdG8gdGhlIGljbXAgc3lzdGVtIHN0YXRzIGNhY2hlCQorICAgICAqIHNpbmNlIEkgc2VlIGxpdHRsZSBwb2ludCBpbiByZWdpc3RlcmluZyBhbm90aGVyCisgICAgICogY2FjaGUgZm9yIHRoaXMgdGFibGUuICBJdHMgbm90IHJlYWxseSBuZWVkZWQKKyAgICAgKi8KIAotCWludCBpOwotCXN0cnVjdCBpY21wX21pYiB2NGljbXA7Ci0Jc3RydWN0IGljbXA2X21pYiB2NmljbXA7Ci0JZm9yKGk9MDtpPDI7aSsrKSB7Ci0JCXN3aXRjaChpKSB7Ci0JCQljYXNlIDA6Ci0JCQkJbGludXhfcmVhZF9pY21wX3N0YXQoJnY0aWNtcCk7Ci0JCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbk1zZ3MgPSB2NGljbXAuaWNtcEluTXNnczsKLQkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luRXJyb3JzID0gdjRpY21wLmljbXBJbkVycm9yczsKLQkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dE1zZ3MgPSB2NGljbXAuaWNtcE91dE1zZ3M7Ci0JCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRFcnJvcnMgPSB2NGljbXAuaWNtcE91dEVycm9yczsKLQkJCQlicmVhazsKLQkJCWRlZmF1bHQ6Ci0JCQkJbWVtc2V0KCZpY21wX3N0YXRzX3RhYmxlW2ldLDAsCi0JCQkJCXNpemVvZihzdHJ1Y3QgaWNtcF9zdGF0c190YWJsZV9lbnRyeSkpOwotCQkJCWxpbnV4X3JlYWRfaWNtcDZfc3RhdCgmdjZpY21wKTsKLQkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luTXNncyA9IHY2aWNtcC5pY21wNkluTXNnczsKLQkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luRXJyb3JzID0gdjZpY21wLmljbXA2SW5FcnJvcnM7Ci0JCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRNc2dzID0gdjZpY21wLmljbXA2T3V0TXNnczsKLQkJCQlpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dEVycm9ycyA9IHY2aWNtcC5pY21wNk91dERlc3RVbnJlYWNocyArCi0JCQkJCXY2aWNtcC5pY21wNk91dFBrdFRvb0JpZ3MgKyAgdjZpY21wLmljbXA2T3V0VGltZUV4Y2RzICsKLQkJCQkJdjZpY21wLmljbXA2T3V0UGFybVByb2JsZW1zOwotCQkJCWJyZWFrOwotCQl9Ci0JCWljbXBfc3RhdHNfdGFibGVbaV0uaXBWZXI9aSsxOwotCX0KKyAgICBpbnQgaTsKKyAgICBJQ01QX1NUQVRfU1RSVUNUVVJFIHY0aWNtcDsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgc3RydWN0IGljbXA2X21pYiB2NmljbXA7CisjZW5kaWYKKyAgICBmb3IoaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgc3dpdGNoKGkpIHsKKyAgICAgICAgY2FzZSAwOgorI2lmZGVmIGxpbnV4CisgICAgICAgICAgICBsaW51eF9yZWFkX2ljbXBfc3RhdCgmdjRpY21wKTsKKyNlbGlmIGRlZmluZWQoTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwpCisJICAgIG5ldGJzZF9yZWFkX2ljbXBfc3RhdCgmdjRpY21wKTsKKyNlbGlmIChkZWZpbmVkKE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwpICYmIGRlZmluZWQoSUNNUENUTF9TVEFUUykpCisJICAgIHN5c2N0bF9yZWFkX2ljbXBfc3RhdCgmdjRpY21wKTsKKyNlbGlmIGRlZmluZWQoc29sYXJpczIpCisJICAgIHNvbGFyaXNfcmVhZF9pY21wX3N0YXQoJnY0aWNtcCk7CisjZWxzZQorCSAgICByZXR1cm4gLTE7CisjZW5kaWYKKyAgICAgICAgICAgIGljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5Nc2dzID0gdjRpY21wLmljbXBJbk1zZ3M7CisgICAgICAgICAgICBpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luRXJyb3JzID0gdjRpY21wLmljbXBJbkVycm9yczsKKyAgICAgICAgICAgIGljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0TXNncyA9IHY0aWNtcC5pY21wT3V0TXNnczsKKyAgICAgICAgICAgIGljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0RXJyb3JzID0gdjRpY21wLmljbXBPdXRFcnJvcnM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxOgorI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgICAgIG1lbXNldCgmaWNtcF9zdGF0c190YWJsZVtpXSwwLAorICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGljbXBfc3RhdHNfdGFibGVfZW50cnkpKTsKKyNpZmRlZiBsaW51eAorICAgICAgICAgICAgbGludXhfcmVhZF9pY21wNl9zdGF0KCZ2NmljbXApOworI2VsaWYgZGVmaW5lZChORVRCU0RfU1RBVFNfVklBX1NZU0NUTCkKKwkgICAgbmV0YnNkX3JlYWRfaWNtcDZfc3RhdCgmdjZpY21wKTsKKyNlbGlmIChkZWZpbmVkKE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwpICYmIGRlZmluZWQoSUNNUENUTF9TVEFUUykpCisJICAgIHN5c2N0bF9yZWFkX2ljbXA2X3N0YXQoJnY2aWNtcCk7CisjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQorCSAgICBzb2xhcmlzX3JlYWRfaWNtcDZfc3RhdCgmdjZpY21wKTsKKyNlbHNlCisJICAgIHJldHVybiAtMTsKKyNlbmRpZgorICAgICAgICAgICAgaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbk1zZ3MgPSB2NmljbXAuaWNtcDZJbk1zZ3M7CisgICAgICAgICAgICBpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c0luRXJyb3JzID0gdjZpY21wLmljbXA2SW5FcnJvcnM7CisgICAgICAgICAgICBpY21wX3N0YXRzX3RhYmxlW2ldLmljbXBTdGF0c091dE1zZ3MgPSB2NmljbXAuaWNtcDZPdXRNc2dzOworICAgICAgICAgICAgaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRFcnJvcnMgPQorICAgICAgICAgICAgICAgICAgICAgICAgdjZpY21wLmljbXA2T3V0RGVzdFVucmVhY2hzICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHY2aWNtcC5pY21wNk91dFBrdFRvb0JpZ3MgKyAgdjZpY21wLmljbXA2T3V0VGltZUV4Y2RzICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHY2aWNtcC5pY21wNk91dFBhcm1Qcm9ibGVtczsKKyNlbmRpZgkvKiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpY21wX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gaSArIDE7CisgICAgfQogCi0JcmV0dXJuIDA7CisgICAgcmV0dXJuIDA7CiB9CiAKIGludAogaWNtcF9tc2dfc3RhdHNfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdm1hZ2ljKQogewotICAgIHN0cnVjdCBpY21wX21pYiB2NGljbXA7CisgICAgSUNNUF9TVEFUX1NUUlVDVFVSRSB2NGljbXA7CiAgICAgc3RydWN0IGljbXA0X21zZ19taWIgdjRpY21wbXNnOwogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKICAgICBzdHJ1Y3QgaWNtcDZfbWliIHY2aWNtcDsKICAgICBzdHJ1Y3QgaWNtcDZfbXNnX21pYiB2NmljbXBtc2c7CiAjZW5kaWYKLSAgICBpbnQgaSwgaiwgaywgZmxhZywgaW5jOworICAgIGludCBpLCBrLCBmbGFnLCBpbmM7CiAKICAgICBtZW1zZXQoJmljbXBfbXNnX3N0YXRzX3RhYmxlLCAwLCBzaXplb2YoaWNtcF9tc2dfc3RhdHNfdGFibGUpKTsKIApAQCAtMTg1LDcgKzI5OSwxNyBAQAogICAgIGZsYWcgPSAwOwogICAgIGsgPSAwOwogICAgIGluYyA9IDA7CisjaWZkZWYgbGludXgKICAgICBsaW51eF9yZWFkX2ljbXBfbXNnX3N0YXQoJnY0aWNtcCwgJnY0aWNtcG1zZywgJmZsYWcpOworI2VsaWYgZGVmaW5lZChORVRCU0RfU1RBVFNfVklBX1NZU0NUTCkKKyAgICBuZXRic2RfcmVhZF9pY21wX21zZ19zdGF0KCZ2NGljbXAsICZ2NGljbXBtc2csICZmbGFnKTsKKyNlbGlmIChkZWZpbmVkKE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwpICYmIGRlZmluZWQoSUNNUENUTF9TVEFUUykpCisgICAgc3lzY3RsX3JlYWRfaWNtcF9tc2dfc3RhdCgmdjRpY21wLCAmdjRpY21wbXNnLCAmZmxhZyk7CisjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQorICAgIHNvbGFyaXNfcmVhZF9pY21wX21zZ19zdGF0KCZ2NGljbXAsICZ2NGljbXBtc2csICZmbGFnKTsKKyNlbHNlCisgICAgcmV0dXJuIC0xOworI2VuZGlmCiAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgd2hpbGUgKDI1NSA+PSBrKSB7CiAgICAgICAgICAgICBpZiAodjRpY21wbXNnLnZhbHNba10uSW5UeXBlKSB7CkBAIC0yMTIsNzAgKzMzNiw5NiBAQAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9FQ0hPUkVQTFk7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5FY2hvUmVwczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0RWNob1JlcHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfREVTVF9VTlJFQUNIOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluRGVzdFVucmVhY2hzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXREZXN0VW5yZWFjaHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfU09VUkNFX1FVRU5DSDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblNyY1F1ZW5jaHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dFNyY1F1ZW5jaHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfUkVESVJFQ1Q7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5SZWRpcmVjdHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dFJlZGlyZWN0czsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9FQ0hPOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluRWNob3M7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEVjaG9zOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1RJTUVfRVhDRUVERUQ7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5UaW1lRXhjZHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dFRpbWVFeGNkczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9QQVJBTUVURVJQUk9COwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluUGFybVByb2JzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRQYXJtUHJvYnM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfVElNRVNUQU1QOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluVGltZXN0YW1wczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0VGltZXN0YW1wczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9USU1FU1RBTVBSRVBMWTsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblRpbWVzdGFtcFJlcHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dFRpbWVzdGFtcFJlcHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAxOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfQUREUkVTUzsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJbkFkZHJNYXNrczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0QWRkck1hc2tzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0FERFJFU1NSRVBMWTsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJbkFkZHJNYXNrUmVwczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0QWRkck1hc2tSZXBzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMTsKICAgICAgICAgaSsrOwotCi0gICAgICAgIC8qIHNldCB0aGUgSVAgdmVyc2lvbiBhbmQgZGVmYXVsdCBmbGFncyAqLwotICAgICAgICBmb3IgKGogPSAwOyBqIDwgSUNNUF9NU0dfU1RBVFNfSVBWNF9DT1VOVDsgaisrKSB7Ci0gICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtqXS5pcFZlciA9IDE7Ci0gICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtqXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7Ci0gICAgICAgIH0KICAgICB9CiAKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CiAgICAgZmxhZyA9IDA7CiAgICAgayA9IDA7CiAgICAgaW5jID0gMDsKKyNpZmRlZiBsaW51eAogICAgIGxpbnV4X3JlYWRfaWNtcDZfbXNnX3N0YXQoJnY2aWNtcCwgJnY2aWNtcG1zZywgJmZsYWcpOworI2VsaWYgZGVmaW5lZChORVRCU0RfU1RBVFNfVklBX1NZU0NUTCkKKyAgICBuZXRic2RfcmVhZF9pY21wNl9tc2dfc3RhdCgmdjZpY21wLCAmdjZpY21wbXNnLCAmZmxhZyk7CisjZWxpZiAoZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKSAmJiBkZWZpbmVkKElDTVBDVExfU1RBVFMpKQorICAgIHN5c2N0bF9yZWFkX2ljbXA2X21zZ19zdGF0KCZ2NmljbXAsICZ2NmljbXBtc2csICZmbGFnKTsKKyNlbGlmIGRlZmluZWQoc29sYXJpczIpCisgICAgc29sYXJpc19yZWFkX2ljbXA2X21zZ19zdGF0KCZ2NmljbXAsICZ2NmljbXBtc2csICZmbGFnKTsKKyNlbHNlCisgICAgcmV0dXJuIC0xOworI2VuZGlmCiAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgd2hpbGUgKDI1NSA+PSBrKSB7CiAgICAgICAgICAgICBpZiAodjZpY21wbXNnLnZhbHNba10uSW5UeXBlKSB7CkBAIC0zMDIsODAgKzQ1MiwxMDEgQEAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X0RTVF9VTlJFQUNIOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkRlc3RVbnJlYWNoczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dERlc3RVbnJlYWNoczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfUEFDS0VUX1RPT19CSUc7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUGt0VG9vQmlnczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dFBrdFRvb0JpZ3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X1RJTUVfRVhDRUVERUQ7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluVGltZUV4Y2RzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0VGltZUV4Y2RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QNl9QQVJBTV9QUk9COwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblBhcm1Qcm9ibGVtczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dFBhcm1Qcm9ibGVtczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfRUNIT19SRVFVRVNUOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkVjaG9zOwotICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gMDsKLSAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU47CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRFY2hvczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfRUNIT19SRVBMWTsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5FY2hvUmVwbGllczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dEVjaG9SZXBsaWVzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICAgICAgaSsrOwogCiAjaWZkZWYgTUxEX0xJU1RFTkVSX1FVRVJZCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBNTERfTElTVEVORVJfUVVFUlk7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluR3JvdXBNZW1iUXVlcmllczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IDA7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU47CiAgICAgICAgIGkrKzsKKwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTUxEX0xJU1RFTkVSX1JFUE9SVDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5Hcm91cE1lbWJSZXNwb25zZXM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRHcm91cE1lbWJSZXNwb25zZXM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7CiAKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IE1MRF9MSVNURU5FUl9SRURVQ1RJT047CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluR3JvdXBNZW1iUmVkdWN0aW9uczsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOwogICAgICAgICBpKys7Ci0jZW5kaWYKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfUk9VVEVSX1NPTElDSVQ7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUm91dGVyU29saWNpdHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRSb3V0ZXJTb2xpY2l0czsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfUk9VVEVSX0FEVkVSVDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5Sb3V0ZXJBZHZlcnRpc2VtZW50czsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IDA7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU47CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfTkVJR0hCT1JfU09MSUNJVDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5OZWlnaGJvclNvbGljaXRzOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0TmVpZ2hib3JTb2xpY2l0czsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CiAgICAgICAgIGkrKzsKIAogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfTkVJR0hCT1JfQURWRVJUOwogICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbk5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXROZWlnaGJvckFkdmVydGlzZW1lbnRzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDI7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKICAgICAgICAgaSsrOwogCiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9SRURJUkVDVDsKICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5SZWRpcmVjdHM7CiAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRSZWRpcmVjdHM7Ci0KLSAgICAgICAgZm9yIChqID0gMDsgaiA8IElDTVBfTVNHX1NUQVRTX0lQVjZfQ09VTlQ7IGorKykgewotICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbSUNNUF9NU0dfU1RBVFNfSVBWNF9DT1VOVCArIGpdLmlwVmVyID0gMjsKLSAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW0lDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgKyBqXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7Ci0gICAgICAgIH0KKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaXBWZXIgPSAyOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IElDTVBfTVNHX1NUQVRTX0hBU19JTiB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisjZW5kaWYKICAgICB9CiAjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLwogICAgIHJldHVybiAwOwpAQCAtMzg3LDI1ICs1NTgsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmRhdGEpCiB7Ci0JaW50IGkgPSAoaW50KShpbnRwdHJfdCkoKmxvb3BfY29udGV4dCk7Ci0JbmV0c25tcF92YXJpYWJsZV9saXN0ICppZHggPSBpbmRleDsKKyAgICBpbnQgaSA9IChpbnQpKGludHB0cl90KSgqbG9vcF9jb250ZXh0KTsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmlkeCA9IGluZGV4OwogCi0JaWYoaSA+IDEpCi0JCXJldHVybiBOVUxMOworICAgIGlmKGkgPiAxKQorICAgICAgICByZXR1cm4gTlVMTDsKIAogCi0JLyoKLQkgKnNldCBJUCB2ZXJzaW9uCi0JICovCi0Jc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKGlkeCwgQVNOX0lOVEVHRVIsICh1X2NoYXIgKikmaWNtcF9zdGF0c190YWJsZVtpXS5pcFZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7Ci0JaWR4ID0gaWR4LT5uZXh0X3ZhcmlhYmxlOworICAgIC8qCisgICAgICpzZXQgSVAgdmVyc2lvbgorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShpZHgsIEFTTl9JTlRFR0VSLCAodV9jaGFyICopJmljbXBfc3RhdHNfdGFibGVbaV0uaXBWZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgaWR4ID0gaWR4LT5uZXh0X3ZhcmlhYmxlOwogCi0JKmRhdGFfY29udGV4dCA9ICZpY21wX3N0YXRzX3RhYmxlW2ldOworICAgICpkYXRhX2NvbnRleHQgPSAmaWNtcF9zdGF0c190YWJsZVtpXTsKIAotCSpsb29wX2NvbnRleHQgPSAodm9pZCAqKShpbnRwdHJfdCkoKytpKTsKLQkKLQlyZXR1cm4gaW5kZXg7CisgICAgKmxvb3BfY29udGV4dCA9ICh2b2lkICopKGludHB0cl90KSgrK2kpOworICAgIAorICAgIHJldHVybiBpbmRleDsKIH0KIAogCkBAIC00MTUsMTAgKzU4Niw5IEBACiAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmluZGV4LAogICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICpkYXRhKQogewotCi0gICAgICAgICpsb29wX2NvbnRleHQgPSBOVUxMOwotICAgICAgICAqZGF0YV9jb250ZXh0ID0gTlVMTDsKLSAgICAgICAgcmV0dXJuIGljbXBfc3RhdHNfbmV4dF9lbnRyeShsb29wX2NvbnRleHQsIGRhdGFfY29udGV4dCwgaW5kZXgsIGRhdGEpOworICAgICpsb29wX2NvbnRleHQgPSBOVUxMOworICAgICpkYXRhX2NvbnRleHQgPSBOVUxMOworICAgIHJldHVybiBpY21wX3N0YXRzX25leHRfZW50cnkobG9vcF9jb250ZXh0LCBkYXRhX2NvbnRleHQsIGluZGV4LCBkYXRhKTsKIH0KIAogbmV0c25tcF92YXJpYWJsZV9saXN0ICoKQEAgLTQ2NiwxMyArNjM2LDEzIEBACiB2b2lkCiBpbml0X2ljbXAodm9pZCkKIHsKLSNpZmRlZiBsaW51eAotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnRhYmxlX3JlZ2luZm8gPSBOVUxMOworI2lmZGVmIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm1zZ19zdGF0c19yZWdpbmZvID0gTlVMTDsKLSAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvID0gTlVMTDsKLSAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKm1zZ19zdGF0c19paW5mbyA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqbXNnX3N0YXRzX3RhYmxlX2luZm8gPSBOVUxMOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnRhYmxlX3JlZ2luZm8gPSBOVUxMOworICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm87CisgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICptc2dfc3RhdHNfaWluZm87CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICptc2dfc3RhdHNfdGFibGVfaW5mbzsKICNlbmRpZgogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnNjYWxhcl9yZWdpbmZvID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgIHJjOwpAQCAtNDgzLDE0ICs2NTMsOSBAQAogICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkluaXRpYWxpc2luZyBJQ01QIGdyb3VwXG4iKSk7CiAgICAgc2NhbGFyX3JlZ2luZm8gPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaWNtcCIsIGljbXBfaGFuZGxlciwKIAkJICAgIGljbXBfb2lkLCBPSURfTEVOR1RIKGljbXBfb2lkKSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIGlmICghc2NhbGFyX3JlZ2luZm8pCi0gICAgICAgIHJldHVybjsKLQogICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAoc2NhbGFyX3JlZ2luZm8sIElDTVBJTk1TR1MsIElDTVBPVVRBRERSTUFTS1JFUFMpOwotICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQogICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgLyoKICAgICAgKiAuLi4uIHdpdGggYSBsb2NhbCBjYWNoZQogICAgICAqICAgIChleGNlcHQgZm9yIEhQLVVYIDExLCB3aGljaCBleHRyYWN0cyBvYmplY3RzIGluZGl2aWR1YWxseSkKQEAgLTUwMSwyNSArNjY2LDIyIEBACiAJCQkgICAJCWljbXBfbG9hZCwgaWNtcF9mcmVlLAogCQkJCQlpY21wX29pZCwgT0lEX0xFTkdUSChpY21wX29pZCkpKTsKICAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQotICAgICAgICBnb3RvIGJhaWw7CisJZ290byBiYWlsOwogI2VuZGlmCi0jaWZkZWYgbGludXgKKyNpZmRlZiBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKIAogICAgIC8qIHJlZ2lzdGVyIGljbXBTdGF0c1RhYmxlICovCi0KICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKICAgICBpZiAoIXRhYmxlX2luZm8pCiAgICAgICAgIGdvdG8gYmFpbDsKLQogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sIEFTTl9JTlRFR0VSLCAwKTsKICAgICB0YWJsZV9pbmZvLT5taW5fY29sdW1uID0gSUNNUF9TVEFUX0lOTVNHOwogICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBJQ01QX1NUQVRfT1VURVJSOwogCiAKICAgICBpaW5mbyAgICAgID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOwotICAgIGlmICghaWluZm8pIAorICAgIGlmICghaWluZm8pCiAgICAgICAgIGdvdG8gYmFpbDsKLQogICAgIGlpbmZvLT5nZXRfZmlyc3RfZGF0YV9wb2ludCA9IGljbXBfc3RhdHNfZmlyc3RfZW50cnk7CiAgICAgaWluZm8tPmdldF9uZXh0X2RhdGFfcG9pbnQgID0gaWNtcF9zdGF0c19uZXh0X2VudHJ5OwogICAgIGlpbmZvLT50YWJsZV9yZWdpbmZvICAgICAgICA9IHRhYmxlX2luZm87CkBAIC01MjcsMjAgKzY4OSwyMSBAQAogICAgIHRhYmxlX3JlZ2luZm8gPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaWNtcFN0YXRzVGFibGUiLAogCQlpY21wX3N0YXRzX3RhYmxlX2hhbmRsZXIsIGljbXBfc3RhdHNfdGJsX29pZCwKIAkJT0lEX0xFTkdUSChpY21wX3N0YXRzX3RibF9vaWQpLCBIQU5ETEVSX0NBTl9ST05MWSk7Ci0gICAgaWYgKCF0YWJsZV9yZWdpbmZvKQotICAgICAgICBnb3RvIGJhaWw7CiAKLSAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IodGFibGVfcmVnaW5mbywgaWluZm8pOworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIodGFibGVfcmVnaW5mbywgaWluZm8pOwogICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKICAgICAgICAgdGFibGVfcmVnaW5mbyA9IE5VTEw7CiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlciggdGFibGVfcmVnaW5mbywKKyAgICAgICAgICAgIG5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXIoSUNNUF9TVEFUU19DQUNIRV9USU1FT1VULAorICAgICAgICAgICAgICAgICAgICAgICAgaWNtcF9sb2FkLCBpY21wX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpY21wX3N0YXRzX3RibF9vaWQsIE9JRF9MRU5HVEgoaWNtcF9zdGF0c190Ymxfb2lkKSkpOwogCiAgICAgLyogcmVnaXN0ZXIgaWNtcE1zZ1N0YXRzVGFibGUgKi8KICAgICBtc2dfc3RhdHNfdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgaWYgKCFtc2dfc3RhdHNfdGFibGVfaW5mbykKICAgICAgICAgZ290byBiYWlsOwotCiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXMobXNnX3N0YXRzX3RhYmxlX2luZm8sIEFTTl9JTlRFR0VSLCBBU05fSU5URUdFUiwgMCk7CiAgICAgbXNnX3N0YXRzX3RhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBJQ01QX01TR19TVEFUX0lOX1BLVFM7CiAgICAgbXNnX3N0YXRzX3RhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBJQ01QX01TR19TVEFUX09VVF9QS1RTOwpAQCAtNTQ4LDcgKzcxMSw2IEBACiAgICAgbXNnX3N0YXRzX2lpbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOwogICAgIGlmICghbXNnX3N0YXRzX2lpbmZvKQogICAgICAgICBnb3RvIGJhaWw7Ci0KICAgICBtc2dfc3RhdHNfaWluZm8tPmdldF9maXJzdF9kYXRhX3BvaW50ID0gaWNtcF9tc2dfc3RhdHNfZmlyc3RfZW50cnk7CiAgICAgbXNnX3N0YXRzX2lpbmZvLT5nZXRfbmV4dF9kYXRhX3BvaW50ICA9IGljbXBfbXNnX3N0YXRzX25leHRfZW50cnk7CiAgICAgbXNnX3N0YXRzX2lpbmZvLT50YWJsZV9yZWdpbmZvICAgICAgICA9IG1zZ19zdGF0c190YWJsZV9pbmZvOwpAQCAtNTU2LDI2ICs3MTgsMTggQEAKICAgICBtc2dfc3RhdHNfcmVnaW5mbyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJpY21wTXNnU3RhdHNUYWJsZSIsCiAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZV9oYW5kbGVyLCBpY21wX21zZ19zdGF0c190Ymxfb2lkLAogICAgICAgICAgICAgT0lEX0xFTkdUSChpY21wX21zZ19zdGF0c190Ymxfb2lkKSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIGlmICghbXNnX3N0YXRzX3JlZ2luZm8pCi0gICAgICAgIGdvdG8gYmFpbDsKIAotICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihtc2dfc3RhdHNfcmVnaW5mbywgbXNnX3N0YXRzX2lpbmZvKTsKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKG1zZ19zdGF0c19yZWdpbmZvLCBtc2dfc3RhdHNfaWluZm8pOwogICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKICAgICAgICAgbXNnX3N0YXRzX3JlZ2luZm8gPSBOVUxMOwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQotICAgIAorCiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlciggbXNnX3N0YXRzX3JlZ2luZm8sCiAgICAgICAgICAgICBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyKElDTVBfU1RBVFNfQ0FDSEVfVElNRU9VVCwKICAgICAgICAgICAgICAgICBpY21wX2xvYWQsIGljbXBfZnJlZSwKICAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190Ymxfb2lkLCBPSURfTEVOR1RIKGljbXBfbXNnX3N0YXRzX3RibF9vaWQpKSk7Ci0jaWZuZGVmIGhwdXgxMQotICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIHRhYmxlX3JlZ2luZm8sCi0JCSAgICBuZXRzbm1wX2dldF9jYWNoZV9oYW5kbGVyKElDTVBfU1RBVFNfQ0FDSEVfVElNRU9VVCwKLQkJCSAgIAkJaWNtcF9sb2FkLCBpY21wX2ZyZWUsCi0JCQkJCWljbXBfc3RhdHNfdGJsX29pZCwgT0lEX0xFTkdUSChpY21wX3N0YXRzX3RibF9vaWQpKSk7Ci0jZW5kaWYgLyogISBocHV4MTEgKi8KLSNlbmRpZiAvKiBsaW51eCAqLworI2VuZGlmIC8qIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVCAqLwogCiAjaWZkZWYgVVNJTkdfTUlCSUlfSVBfTU9EVUxFCiAgICAgaWYgKCsraXBfbW9kdWxlX2NvdW50ID09IDIpCkBAIC01OTYsNyArNzUwLDcgQEAKICNpZm5kZWYgaHB1eDExCiBiYWlsOgogI2VuZGlmCi0jaWZkZWYgbGludXgKKyNpZmRlZiBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQKICAgICBpZiAobXNnX3N0YXRzX3JlZ2luZm8pCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShtc2dfc3RhdHNfcmVnaW5mbyk7CiAgICAgaWYgKHRhYmxlX3JlZ2luZm8pCkBAIC02MTMsNDggKzc2Nyw2IEBACiAJICoKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCi0jaWZkZWYgaHB1eDExCi0jZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUJaW50Ci0jZW5kaWYKLQotI2lmZGVmIGxpbnV4Ci0jZGVmaW5lIElDTVBfU1RBVF9TVFJVQ1RVUkUJc3RydWN0IGljbXBfbWliCi0jZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAotI3VuZGVmIElDTVBTVEFUX1NZTUJPTAotI2VuZGlmCi0KLSNpZmRlZiBzb2xhcmlzMgotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCW1pYjJfaWNtcF90Ci0jZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JQ01QU1RBVAotI2VuZGlmCi0KLSNpZmRlZiBORVRCU0RfU1RBVFNfVklBX1NZU0NUTAotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFICAgICBzdHJ1Y3QgaWNtcF9taWIKLSNkZWZpbmUgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCi0jdW5kZWYgSUNNUF9OU1RBVFMKLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9JUEhMUEFQSV9ICi0jaW5jbHVkZSA8aXBobHBhcGkuaD4KLSNkZWZpbmUgSUNNUF9TVEFUX1NUUlVDVFVSRSBNSUJfSUNNUAotI2VuZGlmCi0KLS8qID8/ICNpZiAoZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKSAmJiBkZWZpbmVkKElDTVBDVExfU1RBVFMpKSA/PyAqLwotCi0jaWZkZWYgSEFWRV9TWVNfSUNNUElQU1RBVFNfSAotLyogb3IgI2lmZGVmCQlIQVZFX1NZU19UQ1BJUFNUQVRTX0ggID8/PyAqLwotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBrbmEKLSNkZWZpbmUgVVNFU19UUkFESVRJT05BTF9JQ01QU1RBVAotI2VuZGlmCi0KLSNpZiAhZGVmaW5lZChJQ01QX1NUQVRfU1RSVUNUVVJFKQotI2RlZmluZSBJQ01QX1NUQVRfU1RSVUNUVVJFCXN0cnVjdCBpY21wc3RhdAotI2RlZmluZSBVU0VTX1RSQURJVElPTkFMX0lDTVBTVEFUCi0jZW5kaWYKLQotSUNNUF9TVEFUX1NUUlVDVFVSRSBpY21wc3RhdDsKLQotCiAgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKIAkgKgogCSAqICBTeXN0ZW0gaW5kZXBlbmRlbnQgaGFuZGxlcgpAQCAtNjcyLDkgKzc4NCw2IEBACiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpyZXF1ZXN0dmI7CiAgICAgbG9uZyAgICAgcmV0X3ZhbHVlOwogICAgIG9pZCAgICAgIHN1YmlkOwotI2lmZGVmIFVTRVNfVFJBRElUSU9OQUxfSUNNUFNUQVQKLSAgICBpbnQgICAgICBpOwotI2VuZGlmCiAKICAgICAvKgogICAgICAqIFRoZSBjYWNoZWQgZGF0YSBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gbG9hZGVkIGJ5IHRoZQpAQCAtNzgyLDEzICs4OTEsMTYgQEAKICAgICAgICAgcmV0X3ZhbHVlID0gaWNtcHN0YXQuaWNtcE91dEFkZHJNYXNrUmVwczsKICAgICAgICAgYnJlYWs7CiAjZWxpZiBkZWZpbmVkKFVTRVNfVFJBRElUSU9OQUxfSUNNUFNUQVQpICYmICFkZWZpbmVkKF9VU0VfUEVSRlNUQVRfUFJPVE9DT0wpCi0gICAgY2FzZSBJQ01QSU5NU0dTOgorICAgIGNhc2UgSUNNUElOTVNHUzogeworICAgICAgICBpbnQgaTsKKwogICAgICAgICByZXRfdmFsdWUgPSBpY21wc3RhdC5pY3BzX2JhZGNvZGUgKwogICAgICAgICAgICAgaWNtcHN0YXQuaWNwc190b29zaG9ydCArCiAgICAgICAgICAgICBpY21wc3RhdC5pY3BzX2NoZWNrc3VtICsgaWNtcHN0YXQuaWNwc19iYWRsZW47CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gSUNNUF9NQVhUWVBFOyBpKyspCiAgICAgICAgICAgICByZXRfdmFsdWUgKz0gaWNtcHN0YXQuaWNwc19pbmhpc3RbaV07CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIElDTVBJTkVSUk9SUzoKICAgICAgICAgcmV0X3ZhbHVlID0gaWNtcHN0YXQuaWNwc19iYWRjb2RlICsKICAgICAgICAgICAgIGljbXBzdGF0LmljcHNfdG9vc2hvcnQgKwpAQCAtODI3LDExICs5MzksMTQgQEAKICAgICBjYXNlIElDTVBJTkFERFJNQVNLUkVQUzoKICAgICAgICAgcmV0X3ZhbHVlID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9NQVNLUkVQTFldOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIElDTVBPVVRNU0dTOgorICAgIGNhc2UgSUNNUE9VVE1TR1M6IHsKKyAgICAgICAgaW50IGk7CisKICAgICAgICAgcmV0X3ZhbHVlID0gaWNtcHN0YXQuaWNwc19vbGRzaG9ydCArIGljbXBzdGF0LmljcHNfb2xkaWNtcDsKICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBJQ01QX01BWFRZUEU7IGkrKykKICAgICAgICAgICAgIHJldF92YWx1ZSArPSBpY21wc3RhdC5pY3BzX291dGhpc3RbaV07CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICBjYXNlIElDTVBPVVRFUlJPUlM6CiAgICAgICAgIHJldF92YWx1ZSA9IGljbXBzdGF0LmljcHNfb2xkc2hvcnQgKyBpY21wc3RhdC5pY3BzX29sZGljbXA7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAzMyw2ICsxMTQ4LDcgQEAKIAogICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xMDQyLDYgKzExNTgsNyBAQAogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXA6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcDogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKQEAgLTEwNTIsNyArMTE2OSw3IEBACiB9CiAKIAotI2lmZGVmIGxpbnV4CisjaWZkZWYgVVNFU19TTk1QX0RFU0lHTkVEX0lDTVBTVEFUCiBpbnQKIGljbXBfc3RhdHNfdGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTExMDUsNiArMTIyMiw3IEBACiAJCQlicmVhazsKIAkJY2FzZSBNT0RFX0dFVE5FWFQ6CiAJCWNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAkJY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKIAkJY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKIAkJY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xMTE0LDYgKzEyMzIsNyBAQAogCQkJc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wU3RhdHNUYWJsZTogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAogCQkJCXJlcWluZm8tPm1vZGUpOwogCQkJYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCQlkZWZhdWx0OgogCQkJc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wU3RhdHNUYWJsZTogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKIAkJCQlyZXFpbmZvLT5tb2RlKTsKQEAgLTExNzUsNiArMTI5NCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0xMTg0LDYgKzEzMDQsNyBAQAogICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wU3RhdHNUYWJsZTogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwpAQCAtMTE5Myw3ICsxMzE0LDcgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQotI2VuZGlmCQkvKiBsaW51eCAqLworI2VuZGlmCQkvKiBVU0VTX1NOTVBfREVTSUdORURfSUNNUFNUQVQgKi8KIAogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKQEAgLTEzMzIsNyArMTQ1MywxMSBAQAogaW50CiBpY21wX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZtYWdpYykKIHsKLSAgICBsb25nICAgICAgICAgICAgcmV0X3ZhbHVlID0gLTE7CisgICAgaW50IHJldF92YWx1ZSA9IC0xOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBtaWIyX2lwdjZJZkljbXBFbnRyeV90IGlmc3RhdDsKKyAgICBpbnQgcmVxID0gR0VUX0ZJUlNUOworI2VuZGlmCiAKICAgICByZXRfdmFsdWUgPQogICAgICAgICBnZXRNaWJzdGF0KE1JQl9JQ01QLCAmaWNtcHN0YXQsIHNpemVvZihtaWIyX2ljbXBfdCksIEdFVF9GSVJTVCwKQEAgLTEzNDMsOCArMTQ2OCw4NSBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkxvYWRlZCBJQ01QIEdyb3VwIChzb2xhcmlzKVxuIikpOwogICAgIH0KKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBtZW1zZXQoJmljbXA2c3RhdCwgMCwgc2l6ZW9mKGljbXA2c3RhdCkpOworICAgIHdoaWxlICgocmV0X3ZhbHVlID0gZ2V0TWlic3RhdChNSUJfSUNNUDYsICZpZnN0YXQsIHNpemVvZihpZnN0YXQpLCByZXEsCisgICAgICAgICAgICAgICAgICAgJkdldF9ldmVyeXRoaW5nLCBOVUxMKSkgPT0gMCkgeworCWlmICggcmV0X3ZhbHVlIDwgMCApIHsKKwkgICAgREVCVUdNU0dUTCgoIm1pYklJL2ljbXAiLCAiRmFpbGVkIHRvIGxvYWQgSUNNUDYgR3JvdXAgKHNvbGFyaXMpXG4iKSk7CisJfSBlbHNlIHsKKwkgICAgREVCVUdNU0dUTCgoIm1pYklJL2ljbXAiLCAiTG9hZGVkIElDTVA2IEdyb3VwIChzb2xhcmlzKVxuIikpOworCX0KKwlpY21wNnN0YXQuaWNtcDZPdXRNc2dzICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0TXNnczsKKwlpY21wNnN0YXQuaWNtcDZJbk1zZ3MgKz0gaWZzdGF0LmlwdjZJZkljbXBJbk1zZ3M7CisJaWNtcDZzdGF0LmljbXA2SW5FcnJvcnMgKz0gaWZzdGF0LmlwdjZJZkljbXBJbkVycm9yczsKKwlpY21wNnN0YXQuaWNtcDZPdXREZXN0VW5yZWFjaHMgKz0gaWZzdGF0LmlwdjZJZkljbXBPdXREZXN0VW5yZWFjaHM7CisJaWNtcDZzdGF0LmljbXA2SW5EZXN0VW5yZWFjaHMgKz0gaWZzdGF0LmlwdjZJZkljbXBJbkRlc3RVbnJlYWNoczsKKwlpY21wNnN0YXQuaWNtcDZPdXRQa3RUb29CaWdzICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0UGt0VG9vQmlnczsKKwlpY21wNnN0YXQuaWNtcDZJblBrdFRvb0JpZ3MgKz0gaWZzdGF0LmlwdjZJZkljbXBJblBrdFRvb0JpZ3M7CisJaWNtcDZzdGF0LmljbXA2T3V0VGltZUV4Y2RzICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0VGltZUV4Y2RzOworCWljbXA2c3RhdC5pY21wNkluVGltZUV4Y2RzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5UaW1lRXhjZHM7CisJaWNtcDZzdGF0LmljbXA2T3V0UGFybVByb2JsZW1zICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0UGFybVByb2JsZW1zOworCWljbXA2c3RhdC5pY21wNkluUGFybVByb2JsZW1zICs9IGlmc3RhdC5pcHY2SWZJY21wSW5QYXJtUHJvYmxlbXM7CisJaWNtcDZzdGF0LmljbXA2T3V0RWNob3MgKz0gaWZzdGF0LmlwdjZJZkljbXBPdXRFY2hvczsKKwlpY21wNnN0YXQuaWNtcDZJbkVjaG9zICs9IGlmc3RhdC5pcHY2SWZJY21wSW5FY2hvczsKKwlpY21wNnN0YXQuaWNtcDZPdXRFY2hvUmVwbGllcyArPSBpZnN0YXQuaXB2NklmSWNtcE91dEVjaG9SZXBsaWVzOworCWljbXA2c3RhdC5pY21wNkluRWNob1JlcGxpZXMgKz0gaWZzdGF0LmlwdjZJZkljbXBJbkVjaG9SZXBsaWVzOworCWljbXA2c3RhdC5pY21wNk91dFJvdXRlclNvbGljaXRzICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0Um91dGVyU29saWNpdHM7CisJaWNtcDZzdGF0LmljbXA2SW5Sb3V0ZXJTb2xpY2l0cyArPSBpZnN0YXQuaXB2NklmSWNtcEluUm91dGVyU29saWNpdHM7CisJaWNtcDZzdGF0LmljbXA2T3V0TmVpZ2hib3JBZHZlcnRpc2VtZW50cyArPSBpZnN0YXQuaXB2NklmSWNtcE91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisJaWNtcDZzdGF0LmljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5OZWlnaGJvckFkdmVydGlzZW1lbnRzOworCWljbXA2c3RhdC5pY21wNk91dE5laWdoYm9yU29saWNpdHMgKz0gaWZzdGF0LmlwdjZJZkljbXBPdXROZWlnaGJvclNvbGljaXRzOworCWljbXA2c3RhdC5pY21wNkluTmVpZ2hib3JTb2xpY2l0cyArPSBpZnN0YXQuaXB2NklmSWNtcEluTmVpZ2hib3JTb2xpY2l0czsKKwlpY21wNnN0YXQuaWNtcDZPdXRSZWRpcmVjdHMgKz0gaWZzdGF0LmlwdjZJZkljbXBPdXRSZWRpcmVjdHM7CisJaWNtcDZzdGF0LmljbXA2SW5SZWRpcmVjdHMgKz0gaWZzdGF0LmlwdjZJZkljbXBJblJlZGlyZWN0czsKKwlpY21wNnN0YXQuaWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXMgKz0gaWZzdGF0LmlwdjZJZkljbXBJbkdyb3VwTWVtYlF1ZXJpZXM7CisJaWNtcDZzdGF0LmljbXA2T3V0R3JvdXBNZW1iUmVzcG9uc2VzICs9IGlmc3RhdC5pcHY2SWZJY21wT3V0R3JvdXBNZW1iUmVzcG9uc2VzOworCWljbXA2c3RhdC5pY21wNkluR3JvdXBNZW1iUmVzcG9uc2VzICs9IGlmc3RhdC5pcHY2SWZJY21wSW5Hcm91cE1lbWJSZXNwb25zZXM7CisJaWNtcDZzdGF0LmljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9ucyArPSBpZnN0YXQuaXB2NklmSWNtcE91dEdyb3VwTWVtYlJlZHVjdGlvbnM7CisJaWNtcDZzdGF0LmljbXA2SW5Hcm91cE1lbWJSZWR1Y3Rpb25zICs9IGlmc3RhdC5pcHY2SWZJY21wSW5Hcm91cE1lbWJSZWR1Y3Rpb25zOworCXJlcSA9IEdFVF9ORVhUOworICAgIH0KKyNlbmRpZgorCisgICAgaWNtcF9zdGF0c19sb2FkKGNhY2hlLCB2bWFnaWMpOworICAgIGljbXBfbXNnX3N0YXRzX2xvYWQoY2FjaGUsIHZtYWdpYyk7CiAgICAgcmV0dXJuIHJldF92YWx1ZTsKIH0KKworc3RhdGljIGludAorc29sYXJpc19yZWFkX2ljbXBfc3RhdChJQ01QX1NUQVRfU1RSVUNUVVJFICptaWIpCit7CisgICAgKm1pYiA9IGljbXBzdGF0OworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citzb2xhcmlzX3JlYWRfaWNtcF9tc2dfc3RhdChJQ01QX1NUQVRfU1RSVUNUVVJFICptaWIsIHN0cnVjdCBpY21wNF9tc2dfbWliICptc2dfbWliLCBpbnQgKmZsYWcpCit7CisgICAgKm1pYiA9IGljbXBzdGF0OworICAgICpmbGFnID0gMDsKKyAgICByZXR1cm4gMDsKK30KKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKK3N0YXRpYyBpbnQKK3NvbGFyaXNfcmVhZF9pY21wNl9zdGF0KHN0cnVjdCBpY21wNl9taWIgKm1pYikKK3sKKyAgICAqbWliID0gaWNtcDZzdGF0OworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50Citzb2xhcmlzX3JlYWRfaWNtcDZfbXNnX3N0YXQoc3RydWN0IGljbXA2X21pYiAqbWliLCBzdHJ1Y3QgaWNtcDZfbXNnX21pYiAqbXNnX21pYiwgaW50ICpmbGFnKQoreworICAgICptaWIgPSBpY21wNnN0YXQ7CisgICAgKmZsYWcgPSAwOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisKICNlbGlmIGRlZmluZWQoTkVUQlNEX1NUQVRTX1ZJQV9TWVNDVEwpCiBpbnQKIGljbXBfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdm1hZ2ljKQpAQCAtMTM1OCw2ICsxNTYwLDggQEAKICAgICB9IGVsc2UgewogCURFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkxvYWRlZCBJQ01QIEdyb3VwIChuZXRic2QpXG4iKSk7CiAgICAgfQorICAgIGljbXBfc3RhdHNfbG9hZChjYWNoZSwgdm1hZ2ljKTsKKyAgICBpY21wX21zZ19zdGF0c19sb2FkKGNhY2hlLCB2bWFnaWMpOwogICAgIHJldHVybiByZXRfdmFsdWU7CiB9CiAjZWxpZiBkZWZpbmVkIChXSU4zMikgfHwgZGVmaW5lZCAoY3lnd2luKQpAQCAtMTM5NywxNyArMTYwMSwxNiBAQAogaWNtcF9sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCiB7CiAgICAgbG9uZyAgICAgICAgICAgIHJldF92YWx1ZSA9IC0xOwotICAgIHN0YXRpYyBpbnQgICAgICBzbmFtZVs0XSA9Ci0gICAgICAgIHsgQ1RMX05FVCwgUEZfSU5FVCwgSVBQUk9UT19JQ01QLCBJQ01QQ1RMX1NUQVRTIH07Ci0gICAgc2l6ZV90ICAgICAgICAgIGxlbiA9IHNpemVvZihpY21wc3RhdCk7CiAKLSAgICByZXRfdmFsdWUgPSBzeXNjdGwoc25hbWUsIDQsICZpY21wc3RhdCwgJmxlbiwgMCwgMCk7CisgICAgcmV0X3ZhbHVlID0gc3lzY3RsX3JlYWRfaWNtcF9zdGF0KCZpY21wc3RhdCk7CiAKICAgICBpZiAoIHJldF92YWx1ZSA8IDAgKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkZhaWxlZCB0byBsb2FkIElDTVAgR3JvdXAgKHN5c2N0bClcbiIpKTsKKwlERUJVR01TR1RMKCgibWliSUkvaWNtcCIsICJGYWlsZWQgdG8gbG9hZCBJQ01QIEdyb3VwIChuZXRic2QpXG4iKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2ljbXAiLCAiTG9hZGVkIElDTVAgR3JvdXAgKHN5c2N0bClcbiIpKTsKKwlERUJVR01TR1RMKCgibWliSUkvaWNtcCIsICJMb2FkZWQgSUNNUCBHcm91cCAobmV0YnNkKVxuIikpOwogICAgIH0KKyAgICBpY21wX3N0YXRzX2xvYWQoY2FjaGUsIHZtYWdpYyk7CisgICAgaWNtcF9tc2dfc3RhdHNfbG9hZChjYWNoZSwgdm1hZ2ljKTsKICAgICByZXR1cm4gcmV0X3ZhbHVlOwogfQogI2VsaWYgZGVmaW5lZChIQVZFX1NZU19UQ1BJUFNUQVRTX0gpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmgKaW5kZXggOTMwNzY1NC4uZDA3ODQxYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuaApAQCAtNSwxMCArNSwyNSBAQAogI2lmbmRlZiBfTUlCR1JPVVBfSUNNUF9ICiAjZGVmaW5lIF9NSUJHUk9VUF9JQ01QX0gKIAotY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwgICAgICAgIGtlcm5lbF9zdW5vczUpCitjb25maWdfYXJjaF9yZXF1aXJlKHNvbGFyaXMyLCAga2VybmVsX3N1bm9zNSkKIGNvbmZpZ19hcmNoX3JlcXVpcmUobGludXgsICAgICBtaWJJSS9rZXJuZWxfbGludXgpCitjb25maWdfYXJjaF9yZXF1aXJlKGZyZWVic2Q0LCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZnJlZWJzZDUsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShmcmVlYnNkNiwgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKGZyZWVic2Q3LCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZnJlZWJzZDgsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShmcmVlYnNkOSwgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKGZyZWVic2QxMCwgbWliSUkva2VybmVsX3N5c2N0bCkKIGNvbmZpZ19hcmNoX3JlcXVpcmUobmV0YnNkLCAgICBtaWJJSS9rZXJuZWxfbmV0YnNkKQogY29uZmlnX2FyY2hfcmVxdWlyZShuZXRic2RlbGYsIG1pYklJL2tlcm5lbF9uZXRic2QpCitjb25maWdfYXJjaF9yZXF1aXJlKG9wZW5ic2Q0LCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUob3BlbmJzZDUsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShkcmFnb25mbHkyLCBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShkcmFnb25mbHkzLCBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShkYXJ3aW4xMCwgIG1pYklJL2tlcm5lbF9zeXNjdGwpCitjb25maWdfYXJjaF9yZXF1aXJlKGRhcndpbjExLCAgbWliSUkva2VybmVsX3N5c2N0bCkKK2NvbmZpZ19hcmNoX3JlcXVpcmUoZGFyd2luMTIsICBtaWJJSS9rZXJuZWxfc3lzY3RsKQorY29uZmlnX2FyY2hfcmVxdWlyZShkYXJ3aW4xMywgIG1pYklJL2tlcm5lbF9zeXNjdGwpCiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmg+CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYwppbmRleCA0Njc2NTdhLi4yNmZmZWJiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCkBAIC0xNSw2ICsxNSw5IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKGludGVyZmFjZV9sZWdhY3kpCiAKICNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKSAmJiAhZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9MQVRFKQogI2RlZmluZSBfS0VSTkVMIDEKQEAgLTE5NSw2ICsxOTgsNyBAQAogCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgInN0cnVjdC5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKIC8qIGlmIHlvdSB3YW50IGNhY2hpbmcgZW5hYmxlZCBmb3Igc3BlZWQgcmV0cmlldmFsIHB1cnBvc2VzLCBzZXQgdGhpcyB0byA1PyovCkBAIC0yMjAsNiArMjI0LDcgQEAKICAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA1fX0sCiAgICAge05FVFNOTVBfSUZQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgNn19LAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNpZiBkZWZpbmVkIChXSU4zMikgfHwgZGVmaW5lZCAoY3lnd2luKQogICAgIHtORVRTTk1QX0lGQURNSU5TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgN319LApAQCAtMjI3LDYgKzIzMiwxMCBAQAogICAgIHtORVRTTk1QX0lGQURNSU5TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCiAjZW5kaWYKKyNlbHNlICAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAge05FVFNOTVBfSUZBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDd9fSwKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAge05FVFNOTVBfSUZPUEVSU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgOH19LAogICAgIHtORVRTTk1QX0lGTEFTVENIQU5HRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCkBAIC03NjksOSArNzc4LDYgQEAKICAgICBzdGF0aWMgY2hhciAgICAgTmFtZVsxNl07CiAgICAgY2hhciAgICAgICAgICAgKmNwOwogICAgIGNvbmZfaWZfbGlzdCAgICppZl9wdHI7Ci0jaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTEFTVENIQU5HRV9UVl9TRUMKLSAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OwotI2VuZGlmCiAKICAgICBpbnRlcmZhY2UgPQogICAgICAgICBoZWFkZXJfaWZFbnRyeSh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kKTsKQEAgLTE1MTksNyArMTUyNSw3IEBACiAKICNpZmRlZiBsaW51eAogICAgIC8qICBkaXNhbGxvdyByZWxvYWRpbmcgb2Ygc3RydWN0dXJlcyB0b28gb2Z0ZW4gKi8KLSAgICBnZXR0aW1lb2ZkYXkgKCAmZXQsICggc3RydWN0IHRpbWV6b25lICogKSAwICk7ICAvKiAgZ2V0IHRpbWUtb2YtZGF5ICovCisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZldCk7CiAgICAgaWYgKCBldC50dl9zZWMgPCBMYXN0TG9hZCArIE1JTkxPQURGUkVRICkgeyAgICAgLyogIG9ubHkgcmVsb2FkIHNvIG9mdGVuICovCiAgICAgICBpZm5ldGFkZHIgPSBpZm5ldGFkZHJfbGlzdDsgICAgICAgICAgICAgICAgICAgLyogIGluaXRpYWxpemUgcG9pbnRlciAqLwogICAgICAgcmV0dXJuOwpAQCAtMTg5Niw2ICsxOTAyLDEwIEBACiAjaWZkZWYgbGludXgKICAgICAgICAgc3RybGNhdChzYXZlTmFtZSwgaWZuZXQuaWZfdW5pdCwgc2l6ZW9mKHNhdmVOYW1lKSk7CiAjZWxzZQorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lOCisgICAgICAgIC8qIHRoaXMgZXhpc3RzIGhlcmUganVzdCBzbyB3ZSBkb24ndCBjb3B5IGlmZGVmIGxvZ2ljIGVsc2V3aGVyZSAqLworICAgICAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdHJpbmdfYXBwZW5kX2ludCk7CisjZW5kaWYKICAgICAgICAgc3RyaW5nX2FwcGVuZF9pbnQoY3AsIGlmbmV0LmlmX3VuaXQpOwogI2VuZGlmCiAgICAgICAgIGlmICgxIHx8IHN0cmNtcChzYXZlTmFtZSwgImxvMCIpICE9IDApIHsgICAgICAgIC8qIFhYWCAqLwpAQCAtMjA0Nyw2ICsyMDU3LDEwIEBACiAKICAgICAgICAgc2F2ZU5hbWVbc2l6ZW9mKHNhdmVOYW1lKSAtIDFdID0gJ1wwJzsKICAgICAgICAgY3AgPSBzdHJjaHIoc2F2ZU5hbWUsICdcMCcpOworI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lOCisgICAgICAgIC8qIHRoaXMgZXhpc3RzIGhlcmUganVzdCBzbyB3ZSBkb24ndCBjb3B5IGlmZGVmIGxvZ2ljIGVsc2V3aGVyZSAqLworICAgICAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdHJpbmdfYXBwZW5kX2ludCk7CisjZW5kaWYKICAgICAgICAgc3RyaW5nX2FwcGVuZF9pbnQoY3AsIGlmbmV0LmlmX3VuaXQpOwogI2VuZGlmCiAgICAgICAgIGlmICgxIHx8IHN0cmNtcChzYXZlTmFtZSwgImxvMCIpICE9IDApIHsgICAgICAgIC8qIFhYWCAqLwpAQCAtMjY1Myw3ICsyNjY3LDkgQEAKICNlbGlmIGRlZmluZWQoSEFWRV9JUEhMUEFQSV9IKSAgLyogV0lOMzIgY3lnd2luICovCiAjaW5jbHVkZSA8aXBobHBhcGkuaD4KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIFdyaXRlTWV0aG9kICAgICB3cml0ZUlmRW50cnk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogbG9uZyAgICAgICAgICAgIGFkbWluX3N0YXR1cyA9IDA7CiBsb25nICAgICAgICAgICAgb2xkYWRtaW5fc3RhdHVzID0gMDsKIApAQCAtMjc5OCw3ICsyODE0LDkgQEAKICAgICBjYXNlIE5FVFNOTVBfSUZBRE1JTlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd0FkbWluU3RhdHVzOwogICAgICAgICBhZG1pbl9zdGF0dXMgPSBsb25nX3JldHVybjsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZUlmRW50cnk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwogICAgIGNhc2UgTkVUU05NUF9JRk9QRVJTVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0KQEAgLTI4NTQsNiArMjg3Miw3IEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIGludAogd3JpdGVJZkVudHJ5KGludCBhY3Rpb24sCiAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTI5MjUsNCArMjk0NCw1IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgb2Ygd3JpdGVJZkVudHJ5ICovCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV0lOMzIgY3lnd2luICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pcC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYwppbmRleCAyNDgyYTkxLi5mMzlkMzIyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwLmMKQEAgLTY3Nyw2ICs2NzcsNyBAQAogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAJCS8qIFhYWCAtIFdpbmRvd3MgY3VycmVudGx5IHN1cHBvcnRzIHNldHRpbmcgdGhpcyAqLwogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CkBAIC02ODcsNiArNjg4LDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pcDogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pcDogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMKaW5kZXggMzMyNjYyNi4uYTRkNTc3ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMKQEAgLTE1LDYgKzE1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCiAjZGVmaW5lIF9LRVJORUwgMQpAQCAtMTIwLDYgKzEyMSw4IEBACiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGludGVyZmFjZV9sZWdhY3kpCisKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEtlcm5lbCAmIGludGVyZmFjZSBpbmZvcm1hdGlvbiwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYwppbmRleCAwOTllMzlmLi44NjA5YmIwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgInJvdXRlX2hlYWRlcnMuaCIKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0xMyw2ICsxNCwxMSBAQAogCiAjaW5jbHVkZSAidmFyX3JvdXRlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9zdGFzaCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGdldF9yb3V0ZXMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfZ2V0X2RhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShvaWRfc3Rhc2hfYWRkX2RhdGEpCisKIHN0YXRpYyBuZXRzbm1wX29pZF9zdGFzaF9ub2RlICp1bmRvU3RvcmFnZTsKIAogc3RydWN0IHVuZG9JbmZvIHsKQEAgLTk5LDcgKzEwNSw3IEBACiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoImluaXRpYWxpemVfdGFibGVfaXBDaWRyUm91dGVUYWJsZSIsCiAgICAgICAgICAgICAgICAgIlJlZ2lzdGVyaW5nIHRhYmxlIGlwQ2lkclJvdXRlVGFibGUgYXMgYSB0YWJsZSBpdGVyYXRvclxuIikpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IobXlfaGFuZGxlciwgaWluZm8pOworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKG15X2hhbmRsZXIsIGlpbmZvKTsKIH0KIAogLyoqIEluaXRpYWxpemVzIHRoZSBpcENpZHJSb3V0ZVRhYmxlIG1vZHVsZSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jCmluZGV4IDMzYTNkYjcuLjk5ZDUwZTggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaWYgZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKICNkZWZpbmUgX0tFUk5FTCAxCiAjZGVmaW5lIF9JX0RFRklORURfS0VSTkVMCkBAIC0xNDMsNiArMTQ0LDggQEAKICNpbmNsdWRlICJpcHY2LmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShsaW51eF9yZWFkX2lwNl9zdGF0KQorCiAjaWYgZGVmaW5lZChuZXRic2QxKSAmJiAhZGVmaW5lZChvcGVuYnNkNCkKICNkZWZpbmUgaW5wX2xwb3J0IGluNnBfbHBvcnQKICNkZWZpbmUgaW5wX2Zwb3J0IGluNnBfZnBvcnQKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKaW5kZXggMjZiODk5Yy4uOTkzMTRkZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00NSw3ICs0NiwxMSBAQAogI2RlZmluZSBJQ01QNl9TVEFUU19QUkVGSVhfTEVOCTUKICNkZWZpbmUgVURQNl9TVEFUU19QUkVGSVhfTEVOICAgNAogCi1pbnQKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihsaW51eF9pcDZfc3RhdF9hbGwsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobGludXhfcmVhZF9pcDZfc3RhdCwgbGludXhfaXA2X3N0YXRfYWxsKQorCitzdGF0aWMgaW50CiBkZWNvZGVfaWNtcF9tc2coY2hhciAqbGluZSwgY2hhciAqZGF0YSwgc3RydWN0IGljbXA0X21zZ19taWIgKm1zZykKIHsKICAgICBjaGFyICp0b2tlbiwgKnNhdmVwdHIsICpsaW5lcHRyLCAqc2F2ZXB0cjEsICpkYXRhcHRyLCAqZGVsaW0gPSBOVUxMOwpAQCAtMTAzLDcgKzEwOCw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLWludAorc3RhdGljIGludAogbGludXhfcmVhZF9taWJJSV9zdGF0cyh2b2lkKQogewogICAgIEZJTEUgICAgICAgICAgICppbiA9IGZvcGVuKCIvcHJvYy9uZXQvc25tcCIsICJyIik7CkBAIC0yMzgsNiArMjQzLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xJTlVYX1JFQURfSVA2X1NUQVQKIGludCBsaW51eF9yZWFkX2lwNl9zdGF0KCBzdHJ1Y3QgaXA2X21pYiAqaXA2c3RhdCkKIHsKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CkBAIC0zNDYsNiArMzUyLDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgaXA2c3RhdCwgKGNoYXIgKikgJmNhY2hlZF9pcDZfbWliLCBzaXplb2YoKmlwNnN0YXQpKTsKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xJTlVYX1JFQURfSVA2X1NUQVQgKi8KIAogaW50CiBsaW51eF9yZWFkX2ljbXBfbXNnX3N0YXQoc3RydWN0IGljbXBfbWliICppY21wc3RhdCwKQEAgLTM3OSw3ICszODYsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1pbnQKK3N0YXRpYyBpbnQKIGxpbnV4X3JlYWRfaWNtcDZfcGFyc2Uoc3RydWN0IGljbXA2X21pYiAqaWNtcDZzdGF0LAogICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDZfbXNnX21pYiAqaWNtcDZtc2dzdGF0LAogICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnN1cHBvcnQpCkBAIC00NzksNiArNDg2LDggQEAKICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cm5jbXAobGluZSArIDUsICJPdXQiLCAzKSkgeyAgLyogT3V0ICovCiAgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJEZXN0VW5yZWFjaHMiKSkgewogICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXREZXN0VW5yZWFjaHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJFY2hvcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dEVjaG9zID0gc3RhdHM7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiRWNob1JlcGxpZXMiKSkgewogICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXRFY2hvUmVwbGllcyA9IHN0YXRzOwogICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIkdyb3VwTWVtYlJlZHVjdGlvbnMiKSkgewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmggYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaAppbmRleCBjNmRmY2E5Li5iM2M1OGQzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaApAQCAtNiwxNjEgKzYsNyBAQAogI2lmbmRlZiBfTUlCR1JPVVBfS0VSTkVMX0xJTlVYX0gKICNkZWZpbmUgX01JQkdST1VQX0tFUk5FTF9MSU5VWF9ICiAKLXN0cnVjdCBpcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZvcndhcmRpbmc7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwRGVmYXVsdFRUTDsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBJblJlY2VpdmVzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluSGRyRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluQWRkckVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBGb3J3RGF0YWdyYW1zOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluVW5rbm93blByb3RvczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBJbkRpc2NhcmRzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluRGVsaXZlcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0UmVxdWVzdHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0RGlzY2FyZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0Tm9Sb3V0ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21UaW1lb3V0OwotICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtUmVxZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21PS3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21GYWlsczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnT0tzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdGYWlsczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnQ3JlYXRlczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSb3V0aW5nRGlzY2FyZHM7Ci19OwotCi1zdHJ1Y3QgaXA2X21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJblJlY2VpdmVzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5IZHJFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJblRvb0JpZ0Vycm9yczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkluTm9Sb3V0ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJbkFkZHJFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJblVua25vd25Qcm90b3M7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJblRydW5jYXRlZFBrdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZJbkRpc2NhcmRzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5EZWxpdmVyczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNk91dEZvcndEYXRhZ3JhbXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZPdXRSZXF1ZXN0czsKLSAgICB1bnNpZ25lZCBsb25nIGlwNk91dERpc2NhcmRzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0Tm9Sb3V0ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbVRpbWVvdXQ7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbVJlcWRzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21PS3M7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbUZhaWxzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2RnJhZ09LczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkZyYWdGYWlsczsKLSAgICB1bnNpZ25lZCBsb25nIGlwNkZyYWdDcmVhdGVzOwotICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5NY2FzdFBrdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpcDZPdXRNY2FzdFBrdHM7Ci19OwotCi1zdHJ1Y3QgaWNtcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5Nc2dzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkRlc3RVbnJlYWNoczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZUV4Y2RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5QYXJtUHJvYnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblNyY1F1ZW5jaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblJlZGlyZWN0czsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRWNob3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVjaG9SZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5UaW1lc3RhbXBSZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5BZGRyTWFza3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkFkZHJNYXNrUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dE1zZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXREZXN0VW5yZWFjaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lRXhjZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRQYXJtUHJvYnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRTcmNRdWVuY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0UmVkaXJlY3RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RWNob3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRFY2hvUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFRpbWVzdGFtcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lc3RhbXBSZXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0QWRkck1hc2tSZXBzOwotfTsKLQotc3RydWN0IGljbXA2X21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluTXNnczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluRGVzdFVucmVhY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblBrdFRvb0JpZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluVGltZUV4Y2RzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblBhcm1Qcm9ibGVtczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5FY2hvczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5FY2hvUmVwbGllczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Hcm91cE1lbWJRdWVyaWVzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Hcm91cE1lbWJSZWR1Y3Rpb25zOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblJvdXRlclNvbGljaXRzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblJvdXRlckFkdmVydGlzZW1lbnRzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbk5laWdoYm9yU29saWNpdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5SZWRpcmVjdHM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dE1zZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dERlc3RVbnJlYWNoczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0UGt0VG9vQmlnczsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0VGltZUV4Y2RzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRQYXJtUHJvYmxlbXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dEVjaG9SZXBsaWVzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRSb3V0ZXJTb2xpY2l0czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0TmVpZ2hib3JTb2xpY2l0czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0TmVpZ2hib3JBZHZlcnRpc2VtZW50czsKLSAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0UmVkaXJlY3RzOwotICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRHcm91cE1lbWJSZXNwb25zZXM7Ci0gICAgdW5zaWduZWQgbG9uZyBpY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnM7Ci19OwotCi1zdHJ1Y3QgaWNtcF9tc2dfbWliIHsKLSAgICB1bnNpZ25lZCBsb25nIEluVHlwZTsKLSAgICB1bnNpZ25lZCBsb25nIE91dFR5cGU7Ci19OwotCi0vKiBMZXRzIHVzZSB3cmFwcGVyIHN0cnVjdHVyZXMgZm9yIGZ1dHVyZSBleHBhbnNpb24gKi8KLXN0cnVjdCBpY21wNF9tc2dfbWliIHsKLSAgICBzdHJ1Y3QgaWNtcF9tc2dfbWliIHZhbHNbMjU2XTsKLX07Ci0KLXN0cnVjdCBpY21wNl9tc2dfbWliIHsKLSAgICBzdHJ1Y3QgaWNtcF9tc2dfbWliIHZhbHNbMjU2XTsKLX07Ci0KLXN0cnVjdCB1ZHBfbWliIHsKLSAgICB1bnNpZ25lZCBsb25nICAgdWRwSW5EYXRhZ3JhbXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHVkcE5vUG9ydHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHVkcEluRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBPdXREYXRhZ3JhbXM7Ci19OwotCi1zdHJ1Y3QgdWRwNl9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgdWRwNkluRGF0YWdyYW1zOwotICAgIHVuc2lnbmVkIGxvbmcgdWRwNk5vUG9ydHM7Ci0gICAgdW5zaWduZWQgbG9uZyB1ZHA2SW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyB1ZHA2T3V0RGF0YWdyYW1zOwotfTsKLQotc3RydWN0IHRjcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9BbGdvcml0aG07Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b01pbjsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvTWF4OwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BNYXhDb25uOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BBY3RpdmVPcGVuczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUGFzc2l2ZU9wZW5zOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BBdHRlbXB0RmFpbHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEVzdGFiUmVzZXRzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BDdXJyRXN0YWI7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEluU2VnczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwT3V0U2VnczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUmV0cmFuc1NlZ3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEluRXJyczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwT3V0UnN0czsKLSAgICBzaG9ydCAgICAgICAgICAgdGNwSW5FcnJzVmFsaWQ7Ci0gICAgc2hvcnQgICAgICAgICAgIHRjcE91dFJzdHNWYWxpZDsKLX07Ci0KKyNpbmNsdWRlICJrZXJuZWxfbWliLmgiCiAKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX2lwX3N0YXQoc3RydWN0IGlwX21pYiAqKTsKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX2lwNl9zdGF0KHN0cnVjdCBpcDZfbWliICopOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX21pYi5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX21pYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiODYzOWYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbWliLmgKQEAgLTAsMCArMSwxNjQgQEAKKy8qCisgKiAgTUlCIHN0YXRpc3RpY3MgZ2F0aGVyaW5nIHN0cnVjdHVyZXMKKyAqLworCisjaWZuZGVmIF9NSUJHUk9VUF9LRVJORUxfTUlCX0gKKyNkZWZpbmUgX01JQkdST1VQX0tFUk5FTF9NSUJfSAorCitzdHJ1Y3QgaXBfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBGb3J3YXJkaW5nOworICAgIHVuc2lnbmVkIGxvbmcgICBpcERlZmF1bHRUVEw7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwSW5SZWNlaXZlczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJbkhkckVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJbkFkZHJFcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwRm9yd0RhdGFncmFtczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJblVua25vd25Qcm90b3M7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwSW5EaXNjYXJkczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBJbkRlbGl2ZXJzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcE91dFJlcXVlc3RzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcE91dERpc2NhcmRzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcE91dE5vUm91dGVzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtVGltZW91dDsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBSZWFzbVJlcWRzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtT0tzOworICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtRmFpbHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwRnJhZ09LczsKKyAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnRmFpbHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwRnJhZ0NyZWF0ZXM7CisgICAgdW5zaWduZWQgbG9uZyAgIGlwUm91dGluZ0Rpc2NhcmRzOworfTsKKworc3RydWN0IGlwNl9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5SZWNlaXZlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluSGRyRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5Ub29CaWdFcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbk5vUm91dGVzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5BZGRyRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5Vbmtub3duUHJvdG9zOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5UcnVuY2F0ZWRQa3RzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5EaXNjYXJkczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluRGVsaXZlcnM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXRGb3J3RGF0YWdyYW1zOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0UmVxdWVzdHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXREaXNjYXJkczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNk91dE5vUm91dGVzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21UaW1lb3V0OworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21SZXFkczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtT0tzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2UmVhc21GYWlsczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkZyYWdPS3M7CisgICAgdW5zaWduZWQgbG9uZyBpcDZGcmFnRmFpbHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZGcmFnQ3JlYXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluTWNhc3RQa3RzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0TWNhc3RQa3RzOworfTsKKworc3RydWN0IGljbXBfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluTXNnczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5EZXN0VW5yZWFjaHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblRpbWVFeGNkczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluUGFybVByb2JzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5TcmNRdWVuY2hzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5SZWRpcmVjdHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVjaG9zOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5FY2hvUmVwczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZXN0YW1wczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZXN0YW1wUmVwczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluQWRkck1hc2tzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5BZGRyTWFza1JlcHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRNc2dzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RGVzdFVucmVhY2hzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0VGltZUV4Y2RzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0UGFybVByb2JzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0U3JjUXVlbmNoczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFJlZGlyZWN0czsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEVjaG9zOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RWNob1JlcHM7CisgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lc3RhbXBzOworICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0VGltZXN0YW1wUmVwczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEFkZHJNYXNrczsKKyAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEFkZHJNYXNrUmVwczsKK307CisKK3N0cnVjdCBpY21wNl9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbk1zZ3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkRlc3RVbnJlYWNoczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Qa3RUb29CaWdzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblRpbWVFeGNkczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5QYXJtUHJvYmxlbXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRWNob3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluRWNob1JlcGxpZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluR3JvdXBNZW1iUXVlcmllczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Hcm91cE1lbWJSZXNwb25zZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluR3JvdXBNZW1iUmVkdWN0aW9uczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Sb3V0ZXJTb2xpY2l0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Sb3V0ZXJBZHZlcnRpc2VtZW50czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5OZWlnaGJvclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbk5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUmVkaXJlY3RzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRNc2dzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXREZXN0VW5yZWFjaHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFBrdFRvb0JpZ3M7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFRpbWVFeGNkczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0UGFybVByb2JsZW1zOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRFY2hvczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0RWNob1JlcGxpZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFJvdXRlclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXROZWlnaGJvclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXROZWlnaGJvckFkdmVydGlzZW1lbnRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRSZWRpcmVjdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9uczsKK307CisKK3N0cnVjdCBpY21wX21zZ19taWIgeworICAgIHVuc2lnbmVkIGxvbmcgSW5UeXBlOworICAgIHVuc2lnbmVkIGxvbmcgT3V0VHlwZTsKK307CisKKy8qIExldHMgdXNlIHdyYXBwZXIgc3RydWN0dXJlcyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworc3RydWN0IGljbXA0X21zZ19taWIgeworICAgIHN0cnVjdCBpY21wX21zZ19taWIgdmFsc1syNTZdOworfTsKKworc3RydWN0IGljbXA2X21zZ19taWIgeworICAgIHN0cnVjdCBpY21wX21zZ19taWIgdmFsc1syNTZdOworfTsKKworc3RydWN0IHVkcF9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBJbkRhdGFncmFtczsKKyAgICB1bnNpZ25lZCBsb25nICAgdWRwTm9Qb3J0czsKKyAgICB1bnNpZ25lZCBsb25nICAgdWRwSW5FcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyAgIHVkcE91dERhdGFncmFtczsKK307CisKK3N0cnVjdCB1ZHA2X21pYiB7CisgICAgdW5zaWduZWQgbG9uZyB1ZHA2SW5EYXRhZ3JhbXM7CisgICAgdW5zaWduZWQgbG9uZyB1ZHA2Tm9Qb3J0czsKKyAgICB1bnNpZ25lZCBsb25nIHVkcDZJbkVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nIHVkcDZPdXREYXRhZ3JhbXM7Cit9OworCitzdHJ1Y3QgdGNwX21pYiB7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b0FsZ29yaXRobTsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvTWluOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9NYXg7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcE1heENvbm47CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcEFjdGl2ZU9wZW5zOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BQYXNzaXZlT3BlbnM7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcEF0dGVtcHRGYWlsczsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwRXN0YWJSZXNldHM7CisgICAgdW5zaWduZWQgbG9uZyAgIHRjcEN1cnJFc3RhYjsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwSW5TZWdzOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BPdXRTZWdzOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSZXRyYW5zU2VnczsKKyAgICB1bnNpZ25lZCBsb25nICAgdGNwSW5FcnJzOworICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BPdXRSc3RzOworICAgIHNob3J0ICAgICAgICAgICB0Y3BJbkVycnNWYWxpZDsKKyAgICBzaG9ydCAgICAgICAgICAgdGNwT3V0UnN0c1ZhbGlkOworfTsKKworI2VuZGlmICAvKiBfTUlCR1JPVVBfS0VSTkVMX01JQl9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmMKaW5kZXggOTNmMzhiNy4uMDgwNjE4MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuYwpAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPG5ldGluZXQvaXBfaWNtcC5oPgogI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC9pY21wX3Zhci5oPgorI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KICNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgogI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+CiAjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdmFyLmg+CkBAIC0zOCw4ICszOSwxMCBAQAogCiAgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKIAotICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LmljbXAuc3RhdHMiLCBpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKQorICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LmljbXAuc3RhdHMiLCBpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoIm5ldGJzZF9yZWFkX2ljbXBfc3RhdDogbmV0LmluZXQuaWNtcC5zdGF0cyIpOwogICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgbWliLT5pY21wSW5Nc2dzID0gaWNtcHN0YXRbSUNNUF9TVEFUX0JBRENPREVdCiAgICAgICAgICsgaWNtcHN0YXRbSUNNUF9TVEFUX1RPT1NIT1JUXQpAQCAtODYsNiArODksMTA0IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKworaW50CituZXRic2RfcmVhZF9pY21wNl9zdGF0KHN0cnVjdCBpY21wNl9taWIgKm1pYikKK3sKKyAgICB1aW50NjRfdCBpY21wc3RhdFtJQ01QNl9OU1RBVFNdOworICAgIHNpemVfdCAgIHNpemUgPSBzaXplb2YoaWNtcHN0YXQpOworICAgIGludCAgICAgIGk7CisKKyAgICAodm9pZCltZW1zZXQobWliLCAwLCBzaXplb2YoKm1pYikpOworCisgICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQ2LmljbXA2LnN0YXRzIiwgaWNtcHN0YXQsICZzaXplLCBOVUxMLCAwKSkgeworCXNubXBfcGVycm9yKCJuZXRic2RfcmVhZF9pY21wNl9zdGF0OiBuZXQuaW5ldDYuaWNtcDYuc3RhdHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG1pYi0+aWNtcDZJbk1zZ3MgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0JBRENPREVdCisgICAgICAgICAgICArIGljbXBzdGF0W0lDTVBfU1RBVF9UT09TSE9SVF0KKwkgICAgKyBpY21wc3RhdFtJQ01QX1NUQVRfQ0hFQ0tTVU1dCisgICAgICAgICAgICArIGljbXBzdGF0W0lDTVBfU1RBVF9CQURMRU5dOworICAgIGZvciAoaSA9IDA7IGkgPD0gSUNNUDZfTUFYVFlQRTsgaSsrKQorICAgICAgICBtaWItPmljbXA2SW5Nc2dzICArPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIGldOworICAgIG1pYi0+aWNtcDZJbkVycm9ycyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfQkFEQ09ERV0KKyAgICAgICAgKyBpY21wc3RhdFtJQ01QNl9TVEFUX1RPT1NIT1JUXQorICAgICAgICArIGljbXBzdGF0W0lDTVA2X1NUQVRfQ0hFQ0tTVU1dCisgICAgICAgICsgaWNtcHN0YXRbSUNNUDZfU1RBVF9CQURMRU5dOworICAgIG1pYi0+aWNtcDZJbkRlc3RVbnJlYWNocyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfRFNUX1VOUkVBQ0hdOworICAgIG1pYi0+aWNtcDZJblBrdFRvb0JpZ3MgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIElDTVA2X1BBQ0tFVF9UT09fQklHXTsKKyAgICBtaWItPmljbXA2SW5UaW1lRXhjZHMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIElDTVA2X1RJTUVfRVhDRUVERURdOworICAgIG1pYi0+aWNtcDZJblBhcm1Qcm9ibGVtcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgSUNNUDZfUEFSQU1fUFJPQl07CisgICAgbWliLT5pY21wNkluRWNob3MgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIElDTVA2X0VDSE9fUkVRVUVTVF07CisgICAgbWliLT5pY21wNkluRWNob1JlcGxpZXMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIElDTVA2X0VDSE9fUkVQTFldOworICAgIG1pYi0+aWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0lOSElTVCArIE1MRF9MSVNURU5FUl9RVUVSWV07CisgICAgbWliLT5pY21wNkluR3JvdXBNZW1iUmVzcG9uc2VzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBNTERfTElTVEVORVJfUkVQT1JUXTsKKyAgICBtaWItPmljbXA2SW5Sb3V0ZXJTb2xpY2l0cyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgTkRfUk9VVEVSX1NPTElDSVRdOworICAgIG1pYi0+aWNtcDZJblJvdXRlckFkdmVydGlzZW1lbnRzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBORF9ST1VURVJfQURWRVJUXTsKKyAgICBtaWItPmljbXA2SW5OZWlnaGJvclNvbGljaXRzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBORF9ORUlHSEJPUl9TT0xJQ0lUXTsKKyAgICBtaWItPmljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9JTkhJU1QgKyBORF9ORUlHSEJPUl9BRFZFUlRdOworICAgIG1pYi0+aWNtcDZJblJlZGlyZWN0cyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUICsgTkRfUkVESVJFQ1RdOworCisgICAgbWliLT5pY21wNk91dE1zZ3MgPSBpY21wc3RhdFtJQ01QNl9TVEFUX0JBRENPREVdCisgICAgICAgICsgaWNtcHN0YXRbSUNNUDZfU1RBVF9UT09TSE9SVF0KKyAgICAgICAgKyBpY21wc3RhdFtJQ01QNl9TVEFUX0NIRUNLU1VNXQorICAgICAgICArIGljbXBzdGF0W0lDTVA2X1NUQVRfQkFETEVOXTsKKyAgICBmb3IgKGkgPSAwOyBpIDw9IElDTVA2X01BWFRZUEU7IGkrKykKKyAgICAgICAgbWliLT5pY21wNk91dE1zZ3MgKz0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgaV07CisgICAgbWliLT5pY21wNk91dERlc3RVbnJlYWNocyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIElDTVA2X0RTVF9VTlJFQUNIXTsKKyAgICBtaWItPmljbXA2T3V0UGt0VG9vQmlncyA9ICBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBJQ01QNl9QQUNLRVRfVE9PX0JJR107CisgICAgbWliLT5pY21wNk91dFRpbWVFeGNkcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIElDTVA2X1RJTUVfRVhDRUVERURdOworICAgIG1pYi0+aWNtcDZPdXRQYXJtUHJvYmxlbXMgPSBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBJQ01QNl9QQVJBTV9QUk9CXTsKKyAgICBtaWItPmljbXA2T3V0RWNob3MgPSBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBJQ01QNl9FQ0hPX1JFUVVFU1RdOworICAgIG1pYi0+aWNtcDZPdXRFY2hvUmVwbGllcyA9IGljbXBzdGF0W0lDTVA2X1NUQVRfT1VUSElTVCArIElDTVA2X0VDSE9fUkVQTFldOworICAgIG1pYi0+aWNtcDZPdXRSb3V0ZXJTb2xpY2l0cyA9ICBpY21wc3RhdFtJQ01QNl9TVEFUX09VVEhJU1QgKyBORF9ST1VURVJfU09MSUNJVF07CisgICAgbWliLT5pY21wNk91dE5laWdoYm9yU29saWNpdHMgPSAgaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTkRfTkVJR0hCT1JfU09MSUNJVF07CisgICAgbWliLT5pY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHMgPSAgaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTkRfTkVJR0hCT1JfQURWRVJUXTsKKyAgICBtaWItPmljbXA2T3V0UmVkaXJlY3RzID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTkRfUkVESVJFQ1RdOworICAgIG1pYi0+aWNtcDZPdXRHcm91cE1lbWJSZXNwb25zZXMgPSAgaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTUxEX0xJU1RFTkVSX1JFUE9SVF07CisgICAgbWliLT5pY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnMgPSAgaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUICsgTUxEX0xJU1RFTkVSX0RPTkVdOworCisgICAgcmV0dXJuIDA7Cit9CisKKworaW50CituZXRic2RfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqbXNnbWliLAorCQkJICBpbnQgKmZsYWcpCit7CisgICAgbmV0YnNkX3JlYWRfaWNtcF9zdGF0KG1pYik7CisgICAgKmZsYWcgPSAwOworICAgIHJldHVybiAwOworfQorCisKK2ludAorbmV0YnNkX3JlYWRfaWNtcDZfbXNnX3N0YXQoc3RydWN0IGljbXA2X21pYiAqbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKm1zZ21pYiwKKwkJCSAgIGludCAqc3VwcG9ydCkKK3sKKyAgICB1aW50NjRfdCBpY21wc3RhdFtJQ01QNl9OU1RBVFNdOworICAgIHNpemVfdCAgIHNpemUgPSBzaXplb2YoaWNtcHN0YXQpOworICAgIGludCAgICAgIGk7CisKKyAgICBuZXRic2RfcmVhZF9pY21wNl9zdGF0KG1pYik7CisKKyAgICBpZiAoLTEgPT0gc3lzY3RsYnluYW1lKCJuZXQuaW5ldDYuaWNtcDYuc3RhdHMiLCBpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoIm5ldGJzZF9yZWFkX2ljbXA2X3N0YXQ6IG5ldC5pbmV0Ni5pY21wNi5zdGF0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CisJbXNnbWliLT52YWxzW2ldLkluVHlwZSA9IGljbXBzdGF0W0lDTVA2X1NUQVRfSU5ISVNUK2ldOworCW1zZ21pYi0+dmFsc1tpXS5PdXRUeXBlID0gaWNtcHN0YXRbSUNNUDZfU1RBVF9PVVRISVNUK2ldOworICAgIH0KKyAgICAqc3VwcG9ydCA9IDE7CisgICAgcmV0dXJuIDA7Cit9CisKKwogaW50CiBuZXRic2RfcmVhZF9pcF9zdGF0KHN0cnVjdCBpcF9taWIgKm1pYikKIHsKQEAgLTk3LDggKzE5OCwxMCBAQAogCiAgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKIAotICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LmlwLnN0YXRzIiwgaXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpCisgICAgaWYgKC0xID09IHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuaXAuc3RhdHMiLCBpcHN0YXQsICZzaXplLCBOVUxMLCAwKSkgeworCXNubXBfcGVycm9yKCJuZXRic2RfcmVhZF9pcF9zdGF0OiBuZXQuaW5ldC5pcC5zdGF0cyIpOwogICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgbWliLT5pcEZvcndhcmRpbmcgPSAwOwogICAgIGxlbiA9IHNpemVvZiBpOwpAQCAtMTM4LDYgKzI0MSw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKwogaW50CiBuZXRic2RfcmVhZF90Y3Bfc3RhdChzdHJ1Y3QgdGNwX21pYiAqbWliKQogewpAQCAtMTQ2LDggKzI1MCwxMCBAQAogCiAgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKIAotICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnRjcC5zdGF0cyIsIHRjcHN0YXQsICZzaXplLCBOVUxMLCAwKSkKKyAgICBpZiAoLTEgPT0gc3lzY3RsYnluYW1lKCJuZXQuaW5ldC50Y3Auc3RhdHMiLCB0Y3BzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigibmV0YnNkX3JlYWRfdGNwX3N0YXQ6IG5ldC5pbmV0LnRjcC5zdGF0cyIpOwogICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgbWliLT50Y3BSdG9BbGdvcml0aG0gPSA0OyAvKiBBc3N1bWUgVmFuIEphY29ic2VuJ3MgYWxnb3JpdGhtICovCiAgICAgbWliLT50Y3BSdG9NaW4gPSBUQ1BUVl9NSU47CkBAIC0xNzQsNiArMjgwLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorCiBpbnQKIG5ldGJzZF9yZWFkX3VkcF9zdGF0KHN0cnVjdCB1ZHBfbWliICptaWIpCiB7CkBAIC0xODIsMTQgKzI4OSwxNiBAQAogCiAgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKIAotICAgIGlmICgtMSA9PSBzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnVkcC5zdGF0cyIsIHVkcHN0YXQsICZzaXplLCBOVUxMLCAwKSkKKyAgICBpZiAoLTEgPT0gc3lzY3RsYnluYW1lKCJuZXQuaW5ldC51ZHAuc3RhdHMiLCB1ZHBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigibmV0YnNkX3JlYWRfdWRwX3N0YXQ6IG5ldC5pbmV0LnVkcC5zdGF0cyIpOwogICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgbWliLT51ZHBJbkRhdGFncmFtcyA9IHVkcHN0YXRbVURQX1NUQVRfSVBBQ0tFVFNdOwogICAgIG1pYi0+dWRwTm9Qb3J0cyA9IHVkcHN0YXRbVURQX1NUQVRfTk9QT1JUXTsKICAgICBtaWItPnVkcE91dERhdGFncmFtcyA9IHVkcHN0YXRbVURQX1NUQVRfT1BBQ0tFVFNdOwogICAgIG1pYi0+dWRwSW5FcnJvcnMgPSB1ZHBzdGF0W1VEUF9TVEFUX0hEUk9QU10KLSAgICAgICAgKyB1ZHBzdGF0W1VEUF9TVEFUX0JBRFNVTV0gLyogKyB1ZHBzdGF0W1VEUF9TVEFUX0RJU0NBUkRdIC8qIEZJWE1FICovCisgICAgICAgICsgdWRwc3RhdFtVRFBfU1RBVF9CQURTVU1dIC8qICsgdWRwc3RhdFtVRFBfU1RBVF9ESVNDQVJEXSAqLyAvKiBGSVhNRSAqLwogICAgICAgICArIHVkcHN0YXRbVURQX1NUQVRfRlVMTFNPQ0tdICsgdWRwc3RhdFtVRFBfU1RBVF9CQURMRU5dOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmgKaW5kZXggOTAwMDY4Mi4uYWNjYjlhNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX25ldGJzZC5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9uZXRic2QuaApAQCAtMyw4NSArMywxNiBAQAogCiAjaWYgZGVmaW5lZChORVRCU0RfU1RBVFNfVklBX1NZU0NUTCkKIAotc3RydWN0IGljbXBfbWliIHsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluTXNnczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5EZXN0VW5yZWFjaHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJblRpbWVFeGNkczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluUGFybVByb2JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5TcmNRdWVuY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5SZWRpcmVjdHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVjaG9zOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5FY2hvUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZXN0YW1wczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluVGltZXN0YW1wUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcEluQWRkck1hc2tzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wSW5BZGRyTWFza1JlcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRNc2dzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RGVzdFVucmVhY2hzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0VGltZUV4Y2RzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0UGFybVByb2JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0U3JjUXVlbmNoczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dFJlZGlyZWN0czsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEVjaG9zOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0RWNob1JlcHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRUaW1lc3RhbXBzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpY21wT3V0VGltZXN0YW1wUmVwczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEFkZHJNYXNrczsKLSAgICB1bnNpZ25lZCBsb25nICAgaWNtcE91dEFkZHJNYXNrUmVwczsKLX07Ci0KLXN0cnVjdCBpcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZvcndhcmRpbmc7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwRGVmYXVsdFRUTDsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBJblJlY2VpdmVzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluSGRyRXJyb3JzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluQWRkckVycm9yczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBGb3J3RGF0YWdyYW1zOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluVW5rbm93blByb3RvczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBJbkRpc2NhcmRzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEluRGVsaXZlcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0UmVxdWVzdHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0RGlzY2FyZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwT3V0Tm9Sb3V0ZXM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21UaW1lb3V0OwotICAgIHVuc2lnbmVkIGxvbmcgICBpcFJlYXNtUmVxZHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21PS3M7Ci0gICAgdW5zaWduZWQgbG9uZyAgIGlwUmVhc21GYWlsczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnT0tzOwotICAgIHVuc2lnbmVkIGxvbmcgICBpcEZyYWdGYWlsczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBGcmFnQ3JlYXRlczsKLSAgICB1bnNpZ25lZCBsb25nICAgaXBSb3V0aW5nRGlzY2FyZHM7Ci19OwotCi1zdHJ1Y3QgdGNwX21pYiB7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b0FsZ29yaXRobTsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwUnRvTWluOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9NYXg7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcE1heENvbm47Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEFjdGl2ZU9wZW5zOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BQYXNzaXZlT3BlbnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEF0dGVtcHRGYWlsczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwRXN0YWJSZXNldHM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHRjcEN1cnJFc3RhYjsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwSW5TZWdzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BPdXRTZWdzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSZXRyYW5zU2VnczsKLSAgICB1bnNpZ25lZCBsb25nICAgdGNwSW5FcnJzOwotICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BPdXRSc3RzOwotICAgIHNob3J0ICAgICAgICAgICB0Y3BJbkVycnNWYWxpZDsKLSAgICBzaG9ydCAgICAgICAgICAgdGNwT3V0UnN0c1ZhbGlkOwotfTsKLQotc3RydWN0IHVkcF9taWIgewotICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBJbkRhdGFncmFtczsKLSAgICB1bnNpZ25lZCBsb25nICAgdWRwTm9Qb3J0czsKLSAgICB1bnNpZ25lZCBsb25nICAgdWRwSW5FcnJvcnM7Ci0gICAgdW5zaWduZWQgbG9uZyAgIHVkcE91dERhdGFncmFtczsKLX07CisjaW5jbHVkZSAia2VybmVsX21pYi5oIgogCiBpbnQgICAgICBuZXRic2RfcmVhZF9pY21wX3N0YXQoc3RydWN0IGljbXBfbWliICopOworaW50ICAgICAgbmV0YnNkX3JlYWRfaWNtcDZfc3RhdChzdHJ1Y3QgaWNtcDZfbWliICopOworaW50ICAgICAgbmV0YnNkX3JlYWRfaWNtcF9tc2dfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA0X21zZ19taWIgKiwKKwkJIAkJICBpbnQgKmZsYWcpOworaW50ICAgICAgbmV0YnNkX3JlYWRfaWNtcDZfbXNnX3N0YXQoc3RydWN0IGljbXA2X21pYiAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKiwKKwkJCQkgICAgaW50ICpzdXBwb3J0KTsKIGludCAgICAgIG5ldGJzZF9yZWFkX2lwX3N0YXQoc3RydWN0IGlwX21pYiAqKTsKIGludCAgICAgIG5ldGJzZF9yZWFkX3RjcF9zdGF0KHN0cnVjdCB0Y3BfbWliICopOwogaW50ICAgICAgbmV0YnNkX3JlYWRfdWRwX3N0YXQoc3RydWN0IHVkcF9taWIgKik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfc3lzY3RsLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfc3lzY3RsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY2ZjY2NAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9zeXNjdGwuYwpAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIHN5c2N0bCBpbnRlcmZhY2UgZm9yIGljbXAgc3RhdHMgZm9yIG90aGVycyB0aGFuIE5ldEJTRAorICovCisKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8c3lzL3Byb3Rvc3cuaD4KKworI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luX3N5c3RtLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaXBfaWNtcC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pY21wX3Zhci5oPgorI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgImtlcm5lbF9zeXNjdGwuaCIKKworI2lmIGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkKKworaW50CitzeXNjdGxfcmVhZF9pY21wX3N0YXQoc3RydWN0IGljbXBfbWliICptaWIpCit7CisgICAgc3RydWN0IGljbXBzdGF0IGljbXBzdGF0OworICAgIHNpemVfdCAgIHNpemUgPSBzaXplb2YoaWNtcHN0YXQpOworICAgIGludCAgICAgIGk7CisgICAgc3RhdGljIGludCAgICAgIHNuYW1lWzRdID0KKyAgICAgICAgeyBDVExfTkVULCBQRl9JTkVULCBJUFBST1RPX0lDTVAsIElDTVBDVExfU1RBVFMgfTsKKworICAgICh2b2lkKW1lbXNldChtaWIsIDAsIHNpemVvZigqbWliKSk7CisKKyAgICBpZiAoLTEgPT0gc3lzY3RsKHNuYW1lLCA0LCAmaWNtcHN0YXQsICZzaXplLCBOVUxMLCAwKSkgeworCXNubXBfcGVycm9yKCJzeXNjdGxfcmVhZF9pY21wX3N0YXQ6IG5ldC5pbmV0LmljbXAuc3RhdHMiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG1pYi0+aWNtcEluTXNncyA9IGljbXBzdGF0LmljcHNfYmFkY29kZQorICAgICAgICArIGljbXBzdGF0LmljcHNfdG9vc2hvcnQKKyAgICAgICAgKyBpY21wc3RhdC5pY3BzX2NoZWNrc3VtCisgICAgICAgICsgaWNtcHN0YXQuaWNwc19iYWRsZW47CisgICAgbWliLT5pY21wSW5FcnJvcnMgPSBtaWItPmljbXBJbk1zZ3M7CisgICAgZm9yIChpID0gMDsgaSA8PSBJQ01QX01BWFRZUEU7IGkrKykKKyAgICAgICAgbWliLT5pY21wSW5Nc2dzICArPSBpY21wc3RhdC5pY3BzX2luaGlzdFtpXTsKKyAgICBtaWItPmljbXBJbkRlc3RVbnJlYWNocyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfVU5SRUFDSF07CisgICAgbWliLT5pY21wSW5UaW1lRXhjZHMgPSBpY21wc3RhdC5pY3BzX2luaGlzdFtJQ01QX1RJTVhDRUVEXTsKKyAgICBtaWItPmljbXBJblBhcm1Qcm9icyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfUEFSQU1QUk9CXTsKKyAgICBtaWItPmljbXBJblNyY1F1ZW5jaHMgPSBpY21wc3RhdC5pY3BzX2luaGlzdFtJQ01QX1NPVVJDRVFVRU5DSF07CisgICAgbWliLT5pY21wSW5SZWRpcmVjdHMgPSBpY21wc3RhdC5pY3BzX2luaGlzdFtJQ01QX1JFRElSRUNUXTsKKyAgICBtaWItPmljbXBJbkVjaG9zID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9FQ0hPXTsKKyAgICBtaWItPmljbXBJbkVjaG9SZXBzID0gaWNtcHN0YXQuaWNwc19pbmhpc3RbSUNNUF9FQ0hPUkVQTFldOworICAgIG1pYi0+aWNtcEluVGltZXN0YW1wcyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfVFNUQU1QXTsKKyAgICBtaWItPmljbXBJblRpbWVzdGFtcFJlcHMgPSBpY21wc3RhdC5pY3BzX2luaGlzdFtJQ01QX1RTVEFNUFJFUExZXTsKKyAgICBtaWItPmljbXBJbkFkZHJNYXNrcyA9IGljbXBzdGF0LmljcHNfaW5oaXN0W0lDTVBfTUFTS1JFUV07CisgICAgbWliLT5pY21wSW5BZGRyTWFza1JlcHMgPSBpY21wc3RhdC5pY3BzX2luaGlzdFtJQ01QX01BU0tSRVBMWV07CisgICAgbWliLT5pY21wT3V0TXNncyA9IGljbXBzdGF0LmljcHNfb2xkc2hvcnQgKyBpY21wc3RhdC5pY3BzX29sZGljbXA7CisgICAgZm9yIChpID0gMDsgaSA8PSBJQ01QX01BWFRZUEU7IGkrKykKKyAgICAgICAgbWliLT5pY21wT3V0TXNncyArPSBpY21wc3RhdC5pY3BzX291dGhpc3RbaV07CisgICAgbWliLT5pY21wT3V0RXJyb3JzID0gaWNtcHN0YXQuaWNwc19vbGRzaG9ydCArIGljbXBzdGF0LmljcHNfb2xkaWNtcDsKKyAgICBtaWItPmljbXBPdXREZXN0VW5yZWFjaHMgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9VTlJFQUNIXTsKKyAgICBtaWItPmljbXBPdXRUaW1lRXhjZHMgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9USU1YQ0VFRF07CisgICAgbWliLT5pY21wT3V0UGFybVByb2JzID0gaWNtcHN0YXQuaWNwc19vdXRoaXN0W0lDTVBfUEFSQU1QUk9CXTsKKyAgICBtaWItPmljbXBPdXRTcmNRdWVuY2hzID0gaWNtcHN0YXQuaWNwc19vdXRoaXN0W0lDTVBfU09VUkNFUVVFTkNIXTsKKyAgICBtaWItPmljbXBPdXRSZWRpcmVjdHMgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9SRURJUkVDVF07CisgICAgbWliLT5pY21wT3V0RWNob3MgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9FQ0hPXTsKKyAgICBtaWItPmljbXBPdXRFY2hvUmVwcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX0VDSE9SRVBMWV07CisgICAgbWliLT5pY21wT3V0VGltZXN0YW1wcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX1RTVEFNUF07CisgICAgbWliLT5pY21wT3V0VGltZXN0YW1wUmVwcyA9IGljbXBzdGF0LmljcHNfb3V0aGlzdFtJQ01QX1RTVEFNUFJFUExZXTsKKyAgICBtaWItPmljbXBPdXRBZGRyTWFza3MgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9NQVNLUkVRXTsKKyAgICBtaWItPmljbXBPdXRBZGRyTWFza1JlcHMgPSBpY21wc3RhdC5pY3BzX291dGhpc3RbSUNNUF9NQVNLUkVQTFldOworCisgICAgcmV0dXJuIDA7Cit9CisKKworaW50CitzeXNjdGxfcmVhZF9pY21wNl9zdGF0KHN0cnVjdCBpY21wNl9taWIgKm1pYikKK3sKKyAgICBzdHJ1Y3QgaWNtcDZzdGF0IGljbXBzdGF0OworICAgIHNpemVfdCAgIHNpemUgPSBzaXplb2YoaWNtcHN0YXQpOworICAgIGludCAgICAgIGk7CisgICAgc3RhdGljIGludCAgICAgIHNuYW1lWzRdID0KKyAgICAgICAgeyBDVExfTkVULCBQRl9JTkVUNiwgSVBQUk9UT19JQ01QVjYsIElDTVBWNkNUTF9TVEFUUyB9OworCisgICAgKHZvaWQpbWVtc2V0KG1pYiwgMCwgc2l6ZW9mKCptaWIpKTsKKworICAgIGlmICgtMSA9PSBzeXNjdGwoc25hbWUsIDQsICZpY21wc3RhdCwgJnNpemUsIE5VTEwsIDApKSB7CisJc25tcF9wZXJyb3IoInN5c2N0bF9yZWFkX2ljbXA2X3N0YXQ6IG5ldC5pbmV0Ni5pY21wNi5zdGF0cyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWliLT5pY21wNkluTXNncyA9IGljbXBzdGF0LmljcDZzX2JhZGNvZGUKKyAgICAgICAgICAgICsgaWNtcHN0YXQuaWNwNnNfdG9vc2hvcnQKKwkgICAgKyBpY21wc3RhdC5pY3A2c19jaGVja3N1bQorICAgICAgICAgICAgKyBpY21wc3RhdC5pY3A2c19iYWRsZW47CisgICAgbWliLT5pY21wNkluRXJyb3JzID0gbWliLT5pY21wNkluTXNnczsKKyAgICBmb3IgKGkgPSAwOyBpIDw9IElDTVA2X01BWFRZUEU7IGkrKykKKyAgICAgICAgbWliLT5pY21wNkluTXNncyAgKz0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W2ldOworICAgIG1pYi0+aWNtcDZJbkRlc3RVbnJlYWNocyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtJQ01QNl9EU1RfVU5SRUFDSF07CisgICAgbWliLT5pY21wNkluUGt0VG9vQmlncyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtJQ01QNl9QQUNLRVRfVE9PX0JJR107CisgICAgbWliLT5pY21wNkluVGltZUV4Y2RzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X1RJTUVfRVhDRUVERURdOworICAgIG1pYi0+aWNtcDZJblBhcm1Qcm9ibGVtcyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtJQ01QNl9QQVJBTV9QUk9CXTsKKyAgICBtaWItPmljbXA2SW5FY2hvcyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtJQ01QNl9FQ0hPX1JFUVVFU1RdOworICAgIG1pYi0+aWNtcDZJbkVjaG9SZXBsaWVzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W0lDTVA2X0VDSE9fUkVQTFldOworICAgIG1pYi0+aWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbTUxEX0xJU1RFTkVSX1FVRVJZXTsKKyAgICBtaWItPmljbXA2SW5Hcm91cE1lbWJSZXNwb25zZXMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbTUxEX0xJU1RFTkVSX1JFUE9SVF07CisgICAgbWliLT5pY21wNkluUm91dGVyU29saWNpdHMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbTkRfUk9VVEVSX1NPTElDSVRdOworICAgIG1pYi0+aWNtcDZJblJvdXRlckFkdmVydGlzZW1lbnRzID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W05EX1JPVVRFUl9BRFZFUlRdOworICAgIG1pYi0+aWNtcDZJbk5laWdoYm9yU29saWNpdHMgPSBpY21wc3RhdC5pY3A2c19pbmhpc3RbTkRfTkVJR0hCT1JfU09MSUNJVF07CisgICAgbWliLT5pY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50cyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtORF9ORUlHSEJPUl9BRFZFUlRdOworICAgIG1pYi0+aWNtcDZJblJlZGlyZWN0cyA9IGljbXBzdGF0LmljcDZzX2luaGlzdFtORF9SRURJUkVDVF07CisKKyAgICBtaWItPmljbXA2T3V0TXNncyA9IGljbXBzdGF0LmljcDZzX2NhbnRlcnJvcgorICAgICAgICArIGljbXBzdGF0LmljcDZzX3Rvb2ZyZXE7CisgICAgZm9yIChpID0gMDsgaSA8PSBJQ01QNl9NQVhUWVBFOyBpKyspCisgICAgICAgIG1pYi0+aWNtcDZPdXRNc2dzICs9IGljbXBzdGF0LmljcDZzX291dGhpc3RbaV07CisgICAgbWliLT5pY21wNk91dERlc3RVbnJlYWNocyA9IGljbXBzdGF0LmljcDZzX291dGhpc3RbSUNNUDZfRFNUX1VOUkVBQ0hdOworICAgIG1pYi0+aWNtcDZPdXRQa3RUb29CaWdzID0gIGljbXBzdGF0LmljcDZzX291dGhpc3RbSUNNUDZfUEFDS0VUX1RPT19CSUddOworICAgIG1pYi0+aWNtcDZPdXRUaW1lRXhjZHMgPSBpY21wc3RhdC5pY3A2c19vdXRoaXN0W0lDTVA2X1RJTUVfRVhDRUVERURdOworICAgIG1pYi0+aWNtcDZPdXRQYXJtUHJvYmxlbXMgPSBpY21wc3RhdC5pY3A2c19vdXRoaXN0W0lDTVA2X1BBUkFNX1BST0JdOworICAgIG1pYi0+aWNtcDZPdXRFY2hvcyA9IGljbXBzdGF0LmljcDZzX291dGhpc3RbSUNNUDZfRUNIT19SRVFVRVNUXTsKKyAgICBtaWItPmljbXA2T3V0RWNob1JlcGxpZXMgPSBpY21wc3RhdC5pY3A2c19vdXRoaXN0W0lDTVA2X0VDSE9fUkVQTFldOworICAgIG1pYi0+aWNtcDZPdXRSb3V0ZXJTb2xpY2l0cyA9ICBpY21wc3RhdC5pY3A2c19vdXRoaXN0W05EX1JPVVRFUl9TT0xJQ0lUXTsKKyAgICBtaWItPmljbXA2T3V0TmVpZ2hib3JTb2xpY2l0cyA9ICBpY21wc3RhdC5pY3A2c19vdXRoaXN0W05EX05FSUdIQk9SX1NPTElDSVRdOworICAgIG1pYi0+aWNtcDZPdXROZWlnaGJvckFkdmVydGlzZW1lbnRzID0gIGljbXBzdGF0LmljcDZzX291dGhpc3RbTkRfTkVJR0hCT1JfQURWRVJUXTsKKyAgICBtaWItPmljbXA2T3V0UmVkaXJlY3RzID0gaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtORF9SRURJUkVDVF07CisgICAgbWliLT5pY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlcyA9ICBpY21wc3RhdC5pY3A2c19vdXRoaXN0W01MRF9MSVNURU5FUl9SRVBPUlRdOworICAgIG1pYi0+aWNtcDZPdXRHcm91cE1lbWJSZWR1Y3Rpb25zID0gIGljbXBzdGF0LmljcDZzX291dGhpc3RbTUxEX0xJU1RFTkVSX0RPTkVdOworCisgICAgcmV0dXJuIDA7Cit9CisKKworaW50CitzeXNjdGxfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqbXNnbWliLAorCQkJICBpbnQgKmZsYWcpCit7CisgICAgc3lzY3RsX3JlYWRfaWNtcF9zdGF0KG1pYik7CisgICAgKmZsYWcgPSAwOworICAgIHJldHVybiAwOworfQorCisKK2ludAorc3lzY3RsX3JlYWRfaWNtcDZfbXNnX3N0YXQoc3RydWN0IGljbXA2X21pYiAqbWliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKm1zZ21pYiwKKwkJCSAgIGludCAqc3VwcG9ydCkKK3sKKyAgICBzdHJ1Y3QgaWNtcDZzdGF0IGljbXBzdGF0OworICAgIHNpemVfdCAgIHNpemUgPSBzaXplb2YoaWNtcHN0YXQpOworICAgIGludCAgICAgIGk7CisgICAgc3RhdGljIGludCAgICAgIHNuYW1lWzRdID0KKyAgICAgICAgeyBDVExfTkVULCBQRl9JTkVUNiwgSVBQUk9UT19JQ01QVjYsIElDTVBWNkNUTF9TVEFUUyB9OworCisgICAgc3lzY3RsX3JlYWRfaWNtcDZfc3RhdChtaWIpOworCisgICAgaWYgKC0xID09IHN5c2N0bChzbmFtZSwgNCwgJmljbXBzdGF0LCAmc2l6ZSwgTlVMTCwgMCkpIHsKKwlzbm1wX3BlcnJvcigic3lzY3RsX3JlYWRfaWNtcDZfc3RhdDogbmV0LmluZXQ2LmljbXA2LnN0YXRzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspIHsKKwltc2dtaWItPnZhbHNbaV0uSW5UeXBlID0gaWNtcHN0YXQuaWNwNnNfaW5oaXN0W2ldOworCW1zZ21pYi0+dmFsc1tpXS5PdXRUeXBlID0gaWNtcHN0YXQuaWNwNnNfb3V0aGlzdFtpXTsKKyAgICB9CisgICAgKnN1cHBvcnQgPSAxOworICAgIHJldHVybiAwOworfQorCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX3N5c2N0bC5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX3N5c2N0bC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ODQ5NzMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfc3lzY3RsLmgKQEAgLTAsMCArMSwxOSBAQAorI2lmbmRlZiBfTUlCR1JPVVBfS0VSTkVMX1NZU0NUTF9ICisjZGVmaW5lIF9NSUJHUk9VUF9LRVJORUxfU1lTQ1RMX0gKKworI2lmIGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkKKworI2luY2x1ZGUgImtlcm5lbF9taWIuaCIKKworaW50ICAgICAgc3lzY3RsX3JlYWRfaWNtcF9zdGF0KHN0cnVjdCBpY21wX21pYiAqKTsKK2ludCAgICAgIHN5c2N0bF9yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqKTsKK2ludCAgICAgIHN5c2N0bF9yZWFkX2ljbXBfbXNnX3N0YXQoc3RydWN0IGljbXBfbWliICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNF9tc2dfbWliICosCisJCSAJCSAgaW50ICpmbGFnKTsKK2ludCAgICAgIHN5c2N0bF9yZWFkX2ljbXA2X21zZ19zdGF0KHN0cnVjdCBpY21wNl9taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNl9tc2dfbWliICosCisJCQkJICAgIGludCAqc3VwcG9ydCk7CisKKyNlbmRpZiAvKiBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMICovCisKKyNlbmRpZiAvKiBfTUlCR1JPVVBfS0VSTkVMX1NZU0NUTF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaCBiL2FnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oCmluZGV4IDE2MGFiODIuLjg3ZWY5ZDEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL21pYklJX2NvbW1vbi5oCkBAIC04OCw3ICs4OCw2IEBACiAjaW5jbHVkZSA8ZG1hbGxvYy5oPgogI2VuZGlmCiAKLQogI2lmZGVmIHNvbGFyaXMyCiAjaW5jbHVkZSAia2VybmVsX3N1bm9zNS5oIgogI2Vsc2UKQEAgLTEwMCw2ICs5OSwxMCBAQAogI2lmZGVmIE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMCiAjaW5jbHVkZSAia2VybmVsX25ldGJzZC5oIgogI2VuZGlmCisjaWYgZGVmaW5lZChORVRTTk1QX0NBTl9VU0VfU1lTQ1RMKSAvKiAmJiBkZWZpbmVkKElDTVBDVExfU1RBVFMpICovCisjaW5jbHVkZSAia2VybmVsX3N5c2N0bC5oIgorI2VuZGlmCisKIAkvKiBvciBNSUJfeHh4Q09VTlRFUl9TWU1CT0wgfHwgaHB1eDExICovCiAjaWZkZWYgaHB1eAogI2luY2x1ZGUgPHN5cy9taWIuaD4KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5jCmluZGV4IDkwYTBhYmEuLjg1YTQwOTggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYwpAQCAtMiw5ICsyLDEzIEBACiAgKiAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIHNubXBTZXRTZXJpYWxObyBUZXN0QW5kSW5jciBjb3VudGVyCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUod2F0Y2hlcl9zcGlubG9jaykKKworCiAjaW5jbHVkZSAic2V0U2VyaWFsTm8uaCIKIAogLyoKQEAgLTYwLDEzICs2NCwyMSBAQAogICAgIC8qCiAgICAgICogUmVnaXN0ZXIgJ3NldHNlcmlhbG5vJyBhcyBhIHdhdGNoZWQgc3BpbmxvY2sgb2JqZWN0CiAgICAgICovCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zcGlubG9jaygKICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNubXBTZXRTZXJpYWxObyIsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9zZXJpYWxfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHNldF9zZXJpYWxfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZXRzZXJpYWxubyApOwotCisjZWxzZSAgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zcGlubG9jaygKKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNubXBTZXRTZXJpYWxObyIsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9zZXJpYWxfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHNldF9zZXJpYWxfb2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNldHNlcmlhbG5vICk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIERFQlVHTVNHVEwoKCJzY2FsYXJfaW50IiwgIkRvbmUgaW5pdGFsaXppbmcgZXhhbXBsZSBzY2FsYXIgaW50XG4iKSk7CiB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jCmluZGV4IDBhMjNjOWUuLjFlYmU2NGMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CkBAIC02LDYgKzcsMTAgQEAKICNpbmNsdWRlICJzbm1wX21pYi5oIgogI2luY2x1ZGUgInVwZGF0ZXMuaCIKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3RydXRodmFsdWUpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIHN0YXRpYyBjb25zdCBvaWQgc25tcF9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMTEgfTsKIAogZXh0ZXJuIGxvbmcgc25tcF9lbmFibGVhdXRoZW50cmFwczsKQEAgLTMwLDExICszNSwxMyBAQAogICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCiAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCiB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKSB7CiAgICAgICAgIGludCByZXMgPSBuZXRzbm1wX2NoZWNrX3ZiX3RydXRodmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2Yik7CiAgICAgICAgIGlmIChyZXMgIT0gU05NUF9FUlJfTk9FUlJPUikKICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIHJlcyk7CiAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jCmluZGV4IDJlZmZmZWIuLmM2M2VmYjYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KQEAgLTgsNiArOSwxMSBAQAogI2luY2x1ZGUgInNubXBfbWliXzVfNS5oIgogI2luY2x1ZGUgInVwZGF0ZXMuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVscGVyX3N0YXRpc3RpY3MpCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHJ1dGh2YWx1ZSkKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogI2RlZmluZSBTTk1QX09JRCAxLCAzLCA2LCAxLCAyLCAxLCAxMQogCiBzdGF0aWMgb2lkIHNubXBfb2lkW10gPSB7IFNOTVBfT0lEIH07CkBAIC0zNCwxMSArNDAsMTMgQEAKICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAogICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQogeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSkgewogICAgICAgICBpbnQgcmVzID0gbmV0c25tcF9jaGVja192Yl90cnV0aHZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIpOwogICAgICAgICBpZiAocmVzICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCByZXMpOwogICAgIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKQEAgLTkxLDExICs5OSwyMCBAQAogICAgICAgICBvaWQgc25tcEVuYWJsZUF1dGhlblRyYXBzX29pZFtdID0geyBTTk1QX09JRCwgMzAsIDAgfTsKIAlzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gZW5hYmxlYXV0aGVuX2luZm87CiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyA9CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAgICJtaWJJSS9zbm1wRW5hYmxlQXV0aGVuVHJhcHMiLAogICAgICAgICAgICAgICAgIHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWQsCiAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkKSwKICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsICZzbm1wX2VuYWJsZWF1dGhlbnRyYXBzc2V0KTsKKyNlbHNlICAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3NubXBFbmFibGVBdXRoZW5UcmFwcyIsCisgICAgICAgICAgICAgICAgc25tcEVuYWJsZUF1dGhlblRyYXBzX29pZCwKKyAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCAmc25tcF9lbmFibGVhdXRoZW50cmFwc3NldCk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAgICAgICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBuZXRzbm1wX2dldF90cnV0aHZhbHVlKCkpOwogICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCiAgICAgICAgICAgICByZWcsCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKaW5kZXggNTY3NDc4YS4uZWQyNjkxOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYwpAQCAtOCw2ICs4LDExIEBACiAKICNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9jb250YWluZXIpCisKKwogLyoqIFR5cGljYWwgZGF0YSBzdHJ1Y3R1cmUgZm9yIGEgcm93IGVudHJ5ICovCiB0eXBlZGVmIHN0cnVjdCBzeXNPUlRhYmxlX2VudHJ5X3MgewogICAgIG5ldHNubXBfaW5kZXggICAgICAgICAgICBvaWRfaW5kZXg7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMKaW5kZXggOWI1YmY1Ni4uNjViMGI3YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYwpAQCAtMTQsNiArMTQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtNDQsNiArNDUsOCBAQAogI2luY2x1ZGUgInN5c3RlbV9taWIuaCIKICNpbmNsdWRlICJ1cGRhdGVzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHdhdGNoZXJfcmVhZF9vbmx5X2ludF9zY2FsYXIpCisKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEtlcm5lbCAmIGludGVyZmFjZSBpbmZvcm1hdGlvbiwKQEAgLTgxLDI5ICs4NCwyMyBAQAogCSAqKioqKioqKioqKioqKioqKioqKiovCiAKIHN0YXRpYyB2b2lkCi1zeXN0ZW1fcGFyc2VfY29uZmlnX3N5c2Rlc2NyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQorc3lzdGVtX3BhcnNlX2NvbmZpZ19zdHJpbmcyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqIHZhbHVlLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBpZiAoc3RybGVuKGNwdHIpID49IHNpemVvZih2ZXJzaW9uX2Rlc2NyKSkgewotCW5ldHNubXBfY29uZmlnX2Vycm9yKCJzeXNkZXNjciB0b2tlbiB0b28gbG9uZyAobXVzdCBiZSA8ICVsdSk6XG5cdCVzIiwKLQkJCSAgICAgKHVuc2lnbmVkIGxvbmcpc2l6ZW9mKHZlcnNpb25fZGVzY3IpLCBjcHRyKTsKLSAgICB9IGVsc2UgaWYgKHN0cmNtcChjcHRyLCAiXCJcIiIpID09IDApIHsKLSAgICAgICAgdmVyc2lvbl9kZXNjclswXSA9ICdcMCc7CisgICAgaWYgKHN0cmxlbihjcHRyKSA8IHNpemUpIHsKKyAgICAgICAgc3RyY3B5KHZhbHVlLCBjcHRyKTsKICAgICB9IGVsc2UgewotICAgICAgICBzdHJjcHkodmVyc2lvbl9kZXNjciwgY3B0cik7CisgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCIlcyB0b2tlbiB0b28gbG9uZyAobXVzdCBiZSA8ICVsdSk6XG5cdCVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4sICh1bnNpZ25lZCBsb25nKXNpemUsIGNwdHIpOwogICAgIH0KIH0KIAotTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQKK3N0YXRpYyB2b2lkCiBzeXN0ZW1fcGFyc2VfY29uZmlnX3N0cmluZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIqIHZhbHVlLCBzaXplX3Qgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogZ3VhcmQpCiB7Ci0gICAgaWYgKHN0cmxlbihjcHRyKSA+PSBzaXplKSB7Ci0JbmV0c25tcF9jb25maWdfZXJyb3IoIiVzIHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAotCQkJICAgICB0b2tlbiwgKHVuc2lnbmVkIGxvbmcpc2l6ZSwgY3B0cik7Ci0gICAgfQotCi0gICAgaWYgKCp0b2tlbiA9PSAncCcgJiYgc3RyY2FzZWNtcCh0b2tlbiArIDEsIG5hbWUpID09IDApIHsKKyAgICBpZiAoKnRva2VuID09ICdwJykgewogICAgICAgICBpZiAoKmd1YXJkIDwgMCkgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gdGhlIHZhbHVlIGlzCkBAIC0xMTMsNyArMTEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5ICVzLjBcbiIsIG5hbWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKysoKmd1YXJkKTsKKyAgICAgICAgICAgICpndWFyZCA9IDE7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAoKmd1YXJkID4gMCkgewpAQCAtMTMwLDExICsxMjcsMTQgQEAKICAgICAgICAgKmd1YXJkID0gLTE7CiAgICAgfQogCi0gICAgaWYgKHN0cmNtcChjcHRyLCAiXCJcIiIpID09IDApIHsKLSAgICAgICAgKnZhbHVlID0gJ1wwJzsKLSAgICB9IGVsc2UgaWYgKHN0cmxlbihjcHRyKSA8IHNpemUpIHsKLSAgICAgICAgc3RyY3B5KHZhbHVlLCBjcHRyKTsKLSAgICB9CisgICAgc3lzdGVtX3BhcnNlX2NvbmZpZ19zdHJpbmcyKHRva2VuLCBjcHRyLCB2YWx1ZSwgc2l6ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c2Rlc2NyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQoreworICAgIHN5c3RlbV9wYXJzZV9jb25maWdfc3RyaW5nMih0b2tlbiwgY3B0ciwgdmVyc2lvbl9kZXNjciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZlcnNpb25fZGVzY3IpKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE3NSw3ICsxNzUsOCBAQAogICAgICAgICBzeXNPYmplY3RJREJ5dGVMZW5ndGggPSB2ZXJzaW9uX3N5c29pZF9sZW4gICogc2l6ZW9mKG9pZCk7CiAgICAgICAgIG1lbWNweShzeXNPYmplY3RJRCwgdmVyc2lvbl9zeXNvaWQsIHN5c09iamVjdElEQnl0ZUxlbmd0aCk7CiAgICAgfSBlbHNlCi0gICAgICAgIHN5c09iamVjdElEQnl0ZUxlbmd0aCA9IHN5c09iamVjdElETGVuZ3RoICogc2l6ZW9mKG9pZCk7CisKKwkJc3lzT2JqZWN0SURCeXRlTGVuZ3RoID0gc3lzT2JqZWN0SURMZW5ndGggKiBzaXplb2Yob2lkKTsKIH0KIAogCkBAIC0zNTMsMTcgKzM1NCwyOCBAQAogICAgIHsKICAgICAgICAgY29uc3Qgb2lkIHN5c0NvbnRhY3Rfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDQgfTsKICAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c0NvbnRhY3Rfd2luZm87CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zeXNDb250YWN0Iiwgc3lzQ29udGFjdF9vaWQsIE9JRF9MRU5HVEgoc3lzQ29udGFjdF9vaWQpLCAKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsICZzeXNDb250YWN0U2V0KSwKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAgICAgJnN5c0NvbnRhY3Rfd2luZm8sIHN5c0NvbnRhY3QsIFNZU19TVFJJTkdfTEVOIC0gMSwKKyAgICAgICAgICAgICAgICBBU05fT0NURVRfU1RSLCBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworI2Vsc2UgIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAibWliSUkvc3lzQ29udGFjdCIsIHN5c0NvbnRhY3Rfb2lkLCBPSURfTEVOR1RIKHN5c0NvbnRhY3Rfb2lkKSwKLSAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsICZzeXNDb250YWN0U2V0KSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgJnN5c0NvbnRhY3RTZXQpLAogICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKLQkJJnN5c0NvbnRhY3Rfd2luZm8sIHN5c0NvbnRhY3QsIFNZU19TVFJJTkdfTEVOIC0gMSwKLQkJQVNOX09DVEVUX1NUUiwgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyAgICAgICAgICAgICAgICAmc3lzQ29udGFjdF93aW5mbywgc3lzQ29udGFjdCwgU1lTX1NUUklOR19MRU4gLSAxLAorICAgICAgICAgICAgICAgIEFTTl9PQ1RFVF9TVFIsIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICB7CiAgICAgICAgIGNvbnN0IG9pZCBzeXNOYW1lX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA1IH07CiAgICAgICAgIHN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNOYW1lX3dpbmZvOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAibWliSUkvc3lzTmFtZSIsIHN5c05hbWVfb2lkLCBPSURfTEVOR1RIKHN5c05hbWVfb2lkKSwKQEAgLTM3MSwxMCArMzgzLDIwIEBACiAgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAogICAgICAgICAgICAgICAgICZzeXNOYW1lX3dpbmZvLCBzeXNOYW1lLCBTWVNfU1RSSU5HX0xFTiAtIDEsIEFTTl9PQ1RFVF9TVFIsCiAgICAgICAgICAgICAgICAgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyNlbHNlICAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3N5c05hbWUiLCBzeXNOYW1lX29pZCwgT0lEX0xFTkdUSChzeXNOYW1lX29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksICZzeXNOYW1lU2V0KSwKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAgICAgJnN5c05hbWVfd2luZm8sIHN5c05hbWUsIFNZU19TVFJJTkdfTEVOIC0gMSwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgewogICAgICAgICBjb25zdCBvaWQgc3lzTG9jYXRpb25fb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDYgfTsKICAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c0xvY2F0aW9uX3dpbmZvOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgICAibWliSUkvc3lzTG9jYXRpb24iLCBzeXNMb2NhdGlvbl9vaWQsCkBAIC0zODMsNiArNDA1LDE2IEBACiAgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAogCQkmc3lzTG9jYXRpb25fd2luZm8sIHN5c0xvY2F0aW9uLCBTWVNfU1RSSU5HX0xFTiAtIDEsCiAJCUFTTl9PQ1RFVF9TVFIsIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisjZWxzZSAgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zeXNMb2NhdGlvbiIsIHN5c0xvY2F0aW9uX29pZCwKKyAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHN5c0xvY2F0aW9uX29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksICZzeXNMb2NhdGlvblNldCksCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAorCQkmc3lzTG9jYXRpb25fd2luZm8sIHN5c0xvY2F0aW9uLCBTWVNfU1RSSU5HX0xFTiAtIDEsCisJCUFTTl9PQ1RFVF9TVFIsIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIH0KICAgICB7CiAgICAgICAgIGNvbnN0IG9pZCBzeXNTZXJ2aWNlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgNyB9OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS90Y3AuYwppbmRleCAyYmU5NDgxLi4zYzc5ZmFkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3AuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS90Y3AuYwpAQCAtNSw2ICs1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlICJtaWJJSV9jb21tb24uaCIKIAogI2lmIEhBVkVfU1RETElCX0gKQEAgLTkxLDcgKzkyLDkgQEAKIGludCAgaHogPSAxMDAwOwogI2VuZGlmCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BfQ09VTlRfQ09OTkVDVElPTlMKIGV4dGVybiBpbnQgVENQX0NvdW50X0Nvbm5lY3Rpb25zKCB2b2lkICk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BfQ09VTlRfQ09OTkVDVElPTlMgKi8KICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEluaXRpYWxpc2F0aW9uICYgY29tbW9uIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucwpAQCAtMzcwLDExICszNzMsMTQgQEAKICAgICAgICAgcmV0X3ZhbHVlID0gdGNwc3RhdC50Y3BzX2Ryb3BzOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRDUENVUlJFU1RBQjoKLSNpZmRlZiBVU0lOR19NSUJJSV9UQ1BUQUJMRV9NT0RVTEUKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcKKyAgICAgICAgbmV0c25tcF9mZWF0dXJlX3dhbnQodGNwX2NvdW50X2Nvbm5lY3Rpb25zKQorI2VuZGlmCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQX0NPVU5UX0NPTk5FQ1RJT05TCiAgICAgICAgIHJldF92YWx1ZSA9IFRDUF9Db3VudF9Db25uZWN0aW9ucygpOwogI2Vsc2UKICAgICAgICAgcmV0X3ZhbHVlID0gMDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQX0NPVU5UX0NPTk5FQ1RJT05TICovCiAgICAgICAgIHR5cGUgPSBBU05fR0FVR0U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVENQSU5TRUdTOgpAQCAtNTQ5LDYgKzU1NSw3IEBACiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICBjYXNlIE1PREVfR0VUQlVMSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgpAQCAtNTU4LDYgKzU2NSw3IEBACiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvdGNwOiBVbnN1cHBvcnRlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL3RjcDogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jCmluZGV4IGM5YzlkZDguLjAzYzg1ZTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYwpAQCAtMTUsNiArMTUsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgIm1pYklJX2NvbW1vbi5oIgogCiAjaWYgSEFWRV9ORVRJTkVUX1RDUF9ICkBAIC00Miw2ICs0MywxMCBAQAogI2luY2x1ZGUgInRjcC5oIgogI2luY2x1ZGUgInRjcFRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3B0YWJsZV9hbGwsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGNwX2NvdW50X2Nvbm5lY3Rpb25zLCB0Y3B0YWJsZV9hbGwpCisKICNpZmRlZiBocHV4MTEKICNkZWZpbmUJVENQVEFCTEVfRU5UUllfVFlQRQltaWJfdGNwQ29ubkVudCAKICNkZWZpbmUJVENQVEFCTEVfU1RBVEUJCVN0YXRlIApAQCAtMTQyLDcgKzE0Nyw3IEBACiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gICAgICAgICAgICppaW5mbzsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvOwotICAgIGludCByYzsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYzsKIAogICAgIERFQlVHTVNHVEwoKCJtaWJJSS90Y3BUYWJsZSIsICJJbml0aWFsaXNpbmcgVENQIFRhYmxlXG4iKSk7CiAgICAgLyoKQEAgLTE4Miw3ICsxODcsNyBAQAogICAgICAgICAgICAgdGNwVGFibGVfaGFuZGxlciwKICAgICAgICAgICAgIHRjcFRhYmxlX29pZCwgT0lEX0xFTkdUSCh0Y3BUYWJsZV9vaWQpLAogICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAotICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihyZWdpbmZvLCBpaW5mbyk7CisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMihyZWdpbmZvLCBpaW5mbyk7CiAgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNzMsMTIgKzI3OCwxNCBAQAogCiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS90Y3BUYWJsZTogVW5zdXBwb3J0ZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwogICAgICAgICBicmVhazsKQEAgLTI5MSwxMSArMjk4LDEzIEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BfQ09VTlRfQ09OTkVDVElPTlMKIGludAogVENQX0NvdW50X0Nvbm5lY3Rpb25zKCB2b2lkICkgewogICAgIHRjcFRhYmxlX2xvYWQoTlVMTCwgTlVMTCk7CiAgICAgcmV0dXJuIHRjcF9lc3RhYjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUF9DT1VOVF9DT05ORUNUSU9OUyAqLwogCiAJLyoKIAkgKiBUd28gZm9ybXMgb2YgaXRlcmF0aW9uIGhvb2sgcm91dGluZXM6CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS91ZHAuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jCmluZGV4IGM5ZjhhNGYuLjFkZGNiYzUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jCkBAIC0zMjksNiArMzI5LDcgQEAKIAogICAgIGNhc2UgTU9ERV9HRVRORVhUOgogICAgIGNhc2UgTU9ERV9HRVRCVUxLOgorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CkBAIC0zMzgsNiArMzM5LDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS91ZHA6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvdWRwOiBVbnJlY29nbmlzZWQgbW9kZSAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMKaW5kZXggZjQ2MWYwMi4uMmM4ODc0OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jCkBAIC0xMjksNyArMTI5LDcgQEAKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm87Ci0gICAgaW50IHJjOworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjOwogCiAgICAgREVCVUdNU0dUTCgoIm1pYklJL3VkcFRhYmxlIiwgIkluaXRpYWxpc2luZyBVRFAgVGFibGVcbiIpKTsKICAgICAvKgpAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgICAgICAgICB1ZHBUYWJsZV9oYW5kbGVyLAogICAgICAgICAgICAgdWRwVGFibGVfb2lkLCBPSURfTEVOR1RIKHVkcFRhYmxlX29pZCksCiAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCi0gICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKHJlZ2luZm8sIGlpbmZvKTsKKyAgICByYyA9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IyKHJlZ2luZm8sIGlpbmZvKTsKICAgICBpZiAocmMgIT0gU05NUEVSUl9TVUNDRVNTKQogICAgICAgICByZXR1cm47CiAKQEAgLTIzOSwxMiArMjM5LDE0IEBACiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICBjYXNlIE1PREVfR0VUQlVMSzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgogICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgogICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKICAgICBjYXNlIE1PREVfU0VUX1VORE86CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL3VkcFRhYmxlOiBVbnN1cHBvcnRlZCBtb2RlICglZClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaW5mby0+bW9kZSk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jCmluZGV4IDg3YmVkODkuLjkzOGVhMjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmMKQEAgLTgsNiArOCw3IEBACiAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgaW50ICpzZXQgPSAoaW50KiloYW5kbGVyLT5teXZvaWQ7CiAKICAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSAmJiAqc2V0IDwgMCkKQEAgLTE2LDYgKzE3LDcgQEAKICAgICAgICAgKnNldCA9IDE7CiAgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKHJlZ2luZm8tPmhhbmRsZXJOYW1lKTsKICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMKaW5kZXggMzM3YTVmYy4uZjJmYWY4NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMKQEAgLTI1MSw3ICsyNTEsNyBAQAogICAgICAgICByZXR1cm4gUEFSU0VfRkFJTDsKICAgICB9CiAKLSAgICBpZiAoc3RyY21wKCpjb250ZXh0LCAiXCJcIiIpID09IDApCisgICAgaWYgKHN0cmNtcCgqY29udGV4dCwgIlwiXCIiKSA9PSAwIHx8IHN0cmNtcCgqY29udGV4dCwgIlwnXCciKSA9PSAwKQogICAgICAgICAqKmNvbnRleHQgPSAwOwogICAgIGlmIChzdHJjYXNlY21wKG1vZGVsLCAiYW55IikgPT0gMCkKICAgICAgICAgKmltb2RlbCA9IFNOTVBfU0VDX01PREVMX0FOWTsKQEAgLTEyMDEsOSArMTIwMSwxMSBAQAogICAgIGNhc2UgU05NUF9NU0dfR0VUQlVMSzoKICAgICAgICAgdmlld3R5cGUgPSBWQUNNX1ZJRVdfUkVBRDsKICAgICAgICAgYnJlYWs7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgU05NUF9NU0dfU0VUOgogICAgICAgICB2aWV3dHlwZSA9IFZBQ01fVklFV19XUklURTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGNhc2UgU05NUF9NU0dfVFJBUDoKICAgICBjYXNlIFNOTVBfTVNHX1RSQVAyOgogICAgIGNhc2UgU05NUF9NU0dfSU5GT1JNOgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYwppbmRleCBjNDc0MTgwLi44ZjQzY2QzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYwpAQCAtMTA1LDcgKzEwNSw3IEBACiAgICAgaWluZm8tPmdldF9maXJzdF9kYXRhX3BvaW50ID0gZ2V0X2ZpcnN0X2NvbnRleHQ7CiAgICAgaWluZm8tPmdldF9uZXh0X2RhdGFfcG9pbnQgPSBnZXRfbmV4dF9jb250ZXh0OwogICAgIGlpbmZvLT50YWJsZV9yZWdpbmZvID0gdGFibGVfaW5mbzsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG15X2hhbmRsZXIsIGlpbmZvKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yMihteV9oYW5kbGVyLCBpaW5mbyk7CiB9CiAKIC8qCkBAIC0xNDksNyArMTQ5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oY29udGV4dF9wdHItPmNvbnRleHRfbmFtZSkpOwogCiAgICAgICAgICAgICBicmVhazsKLQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgZ2V0bmV4dCBhbHJlYWR5IGhhdmUgYmVlbgpAQCAtMTU5LDggKzE1OCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAidmFjbV9jb250ZXh0IHRhYmxlIGFjY2Vzc2VkIGFzIG1vZGU9JWQuICBXZSdyZSBpbXByb3Blcmx5IHJlZ2lzdGVyZWQhIiwKICAgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOwogICAgICAgICAgICAgYnJlYWs7Ci0KLQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCmluZGV4IDNhZDUxZDQuLjg1Y2VmOTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCkBAIC0xNTYsNiArMTU2LDcgQEAKICAgICAgKi8KIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKICAgICBjYXNlIFNFQ1VSSVRZR1JPVVA6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV92YWNtR3JvdXBOYW1lOwogICAgICAgICBicmVhazsKQEAgLTE2NSwxMCArMTY2LDEzIEBACiAgICAgY2FzZSBTRUNVUklUWVNUQVRVUzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3ZhY21TZWN1cml0eVRvR3JvdXBTdGF0dXM7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAgICAgZGVmYXVsdDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7CiAgICAgfQogCisJKnZhcl9sZW4gPSAwOyAvKiBhc3N1bWUgMCBsZW5ndGggdW50aWwgZm91bmQgKi8KKwogICAgIGlmIChtZW1jbXAobmFtZSwgdnAtPm5hbWUsIHNpemVvZihvaWQpICogdnAtPm5hbWVsZW4pICE9IDApIHsKICAgICAgICAgbWVtY3B5KG5hbWUsIHZwLT5uYW1lLCBzaXplb2Yob2lkKSAqIHZwLT5uYW1lbGVuKTsKICAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuOwpAQCAtMjUyLDYgKzI1Niw3IEBACiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQorCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTI3OCw2ICsyODMsNyBAQAogICAgICAqLwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogICAgIGNhc2UgQUNDRVNTTUFUQ0g6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV92YWNtQWNjZXNzQ29udGV4dE1hdGNoOwogICAgICAgICBicmVhazsKQEAgLTI5NiwxMCArMzAyLDEzIEBACiAgICAgY2FzZSBBQ0NFU1NTVEFUVVM6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV92YWNtQWNjZXNzU3RhdHVzOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogICAgIGRlZmF1bHQ6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSBOVUxMOwogICAgIH0KIAorCSp2YXJfbGVuID0gMDsgLyogYXNzdW1lIDAgbGVuZ3RoIHVudGlsIGZvdW5kICovCisKICAgICBpZiAobWVtY21wKG5hbWUsIHZwLT5uYW1lLCBzaXplb2Yob2lkKSAqIHZwLT5uYW1lbGVuKSAhPSAwKSB7CiAgICAgICAgIG1lbWNweShuYW1lLCB2cC0+bmFtZSwgc2l6ZW9mKG9pZCkgKiB2cC0+bmFtZWxlbik7CiAgICAgICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbjsKQEAgLTQ2OSw2ICs0NzgsNyBAQAogICAgICAgICBsb25nX3JldHVybiA9IGdwLT5zdGF0dXM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgfQorCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTQ5NSw2ICs1MDUsNyBAQAogICAgICAqLwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogICAgIGNhc2UgVklFV01BU0s6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV92YWNtVmlld01hc2s7CiAgICAgICAgIGJyZWFrOwpAQCAtNTA3LDExICs1MTgsMTMgQEAKICAgICBjYXNlIFZJRVdTVEFUVVM6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV92YWNtVmlld1N0YXR1czsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKICAgICBkZWZhdWx0OgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKICAgICB9CiAKICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldHVybik7CisKICAgICBpZiAodnAtPm1hZ2ljICE9IFZBQ01WSUVXU1BJTkxPQ0spIHsKICAgICAgICAgaWYgKG1lbWNtcChuYW1lLCB2cC0+bmFtZSwgc2l6ZW9mKG9pZCkgKiB2cC0+bmFtZWxlbikgIT0gMCkgewogICAgICAgICAgICAgbWVtY3B5KG5hbWUsIHZwLT5uYW1lLCBzaXplb2Yob2lkKSAqIHZwLT5uYW1lbGVuKTsKQEAgLTYyMyw3ICs2MzYsOSBAQAogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIFZBQ01WSUVXU1BJTkxPQ0s6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdmFjbVZpZXdTcGluTG9jazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGxvbmdfcmV0dXJuID0gdmFjbVZpZXdTcGluTG9jazsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKIApAQCAtNjUxLDM0ICs2NjYsMTEgQEAKICAgICAgICAgbG9uZ19yZXR1cm4gPSBncC0+dmlld1N0YXR1czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICB9CisKICAgICByZXR1cm4gTlVMTDsKIH0KIAotb2lkICAgICAgICAgICAgKgotc2VjMmdyb3VwX2dlbmVyYXRlX09JRChvaWQgKiBwcmVmaXgsIHNpemVfdCBwcmVmaXhMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWNtX2dyb3VwRW50cnkgKiBnZXB0ciwgc2l6ZV90ICogbGVuZ3RoKQotewotICAgIG9pZCAgICAgICAgICAgICppbmRleE9pZDsKLSAgICBpbnQgICAgICAgICAgICAgaSwgc2VjdXJpdHlOYW1lTGVuOwotCi0gICAgc2VjdXJpdHlOYW1lTGVuID0gc3RybGVuKGdlcHRyLT5zZWN1cml0eU5hbWUpOwotCi0gICAgKmxlbmd0aCA9IDIgKyBzZWN1cml0eU5hbWVMZW4gKyBwcmVmaXhMZW47Ci0gICAgaW5kZXhPaWQgPSAob2lkICopIG1hbGxvYygqbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwotICAgIGlmIChpbmRleE9pZCkgewotICAgICAgICBtZW1tb3ZlKGluZGV4T2lkLCBwcmVmaXgsIHByZWZpeExlbiAqIHNpemVvZihvaWQpKTsKLQotICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW5dID0gZ2VwdHItPnNlY3VyaXR5TW9kZWw7Ci0KLSAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuICsgMV0gPSBzZWN1cml0eU5hbWVMZW47Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWN1cml0eU5hbWVMZW47IGkrKykKLSAgICAgICAgICAgIGluZGV4T2lkW3ByZWZpeExlbiArIDIgKyBpXSA9IChvaWQpIGdlcHRyLT5zZWN1cml0eU5hbWVbaV07Ci0KLSAgICB9Ci0gICAgcmV0dXJuIGluZGV4T2lkOwotCi19Ci0KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogaW50CiBzZWMyZ3JvdXBfcGFyc2Vfb2lkKG9pZCAqIG9pZEluZGV4LCBzaXplX3Qgb2lkTGVuLAogICAgICAgICAgICAgICAgICAgICBpbnQgKm1vZGVsLCB1bnNpZ25lZCBjaGFyICoqbmFtZSwgc2l6ZV90ICogbmFtZUxlbikKQEAgLTk4MSw0MCArOTczLDYgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAotb2lkICAgICAgICAgICAgKgotYWNjZXNzX2dlbmVyYXRlX09JRChvaWQgKiBwcmVmaXgsIHNpemVfdCBwcmVmaXhMZW4sCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWNtX2FjY2Vzc0VudHJ5ICogYXB0ciwgc2l6ZV90ICogbGVuZ3RoKQotewotICAgIG9pZCAgICAgICAgICAgICppbmRleE9pZDsKLSAgICBpbnQgICAgICAgICAgICAgaSwgZ3JvdXBOYW1lTGVuLCBjb250ZXh0UHJlZml4TGVuOwotCi0gICAgZ3JvdXBOYW1lTGVuID0gc3RybGVuKGFwdHItPmdyb3VwTmFtZSk7Ci0gICAgY29udGV4dFByZWZpeExlbiA9IHN0cmxlbihhcHRyLT5jb250ZXh0UHJlZml4KTsKLQotICAgICpsZW5ndGggPSA0ICsgZ3JvdXBOYW1lTGVuICsgY29udGV4dFByZWZpeExlbiArIHByZWZpeExlbjsKLSAgICBpbmRleE9pZCA9IChvaWQgKikgbWFsbG9jKCpsZW5ndGggKiBzaXplb2Yob2lkKSk7Ci0gICAgaWYgKGluZGV4T2lkKSB7Ci0gICAgICAgIG1lbW1vdmUoaW5kZXhPaWQsIHByZWZpeCwgcHJlZml4TGVuICogc2l6ZW9mKG9pZCkpOwotCi0gICAgICAgIGluZGV4T2lkW3ByZWZpeExlbl0gPSBncm91cE5hbWVMZW47Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBncm91cE5hbWVMZW47IGkrKykKLSAgICAgICAgICAgIGluZGV4T2lkW2dyb3VwTmFtZUxlbiArIDEgKyBpXSA9IChvaWQpIGFwdHItPmdyb3VwTmFtZVtpXTsKLQotICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW4gKyBncm91cE5hbWVMZW4gKyAxXSA9IGNvbnRleHRQcmVmaXhMZW47Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZXh0UHJlZml4TGVuOyBpKyspCi0gICAgICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW4gKyBncm91cE5hbWVMZW4gKyAyICsgaV0gPQotICAgICAgICAgICAgICAgIChvaWQpIGFwdHItPmNvbnRleHRQcmVmaXhbaV07Ci0KLSAgICAgICAgaW5kZXhPaWRbcHJlZml4TGVuICsgZ3JvdXBOYW1lTGVuICsgY29udGV4dFByZWZpeExlbiArIDNdID0KLSAgICAgICAgICAgIGFwdHItPnNlY3VyaXR5TW9kZWw7Ci0gICAgICAgIGluZGV4T2lkW3ByZWZpeExlbiArIGdyb3VwTmFtZUxlbiArIGNvbnRleHRQcmVmaXhMZW4gKyA0XSA9Ci0gICAgICAgICAgICBhcHRyLT5zZWN1cml0eUxldmVsOwotCi0gICAgfQotICAgIHJldHVybiBpbmRleE9pZDsKLQotfQotCiBpbnQKIGFjY2Vzc19wYXJzZV9vaWQob2lkICogb2lkSW5kZXgsIHNpemVfdCBvaWRMZW4sCiAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKipncm91cE5hbWUsIHNpemVfdCAqIGdyb3VwTmFtZUxlbiwKQEAgLTE1NTAsMzUgKzE1MDgsNiBAQAogICAgIHJldHVybiAwOwogfQogCi1vaWQgICAgICAgICAgICAqCi12aWV3X2dlbmVyYXRlX09JRChvaWQgKiBwcmVmaXgsIHNpemVfdCBwcmVmaXhMZW4sCi0gICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFjbV92aWV3RW50cnkgKiB2cHRyLCBzaXplX3QgKiBsZW5ndGgpCi17Ci0gICAgb2lkICAgICAgICAgICAgKmluZGV4T2lkOwotICAgIGludCAgICAgICAgICAgICBpLCB2aWV3TmFtZUxlbiwgdmlld1N1YnRyZWVMZW47Ci0KLSAgICB2aWV3TmFtZUxlbiA9IHN0cmxlbih2cHRyLT52aWV3TmFtZSk7Ci0gICAgdmlld1N1YnRyZWVMZW4gPSB2cHRyLT52aWV3U3VidHJlZUxlbjsKLQotICAgICpsZW5ndGggPSAyICsgdmlld05hbWVMZW4gKyB2aWV3U3VidHJlZUxlbiArIHByZWZpeExlbjsKLSAgICBpbmRleE9pZCA9IChvaWQgKikgbWFsbG9jKCpsZW5ndGggKiBzaXplb2Yob2lkKSk7Ci0gICAgaWYgKGluZGV4T2lkKSB7Ci0gICAgICAgIG1lbW1vdmUoaW5kZXhPaWQsIHByZWZpeCwgcHJlZml4TGVuICogc2l6ZW9mKG9pZCkpOwotCi0gICAgICAgIGluZGV4T2lkW3ByZWZpeExlbl0gPSB2aWV3TmFtZUxlbjsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHZpZXdOYW1lTGVuOyBpKyspCi0gICAgICAgICAgICBpbmRleE9pZFt2aWV3TmFtZUxlbiArIDEgKyBpXSA9IChvaWQpIHZwdHItPnZpZXdOYW1lW2ldOwotCi0gICAgICAgIGluZGV4T2lkW3ByZWZpeExlbiArIHZpZXdOYW1lTGVuICsgMV0gPSB2aWV3U3VidHJlZUxlbjsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHZpZXdTdWJ0cmVlTGVuOyBpKyspCi0gICAgICAgICAgICBpbmRleE9pZFtwcmVmaXhMZW4gKyB2aWV3TmFtZUxlbiArIDIgKyBpXSA9Ci0gICAgICAgICAgICAgICAgKG9pZCkgdnB0ci0+dmlld1N1YnRyZWVbaV07Ci0KLSAgICB9Ci0gICAgcmV0dXJuIGluZGV4T2lkOwotCi19Ci0KIHN0cnVjdCB2YWNtX3ZpZXdFbnRyeSAqCiB2aWV3X3BhcnNlX3ZpZXdFbnRyeShvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCiB7CkBAIC0xOTExLDMgKzE4NDAsNCBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmggYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuaAppbmRleCA4ODhjMWI4Li40NzFmNzU5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuaApAQCAtMTksNiArMTksNyBAQAogICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfdmFjbV9hY2Nlc3M7CiAgICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl92YWNtX3ZpZXc7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdmFjbUdyb3VwTmFtZTsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3ZhY21TZWN1cml0eVRvR3JvdXBTdGF0dXM7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV92YWNtU2VjdXJpdHlUb0dyb3VwU3RvcmFnZVR5cGU7CkBAIC0zNiw3ICszNyw2IEBACiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV92YWNtVmlld1N0b3JhZ2VUeXBlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdmFjbVZpZXdUeXBlOwogCi0KICAgICAgb2lkICAgICAgICAgICAgKmFjY2Vzc19nZW5lcmF0ZV9PSUQob2lkICogcHJlZml4LCBzaXplX3QgcHJlZml4TGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFjbV9hY2Nlc3NFbnRyeSAqYXB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoKTsKQEAgLTY3LDcgKzY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIHN1YnRyZWVMZW4pOwogICAgICBzdHJ1Y3QgdmFjbV92aWV3RW50cnkgKnZpZXdfcGFyc2Vfdmlld0VudHJ5KG9pZCAqIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5hbWVfbGVuKTsKLQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAKIAogI2RlZmluZSBPSURfU05NUFZBQ01NSUIJCVNOTVBfT0lEX1NOTVBNT0RVTEVTLCAxNgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYwppbmRleCBlNjI4NmRjLi43MmE1MDNmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYwpAQCAtNDYsNiArNDYsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSAicm91dGVfaGVhZGVycy5oIgogI2RlZmluZSBDQUNIRV9USU1FICgxMjApICAgICAgICAvKiBTZWNvbmRzICovCkBAIC02MSw2ICs2Miw5IEBACiAjaW5jbHVkZSAia2VybmVsLmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgInN0cnVjdC5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGdldF9yb3V0ZXMsIGxpYm5ldHNubXBtaWJzKQogCiAjaWZuZGVmICBNSU4KICNkZWZpbmUgIE1JTihhLGIpICAgICAgICAgICAgICAgICAgICAgKCgoYSkgPCAoYikpID8gKGEpIDogKGIpKQpAQCAtMzE3LDEyICszMjEsMTQgQEAKIAogc3RhdGljIHZvaWQgICAgIFJvdXRlX1NjYW5fUmVsb2FkKHZvaWQpOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX1JPVVRFUwogUlRFTlRSWSAqKm5ldHNubXBfZ2V0X3JvdXRlcyhzaXplX3QgKnNpemUpIHsKICAgICBSb3V0ZV9TY2FuX1JlbG9hZCgpOwogICAgIGlmIChzaXplKQogICAgICAgICAqc2l6ZSA9IHJ0c2l6ZTsKICAgICByZXR1cm4gcnRoZWFkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX1JPVVRFUyAqLwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBocHV4MTEgKi8KIAogI2lmICEoZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChzb2xhcmlzMikgfHwgZGVmaW5lZChocHV4MTEpKSAmJiBkZWZpbmVkKFJUSE9TVF9TWU1CT0wpICYmIGRlZmluZWQoUlRORVRfU1lNQk9MKQpAQCAtOTIzLDYgKzkyOSwxMCBAQAogI2VuZGlmCiAgICAgICAgICAgICBuYW1lW3NpemVvZihuYW1lKSAtIDFdID0gJ1wwJzsKICNlbHNlCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU4KKyAgICAgICAgICAgIC8qIHRoaXMgZXhpc3RzIGhlcmUganVzdCBzbyB3ZSBkb24ndCBjb3B5IGlmZGVmIGxvZ2ljIGVsc2V3aGVyZSAqLworICAgICAgICAgICAgbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc3RyaW5nX2FwcGVuZF9pbnQpOworI2VuZGlmCiAgICAgICAgICAgICBpZiAoIU5FVFNOTVBfS0xPT0tVUChpZm5ldC5pZl9uYW1lLCBuYW1lLCBzaXplb2YgbmFtZSkpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibWliSUkvdmFyX3JvdXRlIiwgImtsb29rdXAgZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTMxLDYgKzk0MSw5IEBACiAgICAgICAgICAgICBjcCA9IChjaGFyICopIHN0cmNocihuYW1lLCAnXDAnKTsKICAgICAgICAgICAgIHN0cmluZ19hcHBlbmRfaW50KGNwLCBpZm5ldC5pZl91bml0KTsKICNlbmRpZgorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lOCisgICAgICAgICAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbnRlcmZhY2VfbGVnYWN5KQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lOICovCiAgICAgICAgICAgICBJbnRlcmZhY2VfU2Nhbl9Jbml0KCk7CiAgICAgICAgICAgICBydC5ydF91bml0ID0gMDsKICAgICAgICAgICAgIHdoaWxlIChJbnRlcmZhY2VfU2Nhbl9OZXh0CkBAIC0xMDM1LDEwICsxMDQ4LDEwIEBACiAgICAgY2hhciAgICAgICAgICAgIG5hbWVbMTZdLCB0ZW1wWzE2XTsKICAgICBpbnQgICAgICAgICAgICAgaGFzaHNpemU7CiAjZW5kaWYKLSAgICBzdGF0aWMgaW50ICAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IDA7CisgICAgc3RhdGljIHRpbWVfdCAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQ7CiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKIAotICAgIGdldHRpbWVvZmRheSgmbm93LCAoc3RydWN0IHRpbWV6b25lICopIDApOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKICAgICBpZiAoVGltZV9PZl9MYXN0X1JlbG9hZCArIENBQ0hFX1RJTUUgPiBub3cudHZfc2VjKQogICAgICAgICByZXR1cm47CiAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IG5vdy50dl9zZWM7CkBAIC0xMDgwLDYgKzEwOTMsMTEgQEAKICAgICB9CiAKICNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcnRlbnRyeSBpcyBhIEJTRCA0LjMgY29tcGF0ICovCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU4KKyAgICAvKiB0aGlzIGV4aXN0cyBoZXJlIGp1c3Qgc28gd2UgZG9uJ3QgY29weSBpZmRlZiBsb2dpYyBlbHNld2hlcmUgKi8KKyAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdHJpbmdfYXBwZW5kX2ludCk7CisgICAgbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaW50ZXJmYWNlX2xlZ2FjeSkKKyNlbmRpZgogICAgIGZvciAodGFibGUgPSAwOyB0YWJsZSA8IE5VTV9ST1VURV9TWU1CT0xTOyB0YWJsZSsrKSB7CiAgICAgICAgIGF1dG9fbmxpc3QoUlRIQVNIU0laRV9TWU1CT0wsIChjaGFyICopICZoYXNoc2l6ZSwKICAgICAgICAgICAgICAgICAgICBzaXplb2YoaGFzaHNpemUpKTsKQEAgLTExNjQsNiArMTE4Miw4IEBACiAjZWxzZQogCiAjaWYgSEFWRV9TWVNfTUJVRl9ICituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdHJpbmdfYXBwZW5kX2ludCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGludGVyZmFjZV9sZWdhY3kpCiBzdGF0aWMgdm9pZAogUm91dGVfU2Nhbl9SZWxvYWQodm9pZCkKIHsKQEAgLTExNzQsMTEgKzExOTQsMTEgQEAKICAgICBpbnQgICAgICAgICAgICAgaSwgdGFibGU7CiAgICAgcmVnaXN0ZXIgY2hhciAgKmNwOwogICAgIGNoYXIgICAgICAgICAgICBuYW1lWzE2XSwgdGVtcFsxNl07Ci0gICAgc3RhdGljIGludCAgICAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQgPSAwOworICAgIHN0YXRpYyB0aW1lX3QgICBUaW1lX09mX0xhc3RfUmVsb2FkOwogICAgIHN0cnVjdCB0aW1ldmFsICBub3c7CiAgICAgaW50ICAgICAgICAgICAgIGhhc2hzaXplOwogCi0gICAgZ2V0dGltZW9mZGF5KCZub3csIChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3cpOwogICAgIGlmIChUaW1lX09mX0xhc3RfUmVsb2FkICsgQ0FDSEVfVElNRSA+IG5vdy50dl9zZWMpCiAgICAgICAgIHJldHVybjsKICAgICBUaW1lX09mX0xhc3RfUmVsb2FkID0gbm93LnR2X3NlYzsKQEAgLTEyOTAsMTAgKzEzMTAsMTAgQEAKICAgICBjaGFyICAgICAgICAgICAgbGluZVsyNTZdOwogICAgIHN0cnVjdCBydGVudHJ5ICpydDsKICAgICBjaGFyICAgICAgICAgICAgbmFtZVsxNl07Ci0gICAgc3RhdGljIGludCAgICAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQgPSAwOworICAgIHN0YXRpYyB0aW1lX3QgICBUaW1lX09mX0xhc3RfUmVsb2FkOwogICAgIHN0cnVjdCB0aW1ldmFsICBub3c7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgKHN0cnVjdCB0aW1lem9uZSAqKSAwKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CiAgICAgaWYgKFRpbWVfT2ZfTGFzdF9SZWxvYWQgKyBDQUNIRV9USU1FID4gbm93LnR2X3NlYykKICAgICAgICAgcmV0dXJuOwogICAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQgPSBub3cudHZfc2VjOwpAQCAtMTQ3Nyw3ICsxNDk3LDcgQEAKICAgICBEV09SRCAgICAgICAgICAgZHdBY3R1YWxTaXplID0gMDsKICAgICBzdGF0aWMgUE1JQl9JUEZPUldBUkRUQUJMRSBwSXBSdHJUYWJsZSA9IE5VTEw7CiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKLSAgICBzdGF0aWMgbG9uZyAgICAgVGltZV9PZl9MYXN0X1JlbG9hZCA9IDA7CisgICAgc3RhdGljIHRpbWVfdCAgICBUaW1lX09mX0xhc3RfUmVsb2FkOwogICAgIHN0YXRpYyBpbl9hZGRyX3QgYWRkcl9yZXQ7CiAKIApAQCAtMTQ5NCw3ICsxNTE0LDcgQEAKICAgICAgICAgICovCiAgICAgICAgIHJvdXRlX3JvdyA9IChQTUlCX0lQRk9SV0FSRFJPVykgbWFsbG9jKHNpemVvZihNSUJfSVBGT1JXQVJEUk9XKSk7CiAgICAgfQotICAgIGdldHRpbWVvZmRheSgmbm93LCAoc3RydWN0IHRpbWV6b25lICopIDApOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKICAgICBpZiAoKHJ0c2l6ZSA8PSAxKSB8fCAoVGltZV9PZl9MYXN0X1JlbG9hZCArIDUgPD0gbm93LnR2X3NlYykpCiAgICAgICAgIFNhdmVfVmFsaWQgPSAwOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYwppbmRleCBiZDZhODIxLi5hMTJhMzM4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZiBIQVZFX05FVElORVRfSU5fSApAQCAtMTksNiArMjAsMTIgQEAKICNpbmNsdWRlICJuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgiCiAjaW5jbHVkZSAibm90aWZpY2F0aW9uX2xvZy5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl91bG9uZ19pbnN0YW5jZV9jb250ZXh0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZV9jb250ZXh0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZGVsZXRlX3RhYmxlX2RhdGFfc2V0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfZGF0YXNldCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGRhdGVfbl90aW1lKQorCiAvKgogICogY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgdGFibGUgbmxtTG9nVGFibGUKICAqLwpAQCAtNDY3LDggKzQ3NCwxMCBAQAogICAgICAqIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGdldCBzZXQgdG8gYSB2YWx1ZSBhbmQgdGh1cwogICAgICAqIG5vdGlmaWNhdGlvbnMgbXVzdCBiZSBwb3NzaWJseSBkZWxldGVkIGZyb20gb3VyIGFyY2hpdmVzLgogICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9DT01NSVQpCiAgICAgICAgIGNoZWNrX2xvZ19zaXplKDAsIE5VTEwpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMKaW5kZXggYzNmYzM2My4uZTliMTFkMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jCkBAIC0yMywxMiArMjMsMTYgQEAKIC8qCiAgKiBtaW5pbWFsIGluY2x1ZGUgZGlyZWN0aXZlcyAKICAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSAiaGVhZGVyX2NvbXBsZXguaCIKICNpbmNsdWRlICJzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgiCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKgogICogc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZV92YXJpYWJsZXNfb2lkOgpAQCAtMTMxLDcgKzEzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGhlZGF0YSkKIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMgPSBOVUxMOwotCisgICAgaW50IHJldFZhbDsKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlIiwgImFkZGluZyBkYXRhLi4uICAiKSk7CiAgICAgLyoKQEAgLTE0MywxMyArMTQ3LDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIHRoZWRhdGEtPnNubXBUYXJnZXRQYXJhbXNOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlZGF0YS0+c25tcFRhcmdldFBhcmFtc05hbWVMZW4pOwogCi0gICAgaGVhZGVyX2NvbXBsZXhfYWRkX2RhdGEoJnNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGVTdG9yYWdlLCB2YXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWRhdGEpOwotICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlIiwgInJlZ2lzdGVyZWQgYW4gZW50cnlcbiIpKTsKKyAgICBpZiAoaGVhZGVyX2NvbXBsZXhfbWF5YmVfYWRkX2RhdGEoJnNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGVTdG9yYWdlLCB2YXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVkYXRhLCAxKSAhPSBOVUxMKXsKKyAgICAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZSIsICJyZWdpc3RlcmVkIGFuIGVudHJ5XG4iKSk7CisgICAgICAgcmV0VmFsID0gU05NUEVSUl9TVUNDRVNTOworICAgIH1lbHNleworICAgICAgIHJldFZhbCA9IFNOTVBFUlJfR0VORVJSOyAgCQorICAgIH0KIAogCiAgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUiLCAiZG9uZS5cbiIpKTsKLSAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworICAgIHJldHVybiByZXRWYWw7CiB9CiAKIApAQCAtMjAwLDcgKzIwOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlN0b3JhZ2VUbXAtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcE5vdGlmeUZpbHRlclByb2ZpbGVSb3dTdGF0dXMsICZ0bXBpbnQpOwogCi0gICAgc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZV9hZGQoU3RvcmFnZVRtcCk7CisgICAgaWYgKHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGVfYWRkKFN0b3JhZ2VUbXApICE9IFNOTVBFUlJfU1VDQ0VTUyl7CisgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT5zbm1wVGFyZ2V0UGFyYW1zTmFtZSk7CisgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT5zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZU5hbWUpOworICAgICAgICBTTk1QX0ZSRUUoU3RvcmFnZVRtcCk7CisgICAgfQogCiAgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUiLCAiZG9uZS5cbiIpKTsKIH0KQEAgLTIxOCw3ICsyMzAsNiBAQAogewogICAgIGNoYXIgICAgICAgICAgICBsaW5lW1NOTVBfTUFYQlVGXTsKICAgICBjaGFyICAgICAgICAgICAqY3B0cjsKLSAgICBzaXplX3QgICAgICAgICAgdG1waW50OwogICAgIHN0cnVjdCBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlX2RhdGEgKlN0b3JhZ2VUbXA7CiAgICAgc3RydWN0IGhlYWRlcl9jb21wbGV4X2luZGV4ICpoY2luZGV4OwogCkBAIC0yNTIsMTIgKzI2MywxMiBAQAogICAgICAgICAgICAgICAgIHJlYWRfY29uZmlnX3N0b3JlX2RhdGEoQVNOX0lOVEVHRVIsIGNwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RvcmFnZVRtcC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVN0b3JUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRtcGludCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICAgICAgICAgIGNwdHIgPQogICAgICAgICAgICAgICAgIHJlYWRfY29uZmlnX3N0b3JlX2RhdGEoQVNOX0lOVEVHRVIsIGNwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU3RvcmFnZVRtcC0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVJvd1N0YXR1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0bXBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAKICAgICAgICAgICAgIHNubXBkX3N0b3JlX2NvbmZpZyhsaW5lKTsKICAgICAgICAgfQpAQCAtMzAxLDYgKzMxMiw3IEBACiAgICAgfQogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBTTk1QTk9USUZZRklMVEVSUFJPRklMRU5BTUU6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZU5hbWU7CiAgICAgICAgIGJyZWFrOwpAQCAtMzEyLDcgKzMyNCw3IEBACiAgICAgY2FzZSBTTk1QTk9USUZZRklMVEVSUFJPRklMRVJPV1NUQVRVUzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlUm93U3RhdHVzOwogICAgICAgICBicmVhazsKLQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICBkZWZhdWx0OgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gTlVMTDsKICAgICB9CkBAIC0zNDIsNiArMzU0LDcgQEAKICAgICBkZWZhdWx0OgogICAgICAgICBFUlJPUl9NU0coIiIpOwogICAgIH0KKwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zNDksNiArMzYyLDggQEAKIAogc3RhdGljIHN0cnVjdCBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlX2RhdGEgKlN0b3JhZ2VOZXc7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAorCiBpbnQKIHdyaXRlX3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlTmFtZShpbnQgYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC03OTIsNiArODA3LDggQEAKIH0KIAogCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKKwogCiBjaGFyICAgICAgICAgICAqCiBnZXRfRmlsdGVyUHJvZmlsZU5hbWUoY29uc3QgY2hhciAqcGFyYW1OYW1lLCBzaXplX3QgcGFyYW1OYW1lX2xlbiwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oCmluZGV4IDk3MzRjYmUuLjYxNmJjZGMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaApAQCAtNTUsOSArNTUsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKTsKICAgICAgU05NUENhbGxiYWNrICAgIHN0b3JlX3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGU7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVOYW1lOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVTdG9yVHlwZTsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlUm93U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgICBjaGFyICAgICAgICAgICAqZ2V0X0ZpbHRlclByb2ZpbGVOYW1lKGNvbnN0IGNoYXIgKnBhcmFtTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcGFyYW1OYW1lX2xlbiwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYwppbmRleCBmNjI3ZWQ2Li45MWFkYjJmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jCkBAIC04LDYgKzgsNyBAQAogICogVGhpcyBzaG91bGQgYWx3YXlzIGJlIGluY2x1ZGVkIGZpcnN0IGJlZm9yZSBhbnl0aGluZyBlbHNlIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIEhBVkVfU1RETElCX0gKQEAgLTQxLDYgKzQyLDEwIEBACiAjICAgaW5jbHVkZSAibm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oIgogI2VuZGlmCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiBTTk1QQ2FsbGJhY2sgICAgc3RvcmVfc25tcE5vdGlmeVRhYmxlOwogCiAvKgpAQCAtNTcsMTEgKzYyLDYgQEAKIHN0YXRpYyBvaWQgc25tcE5vdGlmeUZ1bGxDb21wbGlhbmNlW10gPQogICAgIHsgU05NUF9PSURfU05NUE1PRFVMRVMsIDEzLCAzLCAxLCAzIH07IC8qIFNOTVAtTk9USUZJQ0FUSU9OLU1JQjo6c25tcE5vdGlmeUZ1bGxDb21wbGlhbmNlICovCiAKLXZvaWQgc2h1dGRvd25fc25tcE5vdGlmeVRhYmxlKHZvaWQpCi17Ci0gICAgVU5SRUdJU1RFUl9TWVNPUl9FTlRSWShzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2UpOwotfQotCiAKIC8qCiAgKiB2YXJpYWJsZTIgc25tcE5vdGlmeVRhYmxlX3ZhcmlhYmxlczoKQEAgLTI4NSw3ICsyODUsNyBAQAogICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpwdHI7CiAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpwcHRyOwogICAgIHN0cnVjdCBzbm1wTm90aWZ5VGFibGVfZGF0YSAqbnB0cjsKLSAgICBpbnQgICAgICAgICAgICAgY29uZmlybSwgaTsKKyAgICBpbnQgICAgICAgICAgICAgY29uZmlybSwgaSwgYnVmTGVuOwogICAgIGNoYXIgICAgICAgICAgICBidWZbU05NUF9NQVhCVUZfU01BTExdOwogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0ID0gTlVMTDsKICAgICBzdHJ1Y3QgYWdlbnRfYWRkX3RyYXBfYXJncyAqYXJncyA9CkBAIC0zMDIsOCArMzAyLDkgQEAKICAgICAgKiBYWFg6IFNUQVJUIG1vdmUgdGFyZ2V0IGNyZWF0aW9uIHRvIHRhcmdldCBjb2RlIAogICAgICAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfRU5UUklFUzsgaSsrKSB7Ci0gICAgICAgIHNwcmludGYoYnVmLCAiaW50ZXJuYWwlZCIsIGkpOwotICAgICAgICBpZiAoZ2V0X2FkZHJGb3JOYW1lKGJ1ZikgPT0gTlVMTCAmJiBnZXRfcGFyYW1FbnRyeShidWYpID09IE5VTEwpCisgICAgICAgIGJ1ZkxlbiA9IHNwcmludGYoYnVmLCAiaW50ZXJuYWwlZCIsIGkpOworICAgICAgICBpZiAoZ2V0X2FkZHJGb3JOYW1lMihidWYsIGJ1ZkxlbikgPT0gTlVMTCAmJgorICAgICAgICAgICAgZ2V0X3BhcmFtRW50cnkoYnVmKSA9PSBOVUxMKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChpID09IE1BWF9FTlRSSUVTKSB7CkBAIC0zMjUsNyArMzI2LDggQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHB0ciA9IHNubXBUYXJnZXRBZGRyVGFibGVfY3JlYXRlKCk7Ci0gICAgcHRyLT5uYW1lID0gc3RyZHVwKGJ1Zik7CisgICAgcHRyLT5uYW1lRGF0YSA9IG5ldHNubXBfbWVtZHVwKGJ1ZiwgYnVmTGVuKTsKKyAgICBwdHItPm5hbWVMZW4gPSBidWZMZW47CiAgICAgbWVtY3B5KHB0ci0+dERvbWFpbiwgdC0+ZG9tYWluLCB0LT5kb21haW5fbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwogICAgIHB0ci0+dERvbWFpbkxlbiA9IHQtPmRvbWFpbl9sZW5ndGg7CiAgICAgcHRyLT50QWRkcmVzc0xlbiA9IHQtPnJlbW90ZV9sZW5ndGg7CkBAIC0zMzQsOCArMzM2LDggQEAKICAgICBwdHItPnRpbWVvdXQgPSBzcy0+dGltZW91dCAvIDEwMDAwOwogICAgIHB0ci0+cmV0cnlDb3VudCA9IHNzLT5yZXRyaWVzOwogICAgIFNOTVBfRlJFRShwdHItPnRhZ0xpc3QpOwotICAgIHB0ci0+dGFnTGlzdCA9IHN0cmR1cChwdHItPm5hbWUpOwotICAgIHB0ci0+cGFyYW1zID0gc3RyZHVwKHB0ci0+bmFtZSk7CisgICAgcHRyLT50YWdMaXN0ID0gc3RyZHVwKGJ1Zik7IC8qIHN0cmR1cCBvayBzaW5jZSBidWYgY29udGFpbnMgJ2ludGVybmFsJWQnICovCisgICAgcHRyLT5wYXJhbXMgPSBzdHJkdXAoYnVmKTsKICAgICBwdHItPnN0b3JhZ2VUeXBlID0gU1RfUkVBRE9OTFk7CiAgICAgcHRyLT5yb3dTdGF0dXMgPSBSU19BQ1RJVkU7CiAgICAgcHRyLT5zZXNzID0gc3M7CkBAIC00MjAsMTggKzQyMiwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKQogewogICAgIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqaHB0ciwgKm5ocHRyOwotICAgIHN0cnVjdCBzbm1wTm90aWZ5VGFibGVfZGF0YSAqbnB0cjsKIAogICAgIGZvciAoaHB0ciA9IHNubXBOb3RpZnlUYWJsZVN0b3JhZ2U7IGhwdHI7IGhwdHIgPSBuaHB0cikgewotICAgICAgICBucHRyID0gKHN0cnVjdCBzbm1wTm90aWZ5VGFibGVfZGF0YSAqKSBocHRyLT5kYXRhOworICAgICAgICBzdHJ1Y3Qgc25tcE5vdGlmeVRhYmxlX2RhdGEgKm5wdHIgPSBocHRyLT5kYXRhOwogICAgICAgICBuaHB0ciA9IGhwdHItPm5leHQ7CiAgICAgICAgIGlmIChucHRyLT5zbm1wTm90aWZ5U3RvcmFnZVR5cGUgPT0gU1RfUkVBRE9OTFkpIHsKICAgICAgICAgICAgIGhlYWRlcl9jb21wbGV4X2V4dHJhY3RfZW50cnkoJnNubXBOb3RpZnlUYWJsZVN0b3JhZ2UsIGhwdHIpOwotICAgICAgICAgICAgU05NUF9GUkVFKG5wdHItPnNubXBOb3RpZnlOYW1lKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRShucHRyLT5zbm1wTm90aWZ5VGFnKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRShucHRyKTsKKyAgICAgICAgICAgIGZyZWUobnB0ci0+c25tcE5vdGlmeU5hbWUpOworICAgICAgICAgICAgZnJlZShucHRyLT5zbm1wTm90aWZ5VGFnKTsKKyAgICAgICAgICAgIGZyZWUobnB0cik7CiAgICAgICAgIH0KICAgICB9CisgICAgc25tcE5vdGlmeVRhYmxlU3RvcmFnZSA9IE5VTEw7CiAgICAgcmV0dXJuICgwKTsKIH0KIApAQCAtNDkxLDYgKzQ5MywzNyBAQAogICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5VGFibGUiLCAiZG9uZS5cbiIpKTsKIH0KIAordm9pZAorc2h1dGRvd25fc25tcE5vdGlmeVRhYmxlKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlUYWJsZSIsICJzaHV0dGluZyBkb3duIC4uLiAiKSk7CisKKyAgICBub3RpZnlUYWJsZV91bnJlZ2lzdGVyX25vdGlmaWNhdGlvbnMoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUFJFX1VQREFURV9DT05GSUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworCisgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1BSRV9VUERBVEVfQ09ORklHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZnlUYWJsZV91bnJlZ2lzdGVyX25vdGlmaWNhdGlvbnMsIE5VTEwsIEZBTFNFKTsKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHSVNURVJfTk9USUZJQ0FUSU9OUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZ5VGFibGVfcmVnaXN0ZXJfbm90aWZpY2F0aW9ucywgTlVMTCwgRkFMU0UpOworICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19TRU5EX1RSQVAyLCBzZW5kX25vdGlmaWNhdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIEZBTFNFKTsKKyNpZm5kZWYgRElTQUJMRV9TTk1QVjEKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfU0VORF9UUkFQMSwgc2VuZF9ub3RpZmljYXRpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBGQUxTRSk7CisjZW5kaWYKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLCBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX3NubXBOb3RpZnlUYWJsZSwgTlVMTCwgRkFMU0UpOworCisgICAgVU5SRUdJU1RFUl9TWVNPUl9FTlRSWShzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2UpOworCisgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlUYWJsZSIsICJkb25lLlxuIikpOworfQogCiAvKgogICogc25tcE5vdGlmeVRhYmxlX2FkZCgpOiBhZGRzIGEgc3RydWN0dXJlIG5vZGUgdG8gb3VyIGRhdGEgc2V0IApAQCAtNDk5LDcgKzUzMiw3IEBACiBzbm1wTm90aWZ5VGFibGVfYWRkKHN0cnVjdCBzbm1wTm90aWZ5VGFibGVfZGF0YSAqdGhlZGF0YSkKIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMgPSBOVUxMOwotCisgICAgaW50IHJldFZhbDsJCiAKICAgICBERUJVR01TR1RMKCgic25tcE5vdGlmeVRhYmxlIiwgImFkZGluZyBkYXRhLi4uICAiKSk7CiAgICAgLyoKQEAgLTUxMiwxMiArNTQ1LDE3IEBACiAKIAogCi0gICAgaGVhZGVyX2NvbXBsZXhfYWRkX2RhdGEoJnNubXBOb3RpZnlUYWJsZVN0b3JhZ2UsIHZhcnMsIHRoZWRhdGEpOwotICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5VGFibGUiLCAicmVnaXN0ZXJlZCBhbiBlbnRyeVxuIikpOworICAgIGlmIChoZWFkZXJfY29tcGxleF9tYXliZV9hZGRfZGF0YSgmc25tcE5vdGlmeVRhYmxlU3RvcmFnZSwgdmFycywgdGhlZGF0YSwgMSkKKyAgICAgICAgIT0gTlVMTCl7CisgICAgCURFQlVHTVNHVEwoKCJzbm1wTm90aWZ5VGFibGUiLCAicmVnaXN0ZXJlZCBhbiBlbnRyeVxuIikpOworCXJldFZhbCA9IFNOTVBFUlJfU1VDQ0VTUzsKKyAgICB9ZWxzZXsKKyAgICAgICAgcmV0VmFsID0gU05NUEVSUl9HRU5FUlI7IAorICAgIH0JCiAKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wTm90aWZ5VGFibGUiLCAiZG9uZS5cbiIpKTsKLSAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworICAgIHJldHVybiByZXRWYWw7CiB9CiAKIApAQCAtNTc4LDcgKzYxNiwxMSBAQAogICAgICAgICBTdG9yYWdlVG1wLT5zbm1wTm90aWZ5Um93U3RhdHVzID0gUlNfQUNUSVZFOwogCiAKLSAgICBzbm1wTm90aWZ5VGFibGVfYWRkKFN0b3JhZ2VUbXApOworICAgIGlmIChzbm1wTm90aWZ5VGFibGVfYWRkKFN0b3JhZ2VUbXApICE9IFNOTVBFUlJfU1VDQ0VTUyl7CisgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT5zbm1wTm90aWZ5TmFtZSk7CisgICAgICAgIFNOTVBfRlJFRShTdG9yYWdlVG1wLT5zbm1wTm90aWZ5VGFnKTsKKyAgICAgICAgU05NUF9GUkVFKFN0b3JhZ2VUbXApOworICAgIH0KIAogCiAgICAgREVCVUdNU0dUTCgoInNubXBOb3RpZnlUYWJsZSIsICJkb25lLlxuIikpOwpAQCAtNjc5LDYgKzcyMSw3IEBACiAgICAgfQogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBTTk1QTk9USUZZVEFHOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfc25tcE5vdGlmeVRhZzsKICAgICAgICAgYnJlYWs7CkBAIC02OTEsNiArNzM0LDcgQEAKICAgICBjYXNlIFNOTVBOT1RJRllST1dTVEFUVVM6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9zbm1wTm90aWZ5Um93U3RhdHVzOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7CiAgICAgfQpAQCAtNjk5LDYgKzc0Myw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1JFQURfU1VQUE9SVAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBTTk1QTk9USUZZVEFHOgogICAgICAgICAqdmFyX2xlbiA9IFN0b3JhZ2VUbXAtPnNubXBOb3RpZnlUYWdMZW47CkBAIC03MTksNiArNzY0LDcgQEAKICAgICBkZWZhdWx0OgogICAgICAgICBFUlJPUl9NU0coIiIpOwogICAgIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19SRUFEX1NVUFBPUlQgKi8gCiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTc0Nyw2ICs3OTMsOCBAQAogCiBzdGF0aWMgc3RydWN0IHNubXBOb3RpZnlUYWJsZV9kYXRhICpTdG9yYWdlTmV3OwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKKwogaW50CiB3cml0ZV9zbm1wTm90aWZ5VGFnKGludCBhY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC0xMTczLDMgKzEyMjEsNCBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgKaW5kZXggOWE5MzY0NS4uMThiZjFiZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaApAQCAtNjQsMTAgKzY0LDEyIEBACiAgICAgIGludCAgICAgICAgICAgICBzbm1wTm90aWZ5VGFibGVfYWRkKHN0cnVjdCBzbm1wTm90aWZ5VGFibGVfZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGhlZGF0YSk7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wTm90aWZ5VGFnOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcE5vdGlmeVR5cGU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wTm90aWZ5U3RvcmFnZVR5cGU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wTm90aWZ5Um93U3RhdHVzOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYwppbmRleCBkNGI2ZTY5Li5hNmE0MmMzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jCkBAIC0zOCw3ICszOCw4IEBACiAgICAgZm9yIChwID0gYWRkcnM7IHA7IHAgPSBwLT5pZmFfbmV4dCkgewogCiAgICAgICAgIGlmICghbGlzdF9oZWFkKSB7Ci0gICAgICAgICAgICBpZiAoIChsaXN0X2hlYWQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICAgICAgbGlzdF9oZWFkID0gbWFsbG9jKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSk7CisgICAgICAgICAgICBpZiAoIWxpc3RfaGVhZCkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOwpAQCAtNTcsNyArNTgsOCBAQAogICAgICAgICBpZiAobmFtZXB0cjEpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoIChuYW1lcHRyMi0+aWZuX25leHQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICBuYW1lcHRyMi0+aWZuX25leHQgPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKTsKKyAgICAgICAgaWYgKCFuYW1lcHRyMi0+aWZuX25leHQpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpKTsKICAgICAgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSxpbnRlcmZhY2VfbmFtZV9saXN0X2dldCwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCA5NzQ2MzZhLi40OGQ0YWNhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0yMDAsNyArMjAwLDYgQEAKIGludAogZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQogewotICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OwogICAgIHNpemVfdCAgICAgICAgICBjb3VudCA9IDA7CiAKICAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkIiwKQEAgLTIyMCw5ICsyMTksNyBAQAogICAgICAqIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaAogICAgICAqLwogCi0gICAgbG9uZyAgICAgICAgICAgIGV0aGVyU3RhdHNJbmRleDsKICAgICBpbnQgICAgICAgICAgICAgZmQ7Ci0gICAgaW50ICAgICAgICAgICAgIHJjID0gMCwgcmV0dmFsID0gMDsKIAogI2lmIGRlZmluZWQobGludXgpCiAgICAgc3RydWN0IGlmbmFtZSAqbGlzdF9oZWFkID0gTlVMTCwgKnAgPSBOVUxMOwpAQCAtMjQ0LDcgKzI0MSwxMSBAQAogICAgICAqLwogCiAjaWYgZGVmaW5lZChsaW51eCkKLSAgICBsaXN0X2hlYWQgPSBldGhlcnN0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChsaXN0X2hlYWQsICZyZXR2YWwpOworICAgIHsKKyAgICAgICAgaW50IHJldHZhbDsKKworICAgICAgICBsaXN0X2hlYWQgPSBldGhlcnN0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0KGxpc3RfaGVhZCwgJnJldHZhbCk7CisgICAgfQogCiAgICAgaWYgKCFsaXN0X2hlYWQpIHsKICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLCBlcnJvciBnZXR0aW5nIHRoZSBpbnRlcmZhY2UgbmFtZXMgcHJlc2VudCBpbiB0aGUgc3lzdGVtXG4iKTsKQEAgLTI1OCw2ICsyNTksOSBAQAogICAgICAqLwogCiAgICAgZm9yIChwID0gbGlzdF9oZWFkOyBwOyBwID0gcC0+aWZuX25leHQpIHsKKyAgICAgICAgbG9uZyAgICAgICAgICAgIGV0aGVyU3RhdHNJbmRleDsKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisKICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGUiLCAicHJvY2Vzc2luZyAnJXMnXG4iLCBwLT5uYW1lKSk7CiAKICAgICAgICAgLyoKQEAgLTI5NiwyMyArMzAwLDI3IEBACiAgICAgICAgICAqLwogCiAgICAgICAgIG1lbXNldCAoJnJvd3JlcV9jdHgtPmRhdGEsIDAsIHNpemVvZiAocm93cmVxX2N0eC0+ZGF0YSkpOwotICAgICAgICByYyA9IGludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCAocm93cmVxX2N0eCwgZmQsIHAtPm5hbWUpOworICAgICAgICB7CisgICAgICAgICAgICBpbnQgcmM7CiAKLSAgICAgICAgaWYgKHJjIDwgMCkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgZ2V0dGluZyB0aGUgc3RhdGlzdGljcyBmb3IgaW50ZXJmYWNlIHwlc3wgIgotICAgICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBkYXRhLCBvcGVyYXRpb24gbWlnaHQgbm90IGJlIHN1cHBvcnRlZFxuIiwgcC0+bmFtZSkpOwotICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgICAgICByYyA9IGludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCAocm93cmVxX2N0eCwgZmQsIHAtPm5hbWUpOwogCi0gICAgICAgIC8qCi0gICAgICAgICAqIGluc2VydCBpbnRvIHRhYmxlIGNvbnRhaW5lcgotICAgICAgICAgKi8KLSAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7Ci0gICAgICAgIGlmIChyYyA8IDApIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlIiwgImVycm9yIGluc2VydGluZyB8JXN8ICIsIHAtPm5hbWUpKTsKLSAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciBnZXR0aW5nIHRoZSBzdGF0aXN0aWNzIGZvciBpbnRlcmZhY2UgfCVzfCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBkYXRhLCBvcGVyYXRpb24gbWlnaHQgbm90IGJlIHN1cHBvcnRlZFxuIiwgcC0+bmFtZSkpOworICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBpbnNlcnQgaW50byB0YWJsZSBjb250YWluZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgaW5zZXJ0aW5nIHwlc3wgIiwgcC0+bmFtZSkpOworICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICArK2NvdW50OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggMzhlOTJhZi4uMjIxYzYwOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxNCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jCmluZGV4IGMwM2FlZjQuLmQ2MDIzZTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYwpAQCAtMTMsNiArMTMsNyBAQAogICogY29udGVudCBvZiB0aGUgc2N0cEFzc29jTG9jYWxBZGRyVGFibGUgCiAgKi8KIHN0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cEFzc29jTG9jYWxBZGRyVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yNyw4ICsyOCw3IEBACiB2b2lkCiBzaHV0ZG93bl9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSh2b2lkKQogewotICAgIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2NvbnRhaW5lcl9jbGVhcgotICAgICAgICAoc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfY29udGFpbmVyKTsKKyAgICBzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSgpOwogfQogCiAvKiogSW5pdGlhbGl6ZSB0aGUgc2N0cEFzc29jTG9jYWxBZGRyVGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCkBAIC00Miw3ICs0Miw2IEBACiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0gTlVMTDsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKIAogICAgIHJlZyA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSIsCkBAIC0xMzIsNiArMTMxLDE3IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9CisgICAgc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfY29udGFpbmVyX2NsZWFyCisgICAgICAgIChzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9jb250YWluZXIpOworfQorCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlIHRhYmxlICovCiBpbnQKIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKQEAgLTI2NCw4ICsyNzQsNyBAQAogdm9pZAogc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfZW50cnlfZnJlZShzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9lbnRyeSAqIGVudHJ5KQogewotICAgIGlmIChlbnRyeSAhPSBOVUxMKQotICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOworICAgIFNOTVBfRlJFRShlbnRyeSk7CiB9CiAKIG5ldHNubXBfY29udGFpbmVyICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oCmluZGV4IGMyY2MwNTUuLmVmZjA4MGYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaApAQCAtMTMsNiArMTMsNyBAQAogdm9pZCAgICAgICAgICAgIGluaXRfc2N0cEFzc29jTG9jYWxBZGRyVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2N0cEFzc29jTG9jYWxBZGRyVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jCmluZGV4IGFkMTRhNDYuLjM4Y2E4YTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jCkBAIC0xMyw2ICsxMyw3IEBACiAgKiBjb250ZW50IG9mIHRoZSBzY3RwQXNzb2NSZW1BZGRyVGFibGUgCiAgKi8KIHN0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqc2N0cEFzc29jUmVtQWRkclRhYmxlX2NvbnRhaW5lcjsKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIHNjdHBBc3NvY1JlbUFkZHJUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTI3LDcgKzI4LDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBBc3NvY1JlbUFkZHJUYWJsZSh2b2lkKQogewotICAgIHNjdHBBc3NvY1JlbUFkZHJUYWJsZV9jb250YWluZXJfY2xlYXIoc2N0cEFzc29jUmVtQWRkclRhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cEFzc29jUmVtQWRkclRhYmxlKCk7CiB9CiAKIC8qKiBJbml0aWFsaXplIHRoZSBzY3RwQXNzb2NSZW1BZGRyVGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCkBAIC00MSw3ICs0Miw2IEBACiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0gTlVMTDsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKIAogICAgIHJlZyA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzY3RwQXNzb2NSZW1BZGRyVGFibGUiLApAQCAtMTMwLDYgKzEzMCwxNiBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAordm9pZAorc2h1dGRvd25fdGFibGVfc2N0cEFzc29jUmVtQWRkclRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBzY3RwQXNzb2NSZW1BZGRyVGFibGVfY29udGFpbmVyX2NsZWFyKHNjdHBBc3NvY1JlbUFkZHJUYWJsZV9jb250YWluZXIpOworfQorCiAKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc2N0cEFzc29jUmVtQWRkclRhYmxlIHRhYmxlICovCiBpbnQKQEAgLTMwOSw4ICszMTksNyBAQAogdm9pZAogc2N0cEFzc29jUmVtQWRkclRhYmxlX2VudHJ5X2ZyZWUoc2N0cEFzc29jUmVtQWRkclRhYmxlX2VudHJ5ICogZW50cnkpCiB7Ci0gICAgaWYgKGVudHJ5ICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogbmV0c25tcF9jb250YWluZXIgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuaAppbmRleCBjYzY1YzdlLi41MDY4NTYxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuaApAQCAtMTMsNiArMTMsNyBAQAogdm9pZCAgICAgICAgICAgIGluaXRfc2N0cEFzc29jUmVtQWRkclRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIHNodXRkb3duX3NjdHBBc3NvY1JlbUFkZHJUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX3NjdHBBc3NvY1JlbUFkZHJUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NSZW1BZGRyVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBzY3RwQXNzb2NSZW1BZGRyVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jCmluZGV4IGYzYTY4YTMuLjk5MTkwNzUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYwpAQCAtMTYsNiArMTYsNyBAQAogICogY29udGVudCBvZiB0aGUgc2N0cEFzc29jVGFibGUgCiAgKi8KIHN0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqc2N0cEFzc29jVGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cEFzc29jVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0zMCw3ICszMSw3IEBACiB2b2lkCiBzaHV0ZG93bl9zY3RwQXNzb2NUYWJsZSh2b2lkKQogewotICAgIHNjdHBBc3NvY1RhYmxlX2NvbnRhaW5lcl9jbGVhcihzY3RwQXNzb2NUYWJsZV9jb250YWluZXIpOworICAgIHNodXRkb3duX3RhYmxlX3NjdHBBc3NvY1RhYmxlKCk7CiB9CiAKIC8qKiBJbml0aWFsaXplIHRoZSBzY3RwQXNzb2NUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTQzLDcgKzQ0LDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogICAgIG5ldHNubXBfY2FjaGUgICpjYWNoZSA9IE5VTEw7CiAKICAgICByZWcgPQpAQCAtMTIwLDYgKzEyMCw4IEBACiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKKyAgICBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZShoYW5kbGVyKTsKKwogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIGhhbmRsZXIpKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciBpbmplY3RpbmcgY2FjaGUgaGFuZGxlciBmb3Igc2N0cEFzc29jVGFibGVcbiIpOwpAQCAtMTY1LDYgKzE2NywxNyBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAordm9pZAorc2h1dGRvd25fdGFibGVfc2N0cEFzc29jVGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9CisgICAgaWYgKHNjdHBBc3NvY1RhYmxlX2NvbnRhaW5lcikKKwlzY3RwQXNzb2NUYWJsZV9jb250YWluZXJfY2xlYXIoc2N0cEFzc29jVGFibGVfY29udGFpbmVyKTsKK30KKwogCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjdHBBc3NvY1RhYmxlIHRhYmxlICovCiBpbnQKQEAgLTQ5NCw4ICs1MDcsNyBAQAogdm9pZAogc2N0cEFzc29jVGFibGVfZW50cnlfZnJlZShzY3RwQXNzb2NUYWJsZV9lbnRyeSAqIGVudHJ5KQogewotICAgIGlmIChlbnRyeSAhPSBOVUxMKQotICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOworICAgIFNOTVBfRlJFRShlbnRyeSk7CiB9CiAKIG5ldHNubXBfY29udGFpbmVyICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmggYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5oCmluZGV4IGE2YTlmM2MuLmM2MjU3YjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaApAQCAtMTMsNiArMTMsNyBAQAogdm9pZCAgICAgICAgICAgIGluaXRfc2N0cEFzc29jVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2N0cEFzc29jVGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9zY3RwQXNzb2NUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9zY3RwQXNzb2NUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjdHBBc3NvY1RhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jCmluZGV4IDdhMmIwYjIuLjFhNmZkMzUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAic2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmgiCiAKIHN0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlX2NvbnRhaW5lcjsKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTI0LDggKzI1LDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZSh2b2lkKQogewotICAgIHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9jb250YWluZXJfY2xlYXIKLSAgICAgICAgKHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9jb250YWluZXIpOworICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZSgpOwogfQogCiAvKiogSW5pdGlhbGl6ZSB0aGUgc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwpAQCAtMzksNyArMzksNiBAQAogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyA9IE5VTEw7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CiAKICAgICByZWcgPQogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigic2N0cExvb2t1cExvY2FsUG9ydFRhYmxlIiwKQEAgLTEyNyw2ICsxMjYsMTYgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3RhYmxlX3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZSh2b2lkKQoreworICAgIGlmICh0YWJsZV9pbmZvKSB7CisJbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGVfY29udGFpbmVyX2NsZWFyCisgICAgICAgIChzY3RwTG9va3VwTG9jYWxQb3J0VGFibGVfY29udGFpbmVyKTsKK30KIAogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUgdGFibGUgKi8KIGludApAQCAtMjQ5LDggKzI1OCw3IEBACiB2b2lkCiBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGVfZW50cnlfZnJlZShzY3RwTG9va3VwTG9jYWxQb3J0VGFibGVfZW50cnkgKiBlbnRyeSkKIHsKLSAgICBpZiAoZW50cnkgIT0gTlVMTCkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQogCiBuZXRzbm1wX2NvbnRhaW5lciAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oCmluZGV4IDlkYTZjZDkuLjIyNmMxNjggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZSh2b2lkKTsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIHNjdHBMb29rdXBMb2NhbFBvcnRUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMKaW5kZXggMzM3MGY1Mi4uYWUyZWM5MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAic2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuaCIKIAogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9jb250YWluZXI7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTI0LDggKzI1LDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGVfY29udGFpbmVyX2NsZWFyCi0gICAgICAgIChzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9jb250YWluZXIpOworICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlKCk7CiB9CiAKIC8qKiBJbml0aWFsaXplIHRoZSBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KQEAgLTM5LDcgKzM5LDYgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPSBOVUxMOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOwogICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIgPSBOVUxMOwotICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOwogCiAgICAgcmVnID0KICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlIiwKQEAgLTEyOSw2ICsxMjgsMTcgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9jb250YWluZXJfY2xlYXIKKyAgICAgICAgKHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2NvbnRhaW5lcik7Cit9CisKIC8qKiBoYW5kbGVzIHJlcXVlc3RzIGZvciB0aGUgc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUgdGFibGUgKi8KIGludAogc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLApAQCAtMjUzLDggKzI2Myw3IEBACiBzY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZV9lbnRyeV9mcmVlKHNjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlX2VudHJ5ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnkpCiB7Ci0gICAgaWYgKGVudHJ5ICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogbmV0c25tcF9jb250YWluZXIgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgKaW5kZXggNDg0Y2I1OC4uNWJkM2M0OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMKaW5kZXggMjU0MmVhNi4uMzY4ZGQ1MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJzY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaCIKIAogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlIG1vZHVsZSAqLwogdm9pZApAQCAtMjQsOCArMjUsNyBAQAogdm9pZAogc2h1dGRvd25fc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlX2NvbnRhaW5lcl9jbGVhcgotICAgICAgICAoc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlX2NvbnRhaW5lcik7CisgICAgc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlKCk7CiB9CiAKIC8qKiBJbml0aWFsaXplIHRoZSBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCkBAIC0zOSw3ICszOSw2IEBACiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0gTlVMTDsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKIAogICAgIHJlZyA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzY3RwTG9va3VwUmVtSVBBZGRyVGFibGUiLApAQCAtMTIzLDYgKzEyMiwxNyBAQAogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAordm9pZAorc2h1dGRvd25fdGFibGVfc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfY29udGFpbmVyX2NsZWFyCisgICAgICAgIChzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfY29udGFpbmVyKTsKK30KKwogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGUgdGFibGUgKi8KIGludAogc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKQEAgLTI1Myw4ICsyNjMsNyBAQAogdm9pZAogc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlX2VudHJ5X2ZyZWUoc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlX2VudHJ5ICogZW50cnkpCiB7Ci0gICAgaWYgKGVudHJ5ICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRShlbnRyeSk7CisgICAgU05NUF9GUkVFKGVudHJ5KTsKIH0KIAogbmV0c25tcF9jb250YWluZXIgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaAppbmRleCBlMzE1ZDZkLi5iNzQ1MTRjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaApAQCAtMTMsNiArMTMsNyBAQAogdm9pZCAgICAgICAgICAgIGluaXRfc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIHNodXRkb3duX3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBzY3RwTG9va3VwUmVtSVBBZGRyVGFibGVfaGFuZGxlcjsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuYwppbmRleCBhNzY3NGU0Li5jOGE4ODc0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jCkBAIC0xMCw2ICsxMCw3IEBACiAjaW5jbHVkZSAic2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oIgogCiBzdGF0aWMgbmV0c25tcF9jb250YWluZXIgKnNjdHBMb29rdXBSZW1Qb3J0VGFibGVfY29udGFpbmVyOworc3RhdGljIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKIC8qKiBJbml0aWFsaXplcyB0aGUgc2N0cExvb2t1cFJlbVBvcnRUYWJsZSBtb2R1bGUgKi8KIHZvaWQKQEAgLTI0LDggKzI1LDcgQEAKIHZvaWQKIHNodXRkb3duX3NjdHBMb29rdXBSZW1Qb3J0VGFibGUodm9pZCkKIHsKLSAgICBzY3RwTG9va3VwUmVtUG9ydFRhYmxlX2NvbnRhaW5lcl9jbGVhcgotICAgICAgICAoc2N0cExvb2t1cFJlbVBvcnRUYWJsZV9jb250YWluZXIpOworICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1Qb3J0VGFibGUoKTsKIH0KIAogLyoqIEluaXRpYWxpemUgdGhlIHNjdHBMb29rdXBSZW1Qb3J0VGFibGUgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCkBAIC0zOSw3ICszOSw2IEBACiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0gTlVMTDsKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyID0gTlVMTDsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvID0gTlVMTDsKIAogICAgIHJlZyA9CiAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJzY3RwTG9va3VwUmVtUG9ydFRhYmxlIiwKQEAgLTEyMiw2ICsxMjEsMTcgQEAKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CiB9CiAKK3ZvaWQKK3NodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1Qb3J0VGFibGUodm9pZCkKK3sKKyAgICBpZiAodGFibGVfaW5mbykgeworCW5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwl0YWJsZV9pbmZvID0gTlVMTDsKKyAgICB9CisgICAgc2N0cExvb2t1cFJlbVBvcnRUYWJsZV9jb250YWluZXJfY2xlYXIKKyAgICAgICAgKHNjdHBMb29rdXBSZW1Qb3J0VGFibGVfY29udGFpbmVyKTsKK30KKwogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBzY3RwTG9va3VwUmVtUG9ydFRhYmxlIHRhYmxlICovCiBpbnQKIHNjdHBMb29rdXBSZW1Qb3J0VGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLApAQCAtMjQzLDggKzI1Myw3IEBACiB2b2lkCiBzY3RwTG9va3VwUmVtUG9ydFRhYmxlX2VudHJ5X2ZyZWUoc2N0cExvb2t1cFJlbVBvcnRUYWJsZV9lbnRyeSAqIGVudHJ5KQogewotICAgIGlmIChlbnRyeSAhPSBOVUxMKQotICAgICAgICBTTk1QX0ZSRUUoZW50cnkpOworICAgIFNOTVBfRlJFRShlbnRyeSk7CiB9CiAKIG5ldHNubXBfY29udGFpbmVyICoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuaAppbmRleCA5NmQ0OWNlLi5iMmFjODExIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oCkBAIC0xMyw2ICsxMyw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9zY3RwTG9va3VwUmVtUG9ydFRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIHNodXRkb3duX3NjdHBMb29rdXBSZW1Qb3J0VGFibGUodm9pZCk7CiB2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9zY3RwTG9va3VwUmVtUG9ydFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX3NjdHBMb29rdXBSZW1Qb3J0VGFibGUodm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBzY3RwTG9va3VwUmVtUG9ydFRhYmxlX2hhbmRsZXI7CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMKaW5kZXggNmJjMGRlNi4uZDk5NjZmYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYwpAQCAtMTAsNiArMTAsNyBAQAogI2luY2x1ZGUgInNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuaCIKIAogc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2NvbnRhaW5lcjsKK3N0YXRpYyBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCiAvKiogSW5pdGlhbGl6ZXMgdGhlIHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUgbW9kdWxlICovCiB2b2lkCkBAIC0yNCw4ICsyNSw3IEBACiB2b2lkCiBzaHV0ZG93bl9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlKHZvaWQpCiB7Ci0gICAgc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZV9jb250YWluZXJfY2xlYXIKLSAgICAgICAgKHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGVfY29udGFpbmVyKTsKKyAgICBzaHV0ZG93bl90YWJsZV9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlKCk7CiB9CiAKIC8qKiBJbml0aWFsaXplIHRoZSBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlIHRhYmxlIGJ5IGRlZmluaW5nIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCAqLwpAQCAtMzksNyArMzksNiBAQAogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyA9IE5VTEw7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9IE5VTEw7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IE5VTEw7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyA9IE5VTEw7CiAKICAgICByZWcgPQogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigic2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZSIsCkBAIC0xMjQsNiArMTIzLDE3IEBACiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOwogfQogCit2b2lkCitzaHV0ZG93bl90YWJsZV9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlKHZvaWQpCit7CisgICAgaWYgKHRhYmxlX2luZm8pIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCXRhYmxlX2luZm8gPSBOVUxMOworICAgIH0KKyAgICBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2NvbnRhaW5lcl9jbGVhcgorICAgICAgICAoc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZV9jb250YWluZXIpOworfQorCiAvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUgdGFibGUgKi8KIGludAogc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCkBAIC0yNTgsOCArMjY4LDcgQEAKIHNjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGVfZW50cnlfZnJlZShzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlX2VudHJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBlbnRyeSkKIHsKLSAgICBpZiAoZW50cnkgIT0gTlVMTCkKLSAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICBTTk1QX0ZSRUUoZW50cnkpOwogfQogCiBuZXRzbm1wX2NvbnRhaW5lciAqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmgKaW5kZXggYWFhNWEwYi4uZjNiZWNkYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuaApAQCAtMTMsNiArMTMsNyBAQAogdm9pZCAgICAgICAgICAgIGluaXRfc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZSh2b2lkKTsKIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlKHZvaWQpOwogdm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlKHZvaWQpOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZV9oYW5kbGVyOwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmMKaW5kZXggMTE1NzNjMy4uNmRhNWE2YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5jCkBAIC0xNDMsOCArMTQzLDggQEAKICAgICAgICAgaWYgKHJldCA8IDApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzY3RwOnNjYWxhcnM6c3RhdHM6YXJjaF9sb2FkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIGVudHJ5OiAlc1xuIiwgbGluZSkpOwotICAgICAgICAgICAgLy8gZmNsb3NlKGYpOwotICAgICAgICAgICAgLy8gcmV0dXJuIHJldDsKKyAgICAgICAgICAgIC8qIGZjbG9zZShmKTsgKi8KKyAgICAgICAgICAgIC8qIHJldHVybiByZXQ7ICovCiAJICAgIHJldCA9IDA7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uYwppbmRleCAyMzc2Nzk1Li5iMjhlYTAzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTEyLDYgKzEzLDggQEAKICNpbmNsdWRlICJzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmgiCiAjaW5jbHVkZSAic2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saWZvKQorCiBzdGF0aWMgdm9pZAogc2N0cEFzc29jVGFibGVfY29sbGVjdF9pbnZhbGlkKHZvaWQgKndoYXQsIHZvaWQgKm1hZ2ljKQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jCmluZGV4IDE1ODY1NTQuLjhlNjI4NjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmMKQEAgLTI4MSw2ICsyODEsOCBAQAogICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgIH0KIAorICAgIG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlX2luaXQoKTsKKwogICAgIC8qCiAgICAgICogaWdub3JlIHRoZSBoZWFkZXIuIAogICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMgYi9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYwppbmRleCA2OTg3MTdjLi40NTk4YzJiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYworKysgYi9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYwpAQCAtNCw2ICs0LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxjdHlwZS5oPgogCkBAIC02OCw2ICs2OSw4IEBACiAjaW5jbHVkZSAibWliZGVmcy5oIgogI2luY2x1ZGUgInNubXBkLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfb2JqaWQpCisKIGxvbmcgICAgICAgICAgICBzbXV4X2xvbmc7CiB1X2xvbmcgICAgICAgICAgc211eF91bG9uZzsKIHN0cnVjdCBzb2NrYWRkcl9pbiBzbXV4X3NhOwpAQCAtNDE0LDcgKzQxNyw3IEBACiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHNlbmR0byhycHRyLT5zcl9mZCwgYnVmLCBsZW4sIDAsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBpZiAoc2VuZHRvKHJwdHItPnNyX2ZkLCAodm9pZCAqKSBidWYsIGxlbiwgMCwgTlVMTCwgMCkgPCAwKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbdmFyX3NtdXhfd3JpdGVdIHNlbmQgZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICB9CkBAIC00MjMsNyArNDI2LDcgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBwZWVrIGF0IHdoYXQncyByZWNlaXZlZCAKICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKChsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgYnVmLAorICAgICAgICAgICAgaWYgKChsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgKHZvaWQgKikgYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNVVhNQVhQS1RTSVpFLCBNU0dfUEVFSywgTlVMTCwgTlVMTCkpIDw9IDApIHsKICAgICAgICAgICAgICAgICBpZiAoKGxlbiA9PSAtMSkgJiYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpKQogICAgICAgICAgICAgICAgIHsKQEAgLTQ2Myw3ICs0NjYsNyBAQAogICAgICAgICAgICAgZG8KICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGxlbiA9IHRtcF9sZW47Ci0gICAgICAgICAgICAgICBsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgYnVmLCBsZW4sIDAsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAgbGVuID0gcmVjdmZyb20ocnB0ci0+c3JfZmQsICh2b2lkICopIGJ1ZiwgbGVuLCAwLCBOVUxMLCBOVUxMKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHdoaWxlKChsZW4gPT0gLTEpICYmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSk7CiAKQEAgLTU0Nyw3ICs1NTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIlt2YXJfc211eF93cml0ZV0gZW50ZXJpbmcgRlJFRSAtIHNlbmRpbmcgQ29tbWl0IFxuIikpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChzZW5kdG8ocnB0ci0+c3JfZmQsIHNvdXQsIDMsIDAsIE5VTEwsIDApKSA8IDApIHsKKyAgICAgICAgaWYgKChzZW5kdG8ocnB0ci0+c3JfZmQsICh2b2lkICopIHNvdXQsIDMsIDAsIE5VTEwsIDApKSA8IDApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJbdmFyX3NtdXhfd3JpdGVdIHNlbmQgcm9sbGJhY2svY29tbWl0IGZhaWxlZFxuIikpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jCmluZGV4IDViNTZmMWYuLmQxYzU3NWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYwpAQCAtMTQsNiArMTQsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMjYsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAic25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19zdG9yYWdlX3RyYW5zaXRpb24pCisKIGNvbnN0IG9pZCAgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkW10gPQogICAgIHsgU05NUE5PVElGWUZJTFRFUlRBQkxFX09JRCB9OwogY29uc3QgaW50ICAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRfc2l6ZSA9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCA5NGQ4Njg3Li45NDJhODY1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTgsNiArOCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdmFjbS5oPgpAQCAtMjAsNiArMjEsOCBAQAogCiAjaW5jbHVkZSAic25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfZ2V0KQorCiAvKiogQGluZ3JvdXAgaW50ZXJmYWNlIAogICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCiAgKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBhZjRhZDM3Li40MDQwZTNmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMjIgQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wTm90aWZ5RmlsdGVyVGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2NvbnRhaW5lcl9yb3dfaW5zZXJ0KQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3NpemUsIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQsIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnRhaW5lcl9nZXQsIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtOTYsMTkgKzExMywyMyBAQAogICAgIF9zbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duCiAgICAgKHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfcmVnaXN0cmF0aW9uICoKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QTk9USUZZRklMVEVSVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUE5PVElGWUZJTFRFUlRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgogc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoc25tcE5vdGlmeUZpbHRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpCkBAIC0xMTgsMTIgKzEzOSwxNSBAQAogICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QTk9USUZZRklMVEVSVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiB1X2ludAogc25tcE5vdGlmeUZpbHRlclRhYmxlX2RpcnR5X2dldCh2b2lkKQpAQCAtMjYxLDcgKzI4NSw3IEBACiAgICAgICAgIF9tZmRfc25tcE5vdGlmeUZpbHRlclRhYmxlX3Bvc3RfcmVxdWVzdDsKIAogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICAvKgogICAgICAqIFJFUVVJUkVEIHdyYXBwZXJzIGZvciBzZXQgcmVxdWVzdCBoYW5kbGluZwogICAgICAqLwpAQCAtMjg3LDcgKzMxMSw3IEBACiAgICAgICovCiAgICAgYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MgPQogICAgICAgICBfbWZkX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jaGVja19kZXBlbmRlbmNpZXM7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICAgICAqCkBAIC0zMDMsOCArMzI3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZF9zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhBTkRMRVJfQ0FOX1JXUklURQorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBIQU5ETEVSX0NBTl9SV1JJVEUKICNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CkBAIC0zMjUsNyArMzQ5LDcgQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTM0OCw3ICszNzIsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtMTA4Myw3ICsxMTA3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3R4LCByb3dyZXFfY3R4KTsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jaGVja19pbmRleGVzICovCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTE4MzksNyArMTg2Myw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yMDE0LDE1ICsyMDM4LDE4IEBACiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX2luaXRfcGVyc2lzdGVuY2UobmV0c25tcF9jb250YWluZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29udGFpbmVyKQogeworICAgIG5ldHNubXBfY29udGFpbmVyICoqY29udGFpbmVyX3A7CiAgICAgaW50ICAgICAgICAgICAgIHJjOwogCiAgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoTlVMTCwgcm93X3Rva2VuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3Jvd19yZXN0b3JlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgIGNvbnRhaW5lcl9wID0gbmV0c25tcF9tZW1kdXAoJmNvbnRhaW5lciwgc2l6ZW9mKGNvbnRhaW5lcikpOworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lcl9wKTsKICAgICByYyA9IHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3NhdmVfcm93cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3ApOwogCiAgICAgaWYgKHJjICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyBmb3IgU1RPUkVfREFUQSBjYWxsYmFjayAiCkBAIC0yMDQwLDcgKzIwNjcsNyBAQAogICAgICAgICAiI1xuIiAiIyBzbm1wTm90aWZ5RmlsdGVyVGFibGUgcGVyc2lzdGVudCBkYXRhXG4iICIjIjsKICAgICBjaGFyICAgICAgICAgICAqdHlwZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQVBQVFlQRSk7Ci0gICAgbmV0c25tcF9jb250YWluZXIgKmMgPSAobmV0c25tcF9jb250YWluZXIgKikgY2xpZW50YXJnOworICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gKihuZXRzbm1wX2NvbnRhaW5lciAqKiljbGllbnRhcmc7CiAKICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6c25tcE5vdGlmeUZpbHRlclRhYmxlOiIKICAgICAgICAgICAgICAgICAiX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfc2F2ZV9yb3dzIiwKQEAgLTI0MDYsNiArMjQzMyw3IEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBOT1RJRllGSUxURVJUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoc25tcE5vdGlmeUZpbHRlclRhYmxlX21pYl9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpCkBAIC0yNDMzLDMgKzI0NjEsNCBAQAogCiAgICAgcmV0dXJuIHJvd3JlcV9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QTk9USUZZRklMVEVSVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGJlYTY3ZWQuLjA0MjMxZjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxMCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYwppbmRleCA4N2Y0ZDkxLi5lNzU2Nzg4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMKQEAgLTMsNiArMyw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KQEAgLTEwLDkgKzExLDE0IEBACiAjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInNubXBFbmdpbmUuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBlbmdpbmVfYWxsLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJlZ2lzdGVyX3NubXBFbmdpbmVfc2NhbGFyc19jb250ZXh0LCBzbm1wZW5naW5lX2FsbCkKKwogc3RydWN0IHZhcmlhYmxlMiBzbm1wRW5naW5lX3ZhcmlhYmxlc1tdID0gewogICAgIHtTTk1QRU5HSU5FSUQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezF9fSwKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQogICAgIHtTTk1QRU5HSU5FQk9PVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LApAQCAtMjQsNiArMzAsMTIgQEAKICAgICB7U05NUEVOR0lORVRJTUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKICAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHszfX0sCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERSAqLworI2Vsc2UgIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCisgICAge1NOTVBFTkdJTkVCT09UUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezJ9fSwKKyAgICB7U05NUEVOR0lORVRJTUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHszfX0sCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKICAgICB7U05NUEVOR0lORU1BWE1FU1NBR0VTSVpFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7NH19LAogfTsKQEAgLTQxLDYgKzUzLDcgQEAKICAgICAgICAgICAgICAgICAgc25tcEVuZ2luZV92YXJpYWJsZXNfb2lkKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFR0lTVEVSX1NOTVBFTkdJTkVfU0NBTEFSU19DT05URVhUCiB2b2lkCiByZWdpc3Rlcl9zbm1wRW5naW5lX3NjYWxhcnNfY29udGV4dChjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKQEAgLTUzLDYgKzY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBERUZBVUxUX01JQl9QUklPUklUWSwgMCwgMCwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TmFtZSwgLTEsIDApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfU05NUEVOR0lORV9TQ0FMQVJTX0NPTlRFWFQgKi8KIAogdm9pZAogaW5pdF9zbm1wRW5naW5lKHZvaWQpCkBAIC02MiwxMiArNzYsMTQgQEAKICAgICByZWdpc3Rlcl9zbm1wRW5naW5lX3NjYWxhcnMoKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUKIGludCAgICAgICAgICAgICB3cml0ZV9lbmdpbmVCb290cyhpbnQsIHVfY2hhciAqLCB1X2NoYXIsIHNpemVfdCwgdV9jaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICosIHNpemVfdCk7CiBpbnQgICAgICAgICAgICAgd3JpdGVfZW5naW5lVGltZShpbnQsIHVfY2hhciAqLCB1X2NoYXIsIHNpemVfdCwgdV9jaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiwgc2l6ZV90KTsKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHVfY2hhciAgICAgICAgICoKIHZhcl9zbm1wRW5naW5lKHN0cnVjdCB2YXJpYWJsZSAqdnAsCkBAIC0xMDEsMTYgKzExNywyMCBAQAogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgZW5naW5lSUQ7CiAKICAgICBjYXNlIFNOTVBFTkdJTkVCT09UUzoKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9lbmdpbmVCb290czsKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBsb25nX3JldCA9IHNubXB2M19sb2NhbF9zbm1wRW5naW5lQm9vdHMoKTsKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldDsKIAogICAgIGNhc2UgU05NUEVOR0lORVRJTUU6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfZW5naW5lVGltZTsKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICBsb25nX3JldCA9IHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSgpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgJmxvbmdfcmV0OwogCkBAIC0xMjUsNiArMTQ1LDggQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQogLyoKICAqIHdyaXRlX2VuZ2luZUJvb3RzKCk6CkBAIC0yMjEsMyArMjQzLDQgQEAKIH0KIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jCmluZGV4IGZhMjNkZDUuLmE3ZmMyY2UgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0c181XzUuYwpAQCAtNCw2ICs0LDggQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CkBAIC0xNiw2ICsxOCw4IEBACiAjZGVmaW5lIHNubXBNUERNSUJPYmplY3RzIHNubXBNUERNSUIsIDIKICNkZWZpbmUgc25tcE1QRE1JQkNvbXBsaWFuY2VzIHNubXBNUERNSUIsIDMsIDEKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVscGVyX3N0YXRpc3RpY3MpCisKIHN0YXRpYyBvaWQgc25tcE1QRFN0YXRzW10gPSB7IHNubXBNUERNSUJPYmplY3RzLCAxIH07CiAKIHN0YXRpYyBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uKiBzbm1wTVBEU3RhdHNfcmVnID0gTlVMTDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKaW5kZXggMWFhNDEwNS4uNzE4ZTA3MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKQEAgLTcxLDUgKzcxLDYgQEAKICAgICAgICAgbG9uZ19yZXQgPSBzbm1wX2dldF9zdGF0aXN0aWModG1hZ2ljICsgU1RBVF9VU01fU1RBVFNfU1RBUlQpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgJmxvbmdfcmV0OwogICAgIH0KKwogICAgIHJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jCmluZGV4IGI1NmYxOWIuLmJjZDA0ZTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMKQEAgLTQsNiArNCw4IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgpAQCAtMjAsNiArMjIsOCBAQAogc3RhdGljIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qIHVzbVN0YXRzX3JlZyA9IE5VTEw7CiBzdGF0aWMgb2lkIHVzbU1JQkNvbXBsaWFuY2VbXSA9IHsgdXNtTUlCQ29tcGxpYW5jZXMsIDEgfTsKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGVscGVyX3N0YXRpc3RpY3MpCisKIHZvaWQKIGluaXRfdXNtU3RhdHNfNV81KHZvaWQpCiB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYwppbmRleCA4OTFmOWZjLi45ZjA1MDNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMKQEAgLTMsNiArMyw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAKICNpZiBIQVZFX1NUUklOR19ICkBAIC0xNyw3ICsxOCwxMiBAQAogI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKICNpbmNsdWRlICJ1c21Vc2VyLmgiCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogaW50IHVzbVN0YXR1c0NoZWNrKHN0cnVjdCB1c21Vc2VyICp1cHRyKTsKKyNlbmRpZiAgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtdXNlcl9hbGwsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGluaXRfcmVnaXN0ZXJfdXNtdXNlcl9jb250ZXh0LCB1c211c2VyX2FsbCkKIAogc3RydWN0IHZhcmlhYmxlNCB1c21Vc2VyX3ZhcmlhYmxlc1tdID0gewogICAgIHtVU01VU0VSU1BJTkxPQ0ssIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCkBAIC02NCw2ICs3MCw3IEBACiAgICAgICAgICAgICAgICAgIHVzbVVzZXJfdmFyaWFibGVzX29pZCk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTklUX1JFR0lTVEVSX1VTTVVTRVJfQ09OVEVYVAogdm9pZAogaW5pdF9yZWdpc3Rlcl91c21Vc2VyX2NvbnRleHQoY29uc3QgY2hhciAqY29udGV4dE5hbWUpIHsKICAgICByZWdpc3Rlcl9taWJfY29udGV4dCgic25tcHYzL3VzbVVzZXIiLApAQCAtNzUsNiArODIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfTUlCX1BSSU9SSVRZLCAwLCAwLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHROYW1lLCAtMSwgMCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JTklUX1JFR0lTVEVSX1VTTVVTRVJfQ09OVEVYVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgogICogdXNtX2dlbmVyYXRlX09JRApAQCAtMzAzLDggKzMxMSwxMSBAQAogICAgIGlmICghdnAgfHwgIW5hbWUgfHwgIWxlbmd0aCB8fCAhdmFyX2xlbikKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOyAgICAvKiBhc3N1bWUgaXQgaXNudCB3cml0YWJsZSBmb3IgdGhlIHRpbWUgYmVpbmcgKi8KLSAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7ICAgICAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLworICAgIC8qIGFzc3VtZSBpdCBpc250IHdyaXRhYmxlIGZvciB0aGUgdGltZSBiZWluZyAqLworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7ICAgIAorCisgICAgLyogYXNzdW1lIGFuIGludGVnZXIgYW5kIGNoYW5nZSBsYXRlciBpZiBub3QgKi8KKyAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7CiAKICAgICBpZiAodnAtPm1hZ2ljICE9IFVTTVVTRVJTUElOTE9DSykgewogICAgICAgICBvaWQgICAgICAgICAgICAgbmV3bmFtZVtNQVhfT0lEX0xFTl07CkBAIC0zNzQsNiArMzg1LDcgQEAKICAgICAgICAgICAgIGluZGV4T2lkID0gdXNtX2dlbmVyYXRlX09JRCh2cC0+bmFtZSwgdnAtPm5hbWVsZW4sIHVwdHIsICZsZW4pOwogICAgICAgICAgICAgKmxlbmd0aCA9IGxlbjsKICAgICAgICAgICAgIG1lbW1vdmUobmFtZSwgaW5kZXhPaWQsIGxlbiAqIHNpemVvZihvaWQpKTsKKwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbVVzZXIiLCAiRm91bmQgdXNlcjogJXMgLSAiLCB1cHRyLT5uYW1lKSk7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgdXB0ci0+ZW5naW5lSURMZW47IGkrKykgewogICAgICAgICAgICAgICAgIERFQlVHTVNHKCgidXNtVXNlciIsICIgJXgiLCB1cHRyLT5lbmdpbmVJRFtpXSkpOwpAQCAtMzkwLDYgKzQwMiw3IEBACiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZGlmIC0tIHZwLT5tYWdpYyAhPSBVU01VU0VSU1BJTkxPQ0sgKi8KIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAKICAgICBjYXNlIFVTTVVTRVJTUElOTE9DSzoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3VzbVVzZXJTcGluTG9jazsKICAgICAgICAgbG9uZ19yZXQgPSB1c21Vc2VyU3BpbkxvY2s7CkBAIC00ODUsMTUgKzQ5OCwyMSBAQAogICAgICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKLQogICAgIGRlZmF1bHQ6CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZCIsICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfdXNtVXNlclxuIiwKICAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAorICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZCIsICJubyB3cml0ZSBzdXBwb3J0IGZvciB2YXJfdXNtVXNlclxuIikpOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8gCiAgICAgfQogICAgIHJldHVybiBOVUxMOwogCiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCB2YXJfdXNtVXNlcigpICovCiAKKworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgCisKIC8qCiAgKiB3cml0ZV91c21Vc2VyU3BpbkxvY2soKTogY2FsbGVkIHdoZW4gYSBzZXQgaXMgcGVyZm9ybWVkIG9uIHRoZQogICogdXNtVXNlclNwaW5Mb2NrIG9iamVjdCAKQEAgLTc0Nyw3ICs3NjYsNiBAQAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvcHRyKTsKLSAgICAgICAgb3B0ciA9IE5VTEw7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gRlJFRSB8fCBhY3Rpb24gPT0gVU5ETykgewogICAgICAgICBpZiAoKHVwdHIgPSB1c21fcGFyc2VfdXNlcihuYW1lLCBuYW1lX2xlbikpICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChyZXNldE9uRmFpbCkgewpAQCAtODkwLDcgKzkwOCw2IEBACiAgICAgICAgIHVwdHItPmF1dGhLZXlMZW4gPSBidWZsZW47CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvbGRrZXkpOwotICAgICAgICBvbGRrZXkgPSBOVUxMOwogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IFVORE8pIHsKICAgICAgICAgaWYgKCh1cHRyID0gdXNtX3BhcnNlX3VzZXIobmFtZSwgbmFtZV9sZW4pKSAhPSBOVUxMICYmIHJlc2V0T25GYWlsKSB7CiAgICAgICAgICAgICBTTk1QX0ZSRUUodXB0ci0+YXV0aEtleSk7CkBAIC0xMDE1LDcgKzEwMzIsNiBAQAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvcHRyKTsKLSAgICAgICAgb3B0ciA9IE5VTEw7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gRlJFRSB8fCBhY3Rpb24gPT0gVU5ETykgewogICAgICAgICBpZiAoKHVwdHIgPSB1c21fcGFyc2VfdXNlcihuYW1lLCBuYW1lX2xlbikpICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChyZXNldE9uRmFpbCkgewpAQCAtMTE0MCw3ICsxMTU2LDYgQEAKICAgICAgICAgdXB0ci0+cHJpdktleUxlbiA9IGJ1ZmxlbjsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKICAgICAgICAgU05NUF9GUkVFKG9sZGtleSk7Ci0gICAgICAgIG9sZGtleSA9IE5VTEw7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gVU5ETykgewogICAgICAgICBpZiAoKHVwdHIgPSB1c21fcGFyc2VfdXNlcihuYW1lLCBuYW1lX2xlbikpICE9IE5VTEwgJiYgcmVzZXRPbkZhaWwpIHsKICAgICAgICAgICAgIFNOTVBfRlJFRSh1cHRyLT5wcml2S2V5KTsKQEAgLTEyNzYsNiArMTI5MSw3IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCB3cml0ZV91c21Vc2VyU3RvcmFnZVR5cGUoKSAqLwogCisKIC8qCiAgKiBSZXR1cm4gMSBpZiBlbm91Z2ggb2JqZWN0cyBoYXZlIGJlZW4gc2V0IHVwIHRvIHRyYW5zaXRpb24gcm93U3RhdHVzIHRvCiAgKiBub3RJblNlcnZpY2UoMikgb3IgYWN0aXZlKDEpLiAgCkBAIC0xNDgyLDcgKzE0OTgsOSBAQAogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQorfSAgLyogd3JpdGVfdXNtVXNlclN0YXR1cyAqLworCisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLyAKIAogI2lmIDAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgKaW5kZXggMmFmZWNiNC4uNTNkMTQxMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oCkBAIC01NCw2ICs1NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIGVuZ2luZUlETGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICoqbmFtZSwgc2l6ZV90ICogbmFtZUxlbik7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUIAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdXNtVXNlclNwaW5Mb2NrOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdXNtVXNlckNsb25lRnJvbTsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3VzbVVzZXJBdXRoUHJvdG9jb2w7CkBAIC02Myw1ICs2NCw2IEBACiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV91c21Vc2VyUHVibGljOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdXNtVXNlclN0b3JhZ2VUeXBlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdXNtVXNlclN0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovIAogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9VU01VU0VSX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaAppbmRleCBhNTYyMWU1Li4wY2NhOWEzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oCkBAIC04LDcgKzgsOSBAQAogCiBjb25maWdfcmVxdWlyZShzbm1wdjMvc25tcEVuZ2luZSkKIGNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKHNubXB2My9zbm1wTVBEU3RhdHMsIDUuNSwgc25tcHYzL3NubXBNUERTdGF0c181XzUpKQorI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQogY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoc25tcHYzL3VzbVN0YXRzLCA1LjUsIHNubXB2My91c21TdGF0c181XzUpKQogY29uZmlnX3JlcXVpcmUoc25tcHYzL3VzbUNvbmYpCiBjb25maWdfcmVxdWlyZShzbm1wdjMvdXNtVXNlcikKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU05NUFYzTUlCU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zdHJ1Y3QuaCBiL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCmluZGV4IDA4NzgwY2MuLmQwMjVlZDAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCkBAIC0xOCw3ICsxOCw4IEBACiAgICAgc3RydWN0IGV4dGVuc2libGUgKm5leHQ7CiAgICAgb2lkICAgICAgICAgICAgIG1pYm9pZFtNSUJNQVhdOwogICAgIHNpemVfdCAgICAgICAgICBtaWJsZW47Ci0gICAgaW50ICAgICAgICAgICAgIHBpZDsKKyAgICBpbnQgICAgICAgICAgICAgbWlicHJpb3JpdHk7CisgICAgbmV0c25tcF9waWRfdCAgIHBpZDsKICNpZiBkZWZpbmVkKFdJTjMyKQogICAgIEhBTkRMRSAgICAgICAgICB0aWQ7ICAgICAgICAgICAgICAgIC8qIFdJTjMyIHRocmVhZCAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYwppbmRleCA3ZGMxYjJhLi5iMWViMDBhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMKQEAgLTI1LDEzICsyNSwxNyBAQAogI2RlZmluZSBzbm1wVGFyZ2V0QWRkck9JRExlbiAxMSAvKlRoaXMgaXMgYmFzZStjb2x1bW4sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpLmUuIGV2ZXJ5dGhpbmcgYnV0IGluZGV4ICovCiAKLW9pZCAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkck9JRFtzbm1wVGFyZ2V0QWRkck9JRExlbl0gPQorc3RhdGljIG9pZCAgICAgIHNubXBUYXJnZXRBZGRyT0lEW3NubXBUYXJnZXRBZGRyT0lETGVuXSA9CiAgICAgeyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSwgMiwgMSwgMCB9OwogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBzbm1wVGFyZ2V0U3BpbkxvY2sgPSAwOwogc3RhdGljIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICphQWRkclRhYmxlID0gTlVMTDsKIAogCitzdGF0aWMgaW50CitzdG9yZV9zbm1wVGFyZ2V0QWRkckVudHJ5KGludCBtYWpvcklELCBpbnQgbWlub3JJRCwgdm9pZCAqc2VydmVyYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpOworCiAvKgogICogVXRpbGl0eSByb3V0aW5lcyAKICAqLwpAQCAtNDIsMTEgKzQ2LDEyIEBACiB9CiAKIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICoKLWdldF9hZGRyRm9yTmFtZShjaGFyICpuYW1lKQorZ2V0X2FkZHJGb3JOYW1lMihjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBjaGFyIG5hbWVMZW4pCiB7CiAgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKnB0cjsKICAgICBmb3IgKHB0ciA9IGFBZGRyVGFibGU7IHB0ciAhPSBOVUxMOyBwdHIgPSBwdHItPm5leHQpIHsKLSAgICAgICAgaWYgKHB0ci0+bmFtZSAmJiBzdHJjbXAocHRyLT5uYW1lLCBuYW1lKSA9PSAwKQorICAgICAgICBpZiAocHRyLT5uYW1lTGVuID09IG5hbWVMZW4gJiYKKyAgICAgICAgICAgIG1lbWNtcChwdHItPm5hbWVEYXRhLCBuYW1lLCBuYW1lTGVuKSA9PSAwKQogICAgICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAgICAgcmV0dXJuIE5VTEw7CkBAIC02NCw3ICs2OSw4IEBACiAgICAgbmV3RW50cnkgPSBtYWxsb2Moc2l6ZW9mKCpuZXdFbnRyeSkpOwogCiAgICAgaWYgKG5ld0VudHJ5KSB7Ci0gICAgICAgIG5ld0VudHJ5LT5uYW1lID0gTlVMTDsKKyAgICAgICAgbmV3RW50cnktPm5hbWVEYXRhID0gTlVMTDsKKyAgICAgICAgbmV3RW50cnktPm5hbWVMZW4gPSAwOwogCiAgICAgICAgIG5ld0VudHJ5LT50RG9tYWluTGVuID0gMDsKICAgICAgICAgbmV3RW50cnktPnRBZGRyZXNzID0gTlVMTDsKQEAgLTkyLDExICs5OCwxMSBAQAogdm9pZAogc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpyZWFwZWQpCiB7Ci0gICAgaWYgKHJlYXBlZC0+c2VzcyAhPSBOVUxMKSB7CisgICAgaWYgKHJlYXBlZC0+c2VzcykKICAgICAgICAgc25tcF9jbG9zZShyZWFwZWQtPnNlc3MpOwotICAgIH0KLSAgICBTTk1QX0ZSRUUocmVhcGVkLT5uYW1lKTsKLSAgICBTTk1QX0ZSRUUocmVhcGVkLT50QWRkcmVzcyk7CisgICAgZWxzZQorICAgICAgICBTTk1QX0ZSRUUocmVhcGVkLT50QWRkcmVzcyk7CisgICAgU05NUF9GUkVFKHJlYXBlZC0+bmFtZURhdGEpOwogICAgIFNOTVBfRlJFRShyZWFwZWQtPnRhZ0xpc3QpOwogICAgIFNOTVBfRlJFRShyZWFwZWQtPnBhcmFtcyk7CiAKQEAgLTExNiw4ICsxMjIsNiBAQAogewogICAgIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqY3Vycl9zdHJ1Y3QsICpwcmV2X3N0cnVjdDsKICAgICBpbnQgICAgICAgICAgICAgaTsKLSAgICBzaXplX3QgICAgICAgICAgbmV3T0lETGVuID0gMCwgY3Vyck9JRExlbiA9IDA7Ci0gICAgb2lkICAgICAgICAgICAgIG5ld09JRFsxMjhdLCBjdXJyT0lEWzEyOF07CiAKICAgICAvKgogICAgICAqIGlmIHRoZSBsaXN0IGlzIGVtcHR5LCBhZGQgdGhlIG5ldyBlbnRyeSB0byB0aGUgdG9wIApAQCAtMTI3LDIzICsxMzEsMTkgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCi0gICAgICAgICAqIGdldCB0aGUgJ09JRCcgdmFsdWUgb2YgdGhlIG5ldyBlbnRyeSAKLSAgICAgICAgICovCi0gICAgICAgIG5ld09JRExlbiA9IHN0cmxlbihuZXdFbnRyeS0+bmFtZSk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBuZXdPSURMZW47IGkrKykgewotICAgICAgICAgICAgbmV3T0lEW2ldID0gbmV3RW50cnktPm5hbWVbaV07Ci0gICAgICAgIH0KLQotICAgICAgICAvKgogICAgICAgICAgKiBzZWFyY2ggdGhyb3VnaCB0aGUgbGlzdCBmb3IgYW4gZXF1YWwgb3IgZ3JlYXRlciBPSUQgdmFsdWUgCiAgICAgICAgICAqLwogICAgICAgICB3aGlsZSAoY3Vycl9zdHJ1Y3QgIT0gTlVMTCkgewotICAgICAgICAgICAgY3Vyck9JRExlbiA9IHN0cmxlbihjdXJyX3N0cnVjdC0+bmFtZSk7Ci0gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgY3Vyck9JRExlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY3Vyck9JRFtpXSA9IGN1cnJfc3RydWN0LT5uYW1lW2ldOworICAgICAgICAgICAgaSA9IG1lbWNtcChuZXdFbnRyeS0+bmFtZURhdGEsIGN1cnJfc3RydWN0LT5uYW1lRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgbmV3RW50cnktPm5hbWVMZW4gPCBjdXJyX3N0cnVjdC0+bmFtZUxlbiA/CisgICAgICAgICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5uYW1lTGVuIDogY3Vycl9zdHJ1Y3QtPm5hbWVMZW4pOworICAgICAgICAgICAgaWYgKGkgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChuZXdFbnRyeS0+bmFtZUxlbiA8IGN1cnJfc3RydWN0LT5uYW1lTGVuKQorICAgICAgICAgICAgICAgICAgICBpID0gLTE7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmV3RW50cnktPm5hbWVMZW4gPiBjdXJyX3N0cnVjdC0+bmFtZUxlbikKKyAgICAgICAgICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGkgPSBzbm1wX29pZF9jb21wYXJlKG5ld09JRCwgbmV3T0lETGVuLCBjdXJyT0lELCBjdXJyT0lETGVuKTsKICAgICAgICAgICAgIGlmIChpID09IDApIHsgICAgICAgLyogRXhhY3QgbWF0Y2gsIG92ZXJ3cml0ZSB3aXRoIG5ldyBzdHJ1Y3QgKi8KICAgICAgICAgICAgICAgICBuZXdFbnRyeS0+bmV4dCA9IGN1cnJfc3RydWN0LT5uZXh0OwogICAgICAgICAgICAgICAgIC8qCkBAIC0yMzMsMTAgKzIzMywxMCBAQAogCiAgICAgZm9yICh0ZW1wX3N0cnVjdCA9IGFBZGRyVGFibGU7IHRlbXBfc3RydWN0ICE9IE5VTEw7CiAgICAgICAgICB0ZW1wX3N0cnVjdCA9IHRlbXBfc3RydWN0LT5uZXh0KSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBzdHJsZW4odGVtcF9zdHJ1Y3QtPm5hbWUpOyBpKyspIHsKLSAgICAgICAgICAgIG5ld051bVtiYXNlTmFtZUxlbiArIGldID0gdGVtcF9zdHJ1Y3QtPm5hbWVbaV07CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZW1wX3N0cnVjdC0+bmFtZUxlbjsgaSsrKSB7CisgICAgICAgICAgICBuZXdOdW1bYmFzZU5hbWVMZW4gKyBpXSA9ICh1bnNpZ25lZCBjaGFyKXRlbXBfc3RydWN0LT5uYW1lRGF0YVtpXTsKICAgICAgICAgfQotICAgICAgICBteU9JRExlbiA9IGJhc2VOYW1lTGVuICsgc3RybGVuKHRlbXBfc3RydWN0LT5uYW1lKTsKKyAgICAgICAgbXlPSURMZW4gPSBiYXNlTmFtZUxlbiArIHRlbXBfc3RydWN0LT5uYW1lTGVuOwogICAgICAgICBpID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCAqbGVuZ3RoLCBuZXdOdW0sIG15T0lETGVuKTsKICAgICAgICAgLyoKICAgICAgICAgICogQXNzdW1lcyB0aGF0IHRoZSBsaW5rZWQgbGlzdCBzb3J0ZWQgYnkgT0lELCBsb3cgdG8gaGlnaCAKQEAgLTI3NCw3ICsyNzQsNyBAQAogICogZm9yIHRoZSBzbm1wVGFyZ2V0QWRkckVudHJ5IG1pYiAKICAqLwogCi1zdHJ1Y3QgdmFyaWFibGUyIHNubXBUYXJnZXRBZGRyRW50cnlfdmFyaWFibGVzW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IHZhcmlhYmxlMiBzbm1wVGFyZ2V0QWRkckVudHJ5X3ZhcmlhYmxlc1tdID0gewogICAgIHtTTk1QVEFSR0VUQUREUlRET01BSU4sIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlRET01BSU5DT0xVTU59fSwKICAgICB7U05NUFRBUkdFVEFERFJUQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLApAQCAtMjk0LDE3ICsyOTQsMTcgQEAKIAogfTsKIAotc3RydWN0IHZhcmlhYmxlMiBzbm1wVGFyZ2V0U3BpbkxvY2tfdmFyW10gPSB7CitzdGF0aWMgY29uc3Qgc3RydWN0IHZhcmlhYmxlMiBzbm1wVGFyZ2V0U3BpbkxvY2tfdmFyW10gPSB7CiAgICAge1NOTVBUQVJHRVRTUElOTE9DSywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3RhcmdldFNwaW5Mb2NrLCAxLCB7MX19CiB9OwogCi1zdGF0aWMgb2lkICAgICAgc25tcFRhcmdldFNwaW5Mb2NrX29pZFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSB9Oworc3RhdGljIGNvbnN0IG9pZCBzbm1wVGFyZ2V0U3BpbkxvY2tfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxIH07CiAKIC8qCiAgKiBub3cgbG9hZCB0aGlzIG1pYiBpbnRvIHRoZSBhZ2VudHMgbWliIHRhYmxlIAogICovCi1vaWQgICAgICAgICAgICAgc25tcFRhcmdldEFkZHJFbnRyeV92YXJpYWJsZXNfb2lkW10gPQorc3RhdGljIGNvbnN0IG9pZCBzbm1wVGFyZ2V0QWRkckVudHJ5X3ZhcmlhYmxlc19vaWRbXSA9CiAgICAgeyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSwgMiwgMSB9OwogCiAKQEAgLTMyMSw3ICszMjEsNyBAQAogCiAgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInRhcmdldEFkZHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBkX3BhcnNlX2NvbmZpZ190YXJnZXRBZGRyLAotCQkJCSAgKHZvaWQgKCopKHZvaWQpKTAsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICgqKSh2b2lkKSkwLCBOVUxMKTsKIAogICAgIC8qCiAgICAgICogd2UgbmVlZCB0byBiZSBjYWxsZWQgYmFjayBsYXRlciAKQEAgLTMzMSwzMCArMzMxLDIxIEBACiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdF9zbm1wVGFyZ2V0QWRkckVudHJ5ICovCiAKLQotaW50Ci1zbm1wVGFyZ2V0QWRkcl9hZGROYW1lKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKK3ZvaWQKK3NodXRkb3duX3NubXBUYXJnZXRBZGRyRW50cnkodm9pZCkKIHsKLSAgICBzaXplX3QgICAgICAgICAgbGVuOwotICAgIGlmIChjcHRyID09IE5VTEwpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAotICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gbmFtZSBpbiBjb25maWcgc3RyaW5nXG4iKSk7Ci0gICAgICAgIHJldHVybiAoMCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbGVuID0gc3RybGVuKGNwdHIpOwotICAgICAgICAvKgotICAgICAgICAgKiBzcGVjIGNoZWNrIGZvciBzdHJpbmcgMS0zMiAKLSAgICAgICAgICovCi0gICAgICAgIGlmIChsZW4gPCAxIHx8IGxlbiA+IDMyKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbmFtZSBvdXQgb2YgcmFuZ2UgaW4gY29uZmlnIHN0cmluZ1xuIikpOwotICAgICAgICAgICAgcmV0dXJuICgwKTsKLSAgICAgICAgfQotICAgICAgICBlbnRyeS0+bmFtZSA9IHN0cmR1cChjcHRyKTsKLSAgICB9Ci0gICAgcmV0dXJuICgxKTsKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWRkTmFtZSAqLworICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpwdHI7CisgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKm5leHQ7CiAKKyAgICBmb3IgKHB0ciA9IGFBZGRyVGFibGU7IHB0cjsgcHRyID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gcHRyLT5uZXh0OworICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2UocHRyKTsKKyAgICB9CisgICAgYUFkZHJUYWJsZSA9IE5VTEw7CisKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLCBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlX3NubXBUYXJnZXRBZGRyRW50cnksIE5VTEwsIEZBTFNFKTsKK30KIAogaW50CiBzbm1wVGFyZ2V0QWRkcl9hZGRURG9tYWluKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKQEAgLTUzOCw3ICs1MjksNyBAQAogICAgICAgICAgICAgIChlbnRyeS0+c3RvcmFnZVR5cGUgIT0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFKSAmJgogICAgICAgICAgICAgIChlbnRyeS0+c3RvcmFnZVR5cGUgIT0gU05NUF9TVE9SQUdFX1BFUk1BTkVOVCkgJiYKICAgICAgICAgICAgICAoZW50cnktPnN0b3JhZ2VUeXBlICE9IFNOTVBfU1RPUkFHRV9SRUFET05MWSkpIHsKLQlERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IHN0b3JhZ2UgdHlwZSBub3QgYSB2YWxpZCAiCiAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSBvZiBvdGhlciglZCksIHZvbGF0aWxlKCVkKSwgbm9udm9sYXRpbGUoJWQpLCAiCiAgICAgICAgICAgICAgICAgICAgICJwZXJtYW5lbnQoJWQpLCBvciByZWFkb25seSglZCkgaW4gY29uZmlnIHN0cmluZy5cbiIsCkBAIC01ODcsMjQgKzU3OCw0MiBAQAogdm9pZAogc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNoYXJfcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICpjcHRyID0gY2hhcl9wdHIsIGJ1ZmZbMTAyNF07CisgICAgY29uc3QgY2hhciAgICAgKmNwdHIgPSBjaGFyX3B0cjsKKyAgICBjaGFyICAgICAgICAgICAgYnVmZlsxMDI0XSwgKmJwdHI7CiAgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKm5ld0VudHJ5OwogICAgIGludCAgICAgICAgICAgICBpOworICAgIHNpemVfdCAgICAgICAgICBidWZsOwogCiAgICAgbmV3RW50cnkgPSBzbm1wVGFyZ2V0QWRkclRhYmxlX2NyZWF0ZSgpOwogCi0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKLSAgICBpZiAoc25tcFRhcmdldEFkZHJfYWRkTmFtZShuZXdFbnRyeSwgYnVmZikgPT0gMCkgeworICAgIGNwdHIgPSBza2lwX3doaXRlX2NvbnN0KGNwdHIpOworICAgIGlmIChjcHRyID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAorICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gbmFtZSBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKworICAgIGJ1ZmwgPSAwOworICAgIGNwdHIgPSByZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZ19jb25zdChjcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKiopJm5ld0VudHJ5LT5uYW1lRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1ZmwpOworICAgIGlmIChidWZsIDwgMSB8fCBidWZsID4gMzIpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAorICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbmFtZSBvdXQgb2YgcmFuZ2UgaW4gY29uZmlnICIKKyAgICAgICAgICAgICAgICAgICAgInN0cmluZ1xuIikpOworICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2UobmV3RW50cnkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG5ld0VudHJ5LT5uYW1lTGVuID0gYnVmbDsKKworICAgIGNwdHIgPSBjb3B5X253b3JkX2NvbnN0KGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CiAgICAgaWYgKHNubXBUYXJnZXRBZGRyX2FkZFREb21haW4obmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjcHRyID0KLSAgICAgICAgcmVhZF9jb25maWdfcmVhZF9vY3RldF9zdHJpbmcoY3B0ciwKKyAgICAgICAgcmVhZF9jb25maWdfcmVhZF9vY3RldF9zdHJpbmdfY29uc3QoY3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKikgJiBuZXdFbnRyeS0+dEFkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdFbnRyeS0+dEFkZHJlc3NMZW4pOwogICAgIGlmICghY3B0ciB8fCAhKG5ld0VudHJ5LT50QWRkcmVzcykpIHsKQEAgLTYxMyw1MCArNjIyLDUyIEBACiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRUaW1lb3V0KG5ld0VudHJ5LCBidWZmKSA9PSAwKSB7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRSZXRyeUNvdW50KG5ld0VudHJ5LCBidWZmKSA9PSAwKSB7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRUYWdMaXN0KG5ld0VudHJ5LCBidWZmKSA9PSAwKSB7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRQYXJhbXMobmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOworICAgIGNwdHIgPSBjb3B5X253b3JkX2NvbnN0KGNwdHIsIGJ1ZmYsIHNpemVvZihidWZmKSk7CiAgICAgaWYgKHNubXBUYXJnZXRBZGRyX2FkZFN0b3JhZ2VUeXBlKG5ld0VudHJ5LCBidWZmKSA9PSAwKSB7CiAgICAgICAgIHNubXBUYXJnZXRBZGRyVGFibGVfZGlzcG9zZShuZXdFbnRyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmZiwgc2l6ZW9mKGJ1ZmYpKTsKKyAgICBjcHRyID0gY29weV9ud29yZF9jb25zdChjcHRyLCBidWZmLCBzaXplb2YoYnVmZikpOwogICAgIGlmIChzbm1wVGFyZ2V0QWRkcl9hZGRSb3dTdGF0dXMobmV3RW50cnksIGJ1ZmYpID09IDApIHsKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzbnByaW50ZihidWZmLCBzaXplb2YoYnVmZiksICJzbm1wX3BhcnNlX2NvbmZpZ190YXJnZXRBZGRyLCByZWFkOiAlc1xuIiwKLSAgICAgICAgICAgIG5ld0VudHJ5LT5uYW1lKTsKLSAgICBidWZmWyBzaXplb2YoYnVmZiktMSBdID0gMDsKKyAgICBicHRyID0gYnVmZjsKKyAgICBicHRyICs9IHNwcmludGYoYnB0ciwgInNubXBfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIsIHJlYWQ6ICIpOworICAgIGJwdHIgPSByZWFkX2NvbmZpZ19zYXZlX29jdGV0X3N0cmluZyhicHRyLCAodV9jaGFyKiluZXdFbnRyeS0+bmFtZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5uYW1lTGVuKTsKKyAgICAqYnB0cisrID0gJ1xuJzsKICAgICBmb3IgKGkgPSAwOyBpIDwgbmV3RW50cnktPnREb21haW5MZW47IGkrKykgewotICAgICAgICBzbnByaW50ZigmYnVmZltzdHJsZW4oYnVmZildLCBzaXplb2YoYnVmZiktc3RybGVuKGJ1ZmYpLTEsCi0gICAgICAgICAgICAgICAgICIuJWQiLCAoaW50KSBuZXdFbnRyeS0+dERvbWFpbltpXSk7Ci0gICAgICAgIGJ1ZmZbIHNpemVvZihidWZmKS0xIF0gPSAwOworICAgICAgICBicHRyICs9IHNucHJpbnRmKGJwdHIsIGJ1ZmYgKyBzaXplb2YoYnVmZikgLSBicHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICIuJWQiLCAoaW50KSBuZXdFbnRyeS0+dERvbWFpbltpXSk7CiAgICAgfQotICAgIHNucHJpbnRmKCZidWZmW3N0cmxlbihidWZmKV0sIHNpemVvZihidWZmKS1zdHJsZW4oYnVmZiktMSwKLSAgICAgICAgICAgICIgJXMgJWQgJWQgJXMgJXMgJWQgJWRcbiIsCi0gICAgICAgICAgICBuZXdFbnRyeS0+dEFkZHJlc3MsIG5ld0VudHJ5LT50aW1lb3V0LCBuZXdFbnRyeS0+cmV0cnlDb3VudCwKLSAgICAgICAgICAgIG5ld0VudHJ5LT50YWdMaXN0LCBuZXdFbnRyeS0+cGFyYW1zLCBuZXdFbnRyeS0+c3RvcmFnZVR5cGUsCi0gICAgICAgICAgICBuZXdFbnRyeS0+cm93U3RhdHVzKTsKLSAgICBidWZmWyBzaXplb2YoYnVmZiktMSBdID0gMDsKKyAgICBicHRyICs9IHNucHJpbnRmKGJwdHIsIGJ1ZmYgKyBzaXplb2YoYnVmZikgLSBicHRyLAorICAgICAgICAgICAgICAgICAgICAgIiAlcyAlZCAlZCAlcyAlcyAlZCAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIG5ld0VudHJ5LT50QWRkcmVzcywgbmV3RW50cnktPnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS0+cmV0cnlDb3VudCwgbmV3RW50cnktPnRhZ0xpc3QsCisgICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS0+cGFyYW1zLCBuZXdFbnRyeS0+c3RvcmFnZVR5cGUsCisgICAgICAgICAgICAgICAgICAgICBuZXdFbnRyeS0+cm93U3RhdHVzKTsKKyAgICBidWZmWyBzaXplb2YoYnVmZikgLSAxIF0gPSAwOwogICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwgIiVzIiwgYnVmZikpOwogCiAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9hZGRUb0xpc3QobmV3RW50cnksICZhQWRkclRhYmxlKTsKQEAgLTY3Myw1MyArNjg0LDQ4IEBACiAgKiBmb3IgdGhpcyBNSUIgdGFibGUuIEl0IHdyaXRlcyBvdXQgYWxsIHRoZSBub24tdm9sYXRpbGUgcm93cyAKICAqIHRvIHBlcm1hbmVudCBzdG9yYWdlIG9uIGEgc2h1dGRvd24gIAogICovCi1pbnQKK3N0YXRpYyBpbnQKIHN0b3JlX3NubXBUYXJnZXRBZGRyRW50cnkoaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudGFyZykKIHsKLSAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqY3Vycl9zdHJ1Y3Q7Ci0gICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07CisgICAgY29uc3Qgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmN1cnJfc3RydWN0OworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdLCAqY3VyLCAqZXAgPSBsaW5lICsgc2l6ZW9mKGxpbmUpOwogICAgIGludCAgICAgICAgICAgICBpOwogCi0gICAgaWYgKChjdXJyX3N0cnVjdCA9IGFBZGRyVGFibGUpICE9IE5VTEwpIHsKLSAgICAgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGlmICgoY3Vycl9zdHJ1Y3QtPnN0b3JhZ2VUeXBlID09IFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRSB8fAotICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX1BFUk1BTkVOVCkKLSAgICAgICAgICAgICAgICAmJgotICAgICAgICAgICAgICAgIChjdXJyX3N0cnVjdC0+cm93U3RhdHVzID09IFNOTVBfUk9XX0FDVElWRSB8fAotICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+cm93U3RhdHVzID09IFNOTVBfUk9XX05PVElOU0VSVklDRSkpIHsKLSAgICAgICAgICAgICAgICBzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAidGFyZ2V0QWRkciAlcyAiLCBjdXJyX3N0cnVjdC0+bmFtZSk7Ci0gICAgICAgICAgICAgICAgbGluZVsgc2l6ZW9mKGxpbmUpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGN1cnJfc3RydWN0LT50RG9tYWluTGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgc25wcmludGYoJmxpbmVbc3RybGVuKGxpbmUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobGluZSktc3RybGVuKGxpbmUpLTEsICIuJWkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIGN1cnJfc3RydWN0LT50RG9tYWluW2ldKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZVsgc2l6ZW9mKGxpbmUpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0cmxjYXQobGluZSwgIiAiLCBzaXplb2YobGluZSkpOwotICAgICAgICAgICAgICAgIHJlYWRfY29uZmlnX3NhdmVfb2N0ZXRfc3RyaW5nKCZsaW5lW3N0cmxlbihsaW5lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnRBZGRyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT50QWRkcmVzc0xlbik7Ci0KLSAgICAgICAgICAgICAgICBzbnByaW50ZigmbGluZVtzdHJsZW4obGluZSldLCBzaXplb2YobGluZSktc3RybGVuKGxpbmUpLTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAiICVpICVpIFwiJXNcIiAlcyAlaSAlaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+dGltZW91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5yZXRyeUNvdW50LCBjdXJyX3N0cnVjdC0+dGFnTGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5wYXJhbXMsIGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5yb3dTdGF0dXMpOwotICAgICAgICAgICAgICAgIGxpbmVbIHNpemVvZihsaW5lKS0xIF0gPSAwOwotCi0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBzdG9yZSB0byBmaWxlIAotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHNubXBkX3N0b3JlX2NvbmZpZyhsaW5lKTsKKyAgICBjdXJyX3N0cnVjdCA9IGFBZGRyVGFibGU7CisgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKChjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFIHx8CisgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnN0b3JhZ2VUeXBlID09IFNOTVBfU1RPUkFHRV9QRVJNQU5FTlQpICYmCisgICAgICAgICAgICAoY3Vycl9zdHJ1Y3QtPnJvd1N0YXR1cyA9PSBTTk1QX1JPV19BQ1RJVkUgfHwKKyAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+cm93U3RhdHVzID09IFNOTVBfUk9XX05PVElOU0VSVklDRSkpIHsKKyAgICAgICAgICAgIGN1ciA9IGxpbmUgKyBzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksICJ0YXJnZXRBZGRyICIpOworICAgICAgICAgICAgY3VyID0gcmVhZF9jb25maWdfc2F2ZV9vY3RldF9zdHJpbmcoCisgICAgICAgICAgICAgICAgY3VyLCAodV9jaGFyKiljdXJyX3N0cnVjdC0+bmFtZURhdGEsIGN1cnJfc3RydWN0LT5uYW1lTGVuKTsKKyAgICAgICAgICAgICpjdXIrKyA9ICcgJzsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjdXJyX3N0cnVjdC0+dERvbWFpbkxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgY3VyICs9IHNucHJpbnRmKGN1ciwgZXAgLSBjdXIsICIuJWkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSBjdXJyX3N0cnVjdC0+dERvbWFpbltpXSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjdXJyX3N0cnVjdCA9IGN1cnJfc3RydWN0LT5uZXh0OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisgICAgICAgICAgICAqY3VyKysgPSAnICc7CisgICAgICAgICAgICBjdXIgPSByZWFkX2NvbmZpZ19zYXZlX29jdGV0X3N0cmluZygKKyAgICAgICAgICAgICAgICBjdXIsIGN1cnJfc3RydWN0LT50QWRkcmVzcywgY3Vycl9zdHJ1Y3QtPnRBZGRyZXNzTGVuKTsKKyAgICAgICAgICAgIGN1ciArPSBzbnByaW50ZihjdXIsIGVwIC0gY3VyLCAiICVpICVpIFwiJXNcIiAlcyAlaSAlaSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vycl9zdHJ1Y3QtPnJldHJ5Q291bnQsIGN1cnJfc3RydWN0LT50YWdMaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5wYXJhbXMsIGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+cm93U3RhdHVzKTsKKyAgICAgICAgICAgIGxpbmVbIHNpemVvZihsaW5lKS0xIF0gPSAwOwogCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc3RvcmUgdG8gZmlsZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzbm1wZF9zdG9yZV9jb25maWcobGluZSk7CisgICAgICAgIH0KKworICAgICAgICBjdXJyX3N0cnVjdCA9IGN1cnJfc3RydWN0LT5uZXh0OworICAgIH0KKworICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBzdG9yZV9zbm1wVGFyZ2V0QWRkckVudHJ5ICAqLwogCiAKQEAgLTc1Myw2ICs3NTksNyBAQAogICAgICAqLwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBTTk1QVEFSR0VUQUREUlRET01BSU46CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9zbm1wVGFyZ2V0QWRkclREb21haW47CiAgICAgICAgIGJyZWFrOwpAQCAtNzc3LDExICs3ODQsMTMgQEAKICAgICBjYXNlIFNOTVBUQVJHRVRBRERSUk9XU1RBVFVTOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfc25tcFRhcmdldEFkZHJSb3dTdGF0dXM7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7CiAgICAgfQogCi0gICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOyAgICAgICAgLyogYXNzdW1lIGFuIGludGVnZXIgYW5kIGNoYW5nZSBsYXRlciBpZiBub3QgKi8KKyAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLworICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsKIAogICAgIC8qCiAgICAgICogbG9vayBmb3IgT0lEIGluIGN1cnJlbnQgdGFibGUgCkBAIC04NTMsMTAgKzg2MiwxMiBAQAogICAgICAgICAgICAgICAgICAgICAidW5rbm93biBzdWItaWQgJWQgaW4gdmFyX3NubXBUYXJnZXRBZGRyRW50cnlcbiIsCiAgICAgICAgICAgICAgICAgICAgIHZwLT5tYWdpYykpOwogICAgIH0KKwogICAgIHJldHVybiBOVUxMOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIHdyaXRlX3NubXBUYXJnZXRBZGRyVERvbWFpbihpbnQgYWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCkBAIC05MjEsNiArOTMyLDggQEAKICAgICAgICAgICAgICAgICB0YXJnZXQtPnJvd1N0YXR1cyA9IFNOTVBfUk9XX05PVElOU0VSVklDRTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IENPTU1JVCkgeworICAgICAgICBzbm1wX3N0b3JlX25lZWRlZChOVUxMKTsKICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSBGUkVFIHx8IGFjdGlvbiA9PSBVTkRPKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFRyeSB0byB1bmRvIHRoZSBTRVQgaGVyZSAoYWJub3JtYWwgdXNhZ2Ugb2YgRlJFRSBjbGF1c2UpICAKQEAgLTEwMDgsNiArMTAyMSw3IEBACiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvbGRfYWRkcik7CiAgICAgICAgIG9sZF9hZGRyID0gTlVMTDsKKyAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gRlJFRSB8fCBhY3Rpb24gPT0gVU5ETykgewogICAgICAgICAvKgogICAgICAgICAgKiBUcnkgdG8gdW5kbyB0aGUgU0VUIGhlcmUgKGFibm9ybWFsIHVzYWdlIG9mIEZSRUUgY2xhdXNlKSAgCkBAIC0xMTAzLDYgKzExMTcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICB0ZW1wX3N0cnVjdC0+dGltZW91dCA9IGxvbmdfcmV0OwogICAgICAgICB9CisgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKE5VTEwpOwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpAQCAtMTE2MCw2ICsxMTc1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgIT0gTlVMTCkgewogICAgICAgICAgICAgdGFyZ2V0LT5yZXRyeUNvdW50ID0gbG9uZ19yZXQ7CiAgICAgICAgIH0KKyAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CkBAIC0xMjUwLDYgKzEyNjYsNyBAQAogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IENPTU1JVCkgewogICAgICAgICBTTk1QX0ZSRUUob2xkX3RsaXN0KTsKICAgICAgICAgb2xkX3RsaXN0ID0gTlVMTDsKKyAgICAgICAgc25tcF9zdG9yZV9uZWVkZWQoTlVMTCk7CiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gRlJFRSB8fCBhY3Rpb24gPT0gVU5ETykgewogICAgICAgICBzbm1wVGFyZ2V0QWRkck9JRFtzbm1wVGFyZ2V0QWRkck9JRExlbiAtIDFdID0KICAgICAgICAgICAgIFNOTVBUQVJHRVRBRERSVEFHTElTVENPTFVNTjsKQEAgLTEzMjcsNiArMTM0NCw3IEBACiAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CiAgICAgICAgIFNOTVBfRlJFRShvbGRfcGFyYW1zKTsKICAgICAgICAgb2xkX3BhcmFtcyA9IE5VTEw7CisgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKE5VTEwpOwogICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IEZSRUUgfHwgYWN0aW9uID09IFVORE8pIHsKICAgICAgICAgLyoKICAgICAgICAgICogVHJ5IHRvIHVuZG8gdGhlIFNFVCBoZXJlIChhYm5vcm1hbCB1c2FnZSBvZiBGUkVFIGNsYXVzZSkgIApAQCAtMTQxMyw2ICsxNDMxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgIT0gTlVMTCkgewogICAgICAgICAgICAgdGFyZ2V0LT5zdG9yYWdlVHlwZSA9IGxvbmdfcmV0OwogICAgICAgICB9CisgICAgICAgIHNubXBfc3RvcmVfbmVlZGVkKE5VTEwpOwogICAgIH0KIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwpAQCAtMTQ0MSwxOCArMTQ2MCwxOCBAQAogICAgICAgICB0ZW1wX3N0cnVjdCA9IHNubXBUYXJnZXRBZGRyVGFibGVfY3JlYXRlKCk7CiAgICAgICAgIGlmICghdGVtcF9zdHJ1Y3QpCiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwotICAgICAgICB0ZW1wX3N0cnVjdC0+bmFtZSA9IChjaGFyICopIG1hbGxvYyhuZXdOYW1lTGVuICsgMSk7Ci0gICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+bmFtZSA9PSBOVUxMKSB7CisgICAgICAgIHRlbXBfc3RydWN0LT5uYW1lRGF0YSA9IChjaGFyICopIG1hbGxvYyhuZXdOYW1lTGVuKTsKKyAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5uYW1lRGF0YSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBTTk1QX0ZSRUUodGVtcF9zdHJ1Y3QtPnRhZ0xpc3QpOwogICAgICAgICAgICAgU05NUF9GUkVFKHRlbXBfc3RydWN0KTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKKyAgICAgICAgdGVtcF9zdHJ1Y3QtPm5hbWVMZW4gPSBuZXdOYW1lTGVuOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgbmV3TmFtZUxlbjsgaSsrKSB7Ci0gICAgICAgICAgICB0ZW1wX3N0cnVjdC0+bmFtZVtpXSA9IChjaGFyKSBuYW1lW2kgKyBzbm1wVGFyZ2V0QWRkck9JRExlbl07CisgICAgICAgICAgICB0ZW1wX3N0cnVjdC0+bmFtZURhdGFbaV0gPSAoY2hhcikgbmFtZVtpICsgc25tcFRhcmdldEFkZHJPSURMZW5dOwogICAgICAgICB9CiAKLSAgICAgICAgdGVtcF9zdHJ1Y3QtPm5hbWVbbmV3TmFtZUxlbl0gPSAnXDAnOwogICAgICAgICB0ZW1wX3N0cnVjdC0+cm93U3RhdHVzID0gU05NUF9ST1dfTk9UUkVBRFk7CiAKICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9hZGRUb0xpc3QodGVtcF9zdHJ1Y3QsICZhQWRkclRhYmxlKTsKQEAgLTE2NDgsNiArMTY2Nyw3IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogdV9jaGFyICAgICAgICAgKgpAQCAtMTY1OSwxMiArMTY3OSwyMCBAQAogewogICAgIGlmIChoZWFkZXJfZ2VuZXJpYyh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kKSA9PQogICAgICAgICBNQVRDSF9GQUlMRUQpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV90YXJnZXRTcGluTG9jazsKKyNlbHNlCisJCSp3cml0ZV9tZXRob2QgPSBOVUxMOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICh2cC0+bWFnaWMgPT0gU05NUFRBUkdFVFNQSU5MT0NLKSB7Ci0gICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV90YXJnZXRTcGluTG9jazsKICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YodW5zaWduZWQgbG9uZyk7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdGFyZ2V0U3BpbkxvY2s7CisjZWxzZQorCQkqd3JpdGVfbWV0aG9kID0gTlVMTDsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgKHNubXBUYXJnZXRTcGluTG9jayk7CiAgICAgfQogICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaCBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKaW5kZXggN2VkODM4Zi4uMGI3MGFmNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCkBAIC00Niw3ICs0Niw4IEBACiAgICAgICogc3RydWN0dXJlIGRlZmluaXRpb25zIAogICAgICAqLwogICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCB7Ci0gICAgICAgICBjaGFyICAgICAgICAgICAqbmFtZTsKKyAgICAgICAgIGNoYXIgICAgICAgICAgICpuYW1lRGF0YTsKKyAgICAgICAgIHVuc2lnbmVkIGNoYXIgICBuYW1lTGVuOwogICAgICAgICAgb2lkICAgICAgICAgICAgIHREb21haW5bTUFYX09JRF9MRU5dOwogICAgICAgICAgaW50ICAgICAgICAgICAgIHREb21haW5MZW47CiAgICAgICAgICB1bnNpZ25lZCBjaGFyICAqdEFkZHJlc3M7CkBAIC02NywxOSArNjgsMTkgQEAKICAqLwogCiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X3NubXBUYXJnZXRBZGRyRW50cnkodm9pZCk7Ci0gICAgIGludCAgICAgICAgICAgICBzdG9yZV9zbm1wVGFyZ2V0QWRkckVudHJ5KGludCBtYWpvcklELCBpbnQgbWlub3JJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpOworICAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc25tcFRhcmdldEFkZHJFbnRyeSh2b2lkKTsKICAgICAgRmluZFZhck1ldGhvZCAgIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5OwogCiAgICAgIHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICpnZXRfYWRkclRhYmxlKHZvaWQpOwotICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZ2V0X2FkZHJGb3JOYW1lKGNoYXIgKm5hbWUpOworICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZ2V0X2FkZHJGb3JOYW1lMihjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIG5hbWVMZW4pOwogICAgICBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqc25tcFRhcmdldEFkZHJUYWJsZV9jcmVhdGUodm9pZCk7CiAgICAgIHZvaWQgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2FkZChzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5ld0VudHJ5KTsKIAogICAgICB2b2lkICAgICAgICAgICAgc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIoY29uc3QgY2hhciAqLCBjaGFyICopOwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldEFkZHJURG9tYWluOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldEFkZHJUQWRkcmVzczsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRBZGRyVGltZW91dDsKQEAgLTg5LDcgKzkwLDggQEAKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRBZGRyU3RvcmFnZVR5cGU7CiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wVGFyZ2V0QWRkclJvd1N0YXR1czsKIAotICAgICBGaW5kVmFyTWV0aG9kICAgdmFyX3RhcmdldFNwaW5Mb2NrOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfdGFyZ2V0U3BpbkxvY2s7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICBGaW5kVmFyTWV0aG9kICAgdmFyX3RhcmdldFNwaW5Mb2NrOwogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9TTk1QVEFSR0VUQUREUkVOVFJZX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYwppbmRleCBlNTE1Mzc5Li40ZTFmNGUyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jCkBAIC0yOTIsNiArMjkyLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZV9zbm1wVGFyZ2V0UGFyYW1zRW50cnksIE5VTEwpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgaW5pdF9zbm1wVGFyZ2V0UGFybXNFbnRyeSAgKi8KIAordm9pZAorc2h1dGRvd25fc25tcFRhcmdldFBhcmFtc0VudHJ5KHZvaWQpCit7CisgICAgd2hpbGUgKGFQVGFibGUpCisJc25tcFRhcmdldFBhcmFtVGFibGVfcmVtRnJvbUxpc3QoYVBUYWJsZSwgJmFQVGFibGUpOworfQorCiAKIGludAogc25tcFRhcmdldFBhcmFtc19hZGRQYXJhbU5hbWUoc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICplbnRyeSwKQEAgLTYwOCw2ICs2MTUsNyBAQAogICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqdGVtcF9zdHJ1Y3Q7CiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBUQVJHRVRQQVJBTVNNUE1PREVMOgogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfc25tcFRhcmdldFBhcmFtc01QTW9kZWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNjI2LDExICs2MzQsMTMgQEAKICAgICBjYXNlIFNOTVBUQVJHRVRQQVJBTVNST1dTVEFUVVM6CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9zbm1wVGFyZ2V0UGFyYW1zUm93U3RhdHVzOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgKndyaXRlX21ldGhvZCA9IE5VTEw7CiAgICAgfQogCi0gICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOyAgICAgICAgLyogYXNzdW1lIGFuIGludGVnZXIgYW5kIGNoYW5nZSBsYXRlciBpZiBub3QgKi8KKyAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLworICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsKIAogICAgIC8qCiAgICAgICogbG9vayBmb3IgT0lEIGluIGN1cnJlbnQgdGFibGUgCkBAIC03MDMsOSArNzEzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5XG4iLAogICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKICAgICB9CisKICAgICByZXR1cm4gTlVMTDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeSAqLwogCisKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAvKgogICogQXNzaWduIGEgdmFsdWUgdG8gdGhlIG1wTW9kZWwgdmFyaWFibGUuICAKICAqLwpAQCAtMTM3OCw2ICsxMzkxLDkgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworCiBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKgogZ2V0X3BhcmFtRW50cnkoY2hhciAqbmFtZSkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaAppbmRleCA4Mjg2YTY0Li5iZDMwNTgyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCkBAIC0xLDcyICsxLDc1IEBACiAKLS8qCi0gKiBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBtaWIyYyBhbmQgaXMgaW50ZW5kZWQgZm9yIHVzZSBhcyBhIG1pYiBtb2R1bGUKLSAqIGZvciB0aGUgdWNkLXNubXAgc25tcGQgYWdlbnQuIEVkaXRlZCBieSBNaWNoYWVsIEJhZXIKLSAqIAotICogbGFzdCBjaGFuZ2VkIDIvMi85OS4KLSAqLwotCi0jaWZuZGVmIF9NSUJHUk9VUF9TTk1QVEFSR0VUUEFSQU1TRU5UUllfSAotI2RlZmluZSBfTUlCR1JPVVBfU05NUFRBUkdFVFBBUkFNU0VOVFJZX0gKLQotICAgIC8qCi0gICAgICogTWFnaWMgbnVtYmVyIGRlZmluaXRpb25zOiAKLSAgICAgKi8KLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TTVBNT0RFTCAgICAgICAgMQotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMICAyCi0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTkFNRSAgIDMKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTCAgNAotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRSAgICA1Ci0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1JPV1NUQVRVUyAgICAgIDYKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TTVBNT0RFTENPTFVNTiAgICAgICAgMgotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMQ09MVU1OICAzCi0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTkFNRUNPTFVNTiAgIDQKLSNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTENPTFVNTiAgNQotI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRUNPTFVNTiAgICA2Ci0jZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1JPV1NUQVRVU0NPTFVNTiAgICAgIDcKLSAgICAvKgotICAgICAqIHN0cnVjdHVyZSBkZWZpbml0aW9ucyAKLSAgICAgKi8KLSAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0IHsKLSAgICAgICAgIGNoYXIgICAgICAgICAgICpwYXJhbU5hbWU7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgbXBNb2RlbDsKLSAgICAgICAgIGludCAgICAgICAgICAgICBzZWNNb2RlbDsKLSAgICAgICAgIGNoYXIgICAgICAgICAgICpzZWNOYW1lOwotICAgICAgICAgaW50ICAgICAgICAgICAgIHNlY0xldmVsOwotICAgICAgICAgaW50ICAgICAgICAgICAgIHN0b3JhZ2VUeXBlOwotICAgICAgICAgaW50ICAgICAgICAgICAgIHJvd1N0YXR1czsKLSAgICAgICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqbmV4dDsKLSAgICAgICAgIHRpbWVfdCAgICAgICAgICB1cGRhdGVUaW1lOwotICAgICB9OwotCi0vKgotICogdXRpbGl0eSBmdW5jdGlvbnMgCi0gKi8KLSAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpnZXRfcGFyYW1FbnRyeShjaGFyICpuYW1lKTsKLSAgICAgdm9pZCAgICAgICAgICAgIHNubXBUYXJnZXRQYXJhbVRhYmxlX2FkZChzdHJ1Y3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZXdFbnRyeSk7Ci0gICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqc25tcFRhcmdldFBhcmFtVGFibGVfY3JlYXRlKHZvaWQpOwotICAgICB2b2lkIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2Uoc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICopOwotCi0vKgotICogZnVuY3Rpb24gZGVmaW5pdGlvbnMgCi0gKi8KLQotICAgICB2b2lkICAgICAgICAgICAgaW5pdF9zbm1wVGFyZ2V0UGFyYW1zRW50cnkodm9pZCk7Ci0gICAgIGludCAgICAgICAgICAgICBzdG9yZV9zbm1wVGFyZ2V0UGFyYW1zRW50cnkoaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpOwotICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5OwotCi0gICAgIHZvaWQgICAgICAgICAgICBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0UGFyYW1zKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLQorICAvKgorICAgKiBUaGlzIGZpbGUgd2FzIGdlbmVyYXRlZCBieSBtaWIyYyBhbmQgaXMgaW50ZW5kZWQgZm9yIHVzZSBhcyBhIG1pYiBtb2R1bGUKKyAgICogZm9yIHRoZSB1Y2Qtc25tcCBzbm1wZCBhZ2VudC4gRWRpdGVkIGJ5IE1pY2hhZWwgQmFlcgorICAgKiAKKyAgICogbGFzdCBjaGFuZ2VkIDIvMi85OS4KKyAgICovCisgCisgICNpZm5kZWYgX01JQkdST1VQX1NOTVBUQVJHRVRQQVJBTVNFTlRSWV9ICisgICNkZWZpbmUgX01JQkdST1VQX1NOTVBUQVJHRVRQQVJBTVNFTlRSWV9ICisgCisgICAgICAvKgorICAgICAgICogTWFnaWMgbnVtYmVyIGRlZmluaXRpb25zOiAKKyAgICAgICAqLworICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU01QTU9ERUwgICAgICAgIDEKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMICAyCisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlOQU1FICAgMworICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTEVWRUwgIDQKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRSAgICA1CisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTICAgICAgNgorICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU01QTU9ERUxDT0xVTU4gICAgICAgIDIKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMQ09MVU1OICAzCisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlOQU1FQ09MVU1OICAgNAorICAjZGVmaW5lICAgU05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTEVWRUxDT0xVTU4gIDUKKyAgI2RlZmluZSAgIFNOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRUNPTFVNTiAgICA2CisgICNkZWZpbmUgICBTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTQ09MVU1OICAgICAgNworICAgICAgLyoKKyAgICAgICAqIHN0cnVjdHVyZSBkZWZpbml0aW9ucyAKKyAgICAgICAqLworICAgICAgIHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCB7CisgICAgICAgICAgIGNoYXIgICAgICAgICAgICpwYXJhbU5hbWU7CisgICAgICAgICAgIGludCAgICAgICAgICAgICBtcE1vZGVsOworICAgICAgICAgICBpbnQgICAgICAgICAgICAgc2VjTW9kZWw7CisgICAgICAgICAgIGNoYXIgICAgICAgICAgICpzZWNOYW1lOworICAgICAgICAgICBpbnQgICAgICAgICAgICAgc2VjTGV2ZWw7CisgICAgICAgICAgIGludCAgICAgICAgICAgICBzdG9yYWdlVHlwZTsKKyAgICAgICAgICAgaW50ICAgICAgICAgICAgIHJvd1N0YXR1czsKKyAgICAgICAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpuZXh0OworICAgICAgICAgICB0aW1lX3QgICAgICAgICAgdXBkYXRlVGltZTsKKyAgICAgICB9OworIAorICAvKgorICAgKiB1dGlsaXR5IGZ1bmN0aW9ucyAKKyAgICovCisgICAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpnZXRfcGFyYW1FbnRyeShjaGFyICpuYW1lKTsKKyAgICAgICB2b2lkICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtVGFibGVfYWRkKHN0cnVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZXdFbnRyeSk7CisgICAgICAgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICpzbm1wVGFyZ2V0UGFyYW1UYWJsZV9jcmVhdGUodm9pZCk7CisgICAgICAgdm9pZCBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqKTsKKyAKKyAgLyoKKyAgICogZnVuY3Rpb24gZGVmaW5pdGlvbnMgCisgICAqLworIAorICAgICAgIHZvaWQgICAgICAgICAgICBpbml0X3NubXBUYXJnZXRQYXJhbXNFbnRyeSh2b2lkKTsKKyAgICAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fc25tcFRhcmdldFBhcmFtc0VudHJ5KHZvaWQpOworICAgICAgIGludCAgICAgICAgICAgICBzdG9yZV9zbm1wVGFyZ2V0UGFyYW1zRW50cnkoaW50IG1ham9ySUQsIGludCBtaW5vcklELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50YXJnKTsKKyAgICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5OworIAorICAgICAgIHZvaWQgICAgICAgICAgICBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0UGFyYW1zKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKKyAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgIFdyaXRlTWV0aG9kICAgICB3cml0ZV9zbm1wVGFyZ2V0UGFyYW1zTVBNb2RlbDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRQYXJhbXNTZWNNb2RlbDsKICAgICAgV3JpdGVNZXRob2QgICAgIHdyaXRlX3NubXBUYXJnZXRQYXJhbXNTZWNOYW1lOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldFBhcmFtc1NlY0xldmVsOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldFBhcmFtc1N0b3JhZ2VUeXBlOwogICAgICBXcml0ZU1ldGhvZCAgICAgd3JpdGVfc25tcFRhcmdldFBhcmFtc1Jvd1N0YXR1czsKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfU05NUFRBUkdFVFBBUkFNU0VOVFJZX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYwppbmRleCA1ODc4M2FkLi41NjE5ZTM1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC0yNSw2ICsyNiwxMCBAQAogI2luY2x1ZGUgInNubXBUYXJnZXRQYXJhbXNFbnRyeS5oIgogI2luY2x1ZGUgInRhcmdldC5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0ZG9tYWluX3N1cHBvcnQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0ZG9tYWluX3RyYW5zcG9ydF9vaWQpCituZXRzbm1wX2ZlYXR1cmVfd2FudChuZXRzbm1wX3Rsc3RtQWRkcl9nZXRfc2VydmVySWQpCisKICNkZWZpbmUgTUFYX1RBR1MgMTI4CiAKIG5ldHNubXBfc2Vzc2lvbiAqCkBAIC02Niw3ICs3MSw3IEBACiAgICAgICAgICAgICAodGFyZ2FkZHJzLT50RG9tYWluLCB0YXJnYWRkcnMtPnREb21haW5MZW4sIE5VTEwsIE5VTEwpID09IDApIHsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgZG9tYWluIGZvciB0YXJnZXQgYWRkcmVzcyB0YWJsZSBlbnRyeSAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgIHRhcmdhZGRycy0+bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICB0YXJnYWRkcnMtPm5hbWVEYXRhKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qCkBAIC0xOTEsNyArMTk2LDggQEAKICNpZiBkZWZpbmVkKE5FVFNOTVBfVFJBTlNQT1JUX0RUTFNVRFBfRE9NQUlOKSB8fCBkZWZpbmVkKE5FVFNOTVBfVFJBTlNQT1JUX1RMU1RDUF9ET01BSU4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0bHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jZXJ0ICpjZXJ0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgKnNlcnZlcl9pZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAgICAgICAgICpzZXJ2ZXJfaWQgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyCSAgICAgIGJ1ZlszM107CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInRhcmdldF9zZXNzaW9ucyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIGxvb2tpbmcgdXAgb3VyIGlkOiAlc1xuIiwKQEAgLTIwNSwyNSArMjExLDI5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidGFyZ2V0X3Nlc3Npb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgZm91bmQgZmluZ2VycHJpbnQ6ICVzXG4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQtPmZpbmdlcnByaW50KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT5mX2NvbmZpZyh0LCAib3VyX2lkZW50aXR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQtPmZfY29uZmlnKHQsICJsb2NhbENlcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydC0+ZmluZ2VycHJpbnQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShidWYsIHRhcmdhZGRycy0+bmFtZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnYWRkcnMtPm5hbWVMZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZbdGFyZ2FkZHJzLT5uYW1lTGVuXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YXJnZXRfc2Vzc2lvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBsb29raW5nIHVwIHRoZWlyIGlkOiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2FkZHJzLT5uYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2VydF9maW5kKE5TX0NFUlRfUkVNT1RFX1BFRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19DRVJUS0VZX1RBUkdFVF9BRERSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2FkZHJzLT5uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjZXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidGFyZ2V0X3Nlc3Npb25zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgZm91bmQgZmluZ2VycHJpbnQ6ICVzXG4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQtPmZpbmdlcnByaW50KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LT5mX2NvbmZpZyh0LCAidGhlaXJfaWRlbnRpdHkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC0+Zl9jb25maWcodCwgInBlZXJDZXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQtPmZpbmdlcnByaW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQgPSBuZXRzbm1wX3Rsc3RtQWRkcl9nZXRfc2VydmVySWQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnYWRkcnMtPm5hbWUpOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNQUREUl9HRVRfU0VSVkVSSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkID0gbmV0c25tcF90bHN0bUFkZHJfZ2V0X3NlcnZlcklkKGJ1Zik7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTUFERFJfR0VUX1NFUlZFUklEICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2ZXJfaWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YXJnZXRfc2Vzc2lvbnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICBmb3VuZCBzZXJ2ZXJJZDogJXNcbiIsIApAQCAtMjQ2LDcgKzI1Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bnN1cHBvcnRlZCBtcE1vZGVsL3NlY01vZGVsIGNvbWJvICVkLyVkIGZvciB0YXJnZXQgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtLT5tcE1vZGVsLCBwYXJhbS0+c2VjTW9kZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdhZGRycy0+bmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdhZGRycy0+bmFtZURhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBYWFg6IG1lbWxlYWsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jCmluZGV4IDhhMmYwZDEuLjAxMDk5NzQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMKQEAgLTQ0LDYgKzQ0LDcgQEAKIAogfQogCisKIGludAogZ2V0X3Vua25vd25fY29udGV4dF9jb3VudChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oCmluZGV4IGM0ODVjNGMuLjM1NWYzOTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKQEAgLTUsNSArNSw2IEBACiBjb25maWdfZXhjbHVkZSh0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzKQogCiB2b2lkICAgICAgICAgICAgaW5pdF90YXJnZXRfY291bnRlcnModm9pZCk7CisKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGdldF91bmF2YWlsYWJsZV9jb250ZXh0X2NvdW50OwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgZ2V0X3Vua25vd25fY29udGV4dF9jb3VudDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5jCmluZGV4IDdiZTdkZTMuLmEzMjIwN2IgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYwpAQCAtMSw1ICsxLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZWxzZQpAQCAtMTMsNiArMTUsOCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc25tcF9nZXRfc3RhdGlzdGljLmg+CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlbHBlcl9zdGF0aXN0aWNzKQorCiB2b2lkCiBpbml0X3RhcmdldF9jb3VudGVyc181XzUodm9pZCkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmgKaW5kZXggMGYzOWE3Zi4uMGMxM2EwZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmgKQEAgLTIzLDcgKzIzLDcgQEAKIGNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlKQogI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQogY29uZmlnX3JlcXVpcmUodGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3NvbGFyaXMyKQotI2VsaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChkcmFnb25mbHkpCisjZWxpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGRyYWdvbmZseSkgfHwgZGVmaW5lZChkYXJ3aW4pCiBjb25maWdfcmVxdWlyZSh0Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fZnJlZWJzZDQpCiAjZWxpZiBkZWZpbmVkKG9wZW5ic2Q0KQogY29uZmlnX3JlcXVpcmUodGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX29wZW5ic2QpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmMKaW5kZXggZTlmMmI4Zi4uYmJhMDFmZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYwpAQCAtMTY0LDYgKzE2NCwxMyBAQAogICAgIGZyZWUoZW50cnkpOwogfQogCisjaWZkZWYgVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVECisKKy8qIFhYWCBUT0RPOiB0aGVzZSBhcmUgY3VycmVudGx5IHVuc3VwcG9ydGVkIGV2ZXJ5d2hlcmU7IHRvIGVuYWJsZSB0aGUKKyAgIGZ1bmN0aW9ucyBmaXJzdCBpbXBsZW1lbnQgbmV0c25tcF9hcmNoX3RjcGNvbm5fZW50cnlfZGVsZXRlIGluIHRoZQorICAgdGNwQ29ubl97T1N9LmMgZmlsZSBhbmQgdGhlbiBkZWZpbmUgVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVEIGluIHRoZQorICAgdGNwQ29ubl97T1N9LmggZmlsZSAod2hpY2ggbWF5IG5lZWQgdG8gYmUgY3JlYXRlZCBmaXJzdCkuICovCisKIC8qKgogICogdXBkYXRlIHVuZGVybHlpbmcgZGF0YSBzdG9yZSAoa2VybmVsKSBmb3IgZW50cnkKICAqCkBAIC0xOTMsNiArMjAwLDcgQEAKICAgICAKICAgICByZXR1cm4gcmM7CiB9CisjZW5kaWYgLyogVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVEICovCiAKIC8qKgogICogdXBkYXRlIGFuIG9sZCB0Y3Bjb25uX2VudHJ5IGZyb20gYSBuZXcgb25lCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCmluZGV4IDJiZjU4OGEuLjVmOTNiZTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCkBAIC01Niw2ICs1Niw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBUQ1BDT05OX0RFTEVURV9TVVBQT1JURUQKIC8qCiAgKiBkZWxldGUgYW4gZW50cnkKICAqLwpAQCAtNjcsNyArNjgsNyBAQAogICAgIC8qKiB4eHgtcmtzOjkgdGNwQ29ubiBkZWxldGUgbm90IGltcGxlbWVudGVkICovCiAgICAgcmV0dXJuIC0xOwogfQotCisjZW5kaWYgLyogVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVEICovCiAKIC8qKgogICoKQEAgLTgzLDYgKzg0LDkgQEAKICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnRjcGNvbm46Y29udGFpbmVyIiwKICAgICAgICAgICAgICAgICAidGNwY29ubl9jb250YWluZXJfYXJjaF9sb2FkIChmbGFncyAleClcbiIsIGxvYWRfZmxhZ3MpKTsKIAorICAgIC8qIFNldHVwIHRoZSBwaWRfZnJvbV9pbm9kZSB0YWJsZSwgYW5kIGZpbGwgaXQuKi8KKyAgICBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZV9pbml0KCk7CisKICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc190Y3Bjb25uXG4iKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTg0LDcgKzE4OCw3IEBACiAgICAgICAgIGVudHJ5LT5ybXRfcG9ydCA9ICh1bnNpZ25lZCBzaG9ydCkgcmVtb3RlX3BvcnQ7CiAgICAgICAgIGVudHJ5LT50Y3BDb25uU3RhdGUgPSBzdGF0ZTsKICAgICAgICAgZW50cnktPnBpZCA9IG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlub2RlKTsKLSAgICAgICAgCisKICAgICAgICAgLyoqIHRoZSBhZGRyIHN0cmluZyBtYXkgbmVlZCB3b3JrICovCiAgICAgICAgIGJ1Zl9sZW4gPSBzdHJsZW4obG9jYWxfYWRkcik7CiAgICAgICAgIGlmICgoOCAhPSBidWZfbGVuKSB8fApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3NvbGFyaXMyLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYwppbmRleCA5NTlkNzA4Li44ODkyOTlhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fc29sYXJpczIuYwpAQCAtMzksNiArMzksNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZkZWYgVENQQ09OTl9ERUxFVEVfU1VQUE9SVEVECiBpbnQgCiBuZXRzbm1wX2FyY2hfdGNwY29ubl9lbnRyeV9kZWxldGUobmV0c25tcF90Y3Bjb25uX2VudHJ5ICplcCkKIHsKQEAgLTQ3LDYgKzQ4LDcgQEAKICAgICAgKi8KICAgICByZXR1cm4gKC0xKTsKIH0KKyNlbmRpZiAvKiBUQ1BDT05OX0RFTEVURV9TVVBQT1JURUQgKi8KIAogaW50IAogbmV0c25tcF9hcmNoX3RjcGNvbm5fY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIsIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2ludGVyZmFjZS5jCmluZGV4IGQxYzJmYjMuLmQwYjI3ZTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlLmMKQEAgLTMwLDYgKzMwLDcgQEAKICAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTQ2LDYgKzQ3LDE4IEBACiAKICNpbmNsdWRlIDxjdHlwZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcENvbm5lY3Rpb25UYWJsZV9jb250YWluZXJfc2l6ZSwgdGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BDb25uZWN0aW9uVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgdGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BDb25uZWN0aW9uVGFibGVfcmVnaXN0cmF0aW9uX2dldCwgdGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BDb25uZWN0aW9uVGFibGVfY29udGFpbmVyX2dldCwgdGNwQ29ubmVjdGlvblRhYmxlX2V4dGVybmFsX2FjY2VzcykKKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqCkBAIC04MiwxOSArOTUsMjMgQEAKICAgICAgICAgICAgICAgICBfdGNwQ29ubmVjdGlvblRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bih0Y3BDb25uZWN0aW9uVGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKIAotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIHRjcENvbm5lY3Rpb25UYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHRjcENvbm5lY3Rpb25UYWJsZV9pZl9jdHguY29udGFpbmVyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUENPTk5FQ1RJT05UQUJMRV9SRUdJU1RSQVRJT05fR0VUCiB0Y3BDb25uZWN0aW9uVGFibGVfcmVnaXN0cmF0aW9uICoKIHRjcENvbm5lY3Rpb25UYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHRjcENvbm5lY3Rpb25UYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfUkVHSVNUUkFUSU9OX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIHRjcENvbm5lY3Rpb25UYWJsZV9yZWdpc3RyYXRpb24gKgogdGNwQ29ubmVjdGlvblRhYmxlX3JlZ2lzdHJhdGlvbl9zZXQodGNwQ29ubmVjdGlvblRhYmxlX3JlZ2lzdHJhdGlvbiAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpCkBAIC0xMDQsMTIgKzEyMSwxNSBAQAogICAgIHRjcENvbm5lY3Rpb25UYWJsZV9pZl9jdHgudXNlcl9jdHggPSBuZXdyZWc7CiAgICAgcmV0dXJuIG9sZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUENPTk5FQ1RJT05UQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogdGNwQ29ubmVjdGlvblRhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCiB7CiAgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKHRjcENvbm5lY3Rpb25UYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUENPTk5FQ1RJT05UQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiB1X2ludAogdGNwQ29ubmVjdGlvblRhYmxlX2RpcnR5X2dldCh2b2lkKQpAQCAtMTMzLDcgKzE1Myw3IEBACiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfcG9zdF9yZXF1ZXN0Owogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfdGNwQ29ubmVjdGlvblRhYmxlX29iamVjdF9sb29rdXA7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfZ2V0X3ZhbHVlczsKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfdGNwQ29ubmVjdGlvblRhYmxlX2NoZWNrX29iamVjdHM7CiBzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfdW5kb19zZXR1cDsKIHN0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX3RjcENvbm5lY3Rpb25UYWJsZV9zZXRfdmFsdWVzOwpAQCAtMTQ4LDcgKzE2OCw3IEBACiAgICAgICAgICAgICAgICAgX3RjcENvbm5lY3Rpb25UYWJsZV91bmRvX2NvbHVtbih0Y3BDb25uZWN0aW9uVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLCBpbnQgY29sdW1uKTsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogLyoqCiAgKiBAaW50ZXJuYWwKQEAgLTIzMiw4ICsyNTIsNyBAQAogICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0ID0KICAgICAgICAgX21mZF90Y3BDb25uZWN0aW9uVGFibGVfcG9zdF9yZXF1ZXN0OwogCi0KLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIC8qCiAgICAgICogUkVRVUlSRUQgd3JhcHBlcnMgZm9yIHNldCByZXF1ZXN0IGhhbmRsaW5nCiAgICAgICovCkBAIC0yNTgsNyArMjc3LDcgQEAKICAgICAgKi8KICAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbnNpc3RlbmN5X2NoZWNrcyA9CiAgICAgICAgIF9tZmRfdGNwQ29ubmVjdGlvblRhYmxlX2NoZWNrX2RlcGVuZGVuY2llczsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgICoKQEAgLTI3Myw3ICsyOTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhBTkRMRVJfQ0FOX1JXUklURQogI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwpAQCAtMjk0LDcgKzMxMyw3IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCkBAIC0zMTcsNyArMzM2LDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgfHwgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUICovCiAKICAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKQEAgLTk5MCw3ICsxMDA5LDcgQEAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF90Y3BDb25uZWN0aW9uVGFibGVfZ2V0X3ZhbHVlcyAqLwogCiAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgogICogU0VUIHByb2Nlc3NpbmcKQEAgLTE2MTgsNyArMTYzNyw3IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF90Y3BDb25uZWN0aW9uVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0xNzc1LDYgKzE3OTQsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfdGNwQ29ubmVjdGlvblRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BDT05ORUNUSU9OVEFCTEVfRVhURVJOQUxfQUNDRVNTCiB0Y3BDb25uZWN0aW9uVGFibGVfcm93cmVxX2N0eCAqCiB0Y3BDb25uZWN0aW9uVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KHRjcENvbm5lY3Rpb25UYWJsZV9taWJfaW5kZXggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMTgwMiwzICsxODIyLDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQQ09OTkVDVElPTlRBQkxFX0VYVEVSTkFMX0FDQ0VTUyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBhNWM5NTEwLi4yZTQxMzgwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzAsNiArMzAsNyBAQAogICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNDYsNiArNDcsMTggQEAKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BMaXN0ZW5lclRhYmxlX2V4dGVybmFsX2FjY2VzcywgbGlibmV0c25tcG1pYnMpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19tZXJnZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX3NpemUsIHRjcExpc3RlbmVyVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRjcExpc3RlbmVyVGFibGVfcmVnaXN0cmF0aW9uX3NldCwgdGNwTGlzdGVuZXJUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb25fZ2V0LCB0Y3BMaXN0ZW5lclRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0Y3BMaXN0ZW5lclRhYmxlX2NvbnRhaW5lcl9nZXQsIHRjcExpc3RlbmVyVGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqKioKQEAgLTc5LDE5ICs5MiwyMyBAQAogICAgICAgICAgICAgICAgIF90Y3BMaXN0ZW5lclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bih0Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZV9jdHggKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX0NPTlRBSU5FUl9HRVQKIG5ldHNubXBfY29udGFpbmVyICoKIHRjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX2dldCh2b2lkKQogewogICAgIHJldHVybiB0Y3BMaXN0ZW5lclRhYmxlX2lmX2N0eC5jb250YWluZXI7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX0NPTlRBSU5FUl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfUkVHSVNUUkFUSU9OX0dFVAogdGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb24gKgogdGNwTGlzdGVuZXJUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHRjcExpc3RlbmVyVGFibGVfaWZfY3R4LnVzZXJfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQTElTVEVORVJUQUJMRV9SRUdJU1RSQVRJT05fR0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX1JFR0lTVFJBVElPTl9TRVQKIHRjcExpc3RlbmVyVGFibGVfcmVnaXN0cmF0aW9uICoKIHRjcExpc3RlbmVyVGFibGVfcmVnaXN0cmF0aW9uX3NldCh0Y3BMaXN0ZW5lclRhYmxlX3JlZ2lzdHJhdGlvbiAqIG5ld3JlZykKIHsKQEAgLTk5LDEyICsxMTYsMTUgQEAKICAgICB0Y3BMaXN0ZW5lclRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKICAgICByZXR1cm4gb2xkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVENQTElTVEVORVJUQUJMRV9SRUdJU1RSQVRJT05fU0VUICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX0NPTlRBSU5FUl9TSVpFCiBpbnQKIHRjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKIHsKICAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUodGNwTGlzdGVuZXJUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfQ09OVEFJTkVSX1NJWkUgKi8KIAogLyoKICAqIG1mZCBtdWx0aXBsZXhlciBtb2RlcwpAQCAtMjIwLDcgKzI0MCw4IEBACiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKIAotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCisgICAgLyogWFhYIC0gYXJlIHRoZXNlIGFjdHVhbGx5IG5lY2Vzc2FyeT8gKi8KICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKQEAgLTI0Myw3ICsyNjQsNyBAQAogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKLSNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpAQCAtOTU3LDYgKzk3OCw3IEBACiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF90Y3BMaXN0ZW5lclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLwogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UQ1BMSVNURU5FUlRBQkxFX0VYVEVSTkFMX0FDQ0VTUwogdGNwTGlzdGVuZXJUYWJsZV9yb3dyZXFfY3R4ICoKIHRjcExpc3RlbmVyVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KHRjcExpc3RlbmVyVGFibGVfbWliX2luZGV4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCkBAIC05ODQsMyArMTAwNiw0IEBACiAKICAgICByZXR1cm4gcm93cmVxX2N0eDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RDUExJU1RFTkVSVEFCTEVfRVhURVJOQUxfQUNDRVNTICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jIGIvYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYwppbmRleCBjMDg2NmRkLi5mNzQ2OGYwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jCisrKyBiL2FnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmZGVmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTksNiArMTAsMTEgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodWxvbmdfaW5zdGFuY2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl9yZWFkX29ubHlfdGFibGVfZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2J1aWxkX3Jlc3VsdCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX2RhdGFzZXQpCisKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTMyOSw2ICszMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIGFjY2Vzc2VzLCBzaXplb2YoYWNjZXNzZXMpKTsKICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgIT0gQVNOX1VOU0lHTkVEKQogICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywKQEAgLTM3MSw2ICszNzgsNyBAQAogICAgICAgICAgKiBub3RoaW5nIHRvIGRvIAogICAgICAgICAgKi8KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUFkZHJUYWJsZS9zbm1wVGxzdG1BZGRyVGFibGUuYwppbmRleCBlZGE2NGYzLi41NDkzZmY5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQWRkclRhYmxlL3NubXBUbHN0bUFkZHJUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1BZGRyVGFibGUvc25tcFRsc3RtQWRkclRhYmxlLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CkBAIC0xMiw2ICsxMywxNyBAQAogI2luY2x1ZGUgInRsc3RtLW1pYi5oIgogI2luY2x1ZGUgInNubXBUbHN0bUFkZHJUYWJsZS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRsc3RtYWRkcl9jb250YWluZXIpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9kZWxldGVfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9leHRyYWN0X3RhYmxlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfcmVtb3ZlX3JvdykKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9zdG9yYWdldHlwZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfaW5zZXJ0X3JvdykKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKwogLyoqIFhYWCAtIG1vdmUgdGhlc2UgdG8gdGFibGVfZGF0YSBoZWFkZXI/ICovCiAjZGVmaW5lIEZBVEVfTkVXTFlfQ1JFQVRFRCAgICAxCiAjZGVmaW5lIEZBVEVfTk9fQ0hBTkdFICAgICAgICAwCkBAIC0xOTgsNyArMjEwLDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBjcmVhdGUgaGFuZGxlciBmb3Igc25tcFRsc3RtQWRkclRhYmxlTGFzdENoYW5nZWRcbiIpOwogICAgIGVsc2UKLSAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihyZWcsIHdhdGNoZXIpOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihyZWcsIHdhdGNoZXIpOwogCiAgICAgLyoKICAgICAgKiBJbml0aWFsaXNlIHRoZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaGVyZSAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS9zbm1wVGxzdG1DZXJ0VG9UU05UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMKaW5kZXggM2Y3OTE5Ny4uODRkMWFmYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlL3NubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CkBAIC0xMiw2ICsxMywxOSBAQAogI2luY2x1ZGUgInRsc3RtLW1pYi5oIgogI2luY2x1ZGUgInNubXBUbHN0bUNlcnRUb1RTTlRhYmxlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2VydF9maW5nZXJwcmludHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9kZWxldGVfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9leHRyYWN0X3RhYmxlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGFfcmVtb3ZlX3JvdykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRsc19maW5nZXJwcmludF9idWlsZCkKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9zdG9yYWdldHlwZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfcm93c3RhdHVzX3dpdGhfc3RvcmFnZXR5cGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9pbnNlcnRfcm93KQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworCiAvKiogWFhYIC0gbW92ZSB0aGVzZSB0byB0YWJsZV9kYXRhIGhlYWRlcj8gKi8KICNkZWZpbmUgRkFURV9ORVdMWV9DUkVBVEVEICAgIDEKICNkZWZpbmUgRkFURV9OT19DSEFOR0UgICAgICAgIDAKQEAgLTIwNSw3ICsyMTksNyBAQAogICAgIGVsc2UgewogICAgICAgICBpZiAoTlVMTCAhPSBjb250ZXh0TmFtZSkKICAgICAgICAgICAgIHJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOwotICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKHJlZywgd2F0Y2hlcik7CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIyKHJlZywgd2F0Y2hlcik7CiAgICAgfQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Rsc3RtLW1pYi9zbm1wVGxzdG1QYXJhbXNUYWJsZS9zbm1wVGxzdG1QYXJhbXNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmMKaW5kZXggYTgzNTUzMy4uY2Q1NDQ1MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGxzdG0tbWliL3NubXBUbHN0bVBhcmFtc1RhYmxlL3NubXBUbHN0bVBhcmFtc1RhYmxlLmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0xNCw2ICsxNSwyMCBAQAogCiAjaW5jbHVkZSAic25tcFRsc3RtUGFyYW1zVGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGFibGVfdGRhdGEpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0bHN0bXBhcmFtc19maW5kKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGxzdG1wYXJhbXNfZXh0ZXJuYWwpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjZXJ0X2ZpbmdlcnByaW50cykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2RlbGV0ZV90YWJsZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2V4dHJhY3RfdGFibGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV90ZGF0YV9yZW1vdmVfcm93KQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX3ZiX3N0b3JhZ2V0eXBlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja192Yl9yb3dzdGF0dXNfd2l0aF9zdG9yYWdldHlwZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHRhYmxlX3RkYXRhX2luc2VydF9yb3cpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKIC8qKiBYWFggLSBtb3ZlIHRoZXNlIHRvIHRhYmxlX2RhdGEgaGVhZGVyPyAqLwogI2RlZmluZSBGQVRFX05FV0xZX0NSRUFURUQgICAgMQogI2RlZmluZSBGQVRFX05PX0NIQU5HRSAgICAgICAgMApAQCAtMTY3LDcgKzE4Miw3IEBACiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgY3JlYXRlIGhhbmRsZXIgZm9yIHNubXBUbHN0bVBhcmFtc1RhYmxlTGFzdENoYW5nZWRcbiIpOwogICAgIGVsc2UKLSAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcihyZWcsIHdhdGNoZXIpOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyMihyZWcsIHdhdGNoZXIpOwogCiAgICAgLyoKICAgICAgKiBJbml0aWFsaXNlIHRoZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaGVyZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdHNtLW1pYi9zbm1wVHNtU3RhdHMvc25tcFRzbVN0YXRzLmMgYi9hZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYwppbmRleCA2ZTFiNzk2Li5hNTY3ZDJlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYworKysgYi9hZ2VudC9taWJncm91cC90c20tbWliL3NubXBUc21TdGF0cy9zbm1wVHNtU3RhdHMuYwpAQCAtMyw2ICszLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgpAQCAtMTAsNiArMTEsMTAgQEAKIAogc3RhdGljIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qIF9teXJlZyA9IE5VTEw7CiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGhlbHBlcl9zdGF0aXN0aWNzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2h1dGRvd25fc25tcHRzbXNlc3Npb24sIG5ldHNubXBfdW51c2VkKQorCiAvKiogSW5pdGlhbGl6ZXMgdGhlIHNubXBUc21TdGF0cyBtb2R1bGUgKi8KIHZvaWQKIGluaXRfc25tcFRzbVN0YXRzKHZvaWQpCkBAIC0zNiw2ICs0MSw3IEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0hVVERPV05fU05NUFRTTVNFU1NJT04KIHZvaWQKIHNodXRkb3duX3NubXBUc21TZXNzaW9uKHZvaWQpCiB7CkBAIC00NCwzICs1MCw0IEBACiAgICAgICAgIF9teXJlZyA9IE5VTEw7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0hVVERPV05fU05NUFRTTVNFU1NJT04gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYwppbmRleCAzMjRmYmM0Li4xMTQ3ZWVmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jCkBAIC01NjgsNyArNTY4LDYgQEAKICAgRklMRSAgICAgICAgICAgKm1udGZwOwogI2VsaWYgSEFWRV9GU1RBQl9ICiAgIHN0cnVjdCBmc3RhYiAgICpmc3RhYjsKLSAgc3RydWN0IHN0YXQgICAgIHN0YXQxOwogI2VsaWYgSEFWRV9TVEFURlMKICAgc3RydWN0IHN0YXRmcyAgIHN0YXRmOwogI2VuZGlmCkBAIC02MjIsNyArNjIxLDYgQEAKICAgICBzdHJsY3B5KGRldmljZSwgbW50dGFiLm1udF9zcGVjaWFsLCBzaXplb2YoZGV2aWNlKSk7CiAjZW5kaWYgLyogSEFWRV9TRVRNTlRFTlQgKi8KICNlbGlmIEhBVkVfRlNUQUJfSAotICBzdGF0KHBhdGgsICZzdGF0MSk7CiAgIHNldGZzZW50KCk7CiAgIGlmICgoZnN0YWIgPSBnZXRmc2ZpbGUocGF0aCkpKQogICAgIHN0cmxjcHkoZGV2aWNlLCBmc3RhYi0+ZnNfc3BlYywgc2l6ZW9mKGRldmljZSkpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5jCmluZGV4IDkzZWNkZTMuLmVhMzc2MTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmMKQEAgLTMwNSw4ICszMDUsMTEgQEAKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsOwogICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKICAgICBzdGF0aWMgY2hhciAgICAgZXJybXNnWzMwMF07CisgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlOwogCi0gICAgbmV0c25tcF9mc3lzX2xvYWQoIE5VTEwsIE5VTEwgKTsgIC8qIFVwZGF0ZSB0aGUgZnN5cyBIL1cgbW9kdWxlICovCisgICAgLyogVXBkYXRlIHRoZSBmc3lzIEgvVyBtb2R1bGUgKi8KKyAgICBjYWNoZSA9IG5ldHNubXBfZnN5c19nZXRfY2FjaGUoKTsKKyAgICBuZXRzbm1wX2NhY2hlX2NoZWNrX2FuZF9yZWxvYWQoY2FjaGUpOwogCiB0cnlBZ2FpbjoKICAgICBpZiAoaGVhZGVyX3NpbXBsZV90YWJsZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza19ody5oCmluZGV4IDE0N2I5OGYuLmZmNDJlZDkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tfaHcuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrX2h3LmgKQEAgLTgsNiArOCw3IEBACiB2b2lkICAgICAgICAgICAgaW5pdF9kaXNrX2h3KHZvaWQpOwogCiBjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzKQogCiAgICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9leHRlbnNpYmxlX2Rpc2s7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMKaW5kZXggYTgxOWFhNi4uNGVhODk4NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMKQEAgLTExMiw3ICsxMTIsNyBAQAogc3RhdGljIG1hY2hfcG9ydF90IG1hc3RlclBvcnQ7CQkvKiB0byBjb21tdW5pY2F0ZSB3aXRoIEkvTyBLaXQJKi8KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGFyd2luICovCiAKLSNpZm5kZWYgc29sYXJpczIKKyNpZiAhZGVmaW5lZChzb2xhcmlzMikgJiYgIShkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KSB8fCBkZWZpbmVkKGFpeDcpKQogc3RhdGljIGludCAgICAgIGdldHN0YXRzKHZvaWQpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jCmluZGV4IDU3YmY4N2UuLjBiNzExZmIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYwpAQCAtMyw2ICszLDcgQEAKICAqCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpZiBIQVZFX1NURExJQl9ICkBAIC0xNCwxNyArMTUsMTAgQEAKICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCi0jaWYgSEFWRV9VTklTVERfSAotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0jaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAotI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKLQogI2lmIGRlZmluZWQoV0lOMzIpCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2Vsc2UKQEAgLTMyLDczICsyNiwzMyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiZGxtb2QuaCIKIAorI2lmbmRlZiBTTk1QRExNT0RQQVRICisjZGVmaW5lIFNOTVBETE1PRFBBVEggIi91c3IvbG9jYWwvbGliL3NubXAvZGxtb2QiCisjZW5kaWYKKworc3RydWN0IGRsbW9kIHsKKyAgc3RydWN0IGRsbW9kICAgKm5leHQ7CisgIGludCAgICAgICAgICAgICBpbmRleDsKKyAgY2hhciAgICAgICAgICAgIG5hbWVbNjQgKyAxXTsKKyAgY2hhciAgICAgICAgICAgIHBhdGhbMjU1ICsgMV07CisgIGNoYXIgICAgICAgICAgICBlcnJvclsyNTUgKyAxXTsKKyAgdm9pZCAgICAgICAgICAgKmhhbmRsZTsKKyAgaW50ICAgICAgICAgICAgIHN0YXR1czsKK307CisKKyNkZWZpbmUgRExNT0RfTE9BREVECQkxCisjZGVmaW5lIERMTU9EX1VOTE9BREVECQkyCisjZGVmaW5lIERMTU9EX0VSUk9SCQkzCisjZGVmaW5lIERMTU9EX0xPQUQJCTQKKyNkZWZpbmUgRExNT0RfVU5MT0FECQk1CisjZGVmaW5lIERMTU9EX0NSRUFURQkJNgorI2RlZmluZSBETE1PRF9ERUxFVEUJCTcKKwogc3RhdGljIHN0cnVjdCBkbG1vZCAqZGxtb2RzOwogc3RhdGljIHVuc2lnbmVkIGludCBkbG1vZF9uZXh0X2luZGV4ID0gMTsKIHN0YXRpYyBjaGFyICAgICBkbG1vZF9wYXRoWzEwMjRdOwogCi1zdGF0aWMgdm9pZCAgICAgZGxtb2RfcGFyc2VfY29uZmlnKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLXN0YXRpYyB2b2lkICAgICBkbG1vZF9mcmVlX2NvbmZpZyh2b2lkKTsKLQotLyoKLSAqIHRoaXMgdmFyaWFibGUgZGVmaW5lcyBmdW5jdGlvbiBjYWxsYmFja3MgYW5kIHR5cGUgcmV0dXJuCi0gKiBpbmZvcm1hdGlvbiBmb3IgdGhlIGRsbW9kIG1pYgotICovCi1zdGF0aWMgc3RydWN0IHZhcmlhYmxlNCBkbG1vZF92YXJpYWJsZXNbXSA9IHsKLSAgICB7RExNT0RORVhUSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKLSAgICAgdmFyX2RsbW9kLCAxLCB7MX19LAotICAgIHtETE1PRE5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKLSAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCAyfX0sCi0gICAge0RMTU9EUEFUSCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAotICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDN9fSwKLSAgICB7RExNT0RFUlJPUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCi0gICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgNH19LAotICAgIHtETE1PRFNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKLSAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA1fX0sCi19OwotCi1zdGF0aWMgb2lkICAgICAgZGxtb2RfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCAyMDIxLCAxMywgMTQgfTsKLXN0YXRpYyBpbnQgICAgICBkbG1vZF92YXJpYWJsZXNfb2lkX2xlbiA9IDk7Ci0KLXZvaWQKLWluaXRfZGxtb2Qodm9pZCkKLXsKLSAgICBSRUdJU1RFUl9NSUIoImRsbW9kIiwgZGxtb2RfdmFyaWFibGVzLCB2YXJpYWJsZTQsIGRsbW9kX3ZhcmlhYmxlc19vaWQpOwotCi0gICAgLyoKLSAgICAgKiBUT0RPOiBSRUdJU1RFUl9TWVNPUl9FTlRSWSAKLSAgICAgKi8KLQotICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJyZWdpc3RlciBtaWJcbiIpKTsKLQotICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkbG1vZCIsIGRsbW9kX3BhcnNlX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbG1vZF9mcmVlX2NvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlLW5hbWUgbW9kdWxlLXBhdGgiKTsKLQotICAgIHsKLSAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0IHAgPSBnZXRlbnYoIlNOTVBETE1PRFBBVEgiKTsKLSAgICAgICAgc3RybGNweShkbG1vZF9wYXRoLCBTTk1QRExNT0RQQVRILCBzaXplb2YoZGxtb2RfcGF0aCkpOwotICAgICAgICBpZiAocCkgewotICAgICAgICAgICAgaWYgKHBbMF0gPT0gRU5WX1NFUEFSQVRPUl9DSEFSKSB7Ci0gICAgICAgICAgICAgICAgaW50IGxlbiA9IHN0cmxlbihkbG1vZF9wYXRoKTsKLSAgICAgICAgICAgICAgICBpZiAobGVuID49IDEgJiYgZGxtb2RfcGF0aFtsZW4gLSAxXSAhPSBFTlZfU0VQQVJBVE9SX0NIQVIpCi0gICAgICAgICAgICAgICAgICAgIHN0cmxjYXQoZGxtb2RfcGF0aCwgRU5WX1NFUEFSQVRPUiwgc2l6ZW9mKGRsbW9kX3BhdGgpKTsKLSAgICAgICAgICAgICAgICBzdHJsY2F0KGRsbW9kX3BhdGgsIHAgKyAxLCBzaXplb2YoZGxtb2RfcGF0aCkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc3RybGNweShkbG1vZF9wYXRoLCBwLCBzaXplb2YoZGxtb2RfcGF0aCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgREVCVUdNU0dUTCgoImRsbW9kIiwgImRsbW9kX3BhdGg6ICVzXG4iLCBkbG1vZF9wYXRoKSk7Ci19Ci0KLXZvaWQKLWRlaW5pdF9kbG1vZCh2b2lkKQotewotICAgIHVucmVnaXN0ZXJfbWliKGRsbW9kX3ZhcmlhYmxlc19vaWQsIGRsbW9kX3ZhcmlhYmxlc19vaWRfbGVuKTsKLSAgICBzbm1wZF91bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkbG1vZCIpOwotfQotCi1zdHJ1Y3QgZGxtb2QgICAqCitzdGF0aWMgc3RydWN0IGRsbW9kICAgKgogZGxtb2RfY3JlYXRlX21vZHVsZSh2b2lkKQogewogICAgIHN0cnVjdCBkbG1vZCAgKipwZGxtb2QsICpkbG07CkBAIC0xMTgsNyArNzIsNyBAQAogICAgIHJldHVybiBkbG07CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBkbG1vZF9kZWxldGVfbW9kdWxlKHN0cnVjdCBkbG1vZCAqZGxtKQogewogICAgIHN0cnVjdCBkbG1vZCAgKipwZGxtb2Q7CkBAIC0yMjUsMTQgKzE3OSw5IEBACiAjZW5kaWYKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIGRsbW9kX2xvYWRfbW9kdWxlKHN0cnVjdCBkbG1vZCAqZGxtKQogewotICAgIGNoYXIgICAgICAgICAgICBzeW1faW5pdFs2NF07Ci0gICAgY2hhciAgICAgICAgICAgKnAsIHRtcF9wYXRoWzI1NV07Ci0gICAgZGxfZnVuY3Rpb25fcHRyIGRsX2luaXQ7Ci0gICAgY2hhciAgICAgICAgICAgKnN0OwotCiAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgImRsbW9kX2xvYWRfbW9kdWxlICVzOiAlc1xuIiwgZGxtLT5uYW1lLAogICAgICAgICAgICAgICAgIGRsbS0+cGF0aCkpOwogCkBAIC0yNDksNiArMTk4LDggQEAKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CisgICAgICAgIGNoYXIgKnN0LCAqcCwgdG1wX3BhdGhbMjU1XTsKKwogICAgICAgICBmb3IgKHAgPSBzdHJ0b2tfcihkbG1vZF9wYXRoLCBFTlZfU0VQQVJBVE9SLCAmc3QpOyBwOwogICAgICAgICAgICAgIHAgPSBzdHJ0b2tfcihOVUxMLCBFTlZfU0VQQVJBVE9SLCAmc3QpKSB7CiAgICAgICAgICAgICBzbnByaW50Zih0bXBfcGF0aCwgc2l6ZW9mKHRtcF9wYXRoKSwgIiVzLyVzLiVzIiwgcCwgZGxtLT5wYXRoLApAQCAtMjY1LDI1ICsyMTYsMzAgQEAKICAgICAgICAgaWYgKGRsbS0+c3RhdHVzID09IERMTU9EX0VSUk9SKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzbnByaW50ZihzeW1faW5pdCwgc2l6ZW9mKHN5bV9pbml0KSwgImluaXRfJXMiLCBkbG0tPm5hbWUpOwotICAgIGRsX2luaXQgPSBkbG1vZF9kbHN5bShkbG0tPmhhbmRsZSwgc3ltX2luaXQpOwotICAgIGlmIChkbF9pbml0ID09IE5VTEwpIHsKLSAgICAgICAgZGxtb2RfZGxjbG9zZShkbG0tPmhhbmRsZSk7Ci0gICAgICAgIHNucHJpbnRmKGRsbS0+ZXJyb3IsIHNpemVvZihkbG0tPmVycm9yKSwKLSAgICAgICAgICAgICAgICAgImRsc3ltIGZhaWxlZDogY2FuJ3QgZmluZCBcJyVzXCciLCBzeW1faW5pdCk7Ci0gICAgICAgIGRsbS0+c3RhdHVzID0gRExNT0RfRVJST1I7Ci0gICAgICAgIHJldHVybjsKKyAgICB7CisgICAgICAgIGNoYXIgc3ltX2luaXRbNjQgKyBzaXplb2YoImluaXRfIildOworICAgICAgICBkbF9mdW5jdGlvbl9wdHIgZGxfaW5pdDsKKworICAgICAgICBzbnByaW50ZihzeW1faW5pdCwgc2l6ZW9mKHN5bV9pbml0KSwgImluaXRfJXMiLCBkbG0tPm5hbWUpOworICAgICAgICBkbF9pbml0ID0gZGxtb2RfZGxzeW0oZGxtLT5oYW5kbGUsIHN5bV9pbml0KTsKKyAgICAgICAgaWYgKGRsX2luaXQgPT0gTlVMTCkgeworICAgICAgICAgICAgZGxtb2RfZGxjbG9zZShkbG0tPmhhbmRsZSk7CisgICAgICAgICAgICBzbnByaW50ZihkbG0tPmVycm9yLCBzaXplb2YoZGxtLT5lcnJvciksCisgICAgICAgICAgICAgICAgICAgICAiZGxzeW0gZmFpbGVkOiBjYW4ndCBmaW5kIFwnJXNcJyIsIHN5bV9pbml0KTsKKyAgICAgICAgICAgIGRsbS0+c3RhdHVzID0gRExNT0RfRVJST1I7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGxfaW5pdCgpOwogICAgIH0KIAotICAgIGRsX2luaXQoKTsKICAgICBkbG0tPmVycm9yWzBdID0gJ1wwJzsKICAgICBkbG0tPnN0YXR1cyA9IERMTU9EX0xPQURFRDsKIH0KIAotdm9pZAorc3RhdGljIHZvaWQKIGRsbW9kX3VubG9hZF9tb2R1bGUoc3RydWN0IGRsbW9kICpkbG0pCiB7Ci0gICAgY2hhciAgICAgICAgICAgIHN5bV9kZWluaXRbNjRdOworICAgIGNoYXIgICAgICAgICAgICBzeW1fZGVpbml0WzY0ICsgc2l6ZW9mKCJzaHV0ZG93bl8iKV07CiAgICAgZGxfZnVuY3Rpb25fcHRyIGRsX2RlaW5pdDsKIAogICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzICE9IERMTU9EX0xPQURFRCkKQEAgLTI5MSwyNSArMjQ3LDIyIEBACiAKICAgICBzbnByaW50ZihzeW1fZGVpbml0LCBzaXplb2Yoc3ltX2RlaW5pdCksICJkZWluaXRfJXMiLCBkbG0tPm5hbWUpOwogICAgIGRsX2RlaW5pdCA9IGRsbW9kX2Rsc3ltKGRsbS0+aGFuZGxlLCBzeW1fZGVpbml0KTsKLSAgICBpZiAoZGxfZGVpbml0KSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJDYWxsaW5nIGRlaW5pdF8lcygpXG4iLCBkbG0tPm5hbWUpKTsKLSAgICAgICAgZGxfZGVpbml0KCk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoIWRsX2RlaW5pdCkgewogICAgICAgICBzbnByaW50ZihzeW1fZGVpbml0LCBzaXplb2Yoc3ltX2RlaW5pdCksICJzaHV0ZG93bl8lcyIsIGRsbS0+bmFtZSk7CiAgICAgICAgIGRsX2RlaW5pdCA9IGRsbW9kX2Rsc3ltKGRsbS0+aGFuZGxlLCBzeW1fZGVpbml0KTsKLSAgICAgICAgaWYgKGRsX2RlaW5pdCkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgIkNhbGxpbmcgc2h1dGRvd25fJXMoKVxuIiwgZGxtLT5uYW1lKSk7Ci0gICAgICAgICAgICBkbF9kZWluaXQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJObyBkZXN0cnVjdG9yIGZvciAlc1xuIiwgZGxtLT5uYW1lKSk7Ci0gICAgICAgIH0KKyAgICB9CisgICAgaWYgKGRsX2RlaW5pdCkgeworICAgICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiQ2FsbGluZyAlcygpXG4iLCBzeW1fZGVpbml0KSk7CisgICAgICAgIGRsX2RlaW5pdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJObyBkZXN0cnVjdG9yIGZvciAlc1xuIiwgZGxtLT5uYW1lKSk7CiAgICAgfQogICAgIGRsbW9kX2RsY2xvc2UoZGxtLT5oYW5kbGUpOwogICAgIGRsbS0+c3RhdHVzID0gRExNT0RfVU5MT0FERUQ7CiAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgIk1vZHVsZSAlcyB1bmxvYWRlZFxuIiwgZGxtLT5uYW1lKSk7CiB9CiAKLXN0cnVjdCBkbG1vZCAgICoKK3N0YXRpYyBzdHJ1Y3QgZGxtb2QgICAqCiBkbG1vZF9nZXRfYnlfaW5kZXgoaW50IGlpbmRleCkKIHsKICAgICBzdHJ1Y3QgZGxtb2QgICAqZGxtb2Q7CkBAIC0zMjEsNiArMjc0LDEwIEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBGdW5jdGlvbnMgdG8gcGFyc2UgY29uZmlnIGxpbmVzCisgKi8KKwogc3RhdGljIHZvaWQKIGRsbW9kX3BhcnNlX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKQEAgLTMzMyw3ICsyOTAsNyBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8qCi0gICAgICogcmVtb3ZlIGNvbW1lbnRzIAorICAgICAqIHJlbW92ZSBjb21tZW50cwogICAgICAqLwogICAgICooY3B0ciArIHN0cmNzcG4oY3B0ciwgIiM7XHJcbiIpKSA9ICdcMCc7CiAKQEAgLTM0Miw3ICsyOTksNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICAvKgotICAgICAqIGR5bmFtaWMgbW9kdWxlIG5hbWUgCisgICAgICogZHluYW1pYyBtb2R1bGUgbmFtZQogICAgICAqLwogICAgIGRsbV9uYW1lID0gc3RydG9rX3IoY3B0ciwgIlx0ICIsICZzdCk7CiAgICAgaWYgKGRsbV9uYW1lID09IE5VTEwpIHsKQEAgLTM1Myw3ICszMTAsNyBAQAogICAgIHN0cmxjcHkoZGxtLT5uYW1lLCBkbG1fbmFtZSwgc2l6ZW9mKGRsbS0+bmFtZSkpOwogCiAgICAgLyoKLSAgICAgKiBkeW5hbWljIG1vZHVsZSBwYXRoIAorICAgICAqIGR5bmFtaWMgbW9kdWxlIHBhdGgKICAgICAgKi8KICAgICBkbG1fcGF0aCA9IHN0cnRva19yKE5VTEwsICJcdCAiLCAmc3QpOwogICAgIGlmIChkbG1fcGF0aCkKQEAgLTM4MSwxMyArMzM4LDIzIEBACiAgICAgZGxtb2RzID0gTlVMTDsKIH0KIAorLyoKKyAqIEZ1bmN0aW9ucyB0byBoYW5kbGUgU05NUCBtYW5hZ2VtZW50CisgKi8KKworI2RlZmluZSBETE1PRE5FWFRJTkRFWCAJCTEKKyNkZWZpbmUgRExNT0RJTkRFWCAgICAgCQkyCisjZGVmaW5lIERMTU9ETkFNRSAgICAgIAkJMworI2RlZmluZSBETE1PRFBBVEggICAgICAJCTQKKyNkZWZpbmUgRExNT0RFUlJPUiAgICAgCQk1CisjZGVmaW5lIERMTU9EU1RBVFVTICAgIAkJNgogCiAvKgogICogaGVhZGVyX2RsbW9kKC4uLgogICogQXJndW1lbnRzOgogICogdnAgICAgIElOICAgICAgLSBwb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUKICAqIG5hbWUgICAgSU4vT1VUICAtIElOL25hbWUgcmVxdWVzdGVkLCBPVVQvbmFtZSBmb3VuZAotICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncyAKKyAqIGxlbmd0aCAgSU4vT1VUICAtIGxlbmd0aCBvZiBJTi9PVVQgb2lkJ3MKICAqIGV4YWN0ICAgSU4gICAgICAtIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZAogICogdmFyX2xlbiBPVVQgICAgIC0gbGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQKICAqIHdyaXRlX21ldGhvZApAQCAtNDE5LDcgKzM4Niw3IEBACiB9CiAKIAotdV9jaGFyICAgICAgICAgKgorc3RhdGljIHVfY2hhciAgICAgICAgICoKIHZhcl9kbG1vZChzdHJ1Y3QgdmFyaWFibGUgKiB2cCwKICAgICAgICAgICBvaWQgKiBuYW1lLAogICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKQEAgLTQyNyw3ICszOTQsNyBAQAogewogCiAgICAgLyoKLSAgICAgKiB2YXJpYWJsZXMgd2UgbWF5IHVzZSBsYXRlciAKKyAgICAgKiB2YXJpYWJsZXMgd2UgbWF5IHVzZSBsYXRlcgogICAgICAqLwogCiAgICAgKndyaXRlX21ldGhvZCA9IDA7ICAgICAgICAgLyogYXNzdW1lIGl0IGlzbid0IHdyaXRhYmxlIGZvciB0aGUgdGltZSBiZWluZyAqLwpAQCAtNDM4LDcgKzQwNSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKLSAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLiAKKyAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLgogICAgICAqLwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBETE1PRE5FWFRJTkRFWDoKQEAgLTQ1MiwxNiArNDE5LDEyNyBAQAogfQogCiAKK3N0YXRpYyBpbnQKK3dyaXRlX2RsbW9kTmFtZShpbnQgYWN0aW9uLAorICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCisgICAgICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKKyAgICAgICAgICAgICAgICBzaXplX3QgdmFyX3ZhbF9sZW4sCisgICAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKK3sKKyAgICBzdGF0aWMgc3RydWN0IGRsbW9kICpkbG07CisKKyAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9PQ1RFVF9TVFIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kTmFtZSBub3QgQVNOX09DVEVUX1NUUlxuIik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7CisgICAgfQorICAgIGlmICh2YXJfdmFsX2xlbiA+IHNpemVvZihkbG0tPm5hbWUpLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kTmFtZTogYmFkIGxlbmd0aDogdG9vIGxvbmdcbiIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7CisgICAgfQorICAgIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CisgICAgICAgIGRsbSA9IGRsbW9kX2dldF9ieV9pbmRleChuYW1lWzEyXSk7CisgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworICAgICAgICBzdHJuY3B5KGRsbS0+bmFtZSwgKGNvbnN0IGNoYXIgKikgdmFyX3ZhbCwgdmFyX3ZhbF9sZW4pOworICAgICAgICBkbG0tPm5hbWVbdmFyX3ZhbF9sZW5dID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKK3N0YXRpYyBpbnQKK3dyaXRlX2RsbW9kUGF0aChpbnQgYWN0aW9uLAorICAgICAgICAgICAgICAgIHVfY2hhciAqIHZhcl92YWwsCisgICAgICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKKyAgICAgICAgICAgICAgICBzaXplX3QgdmFyX3ZhbF9sZW4sCisgICAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKK3sKKyAgICBzdGF0aWMgc3RydWN0IGRsbW9kICpkbG07CisKKyAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9PQ1RFVF9TVFIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kUGF0aCBub3QgQVNOX09DVEVUX1NUUlxuIik7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7CisgICAgfQorICAgIGlmICh2YXJfdmFsX2xlbiA+IHNpemVvZihkbG0tPnBhdGgpLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kUGF0aDogYmFkIGxlbmd0aDogdG9vIGxvbmdcbiIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7CisgICAgfQorICAgIGlmIChhY3Rpb24gPT0gQ09NTUlUKSB7CisgICAgICAgIGRsbSA9IGRsbW9kX2dldF9ieV9pbmRleChuYW1lWzEyXSk7CisgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworICAgICAgICBzdHJuY3B5KGRsbS0+cGF0aCwgKGNvbnN0IGNoYXIgKikgdmFyX3ZhbCwgdmFyX3ZhbF9sZW4pOworICAgICAgICBkbG0tPnBhdGhbdmFyX3ZhbF9sZW5dID0gMDsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKK3N0YXRpYyBpbnQKK3dyaXRlX2RsbW9kU3RhdHVzKGludCBhY3Rpb24sCisgICAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAorICAgICAgICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKKyAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKKyAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCit7CisgICAgLyoKKyAgICAgKiB2YXJpYWJsZXMgd2UgbWF5IHVzZSBsYXRlcgorICAgICAqLworICAgIHN0cnVjdCBkbG1vZCAgICpkbG07CisKKyAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9JTlRFR0VSKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZFN0YXR1cyBub3QgQVNOX0lOVEVHRVJcbiIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOworICAgIH0KKyAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2YobG9uZykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kU3RhdHVzOiBiYWQgbGVuZ3RoXG4iKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOworICAgIH0KKyAgICBpZiAoYWN0aW9uID09IENPTU1JVCkgeworICAgICAgICAvKgorICAgICAgICAgKiBvYmplY3QgaWRlbnRpZmllciBpbiBmb3JtIC4xLjMuNi4xLjQuMS4yMDIxLjEzLjE0LjIuMS40LngKKyAgICAgICAgICogd2hlcmUgWCBpcyBpbmRleCB3aXRoIG9mZnNldCAxMgorICAgICAgICAgKi8KKworICAgICAgICBkbG0gPSBkbG1vZF9nZXRfYnlfaW5kZXgobmFtZVsxMl0pOworICAgICAgICBzd2l0Y2ggKCooKGxvbmcgKikgdmFyX3ZhbCkpIHsKKyAgICAgICAgY2FzZSBETE1PRF9DUkVBVEU6CisgICAgICAgICAgICBpZiAoZGxtIHx8IChuYW1lWzEyXSAhPSBkbG1vZF9uZXh0X2luZGV4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICAgICAgICAgIGRsbSA9IGRsbW9kX2NyZWF0ZV9tb2R1bGUoKTsKKyAgICAgICAgICAgIGlmICghZGxtKQorICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRExNT0RfTE9BRDoKKyAgICAgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKKyAgICAgICAgICAgIGRsbW9kX2xvYWRfbW9kdWxlKGRsbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBETE1PRF9VTkxPQUQ6CisgICAgICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyAhPSBETE1PRF9MT0FERUQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgICAgICAgICBkbG1vZF91bmxvYWRfbW9kdWxlKGRsbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBETE1PRF9ERUxFVEU6CisgICAgICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyA9PSBETE1PRF9MT0FERUQpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgICAgICAgICBkbG1vZF9kZWxldGVfbW9kdWxlKGRsbSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCiAvKgogICogaGVhZGVyX2RsbW9kRW50cnkoLi4uCiAgKiBBcmd1bWVudHM6CiAgKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQogICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCi0gKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzIAorICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncwogICogZXhhY3QgICBJTiAgICAgIC0gVFJVRSBpZiBhbiBleGFjdCBtYXRjaCB3YXMgcmVxdWVzdGVkCiAgKiB2YXJfbGVuIE9VVCAgICAgLSBsZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZAogICogd3JpdGVfbWV0aG9kCi0gKiAKKyAqCiAgKi8KIAogCkBAIC01MDksMTQgKzU4NywxNCBAQAogICAgIHJldHVybiBkbG07CiB9CiAKLXVfY2hhciAgICAgICAgICoKK3N0YXRpYyB1X2NoYXIgICAgICAgICAqCiB2YXJfZGxtb2RFbnRyeShzdHJ1Y3QgdmFyaWFibGUgKiB2cCwKICAgICAgICAgICAgICAgIG9pZCAqIG5hbWUsCiAgICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCiAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKIHsKICAgICAvKgotICAgICAqIHZhcmlhYmxlcyB3ZSBtYXkgdXNlIGxhdGVyIAorICAgICAqIHZhcmlhYmxlcyB3ZSBtYXkgdXNlIGxhdGVyCiAgICAgICovCiAgICAgc3RydWN0IGRsbW9kICAgKmRsbTsKIApAQCAtNTI4LDcgKzYwNiw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKLSAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLiAKKyAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLgogICAgICAqLwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBETE1PRE5BTUU6CkBAIC01NTMsMTEzICs2MzEsNjYgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotaW50Ci13cml0ZV9kbG1vZE5hbWUoaW50IGFjdGlvbiwKLSAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAotICAgICAgICAgICAgICAgIHVfY2hhciB2YXJfdmFsX3R5cGUsCi0gICAgICAgICAgICAgICAgc2l6ZV90IHZhcl92YWxfbGVuLAotICAgICAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCisvKgorICogdGhpcyB2YXJpYWJsZSBkZWZpbmVzIGZ1bmN0aW9uIGNhbGxiYWNrcyBhbmQgdHlwZSByZXR1cm4KKyAqIGluZm9ybWF0aW9uIGZvciB0aGUgZGxtb2QgbWliCisgKi8KK3N0YXRpYyBzdHJ1Y3QgdmFyaWFibGU0IGRsbW9kX3ZhcmlhYmxlc1tdID0geworICAgIHtETE1PRE5FWFRJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZGxtb2QsIDEsIHsxfX0sCisgICAge0RMTU9ETkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDJ9fSwKKyAgICB7RExNT0RQQVRILCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgM319LAorICAgIHtETE1PREVSUk9SLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA0fX0sCisgICAge0RMTU9EU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDV9fSwKK307CisKK3N0YXRpYyBvaWQgZGxtb2RfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCAyMDIxLCAxMywgMTQgfTsKKwordm9pZAoraW5pdF9kbG1vZCh2b2lkKQogewotICAgIHN0YXRpYyBzdHJ1Y3QgZGxtb2QgKmRsbTsKKyAgICBSRUdJU1RFUl9NSUIoImRsbW9kIiwgZGxtb2RfdmFyaWFibGVzLCB2YXJpYWJsZTQsIGRsbW9kX3ZhcmlhYmxlc19vaWQpOwogCi0gICAgaWYgKHZhcl92YWxfdHlwZSAhPSBBU05fT0NURVRfU1RSKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZE5hbWUgbm90IEFTTl9PQ1RFVF9TVFJcbiIpOwotICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOwotICAgIH0KLSAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2YoZGxtLT5uYW1lKS0xKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZE5hbWU6IGJhZCBsZW5ndGg6IHRvbyBsb25nXG4iKTsKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOwotICAgIH0KLSAgICBpZiAoYWN0aW9uID09IENPTU1JVCkgewotICAgICAgICBkbG0gPSBkbG1vZF9nZXRfYnlfaW5kZXgobmFtZVsxMl0pOwotICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyA9PSBETE1PRF9MT0FERUQpCi0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKLSAgICAgICAgbWVtY3B5KGRsbS0+bmFtZSwgdmFyX3ZhbCwgdmFyX3ZhbF9sZW4pOwotICAgICAgICBkbG0tPm5hbWVbdmFyX3ZhbF9sZW5dID0gMDsKLSAgICB9Ci0gICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci19Ci0KLWludAotd3JpdGVfZGxtb2RQYXRoKGludCBhY3Rpb24sCi0gICAgICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKLSAgICAgICAgICAgICAgICB1X2NoYXIgdmFyX3ZhbF90eXBlLAotICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKLSAgICAgICAgICAgICAgICB1X2NoYXIgKiBzdGF0UCwgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuKQotewotICAgIHN0YXRpYyBzdHJ1Y3QgZGxtb2QgKmRsbTsKLQotICAgIGlmICh2YXJfdmFsX3R5cGUgIT0gQVNOX09DVEVUX1NUUikgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2RQYXRoIG5vdCBBU05fT0NURVRfU1RSXG4iKTsKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKLSAgICB9Ci0gICAgaWYgKHZhcl92YWxfbGVuID4gc2l6ZW9mKGRsbS0+cGF0aCktMSkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAid3JpdGUgdG8gZGxtb2RQYXRoOiBiYWQgbGVuZ3RoOiB0b28gbG9uZ1xuIik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKLSAgICB9Ci0gICAgaWYgKGFjdGlvbiA9PSBDT01NSVQpIHsKLSAgICAgICAgZGxtID0gZGxtb2RfZ2V0X2J5X2luZGV4KG5hbWVbMTJdKTsKLSAgICAgICAgaWYgKCFkbG0gfHwgZGxtLT5zdGF0dXMgPT0gRExNT0RfTE9BREVEKQotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7Ci0gICAgICAgIG1lbWNweShkbG0tPnBhdGgsIHZhcl92YWwsIHZhcl92YWxfbGVuKTsKLSAgICAgICAgZGxtLT5wYXRoW3Zhcl92YWxfbGVuXSA9IDA7Ci0gICAgfQotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi1pbnQKLXdyaXRlX2RsbW9kU3RhdHVzKGludCBhY3Rpb24sCi0gICAgICAgICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAotICAgICAgICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKLSAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKLSAgICAgICAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCi17CiAgICAgLyoKLSAgICAgKiB2YXJpYWJsZXMgd2UgbWF5IHVzZSBsYXRlciAKKyAgICAgKiBUT0RPOiBSRUdJU1RFUl9TWVNPUl9FTlRSWQogICAgICAqLwotICAgIHN0cnVjdCBkbG1vZCAgICpkbG07CiAKLSAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9JTlRFR0VSKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ3cml0ZSB0byBkbG1vZFN0YXR1cyBub3QgQVNOX0lOVEVHRVJcbiIpOwotICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOwotICAgIH0KLSAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2YobG9uZykpIHsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIndyaXRlIHRvIGRsbW9kU3RhdHVzOiBiYWQgbGVuZ3RoXG4iKTsKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOwotICAgIH0KLSAgICBpZiAoYWN0aW9uID09IENPTU1JVCkgewotICAgICAgICAvKgotICAgICAgICAgKiBvYmplY3QgaWRlbnRpZmllciBpbiBmb3JtIC4xLjMuNi4xLjQuMS4yMDIxLjEzLjE0LjIuMS40LnggCi0gICAgICAgICAqIHdoZXJlIFggaXMgaW5kZXggd2l0aCBvZmZzZXQgMTIgCi0gICAgICAgICAqLworICAgIERFQlVHTVNHVEwoKCJkbG1vZCIsICJyZWdpc3RlciBtaWJcbiIpKTsKIAotICAgICAgICBkbG0gPSBkbG1vZF9nZXRfYnlfaW5kZXgobmFtZVsxMl0pOwotICAgICAgICBzd2l0Y2ggKCooKGxvbmcgKikgdmFyX3ZhbCkpIHsKLSAgICAgICAgY2FzZSBETE1PRF9DUkVBVEU6Ci0gICAgICAgICAgICBpZiAoZGxtIHx8IChuYW1lWzEyXSAhPSBkbG1vZF9uZXh0X2luZGV4KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKLSAgICAgICAgICAgIGRsbSA9IGRsbW9kX2NyZWF0ZV9tb2R1bGUoKTsKLSAgICAgICAgICAgIGlmICghZGxtKQotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRExNT0RfTE9BRDoKLSAgICAgICAgICAgIGlmICghZGxtIHx8IGRsbS0+c3RhdHVzID09IERMTU9EX0xPQURFRCkKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRTsKLSAgICAgICAgICAgIGRsbW9kX2xvYWRfbW9kdWxlKGRsbSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBETE1PRF9VTkxPQUQ6Ci0gICAgICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyAhPSBETE1PRF9MT0FERUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7Ci0gICAgICAgICAgICBkbG1vZF91bmxvYWRfbW9kdWxlKGRsbSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBETE1PRF9ERUxFVEU6Ci0gICAgICAgICAgICBpZiAoIWRsbSB8fCBkbG0tPnN0YXR1cyA9PSBETE1PRF9MT0FERUQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7Ci0gICAgICAgICAgICBkbG1vZF9kZWxldGVfbW9kdWxlKGRsbSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJkbG1vZCIsIGRsbW9kX3BhcnNlX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbG1vZF9mcmVlX2NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW9kdWxlLW5hbWUgbW9kdWxlLXBhdGgiKTsKKworICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqIGNvbnN0IHAgPSBnZXRlbnYoIlNOTVBETE1PRFBBVEgiKTsKKyAgICAgICAgc3RybmNweShkbG1vZF9wYXRoLCBTTk1QRExNT0RQQVRILCBzaXplb2YoZGxtb2RfcGF0aCkpOworICAgICAgICBkbG1vZF9wYXRoWyBzaXplb2YoZGxtb2RfcGF0aCkgLSAxIF0gPSAwOworICAgICAgICBpZiAocCkgeworICAgICAgICAgICAgaWYgKHBbMF0gPT0gJzonKSB7CisgICAgICAgICAgICAgICAgaW50IGxlbiA9IHN0cmxlbihkbG1vZF9wYXRoKTsKKyAgICAgICAgICAgICAgICBpZiAoZGxtb2RfcGF0aFtsZW4gLSAxXSAhPSAnOicpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RybmNhdChkbG1vZF9wYXRoLCAiOiIsIHNpemVvZihkbG1vZF9wYXRoKSAtIGxlbiAtIDEpOworICAgICAgICAgICAgICAgICAgICBsZW4rKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RybmNhdChkbG1vZF9wYXRoLCBwICsgMSwgICBzaXplb2YoZGxtb2RfcGF0aCkgLSBsZW4pOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgc3RybmNweShkbG1vZF9wYXRoLCBwLCBzaXplb2YoZGxtb2RfcGF0aCkpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgZGxtb2RfcGF0aFsgc2l6ZW9mKGRsbW9kX3BhdGgpLTEgXSA9IDA7CisgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgImRsbW9kX3BhdGg6ICVzXG4iLCBkbG1vZF9wYXRoKSk7Cit9CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNubXBkX3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIpCisKK3ZvaWQKK3NodXRkb3duX2RsbW9kKHZvaWQpCit7CisgICAgc25tcGRfdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiZGxtb2QiKTsKKyAgICB1bnJlZ2lzdGVyX21pYihkbG1vZF92YXJpYWJsZXNfb2lkLCBPSURfTEVOR1RIKGRsbW9kX3ZhcmlhYmxlc19vaWQpKTsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oCmluZGV4IDRmYmZiOWUuLjk1OTJiZGQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaApAQCAtMyw2MSArMywxNiBAQAogICoKICAqLwogCi0jaWZuZGVmIF9NSUJHUk9VUF9ETE1PRF9ICi0jZGVmaW5lIF9NSUJHUk9VUF9ETE1PRF9ICisjaWZuZGVmIE1JQkdST1VQX0RMTU9EX0gKKyNkZWZpbmUgTUlCR1JPVVBfRExNT0RfSAogCi0vKgotICogVE9ETyAjaW5jbHVkZSAibWliZGVmcy5oIgotICovCiAjaWYgKCFkZWZpbmVkKEhBVkVfRExGQ05fSCkgfHwgIWRlZmluZWQoSEFWRV9ETE9QRU4pKSAmJiAhZGVmaW5lZChXSU4zMikKIGNvbmZpZ19lcnJvcihEeW5hbWljIG1vZHVsZXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtKQogI2VuZGlmCiAKIGNvbmZpZ19hZGRfbWliKFVDRC1ETE1PRC1NSUIpCi0jaWZuZGVmIFNOTVBETE1PRFBBVEgKLSNkZWZpbmUgU05NUERMTU9EUEFUSCAiL3Vzci9sb2NhbC9saWIvc25tcC9kbG1vZCIKLSNlbmRpZgotICAgICBzdHJ1Y3QgZGxtb2QgewotICAgICAgICAgc3RydWN0IGRsbW9kICAgKm5leHQ7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgaW5kZXg7Ci0gICAgICAgICBjaGFyICAgICAgICAgICAgbmFtZVs2NCArIDFdOwotICAgICAgICAgY2hhciAgICAgICAgICAgIHBhdGhbMjU1ICsgMV07Ci0gICAgICAgICBjaGFyICAgICAgICAgICAgZXJyb3JbMjU1ICsgMV07Ci0gICAgICAgICB2b2lkICAgICAgICAgICAqaGFuZGxlOwotICAgICAgICAgaW50ICAgICAgICAgICAgIHN0YXR1czsKLSAgICAgfTsKIAotICAgICB2b2lkICAgICAgICAgICAgZGxtb2RfbG9hZF9tb2R1bGUoc3RydWN0IGRsbW9kICopOwotICAgICB2b2lkICAgICAgICAgICAgZGxtb2RfdW5sb2FkX21vZHVsZShzdHJ1Y3QgZGxtb2QgKik7Ci0gICAgIHN0cnVjdCBkbG1vZCAgICpkbG1vZF9jcmVhdGVfbW9kdWxlKHZvaWQpOwotICAgICB2b2lkICAgICAgICAgICAgZGxtb2RfZGVsZXRlX21vZHVsZShzdHJ1Y3QgZGxtb2QgKik7Ci0gICAgIHN0cnVjdCBkbG1vZCAgICpkbG1vZF9nZXRfYnlfaW5kZXgoaW50KTsKK3ZvaWQgaW5pdF9kbG1vZCh2b2lkKTsKK3ZvaWQgc2h1dGRvd25fZGxtb2Qodm9pZCk7CiAKLSAgICAgdm9pZCAgICAgICAgICAgIGRsbW9kX2luaXQodm9pZCk7Ci0gICAgIHZvaWQgICAgICAgICAgICBkbG1vZF9kZWluaXQodm9pZCk7Ci0KLSAgICAgZXh0ZXJuIHZvaWQgICAgIGluaXRfZGxtb2Qodm9pZCk7Ci0gICAgIGV4dGVybiB2b2lkICAgICBkZWluaXRfZGxtb2Qodm9pZCk7Ci0KLSAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2RsbW9kOwotICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfZGxtb2RFbnRyeTsKLSAgICAgZXh0ZXJuIFdyaXRlTWV0aG9kIHdyaXRlX2RsbW9kTmFtZTsKLSAgICAgZXh0ZXJuIFdyaXRlTWV0aG9kIHdyaXRlX2RsbW9kUGF0aDsKLSAgICAgZXh0ZXJuIFdyaXRlTWV0aG9kIHdyaXRlX2RsbW9kU3RhdHVzOwotCi0jZGVmaW5lIERMTU9ETkVYVElOREVYIAkJMQotI2RlZmluZSBETE1PRElOREVYICAgICAJCTIKLSNkZWZpbmUgRExNT0ROQU1FICAgICAgCQkzCi0jZGVmaW5lIERMTU9EUEFUSCAgICAgIAkJNAotI2RlZmluZSBETE1PREVSUk9SICAgICAJCTUKLSNkZWZpbmUgRExNT0RTVEFUVVMgICAgCQk2Ci0KLSNkZWZpbmUgRExNT0RfTE9BREVECQkxCi0jZGVmaW5lIERMTU9EX1VOTE9BREVECQkyCi0jZGVmaW5lIERMTU9EX0VSUk9SCQkzCi0jZGVmaW5lIERMTU9EX0xPQUQJCTQKLSNkZWZpbmUJRExNT0RfVU5MT0FECQk1Ci0jZGVmaW5lIERMTU9EX0NSRUFURQkJNgotI2RlZmluZSBETE1PRF9ERUxFVEUJCTcKLQotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfRExNT0RfSCAqLworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNSUJHUk9VUF9ETE1PRF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMKaW5kZXggMzdhNWVlYi4uMTRiMDg0YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtMTA5LDYgKzExMCw5IEBACiAjaW5jbHVkZSAidXRpbGl0aWVzL2V4ZWN1dGUuaCIKICNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZ2V0X2V4dGVuX2luc3RhbmNlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocGFyc2VfbWlib2lkKQorCiBleHRlcm4gc3RydWN0IG15cHJvYyAqcHJvY3dhdGNoOyAgICAgICAgLyogbW92ZWQgdG8gcHJvYy5jICovCiBleHRlcm4gaW50ICAgICAgbnVtcHJvY3M7ICAgICAgIC8qIGRpdHRvICovCiBleHRlcm4gc3RydWN0IGV4dGVuc2libGUgKmV4dGVuczsgICAgICAgLyogSW4gZXhlYy5jICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jCmluZGV4IDYwNWVlMTYuLjA1YzYwYjcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jCkBAIC02Niw2ICs2Niw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC03Niw2ICs3Nyw5IEBACiAjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgiCiAjaW5jbHVkZSA8dGltZS5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh0YWJsZV9jb250YWluZXIpCisKKwogLyoKICAqIExvYWQgcmVxdWlyZWQgZHJpdmVycyBhbmQgbGlicmFyaWVzLgogICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5jCmluZGV4IDVhNTA2OTcuLjI1NTc3OTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5jCkBAIC04Myw3ICs4Myw3IEBACiAgICAgICogUmVnaXN0ZXIgdGhlIHRhYmxlIHVzaW5nIHRoZSBmaWx0ZXJlZCBjb250YWluZXIKICAgICAgKiBJbmNsdWRlIGFuIGluZGljYXRvciBvZiBhbnkgc2NhbGluZyB0byBiZSBhcHBsaWVkIHRvIHRoZSBzZW5zb3IgdmFsdWUKICAgICAgKi8KLSAgICByZWctPm15X3JlZ192b2lkID0gKHZvaWQgKiltdWx0OworICAgIHJlZy0+bXlfcmVnX3ZvaWQgPSAodm9pZCAqKSh1aW50cHRyX3QpbXVsdDsKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRiggbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyApOwogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sIEFTTl9JTlRFR0VSLCAwKTsKICAgICB0YWJsZV9pbmZvLT5taW5fY29sdW1uID0gQ09MVU1OX0xNU0VOU09SU19JTkRFWDsKQEAgLTE1NCw3ICsxNTQsNyBAQAogICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICpyZXF1ZXN0OwogICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfc2Vuc29yX2luZm8gICAgICAgICpzZW5zb3JfaW5mbzsKLSAgICBpbnQgbXVsdCAgPSAoaW50KXJlZ2luZm8tPm15X3JlZ192b2lkOworICAgIGludCBtdWx0ICA9ICh1aW50cHRyX3QpcmVnaW5mby0+bXlfcmVnX3ZvaWQ7CiAKICAgICBERUJVR01TR1RMKCggInVjZC1zbm1wL2xtc2Vuc29yc01pYiIsImxtU2Vuc29yc1RhYmxlc19oYW5kbGVyIC0gcm9vdDogIikpOwogICAgIERFQlVHTVNHT0lEKCgidWNkLXNubXAvbG1zZW5zb3JzTWliIiwgcmVnaW5mby0+cm9vdG9pZCwgcmVnaW5mby0+cm9vdG9pZF9sZW4pKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYwppbmRleCA2ZWZjNWU5Li4zMTc4MzMwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jCkBAIC0yNTgsMTIgKzI1OCw2IEBACiBpbnQKIHRyeV9nZXRsb2FkYXZnKGRvdWJsZSAqcl9hdmUsIHNpemVfdCBzX2F2ZSkKIHsKLSNpZiBkZWZpbmVkKEhBVkVfR0VUTE9BREFWRykgfHwgZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZCh1bHRyaXgpIFwKLSAgICB8fCBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX2FscGhhKSB8fCBkZWZpbmVkKGR5bml4KSBcCi0gICAgfHwgIWRlZmluZWQoY3lnd2luKSAmJiBkZWZpbmVkKE5FVFNOTVBfQ0FOX1VTRV9OTElTVCkgXAotICAgICAgICYmIGRlZmluZWQoTE9BREFWRV9TWU1CT0wpCi0gICAgZG91YmxlICAgICAgICAgKnBhdmUgPSByX2F2ZTsKLSNlbmRpZgogI2lmbmRlZiBIQVZFX0dFVExPQURBVkcKICNpZmRlZiBIQVZFX1NZU19GSVhQT0lOVF9ICiAgICAgZml4ICAgICAgICAgICAgIGZhdmVucnVuWzNdOwpAQCAtMjc4LDcgKzI3Miw2IEBACiAjZW5kaWYKICNlbmRpZgogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpIHx8IGRlZmluZWQoYWl4NykKLSAgICBpbnQgICAgICAgICAgICAgZmF2ZW5ydW5bM107CiAgICAgcGVyZnN0YXRfY3B1X3RvdGFsX3QgY3M7CiAjZW5kaWYKICNpZiBkZWZpbmVkKGhwdXgxMCkgfHwgZGVmaW5lZChocHV4MTEpCkBAIC0yOTEsNyArMjg0LDcgQEAKICNlbmRpZgkvKiAhSEFWRV9HRVRMT0FEQVZHICovCiAKICNpZmRlZiBIQVZFX0dFVExPQURBVkcKLSAgICBpZiAoZ2V0bG9hZGF2ZyhwYXZlLCBzX2F2ZSkgPT0gLTEpCisgICAgaWYgKGdldGxvYWRhdmcocl9hdmUsIHNfYXZlKSA9PSAtMSkKICAgICAgICAgcmV0dXJuICgtMSk7CiAjZWxpZiBkZWZpbmVkKGxpbnV4KQogICAgIHsKQEAgLTMwMCw3ICsyOTMsNyBAQAogICAgICAgICAgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAic25tcGQ6IGNhbm5vdCBvcGVuIC9wcm9jL2xvYWRhdmdcbiIpKTsKICAgICAgICAgICAgIHJldHVybiAoLTEpOwogICAgICAgICB9Ci0gICAgICAgIGZzY2FuZihpbiwgIiVsZiAlbGYgJWxmIiwgcGF2ZSwgKHBhdmUgKyAxKSwgKHBhdmUgKyAyKSk7CisgICAgICAgIGZzY2FuZihpbiwgIiVsZiAlbGYgJWxmIiwgcl9hdmUsIChyX2F2ZSArIDEpLCAocl9hdmUgKyAyKSk7CiAgICAgICAgIGZjbG9zZShpbik7CiAgICAgfQogI2VsaWYgKGRlZmluZWQodWx0cml4KSB8fCBkZWZpbmVkKHN1bikgfHwgZGVmaW5lZChfX2FscGhhKSB8fCBkZWZpbmVkKGR5bml4KSkKQEAgLTMwOCw3ICszMDEsNyBAQAogICAgICAgICAwKQogICAgICAgICByZXR1cm4gKC0xKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgc19hdmU7IGkrKykKLSAgICAgICAgKihwYXZlICsgaSkgPSBGSVhfVE9fREJMKGZhdmVucnVuW2ldKTsKKyAgICAgICAgKihyX2F2ZSArIGkpID0gRklYX1RPX0RCTChmYXZlbnJ1bltpXSk7CiAjZWxpZiBkZWZpbmVkKGhwdXgxMCkgfHwgZGVmaW5lZChocHV4MTEpCiAgICAgaWYgKHBzdGF0X2dldGR5bmFtaWMoJnBzdF9idWYsIHNpemVvZihzdHJ1Y3QgcHN0X2R5bmFtaWMpLCAxLCAwKSA8IDApCiAgICAgICAgIHJldHVybigtMSk7CkBAIC0zMzAsNyArMzIzLDcgQEAKICAgICBERUJVR01TR1RMKCgidWNkLXNubXAvbG9hZGF2ZSIsICJpcml4NjogJWQgJWQgJWRcbiIsIGZhdmVucnVuWzBdLCBmYXZlbnJ1blsxXSwgZmF2ZW5ydW5bMl0pKTsKICNlbGlmICFkZWZpbmVkKGN5Z3dpbikKICNpZiBkZWZpbmVkKE5FVFNOTVBfQ0FOX1VTRV9OTElTVCkgJiYgZGVmaW5lZChMT0FEQVZFX1NZTUJPTCkKLSAgICBpZiAoYXV0b19ubGlzdChMT0FEQVZFX1NZTUJPTCwgKGNoYXIgKikgcGF2ZSwgc2l6ZW9mKGRvdWJsZSkgKiBzX2F2ZSkKKyAgICBpZiAoYXV0b19ubGlzdChMT0FEQVZFX1NZTUJPTCwgKGNoYXIgKikgcl9hdmUsIHNpemVvZihkb3VibGUpICogc19hdmUpCiAgICAgICAgID09IDApCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICgtMSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMKaW5kZXggOThlYWNiYi4uOGQ2MDJjMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtMzYsNiArMzcsOSBAQAogI2luY2x1ZGUgImV4dGVuc2libGUuaCIKICNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGdldF9leHRlbl9pbnN0YW5jZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHBhcnNlX21pYm9pZCkKKwogc3RydWN0IGV4dGVuc2libGUgKnBhc3N0aHJ1cyA9IE5VTEw7CiBpbnQgICAgICAgICAgICAgbnVtcGFzc3RocnVzID0gMDsKIApAQCAtMTEzLDYgKzExNyw3IEBACiAgICAgaWYgKCpwcGFzcyA9PSBOVUxMKQogICAgICAgICByZXR1cm47CiAgICAgKCpwcGFzcyktPnR5cGUgPSBQQVNTVEhSVTsKKyAgICAoKnBwYXNzKS0+bWlicHJpb3JpdHkgPSBwcmlvcml0eTsKIAogICAgICgqcHBhc3MpLT5taWJsZW4gPSBwYXJzZV9taWJvaWQoY3B0ciwgKCpwcGFzcyktPm1pYm9pZCk7CiAgICAgd2hpbGUgKGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpKCpjcHRyKSkgfHwgKmNwdHIgPT0gJy4nKQpAQCAtMTMyLDkgKzEzNywxMCBAQAogICAgIHN0cmxjcHkoKCpwcGFzcyktPm5hbWUsICgqcHBhc3MpLT5jb21tYW5kLCBzaXplb2YoKCpwcGFzcyktPm5hbWUpKTsKICAgICAoKnBwYXNzKS0+bmV4dCA9IE5VTEw7CiAKLSAgICByZWdpc3Rlcl9taWJfcHJpb3JpdHkoInBhc3MiLCAoc3RydWN0IHZhcmlhYmxlICopIGV4dGVuc2libGVfcGFzc3RocnVfdmFyaWFibGVzLAotCQkJICBzaXplb2Yoc3RydWN0IHZhcmlhYmxlMiksCi0JCQkgIDEsICgqcHBhc3MpLT5taWJvaWQsICgqcHBhc3MpLT5taWJsZW4sIHByaW9yaXR5KTsKKyAgICByZWdpc3Rlcl9taWJfcHJpb3JpdHkoInBhc3MiLAorICAgICAgICAgICAgICAgICAoc3RydWN0IHZhcmlhYmxlICopIGV4dGVuc2libGVfcGFzc3RocnVfdmFyaWFibGVzLAorICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZhcmlhYmxlMiksIDEsICgqcHBhc3MpLT5taWJvaWQsCisgICAgICAgICAgICAgICAgICgqcHBhc3MpLT5taWJsZW4sICgqcHBhc3MpLT5taWJwcmlvcml0eSk7CiAKICAgICAvKgogICAgICAqIGFyZ2dnZyAtLSBwYXNzdGhydXMgbXVzdCBiZSBzb3J0ZWQgCkBAIC0xNzAsNyArMTc2LDcgQEAKICAgICBmb3IgKGV0bXAgPSBwYXNzdGhydXM7IGV0bXAgIT0gTlVMTDspIHsKICAgICAgICAgZXRtcDIgPSBldG1wOwogICAgICAgICBldG1wID0gZXRtcC0+bmV4dDsKLSAgICAgICAgdW5yZWdpc3Rlcl9taWIoZXRtcDItPm1pYm9pZCwgZXRtcDItPm1pYmxlbik7CisgICAgICAgIHVucmVnaXN0ZXJfbWliX3ByaW9yaXR5KGV0bXAyLT5taWJvaWQsIGV0bXAyLT5taWJsZW4sIGV0bXAyLT5taWJwcmlvcml0eSk7CiAgICAgICAgIGZyZWUoZXRtcDIpOwogICAgIH0KICAgICBwYXNzdGhydXMgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYwppbmRleCBiZDliNjAzLi44NDY3ZTE5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWYgSEFWRV9JT19ICiAjaW5jbHVkZSA8aW8uaD4KQEAgLTQxLDEyICs0MiwxNSBAQAogI2luY2x1ZGUgImV4dGVuc2libGUuaCIKICNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGdldF9leHRlbl9pbnN0YW5jZSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHBhcnNlX21pYm9pZCkKKwogc3RydWN0IGV4dGVuc2libGUgKnBlcnNpc3RwYXNzdGhydXMgPSBOVUxMOwogaW50ICAgICAgICAgICAgIG51bXBlcnNpc3RwYXNzdGhydXMgPSAwOwogc3RydWN0IHBlcnNpc3RfcGlwZV90eXBlIHsKICAgICBGSUxFICAgICAgICAgICAqZkluLCAqZk91dDsKICAgICBpbnQgICAgICAgICAgICAgZmRJbiwgZmRPdXQ7Ci0gICAgaW50ICAgICAgICAgICAgIHBpZDsKKyAgICBuZXRzbm1wX3BpZF90ICAgcGlkOwogfSAgICAgICAgICAgICAgKnBlcnNpc3RfcGlwZXMgPSAoc3RydWN0IHBlcnNpc3RfcGlwZV90eXBlICopIE5VTEw7CiBzdGF0aWMgdW5zaWduZWQgcGlwZV9jaGVja19hbGFybV9pZDsKIHN0YXRpYyBpbnQgICAgICBpbml0X3BlcnNpc3RfcGlwZXModm9pZCk7CkBAIC0xNDMsNiArMTQ3LDcgQEAKICAgICBpZiAoKnBwYXNzID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKICAgICAoKnBwYXNzKS0+dHlwZSA9IFBBU1NUSFJVX1BFUlNJU1Q7CisgICAgKCpwcGFzcyktPm1pYnByaW9yaXR5ID0gcHJpb3JpdHk7CiAKICAgICAoKnBwYXNzKS0+bWlibGVuID0gcGFyc2VfbWlib2lkKGNwdHIsICgqcHBhc3MpLT5taWJvaWQpOwogICAgIHdoaWxlIChpc2RpZ2l0KCh1bnNpZ25lZCBjaGFyKSgqY3B0cikpIHx8ICpjcHRyID09ICcuJykKQEAgLTE2NSw3ICsxNzAsNyBAQAogICAgIHJlZ2lzdGVyX21pYl9wcmlvcml0eSgicGFzc19wZXJzaXN0IiwKICAgICAgICAgICAgICAgICAgKHN0cnVjdCB2YXJpYWJsZSAqKSBleHRlbnNpYmxlX3BlcnNpc3RfcGFzc3RocnVfdmFyaWFibGVzLAogICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZhcmlhYmxlMiksIDEsICgqcHBhc3MpLT5taWJvaWQsCi0gICAgICAgICAgICAgICAgICgqcHBhc3MpLT5taWJsZW4sIHByaW9yaXR5KTsKKyAgICAgICAgICAgICAgICAgKCpwcGFzcyktPm1pYmxlbiwgKCpwcGFzcyktPm1pYnByaW9yaXR5KTsKIAogICAgIC8qCiAgICAgICogYXJnZ2dnIC0tIHBhc3RocnVzIG11c3QgYmUgc29ydGVkIApAQCAtMTk2LDEzICsyMDEsMTkgQEAKIHBhc3NfcGVyc2lzdF9mcmVlX2NvbmZpZyh2b2lkKQogewogICAgIHN0cnVjdCBleHRlbnNpYmxlICpldG1wLCAqZXRtcDI7CisgICAgaW50IGk7CiAKICAgICBmb3IgKGV0bXAgPSBwZXJzaXN0cGFzc3RocnVzOyBldG1wICE9IE5VTEw7KSB7CiAgICAgICAgIGV0bXAyID0gZXRtcDsKICAgICAgICAgZXRtcCA9IGV0bXAtPm5leHQ7Ci0gICAgICAgIHVucmVnaXN0ZXJfbWliKGV0bXAyLT5taWJvaWQsIGV0bXAyLT5taWJsZW4pOworICAgICAgICB1bnJlZ2lzdGVyX21pYl9wcmlvcml0eShldG1wMi0+bWlib2lkLCBldG1wMi0+bWlibGVuLCBldG1wMi0+bWlicHJpb3JpdHkpOwogICAgICAgICBmcmVlKGV0bXAyKTsKICAgICB9CisgICAgaWYgKHBlcnNpc3RfcGlwZXMpIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8PSBudW1wZXJzaXN0cGFzc3RocnVzOyBpKyspIHsKKyAgICAgICAgICAgIGNsb3NlX3BlcnNpc3RfcGlwZShpKTsKKyAgICAgICAgfQorICAgIH0KICAgICBwZXJzaXN0cGFzc3RocnVzID0gTlVMTDsKICAgICBudW1wZXJzaXN0cGFzc3RocnVzID0gMDsKIH0KQEAgLTQyNiw3ICs0MzcsNyBAQAogICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IG51bXBlcnNpc3RwYXNzdGhydXM7IGkrKykgewogICAgICAgICAgICAgcGVyc2lzdF9waXBlc1tpXS5mSW4gPSBwZXJzaXN0X3BpcGVzW2ldLmZPdXQgPSAoRklMRSAqKSAwOwogICAgICAgICAgICAgcGVyc2lzdF9waXBlc1tpXS5mZEluID0gcGVyc2lzdF9waXBlc1tpXS5mZE91dCA9IC0xOwotICAgICAgICAgICAgcGVyc2lzdF9waXBlc1tpXS5waWQgPSAtMTsKKyAgICAgICAgICAgIHBlcnNpc3RfcGlwZXNbaV0ucGlkID0gTkVUU05NUF9OT19TVUNIX1BST0NFU1M7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHBlcnNpc3RfcGlwZXMgPyAxIDogMDsKQEAgLTQ0MCw3ICs0NTEsNyBAQAogICovCiBzdGF0aWMgaW50IHByb2Nlc3Nfc3RvcHBlZChpbnQgaWR4KQogewotICAgIGlmIChwZXJzaXN0X3BpcGVzW2lkeF0ucGlkICE9IC0xKSB7CisgICAgaWYgKHBlcnNpc3RfcGlwZXNbaWR4XS5waWQgIT0gTkVUU05NUF9OT19TVUNIX1BST0NFU1MpIHsKICNpZiBIQVZFX1NZU19XQUlUX0gKICAgICAgICAgcmV0dXJuIHdhaXRwaWQocGVyc2lzdF9waXBlc1tpZHhdLnBpZCwgTlVMTCwgV05PSEFORykgPiAwOwogI2VuZGlmCkBAIC01MDcsMTQgKzUxOCwxNSBAQAogICAgIC8qCiAgICAgICogT3BlbiBpZiBpdCdzIG5vdCBhbHJlYWR5IG9wZW4gCiAgICAgICovCi0gICAgaWYgKHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQgPT0gLTEpIHsKLSAgICAgICAgaW50ICAgICAgICAgICAgIGZkSW4sIGZkT3V0LCBwaWQ7CisgICAgaWYgKHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQgPT0gTkVUU05NUF9OT19TVUNIX1BST0NFU1MpIHsKKyAgICAgICAgaW50ICAgICAgICAgICAgIGZkSW4sIGZkT3V0OworICAgICAgICBuZXRzbm1wX3BpZF90ICAgcGlkOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIERpZCB3ZSBmYWlsPyAKICAgICAgICAgICovCiAgICAgICAgIGlmICgoMCA9PSBnZXRfZXhlY19waXBlcyhjb21tYW5kLCAmZmRJbiwgJmZkT3V0LCAmcGlkKSkgfHwKLSAgICAgICAgICAgIChwaWQgPT0gLTEpKSB7CisgICAgICAgICAgICAocGlkID09IE5FVFNOTVBfTk9fU1VDSF9QUk9DRVNTKSkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVjZC1zbm1wL3Bhc3NfcGVyc2lzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAib3Blbl9wZXJzaXN0X3BpcGU6IHBpZCA9PSAtMVxuIikpOwogICAgICAgICAgICAgcmVjdXJzZSA9IDA7CkBAIC01OTEsNyArNjAzLDcgQEAKICAgICAvKgogICAgICAqIERvbid0IHdyaXRlIHRvIGEgbm9uLWV4aXN0YW50IHByb2Nlc3MgCiAgICAgICovCi0gICAgaWYgKHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQgPT0gLTEpIHsKKyAgICBpZiAocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCA9PSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUykgewogICAgICAgICBERUJVR01TR1RMKCgidWNkLXNubXAvcGFzc19wZXJzaXN0IiwKICAgICAgICAgICAgICAgICAgICAgIndyaXRlX3BlcnNpc3RfcGlwZTogbm90IHdyaXRpbmcgJXMsIHByb2Nlc3MgaXMgbm9uLWV4aXN0ZW50IiwKICAgICAgICAgICAgICAgICAgICAgZGF0YSkpOwpAQCAtNzA5LDE2ICs3MjEsMjMgQEAKIAl1bmxpbmsoZmlmb19vdXRfcGF0aCk7CiAjZW5kaWYKIAotICAgIGlmIChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkICE9IC0xKSB7CisgICAgaWYgKHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQgIT0gTkVUU05NUF9OT19TVUNIX1BST0NFU1MpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICoga2lsbCB0aGUgY2hpbGQsIGluIGNhc2Ugd2UgZ290IGFuIGVycm9yIGFuZCB0aGUgY2hpbGQgaXMgbm90CisgICAgICAgICAqIGNvb3BlcmF0aW5nLiAgSWdub3JlIHRoZSByZXR1cm4gY29kZS4KKyAgICAgICAgICovCisjaWZkZWYgSEFWRV9TSUdOQUwKKyAgICAgICAgKHZvaWQpa2lsbChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkLCBTSUdLSUxMKTsKKyNlbmRpZgogI2lmIEhBVkVfU1lTX1dBSVRfSAogICAgICAgICB3YWl0cGlkKHBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQsIE5VTEwsIDApOwogI2VuZGlmCiAjaWYgZGVmaW5lZChXSU4zMikgJiYgIWRlZmluZWQgKG1pbmd3MzIpICYmICFkZWZpbmVkIChIQVZFX1NJR05BTCkKLSAgICAgICAgaWYgKCFDbG9zZUhhbmRsZSgoSEFORExFKXBlcnNpc3RfcGlwZXNbaWluZGV4XS5waWQpKSB7CisgICAgICAgIGlmICghQ2xvc2VIYW5kbGUocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCkpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1Y2Qtc25tcC9wYXNzX3BlcnNpc3QiLCJjbG9zZV9wZXJzaXN0X3BpcGUgcGlkOiBjbG9zZSBlcnJvclxuIikpOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgcGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCA9IC0xOworICAgICAgICBwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkID0gTkVUU05NUF9OT19TVUNIX1BST0NFU1M7CiAgICAgfQogCiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMKaW5kZXggNzAwYWNmMi4uZTkwYzJlOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWZkZWYgc29sYXJpczIKICNkZWZpbmUgX0tNRU1VU0VSICAgICAgICAgICAgICAgLyogTmVlZGVkIGJ5IDxzeXMvdXNlci5oPiAqLwpAQCAtMzU5LDYgKzM2MCw3IEBACiB9CiAKICNpZmRlZiBVU0lOR19IT1NUX0RBVEFfQUNDRVNTX1NXUlVOX01PRFVMRQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc3dydW5fY291bnRfcHJvY2Vzc2VzX2J5X25hbWUpCiBpbnQKIHNoX2NvdW50X3Byb2NzKGNoYXIgKnByb2NuYW1lKQogewpAQCAtODEyLDYgKzgxNCw3IEBACiB9CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9TTEFTSF9QUk9DX01FVEhPRF8gKi8KICNlbHNlCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShmaW5kX2ZpZWxkKQogaW50CiBzaF9jb3VudF9wcm9jcyhjaGFyICpwcm9jbmFtZSkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jCmluZGV4IDlhMGUzNTYuLjAxN2ZkNWMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYwpAQCAtOSw2ICs5LDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgSEFWRV9TVFJJTkdfSApAQCAtMjMsNiArMjQsOSBAQAogCiAjaW5jbHVkZSAicHJveHkuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJlcXVlc3Rfc2V0X2Vycm9yX2lkeCkKKwogc3RhdGljIHN0cnVjdCBzaW1wbGVfcHJveHkgKnByb3hpZXMgPSBOVUxMOwogCiBvaWQgICAgICAgICAgICAgdGVzdG9pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCAyMDIxLCA4ODg4LCAxIH07CkBAIC0zNTYsNiArMzYwLDcgQEAKICAgICAgICAgcGR1ID0gc25tcF9wZHVfY3JlYXRlKHJlcWluZm8tPm1vZGUpOwogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKICAgICAgICAgcGR1ID0gc25tcF9wZHVfY3JlYXRlKFNOTVBfTVNHX1NFVCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzgzLDYgKzM4OCw3IEBACiAgICAgICAgICAqICBOb3RoaW5nIHRvIGRvIGluIHRoaXMgcGFzcwogICAgICAgICAgKi8KICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgZGVmYXVsdDoKICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJ1bnN1cHBvcnRlZCBtb2RlIGZvciBwcm94eSBjYWxsZWQgKCVkKVxuIiwKQEAgLTQwMyw3ICs0MDksMzMgQEAKICAgICAgICAgb3VybmFtZSA9IHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZTsKICAgICAgICAgb3VybGVuZ3RoID0gcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aDsKIAotICAgICAgICBpZiAoc3AtPmJhc2VfbGVuID4gMCkgeworICAgICAgICBpZiAoc3AtPmJhc2VfbGVuICYmCisgICAgICAgICAgICByZXFpbmZvLT5tb2RlID09IE1PREVfR0VUTkVYVCAmJgorICAgICAgICAgICAgKHNubXBfb2lkX2NvbXBhcmUob3VybmFtZSwgb3VybGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3AtPmJhc2UsIHNwLT5iYXNlX2xlbikgPCAwKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoICJwcm94eSIsICJyZXF1ZXN0IGlzIG91dCBvZiByZWdpc3RlcmVkIHJhbmdlXG4iKSk7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogQ3JlYXRlIEdFVE5FWFQgcmVxdWVzdCB3aXRoIGFuIE9JRCBzbyB0aGUKKyAgICAgICAgICAgICAqIG1hc3RlciByZXR1cm5zIHRoZSBmaXJzdCBPSUQgaW4gdGhlIHJlZ2lzdGVyZWQgcmFuZ2UuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1lbWNweShvdXJuYW1lLCBzcC0+YmFzZSwgc3AtPmJhc2VfbGVuICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgb3VybGVuZ3RoID0gc3AtPmJhc2VfbGVuOworICAgICAgICAgICAgaWYgKG91cm5hbWVbb3VybGVuZ3RoLTFdIDw9IDEpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFRoZSByZWdpc3RlcmVkIHJhbmdlIGVuZHMgd2l0aCB4Lnkuei4xCisgICAgICAgICAgICAgICAgICogLT4gYXNrIGZvciB0aGUgbmV4dCBvZiB4LnkuegorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIG91cmxlbmd0aC0tOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFRoZSByZWdpc3RlcmVkIHJhbmdlIGVuZHMgd2l0aCB4Lnkuei5BCisgICAgICAgICAgICAgICAgICogLT4gYXNrIGZvciB0aGUgbmV4dCBvZiB4Lnkuei5BLTEuTUFYX1NVQklECisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgb3VybmFtZVtvdXJsZW5ndGgtMV0tLTsKKyAgICAgICAgICAgICAgICBvdXJuYW1lW291cmxlbmd0aF0gPSBNQVhfU1VCSUQ7CisgICAgICAgICAgICAgICAgb3VybGVuZ3RoKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc3AtPmJhc2VfbGVuID4gMCkgewogICAgICAgICAgICAgaWYgKChvdXJsZW5ndGggLSBzcC0+bmFtZV9sZW4gKyBzcC0+YmFzZV9sZW4pID4gTUFYX09JRF9MRU4pIHsKICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAqIHRvbyBsYXJnZSAKQEAgLTUyOSw2ICs1NjEsNyBAQAogICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZChyZXF1ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVRVUVTVF9JU19OT1RfREVMRUdBVEVEKTsKICAgICAgICAgICAgIH0KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAJICAgIGVsc2UgaWYgKGNhY2hlLT5yZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX0FDVElPTikgewogCQkvKgogCQkgKiBJbiBvcmRlciBmb3IgbmV0c25tcF93cmFwX3VwX3JlcXVlc3QgdG8gY29uc2lkZXIgdGhlCkBAIC01NDUsNiArNTc4LDcgQEAKIAkJbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9pZHgocmVxdWVzdHMsIHBkdS0+ZXJyc3RhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT5lcnJpbmRleCk7CiAJICAgIH0KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgICAgICBlbHNlIHsKIAkJbmV0c25tcF9oYW5kbGVyX21hcmtfcmVxdWVzdHNfYXNfZGVsZWdhdGVkKCByZXF1ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVFU1RfSVNfTk9UX0RFTEVHQVRFRCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYwppbmRleCBmNDI5MzJhLi5mN2E4YzYzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIFRJTUVfV0lUSF9TWVNfVElNRQpAQCAtMjMsNyArMjQsMTIgQEAKIAogI2luY2x1ZGUgInN0cnVjdC5oIgogI2luY2x1ZGUgInZlcnNpb25pbmZvLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL3Jlc3RhcnQuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiIC8qIGNsZWFyX2NhY2hlICovCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNsZWFyX2NhY2hlKQorCiAKIHZvaWQKIGluaXRfdmVyc2lvbmluZm8odm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oCmluZGV4IGQ5OTExNDcuLjAwNzQyNGUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaApAQCAtMjgsNSArMjgsOCBAQAogI2RlZmluZSBWRVJTQVZFUEVSU0lTVEVOVCAxMwogI2RlZmluZSBWRVJERUJVR0dJTkcgMjAKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvcmVzdGFydCkKIGNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCisKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX1ZFUlNJT05JTkZPX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMKaW5kZXggZWFkYmY1YS4uZjc2Y2U5NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMKQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oInZtc3RhdCIsIHZtc3RhdF9oYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bXN0YXRfb2lkLCBPSURfTEVOR1RIKHZtc3RhdF9vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCi0gICAgICAgIE1JQklOREVYLCBSQVdTV0FQT1VUKTsKKyAgICAgICAgTUlCSU5ERVgsIENQVU5VTUNQVVMpOwogfQogCiAKQEAgLTM4LDYgKzM4LDcgQEAKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKICAgICBjYXNlIE1PREVfR0VUOgogICAgICAgICBvYmogPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lWyByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aC0yIF07CisKICAgICAgICAgc3dpdGNoIChvYmopIHsKICAgICAgICAgY2FzZSBNSUJJTkRFWDogICAgICAgICAgICAgLyogZHVtbXkgdmFsdWUgKi8KICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwgMSk7CkBAIC0xMTIsNiArMTEzLDIyIEBACiAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+c2lycV90aWNrcyAmIDB4ZmZmZmZmZmYpOwogICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENQVVJBV1NURUFMOgorICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPnN0ZWFsX3RpY2tzICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1BVUkFXR1VFU1Q6CisgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+Z3Vlc3RfdGlja3MgJiAweGZmZmZmZmZmKTsKKyAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDUFVSQVdHVUVTVE5JQ0U6CisgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby0+Z3Vlc3RuaWNlX3RpY2tzICYgMHhmZmZmZmZmZik7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ1BVTlVNQ1BVUzoKKyAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHVfbnVtICYgMHg3ZmZmZmZmZik7CisgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyoKICAgICAgICAgICogICdDb29rZWQnIENQVSBzdGF0aXN0aWNzCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCmluZGV4IGI4ZDUyMDIuLjlmZGY0ZjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCkBAIC0zNiw1ICszNiw5IEBACiAjZGVmaW5lIENQVVJBV1NPRlRJUlEgNjEKICNkZWZpbmUgUkFXU1dBUElOIDYyCiAjZGVmaW5lIFJBV1NXQVBPVVQgNjMKKyNkZWZpbmUgQ1BVUkFXU1RFQUwgNjQKKyNkZWZpbmUgQ1BVUkFXR1VFU1QgNjUKKyNkZWZpbmUgQ1BVUkFXR1VFU1ROSUNFIDY2CisjZGVmaW5lIENQVU5VTUNQVVMgNjcKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfVk1TVEFUX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMKaW5kZXggNzUzOGExNC4uZDZlZmY1MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIEhBVkVfTElNSVRTX0gKICNpbmNsdWRlIDxsaW1pdHMuaD4KQEAgLTExMSw2ICsxMTIsOSBAQAogI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKICNpbmNsdWRlICJ2bXN0YXQuaCIKIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoaGFyZHdhcmVfY3B1X2xvYWQpCisKKwogRmluZFZhck1ldGhvZCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQ7CiAKIHN0YXRpYyBpbnQgaGFzX3Ztc3RhdCA9IDE7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaAppbmRleCAxZWRiNmQ2Li5kOWRlYzFkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgKQEAgLTIzLDcgKzIzLDcgQEAKIGNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlKQogI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQogY29uZmlnX3JlcXVpcmUodWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIpCi0jZWxpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGRyYWdvbmZseSkKKyNlbGlmIGRlZmluZWQoZnJlZWJzZDQpIHx8IGRlZmluZWQoZHJhZ29uZmx5KSB8fCBkZWZpbmVkKGRhcndpbikKIGNvbmZpZ19yZXF1aXJlKHVkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2ZyZWVic2Q0KQogI2VsaWYgZGVmaW5lZChvcGVuYnNkNCkKIGNvbmZpZ19yZXF1aXJlKHVkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X29wZW5ic2QpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jCmluZGV4IGJjYjAwMmUuLjYzZjg1NDkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jCkBAIC00LDYgKzQsNyBAQAogICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgInVkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2NvbnN0YW50cy5oIgogCkBAIC0xMyw2ICsxNCwxMCBAQAogCiAjaW5jbHVkZSAidWRwX2VuZHBvaW50X3ByaXZhdGUuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcF9lbmRwb2ludF9jb21tb24sIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwX2VuZHBvaW50X2VudHJ5X2NyZWF0ZSwgdWRwX2VuZHBvaW50X2NvbW1vbikKKwogLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qCiAgKiBsb2NhbCBzdGF0aWMgdmFycwpAQCAtMjQsMTEgKzI5LDYgQEAKICAqIGluaXRpYWxpemF0aW9uCiAgKi8KIAotdm9pZAotbmV0c25tcF9hY2Nlc3NfdWRwX2VuZHBvaW50X2luaXQodm9pZCkKLXsKLX0KLQogLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIC8qCiAgKiBjb250YWluZXIgZnVuY3Rpb25zCkBAIC0xMjAsNiArMTIwLDcgQEAKICAqLwogLyoqCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBfRU5EUE9JTlRfRU5UUllfQ1JFQVRFCiBuZXRzbm1wX3VkcF9lbmRwb2ludF9lbnRyeSAqCiBuZXRzbm1wX2FjY2Vzc191ZHBfZW5kcG9pbnRfZW50cnlfY3JlYXRlKHZvaWQpCiB7CkBAIC0xMzYsNiArMTM3LDcgQEAKIAogICAgIHJldHVybiBlbnRyeTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUF9FTkRQT0lOVF9FTlRSWV9DUkVBVEUgKi8KIAogLyoqCiAgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jCmluZGV4IDQzYjMyMzAuLjZlZGJkYzEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYwpAQCAtNCw2ICs0LDcgQEAKICAqICRJZCQKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0xOSw2ICsyMCwxMCBAQAogCiAjaW5jbHVkZSA8ZmNudGwuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGV4dF91dGlscykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBfZW5kcG9pbnRfYWxsLCBsaWJuZXRzbm1wbWlicykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBfZW5kcG9pbnRfd3JpdGFibGUsIHVkcF9lbmRwb2ludF9hbGwpCisKIHN0YXRpYyBpbnQgX2xvYWQ0KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzKTsKICNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQogc3RhdGljIGludCBfbG9hZDYobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpOwpAQCAtMzAsNiArMzUsNyBAQAogICogQHJldHZhbCAgMDogc3VjY2VzcwogICogQHJldHZhbCA8MDogZXJyb3IKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUF9FTkRQT0lOVF9XUklUQUJMRQogaW50CiBuZXRzbm1wX2FyY2hfdWRwX2VuZHBvaW50X2VudHJ5X2luaXQobmV0c25tcF91ZHBfZW5kcG9pbnRfZW50cnkgKmVudHJ5KQogewpAQCAtNzEsNiArNzcsNyBAQAogICAgIC8qKiB4eHgtcmtzOjkgdWRwX2VuZHBvaW50IGRlbGV0ZSBub3QgaW1wbGVtZW50ZWQgKi8KICAgICByZXR1cm4gLTE7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBfRU5EUE9JTlRfV1JJVEFCTEUgKi8KIAogCiAvKioKQEAgLTg0LDYgKzkxLDkgQEAKIHsKICAgICBpbnQgcmMgPSAwOwogCisgICAgLyogU2V0dXAgdGhlIHBpZF9mcm9tX2lub2RlIHRhYmxlLCBhbmQgZmlsbCBpdC4qLworICAgIG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlX2luaXQoKTsKKwogICAgIHJjID0gX2xvYWQ0KGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CiAgICAgaWYocmMgPCAwKSB7CiAgICAgICAgIHVfaW50IGZsYWdzID0gTkVUU05NUF9BQ0NFU1NfVURQX0VORFBPSU5UX0ZSRUVfS0VFUF9DT05UQUlORVI7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMi5jIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfc29sYXJpczIuYwppbmRleCBmNGI2OWRmLi5mNTIyNDRhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X3NvbGFyaXMyLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KQEAgLTEwLDExICsxMSwxNiBAQAogCiAjaW5jbHVkZSAia2VybmVsX3N1bm9zNS5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShuZXRzbm1wX2FjY2Vzc191ZHBfZW5kcG9pbnRfZW50cnlfY3JlYXRlKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcF9lbmRwb2ludF9hbGwsIGxpYm5ldHNubXBtaWJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcF9lbmRwb2ludF93cml0YWJsZSwgdWRwX2VuZHBvaW50X2FsbCkKKwogc3RhdGljIGludCBfbG9hZF91ZHBfZW5kcG9pbnRfdGFibGVfdjQobmV0c25tcF9jb250YWluZXIgKiwgaW50KTsKICNpZiBkZWZpbmVkKE5FVFNOTVBfRU5BQkxFX0lQVjYpICYmIGRlZmluZWQoU09MQVJJU19IQVZFX0lQVjZfTUlCX1NVUFBPUlQpCiBzdGF0aWMgaW50IF9sb2FkX3VkcF9lbmRwb2ludF90YWJsZV92NihuZXRzbm1wX2NvbnRhaW5lciAqLCBpbnQpOwogI2VuZGlmCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBfRU5EUE9JTlRfV1JJVEFCTEUKIGludCAKIG5ldHNubXBfYXJjaF91ZHBfZW5kcG9pbnRfZW50cnlfaW5pdChuZXRzbm1wX3VkcF9lbmRwb2ludF9lbnRyeSAqZXApCiB7CkBAIC00OCw2ICs1NCw3IEBACiAgICAgICovCiAgICAgcmV0dXJuICgtMSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBfRU5EUE9JTlRfV1JJVEFCTEUgKi8KIAogaW50IAogbmV0c25tcF9hcmNoX3VkcF9lbmRwb2ludF9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lciwgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jCmluZGV4IDFiNmRjNjcuLjYwZDM3ZTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2ludGVyZmFjZS5jCkBAIC0zMCw2ICszMCw3IEBACiAgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC00Niw2ICs0NywxOCBAQAogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcEVuZHBvaW50VGFibGVfZXh0ZXJuYWxfYWNjZXNzLCBsaWJuZXRzbm1wbWlicykKKworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUocm93X21lcmdlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoYmFieV9zdGVwcykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcikKKworCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwRW5kcG9pbnRUYWJsZV9jb250YWluZXJfc2l6ZSwgdWRwRW5kcG9pbnRUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWRwRW5kcG9pbnRUYWJsZV9yZWdpc3RyYXRpb25fc2V0LCB1ZHBFbmRwb2ludFRhYmxlX2V4dGVybmFsX2FjY2VzcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1ZHBFbmRwb2ludFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQsIHVkcEVuZHBvaW50VGFibGVfZXh0ZXJuYWxfYWNjZXNzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVkcEVuZHBvaW50VGFibGVfY29udGFpbmVyX2dldCwgdWRwRW5kcG9pbnRUYWJsZV9leHRlcm5hbF9hY2Nlc3MpCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoqKgpAQCAtNzksMTkgKzkyLDIzIEBACiAgICAgICAgICAgICAgICAgX3VkcEVuZHBvaW50VGFibGVfY29udGFpbmVyX3NodXRkb3duKHVkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCk7CiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfQ09OVEFJTkVSX0dFVAogbmV0c25tcF9jb250YWluZXIgKgogdWRwRW5kcG9pbnRUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCiB7CiAgICAgcmV0dXJuIHVkcEVuZHBvaW50VGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfQ09OVEFJTkVSX0dFVCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9SRUdJU1RSQVRJT05fR0VUCiB1ZHBFbmRwb2ludFRhYmxlX3JlZ2lzdHJhdGlvbiAqCiB1ZHBFbmRwb2ludFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKIHsKICAgICByZXR1cm4gdWRwRW5kcG9pbnRUYWJsZV9pZl9jdHgudXNlcl9jdHg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX1JFR0lTVFJBVElPTl9HRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfUkVHSVNUUkFUSU9OX1NFVAogdWRwRW5kcG9pbnRUYWJsZV9yZWdpc3RyYXRpb24gKgogdWRwRW5kcG9pbnRUYWJsZV9yZWdpc3RyYXRpb25fc2V0KHVkcEVuZHBvaW50VGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQogewpAQCAtOTksMTIgKzExNiwxNSBAQAogICAgIHVkcEVuZHBvaW50VGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOwogICAgIHJldHVybiBvbGQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VRFBFTkRQT0lOVFRBQkxFX1JFR0lTVFJBVElPTl9TRVQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VEUEVORFBPSU5UVEFCTEVfQ09OVEFJTkVSX1NJWkUKIGludAogdWRwRW5kcG9pbnRUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKQogewogICAgIHJldHVybiBDT05UQUlORVJfU0laRSh1ZHBFbmRwb2ludFRhYmxlX2lmX2N0eC5jb250YWluZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9DT05UQUlORVJfU0laRSAqLwogCiAvKgogICogbWZkIG11bHRpcGxleGVyIG1vZGVzCkBAIC0yMjgsNyArMjQ4LDggQEAKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOwogCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorI2lmICEoZGVmaW5lZChORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQpIHx8IGRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUKSkKKyAgICAvKiBYWFggLSBhcmUgdGhlc2UgYWN0dWFsbHkgbmVjZXNzYXJ5PyAqLwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKICAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQpAQCAtMjUxLDcgKzI3Miw3IEBACiAgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ09NTUlUOwogICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fY29tbWl0KQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogCiAgICAgaGFuZGxlciA9IG5ldHNubXBfYmFieV9zdGVwc19oYW5kbGVyX2dldChtZmRfbW9kZXMpOwogICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CkBAIC0xMDQ3LDYgKzEwNjgsNyBAQAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfdWRwRW5kcG9pbnRUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9FWFRFUk5BTF9BQ0NFU1MKIHVkcEVuZHBvaW50VGFibGVfcm93cmVxX2N0eCAqCiB1ZHBFbmRwb2ludFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleCh1ZHBFbmRwb2ludFRhYmxlX21pYl9pbmRleCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQpAQCAtMTA3NCwzICsxMDk2LDQgQEAKIAogICAgIHJldHVybiByb3dyZXFfY3R4OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVURQRU5EUE9JTlRUQUJMRV9FWFRFUk5BTF9BQ0NFU1MgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYwppbmRleCBmYjc2MDgzLi41NDA2OGM2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jCkBAIC05LDYgKzksNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgSEFWRV9JT19ICkBAIC05Niw2ICs5NywyNCBAQAogI2RlZmluZSBzZXRQZXJyb3JzdGF0dXMoeCkgc25tcF9sb2dfcGVycm9yKHgpCiAjZW5kaWYKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHV0aWxfZnVuY3MsIGxpYm5ldHNubXBtaWJzKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2hlbGxfY29tbWFuZCwgdXRpbF9mdW5jcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihnZXRfZXh0ZW5faW5zdGFuY2UsIHV0aWxfZnVuY3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2xlYXJfY2FjaGUsIHV0aWxfZnVuY3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZmluZF9maWVsZCwgdXRpbF9mdW5jcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihwYXJzZV9taWJvaWQsIHV0aWxfZnVuY3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3RyaW5nX2FwcGVuZF9pbnQsIHV0aWxfZnVuY3MpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaW50ZXJuYWxfbWliX3RhYmxlLCB1dGlsX2Z1bmNzKQorCisjaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHByZWZpeF9pbmZvX2FsbCwgdXRpbF9mdW5jcykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihwcmVmaXhfaW5mbywgcHJlZml4X2luZm9fYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVwZGF0ZV9wcmVmaXhfaW5mbywgcHJlZml4X2luZm9fYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRlbGV0ZV9wcmVmaXhfaW5mbywgcHJlZml4X2luZm9fYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZpbmRfcHJlZml4X2luZm8sIHByZWZpeF9pbmZvX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjcmVhdGVfcHJlZml4X2luZm8sIHByZWZpeF9pbmZvX2FsbCkKKyNlbmRpZiAvKiBIQVZFX0xJTlVYX1JUTkVUTElOS19IICovCiAKICNpZmRlZiBORVRTTk1QX0VYQ0FDSEVUSU1FCiBzdGF0aWMgbG9uZyAgICAgY2FjaGV0aW1lOwpAQCAtMTEwLDYgKzEyOSw3IEBACiAgICAgcmV0dXJuIG5ldHNubXBfbWt0ZW1wKCk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TSEVMTF9DT01NQU5ECiBpbnQKIHNoZWxsX2NvbW1hbmQoc3RydWN0IGV4dGVuc2libGUgKmV4KQogewpAQCAtMTQzLDYgKzE2Myw3IEBACiAjZW5kaWYKICAgICByZXR1cm4gKGV4LT5yZXN1bHQpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0hFTExfQ09NTUFORCAqLwogCiAjZGVmaW5lIE1BWE9VVFBVVCAzMDAKIApAQCAtMTY5LDYgKzE5MCw3IEBACiAgICAgcmV0dXJuIChleC0+cmVzdWx0KTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0dFVF9FWFRFTl9JTlNUQU5DRQogc3RydWN0IGV4dGVuc2libGUgKgogZ2V0X2V4dGVuX2luc3RhbmNlKHN0cnVjdCBleHRlbnNpYmxlICpleHRlbiwgc2l6ZV90IGluc3QpCiB7CkBAIC0xODAsNiArMjAyLDcgQEAKICAgICAgICAgZXh0ZW4gPSBleHRlbi0+bmV4dDsKICAgICByZXR1cm4gKGV4dGVuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0dFVF9FWFRFTl9JTlNUQU5DRSAqLwogCiB2b2lkCiB3YWl0X29uX2V4ZWMoc3RydWN0IGV4dGVuc2libGUgKmV4KQpAQCAtMTg4LDcgKzIxMSw3IEBACiAgIGludCByYzsKICAgaWYgKGV4LT50aWQgIT0gMCAmJiBleC0+cGlkICE9IDApIHsKICAgICBIQU5ETEUgaFRocmVhZCA9IGV4LT50aWQ7Ci0gICAgSEFORExFIGhQcm9jZXNzID0gKEhBTkRMRSkgZXgtPnBpZDsKKyAgICBIQU5ETEUgaFByb2Nlc3MgPSBleC0+cGlkOwogICAgIHJjID0gV2FpdEZvclNpbmdsZU9iamVjdChoUHJvY2VzcywgTkVUU05NUF9USU1FT1VUX1dBSVRGT1JTSU5HTEVPQkpFQ1QpOwogICAgIERFQlVHTVNHVCgoImV4ZWM6d2FpdF9vbl9leGVjIiwiV2FpdEZvclNpbmdsZU9iamVjdCByYz0oJWQpXG4iLHJjICkpOwogICAgIHJjID0gQ2xvc2VIYW5kbGUoIGhUaHJlYWQgKTsKQEAgLTM0NSw3ICszNjgsNyBAQAogICAgIH0KICAgICAKICAgICAvKiBTZXQgZ2xvYmFsIGNoaWxkIHByb2Nlc3MgaGFuZGxlICovCi0gICAgZXgtPnBpZCA9IChpbnQpcGkuaFByb2Nlc3M7CisgICAgZXgtPnBpZCA9IHBpLmhQcm9jZXNzOwogICAgIGV4LT50aWQgPSBwaS5oVGhyZWFkOwogCiAgICAgLyogQ2xvc2UgcGlwZSBoYW5kbGVzIHRvIG1ha2Ugc3VyZSB0aGF0IG5vIGhhbmRsZXMgdG8gdGhlIHdyaXRlIGVuZCBvZiB0aGUKQEAgLTM3MSw3ICszOTQsNyBAQAogICAgIHJldHVybiAtMTsKIH0KIGludAotZ2V0X2V4ZWNfcGlwZXMoY2hhciAqY21kLCBpbnQgKmZkSW4sIGludCAqZmRPdXQsIGludCAqcGlkKQorZ2V0X2V4ZWNfcGlwZXMoY2hhciAqY21kLCBpbnQgKmZkSW4sIGludCAqZmRPdXQsIG5ldHNubXBfcGlkX3QgKnBpZCkKIHsKIC8qIAlBbGV4YW5kZXIgUHLDtm1lbCwgYWxleGFuZGVyQHByb2VtZWwuZGUgMDgvMjQvMjAwNgogCVRoZSBmb2xsb3dpbmcgY29kZSwgaXMgdGVzdGVkIG9uIHBpY290dXggcmV2LiAxLjAxLgpAQCAtNjA0LDcgKzYyNyw3IEBACiAgICAgREVCVUdNU0dUTCgoInV0aWxfZnVuY3MiLCJjaGlsZCBkd1Byb2Nlc3NJZCAodGFzayBtYW5hZ2VyKTogJWRcbiIsKGludClwaS5kd1Byb2Nlc3NJZCkpOwogCiAgICAgLyogU2V0IGdsb2JhbCBjaGlsZCBwcm9jZXNzIGhhbmRsZSAqLwotICAgICpwaWQgPSAoaW50KXBpLmhQcm9jZXNzOworICAgICpwaWQgPSBwaS5oUHJvY2VzczsKIAogICAgIC8qIENsZWFudXAgKi8KICAgICBpZiAoIUNsb3NlSGFuZGxlKHBpLmhUaHJlYWQpKQpAQCAtNjMzLDYgKzY1Niw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DTEVBUl9DQUNIRQogaW50CiBjbGVhcl9jYWNoZShpbnQgYWN0aW9uLAogICAgICAgICAgICAgdV9jaGFyICogdmFyX3ZhbCwKQEAgLTY1NSw2ICs2NzksNyBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NMRUFSX0NBQ0hFICovCiAKIHZvaWQKIHByaW50X21pYl9vaWQob2lkIG5hbWVbXSwgc2l6ZV90IGxlbikKQEAgLTY5NSw2ICs3MjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVfbWV0aG9kLCBtYXgpKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfRklFTEQKIGNoYXIgICAgICAgICAgICoKIGZpbmRfZmllbGQoY2hhciAqcHRyLCBpbnQgZmllbGQpCiB7CkBAIC03MzUsNyArNzYxLDkgQEAKICAgICB9CiAgICAgcmV0dXJuIChOVUxMKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfRklFTEQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX01JQk9JRAogaW50CiBwYXJzZV9taWJvaWQoY29uc3QgY2hhciAqYnVmLCBvaWQgKiBvaWRvdXQpCiB7CkBAIC03NTksNyArNzg3LDkgQEAKICAgICAgKi8KICAgICByZXR1cm4gaTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX01JQk9JRCAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSSU5HX0FQUEVORF9JTlQKIHZvaWQKIHN0cmluZ19hcHBlbmRfaW50KGNoYXIgKnMsIGludCB2YWwpCiB7CkBAIC03NzQsMTMgKzgwNCwxNiBAQAogICAgIHN0cmNweShzLCB0ZXh0VmFsKTsKICAgICByZXR1cm47CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVFJJTkdfQVBQRU5EX0lOVCAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSU5URVJOQUxfTUlCX1RBQkxFCiAKIHN0cnVjdCBpbnRlcm5hbF9taWJfdGFibGUgewogICAgIGludCAgICAgICAgICAgICBtYXhfc2l6ZTsgICAvKiBTaXplIG9mIHRoZSBjdXJyZW50IGRhdGEgdGFibGUgKi8KICAgICBpbnQgICAgICAgICAgICAgbmV4dF9pbmRleDsgLyogSW5kZXggb2YgdGhlIG5leHQgZnJlZSBlbnRyeSAqLwogICAgIGludCAgICAgICAgICAgICBjdXJyZW50X2luZGV4OyAgICAgIC8qIEluZGV4IG9mIHRoZSAnY3VycmVudCcgZW50cnkgKi8KICAgICBpbnQgICAgICAgICAgICAgY2FjaGVfdGltZW91dDsKLSAgICBtYXJrZXJfdCAgICAgICAgY2FjaGVfbWFya2VyOworICAgIG1hcmtlcl90ICAgICAgICBjYWNoZV9tYXJrZXJNOwogICAgIFJFTE9BRCAgICAgICAgICpyZWxvYWQ7ICAgICAvKiBSb3V0aW5lIHRvIHJlYWQgaW4gdGhlIGRhdGEgKi8KICAgICBDT01QQVJFICAgICAgICAqY29tcGFyZTsgICAgLyogUm91dGluZSB0byBjb21wYXJlIHR3byBlbnRyaWVzICovCiAgICAgaW50ICAgICAgICAgICAgIGRhdGFfc2l6ZTsgIC8qIFNpemUgb2YgYW4gaW5kaXZpZHVhbCBlbnRyeSAqLwpAQCAtODAxLDcgKzgzNCw3IEBACiAgICAgdC0+bmV4dF9pbmRleCA9IDE7ICAgICAgICAgIC8qIERvbid0IHVzZSBpbmRleCAwICovCiAgICAgdC0+Y3VycmVudF9pbmRleCA9IDE7CiAgICAgdC0+Y2FjaGVfdGltZW91dCA9IHRpbWVvdXQ7Ci0gICAgdC0+Y2FjaGVfbWFya2VyID0gTlVMTDsKKyAgICB0LT5jYWNoZV9tYXJrZXJNID0gTlVMTDsKICAgICB0LT5yZWxvYWQgPSByZWxvYWQ7CiAgICAgdC0+Y29tcGFyZSA9IGNvbXBhcmU7CiAgICAgdC0+ZGF0YV9zaXplID0gc2l6ZTsKQEAgLTgyMyw4ICs4NTYsOSBAQAogICAgICAqIElmIHRoZSBzYXZlZCBkYXRhIGlzIGZhaXJseSByZWNlbnQsCiAgICAgICogICAgd2UgZG9uJ3QgbmVlZCB0byByZWxvYWQgaXQKICAgICAgKi8KLSAgICBpZiAodGFibGUtPmNhY2hlX21hcmtlciAmJgotICAgICAgICAhKGF0aW1lX3JlYWR5KHRhYmxlLT5jYWNoZV9tYXJrZXIsIHRhYmxlLT5jYWNoZV90aW1lb3V0ICogMTAwMCkpKQorICAgIGlmICh0YWJsZS0+Y2FjaGVfbWFya2VyTSAmJgorICAgICAgICAhKG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKHRhYmxlLT5jYWNoZV9tYXJrZXJNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLT5jYWNoZV90aW1lb3V0ICogMTAwMCkpKQogICAgICAgICByZXR1cm4gMTsKIAogCkBAIC04MzQsMTUgKzg2OCwxMiBAQAogICAgICAqIE4uQjogIFVwZGF0ZSB0aGUgY2FjaGUgbWFya2VyICpiZWZvcmUqIGNhbGxpbmcKICAgICAgKiAgIHRoaXMgcm91dGluZSwgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCByZWN1cnNpb24KICAgICAgKi8KLSAgICBpZiAoIXRhYmxlLT5jYWNoZV9tYXJrZXIpCi0gICAgICAgIHRhYmxlLT5jYWNoZV9tYXJrZXIgPSBhdGltZV9uZXdNYXJrZXIoKTsKLSAgICBlbHNlCi0gICAgICAgIGF0aW1lX3NldE1hcmtlcih0YWJsZS0+Y2FjaGVfbWFya2VyKTsKKyAgICBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCZ0YWJsZS0+Y2FjaGVfbWFya2VyTSk7CiAKICAgICB0YWJsZS0+bmV4dF9pbmRleCA9IDE7CiAgICAgaWYgKHRhYmxlLT5yZWxvYWQoKG1pYl90YWJsZV90KSB0YWJsZSkgPCAwKSB7Ci0gICAgICAgIGZyZWUodGFibGUtPmNhY2hlX21hcmtlcik7Ci0gICAgICAgIHRhYmxlLT5jYWNoZV9tYXJrZXIgPSBOVUxMOworICAgICAgICBmcmVlKHRhYmxlLT5jYWNoZV9tYXJrZXJNKTsKKyAgICAgICAgdGFibGUtPmNhY2hlX21hcmtlck0gPSBOVUxMOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgdGFibGUtPmN1cnJlbnRfaW5kZXggPSAxOwpAQCAtOTUyLDggKzk4MywxMSBAQAogICAgICptYXhfaWR4ID0gdGFibGUtPm5leHRfaW5kZXggLSAxOwogICAgIHJldHVybiB0YWJsZS0+ZGF0YTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lOVEVSTkFMX01JQl9UQUJMRSAqLwogCiAjaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ1JFQVRFX1BSRUZJWF9JTkZPCiBwcmVmaXhfY2J4ICpuZXRfc25tcF9jcmVhdGVfcHJlZml4X2luZm8odW5zaWduZWQgbG9uZyBPbkxpbmtGbGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgQXV0b25vbW91c0ZsYWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqaW42cHRyKQpAQCAtOTc0LDcgKzEwMDgsOSBAQAogCiAgICByZXR1cm4gbm9kZTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NSRUFURV9QUkVGSVhfSU5GTyAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklORF9QUkVGSVhfSU5GTwogaW50IG5ldF9zbm1wX2ZpbmRfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b19maW5kKQpAQCAtOTk1LDcgKzEwMzEsOSBAQAogICAgIH0gZWxzZQogICAgICAgIHJldHVybiAwOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklORF9QUkVGSVhfSU5GTyAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVBEQVRFX1BSRUZJWF9JTkZPCiBpbnQgbmV0X3NubXBfdXBkYXRlX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhfY2J4ICpub2RlX3RvX3VwZGF0ZSkKIHsKQEAgLTEwMTAsNiArMTA0OCw3IEBACiAgICAgfSBlbHNlCiAgICAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VUERBVEVfUFJFRklYX0lORk8gKi8KIAogaW50IG5ldF9zbm1wX3NlYXJjaF91cGRhdGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhfY2J4ICpub2RlX3RvX3VzZSwKQEAgLTEwNTgsNiArMTA5Nyw3IEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVMRVRFX1BSRUZJWF9JTkZPCiBpbnQgbmV0X3NubXBfZGVsZXRlX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphZGRyZXNzKQogewpAQCAtMTA4Myw1ICsxMTIzLDcgQEAKICAgICB9CiAgICAgcmV0dXJuIDA7CiB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFTEVURV9QUkVGSVhfSU5GTyAqLwogCisjZW5kaWYgLyogSEFWRV9MSU5VWF9SVE5FVExJTktfSCAqLworICAgICAgICAgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmggYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgKaW5kZXggZDE2YjZjNC4uN2Y1OTc4MCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaApAQCAtNCwxNSArNCwxNCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVVRJTF9GVU5DU19ICiAjZGVmaW5lIF9NSUJHUk9VUF9VVElMX0ZVTkNTX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9FeGl0KQogY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIGNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvcmVzdGFydCkKIAotI2luY2x1ZGUgInV0aWxfZnVuY3MvRXhpdC5oIgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgogI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKICNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzL3Jlc3RhcnQuaCIKIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKQEAgLTM3LDcgKzM2LDExIEBACiBpbnQgICAgICAgICAgICAgZXhlY19jb21tYW5kKHN0cnVjdCBleHRlbnNpYmxlICopOwogc3RydWN0IGV4dGVuc2libGUgKmdldF9leHRlbl9pbnN0YW5jZShzdHJ1Y3QgZXh0ZW5zaWJsZSAqLCBzaXplX3QpOwogaW50ICAgICAgICAgICAgIGdldF9leGVjX291dHB1dChzdHJ1Y3QgZXh0ZW5zaWJsZSAqKTsKLWludCAgICAgICAgICAgICBnZXRfZXhlY19waXBlcyhjaGFyICpjbWQsIGludCAqZmRJbiwgaW50ICpmZE91dCwgaW50ICpwaWQpOworI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKGN5Z3dpbikKK2ludCAgICAgICAgICAgICBnZXRfZXhlY19waXBlcyhjaGFyICpjbWQsIGludCAqZmRJbiwgaW50ICpmZE91dCwgSEFORExFICpwaWQpOworI2Vsc2UKK2ludCAgICAgICAgICAgICBnZXRfZXhlY19waXBlcyhjaGFyICpjbWQsIGludCAqZmRJbiwgaW50ICpmZE91dCwgcGlkX3QgKnBpZCk7CisjZW5kaWYKIFdyaXRlTWV0aG9kICAgICBjbGVhcl9jYWNoZTsKIHZvaWQgICAgICAgICAgICBwcmludF9taWJfb2lkKG9pZCAqLCBzaXplX3QpOwogdm9pZCAgICAgICAgICAgIHNwcmludF9taWJfb2lkKGNoYXIgKiwgY29uc3Qgb2lkICosIHNpemVfdCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYwppbmRleCAxYzk0MWIzLi44ZTE1N2FlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKQEAgLTIyLDI5ICsyMiwxMDYgQEAKICMgZGVmaW5lIFNPQ0tFVF9UWVBFXzEgICAgICAic29ja2V0OlsiCiAjIGRlZmluZSBTT0NLRVRfVFlQRV8yICAgICAgIlswMDAwXToiCiAKLXBpZF90Ci1uZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm82NF90IGlub2RlKQorLyogRGVmaW5pdGlvbiBvZiBhIHNpbXBsZSBvcGVuIGFkZHJlc3NpbmcgaGFzaCB0YWJsZS4qLworLyogV2hlbiBpbm9kZSA9PSAwIHRoZW4gdGhlIGVudHJ5IGlzIGVtcHR5LiovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW5vNjRfdCBpbm9kZTsKKyAgICBwaWRfdCAgIHBpZDsKK30gaW5vZGVfcGlkX2VudF90OworCisjZGVmaW5lIElOT0RFX1BJRF9UQUJMRV9NQVhfQ09MTElTSU9OUyAxMDAwCisjZGVmaW5lIElOT0RFX1BJRF9UQUJMRV9MRU5HVEggMjAwMDAKKyNkZWZpbmUgSU5PREVfUElEX1RBQkxFX1NJWkUgKElOT0RFX1BJRF9UQUJMRV9MRU5HVEggKiBzaXplb2YgKGlub2RlX3BpZF9lbnRfdCkpCitzdGF0aWMgaW5vZGVfcGlkX2VudF90ICBpbm9kZV9waWRfdGFibGVbSU5PREVfUElEX1RBQkxFX0xFTkdUSF07CisKK3N0YXRpYyB1aW50MzJfdAorX2hhc2godWludDY0X3Qga2V5KQoreworICAgIGtleSA9ICh+a2V5KSArIChrZXkgPDwgMTgpOworICAgIGtleSA9IGtleSBeIChrZXkgPj4gMzEpOworICAgIGtleSA9IGtleSAqIDIxOworICAgIGtleSA9IGtleSBeIChrZXkgPj4gMTEpOworICAgIGtleSA9IGtleSArIChrZXkgPDwgNik7CisgICAga2V5ID0ga2V5IF4gKGtleSA+PiAyMik7CisgICAgcmV0dXJuIGtleTsKK30KKworc3RhdGljIHZvaWQKK19jbGVhcih2b2lkKQoreworICAgIC8qIENsZWFyIHRoZSBpbm9kZS9waWQgaGFzaCB0YWJsZS4qLworICAgIG1lbXNldChpbm9kZV9waWRfdGFibGUsIDAsIElOT0RFX1BJRF9UQUJMRV9TSVpFKTsKK30KKworc3RhdGljIHZvaWQKK19zZXQoaW5vNjRfdCBpbm9kZSwgcGlkX3QgcGlkKQoreworICAgIHVpbnQzMl90ICAgICAgICBoYXNoID0gX2hhc2goaW5vZGUpOworICAgIHVpbnQzMl90ICAgICAgICBpOworICAgIGlub2RlX3BpZF9lbnRfdCAqZW50cnk7CisKKyAgICAvKiBXZSB3aWxsIHRyeSBmb3IgYSBtYXhpbXVtIG51bWJlciBvZiBjb2xsaXNpb25zLiovCisgICAgZm9yIChpID0gMDsgaSA8IElOT0RFX1BJRF9UQUJMRV9NQVhfQ09MTElTSU9OUzsgaSsrKSB7CisgICAgICAgIGVudHJ5ID0gJmlub2RlX3BpZF90YWJsZVsoaGFzaCArIGkpICUgSU5PREVfUElEX1RBQkxFX0xFTkdUSF07CisKKyAgICAgICAgLyogQ2hlY2sgaWYgdGhpcyBlbnRyeSBpcyBlbXB0eSwgb3IgdGhlIGFjdHVhbCBpbm9kZSB3ZSB3ZXJlIGxvb2tpbmcgZm9yLiovCisgICAgICAgIC8qIFRoZSBzZWNvbmQgcGFydCBzaG91bGQgbmV2ZXIgaGFwcGVuLCBidXQgaXQgaXMgaGVyZSBmb3IgY29tcGxldGVuZXNzLiovCisgICAgICAgIGlmIChlbnRyeS0+aW5vZGUgPT0gMCB8fCBlbnRyeS0+aW5vZGUgPT0gaW5vZGUpIHsKKyAgICAgICAgICAgIGVudHJ5LT5pbm9kZSA9IGlub2RlOworICAgICAgICAgICAgZW50cnktPnBpZCA9IHBpZDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIFdlIHdpbGwgc2lsZW50bHkgZmFpbCB0byBpbnNlcnQgdGhlIGlub2RlIGlmIHdlIGdldCB0b28gbWFueSBjb2xsaXNpb25zLiovCisgICAgLyogdGhlIF9nZXQgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSB6ZXJvIHBpZC4qLworfQorCitzdGF0aWMgcGlkX3QgX2dldChpbm82NF90IGlub2RlKQoreworICAgIHVpbnQzMl90ICAgICAgICBoYXNoID0gX2hhc2goaW5vZGUpOworICAgIHVpbnQzMl90ICAgICAgICBpOworICAgIGlub2RlX3BpZF9lbnRfdCAqZW50cnk7CisKKyAgICAvKiBXZSB3aWxsIHRyeSBmb3IgYSBtYXhpbXVtIG51bWJlciBvZiBjb2xsaXNpb25zLiovCisgICAgZm9yIChpID0gMDsgaSA8IElOT0RFX1BJRF9UQUJMRV9NQVhfQ09MTElTSU9OUzsgaSsrKSB7CisgICAgICAgIGVudHJ5ID0gJmlub2RlX3BpZF90YWJsZVsoaGFzaCArIGkpICUgSU5PREVfUElEX1RBQkxFX0xFTkdUSF07CisKKyAgICAgICAgLyogQ2hlY2sgaWYgdGhpcyBlbnRyeSBpcyBlbXB0eSwgb3IgdGhlIGFjdHVhbCBpbm9kZSB3ZSB3ZXJlIGxvb2tpbmcgZm9yLiovCisgICAgICAgIC8qIElmIHRoZSBlbnRyeSBpcyBlbXB0eSBpdCBtZWFucyB0aGUgaW5vZGUgaXMgbm90IGluIHRoZSB0YWJsZSBhbmQgd2UqLworICAgICAgICAvKiBzaG91bGQgcmV0dXJuIDAsIHRoZSBlbnRyeSB3aWxsIGFsc28gaGF2ZSBhIHplcm8gcGlkLiovCisgICAgICAgIGlmIChlbnRyeS0+aW5vZGUgPT0gMCB8fCBlbnRyeS0+aW5vZGUgPT0gaW5vZGUpIHsKKyAgICAgICAgICAgIHJldHVybiBlbnRyeS0+cGlkOworICAgICAgICB9CisgICAgfQorCisgICAgLyogV2UgY291bGQgbm90IGZpbmQgdGhlIHBpZC4qLworICAgIHJldHVybiAwOworfQorCit2b2lkCituZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZV9pbml0KHZvaWQpCiB7CiAgICAgRElSICAgICAgICAgICAgKnByb2NkaXJzID0gTlVMTCwgKnBpZGRpcnMgPSBOVUxMOwogICAgIGNoYXIgICAgICAgICAgICBwYXRoX25hbWVbUEFUSF9NQVggKyAxXTsKICAgICBjaGFyICAgICAgICAgICAgc29ja2V0X2xua1tOQU1FX01BWCArIDFdOwotICAgIGludCAgICAgICAgICAgICBmaWxlbGVuID0gMCwgcmVhZGxlbiA9IDAsIGlmbGFnID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgZmlsZWxlbiA9IDAsIHJlYWRsZW4gPSAwOwogICAgIHN0cnVjdCBkaXJlbnQgICpwcm9jaW5mbywgKnBpZGluZm87CiAgICAgcGlkX3QgICAgICAgICAgIHBpZCA9IDA7CiAgICAgaW5vNjRfdCAgICAgICAgIHRlbXBfaW5vZGU7CiAKLSAgICBpZiAoaW5vZGUgPT0gMCkgewotICAgICAgICAvKiBhbiBpbm9kZSBzZXQgdG8gemVybyBtZWFucyBpdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgcHJvY2Vzcy4gKi8KLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIF9jbGVhcigpOwogCisgICAgLyogd2FsayBvdmVyIGFsbCBkaXJlY3RvcmllcyBpbiAvcHJvYyovCiAgICAgaWYgKCEocHJvY2RpcnMgPSBvcGVuZGlyKFBST0NfUEFUSCkpKSB7CiAgICAgICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgInNubXBkOiBjYW5ub3Qgb3BlbiAvcHJvY1xuIikpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIHdoaWxlICgocHJvY2luZm8gPSByZWFkZGlyKHByb2NkaXJzKSkgIT0gTlVMTCkgewotCWNvbnN0IGNoYXIqIG5hbWUgPSBwcm9jaW5mby0+ZF9uYW1lOworICAgICAgICBjb25zdCBjaGFyKiBuYW1lID0gcHJvY2luZm8tPmRfbmFtZTsKKworICAgICAgICAvKiBBIHBpZCBkaXJlY3Rvcnkgb25seSBjb250YWlucyBkaWdpdHMsIGNoZWNrIGZvciB0aG9zZS4qLwogICAgICAgICBmb3IgKDsgKm5hbWU7IG5hbWUrKykgewogICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCpuYW1lKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTUyLDE0ICsxMjksMTYgQEAKICAgICAgICAgaWYoKm5hbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAgICAvKiBDcmVhdGUgdGhlIC9wcm9jLzxwaWQ+L2ZkLyBwYXRoIG5hbWUuKi8KICAgICAgICAgbWVtc2V0KHBhdGhfbmFtZSwgJ1wwJywgUEFUSF9NQVggKyAxKTsKICAgICAgICAgZmlsZWxlbiA9IHNucHJpbnRmKHBhdGhfbmFtZSwgUEFUSF9NQVgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9DX1BBVEggIi8lcy9mZC8iLCBwcm9jaW5mby0+ZF9uYW1lKTsKICAgICAgICAgaWYgKGZpbGVsZW4gPD0gMCB8fCBQQVRIX01BWCA8IGZpbGVsZW4pCiAgICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAgICAvKiB3YWxrIG92ZXIgYWxsIHRoZSBmaWxlcyBpbiAvcHJvYy88cGlkPi9mZC8qLwogICAgICAgICBpZiAoIShwaWRkaXJzID0gb3BlbmRpcihwYXRoX25hbWUpKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjb250aW51ZTsKIAogICAgICAgICB3aGlsZSAoKHBpZGluZm8gPSByZWFkZGlyKHBpZGRpcnMpKSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoZmlsZWxlbiArIHN0cmxlbihwaWRpbmZvLT5kX25hbWUpID4gUEFUSF9NQVgpCkBAIC02NywyOSArMTQ2LDQxIEBACiAKICAgICAgICAgICAgIHN0cmNweShwYXRoX25hbWUgKyBmaWxlbGVuLCBwaWRpbmZvLT5kX25hbWUpOwogCisgICAgICAgICAgICAvKiBUaGUgZmlsZSBkaXNjcmlwdG9yIGlzIGEgc3ltYm9saWMgbGluayB0byBhIHNvY2tldCBvciBhIGZpbGUuKi8KKyAgICAgICAgICAgIC8qIFRodXMgcmVhZCB0aGUgc3ltYm9saWMgbGluay4qLwogICAgICAgICAgICAgbWVtc2V0KHNvY2tldF9sbmssICdcMCcsIE5BTUVfTUFYICsgMSk7CiAgICAgICAgICAgICByZWFkbGVuID0gcmVhZGxpbmsocGF0aF9uYW1lLCBzb2NrZXRfbG5rLCBOQU1FX01BWCk7CiAgICAgICAgICAgICBpZiAocmVhZGxlbiA8IDApCiAgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIHNvY2tldF9sbmtbcmVhZGxlbl0gPSAnXDAnOwogCisgICAgICAgICAgICAvKiBDaGVjayBpZiB0byBzZWUgaWYgdGhlIGZpbGUgZGVzY3JpcHRvciBpcyBhIHNvY2tldCBieSBjb21wYXJpbmcqLworICAgICAgICAgICAgLyogdGhlIHN0YXJ0IHRvIGEgc3RyaW5nLiBBbHNvIGV4dHJhY3QgdGhlIGlub2RlIG51bWJlciBmcm9tIHRoaXMqLworICAgICAgICAgICAgLyogc3ltYm9saWMgbGluay4qLwogICAgICAgICAgICAgaWYgKCFzdHJuY21wKHNvY2tldF9sbmssIFNPQ0tFVF9UWVBFXzEsIDgpKSB7CiAgICAgICAgICAgICAgICAgdGVtcF9pbm9kZSA9IHN0cnRvdWxsKHNvY2tldF9sbmsgKyA4LCBOVUxMLCAwKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAoc29ja2V0X2xuaywgU09DS0VUX1RZUEVfMiwgNykpIHsKICAgICAgICAgICAgICAgICB0ZW1wX2lub2RlID0gc3RydG91bGwoc29ja2V0X2xuayArIDcsIE5VTEwsIDApOwotICAgICAgICAgICAgfSBlbHNlCi0JCXRlbXBfaW5vZGUgPSAwOwotICAgICAgICAgICAgaWYgKGlub2RlID09IHRlbXBfaW5vZGUpIHsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGVtcF9pbm9kZSA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEFkZCB0aGUgaW5vZGUvcGlkIGNvbWJpbmF0aW9uIHRvIG91ciBoYXNoIHRhYmxlLiovCisgICAgICAgICAgICBpZiAodGVtcF9pbm9kZSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgcGlkID0gc3RydG91bChwcm9jaW5mby0+ZF9uYW1lLCBOVUxMLCAwKTsKLSAgICAgICAgICAgICAgICBpZmxhZyA9IDE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgX3NldCh0ZW1wX2lub2RlLCBwaWQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGNsb3NlZGlyKHBpZGRpcnMpOwotICAgICAgICBpZiAoaWZsYWcgPT0gMSkKLSAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAocHJvY2RpcnMpCiAgICAgICAgIGNsb3NlZGlyKHByb2NkaXJzKTsKLSAgICByZXR1cm4gcGlkOwogfQorCitwaWRfdAorbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGUoaW5vNjRfdCBpbm9kZSkKK3sKKyAgICByZXR1cm4gX2dldChpbm9kZSk7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmggYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oCmluZGV4IDJhZDA0ZTEuLmFkODg3YTcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaApAQCAtMyw3ICszLDcgQEAKICAqIHRoYXQgY29udHJvbHMgYSBnaXZlbiBpbm9kZSBvbiBsaW51eC4KICAqLwogI2lmbmRlZiBORVRTTk1QX01JQkdST1VQX1VUSUxfRlVOQ1NfR0VUX1BJRF9GUk9NX0lOT0RFX0gKLSNkZWZpbmUgTkVUU05NUF9NSUJHUk9VUF9VVElMX0ZVTkNTX0hFQURFUl9TSU1QTEVfVEFCTEVfSAorI2RlZmluZSBORVRTTk1QX01JQkdST1VQX1VUSUxfRlVOQ1NfR0VUX1BJRF9GUk9NX0lOT0RFX0gKIAogI2lmbmRlZiBsaW51eAogY29uZmlnX2Vycm9yKGdldF9waWRfZnJvbV9pbm9kZSBpcyBvbmx5IHN1cHBvcmVkIG9uIGxpbnV4KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKK3ZvaWQgbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGVfaW5pdCh2b2lkKTsKIHBpZF90IG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlubzY0X3QpOwogCi0jZW5kaWYgLyogTkVUU05NUF9NSUJHUk9VUF9VVElMX0ZVTkNTX0hFQURFUl9TSU1QTEVfVEFCTEVfSCAqLworI2VuZGlmIC8qIE5FVFNOTVBfTUlCR1JPVVBfVVRJTF9GVU5DU19HRVRfUElEX0ZST01fSU5PREVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jCmluZGV4IDNiZWViYzYuLjg2MDU5MGYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYworKysgYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMKQEAgLTEsOSArMSwxOSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSAidXRpbGl0aWVzL2lxdWVyeS5oIgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXF1ZXJ5X2FsbCwgbGlibmV0c25tcG1pYnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoaXF1ZXJ5LCBpcXVlcnlfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGlxdWVyeV9jb21tdW5pdHlfc2Vzc2lvbiwgaXF1ZXJ5X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihpcXVlcnlfcGR1X3Nlc3Npb24sIGlxdWVyeV9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHF1ZXJ5X3NldF9kZWZhdWx0X3Nlc3Npb24pCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUVVFUlkKKwogdm9pZAogbmV0c25tcF9wYXJzZV9pcXVlcnlTZWNMZXZlbChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKIHsKQEAgLTEyMCw2ICsxMzAsNyBAQAogICAgICAqCiAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVFVRVJZX1BEVV9TRVNTSU9OCiBuZXRzbm1wX3Nlc3Npb24gKm5ldHNubXBfaXF1ZXJ5X3BkdV9zZXNzaW9uKG5ldHNubXBfcGR1KiBwZHUpIHsKICAgICBpZiAoIXBkdSkKICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzOCw2ICsxNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT5zZWN1cml0eUVuZ2luZUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT5zZWN1cml0eUVuZ2luZUlETGVuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lRVUVSWV9QRFVfU0VTU0lPTiAqLwogCiBuZXRzbm1wX3Nlc3Npb24gKm5ldHNubXBfaXF1ZXJ5X3VzZXJfc2Vzc2lvbihjaGFyKiBzZWNOYW1lKXsKICAgICB1X2NoYXIgZUlEW1NOTVBfTUFYQlVGX1NNQUxMXTsKQEAgLTE0OSw2ICsxNjEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9TRUNfTEVWRUxfQVVUSE5PUFJJViwgZUlELCBlbGVuKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lRVUVSWV9DT01NVU5JVFlfU0VTU0lPTgogbmV0c25tcF9zZXNzaW9uICpuZXRzbm1wX2lxdWVyeV9jb21tdW5pdHlfc2Vzc2lvbiggY2hhciogY29tbXVuaXR5LCBpbnQgdmVyc2lvbiApIHsgCiAgICAgdV9jaGFyIGVJRFtTTk1QX01BWEJVRl9TTUFMTF07CiAgICAgc2l6ZV90IGVsZW4gPSBzbm1wdjNfZ2V0X2VuZ2luZUlEKGVJRCwgc2l6ZW9mKGVJRCkpOwpAQCAtMTU2LDYgKzE2OSw3IEBACiAgICAgcmV0dXJuIG5ldHNubXBfaXF1ZXJ5X3Nlc3Npb24oIGNvbW11bml0eSwgdmVyc2lvbiwgdmVyc2lvbisxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9TRUNfTEVWRUxfTk9BVVRILCBlSUQsIGVsZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfSVFVRVJZX0NPTU1VTklUWV9TRVNTSU9OICovCiAKIG5ldHNubXBfc2Vzc2lvbiAqbmV0c25tcF9pcXVlcnlfc2Vzc2lvbihjaGFyKiBzZWNOYW1lLCAgIGludCAgIHZlcnNpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgc2VjTW9kZWwsICBpbnQgICBzZWNMZXZlbCwKQEAgLTE5MiwzICsyMDYsNyBAQAogICAgIHJldHVybiBzczsKIH0KIAorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9JUVVFUlkgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoaXF1ZXJ5KTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0lRVUVSWSAqLworCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jCmluZGV4IGQ1MGI2ZTQuLjQ4YWMyODEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jCkBAIC01MCw2ICs1MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIGRhdGEtPnZhbHVlLCBkYXRhLT52YWx1ZV9sZW4pOwogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgogICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dHlwZSAhPSBkYXRhLT50eXBlKQogICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfV1JPTkdUWVBFKTsKQEAgLTg3LDYgKzg4LDcgQEAKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKICAgICAgICAgU05NUF9GUkVFKGRhdGEtPnNldF9zcGFjZSk7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bnN1cHBvcnRlZCBtb2RlIGluIG92ZXJyaWRlIGhhbmRsZXJcbiIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmMgYi9hZ2VudC9taWJncm91cC93aW5FeHRETEwuYwppbmRleCBkNzhjMTg1Li5mNDRmODRmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC93aW5FeHRETEwuYworKysgYi9hZ2VudC9taWJncm91cC93aW5FeHRETEwuYwpAQCAtODIsNiArODIsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmg+CiAKICNpZmRlZiBVU0lOR19XSU5FWFRETExfTU9EVUxFCkBAIC0xMDEsNiArMTAyLDggQEAKICNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAjaW5jbHVkZSAid2luRXh0RExMLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKG9pZF9pc19zdWJ0cmVlKQorCiAKICNkZWZpbmUgTUFYX1ZBTFVFX05BTUUgICAgICAgICAgMTYzODMKICNkZWZpbmUgTVNfQVNOX1VJTlRFR0VSMzIgTVNfQVNOX1VOU0lHTkVEMzIKQEAgLTc1Myw2ICs3NTYsNzkgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIFRyYW5zbGF0ZSBOZXQtU05NUCByZXF1ZXN0IG1vZGUgaW50byBhbiBTbm1wRXh0ZW5zaW9uUXVlcnkoKSBQRFUgdHlwZQorICogb3IgaW50byBhbiBTbm1wRXh0ZW5zaW9uUXVlcnlFeCgpIHJlcXVlc3QgdHlwZS4KKyAqLworc3RhdGljIGludAorZ2V0X3JlcXVlc3RfdHlwZShpbnQgbW9kZSwgaW50IHJlcXVlc3RfdHlwZSwgVUlOVCAqblJlcXVlc3RUeXBlKQoreworICAgIHN3aXRjaCAocmVxdWVzdF90eXBlKSB7CisgICAgY2FzZSAwOgorICAgICAgICAvKiBTbm1wRXh0ZW5zaW9uUXVlcnkoKSBQRFUgdHlwZSAqLworICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2FzZSBNT0RFX0dFVDoKKyAgICAgICAgICAgICpuUmVxdWVzdFR5cGUgPSBTTk1QX1BEVV9HRVQ7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CisgICAgICAgICAgICAqblJlcXVlc3RUeXBlID0gU05NUF9QRFVfR0VUTkVYVDsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgorICAgICAgICAgICAgKm5SZXF1ZXN0VHlwZSA9IFNOTVBfUERVX1NFVDsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERFQlVHTVNHKCgid2luRXh0RExMIiwgImludGVybmFsIGVycm9yOiBpbnZhbGlkIG1vZGUgJWQuXG4iLCBtb2RlKSk7CisgICAgICAgICAgICBuZXRzbm1wX2Fzc2VydCgwKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgY2FzZSAxOgorICAgICAgICAvKiBTbm1wRXh0ZW5zaW9uUXVlcnlFeCgpIHJlcXVlc3QgdHlwZSAqLworICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgY2FzZSBNT0RFX0dFVDoKKyAgICAgICAgICAgICpuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9HRVQ7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CisgICAgICAgICAgICAqblJlcXVlc3RUeXBlID0gU05NUF9FWFRFTlNJT05fR0VUX05FWFQ7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgICAgICpuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9TRVRfVEVTVDsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyAgICAgICAgICAgICpuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9TRVRfVU5ETzsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKKyAgICAgICAgICAgICpuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9TRVRfQ09NTUlUOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKKyAgICAgICAgICAgICpuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9TRVRfQ0xFQU5VUDsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgREVCVUdNU0coKCJ3aW5FeHRETEwiLCAiaW50ZXJuYWwgZXJyb3I6IGludmFsaWQgbW9kZSAlZC5cbiIsIG1vZGUpKTsKKyAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KDApOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBERUJVR01TRygoIndpbkV4dERMTCIsICJpbnRlcm5hbCBlcnJvcjogaW52YWxpZCBhcmd1bWVudCAlZC5cbiIsCisgICAgICAgICAgICAgICAgICByZXF1ZXN0X3R5cGUpKTsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoMCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogc3RhdGljIGludAogdmFyX3dpbkV4dERMTChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNzc5LDM1ICs4NTUsOCBAQAogICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgIH0KIAotICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewotICAgIGNhc2UgTU9ERV9HRVQ6Ci0gICAgICAgIG5SZXF1ZXN0VHlwZSA9IFNOTVBfRVhURU5TSU9OX0dFVDsKLSAgICAgICAgbmV0c25tcF9hc3NlcnQoIWNvbnRleHRfaW5mb19oZWFkKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT0RFX0dFVE5FWFQ6Ci0gICAgICAgIG5SZXF1ZXN0VHlwZSA9IFNOTVBfRVhURU5TSU9OX0dFVF9ORVhUOwotICAgICAgICBuZXRzbm1wX2Fzc2VydCghY29udGV4dF9pbmZvX2hlYWQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgotICAgICAgICBuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9TRVRfVEVTVDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKLSAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci0gICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKLSAgICAgICAgblJlcXVlc3RUeXBlID0gU05NUF9FWFRFTlNJT05fU0VUX1VORE87Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgotICAgICAgICBuUmVxdWVzdFR5cGUgPSBTTk1QX0VYVEVOU0lPTl9TRVRfQ09NTUlUOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PREVfU0VUX0ZSRUU6Ci0gICAgICAgIG5SZXF1ZXN0VHlwZSA9IFNOTVBfRVhURU5TSU9OX1NFVF9DTEVBTlVQOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBERUJVR01TRygoIndpbkV4dERMTCIsCi0gICAgICAgICAgICAgICAgICAiaW50ZXJuYWwgZXJyb3I6IGludmFsaWQgbW9kZSAlZC5cbiIsIHJlcWluZm8tPm1vZGUpKTsKLSAgICAgICAgbmV0c25tcF9hc3NlcnQoMCk7CisgICAgaWYgKCFnZXRfcmVxdWVzdF90eXBlKHJlcWluZm8tPm1vZGUsICEhZXh0X2RsbF9pbmZvLT5wZlNubXBFeHRlbnNpb25RdWVyeUV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmblJlcXVlc3RUeXBlKSkgewogICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L3NubXBfYWdlbnQuYyBiL2FnZW50L3NubXBfYWdlbnQuYwppbmRleCAwOTQ2NDIzLi5iOTZkNjUwIDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wX2FnZW50LmMKKysrIGIvYWdlbnQvc25tcF9hZ2VudC5jCkBAIC00NCw2ICs0NCw3IEBACiAgKiBAewogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmZGVmIEhBVkVfTElNSVRTX0gKQEAgLTEwNyw2ICsxMDgsMjUgQEAKICNpbmNsdWRlICJzbXV4L3NtdXguaCIKICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9hZ2VudCwgbGlibmV0c25tcGFnZW50KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50X2RlYnVnZ2luZ191dGlsaXRpZXMsIGxpYm5ldHNubXBhZ2VudCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFsbG9jYXRlX2dsb2JhbGNhY2hlaWQsIHNubXBfYWdlbnQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZnJlZV9hZ2VudF9zbm1wX3Nlc3Npb25fYnlfc2Vzc2lvbiwgc25tcF9hZ2VudCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IsIHNubXBfYWdlbnQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfcmVxdWVzdHNfZXJyb3IsIHNubXBfYWdlbnQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVxdWVzdF9zZXRfZXJyb3JfaWR4LCBzbm1wX2FnZW50KQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNldF9hZ2VudF91cHRpbWUsIHNubXBfYWdlbnQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MsIHNubXBfYWdlbnQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkdW1wX3Nlc3NfbGlzdCwgYWdlbnRfZGVidWdnaW5nX3V0aWxpdGllcykKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFnZW50X3JlbW92ZV9saXN0X2RhdGEsIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNldF9hbGxfcmVxdWVzdHNfZXJyb3IsIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFkZHJjYWNoZV9hZ2UsIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRlbGV0ZV9zdWJ0cmVlX2NhY2hlLCBuZXRzbm1wX3VudXNlZCkKKworCiBORVRTTk1QX0lOTElORSB2b2lkCiBuZXRzbm1wX2FnZW50X2FkZF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqbm9kZSkKQEAgLTEyMCw2ICsxNDAsNyBAQAogICAgIH0KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FHRU5UX1JFTU9WRV9MSVNUX0RBVEEKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9hZ2VudF9yZW1vdmVfbGlzdF9kYXRhKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIG5hbWUpCkBAIC0xMjksNiArMTUwLDcgQEAKIAogICAgIHJldHVybiBuZXRzbm1wX3JlbW92ZV9saXN0X25vZGUoJmFyaS0+YWdlbnRfZGF0YSwgbmFtZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BR0VOVF9SRU1PVkVfTElTVF9EQVRBICovCiAKIE5FVFNOTVBfSU5MSU5FIHZvaWQgICAgKgogbmV0c25tcF9hZ2VudF9nZXRfbGlzdF9kYXRhKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmksCkBAIC0xODEsNyArMjAzLDcgQEAKIHN0cnVjdCBhZGRyQ2FjaGUgewogICAgIGNoYXIgICAgICAgICAgICphZGRyOwogICAgIGludCAgICAgICAgICAgIHN0YXR1czsKLSAgICBzdHJ1Y3QgdGltZXZhbCBsYXN0SGl0OworICAgIHN0cnVjdCB0aW1ldmFsIGxhc3RIaXRNOwogfTsKIAogc3RhdGljIHN0cnVjdCBhZGRyQ2FjaGUgYWRkckNhY2hlW1NOTVBfQUREUkNBQ0hFX1NJWkVdOwpAQCAtMjI3LDExICsyNDksMTMgQEAKIAogaW50ICAgICAgbmV0c25tcF9ydW5uaW5nID0gMTsKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FMTE9DQVRFX0dMT0JBTENBQ0hFSUQKIGludAogbmV0c25tcF9hbGxvY2F0ZV9nbG9iYWxjYWNoZWlkKHZvaWQpCiB7CiAgICAgcmV0dXJuICsrY3VycmVudF9nbG9iYWxpZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FMTE9DQVRFX0dMT0JBTENBQ0hFSUQgKi8KIAogaW50CiBuZXRzbm1wX2dldF9sb2NhbF9jYWNoaWQobmV0c25tcF9jYWNoZW1hcCAqY2FjaGVfc3RvcmUsIGludCBnbG9iYWxpZCkKQEAgLTU5NCwxNSArNjE4LDcgQEAKICAgICB9CiB9CiAKLQotaW50Ci1nZXROZXh0U2Vzc0lEKHZvaWQpCi17Ci0gICAgc3RhdGljIGludCAgICAgIFNlc3Npb25JRCA9IDA7Ci0KLSAgICByZXR1cm4gKytTZXNzaW9uSUQ7Ci19Ci0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BR0VOVF9DSEVDS19BTkRfUFJPQ0VTUwogLyoqCiAgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyBmb3IgcGFja2V0cyBhcnJpdmluZyBvbiB0aGUgU05NUCBwb3J0IGFuZAogICogcHJvY2Vzc2VzIHRoZW0oc25tcF9yZWFkKSBpZiBzb21lIGFyZSBmb3VuZCwgdXNpbmcgdGhlIHNlbGVjdCgpLiBJZiBibG9jawpAQCAtNjg1LDcgKzcwMSw3IEBACiAKICAgICByZXR1cm4gY291bnQ7CiB9Ci0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FHRU5UX0NIRUNLX0FORF9QUk9DRVNTICovCiAKIC8qCiAgKiBTZXQgdXAgdGhlIGFkZHJlc3MgY2FjaGUuICAKQEAgLTc0MSw3ICs3NTcsNyBAQAogICAgIC8qCiAgICAgICogRmlyc3QgZ2V0IHRoZSBjdXJyZW50IGFuZCBvbGRlc3QgYWxsb3dhYmxlIHRpbWVzdGFtcHMKICAgICAgKi8KLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgKHN0cnVjdCB0aW1lem9uZSopIE5VTEwpOworICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKICAgICBhZ2VkLnR2X3NlYyA9IG5vdy50dl9zZWMgLSBTTk1QX0FERFJDQUNIRV9NQVhBR0U7CiAgICAgYWdlZC50dl91c2VjID0gbm93LnR2X3VzZWM7CiAKQEAgLTc2MSw4ICs3NzcsOCBAQAogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogZm91bmQgYSBtYXRjaAogICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGFkZHJDYWNoZVtpXS5sYXN0SGl0ID0gbm93OwotICAgICAgICAgICAgICAgIGlmICh0aW1lcmNtcCgmYWRkckNhY2hlW2ldLmxhc3RIaXQsICZhZ2VkLCA8KSkKKyAgICAgICAgICAgICAgICBhZGRyQ2FjaGVbaV0ubGFzdEhpdE0gPSBub3c7CisgICAgICAgICAgICAgICAgaWYgKHRpbWVyY21wKCZhZGRyQ2FjaGVbaV0ubGFzdEhpdE0sICZhZ2VkLCA8KSkKIAkJICAgIHJjID0gMTsgLyogc2hvdWxkIGhhdmUgZXhwaXJlZCwgc28gaXMgbmV3ICovCiAJCWVsc2UKIAkJICAgIHJjID0gMDsgLyogbm90IGV4cGlyZWQsIHNvIGlzIGV4aXN0aW5nIGVudHJ5ICovCkBAIC03NzIsNyArNzg4LDcgQEAKICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAqIFVzZWQsIGJ1dCBub3QgdGhpcyBhZGRyZXNzLiBjaGVjayBpZiBpdCdzIHN0YWxlLgogICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGlmICh0aW1lcmNtcCgmYWRkckNhY2hlW2ldLmxhc3RIaXQsICZhZ2VkLCA8KSkgeworICAgICAgICAgICAgICAgIGlmICh0aW1lcmNtcCgmYWRkckNhY2hlW2ldLmxhc3RIaXRNLCAmYWdlZCwgPCkpIHsKICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICogU3RhbGUsIHJldXNlCiAgICAgICAgICAgICAgICAgICAgICAqLwpAQCAtNzkwLDggKzgwNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICBpZiAob2xkZXN0IDwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgIG9sZGVzdCA9IGk7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWVyY21wKCZhZGRyQ2FjaGVbaV0ubGFzdEhpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFkZHJDYWNoZVtvbGRlc3RdLmxhc3RIaXQsIDwpKQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aW1lcmNtcCgmYWRkckNhY2hlW2ldLmxhc3RIaXRNLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkckNhY2hlW29sZGVzdF0ubGFzdEhpdE0sIDwpKQogICAgICAgICAgICAgICAgICAgICAgICAgb2xkZXN0ID0gaTsKICAgICAgICAgICAgICAgICB9IC8qIGZyZXNoICovCiAgICAgICAgICAgICB9IC8qIHVzZWQsIG5vIG1hdGNoICovCkBAIC04MDgsNyArODI0LDcgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgYWRkckNhY2hlW3VudXNlZF0uYWRkciA9IHN0cmR1cChhZGRyKTsKICAgICAgICAgICAgIGFkZHJDYWNoZVt1bnVzZWRdLnN0YXR1cyA9IFNOTVBfQUREUkNBQ0hFX1VTRUQ7Ci0gICAgICAgICAgICBhZGRyQ2FjaGVbdW51c2VkXS5sYXN0SGl0ID0gbm93OworICAgICAgICAgICAgYWRkckNhY2hlW3VudXNlZF0ubGFzdEhpdE0gPSBub3c7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7IC8qIE90aGVyd2lzZSwgcmVwbGFjZSBvbGRlc3QgZW50cnkgKi8KICAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCkBAIC04MTgsNyArODM0LDcgQEAKICAgICAgICAgICAgIAogICAgICAgICAgICAgZnJlZShhZGRyQ2FjaGVbb2xkZXN0XS5hZGRyKTsKICAgICAgICAgICAgIGFkZHJDYWNoZVtvbGRlc3RdLmFkZHIgPSBzdHJkdXAoYWRkcik7Ci0gICAgICAgICAgICBhZGRyQ2FjaGVbb2xkZXN0XS5sYXN0SGl0ID0gbm93OworICAgICAgICAgICAgYWRkckNhY2hlW29sZGVzdF0ubGFzdEhpdE0gPSBub3c7CiAgICAgICAgIH0KICAgICAgICAgcmMgPSAxOwogICAgIH0KQEAgLTgzNiwxMSArODUyLDEzIEBACiAgKgogICogYmFja3dhcmRzIGNvbXBhdGFiaWxpdHk7IG5vdCB1c2VkIGFueXdoZXJlCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BRERSQ0FDSEVfQUdFCiB2b2lkCiBuZXRzbm1wX2FkZHJjYWNoZV9hZ2Uodm9pZCkKIHsKICAgICAodm9pZCluZXRzbm1wX2FkZHJjYWNoZV9hZGQoTlVMTCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9BRERSQ0FDSEVfQUdFICovCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCiAgKiBuZXRzbm1wX2FnZW50X2NoZWNrX3BhY2tldApAQCAtOTcxLDkgKzk4OSwxMSBAQAogICAgICAgICAgICAgY2FzZSBTTk1QX01TR19SRVNQT05TRToKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfREVCVUcsICIgIFJFU1BPTlNFIG1lc3NhZ2VcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfU0VUOgogICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19ERUJVRywgIiAgU0VUIG1lc3NhZ2VcbiIpOwogICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgY2FzZSBTTk1QX01TR19UUkFQOgogICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19ERUJVRywgIiAgVFJBUCBtZXNzYWdlXG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTk5MSw2ICsxMDExLDcgQEAKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfREVCVUcsICIgIFJFUE9SVCBtZXNzYWdlXG4iKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX1JFU0VSVkUxOgogICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19ERUJVRywgIiAgSU5URVJOQUwgUkVTRVJWRTEgbWVzc2FnZVxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDE0LDYgKzEwMzUsNyBAQAogICAgICAgICAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfVU5ETzoKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfREVCVUcsICIgIElOVEVSTkFMIFVORE8gbWVzc2FnZVxuIik7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCAiICBVTktOT1dOIG1lc3NhZ2UsIHR5cGU9JTAyWFxuIiwKQEAgLTEwNzUsNyArMTA5Nyw2IEBACiAgICAgYWdlbnRfbnNhcCAgICAgKmEgPSBOVUxMLCAqbiA9IE5VTEwsICoqcHJldk5leHQgPSAmYWdlbnRfbnNhcF9saXN0OwogICAgIGludCAgICAgICAgICAgICBoYW5kbGUgPSAwOwogICAgIHZvaWQgICAgICAgICAgICppc3AgPSBOVUxMOwotICAgIGludCAgICAgICAgICAgICByYzsKIAogICAgIGlmICh0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTEwOCw3ICsxMTI5LDcgQEAKIAogICAgIC8qIE9wdGlvbmFsIHN1cHBsaW1lbnRhbCB0cmFuc3BvcnQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQKICAgICAgICBmaW5hbCBjYWxsIHRvIGFjdHVhbGx5IG9wZW4gdGhlIHRyYW5zcG9ydCAqLwotICAgIGlmICgocmMgPSBuZXRzbm1wX3Nlc3NfY29uZmlnX3RyYW5zcG9ydChzLT50cmFuc3BvcnRfY29uZmlndXJhdGlvbiwgdCkpCisgICAgaWYgKG5ldHNubXBfc2Vzc19jb25maWdfdHJhbnNwb3J0KHMtPnRyYW5zcG9ydF9jb25maWd1cmF0aW9uLCB0KQogICAgICAgICAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKICAgICAgICAgU05NUF9GUkVFKHMpOwogICAgICAgICBTTk1QX0ZSRUUobik7CkBAIC0xMjYzLDYgKzEyODQsNyBAQAogICAgICAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAvKiAgTm8gZXJyb3IgaWYgISBNQVNURVJfQUdFTlQgICovCiAgICAgfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICAgICAvKgogICAgICAqIEhhdmUgc3BlY2lmaWMgYWdlbnQgcG9ydHMgYmVlbiBzcGVjaWZpZWQ/ICAKICAgICAgKi8KQEAgLTEzMzIsNiArMTM1NCw3IEBACiAgICAgICAgIH0KICAgICB9IHdoaWxlKHN0ICYmICpzdCAhPSAnXDAnKTsKICAgICBTTk1QX0ZSRUUoYnVmKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAKICNpZmRlZiBVU0lOR19BR0VOVFhfTUFTVEVSX01PRFVMRQogICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIApAQCAtMTQxMCwxMiArMTQzMyw4IEBACiAgICAgICAgIHNubXBfZnJlZV9wZHUoYXNwLT5wZHUpOwogICAgIGlmIChhc3AtPnJlcWluZm8pCiAgICAgICAgIG5ldHNubXBfZnJlZV9hZ2VudF9yZXF1ZXN0X2luZm8oYXNwLT5yZXFpbmZvKTsKLSAgICBpZiAoYXNwLT50cmVlY2FjaGUpIHsKLSAgICAgICAgU05NUF9GUkVFKGFzcC0+dHJlZWNhY2hlKTsKLSAgICB9Ci0gICAgaWYgKGFzcC0+YnVsa2NhY2hlKSB7Ci0gICAgICAgIFNOTVBfRlJFRShhc3AtPmJ1bGtjYWNoZSk7Ci0gICAgfQorICAgIFNOTVBfRlJFRShhc3AtPnRyZWVjYWNoZSk7CisgICAgU05NUF9GUkVFKGFzcC0+YnVsa2NhY2hlKTsKICAgICBpZiAoYXNwLT5yZXF1ZXN0cykgewogICAgICAgICBpbnQgICAgICAgICAgICAgaTsKICAgICAgICAgZm9yIChpID0gMDsgaSA8IGFzcC0+dmJjb3VudDsgaSsrKSB7CkBAIC0xNjAwLDkgKzE2MTksNiBAQAogaW50CiBuZXRzbm1wX3dyYXBfdXBfcmVxdWVzdChuZXRzbm1wX2FnZW50X3Nlc3Npb24gKmFzcCwgaW50IHN0YXR1cykKIHsKLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcl9wdHI7Ci0gICAgaW50ICAgICAgICAgICAgIGk7Ci0KICAgICAvKgogICAgICAqIGlmIHRoaXMgcmVxdWVzdCB3YXMgYSBzZXQsIGNsZWFyIHRoZSBnbG9iYWwgbm93IHRoYXQgd2UgYXJlCiAgICAgICogZG9uZS4KQEAgLTE2MjIsNiArMTYzOCw3IEBACiAgICAgICAgICAgICBhc3AtPnN0YXR1cyA9IHN0YXR1czsKIAogICAgICAgICBzd2l0Y2ggKGFzcC0+cGR1LT5jb21tYW5kKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfQkVHSU46CiAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMToKICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX1JFU0VSVkUyOgpAQCAtMTYzMSw2ICsxNjQ4LDcgQEAKICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBzYXZlX3NldF9jYWNoZShhc3ApOwogICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CiAgICAgICAgICAgICAgICAgX2ZpeF9lbmRvZm1pYnZpZXcoYXNwKTsKQEAgLTE2NDksNiArMTY2Nyw3IEBACiAgICAgICAgICAqIHYxIHF1ZXJ5LiAgU2VlIFJGQzI1NzYgLSBzZWN0aW9uIDQuMwogICAgICAgICAgKi8KICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKChhc3AtPnBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19TRVQpICYmCiAgICAgICAgICAgICAoYXNwLT5wZHUtPnZlcnNpb24gPT0gU05NUF9WRVJTSU9OXzEpKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGFzcC0+c3RhdHVzKSB7CkBAIC0xNjgzLDggKzE3MDIsMTAgQEAKICAgICAgICAgICovCiAgICAgICAgIGlmICgoYXNwLT5wZHUtPmNvbW1hbmQgIT0gU05NUF9NU0dfU0VUKSAmJgogICAgICAgICAgICAgKGFzcC0+cGR1LT52ZXJzaW9uID09IFNOTVBfVkVSU0lPTl8xKSkgewotICAgICAgICAgICAgZm9yICh2YXJfcHRyID0gYXNwLT5wZHUtPnZhcmlhYmxlcywgaSA9IDE7Ci0gICAgICAgICAgICAgICAgIHZhcl9wdHIgIT0gTlVMTDsgdmFyX3B0ciA9IHZhcl9wdHItPm5leHRfdmFyaWFibGUsIGkrKykgeworICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJfcHRyID0gYXNwLT5wZHUtPnZhcmlhYmxlczsKKyAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgaSA9IDE7CisKKyAgICAgICAgICAgIHdoaWxlICh2YXJfcHRyICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhcl9wdHItPnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBTTk1QX05PU1VDSE9CSkVDVDoKICAgICAgICAgICAgICAgICAgICAgY2FzZSBTTk1QX05PU1VDSElOU1RBTkNFOgpAQCAtMTY5NSw4ICsxNzE2LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhc3AtPmluZGV4ID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXJfcHRyID0gdmFyX3B0ci0+bmV4dF92YXJpYWJsZTsKKyAgICAgICAgICAgICAgICArK2k7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICNlbmRpZiAvKiBzbm1wdjEgc3VwcG9ydCAqLwogICAgIH0gLyoqIGlmIGFzcC0+cGR1ICovCiAKQEAgLTE3NDIsMTAgKzE3NjYsMTYgQEAKICAgICB9CiAKICAgICBpZiAoKHN0YXR1cyA9PSBTTk1QX0VSUl9OT0VSUk9SKSAmJiAoYXNwLT5wZHUpKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWNfYnkoKGFzcC0+cGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1NFVCA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBVF9TTk1QSU5UT1RBTFNFVFZBUlMgOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVRfU05NUElOVE9UQUxSRVFWQVJTKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50X3ZhcmJpbmRzKGFzcC0+cGR1LT52YXJpYWJsZXMpKTsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWNfYnkoU1RBVF9TTk1QSU5UT1RBTFJFUVZBUlMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudF92YXJiaW5kcyhhc3AtPnBkdS0+dmFyaWFibGVzKSk7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICAgICB9IGVsc2UgewogICAgICAgICAvKgogICAgICAgICAgKiBVc2UgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCByZXF1ZXN0CkBAIC0xNzkwLDYgKzE4MjAsNyBAQAogICAgIHJldHVybiAxOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRFVNUF9TRVNTX0xJU1QKIHZvaWQKIGR1bXBfc2Vzc19saXN0KHZvaWQpCiB7CkBAIC0xODAxLDYgKzE4MzIsNyBAQAogICAgIH0KICAgICBERUJVR01TRygoInNubXBfYWdlbnQiLCAiW05JTF1cbiIpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RVTVBfU0VTU19MSVNUICovCiAKIHZvaWQKIG5ldHNubXBfcmVtb3ZlX2FuZF9mcmVlX2FnZW50X3NubXBfc2Vzc2lvbihuZXRzbm1wX2FnZW50X3Nlc3Npb24gKmFzcCkKQEAgLTE4MjksNiArMTg2MSw3IEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRlJFRV9BR0VOVF9TTk1QX1NFU1NJT05fQllfU0VTU0lPTgogdm9pZAogbmV0c25tcF9mcmVlX2FnZW50X3NubXBfc2Vzc2lvbl9ieV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKmZyZWVfcmVxdWVzdCkKQEAgLTE4NDksNiArMTg4Miw3IEBACiAgICAgICAgIH0KICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GUkVFX0FHRU5UX1NOTVBfU0VTU0lPTl9CWV9TRVNTSU9OICovCiAKIC8qKiBoYW5kbGVzIGFuIGluY29taW5nIFNOTVAgcGFja2V0IGludG8gdGhlIGFnZW50ICovCiBpbnQKQEAgLTE5NjYsNyArMjAwMCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc3VidHJlZSAqdHApCiB7CiAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3QgPSBOVUxMOwotICAgIGludCAgICAgICAgICAgICBjYWNoZWlkOwogCiAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiYWRkX3ZiX3RvX2NhY2hlKCU4cCwgJWQsICIsIGFzcCwgdmJjb3VudCkpOwogICAgIERFQlVHTVNHT0lEKCgic25tcF9hZ2VudCIsIHZhcmJpbmRfcHRyLT5uYW1lLApAQCAtMjAzMCw3ICsyMDYzLDkgQEAKICAgICAgICAgICAgIHZhcmJpbmRfcHRyLT50eXBlID0gU05NUF9FTkRPRk1JQlZJRVc7CiAgICAgICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBTTk1QX01TR19TRVQ6CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGNhc2UgU05NUF9NU0dfR0VUOgogICAgICAgICAgICAgdmFyYmluZF9wdHItPnR5cGUgPSBTTk1QX05PU1VDSE9CSkVDVDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAzOSw2ICsyMDc0LDggQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgLyogc2hvdWxkbid0IGdldCBoZXJlICovCiAgICAgICAgIH0KICAgICB9IGVsc2UgeworICAgICAgICBpbnQgY2FjaGVpZDsKKwogICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJ0cC0+c3RhcnQgIikpOwogICAgICAgICBERUJVR01TR09JRCgoInNubXBfYWdlbnQiLCB0cC0+c3RhcnRfYSwgdHAtPnN0YXJ0X2xlbikpOwogICAgICAgICBERUJVR01TRygoInNubXBfYWdlbnQiLCAiLCB0cC0+ZW5kICIpKTsKQEAgLTIwNjQsOCArMjEwMSwxMCBAQAogICAgICAgICAvKgogICAgICAgICAgKiBmb3Igbm9uLVNFVCBtb2Rlcywgc2V0IHRoZSB0eXBlIHRvIE5VTEwgCiAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKCFNT0RFX0lTX1NFVChhc3AtPnBkdS0+Y29tbWFuZCkpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6YXNwIiwgImFzcCAlcCByZXFpbmZvICVwIGFzc2lnbmVkIHRvIHJlcXVlc3RcbiIsCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTphc3AiLCAiYXNwICVwIHJlcWluZm8gJXAgYXNzaWduZWQgdG8gcmVxdWVzdFxuIiwKICAgICAgICAgICAgICAgICAgICAgYXNwLCBhc3AtPnJlcWluZm8pKTsKICAgICAgICAgICAgIGlmICh2YXJiaW5kX3B0ci0+dHlwZSA9PSBBU05fUFJJVl9JTkNMX1JBTkdFKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAidmFyYmluZCAlZCBpcyBpbmNsdXNpdmVcbiIsCkBAIC0yMDczLDcgKzIxMTIsOSBAQAogICAgICAgICAgICAgICAgIHJlcXVlc3QtPmluY2x1c2l2ZSA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB2YXJiaW5kX3B0ci0+dHlwZSA9IEFTTl9OVUxMOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIHBsYWNlIHRoZW0gaW4gYSBjYWNoZSAKQEAgLTI0MDAsNiArMjQ0MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOwogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGNhc2UgU05NUF9NU0dfU0VUOgogICAgICAgICAgICAgdmlldyA9IGluX2Ffdmlldyh2YXJiaW5kX3B0ci0+bmFtZSwgJnZhcmJpbmRfcHRyLT5uYW1lX2xlbmd0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNwLT5wZHUsIHZhcmJpbmRfcHRyLT50eXBlKTsKQEAgLTI0MDgsNiArMjQ1MCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PQUNDRVNTOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgY2FzZSBTTk1QX01TR19HRVRORVhUOgogICAgICAgICBjYXNlIFNOTVBfTVNHX0dFVEJVTEs6CkBAIC0yNDc4LDEwICsyNTIxLDcgQEAKICAgICAgICAgICAgIGlmICghbmV0c25tcF9hZGRfdmFyYmluZF90b19jYWNoZShhc3AsIGFzcC0+cmVxdWVzdHNbaV0uaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNwLT5yZXF1ZXN0c1tpXS5yZXF1ZXN0dmIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNwLT5yZXF1ZXN0c1tpXS5zdWJ0cmVlLT5uZXh0KSkgewotICAgICAgICAgICAgICAgIGlmIChvbGRfdHJlZWNhY2hlICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgU05NUF9GUkVFKG9sZF90cmVlY2FjaGUpOwotICAgICAgICAgICAgICAgICAgICBvbGRfdHJlZWNhY2hlID0gTlVMTDsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKG9sZF90cmVlY2FjaGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGFzcC0+cmVxdWVzdHNbaV0ucmVxdWVzdHZiLT50eXBlID09IEFTTl9QUklWX1JFVFJZKSB7CiAgICAgICAgICAgICAvKgpAQCAtMjQ5MSwxNyArMjUzMSwxMiBAQAogICAgICAgICAgICAgaWYgKCFuZXRzbm1wX2FkZF92YXJiaW5kX3RvX2NhY2hlKGFzcCwgYXNwLT5yZXF1ZXN0c1tpXS5pbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3AtPnJlcXVlc3RzW2ldLnJlcXVlc3R2YiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3AtPnJlcXVlc3RzW2ldLnN1YnRyZWUpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9sZF90cmVlY2FjaGUgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob2xkX3RyZWVjYWNoZSk7Ci0gICAgICAgICAgICAgICAgICAgIG9sZF90cmVlY2FjaGUgPSBOVUxMOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob2xkX3RyZWVjYWNoZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAob2xkX3RyZWVjYWNoZSAhPSBOVUxMKSB7Ci0gICAgICAgIFNOTVBfRlJFRShvbGRfdHJlZWNhY2hlKTsKLSAgICB9CisgICAgU05NUF9GUkVFKG9sZF90cmVlY2FjaGUpOwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCkBAIC0yNTE0LDYgKzI1NDksNyBAQAogICAgIH0KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFTEVURV9TVUJUUkVFX0NBQ0hFCiB2b2lkCiBuZXRzbm1wX2RlbGV0ZV9zdWJ0cmVlX2NhY2hlKG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYXNwKQogewpAQCAtMjUyNiw3ICsyNTYyLDkgQEAKICAgICAgICAgYXNwLT50cmVlY2FjaGVfbnVtLS07CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVMRVRFX1NVQlRSRUVfQ0FDSEUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX0FMTF9SRVFVRVNUU19FUlJPUgogLyoKICAqIGNoZWNrIGFsbCByZXF1ZXN0cyBmb3IgZXJyb3JzCiAgKgpAQCAtMjU1Nyw3ICsyNTk1LDkgQEAKIAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfQUxMX1JFUVVFU1RTX0VSUk9SICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19SRVFVRVNUU19FUlJPUgogaW50CiBuZXRzbm1wX2NoZWNrX3JlcXVlc3RzX2Vycm9yKG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKIHsKQEAgLTI1NzAsNiArMjYxMCw3IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfUkVRVUVTVFNfRVJST1IgKi8KIAogaW50CiBuZXRzbm1wX2NoZWNrX3JlcXVlc3RzX3N0YXR1cyhuZXRzbm1wX2FnZW50X3Nlc3Npb24gKmFzcCwKQEAgLTI2NDUsNiArMjY4Niw3IEBACiAgICAgICAgICAqIGVycm9ycykuCiAgICAgICAgICAqLwogICAgICAgICBzd2l0Y2ggKGFzcC0+bW9kZSkgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiAgICAgICAgICAgICByZXRzdGF0dXMgPSBuZXRzbm1wX2NoZWNrX3JlcXVlc3RzX3N0YXR1cyhhc3AsCiAJCQkJCQkgICAgICBhc3AtPnRyZWVjYWNoZVtpXS4KQEAgLTI2NTgsNiArMjcwMCw3IEBACiAJCQkJCQkgICAgICByZXF1ZXN0c19iZWdpbiwKIAkJCQkJCSAgICAgIFNOTVBfRVJSX1VORE9GQUlMRUQpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHN0YXR1cyA9IG5ldHNubXBfY2hlY2tfcmVxdWVzdHNfc3RhdHVzKGFzcCwKQEAgLTI3NjgsNiArMjgxMSw3IEBACiAgICAgICAgICAqIGlmIHRoZSB0b3AgcmVxdWVzdCBpcyBhIHNldCwgZG9uJ3QgcG9wIGl0CiAgICAgICAgICAqIG9mZiBpZiB0aGVyZSBhcmUgZGVsZWdhdGVkIHJlcXVlc3RzCiAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgaWYgKChuZXRzbm1wX2FnZW50X3F1ZXVlZF9saXN0LT5wZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfU0VUKSAmJgogICAgICAgICAgICAgKGFnZW50X2RlbGVnYXRlZF9saXN0KSkgewogCkBAIC0yNzc4LDYgKzI4MjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImRlbGVnYXRlZCByZXF1ZXN0cyBmaW5pc2gsIGFzcCA9ICU4cFxuIiwgYXNwKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIHBvcCB0aGUgZmlyc3QgcmVxdWVzdCBhbmQgcHJvY2VzcyBpdApAQCAtMjg0OSw2ICsyODk0LDcgQEAKICAgICAgICAgfQogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKICAgICAgICAgbmV0c25tcF9jaGVja19hbGxfcmVxdWVzdHNfc3RhdHVzKGFzcCwgU05NUF9FUlJfQ09NTUlURkFJTEVEKTsKICAgICAgICAgZ290byBzZXR0b3A7CkBAIC0yODg0LDYgKzI5MzAsNyBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTMwODMsNiArMzEzMCw3IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQKIGhhbmRsZV9zZXQobmV0c25tcF9hZ2VudF9zZXNzaW9uICphc3ApCiB7CkBAIC0zMTgwLDYgKzMyMjgsNyBAQAogICAgIH0KICAgICByZXR1cm4gYXNwLT5zdGF0dXM7CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIGludAogbmV0c25tcF9oYW5kbGVfcmVxdWVzdChuZXRzbm1wX2FnZW50X3Nlc3Npb24gKmFzcCwgaW50IHN0YXR1cykKQEAgLTMyMDcsNiArMzI1Niw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGNoZWNrIGZvciBzZXQgcmVxdWVzdAogICAgICAgICAgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgIGlmIChhc3AtPnBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19TRVQpIHsKICAgICAgICAgICAgIG5ldHNubXBfcHJvY2Vzc2luZ19zZXQgPSBhc3A7CiAKQEAgLTMyMjIsNiArMzI3Miw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAKICAgICAvKgpAQCAtMzI3Myw2ICszMzI0LDcgQEAKICAgICAgKi8KICAgICBzd2l0Y2ggKGFzcC0+cGR1LT5jb21tYW5kKSB7CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfQUNUSU9OOgogICAgIGNhc2UgU05NUF9NU0dfSU5URVJOQUxfU0VUX0NPTU1JVDoKQEAgLTMyODIsNiArMzMzNCw3IEBACiAgICAgICAgIGlmIChzdGF0dXMgIT0gU05NUF9FUlJfTk9FUlJPUikKICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgY2FzZSBTTk1QX01TR19HRVQ6CiAgICAgY2FzZSBTTk1QX01TR19HRVRORVhUOgpAQCAtMzMwNSw4ICszMzU4LDEwIEBACiAgICAgICAgICAqIGZhbGwgdGhyb3VnaCAKICAgICAgICAgICovCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfQkVHSU46CiAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTE6CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgYXNwLT52YmNvdW50ID0gY291bnRfdmFyYmluZHMoYXNwLT5wZHUtPnZhcmlhYmxlcyk7CiAgICAgICAgIGlmIChhc3AtPnZiY291bnQpIC8qIGVmZW5jZSBkb2Vzbid0IGxpa2UgMCBzaXplIGFsbG9jcyAqLwpAQCAtMzM5Niw2ICszNDUxLDcgQEAKICAgICAgICAgc3RhdHVzID0gaGFuZGxlX2dldG5leHRfbG9vcChhc3ApOwogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBfTVNHX1NFVDoKICNpZmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOwpAQCAtMzQyNCw2ICszNDgwLDcgQEAKICAgICAgICAgICogYXNwIHJlbGF0ZWQgY2FjaGUgaXMgc2F2ZWQgaW4gY2xlYW51cCAKICAgICAgICAgICovCiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgY2FzZSBTTk1QX01TR19SRVNQT05TRToKICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfU05NUElOR0VUUkVTUE9OU0VTKTsKQEAgLTM0ODYsOSArMzU0MywxMSBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVkFMVUU7CiAgICAgICAgICAgICAgKi8KIAorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTE6CiAgICAgICAgICAgICByZXF1ZXN0LT5zdGF0dXMgPSBTTk1QX0VSUl9OT0NSRUFUSU9OOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJlcXVlc3QtPnN0YXR1cyA9IFNOTVBfRVJSX05PU1VDSE5BTUU7ICAgICAgLyogV1dXOiBjb3JyZWN0PyAqLwpAQCAtMzUzMiw2ICszNTkxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX3ZhbHVlKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JFUVVFU1RfU0VUX0VSUk9SX0lEWAogLyoqIHNldCBlcnJvciBmb3IgYSByZXF1ZXN0IHdpdGhpbiBhIHJlcXVlc3QgbGlzdAogICogQHBhcmFtIHJlcXVlc3QgaGVhZCBvZiB0aGUgcmVxdWVzdCBsaXN0CiAgKiBAcGFyYW0gZXJyb3JfdmFsdWUgZXJyb3IgdmFsdWUgZm9yIHJlcXVlc3QKQEAgLTM1NTksNiArMzYxOSw3IEBACiAgICAgcmV0dXJuIF9yZXF1ZXN0X3NldF9lcnJvcihyZXEsIHJlcXVlc3QtPmFnZW50X3JlcV9pbmZvLT5tb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfdmFsdWUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVRVUVTVF9TRVRfRVJST1JfSURYICovCiAKIC8qKiBzZXQgZXJyb3IgZm9yIGFsbCByZXF1ZXN0cwogICogQHBhcmFtIHJlcXVlc3RzIHJlcXVlc3QgbGlzdApAQCAtMzU5NCwxMSArMzY1NSwxMSBAQAogfQogCiAvKioKLSAqIFJldHVybiB0aGUgdmFsdWUgb2YgJ3N5c1VwVGltZScgYXQgdGhlIGdpdmVuIG1hcmtlcgorICogUmV0dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gcG0gYW5kIHRoZSBhZ2VudCBzdGFydCB0aW1lIGluIGh1bmRyZWR0aHMgb2YKKyAqIGEgc2Vjb25kLgorICogXGRlcHJlY2F0ZWQgRG9uJ3QgdXNlIGluIG5ldyBjb2RlLgogICoKLSAqIEBub3RlIFVzZSBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkgaW5zdGVhZCBvZiB0aGlzIGZ1bmN0aW9uIGlmIHlvdSBuZWVkCi0gKiAgIHRvIGtub3cgaG93IG11Y2ggdGltZSBlbGFwc2VkIHNpbmNlIG5ldHNubXBfc2V0X2FnZW50X3N0YXJ0dGltZSgpIGhhcyBiZWVuCi0gKiAgIGNhbGxlZC4KKyAqIEBwYXJhbVtpbl0gcG0gQW4gYWJzb2x1dGUgdGltZSBhcyBlLmcuIHJlcG9ydGVkIGJ5IGdldHRpbWVvZmRheSgpLgogICovCiB1X2xvbmcKIG5ldHNubXBfbWFya2VyX3VwdGltZShtYXJrZXJfdCBwbSkKQEAgLTM2MTAsOSArMzY3MSwxNCBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAgICAgICAgKiBzdHJ1Y3QgdGltZXZhbCBlcXVpdmFsZW50cyBvZiB0aGVzZSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqCisgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0diBhbmQgdGhlIGFnZW50IHN0YXJ0IHRpbWUgaW4gaHVuZHJlZHRocyBvZgorICogYSBzZWNvbmQuCisgKgorICogXGRlcHJlY2F0ZWQgVXNlIG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpIGluc3RlYWQuCisgKgorICogQHBhcmFtW2luXSB0diBBbiBhYnNvbHV0ZSB0aW1lIGFzIGUuZy4gcmVwb3J0ZWQgYnkgZ2V0dGltZW9mZGF5KCkuCisgKi8KIHVfbG9uZwogbmV0c25tcF90aW1ldmFsX3VwdGltZShzdHJ1Y3QgdGltZXZhbCAqIHR2KQogewpAQCAtMzYyMSwxMCArMzY4NywxNSBAQAogCiAKIHN0cnVjdCB0aW1ldmFsICBzdGFydHRpbWU7CitzdGF0aWMgc3RydWN0IHRpbWV2YWwgc3RhcnR0aW1lTTsKIAogLyoqCiAgKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSB2YXJpYWJsZSBpbiB3aGljaCB0aGUgTmV0LVNOTVAgc3RhcnQgdGltZSBoYXMKICAqIGJlZW4gc3RvcmVkLgorICoKKyAqIEBub3RlIFVzZSBuZXRzbm1wX2dldF9hZ2VudF9ydW50aW1lKCkgaW5zdGVhZCBvZiB0aGlzIGZ1bmN0aW9uIGlmIHlvdSBuZWVkCisgKiAgIHRvIGtub3cgaG93IG11Y2ggdGltZSBlbGFwc2VkIHNpbmNlIG5ldHNubXBfc2V0X2FnZW50X3N0YXJ0dGltZSgpIGhhcyBiZWVuCisgKiAgIGNhbGxlZC4KICAqLwogY29uc3RfbWFya2VyX3QgICAgICAgIAogbmV0c25tcF9nZXRfYWdlbnRfc3RhcnR0aW1lKHZvaWQpCkBAIC0zNjQzLDQ4ICszNzE0LDcwIEBACiB7CiAgICAgc3RydWN0IHRpbWV2YWwgbm93LCBkZWx0YTsKIAotICAgIGdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsKLSAgICBORVRTTk1QX1RJTUVSU1VCKCZub3csICZzdGFydHRpbWUsICZkZWx0YSk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3cpOworICAgIE5FVFNOTVBfVElNRVJTVUIoJm5vdywgJnN0YXJ0dGltZU0sICZkZWx0YSk7CiAgICAgcmV0dXJuIGRlbHRhLnR2X3NlYyAqICh1aW50NjRfdCkxMDAgKyBkZWx0YS50dl91c2VjIC8gMTAwMDA7CiB9CiAKIC8qKgogICogU2V0IHRoZSB0aW1lIGF0IHdoaWNoIE5ldC1TTk1QIHN0YXJ0ZWQgZWl0aGVyIHRvIHRoZSBjdXJyZW50IHRpbWUKICAqIChpZiBzID09IE5VTEwpIG9yIHRvICpzIChpZiBzIGlzIG5vdCBOVUxMKS4KKyAqCisgKiBAc2VlIFNlZSBhbHNvIG5ldHNubXBfc2V0X2FnZW50X3VwdGltZSgpLgogICovCiB2b2lkICAgICAgICAgICAgCiBuZXRzbm1wX3NldF9hZ2VudF9zdGFydHRpbWUobWFya2VyX3QgcykKIHsKLSAgICBpZiAocykKKyAgICBpZiAocykgeworICAgICAgICBzdHJ1Y3QgdGltZXZhbCBub3dBLCBub3dNOworCiAgICAgICAgIHN0YXJ0dGltZSA9ICooc3RydWN0IHRpbWV2YWwqKXM7Ci0gICAgZWxzZQorICAgICAgICBnZXR0aW1lb2ZkYXkoJm5vd0EsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vd00pOworICAgICAgICBORVRTTk1QX1RJTUVSU1VCKCZzdGFydHRpbWUsICZub3dBLCAmc3RhcnR0aW1lTSk7CisgICAgICAgIE5FVFNOTVBfVElNRVJBREQoJnN0YXJ0dGltZU0sICZub3dNLCAmc3RhcnR0aW1lTSk7CisgICAgfSBlbHNlIHsKICAgICAgICAgZ2V0dGltZW9mZGF5KCZzdGFydHRpbWUsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnN0YXJ0dGltZU0pOworICAgIH0KIH0KIAogCi0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBSZXR1cm4gdGhlIGN1cnJlbnQgdmFsdWUgb2YgJ3N5c1VwVGltZScgCi0gICAgICAgICAgICAgICAgICovCisvKioKKyAqIFJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBvZiAnc3lzVXBUaW1lJyAKKyAqLwogdV9sb25nCiBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUodm9pZCkKIHsKLSAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OwotICAgIGdldHRpbWVvZmRheSgmbm93LCBOVUxMKTsKKyAgICBzdHJ1Y3QgdGltZXZhbCBub3csIGRlbHRhOwogCi0gICAgcmV0dXJuIG5ldHNubXBfdGltZXZhbF91cHRpbWUoJm5vdyk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3cpOworICAgIE5FVFNOTVBfVElNRVJTVUIoJm5vdywgJnN0YXJ0dGltZU0sICZkZWx0YSk7CisgICAgcmV0dXJuIGRlbHRhLnR2X3NlYyAqIDEwMFVMICsgZGVsdGEudHZfdXNlYyAvIDEwMDAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VUX0FHRU5UX1VQVElNRQorLyoqCisgKiBTZXQgdGhlIHN0YXJ0IHRpbWUgZnJvbSB3aGljaCAnc3lzVXBUaW1lJyBpcyBjb21wdXRlZC4KKyAqCisgKiBAcGFyYW1baW5dIGhzZWMgTmV3IHN5c1VwVGltZSBpbiBodW5kcmVkdGhzIG9mIGEgc2Vjb25kLgorICoKKyAqIEBzZWUgU2VlIGFsc28gbmV0c25tcF9zZXRfYWdlbnRfc3RhcnR0aW1lKCkuCisgKi8KIHZvaWQKIG5ldHNubXBfc2V0X2FnZW50X3VwdGltZSh1X2xvbmcgaHNlYykKIHsKLSAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OworICAgIHN0cnVjdCB0aW1ldmFsICBub3dBLCBub3dNOwogICAgIHN0cnVjdCB0aW1ldmFsICBuZXdfdXB0aW1lOwogCi0gICAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOworICAgIGdldHRpbWVvZmRheSgmbm93QSwgTlVMTCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3dNKTsKICAgICBuZXdfdXB0aW1lLnR2X3NlYyA9IGhzZWMgLyAxMDA7Ci0gICAgbmV3X3VwdGltZS50dl91c2VjID0gKGhzZWMgLSBuZXdfdXB0aW1lLnR2X3NlYyAqIDEwMCkgKiAxMDAwMEw7Ci0gICAgTkVUU05NUF9USU1FUlNVQigmbm93LCAmbmV3X3VwdGltZSwgJnN0YXJ0dGltZSk7CisgICAgbmV3X3VwdGltZS50dl91c2VjID0gKHVpbnQzMl90KShoc2VjIC0gbmV3X3VwdGltZS50dl9zZWMgKiAxMDApICogMTAwMDBMOworICAgIE5FVFNOTVBfVElNRVJTVUIoJm5vd0EsICZuZXdfdXB0aW1lLCAmc3RhcnR0aW1lKTsKKyAgICBORVRTTk1QX1RJTUVSU1VCKCZub3dNLCAmbmV3X3VwdGltZSwgJnN0YXJ0dGltZU0pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VUX0FHRU5UX1VQVElNRSAqLwogCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0zNzM1LDYgKzM4MjgsNyBAQAogICogQHBhcmFtIGVycm9yX3ZhbHVlIGVycm9yIHZhbHVlIGZvciByZXF1ZXN0cwogICogQHJldHVybiBlcnJvcl92YWx1ZQogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VUX0FMTF9SRVFVRVNUU19FUlJPUgogaW50CiBuZXRzbm1wX3NldF9hbGxfcmVxdWVzdHNfZXJyb3IobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzLApAQCAtMzc0Myw0ICszODM3LDUgQEAKICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgZXJyb3JfdmFsdWUpOwogICAgIHJldHVybiBlcnJvcl92YWx1ZTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NFVF9BTExfUkVRVUVTVFNfRVJST1IgKi8KIC8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcF9wZXJsLmMgYi9hZ2VudC9zbm1wX3BlcmwuYwppbmRleCAzZjBhMjE2Li40OGQ5Njk1IDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wX3BlcmwuYworKysgYi9hZ2VudC9zbm1wX3BlcmwuYwpAQCAtMzYsNiArMzYsNyBAQAogICAgIGNvbnN0IGNoYXIgICAgICpwZXJsX2luaXRfZmlsZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogCQkJCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfUEVSTF9JTklUX0ZJTEUpOwogICAgIGNoYXIgICAgICAgICAgICBpbml0X2ZpbGVbU05NUF9NQVhCVUZdOworICAgIGludCAgICAgICAgICAgICByZXM7CiAKICAgICBzdGF0aWMgaW50ICAgICAgaGF2ZV9kb25lX2luaXQgPSAwOwogCkBAIC01Nyw4ICs1OCwxMSBAQAogICAgIGVudiA9IE5VTEw7CiAgICAgUEVSTF9TWVNfSU5JVDMoJmFyZ2MsICZhcmd2LCAmZW52KTsKICAgICBteV9wZXJsID0gcGVybF9hbGxvYygpOwotICAgIGlmICghbXlfcGVybCkKKyAgICBpZiAoIW15X3BlcmwpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImVtYmVkZGVkIHBlcmwgc3VwcG9ydCBmYWlsZWQgdG8gaW5pdGlhbGl6ZSAocGVybF9hbGxvYygpKVxuIik7CiAgICAgICAgIGdvdG8gYmFpbF9vdXQ7CisgICAgfQogCiAgICAgcGVybF9jb25zdHJ1Y3QobXlfcGVybCk7CiAKQEAgLTY2LDExICs3MCwyMSBAQAogICAgIFBMX2V4aXRfZmxhZ3MgfD0gUEVSTF9FWElUX0RFU1RSVUNUX0VORDsKICNlbmRpZgogCi0gICAgaWYgKHBlcmxfcGFyc2UobXlfcGVybCwgeHNfaW5pdCwgMiwgZW1iZWRhcmdzLCBOVUxMKSkKKyAgICByZXMgPSBwZXJsX3BhcnNlKG15X3BlcmwsIHhzX2luaXQsIDIsIGVtYmVkYXJncywgTlVMTCk7CisgICAgaWYgKHJlcykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZW1iZWRkZWQgcGVybCBzdXBwb3J0IGZhaWxlZCB0byBpbml0aWFsaXplIChwZXJsX3BhcnNlKCVzKSIKKyAgICAgICAgICAgICAgICAgIiByZXR1cm5lZCAlZClcbiIsIGVtYmVkYXJnc1sxXSwgcmVzKTsKICAgICAgICAgZ290byBiYWlsX291dDsKKyAgICB9CiAKLSAgICBpZiAocGVybF9ydW4obXlfcGVybCkpCisgICAgcmVzID0gcGVybF9ydW4obXlfcGVybCk7CisgICAgaWYgKHJlcykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZW1iZWRkZWQgcGVybCBzdXBwb3J0IGZhaWxlZCB0byBpbml0aWFsaXplIChwZXJsX3J1bigpIgorICAgICAgICAgICAgICAgICAiIHJldHVybmVkICVkKVxuIiwgcmVzKTsKICAgICAgICAgZ290byBiYWlsX291dDsKKyAgICB9CiAKICAgICBmcmVlKGVtYmVkYXJnc1swXSk7CiAgICAgZnJlZShlbWJlZGFyZ3NbMV0pOwpAQCAtODIsNyArOTYsNiBAQAogICBiYWlsX291dDoKICAgICBmcmVlKGVtYmVkYXJnc1swXSk7CiAgICAgZnJlZShlbWJlZGFyZ3NbMV0pOwotICAgIHNubXBfbG9nKExPR19FUlIsICJlbWJlZGRlZCBwZXJsIHN1cHBvcnQgZmFpbGVkIHRvIGluaXRpYWxpemVcbiIpOwogICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgICBORVRTTk1QX0RTX0FHRU5UX0RJU0FCTEVfUEVSTCwgMSk7CiAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcF92YXJzLmMgYi9hZ2VudC9zbm1wX3ZhcnMuYwppbmRleCBhNGVhMzc5Li4yZjllNmVmIDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wX3ZhcnMuYworKysgYi9hZ2VudC9zbm1wX3ZhcnMuYwpAQCAtMzc1LDcgKzM3NSw3IEBACiAgICAgY2xlYXJfc2VjX21vZCgpOwogICAgIGNsZWFyX3NubXBfZW51bSgpOwogICAgIGNsZWFyX2NhbGxiYWNrKCk7Ci0gICAgY2xlYXJfdXNlcl9saXN0KCk7CisgICAgc2h1dGRvd25fc2VjbW9kKCk7CiAgICAgbmV0c25tcF9hZGRyY2FjaGVfZGVzdHJveSgpOwogI2lmZGVmIE5FVFNOTVBfQ0FOX1VTRV9OTElTVAogICAgIGZyZWVfa21lbSgpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcGQuYyBiL2FnZW50L3NubXBkLmMKaW5kZXggYjNjZmUzMi4uY2ZjN2JjZSAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcGQuYworKysgYi9hZ2VudC9zbm1wZC5jCkBAIC0zNiw2ICszNiw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogCiAjaWYgSEFWRV9JT19ICkBAIC0xMTEsNiArMTEyLDkgQEAKICNpZiBIQVZFX0dSUF9ICiAjaW5jbHVkZSA8Z3JwLmg+CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0NSVERCR19ICisjaW5jbHVkZSA8Y3J0ZGJnLmg+CisjZW5kaWYKIAogI2lmbmRlZiBQQVRIX01BWAogIyBpZmRlZiBfUE9TSVhfUEFUSF9NQVgKQEAgLTEzNiwxOSArMTQwLDE3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaD4KIAogI2luY2x1ZGUgIm0ybS5oIgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oPgogCiAjaW5jbHVkZSAic25tcGQuaCIKLSNpbmNsdWRlICJtaWJncm91cC9zdHJ1Y3QuaCIKLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oPgogCi0jaW5jbHVkZSAibWliZ3JvdXAvdXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmg+Ci0jaW5jbHVkZSAibWliX21vZHVsZV9pbmNsdWRlcy5oIgogCiAvKgogICogSW5jbHVkZSB3aW5zZXJ2aWNlLmggdG8gc3VwcG9ydCBXaW5kb3dzIFNlcnZpY2UKQEAgLTE2Miw2ICsxNjQsMTAgQEAKIAogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV93YW50KGxvZ2dpbmdfZmlsZSkKK25ldHNubXBfZmVhdHVyZV93YW50KGxvZ2dpbmdfc3RkaW8pCituZXRzbm1wX2ZlYXR1cmVfd2FudChsb2dnaW5nX3N5c2xvZykKKwogLyoKICAqIEdsb2JhbHMuCiAgKi8KQEAgLTE4OSw5ICsxOTUsMTEgQEAKIGNvbnN0IGNoYXIgICAgICphcHBfbmFtZSA9ICJzbm1wZCI7CiAKIGV4dGVybiBpbnQgICAgICBuZXRzbm1wX3J1bm5pbmc7CisjaWZkZWYgVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRQogZXh0ZXJuIGNoYXIgICAqKmFyZ3ZyZXN0YXJ0cDsKIGV4dGVybiBjaGFyICAgICphcmd2cmVzdGFydDsKIGV4dGVybiBjaGFyICAgICphcmd2cmVzdGFydG5hbWU7CisjZW5kaWYgLyogVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRSAqLwogCiAjaWZkZWYgVVNJTkdfU01VWF9NT0RVTEUKICNpbmNsdWRlIDxtaWJncm91cC9zbXV4L3NtdXguaD4KQEAgLTM4Niw5ICszOTQsMTMgQEAKIHsKICAgICAvKiBEaXNhYmxlIGFsbCBsb2dzIGFuZCBsb2cgdGhlIGVycm9yIHZpYSBzeXNsb2cgKi8KICAgICBzbm1wX2Rpc2FibGVfbG9nKCk7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICAgICBzbm1wX2VuYWJsZV9zeXNsb2coKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAgICAgc25tcF9sb2coTE9HX0VSUiwgIkV4aXRpbmcgb24gc2lnbmFsICVkXG4iLCBhKTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgIHNubXBfZGlzYWJsZV9zeXNsb2coKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAgICAgZXhpdCgxKTsKIH0KIApAQCAtNDI5LDE2ICs0NDEsMTIgQEAKICAgICBpbnQgICAgICAgICAgICAgZG9udF9mb3JrID0gMCwgZG9faGVscCA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIGxvZ19zZXQgPSAwOwogICAgIGludCAgICAgICAgICAgICBhZ2VudF9tb2RlID0gLTE7Ci0gICAgY2hhciAgICAgICAgICAgKmNwdHIsICoqYXJndnB0cjsKICAgICBjaGFyICAgICAgICAgICAqcGlkX2ZpbGUgPSBOVUxMOwogICAgIGNoYXIgICAgICAgICAgICBvcHRpb25fY29tcGF0YWJpbGl0eVtdID0gIi1MZSI7CiAjaWYgSEFWRV9HRVRQSUQKICAgICBpbnQgZmQ7CiAgICAgRklMRSAgICAgICAgICAgKlBJRDsKICNlbmRpZgotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAotICAgIHN0cnVjdCBwYXNzd2QgICppbmZvOwotI2VuZGlmCiAKICNpZm5kZWYgV0lOMzIKICAgICAvKgpAQCAtNTE4LDExICs1MjYsMTMgQEAKICAgICAgICAgICAgIGFyZ3ZbaV0gPSBvcHRpb25fY29tcGF0YWJpbGl0eTsgICAgICAgICAgICAKICAgICB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogI2lmZGVmIFdJTjMyCiAgICAgc25tcF9sb2dfc3lzbG9nbmFtZShhcHBfbmFtZV9sb25nKTsKICNlbHNlCiAgICAgc25tcF9sb2dfc3lzbG9nbmFtZShhcHBfbmFtZSk7CiAjZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAgICAgbmV0c25tcF9kc19zZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQVBQVFlQRSwgYXBwX25hbWUpOwogCkBAIC01NjYsOSArNTc2LDkgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgc25tcF9zZXRfZHVtcF9wYWNrZXQoKytzbm1wX2R1bXBfcGFja2V0KTsKLSAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9WRVJCT1NFLCAxKTsKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9EVU1QX1BBQ0tFVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytzbm1wX2R1bXBfcGFja2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ0QnOgpAQCAtNTkyLDE5ICs2MDIsMTggQEAKICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgZ2lkOwogCiAgICAgICAgICAgICAgICAgZ2lkID0gc3RydG91bChvcHRhcmcsICZlY3AsIDEwKTsKKyNpZiBIQVZFX0dFVEdSTkFNICYmIEhBVkVfUFdEX0gKICAgICAgICAgICAgICAgICBpZiAoKmVjcCkgewotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZ3JvdXAgICppbmZvOworCiAgICAgICAgICAgICAgICAgICAgIGluZm8gPSBnZXRncm5hbShvcHRhcmcpOwotICAgICAgICAgICAgICAgICAgICBpZiAoaW5mbykgewotICAgICAgICAgICAgICAgICAgICAgICAgZ2lkID0gaW5mby0+Z3JfZ2lkOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBnaWQgPSBpbmZvID8gaW5mby0+Z3JfZ2lkIDogLTE7CisgICAgICAgICAgICAgICAgICAgIGVuZGdyZW50KCk7CisgICAgICAgICAgICAgICAgfQogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCBncm91cCBpZDogJXNcbiIsIG9wdGFyZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAotICAgICAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAoZ2lkIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCBncm91cCBpZDogJXNcbiIsIG9wdGFyZyk7CisgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQsIGdpZCk7CkBAIC02MzAsNiArNjM5LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFCiAgICAgICAgIGNhc2UgJ2wnOgogICAgICAgICAgICAgcHJpbnRmKCJXYXJuaW5nOiAtbCBvcHRpb24gaXMgZGVwcmVjYXRlZCwgdXNlIC1MZiA8ZmlsZT4gaW5zdGVhZFxuIik7CiAgICAgICAgICAgICBpZiAob3B0YXJnICE9IE5VTEwpIHsKQEAgLTY0Nyw2ICs2NTcsNyBAQAogICAgICAgICAgICAgICAgIHVzYWdlKGFyZ3ZbMF0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KIAogICAgICAgICBjYXNlICdMJzoKIAkgICAgaWYgIChzbm1wX2xvZ19vcHRpb25zKCBvcHRhcmcsIGFyZ2MsIGFyZ3YgKSA8IDAgKSB7CkBAIC02OTIsNyArNzAzLDggQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ3EnOgotICAgICAgICAgICAgc25tcF9zZXRfcXVpY2tfcHJpbnQoMSk7CisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCAxKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ3InOgpAQCAtNzAwLDYgKzcxMiw3IEBACiAJCQkJICAgICAgTkVUU05NUF9EU19BR0VOVF9OT19ST09UX0FDQ0VTUyk7CiAgICAgICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgcHJpbnRmKCJXYXJuaW5nOiAtcyBvcHRpb24gaXMgZGVwcmVjYXRlZCwgdXNlIC1Mc2QgaW5zdGVhZFxuIik7CiAgICAgICAgICAgICBzbm1wX2VuYWJsZV9zeXNsb2coKTsKQEAgLTc1Myw2ICs3NjYsNyBAQAogICAgICAgICAgICAgICAgIHVzYWdlKGFyZ3ZbMF0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogCiAgICAgICAgIGNhc2UgJ1UnOgogICAgICAgICAgICAgbmV0c25tcF9kc190b2dnbGVfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTc2NiwxOCArNzgwLDE4IEBACiAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgIHVpZDsKIAogICAgICAgICAgICAgICAgIHVpZCA9IHN0cnRvdWwob3B0YXJnLCAmZWNwLCAxMCk7CisjaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICiAgICAgICAgICAgICAgICAgaWYgKCplY3ApIHsKLSNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBhc3N3ZCAgKmluZm87CisKICAgICAgICAgICAgICAgICAgICAgaW5mbyA9IGdldHB3bmFtKG9wdGFyZyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmZvKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1aWQgPSBpbmZvLT5wd191aWQ7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVpZCA9IGluZm8gPyBpbmZvLT5wd191aWQgOiAtMTsKKyAgICAgICAgICAgICAgICAgICAgZW5kcHdlbnQoKTsKKyAgICAgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIHVzZXIgaWQ6ICVzXG4iLCBvcHRhcmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKLSNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKLSAgICAgICAgICAgICAgICAgICAgfQotI2VuZGlmCisgICAgICAgICAgICAgICAgaWYgKHVpZCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgdXNlciBpZDogJXNcbiIsIG9wdGFyZyk7CisgICAgICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1VTRVJJRCwgdWlkKTsKQEAgLTg0MSw2ICs4NTUsNyBAQAogICAgIH0KIAogICAgIGlmIChvcHRpbmQgPCBhcmdjKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICAgICAgICAgLyoKICAgICAgICAgICogVGhlcmUgYXJlIG9wdGlvbmFsIHRyYW5zcG9ydCBhZGRyZXNzZXMgb24gdGhlIGNvbW1hbmQgbGluZS4gIAogICAgICAgICAgKi8KQEAgLTg2Niw1MSArODgxLDYyIEBACiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9tYWluIiwgInBvcnQgc3BlYzogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCQkJICBORVRTTk1QX0RTX0FHRU5UX1BPUlRTKSkpOworI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIllvdSBzcGVjaWZpZWQgcG9ydHMgdG8gb3BlbjsgdGhpcyBhZ2VudCB3YXMgYnVpbHQgdG8gb25seSBzZW5kIG5vdGlmaWNhdGlvbnNcbiIpOworICAgICAgICBleGl0KDEpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICB9CiAKICNpZmRlZiBORVRTTk1QX0xPR0ZJTEUKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICBpZiAoMCA9PSBsb2dfc2V0KQogICAgICAgICBzbm1wX2VuYWJsZV9maWxlbG9nKE5FVFNOTVBfTE9HRklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUEVORF9MT0dGSUxFUykpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAjZW5kaWYKIAotICAgIC8qCi0gICAgICogSW5pdGlhbGl6ZSBhIGFyZ3Ygc2V0IHRvIHRoZSBjdXJyZW50IGZvciByZXN0YXJ0aW5nIHRoZSBhZ2VudC4gICAKLSAgICAgKi8KLSAgICBhcmd2cmVzdGFydHAgPSAoY2hhciAqKiltYWxsb2MoKGFyZ2MgKyAyKSAqIHNpemVvZihjaGFyICopKTsKLSAgICBhcmd2cHRyID0gYXJndnJlc3RhcnRwOwotICAgIGZvciAoaSA9IDAsIHJldCA9IDE7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgcmV0ICs9IHN0cmxlbihhcmd2W2ldKSArIDE7CisjaWZkZWYgVVNJTkdfVVRJTF9GVU5DU19SRVNUQVJUX01PRFVMRQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogSW5pdGlhbGl6ZSBhIGFyZ3Ygc2V0IHRvIHRoZSBjdXJyZW50IGZvciByZXN0YXJ0aW5nIHRoZSBhZ2VudC4KKyAgICAgICAgICovCisgICAgICAgIGNoYXIgKmNwdHIsICoqYXJndnB0cjsKKworICAgICAgICBhcmd2cmVzdGFydHAgPSAoY2hhciAqKiltYWxsb2MoKGFyZ2MgKyAyKSAqIHNpemVvZihjaGFyICopKTsKKyAgICAgICAgYXJndnB0ciA9IGFyZ3ZyZXN0YXJ0cDsKKyAgICAgICAgZm9yIChpID0gMCwgcmV0ID0gMTsgaSA8IGFyZ2M7IGkrKykgeworICAgICAgICAgICAgcmV0ICs9IHN0cmxlbihhcmd2W2ldKSArIDE7CisgICAgICAgIH0KKyAgICAgICAgYXJndnJlc3RhcnQgPSAoY2hhciAqKSBtYWxsb2MocmV0KTsKKyAgICAgICAgYXJndnJlc3RhcnRuYW1lID0gKGNoYXIgKikgbWFsbG9jKHN0cmxlbihhcmd2WzBdKSArIDEpOworICAgICAgICBpZiAoIWFyZ3ZyZXN0YXJ0cCB8fCAhYXJndnJlc3RhcnQgfHwgIWFyZ3ZyZXN0YXJ0bmFtZSkgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJtYWxsb2MgZmFpbHVyZSBwcm9jZXNzaW5nIGFyZ3ZyZXN0YXJ0XG4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICAgICAgc3RyY3B5KGFyZ3ZyZXN0YXJ0bmFtZSwgYXJndlswXSk7CisKKyAgICAgICAgZm9yIChjcHRyID0gYXJndnJlc3RhcnQsIGkgPSAwOyBpIDwgYXJnYzsgaSsrKSB7CisgICAgICAgICAgICBzdHJjcHkoY3B0ciwgYXJndltpXSk7CisgICAgICAgICAgICAqKGFyZ3ZwdHIrKykgPSBjcHRyOworICAgICAgICAgICAgY3B0ciArPSBzdHJsZW4oYXJndltpXSkgKyAxOworICAgICAgICB9CiAgICAgfQotICAgIGFyZ3ZyZXN0YXJ0ID0gKGNoYXIgKikgbWFsbG9jKHJldCk7Ci0gICAgYXJndnJlc3RhcnRuYW1lID0gKGNoYXIgKikgbWFsbG9jKHN0cmxlbihhcmd2WzBdKSArIDEpOwotICAgIGlmICghYXJndnJlc3RhcnRwIHx8ICFhcmd2cmVzdGFydCB8fCAhYXJndnJlc3RhcnRuYW1lKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAibWFsbG9jIGZhaWx1cmUgcHJvY2Vzc2luZyBhcmd2cmVzdGFydFxuIik7Ci0gICAgICAgIGV4aXQoMSk7Ci0gICAgfQotICAgIHN0cmNweShhcmd2cmVzdGFydG5hbWUsIGFyZ3ZbMF0pOworI2VuZGlmIC8qIFVTSU5HX1VUSUxfRlVOQ1NfUkVTVEFSVF9NT0RVTEUgKi8KKwogICAgIGlmIChhZ2VudF9tb2RlID09IC0xKSB7Ci0gICAgICAgIGlmIChzdHJzdHIoYXJndnJlc3RhcnRuYW1lLCAiYWdlbnR4ZCIpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgIGlmIChzdHJzdHIoYXJndlswXSwgImFnZW50eGQiKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9ST0xFLCBTVUJfQUdFTlQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1JPTEUsIE1BU1RFUl9BR0VOVCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAorICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9ST0xFLCBhZ2VudF9tb2RlKTsKICAgICB9CiAKLSAgICBmb3IgKGNwdHIgPSBhcmd2cmVzdGFydCwgaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKLSAgICAgICAgc3RyY3B5KGNwdHIsIGFyZ3ZbaV0pOwotICAgICAgICAqKGFyZ3ZwdHIrKykgPSBjcHRyOwotICAgICAgICBjcHRyICs9IHN0cmxlbihhcmd2W2ldKSArIDE7Ci0gICAgfQotICAgICpjcHRyID0gMDsKLSAgICAqYXJndnB0ciA9IE5VTEw7Ci0KICAgICBTT0NLX1NUQVJUVVA7CiAgICAgaWYgKGluaXRfYWdlbnQoYXBwX25hbWUpICE9IDApIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkFnZW50IGluaXRpYWxpemF0aW9uIGZhaWxlZFxuIik7CkBAIC05MjcsNyArOTUzLDggQEAKICAgICAgICAgLyoKICAgICAgICAgICogU29tZSBlcnJvciBvcGVuaW5nIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGFnZW50IHRyYW5zcG9ydHMuICAKICAgICAgICAgICovCi0gICAgICAgIEV4aXQoMSk7ICAgICAgICAgICAgICAgIC8qICBFeGl0IGxvZ3MgZXhpdCB2YWwgZm9yIHVzICAqLworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiU2VydmVyIEV4aXRpbmcgd2l0aCBjb2RlIDFcbiIpOworICAgICAgICBleGl0KDEpOwogICAgIH0KIAogICAgIC8qCkBAIC05MzYsMTIgKzk2MywyMCBAQAogICAgIGlmKCFkb250X2ZvcmspIHsKICAgICAgICAgaW50IHF1aXQgPSAhIG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9RVUlUX0lNTUVESUFURUxZKTsKLSAgICAgICAgcmV0ID0gbmV0c25tcF9kYWVtb25pemUocXVpdCwgc25tcF9zdGRlcnJsb2dfc3RhdHVzKCkpOworICAgICAgICByZXQgPSBuZXRzbm1wX2RhZW1vbml6ZShxdWl0LAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zdGRlcnJsb2dfc3RhdHVzKCkKKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCisgICAgICAgICAgICApOwogICAgICAgICAvKgogICAgICAgICAgKiB4eHgtcmtzOiBkbyB3ZSBjYXJlIGlmIGZvcmsgZmFpbHM/IEkgdGhpbmsgd2Ugc2hvdWxkLi4uCiAgICAgICAgICAqLwotICAgICAgICBpZihyZXQgIT0gMCkKLSAgICAgICAgICAgIEV4aXQoMSk7ICAgICAgICAgICAgICAgIC8qICBFeGl0IGxvZ3MgZXhpdCB2YWwgZm9yIHVzICAqLworICAgICAgICBpZihyZXQgIT0gMCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlNlcnZlciBFeGl0aW5nIHdpdGggY29kZSAxXG4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KICAgICB9CiAKICNpZiBIQVZFX0dFVFBJRApAQCAtMTAxNSw2ICsxMDUwLDggQEAKICAgICBpZiAoKHVpZCA9IG5ldHNubXBfZHNfZ2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKIAkJCQkgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklEKSkgPiAwKSB7CiAjaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9IICYmIEhBVkVfSU5JVEdST1VQUworICAgICAgICBzdHJ1Y3QgcGFzc3dkICppbmZvOworCiAgICAgICAgIC8qCiAgICAgICAgICAqIFNldCBzdXBwbGVtZW50YXJ5IGdyb3VwcyBiZWZvcmUgY2hhbmdpbmcgVUlECiAgICAgICAgICAqICAgKHdoaWNoIHByb2JhYmx5IGludm9sdmVzIGdpdmluZyB1cCBwcml2aWxlZ2VzKQpAQCAtMTAzMCw2ICsxMDY3LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgZW5kcHdlbnQoKTsKICNlbmRpZgogICAgICAgICBERUJVR01TR1RMKCgic25tcGQvbWFpbiIsICJDaGFuZ2luZyB1aWQgdG8gJWQuXG4iLCB1aWQpKTsKICAgICAgICAgaWYgKHNldHVpZCh1aWQpID09IC0xKSB7CkBAIC0xMDkxLDkgKzExMjksMTIgQEAKICAgICBhZ2VudF9zdGF0dXMgPSBBR0VOVF9TVE9QUEVEOwogI2VuZGlmCiAKKyNpZmRlZiBVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFCiAgICAgU05NUF9GUkVFKGFyZ3ZyZXN0YXJ0bmFtZSk7CiAgICAgU05NUF9GUkVFKGFyZ3ZyZXN0YXJ0KTsKICAgICBTTk1QX0ZSRUUoYXJndnJlc3RhcnRwKTsKKyNlbmRpZiAvKiBVU0lOR19VVElMX0ZVTkNTX1JFU1RBUlRfTU9EVUxFICovCisKICAgICBTT0NLX0NMRUFOVVA7CiAgICAgcmV0dXJuIDA7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuZCBtYWluKCkgLS0gc25tcGQgKi8KQEAgLTEyMjcsMjIgKzEyNjgsMjcgQEAKICAgICAgICAgfQogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0lOR19TTVVYX01PRFVMRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUgogICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8yKCZudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUiAqLwogCiAgICAgcmVzZWxlY3Q6CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfU0lHTkFMCiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fRVhURVJOQUxfU0lHUzsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoZXh0ZXJuYWxfc2lnbmFsX3NjaGVkdWxlZFtpXSkgewogICAgICAgICAgICAgICAgIGV4dGVybmFsX3NpZ25hbF9zY2hlZHVsZWRbaV0tLTsKICAgICAgICAgICAgICAgICBleHRlcm5hbF9zaWduYWxfaGFuZGxlcltpXShpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVHSVNURVJfU0lHTkFMICovCiAKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBkL3NlbGVjdCIsICJzZWxlY3QoIG51bWZkcz0lZCwgLi4uLCB0dnA9JXApXG4iLAogICAgICAgICAgICAgICAgICAgICBudW1mZHMsIHR2cCkpOwotICAgICAgICBpZih0dnApCi0gICAgICAgICAgICBERUJVR01TR1RMKCgidGltZXIiLCAidHZwICVsZC4lbGRcbiIsIHR2cC0+dHZfc2VjLCB0dnAtPnR2X3VzZWMpKTsKLSAgICAgICAgY291bnQgPSBuZXRfc25tcF9sYXJnZV9mZF9zZXRfc2VsZWN0KG51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcywKLQkJCQkgICAgICB0dnApOworICAgICAgICBpZiAodHZwKQorICAgICAgICAgICAgREVCVUdNU0dUTCgoInRpbWVyIiwgInR2cCAlbGQuJWxkXG4iLCAobG9uZykgdHZwLT50dl9zZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykgdHZwLT50dl91c2VjKSk7CisgICAgICAgIGNvdW50ID0gbmV0c25tcF9sYXJnZV9mZF9zZXRfc2VsZWN0KG51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcywKKwkJCQkgICAgIHR2cCk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9zZWxlY3QiLCAicmV0dXJuZWQsIGNvdW50ID0gJWRcbiIsIGNvdW50KSk7CiAKICAgICAgICAgaWYgKGNvdW50ID4gMCkgewpAQCAtMTI3MSw4ICsxMzE3LDEyIEBACiAgICAgICAgICAgICB9CiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNJTkdfU01VWF9NT0RVTEUgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIKICAgICAgICAgICAgIG5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzMigmY291bnQsICZyZWFkZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSICovCisKICAgICAgICAgICAgIC8qIElmIHRoZXJlIGFyZSBzdGlsbCBldmVudHMgbGVmdG92ZXIsIHByb2Nlc3MgdGhlbSAqLwogICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkgewogICAgICAgICAgICAgICBzbm1wX3JlYWQyKCZyZWFkZmRzKTsKQEAgLTE0MTAsNiArMTQ2MCwxMCBAQAogICAgIGludCAgICAgICAgICAgICBuUnVuVHlwZSA9IFJVTl9BU19DT05TT0xFOwogICAgIGludCAgICAgICAgICAgICBxdWlldCA9IDA7CiAgICAgCisjaWYgMAorICAgIF9DcnRTZXREYmdGbGFnKF9DUlREQkdfQUxMT0NfTUVNX0RGIHwgX0NSVERCR19MRUFLX0NIRUNLX0RGIC8qfCBfQ1JUREJHX0NIRUNLX0FMV0FZU19ERiovKTsKKyNlbmRpZgorCiAgICAgblJ1blR5cGUgPSBQYXJzZUNtZExpbmVGb3JTZXJ2aWNlT3B0aW9uKGFyZ2MsIGFyZ3YsICZxdWlldCk7CiAKICAgICBzd2l0Y2ggKG5SdW5UeXBlKSB7CmRpZmYgLS1naXQgYS9hcHBzL01ha2VmaWxlLmRlcGVuZCBiL2FwcHMvTWFrZWZpbGUuZGVwZW5kCmluZGV4IDk4NWMyYzkuLjE1Y2IxNzYgMTAwNjQ0Ci0tLSBhL2FwcHMvTWFrZWZpbGUuZGVwZW5kCisrKyBiL2FwcHMvTWFrZWZpbGUuZGVwZW5kCkBAIC01LDYgKzUsNyBAQAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0yNCwxMSArMjUsOCBAQAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTczLDQ0ICs3MSw5IEBACiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCiAuL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL2FnZW50eHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vYWdlbnR4dHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi9hZ2VudHh0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL2FnZW50eHRyYXAubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmgKIC4vYWdlbnR4dHJhcC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5oCiAuL2FnZW50eHRyYXAubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5oCkBAIC0xMzQsMTEgKzk3LDggQEAKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xNDgsNiArMTA4LDcgQEAKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xODIsOSArMTQzLDExIEBACiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtMjAyLDExICsxNjUsOCBAQAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTIxNiw2ICsxNzYsNyBAQAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNTAsNiArMjExLDcgQEAKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMjcxLDExICsyMzMsOCBAQAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI4NSw2ICsyNDQsNyBAQAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzE5LDYgKzI3OSw3IEBACiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMzM5LDExICszMDAsOCBAQAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM1Myw2ICszMTEsNyBAQAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzg3LDExICszNDYsMTEgQEAKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKQEAgLTQwNywxMSArMzY2LDggQEAKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC00MjAsNiArMzc2LDcgQEAKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC00NTMsOSArNDEwLDExIEBACiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtNDczLDExICs0MzIsOCBAQAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTQ4Niw2ICs0NDIsNyBAQAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC01MjAsNiArNDc3LDcgQEAKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC01NDEsMTEgKzQ5OSw4IEBACiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNTU1LDYgKzUxMCw3IEBACiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTU4OSwxMSArNTQ1LDExIEBACiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC02MTAsMTEgKzU2Niw4IEBACiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNjIzLDYgKzU3Niw3IEBACiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTY1Niw2ICs2MTAsNyBAQAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTY3NiwxMSArNjMxLDggQEAKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC02OTAsNiArNjQyLDcgQEAKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03MjQsNiArNjc3LDcgQEAKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTc0NCwxMSArNjk4LDggQEAKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC03NTgsNiArNzA5LDcgQEAKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTc5MiwxMSArNzQ0LDExIEBACiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaApAQCAtODEzLDExICs3NjUsOCBAQAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTgyNyw2ICs3NzYsNyBAQAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC04NjAsMTAgKzgxMCwxMyBAQAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKQEAgLTg4MCwxMSArODMzLDggQEAKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC05MjYsNiArODc2LDcgQEAKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB0bHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdGxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vc25tcHRscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCkBAIC05ODksMTEgKzk0MCw4IEBACiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTAwMyw2ICs5NTEsNyBAQAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTEwNDcsMTEgKzk5Niw4IEBACiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTA2MSw2ICsxMDA3LDcgQEAKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTA5NCw2ICsxMDQxLDcgQEAKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTExMTUsMTEgKzEwNjMsOCBAQAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTExMjksNiArMTA3NCw3IEBACiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTExNjMsNiArMTEwOSw3IEBACiAuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogc25tcHRyYXBkX2hhbmRsZXJzLmggc25tcHRyYXBkX2F1dGguaCBzbm1wdHJhcGRfZHMuaAogLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKQEAgLTExODgsMTEgKzExMzUsOCBAQAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTEyMDIsNiArMTE0Niw3IEBACiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMjM2LDYgKzExODEsNyBAQAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTI4MCw2ICsxMjI2LDcgQEAKIC4vc25tcHRyYXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC90bHN0bS1taWIvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUvc25tcFRsc3RtQ2VydFRvVFNOVGFibGUuaAogLi9zbm1wdHJhcGQubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC0xMjk5LDExICsxMjQ2LDggQEAKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMzQ3LDYgKzEyOTEsNyBAQAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTQwOSwxMSArMTM1NCw4IEBACiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTQyMyw2ICsxMzY1LDcgQEAKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDU3LDEzICsxNDAwLDE0IEBACiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggc25tcHRyYXBkX2xvZy5oCiAuL3NubXB0cmFwZF9sb2cubG86IHNubXB0cmFwZF9kcy5oCiAuL3NubXB0cmFwZF9zcWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHRyYXBkX3NxbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKQEAgLTE0ODAsMTEgKzE0MjQsOCBAQAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE0OTMsNiArMTQzNCw3IEBACiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1MjYsMTEgKzE0NjgsMTEgQEAKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKQEAgLTE1NDcsMTEgKzE0ODksOCBAQAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE1NjEsNiArMTUwMCw3IEBACiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1OTQsNiArMTUzNCw3IEBACiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCkBAIC0xNjE1LDExICsxNTU2LDggQEAKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xNjI5LDYgKzE1NjcsNyBAQAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNjYyLDYgKzE2MDEsNyBAQAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc3NodG9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCkBAIC0xNjg0LDExICsxNjI0LDggQEAKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xNjk4LDYgKzE2MzUsNyBAQAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNzMyLDYgKzE2NzAsNyBAQAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuL3NubXBuZXRzdGF0L25ldHN0YXQuaApAQCAtMTc1NSwxMSArMTY5NCw4IEBACiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTc2OSw2ICsxNzA1LDcgQEAKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTgwMyw2ICsxNzQwLDcgQEAKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCkBAIC0xODI1LDExICsxNzYzLDggQEAKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xODM5LDYgKzE3NzQsNyBAQAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE4NzMsOCArMTgwOSw3OCBAQAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBuZXRzdGF0L2luZXQubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oIC4vc25tcG5ldHN0YXQvbmV0c3RhdC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0eC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3NubXBuZXRzdGF0L2luZXR4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc25tcG5ldHN0YXQvaW5ldHgubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oIC4vc25tcG5ldHN0YXQvbmV0c3RhdC5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtMTg5NSwxMSArMTkwMSw4IEBACiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTkwOSw2ICsxOTEyLDcgQEAKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xOTQzLDYgKzE5NDcsNyBAQAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oIC4vc25tcG5ldHN0YXQvbmV0c3RhdC5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCkBAIC0xOTY1LDExICsxOTcwLDggQEAKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xOTc5LDYgKzE5ODEsNyBAQAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yMDEzLDggKzIwMTYsNzggQEAKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L3JvdXRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc25tcG5ldHN0YXQvcm91dGV4LmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTIwMzUsMTEgKzIxMDgsOCBAQAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTIwNDksNiArMjExOSw3IEBACiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjA4Myw0ICsyMTU0LDUgQEAKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaApkaWZmIC0tZ2l0IGEvYXBwcy9NYWtlZmlsZS5pbiBiL2FwcHMvTWFrZWZpbGUuaW4KaW5kZXggNzY5MzUyZC4uNzc0MDRkZCAxMDA2NDQKLS0tIGEvYXBwcy9NYWtlZmlsZS5pbgorKysgYi9hcHBzL01ha2VmaWxlLmluCkBAIC00LDYgKzQsNyBAQAogIwogCiB0b3BfYnVpbGRkaXI9Li4KK215c3ViZGlyPWFwcHMKIAogIyB1c2UgR05VIHZwYXRoLCBpZiBhdmFpbGFibGUsIHRvIG9ubHkgc2V0IGEgcGF0aCBmb3Igc291cmNlIGFuZCBoZWFkZXJzCiAjIFZQQVRIIHdpbGwgcGljayB1cCBvYmplY3RzIHRvbywgd2hpY2ggaXMgYmFkIGlmIHlvdSBhcmUgc2hhcmluZyBhCkBAIC0xOSwxNiArMjAsMzUgQEAKIAogQE5FVFNOTVBfQlVJTERfU1NIX1BST0dfVFJVRUBTU0hJTlNUQUxMQklOUFJPRyA9IHNzaHRvc25tcCQoRVhFRVhUKQogQE5FVFNOTVBfQlVJTERfU1NIX1BST0dfRkFMU0VAU1NISU5TVEFMTEJJTlBST0cgPQorQE5FVFNOTVBfQlVJTERfU1NIX1BST0dfVFJVRUBTU0hGRUFUVVJFUFJPRyA9IHNzaHRvc25tcC5mdAorQE5FVFNOTVBfQlVJTERfU1NIX1BST0dfRkFMU0VAU1NIRkVBVFVSRVBST0cgPQogQE5FVFNOTVBfQlVJTERfVExTX1BST0dfVFJVRUBUTFNJTlNUQUxMQklOUFJPRyA9IHNubXB0bHMkKEVYRUVYVCkKIEBORVRTTk1QX0JVSUxEX1RMU19QUk9HX0ZBTFNFQFRMU0lOU1RBTExCSU5QUk9HID0KK0BORVRTTk1QX0JVSUxEX1RMU19QUk9HX1RSVUVAVExTRkVBVFVSRVBST0cgPSBzbm1wdGxzLmZ0CitATkVUU05NUF9CVUlMRF9UTFNfUFJPR19GQUxTRUBUTFNGRUFUVVJFUFJPRyA9CitATkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFQFVTTUlOU1RBTExCSU5QUk9HID0gc25tcHVzbSQoRVhFRVhUKQorQE5FVFNOTVBfQlVJTERfVVNNX1BST0dfRkFMU0VAVVNNSU5TVEFMTEJJTlBST0cgPQorQE5FVFNOTVBfQlVJTERfVVNNX1BST0dfVFJVRUBVU01GRUFUVVJFUFJPRyA9IHNubXB1c20uZnQKK0BORVRTTk1QX0JVSUxEX1VTTV9QUk9HX0ZBTFNFQFVTTUZFQVRVUkVQUk9HID0KK0BORVRTTk1QX0JVSUxEX1VTTV9QUk9HX1RSVUVARUtDU1RBTExCSU5QUk9HID0gZW5jb2RlX2tleWNoYW5nZSQoRVhFRVhUKQorQE5FVFNOTVBfQlVJTERfVVNNX1BST0dfRkFMU0VARUtDU1RBTExCSU5QUk9HID0KK0BORVRTTk1QX0JVSUxEX1VTTV9QUk9HX1RSVUVARUtDRkVBVFVSRVBST0cgPSBlbmNvZGVfa2V5Y2hhbmdlLmZ0CitATkVUU05NUF9CVUlMRF9VU01fUFJPR19GQUxTRUBFS0NGRUFUVVJFUFJPRyA9CitATkVUU05NUF9CVUlMRF9TRVRfUFJPR19UUlVFQFNOTVBTRVRJTlNUQUxMQklOUFJPRyA9IHNubXBzZXQkKEVYRUVYVCkKK0BORVRTTk1QX0JVSUxEX1NFVF9QUk9HX0ZBTFNFQFNOTVBTRVRJTlNUQUxMQklOUFJPRyA9IAorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfVFJVRUBTTk1QU0VURkVBVFVSRVBST0cgPSBzbm1wc2V0LmZ0CitATkVUU05NUF9CVUlMRF9TRVRfUFJPR19GQUxTRUBTTk1QU0VURkVBVFVSRVBST0cgPSAKK0BORVRTTk1QX0JVSUxEX1NFVF9QUk9HX1RSVUVAU05NUFZBQ01JTlNUQUxMQklOUFJPRyA9IHNubXB2YWNtJChFWEVFWFQpCitATkVUU05NUF9CVUlMRF9TRVRfUFJPR19GQUxTRUBTTk1QVkFDTUlOU1RBTExCSU5QUk9HID0gCitATkVUU05NUF9CVUlMRF9TRVRfUFJPR19UUlVFQFNOTVBWQUNNRkVBVFVSRVBST0cgPSBzbm1wdmFjbS5mdAorQE5FVFNOTVBfQlVJTERfU0VUX1BST0dfRkFMU0VAU05NUFZBQ01GRUFUVVJFUFJPRyA9IAogCiBATkVUU05NUF9IQVZFX0FHRU5UWF9MSUJTX1RSVUVAQUdFTlRYVFJBUCA9IGFnZW50eHRyYXAkKEVYRUVYVCkKIEBORVRTTk1QX0hBVkVfQUdFTlRYX0xJQlNfRkFMU0VAQUdFTlRYVFJBUCA9CiAKIElOU1RBTExCSU5QUk9HUwk9IHNubXBnZXQkKEVYRUVYVCkgCQkJXAogCQlzbm1wZ2V0bmV4dCQoRVhFRVhUKSAJCQlcCi0JCXNubXBzZXQkKEVYRUVYVCkgCQkJXAotCQlzbm1wdXNtJChFWEVFWFQpCQkJXAorCQkkKFNOTVBTRVRJTlNUQUxMQklOUFJPRykJICAgICAgICBcCiAJCXNubXB3YWxrJChFWEVFWFQpIAkJCVwKIAkJc25tcGJ1bGt3YWxrJChFWEVFWFQpIAkJCVwKIAkJc25tcHRhYmxlJChFWEVFWFQpCQkJXApAQCAtMzgsMTEgKzU4LDExIEBACiAJCXNubXBzdGF0dXMkKEVYRUVYVCkgCQkJXAogCQlzbm1wZGVsdGEkKEVYRUVYVCkgCQkJXAogCQlzbm1wdGVzdCQoRVhFRVhUKQkJCVwKLQkJZW5jb2RlX2tleWNoYW5nZSQoRVhFRVhUKSAJCVwKIAkJc25tcGRmJChFWEVFWFQpIAkJCVwKIAkJJChBR0VOVFhUUkFQKQkJCQlcCi0JCXNubXB2YWNtJChFWEVFWFQpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgJChTU0hJTlNUQUxMQklOUFJPRykgJChUTFNJTlNUQUxMQklOUFJPRykKKwkJJChTTk1QVkFDTUlOU1RBTExCSU5QUk9HKQkgICAgICAgIFwKKyAgICAgICAgICAgICAgICAkKFNTSElOU1RBTExCSU5QUk9HKSAkKFRMU0lOU1RBTExCSU5QUk9HKSBcCisJCSQoVVNNSU5TVEFMTEJJTlBST0cpICQoRUtDU1RBTExCSU5QUk9HKQogCiBJTlNUQUxMU0JJTlBST0dTID0gc25tcHRyYXBkJChFWEVFWFQpCiAKQEAgLTUwLDYgKzcwLDggQEAKIAogU1VCRElSUwkJPSBzbm1wbmV0c3RhdAogCitGRUFUVVJFRklMRT0uLi9pbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmVzLWFwcHMuaAorCiAjCiAjIGJ1aWxkIHZhcmlhYmxlcy4KICMKQEAgLTYyLDE0ICs4NCwxNSBAQAogTVlTUUxfTElCUwk9IEBNWVNRTF9MSUJTQAogTVlTUUxfSU5DTFVERVMJPSBATVlTUUxfSU5DTFVERVNACiAKLUxJQlMJCT0gJChVU0VMSUJTKSBATElCU0AKK1ZBTF9MSUJTCT0gQFZBTF9MSUJTQAorTElCUwkJPSAkKFVTRUxJQlMpICQoVkFMX0xJQlMpIEBMSUJTQAogUEVSTExET1BUU19GT1JfQVBQUyA9IEBQRVJMTERPUFRTX0ZPUl9BUFBTQAogUEVSTExET1BUU19GT1JfTElCUyA9IEBQRVJMTERPUFRTX0ZPUl9MSUJTQAogCiAjCiAjIGhhY2sgZm9yIGNvbXBpbGluZyB0cmFwZCB3aGVuIGFnZW50IGlzIGRpc2FibGVkCi1UUkFQRFdJVEhBR0VOVCAgPSAkKFVTRVRSQVBMSUJTKSAkKE1ZU1FMX0xJQlMpIEBBR0VOVExJQlNACi1UUkFQRFdJVEhPVVRBR0VOVCA9ICQoTElCUykgJChNWVNRTF9MSUJTKQorVFJBUERXSVRIQUdFTlQgID0gJChVU0VUUkFQTElCUykgJChNWVNRTF9MSUJTKSAkKFZBTF9MSUJTKSBAQUdFTlRMSUJTQAorVFJBUERXSVRIT1VUQUdFTlQgPSAkKExJQlMpICQoTVlTUUxfTElCUykgJChWQUxfTElCUykKIAogIyB0aGVzZSB3aWxsIGJlIHNldCBieSBjb25maWd1cmUgdG8gb25lIG9mIHRoZSBhYm92ZSAyIGxpbmVzCiBUUkFQTElCUwk9IEBUUkFQTElCU0AgJChQRVJMTERPUFRTX0ZPUl9BUFBTKQpAQCAtODUsOCArMTA4LDMxIEBACiAJCSAgc25tcHRyYXBkX2F1dGgubyBzbm1wdHJhcGRfc3FsLm8KIExMSUJUUkFQRF9PQkpTICA9IHNubXB0cmFwZF9oYW5kbGVycy5sbyBzbm1wdHJhcGRfbG9nLmxvIFwKIAkJICBzbm1wdHJhcGRfYXV0aC5sbyBzbm1wdHJhcGRfc3FsLmxvCitMSUJUUkFQRF9GVFMgICAgPSBzbm1wdHJhcGRfaGFuZGxlcnMuZnQgc25tcHRyYXBkX2xvZy5mdCBcCisJCSAgc25tcHRyYXBkX2F1dGguZnQgc25tcHRyYXBkX3NxbC5mdAogT0JKUyAgPSAqLm8KIExPQkpTID0gKi5sbworRlRPQkpTPSQoTElCVFJBUERfRlRTKSBcCisgICAgICAgc25tcHdhbGsuZnQgXAorICAgICAgIHNubXBidWxrd2Fsay5mdCBcCisgICAgICAgc25tcGJ1bGtnZXQuZnQgXAorICAgICAgIHNubXB0cmFuc2xhdGUuZnQgXAorICAgICAgIHNubXBzdGF0dXMuZnQgXAorICAgICAgIHNubXBnZXQuZnQgXAorICAgICAgIHNubXBkZWx0YS5mdCBcCisgICAgICAgc25tcHRhYmxlLmZ0IFwKKyAgICAgICBzbm1wdGVzdC5mdCBcCisgICAgICAgc25tcHRyYXBkLmZ0IFwKKyAgICAgICBzbm1wdHJhcC5mdCBcCisgICAgICAgJChTTk1QU0VURkVBVFVSRVBST0cpIFwKKyAgICAgICAkKFNOTVBWQUNNRkVBVFVSRVBST0cpIFwKKyAgICAgICAkKFVTTUZFQVRVUkVQUk9HKSBcCisgICAgICAgJChUTFNGRUFUVVJFUFJPRykgXAorICAgICAgIGFnZW50eHRyYXAuZnQgXAorICAgICAgIHNubXBnZXRuZXh0LmZ0IFwKKyAgICAgICAkKEVLQ0ZFQVRVUkVQUk9HKSBcCisgICAgICAgc25tcGRmLmZ0IFwKKyAgICAgICAkKFNTSEZFQVRVUkVQUk9HKQogCiBhbGw6IHN0YW5kYXJkYWxsCiAKZGlmZiAtLWdpdCBhL2FwcHMvYWdlbnR4dHJhcC5jIGIvYXBwcy9hZ2VudHh0cmFwLmMKaW5kZXggMzQwZjExNC4uNGRmNDIzYyAxMDA2NDQKLS0tIGEvYXBwcy9hZ2VudHh0cmFwLmMKKysrIGIvYXBwcy9hZ2VudHh0cmFwLmMKQEAgLTEsNCArMSw1IEBACi0gI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgpAQCAtOCwxMiArOSwxNiBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaD4KIAogI2luY2x1ZGUgIi4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmgiCiAjaW5jbHVkZSAiLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5oIgogI2luY2x1ZGUgIi4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5oIgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbm1wX3NwbGl0X3BkdSkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNubXBfcmVzZXRfdmFyX3R5cGVzKQorCisKICNpZmRlZiBfX0dOVUNfXwogI2RlZmluZSBVTlVTRUQgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKICNlbHNlCmRpZmYgLS1naXQgYS9hcHBzL3NubXBkZWx0YS5jIGIvYXBwcy9zbm1wZGVsdGEuYwppbmRleCA3MTBmYzc3Li4wOGUyZWJjIDEwMDY0NAotLS0gYS9hcHBzL3NubXBkZWx0YS5jCisrKyBiL2FwcHMvc25tcGRlbHRhLmMKQEAgLTIxNCw3ICsyMTQsNyBAQAogICAgIC8qCiAgICAgICogTm93IGZpZ3VyZSBvdXQgdGhlIGFtb3VudCBvZiB0aW1lIHRvIHNsZWVwIAogICAgICAqLwotICAgIHRhcmdldCA9IChTZWNvbmRzQXROZXh0SG91ciAtIHR2LT50dl9zZWMpICUgc2Vjb25kczsKKyAgICB0YXJnZXQgPSAoaW50KShTZWNvbmRzQXROZXh0SG91ciAtIHR2LT50dl9zZWMpICUgc2Vjb25kczsKIAogICAgIHJldHVybiB0YXJnZXQ7CiB9CmRpZmYgLS1naXQgYS9hcHBzL3NubXBkZi5jIGIvYXBwcy9zbm1wZGYuYwppbmRleCAyYjQzOGY5Li4xNDRhNTA1IDEwMDY0NAotLS0gYS9hcHBzL3NubXBkZi5jCisrKyBiL2FwcHMvc25tcGRmLmMKQEAgLTg3LDkgKzg3LDE0IEBACiAgICAgICAgICAgICAiXHQtQ3VcdFVzZSBVQ0QtU05NUCBkc2tUYWJsZSB0byBkbyB0aGUgY2FsY3VsYXRpb25zLlxuIik7CiAgICAgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAiXHRcdFtOb3JtYWxseSB0aGUgSE9TVC1SRVNPVVJDRVMtTUlCIGlzIGNvbnN1bHRlZCBmaXJzdC5dXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICJcdC1DaFx0UHJpbnQgdXNpbmcgaHVtYW4gcmVhZGFibGUgZm9ybWF0IChNaUIsIEdpQiwgVGlCKVxuIik7CisgICAgZnByaW50ZihzdGRlcnIsCisgICAgICAgICAgICAiXHQtQ0hcdFByaW50IHVzaW5nIGh1bWFuIHJlYWRhYmxlIFNJIGZvcm1hdCAoTUIsIEdCLCBUQilcbiIpOwogfQogCiBpbnQgICAgICAgICAgICAgdWNkX21pYiA9IDA7CitpbnQgICAgICAgICAgICAgaHVtYW5fdW5pdHMgPSAwOwogCiBzdGF0aWMgdm9pZAogb3B0UHJvYyhpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGludCBvcHQpCkBAIC0xMDEsNiArMTA2LDEyIEBACiAgICAgICAgICAgICBjYXNlICd1JzoKICAgICAgICAgICAgICAgICB1Y2RfbWliID0gMTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ2gnOgorICAgICAgICAgICAgICAgIGh1bWFuX3VuaXRzID0gMTAyNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgJ0gnOgorICAgICAgICAgICAgICAgIGh1bWFuX3VuaXRzID0gMTAwMDsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBmbGFnIHBhc3NlZCB0byAtQzogJWNcbiIsIG9wdGFyZ1stMV0pOwpAQCAtMTY2LDE0ICsxNzcsMTQgQEAKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc3BvbnNlLT5lcnJzdGF0ICE9IFNOTVBfRVJSX05PRVJST1IpIHsKLQkgICAgZnByaW50ZihzdGRlcnIsICJzbm1wZGY6IEVycm9yIGluIHBhY2tldDogJXNcbiIsCisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNubXBkZjogRXJyb3IgaW4gcGFja2V0OiAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgc25tcF9lcnJzdHJpbmcocmVzcG9uc2UtPmVycnN0YXQpKTsKICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNubXBfb2lkX2NvbXBhcmUocmVzcG9uc2UtPnZhcmlhYmxlcy0+bmFtZSwKLQkJCSAgICAgU05NUF9NSU4oYmFzZV9sZW5ndGgsCi0JCQkJICAgICAgcmVzcG9uc2UtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGgpLAotCQkJICAgICBiYXNlLCBiYXNlX2xlbmd0aCkgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9NSU4oYmFzZV9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT52YXJpYWJsZXMtPm5hbWVfbGVuZ3RoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZSwgYmFzZV9sZW5ndGgpICE9IDApCiAgICAgICAgICAgICBydW5uaW5nID0gMDsKICAgICAgICAgZWxzZSBpZiAocmVzcG9uc2UtPnZhcmlhYmxlcy0+dHlwZSA9PSBTTk1QX05PU1VDSElOU1RBTkNFIHx8CiAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT52YXJpYWJsZXMtPnR5cGUgPT0gU05NUF9OT1NVQ0hPQkpFQ1QgfHwKQEAgLTIwMyw2ICsyMTQsMjcgQEAKICAgICByZXR1cm4gc2F2ZWQ7CiB9CiAKKworCitjaGFyICpmb3JtYXRfaHVtYW4oY2hhciAqYnVmLCBzaXplX3QgbGVuLCB1bnNpZ25lZCBsb25nIG1lbSwgdW5zaWduZWQgbG9uZyBzY2FsZSkKK3sKKyAgICBpZiAobWVtID49IHNjYWxlKnNjYWxlKnNjYWxlKnNjYWxlKQorICAgICAgICBzbnByaW50ZihidWYsIGxlbiwgIiU0LjJmUCVzQiIsIChmbG9hdCltZW0vKHNjYWxlKnNjYWxlKnNjYWxlKnNjYWxlKSwKKwkJc2NhbGUgPT0gMTAyNCA/ICJpIiA6ICIiKTsKKyAgICBlbHNlIGlmIChtZW0gPj0gc2NhbGUqc2NhbGUqc2NhbGUpCisgICAgICAgIHNucHJpbnRmKGJ1ZiwgbGVuLCAiJTQuMmZUJXNCIiwgKGZsb2F0KW1lbS8oc2NhbGUqc2NhbGUqc2NhbGUpLAorCQlzY2FsZSA9PSAxMDI0ID8gImkiIDogIiIpOworICAgIGVsc2UgaWYgKG1lbSA+PSBzY2FsZSpzY2FsZSkKKyAgICAgICAgc25wcmludGYoYnVmLCBsZW4sICIlNC4yZkclc0IiLCAoZmxvYXQpbWVtLyhzY2FsZSpzY2FsZSksCisJCXNjYWxlID09IDEwMjQgPyAiaSIgOiAiIik7CisgICAgZWxzZSBpZiAobWVtID49IHNjYWxlKQorICAgICAgICBzbnByaW50ZihidWYsIGxlbiwgIiU0LjJmTSVzQiIsIChmbG9hdCltZW0vc2NhbGUsCisJCXNjYWxlID09IDEwMjQgPyAiaSIgOiAiIik7CisgICAgZWxzZQorICAgICAgICBzbnByaW50ZihidWYsIGxlbiwgIiU0LjJma0IiLCAoZmxvYXQpbWVtKTsKKyAgICByZXR1cm4gYnVmOworfQorCiAvKiBDb21wdXRlcyB2YWx1ZSp1bml0cy9kaXZpc29yIGluIGFuIG92ZXJmbG93LXByb29mIHdheS4KICAqLwogdW5zaWduZWQgbG9uZwpAQCAtMjYwLDggKzI5MiwxNCBAQAogICAgICAgICBleGl0KDEpOwogICAgIH0KIAotICAgIHByaW50ZigiJS0xOHMgJTE1cyAlMTVzICUxNXMgJTVzXG4iLCAiRGVzY3JpcHRpb24iLCAic2l6ZSAoa0IpIiwKKyAgICBpZiAoaHVtYW5fdW5pdHMpIHsKKyAgICAgICAgcHJpbnRmKCIlLTE4cyAlMTBzICUxMHMgJTEwcyAlNXNcbiIsICJEZXNjcmlwdGlvbiIsICJTaXplIiwKICAgICAgICAgICAgIlVzZWQiLCAiQXZhaWxhYmxlIiwgIlVzZWQlIik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBwcmludGYoIiUtMThzICUxNXMgJTE1cyAlMTVzICU1c1xuIiwgIkRlc2NyaXB0aW9uIiwgIlNpemUgKGtCKSIsCisgICAgICAgICAgICJVc2VkIiwgIkF2YWlsYWJsZSIsICJVc2VkJSIpOworICAgIH0KICAgICBpZiAodWNkX21pYiA9PSAwKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqICogQmVnaW4gYnkgZmluZGluZyBhbGwgdGhlIHN0b3JhZ2UgcGllY2VzIHRoYXQgYXJlIG9mCkBAIC0zMTYsMTIgKzM1NCwyNiBAQAogICAgICAgICAgICAgaWYgKHZscDItPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSkgZ290byBuZXh0OwogICAgICAgICAgICAgaHN1c2VkID0gdmxwMi0+dmFsLmludGVnZXIgPyAqKHZscDItPnZhbC5pbnRlZ2VyKSA6IDA7CiAKLSAgICAgICAgICAgIHByaW50ZigiJS0xOHMgJTE1bHUgJTE1bHUgJTE1bHUgJTRsdSUlXG4iLCBkZXNjciwKLSAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHNzaXplLCB1bml0cywgMTAyNCkgOiBoc3NpemUsCi0gICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHN1c2VkLAotICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3NpemUtaHN1c2VkLCB1bml0cywgMTAyNCkgOiBoc3NpemUgLQotICAgICAgICAgICAgICAgICAgIGhzdXNlZCwgaHNzaXplID8gY29udmVydF91bml0cyhoc3VzZWQsIDEwMCwgaHNzaXplKSA6Ci0gICAgICAgICAgICAgICAgICAgaHN1c2VkKTsKKyAgICAgICAgICAgIGlmIChodW1hbl91bml0cykgeworICAgICAgICAgICAgICAgIGNoYXIgc2l6ZVsxMF0sIHVzZWRbMTBdLCBhdmFpbFsxMF07CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlLTE4cyAlMTBzICUxMHMgJTEwcyAlNGx1JSVcbiIsIGRlc2NyLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfaHVtYW4oc2l6ZSwgc2l6ZW9mIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHNzaXplLCB1bml0cywgMTAyNCkgOiBoc3NpemUsIGh1bWFuX3VuaXRzKSwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2h1bWFuKHVzZWQsIHNpemVvZiB1c2VkLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHN1c2VkLCBodW1hbl91bml0cyksCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9odW1hbihhdmFpbCwgc2l6ZW9mIGF2YWlsLAorICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzc2l6ZS1oc3VzZWQsIHVuaXRzLCAxMDI0KSA6IGhzc2l6ZSAtCisgICAgICAgICAgICAgICAgICAgIGhzdXNlZCwgaHVtYW5fdW5pdHMpLAorICAgICAgICAgICAgICAgICAgICBoc3NpemUgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgMTAwLCBoc3NpemUpIDogaHN1c2VkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50ZigiJS0xOHMgJTE1bHUgJTE1bHUgJTE1bHUgJTRsdSUlXG4iLCBkZXNjciwKKyAgICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzc2l6ZSwgdW5pdHMsIDEwMjQpIDogaHNzaXplLAorICAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHN1c2VkLCB1bml0cywgMTAyNCkgOiBoc3VzZWQsCisgICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3NpemUtaHN1c2VkLCB1bml0cywgMTAyNCkgOiBoc3NpemUgLQorICAgICAgICAgICAgICAgICAgICBoc3VzZWQsCisgICAgICAgICAgICAgICAgICAgIGhzc2l6ZSA/IGNvbnZlcnRfdW5pdHMoaHN1c2VkLCAxMDAsIGhzc2l6ZSkgOiBoc3VzZWQpOworICAgICAgICAgICAgfQogCiAgICAgICAgIG5leHQ6CiAgICAgICAgICAgICB2bHAgPSB2bHAtPm5leHRfdmFyaWFibGU7CkBAIC0zMzEsNyArMzgzLDYgQEAKICAgICB9CiAKICAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICBzaXplX3QgICAgICAgICAgdW5pdHMgPSAwOwogICAgICAgICAvKgogICAgICAgICAgKiB0aGUgaG9zdCByZXNvdXJjZXMgbWliIG11c3Qgbm90IGJlIHN1cHBvcnRlZC4gIExldHMgdHJ5IHRoZQogICAgICAgICAgKiBVQ0QtU05NUC1NSUIgYW5kIGl0cyBkc2tUYWJsZSAKQEAgLTM3OCwxMiArNDI5LDE5IEBACiAgICAgICAgICAgICBpZiAodmxwMi0+dHlwZSA9PSBTTk1QX05PU1VDSElOU1RBTkNFKSBnb3RvIG5leHQyOwogICAgICAgICAgICAgaHN1c2VkID0gKih2bHAyLT52YWwuaW50ZWdlcik7CiAKLSAgICAgICAgICAgIHByaW50ZigiJS0xOHMgJTE1bHUgJTE1bHUgJTE1bHUgJTRsdSUlXG4iLCBkZXNjciwKLSAgICAgICAgICAgICAgICAgICB1bml0cyA/IGNvbnZlcnRfdW5pdHMoaHNzaXplLCB1bml0cywgMTAyNCkgOiBoc3NpemUsCi0gICAgICAgICAgICAgICAgICAgdW5pdHMgPyBjb252ZXJ0X3VuaXRzKGhzdXNlZCwgdW5pdHMsIDEwMjQpIDogaHN1c2VkLAotICAgICAgICAgICAgICAgICAgIHVuaXRzID8gY29udmVydF91bml0cyhoc3NpemUtaHN1c2VkLCB1bml0cywgMTAyNCkgOiBoc3NpemUgLQotICAgICAgICAgICAgICAgICAgIGhzdXNlZCwgaHNzaXplID8gY29udmVydF91bml0cyhoc3VzZWQsIDEwMCwgaHNzaXplKSA6Ci0gICAgICAgICAgICAgICAgICAgaHN1c2VkKTsKKyAgICAgICAgICAgIGlmIChodW1hbl91bml0cykgeworICAgICAgICAgICAgICAgIGNoYXIgc2l6ZVsxMF0sIHVzZWRbMTBdLCBhdmFpbFsxMF07CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlLTE4cyAlMTBzICUxMHMgJTEwcyAlNGx1JSVcbiIsIGRlc2NyLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfaHVtYW4oc2l6ZSwgc2l6ZW9mIHNpemUsIGhzc2l6ZSwgaHVtYW5fdW5pdHMpLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfaHVtYW4odXNlZCwgc2l6ZW9mIHVzZWQsIGhzdXNlZCwgaHVtYW5fdW5pdHMpLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfaHVtYW4oYXZhaWwsIHNpemVvZiBhdmFpbCwgaHNzaXplIC0gaHN1c2VkLCBodW1hbl91bml0cyksCisgICAgICAgICAgICAgICAgICAgIGhzc2l6ZSA/IGNvbnZlcnRfdW5pdHMoaHN1c2VkLCAxMDAsIGhzc2l6ZSkgOiBoc3VzZWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIlLTE4cyAlMTVsdSAlMTVsdSAlMTVsdSAlNGx1JSVcbiIsIGRlc2NyLAorICAgICAgICAgICAgICAgICAgICAgaHNzaXplLCBoc3VzZWQsIGhzc2l6ZSAtIGhzdXNlZCwKKyAgICAgICAgICAgICAgICAgICAgIGhzc2l6ZSA/IGNvbnZlcnRfdW5pdHMoaHN1c2VkLCAxMDAsIGhzc2l6ZSkgOiBoc3VzZWQpOworICAgICAgICAgICAgfQogCiAgICAgICAgIG5leHQyOgogICAgICAgICAgICAgdmxwID0gdmxwLT5uZXh0X3ZhcmlhYmxlOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQgYi9hcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZAppbmRleCBjMWZhZWNmLi5hN2FkMDk1IDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZAorKysgYi9hcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZApAQCAtMzcsNiArMzcsNyBAQAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03MSw2ICs3Miw3IEBACiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9pZi5sbzogbWFpbi5oCiAuL2lmLmxvOiBuZXRzdGF0LmgKQEAgLTEwOCw2ICsxMTAsNyBAQAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xNDIsNiArMTQ1LDcgQEAKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIG1haW4uaCBuZXRzdGF0LmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTE3Nyw2ICsxODEsNyBAQAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIxMSw3ICsyMTYsNzkgQEAKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBtYWluLmggbmV0c3RhdC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9pbmV0eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2luZXR4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKy4vaW5ldHgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggbWFpbi5oIG5ldHN0YXQuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTI0Niw2ICszMjMsNyBAQAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTI4MCw2ICszNTgsNyBAQAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIG1haW4uaCBuZXRzdGF0LmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMzE1LDYgKzM5NCw3IEBACiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM0OSw3ICs0MjksNzkgQEAKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIG1haW4uaCBuZXRzdGF0LmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3JvdXRleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9yb3V0ZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKy4vcm91dGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIG1haW4uaCBuZXRzdGF0LmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCkBAIC0zODQsNiArNTM2LDcgQEAKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC00MTgsNCArNTcxLDUgQEAKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaApkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiBiL2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4KaW5kZXggNGEwN2ViYi4uMDRhZWI0MCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbgorKysgYi9hcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCkBAIC0zLDYgKzMsOCBAQAogIwogCiB0b3BfYnVpbGRkaXI9Li4vLi4KK215c3ViZGlyPWFwcHMvc25tcG5ldHN0YXQKKwogSU5TVEFMTEJJTlBST0dTPXNubXBuZXRzdGF0JChFWEVFWFQpCiAKICMgdXNlIEdOVSB2cGF0aCwgaWYgYXZhaWxhYmxlLCB0byBvbmx5IHNldCBhIHBhdGggZm9yIHNvdXJjZSBhbmQgaGVhZGVycwpAQCAtMTYsMTUgKzE4LDE5IEBACiAjCiAjIGJ1aWxkIGluZm8KICMKLVNSQ1M9CWluZXQuYyBpbmV0Ni5jIGlmLmMgbWFpbi5jIHJvdXRlLmMgd2luc3R1Yi5jIGZmcy5jCi1PQkpTPQlpbmV0Lm8gaW5ldDYubyBpZi5vIG1haW4ubyByb3V0ZS5vIHdpbnN0dWIubyBmZnMubwotTE9CSlM9CWluZXQubG8gaW5ldDYubG8gaWYubG8gbWFpbi5sbyByb3V0ZS5sbyB3aW5zdHViLmxvIGZmcy5sbworU1JDUz0JaW5ldC5jIGluZXQ2LmMgaW5ldHguYyBpZi5jIG1haW4uYyByb3V0ZS5jIHJvdXRleC5jIHdpbnN0dWIuYyBmZnMuYworT0JKUz0JaW5ldC5vIGluZXQ2Lm8gaW5ldHgubyBpZi5vIG1haW4ubyByb3V0ZS5vIHJvdXRleC5vIHdpbnN0dWIubyBmZnMubworTE9CSlM9CWluZXQubG8gaW5ldDYubG8gaW5ldHgubG8gaWYubG8gbWFpbi5sbyByb3V0ZS5sbyByb3V0ZXgubG8gd2luc3R1Yi5sbyBmZnMubG8KK0ZUT0JKUz0JaW5ldC5mdCBpbmV0Ni5mdCBpbmV0eC5mdCBpZi5mdCBtYWluLmZ0IHJvdXRlLmZ0IHJvdXRleC5mdCB3aW5zdHViLmZ0IGZmcy5mdAogVEFSRz0gc25tcG5ldHN0YXQkKEVYRUVYVCkKIAorRkVBVFVSRUZJTEU9Li4vLi4vaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlcy1zbm1wbmV0c3RhdC5oCisKIENQUEZMQUdTPSAkKFRPUF9JTkNMVURFUykgIEBDUFBGTEFHU0AKIAorVkFMX0xJQlMJPSBAVkFMX0xJQlNACiBVU0VMSUJTPSAuLi8uLi9zbm1wbGliL2xpYm5ldHNubXAuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pCi1MSUJTPQkgLi4vLi4vc25tcGxpYi9saWJuZXRzbm1wLiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKSBATElCU0AKK0xJQlM9CSAuLi8uLi9zbm1wbGliL2xpYm5ldHNubXAuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pICQoVkFMX0xJQlMpIEBMSUJTQAogCiBhbGw6IHN0YW5kYXJkYWxsCiAKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvaWYuYyBiL2FwcHMvc25tcG5ldHN0YXQvaWYuYwppbmRleCA4MTMzNGY3Li4xMjVlNmEzIDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L2lmLmMKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9pZi5jCkBAIC0xNTEsMTYgKzE1MSwxNiBAQAogICAgICAgICAgKiAgIGRpc3BsYXlpbmcgdGhlIGxvY2FsIG5ldHdvcmsgaW5mb3JtYXRpb24KICAgICAgICAgICovCiAgICAgICAgIGNwID0gdG1wQWRkci5kYXRhOwotICAgICAgICBjcFswXSA9IHZwMi0+bmFtZVsgMTAgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzFdID0gdnAyLT5uYW1lWyAxMSBdICYgMHhmZjsKLSAgICAgICAgY3BbMl0gPSB2cDItPm5hbWVbIDEyIF0gJiAweGZmOwotICAgICAgICBjcFszXSA9IHZwMi0+bmFtZVsgMTMgXSAmIDB4ZmY7CisgICAgICAgIGNwWzBdID0gKHVpbnQ4X3QpIHZwMi0+bmFtZVsxMF07CisgICAgICAgIGNwWzFdID0gKHVpbnQ4X3QpIHZwMi0+bmFtZVsxMV07CisgICAgICAgIGNwWzJdID0gKHVpbnQ4X3QpIHZwMi0+bmFtZVsxMl07CisgICAgICAgIGNwWzNdID0gKHVpbnQ4X3QpIHZwMi0+bmFtZVsxM107CiAgICAgICAgIGlmQWRkciA9IHRtcEFkZHIuYWRkcjsKICAgICAgICAgY3AgPSB0bXBBZGRyLmRhdGE7Ci0gICAgICAgIGNwWzBdID0gdnAyLT52YWwuc3RyaW5nWyAwIF0gJiAweGZmOwotICAgICAgICBjcFsxXSA9IHZwMi0+dmFsLnN0cmluZ1sgMSBdICYgMHhmZjsKLSAgICAgICAgY3BbMl0gPSB2cDItPnZhbC5zdHJpbmdbIDIgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzNdID0gdnAyLT52YWwuc3RyaW5nWyAzIF0gJiAweGZmOworICAgICAgICBjcFswXSA9ICh1aW50OF90KSB2cDItPnZhbC5zdHJpbmdbMF07CisgICAgICAgIGNwWzFdID0gKHVpbnQ4X3QpIHZwMi0+dmFsLnN0cmluZ1sxXTsKKyAgICAgICAgY3BbMl0gPSAodWludDhfdCkgdnAyLT52YWwuc3RyaW5nWzJdOworICAgICAgICBjcFszXSA9ICh1aW50OF90KSB2cDItPnZhbC5zdHJpbmdbM107CiAgICAgICAgIG1hc2sgPSB0bXBBZGRyLmFkZHI7CiAgICAgICAgIHNucHJpbnRmKCBjdXJfaWYtPnJvdXRlLCAxMjgsICIlcyIsIG5ldG5hbWUoaWZBZGRyLCBtYXNrKSk7CiAgICAgfQpAQCAtMjkxLDcgKzI5MSw2IEBACiAgICAgICAgICAgICAgICAgICogWFhYIC0gVHJ5IHRvIHJlY292ZXIgPwogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIFNOTVBfRlJFRSggY3VyX2lmICk7Ci0gICAgICAgICAgICAgICAgY3VyX2lmID0gTlVMTDsKICAgICAgICAgICAgICAgICBicmVhazsgICAgLyogbm90IGZvciBub3csIG5vICovCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzd2l0Y2ggKCB2cC0+bmFtZVsgdmFyLT5uYW1lX2xlbmd0aC0yIF0gKSB7CkBAIC0zOTYsNyArMzk1LDYgQEAKICAgICAgICAgICovCiAgICAgICAgIGlmICggaW50cmZhY2UgJiYgc3RyY21wKCBjdXJfaWYtPm5hbWUsIGludHJmYWNlKSAhPSAwICYmIHN0cmNtcCggY3VyX2lmLT5kZXNjciwgaW50cmZhY2UpICE9IDApIHsKICAgICAgICAgICAgIFNOTVBfRlJFRSggY3VyX2lmICk7Ci0gICAgICAgICAgICBjdXJfaWYgPSBOVUxMOwogICAgICAgICB9CiAKICAgICAgICAgLyoKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKaW5kZXggNmY3YzFlMS4uMDUzNzM0MCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKQEAgLTEyNiw3ICsxMjYsNyBAQAogCQlpZiAoYWZsYWcpCiAJCQlwcmludGYoIiAoaW5jbHVkaW5nIHNlcnZlcnMpIik7CiAJCXB1dGNoYXIoJ1xuJyk7Ci0JCXdpZHRoID0gQWZsYWcgPyAxOCA6IDIyOworCQl3aWR0aCA9IDI3OwogCQlwcmludGYoIiUtNS41cyAlKi4qcyAlKi4qcyAlc1xuIiwKIAkJCSAgICJQcm90byIsIC13aWR0aCwgd2lkdGgsICJMb2NhbCBBZGRyZXNzIiwKIAkJCQkJCS13aWR0aCwgd2lkdGgsICJSZW1vdGUgQWRkcmVzcyIsICIoc3RhdGUpIik7CkBAIC0xMzUsMjcgKzEzNSwyNyBAQAogCQogCS8qIEV4dHJhY3QgdGhlIGxvY2FsL3JlbW90ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbmRleCB2YWx1ZXMgKi8KIAljcCA9IHRtcEFkZHIuZGF0YTsKLQljcFswXSA9IHZwLT5uYW1lWyAxMCBdICYgMHhmZjsKLQljcFsxXSA9IHZwLT5uYW1lWyAxMSBdICYgMHhmZjsKLQljcFsyXSA9IHZwLT5uYW1lWyAxMiBdICYgMHhmZjsKLQljcFszXSA9IHZwLT5uYW1lWyAxMyBdICYgMHhmZjsKKwljcFswXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxMF07CisJY3BbMV0gPSAodWludDhfdCkgdnAtPm5hbWVbMTFdOworCWNwWzJdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzEyXTsKKwljcFszXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxM107CiAJbG9jYWxBZGRyLnNfYWRkciA9IHRtcEFkZHIuYWRkci5zX2FkZHI7Ci0JbG9jYWxQb3J0ICAgICAgICA9IG50b2hzKHZwLT5uYW1lWyAxNCBdKTsKKwlsb2NhbFBvcnQgICAgICAgID0gdnAtPm5hbWVbIDE0IF07CiAJY3AgPSB0bXBBZGRyLmRhdGE7Ci0JY3BbMF0gPSB2cC0+bmFtZVsgMTUgXSAmIDB4ZmY7Ci0JY3BbMV0gPSB2cC0+bmFtZVsgMTYgXSAmIDB4ZmY7Ci0JY3BbMl0gPSB2cC0+bmFtZVsgMTcgXSAmIDB4ZmY7Ci0JY3BbM10gPSB2cC0+bmFtZVsgMTggXSAmIDB4ZmY7CisJY3BbMF0gPSAodWludDhfdCkgdnAtPm5hbWVbMTVdOworCWNwWzFdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzE2XTsKKwljcFsyXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxN107CisJY3BbM10gPSAodWludDhfdCkgdnAtPm5hbWVbMThdOwogCXJlbW90ZUFkZHIuc19hZGRyID0gdG1wQWRkci5hZGRyLnNfYWRkcjsKLQlyZW1vdGVQb3J0ICAgICAgICA9IG50b2hzKHZwLT5uYW1lWyAxOSBdKTsKKwlyZW1vdGVQb3J0ICAgICAgICA9IHZwLT5uYW1lWyAxOSBdOwogCiAJcHJpbnRmKCIlLTUuNXMiLCBuYW1lKTsKIAlpbmV0cHJpbnQoJmxvY2FsQWRkciwgIGxvY2FsUG9ydCwgIG5hbWUsIDEpOwogCWluZXRwcmludCgmcmVtb3RlQWRkciwgcmVtb3RlUG9ydCwgbmFtZSwgMCk7CiAJaWYgKHN0YXRlIDwgMSB8fCBzdGF0ZSA+IFRDUF9OU1RBVEVTKSB7Ci0JCXByaW50ZigiJWRcbiIsIHN0YXRlICk7CisJCXByaW50ZigiICVkXG4iLCBzdGF0ZSApOwogCX0gZWxzZSB7Ci0JCXByaW50ZigiJXNcbiIsIHRjcHN0YXRlc1tzdGF0ZV0pOworCQlwcmludGYoIiAlc1xuIiwgdGNwc3RhdGVzW3N0YXRlXSk7CiAJfQogfQogCkBAIC0xNzYsNiArMTc2LDggQEAKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICByZXR1cm47CisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkvKiBFeGNlcHRpb24gKi8KKwlyZXR1cm47CiAKICAgICBmb3IgKHZwID0gdmFyOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7CiAgICAgICAgIHRjcHByb3RvcHJpbnRfbGluZShuYW1lLCB2cCwgJmZpcnN0KTsKQEAgLTIxMiw5ICsyMTQsMTEgQEAKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICByZXR1cm47CisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkvKiBFeGNlcHRpb24gKi8KKwlyZXR1cm47CiAKICAgICBwcmludGYoIkFjdGl2ZSBJbnRlcm5ldCAoJXMpIENvbm5lY3Rpb25zXG4iLCBuYW1lKTsKLSAgICBwcmludGYoIiUtNS41cyAlLTI4LjI4c1xuIiwgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiKTsKKyAgICBwcmludGYoIiUtNS41cyAlLTI3LjI3c1xuIiwgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiKTsKICAgICBmb3IgKHZwID0gdmFyOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7CiAgICAgICAgIHByaW50ZigiJS01LjVzIiwgbmFtZSk7CiAgICAgICAgIC8qCkBAIC0yMjMsMTIgKzIyNywxMiBAQAogICAgICAgICAgKiAgIHdlIHdhbGtlZCB1ZHBMb2NhbEFkZHJlc3MgcmF0aGVyIHRoYW4gdWRwTG9jYWxQb3J0KQogICAgICAgICAgKi8KICAgICAgICAgY3AgPSB0bXBBZGRyLmRhdGE7Ci0gICAgICAgIGNwWzBdID0gdnAtPm5hbWVbIDEwIF0gJiAweGZmOwotICAgICAgICBjcFsxXSA9IHZwLT5uYW1lWyAxMSBdICYgMHhmZjsKLSAgICAgICAgY3BbMl0gPSB2cC0+bmFtZVsgMTIgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzNdID0gdnAtPm5hbWVbIDEzIF0gJiAweGZmOworICAgICAgICBjcFswXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxMF07CisgICAgICAgIGNwWzFdID0gKHVpbnQ4X3QpIHZwLT5uYW1lWzExXTsKKyAgICAgICAgY3BbMl0gPSAodWludDhfdCkgdnAtPm5hbWVbMTJdOworICAgICAgICBjcFszXSA9ICh1aW50OF90KSB2cC0+bmFtZVsxM107CiAgICAgICAgIGxvY2FsQWRkci5zX2FkZHIgPSB0bXBBZGRyLmFkZHIuc19hZGRyOwotICAgICAgICBsb2NhbFBvcnQgICAgICAgID0gbnRvaHMoICh1X3Nob3J0KSh2cC0+bmFtZVsgMTQgXSkpOworICAgICAgICBsb2NhbFBvcnQgICAgICAgID0gdnAtPm5hbWVbIDE0IF07CiAgICAgICAgIGluZXRwcmludCgmbG9jYWxBZGRyLCBsb2NhbFBvcnQsIG5hbWUsIDEpOwogICAgICAgICBwdXRjaGFyKCdcbicpOwogICAgIH0KQEAgLTI4MSwxMSArMjg1LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0JCQkJCXRjcHByb3RvcHJpbnRfbGluZShuYW1lLCB2cCwgJmZpcnN0KTsKLQogICAgICAgICAgICAgICAgICAgICBpZiAoKHZwLT50eXBlICE9IFNOTVBfRU5ET0ZNSUJWSUVXKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgKHZwLT50eXBlICE9IFNOTVBfTk9TVUNIT0JKRUNUKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgKHZwLT50eXBlICE9IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CisKKwkJCXRjcHByb3RvcHJpbnRfbGluZShuYW1lLCB2cCwgJmZpcnN0KTsKKwogICAgICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICAgICAqIENoZWNrIGlmIGxhc3QgdmFyaWFibGUsIGFuZCBpZiBzbywgc2F2ZSBmb3IgbmV4dCByZXF1ZXN0LgogICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC0zMjQsMTkgKzMyOSwxOSBAQAogewogICAgIG9pZCAgICB0Y3BDb25uU3RhdGVfb2lkW10gPSB7IDEsMyw2LDEsMiwxLDYsMTMsMSwxIH07CiAgICAgc2l6ZV90IHRjcENvbm5TdGF0ZV9sZW4gICA9IE9JRF9MRU5HVEgoIHRjcENvbm5TdGF0ZV9vaWQgKTsKLQlpbnQgICAgdXNlX2dldGJ1bGsgPSAxOworICAgIGludCAgICB1c2VfZ2V0YnVsayA9IDE7CiAKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMQogICAgIGlmIChzcy0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMSkgewogICAgICAgICB1c2VfZ2V0YnVsayA9IDA7Ci0JfQorICAgIH0KICNlbmRpZgogCi0JaWYgKHVzZV9nZXRidWxrKSB7Ci0JCXRjcHByb3RvcHJfYnVsa2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKLQl9IGVsc2UgewotCQl0Y3Bwcm90b3ByX2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKLQl9CisgICAgaWYgKHVzZV9nZXRidWxrKSB7CisJICAgIHRjcHByb3RvcHJfYnVsa2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKKyAgICB9IGVsc2UgeworCSAgICB0Y3Bwcm90b3ByX2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKKyAgICB9CiB9CiAKIApAQCAtMzkxLDcgKzM5Niw2IEBACiAgICAgICAgICAqICAgdGhlbiBvbmx5IGRpc3BsYXkgbm9uLXplcm8gc3RhdHMuCiAgICAgICAgICAqLwogICAgICAgICBpZiAoICp2cC0+dmFsLmludGVnZXIgPiAwIHx8IHNmbGFnID09IDEgKSB7Ci0gICAgICAgICAgICBwdXRjaGFyKCdcdCcpOwogICAgICAgICAgICAgcHJpbnRmKHNwLT5kZXNjcmlwdGlvbiwgKnZwLT52YWwuaW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1cmFsKCp2cC0+dmFsLmludGVnZXIpKTsKICAgICAgICAgICAgIHB1dGNoYXIoJ1xuJyk7CkBAIC00MTAsMjQgKzQxNCwyNCBAQAogICAgIG9pZCAgICAgICAgICAgICAgIGlwc3RhdHNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDAsIDAgfTsKICAgICBzaXplX3QgICAgICAgICAgICBpcHN0YXRzX2xlbiAgID0gT0lEX0xFTkdUSCggaXBzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpcHN0YXRzX3RibFtdID0gewotICAgICAgICB7MywgIiVkIHRvdGFsIGRhdGFncmFtJXMgcmVjZWl2ZWQifSwKLSAgICAgICAgezQsICIlZCBkYXRhZ3JhbSVzIHdpdGggaGVhZGVyIGVycm9ycyJ9LAotICAgICAgICB7NSwgIiVkIGRhdGFncmFtJXMgd2l0aCBhbiBpbnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3MifSwKLSAgICAgICAgezYsICIlZCBkYXRhZ3JhbSVzIGZvcndhcmRlZCJ9LAotICAgICAgICB7NywgIiVkIGRhdGFncmFtJXMgd2l0aCB1bmtub3duIHByb3RvY29sIn0sCi0gICAgICAgIHs4LCAiJWQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezksICIlZCBkYXRhZ3JhbSVzIGRlbGl2ZXJlZCJ9LAotICAgICAgICB7MTAsICIlZCBvdXRwdXQgZGF0YWdyYW0gcmVxdWVzdCVzIn0sCi0gICAgICAgIHsxMSwgIiVkIG91dHB1dCBkYXRhZ3JhbSVzIGRpc2NhcmRlZCJ9LAotICAgICAgICB7MTIsICIlZCBkYXRhZ3JhbSVzIHdpdGggbm8gcm91dGUifSwKLSAgICAgICAgezE0LCAiJWQgZnJhZ21lbnQlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MTUsICIlZCBkYXRhZ3JhbSVzIHJlYXNzZW1ibGVkIn0sCi0gICAgICAgIHsxNiwgIiVkIHJlYXNzZW1ibHkgZmFpbHVyZSVzIn0sCi0gICAgICAgIHsxNywgIiVkIGRhdGFncmFtJXMgZnJhZ21lbnRlZCJ9LAotICAgICAgICB7MTgsICIlZCBmcmFnbWVudGF0aW9uIGZhaWx1cmUlcyJ9LAotICAgICAgICB7MTksICIlZCBmcmFnbWVudCVzIGNyZWF0ZWQifSwKLSAgICAgICAgezIzLCAiJWQgcm91dGUlcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezAsICIifQorICAgICAgICB7IDMsICIlMTRkIHRvdGFsIGRhdGFncmFtJXMgcmVjZWl2ZWQifSwKKyAgICAgICAgeyA0LCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggaGVhZGVyIGVycm9ycyJ9LAorICAgICAgICB7IDUsICIlMTRkIGRhdGFncmFtJXMgd2l0aCBhbiBpbnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3MifSwKKyAgICAgICAgeyA2LCAiJTE0ZCBkYXRhZ3JhbSVzIGZvcndhcmRlZCJ9LAorICAgICAgICB7IDcsICIlMTRkIGRhdGFncmFtJXMgd2l0aCB1bmtub3duIHByb3RvY29sIn0sCisgICAgICAgIHsgOCwgIiUxNGQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKKyAgICAgICAgeyA5LCAiJTE0ZCBkYXRhZ3JhbSVzIGRlbGl2ZXJlZCJ9LAorICAgICAgICB7MTAsICIlMTRkIG91dHB1dCBkYXRhZ3JhbSByZXF1ZXN0JXMifSwKKyAgICAgICAgezExLCAiJTE0ZCBvdXRwdXQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKKyAgICAgICAgezEyLCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggbm8gcm91dGUifSwKKyAgICAgICAgezE0LCAiJTE0ZCBmcmFnbWVudCVzIHJlY2VpdmVkIn0sCisgICAgICAgIHsxNSwgIiUxNGQgZGF0YWdyYW0lcyByZWFzc2VtYmxlZCJ9LAorICAgICAgICB7MTYsICIlMTRkIHJlYXNzZW1ibHkgZmFpbHVyZSVzIn0sCisgICAgICAgIHsxNywgIiUxNGQgZGF0YWdyYW0lcyBmcmFnbWVudGVkIn0sCisgICAgICAgIHsxOCwgIiUxNGQgZnJhZ21lbnRhdGlvbiBmYWlsdXJlJXMifSwKKyAgICAgICAgezE5LCAiJTE0ZCBmcmFnbWVudCVzIGNyZWF0ZWQifSwKKyAgICAgICAgezIzLCAiJTE0ZCByb3V0ZSVzIGRpc2NhcmRlZCJ9LAorICAgICAgICB7IDAsICIifQogICAgIH07CiAKICAgICBfZHVtcF9zdGF0cyggbmFtZSwgaXBzdGF0c19vaWQsIGlwc3RhdHNfbGVuLCBpcHN0YXRzX3RibCApOwpAQCAtNDQzLDM4ICs0NDcsMzggQEAKICAgICBvaWQgICAgICAgICAgICAgICBpY21wc3RhdHNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDUsIDAsIDAgfTsKICAgICBzaXplX3QgICAgICAgICAgICBpY21wc3RhdHNfbGVuICAgPSBPSURfTEVOR1RIKCBpY21wc3RhdHNfb2lkICk7CiAgICAgc3RydWN0IHN0YXRfdGFibGUgaWNtcHN0YXRzX3RibFtdID0gewotICAgICAgICB7MSwgIiVkIHRvdGFsIG1lc3NhZ2UlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MiwgIiVkIG1lc3NhZ2UlcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKLSAgICAgICAgezE0LCAiJWQgb3VwdXQgbWVzc2FnZSByZXF1ZXN0JXMifSwKLSAgICAgICAgezE1LCAiJWQgb3V0cHV0IG1lc3NhZ2UlcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezAsICIifQorICAgICAgICB7IDEsICIlMTRkIHRvdGFsIG1lc3NhZ2UlcyByZWNlaXZlZCJ9LAorICAgICAgICB7IDIsICIlMTRkIG1lc3NhZ2UlcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKKyAgICAgICAgezE0LCAiJTE0ZCBvdXB1dCBtZXNzYWdlIHJlcXVlc3QlcyJ9LAorICAgICAgICB7MTUsICIlMTRkIG91dHB1dCBtZXNzYWdlJXMgZGlzY2FyZGVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wX2luaGlzdG9ncmFtW10gPSB7Ci0gICAgICAgIHszLCAiRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCi0gICAgICAgIHs0LCAiVGltZSBFeGNlZWRlZDogJWQifSwKLSAgICAgICAgezUsICJQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKLSAgICAgICAgezYsICJTb3VyY2UgUXVlbmNoOiAlZCJ9LAotICAgICAgICB7NywgIlJlZGlyZWN0OiAlZCJ9LAotICAgICAgICB7OCwgIkVjaG8gUmVxdWVzdDogJWQifSwKLSAgICAgICAgezksICJFY2hvIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MTAsICJUaW1lc3RhbXAgUmVxdWVzdDogJWQifSwKLSAgICAgICAgezExLCAiVGltZXN0YW1wIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MTIsICJBZGRyZXNzIE1hc2sgUmVxdWVzdDogJWQifSwKLSAgICAgICAgezEzLCAiQWRkcmVzcyBNYXNrIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MCwgIiJ9CisgICAgICAgIHsgMywgIiAgICAgICAgRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCisgICAgICAgIHsgNCwgIiAgICAgICAgVGltZSBFeGNlZWRlZDogJWQifSwKKyAgICAgICAgeyA1LCAiICAgICAgICBQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKKyAgICAgICAgeyA2LCAiICAgICAgICBTb3VyY2UgUXVlbmNoOiAlZCJ9LAorICAgICAgICB7IDcsICIgICAgICAgIFJlZGlyZWN0OiAlZCJ9LAorICAgICAgICB7IDgsICIgICAgICAgIEVjaG8gUmVxdWVzdDogJWQifSwKKyAgICAgICAgeyA5LCAiICAgICAgICBFY2hvIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MTAsICIgICAgICAgIFRpbWVzdGFtcCBSZXF1ZXN0OiAlZCJ9LAorICAgICAgICB7MTEsICIgICAgICAgIFRpbWVzdGFtcCBSZXBseTogJWQifSwKKyAgICAgICAgezEyLCAiICAgICAgICBBZGRyZXNzIE1hc2sgUmVxdWVzdDogJWQifSwKKyAgICAgICAgezEzLCAiICAgICAgICBBZGRyZXNzIE1hc2sgUmVwbHk6ICVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wX291dGhpc3RvZ3JhbVtdID0gewotICAgICAgICB7MTYsICJEZXN0aW5hdGlvbiB1bnJlYWNoYWJsZTogJWQifSwKLSAgICAgICAgezE3LCAiVGltZSBFeGNlZWRlZDogJWQifSwKLSAgICAgICAgezE4LCAiUGFyYW1ldGVyIFByb2JsZW06ICVkIn0sCi0gICAgICAgIHsxOSwgIlNvdXJjZSBRdWVuY2g6ICVkIn0sCi0gICAgICAgIHsyMCwgIlJlZGlyZWN0OiAlZCJ9LAotICAgICAgICB7MjEsICJFY2hvIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHsyMiwgIkVjaG8gUmVwbHk6ICVkIn0sCi0gICAgICAgIHsyMywgIlRpbWVzdGFtcCBSZXF1ZXN0OiAlZCJ9LAotICAgICAgICB7MjQsICJUaW1lc3RhbXAgUmVwbHk6ICVkIn0sCi0gICAgICAgIHsyNSwgIkFkZHJlc3MgTWFzayBSZXF1ZXN0OiAlZCJ9LAotICAgICAgICB7MjYsICJBZGRyZXNzIE1hc2sgUmVwbHk6ICVkIn0sCisgICAgICAgIHsxNiwgIiAgICAgICAgRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCisgICAgICAgIHsxNywgIiAgICAgICAgVGltZSBFeGNlZWRlZDogJWQifSwKKyAgICAgICAgezE4LCAiICAgICAgICBQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKKyAgICAgICAgezE5LCAiICAgICAgICBTb3VyY2UgUXVlbmNoOiAlZCJ9LAorICAgICAgICB7MjAsICIgICAgICAgIFJlZGlyZWN0OiAlZCJ9LAorICAgICAgICB7MjEsICIgICAgICAgIEVjaG8gUmVxdWVzdDogJWQifSwKKyAgICAgICAgezIyLCAiICAgICAgICBFY2hvIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MjMsICIgICAgICAgIFRpbWVzdGFtcCBSZXF1ZXN0OiAlZCJ9LAorICAgICAgICB7MjQsICIgICAgICAgIFRpbWVzdGFtcCBSZXBseTogJWQifSwKKyAgICAgICAgezI1LCAiICAgICAgICBBZGRyZXNzIE1hc2sgUmVxdWVzdDogJWQifSwKKyAgICAgICAgezI2LCAiICAgICAgICBBZGRyZXNzIE1hc2sgUmVwbHk6ICVkIn0sCiAgICAgICAgIHswLCAiIn0KICAgICB9OwogCkBAIC00OTUsMTkgKzQ5OSwxOSBAQAogICAgIG9pZCAgICAgICAgICAgICAgIHRjcHN0YXRzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA2LCAwLCAwIH07CiAgICAgc2l6ZV90ICAgICAgICAgICAgdGNwc3RhdHNfbGVuICAgPSBPSURfTEVOR1RIKCB0Y3BzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSB0Y3BzdGF0c190YmxbXSA9IHsKLSAgICAgICAgezUsICIlZCBhY3RpdmUgb3BlbiVzIn0sCi0gICAgICAgIHs2LCAiJWQgcGFzc2l2ZSBvcGVuJXMifSwKLSAgICAgICAgezcsICIlZCBmYWlsZWQgYXR0ZW1wdCVzIn0sCi0gICAgICAgIHs4LCAiJWQgcmVzZXQlcyBvZiBlc3RhYmxpc2hlZCBjb25uZWN0aW9ucyJ9LAotICAgICAgICB7OSwgIiVkIGN1cnJlbnQgZXN0YWJsaXNoZWQgY29ubmVjdGlvbiVzIn0sCi0gICAgICAgIHsxMCwgIiVkIHNlZ21lbnQlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MTEsICIlZCBzZWdtZW50JXMgc2VudCJ9LAotICAgICAgICB7MTIsICIlZCBzZWdtZW50JXMgcmV0cmFuc21pdHRlZCJ9LAotICAgICAgICB7MTQsICIlZCBpbnZhbGlkIHNlZ21lbnQlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MTUsICIlZCByZXNldCVzIHNlbnQifSwKLSAgICAgICAgezAsICIifQorICAgICAgICB7IDUsICIlMTRkIGFjdGl2ZSBvcGVuJXMifSwKKyAgICAgICAgeyA2LCAiJTE0ZCBwYXNzaXZlIG9wZW4lcyJ9LAorICAgICAgICB7IDcsICIlMTRkIGZhaWxlZCBhdHRlbXB0JXMifSwKKyAgICAgICAgeyA4LCAiJTE0ZCByZXNldCVzIG9mIGVzdGFibGlzaGVkIGNvbm5lY3Rpb25zIn0sCisgICAgICAgIHsgOSwgIiUxNGQgY3VycmVudGx5IGVzdGFibGlzaGVkIGNvbm5lY3Rpb24lcyJ9LAorICAgICAgICB7MTAsICIlMTRkIHNlZ21lbnQlcyByZWNlaXZlZCJ9LAorICAgICAgICB7MTEsICIlMTRkIHNlZ21lbnQlcyBzZW50In0sCisgICAgICAgIHsxMiwgIiUxNGQgc2VnbWVudCVzIHJldHJhbnNtaXR0ZWQifSwKKyAgICAgICAgezE0LCAiJTE0ZCBpbnZhbGlkIHNlZ21lbnQlcyByZWNlaXZlZCJ9LAorICAgICAgICB7MTUsICIlMTRkIHJlc2V0JXMgc2VudCJ9LAorICAgICAgICB7IDAsICIifQogICAgIH07Ci0gICAgX2R1bXBfc3RhdHMoIG5hbWUsIHRjcHN0YXRzX29pZCwgdGNwc3RhdHNfbGVuLCB0Y3BzdGF0c190YmwgKTsKKyAgICBfZHVtcF9zdGF0cyggInRjcCIsIHRjcHN0YXRzX29pZCwgdGNwc3RhdHNfbGVuLCB0Y3BzdGF0c190YmwgKTsKIH0KIAogCkBAIC01MjAsMTMgKzUyNCwxMyBAQAogICAgIG9pZCAgICAgICAgICAgICAgIHVkcHN0YXRzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA3LCAwLCAwIH07CiAgICAgc2l6ZV90ICAgICAgICAgICAgdWRwc3RhdHNfbGVuICAgPSBPSURfTEVOR1RIKCB1ZHBzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSB1ZHBzdGF0c190YmxbXSA9IHsKLSAgICAgICAgezEsICIlZCB0b3RhbCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCi0gICAgICAgIHsyLCAiJWQgZGF0YWdyYW0lcyB0byBpbnZhbGlkIHBvcnQifSwKLSAgICAgICAgezMsICIlZCBkYXRhZ3JhbSVzIGRyb3BwZWQgZHVlIHRvIGVycm9ycyJ9LAotICAgICAgICB7NCwgIiVkIG91dHB1dCBkYXRhZ3JhbSByZXF1ZXN0JXMifSwKKyAgICAgICAgezEsICIlMTRkIHRvdGFsIGRhdGFncmFtJXMgcmVjZWl2ZWQifSwKKyAgICAgICAgezIsICIlMTRkIGRhdGFncmFtJXMgdG8gaW52YWxpZCBwb3J0In0sCisgICAgICAgIHszLCAiJTE0ZCBkYXRhZ3JhbSVzIGRyb3BwZWQgZHVlIHRvIGVycm9ycyJ9LAorICAgICAgICB7NCwgIiUxNGQgb3V0cHV0IGRhdGFncmFtIHJlcXVlc3QlcyJ9LAogICAgICAgICB7MCwgIiJ9CiAgICAgfTsKLSAgICBfZHVtcF9zdGF0cyggbmFtZSwgdWRwc3RhdHNfb2lkLCB1ZHBzdGF0c19sZW4sIHVkcHN0YXRzX3RibCApOworICAgIF9kdW1wX3N0YXRzKCAidWRwIiwgdWRwc3RhdHNfb2lkLCB1ZHBzdGF0c19sZW4sIHVkcHN0YXRzX3RibCApOwogfQogCiAKQEAgLTU2MCwyMiArNTY0LDI1IEBACiB7CiAJc3RydWN0IHNlcnZlbnQgKnNwID0gTlVMTDsKIAljaGFyIGxpbmVbODBdLCAqY3A7Ci0JaW50IHdpZHRoOworCWludCB3aWR0aCA9IDI3OwogCi0Jc25wcmludGYobGluZSwgc2l6ZW9mIGxpbmUsICIlLipzLiIsIChBZmxhZyAmJiAhbmZsYWcpID8gMTIgOiAxNiwKLQkgICAgaW5ldG5hbWUoaW4pKTsKKwlpZiAodmZsYWcpCisJICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJXMuIiwgaW5ldG5hbWUoaW4pKTsKKwllbHNlCisJICAgIHNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJS4qcy4iLCB3aWR0aC05LCBpbmV0bmFtZShpbikpOwogCWNwID0gc3RyY2hyKGxpbmUsICdcMCcpOwogCWlmICghbmZsYWcgJiYgcG9ydCkKLQkJc3AgPSBnZXRzZXJ2Ynlwb3J0KChpbnQpcG9ydCwgcHJvdG8pOworCQlzcCA9IGdldHNlcnZieXBvcnQoaHRvbnMoKHVpbnQxNl90KSBwb3J0KSwgcHJvdG8pOwogCWlmIChzcCB8fCBwb3J0ID09IDApCi0JCXNucHJpbnRmKGNwLCBsaW5lICsgc2l6ZW9mIGxpbmUgLSBjcCwgIiUuOHMiLAorCQlzbnByaW50ZihjcCwgbGluZSArIHNpemVvZiBsaW5lIC0gY3AsIHZmbGFnID8gIiVzIiA6ICIlLjhzIiwKIAkJICAgIHNwID8gc3AtPnNfbmFtZSA6ICIqIik7CiAgICAgIC8qCiAgICAgICAqIFRyYW5zbGF0aW9uIG9mIFJQQyBzZXJ2aWNlIG5hbWVzIC0gT21pdHRlZAogICAgICAgKi8KIAllbHNlCi0JCXNucHJpbnRmKGNwLCBsaW5lICsgc2l6ZW9mIGxpbmUgLSBjcCwgIiVkIiwgbnRvaHMocG9ydCkpOwotCXdpZHRoID0gQWZsYWcgPyAxOCA6IDIyOworCQlzbnByaW50ZihjcCwgbGluZSArIHNpemVvZiBsaW5lIC0gY3AsICIlZCIsIHBvcnQpOworCWlmICh2ZmxhZyAmJiB3aWR0aCA8IHN0cmxlbihsaW5lKSkKKwkgICAgd2lkdGggPSBzdHJsZW4obGluZSk7CiAJcHJpbnRmKCIgJS0qLipzIiwgd2lkdGgsIHdpZHRoLCBsaW5lKTsKIH0KIApAQCAtNTk4LDkgKzYwNSwxMCBAQAogI2VuZGlmCiAKIAlpZiAoZmlyc3QgJiYgIW5mbGFnKSB7CisJCWNoYXIgdG1wW01BWEhPU1ROQU1FTEVOXTsKIAkJZmlyc3QgPSAwOwotCQlpZiAoZ2V0aG9zdG5hbWUoZG9tYWluLCBzaXplb2YoZG9tYWluKSkgPT0gMCAmJgotCQkgICAgKGNwID0gc3RyY2hyKGRvbWFpbiwgJy4nKSkpCisJCWlmIChnZXRob3N0bmFtZSh0bXAsIHNpemVvZih0bXApKSA9PSAwICYmCisJCSAgICAoY3AgPSBzdHJjaHIodG1wLCAnLicpKSkKIAkJCSh2b2lkKSBzdHJsY3B5KGRvbWFpbiwgY3AgKyAxLCBzaXplb2YgZG9tYWluKTsKIAkJZWxzZQogCQkJZG9tYWluWzBdID0gJ1wwJzsKQEAgLTYxNiw3ICs2MjQsOCBAQAogCQkJCWNwID0gbnAtPm5fbmFtZTsKIAkJfQogCQlpZiAoY3AgPT0gTlVMTCkgewotCQkJaHAgPSBnZXRob3N0YnlhZGRyKChjaGFyICopaW5wLCBzaXplb2YgKCppbnApLCBBRl9JTkVUKTsKKwkJCWhwID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjaGFyICopaW5wLCBzaXplb2YgKCppbnApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUZfSU5FVCk7CiAJCQlpZiAoaHApIHsKIAkJCQlpZiAoKGNwID0gc3RyY2hyKGhwLT5oX25hbWUsICcuJykpICYmCiAJCQkJICAgICFzdHJjbXAoY3AgKyAxLCBkb21haW4pKQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jCmluZGV4IDQyNzE4ZjIuLjcxMDliODcgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldDYuYworKysgYi9hcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMKQEAgLTEyNCw3ICsxMjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9OVUxMLCBOVUxMLCAgMCk7CiAgICAgaWYgKG5ldHNubXBfcXVlcnlfd2FsayggdmFyLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAodmFyLT50eXBlID09IEFTTl9OVUxMKSAgICAvKiBObyBlbnRyaWVzICovCisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkJLyogZXhjZXB0aW9uICovCiAgICAgICAgIHJldHVybjsKIAogICAgIGZvciAodnAgPSB2YXI7IHZwIDsgdnA9dnAtPm5leHRfdmFyaWFibGUpIHsKQEAgLTEzNyw3ICsxMzcsNyBAQAogICAgICAgICAgICAgaWYgKGFmbGFnKQogICAgICAgICAgICAgICAgIHByaW50ZigiIChpbmNsdWRpbmcgc2VydmVycykiKTsKICAgICAgICAgICAgIHB1dGNoYXIoJ1xuJyk7Ci0gICAgICAgICAgICBwcmludGYoIiUtNS41cyAlLTI4LjI4cyAlLTI4LjI4cyAlNHMgJXNcbiIsCisgICAgICAgICAgICBwcmludGYoIiUtNS41cyAlLTI3LjI3cyAlLTI3LjI3cyAlNHMgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiLCAiUmVtb3RlIEFkZHJlc3MiLCAiSS9GIiwgIihzdGF0ZSkiKTsKICAgICAgICAgICAgIGZpcnN0ID0gMDsKICAgICAgICAgfQpAQCAtMTg0LDExICsxODQsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOwogICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICByZXR1cm47Ci0gICAgaWYgKHZhci0+dHlwZSA9PSBBU05fTlVMTCkgICAgLyogTm8gZW50cmllcyAqLworICAgIGlmICgodmFyLT50eXBlICYgMHhGMCkgPT0gMHg4MCkJCS8qIGV4Y2VwdGlvbiAqLwogICAgICAgICByZXR1cm47CiAKICAgICBwcmludGYoIkFjdGl2ZSBJbnRlcm5ldCBDb25uZWN0aW9uc1xuIik7Ci0gICAgcHJpbnRmKCIlLTUuNXMgJS0yOC4yOHMgJTRzXG4iLCAiUHJvdG8iLCAiTG9jYWwgQWRkcmVzcyIsICJJL0YiKTsKKyAgICBwcmludGYoIiUtNS41cyAlLTI3LjI3cyAlNHNcbiIsICJQcm90byIsICJMb2NhbCBBZGRyZXNzIiwgIkkvRiIpOwogICAgIGZvciAodnAgPSB2YXI7IHZwIDsgdnA9dnAtPm5leHRfdmFyaWFibGUpIHsKICAgICAgICAgcHJpbnRmKCIlLTUuNXMiLCBuYW1lKTsKICAgICAgICAgLyoKQEAgLTI0NSw2ICsyNDUsOCBAQAogICAgIHdoaWxlICgxKSB7CiAgICAgICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldG5leHQoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgodmFyLT50eXBlICYgMHhGMCkgPT0gMHg4MCkJCS8qIGV4Y2VwdGlvbiAqLworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICggc25tcF9vaWRfY29tcGFyZSggb2lkX2J1ZiwgICBidWZfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+bmFtZSwgYnVmX2xlbikgIT0gMCApCiAgICAgICAgICAgICBicmVhazsgICAgLyogRW5kIG9mIFRhYmxlICovCkBAIC0yNzEsNyArMjczLDYgQEAKICAgICAgICAgICogICB0aGVuIG9ubHkgZGlzcGxheSBub24temVybyBzdGF0cy4KICAgICAgICAgICovCiAgICAgICAgIGlmICggc3RhdHNbc3AtPmVudHJ5XSA+IDAgfHwgc2ZsYWcgPT0gMSApIHsKLSAgICAgICAgICAgIHB1dGNoYXIoJ1x0Jyk7CiAgICAgICAgICAgICBwcmludGYoc3AtPmRlc2NyaXB0aW9uLCBzdGF0c1tzcC0+ZW50cnldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWwoc3RhdHNbc3AtPmVudHJ5XSkpOwogICAgICAgICAgICAgcHV0Y2hhcignXG4nKTsKQEAgLTI5MSwyNyArMjkyLDI3IEBACiAgICAgb2lkICAgICAgICAgICAgICAgaXA2c3RhdHNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDU1LCAxLCA2LCAxLCAwIH07CiAgICAgc2l6ZV90ICAgICAgICAgICAgaXA2c3RhdHNfbGVuICAgPSBPSURfTEVOR1RIKCBpcDZzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpcDZzdGF0c190YmxbXSA9IHsKLSAgICAgICAgezEsICIlZCB0b3RhbCBkYXRhZ3JhbSVzIHJlY2VpdmVkIn0sCi0gICAgICAgIHsyLCAiJWQgZGF0YWdyYW0lcyB3aXRoIGhlYWRlciBlcnJvcnMifSwKLSAgICAgICAgezMsICIlZCBvdmVyc2l6ZWQgZGF0YWdyYW0lcyJ9LAotICAgICAgICB7NCwgIiVkIGRhdGFncmFtJXMgd2l0aCBubyByb3V0ZSJ9LAotICAgICAgICB7NSwgIiVkIGRhdGFncmFtJXMgd2l0aCBhbiBpbnZhbGlkIGRlc3RpbmF0aW9uIGFkZHJlc3MifSwKLSAgICAgICAgezYsICIlZCBkYXRhZ3JhbSVzIHdpdGggdW5rbm93biBwcm90b2NvbCJ9LAotICAgICAgICB7NywgIiVkIHNob3J0IGRhdGFncmFtJXMgZGlzY2FyZGVkIn0sCi0gICAgICAgIHs4LCAiJWQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezksICIlZCBkYXRhZ3JhbSVzIGRlbGl2ZXJlZCJ9LAotICAgICAgICB7MTAsICIlZCBkYXRhZ3JhbSVzIGZvcndhcmRlZCJ9LAotICAgICAgICB7MTEsICIlZCBvdXRwdXQgZGF0YWdyYW0gcmVxdWVzdCVzIn0sCi0gICAgICAgIHsxMiwgIiVkIG91dHB1dCBkYXRhZ3JhbSVzIGRpc2NhcmRlZCJ9LAotICAgICAgICB7MTMsICIlZCBkYXRhZ3JhbSVzIGZyYWdtZW50ZWQifSwKLSAgICAgICAgezE0LCAiJWQgZnJhZ21lbnRhdGlvbiBmYWlsdXJlJXMifSwKLSAgICAgICAgezE1LCAiJWQgZnJhZ21lbnQlcyBjcmVhdGVkIn0sCi0gICAgICAgIHsxNiwgIiVkIGZyYWdtZW50JXMgcmVjZWl2ZWQifSwKLSAgICAgICAgezE3LCAiJWQgZGF0YWdyYW0lcyByZWFzc2VtYmxlZCJ9LAotICAgICAgICB7MTgsICIlZCByZWFzc2VtYmx5IGZhaWx1cmUlcyJ9LAotICAgICAgICB7MTksICIlZCBtdWx0aWNhc3QgZGF0YWdyYW0lcyByZWNlaXZlZCJ9LAotICAgICAgICB7MjAsICIlZCBtdWx0aWNhc3QgZGF0YWdyYW0lcyB0cmFuc21pdHRlZCJ9LAotICAgICAgICB7MCwgIiJ9CisgICAgICAgIHsgMSwgIiUxNGQgdG90YWwgZGF0YWdyYW0lcyByZWNlaXZlZCJ9LAorICAgICAgICB7IDIsICIlMTRkIGRhdGFncmFtJXMgd2l0aCBoZWFkZXIgZXJyb3JzIn0sCisgICAgICAgIHsgMywgIiUxNGQgb3ZlcnNpemVkIGRhdGFncmFtJXMifSwKKyAgICAgICAgeyA0LCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggbm8gcm91dGUifSwKKyAgICAgICAgeyA1LCAiJTE0ZCBkYXRhZ3JhbSVzIHdpdGggYW4gaW52YWxpZCBkZXN0aW5hdGlvbiBhZGRyZXNzIn0sCisgICAgICAgIHsgNiwgIiUxNGQgZGF0YWdyYW0lcyB3aXRoIHVua25vd24gcHJvdG9jb2wifSwKKyAgICAgICAgeyA3LCAiJTE0ZCBzaG9ydCBkYXRhZ3JhbSVzIGRpc2NhcmRlZCJ9LAorICAgICAgICB7IDgsICIlMTRkIGRhdGFncmFtJXMgZGlzY2FyZGVkIn0sCisgICAgICAgIHsgOSwgIiUxNGQgZGF0YWdyYW0lcyBkZWxpdmVyZWQifSwKKyAgICAgICAgezEwLCAiJTE0ZCBkYXRhZ3JhbSVzIGZvcndhcmRlZCJ9LAorICAgICAgICB7MTEsICIlMTRkIG91dHB1dCBkYXRhZ3JhbSByZXF1ZXN0JXMifSwKKyAgICAgICAgezEyLCAiJTE0ZCBvdXRwdXQgZGF0YWdyYW0lcyBkaXNjYXJkZWQifSwKKyAgICAgICAgezEzLCAiJTE0ZCBkYXRhZ3JhbSVzIGZyYWdtZW50ZWQifSwKKyAgICAgICAgezE0LCAiJTE0ZCBmcmFnbWVudGF0aW9uIGZhaWx1cmUlcyJ9LAorICAgICAgICB7MTUsICIlMTRkIGZyYWdtZW50JXMgY3JlYXRlZCJ9LAorICAgICAgICB7MTYsICIlMTRkIGZyYWdtZW50JXMgcmVjZWl2ZWQifSwKKyAgICAgICAgezE3LCAiJTE0ZCBkYXRhZ3JhbSVzIHJlYXNzZW1ibGVkIn0sCisgICAgICAgIHsxOCwgIiUxNGQgcmVhc3NlbWJseSBmYWlsdXJlJXMifSwKKyAgICAgICAgezE5LCAiJTE0ZCBtdWx0aWNhc3QgZGF0YWdyYW0lcyByZWNlaXZlZCJ9LAorICAgICAgICB7MjAsICIlMTRkIG11bHRpY2FzdCBkYXRhZ3JhbSVzIHRyYW5zbWl0dGVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKIAogICAgIF9kdW1wX3Y2c3RhdHMoIG5hbWUsIGlwNnN0YXRzX29pZCwgaXA2c3RhdHNfbGVuLCBpcDZzdGF0c190YmwgKTsKQEAgLTMzMSw0NiArMzMyLDQ2IEBACiAgICAgb2lkICAgICAgICAgICAgICAgaWNtcDZzdGF0c19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNTYsIDEsIDEsIDEsIDAgfTsKICAgICBzaXplX3QgICAgICAgICAgICBpY21wNnN0YXRzX2xlbiAgID0gT0lEX0xFTkdUSCggaWNtcDZzdGF0c19vaWQgKTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wNnN0YXRzX3RibFtdID0gewotICAgICAgICB7MSwgIiVkIHRvdGFsIG1lc3NhZ2UlcyByZWNlaXZlZCJ9LAotICAgICAgICB7MiwgIiVkIG1lc3NhZ2UlcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKLSAgICAgICAgezE4LCAiJWQgb3VwdXQgbWVzc2FnZSByZXF1ZXN0JXMifSwKLSAgICAgICAgezE5LCAiJWQgb3V0cHV0IG1lc3NhZ2UlcyBkaXNjYXJkZWQifSwKLSAgICAgICAgezAsICIifQorICAgICAgICB7IDEsICIlMTRkIHRvdGFsIG1lc3NhZ2UlcyByZWNlaXZlZCJ9LAorICAgICAgICB7IDIsICIlMTRkIG1lc3NhZ2UlcyBkcm9wcGVkIGR1ZSB0byBlcnJvcnMifSwKKyAgICAgICAgezE4LCAiJTE0ZCBvdXB1dCBtZXNzYWdlIHJlcXVlc3QlcyJ9LAorICAgICAgICB7MTksICIlMTRkIG91dHB1dCBtZXNzYWdlJXMgZGlzY2FyZGVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wNl9pbmhpc3RvZ3JhbVtdID0gewotICAgICAgICB7MywgIkRlc3RpbmF0aW9uIHVucmVhY2hhYmxlOiAlZCJ9LAotICAgICAgICB7NCwgIkFkbWluIFByb2hpYml0OiAlZCJ9LAotICAgICAgICB7NSwgIlRpbWUgRXhjZWVkZWQ6ICVkIn0sCi0gICAgICAgIHs2LCAiUGFyYW1ldGVyIFByb2JsZW06ICVkIn0sCi0gICAgICAgIHs3LCAiVG9vIEJpZzogJWQifSwKLSAgICAgICAgezgsICJFY2hvIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHs5LCAiRWNobyBSZXBseTogJWQifSwKLSAgICAgICAgezEwLCAiUm91dGVyIFNvbGljaXQ6ICVkIn0sCi0gICAgICAgIHsxMSwgIlJvdXRlciBBZHZlcnQ6ICVkIn0sCi0gICAgICAgIHsxMiwgIk5laWdoYm9yIFNvbGljaXQ6ICVkIn0sCi0gICAgICAgIHsxMywgIk5laWdoYm9yIEFkdmVydDogJWQifSwKLSAgICAgICAgezE0LCAiUmVkaXJlY3Q6ICVkIn0sCi0gICAgICAgIHsxNSwgIkdyb3VwIE1lbWJlciBSZXF1ZXN0OiAlZCJ9LAotICAgICAgICB7MTYsICJHcm91cCBNZW1iZXIgUmVwbHk6JWQifSwKLSAgICAgICAgezE3LCAiR3JvdXAgTWVtYmVyIFJlZHVjZTolZCJ9LAotICAgICAgICB7MCwgIiJ9CisgICAgICAgIHsgMywgIiAgICAgICAgRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCisgICAgICAgIHsgNCwgIiAgICAgICAgQWRtaW4gUHJvaGliaXQ6ICVkIn0sCisgICAgICAgIHsgNSwgIiAgICAgICAgVGltZSBFeGNlZWRlZDogJWQifSwKKyAgICAgICAgeyA2LCAiICAgICAgICBQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKKyAgICAgICAgeyA3LCAiICAgICAgICBUb28gQmlnOiAlZCJ9LAorICAgICAgICB7IDgsICIgICAgICAgIEVjaG8gUmVxdWVzdDogJWQifSwKKyAgICAgICAgeyA5LCAiICAgICAgICBFY2hvIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MTAsICIgICAgICAgIFJvdXRlciBTb2xpY2l0OiAlZCJ9LAorICAgICAgICB7MTEsICIgICAgICAgIFJvdXRlciBBZHZlcnQ6ICVkIn0sCisgICAgICAgIHsxMiwgIiAgICAgICAgTmVpZ2hib3IgU29saWNpdDogJWQifSwKKyAgICAgICAgezEzLCAiICAgICAgICBOZWlnaGJvciBBZHZlcnQ6ICVkIn0sCisgICAgICAgIHsxNCwgIiAgICAgICAgUmVkaXJlY3Q6ICVkIn0sCisgICAgICAgIHsxNSwgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlcXVlc3Q6ICVkIn0sCisgICAgICAgIHsxNiwgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MTcsICIgICAgICAgIEdyb3VwIE1lbWJlciBSZWR1Y2U6ICVkIn0sCisgICAgICAgIHsgMCwgIiJ9CiAgICAgfTsKICAgICBzdHJ1Y3Qgc3RhdF90YWJsZSBpY21wNl9vdXRoaXN0b2dyYW1bXSA9IHsKLSAgICAgICAgezIwLCAiRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCi0gICAgICAgIHsyMSwgIkFkbWluIFByb2hpYml0OiAlZCJ9LAotICAgICAgICB7MjIsICJUaW1lIEV4Y2VlZGVkOiAlZCJ9LAotICAgICAgICB7MjMsICJQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKLSAgICAgICAgezI0LCAiVG9vIEJpZzogJWQifSwKLSAgICAgICAgezI1LCAiRWNobyBSZXF1ZXN0OiAlZCJ9LAotICAgICAgICB7MjYsICJFY2hvIFJlcGx5OiAlZCJ9LAotICAgICAgICB7MjcsICJSb3V0ZXIgU29saWNpdDogJWQifSwKLSAgICAgICAgezI4LCAiUm91dGVyIEFkdmVydDogJWQifSwKLSAgICAgICAgezI5LCAiTmVpZ2hib3IgU29saWNpdDogJWQifSwKLSAgICAgICAgezMwLCAiTmVpZ2hib3IgQWR2ZXJ0OiAlZCJ9LAotICAgICAgICB7MzEsICJSZWRpcmVjdDogJWQifSwKLSAgICAgICAgezMyLCAiR3JvdXAgTWVtYmVyIFJlcXVlc3Q6ICVkIn0sCi0gICAgICAgIHszMywgIkdyb3VwIE1lbWJlciBSZXBseTolZCJ9LAotICAgICAgICB7MzQsICJHcm91cCBNZW1iZXIgUmVkdWNlOiVkIn0sCisgICAgICAgIHsyMCwgIiAgICAgICAgRGVzdGluYXRpb24gdW5yZWFjaGFibGU6ICVkIn0sCisgICAgICAgIHsyMSwgIiAgICAgICAgQWRtaW4gUHJvaGliaXQ6ICVkIn0sCisgICAgICAgIHsyMiwgIiAgICAgICAgVGltZSBFeGNlZWRlZDogJWQifSwKKyAgICAgICAgezIzLCAiICAgICAgICBQYXJhbWV0ZXIgUHJvYmxlbTogJWQifSwKKyAgICAgICAgezI0LCAiICAgICAgICBUb28gQmlnOiAlZCJ9LAorICAgICAgICB7MjUsICIgICAgICAgIEVjaG8gUmVxdWVzdDogJWQifSwKKyAgICAgICAgezI2LCAiICAgICAgICBFY2hvIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MjcsICIgICAgICAgIFJvdXRlciBTb2xpY2l0OiAlZCJ9LAorICAgICAgICB7MjgsICIgICAgICAgIFJvdXRlciBBZHZlcnQ6ICVkIn0sCisgICAgICAgIHsyOSwgIiAgICAgICAgTmVpZ2hib3IgU29saWNpdDogJWQifSwKKyAgICAgICAgezMwLCAiICAgICAgICBOZWlnaGJvciBBZHZlcnQ6ICVkIn0sCisgICAgICAgIHszMSwgIiAgICAgICAgUmVkaXJlY3Q6ICVkIn0sCisgICAgICAgIHszMiwgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlcXVlc3Q6ICVkIn0sCisgICAgICAgIHszMywgIiAgICAgICAgR3JvdXAgTWVtYmVyIFJlcGx5OiAlZCJ9LAorICAgICAgICB7MzQsICIgICAgICAgIEdyb3VwIE1lbWJlciBSZWR1Y2U6ICVkIn0sCiAgICAgICAgIHswLCAiIn0KICAgICB9OwogCkBAIC00MTQsMTAgKzQxNSw5IEBACiAKIAlzdHJ1Y3Qgc2VydmVudCAqc3AgPSBOVUxMOwogCWNoYXIgbGluZVs4MF0sICpjcDsKLQl1bnNpZ25lZCB3aWR0aDsKKwlpbnQgd2lkdGggPSAyNy05OwogCWludCBsZW4gPSBzaXplb2YgbGluZTsKIAotCXdpZHRoID0gQWZsYWcgPyAxMiA6IDE2OwogCWlmICh2ZmxhZyAmJiB3aWR0aCA8IHN0cmxlbihpbmV0Nm5hbWUoaW42KSkpCiAJCXdpZHRoID0gc3RybGVuKGluZXQ2bmFtZShpbjYpKTsKIAlzbnByaW50ZihsaW5lLCBsZW4sICIlLipzLiIsIHdpZHRoLCBpbmV0Nm5hbWUoaW42KSk7CkBAIC00MjcsMTIgKzQyNywxMiBAQAogCiAJY3AgPSBzdHJjaHIobGluZSwgJ1wwJyk7CiAJaWYgKCFuZmxhZyAmJiBwb3J0ICYmIGxvY2FsKQotCQlHRVRTRVJWQllQT1JUNihwb3J0LCBwcm90bywgc3ApOworCQlHRVRTRVJWQllQT1JUNihodG9ucyhwb3J0KSwgcHJvdG8sIHNwKTsKIAlpZiAoc3AgfHwgcG9ydCA9PSAwKQotCQlzbnByaW50ZihjcCwgbGVuLCAiJS44cyIsIHNwID8gc3AtPnNfbmFtZSA6ICIqIik7CisJCXNucHJpbnRmKGNwLCBsZW4sIHZmbGFnID8gIiVzIiA6ICIlLjhzIiwgc3AgPyBzcC0+c19uYW1lIDogIioiKTsKIAllbHNlCi0JCXNucHJpbnRmKGNwLCBsZW4sICIlZCIsIG50b2hzKCh1X3Nob3J0KXBvcnQpKTsKLQl3aWR0aCA9IEFmbGFnID8gMTggOiAyMjsKKwkJc25wcmludGYoY3AsIGxlbiwgIiVkIiwgcG9ydCk7CisJd2lkdGggPSAyNzsKIAlpZiAodmZsYWcgJiYgd2lkdGggPCBzdHJsZW4obGluZSkpCiAJCXdpZHRoID0gc3RybGVuKGxpbmUpOwogYmFpbDoKQEAgLTQ2Miw4ICs0NjIsOCBAQAogCiAJaWYgKGZpcnN0ICYmICFuZmxhZykgewogCQlmaXJzdCA9IDA7Ci0JCWlmIChnZXRob3N0bmFtZShkb21haW4sIHNpemVvZihkb21haW4pKSA9PSAwICYmCi0JCSAgICAoY3AgPSBzdHJjaHIoZG9tYWluLCAnLicpKSkKKwkJaWYgKGdldGhvc3RuYW1lKGxpbmUsIHNpemVvZihsaW5lKSkgPT0gMCAmJgorCQkgICAgKGNwID0gc3RyY2hyKGxpbmUsICcuJykpKQogCQkJKHZvaWQpIHN0cmxjcHkoZG9tYWluLCBjcCArIDEsIHNpemVvZiBkb21haW4pOwogCQllbHNlCiAJCQlkb21haW5bMF0gPSAnXDAnOwpAQCAtNDcxLDcgKzQ3MSw4IEBACiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogCWNwID0gTlVMTDsKIAlpZiAoIW5mbGFnICYmICFJTjZfSVNfQUREUl9VTlNQRUNJRklFRChpbjZwKSkgewotCQlocCA9IGdldGhvc3RieWFkZHIoKGNvbnN0IGNoYXIgKilpbjZwLCBzaXplb2YoKmluNnApLCBBRl9JTkVUNik7CisJCWhwID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjb25zdCBjaGFyICopaW42cCwgc2l6ZW9mKCppbjZwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBRl9JTkVUNik7CiAJCWlmIChocCkgewogCQkJaWYgKChjcCA9IHN0cmNocihocC0+aF9uYW1lLCAnLicpKSAmJgogCQkJICAgICFzdHJjbXAoY3AgKyAxLCBkb21haW4pKQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0eC5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NWViZWUKLS0tIC9kZXYvbnVsbAorKysgYi9hcHBzL3NubXBuZXRzdGF0L2luZXR4LmMKQEAgLTAsMCArMSw1ODQgQEAKKy8qCSRPcGVuQlNEOiBpbmV0Ni5jLHYgMS4zMSAyMDA0LzExLzE3IDAxOjQ3OjIwIGl0b2p1biBFeHAgJAkqLworLyoJQlNESSBpbmV0LmMsdiAyLjMgMTk5NS8xMC8yNCAwMjoxOToyOSBwcmIgRXhwCSovCisvKgorICogQ29weXJpZ2h0IChjKSAxOTgzLCAxOTg4LCAxOTkzCisgKglUaGUgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFJFR0VOVFMgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBSRUdFTlRTIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmZGVmICBJTkhFUklURURfQ09ERQorI2lmbmRlZiBsaW50CisjaWYgMAorc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKWluZXQuYwk4LjQgKEJlcmtlbGV5KSA0LzIwLzk0IjsKKyNlbHNlCisvKl9fUkNTSUQoIiRPcGVuQlNEOiBpbmV0Ni5jLHYgMS4zMSAyMDA0LzExLzE3IDAxOjQ3OjIwIGl0b2p1biBFeHAgJCIpOyovCisvKl9fUkNTSUQoIktBTUUgSWQ6IGluZXQ2LmMsdiAxLjEwIDIwMDAvMDIvMDkgMTA6NDk6MzEgaXRvanVuIEV4cCIpOyovCisjZW5kaWYKKyNlbmRpZiAvKiBub3QgbGludCAqLworI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfV0lOU09DS19ICisjaW5jbHVkZSAid2luc3R1Yi5oIgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVERCX0gKKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgIm1haW4uaCIKKyNpbmNsdWRlICJuZXRzdGF0LmgiCisKK3N0cnVjdCBzdGF0X3RhYmxlIHsKKyAgICB1bnNpZ25lZCBpbnQgZW50cnk7ICAgICAgLyogZW50cnkgbnVtYmVyIGluIHRhYmxlICovCisgICAgLyoKKyAgICAgKiBmb3JtYXQgc3RyaW5nIHRvIHByaW50ZihkZXNjcmlwdGlvbiwgdmFsdWUpIAorICAgICAqIHdhcm5pbmc6IHRoZSAlZCBtdXN0IGJlIGJlZm9yZSB0aGUgJXMgCisgICAgICovCisgICAgY2hhciAgICAgICAgICAgIGRlc2NyaXB0aW9uWzgwXTsKK307CisKK3ZvaWQJaW5ldHhwcmludChpbnQsIHN0cnVjdCBzb2NrYWRkcl9pbjYgLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKKworLyoKKyAqIFByaW50IGEgc3VtbWFyeSBvZiBUQ1AgY29ubmVjdGlvbnMKKyAqIExpc3RlbmluZyBwcm9jZXNzZXMgYXJlIHN1cHByZXNzZWQgdW5sZXNzIHRoZQorICogICAtYSAoYWxsKSBmbGFnIGlzIHNwZWNpZmllZC4KKyAqLworY29uc3QgY2hhciAgICAgKnRjcHhzdGF0ZXNbXSA9IHsKKyAgICAiIiwKKyAgICAiQ0xPU0VEIiwKKyAgICAiTElTVEVOIiwKKyAgICAiU1lOU0VOVCIsCisgICAgIlNZTlJFQ0VJVkVEIiwKKyAgICAiRVNUQUJMSVNIRUQiLAorICAgICJGSU5XQUlUMSIsCisgICAgIkZJTldBSVQyIiwKKyAgICAiQ0xPU0VXQUlUIiwKKyAgICAiTEFTVEFDSyIsCisgICAgIkNMT1NJTkciLAorICAgICJUSU1FV0FJVCIKK307CisjZGVmaW5lIFRDUF9OU1RBVEVTIDExCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBpbnQgc3RhdDsKKyAgICBpbnQgaGNzdGF0OworICAgIGNvbnN0IGNoYXIgKnN0cjsKK30gc3lzdGVtc3RhdHNfdDsKKworc3lzdGVtc3RhdHNfdCBzeXN0ZW1zdGF0c1tdID0geworICAgIHsgIDMsICA0LCAiZGF0YWdyYW1zIGlucHV0IiB9LAorICAgIHsgIDUsICA2LCAib2N0ZXRzIHJlY2VpdmVkIiB9LAorICAgIHsgIDcsICAwLCAiaGRyIGVycm9ycyBpbnB1dCIgfSwKKyAgICB7ICA4LCAgMCwgIm5vIHJvdXRlcyBpbnB1dCIgfSwKKyAgICB7ICA5LCAgMCwgImFkZHJlc3MgZXJyb3JzIGlucHV0IiB9LAorICAgIHsgMTAsICAwLCAidW5rbm93biBwcm90b2NvbCBpbnB1dCIgfSwKKyAgICB7IDEyLCAxMywgImlucHV0IGRhdGFncmFtcyBmb3J3YXJkZWQiIH0sCisgICAgeyAxMSwgIDAsICJ0cnVuY2F0ZWQgZGF0YWdyYW1zIGlucHV0IiB9LAorICAgIHsgMTQsICAwLCAiaW5wdXQgcmVhc3NlbWJseSByZXF1aXJlZCIgfSwKKyAgICB7IDE1LCAgMCwgImlucHV0IHJlYXNzZW1sZWQgT0siIH0sCisgICAgeyAxNiwgIDAsICJpbnB1dCByZWFzc2VtYmx5IGZhaWxlZCIgfSwKKyAgICB7IDE3LCAgMCwgImlucHV0IGRhdGFncmFtcyBkaXNjYXJkZWQiIH0sCisgICAgeyAxOCwgMTksICJpbnB1dCBkYXRhZ3JhbXMgcmVjZWl2ZWQiIH0sCisgICAgeyAyMCwgMjEsICJvdXRwdXQgZGF0YWdyYW0gcmVxdWVzdHMiIH0sCisgICAgeyAyMiwgIDAsICJvdXRwdXQgbm8gcm91dGUiIH0sCisgICAgeyAyMywgMjQsICJkYXRhZ3JhbXMgZm9yd2FyZGVkIiB9LAorICAgIHsgMjUsICAwLCAib3V0cHV0IGRhdGFncmFtcyBkaXNjYXJkZWQiIH0sCisgICAgeyAyNiwgIDAsICJvdXRwdXQgZGF0YWdyYW1zIGZyYWdtZW50YXRpb24gcmVxdWlyZWQiIH0sCisgICAgeyAyNywgIDAsICJvdXRwdXQgZGF0YWdyYW1zIGZyYWdtZW50ZWQiIH0sCisgICAgeyAyOCwgIDAsICJvdXRwdXQgZnJhZ21lbnRhdGlvbiBmYWlsZWQiIH0sCisgICAgeyAyOSwgIDAsICJmcmFnbWVudHMgY3JlYXRlZCIgfSwKKyAgICB7IDMwLCAzMSwgImRhdGFncmFtcyB0cmFuc21pdHRlZCIgfSwKKyAgICB7IDMyLCAzMywgIm9jdGV0cyB0cmFuc21pdHRlZCIgfSwKKyAgICB7ICAwIH0KK307CisKK3N5c3RlbXN0YXRzX3QgaWNtcHN0YXRzW10gPSB7CisgICAgeyAgMiwgIDAsICJpbnB1dCBtZXNzYWdlcyIgfSwKKyAgICB7ICAzLCAgMCwgImlucHV0IGVycm9ycyIgfSwKKyAgICB7ICA0LCAgMCwgIm91dHB1dCBtZXNzYWdlcyIgfSwKKyAgICB7ICA1LCAgMCwgIm91dHB1dCBlcnJvcnMiIH0sCisgICAgeyAgMCB9Cit9OworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgaW50IGNvZGU7CisgICAgY29uc3QgY2hhciAqbmFtZTsKK30gY29kZWxpc3RfdDsKKworY29kZWxpc3RfdCBpY21wY29kZXNbXSA9IHsKKyAgICB7ICAgMCwgIkVjaG8gcmVwbHkiIH0sCisgICAgeyAgIDMsICJEZXN0aW5hdGlvbiB1bnJlYWNoYWJsZSIgfSwKKyAgICB7ICAgNCwgIlNvdXJjZSBxdWVuY2giIH0sCisgICAgeyAgIDUsICJSZWRpcmVjdCIgfSwKKyAgICB7ICAgNiwgIkFsdGVybmF0ZSBob3N0IGFkZHJlc3MiIH0sCisgICAgeyAgIDgsICJFY2hvIHJlcXVlc3QiIH0sCisgICAgeyAgIDksICJSb3V0ZXIgYWR2ZXJ0aXNlbWVudCIgfSwKKyAgICB7ICAxMCwgIlJvdXRlciBzZWxlY3Rpb24iIH0sCisgICAgeyAgMTEsICJUaW1lIGV4Y2VlZGVkIiB9LAorICAgIHsgIDEyLCAiUGFyYW1ldGVyIHByb2JsZW0iIH0sCisgICAgeyAgMTMsICJUaW1lc3RhbXAgcmVxdWVzdCIgfSwKKyAgICB7ICAxNCwgIlRpbWVzdGFtcCByZXBseSIgfSwKKyAgICB7ICAxNSwgIkluZm9ybWF0aW9uIHJlcXVlc3QiIH0sCisgICAgeyAgMTYsICJJbmZvcm1hdGlvbiByZXBseSIgfSwKKyAgICB7ICAxNywgIkFkZHJlc3MgbWFzayByZXF1ZXN0IiB9LAorICAgIHsgIDE4LCAiQWRkcmVzcyBtYXNrIHJlcGx5IiB9LAorICAgIHsgMCB9Cit9OworCitjb2RlbGlzdF90IGljbXA2Y29kZXNbXSA9IHsKKyAgICB7ICAgMSwgICAiRGVzdGluYXRpb24gVW5yZWFjaGFibGUiIH0sCisgICAgeyAgIDIsICAgIlBhY2tldCBUb28gQmlnIiB9LAorICAgIHsgICAzLCAgICJUaW1lIEV4Y2VlZGVkIiB9LAorICAgIHsgICA0LCAgICJQYXJhbWV0ZXIgUHJvYmxlbSIgfSwKKyAgICB7IDEwMCwgICAiUHJpdmF0ZSBleHBlcmltZW50YXRpb24gMTAwIiB9LAorICAgIHsgMTAxLCAgICJQcml2YXRlIGV4cGVyaW1lbnRhdGlvbiAxMDEiIH0sCisgICAgeyAxMjcsICAgIlJlc2VydmVkIGZvciBleHBhbnNpb24gb2YgSUNNUHY2IGVycm9yIG1lc3NhZ2VzIiB9LAorICAgIHsgMTI4LCAgICJFY2hvIFJlcXVlc3QiIH0sCisgICAgeyAxMjksICAgIkVjaG8gUmVwbHkiIH0sCisgICAgeyAxMzAsICAgIk11bHRpY2FzdCBMaXN0ZW5lciBRdWVyeSIgfSwKKyAgICB7IDEzMSwgICAiTXVsdGljYXN0IExpc3RlbmVyIFJlcG9ydCIgfSwKKyAgICB7IDEzMiwgICAiTXVsdGljYXN0IExpc3RlbmVyIERvbmUiIH0sCisgICAgeyAxMzMsICAgIlJvdXRlciBTb2xpY2l0YXRpb24iIH0sCisgICAgeyAxMzQsICAgIlJvdXRlciBBZHZlcnRpc2VtZW50IiB9LAorICAgIHsgMTM1LCAgICJOZWlnaGJvciBTb2xpY2l0YXRpb24iIH0sCisgICAgeyAxMzYsICAgIk5laWdoYm9yIEFkdmVydGlzZW1lbnQiIH0sCisgICAgeyAxMzcsICAgIlJlZGlyZWN0IE1lc3NhZ2UiIH0sCisgICAgeyAxMzgsICAgIlJvdXRlciBSZW51bWJlcmluZyIgfSwKKyAgICB7IDEzOSwgICAiSUNNUCBOb2RlIEluZm9ybWF0aW9uIFF1ZXJ5IiB9LAorICAgIHsgMTQwLCAgICJJQ01QIE5vZGUgSW5mb3JtYXRpb24gUmVzcG9uc2UiIH0sCisgICAgeyAxNDEsICAgIkludmVyc2UgTmVpZ2hib3IgRGlzY292ZXJ5IFNvbGljaXRhdGlvbiBNZXNzYWdlIiB9LAorICAgIHsgMTQyLCAgICJJbnZlcnNlIE5laWdoYm9yIERpc2NvdmVyeSBBZHZlcnRpc2VtZW50IE1lc3NhZ2UiIH0sCisgICAgeyAxNDMsICAgIlZlcnNpb24gMiBNdWx0aWNhc3QgTGlzdGVuZXIgUmVwb3J0IiB9LAorICAgIHsgMTQ0LCAgICJIb21lIEFnZW50IEFkZHJlc3MgRGlzY292ZXJ5IFJlcXVlc3QgTWVzc2FnZSIgfSwKKyAgICB7IDE0NSwgICAiSG9tZSBBZ2VudCBBZGRyZXNzIERpc2NvdmVyeSBSZXBseSBNZXNzYWdlIiB9LAorICAgIHsgMTQ2LCAgICJNb2JpbGUgUHJlZml4IFNvbGljaXRhdGlvbiIgfSwKKyAgICB7IDE0NywgICAiTW9iaWxlIFByZWZpeCBBZHZlcnRpc2VtZW50IiB9LAorICAgIHsgMTQ4LCAgICJDZXJ0aWZpY2F0aW9uIFBhdGggU29saWNpdGF0aW9uIE1lc3NhZ2UiIH0sCisgICAgeyAxNDksICAgIkNlcnRpZmljYXRpb24gUGF0aCBBZHZlcnRpc2VtZW50IE1lc3NhZ2UiIH0sCisgICAgeyAxNTEsICAgIk11bHRpY2FzdCBSb3V0ZXIgQWR2ZXJ0aXNlbWVudCIgfSwKKyAgICB7IDE1MiwgICAiTXVsdGljYXN0IFJvdXRlciBTb2xpY2l0YXRpb24iIH0sCisgICAgeyAxNTMsICAgIk11bHRpY2FzdCBSb3V0ZXIgVGVybWluYXRpb24iIH0sCisgICAgeyAxNTQsICAgIkZNSVB2NiBNZXNzYWdlcyIgfSwKKyAgICB7IDE1NSwgICAiUlBMIENvbnRyb2wgTWVzc2FnZSIgfSwKKyAgICB7IDAgfQorfTsKKworCit2b2lkCit0Y3B4cHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnAsICpwdmFyOworICAgIG9pZCAgICB0Y3BDb25uZWN0aW9uU3RhdGVfb2lkW10gPSB7IDEsMyw2LDEsMiwxLDYsMTksMSw3IH07CisgICAgc2l6ZV90IHRjcENvbm5lY3Rpb25TdGF0ZV9sZW4gICA9IE9JRF9MRU5HVEgoIHRjcENvbm5lY3Rpb25TdGF0ZV9vaWQgKTsKKyAgICBpbnQgICAgc3RhdGUsIGk7CisgICAgc3RydWN0IHNvY2thZGRyX2luNiBsb2NhbEFkZHIsIHJlbW90ZUFkZHI7CisgICAgaW50ICAgIGxvY2FsUG9ydCwgICAgIHJlbW90ZVBvcnQsICBwaWQgPSAwOworICAgIGludCAgICBsb2NhbFR5cGUsICAgIHJlbW90ZVR5cGUsIGlueDsKKyAgICBpbnQgICAgZmlyc3QgPSAxOworICAgIHN0YXRpYyBpbnQgZG9uZSA9IDA7CisKKyAgICBpZiAoZG9uZSsrKSByZXR1cm47CisKKyAgICAvKgorICAgICAqIFdhbGtpbmcgdGhlIHY2IHRjcENvbm5lY3Rpb25TdGF0ZSBjb2x1bW4gd2lsbCBwcm92aWRlIGFsbAorICAgICAqICAgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICB2YXIgPSBOVUxMOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHRjcENvbm5lY3Rpb25TdGF0ZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwQ29ubmVjdGlvblN0YXRlX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOworICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkvKiBFeGNlcHRpb24gKi8KKyAgICAgICAgcmV0dXJuOworCisgICAgZm9yICh2cCA9IHZhcjsgdnAgOyB2cD12cC0+bmV4dF92YXJpYWJsZSkgeworCWNoYXIgbG5hbWVbNV07CisgICAgICAgIHN0YXRlID0gKnZwLT52YWwuaW50ZWdlcjsKKwlpbnggPSB0Y3BDb25uZWN0aW9uU3RhdGVfbGVuOworCXB2YXIgPSBOVUxMOworCisJdnAtPm5hbWVbaW54LTFdID0gODsKKwlzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmcHZhciwgdnAtPm5hbWUsIHZwLT5uYW1lX2xlbmd0aCwKKwkJCQkJIEFTTl9OVUxMLCBOVUxMLCAgMCk7CisJaWYgKG5ldHNubXBfcXVlcnlfZ2V0KCBwdmFyLCBzcyApICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKwkgICAgc25tcF9mcmVlX3ZhciggcHZhciApOworCSAgICByZXR1cm47CisJfQorCWlmICgocHZhci0+dHlwZSAmIDB4RjApICE9IDB4ODApCS8qIEV4Y2VwdGlvbiAqLworCSAgICBwaWQgPSAqcHZhci0+dmFsLmludGVnZXI7CisgICAgICAgIAorICAgICAgICAvKiBFeHRyYWN0IHRoZSBsb2NhbC9yZW1vdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5kZXggdmFsdWVzICovCisJbG9jYWxUeXBlID0gdnAtPm5hbWVbaW54KytdOworCWZvciAoaSA9IDA7IGkgPCB2cC0+bmFtZVtpbnhdOyBpKyspCisJICAgIGxvY2FsQWRkci5zaW42X2FkZHIuczZfYWRkcltpXSA9IHZwLT5uYW1lW2lueCtpKzFdOworCWlueCArPSB2cC0+bmFtZVtpbnhdICsgMTsKKyAgICAgICAgbG9jYWxQb3J0ICAgID0gdnAtPm5hbWVbaW54KytdOworCXJlbW90ZVR5cGUgPSB2cC0+bmFtZVtpbngrK107CisJZm9yIChpID0gMDsgaSA8IHZwLT5uYW1lW2lueF07IGkrKykKKwkgICAgcmVtb3RlQWRkci5zaW42X2FkZHIuczZfYWRkcltpXSA9IHZwLT5uYW1lW2lueCtpKzFdOworCWlueCArPSB2cC0+bmFtZVtpbnhdICsgMTsKKyAgICAgICAgcmVtb3RlUG9ydCAgICA9IHZwLT5uYW1lW2lueCsrXTsKKworCXNubXBfZnJlZV92YXJiaW5kKHB2YXIpOworCisJaWYgKGFmID09IEFGX0lORVQgJiYgbG9jYWxUeXBlID09IDIpIGNvbnRpbnVlOworCWlmIChhZiA9PSBBRl9JTkVUNiAmJiBsb2NhbFR5cGUgIT0gMikgY29udGludWU7CisKKyAgICAgICAgaWYgKGZpcnN0KSB7CisgICAgICAgICAgICBwcmludGYoIkFjdGl2ZSBJbnRlcm5ldCAoJXMpIENvbm5lY3Rpb25zIiwgInRjcCIpOworICAgICAgICAgICAgcHV0Y2hhcignXG4nKTsKKyAgICAgICAgICAgIHByaW50ZigiJS01LjVzICUtMjcuMjdzICUtMjcuMjdzICUxMS4xMXMgJTUuNXNcbiIsCisgICAgICAgICAgICAgICAgICAgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiLCAiUmVtb3RlIEFkZHJlc3MiLCAiU3RhdGUiLCAiUElEIik7CisgICAgICAgICAgICBmaXJzdCA9IDA7CisgICAgICAgIH0KKworCXN0cmNweShsbmFtZSwgInRjcCIpOworCWlmIChsb2NhbFR5cGUgPT0gMikgbG5hbWVbM10gPSAnNic7CisJZWxzZSBsbmFtZVszXSA9ICc0JzsKKwlsbmFtZVs0XSA9IDA7CisgICAgICAgIHByaW50ZigiJS01LjVzIiwgbG5hbWUpOworICAgICAgICBpbmV0eHByaW50KGxvY2FsVHlwZSwgbG9jYWxBZGRyLCAgbG9jYWxQb3J0LCAidGNwIiwgMSk7CisgICAgICAgIGluZXR4cHJpbnQocmVtb3RlVHlwZSwgcmVtb3RlQWRkciwgcmVtb3RlUG9ydCwgInRjcCIsIDApOworICAgICAgICBpZiAoIHN0YXRlIDwgMSB8fCBzdGF0ZSA+IFRDUF9OU1RBVEVTICkKKyAgICAgICAgICAgIHByaW50ZigiICUxMWQgJTVkXG4iLCBzdGF0ZSwgcGlkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbnRmKCIgJTExcyAlNWRcbiIsIHRjcHhzdGF0ZXNbIHN0YXRlIF0sIHBpZCk7CisgICAgfQorICAgIHNubXBfZnJlZV92YXJiaW5kKCB2YXIgKTsKKworICAgIGlmIChhZmxhZykKKwlsaXN0ZW54cHJvdG9wcihuYW1lKTsKK30KKworLyoKKyAqIFByaW50IGEgc3VtbWFyeSBvZiBsaXN0ZW5pbmcgImNvbm5lY3Rpb25zIgorICovCit2b2lkCitsaXN0ZW54cHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnA7CisgICAgb2lkICAgIHRjcExpc3RlbmVyUHJvY2Vzc19vaWRbXSA9IHsgMSwzLDYsMSwyLDEsNiwyMCwxLDQgfTsKKyAgICBzaXplX3QgdGNwTGlzdGVuZXJQcm9jZXNzX2xlbiAgID0gT0lEX0xFTkdUSCggdGNwTGlzdGVuZXJQcm9jZXNzX29pZCApOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgbG9jYWxBZGRyOworICAgIGludCAgICBsb2NhbFR5cGUsIGxvY2FsUG9ydCwgcGlkOworICAgIGludCAgICBpLCBpbng7CisKKyAgICAvKgorICAgICAqIFdhbGtpbmcgYSBzaW5nbGUgY29sdW1uIG9mIHRoZSB1ZHBUYWJsZSB3aWxsIHByb3ZpZGUKKyAgICAgKiAgIGFsbCB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZyb20gdGhlIGluZGV4IHZhbHVlcy4KKyAgICAgKi8KKyAgICB2YXIgPSBOVUxMOworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHRjcExpc3RlbmVyUHJvY2Vzc19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwTGlzdGVuZXJQcm9jZXNzX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fTlVMTCwgTlVMTCwgIDApOworICAgIGlmIChuZXRzbm1wX3F1ZXJ5X3dhbGsoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCh2YXItPnR5cGUgJiAweEYwKSA9PSAweDgwKQkvKiBFeGNlcHRpb24gKi8KKyAgICAgICAgcmV0dXJuOworCisgICAgcHJpbnRmKCJMaXN0ZW5pbmcgSW50ZXJuZXQgKCVzKSBDb25uZWN0aW9uc1xuIiwgInRjcCIpOworICAgIHByaW50ZigiJS01LjVzICUtMjcuMjdzICU1c1xuIiwgIlByb3RvIiwgIkxvY2FsIEFkZHJlc3MiLCAiUElEIik7CisgICAgZm9yICh2cCA9IHZhcjsgdnAgOyB2cD12cC0+bmV4dF92YXJpYWJsZSkgeworCWNoYXIgbG5hbWVbNV07CisJaW54ID0gdGNwTGlzdGVuZXJQcm9jZXNzX2xlbjsKKyAgICAgICAgLyoKKyAgICAgICAgICogRXh0cmFjdCB0aGUgbG9jYWwgcG9ydCBmcm9tIHRoZSBpbmRleCB2YWx1ZXMsIGJ1dCB0YWtlCisgICAgICAgICAqICAgdGhlIElQIGFkZHJlc3MgZnJvbSB0aGUgdmFyYmluZCB2YWx1ZSwgKHdoaWNoIGlzIHdoeQorICAgICAgICAgKiAgIHdlIHdhbGtlZCB1ZHBMb2NhbEFkZHJlc3MgcmF0aGVyIHRoYW4gdWRwTG9jYWxQb3J0KQorICAgICAgICAgKi8KKwlsb2NhbFR5cGUgPSB2cC0+bmFtZVtpbngrK107CisJaWYgKGFmID09IEFGX0lORVQgJiYgbG9jYWxUeXBlID09IDIpIGNvbnRpbnVlOworCWlmIChhZiA9PSBBRl9JTkVUNiAmJiBsb2NhbFR5cGUgIT0gMikgY29udGludWU7CisKKwlmb3IgKGkgPSAwOyBpIDwgdnAtPm5hbWVbaW54XTsgaSsrKQorCSAgICBsb2NhbEFkZHIuc2luNl9hZGRyLnM2X2FkZHJbaV0gPSB2cC0+bmFtZVtpbngraSsxXTsKKwlpbnggKz0gdnAtPm5hbWVbaW54XSsxOworICAgICAgICBsb2NhbFBvcnQgPSB2cC0+bmFtZVsgaW54KysgXTsKKyAgICAgICAgcGlkICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworCXN0cmNweShsbmFtZSwgInRjcCIpOworCWlmIChsb2NhbFR5cGUgPT0gMikgbG5hbWVbM10gPSAnNic7CisJZWxzZSBsbmFtZVszXSA9ICc0JzsKKwlsbmFtZVs0XSA9IDA7CisgICAgICAgIHByaW50ZigiJS01LjVzIiwgbG5hbWUpOworICAgICAgICBpbmV0eHByaW50KGxvY2FsVHlwZSwgbG9jYWxBZGRyLCBsb2NhbFBvcnQsICJ0Y3AiLCAxKTsKKyAgICAgICAgcHJpbnRmKCIgJTVkXG4iLCBwaWQpOworICAgIH0KKyAgICBzbm1wX2ZyZWVfdmFyYmluZCggdmFyICk7Cit9CisKKy8qCisgKiBQcmludCBhIHN1bW1hcnkgb2YgVURQdjYgImNvbm5lY3Rpb25zIgorICogICAgWFhYIC0gd2hhdCBhYm91dCAibGlzdGVuaW5nIiBzZXJ2aWNlcyA/PworICovCit2b2lkCit1ZHB4cHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnA7CisgICAgb2lkICAgIHVkcEVuZHBvaW50UHJvY2Vzc19vaWRbXSA9IHsgMSwzLDYsMSwyLDEsNyw3LDEsOCB9OworICAgIHNpemVfdCB1ZHBFbmRwb2ludFByb2Nlc3NfbGVuICAgPSBPSURfTEVOR1RIKCB1ZHBFbmRwb2ludFByb2Nlc3Nfb2lkICk7CisgICAgc3RydWN0IHNvY2thZGRyX2luNiBsb2NhbEFkZHIsIHJlbW90ZUFkZHI7CisgICAgaW50ICAgIGxvY2FsVHlwZSwgcmVtb3RlVHlwZSwgbG9jYWxQb3J0LCByZW1vdGVQb3J0LCBwaWQ7CisgICAgaW50ICAgIGksIGlueDsKKyAgICBzdGF0aWMgaW50IGRvbmUgPSAwOworCisgICAgaWYgKGRvbmUrKykgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBXYWxraW5nIGEgc2luZ2xlIGNvbHVtbiBvZiB0aGUgdWRwVGFibGUgd2lsbCBwcm92aWRlCisgICAgICogICBhbGwgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBpbmRleCB2YWx1ZXMuCisgICAgICovCisgICAgdmFyID0gTlVMTDsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmFyLCB1ZHBFbmRwb2ludFByb2Nlc3Nfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UHJvY2Vzc19sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX05VTEwsIE5VTEwsICAwKTsKKyAgICBpZiAobmV0c25tcF9xdWVyeV93YWxrKCB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKKyAgICAgICAgcmV0dXJuOworICAgIGlmICgodmFyLT50eXBlICYgMHhGMCkgPT0gMHg4MCkJLyogRXhjZXB0aW9uICovCisgICAgICAgIHJldHVybjsKKworICAgIHByaW50ZigiQWN0aXZlIEludGVybmV0ICglcykgQ29ubmVjdGlvbnNcbiIsICJ1ZHAiKTsKKyAgICBwcmludGYoIiUtNS41cyAlLTI3LjI3cyAlLTI3LjI3cyAlNXNcbiIsICJQcm90byIsICJMb2NhbCBBZGRyZXNzIiwgIlJlbW90ZSBBZGRyZXNzIiwgIlBJRCIpOworICAgIGZvciAodnAgPSB2YXI7IHZwIDsgdnA9dnAtPm5leHRfdmFyaWFibGUpIHsKKyAgICAgICAgY2hhciBsbmFtZVs1XTsKKwlpbnggPSB1ZHBFbmRwb2ludFByb2Nlc3NfbGVuOworICAgICAgICAvKgorICAgICAgICAgKiBFeHRyYWN0IHRoZSBsb2NhbCBwb3J0IGZyb20gdGhlIGluZGV4IHZhbHVlcywgYnV0IHRha2UKKyAgICAgICAgICogICB0aGUgSVAgYWRkcmVzcyBmcm9tIHRoZSB2YXJiaW5kIHZhbHVlLCAod2hpY2ggaXMgd2h5CisgICAgICAgICAqICAgd2Ugd2Fsa2VkIHVkcExvY2FsQWRkcmVzcyByYXRoZXIgdGhhbiB1ZHBMb2NhbFBvcnQpCisgICAgICAgICAqLworCWxvY2FsVHlwZSA9IHZwLT5uYW1lW2lueCsrXTsKKwlpZiAoYWYgPT0gQUZfSU5FVCAmJiBsb2NhbFR5cGUgPT0gMikgY29udGludWU7CisJaWYgKGFmID09IEFGX0lORVQ2ICYmIGxvY2FsVHlwZSAhPSAyKSBjb250aW51ZTsKKwlmb3IgKGkgPSAwOyBpIDwgdnAtPm5hbWVbaW54XTsgaSsrKQorCSAgICBsb2NhbEFkZHIuc2luNl9hZGRyLnM2X2FkZHJbaV0gPSB2cC0+bmFtZVtpbngraSsxXTsKKwlpbnggKz0gdnAtPm5hbWVbaW54XSsxOworICAgICAgICBsb2NhbFBvcnQgPSB2cC0+bmFtZVsgaW54KysgXTsKKwlyZW1vdGVUeXBlID0gdnAtPm5hbWVbaW54KytdOworCWZvciAoaSA9IDA7IGkgPCB2cC0+bmFtZVtpbnhdOyBpKyspCisJICAgIHJlbW90ZUFkZHIuc2luNl9hZGRyLnM2X2FkZHJbaV0gPSB2cC0+bmFtZVtpbngraSsxXTsKKwlpbnggKz0gdnAtPm5hbWVbaW54XSsxOworICAgICAgICByZW1vdGVQb3J0ID0gdnAtPm5hbWVbIGlueCsrIF07CisgICAgICAgIHBpZCAgID0gKnZwLT52YWwuaW50ZWdlcjsKKwlzdHJjcHkobG5hbWUsICJ1ZHAiKTsKKwlpZiAobG9jYWxUeXBlID09IDIpIGxuYW1lWzNdID0gJzYnOworCWVsc2UgbG5hbWVbM10gPSAnNCc7CisJbG5hbWVbNF0gPSAwOworICAgICAgICBwcmludGYoIiUtNS41cyIsIGxuYW1lKTsKKyAgICAgICAgaW5ldHhwcmludChsb2NhbFR5cGUsIGxvY2FsQWRkciwgbG9jYWxQb3J0LCAidWRwIiwgMSk7CisgICAgICAgIGluZXR4cHJpbnQocmVtb3RlVHlwZSwgcmVtb3RlQWRkciwgcmVtb3RlUG9ydCwgInVkcCIsIDEpOworICAgICAgICBwcmludGYoIiAlNWRcbiIsIHBpZCk7CisgICAgfQorICAgIHNubXBfZnJlZV92YXJiaW5kKCB2YXIgKTsKK30KKworc3RhdGljIHZvaWQKK3N0YXRzcHJpbnQoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3lzdGVtc3RhdHNfdCAqc3QsIGludCBwcm90bywKKwljb25zdCBvaWQgKnRibCwgc2l6ZV90IHRibGxlbikKK3sKKyAgICBvaWQgdmFyWzMyXTsKKyAgICBzaXplX3QgbGVuOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmI7CisKKyAgICBtZW1jcHkodmFyLCB0YmwsIHRibGxlbipzaXplb2Yob2lkKSk7CisgICAgdmFyW3RibGxlbisxXSA9IHByb3RvOworICAgIGxlbiA9IHRibGxlbisyOworCisgICAgcHJpbnRmKCIlczpcbiIsIG5hbWUpOworICAgIHdoaWxlIChzdC0+c3RhdCkgeworCXZiID0gTlVMTDsKKwlpZiAoc3QtPmhjc3RhdCkgeworCSAgICB2YXJbdGJsbGVuXSA9IHN0LT5oY3N0YXQ7CisJICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YiwgdmFyLCBsZW4sIEFTTl9OVUxMLCBOVUxMLCAgMCk7CisJICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldCggdmIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikgeworCQlzbm1wX2ZyZWVfdmFyKCB2YiApOworCQl2YiA9IE5VTEw7CisJICAgIH0KKwl9CisJaWYgKCF2YikgeworCSAgICB2YXJbdGJsbGVuXSA9IHN0LT5zdGF0OworCSAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmIsIHZhciwgbGVuLCBBU05fTlVMTCwgTlVMTCwgMCk7CisJICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldCggdmIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikgeworCQlzbm1wX2ZyZWVfdmFyKCB2YiApOworCQl2YiA9IE5VTEw7CisJICAgIH0KKwl9CisJaWYgKHZiKSB7CisJICAgIGlmICh2Yi0+dHlwZSA9PSBBU05fQ09VTlRFUikgeworCQlpZiAoKnZiLT52YWwuaW50ZWdlciA+IDAgfHwgc2ZsYWcgPT0gMSkKKwkJICAgIHByaW50ZigiJTE0bHUgJXNcbiIsICp2Yi0+dmFsLmludGVnZXIsIHN0LT5zdHIpOworCSAgICB9CisJICAgIGVsc2UgaWYgKHZiLT50eXBlID09IEFTTl9DT1VOVEVSNjQpIHsKKwkJY2hhciBhNjRidWZbSTY0Q0hBUlNaICsgMV07CisJCXByaW50VTY0KGE2NGJ1ZiwgdmItPnZhbC5jb3VudGVyNjQpOworCQlpZiAoc3RyY21wKGE2NGJ1ZiwgIjAiKSAhPSAwIHx8IHNmbGFnID09IDEpCisJCSAgICBwcmludGYoIiUxNHMgJXNcbiIsIGE2NGJ1Ziwgc3QtPnN0cik7CisJICAgIH0KKwkgICAgZWxzZQorCQlwcmludGYoIiUxNHMgJXNcbiIsICItIiwgc3QtPnN0cik7CisJICAgIHNubXBfZnJlZV92YXJiaW5kKHZiKTsKKwl9CisJZWxzZSB7CisJICAgIHByaW50ZigiJTE0cyAlc1xuIiwgIi0iLCBzdC0+c3RyKTsKKwl9CisJc3QrKzsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitwcmhpc3RvKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqdmFyLCBzaXplX3QgbGVuLCBpbnQgdmVyLCBjb2RlbGlzdF90ICpjcykKK3sKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZiID0gTlVMTCwgKnZwOworICAgIGNvZGVsaXN0X3QgKmNwOworICAgIGludCBjb2RlOworICAgIGNoYXIgbm9jb2RlWzMyXTsKKworICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YiwgdmFyLCBsZW4sIEFTTl9OVUxMLCBOVUxMLCAgMCk7CisgICAgaWYgKG5ldHNubXBfcXVlcnlfd2FsayggdmIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikgeworCXNubXBfZnJlZV92YXIoIHZiICk7CisJcmV0dXJuOworICAgIH0KKyAgICBwcmludGYoIiAgICAgJXMgaGlzdG9ncmFtOlxuIiwgbmFtZSk7CisgICAgcHJpbnRmKCIgICAgICUxMHMgJTEwcyAlc1xuIiwgImlucHV0IiwgIm91dHB1dCIsICJ0eXBlIik7CisgICAgZm9yIChjb2RlID0gMDsgY29kZSA8IDI1NjsgY29kZSsrKSB7CisJdW5zaWduZWQgbG9uZyBpbnAgPSAwLCBvdXQgPSAwOworCWludCBmb3VuZCA9IDA7CisJdnAgPSB2YjsKKwl3aGlsZSAodnAgJiYgZm91bmQgIT0gMikgeworCSAgICBpZiAodnAtPm5hbWVbMTFdID09IGNvZGUgJiYgdnAtPm5hbWVbMTBdID09IHZlcikgeworCQlpZiAodnAtPm5hbWVbOV0gPT0gMykgaW5wID0gKnZwLT52YWwuaW50ZWdlcjsKKwkJZWxzZSBvdXQgPSAqdnAtPnZhbC5pbnRlZ2VyOworCQlmb3VuZCsrOworCSAgICB9CisJICAgIHZwID0gdnAtPm5leHRfdmFyaWFibGU7CisJfQorCWlmIChmb3VuZCkgeworCSAgICBjcCA9IGNzOworCSAgICB3aGlsZSAoY3AtPm5hbWUgJiYgY3AtPmNvZGUgIT0gY29kZSkgY3ArKzsKKwkgICAgaWYgKGlucCB8fCBvdXQgfHwgc2ZsYWcgPT0gMSkgeworCQlpZiAoIWNwLT5jb2RlKQorCQkgICAgc25wcmludGYobm9jb2RlLCBzaXplb2Ygbm9jb2RlLCAidHlwZSAlZCIsIGNvZGUpOworCQlwcmludGYoIiAgICAgJTEwbHUgJTEwbHUgJXNcbiIsIGlucCwgb3V0LCBjcC0+bmFtZSA/IGNwLT5uYW1lIDogbm9jb2RlKTsKKwkgICAgfQorCX0KKyAgICB9CisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmIpOworfQorCit2b2lkCitpcHhfc3RhdHMoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBvaWQgaXBzeXNzdGF0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAzMSwgMSwgMSB9OworICAgIHNpemVfdCBpcHN5c3N0YXRfbGVuID0gc2l6ZW9mKGlwc3lzc3RhdF9vaWQpIC8gc2l6ZW9mKGlwc3lzc3RhdF9vaWRbMF0pOworICAgIHN0YXRpYyBpbnQgZmlyc3QgPSAxOworCisgICAgaWYgKCFmaXJzdCkgcmV0dXJuOworICAgIGZpcnN0ID0gMDsKKworICAgIGlmICghbmFtZSB8fCBzdHJjbXAobmFtZSwgImlwIikgPT0gMCkKKwlzdGF0c3ByaW50KCJpcCIsIHN5c3RlbXN0YXRzLCAxLCBpcHN5c3N0YXRfb2lkLCBpcHN5c3N0YXRfbGVuKTsKKyAgICBpZiAoIW5hbWUgfHwgc3RyY21wKG5hbWUsICJpcDYiKSA9PSAwKQorCXN0YXRzcHJpbnQoImlwNiIsIHN5c3RlbXN0YXRzLCAyLCBpcHN5c3N0YXRfb2lkLCBpcHN5c3N0YXRfbGVuKTsKK30KKwordm9pZAoraWNtcHhfc3RhdHMoY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICBvaWQgaWNtcHN0YXRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDUsIDI5LCAxIH07CisgICAgc2l6ZV90IGljbXBzdGF0X2xlbiA9IHNpemVvZihpY21wc3RhdF9vaWQpIC8gc2l6ZW9mKGljbXBzdGF0X29pZFswXSk7CisgICAgb2lkIGljbXBtc2dfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDUsIDMwLCAxIH07CisgICAgc2l6ZV90IGljbXBtc2dfbGVuID0gc2l6ZW9mKGljbXBtc2dfb2lkKSAvIHNpemVvZihpY21wbXNnX29pZFswXSk7CisgICAgc3RhdGljIGludCBmaXJzdCA9IDE7CisKKyAgICBpZiAoIWZpcnN0KQorCXJldHVybjsKKyAgICBmaXJzdCA9IDA7CisKKyAgICBpZiAoIW5hbWUgfHwgc3RyY21wKG5hbWUsICJpY21wIikgPT0gMCkgeworCXN0YXRzcHJpbnQoImljbXAiLCBpY21wc3RhdHMsIDEsIGljbXBzdGF0X29pZCwgaWNtcHN0YXRfbGVuKTsKKwlwcmhpc3RvKCJpY21wIiwgaWNtcG1zZ19vaWQsIGljbXBtc2dfbGVuLCAxLCBpY21wY29kZXMpOworICAgIH0KKyAgICBpZiAoIW5hbWUgfHwgc3RyY21wKG5hbWUsICJpY21wNiIpID09IDApIHsKKwlzdGF0c3ByaW50KCJpY21wNiIsIGljbXBzdGF0cywgMiwgaWNtcHN0YXRfb2lkLCBpY21wc3RhdF9sZW4pOworCXByaGlzdG8oImljbXA2IiwgaWNtcG1zZ19vaWQsIGljbXBtc2dfbGVuLCAyLCBpY21wNmNvZGVzKTsKKyAgICB9Cit9CisKKworc3RhdGljIHZvaWQKK3Vua25vd25wcmludCh2b2lkKQoreworICAgIGNoYXIgbGluZVs4MF0sICpjcDsKKyAgICBpbnQgd2lkdGggPSAyNzsKKworICAgIGlmICh2ZmxhZykKKwlzbnByaW50ZihsaW5lLCBzaXplb2YgbGluZSwgIiVzLiIsICIqIik7CisgICAgZWxzZQorCXNucHJpbnRmKGxpbmUsIHNpemVvZiBsaW5lLCAiJS4qcy4iLCB3aWR0aC05LCAiKiIpOworICAgIGNwID0gc3RyY2hyKGxpbmUsICdcMCcpOworICAgIHNucHJpbnRmKGNwLCBsaW5lICsgc2l6ZW9mIGxpbmUgLSBjcCwgdmZsYWcgPyAiJXMiIDogIiUuOHMiLCAiKiIpOworICAgIGlmICh2ZmxhZyAmJiB3aWR0aCA8IHN0cmxlbihsaW5lKSkKKwl3aWR0aCA9IHN0cmxlbihsaW5lKTsKKyAgICBwcmludGYoIiAlLSouKnMiLCB3aWR0aCwgd2lkdGgsIGxpbmUpOworfQorCisvKgorICogUHJldHR5IHByaW50IGFuIEludGVybmV0IGFkZHJlc3MgKG5ldCBhZGRyZXNzICsgcG9ydCkuCisgKiBJZiB0aGUgbmZsYWcgd2FzIHNwZWNpZmllZCwgdXNlIG51bWJlcnMgaW5zdGVhZCBvZiBuYW1lcy4KKyAqLworCit2b2lkCitpbmV0eHByaW50KGludCBwcm90bywgc3RydWN0IHNvY2thZGRyX2luNiBpbjYsIGludCBwb3J0LCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbG9jYWwpCit7CisKKwlpZiAocHJvdG8gPT0gMikKKwkgICAgaW5ldDZwcmludCgodV9jaGFyICopJmluNi5zaW42X2FkZHIuczZfYWRkciwgcG9ydCwgbmFtZSwgbG9jYWwpOworCWVsc2UgaWYgKHByb3RvID09IDEpCisJICAgIGluZXRwcmludCgoc3RydWN0IGluX2FkZHIgKikmaW42LnNpbjZfYWRkci5zNl9hZGRyLCBwb3J0LCBuYW1lLCBsb2NhbCk7CisJZWxzZSBpZiAocHJvdG8gPT0gMCkKKwkgICAgdW5rbm93bnByaW50KCk7CisJZWxzZSBhYm9ydCgpOworfQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMgYi9hcHBzL3NubXBuZXRzdGF0L21haW4uYwppbmRleCBmYTE5OWVkLi4wZTk3N2FkIDEwMDY0NAotLS0gYS9hcHBzL3NubXBuZXRzdGF0L21haW4uYworKysgYi9hcHBzL3NubXBuZXRzdGF0L21haW4uYwpAQCAtNjEsMTMgKzYxLDEzIEBACiAjaW5jbHVkZSAid2luc3R1Yi5oIgogI2VuZGlmCiAKLWludAlBZmxhZzsJCS8qIHNob3cgYWRkcmVzc2VzIG9mIHByb3RvY29sIGNvbnRyb2wgYmxvY2sgKi8KIGludAlhZmxhZzsJCS8qIHNob3cgYWxsIHNvY2tldHMgKGluY2x1ZGluZyBzZXJ2ZXJzKSAqLwogaW50CWJmbGFnOwkJLyogc2hvdyBieXRlcyBpbnN0ZWFkIG9mIHBhY2tldHMgKi8KIGludAlkZmxhZzsJCS8qIHNob3cgaS9mIGRyb3BwZWQgcGFja2V0cyAqLwogaW50CWdmbGFnOwkJLyogc2hvdyBncm91cCAobXVsdGljYXN0KSByb3V0aW5nIG9yIHN0YXRzICovCiBpbnQJaWZsYWc7CQkvKiBzaG93IGludGVyZmFjZXMgKi8KIGludAlsZmxhZzsJCS8qIHNob3cgcm91dGluZyB0YWJsZSB3aXRoIHVzZSBhbmQgcmVmICovCitpbnQJTGZsYWc7CQkvKiBMZWdhY3kgbWlicyAqLwogaW50CW1mbGFnOwkJLyogc2hvdyBtZW1vcnkgc3RhdHMgKi8KIGludAluZmxhZzsJCS8qIHNob3cgYWRkcmVzc2VzIG51bWVyaWNhbGx5ICovCiBpbnQJb2ZsYWc7CQkvKiBPcGVuL05ldC1CU0Qgc3R5bGUgb2N0ZXQgb3V0cHV0ICovCkBAIC04Niw3ICs4Niw3IEBACiBpbnQgICAgIG1heF9nZXRidWxrID0gMzI7ICAvKiBzcGVjaWZpZXMgdGhlIG1heC1yZXBlYXRlcnMgdmFsdWUgdG8gdXNlIHdpdGggR0VUQlVMSyByZXF1ZXN0cyAqLwogCiBjaGFyICAgICpwcm9nbmFtZSA9IE5VTEw7Ci0KK2NvbnN0IGNoYXIgKnBuYW1lOwogICAgIC8qCiAgICAgICogc3RydWN0IG5saXN0IG5sW10gLSBPbWl0dGVkCiAgICAgICovCkBAIC05OSw3ICs5OSw5IEBACiAJc3RyaW5nZnVuCSpwcl9jYmxvY2tzOwkvKiBjb250cm9sIGJsb2NrcyBwcmludGluZyByb3V0aW5lICovCiAJc3RyaW5nZnVuCSpwcl9zdGF0czsJLyogc3RhdGlzdGljcyBwcmludGluZyByb3V0aW5lICovCiAJY29uc3QgY2hhcgkqcHJfbmFtZTsJLyogd2VsbC1rbm93biBuYW1lICovCi19IHByb3RveFtdID0geworfTsKKworc3RydWN0IHByb3RveCBwcm90b3hbXSA9IHsKIAl7IDEsCXRjcHByb3RvcHIsCXRjcF9zdGF0cywJInRjcCIgfSwJCiAJeyAxLAl1ZHBwcm90b3ByLAl1ZHBfc3RhdHMsCSJ1ZHAiIH0sCQogCkBAIC0xMTksNiArMTIxLDE2IEBACiAJeyAwLAkoc3RyaW5nZnVuKikwLAkoc3RyaW5nZnVuKikwLAlOVUxMIH0KIH07CiAKK3N0cnVjdCBwcm90b3ggaXB4cHJvdG94W10gPSB7CisJeyAxLAl0Y3B4cHJvdG9wciwJdGNwX3N0YXRzLAkidGNwIiB9LAkKKwl7IDEsCXVkcHhwcm90b3ByLAl1ZHBfc3RhdHMsCSJ1ZHAiIH0sCQorCXsgMSwJKHN0cmluZ2Z1biopMCwJaXB4X3N0YXRzLAkiaXAiIH0sLyogaXA2cHJvdG9wciBPbWl0dGVkICovCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpcHhfc3RhdHMsCSJpcDYiIH0sLyogaXA2cHJvdG9wciBPbWl0dGVkICovCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpY21weF9zdGF0cywJImljbXAiIH0sCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpY21weF9zdGF0cywJImljbXA2IiB9LAorCXsgMCwJKHN0cmluZ2Z1biopMCwJKHN0cmluZ2Z1biopMCwJTlVMTCB9Cit9OworCiAJLyoge2lweCxucyxhdGFsa31wcm90b3ggT21pdHRlZCAqLwogCiBzdHJ1Y3QgcHJvdG94ICpwcm90b3Byb3RveFtdID0gewpAQCAtMTQwLDExICsxNTIsNiBAQAogICAgIGNhc2UgJ0MnOgogICAgICAgICB3aGlsZSAoKm9wdGFyZykgewogICAgICAgICAgICAgc3dpdGNoICgqb3B0YXJnKyspIHsKLQkgICAgLyoJY2FzZSAnQSc6CQkqQlNEOiAgZGlzcGxheSBQQ0IgYWRkcmVzc2VzCi0JCQkJCUxpbnV4OiBwcm90b2NvbCBmYW1pbHkKLQkJCUFmbGFnID0gMTsKLQkJCWJyZWFrOwotCSAgICAgKi8KIAkJY2FzZSAnYSc6CiAJCQlhZmxhZyA9IDE7CiAJCQlicmVhazsKQEAgLTE5NCw2ICsyMDEsOSBAQAogCQljYXNlICdpJzoKIAkJCWlmbGFnID0gMTsKIAkJCWJyZWFrOworCQljYXNlICdMJzoKKwkJCUxmbGFnID0gMTsKKwkJCWJyZWFrOwogCSAgICAvKiAgY2FzZSAnTCc6CQlGcmVlQlNEOiBEaXNwbGF5IGxpc3RlbiBxdWV1ZSBsZW5ndGhzCiAJCQkJCU5ldEJTRDogIFN1cHByZXNzIGxpbmstbGV2ZWwgcm91dGVzICovCiAJICAgIC8qCWNhc2UgJ2wnOgkJT3BlbkJTRDogV2lkZXIgSVB2NiBkaXNwbGF5CkBAIC0yMzAsNiArMjQwLDcgQEAKIAkJCQlleGl0KDEpOwogCQkJfQogCQkJcGZsYWcgPSAxOworCQkJcG5hbWUgPSB0cC0+cHJfbmFtZTsKIAkJCXJldHVybjsKIAkgICAgLyoJY2FzZSAncSc6CQlOZXRCU0Q6ICBJUlEgaW5mb3JtYXRpb24KIAkJCQkJT3BlbkJTRDogU3VwcHJlc3MgaW5hY3RpdmUgSS9GcwpAQCAtMzU4LDYgKzM2OSw3IEBACiAJICogICAgIEtlcm5lbCBuYW1lbGlzIGhhbmRsaW5nCiAJICovCiAKKyNpZiAwCiAJaWYgKG1mbGFnKSB7CiAgICAgICAgICAgICAvKgogCQltYnByKG5sW05fTUJTVEFUXS5uX3ZhbHVlLCBubFtOX01CUE9PTF0ubl92YWx1ZSwKQEAgLTM2OSw2ICszODEsNyBAQAogCQlwcmludHByb3RvKHRwLCB0cC0+cHJfbmFtZSk7CiAJCWV4aXQoMCk7CiAJfQorI2VuZGlmCiAJLyoKIAkgKiBLZWVwIGZpbGUgZGVzY3JpcHRvcnMgb3BlbiB0byBhdm9pZCBvdmVyaGVhZAogCSAqIG9mIG9wZW4vY2xvc2Ugb24gZWFjaCBjYWxsIHRvIGdldCogcm91dGluZXMuCkBAIC0zODUsNyArMzk4LDEwIEBACiAJCQlydF9zdGF0cygpOwogCQllbHNlCiAgICAgICAgICAgICAgICovCi0JCQlyb3V0ZXByKCk7CisJCWlmIChMZmxhZyB8fCByb3V0ZXhwcihhZikgPT0gMCkgeworCQkgICAgaWYgKHJvdXRlNHByKGFmKSA9PSAwICYmIGFmID09IEFGX0lORVQpIHJvdXRlcHIoKTsKKwkJICAgIHJvdXRlNnByKGFmKTsKKwkJfQogCQlleGl0KDApOwogCX0KICAgICAgLyoKQEAgLTQxNiwyMyArNDMyLDMzIEBACiAJCWV4aXQoMCk7CiAJfQogICAgICAqLwotCWlmIChhZiA9PSBBRl9JTkVUIHx8IGFmID09IEFGX1VOU1BFQykgeworCXNldHNlcnZlbnQoMSk7CisgICAgICAgIGlmIChMZmxhZykgeworICAgICAgICAgICAgc3dpdGNoIChhZikgeworICAgICAgICAgICAgY2FzZSBBRl9VTlNQRUM6CiAJCXNldHByb3RvZW50KDEpOwotCQlzZXRzZXJ2ZW50KDEpOwogCQkvKiB1Z2gsIHRoaXMgaXMgTyhNTikgLi4uIHdoeSBkbyB3ZSBkbyB0aGlzPyAqLwogCQl3aGlsZSAoKHAgPSBnZXRwcm90b2VudCgpKSkgewogCQkJZm9yICh0cCA9IHByb3RveDsgdHAtPnByX25hbWU7IHRwKyspCiAJCQkJaWYgKHN0cmNtcCh0cC0+cHJfbmFtZSwgcC0+cF9uYW1lKSA9PSAwKQotCQkJCQlicmVhazsKLQkJCWlmICh0cC0+cHJfbmFtZSA9PSBOVUxMIHx8IHRwLT5wcl93YW50ZWQgPT0gMCkKLQkJCQljb250aW51ZTsKLQkJCXByaW50cHJvdG8odHAsIHAtPnBfbmFtZSk7CisJCQkJCWlmICh0cC0+cHJfbmFtZSAmJiB0cC0+cHJfd2FudGVkKQorCQkJCQkgICAgcHJpbnRwcm90byh0cCwgcC0+cF9uYW1lKTsKIAkJfQogCQllbmRwcm90b2VudCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBRl9JTkVUOgorICAgICAgICAgICAgICAgICAgICBmb3IgKHRwID0gcHJvdG94OyB0cC0+cHJfbmFtZTsgdHArKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludHByb3RvKHRwLCB0cC0+cHJfbmFtZSk7CisgICAgICAgICAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICAgICAgICAgICAgICBmb3IgKHRwID0gaXA2cHJvdG94OyB0cC0+cHJfbmFtZTsgdHArKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludHByb3RvKHRwLCB0cC0+cHJfbmFtZSk7CisgICAgICAgICAgICB9CiAJfQotCWlmIChhZiA9PSBBRl9JTkVUNiB8fCBhZiA9PSBBRl9VTlNQRUMpCi0JCWZvciAodHAgPSBpcDZwcm90b3g7IHRwLT5wcl9uYW1lOyB0cCsrKQotCQkJcHJpbnRwcm90byh0cCwgdHAtPnByX25hbWUpOworICAgICAgICBlbHNlIHsKKwkgICAgZm9yICh0cCA9IGlweHByb3RveDsgdHAtPnByX25hbWU7IHRwKyspCisJCWlmICghcG5hbWUgfHwgc3RyY21wKHBuYW1lLHRwLT5wcl9uYW1lKSA9PSAwKQorCQkgICAgcHJpbnRwcm90byh0cCwgcG5hbWUpOworCX0KICAgICAvKgogCWlmIChhZiA9PSBBRl9JUFggfHwgYWYgPT0gQUZfVU5TUEVDKQogCQlmb3IgKHRwID0gaXB4cHJvdG94OyB0cC0+cHJfbmFtZTsgdHArKykKQEAgLTQ3NywxMiArNTAzLDYgQEAKIAlyZXR1cm4gKG4gIT0gMSA/ICJzIiA6ICIiKTsKIH0KIAotY29uc3QgY2hhciAqCi1wbHVyYWxlcyhpbnQgbikKLXsKLQlyZXR1cm4gKG4gIT0gMSA/ICJlcyIgOiAiIik7Ci19Ci0KIC8qCiAgKiBGaW5kIHRoZSBwcm90b3ggZm9yIHRoZSBnaXZlbiAid2VsbC1rbm93biIgbmFtZS4KICAqLwpAQCAtNTMyLDE0ICs1NTIsMTIgQEAKIHVzYWdlKHZvaWQpCiB7CiAJKHZvaWQpZnByaW50ZihzdGRlcnIsCi0idXNhZ2U6ICVzIFtzbm1wX29wdHNdIFstQ2FuXSBbLUNmIGFkZHJlc3NfZmFtaWx5XVxuIiwgcHJvZ25hbWUpOworInVzYWdlOiAlcyBbc25tcF9vcHRzXSBbLUNhbnZdIFstQ2YgYWRkcmVzc19mYW1pbHldXG4iLCBwcm9nbmFtZSk7CiAJKHZvaWQpZnByaW50ZihzdGRlcnIsCi0iICAgICAgICVzIFtzbm1wX29wdHNdIFstQ2JkZ2ltbnJTc10gWy1DZiBhZGRyZXNzX2ZhbWlseV1cbiIsIHByb2duYW1lKTsKKyIgICAgICAgJXMgW3NubXBfb3B0c10gWy1DaWJvZG52XSBbLUNJIGludGVyZmFjZV0gWy1DdyB3YWl0XVxuIiwgcHJvZ25hbWUpOwogCSh2b2lkKWZwcmludGYoc3RkZXJyLAotIiAgICAgICAlcyBbc25tcF9vcHRzXSBbLUNiZG5dIFstQ0kgaW50ZXJmYWNlXSBbLUN3IHdhaXRdXG4iLCBwcm9nbmFtZSk7CisiICAgICAgICVzIFtzbm1wX29wdHNdIFstQ3Nbc11dIFstQ3AgcHJvdG9jb2xdXG4iLCBwcm9nbmFtZSk7CiAJKHZvaWQpZnByaW50ZihzdGRlcnIsCi0iICAgICAgICVzIFtzbm1wX29wdHNdIFstQ3NdIFstQ3AgcHJvdG9jb2xdXG4iLCBwcm9nbmFtZSk7Ci0JKHZvaWQpZnByaW50ZihzdGRlcnIsCi0iICAgICAgICVzIFtzbm1wX29wdHNdIFstQ2FdIFstQ2YgYWRkcmVzc19mYW1pbHldIFstQ2kgfCAtQ0kgaW50ZXJmYWNlXVxuIiwgcHJvZ25hbWUpOworIiAgICAgICAlcyBbc25tcF9vcHRzXSBbLUNybnZdIFstQ2YgYWRkcmVzc19mYW1pbHldXG4iLCBwcm9nbmFtZSk7CiAJZXhpdCgxKTsKIH0KZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oIGIvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKaW5kZXggMzU1YzhiMi4uYmE2MWViMyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKQEAgLTM5LDEzICszOSwxMyBAQAogLyogV2hhdCBpcyB0aGUgbWF4IGxlbmd0aCBvZiBhIHBvaW50ZXIgcHJpbnRlZCB3aXRoICVwIChpbmNsdWRpbmcgMHgpPyAqLwogI2RlZmluZSBQTEVOCShMT05HX0JJVCAvIDQgKyAyKQogCi1leHRlcm4gaW50CUFmbGFnOwkJLyogc2hvdyBhZGRyZXNzZXMgb2YgcHJvdG9jb2wgY29udHJvbCBibG9jayAqLwogZXh0ZXJuIGludAlhZmxhZzsJCS8qIHNob3cgYWxsIHNvY2tldHMgKGluY2x1ZGluZyBzZXJ2ZXJzKSAqLwogZXh0ZXJuIGludAliZmxhZzsJCS8qIHNob3cgYnl0ZXMgaW5zdGVhZCBvZiBwYWNrZXRzICovCiBleHRlcm4gaW50CWRmbGFnOwkJLyogc2hvdyBpL2YgZHJvcHBlZCBwYWNrZXRzICovCiBleHRlcm4gaW50CWdmbGFnOwkJLyogc2hvdyBncm91cCAobXVsdGljYXN0KSByb3V0aW5nIG9yIHN0YXRzICovCiBleHRlcm4gaW50CWlmbGFnOwkJLyogc2hvdyBpbnRlcmZhY2VzICovCiBleHRlcm4gaW50CWxmbGFnOwkJLyogc2hvdyByb3V0aW5nIHRhYmxlIHdpdGggdXNlIGFuZCByZWYgKi8KK2V4dGVybiBpbnQJTGZsYWc7CQkvKiBMZWdhY3kgbWlicyAqLwogZXh0ZXJuIGludAltZmxhZzsJCS8qIHNob3cgbWVtb3J5IHN0YXRzICovCiBleHRlcm4gaW50CW5mbGFnOwkJLyogc2hvdyBhZGRyZXNzZXMgbnVtZXJpY2FsbHkgKi8KIGV4dGVybiBpbnQJb2ZsYWc7CQkvKiBPcGVuL05ldC1CU0Qgc3R5bGUgb2N0ZXQgb3V0cHV0ICovCkBAIC02Nyw3ICs2Nyw2IEBACiBleHRlcm4JY2hhciAqX19wcm9nbmFtZTsgLyogcHJvZ3JhbSBuYW1lLCBmcm9tIGNydDAubyAqLwogCiBjb25zdCBjaGFyCSpwbHVyYWwoaW50KTsKLWNvbnN0IGNoYXIJKnBsdXJhbGVzKGludCk7CiAKIHZvaWQJdGNwcHJvdG9wcihjb25zdCBjaGFyICopOwogdm9pZAl1ZHBwcm90b3ByKGNvbnN0IGNoYXIgKik7CkBAIC04MSwxNSArODAsMjYgQEAKIHZvaWQJaXA2X3N0YXRzKCAgY29uc3QgY2hhciAqKTsKIHZvaWQJaWNtcDZfc3RhdHMoY29uc3QgY2hhciAqKTsKIAordm9pZAl0Y3B4cHJvdG9wcihjb25zdCBjaGFyICopOwordm9pZAl1ZHB4cHJvdG9wcihjb25zdCBjaGFyICopOwordm9pZAlsaXN0ZW54cHJvdG9wcihjb25zdCBjaGFyICopOwordm9pZAlpcHhfc3RhdHMoY29uc3QgY2hhciAqKTsKK3ZvaWQJaWNtcHhfc3RhdHMoY29uc3QgY2hhciAqKTsKKwogdm9pZAlwcl9ydGhkcihpbnQpOwogdm9pZAlwcl9lbmNhcGhkcih2b2lkKTsKIHZvaWQJcHJfZmFtaWx5KGludCk7CiB2b2lkCXJ0X3N0YXRzKHZvaWQpOwogCit2b2lkICAgIGdldF9pZm5hbWUoY2hhciAqLCBpbnQpOwogY2hhcgkqcm91dGVuYW1lKGluX2FkZHJfdCk7CiBjaGFyCSpuZXRuYW1lKGluX2FkZHJfdCwgaW5fYWRkcl90KTsKIGNoYXIJKm5zX3ByaW50KHN0cnVjdCBzb2NrYWRkciAqKTsKIHZvaWQJcm91dGVwcih2b2lkKTsKK2ludCAgICAgcm91dGU0cHIoaW50KTsKK2ludCAgICAgcm91dGU2cHIoaW50KTsKK2ludCAgICAgcm91dGV4cHIoaW50KTsKIAogdm9pZAlpbnRwcihpbnQpOwotCit2b2lkCWluZXRwcmludChzdHJ1Y3QgaW5fYWRkciAqLCBpbnQsIGNvbnN0IGNoYXIgKiwgaW50KTsKK3ZvaWQJaW5ldDZwcmludCh1bnNpZ25lZCBjaGFyICosIGludCwgY29uc3QgY2hhciAqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jIGIvYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jCmluZGV4IDk4YTljMGMuLjFkYmE3NGQgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvcm91dGUuYworKysgYi9hcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMKQEAgLTgwLDEzICs4MCwxMyBAQAogI2RlZmluZSBTRVRfQUxMICAweDFmCiAKIHN0cnVjdCByb3V0ZV9lbnRyeSB7Ci0gICAgb2lkICAgICAgICAgICAgIGluc3RhbmNlWzRdOwogICAgIGluX2FkZHJfdCAgICAgICBkZXN0aW5hdGlvbjsKICAgICBpbl9hZGRyX3QgICAgICAgbWFzazsKICAgICBpbl9hZGRyX3QgICAgICAgZ2F0ZXdheTsKICAgICBpbnQgICAgICAgICAgICAgaWZOdW1iZXI7CiAgICAgaW50ICAgICAgICAgICAgIHR5cGU7CiAgICAgaW50ICAgICAgICAgICAgIHByb3RvOworICAgIGludCAgICAgICAgICAgICBhZjsKICAgICBpbnQgICAgICAgICAgICAgc2V0X2JpdHM7CiAgICAgY2hhciAgICAgICAgICAgIGlmbmFtZVs2NF07CiB9OwpAQCAtMTEwLDcgKzExMCw3IEBACiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXI9TlVMTCwgKnZwOwogICAgIGNoYXIgICpjcDsKICAgICAKLSAgICBwcmludGYoIlJvdXRpbmcgdGFibGVzXG4iKTsKKyAgICBwcmludGYoIlJvdXRpbmcgdGFibGVzIChpcFJvdXRlVGFibGUpXG4iKTsKICAgICBwcl9ydGhkcihBRl9JTkVUKTsKIAogI2RlZmluZSBBRERfUlRWQVIoIHggKSBydGNvbF9vaWRbIHJ0Y29sX2xlbi0xIF0gPSB4OyBcCkBAIC0xMzIsNiArMTMyLDEwIEBACiAgICAgICAgIGlmICggc25tcF9vaWRfY29tcGFyZSggcnRjb2xfb2lkLCBydGNvbF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lLCBydGNvbF9sZW4pICE9IDAgKQogICAgICAgICAgICAgYnJlYWs7ICAgIC8qIEVuZCBvZiBUYWJsZSAqLworCWlmICh2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hPQkpFQ1QgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSB8fAorICAgICAgICAgICAgICAgIHZhci0+dHlwZSA9PSBTTk1QX0VORE9GTUlCVklFVykKKwkgICAgYnJlYWs7CiAgICAgICAgIG1lbXNldCggJnJvdXRlLCAwLCBzaXplb2YoIHN0cnVjdCByb3V0ZV9lbnRyeSApKTsKICAgICAgICAgLyogRXh0cmFjdCBpcFJvdXRlRGVzdCBpbmRleCB2YWx1ZSAqLwogICAgICAgICBjcCA9IHRtcEFkZHIuZGF0YTsKQEAgLTE3NCw2ICsxNzgsMTA0IEBACiB9CiAKIAoraW50Cityb3V0ZTRwcihpbnQgYWYpCit7CisgICAgc3RydWN0IHJvdXRlX2VudHJ5ICByb3V0ZSwgKnJwID0gJnJvdXRlOworICAgIG9pZCAgICBydGNvbF9vaWRbXSAgPSB7IDEsMyw2LDEsMiwxLDQsMjQsNCwxLDAgfTsgLyogaXBDaWRyUm91dGVFbnRyeSAqLworICAgIHNpemVfdCBydGNvbF9sZW4gICAgPSBPSURfTEVOR1RIKCBydGNvbF9vaWQgKTsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciA9IE5VTEwsICp2cDsKKyAgICB1bmlvbiB7CisgICAgICAgIGluX2FkZHJfdCBhZGRyOworICAgICAgICB1bnNpZ25lZCBjaGFyIGRhdGFbNF07CisgICAgfSB0bXBBZGRyOworICAgIGludCBwcmludGVkID0gMDsKKyAgICBpbnQgaGRyX2FmID0gQUZfVU5TUEVDOworCisgICAgaWYgKGFmICE9IEFGX1VOU1BFQyAmJiBhZiAhPSBBRl9JTkVUKQorICAgICAgICByZXR1cm4gMDsKKworI2RlZmluZSBBRERfUlRWQVIoIHggKSBydGNvbF9vaWRbIHJ0Y29sX2xlbi0xIF0gPSB4OyBcCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZhciwgcnRjb2xfb2lkLCBydGNvbF9sZW4sIEFTTl9OVUxMLCBOVUxMLCAgMCkKKyAgICBBRERfUlRWQVIoIDUgKTsgICAgICAgICAgICAgICAgIC8qIGlwQ2lkclJvdXRlSWZJbmRleCAqLworICAgIEFERF9SVFZBUiggNiApOyAgICAgICAgICAgICAgICAgLyogaXBDaWRyUm91dGVUeXBlICAgICovCisgICAgQUREX1JUVkFSKCA3ICk7ICAgICAgICAgICAgICAgICAvKiBpcENpZHJSb3V0ZVByb3RvICAgKi8KKyN1bmRlZiBBRERfUlRWQVIKKworICAgIC8qCisgICAgICogTm93IHdhbGsgdGhlIGlwQ2lkclJvdXRlVGFibGUsIHJlcG9ydGluZyB0aGUgdmFyaW91cyByb3V0ZSBlbnRyaWVzCisgICAgICovCisgICAgd2hpbGUgKCAxICkgeworICAgICAgICBvaWQgKm9wOworICAgICAgICB1bnNpZ25lZCBjaGFyICpjcDsKKworICAgICAgICBpZiAobmV0c25tcF9xdWVyeV9nZXRuZXh0KCB2YXIsIHNzICkgIT0gU05NUF9FUlJfTk9FUlJPUikKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBydGNvbF9vaWRbIHJ0Y29sX2xlbi0xIF0gPSA1OyAgICAgICAgLyogaXBSb3V0ZUlmSW5kZXggKi8KKyAgICAgICAgaWYgKCBzbm1wX29pZF9jb21wYXJlKCBydGNvbF9vaWQsIHJ0Y29sX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPm5hbWUsIHJ0Y29sX2xlbikgIT0gMCApCisgICAgICAgICAgICBicmVhazsgICAgLyogRW5kIG9mIFRhYmxlICovCisgICAgICAgIGlmICh2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hPQkpFQ1QgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9OT1NVQ0hJTlNUQU5DRSB8fAorICAgICAgICAgICAgICAgIHZhci0+dHlwZSA9PSBTTk1QX0VORE9GTUlCVklFVykKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBtZW1zZXQoICZyb3V0ZSwgMCwgc2l6ZW9mKCBzdHJ1Y3Qgcm91dGVfZW50cnkgKSk7CisJcnAtPmFmID0gQUZfSU5FVDsKKwlvcCA9IHZhci0+bmFtZStydGNvbF9sZW47CisgICAgICAgIGNwID0gdG1wQWRkci5kYXRhOworICAgICAgICBjcFswXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgY3BbMV0gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIGNwWzJdID0gKm9wKysgJiAweGZmOworICAgICAgICBjcFszXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgcnAtPmRlc3RpbmF0aW9uID0gdG1wQWRkci5hZGRyOworICAgICAgICBjcCA9IHRtcEFkZHIuZGF0YTsKKyAgICAgICAgY3BbMF0gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIGNwWzFdID0gKm9wKysgJiAweGZmOworICAgICAgICBjcFsyXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgY3BbM10gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIHJwLT5tYXNrID0gdG1wQWRkci5hZGRyOworCW9wKys7IC8qIGlwQ2lkclJvdXRlVG9zICovCisgICAgICAgIGNwID0gdG1wQWRkci5kYXRhOworICAgICAgICBjcFswXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgY3BbMV0gPSAqb3ArKyAmIDB4ZmY7CisgICAgICAgIGNwWzJdID0gKm9wKysgJiAweGZmOworICAgICAgICBjcFszXSA9ICpvcCsrICYgMHhmZjsKKyAgICAgICAgcnAtPmdhdGV3YXkgPSB0bXBBZGRyLmFkZHI7CisJcnAtPnNldF9iaXRzID0gU0VUX01BU0sgfCBTRVRfR1dBWTsKKworICAgICAgICBmb3IgKCB2cD12YXI7IHZwOyB2cD12cC0+bmV4dF92YXJpYWJsZSApIHsKKyAgICAgICAgICAgIHN3aXRjaCAoIHZwLT5uYW1lWyBydGNvbF9sZW4gLSAxIF0gKSB7CisgICAgICAgICAgICBjYXNlIDU6ICAgICAvKiBpcENpZHJSb3V0ZUlmSW5kZXggKi8KKyAgICAgICAgICAgICAgICBycC0+aWZOdW1iZXIgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX0lGTk87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDY6ICAgICAvKiBpcENpZHJSb3V0ZVR5cGUgICAgKi8KKyAgICAgICAgICAgICAgICBycC0+dHlwZSAgICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX1RZUEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDc6ICAgICAvKiBpcENpZHJSb3V0ZVByb3RvICAgKi8KKyAgICAgICAgICAgICAgICBycC0+cHJvdG8gICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX1BSVE87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJwLT5zZXRfYml0cyAhPSBTRVRfQUxMKSB7CisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBJbmNvbXBsZXRlIHF1ZXJ5ICovCisgICAgICAgIH0KKworICAgICAgICBpZiAoaGRyX2FmICE9IHJwLT5hZikgeworICAgICAgICAgICAgaWYgKGhkcl9hZiAhPSBBRl9VTlNQRUMpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAgICAgaGRyX2FmID0gcnAtPmFmOworCSAgICBwcmludGYoIlJvdXRpbmcgdGFibGVzIChpcENpZHJSb3V0ZVRhYmxlKVxuIik7CisgICAgICAgICAgICBwcl9ydGhkcihoZHJfYWYpOworICAgICAgICB9CisgICAgICAgIHBfcnRub2RlKCBycCApOworICAgICAgICBwcmludGVkKys7CisgICAgfQorICAgIHJldHVybiBwcmludGVkOworfQorCiAKIHN0cnVjdCBpZmxpc3QgewogICAgIGludCAgICAgICAgICAgICBpbmRleDsKQEAgLTE4Niw2ICsyODgsOCBAQAogewogICAgIG9pZCAgICBpZmRlc2NyX29pZFtdICA9IHsgMSwzLDYsMSwyLDEsMiwyLDEsMiwwIH07CiAgICAgc2l6ZV90IGlmZGVzY3JfbGVuICAgID0gT0lEX0xFTkdUSCggaWZkZXNjcl9vaWQgKTsKKyAgICBvaWQgICAgaWZ4Y29sX29pZFtdID0geyAxLDMsNiwxLDIsMSwzMSwxLDEsMSwxLDAgfTsKKyAgICBzaXplX3QgaWZ4Y29sX2xlbiAgID0gT0lEX0xFTkdUSCggaWZ4Y29sX29pZCApOwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyID0gTlVMTDsKICAgICBzdHJ1Y3QgaWZsaXN0ICAgICAgICAgKmlwOwogCkBAIC0yMDQsNiArMzA4LDE4IEBACiAgICAgSWZsaXN0ID0gaXA7CiAgICAgaXAtPmluZGV4ID0gaWZJbmRleDsKIAorICAgIGlmeGNvbF9vaWRbIGlmeGNvbF9sZW4tMSBdID0gaWZJbmRleDsKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmFyLCBpZnhjb2xfb2lkLCBpZnhjb2xfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9OVUxMLCBOVUxMLCAgMCk7CisgICAgaWYgKG5ldHNubXBfcXVlcnlfZ2V0KCB2YXIsIHNzICkgPT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICBpZiAodmFyLT52YWxfbGVuID49IHNpemVvZihpcC0+bmFtZSkpCisgICAgICAgICAgICB2YXItPnZhbF9sZW4gID0gc2l6ZW9mKGlwLT5uYW1lKSAtIDE7CisgICAgICAgIG1lbW1vdmUoaXAtPm5hbWUsIHZhci0+dmFsLnN0cmluZywgdmFyLT52YWxfbGVuKTsKKyAgICAgICAgaXAtPm5hbWVbdmFyLT52YWxfbGVuXSA9ICdcMCc7CisJc3RyY3B5KG5hbWUsIGlwLT5uYW1lKTsKKwlyZXR1cm47CisgICAgfQorCiAgICAgaWZkZXNjcl9vaWRbIGlmZGVzY3JfbGVuLTEgXSA9IGlmSW5kZXg7CiAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZhciwgaWZkZXNjcl9vaWQsIGlmZGVzY3JfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9OVUxMLCBOVUxMLCAgMCk7CkBAIC0yMTgsNTAgKzMzNCw2IEBACiAgICAgc3RyY3B5KG5hbWUsIGlwLT5uYW1lKTsKIH0KIAotLyoKLSAqIFByaW50IGFkZHJlc3MgZmFtaWx5IGhlYWRlciBiZWZvcmUgYSBzZWN0aW9uIG9mIHRoZSByb3V0aW5nIHRhYmxlLgotICovCi12b2lkCi1wcl9mYW1pbHkoaW50IGFmKQotewotCWNvbnN0IGNoYXIgKmFmbmFtZTsKLQotCXN3aXRjaCAoYWYpIHsKLQljYXNlIEFGX0lORVQ6Ci0JCWFmbmFtZSA9ICJJbnRlcm5ldCI7Ci0JCWJyZWFrOwotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKLQljYXNlIEFGX0lORVQ2OgotCQlhZm5hbWUgPSAiSW50ZXJuZXQ2IjsKLQkJYnJlYWs7Ci0jZW5kaWYKLSAgICAvKgotCWNhc2UgQUZfTlM6Ci0JCWFmbmFtZSA9ICJYTlMiOwotCQlicmVhazsKLQljYXNlIEFGX0lQWDoKLQkJYWZuYW1lID0gIklQWCI7Ci0JCWJyZWFrOwotCWNhc2UgQUZfQ0NJVFQ6Ci0JCWFmbmFtZSA9ICJYLjI1IjsKLQkJYnJlYWs7Ci0JY2FzZSBQRl9LRVk6Ci0JCWFmbmFtZSA9ICJFbmNhcCI7Ci0JCWJyZWFrOwotCWNhc2UgQUZfQVBQTEVUQUxLOgotCQlhZm5hbWUgPSAiQXBwbGVUYWxrIjsKLQkJYnJlYWs7Ci0gICAgICovCi0JZGVmYXVsdDoKLQkJYWZuYW1lID0gTlVMTDsKLQkJYnJlYWs7Ci0JfQotCWlmIChhZm5hbWUpCi0JCXByaW50ZigiXG4lczpcbiIsIGFmbmFtZSk7Ci0JZWxzZQotCQlwcmludGYoIlxuUHJvdG9jb2wgRmFtaWx5ICVkOlxuIiwgYWYpOwotfQotCiAvKiBjb2x1bW4gd2lkdGhzOyBlYWNoIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZSAqLwogI2lmbmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CiAjZGVmaW5lCVdJRF9EU1QoYWYpCTI2CS8qIHdpZHRoIG9mIGRlc3RpbmF0aW9uIGNvbHVtbiAqLwpAQCAtMzIzLDE1ICszOTUsMTUgQEAKIAogCWlmIChmaXJzdCkgewogCQlmaXJzdCA9IDA7Ci0JCWlmIChnZXRob3N0bmFtZShkb21haW4sIHNpemVvZiBkb21haW4pID09IDAgJiYKLQkJICAgIChjcCA9IHN0cmNocihkb21haW4sICcuJykpKQorCQlpZiAoZ2V0aG9zdG5hbWUobGluZSwgc2l6ZW9mIGxpbmUpID09IDAgJiYKKwkJICAgIChjcCA9IHN0cmNocihsaW5lLCAnLicpKSkKIAkJCSh2b2lkKSBzdHJsY3B5KGRvbWFpbiwgY3AgKyAxLCBzaXplb2YgZG9tYWluKTsKIAkJZWxzZQogCQkJZG9tYWluWzBdID0gJ1wwJzsKIAl9CiAJY3AgPSBOVUxMOwogCWlmICghbmZsYWcpIHsKLQkJaHAgPSBnZXRob3N0YnlhZGRyKChjaGFyICopJmluLCBzaXplb2YgKHN0cnVjdCBpbl9hZGRyKSwKKwkJaHAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoKGNoYXIgKikmaW4sIHNpemVvZiAoc3RydWN0IGluX2FkZHIpLAogCQkgICAgQUZfSU5FVCk7CiAJCWlmIChocCkgewogCQkJaWYgKChjcCA9IHN0cmNocihocC0+aF9uYW1lLCAnLicpKSAmJgpAQCAtNDk5LDcgKzU3MSw2IEBACiAgICAgc3RhdGljIGNoYXIgZmxhZ19idWZbMTBdOwogICAgIGNoYXIgICpjcCA9IGZsYWdfYnVmOwogCi0gICAgbWVtc2V0KCBmbGFnX2J1ZiwgMCwgc2l6ZW9mKGZsYWdfYnVmKSk7CiAgICAgKmNwKysgPSAnPCc7CiAgICAgKmNwKysgPSAnVSc7ICAgLyogcm91dGUgaXMgaW4gdXNlICovCiAgICAgaWYgKHJwLT5tYXNrICA9PSAweGZmZmZmZmZmKQpAQCAtNTA5LDYgKzU4MCw3IEBACiAgICAgaWYgKHJwLT50eXBlICA9PSA0KQogICAgICAgICAqY3ArKyA9ICdHJzsgICAvKiByZW1vdGUgZGVzdGluYXRpb24vbmV0ICovCiAgICAgKmNwKysgPSAnPic7CisgICAgKmNwID0gMDsKICAgICByZXR1cm4gZmxhZ19idWY7CiB9CiAKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvcm91dGV4LmMgYi9hcHBzL3NubXBuZXRzdGF0L3JvdXRleC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMDZkMjUKLS0tIC9kZXYvbnVsbAorKysgYi9hcHBzL3NubXBuZXRzdGF0L3JvdXRleC5jCkBAIC0wLDAgKzEsNTU4IEBACisvKiAgICAgICAgJE9wZW5CU0Q6IHJvdXRlLmMsdiAxLjY2IDIwMDQvMTEvMTcgMDE6NDc6MjAgaXRvanVuIEV4cCAkICAgICAgICAqLworLyogICAgICAgICROZXRCU0Q6IHJvdXRlLmMsdiAxLjE1IDE5OTYvMDUvMDcgMDI6NTU6MDYgdGhvcnBlaiBFeHAgJCAgICAgICAgKi8KKworLyoKKyAqIENvcHlyaWdodCAoYykgMTk4MywgMTk4OCwgMTk5MworICogICAgICAgIFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgUkVHRU5UUyBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZkZWYgIElOSEVSSVRFRF9DT0RFCisjaWZuZGVmIGxpbnQKKyNpZiAwCitzdGF0aWMgY2hhciBzY2NzaWRbXSA9ICJmcm9tOiBAKCMpcm91dGUuYyAgICAgICAgOC4zIChCZXJrZWxleSkgMy85Lzk0IjsKKyNlbHNlCitzdGF0aWMgY2hhciAqcmNzaWQgPSAiJE9wZW5CU0Q6IHJvdXRlLmMsdiAxLjY2IDIwMDQvMTEvMTcgMDE6NDc6MjAgaXRvanVuIEV4cCAkIjsKKyNlbmRpZgorI2VuZGlmIC8qIG5vdCBsaW50ICovCisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUREJfSAorI2luY2x1ZGUgPG5ldGRiLmg+CisjZW5kaWYKKworI2lmbmRlZiBJTkVUCisjZGVmaW5lIElORVQKKyNlbmRpZgorCisjaW5jbHVkZSAibWFpbi5oIgorI2luY2x1ZGUgIm5ldHN0YXQuaCIKKyNpZiBIQVZFX1dJTlNPQ0tfSAorI2luY2x1ZGUgIndpbnN0dWIuaCIKKyNlbmRpZgorCisvKiBpbmV0Q2lkclJvdXRlVGFibGUgKi8KKyNkZWZpbmUgU0VUX0lGTk8gMHgwMQorI2RlZmluZSBTRVRfVFlQRSAweDAyCisjZGVmaW5lIFNFVF9QUlRPIDB4MDQKKyNkZWZpbmUgU0VUX0FHRSAgMHgwOAorI2RlZmluZSBTRVRfQVMgICAweDEwCisjZGVmaW5lIFNFVF9NRVQxIDB4MjAKKyNkZWZpbmUgU0VUX0FMTCAgMHgzZgorCisvKiBpcDZSb3V0ZVRhYmxlICovCisjZGVmaW5lIFNFVF9IT1AgICAgIDB4NDAKKyNkZWZpbmUgU0VUX0lOVkFMSUQgMHg4MAorI2RlZmluZSBTRVRfQUxMNiAgICAweDY3CisvKiBub3QgaW52YWxpZCwgYW5kIG9ubHkgdGhlIGNvbHVtbnMgdGhhdCB3ZSBmZXRjaCAqLworCitzdHJ1Y3Qgcm91dGVfZW50cnkgeworICAgIGludCAgICAgICAgICAgICBhZjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBkc3Q7CisgICAgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgaG9wOworICAgIGludCAgICAgICAgICAgICBtYXNrOworICAgIGludCAgICAgICAgICAgICBpZk51bWJlcjsKKyAgICBpbnQgICAgICAgICAgICAgdHlwZTsKKyAgICBpbnQgICAgICAgICAgICAgcHJvdG87CisgICAgaW50ICAgICAgICAgICAgIGFnZTsKKyAgICBpbnQgICAgICAgICAgICAgYXM7CisgICAgaW50ICAgICAgICAgICAgIG1ldHJpYzE7CisgICAgaW50ICAgICAgICAgICAgIHNldF9iaXRzOworICAgIGNoYXIgICAgICAgICAgICBpZm5hbWVbNjRdOworfTsKKworCitzdGF0aWMgdm9pZCBwcl9ydHhoZHIoaW50IGFmLCBjb25zdCBjaGFyICp0YWJsZSk7CitzdGF0aWMgdm9pZCBwX3J0bm9kZXgoIHN0cnVjdCByb3V0ZV9lbnRyeSAqcnAgKTsKKworLyoKKyAqIFByaW50IHJvdXRpbmcgdGFibGVzLgorICovCitpbnQKK3JvdXRleHByKGludCBhZikKK3sKKyAgICBzdHJ1Y3Qgcm91dGVfZW50cnkgIHJvdXRlLCAqcnAgPSAmcm91dGU7CisgICAgb2lkICAgIHJ0Y29sX29pZFtdICA9IHsgMSwzLDYsMSwyLDEsNCwyNCw3LDEsMCB9OyAvKiBpbmV0Q2lkclJvdXRlRW50cnkgKi8KKyAgICBzaXplX3QgcnRjb2xfbGVuICAgID0gT0lEX0xFTkdUSCggcnRjb2xfb2lkICk7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIgPSBOVUxMLCAqdnA7CisgICAgaW50IGhkcl9hZiA9IEFGX1VOU1BFQzsKKyAgICBpbnQgcHJpbnRlZCA9IDA7CisKKyNkZWZpbmUgQUREX1JUVkFSKCB4ICkgcnRjb2xfb2lkWyBydGNvbF9sZW4tMSBdID0geDsgXAorICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHJ0Y29sX29pZCwgcnRjb2xfbGVuLCBBU05fTlVMTCwgTlVMTCwgIDApCisgICAgQUREX1JUVkFSKCA3ICk7ICAgICAgICAgICAgICAgICAvKiBpbmV0Q2lkclJvdXRlSWZJbmRleCAqLworICAgIEFERF9SVFZBUiggOCApOyAgICAgICAgICAgICAgICAgLyogaW5ldENpZHJSb3V0ZVR5cGUgICAgKi8KKyAgICBBRERfUlRWQVIoIDkgKTsgICAgICAgICAgICAgICAgIC8qIGluZXRDaWRyUm91dGVQcm90byAgICovCisgICAgQUREX1JUVkFSKCAxMCApOyAgICAgICAgICAgICAgICAvKiBpbmV0Q2lkclJvdXRlQWdlICAgKi8KKyAgICBBRERfUlRWQVIoIDExICk7ICAgICAgICAgICAgICAgIC8qIGluZXRDaWRyUm91dGVOZXh0SG9wQVMgICAqLworICAgIEFERF9SVFZBUiggMTIgKTsgICAgICAgICAgICAgICAgLyogaW5ldENpZHJSb3V0ZU1ldHJpYzEgICAqLworI3VuZGVmIEFERF9SVFZBUgorCisgICAgLyoKKyAgICAgKiBOb3cgd2FsayB0aGUgaW5ldENpZHJSb3V0ZVRhYmxlLCByZXBvcnRpbmcgdGhlIHZhcmlvdXMgcm91dGUgZW50cmllcworICAgICAqLworICAgIHdoaWxlICggMSApIHsKKyAgICAgICAgb2lkICpvcDsKKyAgICAgICAgdW5zaWduZWQgY2hhciAqY3A7CisgICAgICAgIGludCBpOworCisgICAgICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldG5leHQoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJ0Y29sX29pZFsgcnRjb2xfbGVuLTEgXSA9IDc7ICAgICAgICAvKiBpZlJvdXRlSWZJbmRleCAqLworICAgICAgICBpZiAoIHNubXBfb2lkX2NvbXBhcmUoIHJ0Y29sX29pZCwgcnRjb2xfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+bmFtZSwgcnRjb2xfbGVuKSAhPSAwICkKKyAgICAgICAgICAgIGJyZWFrOyAgICAvKiBFbmQgb2YgVGFibGUgKi8KKyAgICAgICAgaWYgKHZhci0+dHlwZSA9PSBTTk1QX05PU1VDSE9CSkVDVCB8fAorICAgICAgICAgICAgICAgIHZhci0+dHlwZSA9PSBTTk1QX05PU1VDSElOU1RBTkNFIHx8CisgICAgICAgICAgICAgICAgdmFyLT50eXBlID09IFNOTVBfRU5ET0ZNSUJWSUVXKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIG1lbXNldCggJnJvdXRlLCAwLCBzaXplb2YoIHN0cnVjdCByb3V0ZV9lbnRyeSApKTsKKyAgICAgICAgLyogRXh0cmFjdCBpbmV0Q2lkclJvdXRlRGVzdCwgaW5ldENpZHJSb3V0ZVBmeExlbiwKKyAgICAgICAgICogaW5ldENpZHJSb3V0ZU5leHRIb3AgZnJvbSBpbmRleCAqLworICAgICAgICBzd2l0Y2ggKHZhci0+bmFtZVtydGNvbF9sZW5dKSB7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIHsgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikmcm91dGUuZHN0OworICAgICAgICAgICAgICAgIGludCBsZW47CisgICAgICAgICAgICAgICAgcm91dGUuYWYgPSBBRl9JTkVUOworICAgICAgICAgICAgICAgIHNpbi0+c2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICAgICAgICAgICAgb3AgPSB2YXItPm5hbWUrcnRjb2xfbGVuKzE7CisgICAgICAgICAgICAgICAgbGVuID0gKm9wKys7CisgICAgICAgICAgICAgICAgY3AgPSAodW5zaWduZWQgY2hhciAqKSZzaW4tPnNpbl9hZGRyOworICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgKmNwKysgPSAqb3ArKzsKKyAgICAgICAgICAgICAgICByb3V0ZS5tYXNrID0gKm9wKys7CisgICAgICAgICAgICAgICAgb3AgKz0gKm9wKzE7CisgICAgICAgICAgICAgICAgb3ArKzsgLyogYWRkclR5cGUgKi8KKyAgICAgICAgICAgICAgICBvcCsrOyAvKiBhZGRyTGVuICovCisgICAgICAgICAgICAgICAgc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZyb3V0ZS5ob3A7CisgICAgICAgICAgICAgICAgc2luLT5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgICAgICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbi0+c2luX2FkZHI7CisgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSAqY3ArKyA9ICpvcCsrOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICB7ICAgc3RydWN0IHNvY2thZGRyX2luNiAqc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnJvdXRlLmRzdDsKKyAgICAgICAgICAgICAgICBpbnQgbGVuOworICAgICAgICAgICAgICAgIHJvdXRlLmFmID0gQUZfSU5FVDY7CisgICAgICAgICAgICAgICAgc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICAgICAgICAgICAgICBvcCA9IHZhci0+bmFtZStydGNvbF9sZW4rMTsKKyAgICAgICAgICAgICAgICBsZW4gPSAqb3ArKzsKKyAgICAgICAgICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbjYtPnNpbjZfYWRkcjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspICpjcCsrID0gKm9wKys7CisgICAgICAgICAgICAgICAgcm91dGUubWFzayA9ICpvcCsrOworICAgICAgICAgICAgICAgIG9wICs9ICpvcCsxOworICAgICAgICAgICAgICAgIG9wKys7IC8qIGFkZHJUeXBlICovCisgICAgICAgICAgICAgICAgb3ArKzsgLyogYWRkckxlbiAqLworICAgICAgICAgICAgICAgIHNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZyb3V0ZS5ob3A7CisgICAgICAgICAgICAgICAgc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICAgICAgICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbjYtPnNpbjZfYWRkcjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspICpjcCsrID0gKm9wKys7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCBhZGRyZXNzIHR5cGU6ICVkXG4iLCAoaW50KXZhci0+bmFtZVtydGNvbF9sZW5dKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgIH0KKyAgICAgICAgLyogRXh0cmFjdCBpcFJvdXRlRGVzdCBpbmRleCB2YWx1ZSAqLworCisgICAgICAgIGZvciAoIHZwPXZhcjsgdnA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlICkgeworICAgICAgICAgICAgc3dpdGNoICggdnAtPm5hbWVbIHJ0Y29sX2xlbiAtIDEgXSApIHsKKyAgICAgICAgICAgIGNhc2UgNzogICAgIC8qIGluZXRDaWRyUm91dGVJZkluZGV4ICovCisgICAgICAgICAgICAgICAgcnAtPmlmTnVtYmVyICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9JRk5POworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA4OiAgICAgLyogaW5ldENpZHJSb3V0ZVR5cGUgICAgKi8KKyAgICAgICAgICAgICAgICBycC0+dHlwZSAgICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX1RZUEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDk6ICAgICAvKiBpbmV0Q2lkclJvdXRlUHJvdG8gICAqLworICAgICAgICAgICAgICAgIHJwLT5wcm90byAgICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIHJwLT5zZXRfYml0cyB8PSBTRVRfUFJUTzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTA6ICAgICAvKiBpbmV0Q2lkclJvdXRlQWdlICAgKi8KKyAgICAgICAgICAgICAgICBycC0+YWdlICAgICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9BR0U7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDExOiAgICAgLyogaW5ldENpZHJSb3V0ZU5leHRIb3BBUyAgICovCisgICAgICAgICAgICAgICAgcnAtPmFzICAgICA9ICp2cC0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9BUzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTI6ICAgICAvKiBpbmV0Q2lkclJvdXRlTWV0cmljMSAgICovCisgICAgICAgICAgICAgICAgcnAtPm1ldHJpYzEgICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX01FVDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJwLT5zZXRfYml0cyAhPSBTRVRfQUxMKSB7CisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBJbmNvbXBsZXRlIHF1ZXJ5ICovCisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWYgKGFmICE9IEFGX1VOU1BFQyAmJiBycC0+YWYgIT0gYWYpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoaGRyX2FmICE9IHJwLT5hZikgeworICAgICAgICAgICAgaWYgKGhkcl9hZiAhPSBBRl9VTlNQRUMpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAgICAgaGRyX2FmID0gcnAtPmFmOworICAgICAgICAgICAgcHJfcnR4aGRyKGhkcl9hZiwgImluZXRDaWRyUm91dGVUYWJsZSIpOworICAgICAgICB9CisgICAgICAgIHBfcnRub2RleCggcnAgKTsKKyAgICAgICAgcHJpbnRlZCsrOworICAgIH0KKyAgICByZXR1cm4gcHJpbnRlZDsKK30KKworLyoKKyAqIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGZvciB0aGUgSVBWNi1NSUIKKyAqLworaW50Cityb3V0ZTZwcihpbnQgYWYpCit7CisgICAgc3RydWN0IHJvdXRlX2VudHJ5ICByb3V0ZSwgKnJwID0gJnJvdXRlOworICAgIG9pZCAgICBydGNvbF9vaWRbXSAgPSB7IDEsMyw2LDEsMiwxLDU1LDEsMTEsMSwwIH07IC8qIGlwdjZSb3V0ZUVudHJ5ICovCisgICAgc2l6ZV90IHJ0Y29sX2xlbiAgICA9IE9JRF9MRU5HVEgoIHJ0Y29sX29pZCApOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyID0gTlVMTCwgKnZwOworICAgIGludCBwcmludGVkID0gMDsKKyAgICBpbnQgaGRyX2FmID0gQUZfVU5TUEVDOworICAgIGludCBpOworCisgICAgaWYgKGFmICE9IEFGX1VOU1BFQyAmJiBhZiAhPSBBRl9JTkVUNikKKyAgICAgICAgcmV0dXJuIDA7CisKKyNkZWZpbmUgQUREX1JUVkFSKCB4ICkgcnRjb2xfb2lkWyBydGNvbF9sZW4tMSBdID0geDsgXAorICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoICZ2YXIsIHJ0Y29sX29pZCwgcnRjb2xfbGVuLCBBU05fTlVMTCwgTlVMTCwgIDApCisgICAgQUREX1JUVkFSKCA0ICk7ICAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVJZkluZGV4ICovCisgICAgQUREX1JUVkFSKCA1ICk7ICAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVOZXh0SG9wICovCisgICAgQUREX1JUVkFSKCA2ICk7ICAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVUeXBlICAgICovCisgICAgQUREX1JUVkFSKCA3ICk7ICAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVQcm90byAgICovCisgICAgQUREX1JUVkFSKCAxMSApOyAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVNZXRyaWMgICovCisgICAgQUREX1JUVkFSKCAxNCApOyAgICAgICAgICAgICAgICAvKiBpcHY2Um91dGVWYWxpZCAgICovCisjdW5kZWYgQUREX1JUVkFSCisKKyAgICAvKgorICAgICAqIE5vdyB3YWxrIHRoZSBpcHY2Um91dGVUYWJsZSwgcmVwb3J0aW5nIHRoZSB2YXJpb3VzIHJvdXRlIGVudHJpZXMKKyAgICAgKi8KKyAgICB3aGlsZSAoIDEgKSB7CisgICAgICAgIG9pZCAqb3A7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgKmNwLCAqY3AxOworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikmcm91dGUuZHN0OworCisgICAgICAgIGlmIChuZXRzbm1wX3F1ZXJ5X2dldG5leHQoIHZhciwgc3MgKSAhPSBTTk1QX0VSUl9OT0VSUk9SKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJ0Y29sX29pZFsgcnRjb2xfbGVuLTEgXSA9IDQ7ICAgICAgICAvKiBpcHY2Um91dGVJZkluZGV4ICovCisgICAgICAgIGlmICggc25tcF9vaWRfY29tcGFyZSggcnRjb2xfb2lkLCBydGNvbF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lLCBydGNvbF9sZW4pICE9IDAgKQorICAgICAgICAgICAgYnJlYWs7ICAgIC8qIEVuZCBvZiBUYWJsZSAqLworICAgICAgICBpZiAodmFyLT50eXBlID09IFNOTVBfTk9TVUNIT0JKRUNUIHx8CisgICAgICAgICAgICAgICAgdmFyLT50eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UgfHwKKyAgICAgICAgICAgICAgICB2YXItPnR5cGUgPT0gU05NUF9FTkRPRk1JQlZJRVcpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgbWVtc2V0KCAmcm91dGUsIDAsIHNpemVvZiggc3RydWN0IHJvdXRlX2VudHJ5ICkpOworICAgICAgICBycC0+YWYgPSBBRl9JTkVUNjsKKyAgICAgICAgc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICAgICAgb3AgPSB2YXItPm5hbWUrcnRjb2xfbGVuOworICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbjYtPnNpbjZfYWRkcjsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspICpjcCsrID0gKm9wKys7CisgICAgICAgIHJvdXRlLm1hc2sgPSAqb3ArKzsKKworICAgICAgICBmb3IgKCB2cD12YXI7IHZwOyB2cD12cC0+bmV4dF92YXJpYWJsZSApIHsKKyAgICAgICAgICAgIHN3aXRjaCAoIHZwLT5uYW1lWyBydGNvbF9sZW4gLSAxIF0gKSB7CisgICAgICAgICAgICBjYXNlIDQ6ICAgICAvKiBpcHY2Um91dGVJZkluZGV4ICAqLworICAgICAgICAgICAgICAgIHJwLT5pZk51bWJlciAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogVGhpcyBpcywgdGVjaG5pY2FsbHksIGFuIElwdjZJZkluZGV4LCB3aGljaAorICAgICAgICAgICAgICAgICAqIGNvdWxkIG1heWJlIGJlIGRpZmZlcmVudCB0aGFuIHRoZSBJZkluZGV4CisgICAgICAgICAgICAgICAgICogZm9yIHRoZSBzYW1lIGludGVyZmFjZS4gIFdlIGlnbm9yZSB0aGlzCisgICAgICAgICAgICAgICAgICogcG9zc2liaWxpdHkgZm9yIG5vdywgaW4gdGhlIGhvcGVzIHRoYXQKKyAgICAgICAgICAgICAgICAgKiBub2JvZHkgYWN0dWFsbHkgYWxsb2NhdGVzIHRoZXNlIG51bWJlcnMKKyAgICAgICAgICAgICAgICAgKiBkaWZmZXJlbnRseS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX0lGTk87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDU6ICAgICAvKiBpcHY2Um91dGVOZXh0SG9wICAqLworICAgICAgICAgICAgICAgIGNwMSA9ICh1bnNpZ25lZCBjaGFyICopdnAtPnZhbC5zdHJpbmc7CisgICAgICAgICAgICAgICAgc2luNiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW42ICopJnJwLT5ob3A7CisgICAgICAgICAgICAgICAgc2luNi0+c2luNl9mYW1pbHkgPSBBRl9JTkVUNjsKKyAgICAgICAgICAgICAgICBjcCA9ICh1bnNpZ25lZCBjaGFyICopJnNpbjYtPnNpbjZfYWRkcjsKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykgKmNwKysgPSAqY3AxKys7CisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9IT1A7CisgICAgICAgICAgICBjYXNlIDY6ICAgICAvKiBpcHY2Um91dGVUeXBlICAgICAqLworICAgICAgICAgICAgICAgIHJwLT50eXBlICAgICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIC8qIFRoaXMgZW51bSBtYXBzIHRvIHNpbWlsYXIgdmFsdWVzIGluIGluZXRDaWRyUm91dGVUeXBlICovCisgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9UWVBFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSA3OiAgICAgLyogaXB2NlJvdXRlUHJvdG9jb2wgKi8KKyAgICAgICAgICAgICAgICBycC0+cHJvdG8gICAgID0gKnZwLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICAvKiBUT0RPOiB0aGlzIGRvZXMgbm90IG1hcCBkaXJlY3RseSB0byB0aGUKKyAgICAgICAgICAgICAgICAgKiBpbmV0Q2lkclJvdXRlUHJvdG9jb2wgdmFsdWVzLiAgSWYgd2UgdXNlCisgICAgICAgICAgICAgICAgICogcnAtPnByb3RvIG1vcmUsIHdlIHdpbGwgaGF2ZSB0byBtYW5hZ2UgdGhpcy4gKi8KKyAgICAgICAgICAgICAgICBycC0+c2V0X2JpdHMgfD0gU0VUX1BSVE87CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDExOiAgICAvKiBpcHY2Um91dGVNZXRyaWMgICAqLworICAgICAgICAgICAgICAgIHJwLT5tZXRyaWMxICAgPSAqdnAtPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIHJwLT5zZXRfYml0cyB8PSBTRVRfTUVUMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgMTQ6ICAgIC8qIGlwdjZSb3V0ZVZhbGlkICAgICovCisgICAgICAgICAgICAgICAgaWYgKCp2cC0+dmFsLmludGVnZXIgPT0gMikKKyAgICAgICAgICAgICAgICAgICAgcnAtPnNldF9iaXRzIHw9IFNFVF9JTlZBTElEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChycC0+c2V0X2JpdHMgIT0gU0VUX0FMTDYpIHsKKyAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIEluY29tcGxldGUgcXVlcnkgKi8KKyAgICAgICAgfQorICAgIAorICAgICAgICBpZiAoaGRyX2FmICE9IHJwLT5hZikgeworICAgICAgICAgICAgaWYgKGhkcl9hZiAhPSBBRl9VTlNQRUMpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJcbiIpOworICAgICAgICAgICAgaGRyX2FmID0gcnAtPmFmOworICAgICAgICAgICAgcHJfcnR4aGRyKEFGX0lORVQ2LCAiaXA2Um91dGVUYWJsZSIpOworICAgICAgICB9CisgICAgICAgIHBfcnRub2RleCggcnAgKTsKKyAgICAgICAgcHJpbnRlZCsrOworICAgIH0KKyAgICByZXR1cm4gcHJpbnRlZDsKK30KKworCisvKiBjb2x1bW4gd2lkdGhzOyBlYWNoIGZvbGxvd2VkIGJ5IG9uZSBzcGFjZSAqLworI2lmbmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisjZGVmaW5lICAgICAgICBXSURfRFNUKGFmKSAgICAgICAgMjYgICAgICAgIC8qIHdpZHRoIG9mIGRlc3RpbmF0aW9uIGNvbHVtbiAqLworI2RlZmluZSAgICAgICAgV0lEX0dXKGFmKSAgICAgICAgMTggICAgICAgIC8qIHdpZHRoIG9mIGdhdGV3YXkgY29sdW1uICovCisjZWxzZQorLyogd2lkdGggb2YgZGVzdGluYXRpb24vZ2F0ZXdheSBjb2x1bW4gKi8KKy8qIHN0cmxlbigiZmU4MDo6YWFhYTpiYmJiOmNjY2M6ZGRkZEBnaWYwIikgPT0gMzAsIHN0cmxlbigiLzEyOCIpID09IDQgKi8KKyNkZWZpbmUgICAgICAgIFdJRF9EU1QoYWYpICAgICAgICAoKGFmKSA9PSBBRl9JTkVUNiA/IChuZmxhZyA/IDM0IDogMjYpIDogMjYpCisjZGVmaW5lICAgICAgICBXSURfR1coYWYpICAgICAgICAoKGFmKSA9PSBBRl9JTkVUNiA/IChuZmxhZyA/IDM5IDogMjYpIDogMjYpCisjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLworCisvKgorICogUHJpbnQgaGVhZGVyIGZvciByb3V0aW5nIHRhYmxlIGNvbHVtbnMuCisgKi8KK3N0YXRpYyB2b2lkCitwcl9ydHhoZHIoaW50IGFmLCBjb25zdCBjaGFyICp0YWJsZSkKK3sKKyAgICBzd2l0Y2ggKGFmKSB7CisgICAgY2FzZSBBRl9JTkVUOgorCXByaW50ZigiSVB2NCBSb3V0aW5nIHRhYmxlcyAoaW5ldENpZHJSb3V0ZVRhYmxlKVxuIik7CisJYnJlYWs7CisgICAgY2FzZSBBRl9JTkVUNjoKKwlwcmludGYoIklQdjYgUm91dGluZyB0YWJsZXMgKCVzKVxuIiwgdGFibGUpOworCWJyZWFrOworICAgIH0KKyAgICBwcmludGYoIiUtKi4qcyAiLAorCVdJRF9EU1QoYWYpLCBXSURfRFNUKGFmKSwgIkRlc3RpbmF0aW9uIik7CisgICAgcHJpbnRmKCIlLSouKnMgJS02LjZzICAlc1xuIiwKKwlXSURfR1coYWYpLCBXSURfR1coYWYpLCAiR2F0ZXdheSIsCisJIkZsYWdzIiwgIkludGVyZmFjZSIpOworfQorCisjaWZuZGVmIEhBVkVfSU5FVF9OVE9QCisvKiBNU1ZDIGFuZCBNaW5HVyAqLworI2RlZmluZSBpbmV0X250b3AgbmV0c25tcF9pbmV0X250b3AKK3N0YXRpYyBjb25zdCBjaGFyICoKK25ldHNubXBfaW5ldF9udG9wKGludCBhZiwgY29uc3Qgdm9pZCAqc3JjLCBjaGFyICpkc3QsIHNpemVfdCBzaXplKQoreworICAgIERXT1JEIG91dF9sZW4gPSBzaXplOworCisgICAgc3dpdGNoIChhZikgeworICAgIGNhc2UgQUZfSU5FVDoKKwl7CisJICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBpbjsKKworCSAgICBtZW1zZXQoJmluLCAwLCBzaXplb2YoaW4pKTsKKwkgICAgaW4uc2luX2ZhbWlseSA9IGFmOworCSAgICBtZW1jcHkoJmluLnNpbl9hZGRyLCBzcmMsIDQpOworCSAgICBpZiAoV1NBQWRkcmVzc1RvU3RyaW5nKChzdHJ1Y3Qgc29ja2FkZHIgKikmaW4sIHNpemVvZihpbiksIE5VTEwsIGRzdCwKKwkJCQkgICAmb3V0X2xlbikgPT0gMCkKKwkJcmV0dXJuIGRzdDsKKwl9CisJYnJlYWs7CisgICAgY2FzZSBBRl9JTkVUNjoKKwl7CisJICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgaW42OworCisJICAgIG1lbXNldCgmaW42LCAwLCBzaXplb2YoaW42KSk7CisJICAgIGluNi5zaW42X2ZhbWlseSA9IGFmOworCSAgICBtZW1jcHkoJmluNi5zaW42X2FkZHIsIHNyYywgMTYpOworCSAgICBpZiAoV1NBQWRkcmVzc1RvU3RyaW5nKChzdHJ1Y3Qgc29ja2FkZHIgKikmaW42LCBzaXplb2YoaW42KSwgTlVMTCwgZHN0LAorCQkJCSAgICZvdXRfbGVuKSA9PSAwKQorCQlyZXR1cm4gZHN0OworCX0KKwlicmVhazsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisjZW5kaWYKKworLyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbmV0d29yayB3aG9zZSBhZGRyZXNzIGlzIGdpdmVuLgorICogVGhlIGFkZHJlc3MgaXMgYXNzdW1lZCB0byBiZSB0aGF0IG9mIGEgbmV0IG9yIHN1Ym5ldCwgbm90IGEgaG9zdC4KKyAqLworc3RhdGljIGNoYXIgKgorbmV0eG5hbWUoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmluLCBpbnQgbWFzaykKK3sKKyAgICBzdGF0aWMgY2hhciBob3N0W01BWEhPU1ROQU1FTEVOXTsKKyAgICBzdGF0aWMgY2hhciBsaW5lW01BWEhPU1ROQU1FTEVOXTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilpbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilpbjsKKworICAgIHN3aXRjaCAoaW4tPnNzX2ZhbWlseSkgeworICAgIGNhc2UgQUZfSU5FVDoKKyAgICAgICAgaW5ldF9udG9wKGluLT5zc19mYW1pbHksICZzaW4tPnNpbl9hZGRyLCBob3N0LCBzaXplb2YoaG9zdCkpOworICAgICAgICBpZiAobWFzayA9PSAzMikgc3RyY3B5KGxpbmUsIGhvc3QpOworICAgICAgICBlbHNlIHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgIiVzLyVkIiwgaG9zdCwgbWFzayk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgIGluZXRfbnRvcChpbi0+c3NfZmFtaWx5LCAmc2luNi0+c2luNl9hZGRyLCBob3N0LCBzaXplb2YoaG9zdCkpOworICAgICAgICBpZiAobWFzayA9PSAxMjgpIHN0cmNweShsaW5lLCBob3N0KTsKKyAgICAgICAgZWxzZSBzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksICIlcy8lZCIsIGhvc3QsIG1hc2spOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGxpbmU7Cit9CisKK3N0YXRpYyBjaGFyICoKK3JvdXRleG5hbWUoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmluKQoreworICAgIGNoYXIgKmNwOworICAgIHN0YXRpYyBjaGFyIGxpbmVbTUFYSE9TVE5BTUVMRU5dOworICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7CisgICAgc3RhdGljIGNoYXIgZG9tYWluW01BWEhPU1ROQU1FTEVOXTsKKyAgICBzdGF0aWMgaW50IGZpcnN0ID0gMTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilpbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKilpbjsKKworICAgIGlmIChmaXJzdCkgeworICAgICAgICBmaXJzdCA9IDA7CisgICAgICAgIGlmIChnZXRob3N0bmFtZShsaW5lLCBzaXplb2YgbGluZSkgPT0gMCAmJgorICAgICAgICAgICAgKGNwID0gc3RyY2hyKGxpbmUsICcuJykpKQorICAgICAgICAgICAgKHZvaWQpIHN0cmxjcHkoZG9tYWluLCBjcCArIDEsIHNpemVvZiBkb21haW4pOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb21haW5bMF0gPSAnXDAnOworICAgIH0KKyAgICBjcCA9IE5VTEw7CisgICAgaWYgKCFuZmxhZykgeworICAgICAgICBzd2l0Y2ggKGluLT5zc19mYW1pbHkpIHsKKyAgICAgICAgY2FzZSBBRl9JTkVUOgorICAgICAgICAgICAgaHAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoJnNpbi0+c2luX2FkZHIsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoc3RydWN0IGluX2FkZHIpLCBBRl9JTkVUKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICAgICAgaHAgPSBuZXRzbm1wX2dldGhvc3RieWFkZHIoJnNpbjYtPnNpbjZfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mIChzdHJ1Y3QgaW42X2FkZHIpLCBBRl9JTkVUNik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoaHApIHsKKyAgICAgICAgICAgIGlmICgoY3AgPSBzdHJjaHIoaHAtPmhfbmFtZSwgJy4nKSkgJiYgIXN0cmNtcChjcCArIDEsIGRvbWFpbikpCisgICAgICAgICAgICAgICAgKmNwID0gJ1wwJzsKKyAgICAgICAgICAgIGNwID0gaHAtPmhfbmFtZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoY3ApIHsKKyAgICAgICAgc3RybGNweShsaW5lLCBjcCwgc2l6ZW9mKGxpbmUpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKGluLT5zc19mYW1pbHkpIHsKKyAgICAgICAgY2FzZSBBRl9JTkVUOgorICAgICAgICAgICAgaW5ldF9udG9wKHNpbi0+c2luX2ZhbWlseSwgJnNpbi0+c2luX2FkZHIsIGxpbmUsIHNpemVvZihsaW5lKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgICAgICAgIGluZXRfbnRvcChzaW42LT5zaW42X2ZhbWlseSwgJnNpbjYtPnNpbjZfYWRkciwgbGluZSwgc2l6ZW9mKGxpbmUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAobGluZSk7Cit9CisKKworc3RhdGljIGNoYXIgKgorc19ydGZsYWdzeCggc3RydWN0IHJvdXRlX2VudHJ5ICpycCApCit7CisgICAgc3RhdGljIGNoYXIgZmxhZ19idWZbMTBdOworICAgIGNoYXIgICpjcCA9IGZsYWdfYnVmOworCisgICAgKmNwKysgPSAnPCc7CisgICAgKmNwKysgPSAnVSc7ICAgLyogcm91dGUgaXMgaW4gdXNlICovCisgICAgaWYgKChycC0+YWYgPT0gQUZfSU5FVCAmJiBycC0+bWFzayA9PSAzMikgfHwKKyAgICAgICAgICAgIChycC0+YWYgPT0gQUZfSU5FVDYgJiYgcnAtPm1hc2sgPT0gMTI4KSkKKyAgICAgICAgKmNwKysgPSAnSCc7ICAgLyogaG9zdCAqLworICAgIGlmIChycC0+cHJvdG8gPT0gNCkKKyAgICAgICAgKmNwKysgPSAnRCc7ICAgLyogSUNNUCByZWRpcmVjdCAqLworICAgIGlmIChycC0+dHlwZSAgPT0gNCkKKyAgICAgICAgKmNwKysgPSAnRyc7ICAgLyogcmVtb3RlIGRlc3RpbmF0aW9uL25ldCAqLworICAgICpjcCsrID0gJz4nOworICAgICpjcCA9IDA7CisgICAgcmV0dXJuIGZsYWdfYnVmOworfQorCitzdGF0aWMgdm9pZAorcF9ydG5vZGV4KCBzdHJ1Y3Qgcm91dGVfZW50cnkgKnJwICkKK3sKKyAgICBnZXRfaWZuYW1lKHJwLT5pZm5hbWUsIHJwLT5pZk51bWJlcik7CisgICAgaWYgKHJwLT5hZiA9PSBBRl9JTkVUKSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqc2luID0gKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSZycC0+ZHN0OworICAgICAgICBwcmludGYoIiUtKnMgIiwKKyAgICAgICAgICAgIFdJRF9EU1QoQUZfSU5FVCksCisgICAgICAgICAgICAgICAgKHNpbi0+c2luX2FkZHIuc19hZGRyID09IElOQUREUl9BTlkpID8gImRlZmF1bHQiIDoKKyAgICAgICAgICAgICAgICAocnAtPm1hc2sgPT0gMzIgPworICAgICAgICAgICAgICAgICAgICByb3V0ZXhuYW1lKCZycC0+ZHN0KSA6CisgICAgICAgICAgICAgICAgICAgIG5ldHhuYW1lKCZycC0+ZHN0LCBycC0+bWFzaykpKTsKKyAgICB9CisgICAgZWxzZSBpZiAocnAtPmFmID09IEFGX0lORVQ2KSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgKnNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKSZycC0+ZHN0OworICAgICAgICBzdHJ1Y3QgaW42X2FkZHIgaW42X2FkZHJfYW55ID0gSU42QUREUl9BTllfSU5JVDsKKyAgICAgICAgcHJpbnRmKCIlLSpzICIsCisgICAgICAgICAgICBXSURfRFNUKEFGX0lORVQ2KSwKKyAgICAgICAgICAgICAgICBtZW1jbXAoJnNpbjYtPnNpbjZfYWRkciwgJmluNl9hZGRyX2FueSwgc2l6ZW9mKGluNl9hZGRyX2FueSkpID09IDAgPyAiZGVmYXVsdCIgOgorICAgICAgICAgICAgICAgIChycC0+bWFzayA9PSAxMjggPworICAgICAgICAgICAgICAgICAgICByb3V0ZXhuYW1lKCZycC0+ZHN0KSA6CisgICAgICAgICAgICAgICAgICAgIG5ldHhuYW1lKCZycC0+ZHN0LCBycC0+bWFzaykpKTsKKyAgICB9CisgICAgcHJpbnRmKCIlLSpzICUtNi42cyAgJXMiLAorICAgICAgICBXSURfR1cocnAtPmFmKSwKKyAgICAgICAgMSA/IHJvdXRleG5hbWUoJnJwLT5ob3ApIDogIioiLAorICAgICAgICBzX3J0ZmxhZ3N4KHJwKSwgcnAtPmlmbmFtZSk7CisgICAgaWYgKChycC0+c2V0X2JpdHMgJiBTRVRfQVMpICYmIHJwLT5hcyAhPSAwKQorICAgICAgICBwcmludGYoIiAoQVMgJWQpIiwgcnAtPmFzKTsKKyAgICBwcmludGYoIlxuIik7Cit9CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0ZXN0LmMgYi9hcHBzL3NubXB0ZXN0LmMKaW5kZXggNTE5ZTM4ZS4uMjRkZTQ3YiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdGVzdC5jCisrKyBiL2FwcHMvc25tcHRlc3QuYwpAQCAtMjEwLDkgKzIxMCwxMSBAQAogICAgICAgICAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX1JFU1BPTlNFOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZWNlaXZlZCBHZXQgUmVzcG9uc2UgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAgICAgICAgICAgICAgICAgICAgIGNhc2UgU05NUF9NU0dfU0VUOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJSZWNlaXZlZCBTZXQgUmVxdWVzdCAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgICAgICAgICAgICAgICAgICBjYXNlIFNOTVBfTVNHX1RSQVA6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIlJlY2VpdmVkIFRyYXAgUmVxdWVzdCAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzExLDEwICszMTMsMTIgQEAKICAgICAgICAgICAgIGNvbW1hbmQgPSBTTk1QX01TR19HRVRORVhUOwogICAgICAgICAgICAgcHJpbnRmKCJSZXF1ZXN0IHR5cGUgaXMgR2V0bmV4dCBSZXF1ZXN0XG4iKTsKICAgICAgICAgICAgIGJyZWFrOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgY2FzZSAnUyc6CiAgICAgICAgICAgICBjb21tYW5kID0gU05NUF9NU0dfU0VUOwogICAgICAgICAgICAgcHJpbnRmKCJSZXF1ZXN0IHR5cGUgaXMgU2V0IFJlcXVlc3RcbiIpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIGNhc2UgJ0InOgogICAgICAgICAgICAgY29tbWFuZCA9IFNOTVBfTVNHX0dFVEJVTEs7CiAgICAgICAgICAgICBwcmludGYoIlJlcXVlc3QgdHlwZSBpcyBCdWxrIFJlcXVlc3RcbiIpOwpAQCAtMzMzLDExICszMzcsMTQgQEAKICAgICAgICAgICAgIHByaW50ZigiKEFyZSB5b3Ugc2VuZGluZyB0byB0aGUgcmlnaHQgcG9ydD8pXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlICdEJzoKLSAgICAgICAgICAgIGlmIChzbm1wX2dldF9kdW1wX3BhY2tldCgpKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9zZXRfZHVtcF9wYWNrZXQoMCk7CisgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRFVNUF9QQUNLRVQpKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRFVNUF9QQUNLRVQsIDApOwogICAgICAgICAgICAgICAgIHByaW50ZigiVHVybmVkIHBhY2tldCBkdW1wIG9mZlxuIik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNubXBfc2V0X2R1bXBfcGFja2V0KDEpOworICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RVTVBfUEFDS0VULCAxKTsKICAgICAgICAgICAgICAgICBwcmludGYoIlR1cm5lZCBwYWNrZXQgZHVtcCBvblxuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTM1MCwxMSArMzU3LDE0IEBACiAgICAgICAgICAgICAgICAgZXhpdCgwKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgJ1AnOgotICAgICAgICAgICAgICAgIGlmIChzbm1wX2dldF9xdWlja19wcmludCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KDApOworICAgICAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQpKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9RVUlDS19QUklOVCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiVHVybmVkIHF1aWNrIHByaW50aW5nIG9mZlxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfcXVpY2tfcHJpbnQoMSk7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9RVUlDS19QUklOVCwgMSk7CiAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiVHVybmVkIHF1aWNrIHByaW50aW5nIG9uXG4iKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0zNzUsOCArMzg1LDEyIEBACiAJdnAtPm5hbWUgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZChuYW1lLCB2cC0+bmFtZV9sZW5ndGgpOwogICAgIH0KIAotICAgIGlmIChjb21tYW5kID09IFNOTVBfTVNHX1NFVCB8fCBjb21tYW5kID09IFNOTVBfTVNHX0lORk9STQotICAgICAgICB8fCBjb21tYW5kID09IFNOTVBfTVNHX1RSQVAyKSB7CisgICAgaWYgKGNvbW1hbmQgPT0gU05NUF9NU0dfSU5GT1JNCisgICAgICAgIHx8IGNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUDIKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgICAgIHx8IGNvbW1hbmQgPT0gU05NUF9NU0dfU0VUCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgICkgewogICAgICAgICBwcmludGYoIlR5cGUgW2l8dXxzfHh8ZHxufG98dHxhXTogIik7CiAgICAgICAgIGZmbHVzaChzdGRvdXQpOwogICAgICAgICBpZiAoIWZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1ZiksIHN0ZGluKSkgewpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdGxzLmMgYi9hcHBzL3NubXB0bHMuYwppbmRleCA4MDlkMzY5Li44NGM1ZmJlIDEwMDY0NAotLS0gYS9hcHBzL3NubXB0bHMuYworKysgYi9hcHBzL3NubXB0bHMuYwpAQCAtNCwxMCArNCwxMyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI3VuZGVmIE5FVFNOTVBfVVNFX0FTU0VSVAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUodGxzX2ZpbmdlcnByaW50X2J1aWxkKQorCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAogI2luY2x1ZGUgPG9wZW5zc2wvc3NsLmg+CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFuc2xhdGUuYyBiL2FwcHMvc25tcHRyYW5zbGF0ZS5jCmluZGV4IDczOTFmZDQuLjJiMTk3NzcgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYW5zbGF0ZS5jCisrKyBiL2FwcHMvc25tcHRyYW5zbGF0ZS5jCkBAIC0yMDIsNyArMjAyLDggQEAKICNlbmRpZiAvKiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcgKi8KICAgICAgICAgICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSAxOwotICAgICAgICAgICAgICAgICAgICBzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucygxKTsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NBVkVfTUlCX0RFU0NSUywgMSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgJ0InOgogICAgICAgICAgICAgICAgICAgICBmaW5kX2FsbCA9IDE7CkBAIC0yNjEsNyArMjYyLDggQEAKIAogICAgIGRvIHsKICAgICAgICAgbmFtZV9sZW5ndGggPSBNQVhfT0lEX0xFTjsKLSAgICAgICAgaWYgKHNubXBfZ2V0X3JhbmRvbV9hY2Nlc3MoKSkgeworICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorCQkJCSAgTkVUU05NUF9EU19MSUJfUkFORE9NX0FDQ0VTUykpIHsKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCiAgICAgICAgICAgICBpZiAoIWdldF9ub2RlKGN1cnJlbnRfbmFtZSwgbmFtZSwgJm5hbWVfbGVuZ3RoKSkgewogI2VuZGlmIC8qIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORyAqLwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGQuYyBiL2FwcHMvc25tcHRyYXBkLmMKaW5kZXggMTZkZmY1MC4uYmNlMGQ0NyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGQuYworKysgYi9hcHBzL3NubXB0cmFwZC5jCkBAIC0xMjMsNiArMTIzLDggQEAKICNpbmNsdWRlIDx0Y3BkLmg+CiAjZW5kaWYKIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKICNpZm5kZWYgQlNENF8zCiAjZGVmaW5lIEJTRDRfMgogI2VuZGlmCkBAIC0yMTUsOCArMjE3LDYgQEAKIAogY29uc3QgY2hhciAgICAgKmFwcF9uYW1lID0gInNubXB0cmFwZCI7CiAKLXN0cnVjdCB0aW1ldmFsICBOb3c7Ci0KIHZvaWQgICAgICAgICAgICB0cmFwZF91cGRhdGVfY29uZmlnKHZvaWQpOwogCiAjaWZkZWYgV0lOMzJTRVJWSUNFCkBAIC0yODksNiArMjg5LDcgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLXYsIC0tdmVyc2lvblx0XHRkaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb25cbiIpOwogI2lmIGRlZmluZWQoVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRSkgJiYgIWRlZmluZWQoTkVUU05NUF9TTk1QVFJBUERfRElTQUJMRV9BR0VOVFgpCiAgICAgZnByaW50ZihzdGRlcnIsICIgIC14IEFERFJFU1NcdFx0dXNlIEFERFJFU1MgYXMgQWdlbnRYIGFkZHJlc3NcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtWFx0XHRcdGRvbid0IGJlY29tZSBhIHN1YmFnZW50XG4iKTsKICNlbmRpZgogICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgIiAgLU8gPE9VVE9QVFM+XHRcdHRvZ2dsZSBvcHRpb25zIGNvbnRyb2xsaW5nIG91dHB1dCBkaXNwbGF5XG4iKTsKQEAgLTQ0Myw2ICs0NDQsNyBAQAogewogICAgIGlmIChkZWZhdWx0X3BvcnQgIT0gZGRlZmF1bHRfcG9ydCkgewogICAgICAgICBmcmVlKGRlZmF1bHRfcG9ydCk7CisgICAgICAgIGRlZmF1bHRfcG9ydCA9IGRkZWZhdWx0X3BvcnQ7CiAgICAgfQogfQogCkBAIC00NzIsMTMgKzQ3NCwxMCBAQAogdm9pZAogcGFyc2VfY29uZmlnX2FnZW50dXNlcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSNpZiBkZWZpbmVkKEhBVkVfR0VUUFdOQU0pICYmIGRlZmluZWQoSEFWRV9QV0RfSCkKLSAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKLSNlbmRpZgotCiAgICAgaWYgKGNwdHJbMF0gPT0gJyMnKSB7CiAgICAgICAgIGNoYXIgICAgICAgICAgICplY3A7CiAgICAgICAgIGludCAgICAgICAgICAgICB1aWQ7CisKICAgICAgICAgdWlkID0gc3RydG91bChjcHRyICsgMSwgJmVjcCwgMTApOwogICAgICAgICBpZiAoKmVjcCAhPSAwKSB7CiAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJCYWQgbnVtYmVyIik7CkBAIC00ODYsNDQgKzQ4NSw0NyBAQAogCSAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIHVpZCk7CiAJfQotICAgIH0KICNpZiBkZWZpbmVkKEhBVkVfR0VUUFdOQU0pICYmIGRlZmluZWQoSEFWRV9QV0RfSCkKLSAgICBlbHNlIGlmICgoaW5mbyA9IGdldHB3bmFtKGNwdHIpKSAhPSBOVUxMKSB7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKLQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCBpbmZvLT5wd191aWQpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIlVzZXIgbm90IGZvdW5kIGluIHBhc3N3ZCBkYXRhYmFzZSIpOwotICAgIH0KLSAgICBlbmRwd2VudCgpOworICAgICAgICBzdHJ1Y3QgcGFzc3dkICppbmZvOworCisgICAgICAgIGluZm8gPSBnZXRwd25hbShjcHRyKTsKKyAgICAgICAgaWYgKGluZm8pCisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9VU0VSSUQsIGluZm8tPnB3X3VpZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIlVzZXIgbm90IGZvdW5kIGluIHBhc3N3ZCBkYXRhYmFzZSIpOworICAgICAgICBlbmRwd2VudCgpOwogI2VuZGlmCisgICAgfQogfQogCiB2b2lkCiBwYXJzZV9jb25maWdfYWdlbnRncm91cChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSNpZiBkZWZpbmVkKEhBVkVfR0VUR1JOQU0pICYmIGRlZmluZWQoSEFWRV9HUlBfSCkKLSAgICBzdHJ1Y3QgZ3JvdXAgICAqaW5mbzsKLSNlbmRpZgotCiAgICAgaWYgKGNwdHJbMF0gPT0gJyMnKSB7CiAgICAgICAgIGNoYXIgICAgICAgICAgICplY3A7CiAgICAgICAgIGludCAgICAgICAgICAgICBnaWQgPSBzdHJ0b3VsKGNwdHIgKyAxLCAmZWNwLCAxMCk7CisKICAgICAgICAgaWYgKCplY3AgIT0gMCkgewogICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiQmFkIG51bWJlciIpOwogCX0gZWxzZSB7CiAgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9HUk9VUElELCBnaWQpOwogCX0KLSAgICB9CiAjaWYgZGVmaW5lZChIQVZFX0dFVEdSTkFNKSAmJiBkZWZpbmVkKEhBVkVfR1JQX0gpCi0gICAgZWxzZSBpZiAoKGluZm8gPSBnZXRncm5hbShjcHRyKSkgIT0gTlVMTCkgewotICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCi0JCQkgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQsIGluZm8tPmdyX2dpZCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigiR3JvdXAgbm90IGZvdW5kIGluIGdyb3VwIGRhdGFiYXNlIik7Ci0gICAgfQotICAgIGVuZHB3ZW50KCk7CisgICAgICAgIHN0cnVjdCBncm91cCAgICppbmZvOworCisgICAgICAgIGluZm8gPSBnZXRncm5hbShjcHRyKTsKKyAgICAgICAgaWYgKGluZm8pCisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9HUk9VUElELCBpbmZvLT5ncl9naWQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJHcm91cCBub3QgZm91bmQgaW4gZ3JvdXAgZGF0YWJhc2UiKTsKKyAgICAgICAgZW5kZ3JlbnQoKTsKICNlbmRpZgorICAgIH0KIH0KICNlbmRpZgogCkBAIC01NTMsNiArNTU1LDc0IEBACiAgIH0KIH0KIAorc3RhdGljIHZvaWQKK3NubXB0cmFwZF9tYWluX2xvb3Aodm9pZCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgY291bnQsIG51bWZkcywgYmxvY2s7CisgICAgZmRfc2V0ICAgICAgICAgIHJlYWRmZHMsd3JpdGVmZHMsZXhjZXB0ZmRzOworICAgIHN0cnVjdCB0aW1ldmFsICB0aW1lb3V0LCAqdHZwOworCisgICAgd2hpbGUgKG5ldHNubXBfcnVubmluZykgeworICAgICAgICBpZiAocmVjb25maWcpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIElmIHdlIGFyZSBsb2dnaW5nIHRvIGEgZmlsZSwgcmVjZWlwdCBvZiBTSUdIVVAgYWxzbworICAgICAgICAgICAgICAgICAqIGluZGljYXRlcyB0aGF0IHRoZSBsb2cgZmlsZSBzaG91bGQgYmUgY2xvc2VkIGFuZAorICAgICAgICAgICAgICAgICAqIHJlLW9wZW5lZC4gIFRoaXMgaXMgdXNlZnVsIGZvciB1c2VycyB0aGF0IHdhbnQgdG8KKyAgICAgICAgICAgICAgICAgKiByb3RhdGUgbG9ncyBpbiBhIG1vcmUgcHJlZGljdGFibGUgbWFubmVyLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIG5ldHNubXBfbG9nZ2luZ19yZXN0YXJ0KCk7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0lORk8sICJORVQtU05NUCB2ZXJzaW9uICVzIHJlc3RhcnRlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF92ZXJzaW9uKCkpOworICAgICAgICAgICAgdHJhcGRfdXBkYXRlX2NvbmZpZygpOworICAgICAgICAgICAgaWYgKHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIpIHsKKyAgICAgICAgICAgICAgICBwYXJzZV9mb3JtYXQoIE5VTEwsIHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlY29uZmlnID0gMDsKKyAgICAgICAgfQorICAgICAgICBudW1mZHMgPSAwOworICAgICAgICBGRF9aRVJPKCZyZWFkZmRzKTsKKyAgICAgICAgRkRfWkVSTygmd3JpdGVmZHMpOworICAgICAgICBGRF9aRVJPKCZleGNlcHRmZHMpOworICAgICAgICBibG9jayA9IDA7CisgICAgICAgIHR2cCA9ICZ0aW1lb3V0OworICAgICAgICB0aW1lcmNsZWFyKHR2cCk7CisgICAgICAgIHR2cC0+dHZfc2VjID0gNTsKKyAgICAgICAgc25tcF9zZWxlY3RfaW5mbygmbnVtZmRzLCAmcmVhZGZkcywgdHZwLCAmYmxvY2spOworICAgICAgICBpZiAoYmxvY2sgPT0gMSkKKyAgICAgICAgICAgIHR2cCA9IE5VTEw7ICAgICAgICAgLyogYmxvY2sgd2l0aG91dCB0aW1lb3V0ICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUgorICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8oJm51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSICovCisgICAgICAgIGNvdW50ID0gc2VsZWN0KG51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcywgdHZwKTsKKyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZEX0VWRU5UX01BTkFHRVIKKyAgICAgICAgICAgIG5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzKCZjb3VudCwgJnJlYWRmZHMsICZ3cml0ZWZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleGNlcHRmZHMpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRkRfRVZFTlRfTUFOQUdFUiAqLworICAgICAgICAgICAgLyogSWYgdGhlcmUgYXJlIGFueSBtb3JlIGV2ZW50cyBhZnRlciBleHRlcm5hbCBldmVudHMsIHRoZW4KKyAgICAgICAgICAgICAqIHRyeSBTTk1QIGV2ZW50cy4gKi8KKyAgICAgICAgICAgIGlmIChjb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICBzbm1wX3JlYWQoJnJlYWRmZHMpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChjb3VudCkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIHNubXBfdGltZW91dCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAtMToKKyAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcigic2VsZWN0Iik7CisgICAgICAgICAgICAgICAgbmV0c25tcF9ydW5uaW5nID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJzZWxlY3QgcmV0dXJuZWQgJWRcbiIsIGNvdW50KTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3J1bm5pbmcgPSAwOworICAgICAgICAgICAgfQorCX0KKwlydW5fYWxhcm1zKCk7CisgICAgfQorfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgogICogbWFpbiAtIE5vbiBXaW5kb3dzCkBAIC01NzcsMTQgKzY0NywxMSBAQAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogI2VuZGlmCiB7Ci0gICAgY2hhciAgICAgICAgICAgIG9wdGlvbnNbMTI4XSA9ICJhQWM6Q2REOjplZkY6ZzpoSEk6TDptOk06bm86TzpQcXNTOnR1OnZ4Oi06IjsKKyAgICBjaGFyICAgICAgICAgICAgb3B0aW9uc1sxMjhdID0gImFBYzpDZEQ6OmVmRjpnOmhISTpMOm06TTpubzpPOlB0dTp2eDpYLToiOwogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc19saXN0ID0gTlVMTCwgKnNzID0gTlVMTDsKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgYXJnLCBpID0gMDsKICAgICBpbnQgICAgICAgICAgICAgdWlkID0gMCwgZ2lkID0gMDsKLSAgICBpbnQgICAgICAgICAgICAgY291bnQsIG51bWZkcywgYmxvY2s7Ci0gICAgZmRfc2V0ICAgICAgICAgIHJlYWRmZHMsd3JpdGVmZHMsZXhjZXB0ZmRzOwotICAgIHN0cnVjdCB0aW1ldmFsICB0aW1lb3V0LCAqdHZwOwogICAgIGNoYXIgICAgICAgICAgICpjcCwgKmxpc3Rlbl9wb3J0cyA9IE5VTEw7CiAjaWYgZGVmaW5lZChVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFKSAmJiAhZGVmaW5lZChORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKICAgICBpbnQgICAgICAgICAgICAgYWdlbnR4X3N1YmFnZW50ID0gMTsKQEAgLTYyMyw3ICs2OTAsOSBAQAogI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCiAgICAgc25tcHRyYXBkX3JlZ2lzdGVyX3NxbF9jb25maWdzKCApOwogI2VuZGlmCisjaWZkZWYgTkVUU05NUF9TRUNNT0RfVVNNCiAgICAgaW5pdF91c21fY29uZiggInNubXB0cmFwZCIgKTsKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgInNubXBUcmFwZEFkZHIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX3RyYXBkX2FkZHJlc3MsIGZyZWVfdHJhcGRfYWRkcmVzcywgInN0cmluZyIpOwogCkBAIC02NTYsMTEgKzcyNSwxMyBAQAogICAgIHN0cmNhdChvcHRpb25zLCAicDoiKTsKICNlbmRpZgogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICNpZmRlZiBXSU4zMgogICAgIHNubXBfbG9nX3N5c2xvZ25hbWUoYXBwX25hbWVfbG9uZyk7CiAjZWxzZQogICAgIHNubXBfbG9nX3N5c2xvZ25hbWUoYXBwX25hbWUpOwogI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogCiAgICAgLyoKICAgICAgKiBOb3cgcHJvY2VzcyBvcHRpb25zIG5vcm1hbGx5LiAgCkBAIC03MDYsNyArNzc3LDggQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgc25tcF9zZXRfZHVtcF9wYWNrZXQoMSk7CisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RVTVBfUEFDS0VULCAxKTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgJ0QnOgpAQCAtODYxLDE5ICs5MzMsMTggQEAKICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAqZWNwOwogCiAgICAgICAgICAgICAgICAgdWlkID0gc3RydG91bChvcHRhcmcsICZlY3AsIDEwKTsKKyNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKICAgICAgICAgICAgICAgICBpZiAoKmVjcCkgewotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKKwogICAgICAgICAgICAgICAgICAgICBpbmZvID0gZ2V0cHduYW0ob3B0YXJnKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHVpZCA9IGluZm8tPnB3X3VpZDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdWlkID0gaW5mbyA/IGluZm8tPnB3X3VpZCA6IC0xOworICAgICAgICAgICAgICAgICAgICBlbmRwd2VudCgpOworICAgICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJCYWQgdXNlciBpZDogJXNcbiIsIG9wdGFyZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwotI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSAotICAgICAgICAgICAgICAgICAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAodWlkIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCB1c2VyIGlkOiAlc1xuIiwgb3B0YXJnKTsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklELCB1aWQpOwpAQCAtODg5LDYgKzk2MCw3IEBACiAgICAgICAgICAgICBleGl0KDApOwogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZiBkZWZpbmVkKFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUpICYmICFkZWZpbmVkKE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYKQogICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgIGlmIChvcHRhcmcgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELApAQCAtODk5LDYgKzk3MSwxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgYWdlbnR4X3N1YmFnZW50ID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiaW52YWxpZCBvcHRpb246IC0lY1xuIiwgYXJnKTsKICAgICAgICAgICAgIHVzYWdlKCk7CkBAIC05NDAsMTAgKzEwMTcsMTkgQEAKICAgICAgKiBEb24ndCB0cnkgdGhpcyBhdCBob21lLCBjaGlsZHJlbiEKICAgICAgKi8KICAgICBpZiAoMCA9PSBzbm1wX2dldF9kb19sb2dnaW5nKCkpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfUFJFX0hBTkRMRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2xvZ19oYW5kbGVyKTsKICAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7CiAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZygpOworI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8KKyAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoTkVUU05NUFRSQVBEX1BSRV9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9oYW5kbGVyKTsKKyAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7CisgICAgICAgIHNubXBfZW5hYmxlX3N0ZGVycigpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KICAgICB9IGVsc2UgewogICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfUFJFX0hBTkRMRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2hhbmRsZXIpOwpAQCAtOTgwLDYgKzEwNjYsOSBAQAogICAgIGluaXRfYWdlbnQoInNubXB0cmFwZCIpOwogCiAjaWYgZGVmaW5lZChVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFKSAmJiAhZGVmaW5lZChORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcKKyAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyZWdpc3Rlcl9zbm1wRW5naW5lX3NjYWxhcnNfY29udGV4dCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KICAgICAvKgogICAgICAqIGluaXRpYWxpemUgbG9jYWwgbW9kdWxlcyAKICAgICAgKi8KQEAgLTEwMjAsNiArMTEwOSw5IEBACiAgICAgICAgIGV4dGVybiB2b2lkIGluaXRfcmVnaXN0ZXJfbnNWYWNtX2NvbnRleHQoY29uc3QgY2hhciAqKTsKICNlbmRpZgogI2lmZGVmIFVTSU5HX1NOTVBWM19VU01VU0VSX01PRFVMRQorI2lmZGVmIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORworICAgICAgICBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShpbml0X3JlZ2lzdGVyX3VzbVVzZXJfY29udGV4dCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KICAgICAgICAgZXh0ZXJuIHZvaWQgaW5pdF9yZWdpc3Rlcl91c21Vc2VyX2NvbnRleHQoY29uc3QgY2hhciAqKTsKICAgICAgICAgLyogcmVnaXN0ZXIgb3Vyc2VsdmVzIGFzIGhhdmluZyBhIFVTTSB1c2VyIGRhdGFiYXNlICovCiAgICAgICAgIGluaXRfcmVnaXN0ZXJfdXNtVXNlcl9jb250ZXh0KCJzbm1wdHJhcGQiKTsKQEAgLTEwNzMsMTEgKzExNjUsMTMgQEAKICAgICAgKiBpZiBubyBsb2dnaW5nIG9wdGlvbnMgb24gY29tbWFuZCBsaW5lIG9yIGluIGNvbmYgZmlsZXMsIHVzZSBzeXNsb2cKICAgICAgKi8KICAgICBpZiAoMCA9PSBzbm1wX2dldF9kb19sb2dnaW5nKCkpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogI2lmZGVmIFdJTjMyCiAgICAgICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChhcHBfbmFtZV9sb25nLCBGYWNpbGl0eSk7CiAjZWxzZQogICAgICAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoYXBwX25hbWUsIEZhY2lsaXR5KTsKICNlbmRpZiAgICAgICAgCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogICAgIH0KIAogICAgIGlmIChsaXN0ZW5fcG9ydHMpCkBAIC0xMTA3LDcgKzEyMDEsNiBAQAogICAgICAgICAgICAgICAgICAqIHN1Y2Nlc3NmdWxseSBzbyB3aGF0IGNvdWxkIGhhdmUgZ29uZSB3cm9uZz8gIAogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIHNubXB0cmFwZF9jbG9zZV9zZXNzaW9ucyhzZXNzX2xpc3QpOwotICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodHJhbnNwb3J0KTsKICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3Qgb3BlbiBzbm1wIC0gJXMiLCBzdHJlcnJvcihlcnJubykpOwogICAgICAgICAgICAgICAgIFNPQ0tfQ0xFQU5VUDsKICAgICAgICAgICAgICAgICBleGl0KDEpOwpAQCAtMTIyOCw2MiArMTMyMSw4IEBACiAjaWZkZWYgV0lOMzJTRVJWSUNFCiAgICAgdHJhcGRfc3RhdHVzID0gU05NUFRSQVBEX1JVTk5JTkc7CiAjZW5kaWYKLSAgICB3aGlsZSAobmV0c25tcF9ydW5uaW5nKSB7Ci0gICAgICAgIGlmIChyZWNvbmZpZykgewotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogSWYgd2UgYXJlIGxvZ2dpbmcgdG8gYSBmaWxlLCByZWNlaXB0IG9mIFNJR0hVUCBhbHNvCi0gICAgICAgICAgICAgICAgICogaW5kaWNhdGVzIHRoZSB0aGUgbG9nIGZpbGUgc2hvdWxkIGJlIGNsb3NlZCBhbmQKLSAgICAgICAgICAgICAgICAgKiByZS1vcGVuZWQuICBUaGlzIGlzIHVzZWZ1bCBmb3IgdXNlcnMgdGhhdCB3YW50IHRvCi0gICAgICAgICAgICAgICAgICogcm90YXRlIGxvZ3MgaW4gYSBtb3JlIHByZWRpY3RhYmxlIG1hbm5lci4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBuZXRzbm1wX2xvZ2dpbmdfcmVzdGFydCgpOwotICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19JTkZPLCAiTkVULVNOTVAgdmVyc2lvbiAlcyByZXN0YXJ0ZWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfdmVyc2lvbigpKTsKLSAgICAgICAgICAgIHRyYXBkX3VwZGF0ZV9jb25maWcoKTsKLSAgICAgICAgICAgIGlmICh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgcGFyc2VfZm9ybWF0KCBOVUxMLCB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZWNvbmZpZyA9IDA7Ci0gICAgICAgIH0KLSAgICAgICAgbnVtZmRzID0gMDsKLSAgICAgICAgRkRfWkVSTygmcmVhZGZkcyk7Ci0gICAgICAgIEZEX1pFUk8oJndyaXRlZmRzKTsKLSAgICAgICAgRkRfWkVSTygmZXhjZXB0ZmRzKTsKLSAgICAgICAgYmxvY2sgPSAwOwotICAgICAgICB0dnAgPSAmdGltZW91dDsKLSAgICAgICAgdGltZXJjbGVhcih0dnApOwotICAgICAgICB0dnAtPnR2X3NlYyA9IDU7Ci0gICAgICAgIHNubXBfc2VsZWN0X2luZm8oJm51bWZkcywgJnJlYWRmZHMsIHR2cCwgJmJsb2NrKTsKLSAgICAgICAgaWYgKGJsb2NrID09IDEpCi0gICAgICAgICAgICB0dnAgPSBOVUxMOyAgICAgICAgIC8qIGJsb2NrIHdpdGhvdXQgdGltZW91dCAqLwotICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8oJm51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcyk7Ci0gICAgICAgIGNvdW50ID0gc2VsZWN0KG51bWZkcywgJnJlYWRmZHMsICZ3cml0ZWZkcywgJmV4Y2VwdGZkcywgdHZwKTsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZOb3csIE5VTEwpOwotICAgICAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cygmY291bnQsICZyZWFkZmRzLCAmd3JpdGVmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhjZXB0ZmRzKTsKLSAgICAgICAgICAgIC8qIElmIHRoZXJlIGFyZSBhbnkgbW9yZSBldmVudHMgYWZ0ZXIgZXh0ZXJuYWwgZXZlbnRzLCB0aGVuCi0gICAgICAgICAgICAgKiB0cnkgU05NUCBldmVudHMuICovCi0gICAgICAgICAgICBpZiAoY291bnQgPiAwKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9yZWFkKCZyZWFkZmRzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzd2l0Y2ggKGNvdW50KSB7Ci0gICAgICAgICAgICBjYXNlIDA6Ci0gICAgICAgICAgICAgICAgc25tcF90aW1lb3V0KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIC0xOgotICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJzZWxlY3QiKTsKLSAgICAgICAgICAgICAgICBuZXRzbm1wX3J1bm5pbmcgPSAwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInNlbGVjdCByZXR1cm5lZCAlZFxuIiwgY291bnQpOwotICAgICAgICAgICAgICAgIG5ldHNubXBfcnVubmluZyA9IDA7Ci0gICAgICAgICAgICB9Ci0JcnVuX2FsYXJtcygpOwotICAgIH0KKworICAgIHNubXB0cmFwZF9tYWluX2xvb3AoKTsKIAogICAgIGlmIChzbm1wX2dldF9kb19sb2dnaW5nKCkpIHsKICAgICAgICAgc3RydWN0IHRtICAgICAgKnRtOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYyBiL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMKaW5kZXggM2VlM2FhNy4uNWE4ZTNjOCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYworKysgYi9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0zNyw2ICszOCw4IEBACiAjaW5jbHVkZSAic25tcHRyYXBkX2xvZy5oIgogI2luY2x1ZGUgIm5vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaCIKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGFkZF9kZWZhdWx0X3RyYXBoYW5kbGVyLCBzbm1wdHJhcGQpCisKIGNoYXIgKnN5c2xvZ19mb3JtYXQxID0gTlVMTDsKIGNoYXIgKnN5c2xvZ19mb3JtYXQyID0gTlVMTDsKIGNoYXIgKnByaW50X2Zvcm1hdDEgID0gTlVMTDsKQEAgLTQwMCw2ICs0MDMsNyBAQAogICAgIHJldHVybiB0cmFwaDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0FERF9ERUZBVUxUX1RSQVBIQU5ETEVSCiAvKgogICogUmVnaXN0ZXIgYSBuZXcgImRlZmF1bHQiIHRyYXBoYW5kbGVyLCB0byBiZSBhcHBsaWVkIHRvIGFsbAogICogdHJhcHMgd2l0aCBubyBzcGVjaWZpYyB0cmFwIGhhbmRsZXJzIG9mIHRoZWlyIG93bi4KQEAgLTQwOSw2ICs0MTMsNyBAQAogICAgIHJldHVybiBuZXRzbm1wX2FkZF9nbG9iYWxfdHJhcGhhbmRsZXIoTkVUU05NUFRSQVBEX0RFRkFVTFRfSEFORExFUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQUREX0RFRkFVTFRfVFJBUEhBTkRMRVIgKi8KIAogCiAvKgpAQCAtODAyLDggKzgwNywxMCBAQAogCSAgICB2Ml9wZHUgPSBjb252ZXJ0X3YxcGR1X3RvX3YyKHBkdSk7CiAJZWxzZQogCSAgICB2Ml9wZHUgPSBwZHU7Ci0gICAgICAgIG9sZHF1aWNrID0gc25tcF9nZXRfcXVpY2tfcHJpbnQoKTsKLSAgICAgICAgc25tcF9zZXRfcXVpY2tfcHJpbnQoMSk7CisgICAgICAgIG9sZHF1aWNrID0gbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQpOworICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUVVJQ0tfUFJJTlQsIDEpOwogCiAgICAgICAgIC8qCiAJICogRm9ybWF0IHRoZSB0cmFwIGFuZCBwYXNzIHRoaXMgc3RyaW5nIHRvIHRoZSBleHRlcm5hbCBjb21tYW5kCkBAIC04NDIsNyArODQ5LDggQEAKICAgICAgICAgICogIGFuZCBwYXNzIHRoaXMgZm9ybWF0dGVkIHN0cmluZyB0byB0aGUgY29tbWFuZCBzcGVjaWZpZWQKICAgICAgICAgICovCiAgICAgICAgIHJ1bl9zaGVsbF9jb21tYW5kKGhhbmRsZXItPnRva2VuLCAoY2hhciopcmJ1ZiwgTlVMTCwgTlVMTCk7ICAgLyogTm90IGludGVyZXN0ZWQgaW4gb3V0cHV0ICovCi0gICAgICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KG9sZHF1aWNrKTsKKyAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCBvbGRxdWljayk7CiAgICAgICAgIGlmIChwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUCkKICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUodjJfcGR1KTsKICAgICAgICAgZnJlZShyYnVmKTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkX2xvZy5jIGIvYXBwcy9zbm1wdHJhcGRfbG9nLmMKaW5kZXggOWJmYzBiMi4uNzc0Zjc5NyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfbG9nLmMKKysrIGIvYXBwcy9zbm1wdHJhcGRfbG9nLmMKQEAgLTY0OCw3ICs2NDgsNyBAQAogICAgICAgICAgKi8KICAgICAgICAgaWYgKCFuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCkpIHsKLSAgICAgICAgICAgIGhvc3QgPSBnZXRob3N0YnlhZGRyKChjaGFyICopIHBkdS0+YWdlbnRfYWRkciwgNCwgQUZfSU5FVCk7CisgICAgICAgICAgICBob3N0ID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjaGFyICopIHBkdS0+YWdlbnRfYWRkciwgNCwgQUZfSU5FVCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGhvc3QgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdCgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsCkBAIC0xMzY4LDcgKzEzNjgsNyBAQAogICAgICAqLwogICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCkpIHsKLSAgICAgICAgaG9zdCA9IGdldGhvc3RieWFkZHIoKGNoYXIgKikgcGR1LT5hZ2VudF9hZGRyLCA0LCBBRl9JTkVUKTsKKyAgICAgICAgaG9zdCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigoY2hhciAqKSBwZHUtPmFnZW50X2FkZHIsIDQsIEFGX0lORVQpOwogICAgIH0KICAgICBpZiAoaG9zdCAhPSAoc3RydWN0IGhvc3RlbnQgKikgTlVMTCkgewogICAgICAgICBpZiAoIXNubXBfc3RyY2F0CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFwZF9zcWwuYyBiL2FwcHMvc25tcHRyYXBkX3NxbC5jCmluZGV4IGNlMjU0MjMuLjY3MWU1NDIgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXBkX3NxbC5jCisrKyBiL2FwcHMvc25tcHRyYXBkX3NxbC5jCkBAIC0xMSw2ICsxMSw3IEBACiAgKgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCiAKQEAgLTU0LDYgKzU1LDggQEAKICNpbmNsdWRlIDxteXNxbC5oPgogI2luY2x1ZGUgPGVycm1zZy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZmlmbykKKwogLyoKICAqIGRlZmluZSBhIHN0cnVjdHVyZSB0byBob2xkIGFsbCB0aGUgZmlsZSBnbG9iYWxzCiAgKi8KZGlmZiAtLWdpdCBhL2FwcHMvc25tcHdhbGsuYyBiL2FwcHMvc25tcHdhbGsuYwppbmRleCBkZmFkN2UwLi42NTlkN2RlIDEwMDY0NAotLS0gYS9hcHBzL3NubXB3YWxrLmMKKysrIGIvYXBwcy9zbm1wd2Fsay5jCkBAIC02OSw2ICs2OSw3IEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfV0FMS19ET05UX0NIRUNLX0xFWElDT0dSQVBISUMJMwogI2RlZmluZSBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTICAgICAJICAgICAgICA0CiAjZGVmaW5lIE5FVFNOTVBfRFNfV0FMS19ET05UX0dFVF9SRVFVRVNURUQJICAgICAgICA1CisjZGVmaW5lIE5FVFNOTVBfRFNfV0FMS19USU1FX1JFU1VMVFNfU0lOR0xFCSAgICAgICAgNgogCiBvaWQgICAgICAgICAgICAgb2JqaWRfbWliW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEgfTsKIGludCAgICAgICAgICAgICBudW1wcmludGVkID0gMDsKQEAgLTkwLDcgKzkxLDkgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICJcdFx0XHQgIGM6ICBkbyBub3QgY2hlY2sgcmV0dXJuZWQgT0lEcyBhcmUgaW5jcmVhc2luZ1xuIik7CiAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAiXHRcdFx0ICB0OiAgRGlzcGxheSB3YWxsLWNsb2NrIHRpbWUgdG8gY29tcGxldGUgdGhlIHJlcXVlc3RcbiIpOworICAgICAgICAgICAgIlx0XHRcdCAgdDogIERpc3BsYXkgd2FsbC1jbG9jayB0aW1lIHRvIGNvbXBsZXRlIHRoZSB3YWxrXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICJcdFx0XHQgIFQ6ICBEaXNwbGF5IHdhbGwtY2xvY2sgdGltZSB0byBjb21wbGV0ZSBlYWNoIHJlcXVlc3RcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiXHRcdFx0ICBFIHtPSUR9OiAgRW5kIHRoZSB3YWxrIGF0IHRoZSBzcGVjaWZpZWQgT0lEXG4iKTsKIH0KIApAQCAtMTUxLDYgKzE1NCwxMSBAQAogICAgICAgICAgICAgY2FzZSAnRSc6CiAgICAgICAgICAgICAgICAgZW5kX25hbWUgPSBhcmd2W29wdGluZCsrXTsKICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAnVCc6CisgICAgICAgICAgICAgICAgbmV0c25tcF9kc190b2dnbGVfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUU19TSU5HTEUpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24gZmxhZyBwYXNzZWQgdG8gLUM6ICVjXG4iLApAQCAtMTgwLDcgKzE4OCw3IEBACiAgICAgaW50ICAgICAgICAgICAgIHN0YXR1cyA9IFNUQVRfRVJST1I7CiAgICAgaW50ICAgICAgICAgICAgIGNoZWNrOwogICAgIGludCAgICAgICAgICAgICBleGl0dmFsID0gMDsKLSAgICBzdHJ1Y3QgdGltZXZhbCAgdHYxLCB0djI7CisgICAgc3RydWN0IHRpbWV2YWwgIHR2MSwgdHYyLCB0dl9hLCB0dl9iOwogCiAgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0JPT0xFQU4sICJzbm1wd2FsayIsICJpbmNsdWRlUmVxdWVzdGVkIiwKIAkJCSAgICAgICBORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTIwMCw3ICsyMDgsMTEgQEAKIAogICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCAic25tcHdhbGsiLCAidGltZVJlc3VsdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCi0JCQkgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUUyk7CisKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fQk9PTEVBTiwgInNubXB3YWxrIiwgInRpbWVSZXN1bHRzU2luZ2xlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfV0FMS19USU1FX1JFU1VMVFNfU0lOR0xFKTsKIAogICAgIC8qCiAgICAgICogZ2V0IHRoZSBjb21tb24gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyAKQEAgLTI4Niw3ICsyOTgsNyBAQAogCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTKSkKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0djEsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2MSk7CiAgICAgd2hpbGUgKHJ1bm5pbmcpIHsKICAgICAgICAgLyoKICAgICAgICAgICogY3JlYXRlIFBEVSBmb3IgR0VUTkVYVCByZXF1ZXN0IGFuZCBhZGQgb2JqZWN0IG5hbWUgdG8gcmVxdWVzdCAKQEAgLTI5Nyw4ICszMDksMTIgQEAKICAgICAgICAgLyoKICAgICAgICAgICogZG8gdGhlIHJlcXVlc3QgCiAgICAgICAgICAqLworICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTX1NJTkdMRSkpCisgICAgICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2X2EpOwogICAgICAgICBzdGF0dXMgPSBzbm1wX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsICZyZXNwb25zZSk7CiAgICAgICAgIGlmIChzdGF0dXMgPT0gU1RBVF9TVUNDRVNTKSB7CisgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTX1NJTkdMRSkpCisgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0dl9iKTsKICAgICAgICAgICAgIGlmIChyZXNwb25zZS0+ZXJyc3RhdCA9PSBTTk1QX0VSUl9OT0VSUk9SKSB7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBjaGVjayByZXN1bHRpbmcgdmFyaWFibGVzIApAQCAtMzE0LDYgKzMzMCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbnVtcHJpbnRlZCsrOworICAgICAgICAgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTX1NJTkdMRSkpCisgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiVmIHM6ICIsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkgKHR2X2IudHZfdXNlYyAtIHR2X2EudHZfdXNlYykvMTAwMDAwMCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpICh0dl9iLnR2X3NlYyAtIHR2X2EudHZfc2VjKSk7CiAgICAgICAgICAgICAgICAgICAgIHByaW50X3ZhcmlhYmxlKHZhcnMtPm5hbWUsIHZhcnMtPm5hbWVfbGVuZ3RoLCB2YXJzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCh2YXJzLT50eXBlICE9IFNOTVBfRU5ET0ZNSUJWSUVXKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgKHZhcnMtPnR5cGUgIT0gU05NUF9OT1NVQ0hPQkpFQ1QpICYmCkBAIC0zODIsNyArNDAyLDcgQEAKICAgICB9CiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1dBTEtfVElNRV9SRVNVTFRTKSkKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0djIsIE5VTEwpOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnR2Mik7CiAKICAgICBpZiAobnVtcHJpbnRlZCA9PSAwICYmIHN0YXR1cyA9PSBTVEFUX1NVQ0NFU1MpIHsKICAgICAgICAgLyoKZGlmZiAtLWdpdCBhL2NvbmZpZy5ndWVzcyBiL2NvbmZpZy5ndWVzcwppbmRleCBjYTJhMDNjLi4yODUyMzc4IDEwMDc1NQotLS0gYS9jb25maWcuZ3Vlc3MKKysrIGIvY29uZmlnLmd1ZXNzCkBAIC0xLDEwICsxLDEwIEBACiAjISAvYmluL3NoCiAjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCiAjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAotIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwCiAjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOC0wMS0wOCcKK3RpbWVzdGFtcD0nMjAxMC0wOC0yMScKIAogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjcsMTYgKzI3LDE2IEBACiAjIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KIAogCi0jIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lciA8cGVyQGJvdGhuZXIuY29tPi4KLSMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0Ci0jIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIENoYW5nZUxvZyBlbnRyeS4KKyMgT3JpZ2luYWxseSB3cml0dGVuIGJ5IFBlciBCb3RobmVyLiAgUGxlYXNlIHNlbmQgcGF0Y2hlcyAoY29udGV4dAorIyBkaWZmIGZvcm1hdCkgdG8gPGNvbmZpZy1wYXRjaGVzQGdudS5vcmc+IGFuZCBpbmNsdWRlIGEgQ2hhbmdlTG9nCisjIGVudHJ5LgogIwogIyBUaGlzIHNjcmlwdCBhdHRlbXB0cyB0byBndWVzcyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZSBzaW1pbGFyIHRvCiAjIGNvbmZpZy5zdWIuICBJZiBpdCBzdWNjZWVkcywgaXQgcHJpbnRzIHRoZSBzeXN0ZW0gbmFtZSBvbiBzdGRvdXQsIGFuZAogIyBleGl0cyB3aXRoIDAuICBPdGhlcndpc2UsIGl0IGV4aXRzIHdpdGggMS4KICMKLSMgVGhlIHBsYW4gaXMgdGhhdCB0aGlzIGNhbiBiZSBjYWxsZWQgYnkgY29uZmlndXJlIHNjcmlwdHMgaWYgeW91Ci0jIGRvbid0IHNwZWNpZnkgYW4gZXhwbGljaXQgYnVpbGQgc3lzdGVtIHR5cGUuCisjIFlvdSBjYW4gZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIHNjcmlwdCBmcm9tOgorIyBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLmd1ZXNzO2hiPUhFQUQKIAogbWU9YGVjaG8gIiQwIiB8IHNlZCAtZSAncywuKi8sLCdgCiAKQEAgLTU2LDggKzU2LDkgQEAKIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCiAKIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KLUNvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwKLTIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgKEMpIDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsCisyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUKK1NvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTkxLDcgKzkyLDcgQEAKICAgZXhpdCAxCiBmaQogCi10cmFwICdleGl0IDEnIDEgMiAxNQordHJhcCAnZXhpdCAxJyBIVVAgSU5UIFRFUk0KIAogIyBDQ19GT1JfQlVJTEQgLS0gY29tcGlsZXIgdXNlZCBieSB0aGlzIHNjcmlwdC4gTm90ZSB0aGF0IHRoZSB1c2Ugb2YgYQogIyBjb21waWxlciB0byBhaWQgaW4gc3lzdGVtIGRldGVjdGlvbiBpcyBkaXNjb3VyYWdlZCBhcyBpdCByZXF1aXJlcwpAQCAtMTA1LDcgKzEwNiw3IEBACiAKIHNldF9jY19mb3JfYnVpbGQ9JwogdHJhcCAiZXhpdGNvZGU9XCQ/OyAocm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGwpICYmIGV4aXQgXCRleGl0Y29kZSIgMCA7Ci10cmFwICJybSAtZiBcJHRtcGZpbGVzIDI+L2Rldi9udWxsOyBybWRpciBcJHRtcCAyPi9kZXYvbnVsbDsgZXhpdCAxIiAxIDIgMTMgMTUgOwordHJhcCAicm0gLWYgXCR0bXBmaWxlcyAyPi9kZXYvbnVsbDsgcm1kaXIgXCR0bXAgMj4vZGV2L251bGw7IGV4aXQgMSIgSFVQIElOVCBQSVBFIFRFUk0gOwogOiAke1RNUERJUj0vdG1wfSA7CiAgeyB0bXA9YCh1bWFzayAwNzcgJiYgbWt0ZW1wIC1kICIkVE1QRElSL2NnWFhYWFhYIikgMj4vZGV2L251bGxgICYmIHRlc3QgLW4gIiR0bXAiICYmIHRlc3QgLWQgIiR0bXAiIDsgfSB8fAogIHsgdGVzdCAtbiAiJFJBTkRPTSIgJiYgdG1wPSRUTVBESVIvY2ckJC0kUkFORE9NICYmICh1bWFzayAwNzcgJiYgbWtkaXIgJHRtcCkgOyB9IHx8CkBAIC0xNzAsNyArMTcxLDcgQEAKIAkgICAgYXJtKnxpMzg2fG02OGt8bnMzMmt8c2gzKnxzcGFyY3x2YXgpCiAJCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKIAkJaWYgZWNobyBfX0VMRl9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKLQkJCXwgZ3JlcCBfX0VMRl9fID4vZGV2L251bGwKKwkJCXwgZ3JlcCAtcSBfX0VMRl9fCiAJCXRoZW4KIAkJICAgICMgT25jZSBhbGwgdXRpbGl0aWVzIGNhbiBiZSBFQ09GRiAobmV0YnNkZWNvZmYpIG9yIGEub3V0IChuZXRic2Rhb3V0KS4KIAkJICAgICMgUmV0dXJuIG5ldGJzZCBmb3IgZWl0aGVyLiAgRklYPwpAQCAtMzI0LDE0ICszMjUsMzMgQEAKIAljYXNlIGAvdXNyL2Jpbi91bmFtZSAtcGAgaW4KIAkgICAgc3BhcmMpIGVjaG8gc3BhcmMtaWNsLW54NzsgZXhpdCA7OwogCWVzYWMgOzsKKyAgICBzMzkweDpTdW5PUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAorCWV4aXQgOzsKICAgICBzdW40SDpTdW5PUzo1Lio6KikKIAllY2hvIHNwYXJjLWhhbC1zb2xhcmlzMmBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1teLl0qLy8nYAogCWV4aXQgOzsKICAgICBzdW40KjpTdW5PUzo1Lio6KiB8IHRhZHBvbGUqOlN1bk9TOjUuKjoqKQogCWVjaG8gc3BhcmMtc3VuLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCiAJZXhpdCA7OworICAgIGk4NnBjOkF1cm9yYVVYOjUuKjoqIHwgaTg2eGVuOkF1cm9yYVVYOjUuKjoqKQorCWVjaG8gaTM4Ni1wYy1hdXJvcmF1eCR7VU5BTUVfUkVMRUFTRX0KKwlleGl0IDs7CiAgICAgaTg2cGM6U3VuT1M6NS4qOiogfCBpODZ4ZW46U3VuT1M6NS4qOiopCi0JZWNobyBpMzg2LXBjLXNvbGFyaXMyYGVjaG8gJHtVTkFNRV9SRUxFQVNFfXxzZWQgLWUgJ3MvW14uXSovLydgCisJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAorCVNVTl9BUkNIPSJpMzg2IgorCSMgSWYgdGhlcmUgaXMgYSBjb21waWxlciwgc2VlIGlmIGl0IGlzIGNvbmZpZ3VyZWQgZm9yIDY0LWJpdCBvYmplY3RzLgorCSMgTm90ZSB0aGF0IHRoZSBTdW4gY2MgZG9lcyBub3QgdHVybiBfX0xQNjRfXyBpbnRvIDEgbGlrZSBnY2MgZG9lcy4KKwkjIFRoaXMgdGVzdCB3b3JrcyBmb3IgYm90aCBjb21waWxlcnMuCisJaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gJ25vX2NvbXBpbGVyX2ZvdW5kJyBdOyB0aGVuCisJICAgIGlmIChlY2hvICcjaWZkZWYgX19hbWQ2NCc7IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCisJCShDQ09QVFM9ICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCWdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJICAgIHRoZW4KKwkJU1VOX0FSQ0g9Ing4Nl82NCIKKwkgICAgZmkKKwlmaQorCWVjaG8gJHtTVU5fQVJDSH0tcGMtc29sYXJpczJgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bXi5dKi8vJ2AKIAlleGl0IDs7CiAgICAgc3VuNCo6U3VuT1M6Nio6KikKIAkjIEFjY29yZGluZyB0byBjb25maWcuc3ViLCB0aGlzIGlzIHRoZSBwcm9wZXIgd2F5IHRvIGNhbm9uaWNhbGl6ZQpAQCAtNTMyLDcgKzU1Miw3IEBACiAJCWVjaG8gcnM2MDAwLWlibS1haXgzLjIKIAlmaQogCWV4aXQgOzsKLSAgICAqOkFJWDoqOls0NTZdKQorICAgICo6QUlYOio6WzQ1NjddKQogCUlCTV9DUFVfSUQ9YC91c3Ivc2Jpbi9sc2RldiAtQyAtYyBwcm9jZXNzb3IgLVMgYXZhaWxhYmxlIHwgc2VkIDFxIHwgYXdrICd7IHByaW50ICQxIH0nYAogCWlmIC91c3Ivc2Jpbi9sc2F0dHIgLUVsICR7SUJNX0NQVV9JRH0gfCBncmVwICcgUE9XRVInID4vZGV2L251bGwgMj4mMTsgdGhlbgogCQlJQk1fQVJDSD1yczYwMDAKQEAgLTY0MCw3ICs2NjAsNyBAQAogCSAgICAjID0+IGhwcGE2NC1ocC1ocHV4MTEuMjMKIAogCSAgICBpZiBlY2hvIF9fTFA2NF9fIHwgKENDT1BUUz0gJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8Ci0JCWdyZXAgX19MUDY0X18gPi9kZXYvbnVsbAorCQlncmVwIC1xIF9fTFA2NF9fCiAJICAgIHRoZW4KIAkJSFBfQVJDSD0iaHBwYTIuMHciCiAJICAgIGVsc2UKQEAgLTc5MSwxMiArODExLDEyIEBACiAgICAgaSo6UFcqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLXB3MzIKIAlleGl0IDs7Ci0gICAgKjpJbnRlcml4KjpbMzQ1Nl0qKQorICAgICo6SW50ZXJpeCo6KikKICAgICAJY2FzZSAke1VOQU1FX01BQ0hJTkV9IGluCiAJICAgIHg4NikKIAkJZWNobyBpNTg2LXBjLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CiAJCWV4aXQgOzsKLQkgICAgRU02NFQgfCBhdXRoZW50aWNhbWQpCisJICAgIGF1dGhlbnRpY2FtZCB8IGdlbnVpbmVpbnRlbCB8IEVNNjRUKQogCQllY2hvIHg4Nl82NC11bmtub3duLWludGVyaXgke1VOQU1FX1JFTEVBU0V9CiAJCWV4aXQgOzsKIAkgICAgSUE2NCkKQEAgLTgwNiw2ICs4MjYsOSBAQAogICAgIFszNDVdODY6V2luZG93c185NToqIHwgWzM0NV04NjpXaW5kb3dzXzk4OiogfCBbMzQ1XTg2OldpbmRvd3NfTlQ6KikKIAllY2hvIGkke1VOQU1FX01BQ0hJTkV9LXBjLW1rcwogCWV4aXQgOzsKKyAgICA4NjY0OldpbmRvd3NfTlQ6KikKKwllY2hvIHg4Nl82NC1wYy1ta3MKKwlleGl0IDs7CiAgICAgaSo6V2luZG93c19OVCo6KiB8IFBlbnRpdW0qOldpbmRvd3NfTlQqOiopCiAJIyBIb3cgZG8gd2Uga25vdyBpdCdzIEludGVyaXggcmF0aGVyIHRoYW4gdGhlIGdlbmVyaWMgUE9TSVggc3Vic3lzdGVtPwogCSMgSXQgYWxzbyBjb25mbGljdHMgd2l0aCBwcmUtMi4wIHZlcnNpb25zIG9mIEFUJlQgVVdJTi4gU2hvdWxkIHdlCkBAIC04MzUsNiArODU4LDIwIEBACiAgICAgaSo4NjpNaW5peDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLW1pbml4CiAJZXhpdCA7OworICAgIGFscGhhOkxpbnV4Oio6KikKKwljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgorCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKKwkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OworCSAgUENBNTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OworCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKKwkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OworCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7CisgICAgICAgIGVzYWMKKwlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKKwlpZiB0ZXN0ICIkPyIgPSAwIDsgdGhlbiBMSUJDPSJsaWJjMSIgOyBlbHNlIExJQkM9IiIgOyBmaQorCWVjaG8gJHtVTkFNRV9NQUNISU5FfS11bmtub3duLWxpbnV4LWdudSR7TElCQ30KKwlleGl0IDs7CiAgICAgYXJtKjpMaW51eDoqOiopCiAJZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAogCWlmIGVjaG8gX19BUk1fRUFCSV9fIHwgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsIFwKQEAgLTg1Nyw2ICs4OTQsMTcgQEAKICAgICBmcnY6TGludXg6KjoqKQogICAgIAllY2hvIGZydi11bmtub3duLWxpbnV4LWdudQogCWV4aXQgOzsKKyAgICBpKjg2OkxpbnV4Oio6KikKKwlMSUJDPWdudQorCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKKwlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYworCSNpZmRlZiBfX2RpZXRsaWJjX18KKwlMSUJDPWRpZXRsaWJjCisJI2VuZGlmCitFT0YKKwlldmFsIGAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgZ3JlcCAnXkxJQkMnYAorCWVjaG8gIiR7VU5BTUVfTUFDSElORX0tcGMtbGludXgtJHtMSUJDfSIKKwlleGl0IDs7CiAgICAgaWE2NDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwpAQCAtODY2LDc0ICs5MTQsMzMgQEAKICAgICBtNjgqOkxpbnV4Oio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7Ci0gICAgbWlwczpMaW51eDoqOiopCisgICAgbWlwczpMaW51eDoqOiogfCBtaXBzNjQ6TGludXg6KjoqKQogCWV2YWwgJHNldF9jY19mb3JfYnVpbGQKIAlzZWQgJ3MvXgkvLycgPDwgRU9GID4kZHVtbXkuYwogCSN1bmRlZiBDUFUKLQkjdW5kZWYgbWlwcwotCSN1bmRlZiBtaXBzZWwKKwkjdW5kZWYgJHtVTkFNRV9NQUNISU5FfQorCSN1bmRlZiAke1VOQU1FX01BQ0hJTkV9ZWwKIAkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQotCUNQVT1taXBzZWwKKwlDUFU9JHtVTkFNRV9NQUNISU5FfWVsCiAJI2Vsc2UKIAkjaWYgZGVmaW5lZChfX01JUFNFQl9fKSB8fCBkZWZpbmVkKF9fTUlQU0VCKSB8fCBkZWZpbmVkKF9NSVBTRUIpIHx8IGRlZmluZWQoTUlQU0VCKQotCUNQVT1taXBzCisJQ1BVPSR7VU5BTUVfTUFDSElORX0KIAkjZWxzZQogCUNQVT0KIAkjZW5kaWYKIAkjZW5kaWYKIEVPRgotCWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLQkgICAgL15DUFUvewotCQlzOiA6OmcKLQkJcAotCSAgICB9J2AiCi0JdGVzdCB4IiR7Q1BVfSIgIT0geCAmJiB7IGVjaG8gIiR7Q1BVfS11bmtub3duLWxpbnV4LWdudSI7IGV4aXQ7IH0KLQk7OwotICAgIG1pcHM2NDpMaW51eDoqOiopCi0JZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCi0JI3VuZGVmIENQVQotCSN1bmRlZiBtaXBzNjQKLQkjdW5kZWYgbWlwczY0ZWwKLQkjaWYgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fTUlQU0VMKSB8fCBkZWZpbmVkKF9NSVBTRUwpIHx8IGRlZmluZWQoTUlQU0VMKQotCUNQVT1taXBzNjRlbAotCSNlbHNlCi0JI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChfX01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKLQlDUFU9bWlwczY0Ci0JI2Vsc2UKLQlDUFU9Ci0JI2VuZGlmCi0JI2VuZGlmCi1FT0YKLQlldmFsICJgJENDX0ZPUl9CVUlMRCAtRSAkZHVtbXkuYyAyPi9kZXYvbnVsbCB8IHNlZCAtbiAnCi0JICAgIC9eQ1BVL3sKLQkJczogOjpnCi0JCXAKLQkgICAgfSdgIgorCWV2YWwgYCRDQ19GT1JfQlVJTEQgLUUgJGR1bW15LmMgMj4vZGV2L251bGwgfCBncmVwICdeQ1BVJ2AKIAl0ZXN0IHgiJHtDUFV9IiAhPSB4ICYmIHsgZWNobyAiJHtDUFV9LXVua25vd24tbGludXgtZ251IjsgZXhpdDsgfQogCTs7CiAgICAgb3IzMjpMaW51eDoqOiopCiAJZWNobyBvcjMyLXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OwotICAgIHBwYzpMaW51eDoqOiopCi0JZWNobyBwb3dlcnBjLXVua25vd24tbGludXgtZ251CisgICAgcGFkcmU6TGludXg6KjoqKQorCWVjaG8gc3BhcmMtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7Ci0gICAgcHBjNjQ6TGludXg6KjoqKQotCWVjaG8gcG93ZXJwYzY0LXVua25vd24tbGludXgtZ251Ci0JZXhpdCA7OwotICAgIGFscGhhOkxpbnV4Oio6KikKLQljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcgPCAvcHJvYy9jcHVpbmZvYCBpbgotCSAgRVY1KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjUgOzsKLQkgIEVWNTYpICBVTkFNRV9NQUNISU5FPWFscGhhZXY1NiA7OwotCSAgUENBNTYpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OwotCSAgUENBNTcpIFVOQU1FX01BQ0hJTkU9YWxwaGFwY2E1NiA7OwotCSAgRVY2KSAgIFVOQU1FX01BQ0hJTkU9YWxwaGFldjYgOzsKLQkgIEVWNjcpICBVTkFNRV9NQUNISU5FPWFscGhhZXY2NyA7OwotCSAgRVY2OCopIFVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7Ci0gICAgICAgIGVzYWMKLQlvYmpkdW1wIC0tcHJpdmF0ZS1oZWFkZXJzIC9iaW4vc2ggfCBncmVwIGxkLnNvLjEgPi9kZXYvbnVsbAotCWlmIHRlc3QgIiQ/IiA9IDAgOyB0aGVuIExJQkM9ImxpYmMxIiA7IGVsc2UgTElCQz0iIiA7IGZpCi0JZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251JHtMSUJDfQorICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCisJZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgcGFyaXNjOkxpbnV4Oio6KiB8IGhwcGE6TGludXg6KjoqKQogCSMgTG9vayBmb3IgQ1BVIGxldmVsCkBAIC05NDMsOCArOTUwLDExIEBACiAJICAqKSAgICBlY2hvIGhwcGEtdW5rbm93bi1saW51eC1nbnUgOzsKIAllc2FjCiAJZXhpdCA7OwotICAgIHBhcmlzYzY0OkxpbnV4Oio6KiB8IGhwcGE2NDpMaW51eDoqOiopCi0JZWNobyBocHBhNjQtdW5rbm93bi1saW51eC1nbnUKKyAgICBwcGM2NDpMaW51eDoqOiopCisJZWNobyBwb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUKKwlleGl0IDs7CisgICAgcHBjOkxpbnV4Oio6KikKKwllY2hvIHBvd2VycGMtdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7CiAgICAgczM5MDpMaW51eDoqOiogfCBzMzkweDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LWlibS1saW51eApAQCAtOTU4LDYgKzk2OCw5IEBACiAgICAgc3BhcmM6TGludXg6KjoqIHwgc3BhcmM2NDpMaW51eDoqOiopCiAJZWNobyAke1VOQU1FX01BQ0hJTkV9LXVua25vd24tbGludXgtZ251CiAJZXhpdCA7OworICAgIHRpbGUqOkxpbnV4Oio6KikKKwllY2hvICR7VU5BTUVfTUFDSElORX0tdGlsZXJhLWxpbnV4LWdudQorCWV4aXQgOzsKICAgICB2YXg6TGludXg6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1kZWMtbGludXgtZ251CiAJZXhpdCA7OwpAQCAtOTY3LDY5ICs5ODAsNiBAQAogICAgIHh0ZW5zYSo6TGludXg6KjoqKQogICAgIAllY2hvICR7VU5BTUVfTUFDSElORX0tdW5rbm93bi1saW51eC1nbnUKIAlleGl0IDs7Ci0gICAgaSo4NjpMaW51eDoqOiopCi0JIyBUaGUgQkZEIGxpbmtlciBrbm93cyB3aGF0IHRoZSBkZWZhdWx0IG9iamVjdCBmaWxlIGZvcm1hdCBpcywgc28KLQkjIGZpcnN0IHNlZSBpZiBpdCB3aWxsIHRlbGwgdXMuIGNkIHRvIHRoZSByb290IGRpcmVjdG9yeSB0byBwcmV2ZW50Ci0JIyBwcm9ibGVtcyB3aXRoIG90aGVyIHByb2dyYW1zIG9yIGRpcmVjdG9yaWVzIGNhbGxlZCBgbGQnIGluIHRoZSBwYXRoLgotCSMgU2V0IExDX0FMTD1DIHRvIGVuc3VyZSBsZCBvdXRwdXRzIG1lc3NhZ2VzIGluIEVuZ2xpc2guCi0JbGRfc3VwcG9ydGVkX3RhcmdldHM9YGNkIC87IExDX0FMTD1DIGxkIC0taGVscCAyPiYxIFwKLQkJCSB8IHNlZCAtbmUgJy9zdXBwb3J0ZWQgdGFyZ2V0czovIWQKLQkJCQkgICAgcy9bIAldWyAJXSovIC9nCi0JCQkJICAgIHMvLipzdXBwb3J0ZWQgdGFyZ2V0czogKi8vCi0JCQkJICAgIHMvIC4qLy8KLQkJCQkgICAgcCdgCi0gICAgICAgIGNhc2UgIiRsZF9zdXBwb3J0ZWRfdGFyZ2V0cyIgaW4KLQkgIGVsZjMyLWkzODYpCi0JCVRFTlRBVElWRT0iJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC1nbnUiCi0JCTs7Ci0JICBhLm91dC1pMzg2LWxpbnV4KQotCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudWFvdXQiCi0JCWV4aXQgOzsKLQkgIGNvZmYtaTM4NikKLQkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC1nbnVjb2ZmIgotCQlleGl0IDs7Ci0JICAiIikKLQkJIyBFaXRoZXIgYSBwcmUtQkZEIGEub3V0IGxpbmtlciAobGludXgtZ251b2xkbGQpIG9yCi0JCSMgb25lIHRoYXQgZG9lcyBub3QgZ2l2ZSB1cyB1c2VmdWwgLS1oZWxwLgotCQllY2hvICIke1VOQU1FX01BQ0hJTkV9LXBjLWxpbnV4LWdudW9sZGxkIgotCQlleGl0IDs7Ci0JZXNhYwotCSMgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGRlZmF1bHQgY29tcGlsZXIgaXMgYS5vdXQgb3IgZWxmCi0JZXZhbCAkc2V0X2NjX2Zvcl9idWlsZAotCXNlZCAncy9eCS8vJyA8PCBFT0YgPiRkdW1teS5jCi0JI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0JI2lmZGVmIF9fRUxGX18KLQkjIGlmZGVmIF9fR0xJQkNfXwotCSMgIGlmIF9fR0xJQkNfXyA+PSAyCi0JTElCQz1nbnUKLQkjICBlbHNlCi0JTElCQz1nbnVsaWJjMQotCSMgIGVuZGlmCi0JIyBlbHNlCi0JTElCQz1nbnVsaWJjMQotCSMgZW5kaWYKLQkjZWxzZQotCSNpZiBkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpIHx8IGRlZmluZWQoX19QR0kpIHx8IGRlZmluZWQoX19TVU5QUk9fQykgfHwgZGVmaW5lZChfX1NVTlBST19DQykKLQlMSUJDPWdudQotCSNlbHNlCi0JTElCQz1nbnVhb3V0Ci0JI2VuZGlmCi0JI2VuZGlmCi0JI2lmZGVmIF9fZGlldGxpYmNfXwotCUxJQkM9ZGlldGxpYmMKLQkjZW5kaWYKLUVPRgotCWV2YWwgImAkQ0NfRk9SX0JVSUxEIC1FICRkdW1teS5jIDI+L2Rldi9udWxsIHwgc2VkIC1uICcKLQkgICAgL15MSUJDL3sKLQkJczogOjpnCi0JCXAKLQkgICAgfSdgIgotCXRlc3QgeCIke0xJQkN9IiAhPSB4ICYmIHsKLQkJZWNobyAiJHtVTkFNRV9NQUNISU5FfS1wYy1saW51eC0ke0xJQkN9IgotCQlleGl0Ci0JfQotCXRlc3QgeCIke1RFTlRBVElWRX0iICE9IHggJiYgeyBlY2hvICIke1RFTlRBVElWRX0iOyBleGl0OyB9Ci0JOzsKICAgICBpKjg2OkRZTklYL3B0eDo0KjoqKQogCSMgcHR4IDQuMCBkb2VzIHVuYW1lIC1zIGNvcnJlY3RseSwgd2l0aCBEWU5JWC9wdHggaW4gdGhlcmUuCiAJIyBlYXJsaWVyIHZlcnNpb25zIGFyZSBtZXNzZWQgdXAgYW5kIHB1dCB0aGUgbm9kZW5hbWUgaW4gYm90aApAQCAtMTA1OCw3ICsxMDA4LDcgQEAKICAgICBpKjg2OnN5bGxhYmxlOio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtc3lsbGFibGUKIAlleGl0IDs7Ci0gICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LjAqOiopCisgICAgaSo4NjpMeW54T1M6Mi4qOiogfCBpKjg2Okx5bnhPUzozLlswMV0qOiogfCBpKjg2Okx5bnhPUzo0LlswMl0qOiopCiAJZWNobyBpMzg2LXVua25vd24tbHlueG9zJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKICAgICBpKjg2OipET1M6KjoqKQpAQCAtMTEwMiw4ICsxMDUyLDExIEBACiAgICAgcGM6KjoqOiopCiAJIyBMZWZ0IGhlcmUgZm9yIGNvbXBhdGliaWxpdHk6CiAgICAgICAgICMgdW5hbWUgLW0gcHJpbnRzIGZvciBESkdQUCBhbHdheXMgJ3BjJywgYnV0IGl0IHByaW50cyBub3RoaW5nIGFib3V0Ci0gICAgICAgICMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3VtaW5nIGkzODYuCi0JZWNobyBpMzg2LXBjLW1zZG9zZGpncHAKKyAgICAgICAgIyB0aGUgcHJvY2Vzc29yLCBzbyB3ZSBwbGF5IHNhZmUgYnkgYXNzdW1pbmcgaTU4Ni4KKwkjIE5vdGU6IHdoYXRldmVyIHRoaXMgaXMsIGl0IE1VU1QgYmUgdGhlIHNhbWUgYXMgd2hhdCBjb25maWcuc3ViCisJIyBwcmludHMgZm9yIHRoZSAiZGpncHAiIGhvc3QsIG9yIGVsc2UgR0RCIGNvbmZpZ3VyeSB3aWxsIGRlY2lkZSB0aGF0CisJIyB0aGlzIGlzIGEgY3Jvc3MtYnVpbGQuCisJZWNobyBpNTg2LXBjLW1zZG9zZGpncHAKICAgICAgICAgZXhpdCA7OwogICAgIEludGVsOk1hY2g6Myo6KikKIAllY2hvIGkzODYtcGMtbWFjaDMKQEAgLTExNDEsNiArMTA5NCwxNiBAQAogICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQuMDoqKQogICAgICAgICAvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKICAgICAgICAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQ7IGV4aXQ7IH0gOzsKKyAgICBOQ1IqOio6NC4yOiogfCBNUFJBUyo6Kjo0LjI6KikKKwlPU19SRUw9Jy4zJworCXRlc3QgLXIgL2V0Yy8ucmVsaWQgXAorCSAgICAmJiBPU19SRUw9LmBzZWQgLW4gJ3MvW14gXSogW14gXSogXChbMC05XVswLTldXCkuKi9cMS9wJyA8IC9ldGMvLnJlbGlkYAorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTQ4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgZW50aXVtID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfQorCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCAvYmluL2dyZXAgcHRlcm9uID4vZGV2L251bGwgXAorCSAgICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyR7T1NfUkVMfTsgZXhpdDsgfSA7OwogICAgIG02OCo6THlueE9TOjIuKjoqIHwgbTY4KjpMeW54T1M6My4wKjoqKQogCWVjaG8gbTY4ay11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CkBAIC0xMTUzLDcgKzExMTYsNyBAQAogICAgIHJzNjAwMDpMeW54T1M6Mi4qOiopCiAJZWNobyByczYwMDAtdW5rbm93bi1seW54b3Mke1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwotICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC4wKjoqKQorICAgIFBvd2VyUEM6THlueE9TOjIuKjoqIHwgUG93ZXJQQzpMeW54T1M6My5bMDFdKjoqIHwgUG93ZXJQQzpMeW54T1M6NC5bMDJdKjoqKQogCWVjaG8gcG93ZXJwYy11bmtub3duLWx5bnhvcyR7VU5BTUVfUkVMRUFTRX0KIAlleGl0IDs7CiAgICAgU01bQkVdUzpVTklYX1NWOio6KikKQEAgLTEyMTYsNiArMTE3OSw5IEBACiAgICAgQmVQQzpCZU9TOio6KikJIyBCZU9TIHJ1bm5pbmcgb24gSW50ZWwgUEMgY29tcGF0aWJsZS4KIAllY2hvIGk1ODYtcGMtYmVvcwogCWV4aXQgOzsKKyAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCisJZWNobyBpNTg2LXBjLWhhaWt1CisJZXhpdCA7OwogICAgIFNYLTQ6U1VQRVItVVg6KjoqKQogCWVjaG8gc3g0LW5lYy1zdXBlcnV4JHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKQEAgLTEyNDMsNiArMTIwOSwxNiBAQAogICAgICo6RGFyd2luOio6KikKIAlVTkFNRV9QUk9DRVNTT1I9YHVuYW1lIC1wYCB8fCBVTkFNRV9QUk9DRVNTT1I9dW5rbm93bgogCWNhc2UgJFVOQU1FX1BST0NFU1NPUiBpbgorCSAgICBpMzg2KQorCQlldmFsICRzZXRfY2NfZm9yX2J1aWxkCisJCWlmIFsgIiRDQ19GT1JfQlVJTEQiICE9ICdub19jb21waWxlcl9mb3VuZCcgXTsgdGhlbgorCQkgIGlmIChlY2hvICcjaWZkZWYgX19MUDY0X18nOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAorCQkgICAgICAoQ0NPUFRTPSAkQ0NfRk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAorCQkgICAgICBncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAorCQkgIHRoZW4KKwkJICAgICAgVU5BTUVfUFJPQ0VTU09SPSJ4ODZfNjQiCisJCSAgZmkKKwkJZmkgOzsKIAkgICAgdW5rbm93bikgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMgOzsKIAllc2FjCiAJZWNobyAke1VOQU1FX1BST0NFU1NPUn0tYXBwbGUtZGFyd2luJHtVTkFNRV9SRUxFQVNFfQpAQCAtMTMyNCw2ICsxMzAwLDkgQEAKICAgICBpKjg2OnJkb3M6KjoqKQogCWVjaG8gJHtVTkFNRV9NQUNISU5FfS1wYy1yZG9zCiAJZXhpdCA7OworICAgIGkqODY6QVJPUzoqOiopCisJZWNobyAke1VOQU1FX01BQ0hJTkV9LXBjLWFyb3MKKwlleGl0IDs7CiBlc2FjCiAKICNlY2hvICcoTm8gdW5hbWUgY29tbWFuZCBvciB1bmFtZSBvdXRwdXQgbm90IHJlY29nbml6ZWQuKScgMT4mMgpAQCAtMTQ4NCw5ICsxNDYzLDkgQEAKIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UKIGRvd25sb2FkIHRoZSBtb3N0IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJvbQogCi0gIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2NnaS1iaW4vdmlld2N2cy8qY2hlY2tvdXQqL2NvbmZpZy9jb25maWcvY29uZmlnLmd1ZXNzCisgIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAogYW5kCi0gIGh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2NnaS1iaW4vdmlld2N2cy8qY2hlY2tvdXQqL2NvbmZpZy9jb25maWcvY29uZmlnLnN1YgorICBodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWNvbmZpZy5naXQ7YT1ibG9iX3BsYWluO2Y9Y29uZmlnLnN1YjtoYj1IRUFECiAKIElmIHRoZSB2ZXJzaW9uIHlvdSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQogc2VuZCB0aGUgZm9sbG93aW5nIGRhdGEgYW5kIGFueSBpbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUKZGlmZiAtLWdpdCBhL2NvbmZpZy5zdWIgYi9jb25maWcuc3ViCmluZGV4IDY3NTk4MjUuLjMyMGUzMDMgMTAwNzU1Ci0tLSBhL2NvbmZpZy5zdWIKKysrIGIvY29uZmlnLnN1YgpAQCAtMSwxMCArMSwxMCBAQAogIyEgL2Jpbi9zaAogIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCiAjICAgQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAotIyAgIDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgKKyMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwCiAjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOC0wMS0xNicKK3RpbWVzdGFtcD0nMjAxMC0wOS0xMScKIAogIyBUaGlzIGZpbGUgaXMgKGluIHByaW5jaXBsZSkgY29tbW9uIHRvIEFMTCBHTlUgc29mdHdhcmUuCiAjIFRoZSBwcmVzZW5jZSBvZiBhIG1hY2hpbmUgaW4gdGhpcyBmaWxlIHN1Z2dlc3RzIHRoYXQgU09NRSBHTlUgc29mdHdhcmUKQEAgLTMyLDEzICszMiwxNiBAQAogCiAKICMgUGxlYXNlIHNlbmQgcGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uICBTdWJtaXQgYSBjb250ZXh0Ci0jIGRpZmYgYW5kIGEgcHJvcGVybHkgZm9ybWF0dGVkIENoYW5nZUxvZyBlbnRyeS4KKyMgZGlmZiBhbmQgYSBwcm9wZXJseSBmb3JtYXR0ZWQgR05VIENoYW5nZUxvZyBlbnRyeS4KICMKICMgQ29uZmlndXJhdGlvbiBzdWJyb3V0aW5lIHRvIHZhbGlkYXRlIGFuZCBjYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9uIHR5cGUuCiAjIFN1cHBseSB0aGUgc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24gdHlwZSBhcyBhbiBhcmd1bWVudC4KICMgSWYgaXQgaXMgaW52YWxpZCwgd2UgcHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBvbiBzdGRlcnIgYW5kIGV4aXQgd2l0aCBjb2RlIDEuCiAjIE90aGVyd2lzZSwgd2UgcHJpbnQgdGhlIGNhbm9uaWNhbCBjb25maWcgdHlwZSBvbiBzdGRvdXQgYW5kIHN1Y2NlZWQuCiAKKyMgWW91IGNhbiBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgc2NyaXB0IGZyb206CisjIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKwogIyBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gYmUgdGhlIHNhbWUgZm9yIGFsbCBHTlUgcGFja2FnZXMKICMgYW5kIHJlY29nbml6ZSBhbGwgdGhlIENQVSB0eXBlcywgc3lzdGVtIHR5cGVzIGFuZCBhbGlhc2VzCiAjIHRoYXQgYXJlIG1lYW5pbmdmdWwgd2l0aCAqYW55KiBHTlUgc29mdHdhcmUuCkBAIC03Miw4ICs3NSw5IEBACiB2ZXJzaW9uPSJcCiBHTlUgY29uZmlnLnN1YiAoJHRpbWVzdGFtcCkKIAotQ29weXJpZ2h0IChDKSAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLAotMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwKKzIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZQorU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgpAQCAtMTIwLDggKzEyNCwxMCBAQAogIyBIZXJlIHdlIG11c3QgcmVjb2duaXplIGFsbCB0aGUgdmFsaWQgS0VSTkVMLU9TIGNvbWJpbmF0aW9ucy4KIG1heWJlX29zPWBlY2hvICQxIHwgc2VkICdzL15cKC4qXCktXChbXi1dKi1bXi1dKlwpJC9cMi8nYAogY2FzZSAkbWF5YmVfb3MgaW4KLSAgbnRvLXFueCogfCBsaW51eC1nbnUqIHwgbGludXgtZGlldGxpYmMgfCBsaW51eC1uZXdsaWIqIHwgbGludXgtdWNsaWJjKiB8IFwKLSAgdWNsaW51eC11Y2xpYmMqIHwgdWNsaW51eC1nbnUqIHwga2ZyZWVic2QqLWdudSogfCBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBudG8tcW54KiB8IGxpbnV4LWdudSogfCBsaW51eC1hbmRyb2lkKiB8IGxpbnV4LWRpZXRsaWJjIHwgbGludXgtbmV3bGliKiB8IFwKKyAgbGludXgtdWNsaWJjKiB8IHVjbGludXgtdWNsaWJjKiB8IHVjbGludXgtZ251KiB8IGtmcmVlYnNkKi1nbnUqIHwgXAorICBrbmV0YnNkKi1nbnUqIHwgbmV0YnNkKi1nbnUqIHwgXAorICBrb3BlbnNvbGFyaXMqLWdudSogfCBcCiAgIHN0b3JtLWNoYW9zKiB8IG9zMi1lbXgqIHwgcnRtay1ub3ZhKikKICAgICBvcz0tJG1heWJlX29zCiAgICAgYmFzaWNfbWFjaGluZT1gZWNobyAkMSB8IHNlZCAncy9eXCguKlwpLVwoW14tXSotW14tXSpcKSQvXDEvJ2AKQEAgLTE0OCwxMCArMTU0LDEzIEBACiAJLWNvbnZlcmdlbnQqIHwgLW5jciogfCAtbmV3cyB8IC0zMiogfCAtMzYwMCogfCAtMzEwMCogfCAtaGl0YWNoaSogfFwKIAktY1sxMjNdKiB8IC1jb252ZXgqIHwgLXN1biB8IC1jcmRzIHwgLW9tcm9uKiB8IC1kZyB8IC11bHRyYSB8IC10dGkqIHwgXAogCS1oYXJyaXMgfCAtZG9scGhpbiB8IC1oaWdobGV2ZWwgfCAtZ291bGQgfCAtY2JtIHwgLW5zIHwgLW1hc3Njb21wIHwgXAotCS1hcHBsZSB8IC1heGlzIHwgLWtudXRoIHwgLWNyYXkpCisJLWFwcGxlIHwgLWF4aXMgfCAta251dGggfCAtY3JheSB8IC1taWNyb2JsYXplKQogCQlvcz0KIAkJYmFzaWNfbWFjaGluZT0kMQogCQk7OworICAgICAgICAtYmx1ZWdlbmUqKQorCSAgICAgICAgb3M9LWNuaworCQk7OwogCS1zaW0gfCAtY2lzY28gfCAtb2tpIHwgLXdlYyB8IC13aW5ib25kKQogCQlvcz0KIAkJYmFzaWNfbWFjaGluZT0kMQpAQCAtMjQ5LDEzICsyNTgsMTYgQEAKIAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCiAJfCBpMzcwIHwgaTg2MCB8IGk5NjAgfCBpYTY0IFwKIAl8IGlwMmsgfCBpcTIwMDAgXAorCXwgbG0zMiBcCiAJfCBtMzJjIHwgbTMyciB8IG0zMnJsZSB8IG02ODAwMCB8IG02OGsgfCBtODhrIFwKLQl8IG1heHEgfCBtYiB8IG1pY3JvYmxhemUgfCBtY29yZSB8IG1lcCBcCisJfCBtYXhxIHwgbWIgfCBtaWNyb2JsYXplIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCiAJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwgbWlwc2VsIHwgbWlwc2xlIFwKIAl8IG1pcHMxNiBcCiAJfCBtaXBzNjQgfCBtaXBzNjRlbCBcCi0JfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAorCXwgbWlwczY0b2N0ZW9uIHwgbWlwczY0b2N0ZW9uZWwgXAogCXwgbWlwczY0b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKKwl8IG1pcHM2NHI1OTAwIHwgbWlwczY0cjU5MDBlbCBcCisJfCBtaXBzNjR2ciB8IG1pcHM2NHZyZWwgXAogCXwgbWlwczY0dnI0MTAwIHwgbWlwczY0dnI0MTAwZWwgXAogCXwgbWlwczY0dnI0MzAwIHwgbWlwczY0dnI0MzAwZWwgXAogCXwgbWlwczY0dnI1MDAwIHwgbWlwczY0dnI1MDAwZWwgXApAQCAtMjY4LDI4ICsyODAsNDEgQEAKIAl8IG1pcHNpc2E2NHNyNzFrIHwgbWlwc2lzYTY0c3I3MWtlbCBcCiAJfCBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwgXAogCXwgbW4xMDIwMCB8IG1uMTAzMDAgXAorCXwgbW94aWUgXAogCXwgbXQgXAogCXwgbXNwNDMwIFwKKwl8IG5kczMyIHwgbmRzMzJsZSB8IG5kczMyYmUgXAogCXwgbmlvcyB8IG5pb3MyIFwKIAl8IG5zMTZrIHwgbnMzMmsgXAogCXwgb3IzMiBcCiAJfCBwZHAxMCB8IHBkcDExIHwgcGogfCBwamwgXAogCXwgcG93ZXJwYyB8IHBvd2VycGM2NCB8IHBvd2VycGM2NGxlIHwgcG93ZXJwY2xlIHwgcHBjYmUgXAogCXwgcHlyYW1pZCBcCisJfCByeCBcCiAJfCBzY29yZSBcCi0JfCBzaCB8IHNoWzEyMzRdIHwgc2hbMjRdYSB8IHNoWzIzXWUgfCBzaFszNF1lYiB8IHNoZWIgfCBzaGJlIHwgc2hsZSB8IHNoWzEyMzRdbGUgfCBzaDNlbGUgXAorCXwgc2ggfCBzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFsyNF1hZWIgfCBzaFsyM11lIHwgc2hbMzRdZWIgfCBzaGViIHwgc2hiZSB8IHNobGUgfCBzaFsxMjM0XWxlIHwgc2gzZWxlIFwKIAl8IHNoNjQgfCBzaDY0bGUgXAogCXwgc3BhcmMgfCBzcGFyYzY0IHwgc3BhcmM2NGIgfCBzcGFyYzY0diB8IHNwYXJjODZ4IHwgc3BhcmNsZXQgfCBzcGFyY2xpdGUgXAogCXwgc3BhcmN2OCB8IHNwYXJjdjkgfCBzcGFyY3Y5YiB8IHNwYXJjdjl2IFwKIAl8IHNwdSB8IHN0cm9uZ2FybSBcCi0JfCB0YWhvZSB8IHRodW1iIHwgdGljNHggfCB0aWM4MCB8IHRyb24gXAorCXwgdGFob2UgfCB0aHVtYiB8IHRpYzR4IHwgdGljNTR4IHwgdGljNTV4IHwgdGljNnggfCB0aWM4MCB8IHRyb24gXAorCXwgdWJpY29tMzIgXAogCXwgdjg1MCB8IHY4NTBlIFwKIAl8IHdlMzJrIFwKIAl8IHg4NiB8IHhjMTZ4IHwgeHNjYWxlIHwgeHNjYWxlZVtibF0gfCB4c3Rvcm15MTYgfCB4dGVuc2EgXAotCXwgejhrKQorCXwgejhrIHwgejgwKQogCQliYXNpY19tYWNoaW5lPSRiYXNpY19tYWNoaW5lLXVua25vd24KIAkJOzsKLQltNjgxMSB8IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIpCisJYzU0eCkKKwkJYmFzaWNfbWFjaGluZT10aWM1NHgtdW5rbm93bgorCQk7OworCWM1NXgpCisJCWJhc2ljX21hY2hpbmU9dGljNTV4LXVua25vd24KKwkJOzsKKwljNngpCisJCWJhc2ljX21hY2hpbmU9dGljNngtdW5rbm93bgorCQk7OworCW02ODExIHwgbTY4aGMxMSB8IG02ODEyIHwgbTY4aGMxMiB8IHBpY29jaGlwKQogCQkjIE1vdG9yb2xhIDY4SEMxMS8xMi4KIAkJYmFzaWNfbWFjaGluZT0kYmFzaWNfbWFjaGluZS11bmtub3duCiAJCW9zPS1ub25lCkBAIC0zMjAsNyArMzQ1LDcgQEAKIAl8IGFybS0qICB8IGFybWJlLSogfCBhcm1sZS0qIHwgYXJtZWItKiB8IGFybXYqLSogXAogCXwgYXZyLSogfCBhdnIzMi0qIFwKIAl8IGJmaW4tKiB8IGJzMjAwMC0qIFwKLQl8IGNbMTIzXSogfCBjMzAtKiB8IFtjanRdOTAtKiB8IGM0eC0qIHwgYzU0eC0qIHwgYzU1eC0qIHwgYzZ4LSogXAorCXwgY1sxMjNdKiB8IGMzMC0qIHwgW2NqdF05MC0qIHwgYzR4LSogXAogCXwgY2xpcHBlci0qIHwgY3JheW52LSogfCBjeWRyYS0qIFwKIAl8IGQxMHYtKiB8IGQzMHYtKiB8IGRseC0qIFwKIAl8IGVseHNpLSogXApAQCAtMzI5LDE0ICszNTQsMTcgQEAKIAl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBbbnddLSogfCBocHBhNjQtKiBcCiAJfCBpKjg2LSogfCBpODYwLSogfCBpOTYwLSogfCBpYTY0LSogXAogCXwgaXAyay0qIHwgaXEyMDAwLSogXAorCXwgbG0zMi0qIFwKIAl8IG0zMmMtKiB8IG0zMnItKiB8IG0zMnJsZS0qIFwKIAl8IG02ODAwMC0qIHwgbTY4MFswMTIzNDZdMC0qIHwgbTY4MzYwLSogfCBtNjgzPzItKiB8IG02OGstKiBcCi0JfCBtODgxMTAtKiB8IG04OGstKiB8IG1heHEtKiB8IG1jb3JlLSogXAorCXwgbTg4MTEwLSogfCBtODhrLSogfCBtYXhxLSogfCBtY29yZS0qIHwgbWV0YWctKiB8IG1pY3JvYmxhemUtKiBcCiAJfCBtaXBzLSogfCBtaXBzYmUtKiB8IG1pcHNlYi0qIHwgbWlwc2VsLSogfCBtaXBzbGUtKiBcCiAJfCBtaXBzMTYtKiBcCiAJfCBtaXBzNjQtKiB8IG1pcHM2NGVsLSogXAotCXwgbWlwczY0dnItKiB8IG1pcHM2NHZyZWwtKiBcCisJfCBtaXBzNjRvY3Rlb24tKiB8IG1pcHM2NG9jdGVvbmVsLSogXAogCXwgbWlwczY0b3Jpb24tKiB8IG1pcHM2NG9yaW9uZWwtKiBcCisJfCBtaXBzNjRyNTkwMC0qIHwgbWlwczY0cjU5MDBlbC0qIFwKKwl8IG1pcHM2NHZyLSogfCBtaXBzNjR2cmVsLSogXAogCXwgbWlwczY0dnI0MTAwLSogfCBtaXBzNjR2cjQxMDBlbC0qIFwKIAl8IG1pcHM2NHZyNDMwMC0qIHwgbWlwczY0dnI0MzAwZWwtKiBcCiAJfCBtaXBzNjR2cjUwMDAtKiB8IG1pcHM2NHZyNTAwMGVsLSogXApAQCAtMzUxLDI3ICszNzksMzAgQEAKIAl8IG1taXgtKiBcCiAJfCBtdC0qIFwKIAl8IG1zcDQzMC0qIFwKKwl8IG5kczMyLSogfCBuZHMzMmxlLSogfCBuZHMzMmJlLSogXAogCXwgbmlvcy0qIHwgbmlvczItKiBcCiAJfCBub25lLSogfCBucDEtKiB8IG5zMTZrLSogfCBuczMyay0qIFwKIAl8IG9yaW9uLSogXAogCXwgcGRwMTAtKiB8IHBkcDExLSogfCBwai0qIHwgcGpsLSogfCBwbi0qIHwgcG93ZXItKiBcCiAJfCBwb3dlcnBjLSogfCBwb3dlcnBjNjQtKiB8IHBvd2VycGM2NGxlLSogfCBwb3dlcnBjbGUtKiB8IHBwY2JlLSogXAogCXwgcHlyYW1pZC0qIFwKLQl8IHJvbXAtKiB8IHJzNjAwMC0qIFwKLQl8IHNoLSogfCBzaFsxMjM0XS0qIHwgc2hbMjRdYS0qIHwgc2hbMjNdZS0qIHwgc2hbMzRdZWItKiB8IHNoZWItKiB8IHNoYmUtKiBcCisJfCByb21wLSogfCByczYwMDAtKiB8IHJ4LSogXAorCXwgc2gtKiB8IHNoWzEyMzRdLSogfCBzaFsyNF1hLSogfCBzaFsyNF1hZWItKiB8IHNoWzIzXWUtKiB8IHNoWzM0XWViLSogfCBzaGViLSogfCBzaGJlLSogXAogCXwgc2hsZS0qIHwgc2hbMTIzNF1sZS0qIHwgc2gzZWxlLSogfCBzaDY0LSogfCBzaDY0bGUtKiBcCiAJfCBzcGFyYy0qIHwgc3BhcmM2NC0qIHwgc3BhcmM2NGItKiB8IHNwYXJjNjR2LSogfCBzcGFyYzg2eC0qIHwgc3BhcmNsZXQtKiBcCiAJfCBzcGFyY2xpdGUtKiBcCiAJfCBzcGFyY3Y4LSogfCBzcGFyY3Y5LSogfCBzcGFyY3Y5Yi0qIHwgc3BhcmN2OXYtKiB8IHN0cm9uZ2FybS0qIHwgc3YxLSogfCBzeD8tKiBcCiAJfCB0YWhvZS0qIHwgdGh1bWItKiBcCiAJfCB0aWMzMC0qIHwgdGljNHgtKiB8IHRpYzU0eC0qIHwgdGljNTV4LSogfCB0aWM2eC0qIHwgdGljODAtKiBcCisJfCB0aWxlLSogfCB0aWxlZ3gtKiBcCiAJfCB0cm9uLSogXAorCXwgdWJpY29tMzItKiBcCiAJfCB2ODUwLSogfCB2ODUwZS0qIHwgdmF4LSogXAogCXwgd2UzMmstKiBcCiAJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIHwgeHNjYWxlLSogfCB4c2NhbGVlW2JsXS0qIFwKIAl8IHhzdG9ybXkxNi0qIHwgeHRlbnNhKi0qIFwKIAl8IHltcC0qIFwKLQl8IHo4ay0qKQorCXwgejhrLSogfCB6ODAtKikKIAkJOzsKIAkjIFJlY29nbml6ZSB0aGUgYmFzaWMgQ1BVIHR5cGVzIHdpdGhvdXQgY29tcGFueSBuYW1lLCB3aXRoIGdsb2IgbWF0Y2guCiAJeHRlbnNhKikKQEAgLTQzOSw2ICs0NzAsMTAgQEAKIAkJYmFzaWNfbWFjaGluZT1tNjhrLWFwb2xsbwogCQlvcz0tYnNkCiAJCTs7CisJYXJvcykKKwkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCisJCW9zPS1hcm9zCisJCTs7CiAJYXV4KQogCQliYXNpY19tYWNoaW5lPW02OGstYXBwbGUKIAkJb3M9LWF1eApAQCAtNDU1LDEwICs0OTAsMjcgQEAKIAkJYmFzaWNfbWFjaGluZT1iZmluLWBlY2hvICRiYXNpY19tYWNoaW5lIHwgc2VkICdzL15bXi1dKi0vLydgCiAJCW9zPS1saW51eAogCQk7OworCWJsdWVnZW5lKikKKwkJYmFzaWNfbWFjaGluZT1wb3dlcnBjLWlibQorCQlvcz0tY25rCisJCTs7CisJYzU0eC0qKQorCQliYXNpY19tYWNoaW5lPXRpYzU0eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OworCWM1NXgtKikKKwkJYmFzaWNfbWFjaGluZT10aWM1NXgtYGVjaG8gJGJhc2ljX21hY2hpbmUgfCBzZWQgJ3MvXlteLV0qLS8vJ2AKKwkJOzsKKwljNngtKikKKwkJYmFzaWNfbWFjaGluZT10aWM2eC1gZWNobyAkYmFzaWNfbWFjaGluZSB8IHNlZCAncy9eW14tXSotLy8nYAorCQk7OwogCWM5MCkKIAkJYmFzaWNfbWFjaGluZT1jOTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7CisgICAgICAgIGNlZ2NjKQorCQliYXNpY19tYWNoaW5lPWFybS11bmtub3duCisJCW9zPS1jZWdjYworCQk7OwogCWNvbnZleC1jMSkKIAkJYmFzaWNfbWFjaGluZT1jMS1jb252ZXgKIAkJb3M9LWJzZApAQCAtNTI2LDYgKzU3OCwxMCBAQAogCQliYXNpY19tYWNoaW5lPW04OGstbW90b3JvbGEKIAkJb3M9LXN5c3YzCiAJCTs7CisJZGljb3MpCisJCWJhc2ljX21hY2hpbmU9aTY4Ni1wYworCQlvcz0tZGljb3MKKwkJOzsKIAlkamdwcCkKIAkJYmFzaWNfbWFjaGluZT1pNTg2LXBjCiAJCW9zPS1tc2Rvc2RqZ3BwCkBAIC02OTksNiArNzU1LDkgQEAKIAkJYmFzaWNfbWFjaGluZT1uczMyay11dGVrCiAJCW9zPS1zeXN2CiAJCTs7CisgICAgICAgIG1pY3JvYmxhemUpCisJCWJhc2ljX21hY2hpbmU9bWljcm9ibGF6ZS14aWxpbngKKwkJOzsKIAltaW5ndzMyKQogCQliYXNpY19tYWNoaW5lPWkzODYtcGMKIAkJb3M9LW1pbmd3MzIKQEAgLTgwMyw2ICs4NjIsMTIgQEAKIAlucDEpCiAJCWJhc2ljX21hY2hpbmU9bnAxLWdvdWxkCiAJCTs7CisgICAgICAgIG5lby10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bmVvLXRhbmRlbQorCQk7OworICAgICAgICBuc2UtdGFuZGVtKQorCQliYXNpY19tYWNoaW5lPW5zZS10YW5kZW0KKwkJOzsKIAluc3ItdGFuZGVtKQogCQliYXNpY19tYWNoaW5lPW5zci10YW5kZW0KIAkJOzsKQEAgLTEwMzcsMTcgKzExMDIsMTAgQEAKIAkJYmFzaWNfbWFjaGluZT10OTAtY3JheQogCQlvcz0tdW5pY29zCiAJCTs7Ci0JdGljNTR4IHwgYzU0eCopCi0JCWJhc2ljX21hY2hpbmU9dGljNTR4LXVua25vd24KLQkJb3M9LWNvZmYKLQkJOzsKLQl0aWM1NXggfCBjNTV4KikKLQkJYmFzaWNfbWFjaGluZT10aWM1NXgtdW5rbm93bgotCQlvcz0tY29mZgotCQk7OwotCXRpYzZ4IHwgYzZ4KikKLQkJYmFzaWNfbWFjaGluZT10aWM2eC11bmtub3duCi0JCW9zPS1jb2ZmCisgICAgICAgICMgVGhpcyBtdXN0IGJlIG1hdGNoZWQgYmVmb3JlIHRpbGUqLgorICAgICAgICB0aWxlZ3gqKQorCQliYXNpY19tYWNoaW5lPXRpbGVneC11bmtub3duCisJCW9zPS1saW51eC1nbnUKIAkJOzsKIAl0aWxlKikKIAkJYmFzaWNfbWFjaGluZT10aWxlLXVua25vd24KQEAgLTExMjgsNiArMTE4NiwxMCBAQAogCQliYXNpY19tYWNoaW5lPXo4ay11bmtub3duCiAJCW9zPS1zaW0KIAkJOzsKKwl6ODAtKi1jb2ZmKQorCQliYXNpY19tYWNoaW5lPXo4MC11bmtub3duCisJCW9zPS1zaW0KKwkJOzsKIAlub25lKQogCQliYXNpY19tYWNoaW5lPW5vbmUtbm9uZQogCQlvcz0tbm9uZQpAQCAtMTE2Niw3ICsxMjI4LDcgQEAKIAl3ZTMyaykKIAkJYmFzaWNfbWFjaGluZT13ZTMyay1hdHQKIAkJOzsKLQlzaFsxMjM0XSB8IHNoWzI0XWEgfCBzaFszNF1lYiB8IHNoWzEyMzRdbGUgfCBzaFsyM11lbGUpCisJc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWViIHwgc2hbMzRdZWIgfCBzaFsxMjM0XWxlIHwgc2hbMjNdZWxlKQogCQliYXNpY19tYWNoaW5lPXNoLXVua25vd24KIAkJOzsKIAlzcGFyYyB8IHNwYXJjdjggfCBzcGFyY3Y5IHwgc3BhcmN2OWIgfCBzcGFyY3Y5dikKQEAgLTEyMTYsNiArMTI3OCw5IEBACiAgICAgICAgICMgRmlyc3QgbWF0Y2ggc29tZSBzeXN0ZW0gdHlwZSBhbGlhc2VzCiAgICAgICAgICMgdGhhdCBtaWdodCBnZXQgY29uZnVzZWQgd2l0aCB2YWxpZCBzeXN0ZW0gdHlwZXMuCiAJIyAtc29sYXJpcyogaXMgYSBiYXNpYyBzeXN0ZW0gdHlwZSwgd2l0aCB0aGlzIG9uZSBleGNlcHRpb24uCisgICAgICAgIC1hdXJvcmF1eCkKKwkgICAgICAgIG9zPS1hdXJvcmF1eAorCQk7OwogCS1zb2xhcmlzMSB8IC1zb2xhcmlzMS4qKQogCQlvcz1gZWNobyAkb3MgfCBzZWQgLWUgJ3N8c29sYXJpczF8c3Vub3M0fCdgCiAJCTs7CkBAIC0xMjM2LDEwICsxMzAxLDExIEBACiAJIyBFYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOIEEgKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KIAkjIC1zeXN2KiBpcyBub3QgaGVyZSBiZWNhdXNlIGl0IGNvbWVzIGxhdGVyLCBhZnRlciBzeXN2cjQuCiAJLWdudSogfCAtYnNkKiB8IC1tYWNoKiB8IC1taW5peCogfCAtZ2VuaXgqIHwgLXVsdHJpeCogfCAtaXJpeCogXAotCSAgICAgIHwgLSp2bXMqIHwgLXNjbyogfCAtZXNpeCogfCAtaXNjKiB8IC1haXgqIHwgLXN1bm9zIHwgLXN1bm9zWzM0XSpcCi0JICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1zb2xhcmlzKiB8IC1zeW0qIFwKKwkgICAgICB8IC0qdm1zKiB8IC1zY28qIHwgLWVzaXgqIHwgLWlzYyogfCAtYWl4KiB8IC1jbmsqIHwgLXN1bm9zIHwgLXN1bm9zWzM0XSpcCisJICAgICAgfCAtaHB1eCogfCAtdW5vcyogfCAtb3NmKiB8IC1sdW5hKiB8IC1kZ3V4KiB8IC1hdXJvcmF1eCogfCAtc29sYXJpcyogXAorCSAgICAgIHwgLXN5bSogfCAta29wZW5zb2xhcmlzKiBcCiAJICAgICAgfCAtYW1pZ2FvcyogfCAtYW1pZ2Fkb3MqIHwgLW1zZG9zKiB8IC1uZXdzb3MqIHwgLXVuaWNvcyogfCAtYW9mKiBcCi0JICAgICAgfCAtYW9zKiBcCisJICAgICAgfCAtYW9zKiB8IC1hcm9zKiBcCiAJICAgICAgfCAtbmluZHkqIHwgLXZ4c2ltKiB8IC12eHdvcmtzKiB8IC1lYm1vbiogfCAtaG1zKiB8IC1tdnMqIFwKIAkgICAgICB8IC1jbGl4KiB8IC1yaXNjb3MqIHwgLXVuaXBsdXMqIHwgLWlyaXMqIHwgLXJ0dSogfCAteGVuaXgqIFwKIAkgICAgICB8IC1oaXV4KiB8IC0zODZic2QqIHwgLWtuZXRic2QqIHwgLW1pcmJzZCogfCAtbmV0YnNkKiBcCkBAIC0xMjQ4LDkgKzEzMTQsMTAgQEAKIAkgICAgICB8IC1ib3N4KiB8IC1uZXh0c3RlcCogfCAtY3h1eCogfCAtYW91dCogfCAtZWxmKiB8IC1vYWJpKiBcCiAJICAgICAgfCAtcHR4KiB8IC1jb2ZmKiB8IC1lY29mZiogfCAtd2lubnQqIHwgLWRvbWFpbiogfCAtdnN0YSogXAogCSAgICAgIHwgLXVkaSogfCAtZWFiaSogfCAtbGl0ZXMqIHwgLWllZWUqIHwgLWdvMzIqIHwgLWF1eCogXAotCSAgICAgIHwgLWNob3J1c29zKiB8IC1jaG9ydXNyZGIqIFwKKwkgICAgICB8IC1jaG9ydXNvcyogfCAtY2hvcnVzcmRiKiB8IC1jZWdjYyogXAogCSAgICAgIHwgLWN5Z3dpbiogfCAtcGUqIHwgLXBzb3MqIHwgLW1vc3MqIHwgLXByb2VsZiogfCAtcnRlbXMqIFwKLQkgICAgICB8IC1taW5ndzMyKiB8IC1saW51eC1nbnUqIHwgLWxpbnV4LW5ld2xpYiogfCAtbGludXgtdWNsaWJjKiBcCisJICAgICAgfCAtbWluZ3czMiogfCAtbGludXgtZ251KiB8IC1saW51eC1hbmRyb2lkKiBcCisJICAgICAgfCAtbGludXgtbmV3bGliKiB8IC1saW51eC11Y2xpYmMqIFwKIAkgICAgICB8IC11eHB2KiB8IC1iZW9zKiB8IC1tcGVpeCogfCAtdWRrKiBcCiAJICAgICAgfCAtaW50ZXJpeCogfCAtdXdpbiogfCAtbWtzKiB8IC1yaGFwc29keSogfCAtZGFyd2luKiB8IC1vcGVuZWQqIFwKIAkgICAgICB8IC1vcGVuc3RlcCogfCAtb3NraXQqIHwgLWNvbml4KiB8IC1wdzMyKiB8IC1ub25zdG9wdXgqIFwKQEAgLTEyNTgsNyArMTMyNSw3IEBACiAJICAgICAgfCAtb3MyKiB8IC12b3MqIHwgLXBhbG1vcyogfCAtdWNsaW51eCogfCAtbnVjbGV1cyogXAogCSAgICAgIHwgLW1vcnBob3MqIHwgLXN1cGVydXgqIHwgLXJ0bWsqIHwgLXJ0bWstbm92YSogfCAtd2luZGlzcyogXAogCSAgICAgIHwgLXBvd2VybWF4KiB8IC1kbml4KiB8IC1ueDYgfCAtbng3IHwgLXNlaSogfCAtZHJhZ29uZmx5KiBcCi0JICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyopCisJICAgICAgfCAtc2t5b3MqIHwgLWhhaWt1KiB8IC1yZG9zKiB8IC10b3BwZXJzKiB8IC1kcm9wcyogfCAtZXMqKQogCSMgUmVtZW1iZXIsIGVhY2ggYWx0ZXJuYXRpdmUgTVVTVCBFTkQgSU4gKiwgdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJlci4KIAkJOzsKIAktcW54KikKQEAgLTEzODgsNiArMTQ1NSwxMSBAQAogCS16dm1vZSkKIAkJb3M9LXp2bW9lCiAJCTs7CisJLWRpY29zKikKKwkJb3M9LWRpY29zCisJCTs7CisgICAgICAgIC1uYWNsKikKKwkgICAgICAgIDs7CiAJLW5vbmUpCiAJCTs7CiAJKikKQEAgLTE0MjgsNiArMTUwMCwxNSBAQAogICAgICAgICBjNHgtKiB8IHRpYzR4LSopCiAgICAgICAgIAlvcz0tY29mZgogCQk7OworCXRpYzU0eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzU1eC0qKQorCQlvcz0tY29mZgorCQk7OworCXRpYzZ4LSopCisJCW9zPS1jb2ZmCisJCTs7CiAJIyBUaGlzIG11c3QgY29tZSBiZWZvcmUgdGhlICotZGVjIGVudHJ5LgogCXBkcDEwLSopCiAJCW9zPS10b3BzMjAKQEAgLTE1ODUsNyArMTY2Niw3IEBACiAJCQktc3Vub3MqKQogCQkJCXZlbmRvcj1zdW4KIAkJCQk7OwotCQkJLWFpeCopCisJCQktY25rKnwtYWl4KikKIAkJCQl2ZW5kb3I9aWJtCiAJCQkJOzsKIAkJCS1iZW9zKikKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCA5MzViZWUwLi5lYmJmMTEyIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCA0MjE1YTMwLi42NzZhN2I5IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xMCw5ICsxMCw5IEBACiAjCiAjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCiAjCi1BQ19JTklUKFtOZXQtU05NUF0sIFs1LjYuMl0sIFtuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0XSkKK0FDX0lOSVQoW05ldC1TTk1QXSwgWzUuNy4zLnJjMV0sIFtuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0XSkKIEFDX1BSRVJFUShbMi42M10pCi1BQ19DT05GSUdfU1JDRElSKFthZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmNdKQorQUNfQ09ORklHX1NSQ0RJUihbYWdlbnQvc25tcGQuY10pCiBBQ19SRVZJU0lPTihbJFJldmlzaW9uJF0pCiAKIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKQEAgLTcyLDYgKzcyLDcgQEAKIEFDX1NVQlNUKEFHRU5UTElCUykKIEFDX1NVQlNUKE9USEVSQUdFTlRMSUJPQkpTKQogQUNfU1VCU1QoT1RIRVJBR0VOVExJQkxPQkpTKQorQUNfU1VCU1QoT1RIRVJBR0VOVExJQkxGVFMpCiAKIEFDX1NVQlNUKERMTElCUykKIApAQCAtOTQsNiArOTUsNyBAQAogQUNfQ09ORklHX0ZJTEVTKFtuZXQtc25tcC1jcmVhdGUtdjMtdXNlcjpuZXQtc25tcC1jcmVhdGUtdjMtdXNlci5pbl0sCiAJCVtjaG1vZCAreCBuZXQtc25tcC1jcmVhdGUtdjMtdXNlcl0pCiBBQ19DT05GSUdfRklMRVMoW2Rpc3QvZ2VuZXJhdGlvbi1zY3JpcHRzL2dlbi12YXJpYWJsZXM6ZGlzdC9nZW5lcmF0aW9uLXNjcmlwdHMvZ2VuLXZhcmlhYmxlcy5pbl0pCitBQ19DT05GSUdfRklMRVMoW2xvY2FsL3NubXBjb25mXSkKIAogQUNfQ09ORklHX0NPTU1BTkRTKFtkZWZhdWx0XSwgZWNobyB0aW1lc3RhbXAgPiBzdGFtcC1oKQogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50CmluZGV4IDVjYjMwYmIuLmMxOGFjMzMgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50CisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50CkBAIC0yOCw3ICsyOCw3IEBACiBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBhbmQgY29uZmlndXJpbmcgbWliIG1vZHVsZXMgdG8gdXNlXSkKIAogIyBzZXQgdXAgdGhlIENQUCBjb21tYW5kCi1NT0RVTEVDUFA9IiRDUFAgJFBBUlRJQUxUQVJHRVRGTEFHUyAtSSR7c3JjZGlyfS9pbmNsdWRlIC1JJHtzcmNkaXJ9L2FnZW50L21pYmdyb3VwIgorTU9EVUxFQ1BQPSIkQ1BQICRQQVJUSUFMVEFSR0VURkxBR1MgJENQUEZMQUdTIC1ETkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HIC1JJHtzcmNkaXJ9L2luY2x1ZGUgLUkke3NyY2Rpcn0vYWdlbnQvbWliZ3JvdXAiCiBpZiB0ZXN0ICJ4JGVuYWJsZV9tZmRfcmV3cml0ZXMiID0gInh5ZXMiOyB0aGVuCiAgIE1PRFVMRUNQUD0iJE1PRFVMRUNQUCAtRE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUyIKIGZpCkBAIC03Nyw2ICs3Nyw4IEBACiAgIGZpCiBkb25lCiAKK25ld19tb2R1bGVfbGlzdD1gKGVjaG8gJG5ld19tb2R1bGVfbGlzdCB8IHRyICcgJyAnXG4nIHwgc29ydCB8IHRyICdcbicgJyAnOyBlY2hvICcnKSB8ICRTRUQgJ3MvICQvLydgCisKIEFDX01TR19SRVNVTFQoWyRuZXdfbW9kdWxlX2xpc3QuXSkKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTc0LDkgKzE3Niw5IEBACiAgICAgIyBidWlsZCBhIHBzZXVkbyBpbmNsdWRlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGN1cnJlbnQgY29uZmlnIGFuZAogICAgICMgc3lzdGVtIHN5bWJvbHM6CiAgICAgcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBtb2R1bGVfdG1wX2hlYWRlci5oCi0gICAgQUNfTEFOR19DT05GVEVTVChBQ19MQU5HX1NPVVJDRShbWworICAgIEFDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfU09VUkNFKFtbCiAjaW5jbHVkZSBORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUKLSNpbmNsdWRlICIkc3JjZGlyLyRtaWJkaXIvJGkuaCJdXSkpCisjaW5jbHVkZSAiJHNyY2Rpci8kbWliZGlyLyRpLmgiXV0pXSkKICAgICBtdiBjb25mdGVzdC4kYWNfZXh0IG1vZHVsZV90bXBfaGVhZGVyLmgKIAogICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE4OSw3ICsxOTEsOCBAQAogICAgIG1vZHVsZV90eXBlPW1pYl9tb2R1bGUKICAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5oOyB0aGVuCiAgICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIG1vZHVsZV90eXBlPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfYmVsb25nc19pbiB8ICRTRUQgJ3NALipjb25maWdfYmVsb25nc19pbihcKFteKV0qXCkpLipAXDFAJ2AKKyAgICAgIG1vZHVsZV90eXBlPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAgICAgJFNFRCAtbiAnc0AuKmNvbmZpZ19iZWxvbmdzX2luKFwoW14pXSpcKSkuKkBcMUBwJ2AKICAgICAgIGNoYW5nZXF1b3RlKFssIF0pCiAgICAgZmkKICAgICBpZiB0ZXN0ICJ4JG1vZHVsZV90eXBlIiA9ICJ4IiA7IHRoZW4KQEAgLTI3MCw3ICsyNzMsOCBAQAogICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgY29uZmxpY3RzCiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19leGNsdWRlKHgpXSkKLQluZXdfbGlzdF9leGNsPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfZXhjbHVkZSB8ICRTRUQgJ3MvLipjb25maWdfZXhjbHVkZShcKC4qXCkpLiovXDEvJ2AKKyAgICAgICAgbmV3X2xpc3RfZXhjbD1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAkU0VEIC1uICdzLy4qY29uZmlnX2V4Y2x1ZGUoXCguKlwpKS4qL1wxL3AnYAogCWlmIHRlc3QgIngkbmV3X2xpc3RfZXhjbCIgIT0gIngiOyB0aGVuCiAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRpIGV4Y2x1ZGVzICRuZXdfbGlzdF9leGNsIikKIAkgIGZvciBqIGluICRuZXdfbGlzdF9leGNsCkBAIC0yOTksNyArMzAzLDggQEAKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2FyY2hfcmVxdWlyZSh4LHkpXSkKICAgICAgICAgY2hhbmdlcXVvdGUoLCApCi0gICAgICAgIG5ld19saXN0X2FyY2g9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19hcmNoX3JlcXVpcmUgfCAkU0VEICdzLy4qY29uZmlnX2FyY2hfcmVxdWlyZSggKlwoW14gXSpcKSAqLCAqXChbXiBdKlwpICopLiovXDEteGFyY2h4LVwyLydgCisgICAgICAgIG5ld19saXN0X2FyY2g9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgJFNFRCAtbiAncy8uKmNvbmZpZ19hcmNoX3JlcXVpcmUoICpcKFteIF0qXCkgKiwgKlwoW14gXSpcKSAqKS4qL1wxLXhhcmNoeC1cMi9wJ2AKICAgICAgICAgY2hhbmdlcXVvdGUoWywgXSkKIAlpZiB0ZXN0ICJ4JG5ld19saXN0X2FyY2giICE9ICJ4IjsgdGhlbgogICAgICAgICAgIGZvciBqIGluICRuZXdfbGlzdF9hcmNoCkBAIC0zMjAsMTEgKzMyNSw3IEBACiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoeCldKQogICAgICAgICBbbmV3X2xpc3RfYWx0Mz1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgXAotICAgICAgICAgICAgJEdSRVAgY29uZmlnX3ZlcnNpb25fcmVxdWlyZSB8IFwKLSAgICAgICAgICAgICRTRUQgLWUgJ3MvICAqLyAvZycgXAotICAgICAgICAgICAgICAgICAtZSAncy8uKmNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKCAqXChbXildKlwpICopKS4qL1wxLycgXAotICAgICAgICAgICAgICAgICAtZSAncy8gKiwgKi8sL2cnIHwgXAotICAgICAgICAgICAgYXdrICcKKyAgICAgICAgICAgICRBV0sgJwogICAgICAgICAgICAgICAgIEJFR0lOIHsKICAgICAgICAgICAgICAgICAgICAgaWYoIiciJGVuYWJsZV9uZXdfZmVhdHVyZXMiJyIgPT0gInllcyIpCiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9Im1heCI7CkBAIC0zMzYsNyArMzM3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIHNwbGl0KCInIiR3aXRoX2ZlYXR1cmVzX29mIiciLCBhKTsKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbj1zcHJpbnRmKCIlMDNkJTAzZCUwM2QlMDNkIiwgYVsxXSwgYVsyXSwgYVszXSwgYVs0XSk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvY29uZmlnX3ZlcnNpb25fcmVxdWlyZS8geworICAgICAgICAgICAgICAgICAgICBnc3ViKCJeLipjb25maWdfdmVyc2lvbl9yZXF1aXJlICpcXFxcKFxcXFwoIiwgIiIpOworICAgICAgICAgICAgICAgICAgICBnc3ViKCJcXFxcKVxcXFwpLiokIiwgIiIpOworICAgICAgICAgICAgICAgICAgICBnc3ViKCIsICoiLCAiLCIpOwogICAgICAgICAgICAgICAgICAgICBGUyA9ICIsIjsKICAgICAgICAgICAgICAgICAgICAgbiA9IHNwbGl0KCQwLCBhKTsKICAgICAgICAgICAgICAgICAgICAgRlMgPSAiLiI7CkBAIC0zNjIsNyArMzY2LDggQEAKICAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IG90aGVyIHJlcXVpcmVkIG1vZHVsZXMKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX3JlcXVpcmUoeCldKQotCW5ld19saXN0PSIkbmV3X2xpc3QgYCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19yZXF1aXJlIHwgJFNFRCAncy8uKmNvbmZpZ19yZXF1aXJlKFwoLipcKSkuKi9cMS8nYCIKKyAgICAgICAgbmV3X2xpc3Q9IiRuZXdfbGlzdCBgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgXAorICAgICAgICAgICAgICAgICAgJFNFRCAtbiAncy8uKmNvbmZpZ19yZXF1aXJlKFwoLipcKSkuKi9cMS9wJ2AiCiAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgJGkgd2lsbCB0ZXN0OiAkbmV3X2xpc3QiKQogCWlmIHRlc3QgIngkbmV3X2xpc3QiICE9ICJ4IjsgdGhlbgogCSAgZm9yIGogaW4gJG5ld19saXN0CkBAIC0zOTgsNyArNDAzLDggQEAKICAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IG1pYnMgdG8gYWRkCiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19hZGRfbWliKHgpXSkKLQluZXdfbWlicz1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2FkZF9taWIgfCAkU0VEICdzLy4qY29uZmlnX2FkZF9taWIoXCguKlwpKS4qL1wxLydgCisgICAgICAgIG5ld19taWJzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAgICAkU0VEIC1uICdzLy4qY29uZmlnX2FkZF9taWIoXCguKlwpKS4qL1wxL3AnYAogCWlmIHRlc3QgIngkbmV3X21pYnMiICE9ICJ4IjsgdGhlbgogCSAgICBmb3IgaiBpbiAkbmV3X21pYnMKIAkJZG8KQEAgLTQzNCw3ICs0NDAsNyBAQAogICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAjIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBjb25maWdfbG9hZF9taWIKICAgICAgICAgIwotICAgICAgICBpZiAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfbG9hZF9taWIgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICBpZiAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCAtcSBjb25maWdfbG9hZF9taWI7IHRoZW4KICAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCiAgICAgICAJICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSAiJGkiIHVzZXMgdGhlICJjb25maWdfbG9hZF9taWIiIGRpcmVjdGl2ZSwgd2hpY2ggaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIEl0IHByb2JhYmx5IHdvbid0IHdvcmsuXSkKICAgICAgICAgZmkgIyBncmVwIGNvbmZpZ19sb2FkX21pYgpAQCAtNDQ1LDcgKzQ1MSw4IEBACiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19wYXJzZV9kb3RfY29uZih3LHgseSx6KV0pCiAgICAgICAgIGNoYW5nZXF1b3RlKCwgKQotICAgICAgICAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfcGFyc2VfZG90X2NvbmYgfCAkU0VEICdzQC4qY29uZmlnX3BhcnNlX2RvdF9jb25mKFwoW14pXSpcKSwgKlwoW14pLF0qXCksICpcKFteKSxdKlwpLCAqXChbXiksXSpcKSkuKkByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcGQiLFwxLCBcMiwgXDMsIFw0KTtAJyA+PiAkbWliZGlyL21pYl9tb2R1bGVfZG90X2NvbmYuaAorICAgICAgICAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICRTRUQgLW4gJ3NALipjb25maWdfcGFyc2VfZG90X2NvbmYoXChbXildKlwpLCAqXChbXiksXSpcKSwgKlwoW14pLF0qXCksICpcKFteKSxdKlwpKS4qQHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wZCIsXDEsIFwyLCBcMywgXDQpO0BwJyA+PiAkbWliZGlyL21pYl9tb2R1bGVfZG90X2NvbmYuaAogCWNoYW5nZXF1b3RlKFssIF0pCiAKICAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDU1LDcgKzQ2Miw4IEBACiAgICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBlcnJvcnMsIG9yIHdhcm5pbmdzCiAgICAgICAgICMKICAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19lcnJvcih4KV0pCi0JZXJyb3I9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19lcnJvciB8ICRTRUQgJ3MvLipjb25maWdfZXJyb3IoXCguKlwpKS4qL1wxLydgCisgICAgICAgIGVycm9yPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAkU0VEIC1uICdzLy4qY29uZmlnX2Vycm9yKFwoLipcKSkuKi9cMS9wJ2AKIAlpZiB0ZXN0ICJ4JGVycm9yIiAhPSAieCI7IHRoZW4KICAgICAgICAgICBlY2hvCiAgICAgICAgICAgZWNobwpAQCAtNDY3LDcgKzQ3NSw4IEBACiAgICAgICAJIyAgLSB1c2VkIHRvIHNpZ25hbCBhIGNvbmZpZ3VyYXRpb24gIndhcm5pbmciIHRvIGJlIHByaW50ZWQgdG8gdGhlIHVzZXIKICAgICAgICAgIwogICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX3dhcm5pbmcoeCldKQotCXdhcm5pbmc9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ193YXJuaW5nIHwgJFNFRCAncy8uKmNvbmZpZ193YXJuaW5nKFwoLipcKSkuKi9cMS8nYAorICAgICAgICB3YXJuaW5nPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAgICAgICRTRUQgLW4gJ3MvLipjb25maWdfd2FybmluZyhcKC4qXCkpLiovXDEvcCdgCiAJaWYgdGVzdCAieCR3YXJuaW5nIiAhPSAieCI7IHRoZW4KICAgICAgICAgICBhbGxfd2FybmluZ3M9IiRhbGxfd2FybmluZ3MgJHdhcm5pbmcKICIKQEAgLTY3OCwyOSArNjg3LDM0IEBACiAjCiBjaGFuZ2VxdW90ZSgsICkKIAotZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KK2ZvciBpIGluIG1vZHVsZV9saXN0X28gbW9kdWxlX2xpc3RfYyBtb2R1bGVfbGlzdF9sbyBtb2R1bGVfbGlzdF9mdCBtaWJfbW9kdWxlX2xpc3RfbyBtaWJfbW9kdWxlX2xpc3RfYyBtaWJfbW9kdWxlX2xpc3RfbG8gbWliX21vZHVsZV9saXN0X2Z0IG1pYmdyb3VwX2xpc3RfbyBtaWJncm91cF9saXN0X2xvIG1pYmdyb3VwX2xpc3RfZnQgYWdlbnRfbW9kdWxlX2xpc3RfbyBhZ2VudF9tb2R1bGVfbGlzdF9jIGFnZW50X21vZHVsZV9saXN0X2xvIGFnZW50X21vZHVsZV9saXN0X2Z0IGFnZW50Z3JvdXBfbGlzdF9vIGFnZW50Z3JvdXBfbGlzdF9sbyBhZ2VudGdyb3VwX2xpc3RfZnQgOyBkbwogICBldmFsICIkaT1tay8ke2l9Lm1rIgogZG9uZQogCiAkU0VEICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X28vO3MvXChbXj1dXCkgICpcXC9cMS5vIFxcL2cnICA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9vCiAkU0VEICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9jCiAkU0VEICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkbW9kdWxlX2xpc3RfY29kZSAgPiAkbW9kdWxlX2xpc3RfbG8KKyRTRUQgJ3MvXm1vZHVsZV9saXN0X2NvZGUvbW9kdWxlX2xpc3RfZnQvO3MvXChbXj1dXCkgICpcXC9cMS5mdCBcXC9nJyA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9mdAogCiAkU0VEICdzL15taWJfbW9kdWxlX2xpc3RfY29kZS9taWJfbW9kdWxlX2xpc3Rfby87cy9cKFtePV1cKSAgKlxcL1wxLm8gXFwvZycgIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfbwogJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRtaWJfbW9kdWxlX2xpc3RfY29kZSAgPiAkbWliX21vZHVsZV9saXN0X2MKICRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9sby87cy9cKFtePV1cKSAgKlxcL1wxLmxvIFxcL2cnIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfbG8KKyRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9mdC87cy9cKFtePV1cKSAgKlxcL1wxLmZ0IFxcL2cnIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfZnQKIAogJFNFRCAncy9ebWliX21vZHVsZV9saXN0X28vbWliZ3JvdXBfbGlzdF9vLztzQFwoW14gCV0qXClcLm9AbWliZ3JvdXAvXDEub0BnJyA8ICRtaWJfbW9kdWxlX2xpc3RfbyA+ICRtaWJncm91cF9saXN0X28KICRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9sby9taWJncm91cF9saXN0X2xvLztzQFwoW14gCV0qXClcLmxvQG1pYmdyb3VwL1wxLmxvQGcnIDwgJG1pYl9tb2R1bGVfbGlzdF9sbyA+ICRtaWJncm91cF9saXN0X2xvCiskU0VEICdzL15taWJfbW9kdWxlX2xpc3RfZnQvbWliZ3JvdXBfbGlzdF9mdC87c0BcKFteIAldKlwpXC5mdEBtaWJncm91cC9cMS5mdEBnJyA8ICRtaWJfbW9kdWxlX2xpc3RfZnQgPiAkbWliZ3JvdXBfbGlzdF9mdAogCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X28vO3MvXChbXj1dXCkgICpcXC9cMS5vIFxcL2cnICA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9vCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9jCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfbG8KKyRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2NvZGUvYWdlbnRfbW9kdWxlX2xpc3RfZnQvO3MvXChbXj1dXCkgICpcXC9cMS5mdCBcXC9nJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9jb2RlICA+ICRhZ2VudF9tb2R1bGVfbGlzdF9mdAogCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9vL2FnZW50Z3JvdXBfbGlzdF9vLztzQFwoW14gCV0qXClcLm9AbWliZ3JvdXAvXDEub0BnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9vID4gJGFnZW50Z3JvdXBfbGlzdF9vCiAkU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9sby9hZ2VudGdyb3VwX2xpc3RfbG8vO3NAXChbXiAJXSpcKVwubG9AbWliZ3JvdXAvXDEubG9AZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfbG8gPiAkYWdlbnRncm91cF9saXN0X2xvCiskU0VEICdzL15hZ2VudF9tb2R1bGVfbGlzdF9mdC9hZ2VudGdyb3VwX2xpc3RfZnQvO3NAXChbXiAJXSpcKVwuZnRAbWliZ3JvdXAvXDEuZnRAZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfZnQgPiAkYWdlbnRncm91cF9saXN0X2Z0CiAKLWZvciBpIGluIG1vZHVsZV9saXN0X28gbW9kdWxlX2xpc3RfYyBtb2R1bGVfbGlzdF9sbyBtaWJfbW9kdWxlX2xpc3RfbyBtaWJfbW9kdWxlX2xpc3RfYyBtaWJfbW9kdWxlX2xpc3RfbG8gbWliZ3JvdXBfbGlzdF9vIG1pYmdyb3VwX2xpc3RfbG8gYWdlbnRfbW9kdWxlX2xpc3RfbyBhZ2VudF9tb2R1bGVfbGlzdF9jIGFnZW50X21vZHVsZV9saXN0X2xvIGFnZW50Z3JvdXBfbGlzdF9vIGFnZW50Z3JvdXBfbGlzdF9sbyA7IGRvCitmb3IgaSBpbiBtb2R1bGVfbGlzdF9vIG1vZHVsZV9saXN0X2MgbW9kdWxlX2xpc3RfbG8gbW9kdWxlX2xpc3RfZnQgbWliX21vZHVsZV9saXN0X28gbWliX21vZHVsZV9saXN0X2MgbWliX21vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9mdCBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBtaWJncm91cF9saXN0X2Z0IGFnZW50X21vZHVsZV9saXN0X28gYWdlbnRfbW9kdWxlX2xpc3RfYyBhZ2VudF9tb2R1bGVfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9mdCBhZ2VudGdyb3VwX2xpc3RfbyBhZ2VudGdyb3VwX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X2Z0IDsgZG8KIAkjIGhwdXggbWFrZSAoYXQgbGVhc3QpIGRvZXNuJ3QgbGlrZSBhIHRyYWlsaW5nIFwgb24gdGhlIGxhc3QKIAkjIGxpbmUgZXZlbiB3aGVuIHRoZSBuZXh0IGxpbmUgY29udGFpbnMgbm90aGluZyBidXQKIAkjIHdoaXRlc3BhY2UuCkBAIC03MjYsMTYgKzc0MCwyMSBAQAogQUNfU1VCU1RfRklMRShtb2R1bGVfbGlzdF9jKQogQUNfU1VCU1RfRklMRShtb2R1bGVfbGlzdF9vKQogQUNfU1VCU1RfRklMRShtb2R1bGVfbGlzdF9sbykKK0FDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfZnQpCiBBQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9jKQogQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfbykKIEFDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X2xvKQorQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfZnQpCiBBQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X2MpCiBBQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X28pCiBBQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X2xvKQorQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9mdCkKIEFDX1NVQlNUX0ZJTEUobWliZ3JvdXBfbGlzdF9vKQogQUNfU1VCU1RfRklMRShtaWJncm91cF9saXN0X2xvKQorQUNfU1VCU1RfRklMRShtaWJncm91cF9saXN0X2Z0KQogQUNfU1VCU1RfRklMRShhZ2VudGdyb3VwX2xpc3RfbykKIEFDX1NVQlNUX0ZJTEUoYWdlbnRncm91cF9saXN0X2xvKQorQUNfU1VCU1RfRklMRShhZ2VudGdyb3VwX2xpc3RfZnQpCiAKIEFDX1NVQlNUKGRlZmF1bHRfbWlic19pbnN0YWxsKQogQUNfU1VCU1QoZGxsY2xlYW5zKQpAQCAtNzY2LDggKzc4NSwxMCBAQAogaWYgdGVzdCAieCRORVRTTk1QX0RFRkFVTFRfTUlCUyIgPSAieCI7IHRoZW4KICAgTkVUU05NUF9ERUZBVUxUX01JQlM9IiRkZWZhdWx0X21pYnMiCiBmaQotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgotICAjIG1pbmd3MzIgYW5kIGN5Z3dpbiB1c2UgJzsnIGFzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXBhcmF0b3IgY2hhcgoraWYgdGVzdCAieCRFTlZfU0VQQVJBVE9SIiAhPSAieCI7IHRoZW4KKyAgOgorZWxpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCisgICMgbWluZ3czMiBhbmQgY3lnd2luIHVzZSAnOycgYXMgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGUgc2VwYXJhdG9yCiAgIEVOVl9TRVBBUkFUT1I9IjsiCiAgIE5FVFNOTVBfREVGQVVMVF9NSUJTPWBlY2hvICIkTkVUU05NUF9ERUZBVUxUX01JQlMiIHwgJFNFRCAncy86LzsvZydgCiAgIGRlZmF1bHRfbWlicz1gZWNobyAiJGRlZmF1bHRfbWlicyIgfCAkU0VEICdzLzovOy9nJ2AKQEAgLTc3NSw2ICs3OTYsMTAgQEAKICAgRU5WX1NFUEFSQVRPUj0iOiIKIGZpCiBBQ19TVUJTVChFTlZfU0VQQVJBVE9SKQorQUNfREVGSU5FX1VOUVVPVEVEKFtFTlZfU0VQQVJBVE9SXSwgWyIkRU5WX1NFUEFSQVRPUiJdLAorICAgICAgICAgW0Vudmlyb25tZW50IHNlcGFyYXRvciBjaGFyYWN0ZXIgc3Vycm91bmRlZCBieSBkb3VibGUgcXVvdGVzLl0pCitBQ19ERUZJTkVfVU5RVU9URUQoW0VOVl9TRVBBUkFUT1JfQ0hBUl0sIFsnJEVOVl9TRVBBUkFUT1InXSwKKyAgICAgICAgICBbRW52aXJvbm1lbnQgc2VwYXJhdG9yIGNoYXJhY3RlciBzdXJyb3VuZGVkIGJ5IHNpbmdsZSBxdW90ZXMuXSkKIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCUywiJE5FVFNOTVBfREVGQVVMVF9NSUJTIikKIEFDX1NVQlNUKE5FVFNOTVBfREVGQVVMVF9NSUJTKQogQUNfTVNHX1JFU1VMVCgkTkVUU05NUF9ERUZBVUxUX01JQlMpCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIKaW5kZXggNTIwNjNmMS4uMzYyYmEwYSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYgpAQCAtMjUsMTAgKzI1LDEyIEBACiAjCiBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwbGF0Zm9ybS1zcGVjaWZpYyBzb3VyY2VdKQogb3RoZXJfc3JjX2xpc3Q9IiIKLW90aGVyX29ianNfbGlzdD0iIgorb3RoZXJfZnRvYmpzX2xpc3Q9IiIKIG90aGVyX2xvYmpzX2xpc3Q9IiIKK290aGVyX29ianNfbGlzdD0iIgogb3RoZXJfYWdlbnRvYmpzPSIiCiBvdGhlcl9sYWdlbnRvYmpzPSIiCitvdGhlcl9mdGFnZW50b2Jqcz0iIgogb3RoZXJfdHJhcGRfb2JqZWN0cz0iIgogCiAjIFdpbjMyIHNlcnZpY2UgY29kZQpAQCAtMzYsOCArMzgsMTAgQEAKICAgb3RoZXJfc3JjX2xpc3Q9IiRvdGhlcl9zcmNfbGlzdCB3aW5zZXJ2aWNlLmMgd2luc2VydmljZXJjLnJjIgogICBvdGhlcl9vYmpzX2xpc3Q9IiRvdGhlcl9vYmpzX2xpc3Qgd2luc2VydmljZS5vIHdpbnNlcnZpY2VyYy5vIgogICBvdGhlcl9sb2Jqc19saXN0PSIkb3RoZXJfbG9ianNfbGlzdCB3aW5zZXJ2aWNlLmxvIHdpbnNlcnZpY2VyYy5sbyIKKyAgb3RoZXJfZnRvYmpzX2xpc3Q9IiRvdGhlcl9mdG9ianNfbGlzdCB3aW5zZXJ2aWNlLmZ0IHdpbnNlcnZpY2VyYy5mdCIKICAgb3RoZXJfYWdlbnRvYmpzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5vIgogICBvdGhlcl9sYWdlbnRvYmpzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5sbyIKKyAgb3RoZXJfZnRhZ2VudG9ianM9Ii4uL3NubXBsaWIvd2luc2VydmljZXJjLmxvIgogICBvdGhlcl90cmFwZF9vYmplY3RzPSIuLi9zbm1wbGliL3dpbnNlcnZpY2VyYy5vIiAKIGZpCiAgIApAQCAtNDYsMTMgKzUwLDE2IEBACiAgIG90aGVyX3NyY19saXN0PSIkb3RoZXJfc3JjX2xpc3Qgd2lucGlwZS5jIgogICBvdGhlcl9vYmpzX2xpc3Q9IiRvdGhlcl9vYmpzX2xpc3Qgd2lucGlwZS5vIgogICBvdGhlcl9sb2Jqc19saXN0PSIkb3RoZXJfbG9ianNfbGlzdCB3aW5waXBlLmxvIgorICBvdGhlcl9mdG9ianNfbGlzdD0iJG90aGVyX2Z0b2Jqc19saXN0IHdpbnBpcGUuZnQiCiBmaQogCiBBQ19TVUJTVChvdGhlcl9zcmNfbGlzdCkKIEFDX1NVQlNUKG90aGVyX29ianNfbGlzdCkKIEFDX1NVQlNUKG90aGVyX2xvYmpzX2xpc3QpCitBQ19TVUJTVChvdGhlcl9mdG9ianNfbGlzdCkKIEFDX1NVQlNUKG90aGVyX2FnZW50b2JqcykKIEFDX1NVQlNUKG90aGVyX2xhZ2VudG9ianMpCitBQ19TVUJTVChvdGhlcl9mdGFnZW50b2JqcykKIEFDX1NVQlNUKG90aGVyX3RyYXBkX29iamVjdHMpCiAKIEFDX01TR19SRVNVTFQoWyRvdGhlcl9zcmNfbGlzdCAkb3RoZXJfb2Jqc19saXN0ICRvdGhlcl9sb2Jqc19saXN0XSkKQEAgLTk2LDYgKzEwMyw3IEBACiBBQ19TVUJTVCh0cmFuc3BvcnRfc3JjX2xpc3QpCiBBQ19TVUJTVCh0cmFuc3BvcnRfb2JqX2xpc3QpCiBBQ19TVUJTVCh0cmFuc3BvcnRfbG9ial9saXN0KQorQUNfU1VCU1QodHJhbnNwb3J0X2Z0b2JqX2xpc3QpCiBmb3IgaSBpbiAkdHJhbnNwb3J0X2RlZl9saXN0OyBkbwogICBBQ19ERUZJTkVfVU5RVU9URUQoJGkpCiBkb25lCkBAIC0xMTUsNiArMTIzLDcgQEAKIEFDX1NVQlNUKHNlY3VyaXR5X2hkcl9saXN0KQogQUNfU1VCU1Qoc2VjdXJpdHlfb2JqX2xpc3QpIAkgCiBBQ19TVUJTVChzZWN1cml0eV9sb2JqX2xpc3QpCitBQ19TVUJTVChzZWN1cml0eV9mdG9ial9saXN0KQogQUNfTVNHX1JFU1VMVCgkbmV3X3dpdGhfc2VjdXJpdHkpCiBBQ19NU0dfQ0FDSEVfQUREKFNOTVB2MyBTZWN1cml0eSBNb2R1bGVzOiAgICAkbmV3X3dpdGhfc2VjdXJpdHkpCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3NlY3VyaXR5X21vZHVsZXMgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19zZWN1cml0eV9tb2R1bGVzCmluZGV4IDFiNWQxMjUuLjgyM2NhN2QgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3NlY3VyaXR5X21vZHVsZXMKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfc2VjdXJpdHlfbW9kdWxlcwpAQCAtMSwzMSArMSw0NiBAQAogIyAtKi0gc2ggLSotCiBzZWN1cml0eV9kZWZfbGlzdD0idXNtIgogc2VjdXJpdHlfc3JjX2xpc3Q9IiIKLXNlY3VyaXR5X29ial9saXN0PSIiIAkgCitzZWN1cml0eV9vYmpfbGlzdD0iIgogc2VjdXJpdHlfbG9ial9saXN0PSIiCi1pZiB0ZXN0ICJ4JHNlY3VyaXR5X2luaXRfZmlsZSIgPSAieCIgOyB0aGVuCi0gICAgc2VjdXJpdHlfaW5pdF9maWxlPSJzbm1wbGliL3NubXBzbV9pbml0LmgiCi1maQotaWYgdGVzdCAieCRzZWN1cml0eV9pbmNsX2ZpbGUiID0gIngiIDsgdGhlbgotICAgIHNlY3VyaXR5X2luY2xfZmlsZT0iaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oIgotZmkKLW5ld193aXRoX3NlY3VyaXR5PWBlY2hvICR3aXRoX3NlY3VyaXR5X21vZHVsZXMgfCAkU0VEICdzLywvIC9nOydgCi1uZXdfd2l0aF9vdXRfc2VjdXJpdHk9YGVjaG8gJHdpdGhfb3V0X3NlY3VyaXR5X21vZHVsZXMgfCAkU0VEICdzLywvIC9nOydgCitzZWN1cml0eV9mdG9ial9saXN0PSIiCitzZWN1cml0eV9tb2RfbGlzdD0iICIKIAotZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X2luaXRfZmlsZQotZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X2luY2xfZmlsZQorbmV3X3dpdGhfc2VjdXJpdHk9CituZXdfd2l0aF9vdXRfc2VjdXJpdHk9YGVjaG8gJHdpdGhfb3V0X3NlY3VyaXR5X21vZHVsZXMgfCB0ciAsICcgJ2AKIAotZm9yIGkgaW4gJHNlY3VyaXR5X2RlZl9saXN0OyBkbworIyBBc3NpZ24gYWRkaXRpb25hbCBzZWN1cml0eSBtb2R1bGVzCitmb3IgaSBpbiBgZWNobyAkd2l0aF9zZWN1cml0eV9tb2R1bGVzIHwgdHIgLCAnICdgOyBkbwogICBpZiBlY2hvICIgJG5ld193aXRoX291dF9zZWN1cml0eSAiIHwgJEdSRVAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgaWYgdGVzdCAieCRpIiA9ICJ4dXNtIjsgdGhlbgotCWVjaG8KLSAgICAgICAgQUNfTVNHX0VSUk9SKFRoZSBVU00gc2VjdXJpdHkgbW9kdWxlIGlzIG1hbmRhdG9yeSkKLSAgICBmaQorICAgIGVjaG8KKyAgICBBQ19NU0dfRVJST1IoW3NlY3VyaXR5IG1vZHVsZSBjb25mbGljdCAtICRpIGJvdGggaW5jbHVkZWQgYW5kIGV4Y2x1ZGVkXSkKKyAgZWxpZiBlY2hvICIgJG5ld193aXRoX3NlY3VyaXR5ICIgfCAkR1JFUCAiICRpICIgPiAvZGV2L251bGwgOyB0aGVuCisgICAgOiAjIERvdWJsZSBkZWZpbmUsIGlnbm9yZQogICBlbHNlCiAgICAgbmV3X3dpdGhfc2VjdXJpdHk9IiRuZXdfd2l0aF9zZWN1cml0eSAkaSIKICAgZmkKIGRvbmUKIAorIyBBZGQgZGVmYXVsdCBzZWN1cml0eSBtb2R1bGVzCitmb3IgaSBpbiAkc2VjdXJpdHlfZGVmX2xpc3Q7IGRvCisgIGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X3NlY3VyaXR5ICIgfCAkR1JFUCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICA6ICMgRXhjbHVkZWQsIGlnbm9yZQorICBlbGlmIGVjaG8gIiAkbmV3X3dpdGhfc2VjdXJpdHkgIiB8ICRHUkVQICIgJGkgIiA+IC9kZXYvbnVsbCA7IHRoZW4KKyAgICA6ICMgRG91YmxlIGRlZmluZSwgaWdub3JlCisgIGVsc2UKKyAgICBuZXdfd2l0aF9zZWN1cml0eT0iJG5ld193aXRoX3NlY3VyaXR5ICRpIgorICBmaQorZG9uZQorCisjIEdlbmVyYXRlIG91dHB1dCBmaWxlcworOiAke3NlY3VyaXR5X2luaXRfZmlsZTo9J3NubXBsaWIvc25tcHNtX2luaXQuaCd9Cis6ICR7c2VjdXJpdHlfc2h1dGRvd25fZmlsZTo9J3NubXBsaWIvc25tcHNtX3NodXRkb3duLmgnfQorOiAke3NlY3VyaXR5X2luY2xfZmlsZTo9J2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaCd9CisKK2VjaG8gIi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjb25maWd1cmUuICBEbyBub3QgbW9kaWZ5IGJ5IGhhbmQuICovIiA+ICRzZWN1cml0eV9pbml0X2ZpbGUKK2VjaG8gIi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjb25maWd1cmUuICBEbyBub3QgbW9kaWZ5IGJ5IGhhbmQuICovIiA+ICRzZWN1cml0eV9zaHV0ZG93bl9maWxlCitlY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5jbF9maWxlCisKIGZvciBpIGluICRuZXdfd2l0aF9zZWN1cml0eTsgZG8KICAgY2ZpbGU9InNubXAiJGkiLmMiCiAgIGhmaWxlPSJzbm1wIiRpIi5oIgpAQCAtMzksMTMgKzU0LDE3IEBACiAgIGZpCiAKICAgIyBkZWZpbmUgYSBidW5jaCBvZiBzdHVmZiB0byBlbmFibGUgaXQKKyAgc2VjdXJpdHlfbW9kX2xpc3Q9IiR7c2VjdXJpdHlfbW9kX2xpc3R9ICRpIgorICBzZWN1cml0eV9zcmNfbGlzdD0iJHNlY3VyaXR5X3NyY19saXN0ICRjZmlsZSIKICAgc2VjdXJpdHlfc3JjX2xpc3Q9IiRzZWN1cml0eV9zcmNfbGlzdCAkY2ZpbGUiCiAgIHNlY3VyaXR5X2hkcl9saXN0PSIkc2VjdXJpdHlfaGRyX2xpc3QgJGhmaWxlIgotICBzZWN1cml0eV9vYmpfbGlzdD0iJHNlY3VyaXR5X29ial9saXN0IHNubXAiJGkiLm8iIAkgCisgIHNlY3VyaXR5X29ial9saXN0PSIkc2VjdXJpdHlfb2JqX2xpc3Qgc25tcCIkaSIubyIKICAgc2VjdXJpdHlfbG9ial9saXN0PSIkc2VjdXJpdHlfbG9ial9saXN0IHNubXAiJGkiLmxvIgotICBkZWZfbmFtZT0iTkVUU05NUF9TRUNNT0RfImBlY2hvICRpIHwgdHIgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonYAorICBzZWN1cml0eV9mdG9ial9saXN0PSIkc2VjdXJpdHlfZnRvYmpfbGlzdCBzbm1wIiRpIi5mdCIKICAgZWNobyAiaW5pdF8iJGkiKCk7IiA+PiAkc2VjdXJpdHlfaW5pdF9maWxlCisgIGVjaG8gInNodXRkb3duXyIkaSIoKTsiID4+ICRzZWN1cml0eV9zaHV0ZG93bl9maWxlCiAgIGVjaG8gIiNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5LyRoZmlsZT4iID4+ICRzZWN1cml0eV9pbmNsX2ZpbGUKKyAgZGVmX25hbWU9IkFTX1RSX0NQUChbTkVUU05NUF9TRUNNT0RfJGldKSIKICAgQUNfREVGSU5FX1VOUVVPVEVEKCRkZWZfbmFtZSkKIGRvbmUKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX3RyYW5zcG9ydHMKaW5kZXggYWEyNzE0Ni4uYjEwYjk2MCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfdHJhbnNwb3J0cworKysgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc190cmFuc3BvcnRzCkBAIC02OSwxNCArNjksMTUgQEAKICAgICAgICMgYnVpbGQgYSBwc2V1ZG8gaW5jbHVkZSBoZWFkZXIgdGhhdCBpbmNsdWRlcyBjdXJyZW50IGNvbmZpZyBhbmQKICAgICAgICMgc3lzdGVtIHN5bWJvbHM6CiAgICAgICBybSAtZiBjb25mdGVzdC4kYWNfZXh0IG1vZHVsZV90bXBfaGVhZGVyLmgKLSAgICAgIEFDX0xBTkdfQ09ORlRFU1QoQUNfTEFOR19TT1VSQ0UoW1sKKyAgICAgIEFDX0xBTkdfQ09ORlRFU1QoW0FDX0xBTkdfU09VUkNFKFtbCiAjaW5jbHVkZSBORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUKKyN1bmRlZiBORVRTTk1QX01JTklNQUxfQ09ERQogI2RlZmluZSBORVRfU05NUF9DT05GSUdfSAogI3VuZGVmIGNvbmZpZ19yZXF1aXJlCiAjZGVmaW5lIGNvbmZpZ19yZXF1aXJlKGZvbykgY29uZmlnX2NoZWNraXRfcmVxdWlyZShmb28pCiAjdW5kZWYgY29uZmlnX2Vycm9yCiAjZGVmaW5lIGNvbmZpZ19lcnJvcihmb28pIGNvbmZpZ19jaGVja2l0X2Vycm9yKGZvbykKLSNpbmNsdWRlICIkcmVsX3RyYW5zcG9ydF9oZHIiXV0pKQorI2luY2x1ZGUgIiRyZWxfdHJhbnNwb3J0X2hkciJdXSldKQogICAgICAgbXYgY29uZnRlc3QuJGFjX2V4dCBtb2R1bGVfdG1wX2hlYWRlci5oCiAKICAgICAgICMKQEAgLTExNyw2ICsxMTgsNyBAQAogZG9uZSAjIHdoaWxlIG5ldyB0cmFuc3BvcnRzIGV4aXN0CiB0cmFuc3BvcnRfb2JqX2xpc3Q9YGVjaG8gIiAkdHJhbnNwb3J0X3NyY19saXN0ICIgfCAkU0VEICdzL1wuYy9cLm8vZydgCiB0cmFuc3BvcnRfbG9ial9saXN0PWBlY2hvICIgJHRyYW5zcG9ydF9zcmNfbGlzdCAiIHwgJFNFRCAncy9cLmMvXC5sby9nJ2AKK3RyYW5zcG9ydF9mdG9ial9saXN0PWBlY2hvICIgJHRyYW5zcG9ydF9zcmNfbGlzdCAiIHwgJFNFRCAncy9cLmMvXC5mdC9nJ2AKIGZvciBpIGluICR0cl9pbml0X2xpc3QgOyBkbwogICAgZWNobyAiJGkoKTsiID4+ICRjdG9yX2hlYWRlcgogZG9uZQpAQCAtMTI2LDYgKzEyOCw3IEBACiAgIGlmIGVjaG8gIiR0cmFuc3BvcnRfZGVmX2xpc3QiIHwgJEdSRVAgIklQVjYiID4vZGV2L251bGw7IHRoZW4KICAgICB0cmFuc3BvcnRfb2JqX2xpc3Q9IiR0cmFuc3BvcnRfb2JqX2xpc3QgaW5ldF9udG9wLm8gaW5ldF9wdG9uLm8iCiAgICAgdHJhbnNwb3J0X2xvYmpfbGlzdD0iJHRyYW5zcG9ydF9sb2JqX2xpc3QgaW5ldF9udG9wLmxvIGluZXRfcHRvbi5sbyIKKyAgICB0cmFuc3BvcnRfZnRvYmpfbGlzdD0iJHRyYW5zcG9ydF9mdG9ial9saXN0IGluZXRfbnRvcC5mdCBpbmV0X3B0b24uZnQiCiAgIGZpCiBmaQogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucwppbmRleCA1N2Q3ODU0Li4zYzUzODViIDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMKQEAgLTMxLDcgKzMxLDggQEAKICAgICAgICAgICAgICAgIFtzaWduYWwgICAgICAgICAgc2lnc2V0ICAgICAgICAgICAgICAgICAgXSApCiAKICMgIExpYnJhcnk6Ci1BQ19DSEVDS19GVU5DUyhbY2xvc2VkaXIgICAgICAgIGZvcmsgICAgICAgICAgICBnZXRpcG5vZGVieW5hbWUgIF0gZG5sCitBQ19DSEVDS19GVU5DUyhbY2xvc2VkaXIgICAgICAgIGZnZXRjX3VubG9ja2VkICBmbG9ja2ZpbGUgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbZm9yayAgICAgICAgICAgIGZ1bmxvY2tmaWxlICAgICBnZXRpcG5vZGVieW5hbWUgIF0gZG5sCiAgICAgICAgICAgICAgICBbZ2V0dGltZW9mZGF5ICAgIGlmX25hbWV0b2luZGV4ICBta3N0ZW1wICAgICAgICAgIF0gZG5sCiAgICAgICAgICAgICAgICBbb3BlbmRpciAgICAgICAgIHJlYWRkaXIgICAgICAgICByZWdjb21wICAgICAgICAgIF0gZG5sCiAgICAgICAgICAgICAgICBbc2V0ZW52ICAgICAgICAgIHNldGl0aW1lciAgICAgICBzZXRsb2NhbGUgICAgICAgIF0gZG5sCkBAIC02Miw2ICs2MywxMiBAQAogICAgIF0sIFsgXSkKIAogICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWyNpbmNsdWRlIDx3aW5zb2NrMi5oPl0sCisgICAgWyBnZXRob3N0YnlhZGRyKE5VTEwpOyBdKV0sCisgICAgWyBhY19jdl9mdW5jX2dldGhvc3RhZGRyPXllcworICAgICAgQVNfRUNITyAiI2RlZmluZSBIQVZFX0dFVEhPU1RCWUFERFIgMSIgPj5jb25mZGVmcy5oCisgICAgXSwgWyBdKQorCisgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbI2luY2x1ZGUgPHdpbnNvY2syLmg+XSwKICAgICBbIGdldGhvc3RuYW1lKE5VTEwsIDApOyBdKV0sCiAgICAgWyBhY19jdl9mdW5jX2dldGhvc3RuYW1lPXllcwogICAgICAgQVNfRUNITyAiI2RlZmluZSBIQVZFX0dFVEhPU1ROQU1FIDEiID4+Y29uZmRlZnMuaApAQCAtNjksNyArNzYsNyBAQAogICAgIDs7CiAKICAgKikKLSAgICBBQ19DSEVDS19GVU5DUyhbZ2FpX3N0cmVycm9yIGdldGFkZHJpbmZvIGdldGhvc3RieW5hbWUgZ2V0aG9zdGJ5bmFtZTIgZ2V0aG9zdG5hbWVdKQorICAgIEFDX0NIRUNLX0ZVTkNTKFtnYWlfc3RyZXJyb3IgZ2V0YWRkcmluZm8gZ2V0aG9zdGJ5bmFtZSBnZXRob3N0YnluYW1lMiBnZXRob3N0bmFtZSBnZXRob3N0YnlhZGRyXSkKICAgICA7OwogZXNhYwogCkBAIC0xNjcsMTEgKzE3NCwxMSBAQAogICAgICAgICAgICAgICAgW25ldHNubXBfY3ZfX2Z1bmNfX25hbWVdLFsKICAgICBuZXRzbm1wX2N2X19mdW5jX19uYW1lPW5vCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoCi0gICAgICAgIEFDX0xBTkdfUFJPR1JBTSgsW1tjb25zdCBjaGFyKiBjcCA9IF9fZnVuY19fO11dKSwKKyAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgsW1tjb25zdCBjaGFyKiBjcCA9IF9fZnVuY19fO11dKV0sCiAgICAgICAgIFtuZXRzbm1wX2N2X19mdW5jX19uYW1lPV9fZnVuY19fXSkKICAgICBpZiB0ZXN0ICIkbmV0c25tcF9jdl9fZnVuY19fbmFtZSIgPSBubyA7IHRoZW4KICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAotICAgICAgICBBQ19MQU5HX1BST0dSQU0oLFtbY29uc3QgY2hhciogY3AgPSBfX0ZVTkNUSU9OX187XV0pLAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKCxbW2NvbnN0IGNoYXIqIGNwID0gX19GVU5DVElPTl9fO11dKV0sCiAgICAgICAgIFtuZXRzbm1wX2N2X19mdW5jX19uYW1lPV9fRlVOQ1RJT05fX10pCiAgICAgZmldKQogaWYgdGVzdCAiJG5ldHNubXBfY3ZfX2Z1bmNfX25hbWUiICE9IG5vOyB0aGVuCkBAIC0xODQsMTQgKzE5MSwxNCBAQAogIwogQUNfQ0FDSEVfQ0hFQ0soW1t3aGV0aGVyIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSBicm9rZW4gKFVuaXh3YXJlKV1dLAogICAgICAgICAgICAgICAgIFtuZXRzbm1wX2N2X2NfYnJva2VuX2lubGluZV0sCi0gICAgQUNfQ09NUElMRV9JRkVMU0UoW1sKKyAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoWwogc3RhdGljIGlubGluZSBpbnQgbmVzdGVkX2lubGluZV9mdW5jdGlvbih2b2lkKSB7CiAgIHJldHVybiAwOwogfQogaW5saW5lIGludCBtYWluX2lubGluZV9mdW5jdGlvbiggdm9pZCApIHsKICAgcmV0dXJuIG5lc3RlZF9pbmxpbmVfZnVuY3Rpb24oKTsKIH0KLSAgICBdXSwKKyAgICBdKV0sCiAgICAgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPW5vLAogICAgIG5ldHNubXBfY3ZfYnJva2VuX2lubGluZT15ZXMpKQogCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCmluZGV4IDE5YjI3ZmMuLjcwOGFhMDkgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCkBAIC01NSw2ICs1NSw3IEBACiAgICAgICAgICAgICAgICAgIFtpb2N0bHMuaCAgIGtzdGF0LmggICAga3ZtLmggICAgICBsaW1pdHMuaCAgICAgXSBkbmwKICAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgbW50ZW50LmggICBtdGFiLmggICAgICAgICAgICAgICAgICBdIGRubAogICAgICAgICAgICAgICAgICBbICAgICAgICAgICBwa2dsb2NzLmggICAgICAgICAgICAgcHdkLmggICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFsgICAgICAgICAgIGNvbV9lcnIuaCAgICAgICAgICAgICBldC9jb21fZXJyLmggXSBkbmwKICAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgdXRtcHguaCAgICB1dHNuYW1lLmggICAgICAgICAgICAgICBdKQogCiBBQ19DSEVDS19IRUFERVJTKFtzeXMvZGlza2lvLmggIHN5cy9ka2lvLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubApAQCAtOTAsNiArOTEsOCBAQAogICAgICAgICAgICAgICAgICBbcGNpL3BjaS5oICAgICAgICAgICAgICAgICAgICAgICAgXSkKIAogCisjIFZhbGdyaW5kCitBQ19DSEVDS19IRUFERVJTKFt2YWxncmluZC92YWxncmluZC5oIHZhbGdyaW5kL21lbWNoZWNrLmhdKQogIyBPcGVuU1NMCiBBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2Flcy5oIF0pICAgICAjICAoQ29yZSkKIEFDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvZGguaCAgXSkgICAgICMgIChBcHBzKQpAQCAtMzg4LDE4ICszOTEsMjEgQEAKICNpZiBIQVZFX1NZU19TT0NLRVRfSAogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNlbmRpZgorI2lmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUX0lGX1ZBUl9ICisjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfUk9VVEVfSAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2VuZGlmCiAjaWYgSEFWRV9ORVRJTkVUX0lOX0gKICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAjZW5kaWYKICNpZiBIQVZFX05FVElORVRfSVA2X0gKICNpbmNsdWRlIDxuZXRpbmV0L2lwNi5oPgogI2VuZGlmCi0jaWYgSEFWRV9ORVRfSUZfSAotI2luY2x1ZGUgPG5ldC9pZi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRfUk9VVEVfSAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotI2VuZGlmCiAgICAgXV0pCiAKICMgICAgICAgcmVxdWlyaW5nIDxuZXRpbmV0L2luLmg+ICAgICAgICAgICAgICAgICAgICAgICAgKE9wZW5CU0QgMi42KQpAQCAtNDY3LDYgKzQ3MywyNyBAQAogICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMocGtnaW5mbywgYWRtLAogICAgICAgICBBQ19ERUZJTkUoSEFWRV9QS0dJTkZPLCAxLCBbZGVmaW5lIGlmIHlvdSBoYXZlIHBrZ2luZm9dKSwsLExNSUJMSUJTKSkKIAorQUNfQ0hFQ0tfSEVBREVSUyhwa2cuaCwKKyAgICBORVRTTk1QX1NFQVJDSF9MSUJTKHBrZ19pbml0LCBwa2csCisgICAgICAgIEFDX0RFRklORShIQVZFX0xJQlBLRywgMSwgW2RlZmluZSBpZiB5b3UgaGF2ZSBCU0QgcGtnLW5nXSkpKQorCitpZiB0ZXN0ICRhY19jdl9oZWFkZXJfcGtnX2ggPSBubwordGhlbgorICAgIHVuc2V0IGFjX2N2X2hlYWRlcl9wa2dfaAorICAgIG5ldHNubXBfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICAgIG5ldHNubXBfc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgICBDUFBGTEFHUz0iJENQUEZMQUdTIC1JL3Vzci9sb2NhbC9pbmNsdWRlIgorICAgIExERkxBR1M9IiRMREZMQUdTIC1ML3Vzci9sb2NhbC9saWIiCisgICAgQUNfQ0hFQ0tfSEVBREVSUyhwa2cuaCwKKyAgICAgICAgTkVUU05NUF9TRUFSQ0hfTElCUyhwa2dfaW5pdCwgcGtnLAorCSAgICBBQ19ERUZJTkUoSEFWRV9MSUJQS0csIDEsIFtkZWZpbmUgaWYgeW91IGhhdmUgQlNEIHBrZy1uZ10pKSkKKyAgICBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfcGtnX2ggPSBubworICAgIHRoZW4KKyAgICAgICAgQ1BQRkxBR1M9IiRuZXRzbm1wX3NhdmVfQ1BQRkxBR1MiCisgICAgICAgIExERkxBR1M9IiRuZXRzbm1wX3NhdmVfTERGTEFHUyIKKyAgICBmaQorZmkKKwogY2FzZSAkdGFyZ2V0X29zIGluCiAgICAgYWl4KikKICAgICAgICAgIyAgICAgICBmb3IgQ1BVL21lbW9yeSBzdGF0aXN0aWNzICAgICAgICAgICAgICAgKEFJWCkKQEAgLTUxOCw0ICs1NDUsNDQgQEAKICMKIEFDX0NIRUNLX0hFQURFUlMoW3NlbnNvcnMvc2Vuc29ycy5oIHBpY2wuaF0pCiAKKyMjICBUaGlzIGlzIGhlcmUgdG8gYXZvaWQgbG9hZHMgb2YgcmVkZWZpbml0aW9uIHdhcm5pbmdzIGR1cmluZworIyMgIG1vZHVsZSBjb25maWd1cmF0aW9uCisKKyMjCisjICAgcnRlbnRyeSBzdHJ1Y3R1cmUgY2hlY2tzOgorIyMKKworIyBDaGVjayBzdHJ1Y3QgcnRlbnRyeSBmb3IgY29tbW9uIGZpZWxkcworIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHJ0ZW50cnkucnRfZHN0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfaGFzaCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X25leHQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF9yZWZjbnQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF91bml0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfdXNlXSwsLAorICAgIFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisjZGVmaW5lIF9LRVJORUxfU1RSVUNUVVJFUyAxCisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMCisjZGVmaW5lIEtFUk5FTAorI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCisjZGVmaW5lIF9LRVJORUwgMQorI2VuZGlmCisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjdW5kZWYgS0VSTkVMCisjdW5kZWYgX0tFUk5FTAorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfUk9VVEVfSAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2VuZGlmCisgICAgXSkKKwogZmkgIyBORVRTTk1QX1FVSUNLX0NIRUNLCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIKaW5kZXggMzQxNDY3OC4uNDc0OTFlMiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMgpAQCAtODYsNiArODYsOCBAQAogICBBQ19TRUFSQ0hfTElCUyhzb2NrZXQsIHNvY2tldCwsQUNfTVNHX0VSUk9SKFtzb2NrZXQoMikgbm90IGZvdW5kLl0pKQogICBBQ19TRUFSQ0hfTElCUyhnZXRob3N0YnluYW1lLCBbbnNsIHNvY2tldF0pCiAgIEFDX0NIRUNLX0ZVTkNTKGdldGhvc3RieW5hbWUpCisgIEFDX1NFQVJDSF9MSUJTKGdldGhvc3RieWFkZHIsIFtuc2wgc29ja2V0XSkKKyAgQUNfQ0hFQ0tfRlVOQ1MoZ2V0aG9zdGJ5YWRkcikKICAgOzsKIGVzYWMKIApAQCAtMTU2LDYgKzE1OCwxNiBAQAogICAgICAgICBMTkVUU05NUExJQlMpCiAKIAorIworIyAgIGxpYnJ0CisjCisKK05FVFNOTVBfU0VBUkNIX0xJQlMoY2xvY2tfZ2V0dGltZSwgcnQsCisgICAgICAgIEFDX0RFRklORShIQVZFX0NMT0NLX0dFVFRJTUUsIDEsCisgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2xvY2tfZ2V0dGltZScgbGlicmFyeV0pLCwsCisgICAgICAgIExORVRTTk1QTElCUykKKworCiAjIwogIyAgIE1JQi1tb2R1bGUtc3BlY2lmaWMgY2hlY2tzCiAjIwpAQCAtMTc1LDYgKzE4NywxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmluZSBpZiB5b3UgaGF2ZSBkZXZzdGF0X2dldGRldnMoKV0pLCwsTE1JQkxJQlMpCiBmaQogCisjICAgbGlicGNpCisjICAgICAgICAoZm9yIGlmLW1pYiBkZXNjcmlwdGlvbikKKyMKK05FVFNOTVBfU0VBUkNIX0xJQlMocGNpX2xvb2t1cF9uYW1lLCBwY2ksCisJQUNfREVGSU5FKEhBVkVfUENJX0xPT0tVUF9OQU1FLCAxLAorCQlbZGVmaW5lIGlmIHlvdSBoYXZlIHBjaV9sb29rdXBfbmFtZSgpXSksLCxMTUlCTElCUykKIAogIyAgIExNLVNFTlNPUlMtTUlCIHN1cHBvcnQKICMKQEAgLTMxMCw2ICszMjgsMTcgQEAKICAgICAgICAgQUNfREVGSU5FKEhBVkVfTElCUEtDUzExKQogICAgICAgICBMSUJQS0NTMTE9Ii1scGtjczExIikKIGZpCitpZiB0ZXN0ICJ4JFRMU1BST0ciID0gInh5ZXMiOyB0aGVuCisgICBBQ19DSEVDS19ERUNMKFtFVlBfc2hhMjI0XSwKKyAgICBBQ19ERUZJTkUoW0hBVkVfRVZQX1NIQTIyNF0sIFtdLCBbRGVmaW5lIGlmIHlvdSBoYXZlIEVWUF9zaGEyMjQvMjU2IGluIG9wZW5zc2xdKSwKKyAgICA6ICwKKyAgICBbWyNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPl1dKQorICAgQUNfQ0hFQ0tfREVDTChbRVZQX3NoYTM4NF0sCisgICAgQUNfREVGSU5FKFtIQVZFX0VWUF9TSEEzODRdLCBbXSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBFVlBfc2hhMzg0LzI1NiBpbiBvcGVuc3NsXSksCisgICAgOiAsCisgICAgW1sjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD5dXSkKK2ZpCisKIExJQlM9JE5PTkFHRU5UTElCUwkgIyByZXN0b3JlIG9sZCBsaWJyYXJpZXMKIGlmIHRlc3QgIngkU1NIUFJPRyIgPSAieHllcyI7IHRoZW4KICAgICBORVRTTk1QX0JVSUxEX1NTSF9QUk9HX1RSVUU9JycKQEAgLTMxOCwxNyArMzQ3LDQwIEBACiAgICAgTkVUU05NUF9CVUlMRF9TU0hfUFJPR19UUlVFPScjJwogICAgIE5FVFNOTVBfQlVJTERfU1NIX1BST0dfRkFMU0U9JycKIGZpCi1pZiB0ZXN0ICJ4JFRMU1BST0ciID0gInh5ZXMiOyB0aGVuCitpZiB0ZXN0ICJ4JFRMU1BST0ciID0gInh5ZXMiIC1hICJ4JGVuYWJsZV9yZWFkX29ubHkiICE9ICJ4eWVzIiA7IHRoZW4KICAgICBORVRTTk1QX0JVSUxEX1RMU19QUk9HX1RSVUU9JycKICAgICBORVRTTk1QX0JVSUxEX1RMU19QUk9HX0ZBTFNFPScjJwogZWxzZQogICAgIE5FVFNOTVBfQlVJTERfVExTX1BST0dfVFJVRT0nIycKICAgICBORVRTTk1QX0JVSUxEX1RMU19QUk9HX0ZBTFNFPScnCiBmaQoraWYgZWNobyAiICR7c2VjdXJpdHlfbW9kX2xpc3R9ICIgfCBncmVwICcgdXNtICcgOyB0aGVuCisgICAgaWYgdGVzdCAieCRlbmFibGVfcmVhZF9vbmx5IiAhPSAieHllcyIgOyB0aGVuCisgICAgCU5FVFNOTVBfQlVJTERfVVNNX1BST0dfVFJVRT0nJworICAgIAlORVRTTk1QX0JVSUxEX1VTTV9QUk9HX0ZBTFNFPScjJworICAgIGVsc2UKKyAgICAJTkVUU05NUF9CVUlMRF9VU01fUFJPR19UUlVFPScjJworICAgIAlORVRTTk1QX0JVSUxEX1VTTV9QUk9HX0ZBTFNFPScnCisgICAgZmkKK2Vsc2UKKyAgICBORVRTTk1QX0JVSUxEX1VTTV9QUk9HX1RSVUU9JyMnCisgICAgTkVUU05NUF9CVUlMRF9VU01fUFJPR19GQUxTRT0nJworZmkKK2lmIHRlc3QgIngkZW5hYmxlX3JlYWRfb25seSIgIT0gInh5ZXMiIDsgdGhlbgorICAgIE5FVFNOTVBfQlVJTERfU0VUX1BST0dfVFJVRT0iIgorICAgIE5FVFNOTVBfQlVJTERfU0VUX1BST0dfRkFMU0U9IiMiCitlbHNlCisgICAgTkVUU05NUF9CVUlMRF9TRVRfUFJPR19UUlVFPSIjIgorICAgIE5FVFNOTVBfQlVJTERfU0VUX1BST0dfRkFMU0U9IiIKK2ZpCiBBQ19TVUJTVChORVRTTk1QX0JVSUxEX1NTSF9QUk9HX1RSVUUpCiBBQ19TVUJTVChORVRTTk1QX0JVSUxEX1NTSF9QUk9HX0ZBTFNFKQogQUNfU1VCU1QoTkVUU05NUF9CVUlMRF9UTFNfUFJPR19UUlVFKQogQUNfU1VCU1QoTkVUU05NUF9CVUlMRF9UTFNfUFJPR19GQUxTRSkKK0FDX1NVQlNUKE5FVFNOTVBfQlVJTERfVVNNX1BST0dfVFJVRSkKK0FDX1NVQlNUKE5FVFNOTVBfQlVJTERfVVNNX1BST0dfRkFMU0UpCitBQ19TVUJTVChORVRTTk1QX0JVSUxEX1NFVF9QUk9HX1RSVUUpCitBQ19TVUJTVChORVRTTk1QX0JVSUxEX1NFVF9QUk9HX0ZBTFNFKQogCiAjCiAjIElmIHdlJ3JlIHVzaW5nIGludGVybmFsIGNyeXB0byBzdXBwb3J0IHdlIG5lZWQgdG8gY29tcGlsZSBpbiBleHRyYSBmaWxlcwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyIGIvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyCmluZGV4IGQ5MDAzNmQuLmUyYThmZjUgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMgorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIKQEAgLTk2LDMgKzk2LDQ3IEBACiBpZiB0ZXN0ICJ4JGFsbF93YXJuaW5ncyIgIT0gIngiOyB0aGVuCiAgICAgQUNfTVNHX0NBQ0hFX0FERChXQVJOSU5HOiAkYWxsX3dhcm5pbmdzKQogZmkKKworIworIyBDaGVjayB3aGV0aGVyIHVzZXIgd2FudHMgRE5TU0VDIGxvY2FsIHZhbGlkYXRpb24gc3VwcG9ydAorIworX2xpYnM9JHtMSUJTfQoraWYgISB0ZXN0ICJ4LSR3YW50X2Ruc3NlYyIgPSAieC1ubyIgOyB0aGVuCisgICAgQUNfQ0hFQ0tfSEVBREVSUyhbdmFsaWRhdG9yL3ZhbGlkYXRvci1jb25maWcuaF0pCisgICAgaWYgdGVzdCAiJGFjX2N2X2hlYWRlcl92YWxpZGF0b3JfdmFsaWRhdG9yX2NvbmZpZ19oIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKENhbid0IGZpbmQgdmFsaWRhdG9yLmgpCisgICAgZmkKKyAgICBpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9jcnlwdG9fRVZQX21kNSIgIT0gInh5ZXMiIC1hIFwKKyAgICAgICAgICAgICJ4JGFjX2N2X2xpYl9lYXkzMl9FVlBfbWQ1IiAhPSAieHllcyIgLW8gXAorICAgICAgICAgICAgIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfaG1hY19oIiAhPSAieHllcyI7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKENvdWxkbid0IGZpbmQgT3BlblNTTCBmb3IgbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24gc3VwcG9ydC4pCisgICAgZmkKKyAgICBMSUJTPSIkTElCUyAkTElCQ1JZUFRPIgorICAgIEFDX0NIRUNLX0xJQihzcmVzLCBxdWVyeV9zZW5kLCxBQ19NU0dfRVJST1IoW0Nhbid0IGZpbmQgbGlic3Jlc10pKQorICAgIFZBTF9MSUJTPSItbHNyZXMgJExJQkNSWVBUTyIKKyAgICBMSUJTPSIkTElCUyAtbHNyZXMiCisgICAgQUNfQ0hFQ0tfTElCKHZhbCwgcF92YWxfc3RhdHVzLAorICAgICAgICAgICAgICAgICBMSUJTPSIkTElCUyAtbHZhbCIKKyAgICAgICAgICAgICAgICAgVkFMX0xJQlM9IiRWQUxfTElCUyAtbHZhbCIKKyAgICAgICAgICAgICAgICAgaGF2ZV92YWxfcmVzX3F1ZXJ5PXllcywKKyAgICAgICAgICAgICAgICAgWyBBQ19DSEVDS19MSUIocHRocmVhZCwgcHRocmVhZF9yd2xvY2tfaW5pdCkKKwkJICAgQUNfQ0hFQ0tfTElCKHZhbC10aHJlYWRzLCBwX3ZhbF9zdGF0dXMsCisgICAgICAgICAgICAgICAgICAgaGF2ZV92YWxfcmVzX3F1ZXJ5PXllcworICAgICAgICAgICAgICAgICAgIExJQlM9Ii1sdmFsLXRocmVhZHMgJExJQlMiCisgICAgICAgICAgICAgICAgICAgVkFMX0xJQlM9Ii1sdmFsLXRocmVhZHMgLWxwdGhyZWFkICRWQUxfTElCUyIKKyAgICAgICAgICAgICAgICAgICBMSUJWQUxfU1VGRklYPSItdGhyZWFkcyIsCisgICAgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKENhbid0IGZpbmQgbGlidmFsIG9yIGxpYnZhbC10aHJlYWRzKSkKKyAgICAgICAgICAgICAgICAgXSkKKyAgICBBQ19ERUZJTkUoRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04sIDEsCisgICAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91IHdhbnQgbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24gc3VwcG9ydF0pCisgICAgRE5TU0VDPSJlbmFibGVkIgorZWxzZQorICAgIEROU1NFQz0iZGlzYWJsZWQiCitmaQorCitMSUJTPSR7X2xpYnN9CisKK0FDX1NVQlNUKFZBTF9MSUJTKQorQUNfTVNHX0NBQ0hFX0FERChMb2NhbCBETlNTRUMgdmFsaWRhdGlvbjogICAgJEROU1NFQykKKworIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0IGIvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0CmluZGV4IDczZjgwODcuLmNjOGJhZDIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQKQEAgLTQ5LDYgKzQ5LDIzIEBACiBBQ19ERUZJTkVfVU5RVU9URUQoS0VSTkVMX0xPQywiJGFjX2N2X0tFUk5FTF9MT0MiLCBbbG9jYXRpb24gb2YgVU5JWCBrZXJuZWxdKQogCiAKKyMgICAgICAgL2Rldi9rbWVtIGV4aXN0ZW5jZQorIwkgICAgdXNlZCBpbiBhZ2VudCBvbmx5CisjCitBQ19DQUNIRV9DSEVDSyhbZm9yIC9kZXYva21lbV0sCisgICAgYWNfY3ZfSEFWRV9LTUVNLAorICAgW2lmIHRlc3QgJENERVZfVEVTVF9GTEFHIC9kZXYva21lbTsgdGhlbgorICAgICAgICBhY19jdl9IQVZFX0tNRU09Ii9kZXYva21lbSIKKyAgICBmaQorXSkKKyMKKyMgIE5vdGUgdGhhdCBpdCdzIE9LIGlmIHRoaXMgZGV2aWNlIGlzIG5vdCBmb3VuZAorIworaWYgdGVzdCAieCRhY19jdl9IQVZFX0tNRU0iID0gIngvZGV2L2ttZW0iOyB0aGVuCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfS01FTSwiJGFjX2N2X0hBVkVfS01FTSIsIFtEZWZpbmUgaWYgeW91IGhhdmUgL2Rldi9rbWVtXSkKK2ZpCisKKwogIyAgICAgICBTd2FwIGRldmljZSBMb2NhdGlvbgogIyAgICAgICAgICAgKC9kZXYvZG1lbSBvciAvZGV2L2RydW0pCiAjCSAgICB1c2VkIGluIGFnZW50IG9ubHkKQEAgLTIxMSwzOSArMjI4LDYgQEAKICAgQUNfREVGSU5FKE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwsIDEsIFtzeXNjdGwgd29ya3MgdG8gZ2V0IGJvb3R0aW1lLCBldGMuLi5dKQogZmkKIAotIyAgIENoZWNrIEZyZWVCU0QncyBrZXJuZWwgT0lEIGtlcm4uY3BfdGltZXMgZXhpc3RhbmNlCi0jCi0jICAgICAgICAgdXNlZCBpbiBhZ2VudCBvbmx5IAotIwotaWYgdGVzdCAkY3Jvc3NfY29tcGlsaW5nID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX1dBUk4oW0Nhbid0IGNoZWNrIGVpdGhlciBzeXNjdGwga2Vybi5jcF90aW1lcywgbWFudWFsbHkgZGVmaW5lIEhBVkVfS0VSTl9DUF9USU1FUyBpZiBwbGF0Zm9ybSBzdXBwb3J0IGF2YWlsYWJsZV0pCi1lbHNlCi0gICAgQUNfQ0FDSEVfQ0hFQ0soW2lmIHN5c2N0bCBwcm92aWRlcyBrZXJuLmNwX3RpbWVzIGtlcm5lbCBpbmZvcm1hdGlvbl0sCi0gICAgICAgIGFjX2N2X0hBVkVfS0VSTl9DUF9USU1FUywKLSAgICAgICBbQUNfVFJZX1JVTihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi1tYWluICgpIHsKLQotICBzaXplX3QgICAgICAgICAgICAgIGNwX3RpbWVzX3NpemU7Ci0gIHNpemVfdCAgICAgICAgICAgICAgbmNwdV9zaXplOwotCi0gIGlmIChzeXNjdGxieW5hbWUoImtlcm4uY3BfdGltZXMiLCBOVUxMLCAmY3BfdGltZXNfc2l6ZSwgTlVMTCwgMCkpCi0gICAgZXhpdCgxKTsKLSAgZWxzZQotICAgIGV4aXQoMCk7Ci19Ci0gICAgICAgIF0sCi0gICAgICAgIGFjX2N2X0hBVkVfS0VSTl9DUF9USU1FUz15ZXMsCi0gICAgICAgIGFjX2N2X0hBVkVfS0VSTl9DUF9USU1FUz1ubywKLSAgICAgICAgYWNfY3ZfSEFWRV9LRVJOX0NQX1RJTUVTPW5vKV0pCi1maQotCi1pZiB0ZXN0ICJ4JGFjX2N2X0hBVkVfS0VSTl9DUF9USU1FUyIgPSAieHllcyI7IHRoZW4KLSAgQUNfREVGSU5FKEhBVkVfS0VSTl9DUF9USU1FUywgMSwgW2tlcm4uY3BfdGltZXMgZGlzcGxheXMgbXVsdGkgY3B1IGxvYWQgb24gRnJlZUJTRC4uLl0pCi1maQogCiAjICAgQ2hlY2sgd2hldGhlciBUQ1AgdGltZXIgY29uc3RhbnRzIGFyZSBpbmRlZWQgY29uc3RhbnQKICMgICAgICAgb3IgZGVwZW5kIG9uIHRoZSBrZXJuZWwgY2xvY2sgdGljayAnaHonLiAgICAgICAgKEZyZWVCU0QgNC54KQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzIGIvY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzCmluZGV4IGE2MDcxNGUuLjE2MDEzNGMgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncworKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MKQEAgLTQwMSwxMiArNDAxLDEyIEBACiAJZmkKIAk7OwogCi0gICAgZGFyd2luOCp8ZGFyd2luOSp8ZGFyd2luMTAqKQorICAgIGRhcndpbjgqfGRhcndpbjkqfGRhcndpbjEwKnxkYXJ3aW4xMSp8ZGFyd2luMTIqfGRhcndpbjEzKikKICAgICAgICAgIyAgIEZsYXQgTmFtZXNwYWNlIGxpbmtpbmcgICAgICAgICAgICAgICAgICAgICAgKE1hYyBPUy9YKQogICAgICAgICAjCiAgICAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBkYXJ3aW4gbGQgbWlnaHQgbmVlZCAtZmxhdF9uYW1lc3BhY2VdKQogCWlmIHRlc3QgLXogIiRNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQiOyB0aGVuCi0JCUxERkxBR1M9Ii1mbGF0X25hbWVzcGFjZSAkTERGTEFHUyIKKwkJTERGTEFHUz0iLWZsYXRfbmFtZXNwYWNlIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24gLWZyYW1ld29yayBDb3JlU2VydmljZXMgLWZyYW1ld29yayBEaXNrQXJiaXRyYXRpb24gLWZyYW1ld29yayBJT0tpdCAkTERGTEFHUyIKIAkJQUNfTVNHX1JFU1VMVChbeWVzXSkKIAllbHNlCiAJCUFDX01TR19SRVNVTFQoW25vXSkKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycwppbmRleCAyZjQwOGY2Li43ZjZiMmMwIDEwMDY0NAotLS0gYS9jb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzCkBAIC0zMyw3ICszMyw2IEBACiAjZW5kaWYKICAgICBdXSkKIAotCiAjICAgICAgIHN0cnVjdCBkZXNfa3Nfc3RydWN0CiAjICAgICAgICAgKCd3ZWFrX2tleScgaW5kaWNhdGVzIG9sZGVyIHZlcnNpb24gb2YgT3BlblNTTCkKICMgICBMaWJyYXJ5OgpAQCAtOTIsNiArOTEsMjAgQEAKICNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgogI2VuZGlmCiAgICAgXV0pCisjICAgICAgIHN0cnVjdCBpcDZzdGF0CisjICAgQWdlbnQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgaXA2c3RhdC5pcDZzX2V4dGhkcnRvb2xvbmcgXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVQ2X0lQNl9WQVJfSAorI2luY2x1ZGUgPG5ldGluZXQ2L2lwNl92YXIuaD4KKyNlbmRpZgorICAgIF1dKQorCiAjCiAjICAgTm90LVVzZWQ6CiBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgaXBzdGF0Lmlwc19jYW50Zm9yd2FyZCwKQEAgLTM1Nyw2ICszNzAsNyBAQAogICAgICAgICAgICAgICAgICAgc3RydWN0IHVkcHN0YXQudWRwc19mdWxsc29jaywKICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBzdGF0LnVkcHNfbm9wb3J0LAogICAgICAgICAgICAgICAgICAgc3RydWN0IHVkcHN0YXQudWRwc19ub3BvcnRiY2FzdCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZHBzdGF0LnVkcHNfaXBhY2tldHMsCiAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX29wYWNrZXRzXSwsLFsKICAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKICAgICBbCkBAIC0zODYsNyArNDAwLDcgQEAKICAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTF0sCiAgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUw9dW5rbm93bgogICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCi0gICAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFsKKyAgICAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFsKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CkBAIC00MDAsMTEgKzQxNCwxMSBAQAogI2lmZGVmIEhBVkVfTkVUX0lGX1ZBUl9ICiAjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgogI2VuZGlmCi0gICAgICAgICAgICAgXSwgW1tzdHJ1Y3QgaWZuZXQgdGVzdDsgdGVzdC5pZl9tdHUgPSAwO11dKSwKKyAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pXSwKICAgICAgICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMPW5vXSkKICAgICAgICAgIGlmIHRlc3QgIiRhY19jdl9JRk5FVF9ORUVEU19LRVJORUwiID0gdW5rbm93biA7IHRoZW4KICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAotICAgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbCisgICAgICAgICAgICAgW0FDX0xBTkdfUFJPR1JBTShbCiAjZGVmaW5lIF9LRVJORUwgMQogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKQEAgLTQxOSw3ICs0MzMsNyBAQAogI2lmZGVmIEhBVkVfTkVUX0lGX1ZBUl9ICiAjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgogI2VuZGlmCi0gICAgICAgICAgICAgXSwgW1tzdHJ1Y3QgaWZuZXQgdGVzdDsgdGVzdC5pZl9tdHUgPSAwO11dKSwKKyAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pXSwKICAgICAgICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMPXllc10pCiAgICAgICAgICBmaV0pCiAKQEAgLTU5Myw0NCArNjA3LDYgQEAKICAgICBdXSkKIAogCi0jIwotIyAgIHJ0ZW50cnkgc3RydWN0dXJlIGNoZWNrczoKLSMjCi0KLSMgQ2hlY2sgc3RydWN0IHJ0ZW50cnkgZm9yIGNvbW1vbiBmaWVsZHMKLSMgICBBZ2VudDoKLSMKLUFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBydGVudHJ5LnJ0X2RzdCwKLSAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X2hhc2gsCi0gICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF9uZXh0LAotICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfcmVmY250LAotICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfdW5pdCwKLSAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X3VzZV0sLCwKLSAgICBbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUwotI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMgMQotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKLSNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTAotI2RlZmluZSBLRVJORUwKLSNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBfS0VSTkVMIDEKLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI3VuZGVmIEtFUk5FTAotI3VuZGVmIF9LRVJORUwKLSNlbmRpZgotI2lmZGVmIEhBVkVfTkVUX1JPVVRFX0gKLSNpbmNsdWRlIDxuZXQvcm91dGUuaD4KLSNlbmRpZgotICAgIF0pCi0KLQogIyBDaGVjayBmb3IgQlNEIDQuMyB2cyA0LjQgc3RydWN0IHJ0ZW50cnkKICMKIEFDX0NBQ0hFX0NIRUNLKFt0eXBlIG9mIHJ0ZW50cnkgc3RydWN0dXJlXSwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24KaW5kZXggNzk4YzVjZS4uMjNmOGM3ZSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24KKysrIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24KQEAgLTI3Niw2ICsyNzYsNyBAQAogICAgICAgICBbRGVmaW5lIGlmIHlvdSBhcmUgZW1iZWRkaW5nIHBlcmwgaW4gdGhlIG1haW4gYWdlbnQuXSkKICAgICAgIE9USEVSQUdFTlRMSUJPQkpTPSJzbm1wX3BlcmwubyIKICAgICAgIE9USEVSQUdFTlRMSUJMT0JKUz0ic25tcF9wZXJsLmxvIgorICAgICAgT1RIRVJBR0VOVExJQkxGVFM9InNubXBfcGVybC5mdCIKIAogICAgICAgRU1CRURQRVJMSU5TVEFMTD0iZW1iZWRwZXJsaW5zdGFsbCIKICAgICAgIEVNQkVEUEVSTFVOSU5TVEFMTD0iZW1iZWRwZXJsdW5pbnN0YWxsIgpAQCAtMzE0LDExICszMTUsMTMgQEAKIFBFUkxUQVJHUz0iIgogUEVSTElOU1RBTExUQVJHUz0iIgogUEVSTFVOSU5TVEFMTFRBUkdTPSIiCitQRVJMRkVBVFVSRVM9IiIKIEFDX01TR19DSEVDS0lORyhbaWYgd2UgY2FuIGluc3RhbGwgdGhlIFBlcmwgbW9kdWxlc10pCiBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHllcyIgOyB0aGVuCiAgICAgUEVSTFRBUkdTPSJwZXJsbW9kdWxlcyIKICAgICBQRVJMSU5TVEFMTFRBUkdTPSJwZXJsaW5zdGFsbCIKICAgICBQRVJMVU5JTlNUQUxMVEFSR1M9InBlcmx1bmluc3RhbGwiCisgICAgUEVSTEZFQVRVUkVTPSJwZXJsZmVhdHVyZXMiCiAgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4eWVzIiA7IHRoZW4KICAgICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQZXJsIG1vZHVsZXM6ICAgICAgICAgIGJ1aWxkaW5nIC0tIGVtYmVkZGFibGUpCiAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgLS0gYW5kIGVtYmVkZGFibGVdKQpAQCAtMzM0LDYgKzMzNyw3IEBACiBBQ19TVUJTVChQRVJMSU5TVEFMTFRBUkdTKQogQUNfU1VCU1QoUEVSTFVOSU5TVEFMTFRBUkdTKQogQUNfU1VCU1QoUEVSTEFSR1MpCitBQ19TVUJTVChQRVJMRkVBVFVSRVMpCiAKIAogIyAgICAgICBSZXNldCBMSUJTIHRvIHByZS1saWJ3cmFwIHZhbHVlICAgKD8/PykKQEAgLTM1MSwxMiArMzU1LDE0IEBACiBQWVRIT05JTlNUQUxMVEFSR1M9IiIKIFBZVEhPTlVOSU5TVEFMTFRBUkdTPSIiCiBQWVRIT05DTEVBTlRBUkdTPSIiCitQWVRIT05GRUFUVVJFUz0iIgogQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBzaG91bGQgaW5zdGFsbCB0aGUgcHl0aG9uIGJpbmRpbmdzXSkKIGlmIHRlc3QgIngkaW5zdGFsbF9weXRob24iID0gInh5ZXMiIDsgdGhlbgogICAgIFBZVEhPTlRBUkdTPSJweXRob25tb2R1bGVzIgogICAgIFBZVEhPTklOU1RBTExUQVJHUz0icHl0aG9uaW5zdGFsbCIKICAgICBQWVRIT05VTklOU1RBTExUQVJHUz0icHl0aG9udW5pbnN0YWxsIgogICAgIFBZVEhPTkNMRUFOVEFSR1M9InB5dGhvbmNsZWFuIgorICAgIFBZVEhPTkZFQVRVUkVTPSJweXRob25mZWF0dXJlcyIKICAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUHl0aG9uIG1vZHVsZXM6ICAgICAgICBidWlsZGluZyBmb3IgJFBZVEhPTlBST0cpCiAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKIGVsc2UKQEAgLTM2OCw1ICszNzQsNiBAQAogQUNfU1VCU1QoUFlUSE9OVU5JTlNUQUxMVEFSR1MpCiBBQ19TVUJTVChQWVRIT05DTEVBTlRBUkdTKQogQUNfU1VCU1QoUFlUSE9OQVJHUykKK0FDX1NVQlNUKFBZVEhPTkZFQVRVUkVTKQogCiAKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUKaW5kZXggMDY5Y2MwNy4uNjFiYTAyNiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUKQEAgLTkzLDcgKzkzLDEyIEBACiAgICAgZWxpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInhubyI7IHRoZW4KICAgICAgIHRyeW9wZW5zc2w9bm8KICAgICBlbGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgotICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKCR3aXRodmFsKQorICAgICAgaWYgdGVzdCAtZCAiJHdpdGh2YWwvbGliL01pbkdXIjsgdGhlbgorICAgICAgICBMREZMQUdTPSItTCR3aXRodmFsL2xpYi9NaW5HVyAkTERGTEFHUyIKKyAgICAgICAgQ1BQRkxBR1M9Ii1JJHdpdGh2YWwvaW5jbHVkZSAkQ1BQRkxBR1MiCisgICAgICBlbHNlCisgICAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKKyAgICAgIGZpCiAgICAgICB0cnlvcGVuc3NsPXllcwogICAgICAgYXNrZWRvcGVuc3NsPXllcwogICAgIGZpLApAQCAtMTQwLDYgKzE0NSwxMyBAQAogICAgICAga3JiNXBhdGg9L3Vzci9rZXJiZXJvcwogZmkKIAorQUNfQVJHX1dJVEgoZG5zc2VjLWxvY2FsLXZhbGlkYXRpb24sCisgICAgICAgIFsgIC0td2l0aC1kbnNzZWMtbG9jYWwtdmFsaWRhdGlvbiBFbmFibGUgbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24gdXNpbmcgbGlidmFsIChubyldLCB3YW50X2Ruc3NlYz0kd2l0aHZhbCwgd2FudF9kbnNzZWM9bm8pCitBQ19BUkdfRU5BQkxFKFtkbnNzZWMtbG9jYWwtdmFsaWRhdGlvbl0sLAorICAgICAgICAgICAgICBORVRTTk1QX0lOVkFMSURfV0lUSChbZG5zc2VjLWxvY2FsLXZhbGlkYXRpb25dKSkKK0FDX0FSR19XSVRIKFtkbnNzZWNdLCxORVRTTk1QX0lOVkFMSURfV0lUSChbZG5zc2VjLWxvY2FsLXZhbGlkYXRpb25dKSkKK0FDX0FSR19FTkFCTEUoW2Ruc3NlY10sLE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtkbnNzZWMtbG9jYWwtdmFsaWRhdGlvbl0pKQorCiBORVRTTk1QX0FSR19XSVRIKHJwbSwKIFsgIC0td2l0aG91dC1ycG0gICAgICAgICAgICAgICAgICAgRG9uJ3QgaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgUlBNIHBhY2thZ2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IHN5c3RlbSB3aGVuIGJ1aWxkaW5nIHRoZSBob3N0IE1JQgpAQCAtMTY4LDggKzE4MCwxNCBAQAogQUNfU1VCU1QoSU5TVEFMTF9QUkVGSVgpCiAKIAotIyAgIAorIwogIyAgIFN1YnN5c3RlbXMgdG8gYnVpbGQ6CisjICAgICAgIExpYnJhcnkKKyMKK0ZFQVRVUkVIRUFERVJTPSJsaWJyYXJ5L2ZlYXR1cmVzLmgiCitGVE1BSU5TVUJTPSIiCisKKyMKICMgICAgICAgQWdlbnQKICMKIE5FVFNOTVBfQVJHX0VOQUJMRShhZ2VudCwKQEAgLTE3Nyw2ICsxOTUsOCBAQAogaWYgdGVzdCAieCRlbmFibGVfYWdlbnQiICE9ICJ4bm8iOyB0aGVuCiAgICBTTk1QRD0nc25tcGQkKEVYRUVYVCknCiAgICBNQUlOU1VCUz0iJE1BSU5TVUJTIGFnZW50IgorICAgRkVBVFVSRUhFQURFUlM9IiRGRUFUVVJFSEVBREVSUyBhZ2VudC9mZWF0dXJlcy1taWJncm91cHMuaCBhZ2VudC9mZWF0dXJlcy5oIgorICAgRlRNQUlOU1VCUz0iYWdlbnQgJEZUTUFJTlNVQlMiCiAgICBUUkFQTElCUz0nJChUUkFQRFdJVEhBR0VOVCknCiAgICBVU0VUUkFQTElCUz0nJChVU0VBR0VOVExJQlMpJwogZWxzZQpAQCAtMTg4LDcgKzIwOCw5IEBACiAgICAjVVNFVFJBUExJQlM9JyQoVVNFTElCUyknCiAgICBUUkFQTElCUz0nJChUUkFQRFdJVEhBR0VOVCknCiAgICBVU0VUUkFQTElCUz0nJChVU0VBR0VOVExJQlMpJworICAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfQUdFTlRdLCAxLCBbRGVmaW5lIGlmIG5vIGFnZW50IGlzIGJ1aWx0XSkKIGZpCisKIEFDX1NVQlNUKFNOTVBEKQogQUNfU1VCU1QoVFJBUExJQlMpCiBBQ19TVUJTVChVU0VUUkFQTElCUykKQEAgLTE5OSw2ICsyMjEsMTAgQEAKIFsgIC0tZGlzYWJsZS1hcHBsaWNhdGlvbnMgICAgICAgICAgRG8gbm90IGJ1aWxkIHRoZSBhcHBzIChzbm1wZ2V0LCAuLi4pLl0pCiBpZiB0ZXN0ICJ4JGVuYWJsZV9hcHBsaWNhdGlvbnMiICE9ICJ4bm8iOyB0aGVuCiAgICBNQUlOU1VCUz0iJE1BSU5TVUJTIGFwcHMiCisgICBGRUFUVVJFSEVBREVSUz0iJEZFQVRVUkVIRUFERVJTIGZlYXR1cmVzLXNubXBuZXRzdGF0LmggZmVhdHVyZXMtYXBwcy5oIgorICAgRlRNQUlOU1VCUz0iYXBwcyAkRlRNQUlOU1VCUyIKK2Vsc2UKKyAgIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX0FQUFNdLCAxLCBbRGVmaW5lIGlmIG5vIGFwcHMgYXJlIGJ1aWx0XSkKIGZpCiAKICMgICAgICAgTWFudWFsIHBhZ2VzCkBAIC0yMjcsNiArMjUzLDcgQEAKICMgd2l0aC1taWJzIGlzIHZhbGlkIHRvbywgYnV0IG1lYW5zIHNvbWV0aGluZyBlbHNlCiAKIEFDX1NVQlNUKE1BSU5TVUJTKQorQUNfU1VCU1QoRlRNQUlOU1VCUykKIEFDX01TR19DSEVDS0lORyhbd2hhdCB0byBidWlsZCBhbmQgaW5zdGFsbF0pCiBBQ19NU0dfUkVTVUxUKFskTUFJTlNVQlNdKQogCkBAIC01NTUsMTIgKzU4MiwxNiBAQAogICBBdmFpbGFibGUgU05NUCBzZWN1cml0eSBzZXJ2aWNlczoKIAogICAgICAgICB1c20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdXNlciBiYXNlZCBTTk1QIHNlY3VyaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWlyZWQgYW5kIGFsd2F5cyBjb21waWxlZCBpbikKICAgICAgICAga3NtICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIGtlcmJlcm9zIGJhc2VkIFNOTVAgc2VjdXJpdHkKICAgICAgICAgdHNtICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBUcmFuc3BvcnQtYmFzZWQgc2VjdXJpdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgdXNlIHdpdGggdGhlIFNTSCwgRFRMU1VEUCBhbmQgVExTVENQIHRyYW5zcG9ydHMpCiBdKQogCitORVRTTk1QX0FSR19XSVRIKG91dC1zZWN1cml0eS1tb2R1bGVzLAorWyAgLS13aXRoLW91dC1zZWN1cml0eS1tb2R1bGVzPSJzMSBzMiAuLi4iICAgUmVtb3ZlcyB0aGUgZ2l2ZW4gU05NUCBzZWN1cml0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlIHNlcnZpY2VzIGZyb20gdGhlIGRlZmF1bHQgbGlzdC4KK10pCisKIAogIyMKICMgICBQcm9qZWN0OiBMaWJyYXJ5OiBEZXZlbG9wZXItcmVsYXRlZCBzZXR0aW5ncwpAQCAtNzE3LDYgKzc0OCw5MCBAQAogQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfQUdFTlRYX1NPQ0tFVCwiJHdpdGh2YWwiLAogICAgICAgICBbVW5peCBkb21haW4gc29ja2V0IGZvciBBZ2VudFggbWFzdGVyLXN1YmFnZW50IGNvbW11bmljYXRpb25dKQogCisjCisjIGZlYXR1cmUgYWRkaXRpb24vcmVtb3ZhbCBhbmQgbWluaW1pYWxpc3Qgc3VwcG9ydAorIworRkVBVFVSRV9BRERfRkxBR1M9IiIKK05FVFNOTVBfQVJHX1dJVEgoZmVhdHVyZXMsCitbICAtLXdpdGgtZmVhdHVyZXM9ImZlYXQxIGZlYXQyIiAgIFJlcXVlc3QgZXh0cmEgZmVhdHVyZXMgdG8gYmUgdHVybmVkIG9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25seSB1c2VmdWwgd2l0aCAtLWVuYWJsZS1taW5pbWFsaXN0KV0sWworICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGxpc3Qgb2YgZmVhdHVyZXMgXSk7CisgIGZpCisgIEZFQVRVUkVfQUREX0ZMQUdTPSItLWFkZCAkd2l0aHZhbCIKKyAgQUNfTVNHX1JFU1VMVChhZGRpbmcgaW4gZmVhdHVyZXM6ICR3aXRodmFsKQorXSkKK0FDX1NVQlNUKEZFQVRVUkVfQUREX0ZMQUdTKQorCisKK0ZFQVRVUkVfUkVNT1ZFX0ZMQUdTPSIiCitORVRTTk1QX0FSR19XSVRIKG91dC1mZWF0dXJlcywKK1sgIC0td2l0aC1vdXQtZmVhdHVyZXM9ImZlYXQxLi4uIiAgUmVtb3ZlIHNwZWNpZmljIGZlYXR1cmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW1wbGllcyAtLWVuYWJsZS1taW5pbWFsaXN0KV0sWworICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGxpc3Qgb2YgZmVhdHVyZXMgXSk7CisgIGZpCisgIEZFQVRVUkVfUkVNT1ZFX0ZMQUdTPSItLXJlbW92ZSAkd2l0aHZhbCIKKyAgRkVBVFVSRVRBUkdTPSJmZWF0dXJlcyIKKyAgQUNfREVGSU5FKE5FVFNOTVBfTUlOSU1BTF9DT0RFLCAxLAorICAgIFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gcmVtb3ZlIGFsbCBub24tZXNzZW50aWFsIGNvZGUgZmVhdHVyZXMuXSkKKyAgQUNfTVNHX1JFU1VMVChyZW1vdmluZyBmZWF0dXJlczogJHdpdGh2YWwpCitdKQorQUNfU1VCU1QoRkVBVFVSRV9SRU1PVkVfRkxBR1MpCisKKworIyBDYXRjaCBjb21tb24gbWlzdGFrZXMKK0FDX0FSR19XSVRIKGZlYXR1cmUsLCBORVRTTk1QX0lOVkFMSURfV0lUSChbZmVhdHVyZXNdKSkKK0FDX0FSR19XSVRIKG91dC1mZWF0dXJlLCwgTkVUU05NUF9JTlZBTElEX1dJVEgoW291dC1mZWF0dXJlc10pKQorCitGRUFUVVJFVEFSR1M9IiIKK05FVFNOTVBfQVJHX0VOQUJMRShtaW5pbWFsaXN0LAorWyAgLS1lbmFibGUtbWluaW1hbGlzdCAgICAgICAgICAgICBSZW1vdmUgYWxsIG5vbi1lc3NlbnRpYWwgY29kZSBmZWF0dXJlcy5dKQoraWYgdGVzdCAieCRlbmFibGVfbWluaW1hbGlzdCIgPSAieHllcyI7IHRoZW4KKyAgICMgd2UnbGwgYXNzdW1lIHRoZSBtaW5pIGFnZW50IGlzIGRlc2lyZWQgaGVyZSBhcyB3ZWxsCisgICBtaW5pX2FnZW50PSJ5ZXMiCisgICBGRUFUVVJFVEFSR1M9ImZlYXR1cmVzIgorCisgICAjIG5lZWRlZCB0byBib290c3RyYXAgbGF0ZXIgY2hlY2tzCisgICBlY2hvICIiID4gaW5jbHVkZS9uZXQtc25tcC9mZWF0dXJlLWRldGFpbHMuaAorICAgQUNfREVGSU5FKE5FVFNOTVBfTUlOSU1BTF9DT0RFLCAxLAorICAgICBbRGVmaW5lIGlmIHlvdSB3YW50IHRvIHJlbW92ZSBhbGwgbm9uLWVzc2VudGlhbCBjb2RlIGZlYXR1cmVzLl0pCitlbHNlCisgICBGRUFUVVJFSEVBREVSUz0iIgorZmkKK0FDX0FSR19XSVRIKFttaW5pbWFsaXN0XSwsTkVUU05NUF9JTlZBTElEX0VOQUJMRShbbWluaW1hbGlzdF0pKQorQUNfU1VCU1QoRkVBVFVSRVRBUkdTKQorQUNfU1VCU1QoRkVBVFVSRUhFQURFUlMpCisKK05FVFNOTVBfQVJHX0VOQUJMRShub3RpZnktb25seSwKK1sgIC0tZW5hYmxlLW5vdGlmeS1vbmx5ICAgICAgICAgICAgQnVpbGQgdG9vbHMgdGhhdCBjYW4gb25seSBzZW5kIG5vdGlmaWNhdGlvbnMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX25vdGlmeV9vbmx5IiA9ICJ4eWVzIjsgdGhlbgorICAgQUNfREVGSU5FKE5FVFNOTVBfTk9USUZZX09OTFksIDEsCisgICAgIFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gb25seSBzdXBwb3J0IHNlbmRpbmcgbm90aWZpY2F0aW9uc10pCitmaQorQUNfQVJHX1dJVEgoW25vdGlmeS1vbmx5XSwsTkVUU05NUF9JTlZBTElEX0VOQUJMRShbbm90aWZ5LW9ubHldKSkKK0FDX0FSR19FTkFCTEUoW25vdGlmeW9ubHldLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFtub3RpZnktb25seV0pKQorCitORVRTTk1QX0FSR19FTkFCTEUobm8tbGlzdGVuLAorWyAgLS1lbmFibGUtbm8tbGlzdGVuICAgICAgICAgICAgICBCdWlsZCB0b29scyB0aGF0IGNhbid0IGxpc3RlbiB0byBwb3J0cy5dKQoraWYgdGVzdCAieCRlbmFibGVfbm9fbGlzdGVuIiA9ICJ4eWVzIiAtbyAieCRlbmFibGVfbm90aWZ5X29ubHkiID0gInh5ZXMiOyB0aGVuCisgICBlbmFibGVfbm9fbGlzdGVuPSJ5ZXMiCisgICBBQ19ERUZJTkUoTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCwgMSwKKyAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIGxpc3RlbmluZyBzdXBwb3J0IGZyb20gdGhlIGNvZGVdKQorZmkKK0FDX0FSR19XSVRIKFtuby1saXN0ZW5dLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFtuby1saXN0ZW5dKSkKK0FDX0FSR19FTkFCTEUoW25vbGlzdGVuXSwsTkVUU05NUF9JTlZBTElEX0VOQUJMRShbbm8tbGlzdGVuXSkpCisKK05FVFNOTVBfQVJHX0VOQUJMRShyZWFkLW9ubHksCitbICAtLWVuYWJsZS1yZWFkLW9ubHkgICAgICAgICAgICAgIFJlbW92ZSBhbGwgU0VUIHN1cHBvcnQgZnJvbSB0aGUgY29kZS5dKQoraWYgdGVzdCAieCRlbmFibGVfcmVhZF9vbmx5IiA9ICJ4eWVzIiAtbyAieCRlbmFibGVfbm90aWZ5X29ubHkiID0gInh5ZXMiIDsgdGhlbgorICAgZW5hYmxlX3JlYWRfb25seT0ieWVzIgorICAgQUNfREVGSU5FKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCwgMSwKKyAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIFNFVC93cml0ZSBhY2Nlc3MgZnJvbSB0aGUgY29kZV0pCitmaQorQUNfQVJHX1dJVEgoW3JlYWQtb25seV0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW3JlYWQtb25seV0pKQorQUNfQVJHX0VOQUJMRShbcmVhZG9ubHldLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFtyZWFkLW9ubHldKSkKKwogCiAjIwogIyAgIFByb2plY3Q6IEFnZW50OiBNSUIgbW9kdWxlIGNvbmZpZ3VyYXRpb24KQEAgLTczMiw2ICs4NDcsOSBAQAogQUNfQVJHX1dJVEgoW21pbmlhZ2VudF0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW21pbmktYWdlbnRdKSkKIEFDX0FSR19FTkFCTEUoW21pbmlhZ2VudF0sLE5FVFNOTVBfSU5WQUxJRF9FTkFCTEUoW21pbmktYWdlbnRdKSkKIAorCisKKwogTkVUU05NUF9BUkdfRU5BQkxFKG1mZC1yZXdyaXRlcywKIFsgIC0tZW5hYmxlLW1mZC1yZXdyaXRlcyAgICAgICAgICAgVXNlIG5ldyBNRkQgcmV3cml0ZXMgb2YgbWliIG1vZHVsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgYXZhaWxhYmxlLiAoZGVmYXVsdCBpcyB0byB1c2UKZGlmZiAtLWdpdCBhL2Rpc3QvTWFrZWZpbGUgYi9kaXN0L01ha2VmaWxlCmluZGV4IDEwYTc0OTMuLjc3MmU2YjggMTAwNjQ0Ci0tLSBhL2Rpc3QvTWFrZWZpbGUKKysrIGIvZGlzdC9NYWtlZmlsZQpAQCAtMTksNyArMTksNyBAQAogTkFNRSA9IG5ldC1zbm1wCiAKICMgRGVmaW5lIHRoZSBkZWZhdWx0IFJQTSByZWxlYXNlIG51bWJlci4gU2V0IGJ5IFZlcnNpb24tTXVuZ2UucGwKLVZFUlNJT04gPSA1LjYuMgorVkVSU0lPTiA9IDUuNy4zLnJjMQogCiBWRVJTSU9OX1RBRz1gZWNobyBFeHQtJChWRVJTSU9OKSB8IHNlZCAncy9cLi8tL2c7J2AKIApkaWZmIC0tZ2l0IGEvZGlzdC9hdXRvY29uZi12ZXJzaW9uIGIvZGlzdC9hdXRvY29uZi12ZXJzaW9uCmluZGV4IGM5NWZlYTUuLjI2NGYyY2UgMTAwNjQ0Ci0tLSBhL2Rpc3QvYXV0b2NvbmYtdmVyc2lvbgorKysgYi9kaXN0L2F1dG9jb25mLXZlcnNpb24KQEAgLTEgKzEgQEAKLTIuNjMKKzIuNjgKZGlmZiAtLWdpdCBhL2Rpc3QvbWFrZXJlbGVhc2UueG1sIGIvZGlzdC9tYWtlcmVsZWFzZS54bWwKaW5kZXggYzMyYjgxMy4uYjFjYmQ0OCAxMDA2NDQKLS0tIGEvZGlzdC9tYWtlcmVsZWFzZS54bWwKKysrIGIvZGlzdC9tYWtlcmVsZWFzZS54bWwKQEAgLTM3MSw3ICszNzEsNyBAQAogCSAgICA8Y29tbWFuZD5ORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTj0xIG1ha2U8L2NvbW1hbmQ+CiAJICA8L2NvbW1hbmRzPgogCTwvc3RlcD4KLQk8c3RlcCB0eXBlPSJzeXN0ZW0iIHN0ZXBuYW1lPSJidWlsZDp0ZXN0IiB0aXRsZT0iYnVpbGQ6dGVzdCI+CisJPHN0ZXAgdHlwZT0ic3lzdGVtIiBzdGVwbmFtZT0iYnVpbGQ6dGVzdCIgdGl0bGU9InRlc3Rpbmc6IGRlZmF1bHQgdGVzdHMiPgogCSAgPHRleHQ+Tm93IHdlIHJ1biAibWFrZSB0ZXN0IiB3aGljaCBzaG91bGQgcHJvZHVjZSBhIHBlcmZlY3QKIAkgIHNldCB1cCB0ZXN0IHJlc3VsdHMuICBJZiBub3QsIHRoaXMgbmVlZHMgdG8gYmUgZml4ZWQgb3IgYXQKIAkgIGxlYXN0IHVuZGVyc3Rvb2QgYW5kIGFjY2VwdGVkIGFzIGlzIGZvciBzb21lIG90aGVyIHJlYXNvbi48L3RleHQ+CkBAIC0zNzksNiArMzc5LDI0IEBACiAJICAgIDxjb21tYW5kPm1ha2UgdGVzdDwvY29tbWFuZD4KIAkgIDwvY29tbWFuZHM+CiAJPC9zdGVwPgorCTxzdGVwIHR5cGU9InN5c3RlbSIgc3RlcG5hbWU9ImJ1aWxkOnRlc3Q6dW5pdCIgdGl0bGU9InRlc3Rpbmc6IHVuaXQtdGVzdHMiPgorCSAgPHRleHQ+Tm93IHdlIHJ1biB0aGUgdW5pdC10ZXN0cyB3aGljaCBzaG91bGQgYWxzbyBwcm9kdWNlIGEgcGVyZmVjdAorCSAgc2V0IHVwIHRlc3QgcmVzdWx0cy4gIElmIG5vdCwgdGhpcyBuZWVkcyB0byBiZSBmaXhlZCBvciBhdAorCSAgbGVhc3QgdW5kZXJzdG9vZCBhbmQgYWNjZXB0ZWQgYXMgaXMgZm9yIHNvbWUgb3RoZXIgcmVhc29uLjwvdGV4dD4KKwkgIDxjb21tYW5kcz4KKwkgICAgPGNvbW1hbmQ+Y2QgdGVzdGluZyAmYW1wOyZhbXA7IC4vUlVORlVMTFRFU1RTIC1nIHVuaXQtdGVzdHM8L2NvbW1hbmQ+CisJICA8L2NvbW1hbmRzPgorCTwvc3RlcD4KKwk8c3RlcCB0eXBlPSJzeXN0ZW0iIHN0ZXBuYW1lPSJidWlsZDp0ZXN0OnRyYW5zcG9ydHMiIHRpdGxlPSJ0ZXN0aW5nOiB0cmFuc3BvcnRzIj4KKwkgIDx0ZXh0Pk5vdyB3ZSBydW4gdGhlIHRyYW5zcG9ydCB0ZXN0cyB3aGljaCBzaG91bGQgYWxzbworCSAgcHJvZHVjZSBhIHBlcmZlY3Qgc2V0IHVwIHRlc3QgcmVzdWx0cywgaWYgeW91ciBtYWNoaW5lCisJICBzdXBwb3J0cyBhbGwgdGhlIHRyYW5zcG9ydHMuICBJZiBub3QsIHRoaXMgbmVlZHMgdG8gYmUgZml4ZWQKKwkgIG9yIGF0IGxlYXN0IHVuZGVyc3Rvb2QgYW5kIGFjY2VwdGVkIGFzIGlzIGZvciBzb21lIG90aGVyCisJICByZWFzb24gKGxpa2UgeW91IGNhbid0IGRvIElQdjYgb24geW91ciBzeXN0ZW0pLjwvdGV4dD4KKwkgIDxjb21tYW5kcz4KKwkgICAgPGNvbW1hbmQ+Y2QgdGVzdGluZyAmYW1wOyZhbXA7IC4vUlVORlVMTFRFU1RTIC1nIHRyYW5zcG9ydHM8L2NvbW1hbmQ+CisJICA8L2NvbW1hbmRzPgorCTwvc3RlcD4KIAk8c3RlcCB0eXBlPSJzeXN0ZW0iIHN0ZXBuYW1lPSJjb2RlOmNoZWNrY29tbWVudHMiIHRpdGxlPSJjb2RlOmNoZWNrY29tbWVudHMiPgogCSAgPHRleHQ+VGhpcyBjb21tYW5kIGxvb2tzIGZvciBzb3VyY2UgY29kZSBvZGRpdGllcyBhbmQgcG9saWN5CiAJICB2aW9sYXRpb25zLjwvdGV4dD4KQEAgLTQ4NCwxMCArNTAyLDEwIEBACiAJICAgIFRoaXMgd2lsbCBhY3R1YWxseSBzdm4gY29weSB0aGUgY3VycmVudCBjaGVja2VkIG91dCBicmFuY2gKIAkgICAgdG8gdGhlIG5ldyB0YWcgbmFtZS4gIFNwZWNpZmljYWxseToKIAotICAgICAgICAgICAgICAgZ2l0IHRhZyAtdSBBNzdDNTMyOSAtcyB7VkVSU0lPTlRBR05BTUV9IC1tICJUYWdnaW5nIG9mIHZlcnNpb24ge1ZFUlNJT059IGFzIHtWRVJTSU9OVEFHTkFNRX0iCisgICAgICAgICAgICAgICBnaXQgdGFnIC11IEUwRjgxNTMzIC1zIHtWRVJTSU9OVEFHTkFNRX0gLW0gIlRhZ2dpbmcgb2YgdmVyc2lvbiB7VkVSU0lPTn0gYXMge1ZFUlNJT05UQUdOQU1FfSIKIAkgIDwvdGV4dD4KIAkgIDxjb21tYW5kcz4KLQkgICAgPGNvbW1hbmQ+Z2l0IHRhZyAtdSBBNzdDNTMyOSAtcyB7VkVSU0lPTlRBR05BTUV9IC1tICJUYWdnaW5nIG9mIHZlcnNpb24ge1ZFUlNJT059IGFzIHtWRVJTSU9OVEFHTkFNRX0iPC9jb21tYW5kPgorCSAgICA8Y29tbWFuZD5naXQgdGFnIC11IEUwRjgxNTMzIC1zIHtWRVJTSU9OVEFHTkFNRX0gLW0gIlRhZ2dpbmcgb2YgdmVyc2lvbiB7VkVSU0lPTn0gYXMge1ZFUlNJT05UQUdOQU1FfSI8L2NvbW1hbmQ+CiAJICA8L2NvbW1hbmRzPgogCTwvc3RlcD4KIAk8c3RlcCBwcm9tcHQ9InRydWUiIHR5cGU9InN5c3RlbSIgc3RlcG5hbWU9InJlbGVhc2U6bWFrZWRpc3QiIHRpdGxlPSJyZWxlYXNlOm1ha2VkaXN0Ij4KQEAgLTUyMiwxMiArNTQwLDEyIEBACiAJPC9zdGVwPgogCTxzdGVwIHR5cGU9InN5c3RlbSIgc3RlcG5hbWU9InJlbGVhc2U6Z3BnIiB0aXRsZT0icmVsZWFzZTpncGciPgogCSAgPGNvbW1hbmRzPgotCSAgICA8Y29tbWFuZD5ncGcgLXUgQTc3QzUzMjkgLWEgLS1kZXRhY2gtc2lnbiBuZXQtc25tcC17VkVSU0lPTn0udGFyLmd6PC9jb21tYW5kPgorCSAgICA8Y29tbWFuZD5ncGcgLXUgRTBGODE1MzMgLWEgLS1kZXRhY2gtc2lnbiBuZXQtc25tcC17VkVSU0lPTn0udGFyLmd6PC9jb21tYW5kPgogCSAgPC9jb21tYW5kcz4KIAk8L3N0ZXA+CiAJPHN0ZXAgdHlwZT0ic3lzdGVtIiBzdGVwbmFtZT0icmVsZWFzZTpncGciIHRpdGxlPSJyZWxlYXNlOmdwZyI+CiAJICA8Y29tbWFuZHM+Ci0JICAgIDxjb21tYW5kPmdwZyAtdSBBNzdDNTMyOSAtYSAtLWRldGFjaC1zaWduIG5ldC1zbm1wLXtWRVJTSU9OfS56aXA8L2NvbW1hbmQ+CisJICAgIDxjb21tYW5kPmdwZyAtdSBFMEY4MTUzMyAtYSAtLWRldGFjaC1zaWduIG5ldC1zbm1wLXtWRVJTSU9OfS56aXA8L2NvbW1hbmQ+CiAJICA8L2NvbW1hbmRzPgogCTwvc3RlcD4KIAk8c3RlcCB0eXBlPSJjb21tYW5kIiBuYW1lPSJyZWxlYXNlOm5leHRicmFuY2giIHRpdGxlPSJEb24ndCBwcm9wYWdhdGUgY29kZSBtb2RpZmljYXRpb25zIgpkaWZmIC0tZ2l0IGEvZGlzdC9uZXQtc25tcC5zcGVjIGIvZGlzdC9uZXQtc25tcC5zcGVjCmluZGV4IDIyODNjMmYuLmQ5ZjJlMWIgMTAwNjQ0Ci0tLSBhL2Rpc3QvbmV0LXNubXAuc3BlYworKysgYi9kaXN0L25ldC1zbm1wLnNwZWMKQEAgLTM3LDcgKzM3LDcgQEAKICVlbmRpZgogU3VtbWFyeTogVG9vbHMgYW5kIHNlcnZlcnMgZm9yIHRoZSBTTk1QIHByb3RvY29sCiBOYW1lOiBuZXQtc25tcAotVmVyc2lvbjogNS42LjIKK1ZlcnNpb246IDUuNy4zLnJjMQogIyB1cGRhdGUgcmVsZWFzZSBmb3IgdmVuZG9yIHJlbGVhc2UuIChlZyAxLmZjNiwgMS5yaDcyLCAxLnlkbDMsIDEueWRsMjMpCiBSZWxlYXNlOiAxCiBVUkw6IGh0dHA6Ly93d3cubmV0LXNubXAub3JnLwpkaWZmIC0tZ2l0IGEvZGlzdC9wYXRtZSBiL2Rpc3QvcGF0bWUKaW5kZXggY2MwYjg3YS4uMGZkNTBlZSAxMDA3NTUKLS0tIGEvZGlzdC9wYXRtZQorKysgYi9kaXN0L3BhdG1lCkBAIC0xNCwxMiArMTQsMTMgQEAKIG91ciAlb3B0cyA9CiAoCiAgJ2QnID0+ICRFTlZ7J0hPTUUnfSAuICIvc3JjL3NubXAvcGF0bWUvIiwKLSAnYicgPT4gJ21haW4sNS41LDUuNCw1LjMsNS4yJywKKyAnYicgPT4gJ21haW4sNS42LDUuNSw1LjQsNS4zJywKICAncCcgPT4gJy1wMCcsCiApOwogCiAjIHNldHMgdGhlIG9yZGVyIHNob3duCiBvdXIgQGNvZGV0cmVlcyA9ICgnbWFpbicsCisJCSAgJzUuNicsCiAJCSAgJzUuNScsCiAJCSAgJzUuNCcsCiAJCSAgJzUuMycsCkBAIC0zNCw2ICszNSw3IEBACiAJCSAgJzUuMycgPT4gJ1Y1LTMtcGF0Y2hlcycsCiAJCSAgJzUuNCcgPT4gJ1Y1LTQtcGF0Y2hlcycsCiAJCSAgJzUuNScgPT4gJ1Y1LTUtcGF0Y2hlcycsCisJCSAgJzUuNicgPT4gJ1Y1LTYtcGF0Y2hlcycsCiAJCSAgJ21haW4nID0+ICduZXQtc25tcCcsCiAJCSAgJ1VDRCcgPT4gJ1Y0LTItcGF0Y2hlcycpOwogCmRpZmYgLS1naXQgYS9kaXN0L3JlbGVhc2UgYi9kaXN0L3JlbGVhc2UKaW5kZXggOGE4MzE0Yy4uNThlYWI0NyAxMDA2NDQKLS0tIGEvZGlzdC9yZWxlYXNlCisrKyBiL2Rpc3QvcmVsZWFzZQpAQCAtMywzICszLDQgQEAKICMgYXBwbHlpbmcgcGF0Y2hlcyB0byBhIGdpdmVuIGJyYW5jaC4gIFJpZ2h0IG5vdywgdGhlIGZpbGUgc2hvdWxkIGNvbnRhaW4KICMgYSBicmFuY2ggbmFtZSBmb2xsb3dlZCBieSAncmMnIHdoZW4gdGhlIGJyYW5jaCBpcyBpbiByYyBwaGFzZSBvZiBhIHJlbGVhc2UuCiAjCitWNS03LXBhdGNoZXMgcmMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKaW5kZXggMjQzMmI4OC4uZWM5MzBmZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKQEAgLTYxLDYgKzYxLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBuZXRzbm1wX3JlcXVlc3RfaW5mb19zICopOworICAgICAgICAvKiogZGF0YSBjbG9uZSBob29rIGZvciBteXZvaWQKKyAgICAgICAgICogIGRlZXAgY29weSB0aGUgbXl2b2lkIG1lbWJlciAtIGRlZmF1bHQgaXMgdG8gY29weSB0aGUgcG9pbnRlcgorICAgICAgICAgKiAgVGhpcyBtZXRob2QgaXMgb25seSBjYWxsZWQgaWYgbXl2b2lkICE9IE5VTEwKKyAgICAgICAgICogIG15dm9pZCBpcyB0aGUgY3VycmVudCBteXZvaWQgcG9pbnRlci4KKyAgICAgICAgICogIHJldHVybnMgTlVMTCBvbiBmYWlsdXJlCisgICAgICAgICAqLworICAgICAgICB2b2lkICooKmRhdGFfY2xvbmUpKHZvaWQgKm15dm9pZCk7CisgICAgICAgIC8qKiBkYXRhIGZyZWUgaG9vayBmb3IgbXl2b2lkCisgICAgICAgICAqICBkZWxldGUgdGhlIG15dm9pZCBtZW1iZXIgLSBkZWZhdWx0IGlzIHRvIGRvIG5vdGhpbmcKKyAgICAgICAgICogIFRoaXMgbWV0aG9kIGlzIG9ubHkgY2FsbGVkIGlmIG15dm9pZCAhPSBOVUxMCisgICAgICAgICAqLwogICAgICAgICB2b2lkICgqZGF0YV9mcmVlKSh2b2lkICpteXZvaWQpOyAvKio8IGRhdGEgZnJlZSBob29rIGZvciBteXZvaWQgKi8KIAogICAgICAgICBzdHJ1Y3QgbmV0c25tcF9taWJfaGFuZGxlcl9zICpuZXh0OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCmluZGV4IGJhODA3OTMuLjI5NDljOWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKQEAgLTU5LDE4ICs1OSwyMSBAQAogdm9pZCAgICAgICAgICAgICBzaHV0ZG93bl90cmVlICAgICh2b2lkKTsKIAogCi1uZXRzbm1wX3N1YnRyZWUgKm5ldHNubXBfc3VidHJlZV9maW5kCSAgKG9pZCAqLCBzaXplX3QsIG5ldHNubXBfc3VidHJlZSAqLAorbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZAkgIChjb25zdCBvaWQgKiwgc2l6ZV90LAorCQkJCQkgICBuZXRzbm1wX3N1YnRyZWUgKiwKIAkJCQkJICAgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKTsKIAotbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZF9uZXh0KG9pZCAqLCBzaXplX3QsIG5ldHNubXBfc3VidHJlZSAqLAorbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZF9uZXh0KGNvbnN0IG9pZCAqLCBzaXplX3QsCisJCQkJCSAgIG5ldHNubXBfc3VidHJlZSAqLAogCQkJCQkgICBjb25zdCBjaGFyICpjb250ZXh0X25hbWUpOwogCi1uZXRzbm1wX3N1YnRyZWUgKm5ldHNubXBfc3VidHJlZV9maW5kX3ByZXYob2lkICosIHNpemVfdCxuZXRzbm1wX3N1YnRyZWUgKiwKK25ldHNubXBfc3VidHJlZSAqbmV0c25tcF9zdWJ0cmVlX2ZpbmRfcHJldihjb25zdCBvaWQgKiwgc2l6ZV90LAorCQkJCQkgICBuZXRzbm1wX3N1YnRyZWUgKiwKIAkJCQkJICAgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKTsKIAogbmV0c25tcF9zdWJ0cmVlICpuZXRzbm1wX3N1YnRyZWVfZmluZF9maXJzdChjb25zdCBjaGFyICpjb250ZXh0X25hbWUpOwogCi1uZXRzbm1wX3Nlc3Npb24gKmdldF9zZXNzaW9uX2Zvcl9vaWQJICAgKG9pZCAqLCBzaXplX3QsIAorbmV0c25tcF9zZXNzaW9uICpnZXRfc2Vzc2lvbl9mb3Jfb2lkCSAgIChjb25zdCBvaWQgKiwgc2l6ZV90LCAKIAkJCQkJICAgIGNvbnN0IGNoYXIgKmNvbnRleHRfbmFtZSk7CiAKIHN1YnRyZWVfY29udGV4dF9jYWNoZSAqZ2V0X3RvcF9jb250ZXh0X2NhY2hlKHZvaWQpOwpAQCAtODYsMjUgKzg5LDMyIEBACiAjZGVmaW5lIE1JQl9VTlJFR0lTVFJBVElPTl9GQUlMRUQJLTIKICNkZWZpbmUgREVGQVVMVF9NSUJfUFJJT1JJVFkJCTEyNwogCi1pbnQgICAgICAgICAgICAgcmVnaXN0ZXJfbWliCQkgICAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgdmFyaWFibGUgKiwKLQkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBvaWQgKiwgc2l6ZV90KTsKK2ludCAgICAgICAgICAgICByZWdpc3Rlcl9taWIJCSAgIChjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqLAorCQkJCQkgICAgc2l6ZV90LCBzaXplX3QsIGNvbnN0IG9pZCAqLAorCQkJCQkgICAgc2l6ZV90KTsKIAotaW50ICAgICAgICAgICAgIHJlZ2lzdGVyX21pYl9wcmlvcml0eQkgICAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgdmFyaWFibGUgKiwKLQkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBvaWQgKiwgc2l6ZV90LAoraW50ICAgICAgICAgICAgIHJlZ2lzdGVyX21pYl9wcmlvcml0eQkgICAoY29uc3QgY2hhciAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKiwKKwkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBjb25zdCBvaWQgKiwgc2l6ZV90LAogCQkJCQkgICAgaW50KTsKIAotaW50ICAgICAgICAgICAgIHJlZ2lzdGVyX21pYl9yYW5nZQkgICAoY29uc3QgY2hhciAqLCBzdHJ1Y3QgdmFyaWFibGUgKiwKLQkJCQkJICAgIHNpemVfdCwgc2l6ZV90LCBvaWQgKiwgc2l6ZV90LCAKLQkJCQkJICAgIGludCwgaW50LCBvaWQsIG5ldHNubXBfc2Vzc2lvbiAqKTsKK2ludCAgICAgICAgICAgICByZWdpc3Rlcl9taWJfcmFuZ2UJICAgKGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICosCisJCQkJCSAgICBzaXplX3QsIHNpemVfdCwgY29uc3Qgb2lkICosCisJCQkJCSAgICBzaXplX3QsIGludCwgaW50LCBvaWQsCisJCQkJCSAgICBuZXRzbm1wX3Nlc3Npb24gKik7CiAKLWludAkJcmVnaXN0ZXJfbWliX2NvbnRleHQJICAgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHZhcmlhYmxlICosCi0JCQkJCSAgICBzaXplX3QsIHNpemVfdCwgb2lkICosIHNpemVfdCwKK2ludAkJcmVnaXN0ZXJfbWliX2NvbnRleHQJICAgKGNvbnN0IGNoYXIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICosCisJCQkJCSAgICBzaXplX3QsIHNpemVfdCwgY29uc3Qgb2lkICosIHNpemVfdCwKIAkJCQkJICAgIGludCwgaW50LCBvaWQsIG5ldHNubXBfc2Vzc2lvbiAqLAogCQkJCQkgICAgY29uc3QgY2hhciAqLCBpbnQsIGludCk7CiAKLWludAluZXRzbm1wX3JlZ2lzdGVyX21pYl90YWJsZV9yb3cJICAgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHZhcmlhYmxlICosCi0JCQkJCSAgICBzaXplX3QsIHNpemVfdCwgb2lkICosIHNpemVfdCwgCi0JCQkJCSAgICBpbnQsIGludCwgbmV0c25tcF9zZXNzaW9uICosCitpbnQJbmV0c25tcF9yZWdpc3Rlcl9taWJfdGFibGVfcm93CSAgIChjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqLAorCQkJCQkgICAgc2l6ZV90LCBzaXplX3QsIG9pZCAqLAorCQkJCQkgICAgc2l6ZV90LCBpbnQsIGludCwgbmV0c25tcF9zZXNzaW9uICosCiAJCQkJCSAgICBjb25zdCBjaGFyICosIGludCwgaW50KTsKIAogaW50CQl1bnJlZ2lzdGVyX21pYgkJICAgKG9pZCAqLCBzaXplX3QpOwpAQCAtMTM5LDEwICsxNDksMTIgQEAKICAqICAgICAgICAgIChzaXplb2YodGhlb2lkKSAqbXVzdCogcmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMhKSAKICAqLwogCi0jZGVmaW5lIFJFR0lTVEVSX01JQihkZXNjciwgdmFyLCB2YXJ0eXBlLCB0aGVvaWQpICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaWYgKHJlZ2lzdGVyX21pYihkZXNjciwgKHN0cnVjdCB2YXJpYWJsZSAqKSB2YXIsIHNpemVvZihzdHJ1Y3QgdmFydHlwZSksIFwKLSAgICAgICAgICAgICAgIHNpemVvZih2YXIpL3NpemVvZihzdHJ1Y3QgdmFydHlwZSksICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgdGhlb2lkLCBzaXplb2YodGhlb2lkKS9zaXplb2Yob2lkKSkgIT0gTUlCX1JFR0lTVEVSRURfT0sgKSBcCisjZGVmaW5lIFJFR0lTVEVSX01JQihkZXNjciwgdmFyLCB2YXJ0eXBlLCB0aGVvaWQpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKHJlZ2lzdGVyX21pYihkZXNjciwgKGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqKSB2YXIsICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZhcnR5cGUpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICBzaXplb2YodmFyKS9zaXplb2Yoc3RydWN0IHZhcnR5cGUpLCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICB0aGVvaWQsIHNpemVvZih0aGVvaWQpL3NpemVvZihvaWQpKSAhPSAgICAgICAgICAgICBcCisgICAgICAgIE1JQl9SRUdJU1RFUkVEX09LKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAJREVCVUdNU0dUTCgoInJlZ2lzdGVyX21pYiIsICIlcyByZWdpc3RyYXRpb24gZmFpbGVkXG4iLCBkZXNjcikpOwogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKaW5kZXggNmExYThiOS4uZDI1NjU1MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKQEAgLTE2LDYgKzE2LDcgQEAKICNkZWZpbmUgQkFCWV9TVEVQX05PTkUgICAgICAgICAgICAgICAgICAwCiAjZGVmaW5lIEJBQllfU1RFUF9QUkVfUkVRVUVTVCAgICAgICAgICAgKDB4MSA8PCAgMSkKICNkZWZpbmUgQkFCWV9TVEVQX09CSkVDVF9MT09LVVAgICAgICAgICAoMHgxIDw8ICAyKQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICNkZWZpbmUgQkFCWV9TVEVQX0NIRUNLX1ZBTFVFICAgICAgICAgICAoMHgxIDw8ICAzKQogI2RlZmluZSBCQUJZX1NURVBfUk9XX0NSRUFURSAgICAgICAgICAgICgweDEgPDwgIDQpCiAjZGVmaW5lIEJBQllfU1RFUF9VTkRPX1NFVFVQICAgICAgICAgICAgKDB4MSA8PCAgNSkKQEAgLTI2LDE0ICsyNywxNyBAQAogI2RlZmluZSBCQUJZX1NURVBfVU5ET19DT01NSVQgICAgICAgICAgICgweDEgPDwgMTApCiAjZGVmaW5lIEJBQllfU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUICAgKDB4MSA8PCAxMSkKICNkZWZpbmUgQkFCWV9TVEVQX1VORE9fQ0xFQU5VUCAgICAgICAgICAoMHgxIDw8IDEyKQorI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogI2RlZmluZSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUICAgICAgICAgICgweDEgPDwgMTMpCiAKICNkZWZpbmUgQkFCWV9TVEVQX0FMTCAgICAgICAgICAgICAgICAgICAoMHhmZmZmZmZmZikKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBCQUJZX1NURVBfQ0hFQ0tfT0JKRUNUICAgICAgICAgIEJBQllfU1RFUF9DSEVDS19WQUxVRQogI2RlZmluZSBCQUJZX1NURVBfU0VUX1ZBTFVFUyAgICAgICAgICAgIEJBQllfU1RFUF9TRVRfVkFMVUUKICNkZWZpbmUgQkFCWV9TVEVQX1VORE9fU0VUUyAgICAgICAgICAgICBCQUJZX1NURVBfVU5ET19TRVQKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoqIEBuYW1lIGJhYnlfc3RlcHMKICAqCkBAIC00Myw2ICs0Nyw4IEBACiAgKiAgQHsgKi8KIAogICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfYmFieV9zdGVwc19tb2Rlc19zIHsKKyAgICAgICAvKiogTnVtYmVyIG9mIGhhbmRsZXJzIHdob3NlIG15dm9pZCBwb2ludGVyIHBvaW50cyBhdCB0aGlzIG9iamVjdC4gKi8KKyAgICAgICBpbnQgICAgICAgICByZWZjbnQ7CiAgICAgICAgdV9pbnQgICAgICAgcmVnaXN0ZXJlZDsKICAgICAgICB1X2ludCAgICAgICBjb21wbGV0ZWQ7CiAgICAgfSBuZXRzbm1wX2JhYnlfc3RlcHNfbW9kZXM7CkBAIC03NCw2ICs4MCw3IEBACiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqcHJlX3JlcXVlc3Q7CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqb2JqZWN0X2xvb2t1cDsKICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICpnZXRfdmFsdWVzOworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICpvYmplY3Rfc3ludGF4X2NoZWNrczsKICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICpyb3dfY3JlYXRpb247CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqdW5kb19zZXR1cDsKQEAgLTg0LDYgKzkxLDcgQEAKICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICp1bmRvX2NsZWFudXA7CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqdW5kb19jb21taXQ7CiAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqaXJyZXZlcnNpYmxlX2NvbW1pdDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICpwb3N0X3JlcXVlc3Q7CiAKICAgIHZvaWQgICAgICAgICAgICAgICAgICpteV9hY2Nlc3Nfdm9pZDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKaW5kZXggN2Y0ZTc0ZS4uMWU0NzUxYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKQEAgLTMyLDYgKzMyLDggQEAKICAgICB0eXBlZGVmIHZvaWQgKE5ldHNubXBDYWNoZUZyZWUpKG5ldHNubXBfY2FjaGUgKiwgdm9pZCopOwogCiAgICAgc3RydWN0IG5ldHNubXBfY2FjaGVfcyB7CisJLyoqIE51bWJlciBvZiBoYW5kbGVycyB3aG9zZSBteXZvaWQgbWVtYmVyIHBvaW50cyBhdCB0aGlzIHN0cnVjdHVyZS4gKi8KKwlpbnQgICAgICByZWZjbnQ7CiAgICAgICAgIC8qCiAJICogRm9yIG9wZXJhdGlvbiBvZiB0aGUgZGF0YSBjYWNoZXMKIAkgKi8KQEAgLTQwLDcgKzQyLDcgQEAKICAgICAgICAgaW50ICAgICAgdmFsaWQ7CiAgICAgICAgIGNoYXIgICAgIGV4cGlyZWQ7CiAgICAgICAgIGludCAgICAgIHRpbWVvdXQ7CS8qIExlbmd0aCBvZiB0aW1lIHRoZSBjYWNoZSBpcyB2YWxpZCAoaW4gcykgKi8KLSAgICAgICAgbWFya2VyX3QgdGltZXN0YW1wOwkvKiBXaGVuIHRoZSBjYWNoZSB3YXMgbGFzdCBsb2FkZWQgKi8KKyAgICAgICAgbWFya2VyX3QgdGltZXN0YW1wTTsJLyogV2hlbiB0aGUgY2FjaGUgd2FzIGxhc3QgbG9hZGVkICovCiAgICAgICAgIHVfbG9uZyAgIHRpbWVyX2lkOyAgICAgIC8qIHBlcmlvZGljIHRpbWVyIGlkICovCiAKICAgICAgICAgTmV0c25tcENhY2hlTG9hZCAqbG9hZF9jYWNoZTsKQEAgLTEwMCw2ICsxMDIsNyBAQAogCiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqCiAgICAgbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChuZXRzbm1wX2NhY2hlKiBjYWNoZSk7CisgICAgdm9pZCBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZShuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyKTsKIAogICAgIG5ldHNubXBfY2FjaGUgKiBuZXRzbm1wX2NhY2hlX2ZpbmRfYnlfb2lkKGNvbnN0IG9pZCAqIHJvb3RvaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJvb3RvaWRfbGVuKTsKQEAgLTExNiw2ICsxMTksNyBAQAogI2RlZmluZSBORVRTTk1QX0NBQ0hFX0RPTlRfQVVUT19SRUxFQVNFICAgICAgICAgICAgICAgICAgICAgMHgwMDA4CiAjZGVmaW5lIE5FVFNOTVBfQ0FDSEVfUFJFTE9BRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTAKICNkZWZpbmUgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMAorI2RlZmluZSBORVRTTk1QX0NBQ0hFX1JFU0VUX1RJTUVSX09OX1VTRSAgICAgICAgICAgICAgICAgICAgMHgwMDQwCiAKICNkZWZpbmUgTkVUU05NUF9DQUNIRV9ISU5UX0hBTkRMRVJfQVJHUyAgICAgICAgICAgICAgICAgICAgIDB4MTAwMAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKaW5kZXggM2FlNzU5ZC4uZjZmNjM5ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBORVRTTk1QX0RTX0FHRU5UX0RPTlRfTE9HX1RDUFdSQVBQRVJTX0NPTk5FQ1RTIDEyICAgLyogMSA9IGRpc2FibGUgbG9nZ2luZyAqLwogI2RlZmluZSBORVRTTk1QX0RTX0FQUF9ET05UX0xPRyAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfRE9OVF9SRVRBSU5fTk9USUZJQ0FUSU9OUyAvKiBjb21wYXQgKi8KICNkZWZpbmUgTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTICAgIDEzICAgLyogMSA9IGRvbid0IHN0b3JlIE5GUyBlbnRyaWVzIGluIGhyU3RvcmFnZVRhYmxlICovCisjZGVmaW5lIE5FVFNOTVBfRFNfQUdFTlRfUkVBTFNUT1JBR0VVTklUUyAxNCAgICAvKiAxID0gdXNlIHJlYWwgYWxsb2NhdGlvbiB1bml0cyBpbiBoclN0b3JhZ2VUYWJsZSwgMCA9IHJlY2FsY3VsYXRlIGl0IHRvIGZpdCAzMmJpdHMgKi8KIAogICAgLyogUmVwZWF0ZWQgZnJvbSAiYXBwcy9zbm1wdHJhcGRfZHMuaCIgKi8KICNkZWZpbmUgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCAgICAgICAxNgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvY3B1LmgKaW5kZXggNjI2ODg5Ny4uZjZlNDNlNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2NwdS5oCkBAIC0zMyw2ICszMyw5IEBACiAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBrZXJuX3RpY2tzOwogICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW50cnB0X3RpY2tzOwogICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2lycV90aWNrczsKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIHN0ZWFsX3RpY2tzOworICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZ3Vlc3RfdGlja3M7CisgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBndWVzdG5pY2VfdGlja3M7CiAKICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHRvdGFsX3RpY2tzOwogICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc3lzMl90aWNrczsgIC8qIEZvciBub24tYXRvbWljIHN5c3RlbSBjb3VudHMgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmgKaW5kZXggNWExZTVlZi4uOTFlOGUxNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmgKQEAgLTYwLDEzICs2MCwxOSBAQAogICAgICBjaGFyIGRldmljZVtTTk1QX01BWFBBVEgrMV07CiAgICAgIGludCAgdHlwZTsKIAotICAgICBsb25nIHNpemU7Ci0gICAgIGxvbmcgdXNlZDsKLSAgICAgbG9uZyBhdmFpbDsKLSAgICAgbG9uZyB1bml0czsKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNpemU7CisgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1c2VkOworICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYXZhaWw7CisgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB1bml0czsKIAotICAgICBsb25nIGludW1zX3RvdGFsOwotICAgICBsb25nIGludW1zX2F2YWlsOworICAgICAvKiBhcnRpZmljaWFsbHkgY29tcHV0ZWQgdmFsdWVzLCBib3RoICdzaXplXzMyJyBhbmQgJ3VuaXRzXzMyJyBmaXQgSU5UMzIgKi8KKyAgICAgdW5zaWduZWQgbG9uZyBzaXplXzMyOworICAgICB1bnNpZ25lZCBsb25nIHVzZWRfMzI7CisgICAgIHVuc2lnbmVkIGxvbmcgYXZhaWxfMzI7CisgICAgIHVuc2lnbmVkIGxvbmcgdW5pdHNfMzI7CisKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIGludW1zX3RvdGFsOworICAgICB1bnNpZ25lZCBsb25nIGxvbmcgaW51bXNfYXZhaWw7CiAKICAgICAgaW50ICBtaW5zcGFjZTsKICAgICAgaW50ICBtaW5wZXJjZW50OwpAQCAtOTksMyArMTA1LDUgQEAKIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXRzbm1wX2ZzeXNfc2l6ZV91bGwoIG5ldHNubXBfZnN5c19pbmZvKiApOwogdW5zaWduZWQgbG9uZyBsb25nIG5ldHNubXBfZnN5c191c2VkX3VsbCggbmV0c25tcF9mc3lzX2luZm8qICk7CiB1bnNpZ25lZCBsb25nIGxvbmcgbmV0c25tcF9mc3lzX2F2YWlsX3VsbChuZXRzbm1wX2ZzeXNfaW5mbyogKTsKKwordm9pZCBuZXRzbm1wX2ZzeXNfY2FsY3VsYXRlMzIoIG5ldHNubXBfZnN5c19pbmZvICpmKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAppbmRleCBlZmM4ZGQzLi44MmYyZWRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCkBAIC0xMzYsMTMgKzEzNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKIAogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9oZWxwZXJfaGFuZGxlcjsKLSNpZm5kZWYgTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUwotTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyOwotTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9sb25nX2hhbmRsZXI7Ci1OZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyOwotTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXI7Ci1OZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyOwotI2VuZGlmCiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX251bV9maWxlX2hhbmRsZXI7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAppbmRleCAwNmVjNDQ5Li4yYmQzY2QxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaApAQCAtMjUsMTAgKzI1LDEwIEBACiB9IG5ldHNubXBfb2xkX2FwaV9jYWNoZTsKIAogaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaShjb25zdCBjaGFyICptb2R1bGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHZhcmlhYmxlICp2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YXJzaXplLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbnVtdmFycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbWlibG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBtaWJsb2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBtaWJsb2NsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwcmlvcml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJhbmdlX3N1YmlkLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAppbmRleCA3OTk1YTViLi5hYWQ4ODM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaApAQCAtMTE4LDkgKzExOCwxNSBAQAogI2RlZmluZSBNT0RFX0dFVE5FWFQgICAgICAgICAgU05NUF9NU0dfR0VUTkVYVAogI2RlZmluZSBNT0RFX0dFVEJVTEsgICAgICAgICAgU05NUF9NU0dfR0VUQlVMSwogI2RlZmluZSBNT0RFX0dFVF9TVEFTSCAgICAgICAgU05NUF9NU0dfSU5URVJOQUxfR0VUX1NUQVNICisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBNT0RFX0lTX0dFVCh4KSAgICAgICAgKCh4ID49IDEyOCkgJiYgKHggIT0gLTEpICAmJiAoeCAhPSBTTk1QX01TR19TRVQpKQorI2Vsc2UgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisjZGVmaW5lIE1PREVfSVNfR0VUKHgpICAgICAgICAoKHggPj0gMTI4KSAmJiAoeCAhPSAtMSkpCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisKICAgICAvKiAjZGVmaW5lIE1PREVfSVNfR0VUKHgpICAgICAgICAoKHggPT0gU05NUF9NU0dfR0VUKSB8fCAoeCA9PSBTTk1QX01TR19HRVRORVhUKSB8fCAoeCA9PSBTTk1QX01TR19HRVRCVUxLKSB8fCAoeCA9PSBTTk1QX01TR19JTlRFUk5BTF9HRVRfU1RBU0gpKSAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBNT0RFX1NFVF9CRUdJTiAgICAgICAgU05NUF9NU0dfSU5URVJOQUxfU0VUX0JFR0lOCiAjZGVmaW5lIE1PREVfU0VUX1JFU0VSVkUxICAgICBTTk1QX01TR19JTlRFUk5BTF9TRVRfUkVTRVJWRTEKICNkZWZpbmUgTU9ERV9TRVRfUkVTRVJWRTIgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9SRVNFUlZFMgpAQCAtMTMwLDExICsxMzYsMTMgQEAKICNkZWZpbmUgTU9ERV9TRVRfVU5ETyAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9VTkRPCiAjZGVmaW5lIE1PREVfSVNfU0VUKHgpICAgICAgICAgKCh4IDwgMTI4KSB8fCAoeCA9PSAtMSkgfHwgKHggPT0gU05NUF9NU0dfU0VUKSkKICAgICAvKiAjZGVmaW5lIE1PREVfSVNfU0VUKHgpICAgICAgICAgKCFNT0RFX0lTX0dFVCh4KSkgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogI2RlZmluZSBNT0RFX0JTVEVQX1BSRV9SRVFVRVNUICAgU05NUF9NU0dfSU5URVJOQUxfUFJFX1JFUVVFU1QKICNkZWZpbmUgTU9ERV9CU1RFUF9QT1NUX1JFUVVFU1QgIFNOTVBfTVNHX0lOVEVSTkFMX1BPU1RfUkVRVUVTVAogCiAjZGVmaW5lIE1PREVfQlNURVBfT0JKRUNUX0xPT0tVUCAgICAgICBTTk1QX01TR19JTlRFUk5BTF9PQkpFQ1RfTE9PS1VQCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBNT0RFX0JTVEVQX0NIRUNLX1ZBTFVFICAgICAgICAgU05NUF9NU0dfSU5URVJOQUxfQ0hFQ0tfVkFMVUUKICNkZWZpbmUgTU9ERV9CU1RFUF9ST1dfQ1JFQVRFICAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1JPV19DUkVBVEUKICNkZWZpbmUgTU9ERV9CU1RFUF9VTkRPX1NFVFVQICAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1VORE9fU0VUVVAKQEAgLTE0NSw3ICsxNTMsNyBAQAogI2RlZmluZSBNT0RFX0JTVEVQX1VORE9fQ09NTUlUICAgICAgICAgU05NUF9NU0dfSU5URVJOQUxfVU5ET19DT01NSVQKICNkZWZpbmUgTU9ERV9CU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUIFNOTVBfTVNHX0lOVEVSTkFMX0lSUkVWRVJTSUJMRV9DT01NSVQKICNkZWZpbmUgTU9ERV9CU1RFUF9VTkRPX0NMRUFOVVAgICAgICAgIFNOTVBfTVNHX0lOVEVSTkFMX1VORE9fQ0xFQU5VUAotCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIC8qKiBAdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcyBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbwogICogVHlwZWRlZnMgdGhlIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3Mgc3RydWN0IGludG8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCmluZGV4IGQyODBhOWEuLjc3ZGJkNzAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaApAQCAtNDUsNiArNDUsMjMgQEAKIAogICAgIHN0cnVjdCB2YXJpYWJsZTsKIAorICAgIC8qKgorICAgICAqIER1cGxpY2F0ZXMgYSB2YXJpYWJsZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gUG9pbnRlciB0byB0aGUgZHVwbGljYXRlIHZhcmlhYmxlIHVwb24gc3VjY2VzczsgTlVMTCB1cG9uCisgICAgICogICBmYWlsdXJlLgorICAgICAqCisgICAgICogQHNlZSBzdHJ1Y3QgdmFyaWFibGUKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTEKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTIKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTMKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTQKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTcKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTgKKyAgICAgKiBAc2VlIHN0cnVjdCB2YXJpYWJsZTEzCisgICAgICovCisgICAgc3RydWN0IHZhcmlhYmxlICpuZXRzbm1wX2R1cGxpY2F0ZV92YXJpYWJsZShjb25zdCBzdHJ1Y3QgdmFyaWFibGUgKnZhcik7CisKICAgICAvKgogICAgICAqIEZ1bmN0aW9uIHBvaW50ZXIgY2FsbGVkIGJ5IHRoZSBtYXN0ZXIgYWdlbnQgZm9yIHdyaXRlcy4gCiAgICAgICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKaW5kZXggODI0OTVlYy4uNzllNTg4YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaApAQCAtMTIxLDYgKzEyMSw4IEBACiAgICAgbmV0c25tcF9taWJfaGFuZGxlcgogICAgICAgICAqbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0YWJyZXEpOworICAgIHZvaWQgIG5ldHNubXBfaGFuZGxlcl9vd25zX3RhYmxlX2luZm8obmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcik7CisgICAgdm9pZCAgbmV0c25tcF9yZWdpc3RyYXRpb25fb3duc190YWJsZV9pbmZvKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZyk7CiAgICAgaW50ICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSggIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYnJlcSk7CiAgICAgaW50ICAgbmV0c25tcF91bnJlZ2lzdGVyX3RhYmxlKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZ2luZm8pOwpAQCAtMTUwLDYgKzE1Miw4IEBACiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwogICAgICAgICAqbmV0c25tcF9maW5kX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbyk7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fY2xvbmUobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdHJpKTsKICAgICB2b2lkIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZShuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICopOwogCiAgICAgbmV0c25tcF9pbmRleCAqIG5ldHNubXBfdGFibGVfaW5kZXhfZmluZF9uZXh0X3JvdyhuZXRzbm1wX2NvbnRhaW5lciAqYywKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKaW5kZXggOWI4YTlhMy4uNjZlM2IzYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKQEAgLTE1MCw2ICsxNTAsOCBAQAogCiAgICAgdm9pZCBuZXRzbm1wX3JlZ2lzdGVyX2F1dG9fZGF0YV90YWJsZShuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpyZWdpc3RyYXRpb25fbmFtZSk7CisgICAgdm9pZCBuZXRzbm1wX3VucmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlKG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldCwKKwkJCQkJICAgIGNoYXIgKnJlZ2lzdHJhdGlvbl9uYW1lKTsKICAgICB2b2lkIG5ldHNubXBfY29uZmlnX3BhcnNlX3RhYmxlX3NldChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSk7CiAgICAgdm9pZCBuZXRzbm1wX2NvbmZpZ19wYXJzZV9hZGRfcm93KCAgY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKaW5kZXggOGNkYjFlNy4uYzcxZGQ0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaApAQCAtNTEsNiArNTEsOSBAQAogICAgICAgIFRoZSBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gdHlwZWRlZiBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIGRpcmVjdGx5IGNhbGxpbmcgdGhpcyBzdHJ1Y3QgaWYgeW91IHdvdWxkIHByZWZlci4KICAgICAgKi8KICAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2l0ZXJhdG9yX2luZm9fcyB7CisgICAgICAgLyoqIE51bWJlciBvZiBoYW5kbGVycyB0aGF0IG93biB0aGlzIGRhdGEgc3RydWN0dXJlLiAqLworICAgICAgIGludCByZWZjbnQ7CisKICAgICAgICAvKiogUmVzcG9uc2libGUgZm9yOiByZXR1cm5pbmcgdGhlIGZpcnN0IHNldCBvZiAiaW5kZXgiIGRhdGEsIGEKICAgICAgICAgICAgbG9vcC1jb250ZXh0IHBvaW50ZXIsIGFuZCBvcHRpb25hbGx5IGEgZGF0YSBjb250ZXh0CiAgICAgICAgICAgIHBvaW50ZXIgKi8KQEAgLTk0LDYgKzk3LDcgQEAKICAgICAgICAgdm9pZCAgICAgICAgICAgKm15dm9pZDsKICAgICAgICAgaW50ICAgICAgICAgICAgIGZsYWdzOwogI2RlZmluZSBORVRTTk1QX0lURVJBVE9SX0ZMQUdfU09SVEVECTB4MDEKKyNkZWZpbmUgTkVUU05NUF9IQU5ETEVSX09XTlNfSUlORk8JMHgwMgogCiAgICAgICAgLyoqIEEgcG9pbnRlciB0byB0aGUgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyBvYmplY3QKICAgICAgICAgICAgdGhpcyBpdGVyYXRvciBpcyByZWdpc3RlcmVkIGFsb25nIHdpdGguICovCkBAIC0xMTYsMTEgKzEyMCwxMSBAQAogICogSXRlcmF0b3IgQVBJOiBNSUIgbWFpbnRlbmFuY2UKICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorICAgIHZvaWQgICBuZXRzbm1wX2hhbmRsZXJfb3duc19pdGVyYXRvcl9pbmZvKG5ldHNubXBfbWliX2hhbmRsZXIgKmgpOwogICAgIG5ldHNubXBfbWliX2hhbmRsZXIKICAgICAgICAgICAqbmV0c25tcF9nZXRfdGFibGVfaXRlcmF0b3JfaGFuZGxlcihuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvKTsKLSAgICBpbnQgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvciggICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqaWluZm8pOworICAgIGludCBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyk7CiAgICAgdm9pZCAgbmV0c25tcF9pdGVyYXRvcl9kZWxldGVfdGFibGUobmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyk7CiAKICAgICB2b2lkICpuZXRzbm1wX2V4dHJhY3RfaXRlcmF0b3JfY29udGV4dChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqKTsKQEAgLTEyOCw2ICsxMzIsMTAgQEAKIAogICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyIG5ldHNubXBfdGFibGVfaXRlcmF0b3JfaGVscGVyX2hhbmRsZXI7CiAKKyNkZWZpbmUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcjIocmVnaW5mbywgaWluZm8pICAgICAgICBcCisgICAgKCgoaWluZm8pLT5mbGFncyB8PSBORVRTTk1QX0hBTkRMRVJfT1dOU19JSU5GTyksICAgICAgICAgICBcCisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IoKHJlZ2luZm8pLCAoaWluZm8pKSkKKwogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKiBJdGVyYXRvciBBUEk6IFJvdyBvcGVyYXRpb25zCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCmluZGV4IDNjNmQ2MDUuLjY3MTA0ZWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCkBAIC02NCw4ICs2NCwxMiBAQAogCiBpbnQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKCBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2luZm8pOworaW50IG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZTIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICAgICAgICAgKndpbmZvKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3aW5mbyk7CitpbnQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcjIoICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2luZm8pOwogaW50IG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF90aW1lc3RhbXAobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtlcl90IHRpbWVzdGFtcCk7CiBpbnQgbmV0c25tcF93YXRjaGVkX3RpbWVzdGFtcF9yZWdpc3RlcihuZXRzbm1wX21pYl9oYW5kbGVyICp3aGFuZGxlciwKQEAgLTEyNCw2ICsxMjgsMTEgQEAKIG5ldHNubXBfd2F0Y2hlcl9pbmZvICoKIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbzYodm9pZCAqLCBzaXplX3QsIHVfY2hhciwgaW50LCBzaXplX3QsIHNpemVfdCopOwogCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2Nsb25lX3dhdGNoZXJfaW5mbyhuZXRzbm1wX3dhdGNoZXJfaW5mbyAqd2luZm8pOwordm9pZAorbmV0c25tcF9vd25zX3dhdGNoZXJfaW5mbyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyKTsKKwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgIG5ldHNubXBfd2F0Y2hlcl9oZWxwZXJfaGFuZGxlcjsKIAogbmV0c25tcF9taWJfaGFuZGxlciAgKm5ldHNubXBfZ2V0X3dhdGNoZWRfdGltZXN0YW1wX2hhbmRsZXIodm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaAppbmRleCAxMWU4MzJjLi5iYTRiYjIxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgKQEAgLTczLDYgKzczLDcgQEAKIAogICAgaW50ICAgICAgIGZsYWdzOyAvKiBmb3IgbmV0LXNubXAgdXNlICovCiAKKyAgIHVuc2lnbmVkICBnZW5lcmF0aW9uOwogICAgb2lkICAgICAgIGlmX2luZGV4OwogCiAgICB1X2NoYXIgICAgYXJwX3BoeXNhZGRyZXNzW05FVFNOTVBfQUNDRVNTX0FSUF9QSFlTQUREUl9CVUZfU0laRV07CkBAIC04NiwzMSArODcsMzkgQEAKICAgIHVfbG9uZyAgICBhcnBfbGFzdF91cGRhdGVkOyAgIC8qIHRpbWV0aWNrcyBvZiBsYXN0IHVwZGF0ZSAqLwogfSBuZXRzbm1wX2FycF9lbnRyeTsKIAorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19BUlBfRU5UUllfRkxBR19ERUxFVEUgICAgICAweDAwMDAwMDAxCiAKIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAvKgogICogQUNDRVNTIGZ1bmN0aW9uIHByb3RvdHlwZXMKICAqLwotLyoKLSAqIGlmY29udGFpbmVyIGluaXQKLSAqLwotbmV0c25tcF9jb250YWluZXIgKiBuZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2luaXQodV9pbnQgaW5pdF9mbGFncyk7Ci0jZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0FSUF9JTklUX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKK3N0cnVjdCBuZXRzbm1wX2FycF9hY2Nlc3NfczsKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfYXJwX2FjY2Vzc19zIG5ldHNubXBfYXJwX2FjY2VzczsKIAotLyoKLSAqIGlmY29udGFpbmVyIGxvYWQgYW5kIGZyZWUKLSAqLwotbmV0c25tcF9jb250YWluZXIqCi1uZXRzbm1wX2FjY2Vzc19hcnBfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOwotI2RlZmluZSBORVRTTk1QX0FDQ0VTU19BUlBfTE9BRF9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCit0eXBlZGVmIHZvaWQgKE5ldHNubXBBY2Nlc3NBcnBVcGRhdGUpKG5ldHNubXBfYXJwX2FjY2VzcyAqLCBuZXRzbm1wX2FycF9lbnRyeSopOwordHlwZWRlZiB2b2lkIChOZXRzbm1wQWNjZXNzQXJwR0MpICAgIChuZXRzbm1wX2FycF9hY2Nlc3MgKik7CiAKLXZvaWQgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZyZWVfZmxhZ3MpOwotI2RlZmluZSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCi0jZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0FSUF9GUkVFX0RPTlRfQ0xFQVIgICAgICAgICAgICAweDAwMDEKLSNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfQVJQX0ZSRUVfS0VFUF9DT05UQUlORVIgICAgICAgIDB4MDAwMgorc3RydWN0IG5ldHNubXBfYXJwX2FjY2Vzc19zIHsKKyAgICB2b2lkICptYWdpYzsKKyAgICB2b2lkICphcmNoX21hZ2ljOworICAgIGludCBzeW5jaHJvbml6ZWQ7CisgICAgdW5zaWduZWQgZ2VuZXJhdGlvbjsKKyAgICBOZXRzbm1wQWNjZXNzQXJwVXBkYXRlICp1cGRhdGVfaG9vazsKKyAgICBOZXRzbm1wQWNjZXNzQXJwR0MgKmdjX2hvb2s7CisgICAgY2hhciAqY2FjaGVfZXhwaXJlZDsKK307CiAKK25ldHNubXBfYXJwX2FjY2VzcyAqCituZXRzbm1wX2FjY2Vzc19hcnBfY3JlYXRlKHVfaW50IGluaXRfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBBY2Nlc3NBcnBVcGRhdGUgKnVwZGF0ZV9ob29rLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQWNjZXNzQXJwR0MgKmdjX2hvb2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqY2FjaGVfdGltZW91dCwgaW50ICpjYWNoZV9mbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY2FjaGVfZXhwaXJlZCk7CisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0FSUF9DUkVBVEVfTk9GTEFHUyAgICAgICAgICAgICAweDAwMDAKKworaW50IG5ldHNubXBfYWNjZXNzX2FycF9kZWxldGUobmV0c25tcF9hcnBfYWNjZXNzICphY2Nlc3MpOworaW50IG5ldHNubXBfYWNjZXNzX2FycF9sb2FkKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKTsKK2ludCBuZXRzbm1wX2FjY2Vzc19hcnBfdW5sb2FkKG5ldHNubXBfYXJwX2FjY2VzcyAqYWNjZXNzKTsKIAogLyoKICAqIGNyZWF0ZS9mcmVlIGEgYXJwK2VudHJ5CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwX3NjYWxhcnMuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBfc2NhbGFycy5oCmluZGV4IGY3YjJlMzEuLjAzNjAxYTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBfc2NhbGFycy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBfc2NhbGFycy5oCkBAIC04LDkgKzgsMTQgQEAKIGludCBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpOwogaW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRm9yd2FyZGluZ19zZXQodV9sb25nIHZhbHVlKTsKIAoraW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRGVmYXVsdFRUTF9nZXQodV9sb25nICp2YWx1ZSk7CitpbnQgbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBEZWZhdWx0VFRMX3NldCh1X2xvbmcgdmFsdWUpOworCiBpbnQgbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRm9yd2FyZGluZ19nZXQodV9sb25nICp2YWx1ZSk7CiBpbnQgbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRm9yd2FyZGluZ19zZXQodV9sb25nIHZhbHVlKTsKIAoraW50IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwdjZJcERlZmF1bHRIb3BMaW1pdF9nZXQodV9sb25nICp2YWx1ZSk7CitpbnQgbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXB2NklwRGVmYXVsdEhvcExpbWl0X3NldCh1X2xvbmcgdmFsdWUpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCmluZGV4IDc1MDU2ZjIuLjBiZmYxMDggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaApAQCAtMTQ0LDYgKzE0NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFkZHJfbGVuLCBpbnQgcGZ4X2xlbik7CiAKIGludCBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4oaW5fYWRkcl90IG1hc2spOworaW5fYWRkcl90IG5ldHNubXBfaXBhZGRyZXNzX2lwdjRfbWFzayhpbnQgbGVuKTsKK2ludCBuZXRzbm1wX2lwYWRkcmVzc19pcHY2X3ByZWZpeF9sZW4oc3RydWN0IGluNl9hZGRyIG1hc2spOwogCiBpbnQgbmV0c25tcF9pcGFkZHJlc3NfZmxhZ3NfY29weSh1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAppbmRleCBjMjVhZDRiLi41NmNkYmFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaApAQCAtNTQsNiArNTQsNyBAQAogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgdm9pZCAgICAgICAgICAgIGluaXRfY2FsbGJhY2tzKHZvaWQpOwogCisgICAgTkVUU05NUF9JTVBPUlQKICAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9jYWxsYmFjayhpbnQgbWFqb3IsIGludCBtaW5vciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QQ2FsbGJhY2sgKiBuZXdfY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYXJnLCBpbnQgcHJpb3JpdHkpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NtdV9jb21wYXQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jbXVfY29tcGF0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0NzVjNmYuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NtdV9jb21wYXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDI5MiArMCwwIEBACi0vKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKLSAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCi0gKiB0aGF0IG1heSBhcHBseToKLSAqLwotLyoKLSAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6Ci0gKiBDb3B5cmlnaHQgqSAyMDAzIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKLSAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCi0gKi8KLQotLyoKLSAqICBDTVUgY29tcGF0YWJpbGl0eSBkZWZpbml0aW9ucyBhbmQgc3RydWN0dXJlcy4KLSAqCi0gKiAgICAoc2luY2UgdGhlIFVDRCBwYWNrYWdlIHNwbGl0IGZyb20gdGhlIENNVSBvbmUKLSAqICAgICBhYm91dCA4IHllYXJzIGFnbywgdGhhdCdzIHByb2JhYmx5IGVub3VnaCB0aW1lCi0gKiAgICAgZm9yIHBlb3BsZSB0byBjb252ZXJ0IGFueSBvdXRzdGFuZGluZyBjb2RlISkKLSAqLwotCi0jaWZuZGVmIE5FVF9TTk1QX0NNVV9DT01QQVRfSAotI2RlZmluZSBORVRfU05NUF9DTVVfQ09NUEFUX0gKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gICAgICAgICAgIkMiIHsKLSNlbmRpZgotCi0gICAgLyoKLSAgICAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgICogKgotICAgICAqICogRW51bWVyYXRpb25zIGFuZCBkZWZpbml0aW9ucwotICAgICAqICoKLSAgICAgKiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi0gICAgICovCi0jaW5jbHVkZSA8bmV0LXNubXAvZGVmaW5pdGlvbnMuaD4KLSAgICAvKgotICAgICAqIEZyb20gcGFyc2UuaCAKLSAgICAgKi8KLSNkZWZpbmUgQUNDRVNTX1JFQURPTkxZCQlNSUJfQUNDRVNTX1JFQURPTkxZCi0jZGVmaW5lIEFDQ0VTU19SRUFEV1JJVEUJTUlCX0FDQ0VTU19SRUFEV1JJVEUKLSNkZWZpbmUgQUNDRVNTX1dSSVRFT05MWQlNSUJfQUNDRVNTX1dSSVRFT05MWQotI2RlZmluZSBBQ0NFU1NfTk9BQ0NFU1MJCU1JQl9BQ0NFU1NfTk9BQ0NFU1MKLSNkZWZpbmUgQUNDRVNTX05PVElGWQkJTUlCX0FDQ0VTU19OT1RJRlkKLSNkZWZpbmUgQUNDRVNTX0NSRUFURQkJTUlCX0FDQ0VTU19DUkVBVEUKLSNkZWZpbmUgU1RBVFVTX01BTkRBVE9SWQlNSUJfU1RBVFVTX01BTkRBVE9SWQotI2RlZmluZSBTVEFUVVNfT1BUSU9OQUwJCU1JQl9TVEFUVVNfT1BUSU9OQUwKLSNkZWZpbmUgU1RBVFVTX09CU09MRVRFCQlNSUJfU1RBVFVTX09CU09MRVRFCi0jZGVmaW5lIFNUQVRVU19ERVBSRUNBVEVECU1JQl9TVEFUVVNfREVQUkVDQVRFRAotI2RlZmluZSBTVEFUVVNfQ1VSUkVOVAkJTUlCX1NUQVRVU19DVVJSRU5UCi0gICAgLyoKLSAgICAgKiBGcm9tIHNtbnBfaW1wbC5oIAotICAgICAqLwotI2RlZmluZSBJTlRFR0VSCSAgICBBU05fSU5URUdFUgotI2RlZmluZSBTVFJJTkcJICAgIEFTTl9PQ1RFVF9TVFIKLSNkZWZpbmUgT0JKSUQJICAgIEFTTl9PQkpFQ1RfSUQKLSNkZWZpbmUgTlVMTE9CSgkgICAgQVNOX05VTEwKLSNkZWZpbmUgQklUU1RSSU5HICAgQVNOX0JJVF9TVFIgLyogSElTVE9SSUMgLSBkb24ndCB1c2UgKi8KLSNkZWZpbmUgSVBBRERSRVNTICAgQVNOX0lQQUREUkVTUwotI2RlZmluZSBDT1VOVEVSCSAgICBBU05fQ09VTlRFUgotI2RlZmluZSBHQVVHRQkgICAgQVNOX0dBVUdFCi0jZGVmaW5lIFVOU0lHTkVEICAgIEFTTl9VTlNJR05FRAotI2RlZmluZSBUSU1FVElDS1MgICBBU05fVElNRVRJQ0tTCi0jZGVmaW5lIEFTTlRfT1BBUVVFIEFTTl9PUEFRVUUKLSNkZWZpbmUgTlNBUAkgICAgQVNOX05TQVAKLSNkZWZpbmUgQ09VTlRFUjY0ICAgQVNOX0NPVU5URVI2NAotI2RlZmluZSBVSU5URUdFUiAgICBBU05fVUlOVEVHRVIKLSAgICAvKgotICAgICAqIEZyb20gc25tcC5oIAotICAgICAqLwotI2RlZmluZSBHRVRfUkVRX01TRwkgICAgU05NUF9NU0dfR0VUCi0jZGVmaW5lIEdFVE5FWFRfUkVRX01TRwkgICAgU05NUF9NU0dfR0VUTkVYVAotI2RlZmluZSBHRVRfUlNQX01TRwkgICAgU05NUF9NU0dfUkVTUE9OU0UKLSNkZWZpbmUgU0VUX1JFUV9NU0cJICAgIFNOTVBfTVNHX1NFVAotI2RlZmluZSBUUlBfUkVRX01TRwkgICAgU05NUF9NU0dfVFJBUAotI2RlZmluZSBCVUxLX1JFUV9NU0cJICAgIFNOTVBfTVNHX0dFVEJVTEsKLSNkZWZpbmUgSU5GT1JNX1JFUV9NU0cJICAgIFNOTVBfTVNHX0lORk9STQotI2RlZmluZSBUUlAyX1JFUV9NU0cJICAgIFNOTVBfTVNHX1RSQVAyCi0jZGVmaW5lIFJFUE9SVF9SU1BfTVNHCSAgICBTTk1QX01TR19SRVBPUlQKLSAgICAvKgotICAgICAqIHNpbmNlIENNVSBWMS41IAotICAgICAqLwotI2RlZmluZSBTTk1QX1BEVV9HRVQJICAgIFNOTVBfTVNHX0dFVAotI2RlZmluZSBTTk1QX1BEVV9HRVRORVhUICAgIFNOTVBfTVNHX0dFVE5FWFQKLSNkZWZpbmUgU05NUF9QRFVfUkVTUE9OU0UgICBTTk1QX01TR19SRVNQT05TRQotI2RlZmluZSBTTk1QX1BEVV9TRVQgICAgICAgIFNOTVBfTVNHX1NFVAotI2RlZmluZSBTTk1QX1BEVV9HRVRCVUxLICAgIFNOTVBfTVNHX0dFVEJVTEsKLSNkZWZpbmUgU05NUF9QRFVfSU5GT1JNICAgICBTTk1QX01TR19JTkZPUk0KLSNkZWZpbmUgU05NUF9QRFVfVjJUUkFQICAgICBTTk1QX01TR19UUkFQMgotI2RlZmluZSBTTk1QX1BEVV9SRVBPUlQgICAgIFNOTVBfTVNHX1JFUE9SVAotI2RlZmluZSBTTk1QX1RSQVBfQVVUSEVOVElDQVRJT05GQUlMVVJFIFNOTVBfVFJBUF9BVVRIRkFJTAotI2RlZmluZSBTTUlfSU5URUdFUiAgICAgQVNOX0lOVEVHRVIKLSNkZWZpbmUgU01JX1NUUklORyAgICAgIEFTTl9PQ1RFVF9TVFIKLSNkZWZpbmUgU01JX09CSklEICAgICAgIEFTTl9PQkpFQ1RfSUQKLSNkZWZpbmUgU01JX05VTExPQkogICAgIEFTTl9OVUxMCi0jZGVmaW5lIFNNSV9JUEFERFJFU1MgICBBU05fSVBBRERSRVNTCi0jZGVmaW5lIFNNSV9DT1VOVEVSMzIJQVNOX0NPVU5URVIKLSNkZWZpbmUgU01JX0dBVUdFMzIJQVNOX0dBVUdFCi0jZGVmaW5lIFNNSV9VTlNJR05FRDMyICBTTUlfR0FVR0UzMgotI2RlZmluZSBTTUlfVElNRVRJQ0tTICAgQVNOX1RJTUVUSUNLUwotI2RlZmluZSBTTUlfT1BBUVVFICAgICAgQVNOX09QQVFVRQotI2RlZmluZSBTTUlfQ09VTlRFUjY0ICAgQVNOX0NPVU5URVI2NAotICAgIC8qCi0gICAgICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgICAqICoKLSAgICAgKiAqICAgICBGdW5jdGlvbiBkZWNsYXJhdGlvbnMKLSAgICAgKiAqICAgICBhbmQgZ2xvYmFsIHZhcmlhYmxlcwotICAgICAqICoKLSAgICAgKiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0gCi0gICAgICovCi1leHRlcm4gaW50ICAgICAgc25tcF9kdW1wX3BhY2tldDsgICAgICAgLyogZnJvbSBzbm1wX2FwaS5oICovCi1leHRlcm4gaW50ICAgICAgcXVpY2tfcHJpbnQ7ICAgIC8qIGZyb20gc25tcF9hcGkuaCAqLwotCi0jaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4gICAgIC8qIGZvciBzbm1wX3BkdSAmIHNubXBfc2Vzc2lvbiAqLwotCi1pbnQgICAgICAgICAgICAgbWliX1R4dFRvT2lkKGNoYXIgKiwgb2lkICoqLCBzaXplX3QgKik7IC8qIGZyb20gc25tcC5oICovCi1pbnQgICAgICAgICAgICAgbWliX09pZFRvVHh0KG9pZCAqLCBzaXplX3QsIGNoYXIgKiwgc2l6ZV90KTsgICAgLyogZnJvbSBzbm1wLmggKi8KLXVfY2hhciAgICAgICAgICpjbXVfc25tcF9wYXJzZShuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLCBuZXRzbm1wX3BkdSAqcGR1LCB1X2NoYXIgKiBkYXRhLCBzaXplX3QgbGVuZ3RoKTsgICAgICAvKiBmcm9tIHNubXAuaCAqLwotCi0KLQotCi0gICAgICAgIC8qCi0gICAgICAgICAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAgICAgICogKgotICAgICAgICAgKiAqIE1JQi1JSSBkYXRhIHN0cnVjdHVyZXMKLSAgICAgICAgICogKiAgICAoZnJvbSBtaWIuaCkgCi0gICAgICAgICAqICoKLSAgICAgICAgICogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09IAotICAgICAgICAgKi8KLQotCi1zdHJ1Y3QgbWliX3N5c3RlbSB7Ci0gICAgY2hhciAgICAgICAgICAgIHN5c0Rlc2NyWzMyXTsgICAgICAgLyogdGV4dHVhbCBkZXNjcmlwdGlvbiAqLwotICAgIHVfY2hhciAgICAgICAgICBzeXNPYmplY3RJRFsxNl07ICAgIC8qIE9CSkVDVCBJREVOVElGSUVSIG9mIHN5c3RlbSAqLwotICAgIHVfY2hhciAgICAgICAgICBPYmpJRExlbjsgICAvKiBsZW5ndGggb2Ygc3lzT2JqZWN0SUQgKi8KLSAgICB1X2ludCAgICAgICAgICAgc3lzVXBUaW1lOyAgLyogVXB0aW1lIGluIDEwMC9zIG9mIGEgc2Vjb25kICovCi19OwotCi1zdHJ1Y3QgbWliX2ludGVyZmFjZSB7Ci0gICAgaW50ICAgICAgICAgICAgIGlmTnVtYmVyOyAgIC8qIG51bWJlciBvZiBpbnRlcmZhY2VzICovCi19OwotCi1zdHJ1Y3QgbWliX2lmRW50cnkgewotICAgIGludCAgICAgICAgICAgICBpZkluZGV4OyAgICAvKiBpbmRleCBvZiB0aGlzIGludGVyZmFjZSAgKi8KLSAgICBjaGFyICAgICAgICAgICAgaWZEZXNjclszMl07ICAgICAgICAvKiBlbmdsaXNoIGRlc2NyaXB0aW9uIG9mIGludGVyZmFjZSAqLwotICAgIGludCAgICAgICAgICAgICBpZlR5cGU7ICAgICAvKiBuZXR3b3JrIHR5cGUgb2YgZGV2aWNlICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgaWZNdHU7ICAgICAgLyogc2l6ZSBvZiBsYXJnZXN0IHBhY2tldCBpbiBieXRlcyAgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZTcGVlZDsgICAgLyogYmFuZHdpZHRoIGluIGJpdHMvc2VjICAgICovCi0gICAgdV9jaGFyICAgICAgICAgIGlmUGh5c0FkZHJlc3NbMTFdOyAgLyogaW50ZXJmYWNlJ3MgYWRkcmVzcyAqLwotICAgIHVfY2hhciAgICAgICAgICBQaHlzQWRkckxlbjsgICAgICAgIC8qIGxlbmd0aCBvZiBwaHlzQWRkciAqLwotICAgIGludCAgICAgICAgICAgICBpZkFkbWluU3RhdHVzOyAgICAgIC8qIGRlc2lyZWQgc3RhdGUgb2YgaW50ZXJmYWNlICovCi0gICAgaW50ICAgICAgICAgICAgIGlmT3BlclN0YXR1czsgICAgICAgLyogY3VycmVudCBvcGVyYXRpb25hbCBzdGF0dXMgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZMYXN0Q2hhbmdlOyAgICAgICAvKiB2YWx1ZSBvZiBzeXNVcFRpbWUgd2hlbiBjdXJyZW50IHN0YXRlIGVudGVyZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZJbk9jdGV0czsgLyogbnVtYmVyIG9mIG9jdGV0cyByZWNlaXZlZCBvbiBpbnRlcmZhY2UgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZJblVjYXN0UGt0czsgICAgICAvKiBudW1iZXIgb2YgdW5pY2FzdCBwYWNrZXRzIGRlbGl2ZXJlZCAqLwotICAgIHVfaW50ICAgICAgICAgICBpZkluTlVjYXN0UGt0czsgICAgIC8qIG51bWJlciBvZiBicm9hZGNhc3RzIG9yIG11bHRpY2FzdHMgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZJbkRpc2NhcmRzOyAgICAgICAvKiBudW1iZXIgb2YgcGFja2V0cyBkaXNjYXJkZWQgd2l0aCBubyBlcnJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBpZkluRXJyb3JzOyAvKiBudW1iZXIgb2YgcGFja2V0cyBjb250YWluaW5nIGVycm9ycyAqLwotICAgIHVfaW50ICAgICAgICAgICBpZkluVW5rbm93blByb3RvczsgIC8qIG51bWJlciBvZiBwYWNrZXRzIHdpdGggdW5rbm93biBwcm90b2NvbCAqLwotICAgIHVfaW50ICAgICAgICAgICBpZk91dE9jdGV0czsgICAgICAgIC8qIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZPdXRVY2FzdFBrdHM7ICAgICAvKiBudW1iZXIgb2YgdW5pY2FzdCBwYWNrZXRzIHNlbnQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZPdXROVWNhc3RQa3RzOyAgICAvKiBudW1iZXIgb2YgYnJvYWRjYXN0IG9yIG11bHRpY2FzdCBwa3RzICovCi0gICAgdV9pbnQgICAgICAgICAgIGlmT3V0RGlzY2FyZHM7ICAgICAgLyogbnVtYmVyIG9mIHBhY2tldHMgZGlzY2FyZGVkIHdpdGggbm8gZXJyb3IgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWZPdXRFcnJvcnM7ICAgICAgICAvKiBudW1iZXIgb2YgcGt0cyBkaXNjYXJkZWQgd2l0aCBhbiBlcnJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBpZk91dFFMZW47ICAvKiBudW1iZXIgb2YgcGFja2V0cyBpbiBvdXRwdXQgcXVldWUgKi8KLX07Ci0KLXN0cnVjdCBtaWJfYXRFbnRyeSB7Ci0gICAgaW50ICAgICAgICAgICAgIGF0SWZJbmRleDsgIC8qIGludGVyZmFjZSBvbiB3aGljaCB0aGlzIGVudHJ5IG1hcHMgKi8KLSAgICB1X2NoYXIgICAgICAgICAgYXRQaHlzQWRkcmVzc1sxMV07ICAvKiBwaHlzaWNhbCBhZGRyZXNzIG9mIGRlc3RpbmF0aW9uICovCi0gICAgdV9jaGFyICAgICAgICAgIFBoeXNBZGRyZXNzTGVuOyAgICAgLyogbGVuZ3RoIG9mIGF0UGh5c0FkZHJlc3MgKi8KLSAgICB1X2ludCAgICAgICAgICAgYXROZXRBZGRyZXNzOyAgICAgICAvKiBJUCBhZGRyZXNzIG9mIHBoeXNpY2FsIGFkZHJlc3MgKi8KLX07Ci0KLXN0cnVjdCBtaWJfaXAgewotICAgIGludCAgICAgICAgICAgICBpcEZvcndhcmRpbmc7ICAgICAgIC8qIDEgaWYgZ2F0ZXdheSwgMiBpZiBob3N0ICovCi0gICAgaW50ICAgICAgICAgICAgIGlwRGVmYXVsdFRUTDsgICAgICAgLyogZGVmYXVsdCBUVEwgZm9yIHBrdHMgb3JpZ2luYXRpbmcgaGVyZSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluUmVjZWl2ZXM7ICAgICAgIC8qIG5vLiBvZiBJUCBwYWNrZXRzIHJlY2VpdmVkIGZyb20gaW50ZXJmYWNlcyAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluSGRyRXJyb3JzOyAgICAgIC8qIG51bWJlciBvZiBwa3RzIGRpc2NhcmRlZCBkdWUgdG8gaGVhZGVyIGVycm9ycyAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluQWRkckVycm9yczsgICAgIC8qIG5vLiBvZiBwa3RzIGRpc2NhcmRlZCBkdWUgdG8gYmFkIGFkZHJlc3MgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBGb3J3RGF0YWdyYW1zOyAgICAvKiBudW1iZXIgcGYgcGt0cyBmb3J3YXJkZWQgdGhyb3VnaCB0aGlzIGVudGl0eSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluVW5rbm93blByb3RvczsgIC8qIG5vLiBvZiBsb2NhbC1hZGRyZXNzZWQgcGt0cyB3L3Vua25vd24gcHJvdG8gKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBJbkRpc2NhcmRzOyAgICAgICAvKiBudW1iZXIgb2YgZXJyb3ItZnJlZSBwYWNrZXRzIGRpc2NhcmRlZCAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEluRGVsaXZlcnM7ICAgICAgIC8qIG51bWJlciBvZiBkYXRhZ3JhbXMgZGVsaXZlcmVkIHRvIHVwcGVyIGxldmVsICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwT3V0UmVxdWVzdHM7ICAgICAgLyogbnVtYmVyIG9mIElQIGRhdGFncmFtcyBvcmlnaW5hdGluZyBsb2NhbGx5ICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwT3V0RGlzY2FyZHM7ICAgICAgLyogbnVtYmVyIG9mIGVycm9yLWZyZWUgb3V0cHV0IElQIHBrdHMgZGlzY2FyZGVkICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwT3V0Tm9Sb3V0ZXM7ICAgICAgLyogbnVtYmVyIG9mIElQIHBrdHMgZGlzY2FyZGVkIGR1ZSB0byBubyByb3V0ZSAqLwotICAgIGludCAgICAgICAgICAgICBpcFJlYXNtVGltZW91dDsgICAgIC8qIHNlY29uZHMgZnJhZ21lbnQgaXMgaGVsZCBhd2FpdGluZyByZWFzc2VtYmx5ICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwUmVhc21SZXFkczsgICAgICAgLyogbm8uIG9mIGZyYWdtZW50cyBuZWVkaW5nIHJlYXNzZW1ibHkgKGhlcmUpICovCi0gICAgdV9pbnQgICAgICAgICAgIGlwUmVhc21PS3M7IC8qIG51bWJlciBvZiBmcmFnbWVudHMgcmVhc3NlbWJsZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBSZWFzbUZhaWxzOyAgICAgICAvKiBudW1iZXIgb2YgZmFpbHVyZXMgaW4gSVAgcmVhc3NlbWJseSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEZyYWdPS3M7ICAvKiBudW1iZXIgb2YgZGF0YWdyYW1zIGZyYWdtZW50ZWQgaGVyZSAqLwotICAgIHVfaW50ICAgICAgICAgICBpcEZyYWdGYWlsczsgICAgICAgIC8qIG5vLiBwa3RzIHVuYWJsZSB0byBiZSBmcmFnbWVudGVkIGhlcmUgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBGcmFnQ3JlYXRlczsgICAgICAvKiBudW1iZXIgb2YgSVAgZnJhZ21lbnRzIGNyZWF0ZWQgaGVyZSAqLwotfTsKLQotc3RydWN0IG1pYl9pcEFkZHJFbnRyeSB7Ci0gICAgdV9pbnQgICAgICAgICAgIGlwQWRFbnRBZGRyOyAgICAgICAgLyogSVAgYWRkcmVzcyBvZiB0aGlzIGVudHJ5ICovCi0gICAgaW50ICAgICAgICAgICAgIGlwQWRFbnRJZkluZGV4OyAgICAgLyogSUYgZm9yIHRoaXMgZW50cnkgKi8KLSAgICB1X2ludCAgICAgICAgICAgaXBBZEVudE5ldE1hc2s7ICAgICAvKiBzdWJuZXQgbWFzayBvZiB0aGlzIGVudHJ5ICovCi0gICAgaW50ICAgICAgICAgICAgIGlwQWRFbnRCY2FzdEFkZHI7ICAgLyogcmVhZCB0aGUgTUlCIGZvciB0aGlzIG9uZSAqLwotICAgIGludCAJICAgIGlwQWRFbnRSZWFzbU1heFNpemU7Ci0JCS8qIG1heCBzaXplIGZvciBkZyByZWFzc2VtYmx5ICAge2lwQWRkckVudHJ5IDV9ICovCi19OwotCi1zdHJ1Y3QgbWliX2lwUm91dGVFbnRyeSB7Ci0gICAgdV9pbnQgICAgICAgICAgIGlwUm91dGVEZXN0OyAgICAgICAgLyogZGVzdGluYXRpb24gSVAgYWRkciBmb3IgdGhpcyByb3V0ZSAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlSWZJbmRleDsgICAgIC8qIGluZGV4IG9mIGxvY2FsIElGIGZvciB0aGlzIHJvdXRlICovCi0gICAgaW50ICAgICAgICAgICAgIGlwUm91dGVNZXRyaWMxOyAgICAgLyogUHJpbWFyeSByb3V0aW5nIG1ldHJpYyAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlTWV0cmljMjsgICAgIC8qIEFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlTWV0cmljMzsgICAgIC8qIEFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlTWV0cmljNDsgICAgIC8qIEFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyAqLwotICAgIHVfaW50ICAgICAgICAgICBpcFJvdXRlTmV4dEhvcDsgICAgIC8qIElQIGFkZHIgb2YgbmV4dCBob3AgKi8KLSAgICBpbnQgICAgICAgICAgICAgaXBSb3V0ZVR5cGU7ICAgICAgICAvKiBUeXBlIG9mIHRoaXMgcm91dGUgKi8KLSAgICBpbnQgICAgICAgICAgICAgaXBSb3V0ZVByb3RvOyAgICAgICAvKiBIb3cgdGhpcyByb3V0ZSB3YXMgbGVhcm5lZCAqLwotICAgIGludCAgICAgICAgICAgICBpcFJvdXRlQWdlOyAvKiBOby4gb2Ygc2Vjb25kcyBzaW5jZSB1cGRhdGluZyB0aGlzIHJvdXRlICovCi19OwotCi1zdHJ1Y3QgbWliX2ljbXAgewotICAgIHVfaW50ICAgICAgICAgICBpY21wSW5Nc2dzOyAvKiBUb3RhbCBvZiBJQ01QIG1zZ3MgcmVjZWl2ZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluRXJyb3JzOyAgICAgICAvKiBUb3RhbCBvZiBJQ01QIG1zZ3MgcmVjZWl2ZWQgd2l0aCBlcnJvcnMgKi8KLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluRGVzdFVucmVhY2hzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wSW5UaW1lRXhjZHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJblBhcm1Qcm9iczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluU3JjUXVlbmNoczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluUmVkaXJlY3RzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wSW5FY2hvczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluRWNob1JlcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJblRpbWVzdGFtcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJblRpbWVzdGFtcFJlcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBJbkFkZHJNYXNrczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcEluQWRkck1hc2tSZXBzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wT3V0TXNnczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dEVycm9yczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dERlc3RVbnJlYWNoczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFRpbWVFeGNkczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFBhcm1Qcm9iczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFNyY1F1ZW5jaHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRSZWRpcmVjdHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRFY2hvczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dEVjaG9SZXBzOwotICAgIHVfaW50ICAgICAgICAgICBpY21wT3V0VGltZXN0YW1wczsKLSAgICB1X2ludCAgICAgICAgICAgaWNtcE91dFRpbWVzdGFtcFJlcHM7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRBZGRyTWFza3M7Ci0gICAgdV9pbnQgICAgICAgICAgIGljbXBPdXRBZGRyTWFza1JlcHM7Ci19OwotCi1zdHJ1Y3QgbWliX3RjcCB7Ci0gICAgaW50ICAgICAgICAgICAgIHRjcFJ0b0FsZ29yaXRobTsgICAgLyogcmV0cmFuc21pc3Npb24gdGltZW91dCBhbGdvcml0aG0gKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwUnRvTWluOyAgLyogbWluaW11bSByZXRyYW5zbWlzc2lvbiB0aW1lb3V0IChtUykgKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwUnRvTWF4OyAgLyogbWF4aW11bSByZXRyYW5zbWlzc2lvbiB0aW1lb3V0IChtUykgKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwTWF4Q29ubjsgLyogbWF4aW11bSB0Y3AgY29ubmVjdGlvbnMgcG9zc2libGUgKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwQWN0aXZlT3BlbnM7ICAgICAvKiBudW1iZXIgb2YgU1lOLVNFTlQgLT4gQ0xPU0VEIHRyYW5zaXRpb25zICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcFBhc3NpdmVPcGVuczsgICAgLyogbnVtYmVyIG9mIFNZTi1SQ1ZEIC0+IExJU1RFTiB0cmFuc2l0aW9ucyAqLwotICAgIHVfaW50ICAgICAgICAgICB0Y3BBdHRlbXB0RmFpbHM7ICAgIC8qKFNZTi1TRU5ULFNZTi1SQ1ZEKS0+Q0xPU0VEIG9yIFNZTi1SQ1ZELT5MSVNURU4gKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwRXN0YWJSZXNldHM7ICAgICAvKiAoRVNUQUJMSVNIRUQsQ0xPU0UtV0FJVCkgLT4gQ0xPU0VEICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcEN1cnJFc3RhYjsgICAgICAgLyogbnVtYmVyIGluIEVTVEFCTElTSEVEIG9yIENMT1NFLVdBSVQgc3RhdGUgKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwSW5TZWdzOyAgLyogbnVtYmVyIG9mIHNlZ21lbnRzIHJlY2VpdmVkICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcE91dFNlZ3M7IC8qIG51bWJlciBvZiBzZWdtZW50cyBzZW50ICovCi0gICAgdV9pbnQgICAgICAgICAgIHRjcFJldHJhbnNTZWdzOyAgICAgLyogbnVtYmVyIG9mIHJldHJhbnNtaXR0ZWQgc2VnbWVudHMgKi8KLX07Ci0KLXN0cnVjdCBtaWJfdGNwQ29ubkVudHJ5IHsKLSAgICBpbnQgICAgICAgICAgICAgdGNwQ29ublN0YXRlOyAgICAgICAvKiBTdGF0ZSBvZiB0aGlzIGNvbm5lY3Rpb24gKi8KLSAgICB1X2ludCAgICAgICAgICAgdGNwQ29ubkxvY2FsQWRkcmVzczsgICAgICAgIC8qIGxvY2FsIElQIGFkZHJlc3MgZm9yIHRoaXMgY29ubmVjdGlvbiAqLwotICAgIGludCAgICAgICAgICAgICB0Y3BDb25uTG9jYWxQb3J0OyAgIC8qIGxvY2FsIHBvcnQgZm9yIHRoaXMgY29ubmVjdGlvbiAqLwotICAgIHVfaW50ICAgICAgICAgICB0Y3BDb25uUmVtQWRkcmVzczsgIC8qIHJlbW90ZSBJUCBhZGRyZXNzIGZvciB0aGlzIGNvbm5lY3Rpb24gKi8KLSAgICBpbnQgICAgICAgICAgICAgdGNwQ29ublJlbVBvcnQ7ICAgICAvKiByZW1vdGUgcG9ydCBmb3IgdGhpcyBjb25uZWN0aW9uICovCi19OwotCi1zdHJ1Y3QgbWliX3VkcCB7Ci0gICAgdV9pbnQgICAgICAgICAgIHVkcEluRGF0YWdyYW1zOyAgICAgLyogTm8uIG9mIFVEUCBkYXRhZ3JhbXMgZGVsaXZlcmVkIHRvIHVzZXJzICovCi0gICAgdV9pbnQgICAgICAgICAgIHVkcE5vUG9ydHM7IC8qIE5vLiBvZiBVRFAgZGF0YWdyYW1zIHRvIHBvcnQgd2l0aCBubyBsaXN0ZW5lciAqLwotICAgIHVfaW50ICAgICAgICAgICB1ZHBJbkVycm9yczsgICAgICAgIC8qIE5vLiBvZiBVRFAgZGF0YWdyYW1zIHVuYWJsZSB0byBiZSBkZWxpdmVyZWQgKi8KLSAgICB1X2ludCAgICAgICAgICAgdWRwT3V0RGF0YWdyYW1zOyAgICAvKiBOby4gb2YgVURQIGRhdGFncmFtcyBzZW50IGZyb20gdGhpcyBlbnRpdHkgKi8KLX07Ci0KLXN0cnVjdCBtaWJfZWdwIHsKLSAgICB1X2ludCAgICAgICAgICAgZWdwSW5Nc2dzOyAgLyogTm8uIG9mIEVHUCBtc2dzIHJlY2VpdmVkIHdpdGhvdXQgZXJyb3IgKi8KLSAgICB1X2ludCAgICAgICAgICAgZWdwSW5FcnJvcnM7ICAgICAgICAvKiBOby4gb2YgRUdQIG1zZ3MgcmVjZWl2ZWQgd2l0aCBlcnJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBlZ3BPdXRNc2dzOyAvKiBOby4gb2YgRUdQIG1zZ3Mgc2VudCAqLwotICAgIHVfaW50ICAgICAgICAgICBlZ3BPdXRFcnJvcnM7ICAgICAgIC8qIE5vLiBvZiAob3V0Z29pbmcpIEVHUCBtc2dzIGRyb3BwZWQgZHVlIHRvIGVycm9yICovCi19OwotCi1zdHJ1Y3QgbWliX2VncE5laWdoRW50cnkgewotICAgIGludCAgICAgICAgICAgICBlZ3BOZWlnaFN0YXRlOyAgICAgIC8qIGxvY2FsIEVHUCBzdGF0ZSB3aXRoIHRoaXMgZW50cnkncyBuZWlnaGJvciAqLwotICAgIHVfaW50ICAgICAgICAgICBlZ3BOZWlnaEFkZHI7ICAgICAgIC8qIElQIGFkZHJlc3Mgb2YgdGhpcyBlbnRyeSdzIG5laWdoYm9yICovCi19OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRfU05NUF9DTVVfQ09NUEFUX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAppbmRleCAzMGI4MmYxLi45NjMyODllIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCkBAIC0zNjgsMjAgKzM2OCwyMiBAQAogICAgICAqIGlubGluZSBmdW5jdGlvbnMsIHlvdSBtb3N0IGxpa2VseSBoYXZlIG9wdGltaXphdGlvbnMgdHVybmVkIG9mZi4KICAgICAgKiBFaXRoZXIgdHVybiB0aGVtIGJhY2sgb24sIG9yIGRlZmluZSBORVRTTk1QX05PX0lOTElORQogICAgICAqLwotI2lmbmRlZiBORVRTTk1QX1VTRV9JTkxJTkUgLyogZGVmYXVsdCBpcyB0byBpbmxpbmUgKi8KICAgICAvKgogICAgICAqIGluc2VydCBrIGludG8gYWxsIGNvbnRhaW5lcnMKICAgICAgKi8KKyAgICBORVRTTk1QX0lNUE9SVAogICAgIGludCBDT05UQUlORVJfSU5TRVJUKG5ldHNubXBfY29udGFpbmVyICp4LCBjb25zdCB2b2lkICprKTsKIAogICAgIC8qCiAgICAgICogcmVtb3ZlIGsgZnJvbSBhbGwgY29udGFpbmVycwogICAgICAqLworICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgaW50IENPTlRBSU5FUl9SRU1PVkUobmV0c25tcF9jb250YWluZXIgKngsIGNvbnN0IHZvaWQgKmspOwogCiAgICAgLyoKICAgICAgKiBkdXBsaWNhdGUgY29udGFpbmVyCiAgICAgICovCisgICAgTkVUU05NUF9JTVBPUlQKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqQ09OVEFJTkVSX0RVUChuZXRzbm1wX2NvbnRhaW5lciAqeCwgdm9pZCAqY3R4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZsYWdzKTsKIApAQCAtMzkwLDYgKzM5Miw3IEBACiAgICAgICogKm9ubHkqIHRoZSBmaXJzdCBjb250YWluZXIsIGNhbGwgdGhlIGZ1bmN0aW9uIGYgZm9yIGVhY2ggaXRlbS4KICAgICAgKiBBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIGFsbCBjb250YWluZXJzIHNob3VsZCBiZSBlbXB0eS4KICAgICAgKi8KKyAgICBORVRTTk1QX0lNUE9SVAogICAgIHZvaWQgQ09OVEFJTkVSX0NMRUFSKG5ldHNubXBfY29udGFpbmVyICp4LCBuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqZiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmMpOwogCkBAIC0zOTgsMTg2ICs0MDEsMTggQEAKICAgICAgKiAqb25seSogdGhlIGZpcnN0IGNvbnRhaW5lciwgY2FsbCB0aGUgZnJlZV9pdGVtIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uCiAgICAgICogQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhbGwgY29udGFpbmVycyBzaG91bGQgYmUgZW1wdHkuCiAgICAgICovCisgICAgTkVUU05NUF9JTVBPUlQKICAgICB2b2lkIENPTlRBSU5FUl9GUkVFX0FMTChuZXRzbm1wX2NvbnRhaW5lciAqeCwgdm9pZCAqYyk7CiAKICAgICAvKgogICAgICAqIGZyZWUgYWxsIGNvbnRhaW5lcnMKICAgICAgKi8KKyAgICBORVRTTk1QX0lNUE9SVAogICAgIGludCBDT05UQUlORVJfRlJFRShuZXRzbm1wX2NvbnRhaW5lciAqeCk7CiAKKyAgICBORVRTTk1QX0lNUE9SVAogICAgIG5ldHNubXBfY29udGFpbmVyICpTVUJDT05UQUlORVJfRklORChuZXRzbm1wX2NvbnRhaW5lciAqeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbmFtZSk7Ci0jZWxzZQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgaW50IENPTlRBSU5FUl9JTlNFUlRfSEVMUEVSKG5ldHNubXBfY29udGFpbmVyKiB4LCBjb25zdCB2b2lkKiBrKQotICAgIHsKLSAgICAgICAgd2hpbGUoeCAmJiB4LT5pbnNlcnRfZmlsdGVyICYmIHgtPmluc2VydF9maWx0ZXIoeCxrKSA9PSAxKQotICAgICAgICAgICAgeCA9IHgtPm5leHQ7Ci0gICAgICAgIGlmKHgpIHsKLSAgICAgICAgICAgIGludCByYyA9IHgtPmluc2VydCh4LGspOwotICAgICAgICAgICAgaWYocmMpCi0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0RFQlVHLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyBpbnNlcnQgKCVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB4LT5jb250YWluZXJfbmFtZSA/IHgtPmNvbnRhaW5lcl9uYW1lIDogIiIsIHJjKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVF9IRUxQRVIoeC0+bmV4dCwgayk7Ci0gICAgICAgICAgICAgICAgaWYocmMpCi0gICAgICAgICAgICAgICAgICAgIHgtPnJlbW92ZSh4LGspOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHJjOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgaW50IENPTlRBSU5FUl9JTlNFUlQobmV0c25tcF9jb250YWluZXIqIHgsIGNvbnN0IHZvaWQqIGspCi0gICAgewotICAgICAgICAvKiogc3RhcnQgYXQgZmlyc3QgY29udGFpbmVyICovCi0gICAgICAgIHdoaWxlKHgtPnByZXYpCi0gICAgICAgICAgICB4ID0geC0+cHJldjsKLSAgICAgICAgcmV0dXJuIENPTlRBSU5FUl9JTlNFUlRfSEVMUEVSKHgsIGspOwotICAgIH0KLQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgaW50IENPTlRBSU5FUl9SRU1PVkUobmV0c25tcF9jb250YWluZXIgKngsIGNvbnN0IHZvaWQgKmspCi0gICAgewotICAgICAgICBpbnQgcmMyLCByYyA9IDA7Ci0gICAgICAgIAotICAgICAgICAvKiogc3RhcnQgYXQgbGFzdCBjb250YWluZXIgKi8KLSAgICAgICAgd2hpbGUoeC0+bmV4dCkKLSAgICAgICAgICAgIHggPSB4LT5uZXh0OwotICAgICAgICB3aGlsZSh4KSB7Ci0gICAgICAgICAgICByYzIgPSB4LT5yZW1vdmUoeCxrKTsKLSAgICAgICAgICAgIC8qKiBpZ25vcmUgcmVtb3ZlIGVycm9ycyBpZiB0aGVyZSBpcyBhIGZpbHRlciBpbiBwbGFjZSAqLwotICAgICAgICAgICAgaWYgKChyYzIpICYmIChOVUxMID09IHgtPmluc2VydF9maWx0ZXIpKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3Igb24gc3ViY29udGFpbmVyICclcycgcmVtb3ZlICglZClcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgeC0+Y29udGFpbmVyX25hbWUgPyB4LT5jb250YWluZXJfbmFtZSA6ICIiLCByYzIpOwotICAgICAgICAgICAgICAgIHJjID0gcmMyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9IHgtPnByZXY7Ci0gICAgICAgICAgICAKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gcmM7Ci0gICAgfQotICAgIAotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgbmV0c25tcF9jb250YWluZXIgKkNPTlRBSU5FUl9EVVAobmV0c25tcF9jb250YWluZXIgKngsIHZvaWQgKmN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBmbGFncykKLSAgICB7Ci0gICAgICAgIGlmIChOVUxMID09IHgtPmR1cGxpY2F0ZSkgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvbnRhaW5lciAnJXMnIGRvZXMgbm90IHN1cHBvcnQgZHVwbGljYXRlXG4iLAotICAgICAgICAgICAgICAgICAgICAgeC0+Y29udGFpbmVyX25hbWUgPyB4LT5jb250YWluZXJfbmFtZSA6ICIiKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB4LT5kdXBsaWNhdGUoeCwgY3R4LCBmbGFncyk7Ci0gICAgfQotCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIEVYQUNUTFkgbWF0Y2ggdGhlIGZ1bmN0aW9uIHZlcnNpb24gaW4KLSAgICAgKiBjb250YWluZXIuYy4gSWYgeW91IGNoYW5nZSBvbmUsIGNoYW5nZSB0aGVtIGJvdGguCi0gICAgICovCi0gICAgTkVUU05NUF9TVEFUSUNfSU5MSU5FIC8qIGdjYyBkb2NzIHJlY29tbWVuZCBzdGF0aWMgdy9pbmxpbmUgKi8KLSAgICBpbnQgQ09OVEFJTkVSX0ZSRUUobmV0c25tcF9jb250YWluZXIgKngpCi0gICAgewotCWludCAgcmMyLCByYyA9IDA7Ci0gICAgICAgIAotICAgICAgICAvKiogc3RhcnQgYXQgbGFzdCBjb250YWluZXIgKi8KLSAgICAgICAgd2hpbGUoeC0+bmV4dCkKLSAgICAgICAgICAgIHggPSB4LT5uZXh0OwotICAgICAgICB3aGlsZSh4KSB7Ci0gICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG1wOwotICAgICAgICAgICAgY2hhciAqbmFtZTsKLSAgICAgICAgICAgIHRtcCA9IHgtPnByZXY7Ci0gICAgICAgICAgICBuYW1lID0geC0+Y29udGFpbmVyX25hbWU7Ci0gICAgICAgICAgICB4LT5jb250YWluZXJfbmFtZSA9IE5VTEw7Ci0gICAgICAgICAgICByYzIgPSB4LT5jZnJlZSh4KTsKLSAgICAgICAgICAgIGlmIChyYzIpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyBjZnJlZSAoJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPyBuYW1lIDogIiIsIHJjMik7Ci0gICAgICAgICAgICAgICAgcmMgPSByYzI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTTk1QX0ZSRUUobmFtZSk7Ci0gICAgICAgICAgICB4ID0gdG1wOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByYzsKLSAgICB9Ci0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgRVhBQ1RMWSBtYXRjaCB0aGUgZnVuY3Rpb24gdmVyc2lvbiBpbgotICAgICAqIGNvbnRhaW5lci5jLiBJZiB5b3UgY2hhbmdlIG9uZSwgY2hhbmdlIHRoZW0gYm90aC4KLSAgICAgKi8KLSAgICAvKgotICAgICAqIGNsZWFyIGFsbCBjb250YWluZXJzLiBXaGVuIGNsZWFyaW5nIHRoZSAqZmlyc3QqIGNvbnRhaW5lciwgYW5kCi0gICAgICogKm9ubHkqIHRoZSBmaXJzdCBjb250YWluZXIsIGNhbGwgdGhlIGZ1bmN0aW9uIGYgZm9yIGVhY2ggaXRlbS4KLSAgICAgKiBBZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIGFsbCBjb250YWluZXJzIHNob3VsZCBiZSBlbXB0eS4KLSAgICAgKi8KLSAgICBORVRTTk1QX1NUQVRJQ19JTkxJTkUgLyogZ2NjIGRvY3MgcmVjb21tZW5kIHN0YXRpYyB3L2lubGluZSAqLwotICAgIHZvaWQgQ09OVEFJTkVSX0NMRUFSKG5ldHNubXBfY29udGFpbmVyICp4LCBuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmMpCi0gICAgewotICAgICAgICAvKiogc3RhcnQgYXQgbGFzdCBjb250YWluZXIgKi8KLSAgICAgICAgd2hpbGUoeC0+bmV4dCkKLSAgICAgICAgICAgIHggPSB4LT5uZXh0OwotICAgICAgICB3aGlsZSh4LT5wcmV2KSB7Ci0gICAgICAgICAgICB4LT5jbGVhcih4LCBOVUxMLCBjKTsKLSAgICAgICAgICAgIHggPSB4LT5wcmV2OwotICAgICAgICB9Ci0gICAgICAgIHgtPmNsZWFyKHgsIGYsIGMpOwotICAgIH0KLQotICAgIC8qCi0gICAgICogY2xlYXIgYWxsIGNvbnRhaW5lcnMuIFdoZW4gY2xlYXJpbmcgdGhlICpmaXJzdCogY29udGFpbmVyLCBhbmQKLSAgICAgKiAqb25seSogdGhlIGZpcnN0IGNvbnRhaW5lciwgY2FsbCB0aGUgZnJlZV9pdGVtIGZ1bmN0aW9uIGZvciBlYWNoIGl0ZW0uCi0gICAgICogQWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCBhbGwgY29udGFpbmVycyBzaG91bGQgYmUgZW1wdHkuCi0gICAgICovCi0gICAgTkVUU05NUF9TVEFUSUNfSU5MSU5FIC8qIGdjYyBkb2NzIHJlY29tbWVuZCBzdGF0aWMgdy9pbmxpbmUgKi8KLSAgICB2b2lkIENPTlRBSU5FUl9GUkVFX0FMTChuZXRzbm1wX2NvbnRhaW5lciAqeCwgdm9pZCAqYykKLSAgICB7Ci0gICAgICAgIENPTlRBSU5FUl9DTEVBUih4LCB4LT5mcmVlX2l0ZW0sIGMpOwotICAgIH0KLQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICogVGhlc2UgZnVuY3Rpb25zIHNob3VsZCBFWEFDVExZIG1hdGNoIHRoZSBmdW5jdGlvbiB2ZXJzaW9uIGluCi0gICAgICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgotICAgICAqLwotICAgIC8qCi0gICAgICogRmluZCBhIHN1Yi1jb250YWluZXIgd2l0aCB0aGUgZ2l2ZW4gbmFtZQotICAgICAqLwotICAgIE5FVFNOTVBfU1RBVElDX0lOTElORSAvKiBnY2MgZG9jcyByZWNvbW1lbmQgc3RhdGljIHcvaW5saW5lICovCi0gICAgbmV0c25tcF9jb250YWluZXIgKlNVQkNPTlRBSU5FUl9GSU5EKG5ldHNubXBfY29udGFpbmVyICp4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBuYW1lKQotICAgIHsKLSAgICAgICAgaWYgKChOVUxMID09IHgpIHx8IChOVUxMID09IG5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgLyoqIHN0YXJ0IGF0IGZpcnN0IGNvbnRhaW5lciAqLwotICAgICAgICB3aGlsZSh4LT5wcmV2KQotICAgICAgICAgICAgeCA9IHgtPnByZXY7Ci0gICAgICAgIHdoaWxlKHgpIHsKLSAgICAgICAgICAgIGlmICgoTlVMTCAhPSB4LT5jb250YWluZXJfbmFtZSkgJiYKLSAgICAgICAgICAgICAgICAoMCA9PSBzdHJjbXAobmFtZSx4LT5jb250YWluZXJfbmFtZSkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgeCA9IHgtPm5leHQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHg7Ci0gICAgfQotCi0jZW5kaWYKIAogICAgIC8qCiAgICAgICogSU5URVJOQUwgdXRpbGl0eSByb3V0aW5lcyBmb3IgY29udGFpbmVyIGltcGxlbWVudGF0aW9ucwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKaW5kZXggZmNiODdlMC4uM2MzYzUxOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zOCw3ICszOCw3IEBACiAgICAgICovCiAvKioKICAqIEBkZWYgTkVUU05NUF9EU19MSUJSQVJZX0lECi0gKiBUaGVzZSBkZWZpbml0aW9ucyBjb3JyZXNwb25kIHdpdGggdGhlICJzdG9yaWQiIGFyZ3VtZW50IHRvIHRoZSBBUEkgCisgKiBUaGVzZSBkZWZpbml0aW9ucyBjb3JyZXNwb25kIHdpdGggdGhlICJzdG9yaWQiIGFyZ3VtZW50IHRvIHRoZSBBUEkuCiAgKi8KICNkZWZpbmUgTkVUU05NUF9EU19MSUJSQVJZX0lEICAgICAwCiAjZGVmaW5lIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQgMQpAQCAtOTMsNiArOTMsOCBAQAogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9OT19ESVNDT1ZFUlkgICAgICAgIDM4IC8qIGRvbid0IHN1cHBvcnQgUkZDNTM0MyBjb250ZXh0RW5naW5lSUQgZGlzY292ZXJ5ICovCiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1RTTV9VU0VfUFJFRklYICAgICAgMzkgLyogVFNNJ3Mgc2ltcGxlIHNlY3VyaXR5IG5hbWUgbWFwcGluZyAqLwogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ET05UX0xPQURfSE9TVF9GSUxFUyA0MCAvKiBkb24ndCByZWFkIGhvc3QuY29uZiBmaWxlcyAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ETlNTRUNfV0FSTl9PTkxZICAgICA0MSAvKiB0cmVhZCBETlNTRUMgZXJyb3JzIGFzIHdhcm5pbmdzICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX01BWF9CT09MX0lEICAgICAgICAgIDQ4IC8qIG1hdGNoIE5FVFNOTVBfRFNfTUFYX1NVQklEUyAqLwogCiAgICAgLyoKICAgICAgKiBsaWJyYXJ5IGludGVnZXJzIApAQCAtMTEzLDYgKzExNSw5IEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX0RJUl9QRVJNICAgICAgMTIKICNkZWZpbmUgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19VU0VSICAgICAxMgogI2RlZmluZSBORVRTTk1QX0RTX1NTSERPTUFJTl9TT0NLX0dST1VQICAgIDEzCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1RJTUVPVVQgICAgICAgICAgICAgMTQKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfUkVUUklFUyAgICAgICAgICAgICAxNQorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9NQVhfSU5UX0lEICAgICAgICAgIDQ4IC8qIG1hdGNoIE5FVFNOTVBfRFNfTUFYX1NVQklEUyAqLwogICAgIAogICAgIC8qCiAgICAgICogc3BlY2lhbCBtZWFuaW5ncyBmb3IgdGhlIGRlZmF1bHQgU05NUCB2ZXJzaW9uIHNsb3QgKE5FVFNOTVBfRFNfTElCX1NOTVBWRVJTSU9OKSAKQEAgLTE1OSw2ICsxNjQsMTIgQEAKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfSE9TVE5BTUUgICAgICAgICAgMjcKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9DUkxfRklMRSAgICAgMjgKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfVExTX0FMR09SSVRNUyAgICAgMjkKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfVExTX0xPQ0FMX0NFUlQgICAgMzAKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfVExTX1BFRVJfQ0VSVCAgICAgMzEKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIX1VTRVJOQU1FICAgICAgMzIKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIX1BVQktFWSAgICAgICAgMzMKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIX1BSSVZLRVkgICAgICAgMzQKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUFYX1NUUl9JRCAgICAgICAgNDggLyogbWF0Y2ggTkVUU05NUF9EU19NQVhfU1VCSURTICovCiAKICAgICAvKgogICAgICAqIGVuZCBzdG9yYWdlIGRlZmluaXRpb25zIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCmluZGV4IDUwNzc3ODAuLmFmM2ZhMDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgKQEAgLTEzOSw3ICsxMzksNyBAQAogICogQHNlZSBTZWUgYWxzbyBzZWxlY3QoMikgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgKi8KIE5FVFNOTVBfSU1QT1JUCi1pbnQgICAgbmV0X3NubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChpbnQgbnVtZmRzLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKK2ludCAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9zZWxlY3QoaW50IG51bWZkcywgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCiAJCQkgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAogCQkJICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMsCiAJCQkgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xpYnNubXAuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmgKaW5kZXggZWFmMmJiZi4uNmEwNzMwMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xpYnNubXAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oCkBAIC03Niw4ICs3Niw2IEBACiAKICNpZmRlZiBVQ0RfU05NUF9MSUJSQVJZCiAKLSNkZWZpbmUgc25tcF9wYXJzZSBjbXVfc25tcF9wYXJzZQotCiAjaW5jbHVkZSA8dWNkLXNubXAvYXNuMS5oPgogI2luY2x1ZGUgPHVjZC1zbm1wL3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8dWNkLXNubXAvc25tcF9pbXBsLmg+CkBAIC0xMzUsNyArMTMzLDkgQEAKICNkZWZpbmUgU05NUF9NU0dfR0VUIEdFVF9SRVFfTVNHCiAjZGVmaW5lIFNOTVBfTVNHX0dFVE5FWFQgR0VUTkVYVF9SRVFfTVNHCiAjZGVmaW5lIFNOTVBfTVNHX1JFU1BPTlNFIEdFVF9SU1BfTVNHCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogI2RlZmluZSBTTk1QX01TR19TRVQgU0VUX1JFUV9NU0cKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZGVmaW5lIFNOTVBfTVNHX1RSQVAgVFJQX1JFUV9NU0cKICNkZWZpbmUgU05NUF9NU0dfR0VUQlVMSyAgICAoQVNOX0NPTlRFWFQgfCBBU05fQ09OU1RSVUNUT1IgfCAweDUpCiAjZGVmaW5lIFNOTVBfTVNHX0lORk9STSAgICAgKEFTTl9DT05URVhUIHwgQVNOX0NPTlNUUlVDVE9SIHwgMHg2KQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAppbmRleCA4NzI2Y2M3Li5jZTQ2YWI5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaApAQCAtMzIsMTAgKzMyLDE5IEBACiBTT0ZUV0FSRS4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotI2RlZmluZSBNQVhMQUJFTCAgICAgICAgNjQgICAgICAvKiBtYXhpbXVtIGNoYXJhY3RlcnMgaW4gYSBsYWJlbCAqLworI2RlZmluZSBORVRTTk1QX01BWExBQkVMIDY0ICAgICAgLyogbWF4aW11bSBjaGFyYWN0ZXJzIGluIGEgbGFiZWwgKi8KICNkZWZpbmUgTUFYVE9LRU4gICAgICAgIDEyOCAgICAgLyogbWF4aW11bSBjaGFyYWN0ZXJzIGluIGEgdG9rZW4gKi8KICNkZWZpbmUgTUFYUVVPVEVTVFIgICAgIDQwOTYgICAgLyogbWF4aW11bSBjaGFyYWN0ZXJzIGluIGEgcXVvdGVkIHN0cmluZyAqLwogCisvKgorICogTUFYTEFCRUwgYXBwZWFycyB0byBiZSB1bnVzZWQgaW4gY29kZSwgYW5kIGNvbmZsaWN0cyB3aXRoCisgKiA8YXJwYS9uYW1lc2VyLmg+LiBPbmx5IGRlZmluZSBpdCBpZiByZXF1ZXN0ZWQuIFRoaXMgd2lsbAorICogY2F1c2UgcHJvYmxlbXMgaWYgbG9jYWwgRE5TU0VDIHZhbGlkYXRpb24gaXMgYWxzbyBlbmFibGVkLgorICovCisjaWZkZWYgVUNEX0NPTVBBVElCTEUKKyNkZWZpbmUgTUFYTEFCRUwgICAgICAgIE5FVFNOTVBfTUFYTEFCRUwKKyNlbmRpZgorCiAgICAgc3RydWN0IHZhcmlhYmxlX2xpc3Q7CiAKICAgICAvKgpAQCAtMTA1LDYgKzExNCw3IEBACiAgICAgICAgIGNoYXIgICAgICAgICAgICpyZWZlcmVuY2U7ICAgIC8qIHJlZmVyZW5jZXMgKGEgcXVvdGVkIHN0cmluZykgKi8KICAgICAgICAgaW50ICAgICAgICAgICAgIHJlcG9ydGVkOyAgICAgICAvKiAxPXJlcG9ydCBzdGFydGVkIGluIHByaW50X3N1YnRyZWUuLi4gKi8KICAgICAgICAgY2hhciAgICAgICAgICAgKmRlZmF1bHRWYWx1ZTsKKyAgICAgICBjaGFyCSAgICAgICAqcGFyc2VFcnJvclN0cmluZzsgLyogQ29udGFpbnMgdGhlIGVycm9yIHN0cmluZyBpZiB0aGVyZSBhcmUgZXJyb3JzIGluIHBhcnNpbmcgTUlCcyAqLwogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKaW5kZXggNWRhZjE2Ni4uZjU5NzhjNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCkBAIC0xMTgsNyArMTE4LDkgQEAKICNkZWZpbmUgU05NUF9NU0dfR0VUICAgICAgICAoQVNOX0NPTlRFWFQgfCBBU05fQ09OU1RSVUNUT1IgfCAweDApIC8qIGEwPTE2MCAqLwogI2RlZmluZSBTTk1QX01TR19HRVRORVhUICAgIChBU05fQ09OVEVYVCB8IEFTTl9DT05TVFJVQ1RPUiB8IDB4MSkgLyogYTE9MTYxICovCiAjZGVmaW5lIFNOTVBfTVNHX1JFU1BPTlNFICAgKEFTTl9DT05URVhUIHwgQVNOX0NPTlNUUlVDVE9SIHwgMHgyKSAvKiBhMj0xNjIgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAjZGVmaW5lIFNOTVBfTVNHX1NFVCAgICAgICAgKEFTTl9DT05URVhUIHwgQVNOX0NPTlNUUlVDVE9SIHwgMHgzKSAvKiBhMz0xNjMgKi8KKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKICAgICAvKgogICAgICAqIFBEVSB0eXBlcyBpbiBTTk1QdjEgYW5kIFNOTVBzZWMgCkBAIC0xMzcsNiArMTM5LDcgQEAKICAgICAgKi8KICNkZWZpbmUgU05NUF9NU0dfUkVQT1JUICAgICAoQVNOX0NPTlRFWFQgfCBBU05fQ09OU1RSVUNUT1IgfCAweDgpIC8qIGE4PTE2OCAqLwogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIC8qCiAgICAgICogaW50ZXJuYWwgbW9kZXMgdGhhdCBzaG91bGQgbmV2ZXIgYmUgdXNlZCBieSB0aGUgcHJvdG9jb2wgZm9yIHRoZQogICAgICAqIHBkdSB0eXBlLgpAQCAtMTYyLDYgKzE2NSw3IEBACiAjZGVmaW5lIFNOTVBfTVNHX0lOVEVSTkFMX1VORE9fQ09NTUlUICAgICAgICAgICAyNAogI2RlZmluZSBTTk1QX01TR19JTlRFUk5BTF9JUlJFVkVSU0lCTEVfQ09NTUlUICAgMjUKICNkZWZpbmUgU05NUF9NU0dfSU5URVJOQUxfVU5ET19DTEVBTlVQICAgICAgICAgIDI2CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAgICAgLyoKICAgICAgKiBtb2RlcyA+IDEyOCBmb3Igbm9uIHNldHMuCkBAIC0xNzUsOSArMTc5LDE0IEBACiAgICAgLyoKICAgICAgKiB0ZXN0IGZvciBtZW1iZXIgb2YgQ29uZmlybWVkIENsYXNzIGkuZS4sIHJlcG9ydGFibGUgCiAgICAgICovCisjaWZkZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisjZGVmaW5lIFNOTVBfQ01EX0NPTkZJUk1FRChjKSAoYyA9PSBTTk1QX01TR19JTkZPUk0gfHwgYyA9PSBTTk1QX01TR19HRVRCVUxLIHx8XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPT0gU05NUF9NU0dfR0VUTkVYVCB8fCBjID09IFNOTVBfTVNHX0dFVCApCisjZWxzZSAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAjZGVmaW5lIFNOTVBfQ01EX0NPTkZJUk1FRChjKSAoYyA9PSBTTk1QX01TR19JTkZPUk0gfHwgYyA9PSBTTk1QX01TR19HRVRCVUxLIHx8XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPT0gU05NUF9NU0dfR0VUTkVYVCB8fCBjID09IFNOTVBfTVNHX0dFVCB8fCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9PSBTTk1QX01TR19TRVQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9PSBTTk1QX01TR19TRVQgKQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogICAgIC8qCiAgICAgICogRXhjZXB0aW9uIHZhbHVlcyBmb3IgU05NUHYycCwgU05NUHYyYywgU05NUHYydSwgU05NUHYyKiwgYW5kIFNOTVB2MyAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTQmFzZURvbWFpbi5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgKaW5kZXggZWM3N2E3My4uYmMyMWNiNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUTFNCYXNlRG9tYWluLmgKQEAgLTQyLDEzICs0MiwxMiBAQAogICAgICAgIEJJTyAgICAgICAgICAgICAgICAgICAgICAgKmFjY2VwdGVkX2JpbzsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICpzZWN1cml0eU5hbWU7CiAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgICAqYWRkcl9zdHJpbmc7Ci0gICAgICAgc3RydWN0IHNvY2thZGRyX2luICAgICAgICAgYWRkcjsKKyAgICAgICBuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICphZGRyOwogICAgICAgIGNoYXIgICAgICAgICAgICAgICAgICAgICAgKm91cl9pZGVudGl0eTsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0aGVpcl9pZGVudGl0eTsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0aGVpcl9maW5nZXJwcmludDsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0aGVpcl9ob3N0bmFtZTsKICAgICAgICBjaGFyICAgICAgICAgICAgICAgICAgICAgICp0cnVzdF9jZXJ0OwotICAgICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKnJlbW90ZV9hZGRyOwogICAgIH0gX25ldHNubXBUTFNCYXNlRGF0YTsKIAogI2RlZmluZSBWUkZZX1BBUkVOVF9XQVNfT0sgMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAppbmRleCAxNmZkODE5Li44M2ViYTJjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaApAQCAtMjIsOCArMjIsOCBAQAogI2RlZmluZSBUUkFOU1BPUlRfRE9NQUlOX1VEUF9JUFY2CTEsMyw2LDEsMiwxLDEwMCwxLDIKIE5FVFNOTVBfSU1QT1JUIG9pZCAgICAgIG5ldHNubXBfVURQSVB2NkRvbWFpbltdOwogCi1uZXRzbm1wX3RyYW5zcG9ydCAqc25tcF91ZHA2X3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxvY2FsKTsKK25ldHNubXBfdHJhbnNwb3J0ICpuZXRzbm1wX3VkcDZfdHJhbnNwb3J0KHN0cnVjdCBzb2NrYWRkcl9pbjYgKmFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbG9jYWwpOwogCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAppbmRleCAxMTY3ZTJjLi5kMWJjYmZhIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKQEAgLTE1LDExICsxNSwxNCBAQAogI2RlZmluZSBTQV9GSVJFRCAweDEwICAgICAgICAgIC8qIEJlaW5nIHByb2Nlc3NlZCBpbiBydW5fYWxhcm1zICovCiAKICAgICBzdHJ1Y3Qgc25tcF9hbGFybSB7CisgICAgICAgIC8qKiBBbGFybSBpbnRlcnZhbC4gWmVybyBpZiBzaW5nbGUtc2hvdC4gKi8KICAgICAgICAgc3RydWN0IHRpbWV2YWwgIHQ7CiAgICAgICAgIHVuc2lnbmVkIGludCAgICBmbGFnczsKICAgICAgICAgdW5zaWduZWQgaW50ICAgIGNsaWVudHJlZzsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgIHRfbGFzdDsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgIHRfbmV4dDsKKyAgICAgICAgLyoqIExhc3QgdGltZSB0aGUgYWxhcm0gZmlyZWQgW21vbm90b25pYyBjbG9ja10uICovCisgICAgICAgIHN0cnVjdCB0aW1ldmFsICB0X2xhc3RNOworICAgICAgICAvKiogTmV4dCB0aW1lIHRoZSBhbGFybSB3aWxsIGZpcmUgW21vbm90b25pYyBjbG9ja10uICovCisgICAgICAgIHN0cnVjdCB0aW1ldmFsICB0X25leHRNOwogICAgICAgICB2b2lkICAgICAgICAgICAqY2xpZW50YXJnOwogICAgICAgICBTTk1QQWxhcm1DYWxsYmFjayAqdGhlY2FsbGJhY2s7CiAgICAgICAgIHN0cnVjdCBzbm1wX2FsYXJtICpuZXh0OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAppbmRleCBkZWYwMmI5Li42ZjY1OGQ1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9zZXNzaW9uX2FwaS5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogI2lmbmRlZiBET05UX1NIQVJFX0VSUk9SX1dJVEhfT1RIRVJfVEhSRUFEUwogI2RlZmluZSBTRVRfU05NUF9FUlJPUih4KSBzbm1wX2Vycm5vPSh4KQogI2Vsc2UKQEAgLTc2LDggKzc4LDggQEAKICAgICB2b2lkICAgICAgICAgICAqY2JfZGF0YTsgICAgICAgIC8qIHVzZXIgY2FsbGJhY2sgZGF0YSBwZXIgcmVxdWVzdCAoTlVMTCBpZiB1bnVzZWQpICovCiAgICAgaW50ICAgICAgICAgICAgIHJldHJpZXM7ICAgICAgICAvKiBOdW1iZXIgb2YgcmV0cmllcyAqLwogICAgIHVfbG9uZyAgICAgICAgICB0aW1lb3V0OyAgICAgICAgLyogbGVuZ3RoIHRvIHdhaXQgZm9yIHRpbWVvdXQgKi8KLSAgICBzdHJ1Y3QgdGltZXZhbCAgdGltZTsgICAvKiBUaW1lIHRoaXMgcmVxdWVzdCB3YXMgbWFkZSAqLwotICAgIHN0cnVjdCB0aW1ldmFsICBleHBpcmU7IC8qIHRpbWUgdGhpcyByZXF1ZXN0IGlzIGR1ZSB0byBleHBpcmUgKi8KKyAgICBzdHJ1Y3QgdGltZXZhbCAgdGltZU07ICAgLyogVGltZSB0aGlzIHJlcXVlc3Qgd2FzIG1hZGUgW21vbm90b25pYyBjbG9ja10gKi8KKyAgICBzdHJ1Y3QgdGltZXZhbCAgZXhwaXJlTTsgLyogVGltZSB0aGlzIHJlcXVlc3QgaXMgZHVlIHRvIGV4cGlyZSBbbW9ub3RvbmljIGNsb2NrXS4gKi8KICAgICBzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzZXNzaW9uOwogICAgIG5ldHNubXBfcGR1ICAgICpwZHU7ICAgIC8qIFRoZSBwZHUgZm9yIHRoaXMgcmVxdWVzdAogCQkJICAgICAqIChzYXZlZCBzbyBpdCBjYW4gYmUgcmV0cmFuc21pdHRlZCAqLwpAQCAtMzk4LDE0ICs0MDAsMjQgQEAKICAgICBORVRTTk1QX0lNUE9SVAogICAgIG9pZCAgICAgICAgICAgICpzbm1wX2R1cGxpY2F0ZV9vYmppZChjb25zdCBvaWQgKiBvYmpUb0NvcHksIHNpemVfdCk7CiAgICAgTkVUU05NUF9JTVBPUlQKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MKICAgICB1X2ludCAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKGludCB3aGljaCk7CiAgICAgTkVUU05NUF9JTVBPUlQKICAgICB1X2ludCAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljX2J5KGludCB3aGljaCwgaW50IGNvdW50KTsKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHVfaW50ICAgICAgICAgICBzbm1wX2dldF9zdGF0aXN0aWMoaW50IHdoaWNoKTsKICAgICB2b2lkICAgICAgICAgICAgc25tcF9pbml0X3N0YXRpc3RpY3Modm9pZCk7CisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MgKi8KKworLyogYWxsb3cgY29kZSB0byBjb250aW51ZSByZWZlcmVuY2luZyBBUEkgZXZlbiBpZiBzdGF0aXN0aWNzIGFyZSByZW1vdmVkICovCisjZGVmaW5lIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhYKQorI2RlZmluZSBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWNfYnkoWCxZKQorI2RlZmluZSBzbm1wX2luaXRfc3RhdGlzdGljcygpCisKKyNlbmRpZgorCiAgICAgaW50ICAgICAgICAgICAgIGNyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uKTsKLSAgICBpbnQgc25tcF9nZXRfZmRfZm9yX3Nlc3Npb24oc3RydWN0IHNubXBfc2Vzc2lvbiAqc2Vzc3ApOwogICAgIGludCBzbm1wdjNfcHJvYmVfY29udGV4dEVuZ2luZUlEX3JmYzUzNDModm9pZCAqc2xwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKTsKIApAQCAtNjg1LDYgKzY5NywxNiBAQAogLyoqIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5ICovCiAjZGVmaW5lIE1BWF9TVEFUUyBORVRTTk1QX1NUQVRfTUFYX1NUQVRTCiAKKyAgICAvKgorICAgICAqIEludGVybmFsOiBUaGUgbGlzdCBvZiBhY3RpdmUvb3BlbiBzZXNzaW9ucy4KKyAgICAgKi8KKyAgICBzdHJ1Y3Qgc2Vzc2lvbl9saXN0IHsKKyAgICAgICBzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICpuZXh0OworICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKKyAgICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0OworICAgICAgIHN0cnVjdCBzbm1wX2ludGVybmFsX3Nlc3Npb24gKmludGVybmFsOworICAgIH07CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCmluZGV4IGMwMjMyNTMuLmVhNTRlN2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCkBAIC0xMDAsOCArMTAwLDEwIEBACiBpbnQgbmV0c25tcF9xdWVyeV9nZXRuZXh0KCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiwgbmV0c25tcF9zZXNzaW9uICopOwogTkVUU05NUF9JTVBPUlQKIGludCBuZXRzbm1wX3F1ZXJ5X3dhbGsoICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLCBuZXRzbm1wX3Nlc3Npb24gKik7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogTkVUU05NUF9JTVBPUlQKIGludCBuZXRzbm1wX3F1ZXJ5X3NldCggICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLCBuZXRzbm1wX3Nlc3Npb24gKik7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKiogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKaW5kZXggZTQ2ODMzNS4uMWFkNjNlMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtMSw4ICsxLDUgQEAKICNpZm5kZWYgU05NUF9QQVJTRV9BUkdTX0gKICNkZWZpbmUgU05NUF9QQVJTRV9BUkdTX0gKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKIAogLyoqCiAgKiBAZmlsZSBzbm1wX3BhcnNlX2FyZ3MuaApAQCAtMTEsNiArOCwxMCBAQAogICogbGluZSBhcmd1bWVudHMKICAqLwogCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKIC8qKiBEb24ndCBlbmFibGUgYW55IGxvZ2dpbmcgZXZlbiBpZiB0aGVyZSBpcyBubyAtTCBhcmd1bWVudCAqLwogI2RlZmluZSBORVRTTk1QX1BBUlNFX0FSR1NfTk9MT0dHSU5HICAgIDB4MDAwMQogLyoqIERvbid0IHplcm8gb3V0IHNlbnNpdGl2ZSBhcmd1bWVudHMgYXMgdGhleSBhcmUgbm90IG9uIHRoZSBjb21tYW5kIGxpbmUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKaW5kZXggNWJhY2FkNy4uYWFiYjdlZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKQEAgLTkxLDggKzkxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICpvcmlncGR1KTsKLXR5cGVkZWYgaW50ICAgICAoU2VjbW9kRGlzY292ZXJ5TWV0aG9kKSAodm9pZCAqc2xwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pOwordHlwZWRlZiBpbnQgICAgIChTZWNtb2REaXNjb3ZlcnlNZXRob2QpICh2b2lkICpzbHAsIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbik7Cit0eXBlZGVmIGludCAgICAgKFNlY21vZFBvc3REaXNjb3ZlcnkpICh2b2lkICpzbHAsIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbik7CiAKIHR5cGVkZWYgaW50ICAgICAoU2VjbW9kU2Vzc2lvblNldHVwKSAobmV0c25tcF9zZXNzaW9uICppbl9zZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKm91dF9zZXNzaW9uKTsKQEAgLTEzNiw2ICsxMzYsNyBAQAogICAgICogZGVmYXVsdCBlbmdpbmVJRCBkaXNjb3ZlcnkgbWVjaGFuaXNtCiAgICAgKi8KICAgIFNlY21vZERpc2NvdmVyeU1ldGhvZCAqcHJvYmVfZW5naW5laWQ7CisgICBTZWNtb2RQb3N0RGlzY292ZXJ5ICAgKnBvc3RfcHJvYmVfZW5naW5laWQ7CiB9OwogCiAKQEAgLTE2NCw2ICsxNjUsOCBAQAogICovCiBpbnQgICAgICAgICAgICAgdW5yZWdpc3Rlcl9zZWNfbW9kKGludCk7ICAgICAgICAvKiByZWdpc3RlciBhIHNlY3VyaXR5IHNlcnZpY2UgKi8KIHZvaWQgICAgICAgICAgICBpbml0X3NlY21vZCh2b2lkKTsKK05FVFNOTVBfSU1QT1JUCit2b2lkICAgICAgICAgICAgc2h1dGRvd25fc2VjbW9kKHZvaWQpOwogCiAvKgogICogY2xlYXJzIHRoZSBzZWNfbW9kIGxpc3QKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKaW5kZXggZDg5ZjljMC4uNDE2Mjg5NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKQEAgLTEsMTIgKzEsMzIgQEAKICNpZm5kZWYgX1NOTVBfVFJBTlNQT1JUX0gKICNkZWZpbmUgX1NOTVBfVFJBTlNQT1JUX0gKIAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpZmRlZiBzb2xhcmlzMgorI2RlZmluZSBfWFBHNF8yCisjZW5kaWYKKworI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpIHx8IGRlZmluZWQoYWl4NykKKyNkZWZpbmUgX0xJTlVYX1NPVVJDRV9DT01QQVQKKyNlbmRpZgorCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorCisjaWZkZWYgc29sYXJpczIKKyMgaWZuZGVmIENNU0dfU1BBQ0UKKyMgIGRlZmluZSBDTVNHX1NQQUNFKGwpIFwKKyAgICAgICAgICAgICgodW5zaWduZWQgaW50KV9DTVNHX0hEUl9BTElHTihzaXplb2YgKHN0cnVjdCBjbXNnaGRyKSArIChsKSkpCisjICBkZWZpbmUgQ01TR19MRU4obCkgICAoX0NNU0dfSERSX0FMSUdOKHNpemVvZihzdHJ1Y3QgY21zZ2hkcikpICsgKGwpKQorIyBlbmRpZgorI2VuZGlmCisjZW5kaWYgLyogSEFWRV9TWVNfU09DS0VUX0ggKi8KKwogI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvYXNuMS5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKQEAgLTUxLDE0ICs3MSwyMiBAQAogLyogbm90ZTogVkFDTSBvbmx5IGFsbG93cyA8PSAzMiBzbyB0aGlzIGlzIG92ZXJraWxsIHRpbGwgYW5vdGhlciBBQ00gY29tZXMgKi8KICNkZWZpbmUgTkVUU05NUF9UTV9NQVhfU0VDTkFNRSAyNTYKIAordHlwZWRlZiB1bmlvbiBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2VfdSB7CisgICAgc3RydWN0IHNvY2thZGRyICAgICBzYTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gIHNpbjsKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgc3RydWN0IHNvY2thZGRyX2luNiBzaW42OworI2VuZGlmCit9IG5ldHNubXBfc29ja2FkZHJfc3RvcmFnZTsKKwogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9hZGRyX3BhaXJfcyB7Ci0gICBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVtb3RlX2FkZHI7Ci0gICBzdHJ1Y3Qgc29ja2FkZHJfaW4gbG9jYWxfYWRkcjsKKyAgIG5ldHNubXBfc29ja2FkZHJfc3RvcmFnZSByZW1vdGVfYWRkcjsKKyAgIG5ldHNubXBfc29ja2FkZHJfc3RvcmFnZSBsb2NhbF9hZGRyOwogfSBuZXRzbm1wX2FkZHJfcGFpcjsKIAogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcl9zIHsKLSAgIHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGVfYWRkcjsKLSAgIHN0cnVjdCBzb2NrYWRkcl9pbiBsb2NhbF9hZGRyOworICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlIHJlbW90ZV9hZGRyOworICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlIGxvY2FsX2FkZHI7CiAgICAgaW50IGlmX2luZGV4OwogfSBuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyOwogCkBAIC0xMTUsOCArMTQzLDEzIEBACiAKICAgICBzaXplX3QgICAgICAgICAgbXNnTWF4U2l6ZTsKIAorI2lmZGVmIEZPUl9TVEFOREFSRFNfQ09NUExJQU5DRV9PUl9GVVRVUkVfVVNFCiAgICAgLyogVE0gc3RhdGUgcmVmZXJlbmNlIHBlciBJU01TIFdHIHNvbHV0aW9uICovCiAgICAgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICp0bVN0YXRlUmVmOworI2VuZGlmCisKKyAgICAvKiB0dW5uZWxlZCB0cmFuc3BvcnRzICovCisgICAgc3RydWN0IG5ldHNubXBfdHJhbnNwb3J0X3MgKiBiYXNlX3RyYW5zcG9ydDsKIAogICAgIC8qICBDYWxsYmFja3MuICBBcmd1bWVudHMgYXJlOgogICAgICAqCQkKQEAgLTE5OSw2ICsyMzIsNyBAQAogCQkJCSAgbmV0c25tcF90cmFuc3BvcnQgKnRyYW5zcG9ydCk7CiBpbnQgbmV0c25tcF90cmFuc3BvcnRfcmVtb3ZlX2Zyb21fbGlzdChuZXRzbm1wX3RyYW5zcG9ydF9saXN0ICoqdHJhbnNwb3J0X2xpc3QsCiAJCQkJICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQpOworaW50IG5ldHNubXBfc29ja2FkZHJfc2l6ZShzdHJ1Y3Qgc29ja2FkZHIgKnNhKTsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wa3NtLmgKaW5kZXggYzc1ZTVlZi4uMWI1NjNmMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oCkBAIC0xNSw2ICsxNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKTsKICAgICB2b2lkICAgICAgICAgICAgaW5pdF9rc20odm9pZCk7CiAKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fa3NtKHZvaWQpOworCiAgICAgLyoKICAgICAgKiBUaGlzIGlzIHRoZSAia2V5IHVzYWdlIiB0aGF0IGlzIHVzZWQgYnkgdGhlIG5ldyBjcnlwdG8gQVBJLiAgSXQncyB1c2VkCiAgICAgICogZ2VuZXJhbGx5IG9ubHkgaWYgeW91IGFyZSB1c2luZyBkZXJpdmVkIGtleXMuICBUaGUgc3BlY2lmaWNhbCBzYXlzIHRoYXQKQEAgLTI1LDYgKzI3LDggQEAKICNkZWZpbmUgS1NNX0tFWV9VU0FHRV9FTkNSWVBUSU9OCTEwMzAKICNkZWZpbmUgS1NNX0tFWV9VU0FHRV9DSEVDS1NVTQkJMTAzMQogCisjZGVmaW5lIEtTTV9TRUNfTU9ERUxfTlVNQkVSICAgICAgICAgICAgU05NUF9TRUNfTU9ERUxfS1NNCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAppbmRleCBhN2M4ZDkzLi4yNjRhOTI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIFNOTVBUU01fSAogI2RlZmluZSBTTk1QVFNNX0gKIAorI2RlZmluZSBUU01fU0VDX01PREVMX05VTUJFUiAgICAgICAgICAgIFNOTVBfU0VDX01PREVMX1RTTQorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCkBAIC0xNSw2ICsxNyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKTsKICAgICB2b2lkICAgICAgICAgICAgaW5pdF90c20odm9pZCk7CiAKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fdHNtKHZvaWQpOworCiAgICAgI2RlZmluZSBORVRTTk1QX1RNX1NBTUVfU0VDVVJJVFlfTk9UX1JFUVVJUkVEIDAKICAgICAjZGVmaW5lIE5FVFNOTVBfVE1fVVNFX1NBTUVfU0VDVVJJVFkgICAgICAgICAgMQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAppbmRleCBkMWNlZDkwLi45ZDY3M2NjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKQEAgLTI1OSw2ICsyNTksMjEgQEAKIAkJCQkJICAgdm9pZCAqY2xpZW50YXJnKTsKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHZvaWQgICAgICAgICAgICBjbGVhcl91c2VyX2xpc3Qodm9pZCk7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fdXNtKHZvaWQpOworCisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBpbnQgICAgICAgICAgICAgdXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uKTsKKyAgICBTZWNtb2RQb3N0RGlzY292ZXJ5IHVzbV9jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb25faG9vazsKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIHZvaWQgICAgICAgICAgICB1c21fcGFyc2VfY3JlYXRlX3VzbVVzZXIoY29uc3QgY2hhciAqdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpsaW5lKTsKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIGNvbnN0IG9pZCAgICAgICpnZXRfZGVmYXVsdF9hdXRodHlwZShzaXplX3QgKik7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBjb25zdCBvaWQgICAgICAqZ2V0X2RlZmF1bHRfcHJpdnR5cGUoc2l6ZV90ICopOworICAgIHZvaWQgICAgICAgICAgICBzbm1wdjNfYXV0aHR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKTsKKyAgICB2b2lkICAgICAgICAgICAgc25tcHYzX3ByaXZ0eXBlX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCmluZGV4IDYzM2VhNTcuLmE5NTg4MDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKQEAgLTI2LDExICsyNiw2IEBACiAgICAgdm9pZCAgICAgICAgICAgIGVuZ2luZUJvb3RzX2NvbmYoY29uc3QgY2hhciAqLCBjaGFyICopOwogICAgIHZvaWQgICAgICAgICAgICBlbmdpbmVJRFR5cGVfY29uZihjb25zdCBjaGFyICosIGNoYXIgKik7CiAgICAgdm9pZCAgICAgICAgICAgIGVuZ2luZUlETmljX2NvbmYoY29uc3QgY2hhciAqLCBjaGFyICopOwotICAgIHZvaWQgICAgICAgICAgICBzbm1wdjNfYXV0aHR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKTsKLSAgICB2b2lkICAgICAgICAgICAgc25tcHYzX3ByaXZ0eXBlX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cik7Ci0gICAgTkVUU05NUF9JTVBPUlQKLSAgICB2b2lkICAgICAgICAgICAgdXNtX3BhcnNlX2NyZWF0ZV91c21Vc2VyKGNvbnN0IGNoYXIgKnRva2VuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqbGluZSk7CiAgICAgTkVUU05NUF9JTVBPUlQKICAgICB2b2lkICAgICAgICAgICAgaW5pdF9zbm1wdjMoY29uc3QgY2hhciAqKTsKICAgICBpbnQgICAgICAgICAgICAgaW5pdF9zbm1wdjNfcG9zdF9jb25maWcoaW50IG1ham9yaWQsIGludCBtaW5vcmlkLApAQCAtNTQsMTAgKzQ5LDYgQEAKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHVfbG9uZyAgICAgICAgICBzbm1wdjNfbG9jYWxfc25tcEVuZ2luZVRpbWUodm9pZCk7CiAgICAgaW50ICAgICAgICAgICAgIGdldF9kZWZhdWx0X3NlY0xldmVsKHZvaWQpOwotICAgIE5FVFNOTVBfSU1QT1JUCi0gICAgY29uc3Qgb2lkICAgICAgKmdldF9kZWZhdWx0X2F1dGh0eXBlKHNpemVfdCAqKTsKLSAgICBORVRTTk1QX0lNUE9SVAotICAgIGNvbnN0IG9pZCAgICAgICpnZXRfZGVmYXVsdF9wcml2dHlwZShzaXplX3QgKik7CiAgICAgdm9pZCAgICAgICAgICAgIHNubXB2M19zZXRfZW5naW5lQm9vdHNBbmRUaW1lKGludCBib290cywgaW50IHR0aW1lKTsKICAgICBpbnQgICAgICAgICAgICAgZnJlZV9lbmdpbmVJRChpbnQgbWFqb3JpZCwgaW50IG1pbm9yaWQsIHZvaWQgKnNlcnZlcmFyZywKIAkJCQkgIHZvaWQgKmNsaWVudGFyZyk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKaW5kZXggZjNlYzI0Yy4uYWM1MDUyZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaApAQCAtMTMxLDYgKzEzMSwyMCBAQAogICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQoY29uc3QgY2hhciogbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2FkZHJfdCAqYWRkcl9vdXQpOwogCisgICAgLyoqIG5ldHNubXAgdmVyc2lvbnMgb2YgZG5zIHJlc29sb3V0aW9uLi4gbWF5IGluY2x1ZGUgRE5TU0VDIHZhbGlkYXRpb24uICovCisgICAgc3RydWN0IGFkZHJpbmZvOyAvKiBmb3J3YXJkIGRlY2xhcmUgKi8KKyAgICBORVRTTk1QX0lNUE9SVAorICAgIHN0cnVjdCBob3N0ZW50ICpuZXRzbm1wX2dldGhvc3RieW5hbWUoY29uc3QgY2hhciAqbmFtZSk7CisKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIHN0cnVjdCBob3N0ZW50ICpuZXRzbm1wX2dldGhvc3RieWFkZHIoY29uc3Qgdm9pZCAqYWRkciwgc29ja2xlbl90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlKTsKKworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfZ2V0YWRkcmluZm8oY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqc2VydmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhZGRyaW5mbyAqKnJlcyk7CisKICAgICBORVRTTk1QX0lNUE9SVAogICAgIGluX2FkZHJfdCAgICAgICBnZXRfbXlhZGRyKHZvaWQpOwogICAgIE5FVFNOTVBfSU1QT1JUCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdGVzdGluZy5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rlc3RpbmcuaAppbmRleCBhYWJlNTJmLi5lYzYxMzVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdGVzdGluZy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90ZXN0aW5nLmgKQEAgLTcsMTAgKzcsMTAgQEAKIHN0YXRpYyBpbnQgX190ZXN0X2NvdW50ZXIgPSAwOwogc3RhdGljIGludCBfX2RpZF9wbGFuID0gMDsKIAotI2RlZmluZSBPSyhpc29rLCBkZXNjcmlwdGlvbikgeyBwcmludGYoIiVzICVkIC0gJXNcbiIsICgoaXNvaykgPyAib2siIDogIm5vdCBvayIpLCArK19fdGVzdF9jb3VudGVyLCBkZXNjcmlwdGlvbik7IH0KKyNkZWZpbmUgT0soaXNvaywgZGVzY3JpcHRpb24pIGRvIHsgcHJpbnRmKCIlcyAlZCAtICVzXG4iLCAoKGlzb2spID8gIm9rIiA6ICJub3Qgb2siKSwgKytfX3Rlc3RfY291bnRlciwgZGVzY3JpcHRpb24pOyB9IHdoaWxlICgwKQogCi0jZGVmaW5lIE9LRihpc29rLCBkZXNjcmlwdGlvbikgeyBwcmludGYoIiVzICVkIC0gXG4iLCAoKGlzb2spID8gIm9rIiA6ICJub3Qgb2siKSwgKytfX3Rlc3RfY291bnRlcik7IHByaW50ZiBkZXNjcmlwdGlvbjsgcHJpbnRmKCJcbiIpOyB9CisjZGVmaW5lIE9LRihpc29rLCBkZXNjcmlwdGlvbikgZG8geyBwcmludGYoIiVzICVkIC0gIiwgKChpc29rKSA/ICJvayIgOiAibm90IG9rIiksICsrX190ZXN0X2NvdW50ZXIpOyBwcmludGYgZGVzY3JpcHRpb247IHByaW50ZigiXG4iKTsgfSB3aGlsZSAoMCkKIAotI2RlZmluZSBQTEFOKG51bWJlcikgeyBwcmludGYoIjEuLiVkXG4iLCBudW1iZXIpOyBfX2RpZF9wbGFuID0gMTt9CisjZGVmaW5lIFBMQU4obnVtYmVyKSBkbyB7IHByaW50ZigiMS4uJWRcbiIsIG51bWJlcik7IF9fZGlkX3BsYW4gPSAxOyB9IHdoaWxlICgwKQogCiAjZW5kaWYgLyogTkVUU05NUF9MSUJSQVJZX1RFU1RJTkdfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAppbmRleCA5YWM0ZmE1Li4yNjM0YjM0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaApAQCAtMjA5LDYgKzIwOSw5IEBACiAgICAgTkVUU05NUF9JTVBPUlQKICAgICB2b2lkICAgICAgICAgICAqbmV0c25tcF9tZW1kdXAoY29uc3Qgdm9pZCAqIGZyb20sIHNpemVfdCBzaXplKTsKIAorICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX2NoZWNrX2RlZmluZWRuZXNzKGNvbnN0IHZvaWQgKnBhY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoKTsKKwogICAgIE5FVFNOTVBfSU1QT1JUCiAgICAgdV9pbnQgICAgICAgICAgIG5ldHNubXBfYmluYXJ5X3RvX2hleCh1X2NoYXIgKiogZGVzdCwgc2l6ZV90ICpkZXN0X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGxvd19yZWFsbG9jLApAQCAtMjU5LDEyICsyNjIsMTggQEAKICAgICBORVRTTk1QX0lNUE9SVAogICAgIHZvaWQgICAgICAgICAgICBhdGltZV9zZXRNYXJrZXIobWFya2VyX3QgcG0pOwogICAgIE5FVFNOTVBfSU1QT1JUCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jayhzdHJ1Y3QgdGltZXZhbCogdHYpOworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIobWFya2VyX3QgKnBtKTsKKyAgICBORVRTTk1QX0lNUE9SVAogICAgIGxvbmcgICAgICAgICAgICBhdGltZV9kaWZmKGNvbnN0X21hcmtlcl90IGZpcnN0LCBjb25zdF9tYXJrZXJfdCBzZWNvbmQpOwogICAgIHVfbG9uZyAgICAgICAgICB1YXRpbWVfZGlmZihjb25zdF9tYXJrZXJfdCBmaXJzdCwgY29uc3RfbWFya2VyX3Qgc2Vjb25kKTsgICAgICAgLyogMS8xMDAwdGggc2VjICovCiAgICAgTkVUU05NUF9JTVBPUlQKICAgICB1X2xvbmcgICAgICAgICAgdWF0aW1lX2hkaWZmKGNvbnN0X21hcmtlcl90IGZpcnN0LCBjb25zdF9tYXJrZXJfdCBzZWNvbmQpOyAgICAgIC8qIDEvMTAwdGggc2VjICovCiAgICAgTkVUU05NUF9JTVBPUlQKICAgICBpbnQgICAgICAgICAgICAgYXRpbWVfcmVhZHkoY29uc3RfbWFya2VyX3QgcG0sIGludCBkZWx0YV9tcyk7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoY29uc3RfbWFya2VyX3QgcG0sIGludCBkZWx0YV9tcyk7CiAgICAgaW50ICAgICAgICAgICAgIHVhdGltZV9yZWFkeShjb25zdF9tYXJrZXJfdCBwbSwgdW5zaWduZWQgaW50IGRlbHRhX21zKTsKIAogICAgIGludCAgICAgICAgICAgICBtYXJrZXJfdHRpY2tzKGNvbnN0X21hcmtlcl90IHBtKTsKQEAgLTI3Nyw2ICsyODYsOSBAQAogCiAgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfYWRkcnN0cl9odG9uKGNoYXIgKnB0ciwgc2l6ZV90IGxlbik7CiAKKyAgICBORVRTTk1QX0lNUE9SVAorICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3MoY29uc3QgY2hhciAqdGltZV9zdHJpbmcpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4KaW5kZXggMmEyMmMwMC4uMWRiMDIzNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbgorKysgYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCkBAIC0yOCwxNSArMjgsNiBAQAogICovCiAjaWZuZGVmIE5FVFNOTVBfTk9fQVVUT0NPTkZfREVGSU5JVElPTlMKIAotCi0jaWYgZGVmaW5lZCAoV0lOMzIpIHx8IGRlZmluZWQgKG1pbmd3MzIpIHx8IGRlZmluZWQgKGN5Z3dpbikKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUiAiOyIKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUl9DSEFSICc7JwotI2Vsc2UKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUiAiOiIKLSNkZWZpbmUgRU5WX1NFUEFSQVRPUl9DSEFSICc6JwotI2VuZGlmCi0KIC8qIGRlZmluaXRpb25zIGFkZGVkIGJ5IGNvbmZpZ3VyZSBvbi10aGUtZmx5ICovCiAKICNkZWZpbmUgY29uZmlnX2JlbG9uZ3NfaW4oeCkKQEAgLTcxLDYgKzYyLDE1IEBACiAvKiBsb2NhdGlvbiBvZiBzd2FwIGRldmljZSAqLwogI3VuZGVmIERNRU1fTE9DCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCBsb2NhbCBETlNTRUMgdmFsaWRhdGlvbiBzdXBwb3J0ICovCisjdW5kZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKworLyogRW52aXJvbm1lbnQgc2VwYXJhdG9yIGNoYXJhY3RlciBzdXJyb3VuZGVkIGJ5IGRvdWJsZSBxdW90ZXMuICovCisjdW5kZWYgRU5WX1NFUEFSQVRPUgorCisvKiBFbnZpcm9ubWVudCBzZXBhcmF0b3IgY2hhcmFjdGVyIHN1cnJvdW5kZWQgYnkgc2luZ2xlIHF1b3Rlcy4gKi8KKyN1bmRlZiBFTlZfU0VQQVJBVE9SX0NIQVIKKwogLyogbG9jYXRpb24gb2YgbW91bnQgdGFibGUgbGlzdCAqLwogI3VuZGVmIEVUQ19NTlRUQUIKIApAQCAtMTAyLDkgKzEwMiwxNSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjaG93bicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DSE9XTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX2dldHRpbWUnIGxpYnJhcnkgKi8KKyN1bmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjbG9zZWRpcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DTE9TRURJUgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGNvbV9lcnIuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9DT01fRVJSX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYENvdW50ZXI2NCcuICovCiAjdW5kZWYgSEFWRV9DT1VOVEVSNjQKIApAQCAtMTM3LDYgKzE0Myw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVyci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0VSUl9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZXQvY29tX2Vyci5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0VUX0NPTV9FUlJfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGV2YWxfcHYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRVZBTF9QVgogCkBAIC0xNDYsMTggKzE1NSwzMyBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBFVlBfTURfQ1RYX2Rlc3Ryb3knIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRVZQX01EX0NUWF9ERVNUUk9ZCiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSBFVlBfc2hhMjI0LzI1NiBpbiBvcGVuc3NsICovCisjdW5kZWYgSEFWRV9FVlBfU0hBMjI0CisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSBFVlBfc2hhMzg0LzI1NiBpbiBvcGVuc3NsICovCisjdW5kZWYgSEFWRV9FVlBfU0hBMzg0CisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZXhlY3YnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfRVhFQ1YKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0ZDTlRMX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmZ2V0Y191bmxvY2tlZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GR0VUQ19VTkxPQ0tFRAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGZsb2NrZmlsZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GTE9DS0ZJTEUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmb3JrJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0ZPUksKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmc3RhYi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0ZTVEFCX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBmdW5sb2NrZmlsZScgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9GVU5MT0NLRklMRQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdhaV9zdHJlcnJvcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HQUlfU1RSRVJST1IKIApAQCAtMTc2LDYgKzIwMCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGdybmFtJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVEdSTkFNCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0aG9zdGJ5YWRkcicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9HRVRIT1NUQllBRERSCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0aG9zdGJ5bmFtZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FCiAKQEAgLTI3OCwxMiArMzA1LDEyIEBACiAvKiBTZXQgaWYgSVBfUkVDVkRTVEFERFIgaXMgdXNhYmxlICovCiAjdW5kZWYgSEFWRV9JUF9SRUNWRFNUQUREUgogCi0vKiBrZXJuLmNwX3RpbWVzIGRpc3BsYXlzIG11bHRpIGNwdSBsb2FkIG9uIEZyZWVCU0QuLi4gKi8KLSN1bmRlZiBIQVZFX0tFUk5fQ1BfVElNRVMKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBraW5mb19nZXRfY3B1cycgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9LSU5GT19HRVRfQ1BVUwogCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgL2Rldi9rbWVtICovCisjdW5kZWYgSEFWRV9LTUVNCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga25saXN0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0tOTElTVAogCkBAIC0zMzUsNiArMzYyLDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBrY3MxMScgbGlicmFyeSAoLWxwa2NzMTEpLiAqLwogI3VuZGVmIEhBVkVfTElCUEtDUzExCiAKKy8qIGRlZmluZSBpZiB5b3UgaGF2ZSBCU0QgcGtnLW5nICovCisjdW5kZWYgSEFWRV9MSUJQS0cKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBwdGhyZWFkJyBsaWJyYXJ5ICgtbHB0aHJlYWQpLiAqLworI3VuZGVmIEhBVkVfTElCUFRIUkVBRAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJwbScgbGlicmFyeSAoLWxycG0pLiAqLwogI3VuZGVmIEhBVkVfTElCUlBNCiAKQEAgLTM0NCw2ICszNzcsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByc2FyZWYnIGxpYnJhcnkgKC1scnNhcmVmKS4gKi8KICN1bmRlZiBIQVZFX0xJQlJTQVJFRgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNyZXMnIGxpYnJhcnkgKC1sc3JlcykuICovCisjdW5kZWYgSEFWRV9MSUJTUkVTCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3NoMicgbGlicmFyeSAoLWxzc2gyKS4gKi8KICN1bmRlZiBIQVZFX0xJQlNTSDIKIApAQCAtNTY5LDYgKzYwNSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG9zcmVsZGF0ZS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX09TUkVMREFURV9ICiAKKy8qIGRlZmluZSBpZiB5b3UgaGF2ZSBwY2lfbG9va3VwX25hbWUoKSAqLworI3VuZGVmIEhBVkVfUENJX0xPT0tVUF9OQU1FCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cGNpL3BjaS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BDSV9QQ0lfSAogCkBAIC01OTMsNiArNjMyLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cGtnbG9jcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BLR0xPQ1NfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBrZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1BLR19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcG9sbCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9QT0xMCiAKQEAgLTc2NCwyMDYgKzgwNiwyMTIgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG91bGwnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSVE9VTEwKIAotLyogRGVmaW5lIHRvIDEgaWYgYGF0X25leHQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGFycGhkJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBhdF9uZXh0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGFycGhkJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiAKLS8qIERlZmluZSB0byAxIGlmIGB3ZWFrX2tleScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgZGVzX2tzX3N0cnVjdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgd2Vha19rZXknIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgZGVzX2tzX3N0cnVjdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfREVTX0tTX1NUUlVDVF9XRUFLX0tFWQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZF90eXBlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBkaXJlbnQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGRfdHlwZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBkaXJlbnQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0RJUkVOVF9EX1RZUEUKIAotLyogRGVmaW5lIHRvIDEgaWYgYHNwZWVkX2hpJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBldGh0b29sX2NtZCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc3BlZWRfaGknIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgZXRodG9vbF9jbWQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0VUSFRPT0xfQ01EX1NQRUVEX0hJCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZmFfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZhZGRyJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZmFfbmV4dCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZmFkZHInLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGQUREUl9JRkFfTkVYVAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmhlYWQudHFoX2ZpcnN0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmhlYWQudHFoX2ZpcnN0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9BRERSSEVBRF9UUUhfRklSU1QKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX2FkZHJsaXN0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYWRkcmxpc3QnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0FERFJMSVNUCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9iYXVkcmF0ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2JhdWRyYXRlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURV9JRlNfVkFMVUUKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX2lieXRlcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2lieXRlcycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSUJZVEVTCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9pbWNhc3RzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfaW1jYXN0cycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfaXFkcm9wcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2lxZHJvcHMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lRRFJPUFMKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfbnNlYycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfbnNlYycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTEFTVENIQU5HRV9UVl9OU0VDCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9sYXN0Y2hhbmdlLnR2X3NlYycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfc2VjJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfbXR1JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfbXR1JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9NVFUKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX25vcHJvdG8nIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZl9ub3Byb3RvJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9OT1BST1RPCiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl9vYnl0ZXMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZl9vYnl0ZXMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09CWVRFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfb21jYXN0cycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlmX29tY2FzdHMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09NQ0FTVFMKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlmX3NwZWVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfc3BlZWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1NQRUVECiAKLS8qIERlZmluZSB0byAxIGlmIGBpZl90eXBlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfdHlwZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfVFlQRQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaWZfeG5hbWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpZl94bmFtZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19jYW50Zm9yd2FyZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpcDZzX2V4dGhkcnRvb2xvbmcgJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwNnN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQNlNUQVRfSVA2U19FWFRIRFJUT09MT05HXworCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2NhbnRmb3J3YXJkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19DQU5URk9SV0FSRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2NhbnRmcmFnJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19jYW50ZnJhZycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfQ0FOVEZSQUcKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19kZWxpdmVyZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2RlbGl2ZXJlZCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfREVMSVZFUkVECiAKLS8qIERlZmluZSB0byAxIGlmIGBpcHNfZnJhZ2Ryb3BwZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdkcm9wcGVkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHRFJPUFBFRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdtZW50ZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdtZW50ZWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0ZSQUdNRU5URUQKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19mcmFndGltZW91dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpcHNfZnJhZ3RpbWVvdXQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0ZSQUdUSU1FT1VUCiAKLS8qIERlZmluZSB0byAxIGlmIGBpcHNfbG9jYWxvdXQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2xvY2Fsb3V0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19MT0NBTE9VVAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX25vcHJvdG8nIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX25vcHJvdG8nIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX05PUFJPVE8KIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19ub3JvdXRlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19ub3JvdXRlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19OT1JPVVRFCiAKLS8qIERlZmluZSB0byAxIGlmIGBpcHNfb2Ryb3BwZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29kcm9wcGVkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRFJPUFBFRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29mcmFnbWVudHMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29mcmFnbWVudHMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX09GUkFHTUVOVFMKIAotLyogRGVmaW5lIHRvIDEgaWYgYGlwc19yZWFzc2VtYmxlZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBpcHNfcmVhc3NlbWJsZWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX1JFQVNTRU1CTEVECiAKLS8qIERlZmluZSB0byAxIGlmIGBtX2NsZnJlZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBtX2NsZnJlZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX0NMRlJFRQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgbV9jbHVzdGVycycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBtX2NsdXN0ZXJzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IG1ic3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfTUJTVEFUX01fQ0xVU1RFUlMKIAotLyogRGVmaW5lIHRvIDEgaWYgYG1fbWJ1ZnMnIGlzIG1lbWJlciBvZiBgc3RydWN0IG1ic3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgbV9tYnVmcycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX01CVUZTCiAKLS8qIERlZmluZSB0byAxIGlmIGBuX3ZhbHVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBubGlzdDY0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBuX3ZhbHVlJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IG5saXN0NjQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUNjRfTl9WQUxVRQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgbl92YWx1ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgbmxpc3QnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYG5fdmFsdWUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgbmxpc3QnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUKIAotLyogRGVmaW5lIHRvIDEgaWYgYHJ0X2RzdCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfZHN0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCiAKLS8qIERlZmluZSB0byAxIGlmIGBydF9oYXNoJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBydF9oYXNoJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfSEFTSAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgcnRfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfbmV4dCcgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX05FWFQKIAotLyogRGVmaW5lIHRvIDEgaWYgYHJ0X3JlZmNudCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfcmVmY250JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfUkVGQ05UCiAKLS8qIERlZmluZSB0byAxIGlmIGBydF91bml0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBydF91bml0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVU5JVAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgcnRfdXNlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBydF91c2UnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9VU0UKIAotLyogRGVmaW5lIHRvIDEgaWYgYHNhX3NpZ2FjdGlvbicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc2lnYWN0aW9uJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBzYV9zaWdhY3Rpb24nIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc2lnYWN0aW9uJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TSUdBQ1RJT05fU0FfU0lHQUNUSU9OCiAKLS8qIERlZmluZSB0byAxIGlmIGBzaW42X3Njb3BlX2lkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcl9pbjYnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHNpbjZfc2NvcGVfaWQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfaW42Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9JTjZfU0lONl9TQ09QRV9JRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgc2FfbGVuJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcicuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc2FfbGVuJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHNvY2thZGRyJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9MRU4KIAotLyogRGVmaW5lIHRvIDEgaWYgYHNhX3VuaW9uLnNhX2dlbmVyaWMuc2FfZmFtaWx5MicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QKKy8qIERlZmluZSB0byAxIGlmIGBzYV91bmlvbi5zYV9nZW5lcmljLnNhX2ZhbWlseTInIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QKICAgIHNvY2thZGRyJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIKIAotLyogRGVmaW5lIHRvIDEgaWYgYHNzX2ZhbWlseScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc3NfZmFtaWx5JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZCiAKLS8qIERlZmluZSB0byAxIGlmIGBfX3NzX2ZhbWlseScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgX19zc19mYW1pbHknIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9fX1NTX0ZBTUlMWQogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZl9mYXZhaWwnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mYXZhaWwnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GQVZBSUwKIAotLyogRGVmaW5lIHRvIDEgaWYgYGZfZmZyZWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mZnJlZScgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZGUkVFCiAKLS8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGZfZmlsZXMnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GSUxFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZl9mbGFncycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBmX2ZsYWdzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkxBR1MKIAotLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRlJTSVpFCiAKLS8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0dmZzJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GSUxFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiBgZl9mcnNpemUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYGZfZnJzaXplJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUKIAotLyogRGVmaW5lIHRvIDEgaWYgYG1udF9kaXInIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYG1udF9kaXInIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdHZmcycuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVFZGU19NTlRfRElSCiAKLS8qIERlZmluZSB0byAxIGlmIGBzd19uYmxrc2VuYWJsZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN3ZGV2dCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgc3dfbmJsa3NlbmFibGVkJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHN3ZGV2dCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1dERVZUX1NXX05CTEtTRU5BQkxFRAogCi0vKiBEZWZpbmUgdG8gMSBpZiBgdGNwX3Jjdm1lbWRyb3AnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRjcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHRjcF9yY3ZtZW1kcm9wJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHRjcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1RDUFNUQVRfVENQX1JDVk1FTURST1AKIAotLyogRGVmaW5lIHRvIDEgaWYgYHR6X2RzdHRpbWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRpbWV6b25lJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB0el9kc3R0aW1lJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHRpbWV6b25lJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9USU1FWk9ORV9UWl9EU1RUSU1FCiAKLS8qIERlZmluZSB0byAxIGlmIGB0bV9nbXRvZmYnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRtJy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB0bV9nbXRvZmYnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdG0nLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1RNX1RNX0dNVE9GRgogCi0vKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19kaXNjYXJkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB1ZHBzX2Rpc2NhcmQnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0RJU0NBUkQKIAotLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZnVsbHNvY2snIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZnVsbHNvY2snIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0ZVTExTT0NLCiAKLS8qIERlZmluZSB0byAxIGlmIGB1ZHBzX25vcG9ydCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19pcGFja2V0cycgaXMgYSBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfSVBBQ0tFVFMKKworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0JyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlQKIAotLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0YmNhc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0YmNhc3QnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX05PUE9SVEJDQVNUCiAKLS8qIERlZmluZSB0byAxIGlmIGB1ZHBzX29wYWNrZXRzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB1ZHBzdGF0Jy4gKi8KKy8qIERlZmluZSB0byAxIGlmIGB1ZHBzX29wYWNrZXRzJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLwogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19PUEFDS0VUUwogCiAvKiBEZWZpbmUgdG8gMSBpZiBgcGdzd2FwaW4nIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgdXZtZXhwJy4gKi8KQEAgLTEyMTQsNiArMTI2MiwxNSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1dm0vdXZtX3BhcmFtLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVVZNX1VWTV9QQVJBTV9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dmFsZ3JpbmQvbWVtY2hlY2suaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9WQUxHUklORF9NRU1DSEVDS19ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9WQUxHUklORF9WQUxHUklORF9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dmFsaWRhdG9yL3ZhbGlkYXRvci1jb25maWcuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9WQUxJREFUT1JfVkFMSURBVE9SX0NPTkZJR19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dm0vc3dhcF9wYWdlci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1ZNX1NXQVBfUEFHRVJfSAogCkBAIC0xMjc5LDYgKzEzMzYsMTIgQEAKIC8qIGRlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQsIHNwZWNpZmllZCBieSBwYXRoLiAqLwogI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9NSUJGSUxFUwogCisvKiBEZWZpbmUgaWYgbm8gYWdlbnQgaXMgYnVpbHQgKi8KKyN1bmRlZiBORVRTTk1QX0RJU0FCTEVfQUdFTlQKKworLyogRGVmaW5lIGlmIG5vIGFwcHMgYXJlIGJ1aWx0ICovCisjdW5kZWYgTkVUU05NUF9ESVNBQkxFX0FQUFMKKwogLyogRGVmaW5lIGlmIERFUyBlbmNyeXB0aW9uIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkICovCiAjdW5kZWYgTkVUU05NUF9ESVNBQkxFX0RFUwogCkBAIC0xMzI1LDYgKzEzODgsMTIgQEAKIC8qIGlmbmV0IG5lZWRzIHRvIGhhdmUgX0tFUk5FTF9TVFJVQ1RVUkVTIGRlZmluZWQgKi8KICN1bmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIG5vbi1lc3NlbnRpYWwgY29kZSBmZWF0dXJlcy4gKi8KKyN1bmRlZiBORVRTTk1QX01JTklNQUxfQ09ERQorCisvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gb25seSBzdXBwb3J0IHNlbmRpbmcgbm90aWZpY2F0aW9ucyAqLworI3VuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKKwogLyogRGVmaW5lIHRvIHN1cHByZXNzIGluY2x1c2lvbiBvZiBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqLwogI3VuZGVmIE5FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlMKIApAQCAtMTMzNSw5ICsxNDA0LDE1IEBACiAvKiBJZiB3ZSBkb24ndCB3YW50IHRvIHVzZSBrbWVtLiAqLwogI3VuZGVmIE5FVFNOTVBfTk9fS01FTV9VU0FHRQogCisvKiBEZWZpbmUgaWYgeW91IHdhbnQgdG8gcmVtb3ZlIGFsbCBsaXN0ZW5pbmcgc3VwcG9ydCBmcm9tIHRoZSBjb2RlICovCisjdW5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorCiAvKiBJZiB5b3UgZG9uJ3QgaGF2ZSByb290IGFjY2VzcyBkb24ndCBleGl0IHVwb24ga21lbSBlcnJvcnMgKi8KICN1bmRlZiBORVRTTk1QX05PX1JPT1RfQUNDRVNTCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byByZW1vdmUgYWxsIFNFVC93cml0ZSBhY2Nlc3MgZnJvbSB0aGUgY29kZSAqLworI3VuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorCiAvKiB1bWFzayBwZXJtaXNzaW9ucyB0byBzZXQgdXAgcGVyc2lzdGVudCBmaWxlcyB3aXRoICovCiAjdW5kZWYgTkVUU05NUF9QRVJTSVNURU5UX01BU0sKIApAQCAtMTQwMiw2ICsxNDc3LDkgQEAKICN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKICNlbmRpZgogCisvKiBEZWZpbmUgdG8gdGhlIGhvbWUgcGFnZSBmb3IgdGhpcyBwYWNrYWdlLiAqLworI3VuZGVmIFBBQ0tBR0VfVVJMCisKIC8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCiAjaWZuZGVmIFBBQ0tBR0VfVkVSU0lPTgogI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTgpAQCAtMTU2Nyw2ICsxNjQ1LDkgQEAKIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KICN1bmRlZiBwaWRfdAogCisvKiBEZWZpbmUgdG8gYHVuc2lnbmVkIGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCisjdW5kZWYgc2l6ZV90CisKIC8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSAxNiBiaXRzIGlmCiAgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLwogI3VuZGVmIHVpbnQxNl90CkBAIC0yMDQ1LDExICsyMTI2LDggQEAKICAgIGFuZCBhcmUgbm90IHVzaW5nIHRoZSBVQy1EYXZpcyBTTk1QIGxpYnJhcnkuICovCiAjZGVmaW5lIFVDRF9TTk1QX0xJQlJBUlkgMQogCi0vKiBhZGQgaW4gcmVjZW50IENNVSBsaWJyYXJ5IGV4dGVuc2lvbnMgKG5vdCBjb21wbGV0ZSkgKi8KLSN1bmRlZiBDTVVfQ09NUEFUSUJMRQotCiAvKiBmaW5hbCBjb25jbHVzaW9uIG9uIG5saXN0IHVzYWdlICovCi0jaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUpICYmICFkZWZpbmVkKE5FVFNOTVBfRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKKyNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoSEFWRV9TVFJVQ1RfTkxJU1RfTl9WQUxVRSkgJiYgIWRlZmluZWQoTkVUU05NUF9ET05UX1VTRV9OTElTVCkgJiYgZGVmaW5lZChIQVZFX0tNRU0pICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKICNkZWZpbmUgTkVUU05NUF9DQU5fVVNFX05MSVNUCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oIGIvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzN2U2YzUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKQEAgLTAsMCArMSwzMiBAQAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVTX0gKKyNkZWZpbmUgTkVUU05NUF9GRUFUVVJFU19ICisKKy8qIGluY2x1ZGUgZmlsZXMgdGhhdCBhcmUgb25seSBuZWVkZWQgaWYgLS1lbmFibGUtbWluaW1hbGlzdCBpcyBvbiAqLworI2lmZGVmIE5FVFNOTVBfTUlOSU1BTF9DT0RFCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HCisjaW5jbHVkZSA8bmV0LXNubXAvZmVhdHVyZS1kZXRhaWxzLmg+CisjZWxzZSAvKiAhIE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZmVhdHVyZXMuaD4KKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX0FHRU5UCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvZmVhdHVyZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9mZWF0dXJlcy1taWJncm91cHMuaD4KKyNlbmRpZgorI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfQVBQUworI2luY2x1ZGUgPG5ldC1zbm1wL2ZlYXR1cmVzLXNubXBuZXRzdGF0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZmVhdHVyZXMtYXBwcy5oPgorI2VuZGlmCisjZW5kaWYgLyogISBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KKyNlbmRpZiAvKiBORVRTTk1QX01JTklNQUxfQ09ERSAqLworCisKKy8qIHByb3RvdHlwZXMgYWx3YXlzIG5lZWRlZCAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcKKyNkZWZpbmUgbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoWCkKKyNkZWZpbmUgbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoWCkKKyNkZWZpbmUgbmV0c25tcF9mZWF0dXJlX3dhbnQoWCkKKyNkZWZpbmUgbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKFgsIFkpCisjZW5kaWYKKworI2RlZmluZSBuZXRzbm1wX2ZlYXR1cmVfdW51c2VkKFgpIGNoYXIgbmV0c25tcF9mZWF0dXJlX3VudXNlZF8gIyMgWAorCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFU19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmggYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKaW5kZXggY2QzNzQwNy4uM2VlNjJhZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtNzcsOCArNzcsNCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL291dHB1dF9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9zbm1wdjNfYXBpLmg+CiAKLSNpZmRlZiBDTVVfQ09NUEFUSUJMRQotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY211X2NvbXBhdC5oPgotI2VuZGlmCi0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUX1NOTVBfSU5DTFVERVNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4uaAppbmRleCA2ZWFmMDlmLi41YTA2NWI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4uaApAQCAtNiw4ICs2LDMgQEAKICAqLwogI3VuZGVmIEhBVkVfRlNUQUJfSAogCi0vKgotICogYXMgb2YgNy8yMDEwLCBvcGVuc3NsIG9uIGRhcndpbiBkb2VzIG5vdCBoYXZlIHNoYTI1NgotICovCi0jZGVmaW5lIE9QRU5TU0xfTk9fU0hBMjU2IDEKLSNkZWZpbmUgT1BFTlNTTF9OT19TSEE1MTIgMQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTAuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEwLmgKaW5kZXggMjMzMzAxNS4uMzAzNzMyNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMC5oCkBAIC02NSw2ICs2NSw3IEBACiAvKgogICogdXNlIG5ldyBob3N0IHJlc291cmNlcyBmaWxlcyBhcyB3ZWxsCiAgKi8KKyNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXSU5TVF9SRVdSSVRFUwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9SRVdSSVRFUwogI3VuZGVmIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQKQEAgLTkyLDI1ICs5Myw2IEBACiAjZW5kaWYKIAogLyoKLSAqIERhcndpbidzIHRvb2xzIGFyZSBjYXBhYmxlIG9mIGJ1aWxkaW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgaW4gb25lIHBhc3MuCi0gKiBBcyBhIHJlc3VsdCwgcGxhdGZvcm0gZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGNvbXBpbGUgdGltZS4KLSAqLwotI2lmZGVmIEJZVEVfT1JERVIKLSMgdW5kZWYgV09SRFNfQklHRU5ESUFOCi0jIGlmIEJZVEVfT1JERVIgPT0gQklHX0VORElBTgotIyAgZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxCi0jIGVuZGlmCi0jZW5kaWYKLQotLyoKLSAqIEFsdGhvdWdoIERhcndpbiBkb2VzIGhhdmUgYSBrdm0uaCBmaWxlLCBrdm1fb3BlbmZpbGVzIGV0Yy4gYWx3YXlzCi0gKiByZXR1cm4gbnVsbCBiZWNhdXNlIC9kZXYva21lbSB3YXMgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIE9TIFggMTAuNS4KLSAqLwotI3VuZGVmIEhBVkVfS1ZNX0gKLSN1bmRlZiBIQVZFX0tWTV9HRVRQUk9DUwotI3VuZGVmIEhBVkVfS1ZNX09QRU5GSUxFUwotCi0vKgogICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhbiBmc3RhYi5oIGZpbGUsIGdldGZzZmlsZSBldGMuIGFsd2F5cyByZXR1cm4gbnVsbC4KICAqIEF0IGxlYXN0LCBhcyBvZiA1LjMuCiAgKi8KQEAgLTE1NCw4ICsxMzYsMyBAQAogI2RlZmluZSBVRFBfQUREUkVTU0VTX0lOX0hPU1RfT1JERVIgMQogI2VuZGlmCiAKLS8qCi0gKiBhcyBvZiA3LzIwMTAsIG9wZW5zc2wgb24gZGFyd2luIGRvZXMgbm90IGhhdmUgc2hhMjU2Ci0gKi8KLSNkZWZpbmUgT1BFTlNTTF9OT19TSEEyNTYgMQotI2RlZmluZSBPUEVOU1NMX05PX1NIQTUxMiAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMS5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTEuaAppbmRleCAyNGZlZDkzLi45ZDZmMDNkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjExLmgKQEAgLTY1LDYgKzY1LDcgQEAKIC8qCiAgKiB1c2UgbmV3IGhvc3QgcmVzb3VyY2VzIGZpbGVzIGFzIHdlbGwKICAqLworI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hSU1dJTlNUX1JFV1JJVEVTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1JFV1JJVEVTCiAjdW5kZWYgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVApAQCAtOTIsMjUgKzkzLDYgQEAKICNlbmRpZgogCiAvKgotICogRGFyd2luJ3MgdG9vbHMgYXJlIGNhcGFibGUgb2YgYnVpbGRpbmcgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyBpbiBvbmUgcGFzcy4KLSAqIEFzIGEgcmVzdWx0LCBwbGF0Zm9ybSBkZWZpbml0aW9ucyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgY29tcGlsZSB0aW1lLgotICovCi0jaWZkZWYgQllURV9PUkRFUgotIyB1bmRlZiBXT1JEU19CSUdFTkRJQU4KLSMgaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOCi0jICBkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKLSMgZW5kaWYKLSNlbmRpZgotCi0vKgotICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhIGt2bS5oIGZpbGUsIGt2bV9vcGVuZmlsZXMgZXRjLiBhbHdheXMKLSAqIHJldHVybiBudWxsIGJlY2F1c2UgL2Rldi9rbWVtIHdhcyByZW1vdmVkIGNvbXBsZXRlbHkgaW4gT1MgWCAxMC41LgotICovCi0jdW5kZWYgSEFWRV9LVk1fSAotI3VuZGVmIEhBVkVfS1ZNX0dFVFBST0NTCi0jdW5kZWYgSEFWRV9LVk1fT1BFTkZJTEVTCi0KLS8qCiAgKiBBbHRob3VnaCBEYXJ3aW4gZG9lcyBoYXZlIGFuIGZzdGFiLmggZmlsZSwgZ2V0ZnNmaWxlIGV0Yy4gYWx3YXlzIHJldHVybiBudWxsLgogICogQXQgbGVhc3QsIGFzIG9mIDUuMy4KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTIuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEyLmgKaW5kZXggZmQ2NjE0Ny4uMzAzMWQwNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luMTIuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMi5oCkBAIC02NSw2ICs2NSw3IEBACiAvKgogICogdXNlIG5ldyBob3N0IHJlc291cmNlcyBmaWxlcyBhcyB3ZWxsCiAgKi8KKyNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXSU5TVF9SRVdSSVRFUwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9SRVdSSVRFUwogI3VuZGVmIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQKQEAgLTkyLDI1ICs5Myw2IEBACiAjZW5kaWYKIAogLyoKLSAqIERhcndpbidzIHRvb2xzIGFyZSBjYXBhYmxlIG9mIGJ1aWxkaW5nIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgaW4gb25lIHBhc3MuCi0gKiBBcyBhIHJlc3VsdCwgcGxhdGZvcm0gZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGRlZmVycmVkIHVudGlsIGNvbXBpbGUgdGltZS4KLSAqLwotI2lmZGVmIEJZVEVfT1JERVIKLSMgdW5kZWYgV09SRFNfQklHRU5ESUFOCi0jIGlmIEJZVEVfT1JERVIgPT0gQklHX0VORElBTgotIyAgZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxCi0jIGVuZGlmCi0jZW5kaWYKLQotLyoKLSAqIEFsdGhvdWdoIERhcndpbiBkb2VzIGhhdmUgYSBrdm0uaCBmaWxlLCBrdm1fb3BlbmZpbGVzIGV0Yy4gYWx3YXlzCi0gKiByZXR1cm4gbnVsbCBiZWNhdXNlIC9kZXYva21lbSB3YXMgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIE9TIFggMTAuNS4KLSAqLwotI3VuZGVmIEhBVkVfS1ZNX0gKLSN1bmRlZiBIQVZFX0tWTV9HRVRQUk9DUwotI3VuZGVmIEhBVkVfS1ZNX09QRU5GSUxFUwotCi0vKgogICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhbiBmc3RhYi5oIGZpbGUsIGdldGZzZmlsZSBldGMuIGFsd2F5cyByZXR1cm4gbnVsbC4KICAqIEF0IGxlYXN0LCBhcyBvZiA1LjMuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjEzLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiMTg3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW4xMy5oCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogV2hpbGUgRGFyd2luIDEwIChha2EsIE1hYyBPUyBYIDEwLjYgU25vdyBMZW9wYXJkKSBpcyAiQlNELWxpa2UiLCBpdCBkaWZmZXJzCisgKiBzdWJzdGFudGlhbGx5IGVub3VnaCB0byBub3Qgd2FycmFudCBwcmV0ZW5kaW5nIGl0IGlzIGEgQlNEIGZsYXZvci4KKyAqIFRoaXMgZmlyc3Qgc2VjdGlvbiBhcmUgdGhlIHZlc3RpZ2FsIEJTRCByZW1uYW50cy4KKyAqLworLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisKKy8qCisgKiBCU0Qgc3lzdGVtcyB1c2UgYSBkaWZmZXJlbnQgbWV0aG9kIG9mIGxvb2tpbmcgdXAgc29ja2FkZHJfaW4gdmFsdWVzIAorICovCisvKiAjZGVmaW5lIE5FRURfS0xHRVRTQSAxICovCisKKy8qCisgKiBBUlBfU2Nhbl9OZXh0IG5lZWRzIGEgNHRoIGlmSW5kZXggYXJndW1lbnQgCisgKi8KKyNkZWZpbmUgQVJQX1NDQU5fRk9VUl9BUkdVTUVOVFMgMQorCisjZGVmaW5lIENIRUNLX1JUX0ZMQUdTIDEKKworLyoKKyAqIHRoaXMgaXMgbm90IGdvb2QgZW5vdWdoIGJlZm9yZSBmcmVlYnNkMyEgCisgKi8KKy8qICN1bmRlZiBIQVZFX05FVF9JRl9NSUJfSCAqLworCisvKgorICogVGhpcyBzZWN0aW9uIGFkZHMgdGhlIHJlbGV2YW50IGRlZmluaXRpb25zIGZyb20gZ2VuZXJpYy5oCisgKiAoYSBmaWxlIHdlIGRvbid0IGluY2x1ZGUgaGVyZSkKKyAqLworCisvKgorICogdWRwX2lucGNiIGxpc3Qgc3ltYm9sLCBlLmcuIGZvciBtaWJJSS91ZHBUYWJsZS5jCisgKi8KKyNkZWZpbmUgSU5QX05FWFRfU1lNQk9MIGlucF9uZXh0CisKKy8qCisgKiBUaGlzIHNlY3Rpb24gZGVmaW5lcyBNYWMgT1MgWCAxMC41IChhbmQgbGF0ZXIpIHNwZWNpZmljIGFkZGl0aW9ucy4KKyAqLworI2RlZmluZSBkYXJ3aW4gMTMKKyNpZm5kZWYgZGFyd2luMTMKKyMgICBkZWZpbmUgZGFyd2luMTMgZGFyd2luCisjZW5kaWYKKworLyoKKyAqIE1hYyBPUyBYIHNob3VsZCBvbmx5IHVzZSB0aGUgbW9kZXJuIEFQSSBhbmQgZGVmaW5pdGlvbnMuCisgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKKyNkZWZpbmUgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMgMQorI2VuZGlmCisKKy8qCisgKiBsb29rcyBsaWtlIHRoZSBJRlRhYmxlIHN0dWZmIHdvcmtzIGJldHRlciB0aGFuIHRoZSBtaWJJSSB2ZXJzaW9ucworICovCisgCisjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9JRlRBQkxFX1JFV1JJVEVTCisKKy8qCisgKiB1c2UgbmV3IGhvc3QgcmVzb3VyY2VzIGZpbGVzIGFzIHdlbGwKKyAqLworI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKKyNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hSU1dJTlNUX1JFV1JJVEVTCisjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1JFV1JJVEVTCisjdW5kZWYgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVAorI2RlZmluZSBORVRTTk1QX0NBTl9HRVRfRElTS19MQUJFTCAxCisKKy8qCisgKiBFbmFibGluZyB0aGlzIHJlc3RyaWN0cyB0aGUgY29tcGlsZXIgdG8gbW9zdGx5IHB1YmxpYyBBUElzLgorICovCisjaWZuZGVmIF9fQVBQTEVfQVBJX1NUUklDVF9DT05GT1JNQU5DRQorI2RlZmluZSBfX0FQUExFX0FQSV9TVFJJQ1RfQ09ORk9STUFOQ0UgMQorI2VuZGlmCisjaWZuZGVmIF9fQVBQTEVfQVBJX1VOU1RBQkxFCisjZGVmaW5lIF9fQVBQTEVfQVBJX1VOU1RBQkxFIDEKKyNlbmRpZgorCisvKgorICogRGFyd2luJ3MgdG9vbHMgYXJlIGNhcGFibGUgb2YgYnVpbGRpbmcgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyBpbiBvbmUgcGFzcy4KKyAqIEFzIGEgcmVzdWx0LCBwbGF0Zm9ybSBkZWZpbml0aW9ucyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgY29tcGlsZSB0aW1lLgorICovCisjaWZkZWYgQllURV9PUkRFUgorIyB1bmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOCisjICBkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKKyMgZW5kaWYKKyNlbmRpZgorCisvKgorICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhbiBmc3RhYi5oIGZpbGUsIGdldGZzZmlsZSBldGMuIGFsd2F5cyByZXR1cm4gbnVsbC4KKyAqIEF0IGxlYXN0LCBhcyBvZiA1LjMuCisgKi8KKyN1bmRlZiBIQVZFX0ZTVEFCX0gKKworI2RlZmluZSBTV0FQRklMRV9ESVIgIi9wcml2YXRlL3Zhci92bSIKKyNkZWZpbmUgU1dBUEZJTEVfUFJFRklYICJzd2FwZmlsZSIKKworLyoKKyAqIFRoZXNlIGFwcGFyZW50bHkgdXNlZCB0byBiZSBpbiBuZXRpbmV0L3RjcF90aW1lcnMuaCwgYnV0IHdlbnQgYXdheSBpbgorICogMTAuNC4yLiBEZWZpbmUgdGhlbSBoZXJlIHRpbCB3ZSBmaW5kIG91dCBhIHdheSB0byBnZXQgdGhlIHJlYWwgdmFsdWVzLgorICovCisjZGVmaW5lIFRDUFRWX01JTiAgICAgICAoICAxKlBSX1NMT1dIWikgICAgICAgICAvKiBtaW5pbXVtIGFsbG93YWJsZSB2YWx1ZSAqLworI2RlZmluZSBUQ1BUVl9SRVhNVE1BWCAgKCA2NCpQUl9TTE9XSFopICAgICAgICAgLyogbWF4IGFsbG93YWJsZSBSRVhNVCB2YWx1ZSAqLworCisvKgorICogQmVjYXVzZSBNYWMgT1MgWCBpcyBidWlsdCBvbiBNYWNoLCBpdCBkb2VzIG5vdCBwcm92aWRlIGEgQlNELWNvbXBhdGlibGUKKyAqIFZNIHN0YXRpc3RpY3MgQVBJLgorICovCisjZGVmaW5lIFVTRV9NQUNIX0hPU1RfU1RBVElTVElDUyAxCisKKy8qCisgKiBUaGlzIHRlbGxzIGNvZGUgdGhhdCBtYW5pcHVsYXRlcyBJUHY2IHRoYXQgdGhlIHN0cnVjdHVyZXMgYXJlIHVuaWZpZWQsCisgKiBpLmUuLCBJUHY0IGFuZCBJUHY2IHVzZSB0aGUgc2FtZSBzdHJ1Y3RzLgorICogVGhpcyBzaG91bGQgZXZlbnR1YWxseSBiZSByZXBsYWNlZCB3aXRoIGEgY29uZmlndXJlIGRpcmVjdGl2ZS4KKyAqLworLyogI2RlZmluZSBVU0VfVU5JRklFRF9JUFY2X1NUUlVDVFMgMSAqLworI3VuZGVmIFNUUlVDVF9pbjZwY2JfSEFTX2lucF92ZmxhZworCisvKgorICogdXRpbGl0eSBtYWNybyB1c2VkIGluIHNldmVyYWwgZGFyd2luIHNwZWNpZmljIGZpbGVzCisgKi8KKyNkZWZpbmUgU05NUF9DRlJlbGVhc2UoeCkgZG8geyBpZiAoeCkgeyBDRlJlbGVhc2UoeCk7IHggPSBOVUxMOyB9IH0gd2hpbGUoMCkKKworLyoKKyAqIE1hYyBPUyBYIHJ1bnMgb24gYm90aCBQUEMgYW5kIEludGVsIGhhcmR3YXJlLAorICogICB3aGljaCBoYW5kbGUgdWRwVGFibGUgaW5kZXggdmFsdWVzIGRpZmZlcmVudGx5CisgKi8KKyNpbmNsdWRlIDxUYXJnZXRDb25kaXRpb25hbHMuaD4KKyNpZmRlZiBUQVJHRVRfUlRfTElUVExFX0VORElBTgorI2RlZmluZSBVRFBfQUREUkVTU0VTX0lOX0hPU1RfT1JERVIgMQorI2VuZGlmCisKKy8qCisgKiBhcyBvZiA3LzIwMTAsIG9wZW5zc2wgb24gZGFyd2luIGRvZXMgbm90IGhhdmUgc2hhMjU2CisgKi8KKyNkZWZpbmUgT1BFTlNTTF9OT19TSEEyNTYgMQorI2RlZmluZSBPUEVOU1NMX05PX1NIQTUxMiAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW43LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW43LmgKaW5kZXggZjhmNTIxZS4uOGQ0NTU0ZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luNy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjcuaApAQCAtMTMsOCArMTMsMyBAQAogI2RlZmluZSBTV0FQRklMRV9ESVIgIi9wcml2YXRlL3Zhci92bSIKICNkZWZpbmUgU1dBUEZJTEVfUFJFRklYICJzd2FwZmlsZSIKIAotLyoKLSAqIGFzIG9mIDcvMjAxMCwgb3BlbnNzbCBvbiBkYXJ3aW4gZG9lcyBub3QgaGF2ZSBzaGEyNTYKLSAqLwotI2RlZmluZSBPUEVOU1NMX05PX1NIQTI1NiAxCi0jZGVmaW5lIE9QRU5TU0xfTk9fU0hBNTEyIDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjguaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjguaAppbmRleCBjMzgyODNlLi4xZTZkN2QzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW44LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOC5oCkBAIC02MywxNCArNjMsNiBAQAogI2VuZGlmCiAKIC8qCi0gKiBBbHRob3VnaCBEYXJ3aW4gZG9lcyBoYXZlIGEga3ZtLmggZmlsZSwga3ZtX29wZW5maWxlcyBldGMuIGFsd2F5cwotICogcmV0dXJuIG51bGwgYmVjYXVzZSAvZGV2L2ttZW0gd2FzIHJlbW92ZWQgaW4gT1MgWCAxMC40IGZvciBJbnRlbC4KLSAqLwotI3VuZGVmIEhBVkVfS1ZNX0gKLSN1bmRlZiBIQVZFX0tWTV9HRVRQUk9DUwotI3VuZGVmIEhBVkVfS1ZNX09QRU5GSUxFUwotCi0vKgogICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhbiBmc3RhYi5oIGZpbGUsIGdldGZzZmlsZSBldGMuIGFsd2F5cyByZXR1cm4gbnVsbC4KICAqIEF0IGxlYXN0LCBhcyBvZiA1LjMuCiAgKi8KQEAgLTEwMCw4ICs5MiwzIEBACiAvKiAjZGVmaW5lIFVTRV9VTklGSUVEX0lQVjZfU1RSVUNUUyAxICovCiAjdW5kZWYgU1RSVUNUX2luNnBjYl9IQVNfaW5wX3ZmbGFnCiAKLS8qCi0gKiBhcyBvZiA3LzIwMTAsIG9wZW5zc2wgb24gZGFyd2luIGRvZXMgbm90IGhhdmUgc2hhMjU2Ci0gKi8KLSNkZWZpbmUgT1BFTlNTTF9OT19TSEEyNTYgMQotI2RlZmluZSBPUEVOU1NMX05PX1NIQTUxMiAxCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmgKaW5kZXggYmNiZDA2Ny4uYmYzZDJkYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaApAQCAtOTIsMjUgKzkyLDYgQEAKICNlbmRpZgogCiAvKgotICogRGFyd2luJ3MgdG9vbHMgYXJlIGNhcGFibGUgb2YgYnVpbGRpbmcgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyBpbiBvbmUgcGFzcy4KLSAqIEFzIGEgcmVzdWx0LCBwbGF0Zm9ybSBkZWZpbml0aW9ucyBzaG91bGQgYmUgZGVmZXJyZWQgdW50aWwgY29tcGlsZSB0aW1lLgotICovCi0jaWZkZWYgQllURV9PUkRFUgotIyB1bmRlZiBXT1JEU19CSUdFTkRJQU4KLSMgaWYgQllURV9PUkRFUiA9PSBCSUdfRU5ESUFOCi0jICBkZWZpbmUgV09SRFNfQklHRU5ESUFOIDEKLSMgZW5kaWYKLSNlbmRpZgotCi0vKgotICogQWx0aG91Z2ggRGFyd2luIGRvZXMgaGF2ZSBhIGt2bS5oIGZpbGUsIGt2bV9vcGVuZmlsZXMgZXRjLiBhbHdheXMKLSAqIHJldHVybiBudWxsIGJlY2F1c2UgL2Rldi9rbWVtIHdhcyByZW1vdmVkIGNvbXBsZXRlbHkgaW4gT1MgWCAxMC41LgotICovCi0jdW5kZWYgSEFWRV9LVk1fSAotI3VuZGVmIEhBVkVfS1ZNX0dFVFBST0NTCi0jdW5kZWYgSEFWRV9LVk1fT1BFTkZJTEVTCi0KLS8qCiAgKiBBbHRob3VnaCBEYXJ3aW4gZG9lcyBoYXZlIGFuIGZzdGFiLmggZmlsZSwgZ2V0ZnNmaWxlIGV0Yy4gYWx3YXlzIHJldHVybiBudWxsLgogICogQXQgbGVhc3QsIGFzIG9mIDUuMy4KICAqLwpAQCAtMTU0LDggKzEzNSwzIEBACiAjZGVmaW5lIFVEUF9BRERSRVNTRVNfSU5fSE9TVF9PUkRFUiAxCiAjZW5kaWYKIAotLyoKLSAqIGFzIG9mIDcvMjAxMCwgb3BlbnNzbCBvbiBkYXJ3aW4gZG9lcyBub3QgaGF2ZSBzaGEyNTYKLSAqLwotI2RlZmluZSBPUEVOU1NMX05PX1NIQTI1NiAxCi0jZGVmaW5lIE9QRU5TU0xfTk9fU0hBNTEyIDEKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCBiL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAppbmRleCAxODYyZTk5Li41ZTgwYTQ1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC01NCw2ICs1NCwxOSBAQAogIyBlbmRpZgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChjeWd3aW4pCit0eXBlZGVmIEhBTkRMRSBuZXRzbm1wX3BpZF90OworI2RlZmluZSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUyBJTlZBTElEX0hBTkRMRV9WQUxVRQorI2Vsc2UKKy8qCisgKiBOb3RlOiBvbiBQT1NJWC1jb21wbGlhbnQgc3lzdGVtcywgcGlkX3QgaXMgZGVmaW5lZCBpbiA8c3lzL3R5cGVzLmg+LgorICogQW5kIGlmIHBpZF90IGhhcyBub3QgYmVlbiBkZWZpbmVkIGluIDxzeXMvdHlwZXMuaD4sIEFDX1RZUEVfUElEX1QgZW5zdXJlcworICogdGhhdCBhIHBpZF90IGRlZmluaXRpb24gaXMgcHJlc2VudCBpbiBuZXQtc25tcC1jb25maWcuaC4KKyAqLwordHlwZWRlZiBwaWRfdCBuZXRzbm1wX3BpZF90OworI2RlZmluZSBORVRTTk1QX05PX1NVQ0hfUFJPQ0VTUyAtMQorI2VuZGlmCisKICNpZiBIQVZFX05FVElORVRfSU5fSAogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4JCS8qIEZvciBkZWZpbml0aW9uIG9mIGluX2FkZHJfdCAqLwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbnN0YWxsLXNoIGIvaW5zdGFsbC1zaAppbmRleCBhNTg5N2RlLi4zZjgzY2U5IDEwMDc1NQotLS0gYS9pbnN0YWxsLXNoCisrKyBiL2luc3RhbGwtc2gKQEAgLTEsNyArMSw3IEBACiAjIS9iaW4vc2gKICMgaW5zdGFsbCAtIGluc3RhbGwgYSBwcm9ncmFtLCBzY3JpcHQsIG9yIGRhdGFmaWxlCiAKLXNjcmlwdHZlcnNpb249MjAwNi0xMi0yNS4wMAorc2NyaXB0dmVyc2lvbj0yMDEwLTAyLTA2LjE4OyAjIFVUQwogCiAjIFRoaXMgb3JpZ2luYXRlcyBmcm9tIFgxMVI1IChtaXQvdXRpbC9zY3JpcHRzL2luc3RhbGwuc2gpLCB3aGljaCB3YXMKICMgbGF0ZXIgcmVsZWFzZWQgaW4gWDExUjYgKHhjL2NvbmZpZy91dGlsL2luc3RhbGwuc2gpIHdpdGggdGhlCkBAIC0yMDAsNyArMjAwLDExIEBACiBmaQogCiBpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KLSAgdHJhcCAnKGV4aXQgJD8pOyBleGl0JyAxIDIgMTMgMTUKKyAgZG9fZXhpdD0nKGV4aXQgJHJldCk7IGV4aXQgJHJldCcKKyAgdHJhcCAicmV0PTEyOTsgJGRvX2V4aXQiIDEKKyAgdHJhcCAicmV0PTEzMDsgJGRvX2V4aXQiIDIKKyAgdHJhcCAicmV0PTE0MTsgJGRvX2V4aXQiIDEzCisgIHRyYXAgInJldD0xNDM7ICRkb19leGl0IiAxNQogCiAgICMgU2V0IHVtYXNrIHNvIGFzIG5vdCB0byBjcmVhdGUgdGVtcHMgd2l0aCB0b28tZ2VuZXJvdXMgbW9kZXMuCiAgICMgSG93ZXZlciwgJ3N0cmlwJyByZXF1aXJlcyBib3RoIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byB0ZW1wcy4KQEAgLTUxNSw1ICs1MTksNiBAQAogIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCiAjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKICMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgdGltZS1zdGFtcC10aW1lLXpvbmU6ICJVVEMiCisjIHRpbWUtc3RhbXAtZW5kOiAiOyAjIFVUQyIKICMgRW5kOgpkaWZmIC0tZ2l0IGEvbG9jYWwvTWFrZWZpbGUuaW4gYi9sb2NhbC9NYWtlZmlsZS5pbgppbmRleCBkZjgxZGIwLi5jYjg0YWZjIDEwMDY0NAotLS0gYS9sb2NhbC9NYWtlZmlsZS5pbgorKysgYi9sb2NhbC9NYWtlZmlsZS5pbgpAQCAtMTMwLDkgKzEzMCw5IEBACiAJICB0b3VjaCBmaXhwcm9jLm1hZGU7IFwKICAgICAgICAgZmkKIAotc25tcGNvbmYubWFkZTogJChzcmNkaXIpL3NubXBjb25mCitzbm1wY29uZi5tYWRlOiBzbm1wY29uZgogCWlmIHRlc3QgIngkKFBFUkwpIiAhPSAieCIgOyB0aGVuIFwKLQkgICQoUEVSTCkgLXAgLWUgJ3MlXiMhLiovcGVybC4qJSMhJChQRVJMKSU7IHMjL3Vzci9sb2NhbC9zaGFyZSMkKGRhdGFkaXIpI2c7IHMjL3Vzci9sb2NhbC9ldGMvc25tcCMkKFNOTVBDT05GUEFUSCkjZzsgcyMvdmFyL25ldC1zbm1wIyQoUEVSU0lTVEVOVF9ESVJFQ1RPUlkpI2cnICR7c3JjZGlyfS9zbm1wY29uZiA+IHNubXBjb25mLm1hZGU7IFwKKwkgICQoUEVSTCkgLXAgLWUgJ3MlXiMhLiovcGVybC4qJSMhJChQRVJMKSU7IHMjL3Vzci9sb2NhbC9zaGFyZSMkKGRhdGFkaXIpI2c7IHMjL3Vzci9sb2NhbC9ldGMvc25tcCMkKFNOTVBDT05GUEFUSCkjZzsgcyMvdmFyL25ldC1zbm1wIyQoUEVSU0lTVEVOVF9ESVJFQ1RPUlkpI2cnIHNubXBjb25mID4gc25tcGNvbmYubWFkZTsgXAogCWVsc2UgXAogCSAgdG91Y2ggc25tcGNvbmYubWFkZTsgXAogICAgICAgICBmaQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtc291cmNlLWluY2x1ZGVzLm0yaSBiL2xvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXNvdXJjZS1pbmNsdWRlcy5tMmkKaW5kZXggYjJiNDI1ZS4uOTM0MWNmOSAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtc291cmNlLWluY2x1ZGVzLm0yaQorKysgYi9sb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy1zb3VyY2UtaW5jbHVkZXMubTJpCkBAIC0xMCw2ICsxMCw3IEBACiAjIwogLyogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjIGIvbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjCmluZGV4IDQyMzUxYzkuLmQ2NjZjOWEgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYworKysgYi9sb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMKQEAgLTExOCw2ICsxMTgsMTAgQEAKIAogI2luY2x1ZGUgIiR7bmFtZX1faW50ZXJmYWNlLmgiCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGJhYnlfc3RlcHMpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShyb3dfbWVyZ2UpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjaGVja19hbGxfcmVxdWVzdHNfZXJyb3IpCisKICNpbmNsdWRlIDxjdHlwZS5oPgogCiBAZXZhbCAkbTJjX3Byb2Nlc3NpbmdfdHlwZSA9ICdpJ0AKQEAgLTMyOCw3ICszMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2NvbnRleHR9X29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtjb250ZXh0fV9vaWRfc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fQkFCWV9TVEVQIHwKLSNpZmRlZiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKKyNpZiAhKGRlZmluZWQoTkVUU05NUF9OT19XUklURV9TVVBQT1JUKSB8fCBkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZCiAjZWxzZQogQGlmICRtMmNfdGFibGVfc2V0dGFibGUgPT0gMUAKQEAgLTMzNiw3ICszNDAsNyBAQAogQGVsc2VACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZCiBAZW5kQAotI2VuZGlmIC8qIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCB8fCBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICBpZihOVUxMID09IHJlZ2luZm8pIHsKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgJHtjb250ZXh0fVxuIik7CkBAIC0zNTUsNyArMzU5LDcgQEAKICAgICBpZiggYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKICAgICAKLSNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCisjaWYgIShkZWZpbmVkKE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCkgfHwgZGVmaW5lZChORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQpKQogICAgIGlmKCBhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMgKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CiAgICAgaWYoIGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCApCkBAIC0zNzgsNyArMzgyLDcgQEAKICAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CiAgICAgaWYoIGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQgKQogICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ09NTUlUOwotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUIHx8IE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVCAqLwogICAgIAogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOwpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYyBiL2xvY2FsL21pYjJjLWNvbmYuZC9zdWJhZ2VudC5tMmMKaW5kZXggNTJhODI1OC4uNjFmYzI2ZCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYworKysgYi9sb2NhbC9taWIyYy1jb25mLmQvc3ViYWdlbnQubTJjCkBAIC0yNyw2ICsyNywxOCBAQAogQGluY2x1ZGUgZ2VuZXJpYy1zb3VyY2UtaW5jbHVkZXMubTJpQAogI2luY2x1ZGUgPHNpZ25hbC5oPgogCisvKgorICogSWYgY29tcGlsaW5nIHdpdGhpbiB0aGUgbmV0LXNubXAgc291cmNlIGNvZGUsIHRoaXMgd2lsbCB0cmlnZ2VyIHRoZSBmZWF0dXJlCisgKiBkZXRlY3Rpb24gbWVjaGFuc2ltIHRvIGVuc3VyZSB0aGUgYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MoKSBmdW5jdGlvbgorICogaXMgbGVmdCBhdmFpbGFibGUgZXZlbiBpZiAtLWVuYWJsZS1taW5pbWlhbGlzdCBpcyB0dXJuZWQgb24uICBJZiB5b3UKKyAqIGhhdmUgY29uZmlndXJlZCBuZXQtc25tcCB1c2luZyAtLWVuYWJsZS1taW5pbWlhbGlzdCBhbmQgd2FudCB0byBjb21waWxlCisgKiB0aGlzIGNvZGUgZXh0ZXJuYWxseSB0byB0aGUgTmV0LVNOTVAgY29kZSBiYXNlLCB0aGVuIHBsZWFzZSBhZGQKKyAqIC0td2l0aC1mZWF0dXJlcz0iYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MgZW5hYmxlX3N0ZGVycmxvZyIgdG8geW91cgorICogY29uZmlndXJlIGxpbmUuCisgKi8KK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZW5hYmxlX3N0ZGVycmxvZykKKwogc3RhdGljIGludCBrZWVwX3J1bm5pbmc7CiAKIHN0YXRpYyBSRVRTSUdUWVBFCmRpZmYgLS1naXQgYS9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2sgYi9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtY2hlY2sKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWE0OTg3ZQotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pbmltYWxpc3QvZmVhdHVyZS1jaGVjawpAQCAtMCwwICsxLDEyNiBAQAorIyEvYmluL3NoCisKKyMKKyMgZmVhdHVyZS1jaGVjazogVGhpcyBzY3JpcHQgbG9va3MgZm9yIGZlYXR1cmUgc3RhdGVtZW50cyBpbiBhIGZpbGUgYnkKKyMgZXhlY3V0aW5nIGEgY29tcGlsZXIgdW5kZXIgQ1BQIGFuZCBleHRyYWN0aW5nIGxpbmVzIG9mIHRoZSBmb2xsb3dpbmcKKyMgZm9ybToKKyMKKyMgbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGVzKGZvbyk6IHVzZWQgdG8gaW5kaWNhdGUgaXQgcHJvdmlkZXMgZmVhdHVyZSAiZm9vIgorIyBuZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShiYXIpOiB1c2VkIHRvIGluZGljYXRlIGl0IHJlcXVpcmVzIGZlYXR1cmUgImJhciIKKyMgbmV0c25tcF9mZWF0dXJlX3dhbnQoYmFyKTogdXNlZCB0byBpbmRpY2F0ZSBpdCB3YW50cyBmZWF0dXJlICJiYXIiCisjICAgICAgICAgICAgICAgICAgICAoYnV0IGNhbiBsaXZlIHdpdGhvdXQgaXQpCisjCisjIFVzaW5nIHRoZXNlIGxpbmVzIGl0IHRoZW4gZ2VuZXJhdGVzIGEgbGlzdCBvZiBmZWF0dXJlIHJlcXVpcmVtZW50CisjIGRlZmluZXMgaW4gImluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaCIgd2hpY2ggY2FuIHRoZW4gYmUKKyMgbG9hZGVkIGluIGxhdGVyIHBhc3NlcyBhdCBjb21waWxlIHRpbWUuCisjCisjIERlZmluZXMgcHJvZHVjZWQgd2hlbiBuZXRzbm1wX2ZlYXRyZV9yZXF1aXJlKGJhcikgaXMgcHJlc2VudDoKKyMgICAjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0JBUiAxCisjCisjIERlZmluZXMgcHJvZHVjZWQgd2hlbiBuZXRzbm1wX2ZlYXR1cmVfd2FudChiYXIpIGlzIHByZXNlbnQ6CisjICAgI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfV0FOVF9CQVIgMQorIworIyBBbmQgd2hlbiBhbGwgdGhlIGZlYXR1cmVzIGhhdmUgYmVlbiBjb2xsZWN0ZWQsIHRoZXkgYXJlIGFsc28gaW52ZXJ0ZWQgdmlhCisjIHRoZSBmZWF0dXJlLXBvc3QtY2hlY2sgc2NyaXB0OgorIworIyAgICNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9CQVJYIDEgIC8qIG5ldmVyIHJlcXVpcmVkICovCisjICAgI3VuZGVmICBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0JBUiAgICAgIC8qIHJlcXVpcmVkICovCisKKyMgVXNhZ2U6CisKKyMgZmVhdHVyZS1jaGVjayBOT1JNQUwtQ09NUElMRS1MSU5FCisKK1NFRD1zZWQKK0dSRVA9Z3JlcAorQ0M9Z2NjCitSTT1ybQorCitpZiB0ZXN0ICJ4JDEiID0gIngtLWZlYXR1cmUtZ2xvYmFsIiA7IHRoZW4KKyAgICAjIGEgZ2xvYmFsIGZpbGUgc2hvdWxkIGJlIGluY2x1ZGVkCisgICAgc2hpZnQKKyAgICBnbG9iYWw9JDEKKyAgICBzaGlmdAorZmkKKworc291cmNlZGlyPSQxCitzaGlmdAorCitzb3VyY2U9JDEKK3NoaWZ0CisKK2Rlc3RpbmF0aW9uPSQxCitzaGlmdAorCit0bXBmPSIkZGVzdGluYXRpb24uMSIKKworY29tcGlsZWxpbmU9IiRAIgorJGNvbXBpbGVsaW5lICctRE5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORz0xJyBcCisgICAgICAgICAgICAgJy1ETkVUU05NUF9NSU5JTUFMX0NPREU9MScgXAorICAgICAgICAgICAgICctRG5ldHNubXBfZmVhdHVyZV9yZXF1aXJlKFgpPVggTlNGX1JSJyBcCisgICAgICAgICAgICAgJy1EbmV0c25tcF9mZWF0dXJlX3Byb3ZpZGUoWCk9WCBOU0ZfUFAnIFwKKyAgICAgICAgICAgICAnLURuZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoWCxZKT1YLFkgTlNGX0NPJyBcCisgICAgICAgICAgICAgJy1EbmV0c25tcF9mZWF0dXJlX3dhbnQoWCk9WCBOU0ZfV1cnICRzb3VyY2UgfCBcCisgICAgJEdSRVAgTlNGXyB8ICRHUkVQIC12ICdeI2RlZmluZScgPiAkdG1wZgorCiskUk0gLWYgJGRlc3RpbmF0aW9uOwordG91Y2ggJGRlc3RpbmF0aW9uOworCisjIHByb2Nlc3MgcmVxdWlyZXMKK2ZpcnN0cmVxdWlyZT0xCitmb3IgaSBpbiBgZ3JlcCBOU0ZfUlIgJHRtcGYgfCBzZWQgJ3MvIE5TRl9SUi8vJ2AgOyBkbworICAgIGlmIHRlc3QgJGZpcnN0cmVxdWlyZSA9IDEgOyB0aGVuCisJZWNobyAiIiA+PiAkZGVzdGluYXRpb24KKwllY2hvICIvKiByZXF1aXJlZCBieSAkc291cmNlZGlyLyRzb3VyY2UgKi8iID4+ICRkZXN0aW5hdGlvbgorCWZpcnN0cmVxdWlyZT0wCisgICAgZmkKKyAgICB1cHBlcj1gZWNobyAkaSB8IHRyIGEteiBBLVpgCisgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV8kdXBwZXIgMSIgPj4gJGRlc3RpbmF0aW9uCitkb25lCisKKyMgcHJvY2VzcyBwcm92aWRlcworZmlyc3RmZWF0dXJlPTEKK2ZvciBpIGluIGBncmVwIE5TRl9QUCAkdG1wZiB8IHNlZCAncy8gTlNGX1BQLy8nYCA7IGRvCisgICAgaWYgdGVzdCAkZmlyc3RmZWF0dXJlID0gMSA7IHRoZW4KKwllY2hvICIiID4+ICRkZXN0aW5hdGlvbgorCWVjaG8gIi8qIGZlYXR1cmVzIHByb3ZpZGVkIGJ5ICRzb3VyY2VkaXIvJHNvdXJjZSAqLyIgPj4gJGRlc3RpbmF0aW9uCisJZmlyc3RmZWF0dXJlPTAKKyAgICBmaQorICAgIHVwcGVyPWBlY2hvICRpIHwgdHIgYS16IEEtWmAKKyAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9QUk9WSURFXyR1cHBlciAxIiA+PiAkZGVzdGluYXRpb24KK2RvbmUKKworIyBwcm9jZXNzIGNoaWxkcmVuCitmaXJzdGZlYXR1cmU9MQorZm9yIGkgaW4gYGdyZXAgTlNGX0NPICR0bXBmIHwgc2VkICdzLyBOU0ZfQ08vLydgIDsgZG8KKyAgICBwYXJlbnQ9YGVjaG8gJGkgfCBzZWQgJ3MvLiosLy8nYAorICAgIGNoaWxkPWBlY2hvICRpIHwgc2VkICdzLywuKi8vJ2AKKyAgICBpZiB0ZXN0ICRmaXJzdGZlYXR1cmUgPSAxIDsgdGhlbgorCWVjaG8gIiIgPj4gJGRlc3RpbmF0aW9uCisJZWNobyAiLyogZmVhdHVyZXMgcHJvdmlkZWQgYnkgJHNvdXJjZWRpci8kc291cmNlICovIiA+PiAkZGVzdGluYXRpb24KKwlmaXJzdGZlYXR1cmU9MAorICAgIGZpCisgICAgdXBwZXJjaGlsZD1gZWNobyAkY2hpbGQgfCB0ciBhLXogQS1aYAorICAgIHVwcGVycGFyZW50PWBlY2hvICRwYXJlbnQgfCB0ciBhLXogQS1aYAorICAgIGVjaG8gIiNkZWZpbmUgTkVUU05NUF9GRUFUVVJFXyR7dXBwZXJjaGlsZH1fQ0hJTERfT0ZfJHt1cHBlcnBhcmVudH0gMSIgPj4gJGRlc3RpbmF0aW9uCisgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUFJPVklERV8kdXBwZXJjaGlsZCAxIiA+PiAkZGVzdGluYXRpb24KK2RvbmUKKworIyBwcm9jZXNzIHdhbnRzCitmaXJzdGZlYXR1cmU9MQorZm9yIGkgaW4gYGdyZXAgTlNGX1dXICR0bXBmIHwgc2VkICdzLyBOU0ZfV1cvLydgIDsgZG8KKyAgICBpZiB0ZXN0ICRmaXJzdGZlYXR1cmUgPSAxIDsgdGhlbgorCWVjaG8gIiIgPj4gJGRlc3RpbmF0aW9uCisJZWNobyAiLyogZmVhdHVyZXMgd2FudGVkIGJ5ICRzb3VyY2VkaXIvJHNvdXJjZSAqLyIgPj4gJGRlc3RpbmF0aW9uCisJZmlyc3RmZWF0dXJlPTAKKyAgICBmaQorICAgIHVwcGVyPWBlY2hvICRpIHwgdHIgYS16IEEtWmAKKyAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9XQU5UXyR1cHBlciAxIiA+PiAkZGVzdGluYXRpb24KK2RvbmUKKworaWYgdGVzdCAieCRnbG9iYWwiICE9ICJ4IiA7IHRoZW4KKyAgICBjYXQgJGRlc3RpbmF0aW9uID4+ICRnbG9iYWwKK2ZpCisKKworIyBjbGVhbiB1cAorIyRSTSAtZiAkdG1wZgpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzIGIvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NjAxOTEKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtbWFrZWRvY3MKQEAgLTAsMCArMSwyMjEgQEAKKyMhL3Vzci9iaW4vcGVybAorCit1c2Ugc3RyaWN0OwordXNlIElPOjpGaWxlOwordXNlIEdldG9wdDo6U3RkOworb3VyICVvcHRzID0gKFcgPT4gMik7CisKK2dldG9wdHMoJ29od1c6JywgXCVvcHRzKSB8fCB1c2FnZSgpOworCit1c2FnZSgpIGlmICgkb3B0c3snaCd9KTsKKwordXNhZ2UoKSBpZiAoJCNBUkdWICE9IDEpOworCisjIHNob3VsZCBiZSB0aGUgZmVhdHVyZS1kZXRhaWxzLmggZmlsZQorbXkgJGlucHV0ZmlsZSA9IHNoaWZ0IEBBUkdWOworbXkgJG91dHB1dGZpbGUgPSBzaGlmdCBAQVJHVjsKKworbXkgJWZlYXR1cmVzOworbXkgJXRvcDsKK215ICVmaWxlczsKK215ICRyZXFmaWxlOworCitnYXRoZXJfZGF0YSgkaW5wdXRmaWxlKTsKK2lmICgkb3B0c3sndyd9KSB7CisgICAgcHJpbnRfd2lraV9tb2RlKCRvdXRwdXRmaWxlKTsKK30gZWxzZSB7CisgICAgcHJpbnRfb3JnX21vZGUoJG91dHB1dGZpbGUpOworfQorCitzdWIgZ2F0aGVyX2RhdGEgeworICAgIG15ICgkaW5wdXRmaWxlKSA9IEBfOworCisgICAgb3BlbihJLCAkaW5wdXRmaWxlKTsKKyAgICB3aGlsZSg8ST4pIHsKKwlpZiAoLyhyZXF1aXJlZHxwcm92aWRlZHx3YW50ZWQpIGJ5ICguKikgXCovKSB7CisJICAgICRyZXFmaWxlID0gJDI7CisJfSBlbHNpZiAoL2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUFJPVklERV8oLiopIDEvKSB7CisJICAgIG15ICRsYyA9IGxjKCQxKTsKKwkgICAgZGllICJubyByZXFmaWxlIGN1cnJlbnRseSBzZXQ7IGJ1ZyEiIGlmICghZGVmaW5lZCgkcmVxZmlsZSkpOworCisJICAgIGFkZCgkbGMpOworCisJICAgIHB1c2ggQHskZmlsZXN7JHJlcWZpbGV9eydwcm92aWRlcyd9fSwgJGxjOworCSAgICBwdXNoIEB7JGZlYXR1cmVzeyRsY317J3Byb3ZpZGVkYnknfX0sICRyZXFmaWxlOworCisJfSBlbHNpZiAoL2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV8oLiopIDEvKSB7CisJICAgIG15ICRsYyA9IGxjKCQxKTsKKwkgICAgZGllICJubyByZXFmaWxlIGN1cnJlbnRseSBzZXQ7IGJ1ZyEiIGlmICghZGVmaW5lZCgkcmVxZmlsZSkpOworCisJICAgIGFkZCgkbGMpOworCisJICAgIHB1c2ggQHskZmlsZXN7JHJlcWZpbGV9eydyZXF1aXJlcyd9fSwgJGxjOworCSAgICBwdXNoIEB7JGZlYXR1cmVzeyRsY317J3JlcXVpcmVkYnknfX0sICRyZXFmaWxlOworCisJfSBlbHNpZiAoL2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfV0FOVF8oLiopIDEvKSB7CisJICAgIG15ICRsYyA9IGxjKCQxKTsKKwkgICAgZGllICJubyByZXFmaWxlIGN1cnJlbnRseSBzZXQ7IGJ1ZyEiIGlmICghZGVmaW5lZCgkcmVxZmlsZSkpOworCisJICAgIGFkZCgkbGMpOworCisJICAgIHB1c2ggQHskZmlsZXN7JHJlcWZpbGV9eyd3YW50cyd9fSwgJGxjOworCSAgICBwdXNoIEB7JGZlYXR1cmVzeyRsY317J3dhbnRlZGJ5J319LCAkcmVxZmlsZTsKKwl9IGVsc2lmICgvZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV8oLiopX0NISUxEX09GXyguKikgMS8pIHsKKwkgICAgbXkgJGNoaWxkID0gbGMoJDEpOworCSAgICBteSAkcGFyZW50ID0gbGMoJDIpOworCisJICAgIGFkZF9jaGlsZCgkY2hpbGQsICRwYXJlbnQpOworCX0KKyAgICB9Cit9CisKK3N1YiBhZGQgeworICAgIG15ICgkbmFtZSkgPSBAXzsKKyAgICBpZiAoIWV4aXN0cygkZmVhdHVyZXN7JG5hbWV9KSkgeworCSMgbmV3IGZlYXR1cmUgZW50aXJlbHksIG1hcmsgaXQgYXMgYSB0b3Agbm9kZQorCSR0b3B7JG5hbWV9ID0gMTsKKyAgICB9Cit9CisKK3N1YiBhZGRfY2hpbGQgeworICAgIG15ICgkY2hpbGQsICRwYXJlbnQpID0gQF87CisKKyAgICBhZGQoJHBhcmVudCk7CisKKyAgICBpZiAoZXhpc3RzKCR0b3B7JGNoaWxkfSkpIHsKKwkjIGl0J3Mgbm8gbG9uZ2VyIGEgdG9wIG5vZGUgaWYgaXQncyBhIGNoaWxkIG9mIHNvbWV0aGluZyBlbHNlCisJZGVsZXRlICR0b3B7JGNoaWxkfTsKKyAgICB9CisgICAgJGZlYXR1cmVzeyRwYXJlbnR9eydjaGlsZHJlbid9eyRjaGlsZH0rKzsKKworICAgICRmZWF0dXJlc3skY2hpbGR9eydwcm92aWRlZGJ5J30sICRyZXFmaWxlOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIG9yZy1tb2RlIG91dHB1dAorIworc3ViIHByaW50X29yZ19tb2RlIHsKKyAgICBteSAoJG91dHB1dGZpbGUpID0gQF87CisKKyAgICBteSAkZmggPSBuZXcgSU86OkZpbGU7CisKKyAgICBpZiAoISRmaC0+b3BlbigiPiAkb3V0cHV0ZmlsZSIpKSB7CisJZGllICJlcnJvciFcbiI7CisgICAgfQorCisgICAgZm9yZWFjaCBteSAkbm9kZSAoc29ydCBrZXlzKCV0b3ApKSB7CisJcHJpbnRfb3JnX25vZGUoJGZoLCAkbm9kZSwgIioiKTsKKyAgICB9Cit9CisKK3N1YiBwcmludF9vcmdfbm9kZSB7CisgICAgbXkgKCRmaCwgJG5vZGUsICRwcmVmaXgpID0gQF87CisKKyAgICBteSAkc3BhY2VzID0gJHByZWZpeDsKKyAgICAkc3BhY2VzID1+IHMvLi8gL2c7CisKKyAgICBwcmludCAkZmggIiRwcmVmaXggJG5vZGVcbiI7CisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydwcm92aWRlZGJ5J30pKSB7CisJcHJpbnQgJGZoICIkc3BhY2VzICsgcHJvdmlkZWQgaW4gZmlsZTogIiAuCisJICAgIGpvaW4oIiwgIiwgb3JnX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eydwcm92aWRlZGJ5J319KSkgLiAiXG4iOworICAgIH0KKyAgICBpZiAoZXhpc3RzKCRmZWF0dXJlc3skbm9kZX17J3JlcXVpcmVkYnknfSkpIHsKKwlwcmludCAkZmggIiRzcGFjZXMgKyByZXF1aXJlZCBpbiBmaWxlOiAiIC4KKwkgICAgam9pbigiLCAiLCBvcmdfbGlua19maWxlcyhAeyRmZWF0dXJlc3skbm9kZX17J3JlcXVpcmVkYnknfX0pKSAuICJcbiI7CisgICAgfQorICAgIGlmIChleGlzdHMoJGZlYXR1cmVzeyRub2RlfXsnd2FudGVkYnknfSkpIHsKKwlwcmludCAkZmggIiRzcGFjZXMgKyB3YW50ZWQgaW4gZmlsZTogIiAuCisJICAgIGpvaW4oIiwgIiwgb3JnX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eyd3YW50ZWRieSd9fSkpIC4gIlxuIjsKKyAgICB9CisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydjaGlsZHJlbid9KSkgeworCWZvcmVhY2ggbXkgJGNoaWxkIChzb3J0IGtleXMoJXskZmVhdHVyZXN7JG5vZGV9eydjaGlsZHJlbid9fSkpIHsKKwkgICAgcHJpbnRfb3JnX25vZGUoJGZoLCAkY2hpbGQsICRwcmVmaXggLiAiKiIpOworCX0KKyAgICB9Cit9CisKK3N1YiBvcmdfbGlua19maWxlcyB7CisgICAgbXkgQGZpbGVzID0gQF87CisgICAgbWFwIHsgJF8gPSAiW1tmaWxlOiRfXVskX11dIjsgfSBAZmlsZXM7CisgICAgcmV0dXJuIEBmaWxlczsKK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyB3aWtpIG91dHB1dAorIworc3ViIHByaW50X3dpa2lfbW9kZSB7CisgICAgbXkgKCRvdXRwdXRmaWxlKSA9IEBfOworCisgICAgbXkgJGZoID0gbmV3IElPOjpGaWxlOworICAgIG15ICRkZXB0aCA9IDA7CisKKyAgICBpZiAoISRmaC0+b3BlbigiPiAkb3V0cHV0ZmlsZSIpKSB7CisJZGllICJlcnJvciFcbiI7CisgICAgfQorCisgICAgcHJpbnQgJGZoICInJydUaGUgY29udGVudHMgb2YgdGhpcyBwYWdlIGlzIGF1dG8tZ2VuZXJhdGVkIGZyb20gbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLW1ha2Vkb2NzOyBkbyBub3QgZWRpdCBieSBoYW5kIChjaGFuZ2VzIHdpbGwgYmUgbG9zdCknJydcblxuIjsKKyAgICBwcmludCAkZmggIkRldGFpbHMgb2YgdGhlIGZlYXR1cmUgbWFya2luZyBzeXN0ZW0gYW5kIGhvdyBpdCBpcyB1c2VkIGNhbiBiZSBmb3VuZCBhdCBbW0ZlYXR1cmUgTWFya2luZyBhbmQgU2VsZWN0aW9uXV1cblxuIjsKKworICAgIGZvcmVhY2ggbXkgJG5vZGUgKHNvcnQga2V5cygldG9wKSkgeworCXByaW50X3dpa2lfbm9kZSgkZmgsICRub2RlLCAkZGVwdGgrMSk7CisgICAgfQorfQorCitzdWIgcHJpbnRfd2lraV9ub2RlIHsKKyAgICBteSAoJGZoLCAkbm9kZSwgJGRlcHRoKSA9IEBfOworCisgICAgbXkgJGRhdGFoZWFkZXI7CisgICAgbXkgJGRlcHRoaW5jcmVhc2UgPSAxOworCisgICAgaWYgKCRkZXB0aCA+ICRvcHRzeydXJ30pIHsKKwlwcmludCAkZmggIioiIHggKCRkZXB0aCAtICRvcHRzeydXJ30gKyAxKSAuICIgJG5vZGVcbiI7CisJJGRhdGFoZWFkZXIgPSAiKiIgeCAoJGRlcHRoIC0gJG9wdHN7J1cnfSArIDIpOworCSRkZXB0aGluY3JlYXNlKys7CisgICAgfSBlbHNlIHsKKwlwcmludCAkZmggIj0iIHggJGRlcHRoIC4gIiAkbm9kZSAiIC4gIj0iIHggJGRlcHRoIC4gIlxuIjsKKwkkZGF0YWhlYWRlciA9ICIqIjsKKyAgICB9CisKKyAgICBpZiAoZXhpc3RzKCRmZWF0dXJlc3skbm9kZX17J3Byb3ZpZGVkYnknfSkpIHsKKwlwcmludCAkZmggIiRkYXRhaGVhZGVyIHByb3ZpZGVkIGluIGZpbGU6ICIgLgorCSAgICBqb2luKCIsICIsIHdpa2lfbGlua19maWxlcyhAeyRmZWF0dXJlc3skbm9kZX17J3Byb3ZpZGVkYnknfX0pKSAuIlxuIjsKKyAgICB9CisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydyZXF1aXJlZGJ5J30pKSB7CisJcHJpbnQgJGZoICIkZGF0YWhlYWRlciByZXF1aXJlZCBpbiBmaWxlOiAiIC4KKwkgICAgam9pbigiLCAiLCB3aWtpX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eydyZXF1aXJlZGJ5J319KSkgLiJcbiI7CisgICAgfQorICAgIGlmIChleGlzdHMoJGZlYXR1cmVzeyRub2RlfXsnd2FudGVkYnknfSkpIHsKKwlwcmludCAkZmggIiRkYXRhaGVhZGVyIHdhbnRlZCBpbiBmaWxlOiAiIC4KKwkgICAgam9pbigiLCAiLCB3aWtpX2xpbmtfZmlsZXMoQHskZmVhdHVyZXN7JG5vZGV9eyd3YW50ZWRieSd9fSkpIC4gIlxuIjsKKyAgICB9CisgICAgaWYgKGV4aXN0cygkZmVhdHVyZXN7JG5vZGV9eydjaGlsZHJlbid9KSkgeworCWlmICgkZGVwdGggPj0gJG9wdHN7J1cnfSkgeworCSAgICBwcmludCAkZmggIiRkYXRhaGVhZGVyIENoaWxkcmVuOlxuIjsKKwl9CisJZm9yZWFjaCBteSAkY2hpbGQgKHNvcnQga2V5cygleyRmZWF0dXJlc3skbm9kZX17J2NoaWxkcmVuJ319KSkgeworCSAgICBwcmludF93aWtpX25vZGUoJGZoLCAkY2hpbGQsICRkZXB0aCArICRkZXB0aGluY3JlYXNlKTsKKwl9CisgICAgfQorfQorCitzdWIgd2lraV9saW5rX2ZpbGVzIHsKKyAgICBteSBAZmlsZXMgPSBAXzsKKyAgICBtYXAgeyAkXyA9ICJbaHR0cDovL25ldC1zbm1wLnN2bi5zb3VyY2Vmb3JnZS5uZXQvdmlld3ZjL25ldC1zbm1wL3RydW5rL25ldC1zbm1wLyRfP3ZpZXc9bWFya3VwICRfXSI7IH0gQGZpbGVzOworICAgIHJldHVybiBAZmlsZXM7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgaGVscCBvdXRwdXQKKyMKK3N1YiB1c2FnZSB7CisgICAgcHJpbnQgIlVzYWdlOiAkMCBbRkxBR1NdIElOUFVURklMRSBPVVRQVVRGSUxFXG5cbiI7CisgICAgcHJpbnQgIkZMQUdTOlxuIjsKKyAgICBwcmludCAiXHQtaFx0aGVscFxuIjsKKyAgICBwcmludCAiXHQtb1x0T3V0cHV0IHN0eWxlOiBPcmctTW9kZSBbZGVmYXVsdF1cbiI7CisgICAgcHJpbnQgIlx0LXdcdE91dHB1dCBzdHlsZTogd2lraVxuIjsKKyAgICBwcmludCAiXHQtVyBERVBUSFx0V2lraSBoZWFkZXIgdG8gYnVsbGV0IGxpc3QgZGVwdGggKGRlZmF1bHQgMilcbiI7CisgICAgcHJpbnQgIlxuSU5QVVQvT1VUUFVUXG4iOworICAgIHByaW50ICJcdElOUFVURklMRTpcdGxvY2F0aW9uIG9mIHRoZSBpbmNsdWRlL25ldC1zbm1wL2ZlYXR1cmUtZGV0YWlscy5oIGZpbGVcbiI7CisgICAgcHJpbnQgIlx0T1VUUFVURklMRTpcdHRoZSBmaWxlIHRvIHdyaXRlIHRoZSByZXN1bHRzIHRvXG4iOworICAgIGV4aXQ7Cit9CmRpZmYgLS1naXQgYS9sb2NhbC9taW5pbWFsaXN0L2ZlYXR1cmUtcmVtb3ZlIGIvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYWUzNDBkCi0tLSAvZGV2L251bGwKKysrIGIvbG9jYWwvbWluaW1hbGlzdC9mZWF0dXJlLXJlbW92ZQpAQCAtMCwwICsxLDEyOCBAQAorIyEvYmluL3NoCisKKyMKKyMgZmVhdHVyZS1yZW1vdmU6IHJlbW92ZXMgZmVhdHVyZXMgYnkgZGVmaW5pbmcgc3BlY2lhbCB2YXJpYWJsZXMKKyMgaW5kaWNhdGluZyBwYXJ0aWN1bGFyIGNvZGUgc2VnbWVudHMgYXJlIHVubmVlZGVkLiAgVGhpcyBpcyBkb25lIGJ5CisjIGV4YW1pbmluZyB0aGUgbGlzdCBvZiBwcm92aWRlZCBmZWF0dXJlcyBhbmQgZGVmaW5pbmcgYSBSRU1PVkUKKyMgZXF1aXZhbGVudCBpZiBubyBvdGhlciBtb2R1bGUgcmVxdWlyZWQgaXQuCisjCisjIEFyZ3VtZW50czoKKyMgICBmZWF0dXJlLXJlbW92ZSBtYWluaGVhZGVyLmggZ2xvYmFsaGVhZGVyLmggVEhFUkVTVAorIworIyBXaGVyZSBUSEVSRVNUIGFyZSBhIGxpc3Qgb2YgZmVhdHVyZXMgdG8gcmVtb3ZlIChkZWZhdWx0KSBvciBhZGQuCisjCisjICAgLS1hZGQgc3dpdGNoZXMgdG8gImFkZGluZyIgYW5kIC0tcmVtb3ZlIHN3aXRjaGVzIGJhY2suCisjCisjIEUuRy4KKyMgICBmZWF0dXJlLXJlbW92ZSBtYWluaGVhZGVyLmggZ2xvYmFsaGVhZGVyLmggb2lkX3N0YXNoIC0tYWRkIGNvbnRhaW5lcl9udWxsCisjCitDUD1jcAorCitmZWF0dXJlaGVhZGVyPSIkMSIKK2ZlYXR1cmVoZWFkZXJpbj0iJDEuaW4iCitmZWF0dXJlaGVhZGVyZ2xvYmFsPSIkMiIKK3NoaWZ0CitzaGlmdAorCithcmd1bWVudHR5cGU9Ii0tcmVtb3ZlIgorcmVtb3ZldGhlc2U9IiIKK2FkZHRoZXNlPSIiCisKK3doaWxlIHRlc3QgIngkMSIgIT0gIngiIDsgZG8KKyAgICB1Yz1gZWNobyAkMSB8IHRyIGEteiBBLVpgCisgICAgY2FzZSAkMSBpbgorCS0tKikKKwkgICAgYXJndW1lbnR0eXBlPSIkMSIKKwkgICAgOzsKKworCSopCisJICAgIGlmIHRlc3QgIngkYXJndW1lbnR0eXBlIiA9ICJ4LS1yZW1vdmUiIDsgdGhlbgorCQlyZW1vdmV0aGVzZT0iJHJlbW92ZXRoZXNlICR1YyIKKwkgICAgZWxzZQorCQlhZGR0aGVzZT0iJGFkZHRoZXNlICR1YyIKKwkgICAgZmkKKwkgICAgOzsKKyAgICBlc2FjCisgICAgc2hpZnQKK2RvbmUKKworZWNobyAiIiA+ICRmZWF0dXJlaGVhZGVyCitlY2hvICIvKiBUaGUgZm9sbG93aW5nIGRlZmluZXMgZmVhdHVyZXMgdGhhdCBOZXQtU05NUCBIQVMgb3IgaGFzIFJFTU9WRWQgKi8iID4+ICRmZWF0dXJlaGVhZGVyCisKK2hhc2xpc3Q9IiAiCisKK2ZvciBpIGluIGBncmVwIE5FVFNOTVBfRkVBVFVSRV9QUk9WSURFXyAkZmVhdHVyZWhlYWRlcmluIHwgc2VkICdzLy4qRkVBVFVSRV9QUk9WSURFXy8vO3MvIC4qLy8nYCA7IGRvCisgICAgIworICAgICMgSWYgd2Ugd2VyZSBzcGVjaWZpY2FsbHkgYXNrZWQgdG8gaW5jbHVkZSBpdCwgdGhlbiBkbyBzbworICAgICMKKyAgICBpZiBlY2hvICIgJGFkZHRoZXNlICIgfCBncmVwICIgJHtpfSAiID4gL2Rldi9udWxsIDsgdGhlbgorICAgICAgICMgVGhlIHVzZXIgcmVxdWlyZWQgaXQgOyByZXBvcnQgd2UncmUgdXNpbmcgaXQKKwllY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9IQVNfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKwloYXNsaXN0PSIke2hhc2xpc3R9JHtpfSAiCisKKyAgICAjCisgICAgIyBjaGVjayB0byBzZWUgaWYgc29tZXRoaW5nIHJlcXVyaWVkIGl0CisgICAgIworICAgIGVsaWYgZ3JlcCAiTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfJHtpfSAiICRmZWF0dXJlaGVhZGVyZ2xvYmFsID4gL2Rldi9udWxsIDsgdGhlbgorCSMgaWYgc28sIG1ha2Ugc3VyZSB3ZSB3ZXJlbid0IGFza2VkIHRvIHJlbW92ZSBpdAorICAgICAgIAlpZiBlY2hvICAiICRyZW1vdmV0aGVzZSAifCBncmVwICIgJGkgIiA+IC9kZXYvbnVsbCA7IHRoZW4KKyAgICAgICAJICAgIyBVaCBvaDsgdGhleSBzcGVjaWZpY2FsbHkgd2FudGVkIGl0IHJlbW92ZWQgYnV0IGl0IHdhcyByZXF1aXJlZAorCSAgIGVjaG8gIkZlYXR1cmUgRXJyb3I6IgorICAgICAgIAkgICBlY2hvICIgRmVhdHVyZSAnJGknIHdhcyBhc2tlZCB0byBiZSByZW1vdmVkIGJ1dCBzb21ldGhpbmcgcmVxdWlyZWQgaXQiCisgICAgICAgCSAgIGVjaG8gIiBTZWUgdGhlICRmZWF0dXJlaGVhZGVyZ2xvYmFsIGZpbGUgZm9yIGRlcGVuZGVuY3kgZGV0YWlscyIKKwkgICBlY2hvICIiCisgICAgICAgICAgIHJtIC1mICRmZWF0dXJlaGVhZGVyCisgICAgICAgCSAgIGV4aXQgMQorICAgICAgIAlmaQorCisgICAgICAgCSMgc29tZXRoaW5nIHJlcXVpcmVkIGl0IDsgcmVwb3J0IHdlJ3JlIHVzaW5nIGl0CisgICAgICAgCWVjaG8gIiNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX0hBU18kaSAxIiA+PiAkZmVhdHVyZWhlYWRlcgorCWhhc2xpc3Q9IiR7aGFzbGlzdH0ke2l9ICIKKworICAgICMKKyAgICAjIGNoZWNrIHRvIHNlZSBpZiBzb21ldGhpbmcgIndhbnRlZCIgaXQKKyAgICAjCisgICAgZWxpZiBncmVwICJORVRTTk1QX0ZFQVRVUkVfV0FOVF8ke2l9ICIgJGZlYXR1cmVoZWFkZXJnbG9iYWwgPiAvZGV2L251bGwgOyB0aGVuCisJICAgIyBub3RoaW5nIHJlcXVpcmVkIGl0LCBidXQgc29tZXRoaW5nICJ3YW50ZWQiIGl0CisKKwkgICAjIGNoZWNrIHRvIG1ha2Ugc3VyZSB3ZSB3ZXJlbid0IGFza2VkIHRvIGV4Y2x1ZGUgaXQKKyAgICAgICAgICAgaWYgZWNobyAiICRyZW1vdmV0aGVzZSAiIHwgZ3JlcCAiICRpICIgPiAvZGV2L251bGwgOyB0aGVuCisgICAgICAgICAgICAgICAjIHdlIHdlcmUgc3BlY2lmaWNhbGx5IGFza2VkICpub3QqIHRvIHVzZSB0aGlzIGZlYXR1cmUKKyAgICAgICAgICAgICAgIGVjaG8gIiNkZWZpbmUgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV8kaSAxIiA+PiAkZmVhdHVyZWhlYWRlcgorICAgICAgICAgICBlbHNlCisJICAgICAgICMgc29tZXRoaW5nIHdhbnRlZCBpdCwgc28gd2UnbGwgaW5jbHVkZSBpdAorCSAgICAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9IQVNfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKwkgICAgICAgaGFzbGlzdD0iJHtoYXNsaXN0fSR7aX0gIgorICAgICAgICAgICBmaQorCisKKyAgICAjCisgICAgIyBjaGVjayB0byBzZWUgaWYgc29tZXRoaW5nIHJlcXVpcmVkIGEgcGFyZW50CisgICAgIworICAgIGVsaWYgZWdyZXAgTkVUU05NUF9GRUFUVVJFXyR7aX1fQ0hJTERfT0YgJGZlYXR1cmVoZWFkZXJnbG9iYWwgPiAvZGV2L251bGwgOyB0aGVuCisJcGFyZW50bmFtZXM9YGVncmVwIE5FVFNOTVBfRkVBVFVSRV8ke2l9X0NISUxEX09GICRmZWF0dXJlaGVhZGVyZ2xvYmFsIHwgc2VkICdzLy4qQ0hJTERfT0ZfLy87cy8gLiovLzsnYAorCisJZm91bmRvbmU9MAorCWZvciBwYXJlbnRuYW1lIGluICRwYXJlbnRuYW1lcyA7IGRvCisgICAJICAgICMgaWYgdGhlIHBhcmVudCB3YXMgZGVzaXJlZCwgdGhlbiB3ZSBhcmUgdG9vOgorCSAgICAKKwkgICAgaWYgdGVzdCAkZm91bmRvbmUgPSAwIDsgdGhlbgorCQlpZiBlZ3JlcCAiTkVUU05NUF9GRUFUVVJFX0hBU18ke3BhcmVudG5hbWV9ICIgJGZlYXR1cmVoZWFkZXIgPiAvZGV2L251bGwgOyB0aGVuCisgICAgICAgCQkgICAgZWNobyAiI2RlZmluZSBORVRTTk1QX0ZFQVRVUkVfSEFTXyRpIDEiID4+ICRmZWF0dXJlaGVhZGVyCisJCSAgICBoYXNsaXN0PSIke2hhc2xpc3R9JHtpfSAiCisJCSAgICBmb3VuZG9uZT0xCisJCWZpCisJICAgIGZpCisgICAgICAgIGRvbmUKKwlpZiB0ZXN0ICRmb3VuZG9uZSA9IDAgOyB0aGVuCisgICAgCSAgICBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKwlmaQorCisgICAgIworICAgICMgbm8gb25lIHJlcXVpcmVkIG9yIHdhbnRlZCBpdCAtLSBpdCBpcyBzYWZlIHRvIHJlbW92ZSBpdAorICAgICMKKyAgICBlbHNlCisgICAgCSBlY2hvICIjZGVmaW5lIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfJGkgMSIgPj4gJGZlYXR1cmVoZWFkZXIKKyAgICBmaQorZG9uZQorCmRpZmYgLS1naXQgYS9sb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGUgYi9sb2NhbC9taW5pbWFsaXN0L2ZpbmQtdW51c2VkLWNvZGUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODllM2M4YwotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZQpAQCAtMCwwICsxLDExNyBAQAorIyEvdXNyL2Jpbi9wZXJsCisKKyMgc2VhcmNoZXMgZm9yIC5vIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgZXhhbWluZXMgZWFjaCBmb3IKKyMgZGVmaW5lZCBmdW5jdGlvbnMgKFQpIGFuZCB1bmRlZmluZWQgcmVmZXJlbmNlcyAoVSkgYW5kIGxpc3RzCisjIGFueXRoaW5nIHRoYXQgaXNuJ3QgcmVxdWlyZWQgYnkgc29tZXRoaW5nIGVsc2Ugb3IgaXRzZWxmCisKKyMgdXNlZnVsIGNhbGxpbmcgc29ydGVkIGJ5IGZpbGU6CisjICAgcGVybCBtaW5pbWFsL2ZpbmQtdW51c2VkLWNvZGUgfCBzb3J0IAorCit1c2UgRmlsZTo6RmluZDsKK3VzZSBEYXRhOjpEdW1wZXI7Cit1c2Ugc3RyaWN0OwordXNlIEdldG9wdDo6R1VJOjpMb25nOworCitteSAlb3B0czsKKworTG9jYWxHZXRPcHRpb25zKFwlb3B0cywKKwkJWydnfGdyZXAnLCAgICAgICJydW4gZmluZC9ncmVwIHRvIGxvb2sgZm9yIHN0cmluZyB1c2FnZXMiXSwKKyAgICApOworCitteSAoQGZpbGVzLCAlZGVmaW5lZCwgJWxvb2tpbmdmb3IpOworCitmaW5kKFwmZG90X29zLCAiLiIpOworCitmb3JlYWNoIG15ICRmaWxlIChAZmlsZXMpIHsKKyAgICBjb2xsZWN0X2Zyb21fZmlsZSgkZmlsZSk7Cit9CisKKworaWYgKCQjQVJHViA+IC0xKSB7CisgICAgcHJpbnQgIkR1bXBpbmcgZm91bmQgc3ltYm9sIHVzYWdlczpcblxuIjsKKyAgICBmb3JlYWNoIG15ICRhcmcgKEBBUkdWKSB7CisJcHJpbnQgIiRhcmc6XG4iOworCXByaW50ICIgICIsIGpvaW4oIlxuICAiLCBAeyRkZWZpbmVkeyRhcmd9eyd1c2FnZXMnfX0pLCJcblxuIjsKKyAgICB9CisgICAgZXhpdDsKK30KKworZm9yZWFjaCBteSAkZnVuY3Rpb24gKHNvcnQgeyAkZGVmaW5lZHskYX17J3NvdXJjZSd9IGNtcCAkZGVmaW5lZHskYn17J3NvdXJjZSd9IH0ga2V5cyglZGVmaW5lZCkpIHsKKyAgICBpZiAoZXhpc3RzKCRkZWZpbmVkeyRmdW5jdGlvbn17J3NvdXJjZSd9KSAmJgorCSFleGlzdHMoJGRlZmluZWR7JGZ1bmN0aW9ufXsndXNhZ2VzJ30pKSB7CisJaWYgKGNoZWNrX2Zvcl9vbmNlX29ubHkoJGRlZmluZWR7JGZ1bmN0aW9ufXsnc291cmNlJ30sICRmdW5jdGlvbikpIHsKKwkgICAgcHJpbnRmKCIlLTM4cyAlLTM4c1xuIiwgJGRlZmluZWR7JGZ1bmN0aW9ufXsnc291cmNlJ30sICRmdW5jdGlvbik7CisJICAgIGlmICgkb3B0c3snZyd9KSB7CisJCW9wZW4oUCwiZmluZCAuIC1yZWdleCAnLiouXFwoY1xcfHhzXFwpJyB8IHhhcmdzIGdyZXAgLW4gJGZ1bmN0aW9ufCIpOworCQl3aGlsZSg8UD4pIHsKKwkJICAgIHByaW50ICIgICRfIjsKKwkJfQorCQljbG9zZShQKTsKKwkJcHJpbnQgIlxuIjsKKwkgICAgfQorCX0KKyAgICB9Cit9CisKK3N1YiBkb3Rfb3MgeworICAgIHJldHVybiBpZiAoIS9cLm8kLyk7CisgICAgcmV0dXJuIGlmICgkRmlsZTo6RmluZDo6bmFtZSA9fiAvXC8ubGlic1wvLyk7CisjICAgIHJldHVybiBpZiAoJEZpbGU6OkZpbmQ6Om5hbWUgPX4gL1wvKHBlcmx8cHl0aG9uKVwvLyk7CisgICAgcHVzaCBAZmlsZXMsICRGaWxlOjpGaW5kOjpuYW1lOworfQorCitzdWIgY29sbGVjdF9mcm9tX2ZpbGUgeworICAgIG15ICRmaWxlID0gc2hpZnQ7CisjICAgIHByaW50ICJzZWFyY2hpbmcgJGZpbGVcbiI7CisgICAgb3BlbihJLCJubSAkZmlsZXwiKTsKKyAgICB3aGlsZSg8ST4pIHsKKwkkZGVmaW5lZHskMX17J3NvdXJjZSd9ID0gJGZpbGUgaWYgKC8gVCAoLiopLyk7CisJcHVzaCBAeyRkZWZpbmVkeyQxfXsndXNhZ2VzJ319LCAkZmlsZSBpZiAoLyBVICguKikvKTsKKyAgICB9CisgICAgY2xvc2UoSSk7Cit9CisJCitzdWIgY2hlY2tfZm9yX29uY2Vfb25seSB7CisgICAgbXkgKCRmaWxlLCAkZnVuY3Rpb24pID0gQF87CisgICAgJGZpbGUgPX4gcy9cLm8vLmMvOworICAgIG9wZW4oSSwgJGZpbGUpOworICAgIG15ICR1c2FnZXMgPSAwOworICAgIHdoaWxlKDxJPikgeworCWlmICgvJGZ1bmN0aW9uLykgeworCSAgICAkdXNhZ2VzKys7CisJfQorCWlmICgkdXNhZ2VzID4gMSkgeworCSAgICBjbG9zZShJKTsKKwkgICAgcmV0dXJuIDA7CisJfQorICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworCitzdWIgTG9jYWxHZXRPcHRpb25zIHsKKyAgICBpZiAoZXZhbCB7cmVxdWlyZSBHZXRvcHQ6OkdVSTo6TG9uZzt9KSB7CisgICAgICAgIGltcG9ydCBHZXRvcHQ6OkdVSTo6TG9uZzsKKyAgICAgICAgIyBvcHRpb25hbCBjb25maWd1cmUgY2FsbAorICAgICAgICBHZXRvcHQ6OkdVSTo6TG9uZzo6Q29uZmlndXJlKHF3KGRpc3BsYXlfaGVscCBub19pZ25vcmVfY2FzZSBjYXB0dXJlX291dHB1dCBub19ndWkgYWxsb3dfemVybykpOworICAgICAgICByZXR1cm4gR2V0T3B0aW9ucyhAXyk7CisgICAgfQorICAgIHJlcXVpcmUgR2V0b3B0OjpMb25nOworICAgIGltcG9ydCBHZXRvcHQ6Okxvbmc7CisgICAgIyBvcHRpb25hbCBjb25maWd1cmUgY2FsbAorICAgIEdldG9wdDo6TG9uZzo6Q29uZmlndXJlKHF3KGRpc3BsYXlfaGVscCBub19pZ25vcmVfY2FzZSBjYXB0dXJlX291dHB1dCkpOworICAgIEdldE9wdGlvbnMoTG9jYWxPcHRpb25zTWFwKEBfKSk7Cit9CisKK3N1YiBMb2NhbE9wdGlvbnNNYXAgeworICAgIG15ICgkc3QsICRjYiwgQG9wdHMpID0gKChyZWYoJF9bMF0pIGVxICdIQVNIJykgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoMSwgMSwgJF9bMF0pIDogKDAsIDIpKTsKKyAgICBmb3IgKG15ICRpID0gJHN0OyAkaSA8PSAkI187ICRpICs9ICRjYikgeworICAgICAgICBpZiAoJF9bJGldKSB7CisgICAgICAgICAgICBuZXh0IGlmIChyZWYoJF9bJGldKSBlcSAnQVJSQVknICYmICRfWyRpXVswXSA9fiAvXkdVSTovKTsKKyAgICAgICAgICAgIHB1c2ggQG9wdHMsICgocmVmKCRfWyRpXSkgZXEgJ0FSUkFZJykgPyAkX1skaV1bMF0gOiAkX1skaV0pOworICAgICAgICAgICAgcHVzaCBAb3B0cywgJF9bJGkrMV0gaWYgKCRjYiA9PSAyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gQG9wdHM7Cit9CmRpZmYgLS1naXQgYS9sb2NhbC9taW5pbWFsaXN0L2lnbm9yZS5yZWdleHAgYi9sb2NhbC9taW5pbWFsaXN0L2lnbm9yZS5yZWdleHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA5Yjk5YwotLS0gL2Rldi9udWxsCisrKyBiL2xvY2FsL21pbmltYWxpc3QvaWdub3JlLnJlZ2V4cApAQCAtMCwwICsxLDQgQEAKK34kCisjJAorXC8uIworXC8uc3ZuXC8KZGlmZiAtLWdpdCBhL2xvY2FsL21pbmltYWxpc3QvcmVtb3ZlLXVubmVlZGVkLW1vZHVsZXMgYi9sb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFkNDU5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC9taW5pbWFsaXN0L3JlbW92ZS11bm5lZWRlZC1tb2R1bGVzCkBAIC0wLDAgKzEsMTMwIEBACisjIS9iaW4vcGVybAorCisjIHN0ZXBzOgorIyAxKSBydW4gY29uZmlndXJlCisjIDIpIHBlcmwgbG9jYWwvbWluaW1hbGlzdC9yZW1vdmUtdW5uZWVkZWQtbW9kdWxlcworIyAzKSBtYWtlIGRlcGVuZAorIyA0KSBtYWtlCisKK3VzZSBGaWxlOjpGaW5kOwordXNlIERhdGE6OkR1bXBlcjsKK3VzZSBzdHJpY3Q7CisKK215ICVleGNlcHRpb25zID0gcXcoCisgICBhZ2VudC9taWJncm91cC9taWJkZWZzLmggICAgICAgICAgICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL3N0cnVjdC5oICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmggICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5oIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luaXRzLmggICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfZG90X2NvbmYuaCAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9zaHV0ZG93bi5oICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfaW5jbHVkZXMuaAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9pbml0cy5oICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvYWdlbnRfbW9kdWxlX2RvdF9jb25mLmgJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfc2h1dGRvd24uaAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuYyAgICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMgICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oICAgICAgCSAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaCAgICAgICAJICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmggICAgIAkgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9ocl9maWxlc3lzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGVmcy5oICAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvaWZUYWJsZV9kZWZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisgICBhZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaCAgICAgICAgICAgICAgICAgICAgICAgIDEKKyAgIGFnZW50L21pYmdyb3VwL21udHR5cGVzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuaCAgICAgICAgICAgICAgICAgICAgICAgICAxCispOworCitteSAlb3B0czsKKworTG9jYWxHZXRPcHRpb25zKFwlb3B0cywKKwkJWydufGRyeS1ydW4nLCAgICAgICJEcnktcnVuLCBqdXN0IHNheSB3aGF0IHlvdSB3b3VsZCBkbyJdLAorCQlbJ3Z8dmVyYm9zZScsICAgICAgIlNob3cgd2hhdCBmaWxlcyBhcmUgYmVpbmcgbGVmdCB0b28iXSwKKyAgICApOworCitteSAkaW5wdXRNYWtlZmlsZSA9ICRBUkdWWzBdIHx8ICJhZ2VudC9taWJncm91cC9NYWtlZmlsZSI7CitteSAkaW5wdXREaXIgPSAkQVJHVlsxXSB8fCAiYWdlbnQvbWliZ3JvdXAiOworCitteSAkY29sbGVjdGluZyA9IDA7CitteSAoJWZpbGVzLCBAZmlsZXMpOworCitvcGVuKEksICRpbnB1dE1ha2VmaWxlKTsKK3doaWxlKDxJPikgeworICAgIGlmICgvbWliX21vZHVsZV9saXN0X2M9LykgeworCSRjb2xsZWN0aW5nID0gMTsKKyAgICB9IGVsc2lmICgkY29sbGVjdGluZykgeworCWlmICghIC9cXFxzKiQvKSB7CisJICAgICRjb2xsZWN0aW5nID0gMDsKKwl9CisJY2hvbXAoKTsKKwlzL1xcLy87CisJcy9ccyovL2c7CisJcy9cLmMvLzsKKwlwdXNoIEBmaWxlcywgImFnZW50L21pYmdyb3VwLyRfIjsKKwkkZmlsZXN7ImFnZW50L21pYmdyb3VwLyRfLmMifSA9IDE7CisJJGZpbGVzeyJhZ2VudC9taWJncm91cC8kXy5oIn0gPSAxOworICAgIH0KK30KKworZmluZChcJnJlbW92ZV9maWxlcywgJGlucHV0RGlyKTsKKworc3ViIHJlbW92ZV9maWxlcyB7CisgICAgcmV0dXJuIGlmICghL1wuW2NoXSQvKTsKKyAgICByZXR1cm4gaWYgKC9cLmgkLyk7ICMgWFhYOiB3ZSBuZWVkIHRvIGRlbGV0ZSBoZWFkZXJzIGV2ZW50dWFsbHkgdG9vCisgICAgcmV0dXJuIGlmICgvX2NvbnN0YW50cy5oLyk7CisgICAgcmV0dXJuIGlmIChleGlzdHMoJGV4Y2VwdGlvbnN7JEZpbGU6OkZpbmQ6Om5hbWV9KSk7CisKKyAgICBpZiAoIWV4aXN0cygkZmlsZXN7JEZpbGU6OkZpbmQ6Om5hbWV9KSkgeworCVVubGluaygkXywgJEZpbGU6OkZpbmQ6Om5hbWUpOworICAgIH0gZWxzaWYgKCRvcHRzeyd2J30pIHsKKwlwcmludCAiTGVhdmluZyAkRmlsZTo6RmluZDo6bmFtZVxuIjsKKyAgICB9Cit9CisKK3N1YiBVbmxpbmsgeworICAgIG15ICgkZmlsZSwgJGZ1bGxmaWxlKSA9IEBfOworICAgIHByaW50ICJSZW1vdmluZyAkZnVsbGZpbGVcbiI7CisgICAgaWYgKCEkb3B0c3snbid9KSB7CisJdW5saW5rKCRmaWxlKTsKKwlpZiAoLWYgIiRmaWxlIikgeworCSAgICBwcmludCAiKioqIEZBSUxFRCB0byByZW1vdmUgJGZpbGVcbiI7IAorCX0KKyAgICB9Cit9CisKKworc3ViIExvY2FsR2V0T3B0aW9ucyB7CisgICAgaWYgKGV2YWwge3JlcXVpcmUgR2V0b3B0OjpHVUk6Okxvbmc7fSkgeworICAgICAgICBpbXBvcnQgR2V0b3B0OjpHVUk6Okxvbmc7CisgICAgICAgICMgb3B0aW9uYWwgY29uZmlndXJlIGNhbGwKKwlteSBAZ29wdHMgPSBxdyhub19pZ25vcmVfY2FzZSBub19ndWkgYWxsb3dfemVybyk7CisJaWYgKCRHZXRvcHQ6OkdVSTo6TG9uZzo6VkVSU0lPTiA+IDAuMikgeworCSAgICBwdXNoIEBnb3B0cywgcXcoZGlzcGxheV9oZWxwIGNhcHR1cmVfb3V0cHV0KTsKKwl9CisgICAgICAgIEdldG9wdDo6R1VJOjpMb25nOjpDb25maWd1cmUoQGdvcHRzKTsKKyAgICAgICAgcmV0dXJuIEdldE9wdGlvbnMoQF8pOworICAgIH0KKyAgICByZXF1aXJlIEdldG9wdDo6TG9uZzsKKyAgICBpbXBvcnQgR2V0b3B0OjpMb25nOworICAgICMgb3B0aW9uYWwgY29uZmlndXJlIGNhbGwKKyAgICBHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZShxdyhkaXNwbGF5X2hlbHAgbm9faWdub3JlX2Nhc2UgY2FwdHVyZV9vdXRwdXQpKTsKKyAgICBHZXRPcHRpb25zKExvY2FsT3B0aW9uc01hcChAXykpOworfQorCitzdWIgTG9jYWxPcHRpb25zTWFwIHsKKyAgICBteSAoJHN0LCAkY2IsIEBvcHRzKSA9ICgocmVmKCRfWzBdKSBlcSAnSEFTSCcpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKDEsIDEsICRfWzBdKSA6ICgwLCAyKSk7CisgICAgZm9yIChteSAkaSA9ICRzdDsgJGkgPD0gJCNfOyAkaSArPSAkY2IpIHsKKyAgICAgICAgaWYgKCRfWyRpXSkgeworICAgICAgICAgICAgbmV4dCBpZiAocmVmKCRfWyRpXSkgZXEgJ0FSUkFZJyAmJiAkX1skaV1bMF0gPX4gL15HVUk6Lyk7CisgICAgICAgICAgICBwdXNoIEBvcHRzLCAoKHJlZigkX1skaV0pIGVxICdBUlJBWScpID8gJF9bJGldWzBdIDogJF9bJGldKTsKKyAgICAgICAgICAgIHB1c2ggQG9wdHMsICRfWyRpKzFdIGlmICgkY2IgPT0gMik7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIEBvcHRzOworfQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGwgYi9sb2NhbC9taW5pbWFsaXN0L3JlbW92ZWlmZGVmY29kZS5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41YTY0YzA1Ci0tLSAvZGV2L251bGwKKysrIGIvbG9jYWwvbWluaW1hbGlzdC9yZW1vdmVpZmRlZmNvZGUucGwKQEAgLTAsMCArMSwzMzMgQEAKKyMhIC91c3IvYmluL3BlcmwKKwordXNlIHN0cmljdDsKK3VzZSBGaWxlOjpDb3B5OwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIElPOjpGaWxlOwordXNlIEdldG9wdDo6U3RkOworCitteSAkSURfTk9SRUFEICA9ICJORVRTTk1QX05PX1JFQURfU1VQUE9SVCI7CitteSAkSURfTk9XUklURSA9ICJORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQiOworIyBteSAkSURfTUlOICAgICA9ICJORVRTTk1QX01JTklNQUxfQ09ERSI7CisKK215KCRTVF9PRkYsICRTVF9JRiwgJFNUX0VMU0UsICRTVF9JRk4sICRTVF9FTFNFTikgPQorICAoIm9mZiIsICJpZiIsICJlbHNlIiwgImlmbm90IiwgImVsc2Vub3QiKTsKKworbXkgJW9wdHMgICAgPSAoKTsKK215ICV0aGFzaCAgID0gKCk7CitteSAkY2Fud3JpdGUgPSAxOyAjIGN1cnJlbnQgd3JpdGUgc3RhdGUKKworbXkoJGFwcG5hbWUsJGFwcHBhdGgpID0gZmlsZXBhcnNlKCQwKTsKKworbXkgJG1pbmltYWxfaW5jbHVkZV9wYXRoID0gImluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaCI7CisKKworaWYgKCAoIWdldG9wdHMoInJ3bWk6diIsXCVvcHRzKSkgfHwgKDEgIT0gJCNBUkdWKSApIHsKKyAgcHJpbnQgIiRhcHBuYW1lIFtvcHRpb25zXSBmcm9tLWRpcmVjdG9yeSB0by1kaXJlcGN0b3J5XG4iOworICBwcmludCAiLXIgICAgIHBhcnNlIG91dCBjb2RlIHVubmVlZGVkIGJ5ICRJRF9OT1JFQUQgaWZkZWZcbiI7CisgIHByaW50ICItdyAgICAgcGFyc2Ugb3V0IGNvZGUgdW5uZWVkZWQgYnkgJElEX05PV1JJVEUgaWZkZWYgKERFRkFVTFQpXG4iOworICBwcmludCAiLW0gICAgIHBhcnNlIG91dCBjb2RlIHVubmVlZGVkIGFjY29yZGluZyBtaW5pbWFsaXN0IGlmZGVmc1xuIjsKKyAgcHJpbnQgIiAgICAgICByZXF1aXJlcyBmcm9tLWRpcmVjdG9yeSB0byBiZSB0aGUgdG9wIG9mIHRoZSBuZXQtc25tcCB0cmVlXG4iOworICBwcmludCAiICAgICAgIChUaGlzIGlzIG11bHRpcGxlIGlmZGVmcyBhdXRvIHNlbGVjdGVkIGRlcGVuZGluZ1xuIjsKKyAgcHJpbnQgIiAgICAgICAgb24gdGhlIG5ldC1zbm1wIHNvdXJjZSBjb25maWd1cmF0aW9uKVxuXG4iOworICBwcmludCAiLWkgJ2lnbm9yZS1maWxlJyAgZmlsZSBvZiBmaWxlcyB0byBpZ25vcmUgKG5vdCBjb3B5KVxuIjsKKyAgcHJpbnQgIi12ICAgICBwcmludCB2ZXJib3NlIGluZm8gdG8gc3RhbmRhcmQgb3V0XG4iOworICBkaWUgIkVycm9yOiB0d28gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyByZXF1aXJlZFxuIjsKK30KKworI2RlZmF1bHQgdG8gZXZlcnl0aGluZworaWYgKCAoIWV4aXN0cyAkb3B0c3tyfSkgJiYgKCFleGlzdHMgJG9wdHN7d30pICYmICghZXhpc3RzICRvcHRze219KSApIHsKKyAgJHRoYXNoeyIkSURfTk9XUklURSJ9ID0gIiRTVF9PRkYiOworfQorZWxzZSB7CisgICR0aGFzaHsiJElEX05PUkVBRCJ9ICA9ICIkU1RfT0ZGIiBpZiAoIGV4aXN0cyAkb3B0c3tyfSApOworICAkdGhhc2h7IiRJRF9OT1dSSVRFIn0gPSAiJFNUX09GRiIgaWYgKCBleGlzdHMgJG9wdHN7d30gKTsKK30KKworbXkgJGZyb21kaXIgPSAkQVJHVlswXTsKK215ICR0b2RpciAgID0gJEFSR1ZbMV07CisKK2lmICggISgtZSAkZnJvbWRpcikgKSB7CisgIGRpZSAiRXJyb3I6ICRhcHBuYW1lOiBmcm9tIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdDogJyRmcm9tZGlyJ1xuIjsKK30KK2lmICggISgtZCAkZnJvbWRpcikgKSB7CisgICAgZGllICJFcnJvcjogJGFwcG5hbWU6IGZyb20gZGlyZWN0b3J5LCAnJGZyb21kaXInLCBtdXN0IGJlIGEgZGlyZWN0b3J5XG4iOworfQorCitpZiAoIGV4aXN0cyAkb3B0c3ttfSApIHsKKyAgICBsb2FkX21pbmFtYWxfaWZkZWZzKCk7Cit9CisKKyMgY3JlYXRlIHNlYXJjaCBzdHJpbmcgZnJvbSB0YWdzCisjIG1pbmltYWwgbXVzdCBiZSBkb25lIGJlZm9yZSB0aGlzCitteSAkc2VhcmNoID0gam9pbiAifCIsIChrZXlzICV0aGFzaCk7CisKKworIyBjaGVjayBmb3IgYW5kIGxvYWQgaWdub3JlIGZpbGUKK215ICRpZ3N0cmluZyA9ICIiOworaWYgKCBleGlzdHMgJG9wdHN7aX0gKSB7CisgIG9wZW4gbXkoJElIKSwgIjwgJG9wdHN7aX0iIG9yCisgICAgZGllICJDb3VsZCBub3Qgb3BlbiBpZ25vcmUtZmlsZSAnJG9wdHN7aX0nOiAkISI7CisgIG15IEBpZ2xpc3QgPSA8JElIPjsKKyAgJElILT5jbG9zZSgpOworICBjaG9tcCBAaWdsaXN0OworICAkaWdzdHJpbmcgPSBqb2luICJ8IiwgQGlnbGlzdDsKKyAgJGlnc3RyaW5nID0gIigiIC4gJGlnc3RyaW5nIC4gIikiOworICBwcmludCAiaWdub3JlIHN0cmluZzogXCckaWdzdHJpbmdcJ1xuIiBpZiAoZXhpc3RzICRvcHRze3Z9KTsKK30KKworCisKK2lmICggLWUgJHRvZGlyICkgeworICBpZiAoICgoLWQgJGZyb21kaXIpICYmICEoLWQgJHRvZGlyKSkgfHwKKwkgICAoISgtZCAkZnJvbWRpcikgJiYgKC1kICR0b2RpcikpICkgeworCWRpZSAiRXJyb3I6ICRhcHBuYW1lOiBmcm9tLWRpcmVjdG9yeSBhbmQgdG8tZGlyZWN0b3J5IG11c3QgYm90aCBlaXRoZXIgYmUgYSBmaWxlIG9yIGJvdGggYmUgYSBkaXJlY3RvcnlcbiI7CisgIH0KK30KK2Vsc2UgeworICBpZiAoLWQgJGZyb21kaXIpIHsKKwlwcmludCAiV2FybmluZzogJGFwcG5hbWU6ICckdG9kaXInIGRvZXMgbm90IGV4aXN0LCBjcmVhdGluZ1xuIjsKKwlta2RpciAiJHRvZGlyIiBvcgorICAgICAgZGllICJFcnJvcjogJGFwcG5hbWU6IFVuYWJsZSB0byBjcmVhdGUgdG8tZGlyZWN0b3J5ICckdG9kaXInOiAkIVxuIjsKKyAgfQorfQorCitpZiAoLWQgJGZyb21kaXIpIHsKKyAgcGFyc2VkaXJlY3RvcnkoJGZyb21kaXIsICR0b2Rpcik7Cit9CitlbHNlIHsKKyAgcGFyc2VmaWxlKCRmcm9tZGlyLCAkdG9kaXIpOworfQorCisKKworZXhpdCgwKTsKKworCisjIFBST0NFRFVSRVMgIFBST0NFRFVSRVMgIFBST0NFRFVSRVMgIFBST0NFRFVSRVMgIFBST0NFRFVSRVMKKworCitzdWIgcGFyc2VkaXJlY3RvcnkgeworICBteSgkZmRpciwgJHRkaXIpID0gQF87CisKKyAgbXkgQGxkaXJzID0gKCk7CisgIG15ICRESDsKKyAgb3BlbmRpciBteSgkREgpLCAkZmRpciBvciBkaWUgIkNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSAnJGZkaXInOiAkISI7CisgIGlmICggISgtZSAkdGRpcikgfHwgISgtZCAkdGRpcikgKSB7CisgICAgbWtkaXIgJHRkaXIgb3IgZGllICJDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSAnJHRkaXInOiAkISI7CisgIH0KKyAgbXkgQGZsaXN0ID0gcmVhZGRpciAkREg7CisgIGNsb3NlZGlyICRESDsKKyAgIyByZW1vdmUgLiBhbmQgLi4KKyAgQGZsaXN0ID0gZ3JlcCAoISAvKF5cLiR8XlwuXC4kKS8gLCBAZmxpc3QpOworCisgIHdoaWxlIChteSAkbmFtZSA9IHNoaWZ0IEBmbGlzdCkgeworICAgIGlmICgtZCAiJGZkaXIvJG5hbWUiKSB7CisgICAgICBwdXNoIEBsZGlycywgIiRuYW1lIjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBwYXJzZWZpbGUoIiRmZGlyLyRuYW1lIiwgIiR0ZGlyLyRuYW1lIik7CisgICAgfQorICB9CisKKyAgd2hpbGUgKG15ICRuYW1lID0gc2hpZnQgQGxkaXJzKSB7CisgICAgcGFyc2VkaXJlY3RvcnkoIiRmZGlyLyRuYW1lIiwgIiR0ZGlyLyRuYW1lIikKKyAgfQorCit9ICMgcGFyc2VkaXJlY3RvcnkKKworCisjIHJldHVybnMgMSBpZiBjdXJyZW50IHN0YXRlIGZvciB0YWcgaXMgd3JpdGUsIDAgb3RoZXJ3aXNlCitzdWIgaXN3cml0ZXN0YXRlIHsKKyAgbXkgJHRhZyA9ICIiOworCisgIGZvcmVhY2ggJHRhZyAoa2V5cyAldGhhc2gpIHsKKwlpZiAoICgkdGhhc2h7JHRhZ30gZXEgIiRTVF9FTFNFIikgfHwKKwkJICgkdGhhc2h7JHRhZ30gZXEgIiRTVF9JRk4iKSApIHsKKwkgIHJldHVybigwKTsKKyAgICB9CisgIH0KKworICByZXR1cm4oMSk7Cit9ICMgaXN3cml0ZXN0YXRlCisKKworIyBDaGVjayAkbGluZSBmb3IgaWZkZWYgc3RhdGUgY2hhbmdlcyBmb3IgYWxsIG9mIHRoZSB0YWdzIGFuZCBjaGFuZ2UKKyMgc3RhdGUuCisjIElmIHRoZXJlIGlzIGEgc3RhdGUgY2hhbmdlIGVycm9yIHJldHVybiAwLCBvdGhlcndpc2UgcmV0dXJuIDE7CisKK3N1YiBjaGVja2lmZGVmIHsKKyAgbXkoJFRGLCAkbGluZSwgJGZyb21maWxlbmFtZSkgPSBAXzsKKworICBpZiAoICRsaW5lID1+IC8oI2lmZGVmfCNpZm5kZWZ8I2Vsc2V8I2VuZGlmKS4qKCRzZWFyY2gpKFxzfCR8XCopLyApIHsKKyAgICBteSAkY29wdCA9ICQxOworICAgIG15ICR0YWcgID0gJDI7CisKKwlpZiAoICRjb3B0IGVxICIjaWZkZWYiICkgeworICAgICAgaWYgKCR0aGFzaHsiJHRhZyJ9IGVxICIkU1RfT0ZGIikgeworICAgICAgICAkdGhhc2h7IiR0YWcifSA9ICIkU1RfSUYiOworICAgICAgICBwcmludCAic3RhdGUgY2hhbmdlICR0YWc6ICRTVF9PRkYgLT4gJFNUX0lGXG4iIGlmIChleGlzdHMgJG9wdHN7dn0pOworICAgICAgICAkY2Fud3JpdGUgPSBpc3dyaXRlc3RhdGUoKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBwcmludCAiRXJyb3I6ICRmcm9tZmlsZW5hbWU6IEZvdW5kICcjaWZkZWYgJHRhZycgd2l0aCBzdGF0ZSAkdGhhc2h7JHRhZ31cbiI7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNpZiAoICRjb3B0IGVxICIjaWZuZGVmIiApIHsKKyAgICAgIGlmICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX09GRiIpIHsKKyAgICAgICAgIyBiZWZvcmUgY2hhbmdpbmcgdG8gYSBub24td3JpdGUgc3RhdGUgKGlmbikgcHJpbnQgI0lGTkRFRgorICAgICAgICAjIGxpbmUsIGlmIGN1cnJlbnQgc3RhdGUgaXMgYSB3cml0ZSBzdGF0ZS4KKyAgICAgICAgcHJpbnQgJFRGICIkbGluZSIgIGlmICggJGNhbndyaXRlICk7CisgICAgICAgICR0aGFzaHsiJHRhZyJ9ID0gIiRTVF9JRk4iOworICAgICAgICBwcmludCAic3RhdGUgY2hhbmdlICR0YWc6ICRTVF9PRkYgLT4gJFNUX0lGTlxuIiBpZiAoZXhpc3RzICRvcHRze3Z9KTsKKyAgICAgICAgJGNhbndyaXRlID0gaXN3cml0ZXN0YXRlKCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcHJpbnQgIkVycm9yOiAkZnJvbWZpbGVuYW1lOiBGb3VuZCAnI2lmbmRlZiAkdGFnJyB3aXRoIHN0YXRlICR0aGFzaHskdGFnfVxuIjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfQorICAgIGVsc2lmICggJGNvcHQgZXEgIiNlbHNlIiApIHsKKyAgICAgIGlmICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0lGIikgeworICAgICAgICAjIGJlZm9yZSBjaGFuZ2luZyB0byBhIG5vbi13cml0ZSBzdGF0ZSAoZWxzZSkgcHJpbnQgI2Vsc2UKKyAgICAgICAgIyBsaW5lLCBpZiBjdXJyZW50IHN0YXRlIGlzIGEgd3JpdGUgc3RhdGUuCisgICAgICAgIHByaW50ICRURiAiJGxpbmUiICBpZiAoICRjYW53cml0ZSApOworICAgICAgICAkdGhhc2h7IiR0YWcifSA9ICIkU1RfRUxTRSI7CisgICAgICAgIHByaW50ICJzdGF0ZSBjaGFuZ2UgJHRhZzogJFNUX0lGIC0+ICRTVF9FTFNFXG4iIGlmIChleGlzdHMgJG9wdHN7dn0pOworICAgICAgICAkY2Fud3JpdGUgPSBpc3dyaXRlc3RhdGUoKTsKKyAgICAgIH0KKyAgICAgIGVsc2lmICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0lGTiIpIHsKKyAgICAgICAgJHRoYXNoeyIkdGFnIn0gPSAiJFNUX0VMU0VOIjsKKyAgICAgICAgcHJpbnQgInN0YXRlIGNoYW5nZSAkdGFnOiAkU1RfSUZOIC0+ICRTVF9FTFNFTlxuIiBpZiAoZXhpc3RzICRvcHRze3Z9KTsKKyAgICAgICAgJGNhbndyaXRlID0gaXN3cml0ZXN0YXRlKCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgcHJpbnQgIkVycm9yOiAkZnJvbWZpbGVuYW1lOiBGb3VuZCAnI2Vsc2UgKC4uLikgJHRhZycgd2l0aCBzdGF0ZSAkdGhhc2h7JHRhZ31cbiI7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNpZiAoICRjb3B0IGVxICIjZW5kaWYiICkgeworICAgICAgaWYgKCgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0VMU0UiKSAgfHwgKCR0aGFzaHsiJHRhZyJ9IGVxICIkU1RfSUYiKSB8fAorICAgICAgICAgICgkdGhhc2h7IiR0YWcifSBlcSAiJFNUX0VMU0VOIikgfHwgKCR0aGFzaHsiJHRhZyJ9IGVxICIkU1RfSUZOIikpCisgICAgICB7CisgICAgICAgIHByaW50ICJzdGF0ZSBjaGFuZ2UgJHRhZzogJHRoYXNoeyR0YWd9IC0+ICRTVF9PRkZcbiIKKyAgICAgICAgICBpZiAoZXhpc3RzICRvcHRze3Z9KTsKKyAgICAgICAgJHRoYXNoeyIkdGFnIn0gPSAiJFNUX09GRiI7CisgICAgICAgICRjYW53cml0ZSA9IGlzd3JpdGVzdGF0ZSgpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHByaW50ICJFcnJvcjogRm91bmQgJyNlbmRpZiAoLi4uKSAkdGFnJyB3aXRoIHN0YXRlICR0aGFzaHskdGFnfVxuIjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CisgICAgfQorCisgIH0gIyBmb3JlYWNoIHRhZworCisgIHJldHVybiAxOworfSAjIGNoZWNraWZkZWYKKworCitzdWIgcGFyc2VmaWxlIHsKKyAgbXkoJGZuYW1lLCAkdG5hbWUpID0gQF87CisgIG15ICRGRjsgbXkgJFRGOworICBteSBAZnJvbWZpbGUgPSAoKTsKKyAgJGNhbndyaXRlID0gMTsKKworICAjIGlnbm9yZSBmaWxlIGZvciBmaWxlIG5hbWVzCisgIGlmICggKGV4aXN0cyAkb3B0c3tpfSkgJiYgKCIkZm5hbWUiID1+ICAvJGlnc3RyaW5nLykgKSB7CisgICAgcHJpbnQgIklHTk9SSU5HICRmbmFtZVxuIiAgaWYgKCBleGlzdHMgJG9wdHN7dn0gKTsKKyAgICByZXR1cm4gMTsKKyAgfQorCisgIHByaW50ICJJbmZvOiBPcGVuaW5nICckZm5hbWUnXG4iIGlmICggZXhpc3RzICRvcHRze3Z9ICk7CisgIGlmICggIShvcGVuKCRGRiwgIjwgJGZuYW1lIikpICkgeworCXByaW50ICJXYXJuaW5nOiB1bmFibGUgdG8gb3BlbiBpbnB1dCBmaWxlLCBza2lwcGluZzogJyRmbmFtZSc6ICQhXG4iOworCXJldHVybiAwOworICB9CisKKyAgbXkgQGZyb21maWxlID0gPCRGRj47CisgICRGRi0+Y2xvc2UoKTsKKworICBpZiAoICEob3BlbigkVEYsICI+ICR0bmFtZSIpKSApIHsKKwlwcmludCAiV2FybmluZzogdW5hYmxlIHRvIG9wZW4gb3V0cHV0IGZpbGUsIHNraXBwaW5nOiAnJHRuYW1lJzogJCFcbiI7CisJcmV0dXJuIDA7CisgIH0KKyAgbXkgJG1vZGUgPSAoc3RhdCgiJGZuYW1lIikpWzJdOworICBpZiAoJG1vZGUpIHsgbXkgJHJlc3AgPSBjaG1vZCAkbW9kZSwgIiR0bmFtZSI7IH0KKworICBteSAkbGluZSAgID0gIiI7CisgIG15IEB0b3V0ICA9ICgpOworICBteSAkcmV0dmFsID0gMTsKKworICB3aGlsZSAoICRsaW5lID0gc2hpZnQgQGZyb21maWxlICkgeworICAgICMgY2hlY2sgZm9yIGFueSBpZmRlZiBzdGF0ZSBjaGFuZ2VzCisJaWYgKCAhIGNoZWNraWZkZWYoJFRGLCAkbGluZSwgJGZuYW1lKSApIHsKKyAgICAgICRGRi0+Y2xvc2UoKTsKKyAgICAgICRURi0+Y2xvc2UoKTsKKyAgICAgIGRpZSAiRXJyb3I6IHRhZyBlcnJvciBpbiBmaWxlIFwnJGZuYW1lXCcsIGV4aXRpbmdcbiI7CisgICAgfQorCisgICAgaWYgKCAkY2Fud3JpdGUgKSB7CisJICBwcmludCAkVEYgIiRsaW5lIjsKKwl9CisJZWxzZSB7CisJICBwcmludCAiSW5mbzogbm90IGNvcHlpbmc6ICRmbmFtZTogJGxpbmUiIGlmICggZXhpc3RzICRvcHRze3Z9ICk7CisgICAgfQorCisgIH0KKworICBpZiAoISAkY2Fud3JpdGUpIHsKKyAgICAgIHByaW50ICJFbmQgb2YgJGZuYW1lIHJlYWNoZWQgYW5kIHdlJ3JlIG5vdCByZXNldCBpbnRvICdjYW53cml0ZScgc3RhdGVcbiI7CisgIH0KKyAgJFRGLT5jbG9zZSgpOworCisgIHJldHVybiAkcmV0dmFsOworfSAjIHBhcnNlZmlsZQorCisKKyMgbm90ZSwgZnJvbWRpciBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2hlY2tlZCB0byBleGlzdCBhbmQgYmUgYQorIyBkaXJlY3RvcnkKK3N1YiBsb2FkX21pbmFtYWxfaWZkZWZzIHsKKyAgICBteSBAZmlsZWxpc3QgPSAoKTsKKyAgICBteSAkTUY7CisgICAgCisgICAgaWYgKCAhKG9wZW4oJE1GLCAiPCAkZnJvbWRpci8kbWluaW1hbF9pbmNsdWRlX3BhdGgiKSkgKSB7CisgICAgICAgIGRpZSAiVW5hYmxlIHRvIG9wZW4gbWFpbiBtaW5pbWFsIGZlYXR1cmUgZmlsZTogJyRmcm9tZGlyLyRtaW5pbWFsX2luY2x1ZGVfcGF0aCdcbiI7CisgICAgfQorICAgIG15ICRsaW5lOworICAgICMgc2tpcCBwcmVjZWRpbmcgbGluZXMKKyAgICB3aGlsZSAoICgkbGluZSA9IDwkTUY+KSAmJgorICAgICAgICAgICAgKCRsaW5lICF+IC9eI2Vsc2UuKk5FVFNOTVBfRkVBVFVSRV9DSEVDS0lORy8gKSApIHsKKyAgICB9CisgICAgIyBncmFiIHRoZSBmZXRhdXJlIC5oIGZpbGVzCisgICAgd2hpbGUgKCAoJGxpbmUgPSA8JE1GPikgJiYKKyAgICAgICAgICAgICgkbGluZSAhfiAvXiNlbmRpZi4qTkVUX1NOTVBfRkVBVFVSRV9DSEVDS0lORy8pICkgeworICAgICAgICBpZiAoJGxpbmUgPX4gL2luY2x1ZGUuKjwoLiouaCk+LykgeworICAgICAgICAgICAgcHVzaCBAZmlsZWxpc3QsICQxOworICAgICAgICB9CisgICAgfQorCisgICAgY2xvc2UoJE1GKTsKKworICAgIHdoaWxlIChteSAkZm5hbWUgPSBzaGlmdCBAZmlsZWxpc3QpIHsKKyAgICAgICAgaWYgKCAhKCAtZSAiJGZyb21kaXIvaW5jbHVkZS8kZm5hbWUiICkgKSAgeworICAgICAgICAgICAgcHJpbnQgIldhcm46IGZlYXR1cmUgZmlsZSBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmc6ICckZnJvbWRpci9pbmNsdWRlLyRmbmFtZSciOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoICEob3BlbigkTUYsICI8ICRmcm9tZGlyL2luY2x1ZGUvJGZuYW1lIikpICkgeworICAgICAgICAgICAgZGllICJVbmFibGUgdG8gb3BlbiBtaW5pbWFsIGZlYXR1cmUgZmlsZTogJyRmcm9tZGlyL2luY2x1ZGUvJGZuYW1lJ1xuIjsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoICgkbGluZSA9IDwkTUY+KSApIHsKKyAgICAgICAgICAgIGlmICggJGxpbmUgPX4gL14jZGVmaW5lLiooTkVUU05NUF9GRUFUVVJFX1JFTU9WRVteIF0rKSAvICkgeworICAgICAgICAgICAgICAgICR0aGFzaHsiJDEifSA9ICRTVF9PRkY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2xvc2UoJE1GKTsKKyAgICB9CisgICAgICAgIAorfSAjIGxvYWRfbWluYW1hbF9pZmRlZnMKKworCisKKwpkaWZmIC0tZ2l0IGEvbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHMgYi9sb2NhbC9taW5pbWFsaXN0L3NpemV0ZXN0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWNkNjU0Ci0tLSAvZGV2L251bGwKKysrIGIvbG9jYWwvbWluaW1hbGlzdC9zaXpldGVzdHMKQEAgLTAsMCArMSwzNTkgQEAKKyMhL3Vzci9iaW4vcGVybAorCit1c2Ugc3RyaWN0OwordXNlIERhdGE6OkR1bXBlcjsKK3VzZSBHZXRvcHQ6OlN0ZDsKK3VzZSBJTzo6RmlsZTsKK291ciAlb3B0cyA9IChkID0+ICdzaXplLXRlc3RzJyk7CisKKyMgZGVmYXVsdCBhcmd1bWVudHMgZ28gaGVyZQorbXkgQHNldHMgPQorICAgICh7CisJIndpdGgtZGVmYXVsdHMiID0+ICcnLAorICAgICB9KTsKKworbXkgJWJhc2VfYXJncyA9ICV7JHNldHNbMF19OworbXkgKCRiYXNlbmFtZSwgJGJhc2VudW0pOworCitnZXRvcHRzKCd0OmhsY0Q6bmo6bzplYjpUJywgXCVvcHRzKSB8fCB1c2FnZSgpOworCiskb3B0c3snaid9ID0gIi1qJG9wdHN7an0iIGlmIChleGlzdHMoJG9wdHN7J2onfSkpOworCit1c2FnZSgpIGlmICgkb3B0c3snaCd9KTsKKworbXkgQGFyZ3VtZW50c2V0cyA9CisgICAgKAorICAgICB7CisJIHRpdGxlID0+ICdzZWN1cml0eS10eXBlcycsCisJIGFyZ3VtZW50cyA9PgorCSB7CisJICAgICB1c20gPT4geworCQkgJ3dpdGgtc2VjdXJpdHktbW9kdWxlcycgPT4gJ3VzbScsCisJICAgICB9LAorCSAgICAgZHRsc2FuZHRscyA9PiB7CisJCSAnd2l0aC1zZWN1cml0eS1tb2R1bGVzJyAgICAgPT4gJ3RzbScsCisJCSAnd2l0aC1vdXQtc2VjdXJpdHktbW9kdWxlcycgPT4gJ3VzbScsCisJCSAnd2l0aC10cmFuc3BvcnRzJyAgICAgICAgICAgPT4gJ0RUTFNVRFAgVExTVENQJywKKwkJICd3aXRoLW1pYi1tb2R1bGVzJyAgICAgICAgICA9PiAndGxzdG0tbWliIHRzbS1taWInCisJICAgICB9LAorCSAgICAgdXNtYW5kZHRsc2FuZHRscyA9PiB7CisJCSAnd2l0aC1zZWN1cml0eS1tb2R1bGVzJyAgICAgPT4gJ3RzbSB1c20nLAorCQkgJ3dpdGgtdHJhbnNwb3J0cycgICAgICAgICAgID0+ICdEVExTVURQIFRMU1RDUCcsCisJCSAnd2l0aC1taWItbW9kdWxlcycgICAgICAgICAgPT4gJ3Rsc3RtLW1pYiB0c20tbWliJworCSAgICAgfQorCSB9CisgICAgIH0sCisgICAgIHsKKwkgdGl0bGUgPT4gJ21pbmltYWxpc3QnLAorCSBhcmd1bWVudHMgPT4KKwkgeyAKKwkgICAgIG1pbmltYWwgPT4geworCQkgJ2VuYWJsZS1taW5pbWFsaXN0JyAgICA9PiAnJywKKwkgICAgIH0sCisJICAgICAnbm90LW1pbmltYWwnID0+IHsKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdtaWItbG9hZGluZycsCisJIGFyZ3VtZW50cyA9PgorCSB7IAorCSAgICAgJ3dpdGhvdXQtbWliLWxvYWRpbmcnID0+IHsKKwkJICdkaXNhYmxlLW1pYi1sb2FkaW5nJyAgICA9PiAnJywKKwkgICAgIH0sCisJICAgICAnd2l0aC1taWItbG9hZGluZycgPT4geworCSAgICAgfQorCSB9CisgICAgIH0sCisgICAgIHsKKwkgdGl0bGUgPT4gJ2RlYnVnZ2luZycsCisJIGFyZ3VtZW50cyA9PgorCSB7IAorCSAgICAgJ3dpdGhvdXQtZGVidWdnaW5nJyA9PiB7CisJCSAnZGlzYWJsZS1kZWJ1Z2dpbmcnICAgID0+ICcnLAorCSAgICAgfSwKKwkgICAgICd3aXRoLWRlYnVnZ2luZycgPT4geworCSAgICAgfQorCSB9CisgICAgIH0sCisgICAgIHsKKwkgdGl0bGUgPT4gJ2xvZ2dpbmcnLAorCSBhcmd1bWVudHMgPT4KKwkgeyAKKwkgICAgICd3aXRob3V0LWxvZ2dpbmcnID0+IHsKKwkJICd3aXRoLW91dC1mZWF0dXJlcycgICAgPT4gJ2xvZ2dpbmcnLAorCSAgICAgfSwKKwkgICAgICd3aXRoLWxvZ2dpbmcnID0+IHsKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdhZ2VudC1taWJzJywKKwkgYXJndW1lbnRzID0+CisJIHsgCisJICAgICAnZnVsbC1hZ2VudCcgPT4geworCSAgICAgfSwKKwkgICAgICdtaW5pLWFnZW50JyA9PiB7CisJCSAnZW5hYmxlLW1pbmktYWdlbnQnID0+ICcnLAorCSAgICAgfQorCSB9CisgICAgIH0sCisgICAgIHsKKwkgdGl0bGUgPT4gJ3Byb3RvY29sLXN1cHBvcnQnLAorCSBhcmd1bWVudHMgPT4KKwkgeworCSAgICAgJ2V2ZXJ5dGhpbmcnID0+IHsKKwkgICAgIH0sCisJICAgICAncmVhZC1vbmx5JyA9PiB7CisJCSAnZW5hYmxlLXJlYWQtb25seScgPT4gJycsCisJICAgICB9LAorCSAgICAgJ25vdGlmeS1vbmx5JyA9PiB7CisJCSAnZW5hYmxlLW5vdGlmeS1vbmx5JyA9PiAnJywKKwkgICAgIH0KKwkgfQorICAgICB9LAorICAgICB7CisJIHRpdGxlID0+ICdwZXJsJywKKwkgYXJndW1lbnRzID0+CisJIHsgCisJICAgICAnd2l0aG91dC1wZXJsLW1vZHVsZXMnID0+IHsKKwkJICd3aXRob3V0LXBlcmwtbW9kdWxlcycgICAgPT4gJycsCisJCSAnZGlzYWJsZS1lbWJlZGRlZC1wZXJsJyA9PiAnJywKKwkgICAgIH0sCisJICAgICAnd2l0aC1wZXJsLW5vLWVtYmVkZGluZycgPT4geworCQkgJ3dpdGgtcGVybC1tb2R1bGVzJyAgICA9PiAnJywKKwkJICdkaXNhYmxlLWVtYmVkZGVkLXBlcmwnID0+ICcnLAorCSAgICAgfSwKKwkgICAgICd3aXRoLXBlcmwtYW5kLWVtYmVkZGluZycgPT4geworCQkgJ3dpdGgtcGVybC1tb2R1bGVzJyAgICA9PiAnJywKKwkJICdlbmFibGUtZW1iZWRkZWQtcGVybCcgPT4gJycsCisJICAgICB9CisJIH0KKyAgICAgfSwKKyAgICApOworCisjIG1hcCB0aGVzZSB0byBhIHJlZmVyZW5jYWJsZSBsb29rdXAgaGFzaAorbXkgJWFyZ3VtZW50c2V0czsKK2ZvcmVhY2ggbXkgJHNldCAoQGFyZ3VtZW50c2V0cykgeworICAgICRhcmd1bWVudHNldHN7JHNldC0+eyd0aXRsZSd9fSA9ICRzZXQ7Cit9CisKK2lmICgkb3B0c3snbCd9KSB7CisgICAgcHJpbnQgIlR5cGVzIGF2YWlsYWJsZTpcbiI7CisgICAgcHJpbnRmKCIgICUtNDAuNDBzICVzXG4iLCAiVGVzdCBUaXRsZSIsICJOdW1iZXIgb2Ygc3VidGVzdHMiKTsKKyAgICBwcmludGYoIiAgJS00MC40MHMgJXNcbiIsICItIiB4IDM5LCAiLSIgeCBsZW5ndGgoIk51bWJlciBvZiBzdWJ0ZXN0cyIpKTsKKyAgICBmb3JlYWNoIG15ICR0eXBlIChAYXJndW1lbnRzZXRzKSB7CisJbXkgQGtleXMgPSBrZXlzKCV7JHR5cGUtPnsnYXJndW1lbnRzJ319KTsKKwlwcmludGYoIiAgJS00MC40MHMgJXNcbiIsICR0eXBlLT57J3RpdGxlJ30sICQja2V5cysxKTsKKyAgICB9CisgICAgZXhpdDsKK30KKworbXkgJXR5cGVzOworaWYgKCRvcHRzeyd0J30pIHsKKyAgICBteSBAdHlwZXMgPSBzcGxpdCgvLFxzKi8sICRvcHRzeyd0J30pOworICAgIGZvcmVhY2ggbXkgJHR5cGUgKEB0eXBlcykgeworCSR0eXBlc3skdHlwZX0gPSAxOworICAgIH0KK30KKworaWYgKCRvcHRzeydiJ30pIHsKKyAgICAjIHVzZSB0aGlzIHNldCBhcyB0aGUgYmFzZSBkZWZhdWx0IHNldCBvZiBhcmd1bWVudHMKKyAgICAoJGJhc2VuYW1lLCAkYmFzZW51bSkgPSAoJG9wdHN7J2InfSA9fiAvKC4qKTooXGQrKS8pOworICAgIGlmICghZXhpc3RzKCRhcmd1bWVudHNldHN7JGJhc2VuYW1lfSkpIHsKKwlwcmludGYgU1RERVJSICJmYWlsZWQgdG8gZmluZCBzZXQgZm9yIC1iIGFyZ3VtZW50OiAlc1xuIiwgJGJhc2VuYW1lOworCWV4aXQoMSk7CisgICAgfQorICAgIEBzZXRzID0gYWRkX2luX2ZsYWdzKCRhcmd1bWVudHNldHN7JGJhc2VuYW1lfSwgXCViYXNlX2FyZ3MsICgpKTsKKyAgICBAc2V0cyA9IEBzZXRzWyRiYXNlbnVtXTsKKyAgICAlYmFzZV9hcmdzID0gJXskc2V0c1swXX07Cit9CisKK2ZvcmVhY2ggbXkgJHNldCAoQGFyZ3VtZW50c2V0cykgeworICAgIGlmICghJG9wdHN7J3QnfSB8fCBleGlzdHMoJHR5cGVzeyRzZXQtPnsndGl0bGUnfX0pKSB7CisgICAgICAgIGlmICgkYmFzZW5hbWUgJiYgJHNldC0+eyd0aXRsZSd9IGVxICRiYXNlbmFtZSkgeworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorCUBzZXRzID0gYWRkX2luX2ZsYWdzKCRzZXQsIFwlYmFzZV9hcmdzLCBAc2V0cyk7CisgICAgfQorfQorCitpZiAoJG9wdHN7J2MnfSkgeworICAgICMgcHJpbnQgdGhlIGNvbmZpZ3VyZSBmbGFncworICAgIGZvcmVhY2ggbXkgJHNldCAoQHNldHMpIHsKKwlwcmludCAiJHNldC0+eyd0aXRsZSd9OlxuIjsKKwlwcmludCAiICIsIGdlbmVyYXRlX2NvbmZpZ3VyZV9mbGFncygkc2V0KSwgIlxuIjsKKyAgICB9CisgICAgZXhpdDsKK30KKworbXkgJHN1bW1hcnlmaWxlOworaWYgKCRvcHRzeydvJ30gJiYgISRvcHRzeyduJ30pIHsKKyAgICAkc3VtbWFyeWZpbGUgPSBuZXcgSU86OkZpbGU7CisgICAgJHN1bW1hcnlmaWxlLT5vcGVuKCI+JG9wdHN7b30iKTsKK30KKworbXkgJGNvdW50ID0gMDsKK2ZvcmVhY2ggbXkgJHNldCAoQHNldHMpIHsKKyAgICAkY291bnQrKzsKKyAgICBidWlsZF9zZXQoJGNvdW50LCAkc2V0KTsKK30KKworc3ViIGFkZF9pbl9mbGFncyB7CisgICAgbXkgKCRhcmd1bWVudHNldCwgJGJhc2VfZmxhZ3MsIEBjdXJyZW50X2ZsYWdzKSA9IEBfOworCisgICAgbXkgQG5ld19mbGFnczsKKworICAgICMgZG8gYSBsaW5lYXIgc2VhcmNoIG9mIHRoZSBvcHRpb25zCisgICAgaWYgKCEgJG9wdHN7J2UnfSkgeworCUBuZXdfZmxhZ3MgPSBAY3VycmVudF9mbGFnczsKKwlmb3JlYWNoIG15ICRuZXdhcmdzIChrZXlzKCV7JGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9fSkpIHsKKwkgICAgbXkgJWZsYWdzID0gJSRiYXNlX2ZsYWdzOworCisJICAgICRmbGFnc3sndGl0bGUnfSA9ICIkZmxhZ3N7J3RpdGxlJ306JG5ld2FyZ3MiOworCisJICAgIGZvcmVhY2ggbXkgJG5ld2ZsYWcgKGtleXMoJXskYXJndW1lbnRzZXQtPnsnYXJndW1lbnRzJ317JG5ld2FyZ3N9fSkpIHsKKworCQkkZmxhZ3N7JG5ld2ZsYWd9IC49ICIgJGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9eyRuZXdhcmdzfXskbmV3ZmxhZ30iOworCSAgICB9CisJICAgIHB1c2ggQG5ld19mbGFncywgXCVmbGFnczsKKwl9CisJcmV0dXJuIEBuZXdfZmxhZ3M7CisgICAgfQorCisgICAgIyBvciBhbiBleHBvbmVudGlhbCBzZWFyY2gKKyAgICBmb3JlYWNoIG15ICRmbGFncyAoQGN1cnJlbnRfZmxhZ3MpIHsKKwlmb3JlYWNoIG15ICRuZXdhcmdzIChrZXlzKCV7JGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9fSkpIHsKKwkgICAgbXkgJWZsYWdzID0gJXskZmxhZ3N9OyAgIyBjb3B5IHRoZSBleGlzdGluZyBoYXNoLXNldCBvZiBmbGFncworCSAgICAKKwkgICAgaWYgKGV4aXN0cygkZmxhZ3N7J3RpdGxlJ30pKSB7CisJCSRmbGFnc3sndGl0bGUnfSAuPSAiLCAkbmV3YXJncyI7CisJICAgIH0gZWxzZSB7CisJCSRmbGFnc3sndGl0bGUnfSAuPSAiJG5ld2FyZ3MiOworCSAgICB9CisJICAgIGZvcmVhY2ggbXkgJG5ld2ZsYWcgKGtleXMoJXskYXJndW1lbnRzZXQtPnsnYXJndW1lbnRzJ317JG5ld2FyZ3N9fSkpIHsKKworCQkkZmxhZ3N7JG5ld2ZsYWd9IC49ICIgJGFyZ3VtZW50c2V0LT57J2FyZ3VtZW50cyd9eyRuZXdhcmdzfXskbmV3ZmxhZ30iOworCSAgICB9CisKKwkgICAgcHVzaCBAbmV3X2ZsYWdzLCBcJWZsYWdzOworCX0KKyAgICB9CisKKyAgICByZXR1cm4gQG5ld19mbGFnczsKK30KKworc3ViIGdlbmVyYXRlX2NvbmZpZ3VyZV9mbGFncyB7CisgICAgbXkgKCRhcmd1bWVudHMpID0gQF87CisgICAgbXkgJGxpbmUgPSAiIjsKKyAgICBmb3JlYWNoIG15ICRhcmcgKGtleXMoJSRhcmd1bWVudHMpKSB7CisJbmV4dCBpZiAoJGFyZyBlcSAndGl0bGUnKTsKKwlpZiAoJGFyZ3VtZW50cy0+eyRhcmd9ID1+IC9eXHMqJC8pIHsKKwkgICAgJGxpbmUgLj0gIiAtLSRhcmciOworCX0gZWxzZSB7CisJICAgICRsaW5lIC49ICIgLS0kYXJnPVwiJGFyZ3VtZW50cy0+eyRhcmd9XCIiOworCX0KKyAgICB9CisgICAgcmV0dXJuICRsaW5lOworfQorCitzdWIgYnVpbGRfc2V0IHsKKyAgICBteSAoJG51bSwgJGFyZ3VtZW50cykgPSBAXzsKKworICAgICRudW0gPSBzcHJpbnRmKCIlMDNkIiwgJG51bSk7CisKKyAgICBteSAkZmlsZTsKKworICAgIGlmICghJG9wdHN7J24nfSkgeworCW1rZGlyICRvcHRzeydkJ30gaWYgKCEgLWQgJG9wdHN7J2QnfSk7CisJZGllICJmYWlsZWQgdG8gY3JlYXRlIHRoZSAkb3B0c3snZCd9IGRpcmVjdG9yeSIgaWYgKCEgLWQgJG9wdHN7J2QnfSk7CisKKwkkZmlsZSA9IG5ldyBJTzo6RmlsZTsKKwkkZmlsZS0+b3BlbigiPiRvcHRzeydkJ30vJG51bS0wLWNtZC1zdW1tYXJ5Iik7CisJJGZpbGUtPnByaW50KCJDcmVhdGluZyBvdXRwdXQgZm9yOiAkYXJndW1lbnRzLT57J3RpdGxlJ31cbiIpOworICAgIH0KKworICAgIHByaW50ICI9PT09PT09PT09PT09PT09PT09PSAkYXJndW1lbnRzLT57J3RpdGxlJ31cbiI7CisKKworICAgIFN5c3RlbSAoJGZpbGUsICRudW0sICIxLWRpc3RjbGVhbiIsICJtYWtlIGRpc3RjbGVhbiIpOworICAgIFN5c3RlbSAoJGZpbGUsICRudW0sICIyLWNvbmZpZ3VyZSIsCisJICAgICIuL2NvbmZpZ3VyZSAiIC4gZ2VuZXJhdGVfY29uZmlndXJlX2ZsYWdzKCRhcmd1bWVudHMpKTsKKyAgICBTeXN0ZW0gKCRmaWxlLCAkbnVtLCAiMy1mZWF0dXJlcyIsICJtYWtlIGZlYXR1cmVzIik7CisgICAgU3lzdGVtICgkZmlsZSwgJG51bSwgIjQtbWFrZSIsICJtYWtlICRvcHRzeydqJ30iKTsKKyAgICBTeXN0ZW0gKCRmaWxlLCAkbnVtLCAiNS11bnVzZWQtY29kZSIsICJwZXJsIGxvY2FsL21pbmltYWxpc3QvZmluZC11bnVzZWQtY29kZSAtZyIpOworICAgIFN5c3RlbSAoJGZpbGUsICRudW0sICI2LXRlc3RpbmciLCAibWFrZSAtQyB0ZXN0aW5nIHRlc3QiKSBpZiAoJG9wdHN7J1QnfSk7CisKKyAgICBpZiAoISRvcHRzeyduJ30pIHsKKwlhbmFseXplX3NpemUoJGFyZ3VtZW50cy0+eyd0aXRsZSd9LCAiJG9wdHN7J2QnfS8kbnVtLTktcmVzdWx0cyIpOworICAgIH0KK30KKworc3ViIGFuYWx5emVfc2l6ZSB7CisgICAgbXkgKCR0aXRsZSwgJGZpbGVuYW1lKSA9IEBfOworCisgICAgbXkgJG91dGZpbGUgPSBuZXcgSU86OkZpbGU7CisgICAgJG91dGZpbGUtPm9wZW4oIj4kZmlsZW5hbWUiKTsKKworICAgIHByaW50ICJSZXN1bHRzIGZvcjogJHRpdGxlXG4iOworICAgIHByaW50ZiAkb3V0ZmlsZSAiUmVzdWx0cyBmb3I6ICR0aXRsZVxuIjsKKyAgICBwcmludGYgKCIlLTUwLjUwcyAlMTBzXG4iLCAiLSIgeCA0OSwgIi0iIHggMTApOworICAgIHByaW50ZiAkb3V0ZmlsZSAoIiUtNTAuNTBzICUxMHNcbiIsICItIiB4IDQ5LCAiLSIgeCAxMCk7CisKKyAgICBteSAkdG90YWxzaXplID0gMDsKKyAgICBmb3JlYWNoIG15ICRidWlsZGZpbGUgKGdsb2IoInNubXBsaWIvLmxpYnMvbGliKi5zby4qLjAuMCIpLAorCQkJICAgZ2xvYigiYWdlbnQvLmxpYnMvbGliKi5zby4qLjAuMCIpLAorCQkJICAgImFnZW50Ly5saWJzL3NubXBkIikgeworCisJbXkgQGluZm8gPSBzdGF0KCRidWlsZGZpbGUpOworCXByaW50ZiAkb3V0ZmlsZSAoIiUtNTAuNTBzICUxMHNcbiIsICRidWlsZGZpbGUsICRpbmZvWzddKTsKKwlwcmludGYoIiUtNTAuNTBzICUxMHNcbiIsICRidWlsZGZpbGUsICRpbmZvWzddKTsKKwkkdG90YWxzaXplICs9ICRpbmZvWzddOworICAgIH0KKyAgICBwcmludGYgJG91dGZpbGUgKCIlLTUwLjUwcyAlMTBzXG4iLCAiLSIgeCA0OSwgIi0iIHggMTApOworICAgIHByaW50ZiAkb3V0ZmlsZSAoIiUtNTAuNTBzICUxMHMgYnl0ZXNcbiIsICJUT1RBTCIsICR0b3RhbHNpemUpOworCisgICAgcHJpbnRmKCIlLTUwLjUwcyAlMTBzXG4iLCAiLSIgeCA0OSwgIi0iIHggMTApOworICAgIHByaW50ZigiJS01MC41MHMgJTEwcyBieXRlc1xuIiwgIlRPVEFMIiwgJHRvdGFsc2l6ZSk7CisKKyAgICBpZiAoZGVmaW5lZCgkc3VtbWFyeWZpbGUpKSB7CisJbXkgJHJlc3RyaWN0ZWRfdGl0bGUgPSAkdGl0bGU7CisJJHJlc3RyaWN0ZWRfdGl0bGUgPX4gcy9bXmEtekEtWl0vXy9nOworCXByaW50ZiAkc3VtbWFyeWZpbGUgIiUxMHMgJXMgXG4iLCAkdG90YWxzaXplLCAkdGl0bGU7CisgICAgfQorCisgICAgcmV0dXJuICR0b3RhbHNpemU7Cit9CisKK3N1YiB1c2FnZSB7CisgICAgcHJpbnQgIlVzYWdlOiAkMCBbRkxBR1NdXG5cbiI7CisgICAgcHJpbnQgIkZMQUdTOlxuIjsKKyAgICBwcmludCAiICAtaFx0XHRoZWxwXG4iOworICAgIHByaW50ICIgIC10IFRZUEVTXHRTZWxlY3QgdHlwZXMgdG8gYW5hbHl6ZSAoZGVmYXVsdCA9IGFsbClcbiI7CisgICAgcHJpbnQgIiAgLWxcdFx0TGlzdCBhdmFpbGFibGUgdHlwZXNcbiI7CisgICAgcHJpbnQgIiAgLWNcdFx0UHJpbnQgdGhlIGNvbmZpZ3VyYXRpb24gZmxhZ3MgdGhhdCB3b3VsZCBiZSB1c2VkXG4iOworICAgIHByaW50ICIgIC1EIERJUlx0U2F2ZSBkYXRhIHJlc3VsdHMgdG8gdGhpcyBkaXJlY3RvcnlcbiI7CisgICAgcHJpbnQgIiAgLW8gRklMRVx0U2F2ZSBhIGNvbXBsZXRlIHN1bW1hcnkgY2hhcnQgdG8gRklMRVxuIjsgCisgICAgcHJpbnQgIiAgLW5cdFx0RHJ5IHJ1biAtLSBvbmx5IHNob3cgdGhlIGNvbW1hbmRzIHRvIGV4ZWN1dGVcbiI7CisgICAgcHJpbnQgIiAgLWogTlVNXHRFeGVjdXRlIG1ha2Ugd2l0aCBwYXJhbGxlbCBidWlsZGluZyAoLWpOVU0pXG4iOworICAgIHByaW50ICIgIC1lXHRcdFVzZSBleHBvbmVudGlhbCBleHBhbnNpb24gKGFsbCBjb21ib3MpIG9mIHRoZSByZXF1ZXN0ZWQgb3B0aW9uc1xuIjsKKyAgICBwcmludCAiICAtYiBOQU1FOk5VTVx0VXNlIE5BTUUgYW5kIHRoZSBOVU0ndGggc2V0IGFzIHRoZSBiYXNlIGFyZ3VtZW50cyB0byBzdGFydCBmcm9tXG4iOworICAgIHByaW50ICIgIC1UXHRcdFJ1biAnbWFrZSB0ZXN0JyBhdCBlYWNoIHN0ZXAgYXMgd2VsbFxuIjsKKyAgICBleGl0OworfQorCitzdWIgU3lzdGVtIHsKKyAgICBteSAkZmlsZSAgPSBzaGlmdDsKKyAgICBteSAkbnVtICAgPSBzaGlmdDsKKyAgICBteSAkdGl0bGUgPSBzaGlmdDsKKyAgICBteSAkcGlwZSA9ICIgMj4mMSB8IHRlZSAkb3B0c3snZCd9LyRudW0tJHRpdGxlLm91dFxuIjsKKworICAgIHByaW50ICIjIyMgIiwgam9pbigiICIsIEBfKSwgJHBpcGU7CisgICAgaWYgKCEkb3B0c3snbid9ICYmICRmaWxlKSB7CisJcHJpbnQgJGZpbGUgIiMjIyAiLCBqb2luKCIgIiwgQF8pLCAiXG4iOworICAgIH0KKworICAgIGlmICghJG9wdHN7J24nfSkgeworCXN5c3RlbShqb2luKCIgIiwgQF8pIC4gJHBpcGUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2xvY2FsL25ldC1zbm1wLWNlcnQgYi9sb2NhbC9uZXQtc25tcC1jZXJ0CmluZGV4IDg1MmE0N2YuLmE0NWRjNTcgMTAwNzU1Ci0tLSBhL2xvY2FsL25ldC1zbm1wLWNlcnQKKysrIGIvbG9jYWwvbmV0LXNubXAtY2VydApAQCAtMTUxOSw3ICsxNTE5LDcgQEAKIAogICAjIEV4aXN0aW5nIG9wZW5zc2wuY29uZiB0bXBsIHdpbGwgYmUgcHJlc2VydmVkCiAgIGlmICgtZiAkc3NsX2NmZ19pbikgewotICAgIE5ldFNOTVA6OkNlcnQ6OmR3YXJuKCJPcGVuU1NMIHRlbXBsYXRlIGV4aXN0czogcHJlc2VydmluZy4uLiIsICRvcHRzKTsKKyAgICBOZXRTTk1QOjpDZXJ0Ojpkd2FybigiT3BlblNTTCB0ZW1wbGF0ZSBleGlzdHMgKCRzc2xfY2ZnX2luKTogcHJlc2VydmluZy4uLiIsICRvcHRzKTsKICAgfQogCiAgIGlmIChub3QgLWYgJHNzbF9jZmdfaW4pIHsKZGlmZiAtLWdpdCBhL2xvY2FsL3NubXBjb25mIGIvbG9jYWwvc25tcGNvbmYuaW4Kc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gbG9jYWwvc25tcGNvbmYKcmVuYW1lIHRvIGxvY2FsL3NubXBjb25mLmluCmluZGV4IDM3YTUxMzYuLmJmZjgwMjUgMTAwNzU1Ci0tLSBhL2xvY2FsL3NubXBjb25mCisrKyBiL2xvY2FsL3NubXBjb25mLmluCkBAIC05MiwxMyArOTIsOSBAQAogfQogCiAjCi0jIEV4cGFuZCB0aGUgc2VhcmNoIHBhdGggaW4gY2FzZSBpdCBjb250YWlucyBtdWx0aXBsZSBkaXJlY3RvcmllcwotIyBzZXBhcmF0ZWQgYnkgOiAoVW5peCkgb3IgOyAoV2luMzIpCisjIEV4cGFuZCB0aGUgc2VhcmNoIHBhdGggaW4gY2FzZSBpdCBjb250YWlucyBtdWx0aXBsZSBkaXJlY3Rvcmllcy4KICMKLW15ICRFTlZfU0VQQVJBVE9SID0gJzonOwotaWYgKCReTyBlcSAnTVNXaW4zMicpIHsKLSAgJEVOVl9TRVBBUkFUT1IgPSAnOyc7Ci19CitteSAkRU5WX1NFUEFSQVRPUiA9ICdARU5WX1NFUEFSQVRPUkAnOwogbXkgQHNlYXJjaHBhdGggPSBzcGxpdCgvJEVOVl9TRVBBUkFUT1IvLCAkY29uZnBhdGgpOwogcHVzaCBAc2VhcmNocGF0aCwgIi91c3IvbG9jYWwvZXRjL3NubXAiOwogcHVzaCBAc2VhcmNocGF0aCwgIi4iOwpkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCmluZGV4IDFlM2IxNDYuLmVkMTgxNGYgMTAwNzU1Ci0tLSBhL2x0bWFpbi5zaAorKysgYi9sdG1haW4uc2gKQEAgLTEsOSArMSw5IEBACi0jIEdlbmVyYXRlZCBmcm9tIGx0bWFpbi5tNHNoLgogCi0jIGx0bWFpbi5zaCAoR05VIGxpYnRvb2wpIDIuMi42CisjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQKICMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKIAotIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAorIyAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KIApAQCAtMzIsNTAgKzMyLDU2IEBACiAjCiAjIFByb3ZpZGUgZ2VuZXJhbGl6ZWQgbGlicmFyeS1idWlsZGluZyBzdXBwb3J0IHNlcnZpY2VzLgogIwotIyAgICAgLS1jb25maWcgICAgICAgICAgICAgc2hvdyBhbGwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSMgICAgIC0tZGVidWcgICAgICAgICAgICAgIGVuYWJsZSB2ZXJib3NlIHNoZWxsIHRyYWNpbmcKLSMgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCi0jICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLSMgICAgIC0tbW9kZT1NT0RFICAgICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFCi0jICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCi0jICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCi0jICAgICAtLXRhZz1UQUcgICAgICAgICAgICB1c2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZnJvbSB0YWcgVEFHCi0jIC12LCAtLXZlcmJvc2UgICAgICAgICAgICBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIChkZWZhdWx0KQotIyAgICAgLS12ZXJzaW9uICAgICAgICAgICAgcHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgotIyAtaCwgLS1oZWxwICAgICAgICAgICAgICAgcHJpbnQgc2hvcnQgb3IgbG9uZyBoZWxwIG1lc3NhZ2UKKyMgICAgICAgLS1jb25maWcgICAgICAgICAgICAgc2hvdyBhbGwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyMgICAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZworIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcworIyAgICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKKyMgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKKyMgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcworIyAgICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCisjICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgKGRlZmF1bHQpCisjICAgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKKyMgICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgbW9yZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIHRoYW4gZGVmYXVsdAorIyAgICAgICAtLW5vLXZlcmJvc2UgICAgICAgICBkb24ndCBwcmludCB0aGUgZXh0cmEgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworIyAgICAgICAtLXZlcnNpb24gICAgICAgICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uCisjICAgLWgsIC0taGVscCwgLS1oZWxwLWFsbCAgIHByaW50IHNob3J0LCBsb25nLCBvciBkZXRhaWxlZCBoZWxwIG1lc3NhZ2UKICMKICMgTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgogIwotIyAgICAgICBjbGVhbiAgICAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQotIyAgICAgICBjb21waWxlICAgICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAotIyAgICAgICBleGVjdXRlICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgbGlicmFyeSBwYXRoLCB0aGVuIHJ1biBhIHByb2dyYW0KLSMgICAgICAgZmluaXNoICAgICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKLSMgICAgICAgaW5zdGFsbCAgICAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCi0jICAgICAgIGxpbmsgICAgICAgICAgICAgICBjcmVhdGUgYSBsaWJyYXJ5IG9yIGFuIGV4ZWN1dGFibGUKLSMgICAgICAgdW5pbnN0YWxsICAgICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5CisjICAgICAgICAgY2xlYW4gICAgICAgICAgICAgIHJlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkKKyMgICAgICAgICBjb21waWxlICAgICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAorIyAgICAgICAgIGV4ZWN1dGUgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQorIyAgICAgICAgIGZpbmlzaCAgICAgICAgICAgICBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzCisjICAgICAgICAgaW5zdGFsbCAgICAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCisjICAgICAgICAgbGluayAgICAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQorIyAgICAgICAgIHVuaW5zdGFsbCAgICAgICAgICByZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGVkIGRpcmVjdG9yeQogIwotIyBNT0RFLUFSR1MgdmFyeSBkZXBlbmRpbmcgb24gdGhlIE1PREUuCisjIE1PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4gIFdoZW4gcGFzc2VkIGFzIGZpcnN0IG9wdGlvbiwKKyMgYC0tbW9kZT1NT0RFJyBtYXkgYmUgYWJicmV2aWF0ZWQgYXMgYE1PREUnIG9yIGEgdW5pcXVlIGFiYnJldmlhdGlvbiBvZiB0aGF0LgogIyBUcnkgYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgTU9ERS4KICMKICMgV2hlbiByZXBvcnRpbmcgYSBidWcsIHBsZWFzZSBkZXNjcmliZSBhIHRlc3QgY2FzZSB0byByZXByb2R1Y2UgaXQgYW5kCiAjIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKICMKLSMgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAotIyAgICAgICBzaGVsbDoJCSRTSEVMTAotIyAgICAgICBjb21waWxlcjoJCSRMVENDCi0jICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCi0jICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCi0jICAgICAgICRwcm9nbmFtZToJCShHTlUgbGlidG9vbCkgMi4yLjYKLSMgICAgICAgYXV0b21ha2U6CQkkYXV0b21ha2VfdmVyc2lvbgotIyAgICAgICBhdXRvY29uZjoJCSRhdXRvY29uZl92ZXJzaW9uCisjICAgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAorIyAgICAgICAgIHNoZWxsOgkJJFNIRUxMCisjICAgICAgICAgY29tcGlsZXI6CQkkTFRDQworIyAgICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCisjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40CisjICAgICAgICAgYXV0b21ha2U6CSRhdXRvbWFrZV92ZXJzaW9uCisjICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCiAjCiAjIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KKyMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCiAKLVBST0dSQU09bHRtYWluLnNoCitQUk9HUkFNPWxpYnRvb2wKIFBBQ0tBR0U9bGlidG9vbAotVkVSU0lPTj0yLjIuNgorVkVSU0lPTj0yLjQKIFRJTUVTVEFNUD0iIgotcGFja2FnZV9yZXZpc2lvbj0xLjMwMTIKK3BhY2thZ2VfcmV2aXNpb249MS4zMjkzCiAKICMgQmUgQm91cm5lIGNvbXBhdGlibGUKIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgpAQCAtOTEsMTAgKzk3LDE1IEBACiBCSU5fU0g9eHBnNDsgZXhwb3J0IEJJTl9TSCAjIGZvciBUcnU2NAogRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAogCisjIEEgZnVuY3Rpb24gdGhhdCBpcyB1c2VkIHdoZW4gdGhlcmUgaXMgbm8gcHJpbnQgYnVpbHRpbiBvciBwcmludGYuCitmdW5jX2ZhbGxiYWNrX2VjaG8gKCkKK3sKKyAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKKyQxCitfTFRFQ0hPX0VPRicKK30KKwogIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KLSMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCi0jIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkgYmVjYXVzZSBub3QgYWxsIHN5c3RlbXMgdW5kZXJzdGFuZAotIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgogbHRfdXNlcl9sb2NhbGU9CiBsdF9zYWZlX2xvY2FsZT0KIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUwpAQCAtMTA3LDI0ICsxMTgsMzMgQEAKIAkgIGx0X3NhZmVfbG9jYWxlPVwiJGx0X3Zhcj1DOyBcJGx0X3NhZmVfbG9jYWxlXCIKIAlmaSIKIGRvbmUKK0xDX0FMTD1DCitMQU5HVUFHRT1DCitleHBvcnQgTEFOR1VBR0UgTENfQUxMCiAKICRsdF91bnNldCBDRFBBVEgKIAogCisjIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKKyMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCisjIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAorIyBwb3NpdGlvbmFsIHBhcmFtZXRlciAkMCwgd2l0aGluIGEgZnVuY3Rpb24gY2FsbCwgaXMgdGhlIG5hbWUgb2YgdGhlCisjIGZ1bmN0aW9uLgorcHJvZ3BhdGg9IiQwIgogCiAKIAogOiAke0NQPSJjcCAtZiJ9Ci06ICR7RUNITz0iZWNobyJ9Ci06ICR7RUdSRVA9Ii91c3IvYmluL2dyZXAgLUUifQotOiAke0ZHUkVQPSIvdXNyL2Jpbi9ncmVwIC1GIn0KLTogJHtHUkVQPSIvdXNyL2Jpbi9ncmVwIn0KK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQorOiAke0VHUkVQPSJncmVwIC1FIn0KKzogJHtGR1JFUD0iZ3JlcCAtRiJ9Cis6ICR7R1JFUD0iZ3JlcCJ9CiA6ICR7TE5fUz0ibG4gLXMifQogOiAke01BS0U9Im1ha2UifQogOiAke01LRElSPSJta2RpciJ9CiA6ICR7TVY9Im12IC1mIn0KIDogJHtSTT0icm0gLWYifQotOiAke1NFRD0iL29wdC9sb2NhbC9iaW4vZ3NlZCJ9Cis6ICR7U0VEPSJzZWQifQogOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9CiA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KIApAQCAtMTQ0LDYgKzE2NCwyNyBAQAogZGlybmFtZT0icywvW14vXSokLCwiCiBiYXNlbmFtZT0icyxeLiovLCwiCiAKKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCitmdW5jX2Rpcm5hbWUgKCkKK3sKKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCisgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCisgICAgZWxzZQorICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorICAgIGZpCit9ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY19iYXNlbmFtZSBmaWxlCitmdW5jX2Jhc2VuYW1lICgpCit7CisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCit9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCiAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CiAjIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCiAjIGNhbGw6CkBAIC0xNTgsMzMgKzE5OSwxODMgQEAKICMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgogZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQogewotICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotICBlbHNlCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotICBmaQotICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAorICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorICAgIGVsc2UKKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKyAgICBmaQorICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAorfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisjIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCitmdW5jX3N0cmlwbmFtZSAoKQoreworICAgIGNhc2UgJHsyfSBpbgorICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKyAgICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKyAgICBlc2FjCit9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgorcGF0aGNhcj0ncyxeL1woW14vXSpcKS4qJCxcMSwnCitwYXRoY2RyPSdzLF4vW14vXSosLCcKK3JlbW92ZWRvdHBhcnRzPSc6ZG90c2wKKwkJc0AvXC4vQC9AZworCQl0IGRvdHNsCisJCXMsL1wuJCwvLCcKK2NvbGxhcHNlc2xhc2hlcz0nc0AvXHsxLFx9QC9AZycKK2ZpbmFsc2xhc2g9J3MsLyokLC8sJworCisjIGZ1bmNfbm9ybWFsX2Fic3BhdGggUEFUSAorIyBSZW1vdmUgZG91YmxlZC11cCBhbmQgdHJhaWxpbmcgc2xhc2hlcywgIi4iIHBhdGggY29tcG9uZW50cywKKyMgYW5kIGNhbmNlbCBvdXQgYW55ICIuLiIgcGF0aCBjb21wb25lbnRzIGluIFBBVEggYWZ0ZXIgbWFraW5nCisjIGl0IGFuIGFic29sdXRlIHBhdGguCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiCitmdW5jX25vcm1hbF9hYnNwYXRoICgpCit7CisgICMgU3RhcnQgZnJvbSByb290IGRpciBhbmQgcmVhc3NlbWJsZSB0aGUgcGF0aC4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9JDEKKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9CisgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGggaW4KKyAgICAiIikKKyAgICAgICMgRW1wdHkgcGF0aCwgdGhhdCBqdXN0IG1lYW5zICRjd2QuCisgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgImBwd2RgIgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgcmV0dXJuCisgICAgOzsKKyAgICAjIFRoZSBuZXh0IHRocmVlIGVudHJpZXMgYXJlIHVzZWQgdG8gc3BvdCBhIHJ1biBvZiBwcmVjaXNlbHkKKyAgICAjIHR3byBsZWFkaW5nIHNsYXNoZXMgd2l0aG91dCB1c2luZyBuZWdhdGVkIGNoYXJhY3RlciBjbGFzc2VzOworICAgICMgd2UgdGFrZSBhZHZhbnRhZ2Ugb2YgY2FzZSdzIGZpcnN0LW1hdGNoIGJlaGF2aW91ci4KKyAgICAvLy8qKQorICAgICAgIyBVbnVzdWFsIGZvcm0gb2YgYWJzb2x1dGUgcGF0aCwgZG8gbm90aGluZy4KKyAgICA7OworICAgIC8vKikKKyAgICAgICMgTm90IG5lY2Vzc2FyaWx5IGFuIG9yZGluYXJ5IHBhdGg7IFBPU0lYIHJlc2VydmVzIGxlYWRpbmcgJy8vJworICAgICAgIyBhbmQgZm9yIGV4YW1wbGUgQ3lnd2luIHVzZXMgaXQgdG8gYWNjZXNzIHJlbW90ZSBmaWxlIHNoYXJlcworICAgICAgIyBvdmVyIENJRlMvU01CLCBzbyB3ZSBjb25zZXJ2ZSBhIGxlYWRpbmcgZG91YmxlIHNsYXNoIGlmIGZvdW5kLgorICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9hbHRuYW1lc3BhY2U9LworICAgIDs7CisgICAgLyopCisgICAgICAjIEFic29sdXRlIHBhdGgsIGRvIG5vdGhpbmcuCisgICAgOzsKKyAgICAqKQorICAgICAgIyBSZWxhdGl2ZSBwYXRoLCBwcmVwZW5kICRjd2QuCisgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWBwd2RgLyRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoCisgICAgOzsKKyAgZXNhYworICAjIENhbmNlbCBvdXQgYWxsIHRoZSBzaW1wbGUgc3R1ZmYgdG8gc2F2ZSBpdGVyYXRpb25zLiAgV2UgYWxzbyB3YW50CisgICMgdGhlIHBhdGggdG8gZW5kIHdpdGggYSBzbGFzaCBmb3IgZWFzZSBvZiBwYXJzaW5nLCBzbyBtYWtlIHN1cmUKKyAgIyB0aGVyZSBpcyBvbmUgKGFuZCBvbmx5IG9uZSkgaGVyZS4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAtZSAiJHJlbW92ZWRvdHBhcnRzIiAtZSAiJGNvbGxhcHNlc2xhc2hlcyIgLWUgIiRmaW5hbHNsYXNoImAKKyAgd2hpbGUgOjsgZG8KKyAgICAjIFByb2Nlc3NlZCBpdCBhbGwgeWV0PworICAgIGlmIHRlc3QgIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiA9IC8gOyB0aGVuCisgICAgICAjIElmIHdlIGFzY2VuZGVkIHRvIHRoZSByb290IHVzaW5nICIuLiIgdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkgbm93LgorICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9LworICAgICAgZmkKKyAgICAgIGJyZWFrCisgICAgZmkKKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Rjb21wb25lbnQ9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKKyAgICAgICAgLWUgIiRwYXRoY2FyImAKKyAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgIC1lICIkcGF0aGNkciJgCisgICAgIyBGaWd1cmUgb3V0IHdoYXQgdG8gZG8gd2l0aCBpdAorICAgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudCBpbgorICAgICAgIiIpCisgICAgICAgICMgVHJhaWxpbmcgZW1wdHkgcGF0aCBjb21wb25lbnQsIGlnbm9yZSBpdC4KKyAgICAgIDs7CisgICAgICAuLikKKyAgICAgICAgIyBQYXJlbnQgZGlyOyBzdHJpcCBsYXN0IGFzc2VtYmxlZCBjb21wb25lbnQgZnJvbSByZXN1bHQuCisgICAgICAgIGZ1bmNfZGlybmFtZSAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0IgorICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19kaXJuYW1lX3Jlc3VsdAorICAgICAgOzsKKyAgICAgICopCisgICAgICAgICMgQWN0dWFsIHBhdGggY29tcG9uZW50LCBhcHBlbmQgaXQuCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdC8kZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50CisgICAgICA7OworICAgIGVzYWMKKyAgZG9uZQorICAjIFJlc3RvcmUgbGVhZGluZyBkb3VibGUtc2xhc2ggaWYgb25lIHdhcyBmb3VuZCBvbiBlbnRyeS4KKyAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlJGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CiB9CiAKLSMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLgorIyBmdW5jX3JlbGF0aXZlX3BhdGggU1JDRElSIERTVERJUgorIyBnZW5lcmF0ZXMgYSByZWxhdGl2ZSBwYXRoIGZyb20gU1JDRElSIHRvIERTVERJUiwgd2l0aCBhIHRyYWlsaW5nCisjIHNsYXNoIGlmIG5vbi1lbXB0eSwgc3VpdGFibGUgZm9yIGltbWVkaWF0ZWx5IGFwcGVuZGluZyBhIGZpbGVuYW1lCisjIHdpdGhvdXQgbmVlZGluZyB0byBhcHBlbmQgYSBzZXBhcmF0b3IuCisjICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCIKK2Z1bmNfcmVsYXRpdmVfcGF0aCAoKQoreworICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PQorICBmdW5jX25vcm1hbF9hYnNwYXRoICIkMSIKKyAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisgIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiQyIgorICBmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKIAotIyBXb3JrIGFyb3VuZCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzc3VlIG9uIElSSVggNi41LiBPbiBJUklYIDYuNCssIHNoCi0jIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgotIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKLSMgcG9zaXRpb25hbCBwYXJhbWV0ZXIgJDAsIHdpdGhpbiBhIGZ1bmN0aW9uIGNhbGwsIGlzIHRoZSBuYW1lIG9mIHRoZQotIyBmdW5jdGlvbi4KLXByb2dwYXRoPSIkMCIKKyAgIyBBc2NlbmQgdGhlIHRyZWUgc3RhcnRpbmcgZnJvbSBsaWJkaXIKKyAgd2hpbGUgOjsgZG8KKyAgICAjIGNoZWNrIGlmIHdlIGhhdmUgZm91bmQgYSBwcmVmaXggb2YgYmluZGlyCisgICAgY2FzZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIgaW4KKyAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcikKKyAgICAgICAgIyBmb3VuZCBhbiBleGFjdCBtYXRjaAorICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0KKyAgICAgICAgYnJlYWsKKyAgICAgICAgOzsKKyAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciopCisgICAgICAgICMgZm91bmQgYSBtYXRjaGluZyBwcmVmaXgKKyAgICAgICAgZnVuY19zdHJpcG5hbWUgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciIgJycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpciIKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCI7IHRoZW4KKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4KKyAgICAgICAgZmkKKyAgICAgICAgYnJlYWsKKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGZ1bmNfZGlybmFtZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIKKyAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JHtmdW5jX2Rpcm5hbWVfcmVzdWx0fQorICAgICAgICBpZiB0ZXN0ICJ4JGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyIiA9IHggOyB0aGVuCisgICAgICAgICAgIyBIYXZlIHRvIGRlc2NlbmQgYWxsIHRoZSB3YXkgdG8gdGhlIHJvb3QhCisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uLi8kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdAorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPSRmdW5jX3JlbGF0aXZlX3BhdGhfdGJpbmRpcgorICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9Li4vJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQKKyAgICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIE5vdyBjYWxjdWxhdGUgcGF0aDsgdGFrZSBjYXJlIHRvIGF2b2lkIGRvdWJsaW5nLXVwIHNsYXNoZXMuCisgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCisgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICBmdW5jX3N0cmlwbmFtZSAnLycgJy8nICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQiCisgIGlmIHRlc3QgIngkZnVuY19zdHJpcG5hbWVfcmVzdWx0IiAhPSB4IDsgdGhlbgorICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JHtmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0fS8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0KKyAgZmkKKworICAjIE5vcm1hbGlzYXRpb24uIElmIGJpbmRpciBpcyBsaWJkaXIsIHJldHVybiBlbXB0eSBzdHJpbmcsCisgICMgZWxzZSByZWxhdGl2ZSBwYXRoIGVuZGluZyB3aXRoIGEgc2xhc2g7IGVpdGhlciB3YXksIHRhcmdldAorICAjIGZpbGUgbmFtZSBjYW4gYmUgZGlyZWN0bHkgYXBwZW5kZWQuCisgIGlmIHRlc3QgISAteiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiOyB0aGVuCisgICAgZnVuY19zdHJpcG5hbWUgJy4vJyAnJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQvIgorICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICBmaQorfQogCiAjIFRoZSBuYW1lIG9mIHRoaXMgcHJvZ3JhbToKLSMgSW4gdGhlIHVubGlrZWx5IGV2ZW50ICRwcm9nbmFtZSBiZWdhbiB3aXRoIGEgJy0nLCBpdCB3b3VsZCBwbGF5IGhhdm9jIHdpdGgKLSMgZnVuY19lY2hvIChpbWFnaW5lIHByb2duYW1lPS1uKSwgc28gd2UgcHJlcGVuZCAuLyBpbiB0aGF0IGNhc2U6CiBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkcHJvZ3BhdGgiCiBwcm9nbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKLWNhc2UgJHByb2duYW1lIGluCi0gIC0qKSBwcm9nbmFtZT0uLyRwcm9nbmFtZSA7OwotZXNhYwogCiAjIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFic29sdXRlIHBhdGggZm9yIHJlZXhlY3V0aW9uOgogY2FzZSAkcHJvZ3BhdGggaW4KQEAgLTIxNSw2ICs0MDYsMTUgQEAKICMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgogZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJwogCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCB0dXJucyBhIHN0cmluZyBpbnRvIGEgcmVnZXggbWF0Y2hpbmcgZm9yIHRoZQorIyBzdHJpbmcgbGl0ZXJhbGx5Lgorc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCisjIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucworIyAoZXNjYXBlZCkgYmFja3NsYXNoZXMuICBBIHZlcnkgbmFpdmUgaW1wbGVtZW50YXRpb24uCitsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCisKICMgUmUtYFwnIHBhcmFtZXRlciBleHBhbnNpb25zIGluIG91dHB1dCBvZiBkb3VibGVfcXVvdGVfc3Vic3QgdGhhdCB3ZXJlCiAjIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCiAjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KQEAgLTI0Myw3ICs0NDMsNyBAQAogIyBuYW1lIGlmIGl0IGhhcyBiZWVuIHNldCB5ZXQuCiBmdW5jX2VjaG8gKCkKIHsKLSAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAkKiIKKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSQqIgogfQogCiAjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KQEAgLTI1OCwxOCArNDU4LDI1IEBACiAgICAgOgogfQogCisjIGZ1bmNfZWNob19hbGwgYXJnLi4uCisjIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCitmdW5jX2VjaG9fYWxsICgpCit7CisgICAgJEVDSE8gIiQqIgorfQorCiAjIGZ1bmNfZXJyb3IgYXJnLi4uCiAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCiBmdW5jX2Vycm9yICgpCiB7Ci0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogIiR7MSsiJEAifSAxPiYyCisgICAgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH0iJHsxKyIkQCJ9IDE+JjIKIH0KIAogIyBmdW5jX3dhcm5pbmcgYXJnLi4uCiAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KIGZ1bmNfd2FybmluZyAoKQogewotICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKyAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH13YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKIAogICAgICMgYmFzaCBidWcgYWdhaW46CiAgICAgOgpAQCAtMzI2LDkgKzUzMyw5IEBACiAgICAgICAgIGNhc2UgJG15X2RpcmVjdG9yeV9wYXRoIGluICovKikgOzsgKikgYnJlYWsgOzsgZXNhYwogCiAgICAgICAgICMgLi4ub3RoZXJ3aXNlIHRocm93IGF3YXkgdGhlIGNoaWxkIGRpcmVjdG9yeSBhbmQgbG9vcAotICAgICAgICBteV9kaXJlY3RvcnlfcGF0aD1gJEVDSE8gIlgkbXlfZGlyZWN0b3J5X3BhdGgiIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKKyAgICAgICAgbXlfZGlyZWN0b3J5X3BhdGg9YCRFQ0hPICIkbXlfZGlyZWN0b3J5X3BhdGgiIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAogICAgICAgZG9uZQotICAgICAgbXlfZGlyX2xpc3Q9YCRFQ0hPICJYJG15X2Rpcl9saXN0IiB8ICRYc2VkIC1lICdzLDoqJCwsJ2AKKyAgICAgIG15X2Rpcl9saXN0PWAkRUNITyAiJG15X2Rpcl9saXN0IiB8ICRTRUQgJ3MsOiokLCwnYAogCiAgICAgICBzYXZlX21rZGlyX3BfSUZTPSIkSUZTIjsgSUZTPSc6JwogICAgICAgZm9yIG15X2RpciBpbiAkbXlfZGlyX2xpc3Q7IGRvCkBAIC0zNzgsNyArNTg1LDcgQEAKICAgICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IFxgJG15X3RtcGRpciciCiAgICAgZmkKIAotICAgICRFQ0hPICJYJG15X3RtcGRpciIgfCAkWHNlZAorICAgICRFQ0hPICIkbXlfdG1wZGlyIgogfQogCiAKQEAgLTM5Miw3ICs1OTksNyBAQAogewogICAgIGNhc2UgJDEgaW4KICAgICAgICpbXFxcYFwiXCRdKikKLQlmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD1gJEVDSE8gIlgkMSIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgIDs7CisJZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAgOzsKICAgICAgICopCiAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PSIkMSIgOzsKICAgICBlc2FjCkBAIC00MTksNyArNjI2LDcgQEAKIHsKICAgICBjYXNlICQxIGluCiAgICAgICAqW1xcXGBcIl0qKQotCW15X2FyZz1gJEVDSE8gIlgkMSIgfCAkWHNlZCBcCisJbXlfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCBcCiAJICAgIC1lICIkZG91YmxlX3F1b3RlX3N1YnN0IiAtZSAiJHNlZF9kb3VibGVfYmFja3NsYXNoImAgOzsKICAgICAgICopCiAgICAgICAgIG15X2FyZz0iJDEiIDs7CkBAIC00ODgsMTUgKzY5NSwzOSBAQAogICAgIGZpCiB9CiAKLQotCisjIGZ1bmNfdHJfc2gKKyMgVHVybiAkMSBpbnRvIGEgc3RyaW5nIHN1aXRhYmxlIGZvciBhIHNoZWxsIHZhcmlhYmxlIG5hbWUuCisjIFJlc3VsdCBpcyBzdG9yZWQgaW4gJGZ1bmNfdHJfc2hfcmVzdWx0LiAgQWxsIGNoYXJhY3RlcnMKKyMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCisjIGlmICQxIGJlZ2lucyB3aXRoIGEgZGlnaXQsIGEgJ18nIGlzIHByZXBlbmRlZCBhcyB3ZWxsLgorZnVuY190cl9zaCAoKQoreworICBjYXNlICQxIGluCisgIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKKyAgICA7OworICAqICkKKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQorICAgIDs7CisgIGVzYWMKK30KIAogCiAjIGZ1bmNfdmVyc2lvbgogIyBFY2hvIHZlcnNpb24gbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCiBmdW5jX3ZlcnNpb24gKCkKIHsKLSAgICAkU0VEIC1uICcvXiMgJyRQUk9HUkFNJyAoR05VIC8sLyMgd2FycmFudHk7IC8geworICAgICRvcHRfZGVidWcKKworICAgICRTRUQgLW4gJy8oQykvIWIgZ28KKwk6bW9yZQorCS9cLi8heworCSAgTgorCSAgcy9cbiMgLyAvCisJICBiIG1vcmUKKwl9CisJOmdvCisJL14jICckUFJPR1JBTScgKEdOVSAvLC8jIHdhcnJhbnR5OyAvIHsKICAgICAgICAgcy9eIyAvLwogCXMvXiMgKiQvLwogICAgICAgICBzL1woKEMpXClbIDAtOSwtXSpcKCBbMS05XVswLTldKlwpL1wxXDIvCkBAIC01MDksMjIgKzc0MCwyOCBAQAogIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCiBmdW5jX3VzYWdlICgpCiB7Ci0gICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgLWgvIHsKKyAgICAkb3B0X2RlYnVnCisKKyAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICouKi0taGVscC8gewogICAgICAgICBzL14jIC8vCiAJcy9eIyAqJC8vCiAJcy9cJHByb2duYW1lLyckcHJvZ25hbWUnLwogCXAKICAgICB9JyA8ICIkcHJvZ3BhdGgiCi0gICAgJEVDSE8KKyAgICBlY2hvCiAgICAgJEVDSE8gInJ1biBcYCRwcm9nbmFtZSAtLWhlbHAgfCBtb3JlJyBmb3IgZnVsbCB1c2FnZSIKICAgICBleGl0ICQ/CiB9CiAKLSMgZnVuY19oZWxwCi0jIEVjaG8gbG9uZyBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorIyBmdW5jX2hlbHAgW05PRVhJVF0KKyMgRWNobyBsb25nIGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQsCisjIHVubGVzcyAnbm9leGl0JyBpcyBwYXNzZWQgYXMgYXJndW1lbnQuCiBmdW5jX2hlbHAgKCkKIHsKKyAgICAkb3B0X2RlYnVnCisKICAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyBSZXBvcnQgYnVncyB0by8geworCTpwcmludAogICAgICAgICBzL14jIC8vCiAJcy9eIyAqJC8vCiAJcypcJHByb2duYW1lKickcHJvZ25hbWUnKgpAQCAtNTM3LDggKzc3NCwxNSBAQAogCXMvXCRhdXRvbWFrZV92ZXJzaW9uLyciYChhdXRvbWFrZSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwogCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwogCXAKLSAgICAgfScgPCAiJHByb2dwYXRoIgotICAgIGV4aXQgJD8KKwlkCisgICAgIH0KKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAorICAgICAvXiMgR2VuZXJhbCBoZWxwIHVzaW5nL2IgcHJpbnQKKyAgICAgJyA8ICIkcHJvZ3BhdGgiCisgICAgcmV0PSQ/CisgICAgaWYgdGVzdCAteiAiJDEiOyB0aGVuCisgICAgICBleGl0ICRyZXQKKyAgICBmaQogfQogCiAjIGZ1bmNfbWlzc2luZ19hcmcgYXJnbmFtZQpAQCAtNTQ2LDYzICs3OTAsMTA2IEBACiAjIGV4aXRfY21kLgogZnVuY19taXNzaW5nX2FyZyAoKQogewotICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxIgorICAgICRvcHRfZGVidWcKKworICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxLiIKICAgICBleGl0X2NtZD1leGl0CiB9CiAKKworIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBzaG9ydG9wdAorIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCisjIHZhcmlhYmxlcyBhZnRlciBzcGxpdHRpbmcgU0hPUlRPUFQgYWZ0ZXIgdGhlIDJuZCBjaGFyYWN0ZXIuCitmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQoreworICAgIG15X3NlZF9zaG9ydF9vcHQ9JzFzL15cKC4uXCkuKiQvXDEvO3EnCisgICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCisKKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9vcHQiYAorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfcmVzdCJgCit9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKKyMgU2V0IGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9sb25nX29wdF9hcmcgc2hlbGwKKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBMT05HT1BUIGF0IHRoZSBgPScgc2lnbi4KK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKK3sKKyAgICBteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC0tW149XSpcKT0uKi9cMS87cScKKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJworCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCisgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKK30gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCiBleGl0X2NtZD06CiAKIAogCiAKIAotIyBDaGVjayB0aGF0IHdlIGhhdmUgYSB3b3JraW5nICRFQ0hPLgotaWYgdGVzdCAiWCQxIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgc2hpZnQKLWVsaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgotICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCi0gIDoKLWVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSAkRUNITyB3aWxsIHdvcmsuCi0gIGV4ZWMgJFNIRUxMICIkcHJvZ3BhdGgiIC0tbm8tcmVleGVjICR7MSsiJEAifQotZmkKLQotaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyB1c2VkIGFzIGZhbGxiYWNrIGVjaG8KLSAgc2hpZnQKLSAgY2F0IDw8RU9GCi0kKgotRU9GCi0gIGV4aXQgJEVYSVRfU1VDQ0VTUwotZmkKLQogbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgogbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCiAKICMgR2xvYmFsIHZhcmlhYmxlcy4KLSMgJG1vZGUgaXMgdW5zZXQKIG5vbm9wdD0KLWV4ZWN1dGVfZGxmaWxlcz0KIHByZXNlcnZlX2FyZ3M9CiBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCiBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCiBleHRyYWN0ZWRfYXJjaGl2ZXM9CiBleHRyYWN0ZWRfc2VyaWFsPTAKIAotb3B0X2RyeV9ydW49ZmFsc2UKLW9wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQotb3B0X3NpbGVudD1mYWxzZQotb3B0X2RlYnVnPToKLQogIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0CiAjIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKICMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KIGV4ZWNfY21kPQogCisjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCitmdW5jX2FwcGVuZCAoKQoreworICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCit9ICMgZnVuY19hcHBlbmQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQorIyBRdW90ZSBWQUxVRSBhbmQgYXBwZW5kIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLCBzZXBhcmF0ZWQKKyMgYnkgYSBzcGFjZS4KK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQoreworICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCisgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorfSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCisjIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCitmdW5jX2FyaXRoICgpCit7CisgICAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiR7QH0iYAorfSAjIGZ1bmNfYXJpdGggbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2xlbiBzdHJpbmcKKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KK2Z1bmNfbGVuICgpCit7CisgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCit9ICMgZnVuY19sZW4gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisKKworIyBmdW5jX2xvMm8gb2JqZWN0CitmdW5jX2xvMm8gKCkKK3sKKyAgICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCit9ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorCisKKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCitmdW5jX3hmb3JtICgpCit7CisgICAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCit9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKworCiAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCkBAIC02MzYsMTYgKzkyMywxNiBAQAogIyBEaXNwbGF5IHRoZSBmZWF0dXJlcyBzdXBwb3J0ZWQgYnkgdGhpcyBzY3JpcHQuCiBmdW5jX2ZlYXR1cmVzICgpCiB7Ci0gICAgJEVDSE8gImhvc3Q6ICRob3N0IgorICAgIGVjaG8gImhvc3Q6ICRob3N0IgogICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkRUNITyAiZW5hYmxlIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgICBlY2hvICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKICAgICBlbHNlCi0gICAgICAkRUNITyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgorICAgICAgZWNobyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgIGZpCiAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgotICAgICAgJEVDSE8gImVuYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgICAgZWNobyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCiAgICAgZWxzZQotICAgICAgJEVDSE8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKICAgICBmaQogCiAgICAgZXhpdCAkPwpAQCAtNjkyLDEzMyArOTc5LDYgQEAKICAgZXNhYwogfQogCi0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgotIyB0aGUgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYGxpYnRvb2wgLS12ZXJzaW9uJyBoYXBwZW4gcXVpY2tseS4KLXsKLQotICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKLSAgY2FzZSAkMSBpbgotICBjbGVhbnxjbGVhfGNsZXxjbCkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLSAgICA7OwotICBsaW5rfGxpbnxsaXxsKQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAotICAgIDs7Ci0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0gICAgOzsKLSAgZXNhYwotCi0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgotICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCi0gICAgb3B0PSIkMSIKLSAgICBzaGlmdAotCi0gICAgY2FzZSAkb3B0IGluCi0gICAgICAtLWNvbmZpZykJCWZ1bmNfY29uZmlnCQkJCQk7OwotCi0gICAgICAtLWRlYnVnKQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLQkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JwotCQkJJG9wdF9kZWJ1ZwotCQkJOzsKLQotICAgICAgLWRsb3BlbikJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICQxIgotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgIC0tZHJ5LXJ1biB8IC1uKQlvcHRfZHJ5X3J1bj06CQkJCQk7OwotICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKLSAgICAgIC0tZmluaXNoKQkJbW9kZT0iZmluaXNoIgkJCQkJOzsKLQotICAgICAgLS1tb2RlKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0JCQljYXNlICQxIGluCi0JCQkgICMgVmFsaWQgbW9kZSBhcmd1bWVudHM6Ci0JCQkgIGNsZWFuKQk7OwotCQkJICBjb21waWxlKQk7OwotCQkJICBleGVjdXRlKQk7OwotCQkJICBmaW5pc2gpCTs7Ci0JCQkgIGluc3RhbGwpCTs7Ci0JCQkgIGxpbmspCQk7OwotCQkJICByZWxpbmspCTs7Ci0JCQkgIHVuaW5zdGFsbCkJOzsKLQotCQkJICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKLQkJCSAgICAgZXhpdF9jbWQ9ZXhpdAotCQkJICAgICBicmVhawotCQkJICAgICA7OwotCQkgICAgICAgIGVzYWMKLQotCQkJbW9kZT0iJDEiCi0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKLQkJCW9wdF9kdXBsaWNhdGVfZGVwcz06CQkJCTs7Ci0KLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlvcHRfc2lsZW50PToKLQkJCTs7Ci0KLSAgICAgIC0tdmVyYm9zZXwgLXYpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0JCQlvcHRfc2lsZW50PWZhbHNlCi0JCQk7OwotCi0gICAgICAtLXRhZykJCXRlc3QgIiQjIiAtZXEgMCAmJiBmdW5jX21pc3NpbmdfYXJnICIkb3B0IiAmJiBicmVhawotCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCAkMSIKLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQotCQkJc2hpZnQKLQkJCTs7Ci0KLSAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6Ci0gICAgICAtZGxvcGVuPSp8LS1tb2RlPSp8LS10YWc9KikKLQkJCWZ1bmNfb3B0X3NwbGl0ICIkb3B0IgotCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9Ci0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQkJOzsKLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7Ci0gICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQkJOzsKLQotICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKLQotICAgICAgKikJCW5vbm9wdD0iJG9wdCIKLQkJCWJyZWFrCi0JCQk7OwotICAgIGVzYWMKLSAgZG9uZQotCi0KLSAgY2FzZSAkaG9zdCBpbgotICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyopCi0gICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcwotICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06Ci0gICAgICA7OwotICAgICopCi0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKLSAgICAgIDs7Ci0gIGVzYWMKLQotICAjIEhhdmluZyB3YXJuZWQgYWJvdXQgYWxsIG1pcy1zcGVjaWZpZWQgb3B0aW9ucywgYmFpbCBvdXQgaWYKLSAgIyBhbnl0aGluZyB3YXMgd3JvbmcuCi0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCi19Ci0KICMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCiAjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCiAjIHJlbGVhc2Ugb2YgbGlidG9vbC4KQEAgLTg1NSwzOCArMTAxNSwyMTQgQEAKIH0KIAogCisjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKK2Nhc2UgJDEgaW4KK2NsZWFufGNsZWF8Y2xlfGNsKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CisgIDs7Citjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2V4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorICA7OworZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisgIDs7CitpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKyAgOzsKK2xpbmt8bGlufGxpfGwpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorICA7OwordW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCisgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisgIDs7Citlc2FjCisKKworCisjIE9wdGlvbiBkZWZhdWx0czoKK29wdF9kZWJ1Zz06CitvcHRfZHJ5X3J1bj1mYWxzZQorb3B0X2NvbmZpZz1mYWxzZQorb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCitvcHRfZmVhdHVyZXM9ZmFsc2UKK29wdF9maW5pc2g9ZmFsc2UKK29wdF9oZWxwPWZhbHNlCitvcHRfaGVscF9hbGw9ZmFsc2UKK29wdF9zaWxlbnQ9Ogorb3B0X3ZlcmJvc2U9Ogorb3B0X3NpbGVudD1mYWxzZQorb3B0X3ZlcmJvc2U9ZmFsc2UKKworCisjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgoreworICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCisgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgb3B0PSIkMSIKKyAgICBzaGlmdAorICAgIGNhc2UgJG9wdCBpbgorICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCisJCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCisJCQkkb3B0X2RlYnVnCisJCQk7OworICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQorCQkJb3B0X2RyeV9ydW49OgorCQkJOzsKKyAgICAgIC0tY29uZmlnKQorCQkJb3B0X2NvbmZpZz06CitmdW5jX2NvbmZpZworCQkJOzsKKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCisJCQlvcHRhcmc9IiQxIgorCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCit9JG9wdGFyZyIKKwkJCXNoaWZ0CisJCQk7OworICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKKwkJCW9wdF9wcmVzZXJ2ZV9kdXBfZGVwcz06CisJCQk7OworICAgICAgLS1mZWF0dXJlcykKKwkJCW9wdF9mZWF0dXJlcz06CitmdW5jX2ZlYXR1cmVzCisJCQk7OworICAgICAgLS1maW5pc2gpCisJCQlvcHRfZmluaXNoPToKK3NldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKwkJCTs7CisgICAgICAtLWhlbHApCisJCQlvcHRfaGVscD06CisJCQk7OworICAgICAgLS1oZWxwLWFsbCkKKwkJCW9wdF9oZWxwX2FsbD06CitvcHRfaGVscD0nOiBoZWxwLWFsbCcKKwkJCTs7CisgICAgICAtLW1vZGUpCisJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKwkJCW9wdGFyZz0iJDEiCisJCQlvcHRfbW9kZT0iJG9wdGFyZyIKK2Nhc2UgJG9wdGFyZyBpbgorICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorICBjbGVhbnxjb21waWxlfGV4ZWN1dGV8ZmluaXNofGluc3RhbGx8bGlua3xyZWxpbmt8dW5pbnN0YWxsKSA7OworCisgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgorICAgICBleGl0X2NtZD1leGl0CisgICAgIGJyZWFrCisgICAgIDs7Citlc2FjCisJCQlzaGlmdAorCQkJOzsKKyAgICAgIC0tbm8tc2lsZW50fC0tbm8tcXVpZXQpCisJCQlvcHRfc2lsZW50PWZhbHNlCitmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKwkJCTs7CisgICAgICAtLW5vLXZlcmJvc2UpCisJCQlvcHRfdmVyYm9zZT1mYWxzZQorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisJCQk7OworICAgICAgLS1zaWxlbnR8LS1xdWlldCkKKwkJCW9wdF9zaWxlbnQ9OgorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisgICAgICAgIG9wdF92ZXJib3NlPWZhbHNlCisJCQk7OworICAgICAgLS12ZXJib3NlfC12KQorCQkJb3B0X3ZlcmJvc2U9OgorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCitvcHRfc2lsZW50PWZhbHNlCisJCQk7OworICAgICAgLS10YWcpCisJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKwkJCW9wdGFyZz0iJDEiCisJCQlvcHRfdGFnPSIkb3B0YXJnIgorZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKK2Z1bmNfZW5hYmxlX3RhZyAiJG9wdGFyZyIKKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCTs7CisgICAgICAtLWhlbHApCQlmdW5jX2hlbHAJCQkJOzsKKyAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCTs7CisKKyAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6CisgICAgICAtLSo9KikKKwkJCWZ1bmNfc3BsaXRfbG9uZ19vcHQgIiRvcHQiCisJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUiICIkZnVuY19zcGxpdF9sb25nX29wdF9hcmciICR7MSsiJEAifQorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6CisgICAgICAtXD8qfC1oKnwtbip8LXYqKQorCQkJZnVuY19zcGxpdF9zaG9ydF9vcHQgIiRvcHQiCisJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQorCQkJc2hpZnQKKwkJCTs7CisKKyAgICAgIC0tKQkJYnJlYWsJCQkJCTs7CisgICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIiA7OworICAgICAgKikJCXNldCBkdW1teSAiJG9wdCIgJHsxKyIkQCJ9OwlzaGlmdDsgYnJlYWsgIDs7CisgICAgZXNhYworICBkb25lCisKKyAgIyBWYWxpZGF0ZSBvcHRpb25zOgorCisgICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50CisgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorICAgIG5vbm9wdD0iJG9wdCIKKyAgICBzaGlmdAorICBmaQorCisgICMgcHJlc2VydmUgLS1kZWJ1ZworICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCisKKyAgY2FzZSAkaG9zdCBpbgorICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyopCisgICAgICAjIGRvbid0IGVsaW1pbmF0ZSBkdXBsaWNhdGlvbnMgaW4gJHBvc3RkZXBzIGFuZCAkcHJlZGVwcworICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06CisgICAgICA7OworICAgICopCisgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKKyAgICAgIDs7CisgIGVzYWMKKworICAkb3B0X2hlbHAgfHwgeworICAgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKyAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKworICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgorICAgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgorICAgIGZpCisKKyAgICAjIERhcndpbiBzdWNrcworICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCisKKyAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgorICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKyAgICAgIGZ1bmNfZXJyb3IgInVucmVjb2duaXplZCBvcHRpb24gXGAtZGxvcGVuJyIKKyAgICAgICRFQ0hPICIkaGVscCIgMT4mMgorICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgZmkKKworICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKyAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgorICAgIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRvcHRfbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgorICB9CisKKworICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCisgICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCit9CisKKworCisKICMjIC0tLS0tLS0tLS0tICMjCiAjIyAgICBNYWluLiAgICAjIwogIyMgLS0tLS0tLS0tLS0gIyMKIAotJG9wdF9oZWxwIHx8IHsKLSAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgotICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLQotICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCi0gIGZpCi0KLSAgdGVzdCAteiAiJG1vZGUiICYmIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERS4iCi0KLQotICAjIERhcndpbiBzdWNrcwotICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgotCi0KLSAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KLSAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLSAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0gICAgJEVDSE8gIiRoZWxwIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gIGZpCi0KLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotICBnZW5lcmljX2hlbHA9IiRoZWxwIgotICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotfQotCi0KICMgZnVuY19sYWxpYl9wIGZpbGUKICMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KICMgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQKQEAgLTk1MCwxMiArMTI4Niw5IEBACiAjIHRlbXBvcmFyeSBsdHdyYXBwZXJfc2NyaXB0LgogZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAoKQogewotICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIiCi0gICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSI7IHRoZW4KLQlmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCi0JZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgotICAgIGZpCisgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgorICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKIH0KIAogIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKQEAgLTEwMDEsNiArMTMzNCwzNyBAQAogfQogCiAKKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3QgUEFUSAorIyBSZXBsYWNlIGEgbGVhZGluZyA9IGluIFBBVEggd2l0aCBhIHN5c3Jvb3QuICBTdG9yZSB0aGUgcmVzdWx0IGludG8KKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CitmdW5jX3Jlc29sdmVfc3lzcm9vdCAoKQoreworICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JDEKKyAgY2FzZSAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IGluCisgID0qKQorICAgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgOzsKKyAgZXNhYworfQorCisjIGZ1bmNfcmVwbGFjZV9zeXNyb290IFBBVEgKKyMgSWYgUEFUSCBiZWdpbnMgd2l0aCB0aGUgc3lzcm9vdCwgcmVwbGFjZSBpdCB3aXRoID0gYW5kCisjIHN0b3JlIHRoZSByZXN1bHQgaW50byBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQuCitmdW5jX3JlcGxhY2Vfc3lzcm9vdCAoKQoreworICBjYXNlICIkbHRfc3lzcm9vdDokMSIgaW4KKyAgPyo6IiRsdF9zeXNyb290IiopCisgICAgZnVuY19zdHJpcG5hbWUgIiRsdF9zeXNyb290IiAnJyAiJDEiCisgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKyAgICA7OworICAqKQorICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCisgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSQxCisgICAgOzsKKyAgZXNhYworfQorCiAjIGZ1bmNfaW5mZXJfdGFnIGFyZwogIyBJbmZlciB0YWdnZWQgY29uZmlndXJhdGlvbiB0byB1c2UgaWYgYW55IGFyZSBhdmFpbGFibGUgYW5kCiAjIGlmIG9uZSB3YXNuJ3QgY2hvc2VuIHZpYSB0aGUgIi0tdGFnIiBjb21tYW5kIGxpbmUgb3B0aW9uLgpAQCAtMTAxMywxMyArMTM3NywxNSBAQAogICAgIGlmIHRlc3QgLW4gIiRhdmFpbGFibGVfdGFncyIgJiYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCiAgICAgICBDQ19xdW90ZWQ9CiAgICAgICBmb3IgYXJnIGluICRDQzsgZG8KLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCWZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCiAgICAgICBkb25lCisgICAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisgICAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKICAgICAgIGNhc2UgJEAgaW4KICAgICAgICMgQmxhbmtzIGluIHRoZSBjb21tYW5kIG1heSBoYXZlIGJlZW4gc3RyaXBwZWQgYnkgdGhlIGNhbGxpbmcgc2hlbGwsCiAgICAgICAjIGJ1dCBub3QgZnJvbSB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBjb25maWd1cmUgd2FzIHJ1bi4KLSAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgYCRFQ0hPICRDQ2AgIiogfCAiYCRFQ0hPICRDQ2AgIiogfCAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiBgJEVDSE8gJENDX3F1b3RlZGAgIiogfCAiYCRFQ0hPICRDQ19xdW90ZWRgICIqKSA7OworICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiAkQ0NfZXhwYW5kZWQgIiogfCAiJENDX2V4cGFuZGVkICIqIHwgXAorICAgICAgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgJENDX3F1b3RlZF9leHBhbmRlZCAiKiB8ICIkQ0NfcXVvdGVkX2V4cGFuZGVkICIqKSA7OwogICAgICAgIyBCbGFua3MgYXQgdGhlIHN0YXJ0IG9mICRiYXNlX2NvbXBpbGUgd2lsbCBjYXVzZSB0aGlzIHRvIGZhaWwKICAgICAgICMgaWYgd2UgZG9uJ3QgY2hlY2sgZm9yIHRoZW0gYXMgd2VsbC4KICAgICAgICopCkBAIC0xMDMwLDExICsxMzk2LDEzIEBACiAJICAgIENDX3F1b3RlZD0KIAkgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCiAJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0JICAgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgogCSAgICBkb25lCisJICAgIENDX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ2AKKwkgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCiAJICAgIGNhc2UgIiRAICIgaW4KLQkgICAgICAiICRDQyAiKiB8ICIkQ0MgIiogfCAiIGAkRUNITyAkQ0NgICIqIHwgImAkRUNITyAkQ0NgICIqIHwgIiAkQ0NfcXVvdGVkIiogfCAiJENDX3F1b3RlZCAiKiB8ICIgYCRFQ0hPICRDQ19xdW90ZWRgICIqIHwgImAkRUNITyAkQ0NfcXVvdGVkYCAiKikKKwkgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiAkQ0NfZXhwYW5kZWQgIiogfCAiJENDX2V4cGFuZGVkICIqIHwgXAorCSAgICAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiAkQ0NfcXVvdGVkX2V4cGFuZGVkICIqIHwgIiRDQ19xdW90ZWRfZXhwYW5kZWQgIiopCiAJICAgICAgIyBUaGUgY29tcGlsZXIgaW4gdGhlIGJhc2UgY29tcGlsZSBjb21tYW5kIG1hdGNoZXMKIAkgICAgICAjIHRoZSBvbmUgaW4gdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uLgogCSAgICAgICMgQXNzdW1lIHRoaXMgaXMgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uIHdlIHdhbnQuCkBAIC0xMDk3LDYgKzE0NjUsNDg2IEBACiAgICAgfQogfQogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEZJTEUgTkFNRSBBTkQgUEFUSCBDT05WRVJTSU9OIEhFTFBFUiBGVU5DVElPTlMgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyIEFSRworIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwKKyMgYW5kICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYQorIyBjb3JyZWN0bHkgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbQorIyBpbiAkYnVpbGQncyAkUEFUSC4KKyMKKyMgQVJHIGlzIHRoZSAkYnVpbGQgZmlsZSBuYW1lIHRvIGJlIGNvbnZlcnRlZCB0byB3MzIgZm9ybWF0LgorIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCwgYW5kIHdpbGwKKyMgYmUgZW1wdHkgb24gZXJyb3IgKG9yIHdoZW4gQVJHIGlzIGVtcHR5KQorZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQorICAgICMgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2Ygc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlCisgICAgIyBjb21tYW5kIGlzIG5vdCBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50CisgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKKyAgICAjIHplcm8gQU5EIG5vbi1lbXB0eSBzdGRvdXQsIHdoaWNoIGV4cGxhaW5zIHRoZSBvZGQgY29uc3RydWN0aW9uOgorICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAorICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PWAkRUNITyAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wIiB8CisgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICBlbHNlCisgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0KKyAgICBmaQorICBmaQorfQorIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIKKworCisjIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgQVJHCisjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwgYW5kCisjICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYSBjb3JyZWN0bHkKKyMgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbSBpbiAkYnVpbGQncworIyAkUEFUSC4gQXNzdW1lcyBBUkcgaGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycy4KKyMKKyMgQVJHIGlzIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB3aW4zMi4KKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQuCisjIFVuY29udmVydGlibGUgZmlsZSAoZGlyZWN0b3J5KSBuYW1lcyBpbiBBUkcgYXJlIHNraXBwZWQ7IGlmIG5vIGRpcmVjdG9yeSBuYW1lcworIyBhcmUgY29udmVydGlibGUsIHRoZW4gdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkuCitmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcworICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICBvbGRJRlM9JElGUworICAgIElGUz06CisgICAgZm9yIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiBpbiAkMTsgZG8KKyAgICAgIElGUz0kb2xkSUZTCisgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIgorICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgorICAgICAgICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgICAgIGVsc2UKKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZG9uZQorICAgIElGUz0kb2xkSUZTCisgIGZpCit9CisjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMgorCisKKyMgZnVuY19jeWdwYXRoIEFSR1MuLi4KKyMgV3JhcHBlciBhcm91bmQgY2FsbGluZyB0aGUgY3lncGF0aCBwcm9ncmFtIHZpYSBMVF9DWUdQQVRILiBUaGlzIGlzIHVzZWQgd2hlbgorIyB3aGVuICgxKSAkYnVpbGQgaXMgKm5peCBhbmQgQ3lnd2luIGlzIGhvc3RlZCB2aWEgYSB3aW5lIGVudmlyb25tZW50OyBvciAoMikKKyMgJGJ1aWxkIGlzIE1TWVMgYW5kICRob3N0IGlzIEN5Z3dpbiwgb3IgKDMpICRidWlsZCBpcyBDeWd3aW4uIEluIGNhc2UgKDEpIG9yCisjICgyKSwgcmV0dXJucyB0aGUgQ3lnd2luIGZpbGUgbmFtZSBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0CisjIGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4gdzMyIGZvcm1hdCwgYXMgcHJldmlvdXNseSBjb252ZXJ0ZWQKKyMgZnJvbSAkYnVpbGQncyAqbml4IG9yIE1TWVMgZm9ybWF0KS4gSW4gY2FzZSAoMyksIHJldHVybnMgdGhlIHczMiBmaWxlIG5hbWUKKyMgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dCBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluCisjIEN5Z3dpbiBmb3JtYXQpLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KKyMKKyMgQVJHUyBhcmUgcGFzc2VkIHRvIGN5Z3BhdGgsIHdpdGggdGhlIGxhc3Qgb25lIGJlaW5nIHRoZSBmaWxlIG5hbWUgb3IgcGF0aCB0bworIyBiZSBjb252ZXJ0ZWQuCisjCisjIFNwZWNpZnkgdGhlIGFic29sdXRlICpuaXggKG9yIHczMikgbmFtZSB0byBjeWdwYXRoIGluIHRoZSBMVF9DWUdQQVRICisjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgorZnVuY19jeWdwYXRoICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAtbiAiJExUX0NZR1BBVEgiICYmIHRlc3QgLWYgIiRMVF9DWUdQQVRIIjsgdGhlbgorICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9YCRMVF9DWUdQQVRIICIkQCIgMj4vZGV2L251bGxgCisgICAgaWYgdGVzdCAiJD8iIC1uZSAwOyB0aGVuCisgICAgICAjIG9uIGZhaWx1cmUsIGVuc3VyZSByZXN1bHQgaXMgZW1wdHkKKyAgICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisgICAgZmkKKyAgZWxzZQorICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9CisgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgorICBmaQorfQorI2VuZDogZnVuY19jeWdwYXRoCisKKworIyBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgb3IgcGF0aCBBUkcgZnJvbSBNU1lTIGZvcm1hdCB0byB3MzIgZm9ybWF0LiAgUmV0dXJuCisjIHJlc3VsdCBpbiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQuCitmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAorICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8CisgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorfQorI2VuZDogZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIKKworCisjIGZ1bmNfY29udmVydF9maWxlX2NoZWNrIEFSRzEgQVJHMgorIyBWZXJpZnkgdGhhdCBBUkcxIChhIGZpbGUgbmFtZSBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisjIGZvcm1hdCBpbiBBUkcyLiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlIChyZXNldHRpbmcKKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIEFSRzEpLgorZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBpZiB0ZXN0IC16ICIkMiIgJiYgdGVzdCAtbiAiJDEiIDsgdGhlbgorICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKKyAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorICAgICMgRmFsbGJhY2s6CisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2NoZWNrCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayBGUk9NX1BBVEhTRVAgVE9fUEFUSFNFUCBGUk9NX1BBVEggVE9fUEFUSAorIyBWZXJpZnkgdGhhdCBGUk9NX1BBVEggKGEgcGF0aCBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0CisjIGZvcm1hdCBpbiBUT19QQVRILiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlLCByZXNldHRpbmcKKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIGEgc2ltcGxpc3RpYyBmYWxsYmFjayB2YWx1ZSAoc2VlIGJlbG93KS4KK2Z1bmNfY29udmVydF9wYXRoX2NoZWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAteiAiJDQiICYmIHRlc3QgLW4gIiQzIjsgdGhlbgorICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorICAgIGZ1bmNfZXJyb3IgIiAgXGAkMyciCisgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisgICAgIyBGYWxsYmFjay4gIFRoaXMgaXMgYSBkZWxpYmVyYXRlbHkgc2ltcGxpc3RpYyAiY29udmVyc2lvbiIgYW5kCisgICAgIyBzaG91bGQgbm90IGJlICJpbXByb3ZlZCIuICBTZWUgbGlidG9vbC5pbmZvLgorICAgIGlmIHRlc3QgIngkMSIgIT0gIngkMiI7IHRoZW4KKyAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycz0ic3wkMXwkMnxnIgorICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkMyIgfAorICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzImAKKyAgICBlbHNlCisgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzIgorICAgIGZpCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjaworCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwIEZST05UUEFUIEJBQ0tQQVQgUkVQTCBPUklHCisjIE1vZGlmaWVzIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCBieSBwcmVwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEZST05UUEFUCisjIGFuZCBhcHBlbmRpbmcgUkVQTCBpZiBPUklHIG1hdGNoZXMgQkFDS1BBVC4KK2Z1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAoKQoreworICAkb3B0X2RlYnVnCisgIGNhc2UgJDQgaW4KKyAgJDEgKSBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICA7OworICBlc2FjCisgIGNhc2UgJDQgaW4KKyAgJDIgKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgIiQzIgorICAgIDs7CisgIGVzYWMKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X2ZpbGVfY21kIEFSRycKKyMKKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKyMgUmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisKKworIyBmdW5jX3RvX2hvc3RfZmlsZSBBUkcKKyMgQ29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX3RvX2hvc3RfZmlsZSAoKQoreworICAkb3B0X2RlYnVnCisgICR0b19ob3N0X2ZpbGVfY21kICIkMSIKK30KKyMgZW5kIGZ1bmNfdG9faG9zdF9maWxlCisKKworIyBmdW5jX3RvX3Rvb2xfZmlsZSBBUkcgTEFaWQorIyBjb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gdG9vbGNoYWluIGZvcm1hdC4gUmV0dXJuCisjIHJlc3VsdCBpbiBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQuICBJZiB0aGUgY29udmVyc2lvbiBpbiB1c2UgaXMgbGlzdGVkCisjIGluICh0aGUgY29tbWEgc2VwYXJhdGVkKSBMQVpZLCBubyBjb252ZXJzaW9uIHRha2VzIHBsYWNlLgorZnVuY190b190b29sX2ZpbGUgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBjYXNlICwkMiwgaW4KKyAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKKyAgICAgIGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdD0kMQorICAgICAgOzsKKyAgICAqKQorICAgICAgJHRvX3Rvb2xfZmlsZV9jbWQgIiQxIgorICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQKKyAgICAgIDs7CisgIGVzYWMKK30KKyMgZW5kIGZ1bmNfdG9fdG9vbF9maWxlCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9ub29wIEFSRworIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9ub29wICgpCit7CisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiBBUkcKKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCisjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKyAgICAjIGJlY2F1c2UgJGJ1aWxkIGlzIGN5Z3dpbiwgd2UgY2FsbCAidGhlIiBjeWdwYXRoIGluICRQQVRIOyBubyBuZWVkIHRvIHVzZQorICAgICMgTFRfQ1lHUEFUSCBpbiB0aGlzIGNhc2UuCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PWBjeWdwYXRoIC1tICIkMSJgCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQKKyMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICBmaQorICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorfQorIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gQVJHCisjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgZmkKKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKK30KKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisKKworIyBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkCisjIGluIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQKKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgY29udmVydCBmcm9tICpuaXggdG8gdzMyLCB0aGVuIHVzZSBjeWdwYXRoIHRvIGNvbnZlcnQgZnJvbSB3MzIgdG8gY3lnd2luLgorICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgIGZpCisgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfcGF0aF9jbWQgQVJHJworIworIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgorIyBUaGUgcmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisjCisjIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gIElmCisjIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dAorIyBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KSBvbiBvdXRwdXQuCisjCisjIEFsbCBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246CisjICAgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgOiBmdW5jX2NvbnZlcnRfZmlsZV9YX3RvX1kgKCkKKyMgICBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgICAgICA6IGZ1bmNfY29udmVydF9wYXRoX1hfdG9fWSAoKQorIyB3aGVyZSwgZm9yIGFueSBnaXZlbiAkYnVpbGQvJGhvc3QgY29tYmluYXRpb24gdGhlICdYX3RvX1knIHZhbHVlIGlzIHRoZQorIyBzYW1lLiAgSWYgY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciBuZXcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucywKKyMgdGhlIHR3byBuZXcgZnVuY3Rpb25zIG11c3QgZm9sbG93IHRoaXMgcGF0dGVybiwgb3IgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKyMgd2lsbCBicmVhay4KKworCisjIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisjIEVuc3VyZXMgdGhhdCBmdW5jdGlvbiAicG9pbnRlciIgdmFyaWFibGUgJHRvX2hvc3RfcGF0aF9jbWQgaXMgc2V0IHRvIHRoZQorIyBhcHByb3ByaWF0ZSB2YWx1ZSwgYmFzZWQgb24gdGhlIHZhbHVlIG9mICR0b19ob3N0X2ZpbGVfY21kLgordG9faG9zdF9wYXRoX2NtZD0KK2Z1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCisgICAgZnVuY19zdHJpcG5hbWUgJ2Z1bmNfY29udmVydF9maWxlXycgJycgIiR0b19ob3N0X2ZpbGVfY21kIgorICAgIHRvX2hvc3RfcGF0aF9jbWQ9ImZ1bmNfY29udmVydF9wYXRoXyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fSIKKyAgZmkKK30KKworCisjIGZ1bmNfdG9faG9zdF9wYXRoIEFSRworIyBDb252ZXJ0cyB0aGUgcGF0aCBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorIyBpbiBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX3RvX2hvc3RfcGF0aCAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisgICR0b19ob3N0X3BhdGhfY21kICIkMSIKK30KKyMgZW5kIGZ1bmNfdG9faG9zdF9wYXRoCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9ub29wIEFSRworIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9ub29wICgpCit7CisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9ub29wCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorIyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbSBBUkcuICBNU1lTCisgICAgIyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZTsgY3lncGF0aCB0dXJucyB0aGVtIGludG8gJy47JyBhbmQgJzsuJzsKKyAgICAjIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMgorCisKKyMgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiBBUkcKKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC1tIC1wICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSJgCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisgIGZpCit9CisjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byB3MzIgZm9ybWF0LiAgUmVxdWlyZXMgYSB3aW5lIGVudmlyb25tZW50IGFuZAorIyBhIHdvcmtpbmcgd2luZXBhdGguICBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCitmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIKKworCisjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gTVNZUyB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgTFRfQ1lHUEFUSCBzZXQuCisjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CisgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiA6ICIkMSIKKyAgZmkKK30KKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luCisKKworIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luIEFSRworIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZCBpbiBhCisjIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQgaW4KKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiAoKQoreworICAkb3B0X2RlYnVnCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQorICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KKyAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCisgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgorICBmaQorfQorIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbgorCisKICMgZnVuY19tb2RlX2NvbXBpbGUgYXJnLi4uCiBmdW5jX21vZGVfY29tcGlsZSAoKQogewpAQCAtMTEzNywxMiArMTk4NSwxMiBAQAogCSAgOzsKIAogCS1waWUgfCAtZnBpZSB8IC1mUElFKQotICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKKyAgICAgICAgICBmdW5jX2FwcGVuZCBwaWVfZmxhZyAiICRhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAogCS1zaGFyZWQgfCAtc3RhdGljIHwgLXByZWZlci1waWMgfCAtcHJlZmVyLW5vbi1waWMpCi0JICBsYXRlcj0iJGxhdGVyICRhcmciCisJICBmdW5jX2FwcGVuZCBsYXRlciAiICRhcmciCiAJICBjb250aW51ZQogCSAgOzsKIApAQCAtMTE2MywxNSArMjAxMSwxNCBAQAogCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCiAJICBmb3IgYXJnIGluICRhcmdzOyBkbwogCSAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZF9xdW90ZWQgbGFzdGFyZyAiJGFyZyIKIAkgIGRvbmUKIAkgIElGUz0iJHNhdmVfaWZzIgogCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCiAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KLQkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGJhc2VfY29tcGlsZSAiICRsYXN0YXJnIgogCSAgY29udGludWUKIAkgIDs7CiAKQEAgLTExODcsOCArMjAzNCw3IEBACiAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCiAKICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCi0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKLSAgICAgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYmFzZV9jb21waWxlICIkbGFzdGFyZyIKICAgICBkb25lICMgZm9yIGFyZwogCiAgICAgY2FzZSAkYXJnX21vZGUgaW4KQEAgLTEyMTMsNyArMjA1OSw3IEBACiAgICAgKi5bY0NGU2lmbXNvXSB8IFwKICAgICAqLmFkYSB8ICouYWRiIHwgKi5hZHMgfCAqLmFzbSB8IFwKICAgICAqLmMrKyB8ICouY2MgfCAqLmlpIHwgKi5jbGFzcyB8ICouY3BwIHwgKi5jeHggfCBcCi0gICAgKi5bZkZdWzA5XT8gfCAqLmZvciB8ICouamF2YSB8ICoub2JqIHwgKi5zeCkKKyAgICAqLltmRl1bMDldPyB8ICouZm9yIHwgKi5qYXZhIHwgKi5vYmogfCAqLnN4IHwgKi5jdSB8ICouY3VwKQogICAgICAgZnVuY194Zm9ybSAiJGxpYm9iaiIKICAgICAgIGxpYm9iaj0kZnVuY194Zm9ybV9yZXN1bHQKICAgICAgIDs7CkBAIC0xMjg4LDcgKzIxMzQsNyBAQAogICAgICMgQ2FsY3VsYXRlIHRoZSBmaWxlbmFtZSBvZiB0aGUgb3V0cHV0IG9iamVjdCBpZiBjb21waWxlciBkb2VzCiAgICAgIyBub3Qgc3VwcG9ydCAtbyB3aXRoIC1jCiAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSBubzsgdGhlbgotICAgICAgb3V0cHV0X29iaj1gJEVDSE8gIlgkc3JjZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnIC1lICdzJVwuW14uXSokJSUnYC4ke29iamV4dH0KKyAgICAgIG91dHB1dF9vYmo9YCRFQ0hPICIkc3JjZmlsZSIgfCAkU0VEICdzJV4uKi8lJTsgcyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9CiAgICAgICBsb2NrZmlsZT0iJG91dHB1dF9vYmoubG9jayIKICAgICBlbHNlCiAgICAgICBvdXRwdXRfb2JqPQpAQCAtMTMxOSwxNyArMjE2NSwxNiBAQAogCSRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKIAlleGl0ICRFWElUX0ZBSUxVUkUKICAgICAgIGZpCi0gICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiIKKyAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkb3V0cHV0X29iaiIKICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgogICAgIGZpCiAKICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0Ci0gICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJGxvY2tmaWxlIgorICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkbG9ja2ZpbGUiCiAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKIAotICAgIGlmIHRlc3QgLW4gIiRmaXhfc3JjZmlsZV9wYXRoIjsgdGhlbgotICAgICAgZXZhbCBzcmNmaWxlPVwiJGZpeF9zcmNmaWxlX3BhdGhcIgotICAgIGZpCisgICAgZnVuY190b190b29sX2ZpbGUgIiRzcmNmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgIHNyY2ZpbGU9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgogICAgIHFzcmNmaWxlPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAogCkBAIC0xMzQ5LDcgKzIxOTQsNyBAQAogCiAgICAgICBpZiB0ZXN0IC16ICIkb3V0cHV0X29iaiI7IHRoZW4KIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJGxvYmoiCiAgICAgICBmaQogCiAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIglcCkBAIC0xMzk2LDExICsyMjQxLDExIEBACiAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgogICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0geWVzOyB0aGVuCi0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKICAgICAgIGZpCiAKICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgotICAgICAgY29tbWFuZD0iJGNvbW1hbmQkc3VwcHJlc3Nfb3V0cHV0IgorICAgICAgZnVuY19hcHBlbmQgY29tbWFuZCAiJHN1cHByZXNzX291dHB1dCIKICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKICAgICAgICAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKIApAQCAtMTQ0NSwxMyArMjI5MCwxMyBAQAogfQogCiAkb3B0X2hlbHAgfHwgewotdGVzdCAiJG1vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CiB9CiAKIGZ1bmNfbW9kZV9oZWxwICgpCiB7CiAgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCi0gICAgY2FzZSAkbW9kZSBpbgorICAgIGNhc2UgJG9wdF9tb2RlIGluCiAgICAgICAiIikKICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCiAgICAgICAgICMgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgZmlsZS4KQEAgLTE0ODIsMTAgKzIzMjcsMTEgQEAKIAogICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKICAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCi0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5Ci0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGQgUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGQgbm9uLVBJQyBvYmplY3RzIG9ubHkKICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKICAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKIAogQ09NUElMRS1DT01NQU5EIGlzIGEgY29tbWFuZCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIGEgXGBzdGFuZGFyZCcgb2JqZWN0IGZpbGUKIGZyb20gdGhlIGdpdmVuIFNPVVJDRUZJTEUuCkBAIC0xNTM4LDcgKzIzODQsNyBAQAogCiBUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2YgSU5TVEFMTC1DT01NQU5EIGFyZSB0cmVhdGVkIHNwZWNpYWxseToKIAotICAtaW5zdC1wcmVmaXggUFJFRklYLURJUiAgVXNlIFBSRUZJWC1ESVIgYXMgYSBzdGFnaW5nIGFyZWEgZm9yIGluc3RhbGxhdGlvbgorICAtaW5zdC1wcmVmaXgtZGlyIFBSRUZJWC1ESVIgIFVzZSBQUkVGSVgtRElSIGFzIGEgc3RhZ2luZyBhcmVhIGZvciBpbnN0YWxsYXRpb24KIAogVGhlIHJlc3Qgb2YgdGhlIGNvbXBvbmVudHMgYXJlIGludGVycHJldGVkIGFzIGFyZ3VtZW50cyB0byB0aGF0IGNvbW1hbmQgKG9ubHkKIEJTRC1jb21wYXRpYmxlIGluc3RhbGwgb3B0aW9ucyBhcmUgcmVjb2duaXplZCkuIgpAQCAtMTU1OCw2ICsyNDA0LDggQEAKIAogICAtYWxsLXN0YXRpYyAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBhdCBhbGwKICAgLWF2b2lkLXZlcnNpb24gICAgZG8gbm90IGFkZCBhIHZlcnNpb24gc3VmZml4IGlmIHBvc3NpYmxlCisgIC1iaW5kaXIgQklORElSICAgIHNwZWNpZnkgcGF0aCB0byBiaW5hcmllcyBkaXJlY3RvcnkgKGZvciBzeXN0ZW1zIHdoZXJlCisgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcyBtdXN0IGJlIGZvdW5kIGluIHRoZSBQQVRIIHNldHRpbmcgYXQgcnVudGltZSkKICAgLWRsb3BlbiBGSUxFICAgICAgXGAtZGxwcmVvcGVuJyBGSUxFIGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZCBhdCBydW50aW1lCiAgIC1kbHByZW9wZW4gRklMRSAgIGxpbmsgaW4gRklMRSBhbmQgYWRkIGl0cyBzeW1ib2xzIHRvIGx0X3ByZWxvYWRlZF9zeW1ib2xzCiAgIC1leHBvcnQtZHluYW1pYyAgIGFsbG93IHN5bWJvbHMgZnJvbSBPVVRQVVQtRklMRSB0byBiZSByZXNvbHZlZCB3aXRoIGRsc3ltKDMpCkBAIC0xNTg2LDYgKzI0MzQsMTEgQEAKICAgLXZlcnNpb24taW5mbyBDVVJSRU5UWzpSRVZJU0lPTls6QUdFXV0KICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSBsaWJyYXJ5IHZlcnNpb24gaW5mbyBbZWFjaCB2YXJpYWJsZSBkZWZhdWx0cyB0byAwXQogICAtd2VhayBMSUJOQU1FICAgICBkZWNsYXJlIHRoYXQgdGhlIHRhcmdldCBwcm92aWRlcyB0aGUgTElCTkFNRSBpbnRlcmZhY2UKKyAgLVdjLEZMQUcKKyAgLVhjb21waWxlciBGTEFHICAgcGFzcyBsaW5rZXItc3BlY2lmaWMgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKKyAgLVdsLEZMQUcKKyAgLVhsaW5rZXIgRkxBRyAgICAgcGFzcyBsaW5rZXItc3BlY2lmaWMgRkxBRyBkaXJlY3RseSB0byB0aGUgbGlua2VyCisgIC1YQ0NsaW5rZXIgRkxBRyAgIHBhc3MgbGluay1zcGVjaWZpYyBGTEFHIHRvIHRoZSBjb21waWxlciBkcml2ZXIgKENDKQogCiBBbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgogCkBAIC0xNjE5LDE4ICsyNDcyLDQ0IEBACiAgICAgICAgIDs7CiAKICAgICAgICopCi0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKyAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKICAgICAgICAgOzsKICAgICBlc2FjCiAKLSAgICAkRUNITworICAgIGVjaG8KICAgICAkRUNITyAiVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMuIgotCi0gICAgZXhpdCAkPwogfQogCi0gICMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQotICAkb3B0X2hlbHAgJiYgZnVuY19tb2RlX2hlbHAKKyMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQoraWYgJG9wdF9oZWxwOyB0aGVuCisgIGlmIHRlc3QgIiRvcHRfaGVscCIgPSA6OyB0aGVuCisgICAgZnVuY19tb2RlX2hlbHAKKyAgZWxzZQorICAgIHsKKyAgICAgIGZ1bmNfaGVscCBub2V4aXQKKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisJZnVuY19tb2RlX2hlbHAKKyAgICAgIGRvbmUKKyAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJworICAgIHsKKyAgICAgIGZ1bmNfaGVscCBub2V4aXQKKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisJZWNobworCWZ1bmNfbW9kZV9oZWxwCisgICAgICBkb25lCisgICAgfSB8CisgICAgc2VkICcxZAorICAgICAgL15XaGVuIHJlcG9ydGluZy8sL15SZXBvcnQveworCUgKKwlkCisgICAgICB9CisgICAgICAkeAorICAgICAgL2luZm9ybWF0aW9uIGFib3V0IG90aGVyIG1vZGVzL2QKKyAgICAgIC9tb3JlIGRldGFpbGVkIC4qTU9ERS9kCisgICAgICBzL15Vc2FnZTouKi0tbW9kZT1cKFteIF0qXCkgLiovRGVzY3JpcHRpb24gb2YgXDEgbW9kZTovJworICBmaQorICBleGl0ICQ/CitmaQogCiAKICMgZnVuY19tb2RlX2V4ZWN1dGUgYXJnLi4uCkBAIC0xNjQzLDEzICsyNTIyLDE2IEBACiAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgogCiAgICAgIyBIYW5kbGUgLWRsb3BlbiBmbGFncyBpbW1lZGlhdGVseS4KLSAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbworICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbwogICAgICAgdGVzdCAtZiAiJGZpbGUiIFwKIAl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCiAKICAgICAgIGRpcj0KICAgICAgIGNhc2UgJGZpbGUgaW4KICAgICAgICoubGEpCisJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgorCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAogCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKQEAgLTE2NzEsNyArMjU1Myw3IEBACiAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKIAogCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgotCSAgZGlyPSIkZGlyLyRvYmpkaXIiCisJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgogCWVsc2UKIAkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgpAQCAtMTcxMiw3ICsyNTk0LDcgQEAKICAgICBmb3IgZmlsZQogICAgIGRvCiAgICAgICBjYXNlICRmaWxlIGluCi0gICAgICAtKikgOzsKKyAgICAgIC0qIHwgKi5sYSB8ICoubG8gKSA7OwogICAgICAgKikKIAkjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyByZWFsbHkgYSBsaWJ0b29sIHByb2dyYW0uCiAJaWYgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgIiRmaWxlIjsgdGhlbgpAQCAtMTcyOCw4ICsyNjEwLDcgQEAKIAk7OwogICAgICAgZXNhYwogICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KLSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmaWxlIgotICAgICAgYXJncz0iJGFyZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgogICAgIGRvbmUKIAogICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCkBAIC0xNzU0LDI5ICsyNjM1LDY2IEBACiAgICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgogICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAJZXZhbCAiXCRFQ0hPIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKLQkkRUNITyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorCWVjaG8gImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKICAgICAgIGZpCiAgICAgICAkRUNITyAiJGNtZCRhcmdzIgogICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgZmkKIH0KIAotdGVzdCAiJG1vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KIGZ1bmNfbW9kZV9maW5pc2ggKCkKIHsKICAgICAkb3B0X2RlYnVnCi0gICAgbGliZGlycz0iJG5vbm9wdCIKKyAgICBsaWJzPQorICAgIGxpYmRpcnM9CiAgICAgYWRtaW5jbWRzPQogCi0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSAgICAgIGZvciBkaXIKLSAgICAgIGRvCi0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKLSAgICAgIGRvbmUKKyAgICBmb3Igb3B0IGluICIkbm9ub3B0IiAkezErIiRAIn0KKyAgICBkbworICAgICAgaWYgdGVzdCAtZCAiJG9wdCI7IHRoZW4KKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKIAorICAgICAgZWxpZiB0ZXN0IC1mICIkb3B0IjsgdGhlbgorCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCisJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKKwllbHNlCisJICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCWZpCisKKyAgICAgIGVsc2UKKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCisgICAgICBmaQorICAgIGRvbmUKKworICAgIGlmIHRlc3QgLW4gIiRsaWJzIjsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJGx0X3N5c3Jvb3QiOyB0aGVuCisgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisgICAgICAgIHN5c3Jvb3RfY21kPSJzL1woWyAnXVwpJHN5c3Jvb3RfcmVnZXgvXDEvZzsiCisgICAgICBlbHNlCisgICAgICAgIHN5c3Jvb3RfY21kPQorICAgICAgZmkKKworICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCisgICAgICBpZiAkb3B0X2RyeV9ydW47IHRoZW4KKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKKyAgICAgICAgZG9uZQorICAgICAgZWxzZQorICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAorICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAorCSAgICA+ICR0bXBkaXIvdG1wLWxhCisJICBtdiAtZiAkdG1wZGlyL3RtcC1sYSAkbGliCisJZG9uZQorICAgICAgICAke1JNfXIgIiR0bXBkaXIiCisgICAgICBmaQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgogICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCiAJICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgZmluaXNoIGNvbW1hbmRzLgpAQCAtMTc4Niw3ICsyNzA0LDcgQEAKIAlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCiAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCiAJICBldmFsIGNtZHM9XCIkZmluaXNoX2V2YWxcIgotCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKICAgICAgICAkY21kcyIKIAlmaQogICAgICAgZG9uZQpAQCAtMTc5NSw1MyArMjcxMyw1NSBAQAogICAgICMgRXhpdCBoZXJlIGlmIHRoZXkgd2FudGVkIHNpbGVudCBtb2RlLgogICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUwogCi0gICAgJEVDSE8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCi0gICAgJEVDSE8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLSAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCi0gICAgZG9uZQotICAgICRFQ0hPCi0gICAgJEVDSE8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotICAgICRFQ0hPICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLSAgICAkRUNITyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLSAgICAkRUNITyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0gICAgICAkRUNITyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotICAgICAgJEVDSE8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSAgICAgIGxpYmRpcj1MSUJESVIKLSAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKyAgICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCisJJEVDSE8gIiAgICRsaWJkaXIiCisgICAgICBkb25lCisgICAgICBlY2hvCisgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgorICAgICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKyAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorICAgICAgZmkKKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorCWxpYmRpcj1MSUJESVIKKwlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCiAKLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgotICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgotICAgIGZpCi0gICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKLSAgICBmaQotICAgICRFQ0hPCisJJEVDSE8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorCSRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKKyAgICAgIGZpCisgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorCWVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorICAgICAgZmkKKyAgICAgIGVjaG8KIAotICAgICRFQ0hPICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKLSAgICBjYXNlICRob3N0IGluCi0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQotICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKLQkkRUNITyAicGFnZXMuIgotCTs7Ci0gICAgICAqKQotICAgICAgICAkRUNITyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICAgICRFQ0hPICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAorICAgICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCisgICAgICBjYXNlICRob3N0IGluCisJc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCisJICBlY2hvICJwYWdlcy4iCisJICA7OworCSopCisJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKwkgIDs7CisgICAgICBlc2FjCisgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorICAgIGZpCiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiB9CiAKLXRlc3QgIiRtb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQordGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCkBAIC0xODUyLDcgKzI3NzIsNyBAQAogICAgICMgaW5zdGFsbF9wcm9nIChlc3BlY2lhbGx5IG9uIFdpbmRvd3MgTlQpLgogICAgIGlmIHRlc3QgIiRub25vcHQiID0gIiRTSEVMTCIgfHwgdGVzdCAiJG5vbm9wdCIgPSAvYmluL3NoIHx8CiAgICAgICAgIyBBbGxvdyB0aGUgdXNlIG9mIEdOVSBzaHRvb2wncyBpbnN0YWxsIGNvbW1hbmQuCi0gICAgICAgJEVDSE8gIlgkbm9ub3B0IiB8ICRHUkVQIHNodG9vbCA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgY2FzZSAkbm9ub3B0IGluICpzaHRvb2wqKSA6OzsgKikgZmFsc2U7OyBlc2FjOyB0aGVuCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbm9ub3B0IgogICAgICAgaW5zdGFsbF9wcm9nPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQgIgpAQCAtMTg2Niw3ICsyNzg2LDEyIEBACiAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgogICAgICMgQWVzdGhldGljYWxseSBxdW90ZSBpdC4KICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSRpbnN0YWxsX3Byb2cKKyAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCisgICAgICAqW1xcXCAvXWNwXCAqKSBpbnN0YWxsX2NwPTogOzsKKyAgICAgICopIGluc3RhbGxfY3A9ZmFsc2UgOzsKKyAgICBlc2FjCiAKICAgICAjIFdlIG5lZWQgdG8gYWNjZXB0IGF0IGxlYXN0IGFsbCB0aGUgQlNEIGluc3RhbGwgZmxhZ3MuCiAgICAgZGVzdD0KQEAgLTE4NzYsMTAgKzI4MDEsMTIgQEAKICAgICBpbnN0YWxsX3R5cGU9CiAgICAgaXNkaXI9bm8KICAgICBzdHJpcG1lPQorICAgIG5vX21vZGU9OgogICAgIGZvciBhcmcKICAgICBkbworICAgICAgYXJnMj0KICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgotCWZpbGVzPSIkZmlsZXMgJGRlc3QiCisJZnVuY19hcHBlbmQgZmlsZXMgIiAkZGVzdCIKIAlkZXN0PSRhcmcKIAljb250aW51ZQogICAgICAgZmkKQEAgLTE4ODcsMTAgKzI4MTQsOSBAQAogICAgICAgY2FzZSAkYXJnIGluCiAgICAgICAtZCkgaXNkaXI9eWVzIDs7CiAgICAgICAtZikKLQljYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCi0JKltcXFwgL11jcFwgKikgOzsKLQkqKSBwcmV2PSRhcmcgOzsKLQllc2FjCisJaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQorCSAgcHJldj0kYXJnCisJZmkKIAk7OwogICAgICAgLWcgfCAtbSB8IC1vKQogCXByZXY9JGFyZwpAQCAtMTkwNCw2ICsyODMwLDEwIEBACiAgICAgICAqKQogCSMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkZWQgYW4gYXJndW1lbnQsIHRoZW4gc2tpcCBpdC4KIAlpZiB0ZXN0IC1uICIkcHJldiI7IHRoZW4KKwkgIGlmIHRlc3QgIngkcHJldiIgPSB4LW0gJiYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSI7IHRoZW4KKwkgICAgYXJnMj0kaW5zdGFsbF9vdmVycmlkZV9tb2RlCisJICAgIG5vX21vZGU9ZmFsc2UKKwkgIGZpCiAJICBwcmV2PQogCWVsc2UKIAkgIGRlc3Q9JGFyZwpAQCAtMTkxNCw3ICsyODQ0LDExIEBACiAKICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgYXJndW1lbnQuCiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKyAgICAgIGlmIHRlc3QgLW4gIiRhcmcyIjsgdGhlbgorCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgorICAgICAgZmkKKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAgICAgZG9uZQogCiAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXApAQCAtMTkyMyw2ICsyODU3LDEzIEBACiAgICAgdGVzdCAtbiAiJHByZXYiICYmIFwKICAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKIAorICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCisgICAgICBpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCisJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIKKwlmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgZmkKKyAgICBmaQorCiAgICAgaWYgdGVzdCAteiAiJGZpbGVzIjsgdGhlbgogICAgICAgaWYgdGVzdCAteiAiJGRlc3QiOyB0aGVuCiAJZnVuY19mYXRhbF9oZWxwICJubyBmaWxlIG9yIGRlc3RpbmF0aW9uIHNwZWNpZmllZCIKQEAgLTE5NzcsMTAgKzI5MTgsMTMgQEAKICAgICAgIGNhc2UgJGZpbGUgaW4KICAgICAgICouJGxpYmV4dCkKIAkjIERvIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxhdGVyLgotCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgorCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKIAk7OwogCiAgICAgICAqLmxhKQorCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKwogCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCiAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgpAQCAtMTk5NCwyMyArMjkzOCwyMyBAQAogCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCiAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZWxzZQogCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgogCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmdXR1cmVfbGliZGlycyAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKIAogCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgogCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0JZGlyPSIkZGlyJG9iamRpciIKKwlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCiAKIAlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCiAJICAjIERldGVybWluZSB0aGUgcHJlZml4IHRoZSB1c2VyIGhhcyBhcHBsaWVkIHRvIG91ciBmdXR1cmUgZGlyLgotCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiWCRkZXN0ZGlyIiB8ICRYc2VkIC1lICJzJSRsaWJkaXJcJCUlImAKKwkgIGluc3RfcHJlZml4X2Rpcj1gJEVDSE8gIiRkZXN0ZGlyIiB8ICRTRUQgLWUgInMlJGxpYmRpclwkJSUiYAogCiAJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCiAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0CkBAIC0yMDIzLDkgKzI5NjcsOSBAQAogCiAJICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCSAgICAjIFN0aWNrIHRoZSBpbnN0X3ByZWZpeF9kaXIgZGF0YSBpbnRvIHRoZSBsaW5rIGNvbW1hbmQuCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUtaW5zdC1wcmVmaXgtZGlyICRpbnN0X3ByZWZpeF9kaXIlImAKIAkgIGVsc2UKLQkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICJzJUBpbnN0X3ByZWZpeF9kaXJAJSUiYAogCSAgZmkKIAogCSAgZnVuY193YXJuaW5nICJyZWxpbmtpbmcgXGAkZmlsZSciCkBAIC0yMDQzLDcgKzI5ODcsNyBAQAogCSAgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIiAmJiBzcmNuYW1lPSIkcmVhbG5hbWUiVAogCiAJICAjIEluc3RhbGwgdGhlIHNoYXJlZCBsaWJyYXJ5IGFuZCBidWlsZCB0aGUgc3ltbGlua3MuCi0JICBmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgXAorCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3NoYXJlZF9wcm9nICRkaXIvJHNyY25hbWUgJGRlc3RkaXIvJHJlYWxuYW1lIiBcCiAJICAgICAgJ2V4aXQgJD8nCiAJICB0c3RyaXBtZT0iJHN0cmlwbWUiCiAJICBjYXNlICRob3N0X29zIGluCkBAIC0yMDgzLDcgKzMwMjcsNyBAQAogCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCiAKIAkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCi0JdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKIAk7OwogCiAgICAgICAqLmxvKQpAQCAtMjE4Myw3ICszMTI3LDcgQEAKIAkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KIAkgICAgICBmdW5jX3NvdXJjZSAiJGxpYiIKIAkgICAgZmkKLQkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIGxpYmZpbGU9IiRsaWJkaXIvImAkRUNITyAiJGxpYiIgfCAkU0VEICdzJV4uKi8lJWcnYCAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKIAkgICAgaWYgdGVzdCAtbiAiJGxpYmRpciIgJiYgdGVzdCAhIC1mICIkbGliZmlsZSI7IHRoZW4KIAkgICAgICBmdW5jX3dhcm5pbmcgIlxgJGxpYicgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBcYCRsaWJkaXInIgogCSAgICAgIGZpbmFsaXplPW5vCkBAIC0yMjAyLDcgKzMxNDYsNyBAQAogCQlmaWxlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAJICAgICAgICBvdXRwdXRuYW1lPSIkdG1wZGlyLyRmaWxlIgogCSAgICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCSAgICAgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJHJlbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJ2AKKwkgICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0bmFtZSInJWcnYAogCiAJICAgICAgICAkb3B0X3NpbGVudCB8fCB7CiAJICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJHJlbGlua19jb21tYW5kIgpAQCAtMjIyMSw3ICszMTY1LDcgQEAKIAkgICAgfQogCSAgZWxzZQogCSAgICAjIEluc3RhbGwgdGhlIGJpbmFyeSB0aGF0IHdlIGNvbXBpbGVkIGVhcmxpZXIuCi0JICAgIGZpbGU9YCRFQ0hPICJYJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRYc2VkIC1lICJzJVwoW14vXSpcKSQlJG9iamRpci9cMSUiYAorCSAgICBmaWxlPWAkRUNITyAiJGZpbGUkc3RyaXBwZWRfZXh0IiB8ICRTRUQgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCiAJICBmaQogCWZpCiAKQEAgLTIyODAsNyArMzIyNCw3IEBACiAgICAgZmkKIH0KIAotdGVzdCAiJG1vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KK3Rlc3QgIiRvcHRfbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQogCiAKICMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCkBAIC0yMzIzLDYgKzMyNjcsMjIgQEAKIGV4dGVybiBcIkNcIiB7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDQpICYmIChfX0dOVUNfTUlOT1JfXyA+PSA0KSkgfHwgKF9fR05VQ19fID4gNCkpCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N0cmljdC1wcm90b3R5cGVzXCIKKyNlbmRpZgorCisvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisjZWxzZQorIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKyNlbmRpZgorCiAvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAogIgogCkBAIC0yMzMyLDEwICszMjkyLDExIEBACiAJICAkb3B0X2RyeV9ydW4gfHwgZWNobyAnOiBAUFJPR1JBTUAgJyA+ICIkbmxpc3QiCiAKIAkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KLQkgIHByb2dmaWxlcz1gJEVDSE8gIlgkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCSAgcHJvZ2ZpbGVzPWAkRUNITyAiJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAogCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCi0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgotCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRwcm9nZmlsZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkcHJvZ2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKKwkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKIAkgIGRvbmUKIAogCSAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KQEAgLTIzNzEsNyArMzMzMiw3IEBACiAJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKIAkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KLQkgICAgICAgICpjeWd3aW4gfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisJICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKIAkgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKIAkgICAgICAgICAgZXZhbCAnY2F0ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwogCSAgICAgICAgICA7OwpAQCAtMjM4NCwxMCArMzM0NSw1MiBAQAogCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgogCSAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZSIKIAkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQkgICRvcHRfZHJ5X3J1biB8fCB7Ci0JICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCi0JICAgIGV2YWwgIiROTSAkZGxwcmVmaWxlIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLQkgIH0KKyAgICAgICAgICBjYXNlICRob3N0IGluCisJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAgICMgaWYgYW4gaW1wb3J0IGxpYnJhcnksIHdlIG5lZWQgdG8gb2J0YWluIGRsbmFtZQorCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgorCSAgICAgICAgZnVuY190cl9zaCAiJGRscHJlZmlsZSIKKwkgICAgICAgIGV2YWwgImN1cnJfbGFmaWxlPVwkbGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQiCisJICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgorCSAgICAgICAgaWYgdGVzdCAtbiAiJGN1cnJfbGFmaWxlIiAmJiBmdW5jX2xhbGliX3AgIiRjdXJyX2xhZmlsZSI7IHRoZW4KKwkgICAgICAgICAgIyBVc2Ugc3Vic2hlbGwsIHRvIGF2b2lkIGNsb2JiZXJpbmcgY3VycmVudCB2YXJpYWJsZSB2YWx1ZXMKKwkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAorCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsbmFtZSIgOyB0aGVuCisJICAgICAgICAgICAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZV9kbG5hbWUiCisJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkgICAgICAgICAgZWxzZQorCSAgICAgICAgICAgICMgbm8gbGFmaWxlLiB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIC1kbHByZW9wZW4gPGltcG9ydCBsaWJyYXJ5Pi4KKwkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCisJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9JHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CisJICAgICAgICAgIGZpCisJICAgICAgICBmaQorCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA7IHRoZW4KKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJworCSAgICAgICAgICBlbHNlCisJICAgICAgICAgICAgZnVuY193YXJuaW5nICJDb3VsZCBub3QgY29tcHV0ZSBETEwgbmFtZSBmcm9tICRuYW1lIgorCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgICAgICAgIGZpCisJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwKKwkgICAgICAgICAgICAkU0VEIC1lICcvSSBfX2ltcC9kJyAtZSAncy9JIF9fbm1fL0QgLztzL19ubV9fLy8nID4+ICckbmxpc3QnIgorCSAgICAgICAgfQorCSAgICAgIGVsc2UgIyBub3QgYW4gaW1wb3J0IGxpYgorCSAgICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKKwkgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisJICAgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICAgICAgICB9CisJICAgICAgZmkKKwkgICAgOzsKKwkgICAgKikKKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKKwkgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorCSAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgICAgICB9CisJICAgIDs7CisgICAgICAgICAgZXNhYwogCWRvbmUKIAogCSRvcHRfZHJ5X3J1biB8fCB7CkBAIC0yNDE1LDM2ICszNDE4LDE5IEBACiAJICBpZiB0ZXN0IC1mICIkbmxpc3QiUzsgdGhlbgogCSAgICBldmFsICIkZ2xvYmFsX3N5bWJvbF90b19jZGVjbCInIDwgIiRubGlzdCJTID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIicKIAkgIGVsc2UKLQkgICAgJEVDSE8gJy8qIE5PTkUgKi8nID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgorCSAgICBlY2hvICcvKiBOT05FICovJyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKIAkgIGZpCiAKLQkgICRFQ0hPID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogICBjb25zdCBjaGFyICpuYW1lOwogICB2b2lkICphZGRyZXNzOwogfSBsdF9kbHN5bWxpc3Q7Ci0iCi0JICBjYXNlICRob3N0IGluCi0JICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLQkgICAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCi0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgotICAgb24gcHNldWRvLXJlbG9jcy4gICovIgotCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLQkgICpvc2Y1KikKLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCi0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OwotCSAgKikKLQkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKLQkgIGVzYWMKLQotCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi1leHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorZXh0ZXJuIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAogbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdOwotJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CiBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW10gPQoge1wKICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCkBAIC0yNDU3LDcgKzM0NDMsNyBAQAogCSAgICBldmFsICIkZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiA8ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgogCSAgICA7OwogCSAgZXNhYwotCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisJICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAogICB7MCwgKHZvaWQgKikgMH0KIH07CiAKQEAgLTI1MDAsNyArMzQ4Niw3IEBACiAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCiAJICBjYXNlICRhcmcgaW4KIAkgIC1waWUgfCAtZnBpZSB8IC1mUElFKSA7OwotCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHN5bXRhYl9jZmxhZ3MgIiAkYXJnIiA7OwogCSAgZXNhYwogCWRvbmUKIApAQCAtMjUxNSwxNiArMzUwMSwxNiBAQAogCWNhc2UgJGhvc3QgaW4KIAkqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKIAkgIGlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiI7IHRoZW4KLQkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAotCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKKwkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8kbXlfb3V0cHV0bmFtZS5kZWYgJHN5bWZpbGVvYmolImAKKwkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAogCSAgZWxzZQotCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKLQkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfY29tbWFuZCIgfCAkU0VEICJzJUBTWU1GSUxFQCUkc3ltZmlsZW9iaiUiYAorCSAgICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKIAkgIGZpCiAJICA7OwogCSopCi0JICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKLQkgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICBmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNFRCAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKIAkgIDs7CiAJZXNhYwogCTs7CkBAIC0yNTM4LDggKzM1MjQsOCBAQAogICAgICAgIyByZWFsbHkgd2FzIHJlcXVpcmVkLgogCiAgICAgICAjIE51bGxpZnkgdGhlIHN5bWJvbCBmaWxlLgotICAgICAgY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlIEBTWU1GSUxFQCUlImAKKyAgICAgIGNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAicyUgQFNZTUZJTEVAJSUiYAorICAgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIiRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTRUQgInMlIEBTWU1GSUxFQCUlImAKICAgICBmaQogfQogCkBAIC0yNTQ5LDYgKzM1MzUsNyBAQAogIyBOZWVkIGEgbG90IG9mIGdvbyB0byBoYW5kbGUgKmJvdGgqIERMTHMgYW5kIGltcG9ydCBsaWJzCiAjIEhhcyB0byBiZSBhIHNoZWxsIGZ1bmN0aW9uIGluIG9yZGVyIHRvICdlYXQnIHRoZSBhcmd1bWVudAogIyB0aGF0IGlzIHN1cHBsaWVkIHdoZW4gJGZpbGVfbWFnaWNfY29tbWFuZCBpcyBjYWxsZWQuCisjIERlc3BpdGUgdGhlIG5hbWUsIGFsc28gZGVhbCB3aXRoIDY0IGJpdCBiaW5hcmllcy4KIGZ1bmNfd2luMzJfbGliaWQgKCkKIHsKICAgJG9wdF9kZWJ1ZwpAQCAtMjU1OSw5ICszNTQ2LDExIEBACiAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0IgogICAgIDs7CiAgICphclwgYXJjaGl2ZSopICMgY291bGQgYmUgYW4gaW1wb3J0LCBvciBzdGF0aWMKKyAgICAjIEtlZXAgdGhlIGVncmVwIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gX0xUX0NIRUNLX01BR0lDX01FVEhPRC4KICAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8Ci0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCBwZS1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nID4vZGV2L251bGwgOyB0aGVuCi0gICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgJDEgfAorICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCisgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgfAogCSRTRUQgLW4gLWUgJwogCSAgICAxLDEwMHsKIAkJLyBJIC97CkBAIC0yNTkwLDYgKzM1NzksMTMxIEBACiAgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKIH0KIAorIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgQVJHCisjCisjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCisjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorIyBpbXBvcnQgbGlicmFyeSBBUkcuCisjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCit7CisgICRvcHRfZGVidWcKKyAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YCRETExUT09MIC0taWRlbnRpZnktc3RyaWN0IC0taWRlbnRpZnkgIiQxImAKK30KKworIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSBTRUNUSU9OX05BTUUgTElCTkFNRXMKKyMKKyMgVGhlIGlzIHRoZSBjb3JlIG9mIGEgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgYQorIyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBuYW1lIG9mIHRoZQorIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KKyMKKyMgU0VDVElPTl9OQU1FIGlzIGVpdGhlciAuaWRhdGEkNiBvciAuaWRhdGEkNywgZGVwZW5kaW5nCisjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCisjCisjIEVjaG9zIHRoZSBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZQorIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCitmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAoKQoreworICAkb3B0X2RlYnVnCisgIG1hdGNoX2xpdGVyYWw9YCRFQ0hPICIkMSIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAorICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKKyAgICAgICMgUGxhY2UgbWFya2VyIGF0IGJlZ2lubmluZyBvZiBhcmNoaXZlIG1lbWJlciBkbGxuYW1lIHNlY3Rpb24KKyAgICAgIHMvLiovPT09PU1BUks9PT09LworICAgICAgcAorICAgICAgZAorICAgIH0KKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0CisgICAgIyBhcmUgYWx3YXlzIHVuaW50ZXJlc3RpbmcKKyAgICAvOlsJIF0qZmlsZSBmb3JtYXQgcGVbaV1ceywxXH0tL2QKKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKKyAgICAjIEVuc3VyZSBtYXJrZXIgaXMgcHJpbnRlZAorICAgIC9ePT09PU1BUks9PT09L3AKKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycworICAgIC9eLlx7NDNcfS8hZAorICAgICMgRnJvbSByZW1haW5pbmcgbGluZXMsIHJlbW92ZSBmaXJzdCA0MyBjaGFyYWN0ZXJzCisgICAgcy9eLlx7NDNcfS8vJyB8CisgICAgJFNFRCAtbiAnCisgICAgICAjIEpvaW4gbWFya2VyIGFuZCBhbGwgbGluZXMgdW50aWwgbmV4dCBtYXJrZXIgaW50byBhIHNpbmdsZSBsaW5lCisgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCisgICAgICBICisgICAgICAkIGIgcGFyYQorICAgICAgYgorICAgICAgOnBhcmEKKyAgICAgIHgKKyAgICAgIHMvXG4vL2cKKyAgICAgICMgUmVtb3ZlIHRoZSBtYXJrZXIKKyAgICAgIHMvXj09PT1NQVJLPT09PS8vCisgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCisgICAgICBzL1tcLiBcdF0qJC8vCisgICAgICAjIFByaW50CisgICAgICAvLi9wJyB8CisgICAgIyB3ZSBub3cgaGF2ZSBhIGxpc3QsIG9uZSBlbnRyeSBwZXIgbGluZSwgb2YgdGhlIHN0cmluZ2lmaWVkCisgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCisgICAgIyBhbGwgdGhvc2Ugd2hpY2ggaGF2ZSBhIGZpcnN0IG9yIHNlY29uZCBjaGFyYWN0ZXIgdGhhdCBpcworICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQorICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCisgICAgIyAweDMwMmYgZXhwb3J0cyAtLSBidXQgd2lsbCBmYWlsIGZvciBETExzIHdob3NlIG5hbWUgYWN0dWFsbHkKKyAgICAjIGJlZ2lucyB3aXRoIGEgbGl0ZXJhbCAnLicgb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5CisgICAgIyBhICcuJy4KKyAgICAjCisgICAgIyBPZiB0aG9zZSB0aGF0IHJlbWFpbiwgcHJpbnQgdGhlIGZpcnN0IG9uZS4KKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJworfQorCisjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCisjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCitmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICgpCit7CisgICRvcHRfZGVidWcKKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKK30KKworIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCisjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKyMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCitmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgKCkKK3sKKyAgJG9wdF9kZWJ1ZworICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAorICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCit9CisKKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRworIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorIworIyBUaGlzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGZvciB1c2Ugd2hlbiAkRExMVE9PTAorIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCisjIEludm9rZWQgYnkgZXZhbCdpbmcgdGhlIGxpYnRvb2wgdmFyaWFibGUKKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisjICAgICRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrICgpCit7CisgICRvcHRfZGVidWcKKyAgaWYgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAiJDEiIDsgdGhlbgorICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ3JyAiJDEiYAorICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgorICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5CisgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNicgIiQxImAKKyAgZWxzZQorICAgICMgdW5rbm93bgorICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PSIiCisgIGZpCit9CiAKIAogIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCkBAIC0yNTk4LDcgKzM3MTIsMTggQEAKICAgICAkb3B0X2RlYnVnCiAgICAgZl9leF9hbl9hcl9kaXI9IiQxIjsgc2hpZnQKICAgICBmX2V4X2FuX2FyX29sZGxpYj0iJDEiCi0gICAgZnVuY19zaG93X2V2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwiXCRmX2V4X2FuX2FyX29sZGxpYlwiKSIgJ2V4aXQgJD8nCisgICAgaWYgdGVzdCAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiIgPSB5ZXM7IHRoZW4KKyAgICAgIGxvY2tmaWxlPSRmX2V4X2FuX2FyX29sZGxpYi5sb2NrCisgICAgICB1bnRpbCAkb3B0X2RyeV9ydW4gfHwgbG4gIiRwcm9ncGF0aCIgIiRsb2NrZmlsZSIgMj4vZGV2L251bGw7IGRvCisJZnVuY19lY2hvICJXYWl0aW5nIGZvciAkbG9ja2ZpbGUgdG8gYmUgcmVtb3ZlZCIKKwlzbGVlcCAyCisgICAgICBkb25lCisgICAgZmkKKyAgICBmdW5jX3Nob3dfZXZhbCAiKGNkIFwkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggXCJcJGZfZXhfYW5fYXJfb2xkbGliXCIpIiBcCisJCSAgICdzdGF0PSQ/OyBybSAtZiAiJGxvY2tmaWxlIjsgZXhpdCAkc3RhdCcKKyAgICBpZiB0ZXN0ICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIiA9IHllczsgdGhlbgorICAgICAgJG9wdF9kcnlfcnVuIHx8IHJtIC1mICIkbG9ja2ZpbGUiCisgICAgZmkKICAgICBpZiAoJEFSIHQgIiRmX2V4X2FuX2FyX29sZGxpYiIgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogICAgICA6CiAgICAgZWxzZQpAQCAtMjY2OSw3ICszNzk0LDcgQEAKIAkgICAgZGFyd2luX2ZpbGU9CiAJICAgIGRhcndpbl9maWxlcz0KIAkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCi0JICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCisJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAogCSAgICAgICRMSVBPIC1jcmVhdGUgLW91dHB1dCAiJGRhcndpbl9maWxlIiAkZGFyd2luX2ZpbGVzCiAJICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0CiAJICAgICRSTSAtcmYgdW5mYXQtJCQKQEAgLTI2ODQsMjUgKzM4MDksMzAgQEAKICAgICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgIiRteV94ZGlyIiAiJG15X3hhYnMiCiAJOzsKICAgICAgIGVzYWMKLSAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkTkwyU1BgCisgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgc29ydCB8ICROTDJTUGAKICAgICBkb25lCiAKICAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKIH0KIAogCi0KLSMgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgW2FyZz1ub10KKyMgZnVuY19lbWl0X3dyYXBwZXIgW2FyZz1ub10KICMKLSMgRW1pdCB0aGUgZmlyc3QgcGFydCBvZiBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgotIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbiBhc3NvY2lhdGVkIHdpdGgKLSMgZnVuY19lbWl0X3dyYXBwZXIoKSwgYmVsb3cuCi1mdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAoKQorIyBFbWl0IGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCisjIERvbid0IGRpcmVjdGx5IG9wZW4gYSBmaWxlIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8KKyMgaW5jb3Jwb3JhdGUgdGhlIHNjcmlwdCBjb250ZW50cyB3aXRoaW4gYSBjeWd3aW4vbWluZ3cKKyMgd3JhcHBlciBleGVjdXRhYmxlLiAgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbgorIyBmdW5jX21vZGVfbGluayBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdmFyaWFibGVzCisjIHNldCB0aGVyZWluLgorIworIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCisjIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAorIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCisjIHRoZSAkb2JqZGlyIGRpcmVjdG9yeS4gIFRoaXMgaXMgYSBjeWd3aW4vbWluZ3ctc3BlY2lmaWMKKyMgYmVoYXZpb3IuCitmdW5jX2VtaXRfd3JhcHBlciAoKQogewotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MV9hcmcxPSQxCi0JZmkKKwlmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPSR7MS1ub30KIAogCSRFQ0hPICJcCiAjISAkU0hFTEwKQEAgLTI3MTgsNyArMzg0OCw2IEBACiAKICMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKICMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1Yc2VkPScke1NFRH0gLWUgMXMvXlgvLycKIHNlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKIAogIyBCZSBCb3VybmUgY29tcGF0aWJsZQpAQCAtMjc0OSwzMSArMzg3OCwxMzIgQEAKIGVsc2UKICAgIyBXaGVuIHdlIGFyZSBzb3VyY2VkIGluIGV4ZWN1dGUgbW9kZSwgXCRmaWxlIGFuZCBcJEVDSE8gYXJlIGFscmVhZHkgc2V0LgogICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgRUNITz1cIiRxZWNob1wiCi0gICAgZmlsZT1cIlwkMFwiCi0gICAgIyBNYWtlIHN1cmUgZWNobyB3b3Jrcy4KLSAgICBpZiB0ZXN0IFwiWFwkMVwiID0gWC0tbm8tcmVleGVjOyB0aGVuCi0gICAgICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KLSAgICAgIHNoaWZ0Ci0gICAgZWxpZiB0ZXN0IFwiWFxgeyBcJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbFxgXCIgPSAnWFx0JzsgdGhlbgotICAgICAgIyBZaXBwZWUsIFwkRUNITyB3b3JrcyEKLSAgICAgIDoKLSAgICBlbHNlCi0gICAgICAjIFJlc3RhcnQgdW5kZXIgdGhlIGNvcnJlY3Qgc2hlbGwsIGFuZCB0aGVuIG1heWJlIFwkRUNITyB3aWxsIHdvcmsuCi0gICAgICBleGVjICRTSEVMTCBcIlwkMFwiIC0tbm8tcmVleGVjIFwkezErXCJcJEBcIn0KLSAgICBmaQotICBmaVwKKyAgICBmaWxlPVwiXCQwXCIiCisKKyAgICBxRUNITz1gJEVDSE8gIiRFQ0hPIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAorICAgICRFQ0hPICJcCisKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCQxCitfTFRFQ0hPX0VPRicKK30KKyAgICBFQ0hPPVwiJHFFQ0hPXCIKKyAgZmkKKworIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgorIyAvc2NyaXB0LyBhbmQgdGhlIHdyYXBwZXIgL2V4ZWN1dGFibGUvIHdoaWNoIGlzIHVzZWQgb25seSBvbgorIyB3aW5kb3dzIHBsYXRmb3JtcywgYW5kIChjKSBhbGwgYmVnaW4gd2l0aCB0aGUgc3RyaW5nICItLWx0LSIKKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKKyMgdGhpcyBwYXR0ZXJuKS4KKyMKKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAorIyAtLWx0LWR1bXAtc2NyaXB0LiBUaGVyZSBpcywgZGVsaWJlcmF0ZWx5LCBubyAtLWx0LWhlbHAuCisjCisjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQorIyBzY3JpcHQncyAkMCB2YWx1ZSwgZm9sbG93ZWQgYnkgIiRAIi4KK2x0X29wdGlvbl9kZWJ1Zz0KK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQoreworICBsdF9zY3JpcHRfYXJnMD1cJDAKKyAgc2hpZnQKKyAgZm9yIGx0X29wdAorICBkbworICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCisgICAgLS1sdC1kZWJ1ZykgbHRfb3B0aW9uX2RlYnVnPTEgOzsKKyAgICAtLWx0LWR1bXAtc2NyaXB0KQorICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKKyAgICAgICAgdGVzdCBcIlhcJGx0X2R1bXBfRFwiID0gXCJYXCRsdF9zY3JpcHRfYXJnMFwiICYmIGx0X2R1bXBfRD0uCisgICAgICAgIGx0X2R1bXBfRj1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJV4uKi8lJSdcYAorICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCisgICAgICAgIGV4aXQgMAorICAgICAgOzsKKyAgICAtLWx0LSopCisgICAgICAgIFwkRUNITyBcIlVucmVjb2duaXplZCAtLWx0LSBvcHRpb246ICdcJGx0X29wdCdcIiAxPiYyCisgICAgICAgIGV4aXQgMQorICAgICAgOzsKKyAgICBlc2FjCisgIGRvbmUKKworICAjIFByaW50IHRoZSBkZWJ1ZyBiYW5uZXIgaW1tZWRpYXRlbHk6CisgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCisgIGZpCit9CisKKyMgVXNlZCB3aGVuIC0tbHQtZGVidWcuIFByaW50cyBpdHMgYXJndW1lbnRzIHRvIHN0ZG91dAorIyAocmVkaXJlY3Rpb24gaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpCitmdW5jX2x0X2R1bXBfYXJncyAoKQoreworICBsdF9kdW1wX2FyZ3NfTj0xOworICBmb3IgbHRfYXJnCisgIGRvCisgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgorICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCisgIGRvbmUKK30KKworIyBDb3JlIGZ1bmN0aW9uIGZvciBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorZnVuY19leGVjX3Byb2dyYW1fY29yZSAoKQorewogIgotCSRFQ0hPICJcCisgIGNhc2UgJGhvc3QgaW4KKyAgIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCisgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCisgICAgJEVDSE8gIlwKKyAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCisgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCisgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorICAgICAgZmkKKyAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorIgorICAgIDs7CisKKyAgKikKKyAgICAkRUNITyAiXAorICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKKyAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCisgICAgICBmaQorICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisiCisgICAgOzsKKyAgZXNhYworICAkRUNITyAiXAorICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorICAgICAgZXhpdCAxCit9CisKKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorIyBTdHJpcHMgb3B0aW9ucyBpbiB0aGUgLS1sdC0qIG5hbWVzcGFjZSBmcm9tIFwkQCBhbmQKKyMgbGF1bmNoZXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCitmdW5jX2V4ZWNfcHJvZ3JhbSAoKQoreworICBmb3IgbHRfd3JfYXJnCisgIGRvCisgICAgY2FzZSBcJGx0X3dyX2FyZyBpbgorICAgIC0tbHQtKikgOzsKKyAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OworICAgIGVzYWMKKyAgICBzaGlmdAorICBkb25lCisgIGZ1bmNfZXhlY19wcm9ncmFtX2NvcmUgXCR7MStcIlwkQFwifQorfQorCisgICMgUGFyc2Ugb3B0aW9ucworICBmdW5jX3BhcnNlX2x0X29wdGlvbnMgXCJcJDBcIiBcJHsxK1wiXCRAXCJ9CiAKICAgIyBGaW5kIHRoZSBkaXJlY3RvcnkgdGhhdCB0aGlzIHNjcmlwdCBsaXZlcyBpbi4KLSAgdGhpc2Rpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSokJSUnXGAKKyAgdGhpc2Rpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSokJSUnXGAKICAgdGVzdCBcInhcJHRoaXNkaXJcIiA9IFwieFwkZmlsZVwiICYmIHRoaXNkaXI9LgogCiAgICMgRm9sbG93IHN5bWJvbGljIGxpbmtzIHVudGlsIHdlIGdldCB0byB0aGUgcmVhbCB0aGlzZGlyLgotICBmaWxlPVxgbHMgLWxkIFwiXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJFNFRCAtbiAncy8uKi0+IC8vcCdcYAogICB3aGlsZSB0ZXN0IC1uIFwiXCRmaWxlXCI7IGRvCi0gICAgZGVzdGRpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSpcJCUlJ1xgCisgICAgZGVzdGRpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSpcJCUlJ1xgCiAKICAgICAjIElmIHRoZXJlIHdhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gY2hhbmdlIHRoaXNkaXIuCiAgICAgaWYgdGVzdCBcInhcJGRlc3RkaXJcIiAhPSBcInhcJGZpbGVcIjsgdGhlbgpAQCAtMjc4MywzMCArNDAxMywxMyBAQAogICAgICAgZXNhYwogICAgIGZpCiAKLSAgICBmaWxlPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJV4uKi8lJSdcYAotICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKKyAgICBmaWxlPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJV4uKi8lJSdcYAorICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAkU0VEIC1uICdzLy4qLT4gLy9wJ1xgCiAgIGRvbmUKLSIKLX0KLSMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MQotCi0jIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIFthcmc9bm9dCi0jCi0jIEVtaXQgdGhlIHNlY29uZCBwYXJ0IG9mIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aAotIyBmdW5jX2VtaXRfd3JhcHBlcigpLCBiZWxvdy4KLWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyICgpCi17Ci0JZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMT1ubwotCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLQkgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzE9JDEKLQlmaQotCi0JJEVDSE8gIlwKIAogICAjIFVzdWFsbHkgJ25vJywgZXhjZXB0IG9uIGN5Z3dpbi9taW5ndyB3aGVuIGVtYmVkZGVkIGludG8KICAgIyB0aGUgY3dyYXBwZXIuCi0gIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxCisgIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9hcmcxCiAgIGlmIHRlc3QgXCJcJFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSXCIgPSBcInllc1wiOyB0aGVuCiAgICAgIyBzcGVjaWFsIGNhc2UgZm9yICcuJwogICAgIGlmIHRlc3QgXCJcJHRoaXNkaXJcIiA9IFwiLlwiOyB0aGVuCkBAIC0yODE0LDcgKzQwMjcsNyBAQAogICAgIGZpCiAgICAgIyByZW1vdmUgLmxpYnMgZnJvbSB0aGlzZGlyCiAgICAgY2FzZSBcIlwkdGhpc2RpclwiIGluCi0gICAgKltcXFxcL10kb2JqZGlyICkgdGhpc2Rpcj1cYFwkRUNITyBcIlhcJHRoaXNkaXJcIiB8IFwkWHNlZCAtZSAncyVbXFxcXC9dW15cXFxcL10qJCUlJ1xgIDs7CisgICAgKltcXFxcL10kb2JqZGlyICkgdGhpc2Rpcj1cYFwkRUNITyBcIlwkdGhpc2RpclwiIHwgJFNFRCAncyVbXFxcXC9dW15cXFxcL10qJCUlJ1xgIDs7CiAgICAgJG9iamRpciApICAgdGhpc2Rpcj0uIDs7CiAgICAgZXNhYwogICBmaQpAQCAtMjg2OSw2ICs0MDgyLDE4IEBACiAKICAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKIAorCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCisJIworCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZworCSMgdG8gc2hsaWJwYXRoLCBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggYXJlIFBBVEggYW5kIHVuaW5zdGFsbGVkCisJIyBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LgorCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorCSAgJEVDSE8gIlwKKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAorICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICisiCisJZmkKKwogCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgogCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KIAkgICRFQ0hPICJcCkBAIC0yODc3LDI1NCArNDEwMiwyOSBAQAogCiAgICAgIyBTb21lIHN5c3RlbXMgY2Fubm90IGNvcGUgd2l0aCBjb2xvbi10ZXJtaW5hdGVkICRzaGxpYnBhdGhfdmFyCiAgICAgIyBUaGUgc2Vjb25kIGNvbG9uIGlzIGEgd29ya2Fyb3VuZCBmb3IgYSBidWcgaW4gQmVPUyBSNCBzZWQKLSAgICAkc2hsaWJwYXRoX3Zhcj1cYFwkRUNITyBcIlhcJCRzaGxpYnBhdGhfdmFyXCIgfCBcJFhzZWQgLWUgJ3MvOjoqXCQvLydcYAorICAgICRzaGxpYnBhdGhfdmFyPVxgXCRFQ0hPIFwiXCQkc2hsaWJwYXRoX3ZhclwiIHwgJFNFRCAncy86OipcJC8vJ1xgCiAKICAgICBleHBvcnQgJHNobGlicGF0aF92YXIKICIKIAlmaQogCi0JIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLQkgICRFQ0hPICJcCi0gICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKLSAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAotIgotCWZpCi0KIAkkRUNITyAiXAogICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KICAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCi0iCi0JY2FzZSAkaG9zdCBpbgotCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0JICAkRUNITyAiXAotICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0iCi0JICA7OwotCi0JKikKLQkgICRFQ0hPICJcCi0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLSIKLQkgIDs7Ci0JZXNhYwotCSRFQ0hPICJcCi0gICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCi0gICAgICBleGl0IDEKKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KICAgICBmaQogICBlbHNlCiAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgogICAgIFwkRUNITyBcIlwkMDogZXJyb3I6IFxcXGBcJHByb2dkaXIvXCRwcm9ncmFtJyBkb2VzIG5vdCBleGlzdFwiIDE+JjIKICAgICBcJEVDSE8gXCJUaGlzIHNjcmlwdCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKLSAgICAkRUNITyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCisgICAgXCRFQ0hPIFwiU2VlIHRoZSAkUEFDS0FHRSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlwiIDE+JjIKICAgICBleGl0IDEKICAgZmkKIGZpXAogIgogfQotIyBlbmQ6IGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyCiAKIAotIyBmdW5jX2VtaXRfd3JhcHBlciBbYXJnPW5vXQotIwotIyBFbWl0IGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCi0jIERvbid0IGRpcmVjdGx5IG9wZW4gYSBmaWxlIGJlY2F1c2Ugd2UgbWF5IHdhbnQgdG8KLSMgaW5jb3Jwb3JhdGUgdGhlIHNjcmlwdCBjb250ZW50cyB3aXRoaW4gYSBjeWd3aW4vbWluZ3cKLSMgd3JhcHBlciBleGVjdXRhYmxlLiAgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbgotIyBmdW5jX21vZGVfbGluayBiZWNhdXNlIGl0IGRlcGVuZHMgb24gYSBudW1iZXIgb2YgdmFyaWFibGVzCi0jIHNldCB0aGVyZWluLgotIwotIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCi0jIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAotIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCi0jIHRoZSAkb2JqZGlyIGRpcmVjdG9yeS4gIFRoaXMgaXMgYSBjeWd3aW4vbWluZ3ctc3BlY2lmaWMKLSMgYmVoYXZpb3IuCi1mdW5jX2VtaXRfd3JhcHBlciAoKQotewotCWZ1bmNfZW1pdF93cmFwcGVyX2FyZzE9bm8KLQlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCi0JICBmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPSQxCi0JZmkKLQotCSMgc3BsaXQgdGhpcyB1cCBzbyB0aGF0IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKLQkjIGNhbiBjYWxsIGVhY2ggcGFydCBpbmRlcGVuZGVudGx5LgotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgotCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyICIke2Z1bmNfZW1pdF93cmFwcGVyX2FyZzF9IgotfQotCi0KLSMgZnVuY190b19ob3N0X3BhdGggYXJnCi0jCi0jIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKLSMgaXMgcnVubmluZyB1bmRlciB0aGUgbXN5cyBzaGVsbCksIG9yIGluIHRoZSBmb2xsb3dpbmcgY3Jvc3MtCi0jIGJ1aWxkIGVudmlyb25tZW50czoKLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0Ci0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3Ci0jIHdoZXJlIHdpbmUgaXMgZXF1aXBwZWQgd2l0aCB0aGUgYHdpbmVwYXRoJyBleGVjdXRhYmxlLgotIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQotIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKLSMgYnV0IHRoYXQgZmFjaWxpdHkgaXNuJ3QgYXZhaWxhYmxlIGZyb20gaW5zaWRlIHRoZSBjd3JhcHBlci4KLSMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCi0jICRob3N0LyRidWlsZCBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBhYm92ZS4KLSMKLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIGZvciAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLWZ1bmNfdG9faG9zdF9wYXRoICgpCi17Ci0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0gIGlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KLSAgICBjYXNlICRob3N0IGluCi0gICAgICAqbWluZ3cqICkKLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotICAgICAgICBjYXNlICRidWlsZCBpbgotICAgICAgICAgICptaW5ndyogKSAjIGFjdHVhbGx5LCBtc3lzCi0gICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKLSAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWAoIGNtZCAvL2MgZWNobyAiJDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzIiApIDI+L2Rldi9udWxsIHx8IGVjaG8gIiJgCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAotICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICA7OwotICAgICAgICAgICpjeWd3aW4qICkKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YGN5Z3BhdGggLXcgIiQxImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCi0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSAgICAgICAgICAgIDs7Ci0gICAgICAgICAgKiApCi0gICAgICAgICAgICAjIFVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXMgbm90IGV4aXQgd2l0aCBhIG5vbi16ZXJvCi0gICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCi0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAotICAgICAgICAgICAgIyBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50Ci0gICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucwotICAgICAgICAgICAgIyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCi0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKLSAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICMgQWxsb3cgd2FybmluZyBiZWxvdy4KLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIiCi0gICAgICAgICAgICBmaQotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSAgICAgICAgICAjIEZhbGxiYWNrOgotICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0gICAgICAgIGZpCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotfQotIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRoCi0KLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZwotIwotIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQotIyBmb2xsb3dpbmcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucyAoYnV0IGRvZXMgbm8gaGFybSBmb3IKLSMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6Ci0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotIwotIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bwotIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKLSMgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dCBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KQotIyBvbiBvdXRwdXQuCi0jCi0jIEFSRyBpcyBhIHBhdGhsaXN0IChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bwotIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KLWZ1bmNfdG9faG9zdF9wYXRobGlzdCAoKQotewotICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKLSAgaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgotICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICptaW5ndyogKQotICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0gICAgICAgICMgUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMgZnJvbQotICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCi0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0gICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyPSIkMSIKLSAgICAgICAgIyBPbmNlIHNldCBmb3IgdGhpcyBjYWxsLCB0aGlzIHZhcmlhYmxlIHNob3VsZCBub3QgYmUKLSAgICAgICAgIyByZWFzc2lnbmVkLiBJdCBpcyB1c2VkIGluIHRoYSBmYWxsYmFjayBjYXNlLgotICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAyIiB8XAotICAgICAgICAgICRTRUQgLWUgJ3N8XjoqfHwnIC1lICdzfDoqJHx8J2AKLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KLSAgICAgICAgICAgICMgQXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdC4KLSAgICAgICAgICAgIGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXM9InMvWyBdKlwkLy8iCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gKCBjbWQgLy9jIGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9zdHJpcF90cmFpbGluZ19zcGFjZXMiICkgMj4vZGV2L251bGwgfHwgZWNobyAiImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqY3lnd2luKiApCi0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj1gY3lncGF0aCAtdyAtcCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxImAKLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqICkKLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cwotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iIgotICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCi0gICAgICAgICAgICBJRlM9OgotICAgICAgICAgICAgZm9yIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIGluICRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSA7IGRvCi0gICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgotICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0gICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0gICAgICAgICAgICAgICAgICBmaQotICAgICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgIGZpCi0gICAgICAgICAgICAgIElGUz06Ci0gICAgICAgICAgICBkb25lCi0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgotICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgotICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgJyQxJyIKLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLSAgICAgICAgICAjIEZhbGxiYWNrLiBUaGlzIG1heSBicmVhayBpZiAkMSBjb250YWlucyBET1Mtc3R5bGUgZHJpdmUKLSAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCi0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgotICAgICAgICAgICMgd2l0aCB3aW5lcGF0aCBzbyB0aGF0IHBhdGggdHJhbnNsYXRpb24gaW4gdGhlIGNyb3NzLXRvLW1pbmd3Ci0gICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgotICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgotICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfFwKLSAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCi0gICAgICAgIGZpCi0gICAgICAgICMgTm93LCBhZGQgdGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9ycyBiYWNrCi0gICAgICAgIGNhc2UgIiQxIiBpbgotICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgotICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgICBjYXNlICIkMSIgaW4KLSAgICAgICAgICAqOiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0OyIKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi19Ci0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0Ci0KICMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYwogIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0CiAjIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4gZnVuY19tb2RlX2xpbmsgYmVjYXVzZQpAQCAtMzE0MSwzMSArNDE0MSwyMyBAQAogCiAgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCiAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCi0KLSAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCi0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCi0gICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCiAqLwogRU9GCiAJICAgIGNhdCA8PCJFT0YiCisjaWZkZWYgX01TQ19WRVIKKyMgZGVmaW5lIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSAxCisjZW5kaWYKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2lmZGVmIF9NU0NfVkVSCiAjIGluY2x1ZGUgPGRpcmVjdC5oPgogIyBpbmNsdWRlIDxwcm9jZXNzLmg+CiAjIGluY2x1ZGUgPGlvLmg+Ci0jIGRlZmluZSBzZXRtb2RlIF9zZXRtb2RlCiAjZWxzZQogIyBpbmNsdWRlIDx1bmlzdGQuaD4KICMgaW5jbHVkZSA8c3RkaW50Lmg+CiAjIGlmZGVmIF9fQ1lHV0lOX18KICMgIGluY2x1ZGUgPGlvLmg+Ci0jICBkZWZpbmUgSEFWRV9TRVRFTlYKLSMgIGlmZGVmIF9fU1RSSUNUX0FOU0lfXwotY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKLWludCBwdXRlbnYgKGNoYXIgKik7Ci1pbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKLSMgIGVuZGlmCiAjIGVuZGlmCiAjZW5kaWYKICNpbmNsdWRlIDxtYWxsb2MuaD4KQEAgLTMxNzcsNiArNDE2OSw0NCBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAorLyogZGVjbGFyYXRpb25zIG9mIG5vbi1BTlNJIGZ1bmN0aW9ucyAqLworI2lmIGRlZmluZWQoX19NSU5HVzMyX18pCisjIGlmZGVmIF9fU1RSSUNUX0FOU0lfXworaW50IF9wdXRlbnYgKGNvbnN0IGNoYXIgKik7CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCisjIGlmZGVmIF9fU1RSSUNUX0FOU0lfXworY2hhciAqcmVhbHBhdGggKGNvbnN0IGNoYXIgKiwgY2hhciAqKTsKK2ludCBwdXRlbnYgKGNoYXIgKik7CitpbnQgc2V0ZW52IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyMgZW5kaWYKKy8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisjZW5kaWYKKworLyogcG9ydGFiaWxpdHkgZGVmaW5lcywgZXhjbHVkaW5nIHBhdGggaGFuZGxpbmcgbWFjcm9zICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyMgZGVmaW5lIHN0YXQgICAgX3N0YXQKKyMgZGVmaW5lIGNobW9kICAgX2NobW9kCisjIGRlZmluZSBnZXRjd2QgIF9nZXRjd2QKKyMgZGVmaW5lIHB1dGVudiAgX3B1dGVudgorIyBkZWZpbmUgU19JWFVTUiBfU19JRVhFQworIyBpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKKyMgIGRlZmluZSBfSU5UUFRSX1RfREVGSU5FRAorIyAgZGVmaW5lIGludHB0cl90IGludAorIyBlbmRpZgorI2VsaWYgZGVmaW5lZChfX01JTkdXMzJfXykKKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyMgZGVmaW5lIHN0YXQgICAgX3N0YXQKKyMgZGVmaW5lIGNobW9kICAgX2NobW9kCisjIGRlZmluZSBnZXRjd2QgIF9nZXRjd2QKKyMgZGVmaW5lIHB1dGVudiAgX3B1dGVudgorI2VsaWYgZGVmaW5lZChfX0NZR1dJTl9fKQorIyBkZWZpbmUgSEFWRV9TRVRFTlYKKyMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKKy8qICNlbGlmIGRlZmluZWQgKG90aGVyIHBsYXRmb3JtcykgLi4uICovCisjZW5kaWYKKwogI2lmIGRlZmluZWQoUEFUSF9NQVgpCiAjIGRlZmluZSBMVF9QQVRITUFYIFBBVEhfTUFYCiAjZWxpZiBkZWZpbmVkKE1BWFBBVEhMRU4pCkBAIC0zMTkyLDE0ICs0MjIyLDcgQEAKICMgZGVmaW5lIFNfSVhHUlAgMAogI2VuZGlmCiAKLSNpZmRlZiBfTVNDX1ZFUgotIyBkZWZpbmUgU19JWFVTUiBfU19JRVhFQwotIyBkZWZpbmUgc3RhdCBfc3RhdAotIyBpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKLSMgIGRlZmluZSBpbnRwdHJfdCBpbnQKLSMgZW5kaWYKLSNlbmRpZgotCisvKiBwYXRoIGhhbmRsaW5nIHBvcnRhYmlsaXR5IG1hY3JvcyAqLwogI2lmbmRlZiBESVJfU0VQQVJBVE9SCiAjIGRlZmluZSBESVJfU0VQQVJBVE9SICcvJwogIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzonCkBAIC0zMjMwLDEwICs0MjUzLDYgQEAKICMgZGVmaW5lIElTX1BBVEhfU0VQQVJBVE9SKGNoKSAoKGNoKSA9PSBQQVRIX1NFUEFSQVRPUl8yKQogI2VuZGlmIC8qIFBBVEhfU0VQQVJBVE9SXzIgKi8KIAotI2lmZGVmIF9fQ1lHV0lOX18KLSMgZGVmaW5lIEZPUEVOX1dCICJ3YiIKLSNlbmRpZgotCiAjaWZuZGVmIEZPUEVOX1dCCiAjIGRlZmluZSBGT1BFTl9XQiAidyIKICNlbmRpZgpAQCAtMzI0NiwyMiArNDI2NSwxMyBAQAogICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAogfSB3aGlsZSAoMCkKIAotI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgotI2lmIGRlZmluZWQgREVCVUdXUkFQUEVSCi0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKLXN0YXRpYyB2b2lkCi1sdHdyYXBwZXJfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKLSAgICB2YV9lbmQgKGFyZ3MpOwotfQorI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQorc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7CiAjZWxzZQotIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCitzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKICNlbmRpZgogCi1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOworY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gImxpYnRvb2wtd3JhcHBlciI7IC8qIGluIGNhc2UgeHN0cmR1cCBmYWlscyAqLwogCiB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKIGNoYXIgKnhzdHJkdXAgKGNvbnN0IGNoYXIgKnN0cmluZyk7CkBAIC0zMjcxLDQxICs0MjgxLDI3IEBACiBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKIGNoYXIgKnN0cmVuZHphcCAoY2hhciAqc3RyLCBjb25zdCBjaGFyICpwYXQpOwotdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cit2b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKK3N0YXRpYyBjb25zdCBjaGFyICpub25udWxsIChjb25zdCBjaGFyICpzKTsKK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7CiB2b2lkIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwogY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoY29uc3QgY2hhciAqYXJnKTsKLXZvaWQgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7Ci12b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGNvbnN0IGNoYXIgKmFyZyk7Ci1pbnQgbHRfc3BsaXRfbmFtZV92YWx1ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyKiogbmFtZSwgY2hhcioqIHZhbHVlKTsKIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CiB2b2lkIGx0X3VwZGF0ZV9saWJfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwotCi1zdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDEgPQorY2hhciAqKnByZXBhcmVfc3Bhd24gKGNoYXIgKiphcmd2KTsKK3ZvaWQgbHRfZHVtcF9zY3JpcHQgKEZJTEUgKmYpOwogRU9GCiAKLQkgICAgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgeWVzIHwKLQkgICAgICAgICRTRUQgLWUgJ3MvXChbXFwiXVwpL1xcXDEvZycgXAotCSAgICAgICAgICAgICAtZSAncy9eLyAgIi8nIC1lICdzLyQvXFxuIi8nCi0JICAgIGVjaG8gIjsiCiAJICAgIGNhdCA8PEVPRgotCi1zdGF0aWMgY29uc3QgY2hhciAqc2NyaXB0X3RleHRfcGFydDIgPQotRU9GCi0JICAgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIHllcyB8Ci0JICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKLQkgICAgICAgICAgICAgLWUgJ3MvXi8gICIvJyAtZSAncy8kL1xcbiIvJwotCSAgICBlY2hvICI7IgotCi0JICAgIGNhdCA8PEVPRgotY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKK3ZvbGF0aWxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7CiBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CiBFT0YKIAogCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJHRlbXBfcnBhdGgiCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKIAkgICAgICBjYXQgPDxFT0YKLWNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwogRU9GCiAJICAgIGVsc2UKIAkgICAgICBjYXQgPDwiRU9GIgpAQCAtMzMxNCwxMCArNDMxMCwxMCBAQAogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgotICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiRkbGxzZWFyY2hwYXRoOiIKKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKIAkgICAgICBjYXQgPDxFT0YKIGNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIlBBVEgiOwotY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CiBFT0YKIAkgICAgZWxzZQogCSAgICAgIGNhdCA8PCJFT0YiCkBAIC0zMzQwLDI0ICs0MzM2LDEwIEBACiAJICAgIGNhdCA8PCJFT0YiCiAKICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCi0jZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCAgNQogCi1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7CiBzdGF0aWMgY29uc3QgY2hhciAqbHR3cmFwcGVyX29wdGlvbl9wcmVmaXggPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWDsKLQogc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfc2V0X29wdF9sZW4gICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgNzsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfc2V0X29wdCAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtc2V0IjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgdmFsdWUgb2YgZm9vIGlzIHNldCB0byBiYXIgKi8KLQotc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfcHJlcGVuZF9vcHRfbGVuID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgMTE7Ci1zdGF0aWMgY29uc3QgY2hhciAqZW52X3ByZXBlbmRfb3B0ICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LXByZXBlbmQiOwotICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCBuZXcgdmFsdWUgb2YgZm9vIGlzIGJhciR7Zm9vfSAqLwotCi1zdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9hcHBlbmRfb3B0X2xlbiAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyAxMDsKLXN0YXRpYyBjb25zdCBjaGFyICplbnZfYXBwZW5kX29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtYXBwZW5kIjsKLSAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgbmV3IHZhbHVlIG9mIGZvbyBpcyAke2Zvb31iYXIgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19vcHQgICAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkZWJ1ZyI7CiAKIGludAogbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKQEAgLTMzNzQsMTAgKzQzNTYsMTMgQEAKICAgaW50IGk7CiAKICAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoYmFzZV9uYW1lIChhcmd2WzBdKSk7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBwcm9ncmFtX25hbWUgOiAlc1xuIiwgcHJvZ3JhbV9uYW1lKSk7CisgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKIAotICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdCAqLworICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAorICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKKyAgICogYXJnelswXSwgd2hpY2ggaXMgaGFuZGxlZCBkaWZmZXJlbnRseQorICAgKi8KKyAgbmV3YXJnYz0wOwogICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQogICAgIHsKICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQpAQCAtMzM5MSwyNSArNDM3Niw1NyBAQAogCSAgICAgIGVzYWMKIAogCSAgICBjYXQgPDwiRU9GIgotCSAgcHJpbnRmICgiJXMiLCBzY3JpcHRfdGV4dF9wYXJ0MSk7Ci0JICBwcmludGYgKCIlcyIsIHNjcmlwdF90ZXh0X3BhcnQyKTsKKwkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOwogCSAgcmV0dXJuIDA7CiAJfQorICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQorCXsKKyAgICAgICAgICBsdF9kZWJ1ZyA9IDE7CisgICAgICAgICAgY29udGludWU7CisJfQorICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCisgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKyAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgInVucmVjb2duaXplZCAlcyBvcHRpb246ICclcyciLAorICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7CisgICAgICAgIH0KKyAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwogICAgIH0KKyAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKIAotICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CitFT0YKKwkgICAgY2F0IDw8RU9GCisgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICJsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXG4iKTsKK0VPRgorCSAgICBjYXQgPDwiRU9GIgorICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGFyZ3ZbMF06ICVzXG4iLCBhcmd2WzBdKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBwcm9ncmFtX25hbWU6ICVzXG4iLCBwcm9ncmFtX25hbWUpOworCiAgIHRtcF9wYXRoc3BlYyA9IGZpbmRfZXhlY3V0YWJsZSAoYXJndlswXSk7CiAgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAotCQkJICB0bXBfcGF0aHNwZWMpKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOworICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisJCSAgdG1wX3BhdGhzcGVjKTsKIAogICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOwotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKLQkJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpOwogICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKIAotICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAoIGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwIChiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CiAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKIAogICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLwpAQCAtMzQyNyw4ICs0NDQ0LDkgQEAKICAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7CiAgIHRtcF9wYXRoc3BlYyA9IDA7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKLQkJCSAgdGFyZ2V0X25hbWUpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorCQkgIHRhcmdldF9uYW1lKTsKIEVPRgogCiAJICAgIGNhdCA8PEVPRgpAQCAtMzQ3OCw4MCArNDQ5NiwxOSBAQAogCiAgIGx0X3NldGVudiAoIkJJTl9TSCIsICJ4cGc0Iik7IC8qIGZvciBUcnU2NCAqLwogICBsdF9zZXRlbnYgKCJEVUFMQ0FTRSIsICIxIik7ICAvKiBmb3IgTVNLIHNoICovCi0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworICAvKiBVcGRhdGUgdGhlIERMTCBzZWFyY2hwYXRoLiAgRVhFX1BBVEhfVkFMVUUgKCRkbGxzZWFyY2hwYXRoKSBtdXN0CisgICAgIGJlIHByZXBlbmRlZCBiZWZvcmUgKHRoYXQgaXMsIGFwcGVhciBhZnRlcikgTElCX1BBVEhfVkFMVUUgKCR0ZW1wX3JwYXRoKQorICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKKyAgICAgbGlicmFyaWVzIG11c3QgY29tZSBmaXJzdC4gKi8KICAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7CisgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOwogCi0gIG5ld2FyZ2M9MDsKLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICB7Ci0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X3NldF9vcHQsIGVudl9zZXRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9zZXRfb3B0X2xlbl0gPT0gJz0nKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9zZXRfb3B0X2xlbiArIDE7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3NldF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9zZXRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9wcmVwZW5kX29wdCwgZW52X3ByZXBlbmRfb3B0X2xlbikgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9wcmVwZW5kX29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfcHJlcGVuZF9vcHRfbGVuICsgMTsKLSAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKHApOwotICAgICAgICAgICAgfQotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3ByZXBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X3ByZXBlbmRfb3B0KTsKLSAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9hcHBlbmRfb3B0LCBlbnZfYXBwZW5kX29wdF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICBpZiAoYXJndltpXVtlbnZfYXBwZW5kX29wdF9sZW5dID09ICc9JykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfYXBwZW5kX29wdF9sZW4gKyAxOwotICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9hcHBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfYXBwZW5kX29wdCk7Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAotICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCi0gICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQotICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0gICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKLSAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOwotICAgICAgICB9Ci0gICAgICAvKiBvdGhlcndpc2UgLi4uICovCi0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKLSAgICB9Ci0gIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7Ci0KLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICAgICAoKCIobWFpbikgbHRfYXJndl96ZXJvIDogJXNcbiIsIChsdF9hcmd2X3plcm8gPyBsdF9hcmd2X3plcm8gOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBsdF9hcmd2X3plcm86ICVzXG4iLAorCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOwogICBmb3IgKGkgPSAwOyBpIDwgbmV3YXJnYzsgaSsrKQogICAgIHsKLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgbmV3YXJnelslZF06ICVzXG4iLAorCQkgICAgICBpLCBub25udWxsIChuZXdhcmd6W2ldKSk7CiAgICAgfQogCiBFT0YKQEAgLTM1NjAsMTEgKzQ1MTcsMTQgQEAKIAkgICAgICBtaW5ndyopCiAJCWNhdCA8PCJFT0YiCiAgIC8qIGV4ZWN2IGRvZXNuJ3QgYWN0dWFsbHkgd29yayBvbiBtaW5ndyBhcyBleHBlY3RlZCBvbiB1bml4ICovCisgIG5ld2FyZ3ogPSBwcmVwYXJlX3NwYXduIChuZXdhcmd6KTsKICAgcnZhbCA9IF9zcGF3bnYgKF9QX1dBSVQsIGx0X2FyZ3ZfemVybywgKGNvbnN0IGNoYXIgKiBjb25zdCAqKSBuZXdhcmd6KTsKICAgaWYgKHJ2YWwgPT0gLTEpCiAgICAgewogICAgICAgLyogZmFpbGVkIHRvIHN0YXJ0IHByb2Nlc3MgKi8KLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgICAiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogJXNcbiIsCisJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOwogICAgICAgcmV0dXJuIDEyNzsKICAgICB9CiAgIHJldHVybiBydmFsOwpAQCAtMzU4Niw3ICs0NTQ2LDcgQEAKIHsKICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKICAgaWYgKCFwKQotICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOworICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7CiAKICAgcmV0dXJuIHA7CiB9CkBAIC0zNjIwLDggKzQ1ODAsOCBAQAogewogICBzdHJ1Y3Qgc3RhdCBzdDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAotCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihjaGVja19leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwogICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKICAgICByZXR1cm4gMDsKIApAQCAtMzYzOCw4ICs0NTk4LDggQEAKICAgaW50IHJ2YWwgPSAwOwogICBzdHJ1Y3Qgc3RhdCBzdDsKIAotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWtlX2V4ZWN1dGFibGUpOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CiAgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQogICAgIHJldHVybiAwOwogCkBAIC0zNjY1LDggKzQ2MjUsOCBAQAogICBpbnQgdG1wX2xlbjsKICAgY2hhciAqY29uY2F0X25hbWU7CiAKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihmaW5kX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLQkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCisgICAgICAgICAgICAgICAgICBub25lbXB0eSAod3JhcHBlcikpOwogCiAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCiAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNzE5LDcgKzQ2NzksOCBAQAogCQl7CiAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KIAkJICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0JCSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKIAkJICBjb25jYXRfbmFtZSA9CiAJCSAgICBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKQEAgLTM3NDQsNyArNDcwNSw4IEBACiAgICAgfQogICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCiAgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICBub25udWxsIChzdHJlcnJvciAoZXJybm8pKSk7CiAgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CiAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CiAgIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7CkBAIC0zNzcwLDggKzQ3MzIsOSBAQAogICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQogICAgIHsKLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAotCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7CisgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorCQkgICAgICAiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKICAgICAgIGlmIChsc3RhdCAodG1wX3BhdGhzcGVjLCAmcykgPT0gMCkKIAl7CiAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQpAQCAtMzc5Myw4ICs0NzU2LDkgQEAKIAl9CiAgICAgICBlbHNlCiAJewotCSAgY2hhciAqZXJyc3RyID0gc3RyZXJyb3IgKGVycm5vKTsKLQkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgICAiZXJyb3IgYWNjZXNzaW5nIGZpbGUgXCIlc1wiOiAlcyIsCisJCSAgICB0bXBfcGF0aHNwZWMsIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKIAl9CiAgICAgfQogICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKQEAgLTM4MDcsNyArNDc3MSw4IEBACiAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKICAgaWYgKHRtcF9wYXRoc3BlYyA9PSAwKQogICAgIHsKLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorCQkiY291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CiAgICAgfQogICByZXR1cm4geHN0cmR1cCAodG1wX3BhdGhzcGVjKTsKICNlbmRpZgpAQCAtMzgzMywxMSArNDc5OCwyNSBAQAogICByZXR1cm4gc3RyOwogfQogCit2b2lkCitsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworICB2YV9saXN0IGFyZ3M7CisgIGlmIChsdF9kZWJ1ZykKKyAgICB7CisgICAgICAodm9pZCkgZnByaW50ZiAoc3RkZXJyLCAiJXM6JXM6JWQ6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSk7CisgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworICAgICAgdmFfZW5kIChhcmdzKTsKKyAgICB9Cit9CisKIHN0YXRpYyB2b2lkCi1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCitsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKmZpbGUsCisJICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICptb2RlLAogCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQogewotICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7CisgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKICAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOwogICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKIApAQCAtMzg0NiwyMCArNDgyNSwzMiBAQAogfQogCiB2b2lkCi1sdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKQorbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCiB7CiAgIHZhX2xpc3QgYXA7CiAgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7Ci0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsIGZpbGUsIGxpbmUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKICAgdmFfZW5kIChhcCk7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyICoKK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCit7CisgIHJldHVybiBzID8gcyA6ICIobnVsbCkiOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqCitub25lbXB0eSAoY29uc3QgY2hhciAqcykKK3sKKyAgcmV0dXJuIChzICYmICEqcykgPyAiKGVtcHR5KSIgOiBub25udWxsIChzKTsKK30KKwogdm9pZAogbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKIHsKLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAgIHsKICNpZmRlZiBIQVZFX1NFVEVOVgogICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCkBAIC0zOTA0LDk1ICs0ODk1LDEyIEBACiAgIHJldHVybiBuZXdfdmFsdWU7CiB9CiAKLWludAotbHRfc3BsaXRfbmFtZV92YWx1ZSAoY29uc3QgY2hhciAqYXJnLCBjaGFyKiogbmFtZSwgY2hhcioqIHZhbHVlKQotewotICBjb25zdCBjaGFyICpwOwotICBpbnQgbGVuOwotICBpZiAoIWFyZyB8fCAhKmFyZykKLSAgICByZXR1cm4gMTsKLQotICBwID0gc3RyY2hyIChhcmcsIChpbnQpJz0nKTsKLQotICBpZiAoIXApCi0gICAgcmV0dXJuIDE7Ci0KLSAgKnZhbHVlID0geHN0cmR1cCAoKytwKTsKLQotICBsZW4gPSBzdHJsZW4gKGFyZykgLSBzdHJsZW4gKCp2YWx1ZSk7Ci0gICpuYW1lID0gWE1BTExPQyAoY2hhciwgbGVuKTsKLSAgc3RybmNweSAoKm5hbWUsIGFyZywgbGVuLTEpOwotICAoKm5hbWUpW2xlbiAtIDFdID0gJ1wwJzsKLQotICByZXR1cm4gMDsKLX0KLQotdm9pZAotbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9zZXRfb3B0LCBhcmcpOwotICAgIH0KLQotICBsdF9zZXRlbnYgKG5hbWUsIHZhbHVlKTsKLSAgWEZSRUUgKG5hbWUpOwotICBYRlJFRSAodmFsdWUpOwotfQotCi12b2lkCi1sdF9vcHRfcHJvY2Vzc19lbnZfcHJlcGVuZCAoY29uc3QgY2hhciAqYXJnKQotewotICBjaGFyICpuYW1lID0gTlVMTDsKLSAgY2hhciAqdmFsdWUgPSBOVUxMOwotICBjaGFyICpuZXdfdmFsdWUgPSBOVUxMOwotCi0gIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCi0gICAgewotICAgICAgWEZSRUUgKG5hbWUpOwotICAgICAgWEZSRUUgKHZhbHVlKTsKLSAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9wcmVwZW5kX29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDApOwotICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuZXdfdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KLXZvaWQKLWx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGNvbnN0IGNoYXIgKmFyZykKLXsKLSAgY2hhciAqbmFtZSA9IE5VTEw7Ci0gIGNoYXIgKnZhbHVlID0gTlVMTDsKLSAgY2hhciAqbmV3X3ZhbHVlID0gTlVMTDsKLQotICBpZiAobHRfc3BsaXRfbmFtZV92YWx1ZSAoYXJnLCAmbmFtZSwgJnZhbHVlKSAhPSAwKQotICAgIHsKLSAgICAgIFhGUkVFIChuYW1lKTsKLSAgICAgIFhGUkVFICh2YWx1ZSk7Ci0gICAgICBsdF9mYXRhbCAoImJhZCBhcmd1bWVudCBmb3IgJXM6ICclcyciLCBlbnZfYXBwZW5kX29wdCwgYXJnKTsKLSAgICB9Ci0KLSAgbmV3X3ZhbHVlID0gbHRfZXh0ZW5kX3N0ciAoZ2V0ZW52IChuYW1lKSwgdmFsdWUsIDEpOwotICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7Ci0gIFhGUkVFIChuZXdfdmFsdWUpOwotICBYRlJFRSAobmFtZSk7Ci0gIFhGUkVFICh2YWx1ZSk7Ci19Ci0KIHZvaWQKIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCiB7Ci0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKwkJICAiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CiAKICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQogICAgIHsKQEAgLTQwMTEsOSArNDkxOSw5IEBACiB2b2lkCiBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQogewotICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwogCiAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKICAgICB7CkBAIC00MDIzLDExICs0OTMxLDE1MiBAQAogICAgIH0KIH0KIAorRU9GCisJICAgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgICAgICBtaW5ndyopCisJCWNhdCA8PCJFT0YiCiAKKy8qIFByZXBhcmVzIGFuIGFyZ3VtZW50IHZlY3RvciBiZWZvcmUgY2FsbGluZyBzcGF3bigpLgorICAgTm90ZSB0aGF0IHNwYXduKCkgZG9lcyBub3QgYnkgaXRzZWxmIGNhbGwgdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIKKyAgICAgKGdldGVudiAoIkNPTVNQRUMiKSAhPSBOVUxMID8gZ2V0ZW52ICgiQ09NU1BFQyIpIDoKKyAgICAgICh7IE9TVkVSU0lPTklORk8gdjsgdi5kd09TVmVyc2lvbkluZm9TaXplID0gc2l6ZW9mKE9TVkVSU0lPTklORk8pOworICAgICAgICAgR2V0VmVyc2lvbkV4KCZ2KTsKKyAgICAgICAgIHYuZHdQbGF0Zm9ybUlkID09IFZFUl9QTEFURk9STV9XSU4zMl9OVDsKKyAgICAgIH0pID8gImNtZC5leGUiIDogImNvbW1hbmQuY29tIikuCisgICBJbnN0ZWFkIGl0IHNpbXBseSBjb25jYXRlbmF0ZXMgdGhlIGFyZ3VtZW50cywgc2VwYXJhdGVkIGJ5ICcgJywgYW5kIGNhbGxzCisgICBDcmVhdGVQcm9jZXNzKCkuICBXZSBtdXN0IHF1b3RlIHRoZSBhcmd1bWVudHMgc2luY2UgV2luMzIgQ3JlYXRlUHJvY2VzcygpCisgICBpbnRlcnByZXRzIGNoYXJhY3RlcnMgbGlrZSAnICcsICdcdCcsICdcXCcsICciJyAoYnV0IG5vdCAnPCcgYW5kICc+JykgaW4gYQorICAgc3BlY2lhbCB3YXk6CisgICAtIFNwYWNlIGFuZCB0YWIgYXJlIGludGVycHJldGVkIGFzIGRlbGltaXRlcnMuIFRoZXkgYXJlIG5vdCB0cmVhdGVkIGFzCisgICAgIGRlbGltaXRlcnMgaWYgdGhleSBhcmUgc3Vycm91bmRlZCBieSBkb3VibGUgcXVvdGVzOiAiLi4uIi4KKyAgIC0gVW5lc2NhcGVkIGRvdWJsZSBxdW90ZXMgYXJlIHJlbW92ZWQgZnJvbSB0aGUgaW5wdXQuIFRoZWlyIG9ubHkgZWZmZWN0IGlzCisgICAgIHRoYXQgd2l0aGluIGRvdWJsZSBxdW90ZXMsIHNwYWNlIGFuZCB0YWIgYXJlIHRyZWF0ZWQgbGlrZSBub3JtYWwKKyAgICAgY2hhcmFjdGVycy4KKyAgIC0gQmFja3NsYXNoZXMgbm90IGZvbGxvd2VkIGJ5IGRvdWJsZSBxdW90ZXMgYXJlIG5vdCBzcGVjaWFsLgorICAgLSBCdXQgMipuKzEgYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGUgYmVjb21lCisgICAgIG4gYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGUgKG4gPj0gMCk6CisgICAgICAgXCIgLT4gIgorICAgICAgIFxcXCIgLT4gXCIKKyAgICAgICBcXFxcXCIgLT4gXFwiCisgKi8KKyNkZWZpbmUgU0hFTExfU1BFQ0lBTF9DSEFSUyAiXCJcXCBcMDAxXDAwMlwwMDNcMDA0XDAwNVwwMDZcMDA3XDAxMFwwMTFcMDEyXDAxM1wwMTRcMDE1XDAxNlwwMTdcMDIwXDAyMVwwMjJcMDIzXDAyNFwwMjVcMDI2XDAyN1wwMzBcMDMxXDAzMlwwMzNcMDM0XDAzNVwwMzZcMDM3IgorI2RlZmluZSBTSEVMTF9TUEFDRV9DSEFSUyAiIFwwMDFcMDAyXDAwM1wwMDRcMDA1XDAwNlwwMDdcMDEwXDAxMVwwMTJcMDEzXDAxNFwwMTVcMDE2XDAxN1wwMjBcMDIxXDAyMlwwMjNcMDI0XDAyNVwwMjZcMDI3XDAzMFwwMzFcMDMyXDAzM1wwMzRcMDM1XDAzNlwwMzciCitjaGFyICoqCitwcmVwYXJlX3NwYXduIChjaGFyICoqYXJndikKK3sKKyAgc2l6ZV90IGFyZ2M7CisgIGNoYXIgKipuZXdfYXJndjsKKyAgc2l6ZV90IGk7CisKKyAgLyogQ291bnQgbnVtYmVyIG9mIGFyZ3VtZW50cy4gICovCisgIGZvciAoYXJnYyA9IDA7IGFyZ3ZbYXJnY10gIT0gTlVMTDsgYXJnYysrKQorICAgIDsKKworICAvKiBBbGxvY2F0ZSBuZXcgYXJndW1lbnQgdmVjdG9yLiAgKi8KKyAgbmV3X2FyZ3YgPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKKworICAvKiBQdXQgcXVvdGVkIGFyZ3VtZW50cyBpbnRvIHRoZSBuZXcgYXJndW1lbnQgdmVjdG9yLiAgKi8KKyAgZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKKyAgICB7CisgICAgICBjb25zdCBjaGFyICpzdHJpbmcgPSBhcmd2W2ldOworCisgICAgICBpZiAoc3RyaW5nWzBdID09ICdcMCcpCisJbmV3X2FyZ3ZbaV0gPSB4c3RyZHVwICgiXCJcIiIpOworICAgICAgZWxzZSBpZiAoc3RycGJyayAoc3RyaW5nLCBTSEVMTF9TUEVDSUFMX0NIQVJTKSAhPSBOVUxMKQorCXsKKwkgIGludCBxdW90ZV9hcm91bmQgPSAoc3RycGJyayAoc3RyaW5nLCBTSEVMTF9TUEFDRV9DSEFSUykgIT0gTlVMTCk7CisJICBzaXplX3QgbGVuZ3RoOworCSAgdW5zaWduZWQgaW50IGJhY2tzbGFzaGVzOworCSAgY29uc3QgY2hhciAqczsKKwkgIGNoYXIgKnF1b3RlZF9zdHJpbmc7CisJICBjaGFyICpwOworCisJICBsZW5ndGggPSAwOworCSAgYmFja3NsYXNoZXMgPSAwOworCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgbGVuZ3RoKys7CisJICBmb3IgKHMgPSBzdHJpbmc7ICpzICE9ICdcMCc7IHMrKykKKwkgICAgeworCSAgICAgIGNoYXIgYyA9ICpzOworCSAgICAgIGlmIChjID09ICciJykKKwkJbGVuZ3RoICs9IGJhY2tzbGFzaGVzICsgMTsKKwkgICAgICBsZW5ndGgrKzsKKwkgICAgICBpZiAoYyA9PSAnXFwnKQorCQliYWNrc2xhc2hlcysrOworCSAgICAgIGVsc2UKKwkJYmFja3NsYXNoZXMgPSAwOworCSAgICB9CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICBsZW5ndGggKz0gYmFja3NsYXNoZXMgKyAxOworCisJICBxdW90ZWRfc3RyaW5nID0gWE1BTExPQyAoY2hhciwgbGVuZ3RoICsgMSk7CisKKwkgIHAgPSBxdW90ZWRfc3RyaW5nOworCSAgYmFja3NsYXNoZXMgPSAwOworCSAgaWYgKHF1b3RlX2Fyb3VuZCkKKwkgICAgKnArKyA9ICciJzsKKwkgIGZvciAocyA9IHN0cmluZzsgKnMgIT0gJ1wwJzsgcysrKQorCSAgICB7CisJICAgICAgY2hhciBjID0gKnM7CisJICAgICAgaWYgKGMgPT0gJyInKQorCQl7CisJCSAgdW5zaWduZWQgaW50IGo7CisJCSAgZm9yIChqID0gYmFja3NsYXNoZXMgKyAxOyBqID4gMDsgai0tKQorCQkgICAgKnArKyA9ICdcXCc7CisJCX0KKwkgICAgICAqcCsrID0gYzsKKwkgICAgICBpZiAoYyA9PSAnXFwnKQorCQliYWNrc2xhc2hlcysrOworCSAgICAgIGVsc2UKKwkJYmFja3NsYXNoZXMgPSAwOworCSAgICB9CisJICBpZiAocXVvdGVfYXJvdW5kKQorCSAgICB7CisJICAgICAgdW5zaWduZWQgaW50IGo7CisJICAgICAgZm9yIChqID0gYmFja3NsYXNoZXM7IGogPiAwOyBqLS0pCisJCSpwKysgPSAnXFwnOworCSAgICAgICpwKysgPSAnIic7CisJICAgIH0KKwkgICpwID0gJ1wwJzsKKworCSAgbmV3X2FyZ3ZbaV0gPSBxdW90ZWRfc3RyaW5nOworCX0KKyAgICAgIGVsc2UKKwluZXdfYXJndltpXSA9IChjaGFyICopIHN0cmluZzsKKyAgICB9CisgIG5ld19hcmd2W2FyZ2NdID0gTlVMTDsKKworICByZXR1cm4gbmV3X2FyZ3Y7Cit9CitFT0YKKwkJOzsKKwkgICAgZXNhYworCisgICAgICAgICAgICBjYXQgPDwiRU9GIgordm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSogZikKK3sKK0VPRgorCSAgICBmdW5jX2VtaXRfd3JhcHBlciB5ZXMgfAorICAgICAgICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKKwkgICAgICAgICAgIC1lICdzL14vICBmcHV0cyAoIi8nIC1lICdzLyQvXFxuIiwgZik7LycKKworICAgICAgICAgICAgY2F0IDw8IkVPRiIKK30KIEVPRgogfQogIyBlbmQ6IGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKIAorIyBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCBBUkcKKyMgVHJ1ZSBpZiBBUkcgaXMgYW4gaW1wb3J0IGxpYiwgYXMgaW5kaWNhdGVkIGJ5ICRmaWxlX21hZ2ljX2NtZAorZnVuY193aW4zMl9pbXBvcnRfbGliX3AgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgorICAgICppbXBvcnQqKSA6IDs7CisgICAgKikgZmFsc2UgOzsKKyAgICBlc2FjCit9CisKICMgZnVuY19tb2RlX2xpbmsgYXJnLi4uCiBmdW5jX21vZGVfbGluayAoKQogewpAQCAtNDA3Miw2ICs1MTIxLDcgQEAKICAgICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0KIAogICAgIGF2b2lkX3ZlcnNpb249bm8KKyAgICBiaW5kaXI9CiAgICAgZGxmaWxlcz0KICAgICBkbHByZWZpbGVzPQogICAgIGRsc2VsZj1ubwpAQCAtNDE2NCw2ICs1MjE0LDExIEBACiAJZXNhYwogCiAJY2FzZSAkcHJldiBpbgorCWJpbmRpcikKKwkgIGJpbmRpcj0iJGFyZyIKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKIAlkbGZpbGVzfGRscHJlZmlsZXMpCiAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSBubzsgdGhlbgogCSAgICAjIEFkZCB0aGUgc3ltYm9sIG9iamVjdCBpbnRvIHRoZSBsaW5raW5nIGNvbW1hbmRzLgpAQCAtNDE5NSw5ICs1MjUwLDkgQEAKIAkgICAgOzsKIAkgICopCiAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkYXJnIgogCSAgICBlbHNlCi0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGFyZyIKIAkgICAgZmkKIAkgICAgcHJldj0KIAkgICAgY29udGludWUKQEAgLTQyMjEsNyArNTI3Niw3IEBACiAJICAgICotKi1kYXJ3aW4qKQogCSAgICAgIGNhc2UgIiRkZXBsaWJzICIgaW4KIAkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7Ci0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKKwkJKikgZnVuY19hcHBlbmQgZGVwbGlicyAiICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKIAkJICAgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKQEAgLTQyNDAsNyArNTI5NSw3IEBACiAJICAgIG1vcmVhcmdzPQogCSAgICBmb3IgZmlsIGluIGBjYXQgIiRzYXZlX2FyZyJgCiAJICAgIGRvCi0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKKyMJICAgICAgZnVuY19hcHBlbmQgbW9yZWFyZ3MgIiAkZmlsIgogCSAgICAgIGFyZz0kZmlsCiAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCiAKQEAgLTQyNjksNyArNTMyNCw3IEBACiAKIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCiAJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorCQkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCiAJCSAgICAgIHByZXY9CiAJCSAgICAgIGNvbnRpbnVlCiAJCSAgICBlbHNlCkBAIC00MjgxLDcgKzUzMzYsNyBAQAogCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCiAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgogCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisJCSAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCiAJCSAgICBwcmV2PQogCQkgIGZpCiAKQEAgLTQzNTEsMTIgKzU0MDYsMTIgQEAKIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCiAJICAgIGNhc2UgIiRycGF0aCAiIGluCiAJICAgICoiICRhcmcgIiopIDs7Ci0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgcnBhdGggIiAkYXJnIiA7OwogCSAgICBlc2FjCiAJICBlbHNlCiAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGFyZyIgOzsKIAkgICAgZXNhYwogCSAgZmkKIAkgIHByZXY9CkBAIC00MzY4LDI4ICs1NDIzLDI4IEBACiAJICBjb250aW51ZQogCSAgOzsKIAl3ZWFrKQotCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCisJICBmdW5jX2FwcGVuZCB3ZWFrX2xpYnMgIiAkYXJnIgogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwogCXhjY2xpbmtlcikKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCiAJICBwcmV2PQogCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCiAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCiAJICBjb250aW51ZQogCSAgOzsKIAl4Y29tcGlsZXIpCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKIAkgIHByZXY9CiAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCXhsaW5rZXIpCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgorCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgogCSAgcHJldj0KIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgogCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgpAQCAtNDQyNSw2ICs1NDgwLDExIEBACiAJY29udGludWUKIAk7OwogCisgICAgICAtYmluZGlyKQorCXByZXY9YmluZGlyCisJY29udGludWUKKwk7OworCiAgICAgICAtZGxvcGVuKQogCXByZXY9ZGxmaWxlcwogCWNvbnRpbnVlCkBAIC00NDc1LDE1ICs1NTM1LDE2IEBACiAJOzsKIAogICAgICAgLUwqKQotCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCi0JZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLQlpZiB0ZXN0IC16ICIkZGlyIjsgdGhlbgorCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCisJaWYgdGVzdCAteiAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7IHRoZW4KIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgogCSAgZWxzZQogCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKIAkgIGZpCiAJZmkKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGRpciBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKQEAgLTQ0OTUsMjQgKzU1NTYsMzAgQEAKIAkgIDs7CiAJZXNhYwogCWNhc2UgIiRkZXBsaWJzICIgaW4KLQkqIiAtTCRkaXIgIiopIDs7CisJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKKwkgICMgV2lsbCBvbmx5IGhhcHBlbiBmb3IgYWJzb2x1dGUgb3Igc3lzcm9vdCBhcmd1bWVudHMKKwkgIDs7CiAJKikKLQkgIGRlcGxpYnM9IiRkZXBsaWJzIC1MJGRpciIKLQkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgorCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcworCSAgY2FzZSAkZGlyIGluCisJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKiB8ID0qKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKKwkgIGVzYWMKKwkgIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiCiAJICA7OwogCWVzYWMKIAljYXNlICRob3N0IGluCiAJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKLQkgIHRlc3RiaW5kaXI9YCRFQ0hPICJYJGRpciIgfCAkWHNlZCAtZSAncyovbGliJCovYmluKidgCisJICB0ZXN0YmluZGlyPWAkRUNITyAiJGRpciIgfCAkU0VEICdzKi9saWIkKi9iaW4qJ2AKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRkaXI7OwotCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKIAkgIGVzYWMKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CiAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwogCWVzYWMKQEAgLTQ1MjIsNyArNTU4OSw3IEBACiAgICAgICAtbCopCiAJaWYgdGVzdCAiWCRhcmciID0gIlgtbGMiIHx8IHRlc3QgIlgkYXJnIiA9ICJYLWxtIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyopCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCiAJICAgICMgVGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgQyBvciBtYXRoIGxpYnJhcnkgKGFzIHN1Y2gpCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CkBAIC00NTM2LDcgKzU2MDMsNyBAQAogCSAgICA7OwogCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yawotCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCisJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CiAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCkBAIC00NTU2LDcgKzU2MjMsNyBAQAogCSAgIDs7CiAJIGVzYWMKIAlmaQotCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCisJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCiAJY29udGludWUKIAk7OwogCkBAIC00NTY4LDIxICs1NjM1LDIxIEBACiAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCiAgICAgICAjIGNsYXNzZXMsIG5hbWUgbWFuZ2xpbmcsIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCiAgICAgICAjIERhcndpbiB1c2VzIHRoZSAtYXJjaCBmbGFnIHRvIGRldGVybWluZSBvdXRwdXQgYXJjaGl0ZWN0dXJlLgotICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290fC0tc3lzcm9vdCkKKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKIAlwcmV2PXhjb21waWxlcgogCWNvbnRpbnVlCiAJOzsKIAotICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkc3wtZnN0YWNrLXByb3RlY3RvciopCi0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKIAljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCSAgICAqIiAkYXJnICIqKSA7OwotCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkYXJnIiA7OworCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkYXJnIiA7OwogCWVzYWMKIAljb250aW51ZQogCTs7CkBAIC00NjQ5LDEzICs1NzE2LDE3IEBACiAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJY2FzZSAkZGlyIGluCiAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworCT0qKQorCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZGlyIgorCSAgZGlyPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgOzsKIAkqKQogCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCiAJICA7OwogCWVzYWMKIAljYXNlICIkeHJwYXRoICIgaW4KIAkqIiAkZGlyICIqKSA7OwotCSopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworCSopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CiAJZXNhYwogCWNvbnRpbnVlCiAJOzsKQEAgLTQ3MDgsOCArNTc3OSw4IEBACiAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCiAJICBJRlM9IiRzYXZlX2lmcyIKICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCWRvbmUKIAlJRlM9IiRzYXZlX2lmcyIKIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCkBAIC00NzI0LDkgKzU3OTUsOSBAQAogCWZvciBmbGFnIGluICRhcmdzOyBkbwogCSAgSUZTPSIkc2F2ZV9pZnMiCiAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCi0JICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgYXJnICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQogCUlGUz0iJHNhdmVfaWZzIgogCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKQEAgLTQ3NTQsMjMgKzU4MjUsMjggQEAKIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAk7OwogCi0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgotICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKLSAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCi0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljCi0gICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQwotICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgotICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiBwYXNzIHRocm91Z2ggcHJvZmlsaW5nIGZsYWcgZm9yIEdDQwotICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKKyAgICAgICMgRmxhZ3MgdG8gYmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLCB3aXRoIHJhdGlvbmFsZToKKyAgICAgICMgLTY0LCAtbWlwc1swLTldICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgU0dJIGNvbXBpbGVyCisgICAgICAjIC1yWzAtOV1bMC05XSogICAgICAgIHNwZWNpZnkgcHJvY2Vzc29yIGZvciB0aGUgU0dJIGNvbXBpbGVyCisgICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFN1biBjb21waWxlcgorICAgICAgIyArREEqLCArREQqICAgICAgICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBIUCBjb21waWxlcgorICAgICAgIyAtcSogICAgICAgICAgICAgICAgICBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCisgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCisgICAgICAjIC1GL3BhdGggICAgICAgICAgICAgIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgorICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiAgcHJvZmlsaW5nIGZsYWdzIGZvciBHQ0MKKyAgICAgICMgLWZzdGFjay1wcm90ZWN0b3IqICAgc3RhY2sgcHJvdGVjdG9yIGZsYWdzIGZvciBHQ0MKKyAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCisgICAgICAjIC10cD0qICAgICAgICAgICAgICAgIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KKyAgICAgICMgLS1zeXNyb290PSogICAgICAgICAgZm9yIHN5c3Jvb3Qgc3VwcG9ydAorICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KICAgICAgIC02NHwtbWlwc1swLTldfC1yWzAtOV1bMC05XSp8LXhhcmNoPSp8LXh0YXJnZXQ9KnwrREEqfCtERCp8LXEqfC1tKnwgXAotICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqKQorICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qfC0tc3lzcm9vdD0qfCBcCisgICAgICAtTyp8LWZsdG8qfC1md2hvcHIqfC1mdXNlLWxpbmtlci1wbHVnaW58LWZzdGFjay1wcm90ZWN0b3IqKQogICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgogCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgogICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCiAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIDs7CiAKQEAgLTQ3ODIsNyArNTg1OCw3IEBACiAKICAgICAgICouJG9iamV4dCkKIAkjIEEgc3RhbmRhcmQgb2JqZWN0LgotCW9ianM9IiRvYmpzICRhcmciCisJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCiAJOzsKIAogICAgICAgKi5sbykKQEAgLTQ4MTMsNyArNTg4OSw3IEBACiAKIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KLQkJZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCisJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKIAkJcHJldj0KIAkJY29udGludWUKIAkgICAgICBlbHNlCkBAIC00ODI1LDcgKzU5MDEsNyBAQAogCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQogCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCiAJICAgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgorCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKIAkgICAgICBwcmV2PQogCSAgICBmaQogCkBAIC00ODcwLDI0ICs1OTQ2LDI1IEBACiAKICAgICAgICouJGxpYmV4dCkKIAkjIEFuIGFyY2hpdmUuCi0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCisJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCisJZnVuY19hcHBlbmQgb2xkX2RlcGxpYnMgIiAkYXJnIgogCWNvbnRpbnVlCiAJOzsKIAogICAgICAgKi5sYSkKIAkjIEEgbGlidG9vbC1jb250cm9sbGVkIGxpYnJhcnkuCiAKKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKIAlpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCiAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisJICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIHByZXY9CiAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCiAJICAjIFRoZSBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxwcmVvcGVuLgotCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgcHJldj0KIAllbHNlCi0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorCSAgZnVuY19hcHBlbmQgZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJZmkKIAljb250aW51ZQogCTs7CkBAIC00OTI1LDcgKzYwMDIsNyBAQAogCiAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAgICAgICAjIGdldCB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluICRzaGxpYnBhdGhfdmFyCi0gICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiWFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCisgICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiXCR7JHNobGlicGF0aF92YXJ9XCIgXHwgXCRTRUQgXCdzLzovIC9nXCdcYAogICAgIGVsc2UKICAgICAgIHNobGliX3NlYXJjaF9wYXRoPQogICAgIGZpCkBAIC00OTM0LDYgKzYwMTEsOCBAQAogCiAgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKICAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCisgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKKyAgICB0b29sX291dHB1dF9vYmpkaXI9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogICAgICMgQ3JlYXRlIHRoZSBvYmplY3QgZGlyZWN0b3J5LgogICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCiAKQEAgLTQ5NTQsMTIgKzYwMzMsMTIgQEAKICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKICAgICAjIHRoYXQgYXJlIGxpbmtlZCBtb3JlIHRoYW4gb25jZSAoZS5nLiAtbGEgLWxiIC1sYSkKICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwotICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKyAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCiAJY2FzZSAiJGxpYnMgIiBpbgotCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZmkKLSAgICAgIGxpYnM9IiRsaWJzICRkZXBsaWIiCisgICAgICBmdW5jX2FwcGVuZCBsaWJzICIgJGRlcGxpYiIKICAgICBkb25lCiAKICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCkBAIC00OTcyLDkgKzYwNTEsOSBAQAogICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM7IHRoZW4KIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KLQkgICoiICRwcmVfcG9zdF9kZXAgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJHByZV9wb3N0X2RlcHMiIDs7CisJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRwcmVfcG9zdF9kZXBzIiA7OwogCSAgZXNhYwotCSAgcHJlX3Bvc3RfZGVwcz0iJHByZV9wb3N0X2RlcHMgJHByZV9wb3N0X2RlcCIKKwkgIGZ1bmNfYXBwZW5kIHByZV9wb3N0X2RlcHMgIiAkcHJlX3Bvc3RfZGVwIgogCWRvbmUKICAgICAgIGZpCiAgICAgICBwcmVfcG9zdF9kZXBzPQpAQCAtNTA0MSwxNyArNjEyMCwxOSBAQAogCWZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCiAJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCiAJICBkZXBlbmRlbmN5X2xpYnM9CisJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKIAkgIGNhc2UgJGxpYiBpbgotCSAgKi5sYSkJZnVuY19zb3VyY2UgIiRsaWIiIDs7CisJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKIAkgIGVzYWMKIAogCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5CiAJICAjIGhhcyBkZWNsYXJlZCBhcyB3ZWFrIGxpYnMKIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAgICAgICAgICAgIGRlcGxpYl9iYXNlPWAkRUNITyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICAgIGZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCisgICAgICAgICAgICBkZXBsaWJfYmFzZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgogCSAgICAqIiAkZGVwbGliX2Jhc2UgIiopIDs7Ci0JICAgICopIGRlcGxpYnM9IiRkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZG9uZQpAQCAtNTA3MiwxMSArNjE1MywxMSBAQAogCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgIGVsc2UKLQkgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZGVwbGliIgorCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCiAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCiAJCSAgICAqIiAkZGVwbGliICIqKSA7OwotCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CiAJCWVzYWMKIAkgICAgZmkKIAkgIGZpCkBAIC01MTYxLDcgKzYyNDIsNyBAQAogCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgogCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwogCQllc2FjCiAJICAgIGZpCiAJICBmaQpAQCAtNTE3NCw3ICs2MjU1LDggQEAKIAkgICAgdGVzdCAiJHBhc3MiID0gY29udiAmJiBjb250aW51ZQogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgICA7OwogCSAgcHJvZykKIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgpAQCAtNTE4OCw3ICs2MjcwLDggQEAKIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgICBmaQogCSAgICBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICAgIDs7CiAJICAqKQogCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCkBAIC01MTk5LDE3ICs2MjgyLDIxIEBACiAJLVIqKQogCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgogCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgotCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCiAJICAgICoiICRkaXIgIiopIDs7Ci0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwogCSAgICBlc2FjCiAJICBmaQogCSAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCSoubGEpIGxpYj0iJGRlcGxpYiIgOzsKKwkqLmxhKQorCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisJICBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorCSAgOzsKIAkqLiRsaWJleHQpCiAJICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCkBAIC01MjI3LDcgKzYzMTQsNyBAQAogCQltYXRjaF9wYXR0ZXJuKikKIAkJICBzZXQgZHVtbXkgJGRlcGxpYnNfY2hlY2tfbWV0aG9kOyBzaGlmdAogCQkgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDEgXCguKlwpImAKLQkJICBpZiBldmFsICJcJEVDSE8gXCJYJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSBcCisJCSAgaWYgZXZhbCAiXCRFQ0hPIFwiJGRlcGxpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIFwKIAkJICAgIHwgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KIAkJICAgIHZhbGlkX2FfbGliPXllcwogCQkgIGZpCkBAIC01MjM3LDE1ICs2MzI0LDE1IEBACiAJCTs7CiAJICAgICAgZXNhYwogCSAgICAgIGlmIHRlc3QgIiR2YWxpZF9hX2xpYiIgIT0geWVzOyB0aGVuCi0JCSRFQ0hPCisJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBUcnlpbmcgdG8gbGluayB3aXRoIHN0YXRpYyBsaWIgYXJjaGl2ZSAkZGVwbGliLiIKLQkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkRUNITyAiKioqIGJlY2F1c2UgdGhlIGZpbGUgZXh0ZW5zaW9ucyAuJGxpYmV4dCBvZiB0aGlzIGFyZ3VtZW50IG1ha2VzIG1lIGJlbGlldmUiCi0JCSRFQ0hPICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlIGhlcmUuIgorCQllY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgorCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCWVjaG8gIioqKiBiZWNhdXNlIHRoZSBmaWxlIGV4dGVuc2lvbnMgLiRsaWJleHQgb2YgdGhpcyBhcmd1bWVudCBtYWtlcyBtZSBiZWxpZXZlIgorCQllY2hvICIqKiogdGhhdCBpdCBpcyBqdXN0IGEgc3RhdGljIGFyY2hpdmUgdGhhdCBJIHNob3VsZCBub3QgdXNlIGhlcmUuIgogCSAgICAgIGVsc2UKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUiCiAJCSRFQ0hPICIqKiogc3RhdGljIGxpYnJhcnkgJGRlcGxpYiBpcyBub3QgcG9ydGFibGUhIgogCQlkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgpAQCAtNTI3MiwxMSArNjM1OSwxMSBAQAogCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgogCSAgICAgICMgSWYgdGhlcmUgaXMgbm8gZGxvcGVuIHN1cHBvcnQgb3Igd2UncmUgbGlua2luZyBzdGF0aWNhbGx5LAogCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgotCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkZXBsaWIiCiAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCiAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgICAgZWxzZQotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCiAJICAgIGZpCiAJICBmaQogCSAgY29udGludWUKQEAgLTUzMTgsMjAgKzY0MDUsMjAgQEAKIAogCSMgQ29udmVydCAiLWZyYW1ld29yayBmb28iIHRvICJmb28ubHRmcmFtZXdvcmsiCiAJaWYgdGVzdCAtbiAiJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiOyB0aGVuCi0JICB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIlgkaW5oZXJpdGVkX2xpbmtlcl9mbGFncyIgfCAkWHNlZCAtZSAncy8tZnJhbWV3b3JrIFwoW14gJF0qXCkvXDEubHRmcmFtZXdvcmsvZydgCisJICB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIiRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MvLWZyYW1ld29yayBcKFteICRdKlwpL1wxLmx0ZnJhbWV3b3JrL2cnYAogCSAgZm9yIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgaW4gJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzOyBkbwogCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKLQkgICAgICAqKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OwogCSAgICBlc2FjCiAJICBkb25lCiAJZmkKLQlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICJYICRkZXBlbmRlbmN5X2xpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiICRkZXBlbmRlbmN5X2xpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAogCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAogCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCi0JICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgotCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKKwkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZGxvcGVuIgorCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRkbHByZW9wZW4iCiAJZmkKIAogCWlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KQEAgLTUzNDIsMjAgKzY0MjksMjAgQEAKIAkgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKIAkgICAgZmkKIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgotCSAgICBjb252ZW5pZW5jZT0iJGNvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLQkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisJICAgIGZ1bmNfYXBwZW5kIG9sZF9jb252ZW5pZW5jZSAiICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKIAkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKIAkgIGZpCiAJICB0bXBfbGlicz0KIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKIAkgIGRvbmUKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGNvbnYKQEAgLTUzNjMsOSArNjQ1MCwxNSBAQAogCiAJIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgd2UgbGluayBhZ2FpbnN0LgogCWxpbmtsaWI9Ci0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotCSAgbGlua2xpYj0iJGwiCi0JZG9uZQorCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKKwkgICB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0geWVzIHx8CisJICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgorCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKKwllbHNlCisJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCisJICAgIGxpbmtsaWI9IiRsIgorCSAgZG9uZQorCWZpCiAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKIAlmaQpAQCAtNTM4Miw5ICs2NDc1LDkgQEAKIAkgICAgIyBzdGF0aWNhbGx5LCB3ZSBuZWVkIHRvIHByZWxvYWQuICBXZSBhbHNvIG5lZWQgdG8gcHJlbG9hZCBhbnkKIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgotCSAgICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliICRkZXBlbmRlbmN5X2xpYnMiCisJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliICRkZXBlbmRlbmN5X2xpYnMiCiAJICBlbHNlCi0JICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiCisJICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIgogCSAgZmkKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGRsb3BlbgpAQCAtNTQwNiwxNCArNjQ5OSwxNCBAQAogCiAJIyBGaW5kIHRoZSByZWxldmFudCBvYmplY3QgZGlyZWN0b3J5IGFuZCBsaWJyYXJ5IG5hbWUuCiAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgotCSAgaWYgdGVzdCAhIC1mICIkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgorCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCiAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCiAJICAgIGRpcj0iJGxhZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCiAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKIAkgIGVsc2UKLQkgICAgZGlyPSIkbGliZGlyIgotCSAgICBhYnNkaXI9IiRsaWJkaXIiCisJICAgIGRpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgorCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKIAkgIGZpCiAJICB0ZXN0ICJYJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSBYeWVzICYmIGF2b2lkdGVtcHJwYXRoPXllcwogCWVsc2UKQEAgLTU0MjEsMTIgKzY1MTQsMTIgQEAKIAkgICAgZGlyPSIkbGFkaXIiCiAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgotCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKIAkgIGVsc2UKIAkgICAgZGlyPSIkbGFkaXIvJG9iamRpciIKIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCiAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCiAJICBmaQogCWZpICMgJGluc3RhbGxlZCA9IHllcwogCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgpAQCAtNTQzNywyMCArNjUzMCw0NiBAQAogCSAgaWYgdGVzdCAteiAiJGxpYmRpciIgJiYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgogCSAgZmkKLQkgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scwotCSAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCi0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJG9sZF9saWJyYXJ5IgotCSAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCi0JICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLQkJZGxwcmVjb252ZW5pZW5jZWxpYnM9IiRkbHByZWNvbnZlbmllbmNlbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCi0JICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGRsbmFtZSIKLQkgIGVsc2UKLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kbGlua2xpYiIKLQkgIGZpCisJICBjYXNlICIkaG9zdCIgaW4KKwkgICAgIyBzcGVjaWFsIGhhbmRsaW5nIGZvciBwbGF0Zm9ybXMgd2l0aCBQRS1ETExzLgorCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKKwkgICAgICAjIHN0YXRpYyBhbmQgc2hhcmVkIGFyZSBwcmVzZW50LiAgVGhlcmVmb3JlLCBlbnN1cmUgd2UgZXh0cmFjdAorCSAgICAgICMgc3ltYm9scyBmcm9tIHRoZSBpbXBvcnQgbGlicmFyeSBpZiBhIHNoYXJlZCBsaWJyYXJ5IGlzIHByZXNlbnQKKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KKwkgICAgICAjIHRoaXMgYnkgcHV0dGluZyB0aGUgaW1wb3J0IGxpYnJhcnkgbmFtZSBpbnRvICRuZXdkbHByZWZpbGVzLgorCSAgICAgICMgV2UgcmVjb3ZlciB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIGJ5ICdzYXZpbmcnIHRoZSBsYSBmaWxlCisJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQorCSAgICAgICMgZGxuYW1lIGZyb20gdGhlIGxhIGZpbGUuCisJICAgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCisJICAgICAgICBldmFsICJsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdD1cJGFic19sYWRpci9cJGxhbmFtZSIKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgorCSAgICAgIGVsc2UKKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICAgZmkKKwkgICAgOzsKKwkgICAgKiApCisJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCisJICAgICAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCisJICAgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKwkgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgorCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRkbG5hbWUiCisJICAgICAgZWxzZQorCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisJICAgICAgZmkKKwkgICAgOzsKKwkgIGVzYWMKIAlmaSAjICRwYXNzID0gZGxwcmVvcGVuCiAKIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgpAQCAtNTQ2OCw3ICs2NTg3LDcgQEAKIAogCiAJaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgJiYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGFkaXIiCisJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCiAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgogCiAJICBsaW5rYWxsZGVwbGlicz1ubwpAQCAtNTQ4MSw3ICs2NjAwLDggQEAKIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgY2FzZSAkZGVwbGliIGluCiAJICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKLQkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkgICAgICAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCQkgOzsKIAkgICAgZXNhYwogCSAgICAjIE5lZWQgdG8gbGluayBhZ2FpbnN0IGFsbCBkZXBlbmRlbmN5X2xpYnM/CkBAIC01NDkyLDEyICs2NjEyLDEyIEBACiAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKIAkgICAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkgICAgZmkKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICBmaQotCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKIAkgIGRvbmUgIyBmb3IgZGVwbGliCiAJICBjb250aW51ZQogCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgpAQCAtNTUxMiw3ICs2NjMyLDcgQEAKIAkgICAgICAjIE1ha2Ugc3VyZSB0aGUgcnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCiAJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgogCSAgICAgICoiJGFic2RpcjoiKikgOzsKLQkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCRhYnNkaXI6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfcnBhdGggIiRhYnNkaXI6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIApAQCAtNTUyNCw3ICs2NjQ0LDcgQEAKIAkgICAgKikKIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGFic2RpciAiKikgOzsKLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgorCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NTMzLDcgKzY2NTMsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCiAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwogCSAgICAgIGVzYWMKIAkgICAgICA7OwogCSAgICBlc2FjCkBAIC01NTU4LDEyICs2Njc4LDEyIEBACiAJICBjYXNlICRob3N0IGluCiAJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQogCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgogCSAgICAgIG5lZWRfcmVsaW5rPW5vCiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCi0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKIAkgICAgICBuZWVkX3JlbGluaz15ZXMKIAkgICAgZmkKIAkgICAgOzsKQEAgLTU1ODAsNyArNjcwMCw3IEBACiAJICAgIGZpCiAJICBkb25lCiAJICBpZiB0ZXN0IC16ICIkZGxvcGVubW9kdWxlIiAmJiB0ZXN0ICIkc2hvdWxkbm90bGluayIgPSB5ZXMgJiYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgotCSAgICAkRUNITworCSAgICBlY2hvCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCiAJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBleGVjdXRhYmxlICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgogCSAgICBlbHNlCkBAIC01NTk4LDcgKzY3MTgsNyBAQAogCSAgICAqKQogCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU2MDcsNyArNjcyNyw3IEBACiAJICAgICopCiAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIDs7CiAJICAgIGVzYWMKQEAgLTU2NjEsNyArNjc4MSw3IEBACiAJICAgIGxpbmtsaWI9JG5ld2xpYgogCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCiAKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCiAJICAgIGFkZF9zaGxpYnBhdGg9CiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KQEAgLTU2ODMsOSArNjgwMyw5IEBACiAJCSAgICAgIGlmIHRlc3QgIlgkZGxvcGVubW9kdWxlIiAhPSAiWCRsaWIiOyB0aGVuCiAJCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpYiAkbGlua2xpYiBpcyBhIG1vZHVsZSwgbm90IGEgc2hhcmVkIGxpYnJhcnkiCiAJCQlpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiIDsgdGhlbgotCQkJICAkRUNITwotCQkJICAkRUNITyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCi0JCQkgICRFQ0hPICIqKiogVGhlIGxpbmsgd2lsbCBwcm9iYWJseSBmYWlsLCBzb3JyeSIKKwkJCSAgZWNobworCQkJICBlY2hvICIqKiogQW5kIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHN0YXRpYyBhcmNoaXZlIGF2YWlsYWJsZSIKKwkJCSAgZWNobyAiKioqIFRoZSBsaW5rIHdpbGwgcHJvYmFibHkgZmFpbCwgc29ycnkiCiAJCQllbHNlCiAJCQkgIGFkZD0iJGRpci8kb2xkX2xpYnJhcnkiCiAJCQlmaQpAQCAtNTcxNyw3ICs2ODM3LDcgQEAKIAkJaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkJICBjYXNlICRsaWJkaXIgaW4KIAkJICAgIFtcXC9dKikKLQkJICAgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKwkJICAgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCiAJCSAgICAgIDs7CiAJCSAgZXNhYwogCQlmaQpAQCAtNTczOSw3ICs2ODU5LDcgQEAKIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCiAJICAgICAgY2FzZSA6JGNvbXBpbGVfc2hsaWJwYXRoOiBpbgogCSAgICAgICoiOiRhZGRfc2hsaWJwYXRoOiIqKSA7OwotCSAgICAgICopIGNvbXBpbGVfc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkYWRkX3NobGlicGF0aDoiIDs7CisJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9zaGxpYnBhdGggIiRhZGRfc2hsaWJwYXRoOiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCkBAIC01NzUzLDEzICs2ODczLDEzIEBACiAJCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KIAkJKiI6JGxpYmRpcjoiKikgOzsKLQkJKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7CisJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CiAJCWVzYWMKIAkgICAgICBmaQogCSAgICBmaQogCSAgZmkKIAotCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAgIGFkZF9zaGxpYnBhdGg9CiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KQEAgLTU3NzMsNyArNjg5Myw3IEBACiAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCiAJICAgICAgY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KIAkgICAgICAqIjokbGliZGlyOiIqKSA7OwotCSAgICAgICopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIGFkZD0iLWwkbmFtZSIKIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllczsgdGhlbgpAQCAtNTc5MCw3ICs2OTEwLDcgQEAKIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgogCQljYXNlICRsaWJkaXIgaW4KIAkJICBbXFwvXSopCi0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorCQkgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCiAJCSAgICA7OwogCQllc2FjCiAJICAgICAgZmkKQEAgLTU4MjUsMjEgKzY5NDUsMjEgQEAKIAogCSAgICAjIEp1c3QgcHJpbnQgYSB3YXJuaW5nIGFuZCBhZGQgdGhlIGxpYnJhcnkgdG8gZGVwZW5kZW5jeV9saWJzIHNvCiAJICAgICMgdGhhdCB0aGUgcHJvZ3JhbSBjYW4gYmUgbGlua2VkIGFnYWluc3QgdGhlIHN0YXRpYyBsaWJyYXJ5LgotCSAgICAkRUNITworCSAgICBlY2hvCiAJICAgICRFQ0hPICIqKiogV2FybmluZzogVGhpcyBzeXN0ZW0gY2FuIG5vdCBsaW5rIHRvIHN0YXRpYyBsaWIgYXJjaGl2ZSAkbGliLiIKLQkgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCSAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlLiIKKwkgICAgZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkgICAgZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkgICAgZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlLiIKIAkgICAgaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXM7IHRoZW4KLQkgICAgICAkRUNITyAiKioqIEJ1dCBhcyB5b3UgdHJ5IHRvIGJ1aWxkIGEgbW9kdWxlIGxpYnJhcnksIGxpYnRvb2wgd2lsbCBzdGlsbCBjcmVhdGUgIgotCSAgICAgICRFQ0hPICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyBhcHBsaWNhdGlvbiIKLQkgICAgICAkRUNITyAiKioqIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcgdG8gcmVzb2x2ZSBzeW1ib2xzIGF0IHJ1bnRpbWUuIgorCSAgICAgIGVjaG8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKKwkgICAgICBlY2hvICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyBhcHBsaWNhdGlvbiIKKwkgICAgICBlY2hvICIqKiogaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZyB0byByZXNvbHZlIHN5bWJvbHMgYXQgcnVudGltZS4iCiAJICAgICAgaWYgdGVzdCAteiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQkJJEVDSE8KLQkJJEVDSE8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgotCQkkRUNITyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKLQkJJEVDSE8gIioqKiBub3QgZmluZCBzdWNoIGEgcHJvZ3JhbS4gIFNvLCB0aGlzIG1vZHVsZSBpcyBwcm9iYWJseSB1c2VsZXNzLiIKLQkJJEVDSE8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgorCQllY2hvCisJCWVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgorCQllY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgorCQllY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJCWVjaG8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IG5vOyB0aGVuCiAJCWJ1aWxkX2xpYnRvb2xfbGlicz1tb2R1bGUKQEAgLTU4NjcsMzcgKzY5ODcsNDYgQEAKIAkgICAgICAgICAgIHRlbXBfeHJwYXRoPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgogCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7Ci0JCSAgICopIHhycGF0aD0iJHhycGF0aCAkdGVtcF94cnBhdGgiOzsKKwkJICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJHRlbXBfeHJwYXRoIjs7CiAJCSAgIGVzYWM7OwotCSAgICAgICopIHRlbXBfZGVwbGlicz0iJHRlbXBfZGVwbGlicyAkbGliZGlyIjs7CisJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9kZXBsaWJzICIgJGxpYmRpciI7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQogCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCiAJICBmaQogCi0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGFic2RpciIKKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCiAJICAjIExpbmsgYWdhaW5zdCB0aGlzIGxpYnJhcnkKIAkgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSBubyAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKIAkgIHRtcF9saWJzPQogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKwkgICAgY2FzZSAkZGVwbGliIGluCisgICAgICAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKyAgICAgICAgICAgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7OworICAgICAgICAgICAgICAqKSBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIgOzsKKyAgICAgICAgICAgIGVzYWMKKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAqIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0ICIqKQorICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCi0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgZG9uZQogCiAJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KIAkgICAgIyBBZGQgdGhlIHNlYXJjaCBwYXRocyBvZiBhbGwgZGVwZW5kZW5jeSBsaWJyYXJpZXMKIAkgICAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworCSAgICAgIHBhdGg9CiAJICAgICAgY2FzZSAkZGVwbGliIGluCiAJICAgICAgLUwqKSBwYXRoPSIkZGVwbGliIiA7OwogCSAgICAgICoubGEpCisJICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKwkgICAgICAgIGRlcGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CiAJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgotCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorCQlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAkJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJCWNhc2UgJGRpciBpbgogCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFic2Rpcj0iJGRpciIgOzsKQEAgLTU5MjQsOCArNzA1Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGRhcndpbl9pbnN0YWxsX25hbWUiOyB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAogICAgICAgICAgICAgICAgICAgICAgIGZpCi0JCSAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLQkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorCQkgICAgICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAtZHlsaWJfZmlsZSAke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCiAJCSAgICAgIHBhdGg9CiAJCSAgICBmaQogCQkgIGZpCkBAIC01OTU4LDcgKzcwODcsNyBAQAogCSAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGNvbXBpbGVfZGVwbGlicyIKIAkgIGZpbmFsaXplX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZmluYWxpemVfZGVwbGlicyIKIAllbHNlCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICJgJEVDSE8gIlggJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAiYCRFQ0hPICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCiAJZmkKICAgICAgIGZpCiAgICAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCkBAIC01OTc1LDcgKzcxMDQsNyBAQAogCSAgZm9yIGRpciBpbiAkbmV3bGliX3NlYXJjaF9wYXRoOyBkbwogCSAgICBjYXNlICIkbGliX3NlYXJjaF9wYXRoICIgaW4KIAkgICAgKiIgJGRpciAiKikgOzsKLQkgICAgKikgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiIDs7CisJICAgICopIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAkgIG5ld2xpYl9zZWFyY2hfcGF0aD0KQEAgLTYwMzMsMTAgKzcxNjIsMTAgQEAKIAkgICAgLUwqKQogCSAgICAgIGNhc2UgIiAkdG1wX2xpYnMgIiBpbgogCSAgICAgICoiICRkZXBsaWIgIiopIDs7Ci0JICAgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworCSAgICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgOzsKLQkgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworCSAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAkgIGV2YWwgJHZhcj1cIiR0bXBfbGlic1wiCkBAIC02MDUyLDcgKzcxODEsNyBAQAogCSAgOzsKIAllc2FjCiAJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotCSAgdG1wX2xpYnM9IiR0bXBfbGlicyAkaSIKKwkgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGkiCiAJZmkKICAgICAgIGRvbmUKICAgICAgIGRlcGVuZGVuY3lfbGlicz0kdG1wX2xpYnMKQEAgLTYwOTMsNyArNzIyMiw3IEBACiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogICAgICAgb2xkbGlicz0iJG91dHB1dCIKLSAgICAgIG9ianM9IiRvYmpzJG9sZF9kZXBsaWJzIgorICAgICAgZnVuY19hcHBlbmQgb2JqcyAiJG9sZF9kZXBsaWJzIgogICAgICAgOzsKIAogICAgIGxpYikKQEAgLTYxMjYsMTAgKzcyNTUsMTAgQEAKIAlpZiB0ZXN0ICIkZGVwbGlic19jaGVja19tZXRob2QiICE9IHBhc3NfYWxsOyB0aGVuCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgYnVpbGQgbGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgZnJvbSBub24tbGlidG9vbCBvYmplY3RzIG9uIHRoaXMgaG9zdDokb2JqcyIKIAllbHNlCi0JICAkRUNITworCSAgZWNobwogCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgogCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCi0JICBsaWJvYmpzPSIkbGlib2JqcyAkb2JqcyIKKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkb2JqcyIKIAlmaQogICAgICAgZmkKIApAQCAtNjE5NCw3ICs3MzIzLDcgQEAKIAkgICAgYWdlPSIkbnVtYmVyX21pbm9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9yZXZpc2lvbiIKIAkgICAgOzsKLQkgIGZyZWVic2QtYW91dHxmcmVlYnNkLWVsZnxzdW5vcykKKwkgIGZyZWVic2QtYW91dHxmcmVlYnNkLWVsZnxxbnh8c3Vub3MpCiAJICAgIGN1cnJlbnQ9IiRudW1iZXJfbWFqb3IiCiAJICAgIHJldmlzaW9uPSIkbnVtYmVyX21pbm9yIgogCSAgICBhZ2U9IjAiCkBAIC02MzI3LDcgKzc0NTYsNyBAQAogCSAgZG9uZQogCiAJICAjIE1ha2UgZXhlY3V0YWJsZXMgZGVwZW5kIG9uIG91ciBjdXJyZW50IHZlcnNpb24uCi0JICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgorCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgogCSAgOzsKIAogCXFueCkKQEAgLTYzOTUsMTAgKzc1MjQsMTAgQEAKICAgICAgIGZpCiAKICAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkbGlibmFtZSIgIiRsaWJuYW1lIiAieWVzIgotICAgICAgbGlib2Jqcz0iJGxpYm9ianMgJHN5bWZpbGVvYmoiCisgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCiAgICAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCi0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluazsgdGhlbgogCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5CiAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCiAJcmVtb3ZlbGlzdD0KQEAgLTY0MTQsNyArNzU0Myw3IEBACiAJCSAgIGNvbnRpbnVlCiAJCSBmaQogCSAgICAgICBmaQotCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKKwkgICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRwIgogCSAgICAgICA7OwogCSAgICAqKSA7OwogCSAgZXNhYwpAQCAtNjQyNSwyNyArNzU1NCwyOCBAQAogCiAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCi0Jb2xkbGlicz0iJG9sZGxpYnMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKwlmdW5jX2FwcGVuZCBvbGRsaWJzICIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKIAogCSMgVHJhbnNmb3JtIC5sbyBmaWxlcyB0byAubyBmaWxlcy4KLQlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0nJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAogICAgICAgZmkKIAogICAgICAgIyBFbGltaW5hdGUgYWxsIHRlbXBvcmFyeSBkaXJlY3Rvcmllcy4KICAgICAgICNmb3IgcGF0aCBpbiAkbm90aW5zdF9wYXRoOyBkbwotICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICJYJGxpYl9zZWFyY2hfcGF0aCAiIHwgJFhzZWQgLWUgInMlICRwYXRoICUgJWciYAotICAgICAgIwlkZXBsaWJzPWAkRUNITyAiWCRkZXBsaWJzICIgfCAkWHNlZCAtZSAicyUgLUwkcGF0aCAlICVnImAKLSAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiWCRkZXBlbmRlbmN5X2xpYnMgIiB8ICRYc2VkIC1lICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICIkbGliX3NlYXJjaF9wYXRoICIgfCAkU0VEICJzJSAkcGF0aCAlICVnImAKKyAgICAgICMJZGVwbGlicz1gJEVDSE8gIiRkZXBsaWJzICIgfCAkU0VEICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlkZXBlbmRlbmN5X2xpYnM9YCRFQ0hPICIkZGVwZW5kZW5jeV9saWJzICIgfCAkU0VEICJzJSAtTCRwYXRoICUgJWciYAogICAgICAgI2RvbmUKIAogICAgICAgaWYgdGVzdCAtbiAiJHhycGF0aCI7IHRoZW4KIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCiAJdGVtcF94cnBhdGg9CiAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbwotCSAgdGVtcF94cnBhdGg9IiR0ZW1wX3hycGF0aCAtUiRsaWJkaXIiCisJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgogCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZG9uZQogCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCkBAIC02NDU5LDcgKzc1ODksNyBAQAogICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCiAJY2FzZSAiICRkbHByZWZpbGVzICRkbGZpbGVzICIgaW4KIAkqIiAkbGliICIqKSA7OwotCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7CisJKikgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQogCkBAIC02NDY5LDE5ICs3NTk5LDE5IEBACiAgICAgICBmb3IgbGliIGluICRvbGRfZGxwcmVmaWxlczsgZG8KIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCiAJKiIgJGxpYiAiKikgOzsKLQkqKSBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliIiA7OwogCWVzYWMKICAgICAgIGRvbmUKIAogICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KIAlpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCiAJICBjYXNlICRob3N0IGluCi0JICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQorCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCiAJICAgICMgdGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgYyBsaWJyYXJ5IChhcyBzdWNoKSEKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgogCSAgICA7OwogCSAgKi0qLW5ldGJzZCopCiAJICAgICMgRG9uJ3QgbGluayB3aXRoIGxpYmMgdW50aWwgdGhlIGEub3V0IGxkLnNvIGlzIGZpeGVkLgpAQCAtNjQ5OCw3ICs3NjI4LDcgQEAKIAkgICopCiAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCiAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KLQkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCisJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKIAkgICAgZmkKIAkgICAgOzsKIAkgIGVzYWMKQEAgLTY1NDcsNyArNzY3Nyw3IEBACiAJCWlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAqIiAkaSAiKikKLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgaT0iIgogCQkgICAgOzsKIAkJICBlc2FjCkBAIC02NTU4LDIxICs3Njg4LDIxIEBACiAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKIAkJICBkZXBsaWJfbWF0Y2g9JDEKIAkJICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKIAkJICBlbHNlCiAJCSAgICBkcm9wcGVkZGVwcz15ZXMKLQkJICAgICRFQ0hPCisJCSAgICBlY2hvCiAJCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCi0JCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkJICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggSSBiZWxpZXZlIHlvdSBkbyBub3QgaGF2ZSIKLQkJICAgICRFQ0hPICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCi0JCSAgICAkRUNITyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgorCQkgICAgZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIEkgYmVsaWV2ZSB5b3UgZG8gbm90IGhhdmUiCisJCSAgICBlY2hvICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCisJCSAgICBlY2hvICIqKiogaXRzIGR5bmFtaWMgZGVwZW5kZW5jeSBsaXN0IHRoYXQgcHJvZ3JhbXMgZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgZmkKIAkJZmkKIAkJOzsKIAkgICAgICAqKQotCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQpAQCAtNjU5MCw3ICs3NzIwLDcgQEAKIAkJICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJICAgICoiICRpICIqKQotCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgICAgICBpPSIiCiAJCSAgICAgIDs7CiAJCSAgICBlc2FjCkBAIC02NjAxLDI5ICs3NzMxLDI5IEBACiAJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAogCQkgICAgZGVwbGliX21hdGNoPSQxCiAJCSAgICBpZiB0ZXN0IGBleHByICIkbGRkX291dHB1dCIgOiAiLiokZGVwbGliX21hdGNoImAgLW5lIDAgOyB0aGVuCi0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgICBlbHNlCiAJCSAgICAgIGRyb3BwZWRkZXBzPXllcwotCQkgICAgICAkRUNITworCQkgICAgICBlY2hvCiAJCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKLQkJICAgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkgICAgICAkRUNITyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCi0JCSAgICAgICRFQ0hPICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCisJCSAgICAgIGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICAgIGVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSAgICAgIGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJICAgICAgZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCisJCSAgICAgIGVjaG8gIioqKiBhcyBhIGR5bmFtaWMgZGVwZW5kZW5jeSB0aGF0IHByb2dyYW1zIGNhbiBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKIAkJICAgIGZpCiAJCSAgZmkKIAkJZWxzZQogCQkgIGRyb3BwZWRkZXBzPXllcwotCQkgICRFQ0hPCisJCSAgZWNobwogCQkgICRFQ0hPICIqKiogV2FybmluZyEgIExpYnJhcnkgJGkgaXMgbmVlZGVkIGJ5IHRoaXMgbGlicmFyeSBidXQgSSB3YXMgbm90IGFibGUgdG8iCi0JCSAgJEVDSE8gIioqKiBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKLQkJICAkRUNITyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKLQkJICAkRUNITyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKKwkJICBlY2hvICIqKiogbWFrZSBpdCBsaW5rIGluISAgWW91IHdpbGwgcHJvYmFibHkgbmVlZCB0byBpbnN0YWxsIGl0IG9yIHNvbWUiCisJCSAgZWNobyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKKwkJICBlY2hvICIqKiogZnVuY3Rpb25hbC4gIEluc3RhbGxpbmcgaXQgYmVmb3JlIGNvbnRpbnVpbmcgd291bGQgYmUgZXZlbiBiZXR0ZXIuIgogCQlmaQogCQk7OwogCSAgICAgICopCi0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCTs7CiAJICAgICAgZXNhYwogCSAgICBkb25lCkBAIC02NjQwLDE1ICs3NzcwLDI3IEBACiAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQotCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkgIGFfZGVwbGliPSIiCiAJCSAgOzsKIAkJZXNhYwogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisJCWlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX2dsb2IiOyB0aGVuCisJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKKwkJZWxzZQorCQkgIGxpYm5hbWVnbG9iPSRsaWJuYW1lCisJCWZpCisJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCiAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwotCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAorCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCisJCSAgICBzaG9wdCAtcyBub2Nhc2VnbG9iCisJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCisJCSAgICAkbm9jYXNlZ2xvYgorCQkgIGVsc2UKKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKwkJICBmaQogCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKQEAgLTY2NjUsMTMgKzc4MDcsMTMgQEAKIAkJCXBvdGxpYmxpbms9YGxzIC1sZCAkcG90bGliIHwgJHtTRUR9ICdzLy4qIC0+IC8vJ2AKIAkJCWNhc2UgJHBvdGxpYmxpbmsgaW4KIAkJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcG90bGliPSIkcG90bGlibGluayI7OwotCQkJKikgcG90bGliPWAkRUNITyAiWCRwb3RsaWIiIHwgJFhzZWQgLWUgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OworCQkJKikgcG90bGliPWAkRUNITyAiJHBvdGxpYiIgfCAkU0VEICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKIAkJCWVzYWMKIAkJICAgICAgZG9uZQogCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAogCQkJICRTRUQgLWUgMTBxIHwKIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgotCQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJCWFfZGVwbGliPSIiCiAJCQlicmVhayAyCiAJCSAgICAgIGZpCkBAIC02NjgwLDEyICs3ODIyLDEyIEBACiAJICAgICAgZmkKIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKLQkJJEVDSE8KKwkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCi0JCSRFQ0hPICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkRUNITyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJEVDSE8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCisJCWVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCWVjaG8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCWVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKKwkJZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKIAkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCiAJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgZmlsZSBtYWdpYyB0ZXN0KSIKIAkJZWxzZQpAQCAtNjY5Niw3ICs3ODM4LDcgQEAKIAkgICAgICA7OwogCSAgICAqKQogCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCi0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgorCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCiAJICAgICAgOzsKIAkgICAgZXNhYwogCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KQEAgLTY3MTIsNyArNzg1NCw3IEBACiAJICAgICAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQotCQkgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCQkgIGFfZGVwbGliPSIiCiAJCSAgOzsKIAkJZXNhYwpAQCAtNjcyMyw5ICs3ODY1LDkgQEAKIAkJICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVbLi1dKiAyPi9kZXYvbnVsbGAKIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCiAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAotCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiWCRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFhzZWQgLWUgMTBxIHwgXAorCQkgICAgaWYgZXZhbCAiXCRFQ0hPIFwiJHBvdGVudF9saWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSB8IFwKIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKIAkJICAgICAgYV9kZXBsaWI9IiIKIAkJICAgICAgYnJlYWsgMgogCQkgICAgZmkKQEAgLTY3MzQsMTIgKzc4NzYsMTIgQEAKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWRyb3BwZWRkZXBzPXllcwotCQkkRUNITworCQllY2hvCiAJCSRFQ0hPICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKLQkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkRUNITyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKKwkJZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKKwkJZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQllY2hvICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgogCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KIAkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciByZWdleCBwYXR0ZXJuIHRlc3QpIgogCQllbHNlCkBAIC02NzUwLDMyICs3ODkyLDMyIEBACiAJICAgICAgOzsKIAkgICAgKikKIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgogCSAgICAgIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCiAJICA7OwogCW5vbmUgfCB1bmtub3duIHwgKikKIAkgIG5ld2RlcGxpYnM9IiIKLQkgIHRtcF9kZXBsaWJzPWAkRUNITyAiWCAkZGVwbGlicyIgfCAkWHNlZCBcCi0JICAgICAgLWUgJ3MvIC1sYyQvLycgLWUgJ3MvIC1bTFJdW14gXSovL2cnYAorCSAgdG1wX2RlcGxpYnM9YCRFQ0hPICIgJGRlcGxpYnMiIHwgJFNFRCAncy8gLWxjJC8vOyBzLyAtW0xSXVteIF0qLy9nJ2AKIAkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkgICAgZm9yIGkgaW4gJHByZWRlcHMgJHBvc3RkZXBzIDsgZG8KIAkgICAgICAjIGNhbid0IHVzZSBYc2VkIGJlbG93LCBiZWNhdXNlICRpIG1pZ2h0IGNvbnRhaW4gJy8nCi0JICAgICAgdG1wX2RlcGxpYnM9YCRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAicywkaSwsImAKKwkgICAgICB0bXBfZGVwbGlicz1gJEVDSE8gIiAkdG1wX2RlcGxpYnMiIHwgJFNFRCAicywkaSwsImAKIAkgICAgZG9uZQogCSAgZmkKLQkgIGlmICRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAncy9bCSBdLy9nJyB8Ci0JICAgICAkR1JFUCAuID4vZGV2L251bGw7IHRoZW4KLQkgICAgJEVDSE8KKwkgIGNhc2UgJHRtcF9kZXBsaWJzIGluCisJICAqWyFcCVwgXSopCisJICAgIGVjaG8KIAkgICAgaWYgdGVzdCAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSAiWG5vbmUiOyB0aGVuCi0JICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHBsYXRmb3JtLiIKKwkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBwbGF0Zm9ybS4iCiAJICAgIGVsc2UKLQkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKKwkgICAgICBlY2hvICIqKiogV2FybmluZzogaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIG5vdCBrbm93biB0byBiZSBzdXBwb3J0ZWQuIgogCSAgICBmaQotCSAgICAkRUNITyAiKioqIEFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgYmVpbmcgZHJvcHBlZC4iCisJICAgIGVjaG8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgogCSAgICBkcm9wcGVkZGVwcz15ZXMKLQkgIGZpCisJICAgIDs7CisJICBlc2FjCiAJICA7OwogCWVzYWMKIAl2ZXJzdWZmaXg9JHZlcnN1ZmZpeF9zYXZlCkBAIC02Nzg3LDIzICs3OTI5LDIzIEBACiAJY2FzZSAkaG9zdCBpbgogCSotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IHdpdGggdGhlIFN5c3RlbSBmcmFtZXdvcmsKLQkgIG5ld2RlcGxpYnM9YCRFQ0hPICJYICRuZXdkZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJICBuZXdkZXBsaWJzPWAkRUNITyAiICRuZXdkZXBsaWJzIiB8ICRTRUQgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKIAkgIDs7CiAJZXNhYwogCiAJaWYgdGVzdCAiJGRyb3BwZWRkZXBzIiA9IHllczsgdGhlbgogCSAgaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXM7IHRoZW4KLQkgICAgJEVDSE8KLQkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgorCSAgICBlY2hvCisJICAgIGVjaG8gIioqKiBXYXJuaW5nOiBsaWJ0b29sIGNvdWxkIG5vdCBzYXRpc2Z5IGFsbCBkZWNsYXJlZCBpbnRlci1saWJyYXJ5IgogCSAgICAkRUNITyAiKioqIGRlcGVuZGVuY2llcyBvZiBtb2R1bGUgJGxpYm5hbWUuICBUaGVyZWZvcmUsIGxpYnRvb2wgd2lsbCBjcmVhdGUiCi0JICAgICRFQ0hPICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyIKLQkgICAgJEVDSE8gIioqKiBhcHBsaWNhdGlvbiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnLiIKKwkgICAgZWNobyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmciCisJICAgIGVjaG8gIioqKiBhcHBsaWNhdGlvbiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnLiIKIAkgICAgaWYgdGVzdCAteiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQkgICAgICAkRUNITwotCSAgICAgICRFQ0hPICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkgICAgICAkRUNITyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKLQkgICAgICAkRUNITyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgotCSAgICAgICRFQ0hPICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKKwkgICAgICBlY2hvCisJICAgICAgZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCisJICAgICAgZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKKwkgICAgICBlY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJICAgICAgZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCSAgICAgIG9sZGxpYnM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCkBAIC02ODEzLDE2ICs3OTU1LDE2IEBACiAJICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCiAJICAgIGZpCiAJICBlbHNlCi0JICAgICRFQ0hPICIqKiogVGhlIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgaGF2ZSBiZWVuIGRyb3BwZWQgaGVyZSB3aWxsIGJlIgotCSAgICAkRUNITyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKLQkgICAgJEVDSE8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKKwkgICAgZWNobyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKKwkgICAgZWNobyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKKwkgICAgZWNobyAiKioqIG9yIGlzIGRlY2xhcmVkIHRvIC1kbG9wZW4gaXQuIgogCiAJICAgIGlmIHRlc3QgIiRhbGxvd191bmRlZmluZWQiID0gbm87IHRoZW4KLQkgICAgICAkRUNITwotCSAgICAgICRFQ0hPICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgotCSAgICAgICRFQ0hPICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKLQkgICAgICAkRUNITyAiKioqIGl0IHdhcyBleHBsaWNpdGx5IHJlcXVlc3RlZCB3aXRoIC1uby11bmRlZmluZWQsIgotCSAgICAgICRFQ0hPICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgorCSAgICAgIGVjaG8KKwkgICAgICBlY2hvICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgorCSAgICAgIGVjaG8gIioqKiBiZWNhdXNlIGVpdGhlciB0aGUgcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCB0aGVtIG9yIgorCSAgICAgIGVjaG8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKKwkgICAgICBlY2hvICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC02ODM5LDkgKzc5ODEsOSBAQAogICAgICAgIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgogICAgICAgY2FzZSAkaG9zdCBpbgogCSotKi1kYXJ3aW4qKQotCSAgbmV3ZGVwbGlicz1gJEVDSE8gIlggJG5ld2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCi0JICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIlggJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAotCSAgZGVwbGlicz1gJEVDSE8gIlggJGRlcGxpYnMiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBuZXdkZXBsaWJzPWAkRUNITyAiICRuZXdkZXBsaWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz1gJEVDSE8gIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIGRlcGxpYnM9YCRFQ0hPICIgJGRlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAkgIDs7CiAgICAgICBlc2FjCiAKQEAgLTY4NTQsNyArNzk5Niw3IEBACiAJKikKIAkgIGNhc2UgIiAkZGVwbGlicyAiIGluCiAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNjg2NCwxMCArODAwNiwxMCBAQAogCS1MKikKIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgogCSAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAkgIGVzYWMKIAkgIDs7Ci0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCkBAIC02ODg0LDEwICs4MDI2LDEyIEBACiAJICBoYXJkY29kZV9saWJkaXJzPQogCSAgZGVwX3JwYXRoPQogCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgogCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCiAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgogCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCiAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKIAkJZWxzZQpAQCAtNjg5NiwxOCArODA0MCwxOCBAQAogCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJICAgIDs7CiAJCSAgKikKLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorCQkgICAgZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQkgICAgOzsKIAkJICBlc2FjCiAJCWZpCiAJICAgICAgZWxzZQogCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKKwkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCiAJICAgICAgZmkKIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICAgICAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgogCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBkb25lCkBAIC02OTI1LDcgKzgwNjksNyBAQAogCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgICBycGF0aD0KIAkgICAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgICBkb25lCiAJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgogCSAgZmkKQEAgLTY5MzMsNyArODA3Nyw3IEBACiAJZmkKIAogCXNobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCIKLQl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCiAJaWYgdGVzdCAtbiAiJHNobGlicGF0aCI7IHRoZW4KIAkgIGV2YWwgIiRzaGxpYnBhdGhfdmFyPSckc2hsaWJwYXRoXCQkc2hsaWJwYXRoX3Zhcic7IGV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKIAlmaQpAQCAtNjk1OSwxOCArODEwMywxOCBAQAogCWxpbmtuYW1lcz0KIAlmb3IgbGluawogCWRvCi0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCisJICBmdW5jX2FwcGVuZCBsaW5rbmFtZXMgIiAkbGluayIKIAlkb25lCiAKIAkjIFVzZSBzdGFuZGFyZCBvYmplY3RzIGlmIHRoZXkgYXJlIHBpYwotCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKIAl0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCiAJZGVsZmlsZXM9CiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGNwICIkZXhwb3J0X3N5bWJvbHMiICIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgogCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCi0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzIgogCWZpCiAKIAlvcmlnX2V4cG9ydF9zeW1ib2xzPQpAQCAtNzAwMSwxNCArODE0NSw0NiBAQAogCSAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scwogCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCiAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgICBmb3IgY21kIGluICRjbWRzOyBkbworCSAgICBmb3IgY21kMSBpbiAkY21kczsgZG8KIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKLQkgICAgICBldmFsIGNtZD1cIiRjbWRcIgotCSAgICAgIGZ1bmNfbGVuICIgJGNtZCIKLQkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAotCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorCSAgICAgICMgVGFrZSB0aGUgbm9ybWFsIGJyYW5jaCBpZiB0aGUgbm1fZmlsZV9saXN0X3NwZWMgYnJhbmNoCisJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCisJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KKwkJKn5mdW5jX2NvbnZlcnRfZmlsZV9ub29wIHwgKn5mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiB8IH4qKQorCQkgIHRyeV9ub3JtYWxfYnJhbmNoPXllcworCQkgIGV2YWwgY21kPVwiJGNtZDFcIgorCQkgIGZ1bmNfbGVuICIgJGNtZCIKKwkJICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAorCQkgIDs7CisJCSopCisJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KKwkJICA7OworCSAgICAgIGVzYWMKKwkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKKwkJICAgICAgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IH0KKwkgICAgICB0aGVuCiAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKwkgICAgICBlbGlmIHRlc3QgLW4gIiRubV9maWxlX2xpc3Rfc3BlYyI7IHRoZW4KKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKKwkJb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAorCQlvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubm0KKwkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorCQlmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJCWZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJE5NIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbworCQkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCQkgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCQlkb25lID4gIiRvdXRwdXQiCisJCWV2YWwgY21kPVwiJGNtZDFcIgorCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCisJCW91dHB1dD0kc2F2ZV9vdXRwdXQKKwkJbGlib2Jqcz0kc2F2ZV9saWJvYmpzCisJCXNraXBwZWRfZXhwb3J0PWZhbHNlCiAJICAgICAgZWxzZQogCQkjIFRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gZXhlY3V0ZSBpbiBvbmUgc3RlcC4KIAkJZnVuY192ZXJib3NlICJ1c2luZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlIGZvciBleHBvcnQgbGlzdC4uLiIKQEAgLTcwMjksNyArODIwNSw3IEBACiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCiAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKLQkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCiAJZmkKIAogCWlmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCkBAIC03MDQxLDcgKzgyMTcsNyBAQAogCSAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCiAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKLQkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgogCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKIAlmaQpAQCAtNzA1MSw3ICs4MjI3LDcgQEAKIAkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgogCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OwogCSAgKikKLQkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgogCSAgICA7OwogCSAgZXNhYwogCWRvbmUKQEAgLTcwNzEsMjEgKzgyNDcsMjEgQEAKIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGVsc2UKIAkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCi0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCiAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBmaQogCWZpCiAKIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCiAJICBldmFsIGZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmbGFnIgogCWZpCiAKIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CiAJZmkKIApAQCAtNzEzMCw3ICs4MzA2LDggQEAKIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCiAJICBmaQogCSAgc2F2ZV9vdXRwdXQ9JG91dHB1dAotCSAgb3V0cHV0X2xhPWAkRUNITyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICBmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgorCSAgb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCiAJICAjIENsZWFyIHRoZSByZWxvYWRhYmxlIG9iamVjdCBjcmVhdGlvbiBjb21tYW5kIHF1ZXVlIGFuZAogCSAgIyBpbml0aWFsaXplIGsgdG8gb25lLgpAQCAtNzE0MywxMyArODMyMCwxNiBAQAogCSAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCiAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmtzY3JpcHQKIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBHTlUgbGQgc2NyaXB0OiAkb3V0cHV0IgotCSAgICAkRUNITyAnSU5QVVQgKCcgPiAkb3V0cHV0CisJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAogCSAgICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKIAkgICAgZG8KLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgorCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CiAJICAgIGRvbmUKLQkgICAgJEVDSE8gJyknID4+ICRvdXRwdXQKLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgorCSAgICBlY2hvICcpJyA+PiAkb3V0cHV0CisJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgogCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rCiAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgbGlua2VyIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKQEAgLTcxNjMsMTAgKzgzNDMsMTIgQEAKIAkgICAgZmkKIAkgICAgZm9yIG9iagogCSAgICBkbwotCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0CisJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKIAkgICAgZG9uZQotCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0JICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRvdXRwdXRcIgorCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCisJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIKIAkgIGVsc2UKIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KIAkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLi4uIgpAQCAtNzE5MCwxNyArODM3MiwxOSBAQAogCQkgICMgY29tbWFuZCB0byB0aGUgcXVldWUuCiAJCSAgaWYgdGVzdCAiJGsiIC1lcSAxIDsgdGhlbgogCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KLQkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ialwiCisJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAorCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCiAJCSAgZWxzZQogCQkgICAgIyBBbGwgc3Vic2VxdWVudCByZWxvYWRhYmxlIG9iamVjdCBmaWxlcyB3aWxsIGxpbmsgaW4KIAkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0JCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHMgJG9iamxpc3QgJGxhc3Rfcm9ian5cJFJNICRsYXN0X3JvYmpcIgorCQkgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCisJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKIAkJICBmaQogCQkgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAogCQkgIGZ1bmNfYXJpdGggJGsgKyAxCiAJCSAgaz0kZnVuY19hcml0aF9yZXN1bHQKIAkJICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLQkJICBvYmpsaXN0PSRvYmoKKwkJICBvYmpsaXN0PSIgJG9iaiIKIAkJICBmdW5jX2xlbiAiICRsYXN0X3JvYmoiCiAJCSAgZnVuY19hcml0aCAkbGVuMCArICRmdW5jX2xlbl9yZXN1bHQKIAkJICBsZW49JGZ1bmNfYXJpdGhfcmVzdWx0CkBAIC03MjEwLDExICs4Mzk0LDEyIEBACiAJICAgICAgIyByZWxvYWRhYmxlIG9iamVjdCBmaWxlLiAgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QKIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KLQkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIgogCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCiAJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCiAJICAgICAgZmkKLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgogCiAJICAgIGVsc2UKIAkgICAgICBvdXRwdXQ9CkBAIC03MjQ4LDcgKzg0MzMsNyBAQAogCQlsdF9leGl0PSQ/CiAKIAkJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQpAQCAtNzI2OSw3ICs4NDU0LDcgQEAKIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgogCSAgICAgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgogCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgpAQCAtNzI4MSw3ICs4NDY2LDcgQEAKIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQogCSAgICAgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCiAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwogCSAgICBmaQpAQCAtNzMyMiwxMCArODUwNywxMCBAQAogCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwogCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAlmaQogCkBAIC03MzQxLDcgKzg1MjYsNyBAQAogCSAgICBsdF9leGl0PSQ/CiAKIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorCSAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCiAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCkBAIC03MzUzLDcgKzg1MzgsNyBAQAogCUlGUz0iJHNhdmVfaWZzIgogCiAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgogCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPwogCiAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCkBAIC03NDM0LDE4ICs4NjE5LDIxIEBACiAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCi0JICByZWxvYWRfY29udl9vYmpzPSRyZWxvYWRfb2Jqc1wgYCRFQ0hPICJYJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRYc2VkIC1lICdzfCx8IHxnJ2AKKwkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKIAllbHNlCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b2JqfXgiCi0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQogCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCWZpCiAgICAgICBmaQogCisgICAgICAjIElmIHdlJ3JlIG5vdCBidWlsZGluZyBzaGFyZWQsIHdlIG5lZWQgdG8gdXNlIG5vbl9waWNfb2JqcworICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCisKICAgICAgICMgQ3JlYXRlIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAnL1wuJyR7bGliZXh0fSQnL2QnIC1lICcvXC5saWIkL2QnIC1lICIkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKIAogICAgICAgb3V0cHV0PSIkb2JqIgogICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRyZWxvYWRfY21kcyIgJ2V4aXQgJD8nCkBAIC03NTA1LDggKzg2OTMsOCBAQAogICAgICAgY2FzZSAkaG9zdCBpbgogICAgICAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCi0JZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIlggJGZpbmFsaXplX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKKwljb21waWxlX2RlcGxpYnM9YCRFQ0hPICIgJGNvbXBpbGVfZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIiAkZmluYWxpemVfZGVwbGlicyIgfCAkU0VEICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCiAJOzsKICAgICAgIGVzYWMKIApAQCAtNzUxNywxNCArODcwNSwxNCBAQAogCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KIAkgICAgMTAuWzAxMjNdKQotCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKKwkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgogCSAgICA7OwogCSAgZXNhYwogCWZpCiAJIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgotCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIlggJGNvbXBpbGVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKLQlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwljb21waWxlX2RlcGxpYnM9YCRFQ0hPICIgJGNvbXBpbGVfZGVwbGlicyIgfCAkU0VEICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWZpbmFsaXplX2RlcGxpYnM9YCRFQ0hPICIgJGZpbmFsaXplX2RlcGxpYnMiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAk7OwogICAgICAgZXNhYwogCkBAIC03NTM4LDcgKzg3MjYsNyBAQAogCSopCiAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCiAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNzU0OCwxNyArODczNiwxNyBAQAogCS1MKikKIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgogCSAgKiIgJGRlcGxpYiAiKikgOzsKLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAkgIGVzYWMKIAkgIDs7Ci0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OworCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKIAllc2FjCiAgICAgICBkb25lCiAgICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKIAogCi0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGNvbXBpbGVfZGVwbGlicyIKLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgorICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGNvbXBpbGVfZGVwbGlicyIKKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkZmluYWxpemVfZGVwbGlicyIKIAogICAgICAgaWYgdGVzdCAtbiAiJHJwYXRoJHhycGF0aCI7IHRoZW4KIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCkBAIC03NTY2LDcgKzg3NTQsNyBAQAogCSAgIyBUaGlzIGlzIHRoZSBtYWdpYyB0byB1c2UgLXJwYXRoLgogCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZG9uZQogICAgICAgZmkKQEAgLTc1ODUsMTggKzg3NzMsMTggQEAKIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCiAJCTs7CiAJICAgICAgKikKLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBlbHNlCiAJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKIAkgIGZpCiAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCiAJICBjYXNlICIkcGVybV9ycGF0aCAiIGluCiAJICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKwkgICopIGZ1bmNfYXBwZW5kIHBlcm1fcnBhdGggIiAkbGliZGlyIiA7OwogCSAgZXNhYwogCWZpCiAJY2FzZSAkaG9zdCBpbgpAQCAtNzYwNSwxMiArODc5MywxMiBAQAogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokbGliZGlyOiIqKSA7OwogCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7Ci0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokbGliZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGxpYmRpciI7OwogCSAgZXNhYwogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CisJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKIAkgIGVzYWMKIAkgIDs7CiAJZXNhYwpAQCAtNzYzNiwxOCArODgyNCwxOCBAQAogCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKIAkJOzsKIAkgICAgICAqKQotCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKIAkgIGVsc2UKIAkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgorCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgogCSAgZmkKIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KIAkgICoiICRsaWJkaXIgIiopIDs7Ci0JICAqKSBmaW5hbGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OworCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZmkKICAgICAgIGRvbmUKQEAgLTc2NjEsOCArODg0OSw4IEBACiAKICAgICAgIGlmIHRlc3QgLW4gIiRsaWJvYmpzIiAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCiAJIyBUcmFuc2Zvcm0gYWxsIHRoZSBsaWJyYXJ5IG9iamVjdHMgaW50byBzdGFuZGFyZCBvYmplY3RzLgotCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCi0JZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAorCWZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAgICAgICBmaQogCiAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJG91dHB1dG5hbWUiICJAUFJPR1JBTUAiICJubyIKQEAgLTc2NzQsMTUgKzg4NjIsMTUgQEAKIAogICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9eWVzCiAgICAgICBjYXNlICRob3N0IGluCisgICAgICAqY2VnY2MqIHwgKm1pbmd3MzJjZSopCisgICAgICAgICMgRGlzYWJsZSB3cmFwcGVycyBmb3IgY2VnY2MgYW5kIG1pbmd3MzJjZSBob3N0cywgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyBhbnl3YXkuCisgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCisgICAgICAgIDs7CiAgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQogICAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KICAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwogICAgICAgICBmaQogICAgICAgICA7OwotICAgICAgKmNlZ2NjKQotICAgICAgICAjIERpc2FibGUgd3JhcHBlcnMgZm9yIGNlZ2NjLCB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGFueXdheS4KLSAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KLSAgICAgICAgOzsKICAgICAgICopCiAgICAgICAgIGlmIHRlc3QgIiRuZWVkX3JlbGluayIgPSBubyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KICAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwpAQCAtNzY5MSwxMyArODg3OSwxOSBAQAogICAgICAgZXNhYwogICAgICAgaWYgdGVzdCAiJHdyYXBwZXJzX3JlcXVpcmVkIiA9IG5vOyB0aGVuCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKIAlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKIAogCSMgV2UgaGF2ZSBubyB1bmluc3RhbGxlZCBsaWJyYXJ5IGRlcGVuZGVuY2llcywgc28gZmluYWxpemUgcmlnaHQgbm93LgogCWV4aXRfc3RhdHVzPTAKIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXRfc3RhdHVzPSQ/JwogCisJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisJZmkKKwogCSMgRGVsZXRlIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCiAJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgogCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKQEAgLTc3MjAsNyArODkxNCw3IEBACiAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgogCSAgcnBhdGg9CiAJICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKIAkgIGRvbmUKIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKIAlmaQpAQCAtNzcyOCw3ICs4OTIyLDcgQEAKIAkgICMgV2Ugc2hvdWxkIHNldCB0aGUgcnVucGF0aF92YXIuCiAJICBycGF0aD0KIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCi0JICAgIHJwYXRoPSIkcnBhdGgkZGlyOiIKKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgogCSAgZG9uZQogCSAgZmluYWxpemVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKIAlmaQpAQCAtNzczOCwxMSArODkzMiwxOCBAQAogCSMgV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSB3cmFwcGVyIHNjcmlwdC4KIAlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKIAkjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCi0JbGlua19jb21tYW5kPWAkRUNITyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCisJbGlua19jb21tYW5kPWAkRUNITyAiJGxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCSMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGUuCiAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0CiAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0CiAJZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JworCisJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisJZmkKKwogCWV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgZmkKIApAQCAtNzc1Nyw3ICs4OTU4LDcgQEAKIAlpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiAhPSBubzsgdGhlbgogCSAgbGlua19jb21tYW5kPSIkZmluYWxpemVfdmFyJGNvbXBpbGVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKIAkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCVcJHByb2dkaXIvXCRmaWxlJWcnYAorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIgfCAkU0VEICdzJUBPVVRQVVRAJVwkcHJvZ2Rpci9cJGZpbGUlZydgCiAJICBlbHNlCiAJICAgICMgZmFzdF9pbnN0YWxsIGlzIHNldCB0byBuZWVkbGVzcwogCSAgICByZWxpbmtfY29tbWFuZD0KQEAgLTc3NjksMTMgKzg5NzAsMTkgQEAKICAgICAgIGZpCiAKICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLSAgICAgIGxpbmtfY29tbWFuZD1gJEVDSE8gIlgkbGlua19jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJ2AKKyAgICAgIGxpbmtfY29tbWFuZD1gJEVDSE8gIiRsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCiAKICAgICAgICMgRGVsZXRlIHRoZSBvbGQgb3V0cHV0IGZpbGVzLgogICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0ICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lICRvdXRwdXRfb2JqZGlyL2x0LSRvdXRwdXRuYW1lCiAKICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKIAorICAgICAgaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgorCXBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCisJZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKKyAgICAgIGZpCisKICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCiAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCiAKQEAgLTc3OTMsMTggKzkwMDAsNyBAQAogCSAgZmkKIAlkb25lCiAJcmVsaW5rX2NvbW1hbmQ9IihjZCBgcHdkYDsgJHJlbGlua19jb21tYW5kKSIKLQlyZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgZmkKLQotICAgICAgIyBRdW90ZSAkRUNITyBmb3Igc2hpcHBpbmcuCi0gICAgICBpZiB0ZXN0ICJYJEVDSE8iID0gIlgkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KLQljYXNlICRwcm9ncGF0aCBpbgotCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcWVjaG89IiRTSEVMTCAkcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7Ci0JKikgcWVjaG89IiRTSEVMTCBgcHdkYC8kcHJvZ3BhdGggLS1mYWxsYmFjay1lY2hvIjs7Ci0JZXNhYwotCXFlY2hvPWAkRUNITyAiWCRxZWNobyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBlbHNlCi0JcWVjaG89YCRFQ0hPICJYJEVDSE8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCXJlbGlua19jb21tYW5kPWAkRUNITyAiJHJlbGlua19jb21tYW5kIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgZmkKIAogICAgICAgIyBPbmx5IGFjdHVhbGx5IGRvIHRoaW5ncyBpZiBub3QgaW4gZHJ5IHJ1biBtb2RlLgpAQCAtNzg4NCw3ICs5MDgwLDcgQEAKIAllbHNlCiAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKIAkgIGlmIHRlc3QgIiRwcmVsb2FkIiA9IHllcyAmJiB0ZXN0IC1mICIkc3ltZmlsZW9iaiI7IHRoZW4KLQkgICAgb2xkb2Jqcz0iJG9sZG9ianMgJHN5bWZpbGVvYmoiCisJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKIAkgIGZpCiAJZmkKIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgpAQCAtNzg5MiwxMCArOTA4OCwxMCBAQAogCiAgICAgICBpZiB0ZXN0IC1uICIkYWRkbGlicyI7IHRoZW4KIAlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCWZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCiAKIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicwotCW9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCWZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKICAgICAgIGZpCiAKICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgpAQCAtNzkwNiwxMCArOTEwMiwxMCBAQAogCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwogCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgogCWZpCiAKIAkjIFBPU0lYIGRlbWFuZHMgbm8gcGF0aHMgdG8gYmUgZW5jb2RlZCBpbiBhcmNoaXZlcy4gIFdlIGhhdmUKQEAgLTc5MjUsOSArOTEyMSw5IEBACiAJICAgIGRvbmUgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogCSAgOgogCWVsc2UKLQkgICRFQ0hPICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCisJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCiAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgogCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCiAJICBvbGRvYmpzPQpAQCAtNzk1MSw5ICs5MTQ3LDkgQEAKIAkJZXNhYwogCSAgICAgIGRvbmUKIAkgICAgICBmdW5jX3Nob3dfZXZhbCAibG4gJG9iaiAkZ2VudG9wLyRuZXdvYmogfHwgY3AgJG9iaiAkZ2VudG9wLyRuZXdvYmoiCi0JICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgorCSAgICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZ2VudG9wLyRuZXdvYmoiCiAJICAgICAgOzsKLQkgICAgKikgb2xkb2Jqcz0iJG9sZG9ianMgJG9iaiIgOzsKKwkgICAgKikgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRvYmoiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAlmaQpAQCAtNzk2Myw2ICs5MTU5LDE2IEBACiAJbGVuPSRmdW5jX2xlbl9yZXN1bHQKIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KIAkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKKwllbGlmIHRlc3QgLW4gIiRhcmNoaXZlcl9saXN0X3NwZWMiOyB0aGVuCisJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCisJICBmb3Igb2JqIGluICRvbGRvYmpzCisJICBkbworCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKwkgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisJICBkb25lID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kCisJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgorCSAgb2xkb2Jqcz0iICRhcmNoaXZlcl9saXN0X3NwZWMkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcwogCWVsc2UKIAkgICMgdGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIGluIHBhcnRzCiAJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCkBAIC04MDM2LDcgKzkyNDIsNyBAQAogICAgICAgZG9uZQogICAgICAgIyBRdW90ZSB0aGUgbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KICAgICAgIHJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1tb2RlPXJlbGluayAkbGlidG9vbF9hcmdzIEBpbnN0X3ByZWZpeF9kaXJAKSIKLSAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzIDsgdGhlbgogCXJlbGlua19jb21tYW5kPQogICAgICAgZmkKQEAgLTgwNTksOSArOTI2NSwxOSBAQAogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKLQkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKKwkgICAgICAtTCopCisJCWZ1bmNfc3RyaXBuYW1lIC1MICcnICIkZGVwbGliIgorCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLUwkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorCQk7OworCSAgICAgIC1SKikKKwkJZnVuY19zdHJpcG5hbWUgLVIgJycgIiRkZXBsaWIiCisJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtUiRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCisJCTs7CisJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgpAQCAtODA3NSw5ICs5MjkxLDkgQEAKIAkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAogCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgorCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7Ci0JICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCkBAIC04MDk0LDcgKzkzMTAsNyBAQAogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCiAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0JCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKQEAgLTgxMDYsNyArOTMyMiw3IEBACiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwogCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CiAJICAgICAgZXNhYwotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCiAJICAgIG5ld2RscHJlZmlsZXM9CkBAIC04MTE1LDE1ICs5MzMxLDMzIEBACiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwogCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CiAJICAgICAgZXNhYwotCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCisJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCiAJICBmaQogCSAgJFJNICRvdXRwdXQKIAkgICMgcGxhY2UgZGxuYW1lIGluIGNvcnJlY3QgcG9zaXRpb24gZm9yIGN5Z3dpbgorCSAgIyBJbiBmYWN0LCBpdCB3b3VsZCBiZSBuaWNlIGlmIHdlIGNvdWxkIHVzZSB0aGlzIGNvZGUgZm9yIGFsbCB0YXJnZXQKKwkgICMgc3lzdGVtcyB0aGF0IGNhbid0IGhhcmQtY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gdGhlaXIgZXhlY3V0YWJsZXMKKwkgICMgYW5kIHRoYXQgaGF2ZSBubyBzaGFyZWQgbGlicmFyeSBwYXRoIHZhcmlhYmxlIGluZGVwZW5kZW50IG9mIFBBVEgsCisJICAjIGJ1dCBpdCB0dXJucyBvdXQgd2UgY2FuJ3QgZWFzaWx5IGRldGVybWluZSB0aGF0IGZyb20gaW5zcGVjdGluZworCSAgIyBsaWJ0b29sIHZhcmlhYmxlcywgc28gd2UgaGF2ZSB0byBoYXJkLWNvZGUgdGhlIE9TcyB0byB3aGljaCBpdAorCSAgIyBhcHBsaWVzIGhlcmU7IGF0IHRoZSBtb21lbnQsIHRoYXQgbWVhbnMgcGxhdGZvcm1zIHRoYXQgdXNlIHRoZSBQRQorCSAgIyBvYmplY3QgZm9ybWF0IHdpdGggRExMIGZpbGVzLiAgU2VlIHRoZSBsb25nIGNvbW1lbnQgYXQgdGhlIHRvcCBvZgorCSAgIyB0ZXN0cy9iaW5kaXIuYXQgZm9yIGZ1bGwgZGV0YWlscy4KIAkgIHRkbG5hbWU9JGRsbmFtZQogCSAgY2FzZSAkaG9zdCwkb3V0cHV0LCRpbnN0YWxsZWQsJG1vZHVsZSwkZGxuYW1lIGluCi0JICAgICpjeWd3aW4qLCpsYWkseWVzLG5vLCouZGxsIHwgKm1pbmd3KiwqbGFpLHllcyxubywqLmRsbCB8ICpjZWdjYyosKmxhaSx5ZXMsbm8sKi5kbGwpIHRkbG5hbWU9Li4vYmluLyRkbG5hbWUgOzsKKwkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsIHwgKmNlZ2NjKiwqbGFpLHllcyxubywqLmRsbCkKKwkgICAgICAjIElmIGEgLWJpbmRpciBhcmd1bWVudCB3YXMgc3VwcGxpZWQsIHBsYWNlIHRoZSBkbGwgdGhlcmUuCisJICAgICAgaWYgdGVzdCAieCRiaW5kaXIiICE9IHggOworCSAgICAgIHRoZW4KKwkJZnVuY19yZWxhdGl2ZV9wYXRoICIkaW5zdGFsbF9saWJkaXIiICIkYmluZGlyIgorCQl0ZGxuYW1lPSRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0JGRsbmFtZQorCSAgICAgIGVsc2UKKwkJIyBPdGhlcndpc2UgZmFsbCBiYWNrIG9uIGhldXJpc3RpYy4KKwkJdGRsbmFtZT0uLi9iaW4vJGRsbmFtZQorCSAgICAgIGZpCisJICAgICAgOzsKIAkgIGVzYWMKIAkgICRFQ0hPID4gJG91dHB1dCAiXAogIyAkb3V0cHV0bmFtZSAtIGEgbGlidG9vbCBsaWJyYXJ5IGZpbGUKQEAgLTgxODIsNyArOTQxNiw3IEBACiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiB9CiAKLXsgdGVzdCAiJG1vZGUiID0gbGluayB8fCB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IH0gJiYKK3sgdGVzdCAiJG9wdF9tb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgfSAmJgogICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQogCiAKQEAgLTgyMDIsOSArOTQzNiw5IEBACiAgICAgZm9yIGFyZwogICAgIGRvCiAgICAgICBjYXNlICRhcmcgaW4KLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OwotICAgICAgLSopIFJNPSIkUk0gJGFyZyIgOzsKLSAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OworICAgICAgLSopIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyIgOzsKKyAgICAgICopIGZ1bmNfYXBwZW5kIGZpbGVzICIgJGFyZyIgOzsKICAgICAgIGVzYWMKICAgICBkb25lCiAKQEAgLTgyMTMsMjQgKzk0NDcsMjMgQEAKIAogICAgIHJtZGlycz0KIAotICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCiAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwogICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCiAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogICAgICAgaWYgdGVzdCAiWCRkaXIiID0gWC47IHRoZW4KLQlvYmpkaXI9IiRvcmlnb2JqZGlyIgorCW9kaXI9IiRvYmpkaXIiCiAgICAgICBlbHNlCi0Jb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgorCW9kaXI9IiRkaXIvJG9iamRpciIKICAgICAgIGZpCiAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSAgICAgIHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCAmJiBvYmpkaXI9IiRkaXIiCisgICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCiAKLSAgICAgICMgUmVtZW1iZXIgb2JqZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKLSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB0aGVuCisgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB0aGVuCiAJY2FzZSAiICRybWRpcnMgIiBpbgotCSAgKiIgJG9iamRpciAiKikgOzsKLQkgICopIHJtZGlycz0iJHJtZGlycyAkb2JqZGlyIiA7OworCSAgKiIgJG9kaXIgIiopIDs7CisJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKIAllc2FjCiAgICAgICBmaQogCkBAIC04MjU2LDE4ICs5NDg5LDE3IEBACiAKIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCiAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbiIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuIgogCSAgZG9uZQotCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRvbGRfbGlicmFyeSIKKwkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKIAotCSAgY2FzZSAiJG1vZGUiIGluCisJICBjYXNlICIkb3B0X21vZGUiIGluCiAJICBjbGVhbikKLQkgICAgY2FzZSAiICAkbGlicmFyeV9uYW1lcyAiIGluCi0JICAgICMgIiAgIiBpbiB0aGUgYmVnaW5uaW5nIGNhdGNoZXMgZW1wdHkgJGRsbmFtZQorCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgogCSAgICAqIiAkZGxuYW1lICIqKSA7OwotCSAgICAqKSBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRkbG5hbWUiIDs7CisJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OwogCSAgICBlc2FjCi0JICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgogCSAgICA7OwogCSAgdW5pbnN0YWxsKQogCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KQEAgLTgyOTUsMTkgKzk1MjcsMTkgQEAKIAkgICMgQWRkIFBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgogCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCiAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRwaWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kcGljX29iamVjdCIKIAkgIGZpCiAKIAkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKIAkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgogCSAgZmkKIAlmaQogCTs7CiAKICAgICAgICopCi0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCisJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuIDsgdGhlbgogCSAgbm9leGVuYW1lPSRuYW1lCiAJICBjYXNlICRmaWxlIGluCiAJICAqLmV4ZSkKQEAgLTgzMTcsNyArOTU0OSw3IEBACiAJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKIAkgICAgIyBhZGQgJGZpbGUgd2l0aG91dCAuZXhlCi0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCiAJICAgIDs7CiAJICBlc2FjCiAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KQEAgLTgzMjYsNyArOTU1OCw3IEBACiAJICAgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCiAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CiAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0Ci0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCiAJICAgIGVsc2UKIAkgICAgICByZWxpbmtfY29tbWFuZD0KIAkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKQEAgLTgzMzQsMTIgKzk1NjYsMTIgQEAKIAogCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQogCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcwotCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgorCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfVMuJHtvYmpleHR9IgogCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJG5hbWUiCiAJICAgIGZpCiAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0ke25vZXhlbmFtZX0uYyIKIAkgICAgZmkKIAkgIGZpCiAJZmkKQEAgLTgzNDcsNyArOTU3OSw2IEBACiAgICAgICBlc2FjCiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJFJNICRybWZpbGVzIiAnZXhpdF9zdGF0dXM9MScKICAgICBkb25lCi0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKIAogICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcwogICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KQEAgLTgzNTksMTYgKzk1OTAsMTYgQEAKICAgICBleGl0ICRleGl0X3N0YXR1cwogfQogCi17IHRlc3QgIiRtb2RlIiA9IHVuaW5zdGFsbCB8fCB0ZXN0ICIkbW9kZSIgPSBjbGVhbjsgfSAmJgoreyB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgfSAmJgogICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9CiAKLXRlc3QgLXogIiRtb2RlIiAmJiB7Cit0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKICAgaGVscD0iJGdlbmVyaWNfaGVscCIKICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKIH0KIAogdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCi0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKyAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKIAogaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgogICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKZGlmZiAtLWdpdCBhL200L2xpYnRvb2wubTQgYi9tNC9saWJ0b29sLm00CmluZGV4IDM5YmE5OTYuLmQ4MTI1ODQgMTAwNjQ0Ci0tLSBhL200L2xpYnRvb2wubTQKKysrIGIvbTQvbGlidG9vbC5tNApAQCAtMSw3ICsxLDggQEAKICMgbGlidG9vbC5tNCAtIENvbmZpZ3VyZSBsaWJ0b29sIGZvciB0aGUgaG9zdCBzeXN0ZW0uIC0qLUF1dG9jb25mLSotCiAjCiAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorIyAgICAgICAgICAgICAgICAgSW5jLgogIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKQEAgLTEwLDcgKzExLDggQEAKIAogbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisjICAgICAgICAgICAgICAgICBJbmMuCiAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogIwogIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgpAQCAtMzcsNyArMzksNyBAQAogIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KIF0pCiAKLSMgc2VyaWFsIDU2IExUX0lOSVQKKyMgc2VyaWFsIDU3IExUX0lOSVQKIAogCiAjIExUX1BSRVJFUShWRVJTSU9OKQpAQCAtNjYsNiArNjgsNyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0KIEFDX0RFRlVOKFtMVF9JTklUXSwKIFtBQ19QUkVSRVEoWzIuNThdKWRubCBXZSB1c2UgQUNfSU5DTFVERVNfREVGQVVMVAorQUNfUkVRVUlSRShbQUNfQ09ORklHX0FVWF9ESVJfREVGQVVMVF0pZG5sCiBBQ19CRUZPUkUoWyQwXSwgW0xUX0xBTkddKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVF9PVVRQVVRdKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVERMX0lOSVRdKWRubApAQCAtODIsNiArODUsOCBAQAogQUNfUkVRVUlSRShbTFRPQlNPTEVURV9WRVJTSU9OXSlkbmwKIG00X3JlcXVpcmUoW19MVF9QUk9HX0xUTUFJTl0pZG5sCiAKK19MVF9TSEVMTF9JTklUKFtTSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofV0pCisKIGRubCBQYXJzZSBPUFRJT05TCiBfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKIApAQCAtMTE4LDcgKzEyMyw3IEBACiAgICAgKikgYnJlYWs7OwogICBlc2FjCiBkb25lCi1jY19iYXNlbmFtZT1gJEVDSE8gIlgkY2NfdGVtcCIgfCAkWHNlZCAtZSAncyUuKi8lJScgLWUgInMlXiRob3N0X2FsaWFzLSUlImAKK2NjX2Jhc2VuYW1lPWAkRUNITyAiJGNjX3RlbXAiIHwgJFNFRCAicyUuKi8lJTsgcyVeJGhvc3RfYWxpYXMtJSUiYAogXSkKIAogCkBAIC0xMzgsNiArMTQzLDkgQEAKIG00X2RlZnVuKFtfTFRfU0VUVVBdLAogW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCitBQ19SRVFVSVJFKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10pZG5sCitBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pZG5sCisKIF9MVF9ERUNMKFtdLCBbaG9zdF9hbGlhc10sIFswXSwgW1RoZSBob3N0IHN5c3RlbV0pZG5sCiBfTFRfREVDTChbXSwgW2hvc3RdLCBbMF0pZG5sCiBfTFRfREVDTChbXSwgW2hvc3Rfb3NdLCBbMF0pZG5sCkBAIC0xNjAsMTAgKzE2OCwxMyBAQAogZG5sCiBtNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCittNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ01EX1JFTE9BRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DTURfT0xEX0FSQ0hJVkVdKWRubAogbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCittNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKIAogX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWwogIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgpAQCAtMTc5LDcgKzE5MCw2IEBACiBfTFRfQ0hFQ0tfT0JKRElSCiAKIG00X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAotX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4MyopCkBAIC0xOTMsMjMgKzIwMyw2IEBACiAgIDs7CiBlc2FjCiAKLSMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKLSMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1zZWRfcXVvdGVfc3Vic3Q9J3MvXChbWyJgJFxcXV1cKS9cXFwxL2cnCi0KLSMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgotZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1siYFxcXV1cKS9cXFwxL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCi0jIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCi1kZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgotZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCi1ub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKLQogIyBHbG9iYWwgdmFyaWFibGVzOgogb2ZpbGU9bGlidG9vbAogY2FuX2J1aWxkX3NoYXJlZD15ZXMKQEAgLTI1MCw2ICsyNDMsMjggQEAKIF0pIyBfTFRfU0VUVVAKIAogCisjIF9MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBhIGZldyBzZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscCB1cyBkbyByb2J1c3QgcXVvdGluZy4KK200X2RlZnVuKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10sCitbIyBCYWNrc2xhc2hpZnkgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbgorIyBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCitzZWRfcXVvdGVfc3Vic3Q9J3MvXChbWyJgJFxcXV1cKS9cXFwxL2cnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1siYFxcXV1cKS9cXFwxL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBkZWxheSBleHBhbnNpb24gb2YgYW4gZXNjYXBlZCBzaGVsbCB2YXJpYWJsZSBpbiBhCisjIGRvdWJsZV9xdW90ZV9zdWJzdCdlZCBzdHJpbmcuCitkZWxheV92YXJpYWJsZV9zdWJzdD0ncy9cXFxcXFxcXFxcXCQvXFxcXFxcJC9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2luZ2xlIHF1b3RlLgorZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0PSdzLydcJycvJ1wnXFxcXFxcXCdcJycvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGF2b2lkIGFjY2lkZW50YWwgZ2xvYmJpbmcgaW4gZXZhbGVkIGV4cHJlc3Npb25zCitub19nbG9iX3N1YnN0PSdzL1wqL1xcXCovZycKK10pCisKICMgX0xUX1BST0dfTFRNQUlOCiAjIC0tLS0tLS0tLS0tLS0tLQogIyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIGNhbGxlZCBib3RoIGZyb20gYGNvbmZpZ3VyZScsIGFuZCBgY29uZmlnLnN0YXR1cycKQEAgLTQwOCw3ICs0MjMsNyBAQAogIyBkZWNsYXJhdGlvbiB0aGVyZSB3aWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgaW4gYGNvbmZpZ3VyZScuICBWQVJOQU1FCiAjIG11c3QgaGF2ZSBhIHNpbmdsZSBxdW90ZSBkZWxpbWl0ZWQgdmFsdWUgZm9yIHRoaXMgdG8gd29yay4KIG00X2RlZmluZShbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRV0sCi1bJDE9J2AkRUNITyAiWCRdWyQxIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKK1skMT0nYCRFQ0hPICIkXVskMSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKIAogCiAjIF9MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OUwpAQCAtNDE4LDcgKzQzMyw3IEBACiAjIGVtYmVkZGVkIHNpbmdsZSBxdW90ZXMgcHJvcGVybHkuICBJbiBjb25maWd1cmUsIHRoaXMgbWFjcm8gZXhwYW5kcwogIyBlYWNoIHZhcmlhYmxlIGRlY2xhcmVkIHdpdGggX0xUX0RFQ0wgKGFuZCBfTFRfVEFHREVDTCkgaW50bzoKICMKLSMgICAgPHZhcj49J2AkRUNITyAiWCQ8dmFyPiIgfCAkWHNlZCAtZSAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIyAgICA8dmFyPj0nYCRFQ0hPICIkPHZhcj4iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogbTRfZGVmdW4oW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OU10sCiBbbTRfZm9yZWFjaChbX2x0X3Zhcl0sIG00X3F1b3RlKGx0X2RlY2xfYWxsX3Zhcm5hbWVzKSwKICAgICBbbTRfbihbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRShfbHRfdmFyKV0pXSldKQpAQCAtNTE3LDEyICs1MzIsMjAgQEAKIExUQ0ZMQUdTPSckTFRDRkxBR1MnCiBjb21waWxlcj0nJGNvbXBpbGVyX0RFRkFVTFQnCiAKKyMgQSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgd2hlbiB0aGVyZSBpcyBubyBwcmludCBidWlsdGluIG9yIHByaW50Zi4KK2Z1bmNfZmFsbGJhY2tfZWNobyAoKQoreworICBldmFsICdjYXQgPDxfTFRFQ0hPX0VPRgorXCRbXTEKK19MVEVDSE9fRU9GJworfQorCiAjIFF1b3RlIGV2YWxlZCBzdHJpbmdzLgogZm9yIHZhciBpbiBsdF9kZWNsX2FsbF92YXJuYW1lcyhbWyBcCiBdXSwgbHRfZGVjbF9xdW90ZV92YXJuYW1lcyk7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtNTMzLDkgKzU1Niw5IEBACiAjIERvdWJsZS1xdW90ZSBkb3VibGUtZXZhbGVkIHN0cmluZ3MuCiBmb3IgdmFyIGluIGx0X2RlY2xfYWxsX3Zhcm5hbWVzKFtbIFwKIF1dLCBsdF9kZWNsX2RxdW90ZV92YXJuYW1lcyk7IGRvCi0gICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyAiWFxcXFxcJFwkdmFyIlxgIGluCisgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJYXFxcJFwkdmFyXFwiIHwgXFxcJFhzZWQgLWUgXFwiXFxcJGRvdWJsZV9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRkZWxheV92YXJpYWJsZV9zdWJzdFxcIlxcXGBcXFxcXFwiIgorICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKICAgICAgIDs7CiAgICAgKikKICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgpAQCAtNTQzLDE2ICs1NjYsMzggQEAKICAgICBlc2FjCiBkb25lCiAKLSMgRml4LXVwIGZhbGxiYWNrIGVjaG8gaWYgaXQgd2FzIG1hbmdsZWQgYnkgdGhlIGFib3ZlIHF1b3RpbmcgcnVsZXMuCi1jYXNlIFwkbHRfRUNITyBpbgotKidcXFxbJF0wIC0tZmFsbGJhY2stZWNobyInKWRubCAiCi0gIGx0X0VDSE89XGBcJEVDSE8gIlhcJGx0X0VDSE8iIHwgXCRYc2VkIC1lICdzL1xcXFxcXFxcXFxcXFxcXFskXTAgLS1mYWxsYmFjay1lY2hvIlxbJF0vXFskXTAgLS1mYWxsYmFjay1lY2hvIi8nXGAKLSAgOzsKLWVzYWMKLQogX0xUX09VVFBVVF9MSUJUT09MX0lOSVQKIF0pCiAKKyMgX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQoRklMRSwgW0NPTU1FTlRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgR2VuZXJhdGUgYSBjaGlsZCBzY3JpcHQgRklMRSB3aXRoIGFsbCBpbml0aWFsaXphdGlvbiBuZWNlc3NhcnkgdG8KKyMgcmV1c2UgdGhlIGVudmlyb25tZW50IGxlYXJuZWQgYnkgdGhlIHBhcmVudCBzY3JpcHQsIGFuZCBtYWtlIHRoZQorIyBmaWxlIGV4ZWN1dGFibGUuICBJZiBDT01NRU5UIGlzIHN1cHBsaWVkLCBpdCBpcyBpbnNlcnRlZCBhZnRlciB0aGUKKyMgYCMhJyBzZXF1ZW5jZSBidXQgYmVmb3JlIGluaXRpYWxpemF0aW9uIHRleHQgYmVnaW5zLiAgQWZ0ZXIgdGhpcworIyBtYWNybywgYWRkaXRpb25hbCB0ZXh0IGNhbiBiZSBhcHBlbmRlZCB0byBGSUxFIHRvIGZvcm0gdGhlIGJvZHkgb2YKKyMgdGhlIGNoaWxkIHNjcmlwdC4gIFRoZSBtYWNybyBlbmRzIHdpdGggbm9uLXplcm8gc3RhdHVzIGlmIHRoZQorIyBmaWxlIGNvdWxkIG5vdCBiZSBmdWxseSB3cml0dGVuIChzdWNoIGFzIGlmIHRoZSBkaXNrIGlzIGZ1bGwpLgorbTRfaWZkZWYoW0FTX0lOSVRfR0VORVJBVEVEXSwKK1ttNF9kZWZ1bihbX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVRdLFtBU19JTklUX0dFTkVSQVRFRCgkQCldKV0sCitbbTRfZGVmdW4oW19MVF9HRU5FUkFURURfRklMRV9JTklUXSwKK1ttNF9yZXF1aXJlKFtBU19QUkVQQVJFXSldZG5sCitbbTRfcHVzaGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV1kbmwKK1tsdF93cml0ZV9mYWlsPTAKK2NhdCA+JDEgPDxfQVNFT0YgfHwgbHRfd3JpdGVfZmFpbD0xCisjISAkU0hFTEwKKyMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KKyQyCitTSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQorZXhwb3J0IFNIRUxMCitfQVNFT0YKK2NhdCA+PiQxIDw8XF9BU0VPRiB8fCBsdF93cml0ZV9mYWlsPTEKK0FTX1NIRUxMX1NBTklUSVpFCitfQVNfUFJFUEFSRQorZXhlYyBBU19NRVNTQUdFX0ZEPiYxCitfQVNFT0YKK3Rlc3QgJGx0X3dyaXRlX2ZhaWwgPSAwICYmIGNobW9kICt4ICQxW11kbmwKK200X3BvcGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV0pXSkjIF9MVF9HRU5FUkFURURfRklMRV9JTklUCiAKICMgTFRfT1VUUFVUCiAjIC0tLS0tLS0tLQpAQCAtNTYyLDIwICs2MDcsMTEgQEAKIEFDX0RFRlVOKFtMVF9PVVRQVVRdLAogWzogJHtDT05GSUdfTFQ9Li9jb25maWcubHR9CiBBQ19NU0dfTk9USUNFKFtjcmVhdGluZyAkQ09ORklHX0xUXSkKLWNhdCA+IiRDT05GSUdfTFQiIDw8X0xURU9GCi0jISAkU0hFTEwKLSMgR2VuZXJhdGVkIGJ5ICRhc19tZS4KLSMgUnVuIHRoaXMgZmlsZSB0byByZWNyZWF0ZSBhIGxpYnRvb2wgc3R1YiB3aXRoIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uCi0KLWx0X2NsX3NpbGVudD1mYWxzZQotU0hFTEw9XCR7Q09ORklHX1NIRUxMLSRTSEVMTH0KLV9MVEVPRgorX0xUX0dFTkVSQVRFRF9GSUxFX0lOSVQoWyIkQ09ORklHX0xUIl0sCitbIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIGEgbGlidG9vbCBzdHViIHdpdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5dKQogCiBjYXQgPj4iJENPTkZJR19MVCIgPDxcX0xURU9GCi1BU19TSEVMTF9TQU5JVElaRQotX0FTX1BSRVBBUkUKLQotZXhlYyBBU19NRVNTQUdFX0ZEPiYxCitsdF9jbF9zaWxlbnQ9ZmFsc2UKIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKIHsKICAgZWNobwpAQCAtNjAxLDcgKzYzNyw3IEBACiBtNF9pZnNldChbQUNfUEFDS0FHRV9WRVJTSU9OXSwgWyBBQ19QQUNLQUdFX1ZFUlNJT05dKQogY29uZmlndXJlZCBieSAkWzBdLCBnZW5lcmF0ZWQgYnkgbTRfUEFDS0FHRV9TVFJJTkcuCiAKLUNvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK0NvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCiAKQEAgLTY0NiwxNSArNjgyLDEzIEBACiAjIGFwcGVuZGluZyB0byBjb25maWcubG9nLCB3aGljaCBmYWlscyBvbiBET1MsIGFzIGNvbmZpZy5sb2cgaXMgc3RpbGwga2VwdAogIyBvcGVuIGJ5IGNvbmZpZ3VyZS4gIEhlcmUgd2UgZXhlYyB0aGUgRkQgdG8gL2Rldi9udWxsLCBlZmZlY3RpdmVseSBjbG9zaW5nCiAjIGNvbmZpZy5sb2csIHNvIGl0IGNhbiBiZSBwcm9wZXJseSAocmUpb3BlbmVkIGFuZCBhcHBlbmRlZCB0byBieSBjb25maWcubHQuCi1pZiB0ZXN0ICIkbm9fY3JlYXRlIiAhPSB5ZXM7IHRoZW4KLSAgbHRfY2xfc3VjY2Vzcz06Ci0gIHRlc3QgIiRzaWxlbnQiID0geWVzICYmCi0gICAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgotICBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPi9kZXYvbnVsbAotICAkU0hFTEwgIiRDT05GSUdfTFQiICRsdF9jb25maWdfbHRfYXJncyB8fCBsdF9jbF9zdWNjZXNzPWZhbHNlCi0gIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKLSAgJGx0X2NsX3N1Y2Nlc3MgfHwgQVNfRVhJVCgxKQotZmkKK2x0X2NsX3N1Y2Nlc3M9OgordGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKKyAgbHRfY29uZmlnX2x0X2FyZ3M9IiRsdF9jb25maWdfbHRfYXJncyAtLXF1aWV0IgorZXhlYyBBU19NRVNTQUdFX0xPR19GRD4vZGV2L251bGwKKyRTSEVMTCAiJENPTkZJR19MVCIgJGx0X2NvbmZpZ19sdF9hcmdzIHx8IGx0X2NsX3N1Y2Nlc3M9ZmFsc2UKK2V4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKKyRsdF9jbF9zdWNjZXNzIHx8IEFTX0VYSVQoMSkKIF0pIyBMVF9PVVRQVVQKIAogCkBAIC03MTcsMTUgKzc1MSwxMiBAQAogICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCiAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCiAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQogCi0gIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworICBfTFRfUFJPR19SRVBMQUNFX1NIRUxMRk5TCiAKLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0KLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgIGNobW9kICt4ICIkb2ZpbGUiCiBdLApAQCAtODMxLDExICs4NjIsMTMgQEAKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0Y3N10sIFtMVF9MQU5HKEZvcnRyYW4gNzcpXSkKIEFVX0RFRlVOKFtBQ19MSUJUT09MX0ZDXSwgW0xUX0xBTkcoRm9ydHJhbildKQogQVVfREVGVU4oW0FDX0xJQlRPT0xfR0NKXSwgW0xUX0xBTkcoSmF2YSldKQorQVVfREVGVU4oW0FDX0xJQlRPT0xfUkNdLCBbTFRfTEFORyhXaW5kb3dzIFJlc291cmNlKV0pCiBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfQ1hYXSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW10pCiBkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10sIFtdKQogCiAKICMgX0xUX1RBR19DT01QSUxFUgpAQCAtOTQwLDYgKzk3MywzMSBAQAogCVtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm9dKQogCUxERkxBR1M9IiRzYXZlX0xERkxBR1MiCiAgICAgXSkKKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIC1mb3JjZV9sb2FkIGxpbmtlciBmbGFnXSxbbHRfY3ZfbGRfZm9yY2VfbG9hZF0sCisgICAgICBbbHRfY3ZfbGRfZm9yY2VfbG9hZD1ubworICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgZm9yY2VkX2xvYWRlZCgpIHsgcmV0dXJuIDI7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCitpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorX0xUX0VPRgorICAgICAgZWNobyAiJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLVdsLC1mb3JjZV9sb2FkLC4vbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgJExUQ0MgJExUQ0ZMQUdTICRMREZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLVdsLC1mb3JjZV9sb2FkLC4vbGliY29uZnRlc3QuYSAyPmNvbmZ0ZXN0LmVycgorICAgICAgX2x0X3Jlc3VsdD0kPworICAgICAgaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0ICEgLXMgY29uZnRlc3QuZXJyICYmIHRlc3QgJF9sdF9yZXN1bHQgPSAwICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0IDI+JjEgPi9kZXYvbnVsbDsgdGhlbgorCWx0X2N2X2xkX2ZvcmNlX2xvYWQ9eWVzCisgICAgICBlbHNlCisJY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBmaQorICAgICAgICBybSAtZiBjb25mdGVzdC5lcnIgbGliY29uZnRlc3QuYSBjb25mdGVzdCBjb25mdGVzdC5jCisgICAgICAgIHJtIC1yZiBjb25mdGVzdC5kU1lNCisgICAgXSkKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgcmhhcHNvZHkqIHwgZGFyd2luMS5bWzAxMl1dKQogICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwpAQCAtOTY3LDcgKzEwMjUsNyBAQAogICAgIGVsc2UKICAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9J34kTk1FRElUIC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwogICAgIGZpCi0gICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiI7IHRoZW4KKyAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IiAmJiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAibm8iOyB0aGVuCiAgICAgICBfbHRfZHN5bXV0aWw9J34kRFNZTVVUSUwgJGxpYiB8fCA6JwogICAgIGVsc2UKICAgICAgIF9sdF9kc3ltdXRpbD0KQEAgLTk4Nyw3ICsxMDQ1LDExIEBACiAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT15ZXMKICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKLSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCisgIGlmIHRlc3QgIiRsdF9jdl9sZF9mb3JjZV9sb2FkIiA9ICJ5ZXMiOyB0aGVuCisgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHt3bH0tZm9yY2VfbG9hZCwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCcKKyAgZWxzZQorICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJworICBmaQogICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCkBAIC05OTUsNyArMTA1Nyw3IEBACiAgICAgICopIF9sdF9kYXJfY2FuX3NoYXJlZD0kR0NDIDs7CiAgIGVzYWMKICAgaWYgdGVzdCAiJF9sdF9kYXJfY2FuX3NoYXJlZCIgPSAieWVzIjsgdGhlbgotICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKyAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCiAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKICAgICBfTFRfVEFHVkFSKG1vZHVsZV9jbWRzLCAkMSk9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2RzeW11dGlsfSIKICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgpAQCAtMTAxMSwyMDMgKzEwNzMsMTQyIEBACiAgIGZpCiBdKQogCi0jIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBMaW5rcyBhIG1pbmltYWwgcHJvZ3JhbSBhbmQgY2hlY2tzIHRoZSBleGVjdXRhYmxlCiAjIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKICMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAogIyB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbW11bmljYXRpb24gYW5kIE1QSSBsaWJzIGFyZSBpbmNsdWRlZCB0b28uCiAjIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCiAjIHRvIHRoZSBhaXggbGQgbWFudWFsLgorIyBTdG9yZSB0aGUgcmVzdWx0cyBmcm9tIHRoZSBkaWZmZXJlbnQgY29tcGlsZXJzIGZvciBlYWNoIFRBR05BTUUuCisjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCiBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAogW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCi1BQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0sWwotbHRfYWl4X2xpYnBhdGhfc2VkPScKLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0JL14wLyB7Ci0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotCSAgICBwCi0JfQotICAgIH0nCi1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi1maV0sW10pCi1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK2lmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCitlbHNlCisgIEFDX0NBQ0hFX1ZBTChbX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSldLAorICBbQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTV0sWworICBsdF9haXhfbGlicGF0aF9zZWQ9J1sKKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKwkgIC9eMC8geworCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisJICAgICAgcAorCSAgfQorICAgICAgfV0nCisgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyAgZmldLFtdKQorICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSkiOyB0aGVuCisgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9Ii91c3IvbGliOi9saWIiCisgIGZpCisgIF0pCisgIGFpeF9saWJwYXRoPSRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKQorZmkKIF0pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAogCiAKICMgX0xUX1NIRUxMX0lOSVQoQVJHKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZpbmUoW19MVF9TSEVMTF9JTklUXSwKLVtpZmRlZihbQUNfRElWRVJTSU9OX05PVElDRV0sCi0JICAgICBbQUNfRElWRVJUX1BVU0goQUNfRElWRVJTSU9OX05PVElDRSldLAotCSBbQUNfRElWRVJUX1BVU0goTk9USUNFKV0pCi0kMQotQUNfRElWRVJUX1BPUAotXSkjIF9MVF9TSEVMTF9JTklUCitbbTRfZGl2ZXJ0X3RleHQoW000U0gtSU5JVF0sIFskMQorXSldKSMgX0xUX1NIRUxMX0lOSVQKKwogCiAKICMgX0xUX1BST0dfRUNIT19CQUNLU0xBU0gKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQWRkIHNvbWUgY29kZSB0byB0aGUgc3RhcnQgb2YgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0IHdoaWNoCi0jIHdpbGwgZmluZCBhbiBlY2hvIGNvbW1hbmQgd2hpY2ggZG9lc24ndCBpbnRlcnByZXQgYmFja3NsYXNoZXMuCisjIEZpbmQgaG93IHdlIGNhbiBmYWtlIGFuIGVjaG8gY29tbWFuZCB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2guCisjIEluIHBhcnRpY3VsYXIsIHdpdGggQXV0b2NvbmYgMi42MCBvciBsYXRlciB3ZSBhZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydAorIyBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2ggd2lsbCBmaW5kIGEgc2hlbGwgd2l0aCBhIGJ1aWx0aW4KKyMgcHJpbnRmICh3aGljaCB3ZSBjYW4gdXNlIGFzIGFuIGVjaG8gY29tbWFuZCkuCiBtNF9kZWZ1bihbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdLAotW19MVF9TSEVMTF9JTklUKFsKLSMgQ2hlY2sgdGhhdCB3ZSBhcmUgcnVubmluZyB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLVNIRUxMPSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9CitbRUNITz0nXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXCcKK0VDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KIAotY2FzZSBYJGx0X0VDSE8gaW4KLVgqLS1mYWxsYmFjay1lY2hvKQotICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgotICBFQ0hPPWBlY2hvICIkbHRfRUNITyIgfCBzZWQgJ3MsXFxcXFxbJF1cXFskXTAsJ1skXTAnLCdgCi0gIDs7CitBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBwcmludCBzdHJpbmdzXSkKKyMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgoraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICBFQ0hPPSdwcmludCAtciAtLScKK2VsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgIEVDSE89J3ByaW50ZiAlc1xuJworZWxzZQorICAjIFVzZSB0aGlzIGZ1bmN0aW9uIGFzIGEgZmFsbGJhY2sgdGhhdCBhbHdheXMgd29ya3MuCisgIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQorICB7CisgICAgZXZhbCAnY2F0IDw8X0xURUNIT19FT0YKKyRbXTEKK19MVEVDSE9fRU9GJworICB9CisgIEVDSE89J2Z1bmNfZmFsbGJhY2tfZWNobycKK2ZpCisKKyMgZnVuY19lY2hvX2FsbCBhcmcuLi4KKyMgSW52b2tlICRFQ0hPIHdpdGggYWxsIGFyZ3MsIHNwYWNlLXNlcGFyYXRlZC4KK2Z1bmNfZWNob19hbGwgKCkKK3sKKyAgICAkRUNITyAiJCoiIAorfQorCitjYXNlICIkRUNITyIgaW4KKyAgcHJpbnRmKikgQUNfTVNHX1JFU1VMVChbcHJpbnRmXSkgOzsKKyAgcHJpbnQqKSBBQ19NU0dfUkVTVUxUKFtwcmludCAtcl0pIDs7CisgICopIEFDX01TR19SRVNVTFQoW2NhdF0pIDs7CiBlc2FjCiAKLUVDSE89JHtsdF9FQ0hPLWVjaG99Ci1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gIHNoaWZ0Ci1lbGlmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyA7IHRoZW4KLSAgIyBZaXBwZWUsICRFQ0hPIHdvcmtzIQotICA6Ci1lbHNlCi0gICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLSAgZXhlYyAkU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci1maQorbTRfaWZkZWYoW19BU19ERVRFQ1RfU1VHR0VTVEVEXSwKK1tfQVNfREVURUNUX1NVR0dFU1RFRChbCisgIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSR7QkFTSF9WRVJTSU9OK3NldH0iIHx8ICgKKyAgICBFQ0hPPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJworICAgIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworICAgIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgICAgUEFUSD0vZW1wdHkgRlBBVEg9L2VtcHR5OyBleHBvcnQgUEFUSCBGUEFUSAorICAgIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPYCIgPSAiWCRFQ0hPIiBcCisgICAgICB8fCB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPYCIgPSAiWCRFQ0hPIiApXSldKQogCi1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCi0gIHNoaWZ0Ci0gIGNhdCA8PF9MVF9FT0YKLVskXSoKLV9MVF9FT0YKLSAgZXhpdCAwCi1maQotCi0jIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAotIyBpZiBDRFBBVEggaXMgc2V0LgotKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAotCi1pZiB0ZXN0IC16ICIkbHRfRUNITyI7IHRoZW4KLSAgaWYgdGVzdCAiWCR7ZWNob190ZXN0X3N0cmluZytzZXR9IiAhPSBYc2V0OyB0aGVuCi0gICAgIyBmaW5kIGEgc3RyaW5nIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBhcyBsb25nIGFzIHRoZSBzaGVsbCBjYW4gY29wZSB3aXRoIGl0Ci0gICAgZm9yIGNtZCBpbiAnc2VkIDUwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCAxMHEgIlskXTAiJyAnc2VkIDJxICJbJF0wIicgJ2VjaG8gdGVzdCc7IGRvCi0gICAgICAjIGV4cGVjdGVkIHNpemVzOiBsZXNzIHRoYW4gMktiLCAxS2IsIDUxMiBieXRlcywgMTYgYnl0ZXMsIC4uLgotICAgICAgaWYgeyBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRjbWRgOyB9IDI+L2Rldi9udWxsICYmCi0JIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsCi0gICAgICB0aGVuCi0gICAgICAgIGJyZWFrCi0gICAgICBmaQotICAgIGRvbmUKLSAgZmkKLQotICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICA6Ci0gIGVsc2UKLSAgICAjIFRoZSBTb2xhcmlzLCBBSVgsIGFuZCBEaWdpdGFsIFVuaXggZGVmYXVsdCBlY2hvIHByb2dyYW1zIHVucXVvdGUKLSAgICAjIGJhY2tzbGFzaGVzLiAgVGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHF1b3RlIGJhY2tzbGFzaGVzIHVzaW5nCi0gICAgIyAgIGVjaG8gIiRzb21ldGhpbmciIHwgc2VkICdzL1xcL1xcXFwvZycKLSAgICAjCi0gICAgIyBTbywgZmlyc3Qgd2UgbG9vayBmb3IgYSB3b3JraW5nIGVjaG8gaW4gdGhlIHVzZXIncyBQQVRILgotCi0gICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0gICAgZm9yIGRpciBpbiAkUEFUSCAvdXNyL3VjYjsgZG8KLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgICAgaWYgKHRlc3QgLWYgJGRpci9lY2hvIHx8IHRlc3QgLWYgJGRpci9lY2hvJGFjX2V4ZWV4dCkgJiYKLSAgICAgICAgIHRlc3QgIlhgKCRkaXIvZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkZGlyL2VjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0gICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICAgRUNITz0iJGRpci9lY2hvIgotICAgICAgICBicmVhawotICAgICAgZmkKLSAgICBkb25lCi0gICAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0KLSAgICBpZiB0ZXN0ICJYJEVDSE8iID0gWGVjaG87IHRoZW4KLSAgICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNobywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgotICAgICAgaWYgdGVzdCAiWGB7IHByaW50IC1yICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7IHByaW50IC1yICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCi0gICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICAgIyBUaGlzIHNoZWxsIGhhcyBhIGJ1aWx0aW4gcHJpbnQgLXIgdGhhdCBkb2VzIHRoZSB0cmljay4KLSAgICAgICAgRUNITz0ncHJpbnQgLXInCi0gICAgICBlbGlmIHsgdGVzdCAtZiAvYmluL2tzaCB8fCB0ZXN0IC1mIC9iaW4va3NoJGFjX2V4ZWV4dDsgfSAmJgotCSAgIHRlc3QgIlgkQ09ORklHX1NIRUxMIiAhPSBYL2Jpbi9rc2g7IHRoZW4KLSAgICAgICAgIyBJZiB3ZSBoYXZlIGtzaCwgdHJ5IHJ1bm5pbmcgY29uZmlndXJlIGFnYWluIHdpdGggaXQuCi0gICAgICAgIE9SSUdJTkFMX0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQotICAgICAgICBleHBvcnQgT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0gICAgICAgIENPTkZJR19TSEVMTD0vYmluL2tzaAotICAgICAgICBleHBvcnQgQ09ORklHX1NIRUxMCi0gICAgICAgIGV4ZWMgJENPTkZJR19TSEVMTCAiWyRdMCIgLS1uby1yZWV4ZWMgJHsxKyJbJF1AIn0KLSAgICAgIGVsc2UKLSAgICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgotICAgICAgICBFQ0hPPSdwcmludGYgJXNcbicKLSAgICAgICAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0JICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgotCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgIyBDb29sLCBwcmludGYgd29ya3MKLQkgIDoKLSAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCi0JICBDT05GSUdfU0hFTEw9JE9SSUdJTkFMX0NPTkZJR19TSEVMTAotCSAgZXhwb3J0IENPTkZJR19TSEVMTAotCSAgU0hFTEw9IiRDT05GSUdfU0hFTEwiCi0JICBleHBvcnQgU0hFTEwKLQkgIEVDSE89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgotCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCSAgRUNITz0iJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyIKLSAgICAgICAgZWxzZQotCSAgIyBtYXliZSB3aXRoIGEgc21hbGxlciBzdHJpbmcuLi4KLQkgIHByZXY9OgotCi0JICBmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCA1MHEgIlskXTAiJzsgZG8KLQkgICAgaWYgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlhgZXZhbCAkY21kYCI7IH0gMj4vZGV2L251bGwKLQkgICAgdGhlbgotCSAgICAgIGJyZWFrCi0JICAgIGZpCi0JICAgIHByZXY9IiRjbWQiCi0JICBkb25lCi0KLQkgIGlmIHRlc3QgIiRwcmV2IiAhPSAnc2VkIDUwcSAiWyRdMCInOyB0aGVuCi0JICAgIGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJHByZXZgCi0JICAgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCi0JICAgIGV4ZWMgJHtPUklHSU5BTF9DT05GSUdfU0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19ICJbJF0wIiAkezErIlskXUAifQotCSAgZWxzZQotCSAgICAjIE9vcHMuICBXZSBsb3N0IGNvbXBsZXRlbHksIHNvIGp1c3Qgc3RpY2sgd2l0aCBlY2hvLgotCSAgICBFQ0hPPWVjaG8KLQkgIGZpCi0gICAgICAgIGZpCi0gICAgICBmaQotICAgIGZpCi0gIGZpCi1maQotCi0jIENvcHkgZWNobyBhbmQgcXVvdGUgdGhlIGNvcHkgc3VpdGFibHkgZm9yIHBhc3NpbmcgdG8gbGlidG9vbCBmcm9tCi0jIHRoZSBNYWtlZmlsZSwgaW5zdGVhZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRlci4KLWx0X0VDSE89JEVDSE8KLWlmIHRlc3QgIlgkbHRfRUNITyIgPSAiWCRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCi0gICBsdF9FQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi1maQotCi1BQ19TVUJTVChsdF9FQ0hPKQotXSkKIF9MVF9ERUNMKFtdLCBbU0hFTExdLCBbMV0sIFtTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzXSkKLV9MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwKLSAgICBbQW4gZWNobyBwcm9ncmFtIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzXSkKK19MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwgW0FuIGVjaG8gcHJvZ3JhbSB0aGF0IHByb3RlY3RzIGJhY2tzbGFzaGVzXSkKIF0pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAogCiAKKyMgX0xUX1dJVEhfU1lTUk9PVAorIyAtLS0tLS0tLS0tLS0tLS0tCitBQ19ERUZVTihbX0xUX1dJVEhfU1lTUk9PVF0sCitbQUNfTVNHX0NIRUNLSU5HKFtmb3Igc3lzcm9vdF0pCitBQ19BUkdfV0lUSChbc3lzcm9vdF0sCitbICAtLXdpdGgtc3lzcm9vdFs9RElSXSBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuXSwKK1tdLCBbd2l0aF9zeXNyb290PW5vXSkKKworZG5sIGx0X3N5c3Jvb3Qgd2lsbCBhbHdheXMgYmUgcGFzc2VkIHVucXVvdGVkLiAgV2UgcXVvdGUgaXQgaGVyZQorZG5sIGluIGNhc2UgdGhlIHVzZXIgcGFzc2VkIGEgZGlyZWN0b3J5IG5hbWUuCitsdF9zeXNyb290PQorY2FzZSAke3dpdGhfc3lzcm9vdH0gaW4gIygKKyB5ZXMpCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorICAgZmkKKyAgIDs7ICMoCisgLyopCisgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisgICA7OyAjKAorIG5vfCcnKQorICAgOzsgIygKKyAqKQorICAgQUNfTVNHX1JFU1VMVChbJHt3aXRoX3N5c3Jvb3R9XSkKKyAgIEFDX01TR19FUlJPUihbVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLl0pCisgICA7OworZXNhYworCisgQUNfTVNHX1JFU1VMVChbJHtsdF9zeXNyb290Oi1ub31dKQorX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCitbZGVwZW5kZW50IGxpYnJhcmllcywgYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC5dKV0pCisKICMgX0xUX0VOQUJMRV9MT0NLCiAjIC0tLS0tLS0tLS0tLS0tLQogbTRfZGVmdW4oW19MVF9FTkFCTEVfTE9DS10sCkBAIC0xMjM2LDcgKzEyMzcsNyBAQAogICA7OwogKi0qLWlyaXg2KikKICAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgotICBlY2hvICdbI11saW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CisgIGVjaG8gJ1sjXWxpbmUgJyRMSU5FTk8nICJjb25maWd1cmUiJyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KICAgICBpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCiAgICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCkBAIC0xMzU0LDE0ICsxMzU1LDQ3IEBACiBdKSMgX0xUX0VOQUJMRV9MT0NLCiAKIAorIyBfTFRfUFJPR19BUgorIyAtLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9QUk9HX0FSXSwKK1tBQ19DSEVDS19UT09MUyhBUiwgW2FyXSwgZmFsc2UpCis6ICR7QVI9YXJ9Cis6ICR7QVJfRkxBR1M9Y3J1fQorX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCitfTFRfREVDTChbXSwgW0FSX0ZMQUdTXSwgWzFdLCBbRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmVdKQorCitBQ19DQUNIRV9DSEVDSyhbZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnRdLCBbbHRfY3ZfYXJfYXRfZmlsZV0sCisgIFtsdF9jdl9hcl9hdF9maWxlPW5vCisgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSwKKyAgICAgW2VjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJworICAgICAgQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisJQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAgICAgXSkKKyAgXSkKKworaWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorICBhcmNoaXZlcl9saXN0X3NwZWM9CitlbHNlCisgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorZmkKK19MVF9ERUNMKFtdLCBbYXJjaGl2ZXJfbGlzdF9zcGVjXSwgWzFdLAorICBbSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyXSkKK10pIyBfTFRfUFJPR19BUgorCisKICMgX0xUX0NNRF9PTERfQVJDSElWRQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tCiBtNF9kZWZ1bihbX0xUX0NNRF9PTERfQVJDSElWRV0sCi1bQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLV9MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQotX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSkKK1tfTFRfUFJPR19BUgogCiBBQ19DSEVDS19UT09MKFNUUklQLCBzdHJpcCwgOikKIHRlc3QgLXogIiRTVFJJUCIgJiYgU1RSSVA9OgpAQCAtMTM4OCwxMCArMTQyMiwxOSBAQAogICBlc2FjCiAgIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkb2xkbGliIgogZmkKKworY2FzZSAkaG9zdF9vcyBpbgorICBkYXJ3aW4qKQorICAgIGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbj15ZXMgOzsKKyAgKikKKyAgICBsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb249bm8gOzsKK2VzYWMKIF9MVF9ERUNMKFtdLCBbb2xkX3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0pCiBfTFRfREVDTChbXSwgW29sZF9wb3N0dW5pbnN0YWxsX2NtZHNdLCBbMl0pCiBfTFRfVEFHREVDTChbXSwgW29sZF9hcmNoaXZlX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYW4gb2xkLXN0eWxlIGFyY2hpdmVdKQorX0xUX0RFQ0woW10sIFtsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb25dLCBbMF0sCisgICAgW1doZXRoZXIgdG8gdXNlIGEgbG9jayBmb3Igb2xkIGFyY2hpdmUgZXh0cmFjdGlvbl0pCiBdKSMgX0xUX0NNRF9PTERfQVJDSElWRQogCiAKQEAgLTE0MTYsMTUgKzE0NTksMTUgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCiAgICBhY19zdGF0dXM9JD8KICAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKICAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgogICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAogICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3RoZXIgdGhhbiB0aGUgdXN1YWwgb3V0cHV0LgotICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCisgICAgICRFQ0hPICIkX2x0X2NvbXBpbGVyX2JvaWxlcnBsYXRlIiB8ICRTRUQgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgogICAgICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QuZXIyIHx8IGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgJDI9eWVzCkBAIC0xNDY0LDcgKzE1MDcsNyBAQAogICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgogICAgICAgICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNvbmZpZy5sb2cuCiAgICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgICRFQ0hPICJYJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAorICAgICAgICRFQ0hPICIkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBjb25mdGVzdC5leHAKICAgICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgY29uZnRlc3QuZXJyID5jb25mdGVzdC5lcjIKICAgICAgICBpZiBkaWZmIGNvbmZ0ZXN0LmV4cCBjb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgJDI9eWVzCkBAIC0xNTI3LDYgKzE1NzAsMTEgQEAKICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKICAgICA7OwogCisgIG1pbnQqKQorICAgICMgT24gTWlOVCB0aGlzIGNhbiB0YWtlIGEgbG9uZyB0aW1lIGFuZCBydW4gb3V0IG9mIG1lbW9yeS4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKKyAgICA7OworCiAgIGFtaWdhb3MqKQogICAgICMgT24gQW1pZ2FPUyB3aXRoIHBka3NoLCB0aGlzIHRlc3QgdGFrZXMgaG91cnMsIGxpdGVyYWxseS4KICAgICAjIFNvIHdlIGp1c3QgcHVudCBhbmQgdXNlIGEgbWluaW11bSBsaW5lIGxlbmd0aCBvZiA4MTkyLgpAQCAtMTU5MSw4ICsxNjM5LDggQEAKICAgICAgICMgSWYgdGVzdCBpcyBub3QgYSBzaGVsbCBidWlsdC1pbiwgd2UnbGwgcHJvYmFibHkgZW5kIHVwIGNvbXB1dGluZyBhCiAgICAgICAjIG1heGltdW0gbGVuZ3RoIHRoYXQgaXMgb25seSBoYWxmIG9mIHRoZSBhY3R1YWwgbWF4aW11bSBsZW5ndGgsIGJ1dAogICAgICAgIyB3ZSBjYW4ndCB0ZWxsLgotICAgICAgd2hpbGUgeyB0ZXN0ICJYImAkU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAotCSAgICAgICAgID0gIlhYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCisgICAgICB3aGlsZSB7IHRlc3QgIlgiYGZ1bmNfZmFsbGJhY2tfZWNobyAiJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKKwkgICAgICAgICA9ICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyI7IH0gPi9kZXYvbnVsbCAyPiYxICYmCiAJICAgICAgdGVzdCAkaSAhPSAxNyAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCiAgICAgICBkbwogICAgICAgICBpPWBleHByICRpICsgMWAKQEAgLTE2NDMsNyArMTY5MSw3IEBACiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLVsjbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSIKK1sjbGluZSAkTElORU5PICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmIEhBVkVfRExGQ05fSApAQCAtMTY4NCw3ICsxNzMyLDEzIEBACiAjICBlbmRpZgogI2VuZGlmCiAKLXZvaWQgZm5vcmQoKSB7IGludCBpPTQyO30KKy8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQoraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworI2VuZGlmCisKK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQogaW50IG1haW4gKCkKIHsKICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CkBAIC0xNjkzLDcgKzE3NDcsMTEgQEAKICAgaWYgKHNlbGYpCiAgICAgewogICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7Ci0gICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOworICAgICAgZWxzZQorICAgICAgICB7CisJICBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSAgc3RhdHVzID0gJGx0X2RsbmVlZF91c2NvcmU7CisgICAgICAgICAgZWxzZSBwdXRzIChkbGVycm9yICgpKTsKKwl9CiAgICAgICAvKiBkbGNsb3NlIChzZWxmKTsgKi8KICAgICB9CiAgIGVsc2UKQEAgLTE4NjksMTYgKzE5MjcsMTYgQEAKICAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKICAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAogICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6JExJTkVOTzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgIChldmFsICIkbHRfY29tcGlsZSIgMj5vdXQvY29uZnRlc3QuZXJyKQogICAgYWNfc3RhdHVzPSQ/CiAgICBjYXQgb3V0L2NvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICBlY2hvICIkYXNfbWU6X19vbGluZV9fOiBcJD8gPSAkYWNfc3RhdHVzIiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICBlY2hvICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAogICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKICAgIHRoZW4KICAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKICAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCi0gICAgICRFQ0hPICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAorICAgICAkRUNITyAiJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkU0VEICcvXiQvZCcgPiBvdXQvY29uZnRlc3QuZXhwCiAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBvdXQvY29uZnRlc3QuZXJyID5vdXQvY29uZnRlc3QuZXIyCiAgICAgIGlmIHRlc3QgISAtcyBvdXQvY29uZnRlc3QuZXIyIHx8IGRpZmYgb3V0L2NvbmZ0ZXN0LmV4cCBvdXQvY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KICAgICAgICBfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSk9eWVzCkBAIC0yMDM3LDYgKzIwOTUsNyBAQAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9PQkpEVU1QXSlkbmwKIG00X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdKWRubAogQUNfTVNHX0NIRUNLSU5HKFtkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3NdKQogbTRfaWYoWyQxXSwKIAlbXSwgWwpAQCAtMjA0NSwxNiArMjEwNCwyMyBAQAogICAgIGRhcndpbiopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8sL0xSLyIgOzsKICAgICAqKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovIiA7OwogICBlc2FjCi0gIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICJzLD0vLC8sZyJgCi0gIGlmICRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnOycgPi9kZXYvbnVsbCA7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VkX3N0cmlwX2VxPSJzLD1cKFtbQS1aYS16XV06XCksXDEsZyIgOzsKKyAgICAqKSBsdF9zZWRfc3RyaXBfZXE9InMsPS8sLyxnIiA7OworICBlc2FjCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCBhd2sgJGx0X2F3a19hcmcgfCAkU0VEIC1lICJzL15saWJyYXJpZXM6Ly8iIC1lICRsdF9zZWRfc3RyaXBfZXFgCisgIGNhc2UgJGx0X3NlYXJjaF9wYXRoX3NwZWMgaW4KKyAgKlw7KikKICAgICAjIGlmIHRoZSBwYXRoIGNvbnRhaW5zICI7IiB0aGVuIHdlIGFzc3VtZSBpdCB0byBiZSB0aGUgc2VwYXJhdG9yCiAgICAgIyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgcGF0aCBzZXBhcmF0b3IgKGkuZS4gIjoiKSAtIGl0IGlzCiAgICAgIyBhc3N1bWVkIHRoYXQgbm8gcGFydCBvZiBhIG5vcm1hbCBwYXRobmFtZSBjb250YWlucyAiOyIgYnV0IHRoYXQgc2hvdWxkCiAgICAgIyBva2F5IGluIHRoZSByZWFsIHdvcmxkIHdoZXJlICI7IiBpbiBkaXJwYXRocyBpcyBpdHNlbGYgcHJvYmxlbWF0aWMuCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotICBlbHNlCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICBmaQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICdzLzsvIC9nJ2AKKyAgICA7OworICAqKQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgIDs7CisgIGVzYWMKICAgIyBPaywgbm93IHdlIGhhdmUgdGhlIHBhdGgsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHdlIGNhbiBzdGVwIHRocm91Z2ggaXQKICAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuCiAgIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPQpAQCAtMjA2Nyw3ICsyMTMzLDcgQEAKIAlsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aCIKICAgICBmaQogICBkb25lCi0gIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyB8IGF3ayAnCisgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMiIHwgYXdrICcKIEJFR0lOIHtSUz0iICI7IEZTPSIvfFxuIjt9IHsKICAgbHRfZm9vPSIiOwogICBsdF9jb3VudD0wOwpAQCAtMjA4Nyw3ICsyMTUzLDEzIEBACiAgIGlmIChsdF9mb28gIT0gIiIpIHsgbHRfZnJlcVtbbHRfZm9vXV0rKzsgfQogICBpZiAobHRfZnJlcVtbbHRfZm9vXV0gPT0gMSkgeyBwcmludCBsdF9mb287IH0KIH0nYAotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICRsdF9zZWFyY2hfcGF0aF9zcGVjYAorICAjIEFXSyBwcm9ncmFtIGFib3ZlIGVycm9uZW91c2x5IHByZXBlbmRzICcvJyB0byBDOi9kb3MvcGF0aHMKKyAgIyBmb3IgdGhlc2UgaG9zdHMuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfFwKKyAgICAgICRTRUQgJ3MsL1woW1tBLVphLXpdXTpcKSxcMSxnJ2AgOzsKKyAgZXNhYworICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkbHRfTkwyU1BgCiBlbHNlCiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKIGZpXSkKQEAgLTIxNzUsNyArMjI0Nyw3IEBACiAgIG02OGspCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5peGxpYnJhcnkgJGxpYm5hbWUuYScKICAgICAjIENyZWF0ZSAke2xpYm5hbWV9X2l4bGlicmFyeS5hIGVudHJpZXMgaW4gL3N5cy9saWJzLgotICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCisgICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWBmdW5jX2VjaG9fYWxsICIkbGliIiB8ICRTRUQgJ1wnJ3MlXi4qL1woW1teL11dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKICAgICA7OwogICBlc2FjCiAgIDs7CkBAIC0yMjA2LDggKzIyNzgsOSBAQAogICBuZWVkX3ZlcnNpb249bm8KICAgbmVlZF9saWJfcHJlZml4PW5vCiAKLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKyAgeWVzLCopCisgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KQEAgLTIyMjgsMzYgKzIzMDEsODMgQEAKICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIgL2xpYi93MzJhcGkgL2xpYiAvdXNyL2xvY2FsL2xpYiIKK200X2lmKFskMV0sIFtdLFsKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvdXNyL2xpYi93MzJhcGkiXSkKICAgICAgIDs7CiAgICAgbWluZ3cqIHwgY2VnY2MqKQogICAgICAgIyBNaW5HVyBETExzIHVzZSB0cmFkaXRpb25hbCAnbGliJyBwcmVmaXgKICAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgJEdSRVAgIl5saWJyYXJpZXM6IiB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IFskR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGxdOyB0aGVuCi0gICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEggcHJpbnRlZCBieQotICAgICAgICAjIG1pbmd3IGdjYywgYnV0IHdlIGFyZSBydW5uaW5nIG9uIEN5Z3dpbi4gR2NjIHByaW50cyBpdHMgc2VhcmNoCi0gICAgICAgICMgcGF0aCB3aXRoIDsgc2VwYXJhdG9ycywgYW5kIHdpdGggZHJpdmUgbGV0dGVycy4gV2UgY2FuIGhhbmRsZSB0aGUKLSAgICAgICAgIyBkcml2ZSBsZXR0ZXJzIChjeWd3aW4gZmlsZXV0aWxzIHVuZGVyc3RhbmRzIHRoZW0pLCBzbyBsZWF2ZSB0aGVtLAotICAgICAgICAjIGVzcGVjaWFsbHkgYXMgd2UgbWlnaHQgcGFzcyBmaWxlcyBmb3VuZCB0aGVyZSB0byBhIG1pbmd3IG9iamR1bXAsCi0gICAgICAgICMgd2hpY2ggd291bGRuJ3QgdW5kZXJzdGFuZCBhIGN5Z3dpbmlmaWVkIHBhdGguIEFoaC4KLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgICAgIGVsc2UKLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgICAgIGZpCiAgICAgICA7OwogICAgIHB3MzIqKQogICAgICAgIyBwdzMyIERMTHMgdXNlICdwdycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCiAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKICAgICAgIDs7CiAgICAgZXNhYworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgOzsKKworICAqLGNsKikKKyAgICAjIE5hdGl2ZSBNU1ZDCisgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKworICAgIGNhc2UgJGJ1aWxkX29zIGluCisgICAgbWluZ3cqKQorICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorICAgICAgbHRfc2F2ZV9pZnM9JElGUworICAgICAgSUZTPSc7JworICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorICAgICAgZG8KKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorICAgICAgZG9uZQorICAgICAgSUZTPSRsdF9zYXZlX2lmcworICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFtbYS16QS1aXV1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorICAgICAgOzsKKyAgICBjeWd3aW4qKQorICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICA7OworICAgICopCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBbJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgorICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorICAgICAgZWxzZQorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisgICAgICBmaQorICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisgICAgICA7OworICAgIGVzYWMKKworICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAgICAkUk0gXCRkbHBhdGgnCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKICAgICA7OwogCiAgICopCisgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwogICAgIDs7CiAgIGVzYWMKLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCiAgIHNobGlicGF0aF92YXI9UEFUSAogICA7OwpAQCAtMjM0NCw2ICsyNDY0LDE5IEBACiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgOzsKIAoraGFpa3UqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgcnVudGltZV9sb2FkZXIiCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICA7OworCiBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKICAgIyBHaXZlIGEgc29uYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1ham9yIHZlcnNpb24gc28gdGhhdCBkbGQuc2wgcmVmdXNlcyB0bwogICAjIGxpbmsgYWdhaW5zdCBvdGhlciB2ZXJzaW9ucy4KQEAgLTIzODYsOCArMjUxOSwxMCBAQAogICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCiAgICAgOzsKICAgZXNhYwotICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NS4KKyAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUsIC4uLgogICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA1NTUgJGxpYicKKyAgIyBvciBmYWlscyBvdXRyaWdodCwgc28gb3ZlcnJpZGUgYXRvbWljYWxseToKKyAgaW5zdGFsbF9vdmVycmlkZV9tb2RlPTU1NQogICA7OwogCiBpbnRlcml4W1szLTldXSopCkBAIC0yNDQ1LDcgKzI1ODAsNyBAQAogICA7OwogCiAjIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQorbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICB2ZXJzaW9uX3R5cGU9bGludXgKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwpAQCAtMjQ1NCwxNiArMjU4OSwyMSBAQAogICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbiAkbGliZGlyJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKwogICAjIFNvbWUgYmludXRpbHMgbGQgYXJlIHBhdGNoZWQgdG8gc2V0IERUX1JVTlBBVEgKLSAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCi0gIHNhdmVfbGliZGlyPSRsaWJkaXIKLSAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpXCI7IFwKLSAgICAgICBMREZMQUdTPVwiXCRMREZMQUdTICRfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKVwiIgotICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCi0gICAgW0FTX0lGKFsgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsXSwKLSAgICAgICBbc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllc10pXSkKLSAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCi0gIGxpYmRpcj0kc2F2ZV9saWJkaXIKKyAgQUNfQ0FDSEVfVkFMKFtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGhdLAorICAgIFtsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKyAgICBzYXZlX0xERkxBR1M9JExERkxBR1MKKyAgICBzYXZlX2xpYmRpcj0kbGliZGlyCisgICAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpXCI7IFwKKwkgTERGTEFHUz1cIlwkTERGTEFHUyAkX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSlcIiIKKyAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCisgICAgICBbQVNfSUYoWyAoJE9CSkRVTVAgLXAgY29uZnRlc3QkYWNfZXhlZXh0KSAyPi9kZXYvbnVsbCB8IGdyZXAgIlJVTlBBVEguKiRsaWJkaXIiID4vZGV2L251bGxdLAorCSBbbHRfY3Zfc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllc10pXSkKKyAgICBMREZMQUdTPSRzYXZlX0xERkxBR1MKKyAgICBsaWJkaXI9JHNhdmVfbGliZGlyCisgICAgXSkKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPSRsdF9jdl9zaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgKIAogICAjIFRoaXMgaW1wbGllcyBubyBmYXN0X2luc3RhbGwsIHdoaWNoIGlzIHVuYWNjZXB0YWJsZS4KICAgIyBTb21lIHJld29yayB3aWxsIGJlIG5lZWRlZCB0byBhbGxvdyBmb3IgZmFzdF9pbnN0YWxsCkBAIC0yNDcyLDcgKzI2MTIsNyBAQAogCiAgICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWwkgXSpod2NhcFsJIF0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKKyAgICBsdF9sZF9leHRyYT1gYXdrICcvXmluY2x1ZGUgLyB7IHN5c3RlbShzcHJpbnRmKCJjZCAvZXRjOyBjYXQgJXMgMj4vZGV2L251bGwiLCBcWyRdMikpOyBza2lwID0gMTsgfSB7IGlmICghc2tpcCkgcHJpbnQgXFskXTA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nO3MvIi8vZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCiAgIGZpCiAKQEAgLTI3MDUsNiArMjg0NSw4IEBACiAgICAgVGhlIGxhc3QgbmFtZSBpcyB0aGUgb25lIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aXRoIC1sTkFNRV1dKQogX0xUX0RFQ0woW10sIFtzb25hbWVfc3BlY10sIFsxXSwKICAgICBbW1RoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lXV0pCitfTFRfREVDTChbXSwgW2luc3RhbGxfb3ZlcnJpZGVfbW9kZV0sIFsxXSwKKyAgICBbUGVybWlzc2lvbiBtb2RlIG92ZXJyaWRlIGZvciBpbnN0YWxsYXRpb24gb2Ygc2hhcmVkIGxpYnJhcmllc10pCiBfTFRfREVDTChbXSwgW3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0sCiAgICAgW0NvbW1hbmQgdG8gdXNlIGFmdGVyIGluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKIF9MVF9ERUNMKFtdLCBbcG9zdHVuaW5zdGFsbF9jbWRzXSwgWzJdLApAQCAtMjgxNyw2ICsyOTU5LDcgQEAKIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbTRfcmVxdWlyZShbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdKWRubAogCiBBQ19BUkdfV0lUSChbZ251LWxkXSwKICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nbnUtbGRdLApAQCAtMjkzOCw2ICszMDgxLDExIEBACiBlc2FjCiByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiBjYXNlICRob3N0X29zIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisgICAgZmkKKyAgICA7OwogICBkYXJ3aW4qKQogICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCkBAIC0yOTQ2LDggKzMwOTQsOCBAQAogICAgIGZpCiAgICAgOzsKIGVzYWMKLV9MVF9ERUNMKFtdLCBbcmVsb2FkX2ZsYWddLCBbMV0sIFtIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzXSlkbmwKLV9MVF9ERUNMKFtdLCBbcmVsb2FkX2NtZHNdLCBbMl0pZG5sCitfTFRfVEFHREVDTChbXSwgW3JlbG9hZF9mbGFnXSwgWzFdLCBbSG93IHRvIGNyZWF0ZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlc10pZG5sCitfTFRfVEFHREVDTChbXSwgW3JlbG9hZF9jbWRzXSwgWzJdKWRubAogXSkjIF9MVF9DTURfUkVMT0FECiAKIApAQCAtMjk5OSwxNiArMzE0NywxOCBAQAogICAjIEJhc2UgTVNZUy9NaW5HVyBkbyBub3QgcHJvdmlkZSB0aGUgJ2ZpbGUnIGNvbW1hbmQgbmVlZGVkIGJ5CiAgICMgZnVuY193aW4zMl9saWJpZCBzaGVsbCBmdW5jdGlvbiwgc28gdXNlIGEgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLAogICAjIHVubGVzcyB3ZSBmaW5kICdmaWxlJywgZm9yIGV4YW1wbGUgYmVjYXVzZSB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLgotICBpZiAoIGZpbGUgLyApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAjIGZ1bmNfd2luMzJfbGliaWQgYXNzdW1lcyBCU0Qgbm0sIHNvIGRpc2FsbG93IGl0IGlmIHVzaW5nIE1TIGR1bXBiaW4uCisgIGlmICggdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiQlNEIG5tIiAmJiBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwogICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwogICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCiAgIGZpCiAgIDs7CiAKLWNlZ2NjKQorY2VnY2MqKQogICAjIHVzZSB0aGUgd2Vha2VyIHRlc3QgYmFzZWQgb24gJ29iamR1bXAnLiBTZWUgbWluZ3cqLgogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZS1hcm0tLipsaXR0bGUoLiphcmNoaXRlY3R1cmU6IGFybSk/JwogICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCkBAIC0zMDM4LDYgKzMxODgsMTAgQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAoraGFpa3UqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCiBocHV4MTAuMjAqIHwgaHB1eDExKikKICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQogICBjYXNlICRob3N0X2NwdSBpbgpAQCAtMzA0NiwxMSArMzIwMCwxMSBAQAogICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2hwdXgzMi9saWJjLnNvCiAgICAgOzsKICAgaHBwYSo2NCopCi0gICAgW2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzWzAtOV1bMC05XVswLTldfEVMRi1bMC05XVswLTldKSBzaGFyZWQgb2JqZWN0IGZpbGUgLSBQQS1SSVNDIFswLTldLlswLTldJ10KKyAgICBbbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGWyAtXVswLTldWzAtOV0pKC1iaXQpPyggW0xNXVNCKT8gc2hhcmVkIG9iamVjdCggZmlsZSk/WywgLV0qIFBBLVJJU0MgWzAtOV1cLlswLTldJ10KICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9wYTIwXzY0L2xpYmMuc2wKICAgICA7OwogICAqKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfFBBLVJJU0NbWzAtOV1dLltbMC05XV0pIHNoYXJlZCBsaWJyYXJ5JworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfFBBLVJJU0NbWzAtOV1dXC5bWzAtOV1dKSBzaGFyZWQgbGlicmFyeScKICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCiAgICAgOzsKICAgZXNhYwpAQCAtMzA3Miw3ICszMjI2LDcgQEAKICAgOzsKIAogIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKK2xpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIApAQCAtMzE1MCw2ICszMzA0LDIxIEBACiAgIDs7CiBlc2FjCiBdKQorCitmaWxlX21hZ2ljX2dsb2I9Cit3YW50X25vY2FzZWdsb2I9bm8KK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgbWluZ3cqIHwgcHczMiopCisgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworICAgIGVsc2UKKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1tcMV1dXC9bW1wxXV1cL2c7L2ciYAorICAgIGZpCisgICAgOzsKKyAgZXNhYworZmkKKwogZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCiBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgpAQCAtMzE1Nyw3ICszMzI2LDExIEBACiBfTFRfREVDTChbXSwgW2RlcGxpYnNfY2hlY2tfbWV0aG9kXSwgWzFdLAogICAgIFtNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0c10pCiBfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfY21kXSwgWzFdLAotICAgIFtDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIl0pCisgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2dsb2JdLCBbMV0sCisgICAgW0hvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiXSkKK19MVF9ERUNMKFtdLCBbd2FudF9ub2Nhc2VnbG9iXSwgWzFdLAorICAgIFtGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQogXSkjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKIAogCkBAIC0zMjE0LDcgKzMzODcsMTkgQEAKICAgTk09IiRsdF9jdl9wYXRoX05NIgogZWxzZQogICAjIERpZG4ndCBmaW5kIGFueSBCU0QgY29tcGF0aWJsZSBuYW1lIGxpc3RlciwgbG9vayBmb3IgZHVtcGJpbi4KLSAgQUNfQ0hFQ0tfVE9PTFMoRFVNUEJJTiwgWyJkdW1wYmluIC1zeW1ib2xzIiAibGluayAtZHVtcCAtc3ltYm9scyJdLCA6KQorICBpZiB0ZXN0IC1uICIkRFVNUEJJTiI7IHRoZW4gOgorICAgICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorICBlbHNlCisgICAgQUNfQ0hFQ0tfVE9PTFMoRFVNUEJJTiwgW2R1bXBiaW4gImxpbmsgLWR1bXAiXSwgOikKKyAgICBjYXNlIGAkRFVNUEJJTiAtc3ltYm9scyAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgorICAgICpDT0ZGKikKKyAgICAgIERVTVBCSU49IiREVU1QQklOIC1zeW1ib2xzIgorICAgICAgOzsKKyAgICAqKQorICAgICAgRFVNUEJJTj06CisgICAgICA7OworICAgIGVzYWMKKyAgZmkKICAgQUNfU1VCU1QoW0RVTVBCSU5dKQogICBpZiB0ZXN0ICIkRFVNUEJJTiIgIT0gIjoiOyB0aGVuCiAgICAgTk09IiREVU1QQklOIgpAQCAtMzIyNywxMyArMzQxMiwxMyBAQAogQUNfQ0FDSEVfQ0hFQ0soW3RoZSBuYW1lIGxpc3RlciAoJE5NKSBpbnRlcmZhY2VdLCBbbHRfY3Zfbm1faW50ZXJmYWNlXSwKICAgW2x0X2N2X25tX2ludGVyZmFjZT0iQlNEIG5tIgogICBlY2hvICJpbnQgc29tZV92YXJpYWJsZSA9IDA7IiA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGFjX2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOiRMSU5FTk86ICRhY19jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgIChldmFsICIkYWNfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCiAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiAkTk0gXFxcImNvbmZ0ZXN0LiRhY19vYmpleHRcXFwiXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCiAgIChldmFsICIkTk0gXCJjb25mdGVzdC4kYWNfb2JqZXh0XCIiIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0KQogICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogb3V0cHV0XCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgIChldmFsIGVjaG8gIlwiXCRhc19tZTokTElORU5POiBvdXRwdXRcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKICAgY2F0IGNvbmZ0ZXN0Lm91dCA+JkFTX01FU1NBR0VfTE9HX0ZECiAgIGlmICRHUkVQICdFeHRlcm5hbC4qc29tZV92YXJpYWJsZScgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCiAgICAgbHRfY3Zfbm1faW50ZXJmYWNlPSJNUyBkdW1wYmluIgpAQCAtMzI0OCw2ICszNDMzLDY3IEBACiBkbmwgQUNfREVGVU4oW0FNX1BST0dfTk1dLCBbXSkKIGRubCBBQ19ERUZVTihbQUNfUFJPR19OTV0sIFtdKQogCisjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGhvdyB0byBkZXRlcm1pbmUgdGhlIG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5CisjIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGxpbmsgbGlicmFyeS4KKyMgIC0tIFBPUlRNRSBmaWxsIGluIHdpdGggdGhlIGR5bmFtaWMgbGlicmFyeSBjaGFyYWN0ZXJpc3RpY3MKK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQl0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKQorbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pCittNF9yZXF1aXJlKFtfTFRfREVDTF9ETExUT09MXSkKK0FDX0NBQ0hFX0NIRUNLKFtob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzXSwKK2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kLAorW2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworCitjYXNlICRob3N0X29zIGluCitjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKyAgICA7OworICAqKQorICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworICAgIDs7CisgIGVzYWMKKyAgOzsKKyopCisgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisgIDs7Citlc2FjCitdKQorc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCit0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisKK19MVF9ERUNMKFtdLCBbc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWRdLCBbMV0sCisgICAgW0NvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXNdKQorXSkjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCisKKworIyBfTFRfUEFUSF9NQU5JRkVTVF9UT09MCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgbG9jYXRlIHRoZSBtYW5pZmVzdCB0b29sCittNF9kZWZ1bihbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0sCitbQUNfQ0hFQ0tfVE9PTChNQU5JRkVTVF9UT09MLCBtdCwgOikKK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CitBQ19DQUNIRV9DSEVDSyhbaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sXSwgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbF0sCisgIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKyAgZmkKKyAgcm0gLWYgY29uZnRlc3QqXSkKK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisgIE1BTklGRVNUX1RPT0w9OgorZmkKK19MVF9ERUNMKFtdLCBbTUFOSUZFU1RfVE9PTF0sIFsxXSwgW01hbmlmZXN0IHRvb2xdKWRubAorXSkjIF9MVF9QQVRIX01BTklGRVNUX1RPT0wKKwogCiAjIExUX0xJQl9NCiAjIC0tLS0tLS0tCkBAIC0zMjU2LDcgKzM1MDIsNyBAQAogW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKIExJQk09CiBjYXNlICRob3N0IGluCi0qLSotYmVvcyogfCAqLSotY3lnd2luKiB8ICotKi1wdzMyKiB8ICotKi1kYXJ3aW4qKQorKi0qLWJlb3MqIHwgKi0qLWNlZ2NjKiB8ICotKi1jeWd3aW4qIHwgKi0qLWhhaWt1KiB8ICotKi1wdzMyKiB8ICotKi1kYXJ3aW4qKQogICAjIFRoZXNlIHN5c3RlbSBkb24ndCBoYXZlIGxpYm0sIG9yIGRvbid0IG5lZWQgaXQKICAgOzsKICotbmNyLXN5c3Y0LjMqKQpAQCAtMzI4NCw3ICszNTMwLDEyIEBACiBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9CiAKIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicKKyAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgbnZjYyopCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLVhjb21waWxlciAtZm5vLWJ1aWx0aW4nIDs7CisgICopCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLWZuby1idWlsdGluJyA7OworICBlc2FjCiAKICAgX0xUX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnNdLAogICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zLApAQCAtMzMwMSw2ICszNTUyLDcgQEAKIG00X2RlZnVuKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSwKIFtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCiBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfQVdLXSlkbmwKIEFDX1JFUVVJUkUoW0xUX1BBVEhfTk1dKWRubAogQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubApAQCAtMzM2OCw4ICszNjIwLDggQEAKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAKICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwobGliW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXClbWyBdXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgogCiAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KIG9wdF9jcj0KQEAgLTM0MDUsNiArMzY1Nyw3IEBACiAgIGVsc2UKICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgogICBmaQorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCiAKICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCiAgIHBpcGVfd29ya3M9bm8KQEAgLTM0MjYsNyArMzY3OSw3IEBACiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgIyBOb3cgdHJ5IHRvIGdyYWIgdGhlIHN5bWJvbHMuCiAgICAgbmxpc3Q9Y29uZnRlc3Qubm0KLSAgICBpZiBBQ19UUllfRVZBTChOTSBjb25mdGVzdC4kYWNfb2JqZXh0IFx8ICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFw+ICRubGlzdCkgJiYgdGVzdCAtcyAiJG5saXN0IjsgdGhlbgorICAgIGlmIEFDX1RSWV9FVkFMKE5NIGNvbmZ0ZXN0LiRhY19vYmpleHQgXHwgIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KICAgICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCiAgICAgICBpZiBzb3J0ICIkbmxpc3QiIHwgdW5pcSA+ICIkbmxpc3QiVDsgdGhlbgogCW12IC1mICIkbmxpc3QiVCAiJG5saXN0IgpAQCAtMzQzOCw2ICszNjkxLDE4IEBACiAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgogCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworIyBkZWZpbmUgTFRAJnRAX0RMU1lNX0NPTlNUCisjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAorI2Vsc2UKKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVCBjb25zdAorI2VuZGlmCisKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTM0NDksNyArMzcxNCw3IEBACiAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotY29uc3Qgc3RydWN0IHsKK0xUQCZ0QF9ETFNZTV9DT05TVCBzdHJ1Y3QgewogICBjb25zdCBjaGFyICpuYW1lOwogICB2b2lkICAgICAgICphZGRyZXNzOwogfQpAQCAtMzQ3NSwxNSArMzc0MCwxNSBAQAogX0xUX0VPRgogCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwogCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKIAkgIENGTEFHUz0iJENGTEFHUyRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCiAJICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAJICAgIHBpcGVfd29ya3M9eWVzCiAJICBmaQotCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwogCWVsc2UKIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKIAlmaQpAQCAtMzUxNiw2ICszNzgxLDEzIEBACiAgIEFDX01TR19SRVNVTFQob2spCiBmaQogCisjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW1tAXV1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworZmkKKwogX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfcGlwZV0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwgWzFdLAogICAgIFtUYWtlIHRoZSBvdXRwdXQgb2Ygbm0gYW5kIHByb2R1Y2UgYSBsaXN0aW5nIG9mIHJhdyBzeW1ib2xzIGFuZCBDIG5hbWVzXSkKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsXSwgWzFdLApAQCAtMzUyNiw2ICszNzk4LDggQEAKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAogICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAogICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCitfTFRfREVDTChbXSwgW25tX2ZpbGVfbGlzdF9zcGVjXSwgWzFdLAorICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yICROTV0pCiBdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKIAogCkBAIC0zNTM3LDcgKzM4MTEsNiBAQAogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQogCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSkKIG00X2lmKFskMV0sIFtDWFhdLCBbCiAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KQEAgLTM1ODgsNiArMzg2MSwxMSBAQAogICAgICAgIyBESkdQUCBkb2VzIG5vdCBzdXBwb3J0IHNoYXJlZCBsaWJyYXJpZXMgYXQgYWxsCiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CiAgICAgICA7OworICAgIGhhaWt1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciBIYWlrdS4KKyAgICAgICMgVGhlICItc3RhdGljIiBmbGFnIGV4aXN0cywgYnV0IGlzIGJyb2tlbi4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KKyAgICAgIDs7CiAgICAgaW50ZXJpeFtbMy05XV0qKQogICAgICAgIyBJbnRlcml4IDMueCBnY2MgLWZwaWMvLWZQSUMgb3B0aW9ucyBnZW5lcmF0ZSBicm9rZW4gY29kZS4KICAgICAgICMgSW5zdGVhZCwgd2UgcmVsb2NhdGUgc2hhcmVkIGxpYnJhcmllcyBhdCBydW50aW1lLgpAQCAtMzYzNyw2ICszOTE1LDEyIEBACiAJICA7OwogCWVzYWMKIAk7OworICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKwkjIFRoaXMgaGFjayBpcyBzbyB0aGF0IHRoZSBzb3VyY2UgZmlsZSBjYW4gdGVsbCB3aGV0aGVyIGl0IGlzIGJlaW5nCisJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKwltNF9pZihbJDFdLCBbR0NKXSwgW10sCisJICBbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKwk7OwogICAgICAgZGd1eCopCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIGVjKysqKQpAQCAtMzY5Myw3ICszOTc3LDcgQEAKIAkgICAgOzsKIAllc2FjCiAJOzsKLSAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIEtDQyopCiAJICAgICMgS0FJIEMrKyBDb21waWxlcgpAQCAtMzcyNiw4ICs0MDEwLDggQEAKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwogCSAgICA7OwotCSAgeGxjKiB8IHhsQyopCi0JICAgICMgSUJNIFhMIDguMCBvbiBQUEMKKwkgIHhsYyogfCB4bEMqIHwgYmd4bFtbY0NdXSogfCBtcGl4bFtbY0NdXSopCisJICAgICMgSUJNIFhMIDguMCwgOS4wIG9uIFBQQyBhbmQgQmx1ZUdlbmUKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXFwaWMnCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJwpAQCAtMzc4OSw3ICs0MDczLDcgQEAKIAk7OwogICAgICAgc29sYXJpcyopCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQkgIENDKikKKwkgIENDKiB8IHN1bkNDKikKIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwpAQCAtMzg5Myw2ICs0MTc3LDEyIEBACiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mbm8tY29tbW9uJwogICAgICAgOzsKIAorICAgIGhhaWt1KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciBIYWlrdS4KKyAgICAgICMgVGhlICItc3RhdGljIiBmbGFnIGV4aXN0cywgYnV0IGlzIGJyb2tlbi4KKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KKyAgICAgIDs7CisKICAgICBocHV4KikKICAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IGZvciA2NC1iaXQgUEEgSFAtVVgsIGJ1dCBub3QgZm9yIDMyLWJpdAogICAgICAgIyBQQSBIUC1VWC4gIE9uIElBNjQgSFAtVVgsIFBJQyBpcyB0aGUgZGVmYXVsdCBidXQgdGhlIHBpYyBmbGFnCkBAIC0zOTM1LDYgKzQyMjUsMTMgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCiAgICAgICA7OwogICAgIGVzYWMKKworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgbnZjYyopICMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVhsaW5rZXIgJworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctWGNvbXBpbGVyIC1mUElDJworICAgICAgOzsKKyAgICBlc2FjCiAgIGVsc2UKICAgICAjIFBPUlRNRSBDaGVjayBmb3IgZmxhZyB0byBwYXNzIGxpbmtlciBmbGFncyB0aHJvdWdoIHRoZSBzeXN0ZW0gY29tcGlsZXIuCiAgICAgY2FzZSAkaG9zdF9vcyBpbgpAQCAtMzk3Nyw3ICs0Mjc0LDcgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCiAgICAgICA7OwogCi0gICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgIyBvbGQgSW50ZWwgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCiAgICAgICBlY2MqKQpAQCAtMzk5OCw3ICs0Mjk1LDEzIEBACiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctLXNoYXJlZCcKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJwogCTs7Ci0gICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikKKyAgICAgIG5hZ2ZvciopCisJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsLVdsLCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJOzsKKyAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwpAQCAtNDAxMCwyNiArNDMxMywyNiBAQAogICAgICAgICAjIEFsbCBBbHBoYSBjb2RlIGlzIFBJQy4KICAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKICAgICAgICAgOzsKLSAgICAgIHhsKikKLQkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEgb24gUFBDCisgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCisJIyBJQk0gWEwgQyA4LjAvRm9ydHJhbiAxMC4xLCAxMS4xIG9uIFBQQyBhbmQgQmx1ZUdlbmUKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xcGljJwogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJwogCTs7CiAgICAgICAqKQogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorCSpTdW5cIEYqIHwgKlN1bipGb3J0cmFuKikKKwkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKKwkgIDs7CiAJKlN1blwgQyopCiAJICAjIFN1biBDIDUuOQogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKIAkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCiAJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKIAkgIDs7Ci0JKlN1blwgRiopCi0JICAjIFN1biBGb3J0cmFuIDguMyBwYXNzZXMgYWxsIHVucmVjb2duaXplZCBmbGFncyB0byB0aGUgbGlua2VyCi0JICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLQkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPScnCi0JICA7OwogCWVzYWMKIAk7OwogICAgICAgZXNhYwpAQCAtNDA2MCw3ICs0MzYzLDcgQEAKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CiAgICAgICAqKQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7CkBAIC00MTE3LDkgKzQ0MjAsMTEgQEAKICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSlAJnRAbTRfaWYoWyQxXSxbXSxbIC1EUElDXSxbbTRfaWYoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKICAgICA7OwogZXNhYwotQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCi1fTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKLQlbSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlcl0pCisKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10sCisgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSldLAorICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQorX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKIAogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgpAQCAtNDEzOCw2ICs0NDQzLDggQEAKIF9MVF9UQUdERUNMKFtwaWNfZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX3BpY10sIFsxXSwKIAlbQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzXSkKIAorX0xUX1RBR0RFQ0woW3dsXSwgW2x0X3Byb2dfY29tcGlsZXJfd2xdLCBbMV0sCisJW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQogIwogIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgogIwpAQCAtNDE1OCw2ICs0NDY1LDcgQEAKIG00X2RlZnVuKFtfTFRfTElOS0VSX1NITElCU10sCiBbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCiBBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubApAQCAtNDE2NiwyNyArNDQ3NCwzNSBAQAogQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSAkY29tcGlsZXIgbGlua2VyICgkTEQpIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQogbTRfaWYoWyQxXSwgW0NYWF0sIFsKICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgYWl4W1s0LTldXSopCiAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCiAgICAgIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorICAgICMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkCisgICAgIyBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KICAgICBpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogICAgIGVsc2UKICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogICAgIGZpCiAgICAgOzsKICAgcHczMiopCiAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgotICA7OworICAgIDs7CiAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCi0gICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87L14uKltbIF1dX19ubV9fL3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OworICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgY2wqKSA7OworICAgICopCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLztzL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQorICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKICAgKikKICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OworICAgIDs7CiAgIGVzYWMKLSAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCiBdLCBbCiAgIHJ1bnBhdGhfdmFyPQogICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC00MjQ5LDcgKzQ1NjUsMzMgQEAKICAgZXNhYwogCiAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCisKKyAgIyBPbiBzb21lIHRhcmdldHMsIEdOVSBsZCBpcyBjb21wYXRpYmxlIGVub3VnaCB3aXRoIHRoZSBuYXRpdmUgbGlua2VyCisgICMgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBuYXRpdmUgaW50ZXJmYWNlIGZvciBib3RoLgorICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT1ubwogICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4KikKKwkjIFRoZSBBSVggcG9ydCBvZiBHTlUgbGQgaGFzIGFsd2F5cyBhc3BpcmVkIHRvIGNvbXBhdGliaWxpdHkKKwkjIHdpdGggdGhlIG5hdGl2ZSBsaW5rZXIuICBIb3dldmVyLCBhcyB0aGUgd2FybmluZyBpbiB0aGUgR05VIGxkCisJIyBibG9jayBzYXlzLCB2ZXJzaW9ucyBiZWZvcmUgMi4xOS41KiBjb3VsZG4ndCByZWFsbHkgY3JlYXRlIHdvcmtpbmcKKwkjIHNoYXJlZCBsaWJyYXJpZXMsIHJlZ2FyZGxlc3Mgb2YgdGhlIGludGVyZmFjZSB1c2VkLgorCWNhc2UgYCRMRCAtdiAyPiYxYCBpbgorCSAgKlwgXChHTlVcIEJpbnV0aWxzXClcIDIuMTkuNSopIDs7CisJICAqXCBcKEdOVVwgQmludXRpbHNcKVwgMi5bWzItOV1dKikgOzsKKwkgICpcIFwoR05VXCBCaW51dGlsc1wpXCBbWzMtOV1dKikgOzsKKwkgICopCisJICAgIGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlPXllcworCSAgICA7OworCWVzYWMKKwk7OworICAgICAgKikKKwlsdF91c2VfZ251X2xkX2ludGVyZmFjZT15ZXMKKwk7OworICAgIGVzYWMKKyAgZmkKKworICBpZiB0ZXN0ICIkbHRfdXNlX2dudV9sZF9pbnRlcmZhY2UiID0geWVzOyB0aGVuCiAgICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKICAgICB3bGFyYz0nJHt3bH0nCiAKQEAgLTQyNjcsNiArNDYwOSw3IEBACiAgICAgZmkKICAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KICAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICpHTlVcIGdvbGQqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7CiAgICAgICAqXCBbWzAxXV0uKiB8ICpcIDIuW1swLTldXS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQogICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KICAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KQEAgLTQyODIsMTEgKzQ2MjUsMTIgQEAKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAJY2F0IDw8X0xUX0VPRiAxPiYyCiAKLSoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjkuMSwgaXMgcmVwb3J0ZWQKKyoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjE5LCBpcyByZXBvcnRlZAogKioqIHRvIGJlIHVuYWJsZSB0byByZWxpYWJseSBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBBSVguCiAqKiogVGhlcmVmb3JlLCBsaWJ0b29sIGlzIGRpc2FibGluZyBzaGFyZWQgbGlicmFyaWVzIHN1cHBvcnQuICBJZiB5b3UKLSoqKiByZWFsbHkgY2FyZSBmb3Igc2hhcmVkIGxpYnJhcmllcywgeW91IG1heSB3YW50IHRvIG1vZGlmeSB5b3VyIFBBVEgKLSoqKiBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQsIGFuZCB0aGVuIHJlc3RhcnQuCisqKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBpbnN0YWxsIGJpbnV0aWxzCisqKiogMi4yMCBvciBhYm92ZSwgb3IgbW9kaWZ5IHlvdXIgUEFUSCBzbyB0aGF0IGEgbm9uLUdOVSBsaW5rZXIgaXMgZm91bmQuCisqKiogWW91IHdpbGwgdGhlbiBuZWVkIHRvIHJlc3RhcnQgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KIAogX0xUX0VPRgogICAgICAgZmkKQEAgLTQzMjIsMTAgKzQ2NjYsMTIgQEAKICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCiAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KIAogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgogICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKQEAgLTQzNDMsNiArNDY4OSwxMSBAQAogICAgICAgZmkKICAgICAgIDs7CiAKKyAgICBoYWlrdSopCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgOzsKKwogICAgIGludGVyaXhbWzMtOV1dKikKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCkBAIC00MzU4LDcgKzQ3MDksNyBAQAogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCiAgICAgICA7OwogCi0gICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251KQorICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgdG1wX2RpZXQ9bm8KICAgICAgIGlmIHRlc3QgIiRob3N0X29zIiA9IGxpbnV4LWRpZXRsaWJjOyB0aGVuCiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTQzNjgsMTUgKzQ3MTksMTYgQEAKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKIAkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCiAgICAgICB0aGVuCi0JdG1wX2FkZGZsYWc9CisJdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJdG1wX3NoYXJlZGZsYWc9Jy1zaGFyZWQnCiAJY2FzZSAkY2NfYmFzZW5hbWUsJGhvc3RfY3B1IGluCiAgICAgICAgIHBnY2MqKQkJCQkjIFBvcnRsYW5kIEdyb3VwIEMgY29tcGlsZXIKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCSAgOzsKLQlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCSMgUG9ydGxhbmQgR3JvdXAgZjc3IGFuZCBmOTAgY29tcGlsZXJzCi0JICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorCQkJCQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycworCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnIC1Nbm9tYWluJyA7OwogCWVjYyosaWE2NCogfCBpY2MqLGlhNjQqKQkjIEludGVsIEMgY29tcGlsZXIgb24gaWE2NAogCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljJyA7OwpAQCAtNDM4NywxMyArNDczOSwxNyBAQAogCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCiAJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiAJICB0bXBfc2hhcmVkZmxhZz0nLS1zaGFyZWQnIDs7Ci0JeGxbW2NDXV0qKQkJCSMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKKwl4bFtbY0NdXSogfCBiZ3hsW1tjQ11dKiB8IG1waXhsW1tjQ11dKikgIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQogCSAgdG1wX3NoYXJlZGZsYWc9Jy1xbWtzaHJvYmonCiAJICB0bXBfYWRkZmxhZz0gOzsKKwludmNjKikJIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcworCSAgOzsKIAllc2FjCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCiAJKlN1blwgQyopCQkJIyBTdW4gQyA1LjkKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwogCSpTdW5cIEYqKQkJCSMgU3VuIEZvcnRyYW4gOC4zCkBAIC00NDA5LDE3ICs0NzY1LDE3IEBACiAgICAgICAgIGZpCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgotCXhsZiopCisJeGxmKiB8IGJnZiogfCBiZ3hsZiogfCBtcGl4bGYqKQogCSAgIyBJQk0gWEwgRm9ydHJhbiAxMC4xIG9uIFBQQyBjYW5ub3QgY3JlYXRlIHNoYXJlZCBsaWJzIGl0c2VsZgogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CiAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwogCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CiAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwogCSAgZmkKIAkgIDs7CiAJZXNhYwpAQCAtNDQzMyw4ICs0Nzg5LDggQEAKIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwogCXdsYXJjPQogICAgICAgZWxzZQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICA7OwogCkBAIC00NDUyLDggKzQ4MDgsOCBAQAogCiBfTFRfRU9GCiAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogICAgICAgZmkKQEAgLTQ0OTksOCArNDg1NSw4IEBACiAKICAgICAqKQogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICBmaQpAQCAtNDU0MCw4ICs0ODk2LDEwIEBACiAgICAgICBlbHNlCiAJIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCiAJIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorCSMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbAorCSMgZGVmaW5lZCBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KIAlpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0JICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWVsc2UKIAkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWZpCkBAIC00NjI4LDkgKzQ5ODYsOSBAQAogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwogICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuICRFQ0hPICJYJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgfCAkWHNlZDsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKICAgICAgIGVsc2UKIAlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwpAQCAtNDYzOSwxNCArNDk5NywxOSBAQAogCWVsc2UKIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgKKwkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKIAkgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgogCSAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCiAJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKLQkgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBlbHNlCisJICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgIGZpCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCiAJICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQgbGlicmFyaWVzLgogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKQEAgLTQ2NzgsMjAgKzUwNDEsNjMgQEAKICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCiAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCiAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0gICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0gICAgICBsaWJleHQ9bGliCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGAkRUNITyAiWCRkZXBsaWJzIiB8ICRYc2VkIC1lICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSAgICAgIF9MVF9UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLSAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIGNsKikKKwkjIE5hdGl2ZSBNU1ZDCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZWxzZQorCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgZml+CisJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisJICBsaW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCV9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW1tBSVRXXV1bWyBdXS9zLy4qW1sgXV0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKwkjIERvbid0IHVzZSByYW5saWIKKwlfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworCV9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorCSAgICAqLmV4ZXwqLkVYRSkgOzsKKwkgICAgKikKKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKwkgICAgICA7OworCSAgZXNhY34KKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworCSAgZmknCisJOzsKKyAgICAgICopCisJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwlsaWJleHQ9bGliCisJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisJc2hyZXh0X2NtZHM9Ii5kbGwiCisJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCTs7CisgICAgICBlc2FjCiAgICAgICA7OwogCiAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKQEAgLTQ3MjksNyArNTEzNSw3IEBACiAKICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCkBAIC00NzM3LDcgKzUxNDMsNyBAQAogCiAgICAgaHB1eDkqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZmkKQEAgLTQ3NTIsOCArNTE1OCw4IEBACiAgICAgICA7OwogCiAgICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGZpCkBAIC00NzcxLDE2ICs1MTc3LDE2IEBACiAgICAgICA7OwogCiAgICAgaHB1eDExKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgogCWNhc2UgJGhvc3RfY3B1IGluCiAJaHBwYSo2NCopCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJaWE2NCopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJZXNhYwogICAgICAgZWxzZQpAQCAtNDc5Miw3ICs1MTk4LDE0IEBACiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwltNF9pZigkMSwgW10sIFsKKwkgICMgT2xkZXIgdmVyc2lvbnMgb2YgdGhlIDExLjAwIGNvbXBpbGVyIGRvIG5vdCB1bmRlcnN0YW5kIC1iIHlldAorCSAgIyAoSFA5MjQ1My0wMSBBLjExLjAxLjIwIGRvZXNuJ3QsIEhQOTI0NTMtMDEgQi4xMS5YLjM1MTc1LTM1MTc2LkdQIGRvZXMpCisJICBfTFRfTElOS0VSX09QVElPTihbaWYgJENDIHVuZGVyc3RhbmRzIC1iXSwKKwkgICAgX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX19iLCAkMSksIFstYl0sCisJICAgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyddLAorCSAgICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyddKV0sCisJICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSkKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKQEAgLTQ4MjAsMTkgKzUyMzMsMzQgQEAKIAogICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCiAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotICAgICAgICBBQ19MSU5LX0lGRUxTRShpbnQgZm9vKHZvaWQpIHt9LAotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgICApCi0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbF0sCisJICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2xdLAorCSAgW3NhdmVfTERGTEFHUz0iJExERkxBR1MiCisJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorCSAgIEFDX0xJTktfSUZFTFNFKAorCSAgICAgW0FDX0xBTkdfU09VUkNFKAorCSAgICAgICAgW0FDX0xBTkdfQ0FTRShbQ10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorCQkJICAgICAgW0MrK10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorCQkJICAgICAgW0ZvcnRyYW4gNzddLCBbWworICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGVuZF1dLAorCQkJICAgICAgW0ZvcnRyYW5dLCBbWworICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGVuZF1dKV0pXSwKKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzXSwKKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm9dKQorICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIl0pCisJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWZpCiAgICAgICBlbHNlCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0nbm8nCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwpAQCAtNDg5NCwxNyArNTMyMiwxNyBAQAogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiIFNJTkdMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCiAgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwogICAgICAgOzsKIAogICAgIG9zZjMqKQogICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBmaQogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCkBAIC00OTE0LDEzICs1MzQyLDEzIEBACiAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgcHJpbnRmICIlc1xcbiIgIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCisJJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCiAKIAkjIEJvdGggYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwpAQCAtNDkzMyw5ICs1MzYxLDkgQEAKICAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCiAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgogCXdsYXJjPScke3dsfScKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKICAgICAgIGVsc2UKIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KIAkqIkNvbXBpbGVycyA1LjAiKikKQEAgLTUxMTEsMzYgKzU1MzksMzggQEAKICAgICAgICMgVGVzdCB3aGV0aGVyIHRoZSBjb21waWxlciBpbXBsaWNpdGx5IGxpbmtzIHdpdGggLWxjIHNpbmNlIG9uIHNvbWUKICAgICAgICMgc3lzdGVtcywgLWxnY2MgaGFzIHRvIGNvbWUgYmVmb3JlIC1sYy4gSWYgZ2NjIGFscmVhZHkgcGFzc2VzIC1sYwogICAgICAgIyB0byBsZCwgZG9uJ3QgYWRkIC1sYyBiZWZvcmUgLWxnY2MuCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgLWxjIHNob3VsZCBiZSBleHBsaWNpdGx5IGxpbmtlZCBpbl0pCi0gICAgICAkUk0gY29uZnRlc3QqCi0gICAgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW5dLAorCVtsdF9jdl9dX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpLAorCVskUk0gY29uZnRlc3QqCisJZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CiAKLSAgICAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCi0gICAgICAgIHNvbmFtZT1jb25mdGVzdAotICAgICAgICBsaWI9Y29uZnRlc3QKLSAgICAgICAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0Ci0gICAgICAgIGRlcGxpYnM9Ci0gICAgICAgIHdsPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKQotCXBpY19mbGFnPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9LXYKLSAgICAgICAgbGlua2VyX2ZsYWdzPS12Ci0gICAgICAgIHZlcnN0cmluZz0KLSAgICAgICAgb3V0cHV0X29iamRpcj0uCi0gICAgICAgIGxpYm5hbWU9Y29uZnRlc3QKLSAgICAgICAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpCi0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KLSAgICAgICAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKLSAgICAgICAgdGhlbgotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi0gICAgICAgIGVsc2UKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLSAgICAgICAgZmkKLSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCi0gICAgICBlbHNlCi0gICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQotICAgICAgZmkKLSAgICAgICRSTSBjb25mdGVzdCoKLSAgICAgIEFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSldKQorCWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCisJICBzb25hbWU9Y29uZnRlc3QKKwkgIGxpYj1jb25mdGVzdAorCSAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0CisJICBkZXBsaWJzPQorCSAgd2w9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpCisJICBwaWNfZmxhZz0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCisJICBjb21waWxlcl9mbGFncz0tdgorCSAgbGlua2VyX2ZsYWdzPS12CisJICB2ZXJzdHJpbmc9CisJICBvdXRwdXRfb2JqZGlyPS4KKwkgIGxpYm5hbWU9Y29uZnRlc3QKKwkgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKQorCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorCSAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKKwkgIHRoZW4KKwkgICAgbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKwkgIGVsc2UKKwkgICAgbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCisJICBmaQorCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCisJZWxzZQorCSAgY2F0IGNvbmZ0ZXN0LmVyciAxPiY1CisJZmkKKwkkUk0gY29uZnRlc3QqCisJXSkKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0kbHRfY3ZfW11fTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSkKICAgICAgIDs7CiAgICAgZXNhYwogICBmaQpAQCAtNTIwNSw4ICs1NjM1LDYgQEAKICAgICB0byBydW50aW1lIHBhdGggbGlzdF0pCiBfTFRfVEFHREVDTChbXSwgW2xpbmtfYWxsX2RlcGxpYnNdLCBbMF0sCiAgICAgW1doZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllc10pCi1fTFRfVEFHREVDTChbXSwgW2ZpeF9zcmNmaWxlX3BhdGhdLCBbMV0sCi0gICAgW0ZpeCB0aGUgc2hlbGwgdmFyaWFibGUgJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlcl0pCiBfTFRfVEFHREVDTChbXSwgW2Fsd2F5c19leHBvcnRfc3ltYm9sc10sIFswXSwKICAgICBbU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkXSkKIF9MVF9UQUdERUNMKFtdLCBbZXhwb3J0X3N5bWJvbHNfY21kc10sIFsyXSwKQEAgLTUyMTcsNiArNTY0NSw4IEBACiAgICAgW1N5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZF0pCiBfTFRfVEFHREVDTChbXSwgW3ByZWxpbmtfY21kc10sIFsyXSwKICAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXNdKQorX0xUX1RBR0RFQ0woW10sIFtwb3N0bGlua19jbWRzXSwgWzJdLAorICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zXSkKIF9MVF9UQUdERUNMKFtdLCBbZmlsZV9saXN0X3NwZWNdLCBbMV0sCiAgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlc10pCiBkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKQEAgLTUzMTAsMTQgKzU3NDAsMTUgQEAKIF0pIyBfTFRfTEFOR19DX0NPTkZJRwogCiAKLSMgX0xUX1BST0dfQ1hYCi0jIC0tLS0tLS0tLS0tLQotIyBTaW5jZSBBQ19QUk9HX0NYWCBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyBnKysgaWYgdGhlcmUgaXMgbm8gYysrCi0jIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgotbTRfZGVmdW4oW19MVF9QUk9HX0NYWF0sCi1bCi1wdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2NhdWdodF9DWFhfZXJyb3I9eWVzXSkKLUFDX1BST0dfQ1hYCisjIF9MVF9MQU5HX0NYWF9DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDKysgY29tcGlsZXIgYXJlIHN1aXRhYmx5CisjIGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcgdG8gd3JpdGUKKyMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAorW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbTRfcmVxdWlyZShbX0xUX1BBVEhfTUFOSUZFU1RfVE9PTF0pZG5sCiBpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgogICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAogICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgpAQCAtNTMyNSwyMiArNTc1Niw2IEBACiBlbHNlCiAgIF9sdF9jYXVnaHRfQ1hYX2Vycm9yPXllcwogZmkKLXBvcGRlZihbQUNfTVNHX0VSUk9SXSkKLV0pIyBfTFRfUFJPR19DWFgKLQotZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgotZG5sIEFDX0RFRlVOKFtfTFRfUFJPR19DWFhdLCBbXSkKLQotCi0jIF9MVF9MQU5HX0NYWF9DT05GSUcoW1RBR10pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDKysgY29tcGlsZXIgYXJlIHN1aXRhYmx5Ci0jIGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcgdG8gd3JpdGUKLSMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgotbTRfZGVmdW4oW19MVF9MQU5HX0NYWF9DT05GSUddLAotW0FDX1JFUVVJUkUoW19MVF9QUk9HX0NYWF0pZG5sCi1tNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKLW00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKIAogQUNfTEFOR19QVVNIKEMrKykKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwpAQCAtNTM2Miw2ICs1Nzc3LDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTUzOTMsNiArNTgxMCw3IEBACiAKICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KICAgbHRfc2F2ZV9DQz0kQ0MKKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogICBsdF9zYXZlX0xEPSRMRAogICBsdF9zYXZlX0dDQz0kR0NDCiAgIEdDQz0kR1hYCkBAIC01NDEwLDYgKzU4MjgsNyBAQAogICBmaQogICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAogICBDQz0ke0NYWC0iYysrIn0KKyAgQ0ZMQUdTPSRDWFhGTEFHUwogICBjb21waWxlcj0kQ0MKICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC01NDMxLDggKzU4NTAsOCBAQAogICAgICAgIyBDaGVjayBpZiBHTlUgQysrIHVzZXMgR05VIGxkIGFzIHRoZSB1bmRlcmx5aW5nIGxpbmtlciwgc2luY2UgdGhlCiAgICAgICAjIGFyY2hpdmluZyBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhhdCBHTlUgbGQgaXMgYmVpbmcgdXNlZC4KICAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgJHBpY19mbGFnIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwogICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCkBAIC01NDY0LDcgKzU4ODMsNyBAQAogICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCiAgICAgZWxzZQogICAgICAgR1hYPW5vCkBAIC01NTczLDEwICs1OTkyLDEwIEBACiAgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCiAgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CiAgICAgICAgICAgIyBleGVjdXRhYmxlLgotICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAotICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiAkRUNITyAiWCR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iIHwgJFhzZWQ7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKICAgICAgICAgZWxzZQogICAgICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKQEAgLTU1ODUsMTQgKzYwMDQsMTkgQEAKICAgICAgICAgICBlbHNlCiAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgogCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0JICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisJICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYKFskMV0pCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCiAJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJwogCSAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKLQkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICAgICAgIyBXZSBvbmx5IHVzZSB0aGlzIGNvZGUgZm9yIEdOVSBsZHMgdGhhdCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZS4KKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICBlbHNlCisJICAgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCisJICAgIGZpCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKIAkgICAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkCiAJICAgICMgbGlicmFyaWVzLgpAQCAtNTYyMiwyOCArNjA0Niw3NSBAQAogICAgICAgICA7OwogCiAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0gICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KKwksY2wqIHwgbm8sY2wqKQorCSAgIyBOYXRpdmUgTVNWQworCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScgJworCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworCSAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSdAJworCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKwkgIGxpYmV4dD1saWIKKwkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworCSAgICBlbHNlCisJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisJICAgIGZpfgorCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisJICAgIGxpbmtuYW1lcz0nCisJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJworCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisJICAjIERvbid0IHVzZSByYW5saWIKKwkgIF9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCisJICBfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisJICAgICAgKi5leGV8Ki5FWEUpIDs7CisJICAgICAgKikKKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorCQk7OworCSAgICBlc2FjfgorCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisJICAgIGZpJworCSAgOzsKKwkqKQorCSAgIyBnKysKKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCisJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKwkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwogCi0gICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotICAgICAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSAgICAgICAgICBlbHNlCi0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotICAgICAgICAgIGZpfgotICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSAgICAgICAgZWxzZQotICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgICAgZmkKLSAgICAgICAgOzsKKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCisJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgZWxzZQorCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisJICAgIGZpfgorCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICBlbHNlCisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgIGZpCisJICA7OworCWVzYWMKKwk7OwogICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAgICAgICAgX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVMoJDEpCiAJOzsKQEAgLTU2ODUsNiArNjE1NiwxMSBAQAogICAgICAgZ251KikKICAgICAgICAgOzsKIAorICAgICAgaGFpa3UqKQorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICAgIDs7CisKICAgICAgIGhwdXg5KikKICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwogICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CkBAIC01NzA5LDExICs2MTg1LDExIEBACiAgICAgICAgICAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogICAgICAgICAgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogICAgICAgICAgICAgIyBkZXBlbmRlbmNpZXMuCi0gICAgICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEVHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisgICAgICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEVHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKICAgICAgICAgICAgIDs7CiAgICAgICAgICAgKikKICAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAogICAgICAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCkBAIC01Nzc0LDcgKzYyNTAsNyBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKIAkgICAgOzsKICAgICAgICAgICAqKQogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgpAQCAtNTc4NCwxMCArNjI2MCwxMCBAQAogCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICBpYTY0KikKLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICAqKQotCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgZXNhYwogCSAgICAgIGZpCkBAIC01ODE3LDcgKzYyOTMsNyBAQAogICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIENDKikKIAkgICAgIyBTR0kgQysrCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWFsbCAtbXVsdGlnb3QgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCiAJICAgICMgIkNDIC1hciIsIHdoZXJlICJDQyIgaXMgdGhlIElSSVggQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNTgyOCw5ICs2MzA0LDkgQEAKICAgICAgICAgICAqKQogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgogCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJICAgICAgZWxzZQotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCiAJICAgICAgZmkKIAkgICAgZmkKIAkgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCkBAIC01ODQxLDcgKzYzMTcsNyBAQAogICAgICAgICBfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT15ZXMKICAgICAgICAgOzsKIAotICAgICAgbGludXgqIHwgaypic2QqLWdudSkKKyAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICAgICBLQ0MqKQogCSAgICAjIEt1Y2sgYW5kIEFzc29jaWF0ZXMsIEluYy4gKEtBSSkgQysrIENvbXBpbGVyCkBAIC01ODU5LDcgKzYzMzUsNyBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxIHwgJEdSRVAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxIHwgJEdSRVAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKQEAgLTU4OTYsMjYgKzYzNzIsMjYgQEAKICAgICAgICAgICBwZ0NDKiB8IHBnY3BwKikKICAgICAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgQysrIGNvbXBpbGVyCiAJICAgIGNhc2UgYCRDQyAtVmAgaW4KLQkgICAgKnBnQ0NcIFtbMS01XV0qIHwgKnBnY3BwXCBbWzEtNV1dKikKKwkgICAgKnBnQ0NcIFtbMS01XV0uKiB8ICpwZ2NwcFwgW1sxLTVdXS4qKQogCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CiAJCXJtIC1yZiAkdHBsZGlyfgogCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+Ci0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgogCQkkUkFOTElCICRvbGRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KIAkJcm0gLXJmICR0cGxkaXJ+CiAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICAgICAgOzsKLQkgICAgKikgIyBWZXJzaW9uIDYgd2lsbCB1c2Ugd2VhayBzeW1ib2xzCisJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICAgICAgOzsKQEAgLTU5MjMsNyArNjM5OSw3IEBACiAKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1ycGF0aCAke3dsfSRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCiAgICAgICAgICAgICA7OwogCSAgY3h4KikKIAkgICAgIyBDb21wYXEgQysrCkBAIC01OTQyLDkgKzY0MTgsOSBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICJYJGxpc3QiIHwgJFhzZWQnCiAJICAgIDs7Ci0JICB4bCopCisJICB4bCogfCBtcGl4bCogfCBiZ3hsKikKIAkgICAgIyBJQk0gWEwgOC4wIG9uIFBQQywgd2l0aCBHTlUgbGQKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJwpAQCAtNTk2NCwxMyArNjQ0MCwxMyBAQAogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMnCiAJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKLQkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKIAkgICAgICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCiAJICAgICAgIyBOb3Qgc3VyZSB3aGV0aGVyIHNvbWV0aGluZyBiYXNlZCBvbgogCSAgICAgICMgJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEKIAkgICAgICAjIHdvdWxkIGJlIGJldHRlci4KLQkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZWNobycKKwkgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZnVuY19lY2hvX2FsbCcKIAogCSAgICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwogCSAgICAgICMgIkNDIC14YXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBTdW4gQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNjAzOSw3ICs2NTE1LDcgQEAKIAkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKIAkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJwogCSAgZmkKLQkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKwkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWZ1bmNfZWNob19hbGwKIAllbHNlCiAJICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAJZmkKQEAgLTYwNzQsMTUgKzY1NTAsMTUgQEAKIAkgICAgY2FzZSAkaG9zdCBpbgogCSAgICAgIG9zZjMqKQogCSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKIAkJOzsKIAkgICAgICAqKQogCSAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZX4KIAkgICAgICAgICAgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifgorCSAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+CiAJICAgICAgICAgICRSTSAkbGliLmV4cCcKIAkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKIAkJOzsKQEAgLTYwOTgsMTcgKzY1NzQsMTcgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiIHwgJEdSRVAgLXYgImxkOiJgOyB0ZW1wbGlzdD1gZnVuY19lY2hvX2FsbCAiJHRlbXBsaXN0IiB8ICRTRUQgInMvXCheLipsZC4qXClcKCAuKmxkLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCiAJICAgIDs7CiAJICAqKQogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAkgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICAgIG9zZjMqKQotCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJCSAgOzsKIAkgICAgICAgICopCi0JICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCiAJCSAgOzsKIAkgICAgICBlc2FjCiAKQEAgLTYxMTgsNyArNjU5NCw3IEBACiAJICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAogCSAgICBlbHNlCiAJICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CkBAIC02MTU0LDcgKzY2MzAsNyBAQAogCiAgICAgICBzb2xhcmlzKikKICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgICBDQyopCisgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQogCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCiAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKIAkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJwpAQCAtNjE3NSw3ICs2NjUxLDcgQEAKIAkgICAgZXNhYwogCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKIAotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZWNobycKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2Z1bmNfZWNob19hbGwnCiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCiAJICAgICMgIkNDIC14YXIiLCB3aGVyZSAiQ0MiIGlzIHRoZSBTdW4gQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNjE5NSwxNCArNjY3MSwxNCBAQAogCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KIAkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS16ICR7d2x9ZGVmcycKIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwogCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKIAogCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAJICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGVsc2UKIAkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKIAkgICAgICAgICMgcGxhdGZvcm0uCkBAIC02MjEzLDcgKzY2ODksNyBAQAogCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAJICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLUcgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLUcgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAtdiAiXkNvbmZpZ3VyZWQgd2l0aDoiIHwgJEdSRVAgIlwtTCInCiAJICAgICAgZmkKIAogCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICR3bCRsaWJkaXInCkBAIC02MjY3LDYgKzY3NDMsMTAgQEAKICAgICAgICAgICBDQyopCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1UcHJlbGlua19vYmplY3RzICRvbGRvYmpzfgorCSAgICAgICciJF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpIgorCSAgICBfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JyRDQyAtVHByZWxpbmtfb2JqZWN0cyAkcmVsb2FkX29ianN+CisJICAgICAgJyIkX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpIgogCSAgICA7OwogCSAgKikKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwpAQCAtNjMyMiw2ICs2ODAyLDcgQEAKICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCiAKICAgQ0M9JGx0X3NhdmVfQ0MKKyAgQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogICBMRENYWD0kTEQKICAgTEQ9JGx0X3NhdmVfTEQKICAgR0NDPSRsdF9zYXZlX0dDQwpAQCAtNjMzNiw2ICs2ODE3LDI5IEBACiBdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRwogCiAKKyMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGZ1bmNfc3RyaXBuYW1lX2NuZiBwcmVmaXggc3VmZml4IG5hbWUKKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisjCisjIFRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIHRoZSAobm9uLVhTSSkgdmVyc2lvbiBvZiBmdW5jX3N0cmlwbmFtZSwKKyMgZXhjZXB0IHRoaXMgb25lIGNhbiBiZSB1c2VkIGJ5IG00IGNvZGUgdGhhdCBtYXkgYmUgZXhlY3V0ZWQgYnkgY29uZmlndXJlLAorIyByYXRoZXIgdGhhbiB0aGUgbGlidG9vbCBzY3JpcHQuCittNF9kZWZ1bihbX0xUX0ZVTkNfU1RSSVBOQU1FX0NORl0sW2RubAorQUNfUkVRVUlSRShbX0xUX0RFQ0xfU0VEXSkKK0FDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQoreworICBjYXNlICR7Mn0gaW4KKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworICBlc2FjCit9ICMgZnVuY19zdHJpcG5hbWVfY25mCitdKSMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorCiAjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoW1RBR05BTUVdKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKQEAgLTYzNDQsNiArNjg0OCw3IEBACiAjIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KIG00X2RlZnVuKFtfTFRfU1lTX0hJRERFTl9MSUJERVBTXSwKIFttNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK0FDX1JFUVVJUkUoW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdKWRubAogIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9CkBAIC02Mzk0LDYgKzY4OTksMTMgQEAKIH07CiBfTFRfRU9GCiBdKQorCitfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCitjYXNlICIkQ0MgJENGTEFHUyAiIGluICMoCisqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKK2VzYWMKKwogZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQogZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCkBAIC02NDA1LDcgKzY5MTcsNyBAQAogICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCiAKICAgZm9yIHAgaW4gYGV2YWwgIiRvdXRwdXRfdmVyYm9zZV9saW5rX2NtZCJgOyBkbwotICAgIGNhc2UgJHAgaW4KKyAgICBjYXNlICR7cHJldn0ke3B9IGluCiAKICAgICAtTCogfCAtUiogfCAtbCopCiAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KQEAgLTY0MTQsMTMgKzY5MjYsMjIgQEAKICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgogCSBwcmV2PSRwCiAJIGNvbnRpbnVlCi0gICAgICAgZWxzZQotCSBwcmV2PQogICAgICAgIGZpCiAKKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgorICAgICAgIGlmIHRlc3QgLXogIiRwcmV2IjsgdGhlbgorICAgICAgICAgY2FzZSAkcCBpbgorICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKyAgICAgICAgIC1SKikgZnVuY19zdHJpcG5hbWVfY25mICctUicgJycgIiRwIjsgcHJldj0tUjsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworICAgICAgICAgZXNhYworICAgICAgIGZpCisgICAgICAgY2FzZSAkcCBpbgorICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisgICAgICAgZXNhYwogICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCi0JIGNhc2UgJHAgaW4KLQkgLUwqIHwgLVIqKQorCSBjYXNlICR7cHJldn0gaW4KKwkgLUwgfCAtUikKIAkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KQEAgLTY0NDAsOCArNjk2MSwxMCBAQAogCSAgIF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgogCSBmaQogICAgICAgIGZpCisgICAgICAgcHJldj0KICAgICAgICA7OwogCisgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCiAgICAgKi4kb2JqZXh0KQogICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAogICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgpAQCAtNjQ3Nyw2ICs3MDAwLDcgQEAKIGZpCiAKICRSTSAtZiBjb25mZXN0LiRvYmpleHQKK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKIAogIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KIG00X2lmKFskMV0sIFtDWFhdLApAQCAtNjUxMyw3ICs3MDM3LDcgQEAKIAogc29sYXJpcyopCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gIENDKikKKyAgQ0MqIHwgc3VuQ0MqKQogICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwogICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwogICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKQEAgLTY1NTcsMzIgKzcwODEsMTYgQEAKIF0pIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTCiAKIAotIyBfTFRfUFJPR19GNzcKLSMgLS0tLS0tLS0tLS0tCi0jIFNpbmNlIEFDX1BST0dfRjc3IGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKLSMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KLW00X2RlZnVuKFtfTFRfUFJPR19GNzddLAotWwotcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0Y3Nz15ZXNdKQotQUNfUFJPR19GNzcKLWlmIHRlc3QgLXogIiRGNzciIHx8IHRlc3QgIlgkRjc3IiA9ICJYbm8iOyB0aGVuCi0gIF9sdF9kaXNhYmxlX0Y3Nz15ZXMKLWZpCi1wb3BkZWYoW0FDX01TR19FUlJPUl0pCi1dKSMgX0xUX1BST0dfRjc3Ci0KLWRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLWRubCBBQ19ERUZVTihbX0xUX1BST0dfRjc3XSwgW10pCi0KLQogIyBfTFRfTEFOR19GNzdfQ09ORklHKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiA3NyBjb21waWxlciBhcmUKICMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwogIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfRjc3X0NPTkZJR10sCi1bQUNfUkVRVUlSRShbX0xUX1BST0dfRjc3XSlkbmwKLUFDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQorW0FDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQoraWYgdGVzdCAteiAiJEY3NyIgfHwgdGVzdCAiWCRGNzciID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRjc3PXllcworZmkKIAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CkBAIC02NjAxLDYgKzcxMDksOCBAQAogX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CiBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubwpAQCAtNjY0MCw3ICs3MTUwLDkgQEAKICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KICAgbHRfc2F2ZV9DQz0iJENDIgogICBsdF9zYXZlX0dDQz0kR0NDCisgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKICAgQ0M9JHtGNzctImY3NyJ9CisgIENGTEFHUz0kRkZMQUdTCiAgIGNvbXBpbGVyPSRDQwogICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiAgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKQEAgLTY2OTQsMzggKzcyMDYsMjQgQEAKIAogICBHQ0M9JGx0X3NhdmVfR0NDCiAgIENDPSIkbHRfc2F2ZV9DQyIKKyAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCiBmaSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllcwogCiBBQ19MQU5HX1BPUAogXSkjIF9MVF9MQU5HX0Y3N19DT05GSUcKIAogCi0jIF9MVF9QUk9HX0ZDCi0jIC0tLS0tLS0tLS0tCi0jIFNpbmNlIEFDX1BST0dfRkMgaXMgYnJva2VuLCBpbiB0aGF0IGl0IHJldHVybnMgdGhlIGVtcHR5IHN0cmluZwotIyBpZiB0aGVyZSBpcyBubyBmb3J0cmFuIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgotbTRfZGVmdW4oW19MVF9QUk9HX0ZDXSwKLVsKLXB1c2hkZWYoW0FDX01TR19FUlJPUl0sIFtfbHRfZGlzYWJsZV9GQz15ZXNdKQotQUNfUFJPR19GQwotaWYgdGVzdCAteiAiJEZDIiB8fCB0ZXN0ICJYJEZDIiA9ICJYbm8iOyB0aGVuCi0gIF9sdF9kaXNhYmxlX0ZDPXllcwotZmkKLXBvcGRlZihbQUNfTVNHX0VSUk9SXSkKLV0pIyBfTFRfUFJPR19GQwotCi1kbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6Ci1kbmwgQUNfREVGVU4oW19MVF9QUk9HX0ZDXSwgW10pCi0KLQogIyBfTFRfTEFOR19GQ19DT05GSUcoW1RBR10pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEZvcnRyYW4gY29tcGlsZXIgYXJlCiAjIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKICMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgogbTRfZGVmdW4oW19MVF9MQU5HX0ZDX0NPTkZJR10sCi1bQUNfUkVRVUlSRShbX0xUX1BST0dfRkNdKWRubAotQUNfTEFOR19QVVNIKEZvcnRyYW4pCitbQUNfTEFOR19QVVNIKEZvcnRyYW4pCisKK2lmIHRlc3QgLXogIiRGQyIgfHwgdGVzdCAiWCRGQyIgPSAiWG5vIjsgdGhlbgorICBfbHRfZGlzYWJsZV9GQz15ZXMKK2ZpCiAKIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQpAQCAtNjc0NCw2ICs3MjQyLDggQEAKIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CiBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCiBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihyZWxvYWRfZmxhZywgJDEpPSRyZWxvYWRfZmxhZworX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSRyZWxvYWRfY21kcwogX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQogX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KQEAgLTY3ODMsNyArNzI4Myw5IEBACiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCiAgIGx0X3NhdmVfQ0M9IiRDQyIKICAgbHRfc2F2ZV9HQ0M9JEdDQworICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIENDPSR7RkMtImY5NSJ9CisgIENGTEFHUz0kRkNGTEFHUwogICBjb21waWxlcj0kQ0MKICAgR0NDPSRhY19jdl9mY19jb21waWxlcl9nbnUKIApAQCAtNjgzOSw3ICs3MzQxLDggQEAKICAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCiAKICAgR0NDPSRsdF9zYXZlX0dDQwotICBDQz0iJGx0X3NhdmVfQ0MiCisgIENDPSRsdF9zYXZlX0NDCisgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKIGZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKIAogQUNfTEFOR19QT1AKQEAgLTY4NzYsMTAgKzczNzksMTIgQEAKIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKIAogIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLWx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0M9JENDCitsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiBsdF9zYXZlX0dDQz0kR0NDCiBHQ0M9eWVzCiBDQz0ke0dDSi0iZ2NqIn0KK0NGTEFHUz0kR0NKRkxBR1MKIGNvbXBpbGVyPSRDQwogX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwogX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCkBAIC02ODg5LDYgKzczOTQsOCBAQAogX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiAKIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKHJlbG9hZF9mbGFnLCAkMSk9JHJlbG9hZF9mbGFnCitfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JHJlbG9hZF9jbWRzCiAKICMjIENBVkVBVCBFTVBUT1I6CiAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQpAQCAtNjkwOCw3ICs3NDE1LDggQEAKIEFDX0xBTkdfUkVTVE9SRQogCiBHQ0M9JGx0X3NhdmVfR0NDCi1DQz0iJGx0X3NhdmVfQ0MiCitDQz0kbHRfc2F2ZV9DQworQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwogXSkjIF9MVF9MQU5HX0dDSl9DT05GSUcKIAogCkBAIC02OTQzLDkgKzc0NTEsMTEgQEAKIAogIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KIGx0X3NhdmVfQ0M9IiRDQyIKK2x0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKIGx0X3NhdmVfR0NDPSRHQ0MKIEdDQz0KIENDPSR7UkMtIndpbmRyZXMifQorQ0ZMQUdTPQogY29tcGlsZXI9JENDCiBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCiBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCkBAIC02OTU4LDcgKzc0NjgsOCBAQAogCiBHQ0M9JGx0X3NhdmVfR0NDCiBBQ19MQU5HX1JFU1RPUkUKLUNDPSIkbHRfc2F2ZV9DQyIKK0NDPSRsdF9zYXZlX0NDCitDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCiBdKSMgX0xUX0xBTkdfUkNfQ09ORklHCiAKIApAQCAtNzAxNyw2ICs3NTI4LDE1IEBACiBBQ19TVUJTVChbT0JKRFVNUF0pCiBdKQogCisjIF9MVF9ERUNMX0RMTFRPT0wKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgRExMVE9PTCB2YXJpYWJsZSBpcyBzZXQuCittNF9kZWZ1bihbX0xUX0RFQ0xfRExMVE9PTF0sCitbQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKK19MVF9ERUNMKFtdLCBbRExMVE9PTF0sIFsxXSwgW0RMTCBjcmVhdGlvbiBwcm9ncmFtXSkKK0FDX1NVQlNUKFtETExUT09MXSkKK10pCiAKICMgX0xUX0RFQ0xfU0VECiAjIC0tLS0tLS0tLS0tLQpAQCAtNzExMCw4ICs3NjMwLDggQEAKICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCiB4c2lfc2hlbGw9bm8KICggX2x0X2R1bW15PSJhL2IvYyIKLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSAgICAgID0gYyxhL2IsLCBcCisgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisgICAgICA9IGMsYS9iLGIvYywgXAogICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAogICAmJiB4c2lfc2hlbGw9eWVzCkBAIC03MTUwLDIwOCArNzY3MCwxNjIgQEAKIF0pIyBfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVMKIAogCi0jIF9MVF9QUk9HX1hTSV9TSEVMTEZOUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQm91cm5lIGFuZCBYU0kgY29tcGF0aWJsZSB2YXJpYW50cyBvZiBzb21lIHVzZWZ1bCBzaGVsbCBmdW5jdGlvbnMuCi1tNF9kZWZ1bihbX0xUX1BST0dfWFNJX1NIRUxMRk5TXSwKLVtjYXNlICR4c2lfc2hlbGwgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgY2FzZSAkezF9IGluCi0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotfQotCi0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0jIGNhbGw6Ci0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICBlc2FjCi0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLX0KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLX0KLQotIyBmdW5jX29wdF9zcGxpdAotZnVuY19vcHRfc3BsaXQgKCkKLXsKLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci19Ci0KLSMgZnVuY19sbzJvIG9iamVjdAotZnVuY19sbzJvICgpCi17Ci0gIGNhc2UgJHsxfSBpbgotICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0gIGVzYWMKLX0KLQotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotfQotCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCi17Ci0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi1mdW5jX2Rpcm5hbWUgKCkKLXsKLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCi0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgZWxzZQotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSAgZmkKLX0KLQotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKLX0KLQotZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKLWRubCBBIHBvcnRhYmxlIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IGRlZmluZWQgaW4gZ2VuZXJhbC5tNHNoCi1kbmwgc28gdGhlcmUgaXMgbm8gbmVlZCBmb3IgaXQgaGVyZS4KLQotIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi1mdW5jX3N0cmlwbmFtZSAoKQotewotICBjYXNlICR7Mn0gaW4KLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKLSAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyVcXFxcJHsyfVwkJSUiYDs7Ci0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezN9IiBcCi0gICAgICAgICAgIHwgJFhzZWQgLWUgInMlXiR7MX0lJSIgLWUgInMlJHsyfVwkJSUiYDs7Ci0gIGVzYWMKLX0KLQotIyBzZWQgc2NyaXB0czoKLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bW149XV0qPS8vJwotCi0jIGZ1bmNfb3B0X3NwbGl0Ci1mdW5jX29wdF9zcGxpdCAoKQotewotICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJG15X3NlZF9sb25nX29wdCJgCi0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfYXJnImAKLX0KLQotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbG8ybyJgCi19Ci0KLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi1mdW5jX3hmb3JtICgpCi17Ci0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgJ3MvXC5bW14uXV0qJC8ubG8vJ2AKLX0KLQotIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotZnVuY19hcml0aCAoKQotewotICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJFtAXSJgCi19Ci0KLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQotewotICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiRbMV0iIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLX0KLQotX0xUX0VPRgotZXNhYwotCi1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLSAgeWVzKQotICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLWZ1bmNfYXBwZW5kICgpCi17Ci0gIGV2YWwgIiRbMV0rPVwkWzJdIgotfQotX0xUX0VPRgotICAgIDs7Ci0gICopCi0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKLXsKLSAgZXZhbCAiJFsxXT1cJCRbMV1cJFsyXSIKLX0KLQotX0xUX0VPRgotICAgIDs7Ci0gIGVzYWMKKyMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAorIyAnXn0gRlVOQ05BTUUgJywgYW5kIHJlcGxhY2UgaXRzIGJvZHkgd2l0aCBSRVBMQUNFTUVOVC1CT0RZLgorbTRfZGVmdW4oW19MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0VdLAorW2RubCB7CitzZWQgLWUgJy9eJDEgKCkkLywvXn0gIyAkMSAvY1wKKyQxICgpXAore1wKK200X2JwYXRzdWJzdHMoWyQyXSwgWyRdLCBbXFxdLCBbXlwoWwkgXVwpXSwgW1xcXDFdKQorfSAjIEV4dGVuZGVkLXNoZWxsICQxIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CiBdKQorCisKKyMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlcGxhY2UgZXhpc3RpbmcgcG9ydGFibGUgaW1wbGVtZW50YXRpb25zIG9mIHNldmVyYWwgc2hlbGwgZnVuY3Rpb25zIHdpdGgKKyMgZXF1aXZhbGVudCBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgdGhvc2UgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZS4uCittNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCitbaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVdLCBbZG5sCisgICAgY2FzZSAkezF9IGluCisgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworICAgIGVzYWNdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYmFzZW5hbWVdLCBbZG5sCisgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZV0sIFtkbmwKKyAgICBjYXNlICR7MX0gaW4KKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisgICAgZXNhYworICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAorICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKyAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQorICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAorICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99CisgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCisKKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAorICAgIGNhc2UgJHsxfSBpbgorICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKyAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworICAgIGVzYWNdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfeGZvcm1dLCBbICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9dKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXJpdGhdLCBbICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpXSkKKworICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xlbl0sIFsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XSkKK2ZpCisKK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQorCisgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kX3F1b3RlZF0sIFtkbmwKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgorZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCisgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQorCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitlbHNlCisgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CitmaQorCitpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCitmaQorXSkKKworIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBEZXRlcm1pbmUgd2hpY2ggZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5CisjIGZ1bmNfdG9faG9zdF9maWxlIChhbmQsIGltcGxpY2l0bHksIGJ5IGZ1bmNfdG9faG9zdF9wYXRoKS4gIFRoZXNlIGFyZSBuZWVkZWQKKyMgZm9yIGNlcnRhaW4gY3Jvc3MtY29tcGlsZSBjb25maWd1cmF0aW9ucyBhbmQgbmF0aXZlIG1pbmd3LgorbTRfZGVmdW4oW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfQlVJTERdKWRubAorQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQsCitbY2FzZSAkaG9zdCBpbgorICAqLSotbWluZ3cqICkKKyAgICBjYXNlICRidWlsZCBpbgorICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgICAgICAgIDs7CisgICAgICAqLSotY3lnd2luKiApCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorICAgICAgICA7OworICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgKi0qLWN5Z3dpbiogKQorICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKyAgICAgICAgOzsKKyAgICAgICotKi1jeWd3aW4qICkKKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisgICAgICAgIDs7CisgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorICAgIDs7Citlc2FjCitdKQordG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorQUNfTVNHX1JFU1VMVChbJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWRdKQorX0xUX0RFQ0woW3RvX2hvc3RfZmlsZV9jbWRdLCBbbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0sCisgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdF0pZG5sCisKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pCitBQ19DQUNIRV9WQUwobHRfY3ZfdG9fdG9vbF9maWxlX2NtZCwKK1sjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCitsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKK2Nhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KiApCisgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICAgICAgICA7OworICAgIGVzYWMKKyAgICA7OworZXNhYworXSkKK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b190b29sX2ZpbGVfY21kXSkKK19MVF9ERUNMKFt0b190b29sX2ZpbGVfY21kXSwgW2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWRdLAorICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pZG5sCitdKSMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKZGlmZiAtLWdpdCBhL200L2x0b3B0aW9ucy5tNCBiL200L2x0b3B0aW9ucy5tNAppbmRleCAzNDE1MWEzLi4xN2NmZDUxIDEwMDY0NAotLS0gYS9tNC9sdG9wdGlvbnMubTQKKysrIGIvbTQvbHRvcHRpb25zLm00CkBAIC0xLDEzICsxLDE0IEBACiAjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KICMKLSMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKyMgICBJbmMuCiAjICAgV3JpdHRlbiBieSBHYXJ5IFYuIFZhdWdoYW4sIDIwMDQKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAorIyBzZXJpYWwgNyBsdG9wdGlvbnMubTQKIAogIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KIEFDX0RFRlVOKFtMVE9QVElPTlNfVkVSU0lPTl0sIFttNF9pZihbMV0pXSkKQEAgLTEyNSw3ICsxMjYsNyBAQAogW2VuYWJsZV93aW4zMl9kbGw9eWVzCiAKIGNhc2UgJGhvc3QgaW4KLSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotY2VnY2MqKQorKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWNlZ2NjKikKICAgQUNfQ0hFQ0tfVE9PTChBUywgYXMsIGZhbHNlKQogICBBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQogICBBQ19DSEVDS19UT09MKE9CSkRVTVAsIG9iamR1bXAsIGZhbHNlKQpAQCAtMTMzLDEzICsxMzQsMTMgQEAKIGVzYWMKIAogdGVzdCAteiAiJEFTIiAmJiBBUz1hcwotX0xUX0RFQ0woW10sIFtBU10sICAgICAgWzBdLCBbQXNzZW1ibGVyIHByb2dyYW1dKWRubAorX0xUX0RFQ0woW10sIFtBU10sICAgICAgWzFdLCBbQXNzZW1ibGVyIHByb2dyYW1dKWRubAogCiB0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi1fTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMF0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pZG5sCitfTFRfREVDTChbXSwgW0RMTFRPT0xdLCBbMV0sIFtETEwgY3JlYXRpb24gcHJvZ3JhbV0pZG5sCiAKIHRlc3QgLXogIiRPQkpEVU1QIiAmJiBPQkpEVU1QPW9iamR1bXAKLV9MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFswXSwgW09iamVjdCBkdW1wZXIgcHJvZ3JhbV0pZG5sCitfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMV0sIFtPYmplY3QgZHVtcGVyIHByb2dyYW1dKWRubAogXSkjIHdpbjMyLWRsbAogCiBBVV9ERUZVTihbQUNfTElCVE9PTF9XSU4zMl9ETExdLApkaWZmIC0tZ2l0IGEvbTQvbHR2ZXJzaW9uLm00IGIvbTQvbHR2ZXJzaW9uLm00CmluZGV4IGI4ZTE1NGYuLjljN2I1ZDQgMTAwNjQ0Ci0tLSBhL200L2x0dmVyc2lvbi5tNAorKysgYi9tNC9sdHZlcnNpb24ubTQKQEAgLTcsMTcgKzcsMTcgQEAKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIEdlbmVyYXRlZCBmcm9tIGx0dmVyc2lvbi5pbi4KKyMgQGNvbmZpZ3VyZV9pbnB1dEAKIAotIyBzZXJpYWwgMzAxMiBsdHZlcnNpb24ubTQKKyMgc2VyaWFsIDMyOTMgbHR2ZXJzaW9uLm00CiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sCiAKLW00X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi42XSkKLW00X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMwMTJdKQorbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40XSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMyOTNdKQogCiBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAotW21hY3JvX3ZlcnNpb249JzIuMi42JwotbWFjcm9fcmV2aXNpb249JzEuMzAxMicKK1ttYWNyb192ZXJzaW9uPScyLjQnCittYWNyb19yZXZpc2lvbj0nMS4zMjkzJwogX0xUX0RFQ0woLCBtYWNyb192ZXJzaW9uLCAwLCBbV2hpY2ggcmVsZWFzZSBvZiBsaWJ0b29sLm00IHdhcyB1c2VkP10pCiBfTFRfREVDTCgsIG1hY3JvX3JldmlzaW9uLCAwKQogXSkKZGlmZiAtLWdpdCBhL200L2x0fm9ic29sZXRlLm00IGIvbTQvbHR+b2Jzb2xldGUubTQKaW5kZXggNjM3YmIyMC4uYzU3M2RhOSAxMDA2NDQKLS0tIGEvbTQvbHR+b2Jzb2xldGUubTQKKysrIGIvbTQvbHR+b2Jzb2xldGUubTQKQEAgLTEsMTMgKzEsMTMgQEAKICMgbHR+b2Jzb2xldGUubTQgLS0gYWNsb2NhbCBzYXRpc2Z5aW5nIG9ic29sZXRlIGRlZmluaXRpb25zLiAgICAtKi1BdXRvY29uZi0qLQogIwotIyAgIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjICAgV3JpdHRlbiBieSBTY290dCBKYW1lcyBSZW1uYW50LCAyMDA0LgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwogIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKLSMgc2VyaWFsIDQgbHR+b2Jzb2xldGUubTQKKyMgc2VyaWFsIDUgbHR+b2Jzb2xldGUubTQKIAogIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCiAjCkBAIC03Nyw3ICs3Nyw2IEBACiBtNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NYWF0sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0NYWF0pXSkKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfRjc3XSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfRjc3XSldKQogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19HQ0pdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19HQ0pdKV0pCi1tNF9pZm5kZWYoW0FDX0xJQlRPT0xfUkNdLAkJW0FDX0RFRlVOKFtBQ19MSUJUT09MX1JDXSldKQogbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DX0NPTkZJR10pXSkKIG00X2lmbmRlZihbX0xUX0FDX0xBTkdfQ19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0NfQ09ORklHXSldKQogbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfQ1hYX0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddKV0pCkBAIC05MCwzICs4OSwxMCBAQAogbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19SQ19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX1JDX0NPTkZJR10pXSkKIG00X2lmbmRlZihbQUNfTElCVE9PTF9DT05GSUddLAkJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0NPTkZJR10pXSkKIG00X2lmbmRlZihbX0xUX0FDX0ZJTEVfTFRETExfQ10sCVtBQ19ERUZVTihbX0xUX0FDX0ZJTEVfTFRETExfQ10pXSkKK200X2lmbmRlZihbX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1NdLAlbQUNfREVGVU4oW19MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfUFJPR19DWFhDUFBdLAkJW0FDX0RFRlVOKFtfTFRfQUNfUFJPR19DWFhDUFBdKV0pCittNF9pZm5kZWYoW19MVF9QUkVQQVJFX1NFRF9RVU9URV9WQVJTXSwJW0FDX0RFRlVOKFtfTFRfUFJFUEFSRV9TRURfUVVPVEVfVkFSU10pXSkKK200X2lmbmRlZihbX0xUX1BST0dfRUNIT19CQUNLU0xBU0hdLAlbQUNfREVGVU4oW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19GNzddLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19GNzddKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0ZDXSwJCVtBQ19ERUZVTihbX0xUX1BST0dfRkNdKV0pCittNF9pZm5kZWYoW19MVF9QUk9HX0NYWF0sCQlbQUNfREVGVU4oW19MVF9QUk9HX0NYWF0pXSkKZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5pbiBiL21hbi9NYWtlZmlsZS5pbgppbmRleCA3OWYyMzZiLi4wMWZlODUyIDEwMDY0NAotLS0gYS9tYW4vTWFrZWZpbGUuaW4KKysrIGIvbWFuL01ha2VmaWxlLmluCkBAIC01NCwxMSArNTQsMTMgQEAKIEFMQVJNX0FMSUFTRVMgICA9IHNubXBfYWxhcm1fcmVnaXN0ZXIuMyBzbm1wX2FsYXJtX3JlZ2lzdGVyX2hyLjMgc25tcF9hbGFybV91bnJlZ2lzdGVyLjMKIFNFU1NJT05fQUxJQVNFUyA9IHNubXBfYXBpX2VycnN0cmluZy4zIHNubXBfY2xvc2UuMyBzbm1wX2Vycm9yLjMgICAgXAogCXNubXBfb3Blbi4zIHNubXBfcGVycm9yLjMgc25tcF9yZWFkLjMgc25tcF9zZWxlY3RfaW5mby4zICAgIFwKLQlzbm1wX3NlbmQuMyBzbm1wX3Nlc3NfcGVycm9yLjMgc25tcF90aW1lb3V0LjMKKwlzbm1wX3NlbmQuMyBzbm1wX3Nlc3NfcGVycm9yLjMgc25tcF90aW1lb3V0LjMgICAgICAgICAgICAgICBcCisJc25tcF9hc3luY19zZW5kLjMgc25tcF9zeW5jaF9yZXNwb25zZS4zCiBTU0VTU19BTElBU0VTICAgPSBzbm1wX3Nlc3NfYXN5bmNfc2VuZC4zIHNubXBfc2Vzc19jbG9zZS4zIHNubXBfc2Vzc19lcnJvci4zIFwKIAlzbm1wX3Nlc3NfaW5pdC4zIHNubXBfc2Vzc19vcGVuLjMgc25tcF9zZXNzX3JlYWQuMwkJICAgICBcCiAJc25tcF9zZXNzX3NlbGVjdF9pbmZvLjMgc25tcF9zZXNzX3NlbmQuMwkJCSAgICAgXAotCXNubXBfc2Vzc19zZXNzaW9uLjMgc25tcF9zZXNzX3RpbWVvdXQuMworCXNubXBfc2Vzc19zZXNzaW9uLjMgc25tcF9zZXNzX3RpbWVvdXQuMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwlzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2UuMwogVFJBUF9BTElBU0VTICAgID0gc2VuZF9lYXN5X3RyYXAuMyBzZW5kX3RyYXBfdmFycy4zIHNlbmRfdjJ0cmFwLjMgCiBWQVJCSU5EX0FMSUFTRVMgPSBmcHJpbnRfdmFsdWUuMyBmcHJpbnRfdmFyaWFibGUuMwlcCiAJcHJpbnRfdmFsdWUuMyBwcmludF92YXJpYWJsZS4zCQkJXApAQCAtODEsMTQgKzgzLDI2IEBACiAKIGFsbDogJChUQVJHRVRTKSBzdGFuZGFyZGFsbCBtYW5hbGlhc2VzCiAKLW1hbmFsaWFzZXM6IE1ha2VmaWxlCittYW5hbGlhc2VzOiBNYWtlZmlsZSAkKE1BTjNfQVBJKQogCXRvdWNoIG1hbmFsaWFzZXMKLQlAZm9yIGkgaW4gJChNQU4zX0FQSSkgOyBkbwkJCQkgIFwKLSAgICAgICAgICAgIGZvciBqIGluIGBzZWQgLW4gJy9eLlNIIE5BTUUvLC9eLlNIIFNZTk9QU0lTL3AnICQkaSAgfCBzZWQgLWUgJ3MvLi0gLiovLycgfCBzZWQgJ3MvLC4qLy8nICB8IEBFR1JFUEAgLXYgJ14uU0ggJyBgOyBkbyBcCisJQHJlc3VsdD0wIDsgXAorICAgICAgICBmb3IgaSBpbiAkKE1BTjNfQVBJKSA7IGRvCQkJCSAgXAorICAgICAgICAgICAgZm9yIGogaW4gYCQoU0VEKSAtbiAnL14uU0ggTkFNRS8sL14uU0ggU1lOT1BTSVMvcCcgJCRpICB8ICQoU0VEKSAtZSAncy8uLSAuKi8vJyB8ICQoU0VEKSAncy8sLiovLycgIHwgJChFR1JFUCkgLXYgJ14uU0ggJyBgOyBkbyBcCiAJCWVjaG8gIm1ha2luZyBtYW4gcGFnZSBhbGlhcyAkJGogLT4gJCRpIEFQSXMiIDsgICAgXAogCQllY2hvICIuc28gbWFuMy8kJGkiID4gJCRqLjMgOyAJCSAgXAorCQlpZiBleHByICIkKE1BTkFMSUFTRVMpIiA6ICIuKiQkalxcLjMiID4gL2Rldi9udWxsIDsgXAorCQl0aGVuIFwKKwkJICA6IDsgXAorCQllbHNlIFwKKwkJICAgIHZhcj1gZWNobyAkJGkgfCAkKFNFRCkgLWUgJ3MvXm5ldHNubXBfLy8nIC1lICdzL19hcGkuMy8vJyB8IHRyICdbYS16XScgJ1tBLVpdJ2AgOyBcCisJCSAgICBlY2hvICJZb3UgbXVzdCBhZGQgJCRqLjMgdG8gdGhlICQke3Zhcn1fQUxJQVNFUyB2YXJpYWJsZSBpbiB0aGUgTWFrZWZpbGUuaW4iIDsgXAorCQkgICAgcmVzdWx0PTEgOyBcCisJICAgICAgICBmaTsgXAogCSAgICBkb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0JZG9uZQorCWRvbmUgOyBcCisJZXhpdCAkJHJlc3VsdAorCiskKE1BTkFMSUFTRVMpOiBtYW5hbGlhc2VzCiAKIGFnZW50eHRyYXAuMTogJChzcmNkaXIpL2FnZW50eHRyYXAuMS5kZWYgLi4vc2Vkc2NyaXB0CiAJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9hZ2VudHh0cmFwLjEuZGVmID4gYWdlbnR4dHJhcC4xCkBAIC0yMzksNyArMjUzLDcgQEAKIAkgIHRvdWNoIG1pYjJjLmNvbmYuNSA7IFwKIAlmaQogCi1tYW5pbnN0YWxsOiAgbWFuaW5zdGFsbGRpcnMgJChNQU4xKSAkKE1BTjFHKSAkKE1BTjMpICQoTUFONUcpICQoTUFOOCkgJChNQU5BTElBU0VTKQorbWFuaW5zdGFsbDogIG1hbmluc3RhbGxkaXJzICQoTUFOMSkgJChNQU4xRykgJChNQU4zKSAkKE1BTjNfQVBJKSAkKE1BTjNHKSAkKE1BTjVHKSAkKE1BTjhHKSAkKE1BTkFMSUFTRVMpCiAJQGZvciBpIGluICQoTUFOMSkgOyBkbyAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL2BiYXNlbmFtZSAkJGlgICQoSU5TVEFMTF9QUkVGSVgpJChtYW4xZGlyKSA7IGVjaG8gImluc3RhbGw6ICBpbnN0YWxsZWQgJCRpIGluICQoSU5TVEFMTF9QUkVGSVgpJChtYW4xZGlyKSIgOyBkb25lCiAJQCQoSU5TVEFMTF9EQVRBKSAkKE1BTjFHKSAkKElOU1RBTExfUFJFRklYKSQobWFuMWRpcikKIAlAZm9yIGkgaW4gJChNQU4xRykgOyBkbyBlY2hvICJpbnN0YWxsOiAgaW5zdGFsbGVkICQkaSBpbiAkKElOU1RBTExfUFJFRklYKSQobWFuMWRpcikiIDsgZG9uZQpkaWZmIC0tZ2l0IGEvbWFuL2RlZmF1bHRfc3RvcmUuMy5ib3QgYi9tYW4vZGVmYXVsdF9zdG9yZS4zLmJvdAppbmRleCAxNmMwOGVlLi5lYmQyYmY2IDEwMDY0NAotLS0gYS9tYW4vZGVmYXVsdF9zdG9yZS4zLmJvdAorKysgYi9tYW4vZGVmYXVsdF9zdG9yZS4zLmJvdApAQCAtMTExLDcgKzExMSw3IEBACiBhbGxvY2F0aW9uIGZhaWx1cmUpLgogLlRQCiAuQkkgImludCBuZXRzbm1wX2RzX3JlZ2lzdGVyX3ByZW1pYih1X2NoYXIgIiB0eXBlICIsIGNvbnN0IGNoYXIgKiIgZnR5cGUgIiwgY29uc3QgY2hhciAqIiB0b2tlbiAiLCBpbnQgIiBzdG9yZSAiLCBpbnQgIiB3aGljaCAiKTsiCi1BbmFsb2dvdXMgdG8gdGhlIHByZWNlZWRpbmcgZnVuY3Rpb24sIGJ1dCB0aGUKK0FuYWxvZ291cyB0byB0aGUgcHJlY2VkaW5nIGZ1bmN0aW9uLCBidXQgdGhlCiAuSSB0b2tlbgogaXMgcHJvY2Vzc2VkIGJlZm9yZSBNSUJzIGFyZSByZWFkICh0aGlzIGlzIHRoZXJlZm9yZSB1c2VmdWwgZm9yIGNvbnRyb2xsaW5nCiBNSUIgcHJvY2Vzc2luZyBvcHRpb25zKS4KZGlmZiAtLWdpdCBhL21hbi9lbmNvZGVfa2V5Y2hhbmdlLjEuZGVmIGIvbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYKaW5kZXggNzQxNTYxNy4uMjBmNWNjMyAxMDA2NDQKLS0tIGEvbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYKKysrIGIvbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYKQEAgLTMsMTMgKzMsMTMgQEAKIGVuY29kZV9rZXljaGFuZ2UgLSBwcm9kdWNlIHRoZSBLZXlDaGFuZ2Ugc3RyaW5nIGZvciBTTk1QdjMKIC5TSCBTWU5PUFNJUwogLkIgZW5jb2RlX2tleWNoYW5nZSAKLS10IG1kNXxzaGExCitcLXQgbWQ1fHNoYTEKIFtcZklPUFRJT05TXGZSXQogLlNIIERFU0NSSVBUSU9OCiAuQiBlbmNvZGVfa2V5Y2hhbmdlCiBwcm9kdWNlcyBhIEtleUNoYW5nZSBzdHJpbmcgdXNpbmcgdGhlIG9sZCBhbmQgbmV3IHBhc3NwaHJhc2VzIAogYXMgZGVzY3JpYmVkIGluIFNlY3Rpb24gNSBvZiBSRkMgMjI3NCAiVXNlci1iYXNlZCBTZWN1cml0eSBNb2RlbCAoVVNNKSBmb3IgCi12ZXJzaW9uIDMgb2YgdGhlIFNpbXBsZSBOZXR3b3JrIE1hbmFnZW1lbnQgUHJvdG9jb2wgKFNOTVB2MykiLiBcZkItdFxmUgordmVyc2lvbiAzIG9mIHRoZSBTaW1wbGUgTmV0d29yayBNYW5hZ2VtZW50IFByb3RvY29sIChTTk1QdjMpIi4gXGZCXC10XGZSCiBvcHRpb24gaXMgbWFuZGF0b3J5IGFuZCBzcGVjaWZpZXMgdGhlIGhhc2ggdHJhbnNmb3JtIHR5cGUgdG8gdXNlLgogCiBUaGUgdHJhbnNmb3JtIGlzIHVzZWQgdG8gY29udmVydCBwYXNzcGhyYXNlIHRvIG1hc3RlciBrZXkgZm9yIGEgZ2l2ZW4KQEAgLTIwLDkgKzIwLDkgQEAKIChpbiBvcmRlciBsaXN0ZWQpOgogLklQCiBjb21tYW5kIGxpbmUgb3B0aW9ucyAoc2VlIAotLkIgLU4KKy5CIFwtTgogYW5kCi0uQiAtTworLkIgXC1PCiBvcHRpb25zIGJlbG93KTsKIC5JUAogdGhlIGZpbGUgCkBAIC0zNSw3ICszNSw3IEBACiAuU0ggT1BUSU9OUwogLlRQCiBcZkJcLUVcZlIgWzB4XTxcZkllbmdpbmVJRFxmUj4gRW5naW5lSUQgdXNlZCBmb3IgS3VsIGdlbmVyYXRpb24uCi08XGZJZW5naW5lSURcZlI+IGlzIGludGVwcmV0ZWQgYXMgYSBoZXggc3RyaW5nIHdoZW4gcHJlY2VlZGVkIGJ5IDB4LAorPFxmSWVuZ2luZUlEXGZSPiBpcyBpbnRlcHJldGVkIGFzIGEgaGV4IHN0cmluZyB3aGVuIHByZWNlZGVkIGJ5IDB4LAogb3RoZXJ3aXNlIGl0IGlzIHRyZWF0ZWQgYXMgYSB0ZXh0IHN0cmluZy4gSWYgbm8gPFxmSWVuZ2luZUlEXGZSPiBpcwogc3BlY2lmaWVkLCBpdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZSBmaXJzdCBJUCBhZGRyZXNzIGZvciB0aGUgbG9jYWwKIGhvc3QuCmRpZmYgLS1naXQgYS9tYW4vZml4cHJvYy4xLmRlZiBiL21hbi9maXhwcm9jLjEuZGVmCmluZGV4IGVmOTAwMzYuLmFlODhhM2QgMTAwNjQ0Ci0tLSBhL21hbi9maXhwcm9jLjEuZGVmCisrKyBiL21hbi9maXhwcm9jLjEuZGVmCkBAIC0yNywxMCArMjcsMTAgQEAKIGNoZWNrIHByb2Nlc3MgYWdhaW5zdCBkYXRhYmFzZSAvbG9jYWwvZXRjL2ZpeHByb2MuY29uZi4KIC5UUAogLkIgXC1raWxsCi1raWxsIHByb2Nlc3MsIHdhaXQgNSBzZWNvbmRzLCBraWxsIC05IGlmIHN0aWxsIGV4aXN0CitraWxsIHByb2Nlc3MsIHdhaXQgNSBzZWNvbmRzLCBraWxsIFwtOSBpZiBzdGlsbCBleGlzdAogLlRQCiAuQiBcLXJlc3RhcnQKLWtpbGwgcHJvY2Vzcywgd2FpdCA1IHNlY29uZHMsIGtpbGwgLTkgaWYgc3RpbGwgZXhpc3QsIHRoZW4gc3RhcnQgYWdhaW4KK2tpbGwgcHJvY2Vzcywgd2FpdCA1IHNlY29uZHMsIGtpbGwgXC05IGlmIHN0aWxsIGV4aXN0LCB0aGVuIHN0YXJ0IGFnYWluCiAuVFAKIC5CIFwtZXhpc3QKIGNoZWNrcyBpZiBwcm9jIGV4aXN0cyBpbiBwcyAmJiAobWluIDw9IG51bS4gb2YgcHJvY2Vzc2VzIDw9IG1heCkKZGlmZiAtLWdpdCBhL21hbi9taWIyYy5jb25mLjUuaW4gYi9tYW4vbWliMmMuY29uZi41LmluCmluZGV4IDdlNWEyMTAuLjM2OTJhNjUgMTAwNjQ0Ci0tLSBhL21hbi9taWIyYy5jb25mLjUuaW4KKysrIGIvbWFuL21pYjJjLmNvbmYuNS5pbgpAQCAtMSw2ICsxLDYgQEAKIC5USCBNSUIyQy5DT05GIDUgIjI4IEFwciAyMDA0IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKLW1pYjJjLmNvbmYgLS0gSG93IHRvIHdyaXRlIG1pYjJjLmNvbmYgZmlsZXMgdG8gZG8gQU5ZVEhJTkcgYmFzZWQgb24gTUlCIGlucHV0LgorbWliMmMuY29uZiBcW2VtXSBIb3cgdG8gd3JpdGUgbWliMmMuY29uZiBmaWxlcyB0byBkbyBBTllUSElORyBiYXNlZCBvbiBNSUIgaW5wdXQuCiAuU0ggU1lOT1BTSVMKICUgY2F0ID4gbWliMmMudGVzdC5jb25mICA8PCBFT0YKIEBmb3JlYWNoICR0IHRhYmxlQApAQCAtMTIsNyArMTIsNyBAQAogQGVuZEAKIEVPRgogCi0lIG1pYjJjIC1jIG1pYjJjLnRlc3QuY29uZiBpbnRlcm5ldAorJSBtaWIyYyBcLWMgbWliMmMudGVzdC5jb25mIGludGVybmV0CiAuU0ggREVTQ1JJUFRJT04KIFRoZSBtaWIyYy5jb25mIHNjcmlwdCBsYW5ndWFnZSBpcyBhIE1JQi1wYXJ0aWN1bGFyIGxhbmd1YWdlIGRlc2lnbmVkCiB0byBlYXNpbHkgcHJvY2VzcyBNSUIgbm9kZXMgaW4gd2F5cyB0aGF0IHlvdSB3YW50LiAgbWliMmMgaXMgYQpkaWZmIC0tZ2l0IGEvbWFuL25ldC1zbm1wLWNvbmZpZy4xLmRlZiBiL21hbi9uZXQtc25tcC1jb25maWcuMS5kZWYKaW5kZXggNjUyMWM5ZS4uM2EwZmEyYiAxMDA2NDQKLS0tIGEvbWFuL25ldC1zbm1wLWNvbmZpZy4xLmRlZgorKysgYi9tYW4vbmV0LXNubXAtY29uZmlnLjEuZGVmCkBAIC0xLDE3ICsxLDE3IEBACiAuVEggbmV0LXNubXAtY29uZmlnIDEgIjE2IE5vdiAyMDA2IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKLW5ldC1zbm1wLWNvbmZpZyBcLSByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGluc3RhbGxlZCBuZXQtc25tcCBsaWJyYXJpZXMgYW5kIGJpbmFyaWVzIAorbmV0XC1zbm1wXC1jb25maWcgLSByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IGluc3RhbGxlZCBuZXQtc25tcCBsaWJyYXJpZXMgYW5kIGJpbmFyaWVzIAogLlNIIFNZTk9QU0lTCiAuUFAKLS5CIG5ldC1zbm1wLWNvbmZpZworLkIgbmV0XC1zbm1wXC1jb25maWcKIFtPUFRJT05TXQogLlNIIERFU0NSSVBUSU9OCiAuUFAKLVRoZSBcZkluZXQtc25tcC1jb25maWdcZlAgc2hlbGwgc2NyaXB0IGlzIGRlc2lnbmVkIHRvIHJldHJpZXZlIHRoZQorVGhlIFxmSW5ldFwtc25tcFwtY29uZmlnXGZQIHNoZWxsIHNjcmlwdCBpcyBkZXNpZ25lZCB0byByZXRyaWV2ZSB0aGUKIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxpYnJhcmllcyBhbmQgYmluYXJpZXMgZGVhbGluZyB3aXRoCiB0aGUgU2ltcGxlIE5ldHdvcmsgTWFuYWdlbWVudCBQcm90b2NvbCAoU05NUCksIGJ1aWx0IGZyb20gdGhlIAogLkIgbmV0LXNubXAgCi1zb3VyY2UgcGFja2FnZS4gVGhlIGluZm9ybWF0aW9uIGlzIHBhcnRpY3VsYXJpbHkgdXNlZnVsIGZvcgorc291cmNlIHBhY2thZ2UuIFRoZSBpbmZvcm1hdGlvbiBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvcgogYXBwbGljYXRpb25zIHRoYXQgbmVlZCB0byBsaW5rIGFnYWluc3QgdGhlIFNOTVAgbGlicmFyaWVzIGFuZCBoZW5jZQogbXVzdCBrbm93IGFib3V0IGFueSBvdGhlciBsaWJyYXJpZXMgdGhhdCBtdXN0IGJlIGxpbmtlZCBpbiBhcyB3ZWxsLgogCkBAIC0yOSw4ICsyOSw4IEBACiAuUFAKIFNOTVAgU2V0dXAgY29tbWFuZHM6CiAuVFAKLVxmQlwtXC1jcmVhdGVcLXNubXB2M1wtdXNlclxmUiBbLXJvXSBbLWEgYXV0aHBhc3NdIFsteCBwcml2cGFzc10gWy1YIERFU3xBRVNdCi1bLUEgTUQ1fFNIQV0gW3VzZXJuYW1lXQorXGZCXC1cLWNyZWF0ZVwtc25tcHYzXC11c2VyXGZSIFtcLXJvXSBbXC1hIGF1dGhwYXNzXSBbXC14IHByaXZwYXNzXQorW1wtWCBERVN8QUVTXSBbXC1BIE1ENXxTSEFdIFt1c2VybmFtZV0KIC5QUAogVGhlc2Ugb3B0aW9ucyBwcm9kdWNlIHRoZSB2YXJpb3VzIGNvbXBpbGF0aW9uIGZsYWdzIG5lZWRlZCB3aGVuCiBidWlsZGluZyBleHRlcm5hbCBTTk1QIGFwcGxpY2F0aW9uczoKQEAgLTYzLDggKzYzLDggQEAKIEF1dG9tYXRlZCBzdWJhZ2VudCBidWlsZGluZyAocHJvZHVjZXMgYW4gT1VUUFVUTkFNRSBiaW5hcnkgZmlsZSk6CiBbVGhpcyBmZWF0dXJlIGhhcyBub3QgYmVlbiBleHRlbnNpdmVseSB0ZXN0ZWQsICB1c2UgYXQgeW91ciBvd24gcmlzay5dCiAuVFAKLVxmQlwtXC1jb21waWxlXC1zdWJhZ2VudFxmUiBPVVRQVVROQU1FIFstLW5vcm1dIFstLWNmbGFncyBmbGFnc10KLVstLWxkZmxhZ3MgZmxhZ3NdIG1pYm1vZHVsZTEuYyBbLi4uXV0KK1xmQlwtXC1jb21waWxlXC1zdWJhZ2VudFxmUiBPVVRQVVROQU1FIFtcLVwtbm9ybV0gW1wtXC1jZmxhZ3MgZmxhZ3NdCitbXC1cLWxkZmxhZ3MgZmxhZ3NdIG1pYm1vZHVsZTEuYyBbLi4uXV0KIC5UUAogXGZCXC1cLW5vcm1cZlIKIGxlYXZlIHRoZSBnZW5lcmF0ZWQgLmMgZmlsZSBhcm91bmQgdG8gcmVhZC4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2FnZW50X2FwaS4zLmRlZiBiL21hbi9uZXRzbm1wX2FnZW50X2FwaS4zLmRlZgppbmRleCA4N2RjNTQxLi4xOWVmZDAwIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9hZ2VudF9hcGkuMy5kZWYKKysrIGIvbWFuL25ldHNubXBfYWdlbnRfYXBpLjMuZGVmCkBAIC0xLDExICsxLDExIEBACiAuVEggTkVUU05NUF9BR0VOVF9BUEkgMyAiMTMgQXVnIDIwMTAiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQotbmV0c25tcF9hZ2VudF9hcGkgXC0gZW1iZWRkaW5nIGFuIGFnZW50IGludG8gYSBleHRlcm5hbCBhcHBsaWNhdGlvbgorbmV0c25tcF9hZ2VudF9hcGkgLSBlbWJlZGRpbmcgYW4gYWdlbnQgaW50byBhIGV4dGVybmFsIGFwcGxpY2F0aW9uCiAuU0ggU1lOT1BTSVMKIC5uZgotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXRcLXNubXAvbmV0XC1zbm1wXC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXRcLXNubXAvbmV0XC1zbm1wXC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldFwtc25tcC9hZ2VudC9uZXRcLXNubXBcLWFnZW50XC1pbmNsdWRlcy5oPgogCiBpbnQKIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCkBAIC00NSw3ICs0NSw3IEBACiB9CiAKIFRoZW46Ci0kKENDKSAuLi4gYG5ldC1zbm1wLWNvbmZpZyAtLWFnZW50LWxpYnNgCiskKENDKSAuLi4gYG5ldFwtc25tcFwtY29uZmlnIFwtXC1hZ2VudFwtbGlic2AKIAogLmZpCiAuU0ggREVTQ1JJUFRJT04KQEAgLTc2LDggKzc2LDggQEAKIGNvbmZpZ3VyZWQgdGhlIE5ldC1TTk1QIHBhY2thZ2Ugd2l0aCBhZ2VudHggc3VwcG9ydCAod2hpY2ggaXMgdHVybmVkCiBvbiBieSBkZWZhdWx0LCBzbyBqdXN0IGRvbid0IHR1cm4gaXQgb2ZmKQogLlBQCi1BZGRpdGlvbmFsbHksIHlvdSB3aWxsIG5lZWQgdG8gbGluayBhZ2FpbnN0IHRoZSBuZXQtc25tcCBsaWJyYXJpZXMKLSh1c2UgdGhlIG91dHB1dCBvZiAibmV0LXNubXAtY29uZmlnIC0tYWdlbnQtbGlicyIgdG8gZ2V0IGEgbGlicmFyeQorQWRkaXRpb25hbGx5LCB5b3Ugd2lsbCBuZWVkIHRvIGxpbmsgYWdhaW5zdCB0aGUgTmV0LVNOTVAgbGlicmFyaWVzCisodXNlIHRoZSBvdXRwdXQgb2YgIm5ldFwtc25tcFwtY29uZmlnIFwtXC1hZ2VudFwtbGlicyIgdG8gZ2V0IGEgbGlicmFyeQogbGlzdCkgYW5kIGNhbGwgc3ViYWdlbnRfcHJlX2luaXQoKSBhcyBpbmRpY2F0ZWQgYWJvdmUuCiAuU0ggQ09NUElMSU5HCiAuUFAKQEAgLTg2LDcgKzg2LDcgQEAKIC5TSCBGVU5DVElPTlMKIC5QUCBUaGlzIGlzIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIGZ1bmN0aW9ucyBjYWxsZWQgYWJvdmUgYW5kCiB3aGVyZSB0byBmaW5kIG91dCBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZW0uICBJdCBpcyBjZXJ0YWlubHkgbm90IGEKLWNvbXBsZXRlIGxpc3Qgb2Ygd2hhdCBpcyBhdmFpbGFibGUgd2l0aGluIGFsbCB0aGUgbmV0LXNubXAgbGlicmFyaWVzLiAKK2NvbXBsZXRlIGxpc3Qgb2Ygd2hhdCBpcyBhdmFpbGFibGUgd2l0aGluIGFsbCB0aGUgTmV0LVNOTVAgbGlicmFyaWVzLiAKIC5JUCAic25tcF9lbmFibGVfc3RkZXJybG9nKCkiCiBMb2dzIGVycm9yIG91dHB1dCBmcm9tIHRoZSBTTk1QIGFnZW50IHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0uCiAuSVAgIm5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oKSIKQEAgLTEyMywxMCArMTIzLDEwIEBACiBhbGFybSBtdXN0IGJlIHJ1biAoc2VlCiAuSVIgc25tcF9hbGFybSgzKSApLgogVGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoaXMgZnVuY3Rpb24gaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHBhY2tldHMKLXdlcmUgcHJvY2Vzc2VkLCB6ZXJvIGlmIGFuIGFsYXJtIG9jY3VycmVkIGFuZCAtMSBpZiBhbiBlcnJvciBvY2N1cmVkLgord2VyZSBwcm9jZXNzZWQsIHplcm8gaWYgYW4gYWxhcm0gb2NjdXJyZWQgYW5kIFwtMSBpZiBhbiBlcnJvciBvY2N1cmVkLgogLklQICJzbm1wX3NodXRkb3duKGNoYXIgKm5hbWUpOyIKIFRoaXMgc2h1dHMgZG93biB0aGUgYWdlbnQsIHNhdmluZyBhbnkgbmVlZGVkIHBlcnNpc3RlbnQgc3RvcmFnZSwgZXRjLgogLlNIICJTRUUgQUxTTyIKLWh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvdG9vbGtpdC8gc2VsZWN0KDIpLCBzbm1wX2FwaSgzKSwKK2h0dHA6Ly93d3cubmV0XC1zbm1wLm9yZy90dXRvcmlhbFwtNS90b29sa2l0LyBzZWxlY3QoMiksIHNubXBfYXBpKDMpLAogZGVmYXVsdF9zdG9yZSgzKSwgc25tcF9hbGFybSgzKSwgbmV0c25tcF9jb25maWdfYXBpKDMpLCBzbm1wX2NvbmZpZyg1KSwKIHNubXBkLmNvbmYoNSkKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX21pYl9hcGkuMy5kZWYgYi9tYW4vbmV0c25tcF9taWJfYXBpLjMuZGVmCmluZGV4IGNjMGQwY2IuLjJlMWRhOGYgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX21pYl9hcGkuMy5kZWYKKysrIGIvbWFuL25ldHNubXBfbWliX2FwaS4zLmRlZgpAQCAtMjEsNyArMjEsNyBAQAogZnByaW50X2Rlc2NyaXB0aW9uLAogc25wcmludF9kZXNjcmlwdGlvbiAtIG5ldHNubXBfbWliX2FwaSBmdW5jdGlvbnMKIC5TSCBTWU5PUFNJUwotLkIgI2luY2x1ZGUgPG5ldC1zbm1wL21pYl9hcGkuaD4KKy5CICNpbmNsdWRlIDxuZXRcLXNubXAvbWliX2FwaS5oPgogLlBQCiAuU1MgSW5pdGlhbGlzYXRpb24gYW5kIFNodXRkb3duCiAuQkkgImludCBhZGRfbWliZGlyKGNvbnN0IGNoYXIgKiIgImRpcm5hbWUiICk7CkBAIC0xMDQsNyArMTA0LDcgQEAKIGluIHRoYXQgZGlyZWN0b3J5LCBidXQgaXMgc2ltcGx5IGFuIGluaXRpYWxpc2F0aW9uIHN0ZXAgdG8gbWFrZQogdGhlbSBhdmFpbGFibGUgdG8KIC5CUiBuZXRzbm1wX3JlYWRfbW9kdWxlIC4KLVRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGNvdW50IG9mIGZpbGVzIGZvdW5kIGluIHRoZSBkaXJlY3RvcnksIG9yIGEgLTEKK1RoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGNvdW50IG9mIGZpbGVzIGZvdW5kIGluIHRoZSBkaXJlY3RvcnksIG9yIGEgXC0xCiBpZiB0aGVyZSBpcyBhbiBlcnJvci4gIAogSXQgc2hvdWxkIGJlIGNhbGxlZCBcZkliZWZvcmVcZlAgaW52b2tpbmcgXGZCbmV0c25tcF9pbml0X21pYlxmUC4KIC5QUApAQCAtMTgwLDcgKzE4MCw3IEBACiBpbiBNSUIgSU1QT1JUUyBjbGF1c2VzIChzdWNoIGFzIHJlZmVycmluZyB0bwogLkkgUkZDMTIxMwogaW5zdGVhZCBvZgotLklSIFJGQzEyMTMtTUlCICkuCisuSVIgUkZDMTIxM1wtTUlCICkuCiAuU1MgU2VhcmNoaW5nIHRoZSBNSUIgVHJlZQogLlBQCiAuQiByZWFkX29iamlkCkBAIC0yMzQsNyArMjM0LDcgQEAKIC5JIGJ1Zgogd2hpY2ggaXMgb2YgbGVuZ3RoCiAuSVIgbGVuIC4KLUl0IHJldHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHByaW50ZWQsIG9yIC0xIGlmIHRoZQorSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJpbnRlZCwgb3IgXC0xIGlmIHRoZQogYnVmZmVyIHdhcyBub3QgbGFyZ2UgZW5vdWdoLiAgSW4gdGhlIGxhdHRlciBjYXNlLAogLkkgYnVmCiB3aWxsIHR5cGljYWxseSBjb250YWluIGEgdHJ1bmNhdGVkIHZlcnNpb24gb2YgdGhlIGluZm9ybWF0aW9uIChidXQKQEAgLTI3Nyw3ICsyNzcsNyBAQAogLmJyCiBUaGUgZGVmYXVsdCBsaXN0IG9mIG1vZHVsZXMgd2lsbCBkZXBlbmQgb24gaG93IHRoZSBOZXQtU05NUCBzb2Z0d2FyZQogd2FzIG9yaWdpbmFsbHkgY29tcGlsZWQsIGJ1dCBpcyB0eXBpY2FsbHk6Ci1JUC1NSUI6SUYtTUlCOlRDUC1NSUI6VURQLU1JQjpTTk1QdjItTUlCOlJGQzEyMTMtTUlCOiBVQ0QtU05NUC1NSUI6SE9TVC1SRVNPVVJDRVMtTUlCCitJUFwtTUlCOklGXC1NSUI6VENQXC1NSUI6VURQXC1NSUI6U05NUHYyXC1NSUI6UkZDMTIxM1wtTUlCOiBVQ0RcLVNOTVBcLU1JQjpIT1NUXC1SRVNPVVJDRVNcLU1JQgogLklQCiBJZiB0aGUgdmFsdWUgb2YgdGhlCiAuQiBNSUJTCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zZXNzX2FwaS4zLmRlZiBiL21hbi9uZXRzbm1wX3Nlc3NfYXBpLjMuZGVmCmluZGV4IDg2NDE1MzguLjg5MDM1M2QgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3Nlc3NfYXBpLjMuZGVmCisrKyBiL21hbi9uZXRzbm1wX3Nlc3NfYXBpLjMuZGVmCkBAIC04LDYgKzgsNyBAQAogc25tcF9zZXNzX3NlbGVjdF9pbmZvLAogc25tcF9zZXNzX3JlYWQsCiBzbm1wX3Nlc3NfdGltZW91dCwKK3NubXBfc2Vzc19zeW5jaF9yZXNwb25zZSwKIHNubXBfc2Vzc19jbG9zZSwKIHNubXBfc2Vzc19lcnJvciAtIHNlc3Npb24gZnVuY3Rpb25zCiAuU0ggU1lOT1BTSVMKQEAgLTQxLDYgKzQyLDEzIEBACiAuUFAKIC5CSSAidm9pZCBzbm1wX3Nlc3NfdGltZW91dCh2b2lkICoiIGhhbmRsZSAiKTsiCiAuUFAKKy5CSSAiaW50IHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZSAoIHZvaWQgKiIgImhhbmRsZSwiCisuUlMKKy5CSSAibmV0c25tcF9wZHUgKiIgInBkdSIgIiwgIgorLmJyCisuQkkgIm5ldHNubXBfcGR1ICoqIiAicmVzcG9uc2UiICk7CisuUkUKKy5QUAogLkJJICJpbnQgc25tcF9zZXNzX2Nsb3NlKHZvaWQgKiIgaGFuZGxlICIpOyIKIC5QUAogLkJJICJ2b2lkIHNubXBfc2Vzc19lcnJvcih2b2lkICoiIGhhbmRsZSAiLCBpbnQgKiIgcGNsaWJlcnIgIiwgIgpAQCAtOTksNiArMTA3LDEyIEBACiAuUFAKIENvbnN1bHQgc25tcF9hcGkuaCBmb3IgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIHN0cnVjdHVyZXMuCiAuUFAKK1dpdGggdGhlCisuSSBzbm1wX3Nlc3NfYXN5bmNfc2VuZCgpCitjYWxsLAorLkkgc25tcF9zZXNzX3JlYWQKK3dpbGwgaW52b2tlIHRoZSBzcGVjaWZpZWQgY2FsbGJhY2sgd2hlbiB0aGUgcmVzcG9uc2UgaXMgcmVjZWl2ZWQuCisuUFAKIC5CUiBzbm1wX3Nlc3Nfc2VsZWN0X2luZm8oKSAiLCAiIHNubXBfc2Vzc19yZWFkKCkgIiBhbmQgIiBzbm1wX3Nlc3NfdGltZW91dCgpCiBwcm92aWRlIGFuIGludGVyZmFjZSBmb3IgdGhlIHVzZSBvZiB0aGUKIC5CUiBzZWxlY3QgKDIpCkBAIC0xNDgsNiArMTYyLDEzIEBACiAuQiBzbm1wX3Nlc3NfdGltZW91dCgpCiBzaG91bGQgYmUgY2FsbGVkIHRvIHNlZSBpZiBhIHRpbWVvdXQgaGFzIG9jY3VycmVkIG9uIHRoZSBTTk1QCiBzZXNzaW9uLgorLlBQCisuSSBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2UKK2lzIGEgY29udmVuaWVuY2Ugcm91dGluZSB0aGF0IHdpbGwgc2VuZCB0aGUgcmVxdWVzdCwKK3dhaXQgZm9yIHRoZSByZXNwb25zZSBhbmQgcHJvY2VzcyBpdCBiZWZvcmUgcmV0dXJuaW5nLgorU2VlIHRoZSBkZXNjcmlwdGlvbnMgb2YKKy5JICJzbm1wX3Nlc3Nfc2VuZCIgIiwgIiAic25tcF9zZXNzX3JlYWQiCitldGMgZm9yIGRldGFpbHMuCiAuU0ggRElBR05PU1RJQ1MKIC5QUAogRXJyb3IgcmV0dXJuIHN0YXR1cyBmcm9tIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc2Vzc2lvbl9hcGkuMy5kZWYgYi9tYW4vbmV0c25tcF9zZXNzaW9uX2FwaS4zLmRlZgppbmRleCA2MGI2OGQxLi5jODg5MWExIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zZXNzaW9uX2FwaS4zLmRlZgorKysgYi9tYW4vbmV0c25tcF9zZXNzaW9uX2FwaS4zLmRlZgpAQCAtMSw3ICsxLDcgQEAKIC5cIiAtKi0gbnJvZmYgLSotCi0uXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAKLS5cIiBTZWUgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlcgotLlwiIGNvcHlyaWdodHMgdGhhdCBtYXkgYXBwbHk6CisuXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAgU2VlCisuXCIgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisuXCIgdGhhdCBtYXkgYXBwbHk6CiAuXCIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIgCUNvcHlyaWdodCAxOTg5IGJ5IENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5CiAuXCIgCkBAIC0yOCw5ICsyOCwxMSBAQAogc25tcF9zZXNzX2luaXQsCiBzbm1wX29wZW4sCiBzbm1wX3NlbmQsCitzbm1wX2FzeW5jX3NlbmQsCiBzbm1wX3NlbGVjdF9pbmZvLAogc25tcF9yZWFkLAogc25tcF90aW1lb3V0LAorc25tcF9zeW5jaF9yZXNwb25zZSwKIHNubXBfY2xvc2UsCiBzbm1wX3BlcnJvciwKIHNubXBfc2Vzc19wZXJyb3IsCkBAIC01MSw2ICs1MywxNSBAQAogLkJJICJuZXRzbm1wX3BkdSAqIiAicGR1IiApOwogLlJFCiAuUFAKKy5CSSAiaW50IHNubXBfYXN5bmNfc2VuZCAoIG5ldHNubXBfc2Vzc2lvbiAqIiAic2Vzc2lvbiwiCisuUlMKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICoiIHBkdSAiLCAiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfY2FsbGJhY2sgIiBjYWxsYmFjayAiLCAiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKiIgY2FsbGJhY2tEYXRhICIpOyIKKy5SRQorLlBQCiAuQkkgImludCBzbm1wX3NlbGVjdF9pbmZvICggaW50ICogIiBudW1mZHMsICJmZF9zZXQgKiIgZmRzZXQsCiAuUlMKIC5CSSAic3RydWN0IHRpbWV2YWwgKiIgdGltZW91dCwgImludCAqIiBibG9jayApOwpAQCAtNjAsNiArNzEsMTMgQEAKIC5QUAogLkIgIHZvaWQgc25tcF90aW1lb3V0ICggdm9pZCApOwogLlBQCisuQkkgImludCBzbm1wX3N5bmNoX3Jlc3BvbnNlICggbmV0c25tcF9zZXNzaW9uICoiICJzZXNzaW9uLCIKKy5SUworLkJJICJuZXRzbm1wX3BkdSAqIiAicGR1IiAiLCAiCisuYnIKKy5CSSAibmV0c25tcF9wZHUgKioiICJyZXNwb25zZSIgKTsKKy5SRQorLlBQCiAuQkkgImludCBzbm1wX2Nsb3NlICggbmV0c25tcF9zZXNzaW9uICoiIHNlc3Npb24gKTsKIC5icgogLkIgICJpbnQgc25tcF9jbG9zZV9zZXNzaW9ucyAoIHZvaWQgKTsKQEAgLTk4LDggKzExNiwxMCBAQAogb2JqZWN0LCB3aGljaCB0aGUgYXBwbGljYXRpb24gbXVzdCB1c2UgdG8gcmVmZXJlbmNlIHRoZQogYWN0aXZlIFNOTVAgc2Vzc2lvbi4KIC5QUAotLkkgU25tcF9zZW5kCi10YWtlcyBhcyBpbnB1dCBhIHBvaW50ZXIgdG8gYQorLkkgc25tcF9zZW5kCithbmQKKy5JIHNubXBfYXN5bmNfc2VuZCgpCitlYWNoIHRha2UgYXMgaW5wdXQgYSBwb2ludGVyIHRvIGEKIC5JIG5ldHNubXBfcGR1CiBvYmplY3QuCiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBpbmZvcm1hdGlvbiB0aGF0IGRlc2NyaWJlcyBhIHRyYW5zYWN0aW9uCkBAIC0xMDcsNiArMTI3LDEyIEBACiAuUFAKIENvbnN1bHQgc25tcF9hcGkuaCBmb3IgdGhlIGRlZmluaXRpb25zIG9mIHRoZXNlIHN0cnVjdHVyZXMuCiAuUFAKK1dpdGggdGhlCisuSSBzbm1wX2FzeW5jX3NlbmQoKQorY2FsbCwKKy5JIHNubXBfcmVhZAord2lsbCBpbnZva2UgdGhlIHNwZWNpZmllZCBjYWxsYmFjayB3aGVuIHRoZSByZXNwb25zZSBpcyByZWNlaXZlZC4KKy5QUAogLkkgU25tcF9yZWFkLCBzbm1wX3NlbGVjdF9pbmZvLAogYW5kCiAuSSBzbm1wX3RpbWVvdXQKQEAgLTE1Niw2ICsxODIsMTMgQEAKIHRpbWVzIG91dCwKIC5JIHNubXBfdGltZW91dAogc2hvdWxkIGJlIGNhbGxlZCB0byBzZWUgaWYgdGhlIHRpbWVvdXQgd2FzIGludGVuZGVkIGZvciBTTk1QLgorLlBQCisuSSBzbm1wX3N5bmNoX3Jlc3BvbnNlCitpcyBhIGNvbnZlbmllbmNlIHJvdXRpbmUgdGhhdCB3aWxsIHNlbmQgdGhlIHJlcXVlc3QsCit3YWl0IGZvciB0aGUgcmVzcG9uc2UgYW5kIHByb2Nlc3MgaXQgYmVmb3JlIHJldHVybmluZy4KK1NlZSB0aGUgZGVzY3JpcHRpb25zIG9mCisuSSAic25tcF9zZW5kIiAiLCAiICJzbm1wX3JlYWQiCitldGMgZm9yIGRldGFpbHMuCiAuU0ggRElBR05PU1RJQ1MKIC5QUAogUHJldmlvdXMgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnkgdXNlZApkaWZmIC0tZ2l0IGEvbWFuL3NubXAuY29uZi41LmRlZiBiL21hbi9zbm1wLmNvbmYuNS5kZWYKaW5kZXggMmZlNTgxMC4uNDYyMDNkMCAxMDA2NDQKLS0tIGEvbWFuL3NubXAuY29uZi41LmRlZgorKysgYi9tYW4vc25tcC5jb25mLjUuZGVmCkBAIC0zNSw4ICszNSw4IEBACiAiZG9udExvYWRIb3N0Q29uZmlnIHRydWUiIGluIHlvdXIgc25tcC5jb25mIGZpbGUuCiAuU0ggQ09NTUFORC1MSU5FIE9QVElPTlMKIEFsbCBvZiB0aGUgdG9rZW5zIGRlc2NyaWJlZCBpbiB0aGlzIGZpbGUgY2FuIGJlIHVzZWQgb24gdGhlIGNvbW1hbmQKLWxpbmUgb2YgTmV0LVNOTVAgYXBwbGljYXRpb25zIGFzIHdlbGwgYnkgcHJlZml4aW5nIHRoZW0gd2l0aCAiLS0iLgotRUcsIHNwZWNpZnlpbmcgXGZJLS1kb250TG9hZEhvc3RDb25maWc9dHJ1ZVxmUiBvbiB0aGUgY29tbWFuZCBsaW5lIHdpbGwKK2xpbmUgb2YgTmV0LVNOTVAgYXBwbGljYXRpb25zIGFzIHdlbGwgYnkgcHJlZml4aW5nIHRoZW0gd2l0aCAiXC1cLSIuCitFRywgc3BlY2lmeWluZyBcZklcLVwtZG9udExvYWRIb3N0Q29uZmlnPXRydWVcZlIgb24gdGhlIGNvbW1hbmQgbGluZSB3aWxsCiB0dXJuIG9mIGxvYWRpbmcgb2YgdGhlIGhvc3Qgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlcy4KIC5TSCBJTVBPUlRBTlQgTk9URQogU2V2ZXJhbCBvZiB0aGVzZSBkaXJlY3RpdmVzIG1heSBjb250YWluIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbgpAQCAtODIsMTAgKzgyLDEwIEBACiBUQ1AgdG8gXGZJZm9vLmV4bWFwbGUuY29tXGZSIG9uIHBvcnQgOTg3Ni4KIC5JUCAiZGVmVmVyc2lvbiAoMXwyY3wzKSIKIGRlZmluZXMgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZiBTTk1QIHRvIHVzZS4KLVRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQi12XGZSIG9wdGlvbi4KK1RoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQlwtdlxmUiBvcHRpb24uCiAuSVAgImRlZkNvbW11bml0eSBTVFJJTkciCiBkZWZpbmVzIHRoZSBkZWZhdWx0IGNvbW11bml0eSB0byB1c2UgZm9yIFNOTVB2MSBhbmQgU05NUHYyYyByZXF1ZXN0cy4KLVRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQi1jXGZSIG9wdGlvbi4KK1RoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQlwtY1xmUiBvcHRpb24uCiAuXCIuSVAgImR1bXBQYWNrZXQgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiAuSVAgImFsaWFzIE5BTUUgREVGSU5JVElPTiIKIENyZWF0ZXMgYW4gYWxpYXNlZCB0aWVkIHRvIE5BTUUgZm9yIGEgZ2l2ZW4gdHJhbnNwb3J0IGRlZmluaXRpb24uICBUaGUKQEAgLTk3LDcgKzk3LDcgQEAKIC5JUCAiZHVtcFBhY2tldCB5ZXMiCiBkZWZpbmVzIHdoZXRoZXIgdG8gZGlzcGxheSBhIGhleGFkZWNpbWFsIGR1bXAgb2YgdGhlIHJhdyBTTk1QIHJlcXVlc3RzCiBzZW50IGFuZCByZWNlaXZlZCBieSB0aGUgYXBwbGljYXRpb24uCi1UaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIFxmQi1kXGZSIG9wdGlvbi4KK1RoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgXGZCXC1kXGZSIG9wdGlvbi4KIC5JUCAiZG9EZWJ1Z2dpbmcgKDF8MCkiCiB0dXJucyBvbiBkZWJ1Z2dpbmcgZm9yIGFsbCBhcHBsaWNhdGlvbnMgcnVuIGlmIHNldCB0byAxLgogLlwiCkBAIC0xMDcsNyArMTA3LDcgQEAKIC5JUCAiZGVidWdUb2tlbnMgVE9LRU5bLFRPS0VOLi4uXSIKIGRlZmluZXMgdGhlIGRlYnVnZ2luZyB0b2tlbnMgdGhhdCBzaG91bGQgYmUgdHVybmVkIG9uIHdoZW4KIFxmSWRvRGVidWdnaW5nXGZSIGlzIHNldC4KLVRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUgXGZCLURcZlIgb3B0aW9uLgorVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBcZkJcLURcZlIgb3B0aW9uLgogLlwiLklQICIxNmJpdElEcyAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIC5JUCAiMTZiaXRJRHMgeWVzIgogcmVzdHJpY3RzIHJlcXVlc3RJRHMsIGV0YyB0byAxNi1iaXQgdmFsdWVzLgpAQCAtMTQzLDcgKzE0Myw3IEBACiAuSVAgIm5vUmFuZ2VDaGVjayB5ZXMiCiBkaXNhYmxlcyB0aGUgdmFsaWRhdGlvbiBvZiB2YXJiaW5kIHZhbHVlcyBhZ2FpbnN0IHRoZSBNSUIgZGVmaW5pdGlvbgogZm9yIHRoZSByZWxldmFudCBPSUQuCi1UaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIFxmQi1JclxmUiBvcHRpb24uCitUaGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIFxmQlwtSXJcZlIgb3B0aW9uLgogLklQCiBUaGlzIGRpcmVjdGl2ZSBpcyBwcmltYXJpbHkgcmVsZXZhbnQgdG8gdGhlIFxmQnNubXBzZXRcZlIgY29tbWFuZCwKIGJ1dCB3aWxsIGFsc28gYXBwbHkgdG8gYW55IGFwcGxpY2F0aW9uIHRoYXQgY2FsbHMgXGZJc25tcF9hZGRfdmFyKClcZlIKQEAgLTE3MCwxNiArMTcwLDIwIEBACiBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgdGhlIGhvc3Qtc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUKIGxvYWRlZC4gIFNldCB0byAidHJ1ZSIgdG8gdHVybiBvZmYgdGhlIGxvYWRpbmcgb2YgdGhlIGhvc3Qgc3BlY2lmaWMKIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisuSVAgInJldHJpZXMgSU5URUdFUiIKK1NwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJldHJpZXMgdG8gYmUgdXNlZCBpbiB0aGUgcmVxdWVzdHMuCisuSVAgInRpbWVvdXQgSU5URUdFUiIKK1NwZWNpZmllcyB0aGUgdGltZW91dCBpbiBzZWNvbmRzIGJldHdlZW4gcmV0cmllcy4KIC5cIgogLlwiIFhYWCAtIEl0IGlzIHByb2JhYmx5IGFib3V0IHRpbWUgdG8gcmVtb3ZlIHRoaXMgY2hvaWNlIQogLlwiCiAuU0ggU05NUHYzIFNFVFRJTkdTCiAuSVAgImRlZlNlY3VyaXR5TmFtZSBTVFJJTkciCiBkZWZpbmVzIHRoZSBkZWZhdWx0IHNlY3VyaXR5IG5hbWUgdG8gdXNlIGZvciBTTk1QdjMgcmVxdWVzdHMuCi1UaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkItdVxmUiBvcHRpb24uCitUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkJcLXVcZlIgb3B0aW9uLgogLklQICJkZWZTZWN1cml0eUxldmVsIG5vQXV0aE5vUHJpdnxhdXRoTm9Qcml2fGF1dGhQcml2IgogZGVmaW5lcyB0aGUgZGVmYXVsdCBzZWN1cml0eSBsZXZlbCB0byB1c2UgZm9yIFNOTVB2MyByZXF1ZXN0cy4KLVRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQi1sXGZSIG9wdGlvbi4KK1RoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQlwtbFxmUiBvcHRpb24uCiAuSVAKIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIHRva2VuIGlzIFxmSW5vQXV0aE5vUHJpdlxmUi4KIC5cIgpAQCAtMTk1LDcgKzE5OSw3IEBACiAuSVAgImRlZlByaXZQYXNzcGhyYXNlIFNUUklORyIKIGRlZmluZSB0aGUgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiBhbmQgcHJpdmFjeSBwYXNzIHBocmFzZXMgdG8gdXNlCiBmb3IgU05NUHYzIHJlcXVlc3RzLgotVGhlc2UgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQi1BXGZSIGFuZCBcZkItWFxmUiBvcHRpb25zIHJlc3BlY3RpdmVseS4KK1RoZXNlIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkJcLUFcZlIgYW5kIFxmQlwtWFxmUiBvcHRpb25zIHJlc3BlY3RpdmVseS4KIC5JUAogVGhlIAogLkIgZGVmUGFzc3BocmFzZQpAQCAtMjA1LDcgKzIwOSw3IEBACiAuSVAgImRlZlByaXZUeXBlIERFU3xBRVMiCiBkZWZpbmUgdGhlIGRlZmF1bHQgYXV0aGVudGljYXRpb24gYW5kIHByaXZhY3kgcHJvdG9jb2xzIHRvIHVzZSBmb3IKIFNOTVB2MyByZXF1ZXN0cy4KLVRoZXNlIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkItYVxmUiBhbmQgXGZCLXhcZlIgb3B0aW9ucyByZXNwZWN0aXZlbHkuCitUaGVzZSBjYW4gYmUgb3ZlcnJpZGRlbiB1c2luZyB0aGUgXGZCXC1hXGZSIGFuZCBcZkJcLXhcZlIgb3B0aW9ucyByZXNwZWN0aXZlbHkuCiAuSVAKIElmIG5vdCBzcGVjaWZpZWQsIFNOTVB2MyByZXF1ZXN0cyB3aWxsIGRlZmF1bHQgdG8gTUQ1IGF1dGhlbnRpY2F0aW9uCiBhbmQgREVTIGVuY3J5cHRpb24uCkBAIC0yMTcsNyArMjIxLDcgQEAKIC5SRQogLklQICJkZWZDb250ZXh0IFNUUklORyIKIGRlZmluZXMgdGhlIGRlZmF1bHQgY29udGV4dCB0byB1c2UgZm9yIFNOTVB2MyByZXF1ZXN0cy4KLVRoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQi1uXGZSIG9wdGlvbi4KK1RoaXMgY2FuIGJlIG92ZXJyaWRkZW4gdXNpbmcgdGhlIFxmQlwtblxmUiBvcHRpb24uCiAuSVAKIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIHRva2VuIGlzIHRoZSBkZWZhdWx0IGNvbnRleHQKIChpLmUuIHRoZSBlbXB0eSBzdHJpbmcgIiIpLgpAQCAtMjM2LDcgKzI0MCw3IEBACiBub3JtYWxseSBoYXMgYmV0dGVyIGVudHJvcHkgdGhhbiBhIHBhc3N3b3JkIHVubGVzcyBpdCBpcwogYW1hemluZ2x5IGxvbmcpLgogVGhlIGRpcmVjdGl2ZXMgYXJlIGVxdWl2YWxlbnQgdG8gdGhlIHNob3J0LWZvcm0KLWNvbW1hbmQgbGluZSBvcHRpb25zIFxmQi0zbVxmUiwgXGZCLTNNXGZSLCBcZkItM2tcZlIsIGFuZCBcZkItM0tcZlIuCitjb21tYW5kIGxpbmUgb3B0aW9ucyBcZkJcLTNtXGZSLCBcZkJcLTNNXGZSLCBcZkJcLTNrXGZSLCBhbmQgXGZCXC0zS1xmUi4KIC5JUAogTG9jYWxpemVkIGtleXMgYXJlCiBtYXN0ZXIga2V5cyB3aGljaCBoYXZlIGJlZW4gY29udmVydGVkIHRvIGEgdW5pcXVlIGtleSB3aGljaCBpcyBvbmx5CkBAIC0yNTYsNiArMjYwLDEyIEBACiBwcml2aWxlZ2VkIGZvciBTU0ggdXNlcnMgdGhhdCBhcmUgYWxsb3dlZCB0byBjb25uZWN0IHRvIHRoZSBTTk1QCiBzZXJ2aWNlIChWQUNNIGFjY2VzcyBzdGlsbCBuZWVkcyB0byBiZSBncmFudGVkIGFzIHdlbGwsIG1vc3QgbGlrZWx5CiB0aHJvdWdoIHRoZSBUU00gc2VjdXJpdHkgbW9kZWwpLgorLklQICJzc2h1c2VybmFtZSBOQU1FIgorU2V0cyB0aGUgU1NIIHVzZXIgbmFtZSBmb3IgbG9nZ2luZyBpbnRvIHRoZSByZW1vdGUgc3lzdGVtLgorLklQICJzc2hwdWJrZXkgRklMRSIKK1NldCB0aGUgcHVibGljIGtleSBmaWxlIHRvIHVzZSB3aGVuIGNvbm5lY3RpbmcgdG8gYSByZW1vdGUgc3lzdGVtLgorLklQICJzc2hwcml2a2V5IEZJTEUiCitTZXQgdGhlIHByaXZhdGUga2V5IGZpbGUgdG8gdXNlIHdoZW4gY29ubmVjdGluZyB0byBhIHJlbW90ZSBzeXN0ZW0uCiAuXCIKIC5cIiBYWFggLSBhcmUgdGhlc2UgbGVuZ3RocyBzdGlsbCBjb3JyZWN0ID8KIC5cIgpAQCAtMjk2LDE4ICszMDYsMTggQEAKIC5TSCBNSUIgSEFORExJTkcKIC5JUCAibWliZGlycyBESVJMSVNUIgogc3BlY2lmaWVzIGEgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIE1JQiBmaWxlcy4KLVRoaXMgb3BlcmF0ZXMgaW4gdGhlIHNhbWUgd2F5IGFzIHRoZSBcZkItTVxmUiBvcHRpb24gLQorVGhpcyBvcGVyYXRlcyBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIFxmQlwtTVxmUiBvcHRpb24gLQogc2VlIFxmSXNubXBjbWQoMSlcZlIgZm9yIGRldGFpbHMuCiBOb3RlIHRoYXQgdGhpcyB2YWx1ZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUKIC5CIE1JQkRJUlMKLWVudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgdGhlIFxmQi1NXGZSIG9wdGlvbi4KK2Vudmlyb25tZW50IHZhcmlhYmxlLCBhbmQgdGhlIFxmQlwtTVxmUiBvcHRpb24uCiAuSVAgIm1pYnMgTUlCTElTVCIKIHNwZWNpZmllcyBhIGxpc3Qgb2YgTUlCIG1vZHVsZXMgKG5vdCBmaWxlcykgdGhhdCBzaG91bGQgYmUgbG9hZGVkLgotVGhpcyBvcGVyYXRlcyBpbiB0aGUgc2FtZSB3YXkgYXMgdGhlIFxmQi1tXGZSIG9wdGlvbiAtCitUaGlzIG9wZXJhdGVzIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgXGZCXC1tXGZSIG9wdGlvbiAtCiBzZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIE5vdGUgdGhhdCB0aGlzIGxpc3QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlCiAuQiBNSUJTCi1lbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIHRoZSBcZkItbVxmUiBvcHRpb24uCitlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIHRoZSBcZkJcLW1cZlIgb3B0aW9uLgogLklQICJtaWJmaWxlIEZJTEUiCiBzcGVjaWZpZXMgYSAoc2luZ2xlKSBNSUIgZmlsZSB0byBsb2FkLCBpbiBhZGRpdGlvbiB0byB0aGUKIGxpc3QgcmVhZCBmcm9tIHRoZSBcZkltaWJzXGZSIHRva2VuIChvciBlcXVpdmFsZW50IGNvbmZpZ3VyYXRpb24pLgpAQCAtMzE5LDcgKzMyOSw3IEBACiAuSVAgImNvbW1lbnRUb0VPTCAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIHdoZXRoZXIgTUlCIHBhcnNpbmcgc2hvdWxkIGJlIHN0cmljdCBhYm91dCBjb21tZW50IHRlcm1pbmF0aW9uLgogTWFueSBNSUIgd3JpdGVycyBhc3N1bWUgdGhhdCBBU04uMSBjb21tZW50cyBleHRlbmQgdG8gdGhlIGVuZCBvZgotdGhlIHRleHQgbGluZSwgcmF0aGVyIHRoYW4gYmVpbmcgdGVybWluYXRlZCBieSB0aGUgbmV4dCAiLS0iIHRva2VuLgordGhlIHRleHQgbGluZSwgcmF0aGVyIHRoYW4gYmVpbmcgdGVybWluYXRlZCBieSB0aGUgbmV4dCAiXC1cLSIgdG9rZW4uCiBUaGlzIHRva2VuIGNhbiBiZSB1c2VkIHRvIGFjY2VwdCBzdWNoIChzdHJpY3RseSBpbmNvcnJlY3QpIE1JQnMuCiAuYnIKIE5vdGUgdGhhdCB0aGlzIGRpcmVjdGl2ZSB3YXMgcHJldmlvdXMgKG1pcy0pbmFtZWQgXGZJc3RyaWN0Q29tbWVudFRlcm1cZlIsCkBAIC0zNDAsNDkgKzM1MCw0OSBAQAogYmVpbmcgcGFzc2VkIHRvIHRoZSBsb2dnaW5nIHJvdXRpbmVzLiAgVGhpcyBvcHRpb24gaXMgb25seSB1c2VkIHdoZW4gZmlsZSBsb2dnaW5nIGlzIGFjdGl2ZS4gCiAuSVAgInByaW50TnVtZXJpY0VudW1zICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PZSAuCisuQlIgXC1PZSAuCiAuSVAgInByaW50TnVtZXJpY09pZHMgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU9uIC4KKy5CUiBcLU9uIC4KIC5JUCAiZG9udEJyZWFrZG93bk9pZHMgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU9iIC4KKy5CUiBcLU9iIC4KIC5JUCAiZXNjYXBlUXVvdGVzICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRXF1aXZhbGVudCB0bwotLkJSIC1PRSAuCisuQlIgXC1PRSAuCiAuSVAgInF1aWNrUHJpbnRpbmcgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU9xIC4KKy5CUiBcLU9xIC4KIC5JUCAicHJpbnRWYWx1ZU9ubHkgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU92IC4KKy5CUiBcLU92IC4KIC5JUCAiZG9udFByaW50VW5pdHMgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU9VIC4KKy5CUiBcLU9VIC4KIC5JUCAibnVtZXJpY1RpbWV0aWNrcyAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT3QgLgorLkJSIFwtT3QgLgogLklQICJwcmludEhleFRleHQgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCiBFcXVpdmFsZW50IHRvCi0uQlIgLU9UIC4KKy5CUiBcLU9UIC4KIC5JUCAiaGV4T3V0cHV0TGVuZ3RoIGludGVnZXIiCiBTcGVjaWZpZXMgd2hlcmUgdG8gYnJlYWsgdXAgdGhlIG91dHB1dCBvZiBoZXhhZGVjaW1hbCBzdHJpbmdzLiAgCiBTZXQgdG8gMCB0byBkaXNhYmxlIGxpbmUgYnJlYWtzLiAgRGVmYXVsdHMgdG8gMTYuCiAuSVAgInN1ZmZpeFByaW50aW5nICgwfDF8MikiCiBUaGUgdmFsdWUgMSBpcyBlcXVpdmFsZW50IHRvCi0uQiAtT3MKKy5CIFwtT3MKIGFuZCB0aGUgdmFsdWUgMiBpcyBlcXVpdmFsZW50IHRvCi0uQlIgLU9TIC4KKy5CUiBcLU9TIC4KIC5JUCAib2lkT3V0cHV0Rm9ybWF0ICgxfDJ8M3w0fDV8NikiCi1NYXBzIC1PIG9wdGlvbnMgYXMgZm9sbG93OiAtT3M9MSwgLU9TPTIsIC1PZj0zLCAtT249NCwgLU91PTUuCi1UaGUgdmFsdWUgNiBoYXMgbm8gbWF0Y2hpbmcgLU8gb3B0aW9uLiBJdCBzdXBwcmVzc2VzIG91dHB1dC4KK01hcHMgXC1PIG9wdGlvbnMgYXMgZm9sbG93OiBcLU9zPTEsIFwtT1M9MiwgXC1PZj0zLCBcLU9uPTQsIFwtT3U9NS4KK1RoZSB2YWx1ZSA2IGhhcyBubyBtYXRjaGluZyBcLU8gb3B0aW9uLiBJdCBzdXBwcmVzc2VzIG91dHB1dC4KIC5JUCAiZXh0ZW5kZWRJbmRleCAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIEVxdWl2YWxlbnQgdG8KLS5CUiAtT1ggLgorLkJSIFwtT1ggLgogLklQICJub0Rpc3BsYXlIaW50ICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogRGlzYWJsZXMgdGhlIHVzZSBvZiBESVNQTEFZLUhJTlQgaW5mb3JtYXRpb24gd2hlbiBwYXJzaW5nIGluZGljZXMgYW5kCiB2YWx1ZXMgdG8gc2V0LiBFcXVpdmFsZW50IHRvCi0uQlIgLUloIC4KKy5CUiBcLUloIC4KIC5TSCBGSUxFUwogLklQICJTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uIGZpbGVzOiIKIFNZU0NPTkZESVIvc25tcC9zbm1wLmNvbmYKZGlmZiAtLWdpdCBhL21hbi9zbm1wYnVsa2dldC4xLmRlZiBiL21hbi9zbm1wYnVsa2dldC4xLmRlZgppbmRleCBiNGUwNjJkLi4yNTIxMGYzIDEwMDY0NAotLS0gYS9tYW4vc25tcGJ1bGtnZXQuMS5kZWYKKysrIGIvbWFuL3NubXBidWxrZ2V0LjEuZGVmCkBAIC0xNywxMyArMTcsMTMgQEAKIHBpbnBvaW50IHdoeSB0aGUgcmVxdWVzdCB3YXMgbWFsZm9ybWVkLgogLlNIIE9QVElPTlMKIC5UUCA4Ci0uQkkgLUNuIDxOVU0+CisuQkkgXC1DbiA8TlVNPgogU2V0IHRoZQogLkkgbm9uLXJlcGVhdGVycwogZmllbGQgaW4gdGhlIEdFVEJVTEsgUERVLiAgVGhpcyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBzdXBwbGllZAogdmFyaWFibGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBpdGVyYXRlZCBvdmVyLiAgVGhlIGRlZmF1bHQgaXMgMC4KIC5UUAotLkJJIC1DciA8TlVNPgorLkJJIFwtQ3IgPE5VTT4KIFNldCB0aGUKIC5JIG1heC1yZXBldGl0aW9ucwogZmllbGQgaW4gdGhlIEdFVEJVTEsgUERVLiAgVGhpcyBzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mCkBAIC00MSw3ICs0MSw3IEBACiAuU0ggRVhBTVBMRQogVGhlIGNvbW1hbmQ6CiAuUFAKLXNubXBidWxrZ2V0IC12MmMgLUNuMSAtQ3I1IC1PcyAtYyBwdWJsaWMgemV1cyBzeXN0ZW0gaWZUYWJsZQorc25tcGJ1bGtnZXQgXC12MmMgXC1DbjEgXC1DcjUgXC1PcyBcLWMgcHVibGljIHpldXMgc3lzdGVtIGlmVGFibGUKIC5QUAogd2lsbCByZXRyaWV2ZSB0aGUgdmFyaWFibGUgc3lzdGVtLnN5c0Rlc2NyLjAgKHdoaWNoIGlzIHRoZQogbGV4aWNvZ3JhcGhpY2FsbHkgbmV4dCBvYmplY3QgdG8gc3lzdGVtKSBhbmQgdGhlIGZpcnN0IDUgb2JqZWN0cyBpbgpkaWZmIC0tZ2l0IGEvbWFuL3NubXBidWxrd2Fsay4xLmRlZiBiL21hbi9zbm1wYnVsa3dhbGsuMS5kZWYKaW5kZXggZTZjN2E2OS4uYzVmNGEwNiAxMDA2NDQKLS0tIGEvbWFuL3NubXBidWxrd2Fsay4xLmRlZgorKysgYi9tYW4vc25tcGJ1bGt3YWxrLjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAotLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCi0uXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKKy5cIiB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKy5cIiB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODgsIDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTQyLDcgKzQyLDcgQEAKIC5JUiB2YXJpYWJsZXMoNSkgLgogSWYgbm8gT0lEIGFyZ3VtZW50IGlzIHByZXNlbnQsCiAuQiBzbm1wYnVsa3dhbGsKLXdpbGwgc2VhcmNoIE1JQi0yLgord2lsbCBzZWFyY2ggTUlCXC0yLgogLlBQCiBJZiB0aGUgbmV0d29yayBlbnRpdHkgaGFzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QgcGFja2V0LCBhbgogZXJyb3IgcGFja2V0IHdpbGwgYmUgcmV0dXJuZWQgYW5kIGEgbWVzc2FnZSB3aWxsIGJlIHNob3duLCBoZWxwaW5nIHRvCkBAIC01Miw3ICs1Miw3IEBACiBNSUIsIHRoZSBtZXNzYWdlICJFbmQgb2YgTUlCIiB3aWxsIGJlIGRpc3BsYXllZC4KIC5TSCBPUFRJT05TCiAuVFAgOAotLkIgLUNjCisuQiBcLUNjCiBEbyBub3QgY2hlY2sgd2hldGhlciB0aGUgcmV0dXJuZWQgT0lEcyBhcmUgaW5jcmVhc2luZy4gIFNvbWUgYWdlbnRzCiAoTGFzZXJKZXRzIGFyZSBhbiBleGFtcGxlKSByZXR1cm4gT0lEcyBvdXQgb2Ygb3JkZXIsIGJ1dCBjYW4KIGNvbXBsZXRlIHRoZSB3YWxrIGFueXdheS4gIE90aGVyIGFnZW50cyByZXR1cm4gT0lEcyB0aGF0IGFyZSBvdXQgb2YKQEAgLTYyLDEwICs2MiwxMCBAQAogLkIgc25tcGJ1bGt3YWxrCiB0cmllcyB0byBkZXRlY3QgdGhpcyBiZWhhdmlvciBhbmQgd2FybnMgeW91IHdoZW4gaXQgaGl0cyBhbiBhZ2VudAogYWN0aW5nIGlsbGVnYWxseS4gIFVzZQotLkIgLUNjCisuQiBcLUNjCiB0byB0dXJuIG9mZiB0aGlzIGJlaGF2aW91ci4KIC5UUAotLkIgLUNpCisuQiBcLUNpCiBJbmNsdWRlIHRoZSBnaXZlbiBPSUQgaW4gdGhlIHNlYXJjaCByYW5nZS4gIE5vcm1hbGx5CiAuQiBzbm1wYnVsa3dhbGsKIHVzZXMgR0VUQlVMSyByZXF1ZXN0cyBzdGFydGluZyB3aXRoIHRoZSBPSUQgeW91IHNwZWNpZmllZCBhbmQgcmV0dXJucwpAQCAtNzQsMTYgKzc0LDE2IEBACiByZXN1bHRzIGlmIGl0IGlzIGEgdmFsaWQgT0lEIGluIHRoZSB0cmVlIGl0c2VsZi4gIFRoaXMgb3B0aW9uIGxldHMgeW91CiBkbyB0aGlzLgogLlRQCi0uQkkgLUNuIDxOVU0+CisuQkkgXC1DbiA8TlVNPgogU2V0IHRoZQogLkkgbm9uLXJlcGVhdGVycwogZmllbGQgaW4gdGhlIEdFVEJVTEsgUERVcy4gIFRoaXMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2Ygc3VwcGxpZWQKIHZhcmlhYmxlcyB0aGF0IHNob3VsZCBub3QgYmUgaXRlcmF0ZWQgb3Zlci4gIFRoZSBkZWZhdWx0IGlzIDAuCiAuVFAKLS5CIC1DcAorLkIgXC1DcAogVXBvbiBjb21wbGV0aW9uIG9mIHRoZSB3YWxrLCBwcmludCB0aGUgbnVtYmVyIG9mIHZhcmlhYmxlcyBmb3VuZC4KIC5UUAotLkJJIC1DciA8TlVNPgorLkJJIFwtQ3IgPE5VTT4KIFNldCB0aGUKIC5JIG1heC1yZXBldGl0aW9ucwogZmllbGQgaW4gdGhlIEdFVEJVTEsgUERVcy4gIFRoaXMgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZgpAQCAtMTAxLDcgKzEwMSw3IEBACiAuU0ggRVhBTVBMRQogVGhlIGNvbW1hbmQ6CiAuUFAKLXNubXBidWxrd2FsayAtdjJjIC1PcyAtYyBwdWJsaWMgemV1cyBzeXN0ZW0KK3NubXBidWxrd2FsayBcLXYyYyBcLU9zIFwtYyBwdWJsaWMgemV1cyBzeXN0ZW0KIC5QUAogd2lsbCByZXRyaWV2ZSBhbGwgb2YgdGhlIHZhcmlhYmxlcyB1bmRlciBzeXN0ZW06CiAuUFAKZGlmZiAtLWdpdCBhL21hbi9zbm1wY21kLjEuZGVmIGIvbWFuL3NubXBjbWQuMS5kZWYKaW5kZXggZDk3Y2MxNC4uZTRkZjhiMiAxMDA2NDQKLS0tIGEvbWFuL3NubXBjbWQuMS5kZWYKKysrIGIvbWFuL3NubXBjbWQuMS5kZWYKQEAgLTQ5LDggKzQ5LDggQEAKIEluIGFkZGl0aW9uIHRvIHRoZSBvcHRpb25zIGRlc2NyaWJlZCBpbiB0aGlzIG1hbnVhbCBwYWdlLCBhbGwgb2YgdGhlCiB0b2tlbnMgZGVzY3JpYmVkIGluIHRoZSBcZklzbm1wLmNvbmZcZlIgYW5kIG90aGVyIC5jb25mIG1hbnVhbCBwYWdlcwogY2FuIGJlIHVzZWQgb24gdGhlIGNvbW1hbmQgbGluZSBvZiBOZXQtU05NUCBhcHBsaWNhdGlvbnMgYXMgd2VsbCBieQotcHJlZml4aW5nIHRoZW0gd2l0aCAiLS0iLiAgRUcsIHNwZWNpZnlpbmcKLVxmSS0tZG9udExvYWRIb3N0Q29uZmlnPXRydWVcZlIgb24gdGhlIGNvbW1hbmQgbGluZSB3aWxsIHR1cm4gb2YKK3ByZWZpeGluZyB0aGVtIHdpdGggIlwtXC0iLiAgRUcsIHNwZWNpZnlpbmcKK1xmSVwtXC1kb250TG9hZEhvc3RDb25maWc9dHJ1ZVxmUiBvbiB0aGUgY29tbWFuZCBsaW5lIHdpbGwgdHVybiBvZgogbG9hZGluZyBvZiB0aGUgaG9zdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGVzLgogLlBQCiBUaGUgc25tcC5jb25mIGZpbGUgc2V0dGluZ3MgYW5kIHRoZSBkb3VibGUtZGFzaCBhcmd1bWVudHMgb3Zlci1yaWRlCkBAIC02MCwxNCArNjAsMTQgQEAKIHRoZSBsb25nZXItZm9ybSBkb3VibGUtZGFzaCBhcmd1bWVudHMgdG8gc3VjY2Vzc2Z1bGx5IHRydW1wIHRoZQogXGZJc25tcC5jb25mXGZSIGZpbGUgc2V0dGluZ3MuCiAuU0ggR2VuZXJpYyBPcHRpb25zCi1UaGVzIG9wdGlvbnMgY29udHJvbCBob3cgdGhlIE5ldC1TTk1QIGNvbW1hbmRzIGJlaGF2ZSByZWdhcmRsZXNzIG9mCitUaGVzZSBvcHRpb25zIGNvbnRyb2wgaG93IHRoZSBOZXQtU05NUCBjb21tYW5kcyBiZWhhdmUgcmVnYXJkbGVzcyBvZgogd2hhdCB2ZXJzaW9uIG9mIFNOTVAgeW91IGFyZSB1c2luZy4gIFNlZSBmdXJ0aGVyIGJlbG93IGZvciBvcHRpb25zCiB0aGF0IGNvbnRyb2wgc3BlY2lmaWMgdmVyc2lvbnMgb3Igc3ViLW1vZHVsZXMgb2YgdGhlIFNOTVAgcHJvdG9jb2wuIAogLlRQCi0uQiAtZAorLkIgXC1kCiBEdW1wIChpbiBoZXhhZGVjaW1hbCkgdGhlIHJhdyBTTk1QIHBhY2tldHMgc2VudCBhbmQgcmVjZWl2ZWQuCiAuVFAKLS5CIC1EXGZJW1RPS0VOWywuLi5dXQorLkIgXC1EXGZJW1RPS0VOWywuLi5dXQogVHVybiBvbiBkZWJ1Z2dpbmcgb3V0cHV0IGZvciB0aGUgZ2l2ZW4KIC5JUiAiVE9LRU4iICIocykuIgogVHJ5CkBAIC03NSwyNCArNzUsMjQgQEAKIGZvciBleHRyZW1lbHkgdmVyYm9zZSBvdXRwdXQuCiAuVFAKIC5UUAotLkIgLWgsIC0taGVscAorLkIgXC1oLCBcLVwtaGVscAogRGlzcGxheSBhIGJyaWVmIHVzYWdlIG1lc3NhZ2UgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkIgLUgKKy5CIFwtSAogRGlzcGxheSBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBmaWxlIGRpcmVjdGl2ZXMgdW5kZXJzdG9vZCBieSB0aGUKIGNvbW1hbmQgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkJJIC1JICIgW2JyUmh1XSIKKy5CSSBcLUkgIiBbYnJSaHVdIgogU3BlY2lmaWVzIGlucHV0IHBhcnNpbmcgb3B0aW9ucy4gU2VlIAogLkIgSU5QVVQgT1BUSU9OUyAKIGJlbG93LgogLlRQCi0uQkkgLUwgIiBbZUVmRm9Pc1NdIgorLkJJIFwtTCAiIFtlRWZGb09zU10iCiBTcGVjaWZpZXMgb3V0cHV0IGxvZ2dpbmcgb3B0aW9ucy4gU2VlIAogLkIgTE9HR0lORyBPUFRJT05TIAogYmVsb3cuCiAuVFAKLS5CSSAtbSAiIE1JQkxJU1QiCisuQkkgXC1tICIgTUlCTElTVCIKIFNwZWNpZmllcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIE1JQiBtb2R1bGVzIChub3QgZmlsZXMpIHRvIGxvYWQgZm9yCiB0aGlzIGFwcGxpY2F0aW9uLiAgVGhpcyBvdmVycmlkZXMgKG9yIGF1Z21lbnRzKSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKIE1JQlMsIHRoZSBcZklzbm1wLmNvbmZcZlIgZGlyZWN0aXZlIFxmSW1pYnNcZlIsIGFuZCB0aGUgbGlzdCBvZiBNSUJzCkBAIC0xMDAsNyArMTAwLDcgQEAKIC5JUAogSWYgCiAuSSBNSUJMSVNUCi1oYXMgYSBsZWFkaW5nICctJyBvciAnKycgY2hhcmFjdGVyLCB0aGVuIHRoZSBNSUIgbW9kdWxlcyBsaXN0ZWQgYXJlCitoYXMgYSBsZWFkaW5nICdcLScgb3IgJysnIGNoYXJhY3RlciwgdGhlbiB0aGUgTUlCIG1vZHVsZXMgbGlzdGVkIGFyZQogbG9hZGVkIGluIGFkZGl0aW9uIHRvIHRoZSBkZWZhdWx0IGxpc3QsIGNvbWluZyBiZWZvcmUgb3IgYWZ0ZXIKIHRoaXMgbGlzdCByZXNwZWN0aXZlbHkuCiBPdGhlcndpc2UsIHRoZSBzcGVjaWZpZWQgTUlCcyBhcmUgbG9hZGVkIFxmSWluc3RlYWRcZlIgb2YgdGhpcwpAQCAtMTEyLDcgKzExMiw3IEBACiBFdmVyeSBmaWxlIHdob3NlIG5hbWUgZG9lcyBub3QgYmVnaW4gd2l0aCAiLiIgd2lsbCBiZSBwYXJzZWQgYXMKIGlmIGl0IHdlcmUgYSBNSUIgZmlsZS4KIC5UUAotLkJJIC1NICIgRElSTElTVCIKKy5CSSBcLU0gIiBESVJMSVNUIgogU3BlY2lmaWVzIGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBNSUJzLgogVGhpcyBvdmVycmlkZXMgKG9yIGF1Z21lbnRzKSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTUlCRElSUywKIHRoZSBcZklzbm1wLmNvbmZcZlIgZGlyZWN0aXZlIFxmSW1pYmRpcnNcZlIsIGFuZCB0aGUgZGVmYXVsdApAQCAtMTIxLDcgKzEyMSw3IEBACiAuSVAKIElmIAogLkkgRElSTElTVAotaGFzIGEgbGVhZGluZyAnLScgb3IgJysnIGNoYXJhY3RlciwgdGhlbiB0aGUgZ2l2ZW4gZGlyZWN0b3JpZXMgYXJlCitoYXMgYSBsZWFkaW5nICdcLScgb3IgJysnIGNoYXJhY3RlciwgdGhlbiB0aGUgZ2l2ZW4gZGlyZWN0b3JpZXMgYXJlCiBhZGRlZCB0byB0aGUgZGVmYXVsdCBsaXN0LCBiZWluZyBzZWFyY2hlZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlCiBkaXJlY3RvcmllcyBvbiB0aGlzIGxpc3QgcmVzcGVjdGl2ZWx5LgogT3RoZXJ3aXNlLCB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yaWVzIGFyZSBzZWFyY2hlZCBcZklpbnN0ZWFkXGZSCkBAIC0xMzUsNDYgKzEzNSw0NiBAQAogVG8gYXZvaWQgc2VhcmNoaW5nIGFueSBNSUIgZGlyZWN0b3JpZXMsIHNldCB0aGUgTUlCRElSUwogZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIGVtcHR5IHN0cmluZyAoIiIpLgogLlwiCi0uXCIgWFhYIC0gb3IgICAgIC1NICIiICAgID8/CisuXCIgWFhYIC0gb3IgICAgIFwtTSAiIiAgICA/PwogLlwiCiAKLU5vdGUgdGhhdCBNSUJzIHNwZWNpZmllZCB1c2luZyB0aGUgLW0gb3B0aW9uIG9yIHRoZSBcZkltaWJzXGZSCitOb3RlIHRoYXQgTUlCcyBzcGVjaWZpZWQgdXNpbmcgdGhlIFwtbSBvcHRpb24gb3IgdGhlIFxmSW1pYnNcZlIKIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlIHdpbGwgYmUgbG9hZGVkIGZyb20gb25lIG9mIHRoZSBkaXJlY3RvcmllcwotbGlzdGVkIGJ5IHRoZSAtTSBvcHRpb24gKG9yIGVxdWl2YWxlbnRzKS4KK2xpc3RlZCBieSB0aGUgXC1NIG9wdGlvbiAob3IgZXF1aXZhbGVudHMpLgogVGhlIFxmSW1pYmZpbGVcZlIgZGlyZWN0aXZlIHRha2VzIGEgZnVsbCBwYXRoIHRvIHRoZSBzcGVjaWZpZWQgTUlCCiBmaWxlLCBzbyB0aGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gdGhlIE1JQiBkaXJlY3Rvcnkgc2VhcmNoIGxpc3QuCiAuVFAKLS5CIC12IFxmSTFcZlIgfCBcZkkyY1xmUiB8IFxmSTMKKy5CIFwtdiBcZkkxXGZSIHwgXGZJMmNcZlIgfCBcZkkzCiBTcGVjaWZpZXMgdGhlIHByb3RvY29sIHZlcnNpb24gdG8gdXNlOiAxIChSRkNzIDExNTUtMTE1NyksIDJjIChSRkNzIDE5MDEtMTkwOCksCiBvciAzIChSRkNzIDI1NzEtMjU3NCkuICBUaGUgZGVmYXVsdCBpcyB0eXBpY2FsbHkgdmVyc2lvbiAzLgogT3ZlcnJpZGVzIHRoZSBcZklkZWZWZXJzaW9uXGZSIHRva2VuIGluIHRoZQogLkkgc25tcC5jb25mCiBmaWxlLgotLkJJIC1PICIgW2FiZUVmbnFRc1N0VHVVdnhYXSIKKy5CSSBcLU8gIiBbYWJlRWZucVFzU3RUdVV2eFhdIgogU3BlY2lmaWVzIG91dHB1dCBwcmludGluZyBvcHRpb25zLiBTZWUgCiAuQiBPVVRQVVQgT1BUSU9OUwogYmVsb3cuCiAuVFAKLS5CSSAtUCAiIFtjZGVSdXdXXSIKKy5CSSBcLVAgIiBbY2RlUnV3V10iCiBTcGVjaWZpZXMgTUlCIHBhcnNpbmcgb3B0aW9ucy4gIFNlZQogLkIgTUlCIFBBUlNJTkcgT1BUSU9OUwogYmVsb3cuCiAuVFAKLS5CSSAtciAiIHJldHJpZXMiCisuQkkgXC1yICIgcmV0cmllcyIKIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJldHJpZXMgdG8gYmUgdXNlZCBpbiB0aGUgcmVxdWVzdHMuIFRoZSBkZWZhdWx0CiBpcyA1LgogLlRQCi0uQkkgLXQgIiB0aW1lb3V0IgorLkJJIFwtdCAiIHRpbWVvdXQiCiBTcGVjaWZpZXMgdGhlIHRpbWVvdXQgaW4gc2Vjb25kcyBiZXR3ZWVuIHJldHJpZXMuIFRoZSBkZWZhdWx0IGlzIDEuCiBGbG9hdGluZyBwb2ludCBudW1iZXJzIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgZnJhY3Rpb25zIG9mIHNlY29uZHMuCiAuVFAKLS5CIC1WLCAtLXZlcnNpb24KKy5CIFwtViwgXC1cLXZlcnNpb24KIERpc3BsYXkgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CSSAtWSAibmFtZSI9InZhbHVlIgorLkJJIFwtWSAibmFtZSI9InZhbHVlIgogLlRQCi0uQkkgLS0gIm5hbWUiPSJ2YWx1ZSIKLUFsbG93cyB0byBzcGVjaWZ5IGFueSB0b2tlbiAoIm5hbWUiKSBzdXBwb3J0ZWQgaW4gdGhlCisuQkkgXC1cLSAibmFtZSI9InZhbHVlIgorQWxsb3dzIG9uZSB0byBzcGVjaWZ5IGFueSB0b2tlbiAoIm5hbWUiKSBzdXBwb3J0ZWQgaW4gdGhlCiAuSSBzbm1wLmNvbmYKIGZpbGUgYW5kIHNldHMgaXRzIHZhbHVlIHRvICJ2YWx1ZSIuIE92ZXJyaWRlcyB0aGUgY29ycmVzcG9uZGluZyB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgpAQCAtMTg5LDcgKzE4OSw3IEBACiAoRClUTFMgc3VwcG9ydC4KIAogLlRQCi0uQkkgLWwgIiBzZWNMZXZlbCIKKy5CSSBcLWwgIiBzZWNMZXZlbCIKIFNldCB0aGUgc2VjdXJpdHlMZXZlbCB1c2VkIGZvciBTTk1QdjMgbWVzc2FnZXMKIChub0F1dGhOb1ByaXZ8YXV0aE5vUHJpdnxhdXRoUHJpdikuICBBcHByb3ByaWF0ZSBwYXNzIHBocmFzZShzKSBtdXN0CiBwcm92aWRlZCB3aGVuIHVzaW5nIGFueSBsZXZlbCBoaWdoZXIgdGhhbiBub0F1dGhOb1ByaXYuCkBAIC0xOTcsNyArMTk3LDcgQEAKIC5JIHNubXAuY29uZgogZmlsZS4KIC5UUAotLkJJIC1uICIgY29udGV4dE5hbWUiCisuQkkgXC1uICIgY29udGV4dE5hbWUiCiBTZXQgdGhlIGNvbnRleHROYW1lIHVzZWQgZm9yIFNOTVB2MyBtZXNzYWdlcy4gIFRoZSBkZWZhdWx0CiBjb250ZXh0TmFtZSBpcyB0aGUgZW1wdHkgc3RyaW5nICIiLiAgT3ZlcnJpZGVzIHRoZSBcZklkZWZDb250ZXh0XGZSIHRva2VuCiBpbiB0aGUKQEAgLTIxNywzOSArMjE3LDM5IEBACiBpdCB3aWxsIGxvb2sgaW4gfi8uc25tcC90bHMgYW5kIGluIC91c3IvbG9jYWwvc2hhcmUvc25tcC90bHMgZm9yCiBjZXJ0aWZpY2F0ZXMuICBUaGUgY2VydGlmaWNhdGUgY29tcG9uZW50cyAoZWcsIHRoZSBwdWJsaWMgYW5kIHByaXZhdGUKIGhhbHZlcykgYXJlIHN0b3JlZCBpbiBzdWItZGlyZWN0b3JpZXMgdW5kZXJuZWF0aCB0aGlzIHJvb3Qgc2V0IG9mCi1kaXJlY3Rvcmllcy4gIFNlZSB0aGUgbmV0LXNubXAtY2VydCB0b29sIGZvciBoZWxwIGluIGltcG9ydGluZywKK2RpcmVjdG9yaWVzLiAgU2VlIHRoZSBuZXRcLXNubXBcLWNlcnQgdG9vbCBmb3IgaGVscCBpbiBpbXBvcnRpbmcsCiBjcmVhdGluZyBhbmQgbWFuYWdpbmcgTmV0LVNOTVAgY2VydGlmaWNhdGVzLgogLkkgIjxjZXJ0aWZpY2F0ZS1zcGVjaWZpZXI+cyIKIGNhbiByZWZlcmVuY2UgZWl0aGVyIGEgZmluZ2VycHJpbnQgb2YgdGhlIGNlcnRpZmljYXRlIHRvIHVzZSAodGhlCi1uZXQtc25tcC1jZXJ0IHRvb2wgY2FuIGhlbHAgeW91IGZpZ3VyZSBvdXQgdGhlIGNlcnRpZmljYXRlcykgb3IgdGhlCituZXRcLXNubXBcLWNlcnQgdG9vbCBjYW4gaGVscCB5b3UgZmlndXJlIG91dCB0aGUgY2VydGlmaWNhdGVzKSBvciB0aGUKIGZpbGVuYW1lJ3MgcHJlZml4IGNhbiBiZSB1c2VkLiAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYWQgYSAic25tcGQuY3J0IgogY2VydGlmaWNhdGUgZmlsZSB0aGVuIHlvdSBjb3VsZCBzaW1wbHkgcmVmZXIgdG8gdGhlIGNlcnRpZmljYXRlIHZpYQogdGhlICJzbm1wZCIgc3BlY2lmaWVyLgogLlRQCi0uQkkgIi1UIG91cl9pZGVudGl0eT08Y2VydGlmaWNhdGUtc3BlY2lmaWVyPiIKKy5CSSAiXC1UIGxvY2FsQ2VydD08Y2VydGlmaWNhdGUtc3BlY2lmaWVyPiIKIEluZGljYXRlcyB0byB0aGUgdHJhbnNwb3J0IHdoaWNoIGtleSBzaG91bGQgYmUgdXNlZCB0byBpbml0aWF0ZSAoRClUTFMKIGNsaWVudCBjb25uZWN0aW9ucy4gIFRoaXMgd291bGQgdHlwaWNhbGx5IGJlIGEgY2VydGlmaWNhdGUgZm91bmQgdXNpbmcKLXRoZSBhcHBsaWNhdGlvbiBuYW1lIChlZyBzbm1wZCwgc25tcHRyYXBkLCBwZXJsLCBweXRob24pIG9yCit0aGUgY2VydGlmaWNhdGUgZmluZ2VycHJpbnQsIHRoZSBhcHBsaWNhdGlvbiBuYW1lIChlZyBzbm1wZCwgc25tcHRyYXBkLCBwZXJsLCBweXRob24pIG9yCiBnZW5lcmljaXplZCBuYW1lICJzbm1wYXBwIiBpZiB1c2luZyBvbmUgb2YgdGhlIGdlbmVyaWMgYXBwbGljYXRpb25zCiAoc25tcGdldCwgc25tcHdhbGssIGV0YykuICBUaGlzIGNhbiBhbHNvIGJlIHNldCB1c2luZyB0aGUKLWNsaWVudENlcnQgc3BlY2lmaWVyIGluIGEgc25tcC5jb25mIGNvbmZpZ3VyYXRpb24gZmlsZS4KK2xvY2FsQ2VydCBzcGVjaWZpZXIgaW4gYSBzbm1wLmNvbmYgY29uZmlndXJhdGlvbiBmaWxlLgogLlRQCi0uQkkgIi1UIHRoZWlyX2lkZW50aXR5PTxjZXJ0aWZpY2F0ZS1zcGVjaWZpZXI+IgorLkJJICJcLVQgcGVlckNlcnQ9PGNlcnRpZmljYXRlLXNwZWNpZmllcj4iCiBJZiB5b3UgZXhwZWN0IGEgcGFydGljdWxhciBjZXJ0aWZpY2F0ZSB0byBiZSBwcmVzZW50ZWQgYnkgdGhlIG90aGVyCiBzaWRlIHRoZW4geW91IGNhbiB1c2UgdGhpcyBzcGVjaWZpZXIgdG8gaW5kaWNhdGUgdGhlIGNlcnRpZmljYXRlIGl0CiBzaG91bGQgcHJlc2VudC4gIElmIGl0IGZhaWxzIHRvIHByZXNlbnQgdGhlIGV4cGVjdGVkIGNlcnRpZmljYXRlIHRoZQogY2xpZW50IHdpbGwgcmVmdXNlIHRvIG9wZW4gdGhlIGNvbm5lY3Rpb24gKGJlY2F1c2UgZG9pbmcgb3RoZXJ3aXNlCiBjb3VsZCBsZWFkIHRvIG1hbi1pbi10aGUtbWlkZGxlIGF0dGFja3MpLiAgVGhpcyBjYW4gYWxzbyBiZSBzZXQgdXNpbmcKLXRoZSBzZXJ2ZXJDZXJ0IHNwZWNpZmllciBpbiBhIHNubXAuY29uZiBjb25maWd1cmF0aW9uIGZpbGUuCit0aGUgcGVlckNlcnQgc3BlY2lmaWVyIGluIGEgc25tcC5jb25mIGNvbmZpZ3VyYXRpb24gZmlsZS4KIC5UUAotLkJJICItVCB0cnVzdF9jZXJ0PTxjZXJ0aWZpY2F0ZS1zcGVjaWZpZXI+IgorLkJJICJcLVQgdHJ1c3RfY2VydD08Y2VydGlmaWNhdGUtc3BlY2lmaWVyPiIKIElmIHlvdSBoYXZlIGEgdHJ1c3RlZCBDQSBjZXJ0aWZpY2F0ZSB5b3Ugd2lzaCB0byBhbmNob3IgdHJ1c3Qgd2l0aCwKIHlvdSBjYW4gdXNlIHRoaXMgZmxhZyB0byBsb2FkIGEgZ2l2ZW4gY2VydGlmaWNhdGUgYXMgYSB0cnVzdCBhbmNob3IuCiBBIGNvcHkgb2YgdGhlIGNlcnRpZmljYXRlIG11c3QgZXhpc3Qgd2l0aGluIHRoZSBOZXQtU05NUCBjZXJ0aWZpY2F0ZQogc3RvcmFnZSBzeXN0ZW0gb3IgdGhpcyBtdXN0IHBvaW50IHRvIGEgY29tcGxldGUgcGF0aCBuYW1lLiAgQWxzbyBzZWUKIHRoZSAidHJ1c3RDZXJ0IiBzbm1wLmNvbmYgY29uZmlndXJhdGlvbiB0b2tlbi4KIC5UUAotLkJJICItVCB0aGVpcl9ob3N0bmFtZT08bmFtZT4iCisuQkkgIlwtVCB0aGVpcl9ob3N0bmFtZT08bmFtZT4iCiBJZiB0aGUgc2VydmVyJ3MgcHJlc2VudGVkIGNlcnRpZmljYXRlIGNhbiBiZSB2YWxpZGF0aW5nIHVzaW5nIGEgdHJ1c3QKIGFuY2hvciB0aGVuIHRoZWlyIGhvc3RuYW1lIHdpbGwgYmUgY2hlY2tlZCB0byBlbnN1cmUgdGhlaXIgcHJlc2VudGVkCiBob3N0bmFtZSBtYXRjaGVzIG9uZSB0aGF0IGlzIGV4cGVjdGVkICh5b3UgZG9uJ3Qgd2FudCB0byBjb25uZWN0IHRvCkBAIC0yNjIsMjkgKzI2MiwyOSBAQAogVGhlc2Ugb3B0aW9ucyBhcmUgc3BlY2lmaWMgdG8gdXNpbmcgU05NUHYzIHdpdGggdGhlIG9yaWdpbmFsCiBVc2VyLWJhc2VkIFNlY3VyaXR5IE1vZGVsIChVU00pLgogLlRQCi0uQkkgIi0zW01tS2tdICAweEhFWEtFWSIKKy5CSSAiXC0zW01tS2tdICAweEhFWEtFWSIKIFNldHMgdGhlIGtleXMgdG8gYmUgdXNlZCBmb3IgU05NUHYzIHRyYW5zYWN0aW9ucy4gIFRoZXNlIG9wdGlvbnMgYWxsb3cKLXlvdSB0byBzZXQgdGhlIG1hc3RlciBhdXRoZW50aWNhdGlvbiBhbmQgZW5jcnlwdGlvbiBrZXlzICgtM20gYW5kIC0zTQoreW91IHRvIHNldCB0aGUgbWFzdGVyIGF1dGhlbnRpY2F0aW9uIGFuZCBlbmNyeXB0aW9uIGtleXMgKFwtM20gYW5kIFwtM00KIHJlc3BlY3RpdmVseSkgb3Igc2V0IHRoZSBsb2NhbGl6ZWQgYXV0aGVudGljYXRpb24gYW5kIGVuY3J5cHRpb24ga2V5cwotKC0zayBhbmQgLTNLIHJlc3BlY3RpdmVseSkuICBTTk1QdjMga2V5cyBjYW4gYmUgZWl0aGVyIHBhc3NlZCBpbiBieQorKFwtM2sgYW5kIFwtM0sgcmVzcGVjdGl2ZWx5KS4gIFNOTVB2MyBrZXlzIGNhbiBiZSBlaXRoZXIgcGFzc2VkIGluIGJ5CiBoYW5kIHVzaW5nIHRoZXNlIGZsYWdzLCBvciBieSB0aGUgdXNlIG9mIGtleXMgZ2VuZXJhdGVkIGZyb20gcGFzc3dvcmRzCi11c2luZyB0aGUgLUEgYW5kIC1YIGZsYWdzIGRpc2N1c3NlZCBiZWxvdy4gIEZvciBmdXJ0aGVyIGRldGFpbHMgb24KK3VzaW5nIHRoZSBcLUEgYW5kIFwtWCBmbGFncyBkaXNjdXNzZWQgYmVsb3cuICBGb3IgZnVydGhlciBkZXRhaWxzIG9uCiBTTk1QdjMgYW5kIGl0cyB1c2FnZSBvZiBrZXlpbmcgaW5mb3JtYXRpb24sIHNlZSB0aGUgTmV0LVNOTVAgdHV0b3JpYWwKLXdlYiBzaXRlICggaHR0cDovL3d3dy5OZXQtU05NUC5vcmcvdHV0b3JpYWwtNS9jb21tYW5kcy8gKS4gCi1PdmVycmlkZXMgdGhlIGRlZkF1dGhNYXN0ZXJLZXkgKC0zbSksIGRlZlByaXZNYXN0ZXJLZXkgKC0zTSksIAotZGVmQXV0aExvY2FsaXplZEtleSAoLTNrKSBvciBkZWZQcml2TG9jYWxpemVkS2V5ICgtM0spIHRva2VucywgcmVzcGVjdGl2ZWx5LCAKK3dlYiBzaXRlICggaHR0cDovL3d3dy5OZXRcLVNOTVAub3JnL3R1dG9yaWFsXC01L2NvbW1hbmRzLyApLiAKK092ZXJyaWRlcyB0aGUgZGVmQXV0aE1hc3RlcktleSAoXC0zbSksIGRlZlByaXZNYXN0ZXJLZXkgKFwtM00pLCAKK2RlZkF1dGhMb2NhbGl6ZWRLZXkgKFwtM2spIG9yIGRlZlByaXZMb2NhbGl6ZWRLZXkgKFwtM0spIHRva2VucywgcmVzcGVjdGl2ZWx5LCAKIGluIHRoZQogLkkgc25tcC5jb25mCiBmaWxlLCBzZWUKIC5JIHNubXAuY29uZig1KS4KIC5UUAotLkJJIC1hICIgYXV0aFByb3RvY29sIgorLkJJIFwtYSAiIGF1dGhQcm90b2NvbCIKIFNldCB0aGUgYXV0aGVudGljYXRpb24gcHJvdG9jb2wgKE1ENSBvciBTSEEpIHVzZWQgZm9yIGF1dGhlbnRpY2F0ZWQgU05NUHYzCiBtZXNzYWdlcy4gT3ZlcnJpZGVzIHRoZSBcZklkZWZBdXRoVHlwZVxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgogZmlsZS4KIC5UUAotLkJJIC1BICIgYXV0aFBhc3N3b3JkIgorLkJJIFwtQSAiIGF1dGhQYXNzd29yZCIKIFNldCB0aGUgYXV0aGVudGljYXRpb24gcGFzcyBwaHJhc2UgdXNlZCBmb3IgYXV0aGVudGljYXRlZCBTTk1QdjMKIG1lc3NhZ2VzLiAgT3ZlcnJpZGVzIHRoZSBcZklkZWZBdXRoUGFzc3BocmFzZVxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgpAQCAtMjkyLDMxICsyOTIsMzEgQEAKIHNlZQogLkkgc25tcC5jb25mKDUpLgogLlRQCi0uQkkgLWUgIiBlbmdpbmVJRCIKKy5CSSBcLWUgIiBlbmdpbmVJRCIKIFNldCB0aGUgYXV0aG9yaXRhdGl2ZSAoc2VjdXJpdHkpIGVuZ2luZUlEIHVzZWQgZm9yIFNOTVB2MyBSRVFVRVNUCiBtZXNzYWdlcywgZ2l2ZW4gYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcgKG9wdGlvbmFsbHkgcHJlZml4ZWQgYnkgIjB4IikuCiBJdCBpcyB0eXBpY2FsbHkgbm90IG5lY2Vzc2FyeSB0byBzcGVjaWZ5IHRoaXMgZW5naW5lIElELCBhcyBpdCB3aWxsCiB1c3VhbGx5IGJlIGRpc2NvdmVyZWQgYXV0b21hdGljYWxseS4KIC5UUAotLkJJIC1FICIgZW5naW5lSUQiCisuQkkgXC1FICIgZW5naW5lSUQiCiBTZXQgdGhlIGNvbnRleHQgZW5naW5lSUQgdXNlZCBmb3IgU05NUHYzIFJFUVVFU1QgbWVzc2FnZXMgc2NvcGVkUGR1LAogZ2l2ZW4gYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcuCiBJZiBub3Qgc3BlY2lmaWVkLCB0aGlzIHdpbGwgZGVmYXVsdCB0byB0aGUgYXV0aG9yaXRhdGl2ZSBlbmdpbmVJRC4KIC5UUAotLkJJIC11ICIgc2VjTmFtZSIKKy5CSSBcLXUgIiBzZWNOYW1lIgogU2V0IHRoZSBzZWN1cml0eU5hbWUgdXNlZCBmb3IgYXV0aGVudGljYXRlZCBTTk1QdjMgbWVzc2FnZXMuCiBPdmVycmlkZXMgdGhlIFxmSWRlZlNlY3VyaXR5TmFtZVxmUiB0b2tlbiBpbiB0aGUKIC5JIHNubXAuY29uZgogZmlsZS4KIC5UUAotLkJJIC14ICIgcHJpdlByb3RvY29sIgorLkJJIFwteCAiIHByaXZQcm90b2NvbCIKIFNldCB0aGUgcHJpdmFjeSBwcm90b2NvbCAoREVTIG9yIEFFUykgdXNlZCBmb3IgZW5jcnlwdGVkIFNOTVB2MyBtZXNzYWdlcy4gCiBPdmVycmlkZXMgdGhlIFxmSWRlZlByaXZUeXBlXGZSIHRva2VuIGluIHRoZQogLkkgc25tcC5jb25mCiBmaWxlLiBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGlmIHRoZSBOZXQtU05NUCBzb2Z0d2FyZSB3YXMgYnVpbGQKIHRvIHVzZSBPcGVuU1NMLgogLlRQCi0uQkkgLVggIiBwcml2UGFzc3dvcmQiCisuQkkgXC1YICIgcHJpdlBhc3N3b3JkIgogU2V0IHRoZSBwcml2YWN5IHBhc3MgcGhyYXNlIHVzZWQgZm9yIGVuY3J5cHRlZCBTTk1QdjMgbWVzc2FnZXMuCiBPdmVycmlkZXMgdGhlIFxmSWRlZlByaXZQYXNzcGhyYXNlXGZSIHRva2VuIGluIHRoZQogLkkgc25tcC5jb25mCkBAIC0zMjQsNyArMzI0LDcgQEAKIEl0IGlzIGluc2VjdXJlIHRvIHNwZWNpZnkgcGFzcyBwaHJhc2VzIG9uIHRoZSBjb21tYW5kIGxpbmUsIHNlZQogLkkgc25tcC5jb25mKDUpLgogLlRQCi0uQkkgLVogIiBib290cyx0aW1lIgorLkJJIFwtWiAiIGJvb3RzLHRpbWUiCiBTZXQgdGhlIGVuZ2luZUJvb3RzIGFuZCBlbmdpbmVUaW1lIHVzZWQgZm9yIGF1dGhlbnRpY2F0ZWQgU05NUHYzCiBtZXNzYWdlcy4gIFRoaXMgd2lsbCBpbml0aWFsaXplIHRoZSBsb2NhbCBub3Rpb24gb2YgdGhlIGFnZW50cwogYm9vdHMvdGltZSB3aXRoIGFuIGF1dGhlbnRpY2F0ZWQgdmFsdWUgc3RvcmVkIGluIHRoZSBMQ0QuCkBAIC0zMzQsNyArMzM0LDcgQEAKIAogLlNIIFNOTVB2MSBhbmQgU05NUHYyYyBPcHRpb25zIAogLlRQCi0uQkkgLWMgIiBjb21tdW5pdHkiCisuQkkgXC1jICIgY29tbXVuaXR5IgogU2V0IHRoZSBjb21tdW5pdHkgc3RyaW5nIGZvciBTTk1QdjEvdjJjIHRyYW5zYWN0aW9ucy4KIE92ZXJyaWRlcyB0aGUgXGZJZGVmQ29tbXVuaXR5XGZSIHRva2VuIGluIHRoZQogLkkgc25tcC5jb25mCkBAIC00NDEsNyArNDQxLDcgQEAKIC5JUiAic3NoOmhvc3RuYW1lOjIyIgogQ29ubmVjdHMgdXNpbmcgU05NUCBvdmVyIFNTSCBhcyBkb2N1bWVudGVkIGJ5IHRoZSBJU01TIHdvcmtpbmcgZ3JvdXAKIChSRkNzIG5vdCB5ZXQgcHVibGlzaGVkIGFzIG9mIHRoaXMgZGF0ZSkuICBUaGlzIHdpbGwgcmVxdWlyZSB0aGF0IHRoZQotVFNNIHNlY3VyaXR5IG1vZGVsIGlzIGluIHVzZSAoLS1kZWZTZWN1cml0eU1vZGVsPXRzbSkuCitUU00gc2VjdXJpdHkgbW9kZWwgaXMgaW4gdXNlIChcLVwtZGVmU2VjdXJpdHlNb2RlbD10c20pLgogLlRQIDI0CiAuSVIgImlweDo6MDBEMEI3QUFFMzA4IgogcGVyZm9ybSBxdWVyeSB1c2luZyBJUFggZGF0YWdyYW1zIHRvIG5vZGUgbnVtYmVyIApAQCAtNDU3LDEyICs0NTcsMTIgQEAKIG9uIG5ldHdvcmsgbnVtYmVyCiAuSVIgMEFFNDM0MDkgLgogLlRQIDI0Ci0uSVIgInVuaXg6L3RtcC9sb2NhbC1hZ2VudCIKKy5JUiAidW5peDovdG1wL2xvY2FsXC1hZ2VudCIKIGNvbm5lY3QgdG8gdGhlIFVuaXggZG9tYWluIHNvY2tldCAKLS5JUiAvdG1wL2xvY2FsLWFnZW50ICwKKy5JUiAvdG1wL2xvY2FsXC1hZ2VudCAsCiBhbmQgcGVyZm9ybSB0aGUgcXVlcnkgb3ZlciB0aGF0IGNvbm5lY3Rpb24uCiAuVFAgMjQKLS5JUiAiL3RtcC9sb2NhbC1hZ2VudCIKKy5JUiAiL3RtcC9sb2NhbFwtYWdlbnQiCiBpZGVudGljYWwgdG8gdGhlIHByZXZpb3VzIHNwZWNpZmljYXRpb24sIHNpbmNlIHRoZSBVbml4IGRvbWFpbiBpcyB0aGUKIGRlZmF1bHQgdHJhbnNwb3J0IGlmZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSA8dHJhbnNwb3J0LWFkZHJlc3M+CiBpcyBhICcvJy4KQEAgLTQ5OSwyNiArNDk5LDI2IEBACiBpbiByZWNvZ25pdGlvbiBvZiB0aGUgKGFoZW0pIGRpdmVyc2l0eSBpbiBjb21wbGlhbmNlIGV4cHJlc3NlZCBpbiBNSUIKIGZpbGVzLCBhZGRpdGlvbmFsIG9wdGlvbnMgcHJvdmlkZSBtb3JlIGZsZXhpYmlsaXR5IGluIHJlYWRpbmcgTUlCIGZpbGVzLgogLlRQCi0uQiAiLVBjIgorLkIgIlwtUGMiCiBUb2dnbGVzIHdoZXRoZXIgQVNOLjEgY29tbWVudHMgc2hvdWxkIGV4dGVuZCB0byB0aGUgZW5kIG9mIHRoZSBNSUIKIHNvdXJjZSBsaW5lLgotU3RyaWN0bHkgc3BlYWtpbmcsIGEgc2Vjb25kIGFwcGVhcmFuY2Ugb2YgIi0tIiBzaG91bGQgdGVybWluYXRlIHRoZQorU3RyaWN0bHkgc3BlYWtpbmcsIGEgc2Vjb25kIGFwcGVhcmFuY2Ugb2YgIlwtXC0iIHNob3VsZCB0ZXJtaW5hdGUgdGhlCiBjb21tZW50LCBidXQgdGhpcyBicmVha3Mgc29tZSBNSUIgZmlsZXMuCiBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgKHRvIGludGVycHJldCBjb21tZW50cyBjb3JyZWN0bHkpIGNhbiBhbHNvCiBiZSBzZXQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiB0b2tlbiBcZkljb21tZW50VG9FT0xcZlIuCiAuVFAKLS5CICItUGQiCisuQiAiXC1QZCIKIERpc2FibGVzIHRoZSBsb2FkaW5nIG9mIE1JQiBvYmplY3QgREVTQ1JJUFRJT05zIHdoZW4gcGFyc2luZyBNSUIgZmlsZXMuCiBUaGlzIHJlZHVjZXMgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGUgcnVubmluZyBhcHBsaWNhdGlvbi4KIC5UUAotLkIgIi1QZSIKKy5CICJcLVBlIgogVG9nZ2xlcyB3aGV0aGVyIHRvIHNob3cgZXJyb3JzIGVuY291bnRlcmVkIHdoZW4gcGFyc2luZyBNSUIgZmlsZXMuCiBUaGVzZSBpbmNsdWRlCiByZWZlcmVuY2VzIHRvIElNUE9SVGVkIG1vZHVsZXMgYW5kIE1JQiBvYmplY3RzIHRoYXQgY2Fubm90IGJlCiBsb2NhdGVkIGluIHRoZSBNSUIgZGlyZWN0b3J5IHNlYXJjaCBsaXN0LgogVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGNhbiBhbHNvIGJlIHNldCB3aXRoIHRoZSBjb25maWd1cmF0aW9uIHRva2VuIFxmSXNob3dNaWJFcnJvcnNcZlIuCiAuVFAKLS5CICItUFIiCisuQiAiXC1QUiIKIElmIHRoZSBzYW1lIE1JQiBvYmplY3QgKHBhcmVudCBuYW1lIGFuZCBzdWItaWRlbnRpZmllcikgYXBwZWFycyBtdWx0aXBsZQogdGltZXMgaW4gdGhlIGxpc3Qgb2YgTUlCIGRlZmluaXRpb25zIGxvYWRlZCwgdXNlIHRoZSBsYXN0IHZlcnNpb24gdG8gYmUKIHJlYWQgaW4uICBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgdmVyc2lvbiB3aWxsIGJlIHVzZWQsIGFuZCBhbnkgZHVwbGljYXRlcwpAQCAtNTMyLDIwICs1MzIsMjAgQEAKIC5cIiBTZXR0aW5nIHRoaXMgb3B0aW9uIG1heSByZXN1bHQgaW4gYW4gaW5jb3JyZWN0IGhpZXJhcmNoeS4KIC5cIiBYWFggLSBXaHk/CiAuVFAKLS5CICItUHUiCisuQiAiXC1QdSIKIFRvZ2dsZXMgd2hldGhlciB0byBhbGxvdyB0aGUgdW5kZXJsaW5lIGNoYXJhY3RlciBpbiBNSUIgb2JqZWN0IG5hbWVzCiBhbmQgb3RoZXIgc3ltYm9scy4KIFN0cmljdGx5IHNwZWFraW5nLCB0aGlzIGlzIG5vdCB2YWxpZCBTTUkgc3ludGF4LCBidXQgc29tZSB2ZW5kb3IgTUlCCiBmaWxlcyBkZWZpbmUgc3VjaCBuYW1lcy4KIFRoZSBkZWZhdWx0IGJlaGF2aW91ciBjYW4gYWxzbyBiZSBzZXQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiB0b2tlbiBcZkltaWJBbGxvd1VuZGVybGluZVxmUi4KIC5UUAotLkIgIi1QdyIKKy5CICJcLVB3IgogU2hvdyB2YXJpb3VzIHdhcm5pbmcgbWVzc2FnZXMgaW4gcGFyc2luZyBNSUIgZmlsZXMgYW5kIGJ1aWxkaW5nCiB0aGUgb3ZlcmFsbCBPSUQgdHJlZS4KIFRoaXMgY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlCiBcZkltaWJXYXJuaW5nTGV2ZWwgMVxmUgogLlRQCi0uQiAiLVBXIgorLkIgIlwtUFciCiBTaG93IHNvbWUgYWRkaXRpb25hbCB3YXJuaW5nIG1lc3NhZ2VzLCBtb3N0bHkgcmVsYXRpbmcgdG8gcGFyc2luZwogaW5kaXZpZHVhbCBNSUIgb2JqZWN0cy4KIFRoaXMgY2FuIGFsc28gYmUgc2V0IHdpdGggdGhlIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlCkBAIC01NTMsMTA3ICs1NTMsMTA3IEBACiAKIC5TSCAiT1VUUFVUIE9QVElPTlMiCiBUaGUgZm9ybWF0IG9mIHRoZSBvdXRwdXQgZnJvbSBTTk1QIGNvbW1hbmRzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nCi12YXJpb3VzIHBhcmFtZXRlcnMgb2YgdGhlIFxmQi1PXGZSIGZsYWcuCit2YXJpb3VzIHBhcmFtZXRlcnMgb2YgdGhlIFxmQlwtT1xmUiBmbGFnLgogVGhlIGVmZmVjdHMgb2YgdGhlc2Ugc3ViLW9wdGlvbnMgY2FuIGJlIHNlZW4gYnkgY29tcGFyaXNvbiB3aXRoCiB0aGUgZm9sbG93aW5nIGRlZmF1bHQgb3V0cHV0ICh1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCk6CiAuUlMKIC5uZgotXGZDJCBzbm1wZ2V0IC1jIHB1YmxpYyAtdiAxIGxvY2FsaG9zdCBzeXNVcFRpbWUuMAotU05NUHYyLU1JQjo6c3lzVXBUaW1lLjAgPSBUaW1ldGlja3M6ICgxNDA5Njc2MykgMSBkYXksIDE1OjA5OjI3LjYzXGZSCitcZkMkIHNubXBnZXQgXC1jIHB1YmxpYyBcLXYgMSBsb2NhbGhvc3Qgc3lzVXBUaW1lLjAKK1NOTVB2MlwtTUlCOjpzeXNVcFRpbWUuMCA9IFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5maQogLlJFCiAKIC5UUAotLkIgLU9hCisuQiBcLU9hCiBEaXNwbGF5IHN0cmluZyB2YWx1ZXMgYXMgQVNDSUkgc3RyaW5ncyAodW5sZXNzIHRoZXJlIGlzIGEgCi1cZkNESVNQTEFZLUhJTlRcZlIgZGVmaW5lZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgTUlCIG9iamVjdCkuCitcZkNESVNQTEFZXC1ISU5UXGZSIGRlZmluZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIE1JQiBvYmplY3QpLgogQnkgZGVmYXVsdCwgdGhlIGxpYnJhcnkgYXR0ZW1wdHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHZhbHVlIGlzCiBhIHByaW50YWJsZSBvciBiaW5hcnkgc3RyaW5nLCBhbmQgZGlzcGxheXMgaXQgYWNjb3JkaW5nbHkuCiAKIFRoaXMgb3B0aW9uIGRvZXMgbm90IGFmZmVjdCBvYmplY3RzIHRoYXQgXGZJZG9cZlIgaGF2ZSBhIERpc3BsYXkgSGludC4KIC5UUAotLkIgLU9iCisuQiBcLU9iCiBEaXNwbGF5IHRhYmxlIGluZGV4ZXMgbnVtZXJpY2FsbHksIHJhdGhlciB0aGFuIHRyeWluZyB0byBpbnRlcnByZXQKIHRoZSBpbnN0YW5jZSBzdWJpZGVudGlmaWVycyBhcyBzdHJpbmcgb3IgT0lEIHZhbHVlczoKIC5SUwogLm5mCi1cZkMgICAgJCBzbm1wZ2V0bmV4dCAtYyBwdWJsaWMgLXYgMSBsb2NhbGhvc3QgdmFjbVNlY3VyaXR5TW9kZWwKLSAgICBTTk1QLVZJRVctQkFTRUQtQUNNLU1JQjo6dmFjbVNlY3VyaXR5TW9kZWwuMC4id2VzIiA9IHh4eAotICAgICQgc25tcGdldG5leHQgLWMgcHVibGljIC12IDEgXGZCLU9iXGZQIGxvY2FsaG9zdCB2YWNtU2VjdXJpdHlNb2RlbAotICAgIFNOTVAtVklFVy1CQVNFRC1BQ00tTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLjMuMTE5LjEwMS4xMTUgPSB4eHhcZlIKK1xmQyAgICAkIHNubXBnZXRuZXh0IFwtYyBwdWJsaWMgXC12IDEgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCisgICAgU05NUFwtVklFV1wtQkFTRURcLUFDTVwtTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLiJ3ZXMiID0geHh4CisgICAgJCBzbm1wZ2V0bmV4dCBcLWMgcHVibGljIFwtdiAxIFxmQlwtT2JcZlAgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCisgICAgU05NUFwtVklFV1wtQkFTRURcLUFDTVwtTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLjMuMTE5LjEwMS4xMTUgPSB4eHhcZlIKIC5maQogLlJFCiAuVFAKLS5CIC1PZQorLkIgXC1PZQogUmVtb3ZlcyB0aGUgc3ltYm9saWMgbGFiZWxzIGZyb20gZW51bWVyYXRpb24gdmFsdWVzOgogLlJTCiAubmYKLVxmQyAgICAkIHNubXBnZXQgLWMgcHVibGljIC12IDEgbG9jYWxob3N0IGlwRm9yd2FyZGluZy4wCi0gICAgSVAtTUlCOjppcEZvcndhcmRpbmcuMCA9IElOVEVHRVI6IGZvcndhcmRpbmcoMSkKLVxmQyAgICAkIHNubXBnZXQgLWMgcHVibGljIC12IDEgXGZCLU9lXGZQIGxvY2FsaG9zdCBpcEZvcndhcmRpbmcuMAotICAgIElQLU1JQjo6aXBGb3J3YXJkaW5nLjAgPSBJTlRFR0VSOiAxXGZSCitcZkMgICAgJCBzbm1wZ2V0IFwtYyBwdWJsaWMgXC12IDEgbG9jYWxob3N0IGlwRm9yd2FyZGluZy4wCisgICAgSVBcLU1JQjo6aXBGb3J3YXJkaW5nLjAgPSBJTlRFR0VSOiBmb3J3YXJkaW5nKDEpCitcZkMgICAgJCBzbm1wZ2V0IFwtYyBwdWJsaWMgXC12IDEgXGZCXC1PZVxmUCBsb2NhbGhvc3QgaXBGb3J3YXJkaW5nLjAKKyAgICBJUFwtTUlCOjppcEZvcndhcmRpbmcuMCA9IElOVEVHRVI6IDFcZlIKIC5maQogLlJFCiAuVFAKLS5CIC1PRQorLkIgXC1PRQogTW9kaWZpZXMgaW5kZXggc3RyaW5ncyB0byBlc2NhcGUgdGhlIHF1b3RlIGNoYXJhY3RlcnM6CiAuUlMKIC5uZgotXGZDICAgICQgc25tcGdldG5leHQgLWMgcHVibGljIC12IDEgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCi0gICAgU05NUC1WSUVXLUJBU0VELUFDTS1NSUI6OnZhY21TZWN1cml0eU1vZGVsLjAuIndlcyIgPSB4eHgKLSAgICAkIHNubXBnZXRuZXh0IC1jIHB1YmxpYyAtdiAxIFxmQi1PRVxmUCBsb2NhbGhvc3QgdmFjbVNlY3VyaXR5TW9kZWwKLSAgICBTTk1QLVZJRVctQkFTRUQtQUNNLU1JQjo6dmFjbVNlY3VyaXR5TW9kZWwuMC5cXCJ3ZXNcXCIgPSB4eHhcZlIKK1xmQyAgICAkIHNubXBnZXRuZXh0IFwtYyBwdWJsaWMgXC12IDEgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCisgICAgU05NUFwtVklFV1wtQkFTRURcLUFDTVwtTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLiJ3ZXMiID0geHh4CisgICAgJCBzbm1wZ2V0bmV4dCBcLWMgcHVibGljIFwtdiAxIFxmQlwtT0VcZlAgbG9jYWxob3N0IHZhY21TZWN1cml0eU1vZGVsCisgICAgU05NUFwtVklFV1wtQkFTRURcLUFDTVwtTUlCOjp2YWNtU2VjdXJpdHlNb2RlbC4wLlxcIndlc1xcIiA9IHh4eFxmUgogLmZpCiAuUkUKIC5JUAogVGhpcyBhbGxvd3MgdGhlIG91dHB1dCB0byBiZSByZXVzZWQgaW4gc2hlbGwgY29tbWFuZHMuCiAuVFAKLS5CIC1PZgorLkIgXC1PZgogSW5jbHVkZSB0aGUgZnVsbCBsaXN0IG9mIE1JQiBvYmplY3RzIHdoZW4gZGlzcGxheWluZyBhbiBPSUQ6CiAuUlMKLVxmQyAgICAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWItMi5zeXN0ZW0uc3lzVXBUaW1lLjAgPVxmUgorXGZDICAgIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMi5zeXN0ZW0uc3lzVXBUaW1lLjAgPVxmUgogLlJTCiBcZkMgICAgICAgIFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5SRQogLlJFCiAuVFAKLS5CIC1PbgorLkIgXC1PbgogRGlzcGxheXMgdGhlIE9JRCBudW1lcmljYWxseToKIC5icgogXGZDICAgIC4xLjMuNi4xLjIuMS4xLjMuMCA9IFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5UUAotLkIgLU9xCisuQiBcLU9xCiBSZW1vdmVzIHRoZSBlcXVhbCBzaWduIGFuZCB0eXBlIGluZm9ybWF0aW9uIHdoZW4gZGlzcGxheWluZyB2YXJiaW5kIHZhbHVlczoKIC5icgotXGZDICAgIFNOTVB2Mi1NSUI6OnN5c1VwVGltZS4wIDE6MTU6MDk6MjcuNjNcZlIKK1xmQyAgICBTTk1QdjJcLU1JQjo6c3lzVXBUaW1lLjAgMToxNTowOToyNy42M1xmUgogLlRQCi0uQiAtT1EKKy5CIFwtT1EKIFJlbW92ZXMgdGhlIHR5cGUgaW5mb3JtYXRpb24gd2hlbiBkaXNwbGF5aW5nIHZhcmJpbmQgdmFsdWVzOgogLmJyCi1cZkMgICAgU05NUHYyLU1JQjo6c3lzVXBUaW1lLjAgPSAxOjE1OjA5OjI3LjYzXGZSCitcZkMgICAgU05NUHYyXC1NSUI6OnN5c1VwVGltZS4wID0gMToxNTowOToyNy42M1xmUgogLlRQCi0uQiAtT3MKKy5CIFwtT3MKIERpc3BsYXkgdGhlIE1JQiBvYmplY3QgbmFtZSAocGx1cyBhbnkgaW5zdGFuY2Ugb3Igb3RoZXIgc3ViaWRlbnRpZmllcnMpOgogLmJyCiBcZkMgICAgc3lzVXBUaW1lLjAgPSBUaW1ldGlja3M6ICgxNDA5Njc2MykgMSBkYXksIDE1OjA5OjI3LjYzXGZSCiAuVFAKLS5CIC1PUworLkIgXC1PUwogRGlzcGxheSB0aGUgbmFtZSBvZiB0aGUgTUlCLCBhcyB3ZWxsIGFzIHRoZSBvYmplY3QgbmFtZToKIC5icgotXGZDICAgIFNOTVB2Mi1NSUI6OnN5c1VwVGltZS4wID0gVGltZXRpY2tzOiAoMTQwOTY3NjMpIDEgZGF5LCAxNTowOToyNy42M1xmUgorXGZDICAgIFNOTVB2MlwtTUlCOjpzeXNVcFRpbWUuMCA9IFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5JUAogVGhpcyBpcyB0aGUgZGVmYXVsdCBPSUQgb3V0cHV0IGZvcm1hdC4KIC5UUAotLkIgLU90CisuQiBcLU90CiBEaXNwbGF5IFxmQ1RpbWVUaWNrc1xmUiB2YWx1ZXMgYXMgcmF3IG51bWJlcnM6CiAuYnIKLVxmQyAgICBTTk1QdjItTUlCOjpzeXNVcFRpbWUuMCA9IDE0MDk2NzYzXGZSCitcZkMgICAgU05NUHYyXC1NSUI6OnN5c1VwVGltZS4wID0gMTQwOTY3NjNcZlIKIC5UUAotLkIgLU9UCisuQiBcLU9UCiBJZiB2YWx1ZXMgYXJlIHByaW50ZWQgYXMgSGV4IHN0cmluZ3MsCiBkaXNwbGF5IGEgcHJpbnRhYmxlIHZlcnNpb24gYXMgd2VsbC4KIC5UUAotLkIgLU91CisuQiBcLU91CiBEaXNwbGF5IHRoZSBPSUQgaW4gdGhlIHRyYWRpdGlvbmFsIFVDRC1zdHlsZSAoaW5oZXJpdGVkIGZyb20gdGhlIG9yaWdpbmFsCiBDTVUgY29kZSkuCiBUaGF0IG1lYW5zIHJlbW92aW5nIGEgc2VyaWVzIG9mICJzdGFuZGFyZCIgcHJlZml4ZXMgZnJvbSB0aGUgT0lELApAQCAtNjYyLDM1ICs2NjIsMzUgQEAKIC5icgogXGZDICAgIHN5c3RlbS5zeXNVcFRpbWUuMCA9IFRpbWV0aWNrczogKDE0MDk2NzYzKSAxIGRheSwgMTU6MDk6MjcuNjNcZlIKIC5UUAotLkIgLU9VCisuQiBcLU9VCiBEbyBub3QgcHJpbnQgdGhlIFVOSVRTIHN1ZmZpeCBhdCB0aGUgZW5kIG9mIHRoZSB2YWx1ZS4KIC5UUAotLkIgLU92CisuQiBcLU92CiBEaXNwbGF5IHRoZSB2YXJiaW5kIHZhbHVlIG9ubHksIG5vdCB0aGUgT0lEOgogLlJTCiAubmYKLVxmQyAgICAkIHNubXBnZXQgLWMgcHVibGljIC12IDEgXGZCLU92XGZQIGxvY2FsaG9zdCBpcEZvcndhcmRpbmcuMAorXGZDICAgICQgc25tcGdldCBcLWMgcHVibGljIFwtdiAxIFxmQlwtT3ZcZlAgbG9jYWxob3N0IGlwRm9yd2FyZGluZy4wCiAgICAgSU5URUdFUjogZm9yd2FyZGluZygxKVxmUgogLmZpCiAuUkUKIC5UUAotLkIgLU94CisuQiBcLU94CiBEaXNwbGF5IHN0cmluZyB2YWx1ZXMgYXMgSGV4IHN0cmluZ3MgKHVubGVzcyB0aGVyZSBpcyBhIAotXGZDRElTUExBWS1ISU5UXGZSIGRlZmluZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIE1JQiBvYmplY3QpLgorXGZDRElTUExBWVwtSElOVFxmUiBkZWZpbmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBNSUIgb2JqZWN0KS4KIEJ5IGRlZmF1bHQsIHRoZSBsaWJyYXJ5IGF0dGVtcHRzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB2YWx1ZSBpcwogYSBwcmludGFibGUgb3IgYmluYXJ5IHN0cmluZywgYW5kIGRpc3BsYXlzIGl0IGFjY29yZGluZ2x5LgogCiBUaGlzIG9wdGlvbiBkb2VzIG5vdCBhZmZlY3Qgb2JqZWN0cyB0aGF0IFxmSWRvXGZSIGhhdmUgYSBEaXNwbGF5IEhpbnQuCiAuVFAKLS5CIC1PWAorLkIgXC1PWAogRGlzcGxheSB0YWJsZSBpbmRleGVzIGluIGEgbW9yZSAicHJvZ3JhbSBsaWtlIiBvdXRwdXQsIGltaXRhdGluZwogYSB0cmFkaXRpb25hbCBhcnJheS1zdHlsZSBpbmRleCBmb3JtYXQ6CiAuUlMKIC5uZgotXGZDICAgICQgc25tcGdldG5leHQgLWMgcHVibGljIC12IDEgbG9jYWxob3N0IGlwdjZSb3V0ZVRhYmxlCi0gICAgSVB2Ni1NSUI6OmlwdjZSb3V0ZUlmSW5kZXguNjMuMjU0LjEuMC4yNTUuMC4wLjAuMC4wLjAuMC4wLjAuMC4wLjY0LjEgPSBJTlRFR0VSOiAyCi0gICAgJCBzbm1wZ2V0bmV4dCAtYyBwdWJsaWMgLXYgMSBcZkItT1hcZlAgbG9jYWxob3N0IGlwdjZSb3V0ZVRhYmxlCi0gICAgSVB2Ni1NSUI6OmlwdjZSb3V0ZUlmSW5kZXhbM2ZmZToxMDA6ZmYwMDowOjA6MDowOjBdWzY0XVsxXSA9IElOVEVHRVI6IDIKK1xmQyAgICAkIHNubXBnZXRuZXh0IFwtYyBwdWJsaWMgXC12IDEgbG9jYWxob3N0IGlwdjZSb3V0ZVRhYmxlCisgICAgSVB2NlwtTUlCOjppcHY2Um91dGVJZkluZGV4LjYzLjI1NC4xLjAuMjU1LjAuMC4wLjAuMC4wLjAuMC4wLjAuMC42NC4xID0gSU5URUdFUjogMgorICAgICQgc25tcGdldG5leHQgXC1jIHB1YmxpYyBcLXYgMSBcZkJcLU9YXGZQIGxvY2FsaG9zdCBpcHY2Um91dGVUYWJsZQorICAgIElQdjZcLU1JQjo6aXB2NlJvdXRlSWZJbmRleFszZmZlOjEwMDpmZjAwOjA6MDowOjA6MF1bNjRdWzFdID0gSU5URUdFUjogMgogLmZpCiAuUkUKIC5QUApAQCAtNzAyLDE5ICs3MDIsMTkgQEAKIC5TSCAiTE9HR0lORyBPUFRJT05TIgogVGhlIG1lY2hhbmlzbSBhbmQgZGVzdGluYXRpb24gdG8gdXNlIGZvciBsb2dnaW5nIG9mIHdhcm5pbmcgYW5kIGVycm9yCiBtZXNzYWdlcyBjYW4gYmUgY29udHJvbGxlZCBieSBwYXNzaW5nIHZhcmlvdXMgcGFyYW1ldGVycyB0byB0aGUKLS5CIC1MCisuQiBcLUwKIGZsYWcuCiAuVFAKLS5CIC1MZQorLkIgXC1MZQogTG9nIG1lc3NhZ2VzIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0uCiAuVFAKLS5CIC1MZiBGSUxFCisuQiBcLUxmIEZJTEUKIExvZyBtZXNzYWdlcyB0byB0aGUgc3BlY2lmaWVkIGZpbGUuCiAuVFAKLS5CIC1MbworLkIgXC1MbwogTG9nIG1lc3NhZ2VzIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLgogLlRQCi0uQiAtTHMgRkFDSUxJVFkKKy5CIFwtTHMgRkFDSUxJVFkKIExvZyBtZXNzYWdlcyB2aWEgc3lzbG9nLCB1c2luZyB0aGUgc3BlY2lmaWVkIGZhY2lsaXR5CiAoJ2QnIGZvciBMT0dfREFFTU9OLCAndScgZm9yIExPR19VU0VSLAogb3IgJzAnLSc3JyBmb3IgTE9HX0xPQ0FMMCB0aHJvdWdoIExPR19MT0NBTDcpLgpAQCAtNzI0LDE3ICs3MjQsMTcgQEAKIGFsbG93IHRoZSBjb3JyZXNwb25kaW5nIGxvZ2dpbmcgbWVjaGFuaXNtIHRvIGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbgogcHJpb3JpdGllcyBvZiBtZXNzYWdlLiAgVXNpbmcgc3RhbmRhcmQgZXJyb3IgbG9nZ2luZyBhcyBhbiBleGFtcGxlOgogLlRQCi0uQiAtTEUgcHJpCisuQiBcLUxFIHByaQogd2lsbCBsb2cgbWVzc2FnZXMgb2YgcHJpb3JpdHkgJ3ByaScgYW5kIGFib3ZlIHRvIHN0YW5kYXJkIGVycm9yLgogLlRQCi0uQiAtTEUgcDEtcDIKKy5CIFwtTEUgcDFcLXAyCiB3aWxsIGxvZyBtZXNzYWdlcyB3aXRoIHByaW9yaXR5IGJldHdlZW4gJ3AxJyBhbmQgJ3AyJyAoaW5jbHVzaXZlKSB0bwogc3RhbmRhcmQgZXJyb3IuCiAuUFAKIEZvcgotLkIgLUxGCisuQiBcLUxGCiBhbmQKLS5CIC1MUworLkIgXC1MUwogdGhlIHByaW9yaXR5IHNwZWNpZmljYXRpb24gY29tZXMgYmVmb3JlIHRoZSBmaWxlIG9yIGZhY2lsaXR5IHRva2VuLgogVGhlIHByaW9yaXRpZXMgcmVjb2duaXNlZCBhcmU6CiAuSVAKQEAgLTc4MywxMCArNzgzLDEwIEBACiAKIC5TSCAiSU5QVVQgT1BUSU9OUyIKIFRoZSBpbnRlcnByZXRhdGlvbiBvZiBpbnB1dCBvYmplY3QgbmFtZXMgYW5kIHRoZSB2YWx1ZXMgdG8gYmUgYXNzaWduZWQKLWNhbiBiZSBjb250cm9sbGVkIHVzaW5nIHZhcmlvdXMgcGFyYW1ldGVycyBvZiB0aGUgXGZCLUlcZlIgZmxhZy4KK2NhbiBiZSBjb250cm9sbGVkIHVzaW5nIHZhcmlvdXMgcGFyYW1ldGVycyBvZiB0aGUgXGZCXC1JXGZSIGZsYWcuCiBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgd2lsbCBiZSBkZXNjcmliZWQgYXQgdGhlIGVuZCBvZiB0aGlzIHNlY3Rpb24uCiAuVFAKLS5CIC1JYgorLkIgXC1JYgogc3BlY2lmaWVzIHRoYXQgdGhlIGdpdmVuIG5hbWUgc2hvdWxkIGJlIHJlZ2FyZGVkIGFzIGEgcmVndWxhciBleHByZXNzaW9uLAogdG8gbWF0Y2ggKGNhc2UtaW5zZW5zaXRpdmVseSkgYWdhaW5zdCBvYmplY3QgbmFtZXMgaW4gdGhlIE1JQiB0cmVlLgogVGhlICJiZXN0IiBtYXRjaCB3aWxsIGJlIHVzZWQgLSBjYWxjdWxhdGVkIGFzIHRoZSBvbmUgdGhhdCBtYXRjaGVzIHRoZQpAQCAtODA3LDIzICs4MDcsMjMgQEAKIGluc3RhbmNlIFxmQ3N5c0NvbnRhY3QuMFxmUiAoYWx0aG91Z2ggXGZJc3lzKm9udGFjdFxmUiB3b3VsZCBtYXRjaAogXGZDc3lzQ29udGFjdFxmUikuCiBTaW1pbGFybHksIHNwZWNpZnlpbmcgYSBNSUIgbW9kdWxlIG5hbWUgd2lsbCBub3Qgc3VjY2VlZAotKHNvIFxmSVNOTVB2Mi1NSUI6OnN5cy4qb250YWN0XGZSIHdvdWxkIG5vdCBtYXRjaCBlaXRoZXIpLgorKHNvIFxmSVNOTVB2MlwtTUlCOjpzeXMuKm9udGFjdFxmUiB3b3VsZCBub3QgbWF0Y2ggZWl0aGVyKS4KIC5UUAotLkIgLUloCi1kaXNhYmxlcyB0aGUgdXNlIG9mIERJU1BMQVktSElOVCBpbmZvcm1hdGlvbiB3aGVuIGFzc2lnbmluZyB2YWx1ZXMuCisuQiBcLUloCitkaXNhYmxlcyB0aGUgdXNlIG9mIERJU1BMQVlcLUhJTlQgaW5mb3JtYXRpb24gd2hlbiBhc3NpZ25pbmcgdmFsdWVzLgogVGhpcyB3b3VsZCB0aGVuIHJlcXVpcmUgcHJvdmlkaW5nIHRoZSByYXcgdmFsdWU6CiAuYnIKLVxmQyAgICBzbm1wc2V0IC4uLiBIT1NULVJFU09VUkNFUy1NSUI6OmhyU3lzdGVtRGF0ZS4wCitcZkMgICAgc25tcHNldCAuLi4gSE9TVFwtUkVTT1VSQ0VTXC1NSUI6OmhyU3lzdGVtRGF0ZS4wCiAuYnIKICAgICAgICAgICAgICAgICAgICAgeCAiMDcgRDIgMEMgMEEgMDIgMDQgMDYgMDgiXGZSCiAuYnIKIGluc3RlYWQgb2YgYSBmb3JtYXR0ZWQgdmVyc2lvbjoKIC5icgotXGZDICAgIHNubXBzZXQgLi4uIEhPU1QtUkVTT1VSQ0VTLU1JQjo6aHJTeXN0ZW1EYXRlLjAKK1xmQyAgICBzbm1wc2V0IC4uLiBIT1NUXC1SRVNPVVJDRVNcLU1JQjo6aHJTeXN0ZW1EYXRlLjAKIC5icgotICAgICAgICAgICAgICAgICAgICA9IDIwMDItMTItMTAsMjo0OjYuOFxmUgorICAgICAgICAgICAgICAgICAgICA9IDIwMDJcLTEyXC0xMCwyOjQ6Ni44XGZSCiAuVFAKLS5CIC1JcgorLkIgXC1JcgogZGlzYWJsZXMgY2hlY2tpbmcgdGFibGUgaW5kZXhlcyBhbmQgdGhlIHZhbHVlIHRvIGJlIGFzc2lnbmVkIGFnYWluc3QgdGhlCiByZWxldmFudCBNSUIgZGVmaW5pdGlvbnMuICBUaGlzIHdpbGwgKGhvcGVmdWxseSkgcmVzdWx0IGluIHRoZSByZW1vdGUKIGFnZW50IHJlcG9ydGluZyBhbiBpbnZhbGlkIHJlcXVlc3QsIHJhdGhlciB0aGFuIGNoZWNraW5nIChhbmQgcmVqZWN0aW5nKQpAQCAtODMzLDEzICs4MzMsMTMgQEAKIHRlbmQgdG8gYmUgbW9yZSBwcmVjaXNlKSwgYnV0IGRpc2FibGluZyB0aGlzIGJlaGF2aW91ciBpcyBwYXJ0aWN1bGFybHkKIHVzZWZ1bCB3aGVuIHRlc3RpbmcgdGhlIHJlbW90ZSBhZ2VudC4KIC5UUAotLkIgLUlSCisuQiBcLUlSCiBlbmFibGVzICJyYW5kb20gYWNjZXNzIiBsb29rdXAgb2YgTUlCIG5hbWVzLgogUmF0aGVyIHRoYW4gcHJvdmlkaW5nIGEgZnVsbCBPSUQgcGF0aCB0byB0aGUgZGVzaXJlZCBNSUIgb2JqZWN0CiAob3IgcXVhbGlmeWluZyB0aGlzIG9iamVjdCB3aXRoIGFuIGV4cGxpY2l0IE1JQiBtb2R1bGUgbmFtZSksCiB0aGUgTUlCIHRyZWUgd2lsbCBiZSBzZWFyY2hlZCBmb3IgdGhlIG1hdGNoaW5nIG9iamVjdCBuYW1lLgotVGh1cyBcZkMuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWliLTIuc3lzdGVtLnN5c0Rlc2NyLjBcZlIKLShvciBcZkNTTk1QdjItTUlCOjpzeXNEZXNjci4wXGZSKSBjYW4gYmUgc3BlY2lmaWVkIHNpbXBseQorVGh1cyBcZkMuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWliXC0yLnN5c3RlbS5zeXNEZXNjci4wXGZSCisob3IgXGZDU05NUHYyXC1NSUI6OnN5c0Rlc2NyLjBcZlIpIGNhbiBiZSBzcGVjaWZpZWQgc2ltcGx5CiBhcyBcZkNzeXNEZXNjci4wXGZSLgogLlJTCiAuSVAgIldhcm5pbmc6IgpAQCAtODQ4LDI0ICs4NDgsMjQgQEAKIGhhdmUgYmVlbiBsb2FkZWQuCiAuUkUKIC5JUAotVGhlIFxmSU1JQi1NT0RVTEU6Om9iamVjdE5hbWVcZlIgc3ludGF4IGhhcworVGhlIFxmSU1JQlwtTU9EVUxFOjpvYmplY3ROYW1lXGZSIHN5bnRheCBoYXMKIHRoZSBhZHZhbnRhZ2Ugb2YgdW5pcXVlbHkgaWRlbnRpZnlpbmcgYSBwYXJ0aWN1bGFyIE1JQiBvYmplY3QsCiBhcyB3ZWxsIGFzIGJlaW5nIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50IChhbmQgYXV0b21hdGljYWxseQogbG9hZGluZyB0aGUgbmVjZXNzYXJ5IE1JQiBmaWxlIGlmIG5lY2Vzc2FyeSkuCiAuVFAKLS5CIC1JcyBTVUZGSVgKKy5CIFwtSXMgU1VGRklYCiBhZGRzIHRoZSBzcGVjaWZpZWQgc3VmZml4IHRvIGVhY2ggdGV4dHVhbCBPSUQgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZS4KIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmV0cmlldmUgbXVsdGlwbGUgb2JqZWN0cyBmcm9tIHRoZSBzYW1lIHJvdyBvZgogYSB0YWJsZSwgYnkgc3BlY2lmeWluZyBhIGNvbW1vbiBpbmRleCB2YWx1ZS4KIC5UUAotLkIgLUlTIFBSRUZJWAorLkIgXC1JUyBQUkVGSVgKIGFkZHMgdGhlIHNwZWNpZmllZCBwcmVmaXggdG8gZWFjaCB0ZXh0dWFsIE9JRCBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lLgogVGhpcyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGFuIGV4cGxpY2l0IE1JQiBtb2R1bGUgbmFtZSBmb3IgYWxsIG9iamVjdHMKIGJlaW5nIHJldHJpZXZlZCAob3IgZm9yIGluY3VyYWJseSBsYXp5IHR5cGlzdHMpLgogLlRQCi0uQiAtSXUKKy5CIFwtSXUKIGVuYWJsZXMgdGhlIHRyYWRpdGlvbmFsIFVDRC1zdHlsZSBhcHByb2FjaCB0byBpbnRlcnByZXRpbmcgaW5wdXQgT0lEcy4KLVRoaXMgYXNzdW1lcyB0aGF0IE9JRHMgYXJlIHJvb3RlZCBhdCB0aGUgJ21pYi0yJyBwb2ludCBpbiB0aGUgdHJlZQorVGhpcyBhc3N1bWVzIHRoYXQgT0lEcyBhcmUgcm9vdGVkIGF0IHRoZSAnbWliXC0yJyBwb2ludCBpbiB0aGUgdHJlZQogKHVubGVzcyB0aGV5IHN0YXJ0IHdpdGggYW4gZXhwbGljaXQgJy4nIG9yIGluY2x1ZGUgYSBNSUIgbW9kdWxlIG5hbWUpLgogU28gdGhlIFxmQ3N5c0Rlc2NyXGZSIGluc3RhbmNlIGFib3ZlIHdvdWxkIGJlIHJlZmVyZW5jZWQgYXMKIFxmQ3N5c3RlbS5zeXNEZXNjci4wXGZSLiAKQEAgLTg3NCwyOCArODc0LDI4IEBACiBPYmplY3QgbmFtZXMgc3BlY2lmaWVkIHdpdGggYSBsZWFkaW5nICcuJyBhcmUgYWx3YXlzIGludGVycHJldGVkIGFzCiAiZnVsbHkgcXVhbGlmaWVkIiBPSURzLCBsaXN0aW5nIHRoZSBzZXF1ZW5jZSBvZiBNSUIgb2JqZWN0cyBmcm9tIHRoZQogcm9vdCBvZiB0aGUgTUlCIHRyZWUuICBTdWNoIG9iamVjdHMgYW5kIHRob3NlIHF1YWxpZmllZCBieSBhbiBleHBsaWNpdAotTUlCIG1vZHVsZSBuYW1lIGFyZSB1bmFmZmVjdGVkIGJ5IHRoZSBcZkItSWJcZlIsIFxmQi1JUlxmUiBhbmQgXGZCLUl1XGZSIGZsYWdzLgorTUlCIG1vZHVsZSBuYW1lIGFyZSB1bmFmZmVjdGVkIGJ5IHRoZSBcZkJcLUliXGZSLCBcZkJcLUlSXGZSIGFuZCBcZkJcLUl1XGZSIGZsYWdzLgogCiBPdGhlcndpc2UsIGlmIG5vbmUgb2YgdGhlIGFib3ZlIGlucHV0IG9wdGlvbnMgYXJlIHNwZWNpZmllZCwgdGhlCiBkZWZhdWx0IGJlaGF2aW91ciBmb3IgYSAicmVsYXRpdmUiIE9JRCBpcyB0byB0cnkgYW5kIGludGVycHJldCBpdAogYXMgYW4gKGltcGxpY2l0bHkpIGZ1bGx5IHF1YWxpZmllZCBPSUQsCi10aGVuIGFwcGx5ICJyYW5kb20gYWNjZXNzIiBsb29rdXAgKFxmQi1JUlxmUiksCi1mb2xsb3dlZCBieSAiYmVzdCBtYXRjaCIgcGF0dGVybiBtYXRjaGluZyAoXGZCLUliXGZSKS4KK3RoZW4gYXBwbHkgInJhbmRvbSBhY2Nlc3MiIGxvb2t1cCAoXGZCXC1JUlxmUiksCitmb2xsb3dlZCBieSAiYmVzdCBtYXRjaCIgcGF0dGVybiBtYXRjaGluZyAoXGZCXC1JYlxmUikuCiAKIC5TSCAiRU5WSVJPTk1FTlQgVkFSSUFCTEVTIgogLklQIFBSRUZJWAogVGhlIHN0YW5kYXJkIHByZWZpeCBmb3Igb2JqZWN0IGlkZW50aWZpZXJzICh3aGVuIHVzaW5nIFVDRC1zdHlsZSBvdXRwdXQpLgotRGVmYXVsdHMgdG8gLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliLTIKK0RlZmF1bHRzIHRvIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMgogLklQIE1JQlMKIFRoZSBsaXN0IG9mIE1JQnMgdG8gbG9hZC4gRGVmYXVsdHMgdG8KLVNOTVB2Mi1UQzpTTk1QdjItTUlCOklGLU1JQjpJUC1NSUI6VENQLU1JQjpVRFAtTUlCOlNOTVAtVkFDTS1NSUIuCitTTk1QdjJcLVRDOlNOTVB2MlwtTUlCOklGXC1NSUI6SVBcLU1JQjpUQ1BcLU1JQjpVRFBcLU1JQjpTTk1QXC1WQUNNXC1NSUIuCiBPdmVycmlkZGVuIGJ5IHRoZQotLkIgLW0KKy5CIFwtbQogb3B0aW9uLgogLklQIE1JQkRJUlMKIFRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgTUlCcy4gRGVmYXVsdHMgdG8gREFUQURJUi9zbm1wL21pYnMuCiBPdmVycmlkZGVuIGJ5IHRoZQotLkIgLU0KKy5CIFwtTQogb3B0aW9uLgogCiAuU0ggRklMRVMKZGlmZiAtLWdpdCBhL21hbi9zbm1wY29uZi4xLmRlZiBiL21hbi9zbm1wY29uZi4xLmRlZgppbmRleCA4NDg4YWE1Li5jZDBjMTA0IDEwMDY0NAotLS0gYS9tYW4vc25tcGNvbmYuMS5kZWYKKysrIGIvbWFuL3NubXBjb25mLjEuZGVmCkBAIC02LDcgKzYsNyBAQAogW09QVElPTlNdIFtmaWxlVG9DcmVhdGVdCiAuSVAgIlN0YXJ0IHdpdGg6IgogLkIgc25tcGNvbmYKLS1nIGJhc2ljX3NldHVwCitcLWcgYmFzaWNfc2V0dXAKIC5JUCAiT3IgZXZlbiBqdXN0OiIKIC5CIHNubXBjb25mCiAuU0ggREVTQ1JJUFRJT04KQEAgLTI3LDM1ICsyNywzNSBAQAogY29tbWVudGVkLgogLlBQCiBBIHBhcnRpY3VsYXJseSB1c2VmdWwgb3B0aW9uIGlzIHRoZQotLkIgLWcKKy5CIFwtZwogc3dpdGNoLCB3aGljaCB3YWxrcyBhIHVzZXIgdGhyb3VnaCBhIHNwZWNpZmljIHNldCBvZiBjb25maWd1cmF0aW9uCiBxdWVzdGlvbnMuICBSdW46CiAuUlMKIC5QUAotc25tcGNvbmYgLWcgYmFzaWNfc2V0dXAKK3NubXBjb25mIFwtZyBiYXNpY19zZXR1cAogLlJFCiAuUFAKIGZvciBhbiBleGFtcGxlLgogLlNIICJPUFRJT05TIgogLlRQIDgKLS5CIC1mCisuQiBcLWYKIEZvcmNlIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSB3aXRob3V0CiBwcm9tcHRpbmcgdGhlIHVzZXIgaWYgdGhpcyBpcyBhIGRlc2lyZWQgdGhpbmcgdG8gZG8uCiAuVFAgCi0uQiAtaQorLkIgXC1pCiBXaGVuIGZpbmlzaGVkLCBpbnN0YWxsIHRoZSBmaWxlcyBpbnRvIHRoZSBsb2NhdGlvbiB3aGVyZSB0aGUgZ2xvYmFsCiBzeXN0ZW0gY29tbWFuZHMgZXhwZWN0IHRvIGZpbmQgdGhlbS4KIC5UUAotLkIgLXAKKy5CIFwtcAogV2hlbiBmaW5pc2hlZCwgaW5zdGFsbCB0aGUgZmlsZXMgaW50byB0aGUgdXNlcnMgaG9tZSBkaXJlY3RvcnkncyAuc25tcAogc3ViZGlyZWN0b3J5ICh3aGVyZSB0aGUgYXBwbGljYXRpb25zIHdpbGwgYWxzbyBzZWFyY2ggZm9yCiBjb25maWd1cmF0aW9uIGZpbGVzKS4KIC5UUAotLkJJIC1JICIgRElSRUNUT1JZIgorLkJJIFwtSSAiIERJUkVDVE9SWSIKIFdoZW4gZmluaXNoZWQsIGluc3RhbGwgdGhlIGZpbGVzIGludG8gdGhlIGRpcmVjdG9yeSAKIC5JUiBESVJFQ1RPUlkgLgogLlRQCi0uQiAtYQorLkIgXC1hCiBEb24ndCBhc2sgYW55IHF1ZXN0aW9ucy4gIFNpbXBseSByZWFkIGluIHRoZSB2YXJpb3VzIGtub3duCiBjb25maWd1cmF0aW9uIGZpbGVzIGFuZCB3cml0ZSB0aGVtIGJhY2sgb3V0IGFnYWluLiAgVGhpcyBoYXMgdGhlCiBlZmZlY3Qgb2YgImF1dG8tY29tbWVudGluZyIgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHlvdS4gIFNlZQpAQCAtNjMsMTcgKzYzLDE3IEBACiAuQiBORUFUIFRSSUNLUwogc2VjdGlvbiBiZWxvdy4KIC5UUAotLkJJIC1yIGFsbHxub25lCisuQkkgXC1yIGFsbHxub25lCiBSZWFkIGluIGVpdGhlciBhbGwgb3Igbm9uZSBvZiB0aGUgZm91bmQgY29uZmlndXJhdGlvbiBmaWxlcy4gIE5vcm1hbGx5CiAuQiBzbm1wY29uZgogcHJvbXB0cyB5b3UgZm9yIHdoaWNoIGZpbGVzIHlvdSB3aXNoIHRvIHJlYWQgaW4uICBSZWFkaW5nIGluCiB0aGVzZSBjb25maWd1cmF0aW9uIGZpbGVzIHdpbGwgbWVyZ2UgdGhlc2UgZmlsZXMgd2l0aCB0aGUgcmVzdWx0cyBvZgogdGhlIHF1ZXN0aW9ucyB0aGF0IGl0IGFza3Mgb2YgeW91LgogLlRQCi0uQkkgLVIgIiBGSUxFLC4uLiIKKy5CSSBcLVIgIiBGSUxFLC4uLiIKIFJlYWQgaW4gYSBzcGVjaWZpYyBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAuVFAKLS5CSSAtZyAiIEdST1VQTkFNRSIKKy5CSSBcLWcgIiBHUk9VUE5BTUUiCiBHcm91cHMgb2YgY29uZmlndXJhdGlvbiBlbnRyaWVzIGNhbiBiZSBjcmVhdGVkIHRoYXQgY2FuIGJlIHVzZWQgdG8KIHdhbGsgYSB1c2VyIHRocm91Z2ggYSBzZXJpZXMgb2YgcXVlc3Rpb25zIHRvIGNyZWF0ZSBhbiBpbml0aWFsCiBjb25maWd1cmF0aW9uIGZpbGUuICBUaGVyZSBhcmUgbm8gbWVudXMgdG8gbmF2aWdhdGUsIGp1c3QgYSBsaXN0IG9mCkBAIC04MSw0NCArODEsNDQgQEAKIC5SUwogLlJTCiAuUFAKLXNubXBjb25mIC1nIGJhc2ljX3NldHVwCitzbm1wY29uZiBcLWcgYmFzaWNfc2V0dXAKIC5SRQogLlBQCiBmb3IgYSBnb29kIGV4YW1wbGUuCiAuUkUKIC5UUAotLkIgLUcKKy5CIFwtRwogTGlzdCBhbGwgdGhlIGtub3duIGdyb3Vwcy4KIC5UUAotLkJJIC1jICIgQ09ORklHRElSIgorLkJJIFwtYyAiIENPTkZJR0RJUiIKIC5CIHNubXBjb25mCiB1c2VzIGEgZGlyZWN0b3J5IG9mIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gdG8gbGVhcm4gYWJvdXQKIHRoZSBmaWxlcyBhbmQgcXVlc3Rpb25zIHRoYXQgaXQgc2hvdWxkIGJlIGFza2luZy4gIFRoaXMgb3B0aW9uIHRlbGxzCiAuQiBzbm1wY29uZgogdG8gdXNlIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZvciBjb25maWd1cmluZyBpdHNlbGYuCiAuVFAKLS5CIC1xCisuQiBcLXEKIFJ1biBzbGlnaHRseSBtb3JlIHF1aWV0bHkuICBTaW5jZSB0aGlzIGlzIGFuIGludGVyYWN0aXZlIHByb2dyYW0sIEkKIGRvbid0IHJlY29tbWVuZCB0aGlzIG9wdGlvbiBzaW5jZSBpdCBvbmx5IHJlbW92ZXMgaW5mb3JtYXRpb24gZnJvbSB0aGUKIG91dHB1dCB0aGF0IGlzIGRlc2lnbmVkIHRvIGhlbHAgeW91LgogLlRQCi0uQiAtZAorLkIgXC1kCiBUdXJuIG9uIAogLkIgbG90cwogb2YgZGVidWdnaW5nIG91dHB1dC4KIC5UUAotLkIgLUQKKy5CIFwtRAogQWRkIAogLkIgZXZlbiBtb3JlCiBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBmb3JtIG9mIFBlcmwgdmFyaWFibGUgZHVtcHMuCiAuSVAKIC5TSCAiTkVBVCBUUklDS1MiCi0uSVAgInNubXBjb25mIC1nIGJhc2ljX3NldHVwIgorLklQICJzbm1wY29uZiBcLWcgYmFzaWNfc2V0dXAiCiBIYXZlIEkgbWVudGlvbmVkIHRoaXMgY29tbWFuZCBlbm91Z2ggeWV0PyAgSXQncyBkZXNpZ25lZCB0byB3YWxrCiBzb21lb25lIHRocm91Z2ggYW4gaW5pdGlhbCBzZXR1cCBmb3IgdGhlCiAuSSBzbm1wZCg4KQogZGFlbW9uLiAgUmVhbGx5LCB5b3Ugc2hvdWxkIHRyeSBpdC4KLS5JUCAic25tcGNvbmYgLVIgL3Vzci9sb2NhbC9zbm1wL3NubXBkLmNvbmYgLWEgLWYgc25tcGQuY29uZiIKKy5JUCAic25tcGNvbmYgXC1SIC91c3IvbG9jYWwvc25tcC9zbm1wZC5jb25mIFwtYSBcLWYgc25tcGQuY29uZiIKIEF1dG9tYXRpY2FsbHkgcmVhZHMgaW4gYW4gc25tcGQuY29uZiBmaWxlIChmb3IgZXhhbXBsZSkgYW5kIGFkZHMKIGNvbW1lbnRzIHRvIHRoZW0gZGVzY3JpYmluZyB3aGF0IGVhY2ggdG9rZW4gZG9lcy4gIFRyeSBpdC4gIEl0J3MgY29vbC4KIC5TSCAiTk9URVMiCmRpZmYgLS1naXQgYS9tYW4vc25tcGQuOC5kZWYgYi9tYW4vc25tcGQuOC5kZWYKaW5kZXggMmM5MmZhMi4uZjE3MzM5NiAxMDA2NDQKLS0tIGEvbWFuL3NubXBkLjguZGVmCisrKyBiL21hbi9zbm1wZC44LmRlZgpAQCAtMTIsMTMgKzEyLDEzIEBACiByZXF1ZXN0ZWQgb3BlcmF0aW9uKHMpIGFuZCByZXR1cm5zIHRoZSBpbmZvcm1hdGlvbiB0byB0aGUgc2VuZGVyLgogLlNIIE9QVElPTlMKIC5UUCA4Ci0uQiAtYQorLkIgXC1hCiBMb2cgdGhlIHNvdXJjZSBhZGRyZXNzZXMgb2YgaW5jb21pbmcgcmVxdWVzdHMuCiAuVFAKLS5CIC1BCisuQiBcLUEKIEFwcGVuZCB0byB0aGUgbG9nIGZpbGUgcmF0aGVyIHRoYW4gdHJ1bmNhdGluZyBpdC4KIC5UUAotLkIgIi1jIiBcZklGSUxFCisuQiAiXC1jIiBcZklGSUxFCiBSZWFkIAogLkkgRklMRQogYXMgYSBjb25maWd1cmF0aW9uIGZpbGUKQEAgLTI3LDIxICsyNywyMSBAQAogaXMgc3BlY2lmaWVkIGluIHRoZSBmaWxlIGFzIGRlc2NyaWJlZCBpbiB0aGUgc25tcF9jb25maWcgbWFuIHBhZ2UgdW5kZXIKIFNXSVRDSElORyBDT05GSUdVUkFUSU9OIFRZUEVTIElOIE1JRC1GSUxFLgogLlRQCi0uQiAtQworLkIgXC1DCiBEbyBub3QgcmVhZCBhbnkgY29uZmlndXJhdGlvbiBmaWxlcyBleGNlcHQgdGhlIG9uZXMgb3B0aW9uYWxseSBzcGVjaWZpZWQgYnkgdGhlIAotLkIgLWMgCisuQiBcLWMgCiBvcHRpb24uCiBOb3RlIHRoYXQgdGhpcyBiZWhhdmlvdXIgYWxzbyBjb3ZlcnMgdGhlIHBlcnNpc3RlbnQgY29uZmlndXJhdGlvbiBmaWxlcy4KIFRoaXMgbWF5IHJlc3VsdCBpbiBkeW5hbWljYWxseS1hc3NpZ25lZCB2YWx1ZXMgYmVpbmcgcmVzZXQgZm9sbG93aW5nIGFuCiBhZ2VudCByZXN0YXJ0LCB1bmxlc3MgdGhlIHJlbGV2YW50IHBlcnNpc3RlbnQgY29uZmlnIGZpbGVzIGFyZQogZXhwbGljaXRseSBsb2FkZWQgdXNpbmcgdGhlCi0uQiAtYyAKKy5CIFwtYyAKIG9wdGlvbi4KIC5UUAotLkIgLWQKKy5CIFwtZAogRHVtcCAoaW4gaGV4YWRlY2ltYWwpIHRoZSBzZW50IGFuZCByZWNlaXZlZCBTTk1QIHBhY2tldHMuCiAuVFAKLS5CIC1EXGZJW1RPS0VOWywuLi5dXQorLkIgXC1EXGZJW1RPS0VOWywuLi5dXQogVHVybiBvbiBkZWJ1Z2dpbmcgb3V0cHV0IGZvciB0aGUgZ2l2ZW4KIC5JUiAiVE9LRU4iICIocykuIgogV2l0aG91dCBhbnkgdG9rZW5zIHNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gcHJpbnRpbmcgYWxsIHRoZSB0b2tlbnMKQEAgLTQ5LDk5ICs0OSw5OSBAQAogWW91IG1pZ2h0IHdhbnQgdG8gdHJ5CiAuSVIgQUxMCiBmb3IgZXh0cmVtZWx5IHZlcmJvc2Ugb3V0cHV0LiAgTm90ZTogWW91IGNhbiBub3QgcHV0IGEgc3BhY2UgYmV0d2VlbgotdGhlIC1EIGZsYWcgYW5kIHRoZSBsaXN0ZWQgVE9LRU5zLgordGhlIFwtRCBmbGFnIGFuZCB0aGUgbGlzdGVkIFRPS0VOcy4KIC5UUAotLkIgLWYKKy5CIFwtZgogRG8gbm90IGZvcmsoKSBmcm9tIHRoZSBjYWxsaW5nIHNoZWxsLgogLlRQCi0uQiAtZyBcZklHSUQKKy5CIFwtZyBcZklHSUQKIENoYW5nZSB0byB0aGUgbnVtZXJpY2FsIGdyb3VwIElECiAuSSBHSUQKIGFmdGVyIG9wZW5pbmcgbGlzdGVuaW5nIHNvY2tldHMuCiAuVFAKLS5CIC1oLCAtLWhlbHAKKy5CIFwtaCwgXC1cLWhlbHAKIERpc3BsYXkgYSBicmllZiB1c2FnZSBtZXNzYWdlIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CIC1ICisuQiBcLUgKIERpc3BsYXkgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gZmlsZSBkaXJlY3RpdmVzIHVuZGVyc3Rvb2QgYnkgdGhlCiBhZ2VudCBhbmQgdGhlbiBleGl0LgogLlRQCi0uQiAtSSBcZklbLV1JTklUTElTVAorLkIgXC1JIFxmSVtcLV1JTklUTElTVAogU3BlY2lmaWVzIHdoaWNoIG1vZHVsZXMgc2hvdWxkIChvciBzaG91bGQgbm90KSBiZSBpbml0aWFsaXplZAogd2hlbiB0aGUgYWdlbnQgc3RhcnRzIHVwLiAgSWYgdGhlIGNvbW1hLXNlcGFyYXRlZAogLkkgSU5JVExJU1QKIGlzIHByZWNlZGVkCi13aXRoIGEgJy0nLCBpdCBpcyB0aGUgbGlzdCBvZiBtb2R1bGVzIHRoYXQgc2hvdWxkIFxmSW5vdFxmUiBiZSBzdGFydGVkLgord2l0aCBhICdcLScsIGl0IGlzIHRoZSBsaXN0IG9mIG1vZHVsZXMgdGhhdCBzaG91bGQgXGZJbm90XGZSIGJlIHN0YXJ0ZWQuCiBPdGhlcndpc2UgdGhpcyBpcyB0aGUgbGlzdCBvZiB0aGUgXGZJb25seVxmUiBtb2R1bGVzIHRoYXQgc2hvdWxkIGJlIHN0YXJ0ZWQuCiAKIFRvIGdldCBhIGxpc3Qgb2YgY29tcGlsZWQgbW9kdWxlcywgcnVuIHRoZSBhZ2VudCB3aXRoIHRoZSBhcmd1bWVudHMKLS5JICItRG1pYl9pbml0IC1IIgorLkkgIlwtRG1pYl9pbml0IFwtSCIKIChhc3N1bWluZyBkZWJ1Z2dpbmcgc3VwcG9ydCBoYXMgYmVlbiBjb21waWxlZCBpbikuCiAuVFAKLS5CIC1MW2Vmb3NdCisuQiBcLUxbZWZvc10KIFNwZWNpZnkgd2hlcmUgbG9nZ2luZyBvdXRwdXQgc2hvdWxkIGJlIGRpcmVjdGVkIChzdGFuZGFyZCBlcnJvciBvciBvdXRwdXQsCiB0byBhIGZpbGUgb3IgdmlhIHN5c2xvZykuICBTZWUgTE9HR0lORyBPUFRJT05TIGluIHNubXBjbWQoNSkgZm9yIGRldGFpbHMuCiAuVFAKLS5CUiAtbSAiIFxmSU1JQkxJU1QiCisuQlIgXC1tICIgXGZJTUlCTElTVCIKIFNwZWNpZmllcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIE1JQiBtb2R1bGVzIHRvIGxvYWQgZm9yIHRoaXMKIGFwcGxpY2F0aW9uLiAgVGhpcyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1JQlMuCiBTZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIC5UUAotLkJSIC1NICIgXGZJRElSTElTVCIKKy5CUiBcLU0gIiBcZklESVJMSVNUIgogU3BlY2lmaWVzIGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBNSUJzLgogVGhpcyBvdmVycmlkZXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIE1JQkRJUlMuCiBTZWUgXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIC5UUAotLkIgLW4gXGZJTkFNRQorLkIgXC1uIFxmSU5BTUUKIFNldCBhbiBhbHRlcm5hdGl2ZSBhcHBsaWNhdGlvbiBuYW1lICh3aGljaCB3aWxsIGFmZmVjdCB0aGUKIGNvbmZpZ3VyYXRpb24gZmlsZXMgbG9hZGVkKS4KIEJ5IGRlZmF1bHQgdGhpcyB3aWxsIGJlIFxmSXNubXBkXGZSLCByZWdhcmRsZXNzIG9mIHRoZSBuYW1lCiBvZiB0aGUgYWN0dWFsIGJpbmFyeS4KIC5UUAotLkIgLXAgXGZJRklMRQorLkIgXC1wIFxmSUZJTEUKIFNhdmUgdGhlIHByb2Nlc3MgSUQgb2YgdGhlIGRhZW1vbiBpbgogLklSIEZJTEUgIi4iCiAuVFAgCi0uQiAtcQorLkIgXC1xCiBQcmludCBzaW1wbGVyIG91dHB1dCBmb3IgZWFzaWVyIGF1dG9tYXRlZCBwYXJzaW5nLgogLlRQCi0uQiAtcgorLkIgXC1yCiBEbyBub3QgcmVxdWlyZSByb290IGFjY2VzcyB0byBydW4gdGhlIGRhZW1vbi4gIFNwZWNpZmljYWxseSwgZG8gbm90IGV4aXQKIGlmIGZpbGVzIG9ubHkgYWNjZXNzaWJsZSB0byByb290IChzdWNoIGFzIC9kZXYva21lbSBldGMuKSBjYW5ub3QgYmUKIG9wZW5lZC4KIC5UUAotLkIgLXUgXGZJVUlECisuQiBcLXUgXGZJVUlECiBDaGFuZ2UgdG8gdGhlIHVzZXIgSUQKIC5JIFVJRAogKHdoaWNoIGNhbiBiZSBnaXZlbiBpbiBudW1lcmljYWwgb3IgdGV4dHVhbCBmb3JtKSBhZnRlciBvcGVuaW5nCiBsaXN0ZW5pbmcgc29ja2V0cy4KIC5UUAotLkIgLVUKKy5CIFwtVQogSW5zdHJ1Y3RzIHRoZSBhZ2VudCB0byBub3QgcmVtb3ZlIGl0cyBwaWQgZmlsZSAoc2VlIHRoZQotLkIgLXAKKy5CIFwtcAogb3B0aW9uKSBvbiBzaHV0ZG93bi4gT3ZlcnJpZGVzIHRoZSBsZWF2ZV9waWRmaWxlIHRva2VuIGluIHRoZQogLkkgc25tcGQuY29uZgogZmlsZSwgc2VlCiAuSSBzbm1wZC5jb25mKDUpLgogLlRQCi0uQiAtdiwgLS12ZXJzaW9uCisuQiBcLXYsIFwtXC12ZXJzaW9uCiBQcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciB0aGUgYWdlbnQgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkIgLVYKKy5CIFwtVgogU3ltYm9saWNhbGx5IGR1bXAgU05NUCB0cmFuc2FjdGlvbnMuCiAuVFAKLS5CIC14IFxmSUFERFJFU1MKKy5CIFwteCBcZklBRERSRVNTCiBMaXN0ZW5zIGZvciBBZ2VudFggY29ubmVjdGlvbnMgb24gdGhlIHNwZWNpZmllZCBhZGRyZXNzCiByYXRoZXIgdGhhbiB0aGUgZGVmYXVsdCBBR0VOVFhfU09DS0VULgogVGhlIGFkZHJlc3MgY2FuIGVpdGhlciBiZSBhIFVuaXggZG9tYWluIHNvY2tldCBwYXRoLAogb3IgdGhlIGFkZHJlc3Mgb2YgYSBuZXR3b3JrIGludGVyZmFjZS4gIFRoZSBmb3JtYXQgaXMgdGhlIHNhbWUgYXMgdGhlCiBmb3JtYXQgb2YgbGlzdGVuaW5nIGFkZHJlc3NlcyBkZXNjcmliZWQgYmVsb3cuCiAuVFAKLS5CIC1YCisuQiBcLVgKIFJ1biBhcyBhbiBBZ2VudFggc3ViYWdlbnQgcmF0aGVyIHRoYW4gYXMgYW4gU05NUCBtYXN0ZXIgYWdlbnQuCiAuVFAKLS5CSSAtLSAibmFtZSI9InZhbHVlIgotQWxsb3dzIHRvIHNwZWNpZnkgYW55IHRva2VuICgibmFtZSIpIHN1cHBvcnRlZCBpbiB0aGUKKy5CSSBcLVwtICJuYW1lIj0idmFsdWUiCitBbGxvd3Mgb25lIHRvIHNwZWNpZnkgYW55IHRva2VuICgibmFtZSIpIHN1cHBvcnRlZCBpbiB0aGUKIC5JIHNubXBkLmNvbmYKIGZpbGUgYW5kIHNldHMgaXRzIHZhbHVlIHRvICJ2YWx1ZSIuIE92ZXJyaWRlcyB0aGUgY29ycmVzcG9uZGluZyB0b2tlbiBpbiB0aGUKIC5JIHNubXBkLmNvbmYKQEAgLTIxOCwxMCArMjE4LDEwIEBACiAuSVIgImlweDovNDAwMDAiCiBsaXN0ZW4gb24gSVBYIHBvcnQgNDAwMDAgb24gYWxsIElQWCBpbnRlcmZhY2VzLgogLlRQIDI0Ci0uSVIgInVuaXg6L3RtcC9sb2NhbC1hZ2VudCIKLWxpc3RlbiBvbiB0aGUgVW5peCBkb21haW4gc29ja2V0IFxmSS90bXAvbG9jYWwtYWdlbnRcZlIuCisuSVIgInVuaXg6L3RtcC9sb2NhbFwtYWdlbnQiCitsaXN0ZW4gb24gdGhlIFVuaXggZG9tYWluIHNvY2tldCBcZkkvdG1wL2xvY2FsXC1hZ2VudFxmUi4KIC5UUCAyNAotLklSICIvdG1wL2xvY2FsLWFnZW50IgorLklSICIvdG1wL2xvY2FsXC1hZ2VudCIKIGlzIGlkZW50aWNhbCB0byB0aGUgcHJldmlvdXMgc3BlY2lmaWNhdGlvbiwgc2luY2UgdGhlIFVuaXggZG9tYWluIGlzCiBhc3N1bWVkIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIDx0cmFuc3BvcnQtYWRkcmVzcz4gaXMgJy8nLgogLlRQIDI0CkBAIC0yNTYsNyArMjU2LDcgQEAKIG5hbWVkIHBpcGUgdGhhdCBjYW4gYmUgY29ubmVjdGVkIHRvIHZpYSBhIHNzaCBzdWJzeXN0ZW0gY29uZmlndXJlZCBpbgogdGhlIG1haW4gc3NoIHNlcnZlci4gIFRoZSBwaXBlIGxvY2F0aW9uIChjb25maWd1cmFibGUgd2l0aCB0aGUKIHNzaHRvc25tcHNvY2tldCB0b2tlbiBpbiBzbm1wLmNvbmYpIGlzCi0uSSAvdmFyL25ldC1zbm1wL3NzaHRvc25tcC4KKy5JIC92YXIvbmV0XC1zbm1wL3NzaHRvc25tcC4KIFBhY2tldHMgc2hvdWxkIGJlIHN1Ym1pdHRlZCB0byBpdCB2aWEgdGhlIHNzaHRvc25tcCBhcHBsaWNhdGlvbiwgd2hpY2gKIGFsc28gc2VuZHMgdGhlIHVzZXIgSUQgYXMgd2VsbCB3aGVuIHN0YXJ0aW5nIHRoZSBjb25uZWN0aW9uLiAgVGhlIFRTTQogc2VjdXJpdHkgbW9kZWwgc2hvdWxkIGJlIHVzZWQgd2hlbiBwYWNrZXRzIHNob3VsZCBwcm9jZXNzIGl0LgpAQCAtMjc2LDExICsyNzYsMTEgQEAKIFRoZQogLkkgc3NodG9zbm1wCiBjb21tYW5kIHdpbGwgbmVlZCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgCi0uSSAvdmFyL25ldC1zbm1wL3NzaHRvc25tcAorLkkgL3Zhci9uZXRcLXNubXAvc3NodG9zbm1wCiBwaXBlLiAgQWx0aG91Z2ggaXQgc2hvdWxkIGJlIGZhaXJseSBzYWZlIHRvIGdyYW50IGFjY2VzcyB0byB0aGUKIGF2ZXJhZ2UgdXNlciBzaW5jZSBpdCBzdGlsbCByZXF1aXJlcyBtb2RpZmljYXRpb25zIHRvIHRoZSBBQ00gc2V0dGluZ3MKIGJlZm9yZSB0aGUgdXNlciBjYW4gcGVyZm9ybSBvcGVyYXRpb25zLCBwYXJhbm9pZCBhZG1pbmlzdHJhdG9ycyBtYXkKLXdhbnQgdG8gbWFrZSB0aGUgL3Zhci9uZXQtc25tcCBkaXJlY3RvcnkgYWNjZXNzaWJsZSBvbmx5IGJ5IHVzZXJzIGluIGEKK3dhbnQgdG8gbWFrZSB0aGUgL3Zhci9uZXRcLXNubXAgZGlyZWN0b3J5IGFjY2Vzc2libGUgb25seSBieSB1c2VycyBpbiBhCiBwYXJ0aWN1bGFyIGdyb3VwLiAgVXNlIHRoZQogLkkgc3NodG9zbm1wc29ja2V0cGVybXMKIHNubXAuY29uZiBjb25maWd1cmUgb3B0aW9uIHRvIHNldCB0aGUgcGVybWlzc2lvbnMsIG93bmVyIGFuZCBncm91cCBvZgpAQCAtMjkwLDcgKzI5MCw3IEBACiBzdHlsZSBvZiBzaW1wbGUgc25tcGQuY29uZiBzZXR0aW5nczoKIC5UUCA4CiAuSVAKLXJvdXNlciAtcyB0c20gZm9vIGF1dGhwcml2Cityb3VzZXIgXC1zIHRzbSBmb28gYXV0aHByaXYKIC5JUAogTm90ZSB0aGF0ICJhdXRocHJpdiIgaXMgYWNjZXB0YWJsZSBhc3N1bWluZyBhcyBTU0ggcHJvdGVjdHMgZXZlcnl0aGluZwogdGhhdCB3YXkgKGFzc3VtaW5nIHlvdSBoYXZlIGEgbm9uLWluc2FuZSBzZXR1cCkuCmRpZmYgLS1naXQgYS9tYW4vc25tcGQuY29uZi41LmRlZiBiL21hbi9zbm1wZC5jb25mLjUuZGVmCmluZGV4IDQ5ZDgxYjYuLjJhOGEzZDMgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZC5jb25mLjUuZGVmCisrKyBiL21hbi9zbm1wZC5jb25mLjUuZGVmCkBAIC0xOCw3ICsxOCw3IEBACiBtYW51YWwgcGFnZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiwgb3IgdHJ5IHJ1bm5pbmcgdGhlCiBjb21tYW5kOgogLlJTCi0uSVAgInNubXBjb25mIC1nIGJhc2ljX3NldHVwIgorLklQICJzbm1wY29uZiBcLWcgYmFzaWNfc2V0dXAiCiAuUkUKIC5QUAogVGhlcmUgYXJlIGEgbGFyZ2UgbnVtYmVyIG9mIGRpcmVjdGl2ZXMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkLApAQCAtNDAsNyArNDAsNyBAQAogQSBmdWxsIGxpc3Qgb2YgcmVjb2duaXNlZCBkaXJlY3RpdmVzIGNhbiBiZSBvYnRhaW5lZCBieSBydW5uaW5nCiB0aGUgY29tbWFuZDoKIC5SUwotLklQICJzbm1wZCAtSCIKKy5JUCAic25tcGQgXC1IIgogLlJFCiAuU0ggQUdFTlQgQkVIQVZJT1VSCiBBbHRob3VnaCBtb3N0IGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyBhcmUgY29uY2VybmVkIHdpdGggdGhlIE1JQgpAQCAtNjksMTEgKzY5LDExIEBACiBzdGFydGluZyB3aXRoICcjJyAoI1VJRCkuCiAuSVAgImxlYXZlX3BpZGZpbGUgeWVzIgogaW5zdHJ1Y3RzIHRoZSBhZ2VudCB0byBub3QgcmVtb3ZlIGl0cyBwaWQgZmlsZSBvbiBzaHV0ZG93bi4gRXF1aXZhbGVudCB0bwotc3BlY2lmeWluZyAiLVUiIG9uIHRoZSBjb21tYW5kIGxpbmUuCitzcGVjaWZ5aW5nICJcLVUiIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAuSVAgIm1heEdldGJ1bGtSZXBlYXRzIE5VTSIKIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHJlc3BvbnNlcyBhbGxvd2VkIGZvciBhIHNpbmdsZSB2YXJpYWJsZSBpbgotYSBnZXRidWxrIHJlcXVlc3QuICBTZXQgdG8gMCB0byBlbmFibGUgdGhlIGRlZmF1bHQgYW5kIHNldCBpdCB0byAtMSB0bwotZW5hYmxlIHVubGltaXRlZC4gIEJlY2F1c2UgbWVtb3J5IGlzIGFsbG9jYXRlZCBhaGVhZCBvZiB0aW1lLCBzaXR0aW5nCithIGdldGJ1bGsgcmVxdWVzdC4gIFNldCB0byAwIHRvIGVuYWJsZSB0aGUgZGVmYXVsdCBhbmQgc2V0IGl0IHRvIFwtMSB0bworZW5hYmxlIHVubGltaXRlZC4gIEJlY2F1c2UgbWVtb3J5IGlzIGFsbG9jYXRlZCBhaGVhZCBvZiB0aW1lLCBzZXR0aW5nCiB0aGlzIHRvIHVubGltaXRlZCBpcyBub3QgY29uc2lkZXJlZCBzYWZlIGlmIHlvdXIgdXNlciBwb3B1bGF0aW9uIGNhbgogbm90IGJlIHRydXN0ZWQuICBBIHJlcGVhdCBudW1iZXIgZ3JlYXRlciB0aGFuIHRoaXMgd2lsbCBiZSB0cnVuY2F0ZWQKIHRvIHRoaXMgdmFsdWUuCkBAIC04Miw4ICs4Miw4IEBACiAuSVAgIm1heEdldGJ1bGtSZXNwb25zZXMgTlVNIgogU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcmVzcG9uc2VzIGFsbG93ZWQgZm9yIGEgZ2V0YnVsayByZXF1ZXN0LgogVGhpcyBpcyBzZXQgYnkgZGVmYXVsdCB0byAxMDAuICBTZXQgdG8gMCB0byBlbmFibGUgdGhlIGRlZmF1bHQgYW5kIHNldAotaXQgdG8gLTEgdG8gZW5hYmxlIHVubGltaXRlZC4gIEJlY2F1c2UgbWVtb3J5IGlzIGFsbG9jYXRlZCBhaGVhZCBvZgotdGltZSwgc2l0dGluZyB0aGlzIHRvIHVubGltaXRlZCBpcyBub3QgY29uc2lkZXJlZCBzYWZlIGlmIHlvdXIgdXNlcgoraXQgdG8gXC0xIHRvIGVuYWJsZSB1bmxpbWl0ZWQuICBCZWNhdXNlIG1lbW9yeSBpcyBhbGxvY2F0ZWQgYWhlYWQgb2YKK3RpbWUsIHNldHRpbmcgdGhpcyB0byB1bmxpbWl0ZWQgaXMgbm90IGNvbnNpZGVyZWQgc2FmZSBpZiB5b3VyIHVzZXIKIHBvcHVsYXRpb24gY2FuIG5vdCBiZSB0cnVzdGVkLgogLklQCiBJbiBnZW5lcmFsLCB0aGUgdG90YWwgbnVtYmVyIG9mIHJlc3BvbnNlcyB3aWxsIG5vdCBiZSBhbGxvd2VkIHRvCkBAIC0xMDUsOSArMTA1LDkgQEAKIGV4dGVuc2l2ZWx5IHRlc3RlZC4gIEl0IGFsc28gY29udGFpbnMgY29kZSBmb3Igc3VwcG9ydCBmb3IgYW4KIGV4cGVyaW1lbnRhbCBLZXJiZXJvcyBiYXNlZCBTTk1QdjMgdGhhdCBuZXZlciBnb3Qgc3RhbmRhcmRpemVkLgogLlBQCi1Ib3BlZnVsIG1vcmUgU05NUCBzb2Z0d2FyZSBhbmQgZGV2aWNlcyB3aWxsIGV2ZW50dWFsbHkgc3VwcG9ydCBTTk1QCitIb3BlZnVsbHkgbW9yZSBTTk1QIHNvZnR3YXJlIGFuZCBkZXZpY2VzIHdpbGwgZXZlbnR1YWxseSBzdXBwb3J0IFNOTVAKIG92ZXIgKEQpVExTIG9yIFNTSCwgYnV0IGl0IGlzIGxpa2VseSB0aGF0IGRldmljZXMgd2l0aCBvcmlnaW5hbAotc3VwcG9ydCBmb3IgU05NUCB3aWxsIG9ubHkgY29udGFpbiBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVVNNLiAgSWYgeW91cgorc3VwcG9ydCBmb3IgU05NUCB3aWxsIG9ubHkgY29udGFpbiBzdXBwb3J0IGZvciBVU00gdXNlcnMuICBJZiB5b3VyCiBuZXR3b3JrIG1hbmFnZXIgc3VwcG9ydHMgU05NUCBvdmVyIChEKVRMUyBvciBTTk1QIG92ZXIgU1NIIHdlIHN1Z2dlc3QKIHlvdSB1c2Ugb25lIG9mIHRoZXNlIG1lY2hhbmlzbXMgaW5zdGVhZCBvZiB1c2luZyBVU00sIGJ1dCBhcyBhbHdheXMKIHdpdGggTmV0LVNOTVAgd2UgZ2l2ZSB5b3UgdGhlIG9wdGlvbnMgdG8gcGljayBmcm9tIHNvIHlvdSBjYW4gbWFrZSB0aGUKQEAgLTE1OCwyMCArMTU4LDE0IEBACiBhICdbc25tcF0nIHRhZy4gIElmIHlvdSBwbGFjZSB0aGVzZSB0b2tlbnMgaW4geW91ciBzbm1wZC5jb25mIGZpbGUsCiB0aGlzIHRha2UgaXMgcmVxdWlyZWQuICBTZWUgdGhlIHNubXBfY29uZmlnKDUpIG1hbnVhbCBwYWdlIGZvciB0aGUKIG1lYW5pbmcgb2YgdGhpcyBjb250ZXh0IHN3aXRjaC4KLS5JUCAiW3NubXBdIHNlcnZlckNlcnQgPHNwZWNpZmllcj4iCisuSVAgIltzbm1wXSBsb2NhbENlcnQgPHNwZWNpZmllcj4iCiBUaGlzIHRva2VuIGRlZmluZXMgdGhlIGRlZmF1bHQgWC41MDkgcHVibGljIGtleSB0byB1c2UgYXMgdGhlIHNlcnZlcidzCiBpZGVudGl0eS4gIEl0IHNob3VsZCBlaXRoZXIgYmUgYSBmaW5nZXJwcmludCBvciBhIGZpbGVuYW1lLiAgVG8gY3JlYXRlCi1hIHB1YmxpYyBrZXkgZm9yIHVzZSwgcGxlYXNlIHJ1biB0aGUgIm5ldC1zbm1wLWNlcnQiIHV0aWxpdHkgd2hpY2gKK2EgcHVibGljIGtleSBmb3IgdXNlLCBwbGVhc2UgcnVuIHRoZSAibmV0XC1zbm1wXC1jZXJ0IiB1dGlsaXR5IHdoaWNoCiB3aWxsIGhlbHAgeW91IGNyZWF0ZSB0aGUgcmVxdWlyZWQgY2VydGlmaWNhdGUuCiAuSVAKIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGlzIHRoZSBjZXJ0aWZpY2F0ZSBpbiB0aGUgInNubXBkIiBuYW1lZAogY2VydGlmaWNhdGUgZmlsZS4KLS5JUCAiW3NubXBdIGNsaWVudENlcnQgPHNwZWNpZmllcj4iCi1JZiBvdXRnb2luZyBUTFMgY29ubmVjdGlvbnMgYXJlIHRvIGJlIG9wZW5lZCwgZm9yIGV4YW1wbGUgYmVjYXVzZQotbm90aWZpY2F0aW9ucyBhcmUgdG8gYmUgc2VudCBvdmVyIFRMUywgdGhlbiB0aGlzIHdpbGwgc2VsZWN0IHRoZQotY2xpZW50LXNpZGUgcHVibGljIGtleSB0byB1c2UgZm9yIHRob3NlIG91dGdvaW5nIGNvbm5lY3Rpb25zLiAgSXQgY2FuCi1laXRoZXIgYmUgc3BlY2lmaWVkIGFzIGEgZmluZ2VycHJpbnQgb3IgYSBmaWxlbmFtZS4gIFNlZSB0aGUKLSJuZXQtc25tcC1jZXJ0IiB1dGlsaXR5IGZvciBjcmVhdGluZyBjZXJ0aWZpY2F0ZXMuCiAuSVAgIltzbm1wXSB0bHNBbGdvcml0aG1zIDxhbGdvcml0aG1zPiIKIFRoaXMgc3RyaW5nIHdpbGwgc2VsZWN0IHRoZSBhbGdvcml0aG1zIHRvIHVzZSB3aGVuIG5lZ290aWF0aW5nCiBzZWN1cml0eSBkdXJpbmcgKEQpVExTIHNlc3Npb24gZXN0YWJsaXNobWVudC4gIFNlZSB0aGUgb3BlbnNzbCBtYW51YWwKQEAgLTE4MiwxMiArMTc2LDEyIEBACiBERUZBVUxUCiBBTEwKIEhJR0gKLUhJR0g6IUFFUzEyOC1TSEEKK0hJR0g6IUFFUzEyOFwtU0hBCiAuZmkKIC5SRQogLklQCiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyB3aGF0ZXZlciBvcGVuc3NsIGl0c2VsZiB3YXMgY29uZmlndXJlZCB3aXRoLgotLklQICJbc25tcF0geDA1OUNSTEZpbGUiCisuSVAgIltzbm1wXSB4NTA5Q1JMRmlsZSIKIElmIHlvdSBhcmUgdXNpbmcgYSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgKENBKSB0aGF0IHB1Ymxpc2hlcyBhCiBDZXJ0aWZpY2F0ZSBSZXZvY2F0aW9uIExpc3QgKENSTCkgdGhlbiB0aGlzIHRva2VuIGNhbiBiZSB1c2VkIHRvCiBzcGVjaWZ5IHRoZSBsb2NhdGlvbiBpbiB0aGUgZmlsZXN5c3RlbSBvZiBhIGNvcHkgb2YgdGhlIENSTCBmaWxlLgpAQCAtMTk3LDIyICsxOTEsMjIgQEAKIGJlIG5vdGljZWQgdXBvbiBhIHJlc3RhcnQgb2YgdGhlIHNubXBkIGFnZW50LgogCiAuSVAgImNlcnRTZWNOYW1lIFBSSU9SSVRZIEZJTkdFUlBSSU5UIE9QVElPTlMiCi1PUFRJT05TIGNhbiBiZSBvbmUgb2YgPC0tc24gU0VDTkFNRSB8IC0tcmZjODIyIHwgLS1kbnMgfCAtLWlwIHwgLS1jbiB8IC0tYW55Pi4KK09QVElPTlMgY2FuIGJlIG9uZSBvZiA8XC1cLXNuIFNFQ05BTUUgfCBcLVwtcmZjODIyIHwgXC1cLWRucyB8IFwtXC1pcCB8IFwtXC1jbiB8IFwtXC1hbnk+LgogLklQCiBUaGUgY2VydFNlY05hbWUgdG9rZW4gd2lsbCBzcGVjaWZ5IGhvdyB0byBtYXAgYSBjZXJ0aWZpY2F0ZSBmaWVsZCBmcm9tCi10aGUgY2xpZW50J3MgWC41MDkgY2VydGlmaWNhdGUgdG8gYSBTTk1QdjMgdXNlcm5hbWUuICBVc2UgdGhlIC0tc24KK3RoZSBjbGllbnQncyBYLjUwOSBjZXJ0aWZpY2F0ZSB0byBhIFNOTVB2MyB1c2VybmFtZS4gIFVzZSB0aGUgXC1cLXNuCiBTRUNOQU1FIGZsYWcgdG8gZGlyZWN0bHkgc3BlY2lmeSBhIHNlY3VyaXR5TmFtZSBmb3IgYSBnaXZlbgogY2VydGlmaWNhdGUuICBUaGUgb3RoZXIgZmxhZ3MgZXh0cmFjdCBhIHBhcnRpY3VsYXIgY29tcG9uZW50IG9mIHRoZQogY2VydGlmaWNhdGUgZm9yIHVzZSBhcyBhIHNubXB2MyBzZWN1cml0eU5hbWUuICBUaGVzZSBmaWVsZHMgYXJlIG9uZQotb2Y6IEEgU3ViamVjdEFsdE5hbWUgY29udGFpbmluZyBhbiByZmM4MjIgdmFsdWUgKGVnIGhhcmRha2VyQG5ldC1zbm1wLm9yZyksCi1BIFN1YmplY3RBbHROYW1lIGNvbnRhaW5pbmcgYSBkbnMgbmFtZSB2YWx1ZSAoZWcgZm9vLm5ldC1zbm1wLm9yZyksCitvZjogQSBTdWJqZWN0QWx0TmFtZSBjb250YWluaW5nIGFuIHJmYzgyMiB2YWx1ZSAoZWcgaGFyZGFrZXJAbmV0XC1zbm1wLm9yZyksCitBIFN1YmplY3RBbHROYW1lIGNvbnRhaW5pbmcgYSBkbnMgbmFtZSB2YWx1ZSAoZWcgZm9vLm5ldFwtc25tcC5vcmcpLAogYW4gSVAgYWRkcmVzcyAoZWcgMTkyLjAuMi4xKSBvciBhIGNvbW1vbiBuYW1lICJXZXMgSGFyZGFrZXIiLiAgVGhlCi0tLWFueSBmbGFnIHNwZWNpZmllcyB0aGF0IGFueSBvZiB0aGUgc3ViamVjQWx0TmFtZSBmaWVsZHMgbWF5IGJlCitcLVwtYW55IGZsYWcgc3BlY2lmaWVzIHRoYXQgYW55IG9mIHRoZSBzdWJqZWNBbHROYW1lIGZpZWxkcyBtYXkgYmUKIHVzZWQuICBNYWtlIHN1cmUgb25jZSBhIHNlY3VyaXR5TmFtZSBoYXMgYmVlbiBzZWxlY3RlZCB0aGF0IGl0IGlzCiBnaXZlbiBhdXRob3JpemF0aW9uIHZpYSB0aGUgVkFDTSBjb250cm9scyBkaXNjdXNzZWQgbGF0ZXIgaW4gdGhpcwogbWFudWFsIHBhZ2UuCiAuSVAKLVNlZSB0aGUgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvd2lraS9pbmRleC5waHAvVXNpbmdfRFRMUyB3ZWIgcGFnZSBmb3IKK1NlZSB0aGUgaHR0cDovL3d3dy5uZXRcLXNubXAub3JnL3dpa2kvaW5kZXgucGhwL1VzaW5nX0RUTFMgd2ViIHBhZ2UgZm9yCiBtb3JlIGRldGFpbGVkIGluc3RydWN0aW9ucyBmb3Igc2V0dGluZyB1cCAoRClUTFMuCiAuSVAgInRydXN0Q2VydCA8c3BlY2lmaWVyPiIKIEZvciBYNTA5IHRvIHByb3Blcmx5IHZlcmlmeSBhIGNlcnRpZmljYXRlLCBpdCBzaG91bGQgYmUgdmVyaWZpYWJsZSB1cApAQCAtMjI3LDcgKzIyMSw3IEBACiBjb25uZWN0aW9ucyBmcm9tIChEKVRMUyB0aGF0IHlvdSB1c2UgdGhlICJ0c20iIHNlY3VyaXR5IG1vZGVsLiAgRS5HLjoKIC5maQogCi1yd3VzZXIgLXMgdHNtIGhhcmRha2VyQG5ldC1zbm1wLm9yZworcnd1c2VyIFwtcyB0c20gaGFyZGFrZXJAbmV0XC1zbm1wLm9yZwogLmZpCiAuU1MgU05NUHYzIG92ZXIgU1NIIFN1cHBvcnQKIFRvIHVzZSBTU0gsIHlvdSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBzc2hkIHRvIGludm9rZSB0aGUgc3NodG9zbm1wCkBAIC0yNjUsMTAgKzI1OSwxMCBAQAogLlNTIFNOTVB2MyBVU00gVXNlcnMKIFRvIHVzZSB0aGUgVVNNIGJhc2VkIFNOTVB2My1zcGVjaWZpYyB1c2VycywgeW91J2xsIG5lZWQgdG8gY3JlYXRlCiB0aGVtLiAgSXQgaXMgcmVjb21tZW5kZWQgeW91Ci0uQiAidXNlIHRoZSBuZXQtc25tcC1jb25maWcgY29tbWFuZCIKKy5CICJ1c2UgdGhlIG5ldFwtc25tcFwtY29uZmlnIGNvbW1hbmQiCiB0byBkbyB0aGlzLCBidXQgeW91IGNhbiBhbHNvIGRvIGl0IGJ5IGRpcmVjdGx5IHNwZWNpZnlpbmcgY3JlYXRlVXNlcgogZGlyZWN0aXZlcyB5b3Vyc2VsZiBpbnN0ZWFkOgotLklQICJjcmVhdGVVc2VyIFstZSBFTkdJTkVJRF0gdXNlcm5hbWUgKE1ENXxTSEEpIGF1dGhwYXNzcGhyYXNlIFtERVN8QUVTXSBbcHJpdnBhc3NwaHJhc2VdIgorLklQICJjcmVhdGVVc2VyIFtcLWUgRU5HSU5FSURdIHVzZXJuYW1lIChNRDV8U0hBKSBhdXRocGFzc3BocmFzZSBbREVTfEFFU10gW3ByaXZwYXNzcGhyYXNlXSIKIC5JUAogTUQ1IGFuZCBTSEEgYXJlIHRoZSBhdXRoZW50aWNhdGlvbiB0eXBlcyB0byB1c2UuICBERVMgYW5kIEFFUyBhcmUgdGhlCiBwcml2YWN5IHByb3RvY29scyB0byB1c2UuICBJZiB0aGUgcHJpdmFjeQpAQCAtMjg4LDcgKzI4Miw3IEBACiBjb21tYW5kLgogLklQCiBJbnN0ZWFkIG9mIGZpZ3VyaW5nIG91dCBob3cgdG8gdXNlIHRoaXMgZGlyZWN0aXZlIGFuZCB3aGVyZSB0byBwdXQgaXQKLShzZWUgYmVsb3cpLCBqdXN0IHJ1biAibmV0LXNubXAtY29uZmlnIC0tY3JlYXRlLXNubXB2My11c2VyIiBpbnN0ZWFkLAorKHNlZSBiZWxvdyksIGp1c3QgcnVuICJuZXRcLXNubXBcLWNvbmZpZyBcLVwtY3JlYXRlXC1zbm1wdjNcLXVzZXIiIGluc3RlYWQsCiB3aGljaCB3aWxsIGFkZCBvbmUgb2YgdGhlc2UgbGluZXMgdG8gdGhlIHJpZ2h0IHBsYWNlLgogLklQCiBUaGlzIGRpcmVjdGl2ZSBzaG91bGQgYmUgcGxhY2VkIGludG8gdGhlCkBAIC0zMDEsMTIgKzI5NSwxMiBAQAogaXQgY2FuIGJlLgogLklQCiBJZiB5b3UgbmVlZCB0byBsb2NhbGl6ZSB0aGUgdXNlciB0byBhIHBhcnRpY3VsYXIgRW5naW5lSUQgKHRoaXMgaXMKLXVzZWZ1bCBtb3N0bHkgaW4gdGhlIHNpbWlsYXIgc25tcHRyYXBkLmNvbmYgZmlsZSksIHlvdSBjYW4gdXNlIHRoZSAtZQordXNlZnVsIG1vc3RseSBpbiB0aGUgc2ltaWxhciBzbm1wdHJhcGQuY29uZiBmaWxlKSwgeW91IGNhbiB1c2UgdGhlIFwtZQogYXJndW1lbnQgdG8gc3BlY2lmeSBhbiBFbmdpbmVJRCBhcyBhIGhleCB2YWx1ZSAoRUcsICIweDAxMDIwMzA0IikuCiAuSVAKIElmIHlvdSB3YW50IHRvIGdlbmVyYXRlIGVpdGhlciB5b3VyIG1hc3RlciBvciBsb2NhbGl6ZWQga2V5cyBkaXJlY3RseSwKLXJlcGxhY2UgdGhlIGdpdmVuIHBhc3N3b3JkIHdpdGggYSBoZXhzdHJpbmcgKHByZWNlZWRlZCBieSBhICIweCIpIGFuZAotcHJlY2VkZSB0aGUgaGV4IHN0cmluZyBieSBhIC1tIG9yIC1sIHRva2VuIChyZXNwZWN0aXZlbHkpLiAgRUdzOgorcmVwbGFjZSB0aGUgZ2l2ZW4gcGFzc3dvcmQgd2l0aCBhIGhleHN0cmluZyAocHJlY2VkZWQgYnkgYSAiMHgiKSBhbmQKK3ByZWNlZGUgdGhlIGhleCBzdHJpbmcgYnkgYSBcLW0gb3IgXC1sIHRva2VuIChyZXNwZWN0aXZlbHkpLiAgRUdzOgogLklQCiAuUlMKIC5uZgpAQCAtMzE0LDggKzMwOCw4IEBACiBjb3VudGluZyBwdXJwb3Nlcy4gIFBsZWFzZSBnZW5lcmF0ZSByYW5kb20ga2V5cyBpbnN0ZWFkIG9mIHVzaW5nCiB0aGVzZSBleGFtcGxlc10KIAotY3JlYXRlVXNlciBteXVzZXIgU0hBIC1sIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUwNjA3MDgwOSBBRVMgLWwgMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTAwMDEwMjAzMDQwNQotY3JlYXRlVXNlciBteXVzZXIgU0hBIC1tIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUwNjA3MDgwOSBBRVMgLW0gMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTAwMDEwMjAzMDQwNTA2MDcwODA5CitjcmVhdGVVc2VyIG15dXNlciBTSEEgXC1sIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUwNjA3MDgwOSBBRVMgXC1sIDB4MDAwMTAyMDMwNDA1MDYwNzA4MDkwMDAxMDIwMzA0MDUKK2NyZWF0ZVVzZXIgbXl1c2VyIFNIQSBcLW0gMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTAwMDEwMjAzMDQwNTA2MDcwODA5IEFFUyBcLW0gMHgwMDAxMDIwMzA0MDUwNjA3MDgwOTAwMDEwMjAzMDQwNTA2MDcwODA5CiAuZmkKIC5SRQogLklQCkBAIC0zMzMsOCArMzI3LDggQEAKIE1vc3Qgc2ltcGxlIGFjY2VzcyBjb250cm9sIHJlcXVpcmVtZW50cyBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIHRoZQogZGlyZWN0aXZlcyBcZklyb3VzZXJcZlIvXGZJcnd1c2VyXGZSIChmb3IgU05NUHYzKSBvcgogXGZJcm9jb21tdW5pdHlcZlIvXGZJcndjb21tdW5pdHlcZlIgKGZvciBTTk1QdjEgb3IgU05NUHYyYykuCi0uSVAgInJvdXNlciBbLXMgU0VDTU9ERUxdIFVTRVIgW25vYXV0aHxhdXRofHByaXYgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCi0uSVAgInJ3dXNlciBbLXMgU0VDTU9ERUxdICBVU0VSIFtub2F1dGh8YXV0aHxwcml2IFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJyb3VzZXIgW1wtcyBTRUNNT0RFTF0gVVNFUiBbbm9hdXRofGF1dGh8cHJpdiBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCisuSVAgInJ3dXNlciBbXC1zIFNFQ01PREVMXSAgVVNFUiBbbm9hdXRofGF1dGh8cHJpdiBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBzcGVjaWZ5IGFuIFNOTVB2MyB1c2VyIHRoYXQgd2lsbCBiZSBhbGxvd2VkIHJlYWQtb25seSAoR0VUIGFuZCBHRVRORVhUKQogb3IgcmVhZC13cml0ZSAoR0VULCBHRVRORVhUIGFuZCBTRVQpIGFjY2VzcyByZXNwZWN0aXZlbHkuCiBCeSBkZWZhdWx0LCB0aGlzIHdpbGwgcHJvdmlkZSBhY2Nlc3MgdG8gdGhlIGZ1bGwgT0lEIHRyZWUgZm9yIGF1dGhlbnRpY2F0ZWQKQEAgLTM1Myw4ICszNDcsOCBAQAogYWNjZXNzIGNvbnRyb2wgc2V0dGluZ3MpLiAgVGhlIGRlZmF1bHQgc2VjdXJpdHkgbW9kZWwgaXMgInVzbSIgYW5kIHRoZQogb3RoZXIgY29tbW9uIHNlY3VyaXR5IG1vZGVscyBhcmUgbGlrZWx5ICJ0c20iIHdoZW4gdXNpbmcgKEQpVExTIG9yIFNTSAogc3VwcG9ydCBhbmQgImtzbSIgaWYgdGhlIEtlcmJlcm9zIHN1cHBvcnQgaGFzIGJlZW4gY29tcGlsZWQgaW4uCi0uSVAgInJvY29tbXVuaXR5IENPTU1VTklUWSBbU09VUkNFIFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgotLklQICJyd2NvbW11bml0eSBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAicm9jb21tdW5pdHkgQ09NTVVOSVRZIFtTT1VSQ0UgW09JRCB8IFwtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJyd2NvbW11bml0eSBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBzcGVjaWZ5IGFuIFNOTVB2MSBvciBTTk1QdjJjIGNvbW11bml0eSB0aGF0IHdpbGwgYmUgYWxsb3dlZCByZWFkLW9ubHkKIChHRVQgYW5kIEdFVE5FWFQpIG9yIHJlYWQtd3JpdGUgKEdFVCwgR0VUTkVYVCBhbmQgU0VUKSBhY2Nlc3MgcmVzcGVjdGl2ZWx5LgogQnkgZGVmYXVsdCwgdGhpcyB3aWxsIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBmdWxsIE9JRCB0cmVlIGZvciBzdWNoIHJlcXVlc3RzLApAQCAtMzY0LDggKzM1OCw4IEBACiB0aGF0IGNvbW11bml0eSB0byB0aGUgc3VidHJlZSByb290ZWQgYXQgdGhlIGdpdmVuIE9JRCwgb3IgbmFtZWQgdmlldy4KIENvbnRleHRzIGFyZSB0eXBpY2FsbHkgbGVzcyByZWxldmFudCB0byBjb21tdW5pdHktYmFzZWQgU05NUCB2ZXJzaW9ucywKIGJ1dCB0aGUgc2FtZSBiZWhhdmlvdXIgYXBwbGllcyBoZXJlLgotLklQICJyb2NvbW11bml0eTYgQ09NTVVOSVRZIFtTT1VSQ0UgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCi0uSVAgInJ3Y29tbXVuaXR5NiBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAicm9jb21tdW5pdHk2IENPTU1VTklUWSBbU09VUkNFIFtPSUQgfCBcLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAicndjb21tdW5pdHk2IENPTU1VTklUWSBbU09VUkNFIFtPSUQgfCBcLVYgVklFVyBbQ09OVEVYVF1dXSIKIGFyZSBkaXJlY3RpdmVzIHJlbGF0aW5nIHRvIHJlcXVlc3RzIHJlY2VpdmVkIHVzaW5nIElQdjYKIChpZiB0aGUgYWdlbnQgc3VwcG9ydHMgc3VjaCB0cmFuc3BvcnQgZG9tYWlucykuCiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIFNPVVJDRSwgT0lELCBWSUVXIGFuZCBDT05URVhUIHRva2VucyBhcmUgZXhhY3RseQpAQCAtMzg3LDEwICszODEsMTAgQEAKIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcy4KIC5TUyBWQUNNIENvbmZpZ3VyYXRpb24KIFRoZSBmdWxsIGZsZXhpYmlsaXR5IG9mIHRoZSBWQUNNIGlzIGF2YWlsYWJsZSB1c2luZyBmb3VyIGNvbmZpZ3VyYXRpb24KLWRpcmVjdGl2ZXMgLSBcZkljb20yc2VjXGZSLCBcZklncm91cFxmUiwgXGZJdmlld1xmUiBhbmQgXGZJYWNjZXNzXGZSLgorZGlyZWN0aXZlcyBcLSBcZkljb20yc2VjXGZSLCBcZklncm91cFxmUiwgXGZJdmlld1xmUiBhbmQgXGZJYWNjZXNzXGZSLgogVGhlc2UgcHJvdmlkZSBkaXJlY3QgY29uZmlndXJhdGlvbiBvZiB0aGUgdW5kZXJseWluZyBWQUNNIHRhYmxlcy4KLS5JUCAiY29tMnNlYyAgWy1DbiBDT05URVhUXSBTRUNOQU1FIFNPVVJDRSBDT01NVU5JVFkiCi0uSVAgImNvbTJzZWM2IFstQ24gQ09OVEVYVF0gU0VDTkFNRSBTT1VSQ0UgQ09NTVVOSVRZIgorLklQICJjb20yc2VjICBbXC1DbiBDT05URVhUXSBTRUNOQU1FIFNPVVJDRSBDT01NVU5JVFkiCisuSVAgImNvbTJzZWM2IFtcLUNuIENPTlRFWFRdIFNFQ05BTUUgU09VUkNFIENPTU1VTklUWSIKIG1hcCBhbiBTTk1QdjEgb3IgU05NUHYyYyBjb21tdW5pdHkgc3RyaW5nIHRvIGEgc2VjdXJpdHkgbmFtZSAtIGVpdGhlciBmcm9tCiBhIHBhcnRpY3VsYXIgcmFuZ2Ugb2Ygc291cmNlIGFkZHJlc3Nlcywgb3IgZ2xvYmFsbHkgKFxmSSJkZWZhdWx0IlxmUikuCiBBIHJlc3RyaWN0ZWQgc291cmNlIGNhbiBlaXRoZXIgYmUgYSBzcGVjaWZpYyBob3N0bmFtZSAob3IgYWRkcmVzcyksIG9yCkBAIC00MDIsMTAgKzM5NiwxMCBAQAogY29tYmluYXRpb24gdGhhdCBtYXRjaGVzIHRoZSBpbmNvbWluZyByZXF1ZXN0IHdpbGwgYmUgc2VsZWN0ZWQuCiBWYXJpb3VzIHNvdXJjZS9jb21tdW5pdHkgY29tYmluYXRpb25zIGNhbiBhbHNvIG1hcCB0byB0aGUgc2FtZSBzZWN1cml0eSBuYW1lLgogLklQCi1JZiBhIENPTlRFWFQgaXMgc3BlY2lmaWVkICh1c2luZyBcZkktQ25cZlIpLCB0aGUgY29tbXVuaXR5IHN0cmluZyB3aWxsIGJlCitJZiBhIENPTlRFWFQgaXMgc3BlY2lmaWVkICh1c2luZyBcZklcLUNuXGZSKSwgdGhlIGNvbW11bml0eSBzdHJpbmcgd2lsbCBiZQogbWFwcGVkIHRvIGEgc2VjdXJpdHkgbmFtZSBpbiB0aGUgbmFtZWQgU05NUHYzIGNvbnRleHQuIE90aGVyd2lzZSB0aGUKIGRlZmF1bHQgY29udGV4dCAoIiIpIHdpbGwgYmUgdXNlZC4KLS5JUCAiY29tMnNlY3VuaXggWy1DbiBDT05URVhUXSBTRUNOQU1FIFNPQ0tQQVRIIENPTU1VTklUWSIKKy5JUCAiY29tMnNlY3VuaXggW1wtQ24gQ09OVEVYVF0gU0VDTkFNRSBTT0NLUEFUSCBDT01NVU5JVFkiCiBpcyB0aGUgVW5peCBkb21haW4gc29ja2V0cyB2ZXJzaW9uIG9mIFxmSWNvbTJzZWNcZlIuCiAuSVAgImdyb3VwIEdST1VQIHt2MXx2MmN8dXNtfHRzbXxrc219IFNFQ05BTUUiCiBtYXBzIGEgc2VjdXJpdHkgbmFtZSAoaW4gdGhlIHNwZWNpZmllZCBzZWN1cml0eSBtb2RlbCkgaW50bwpAQCAtNDcxLDcgKzQ2NSw3IEBACiBjb25jZXJuZWQsIHRoZSB0d28gbWFpbiB2aWV3IHR5cGVzIGFyZSBcZklyZWFkXGZSIGFuZCBcZkl3cml0ZVxmUiwKIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFJFQUQgYW5kIFdSSVRFIHZpZXdzIG9mIHRoZSBtYWluIFxmSWFjY2Vzc1xmUiBkaXJlY3RpdmUuCiBTZWUgdGhlICdzbm1wdHJhcGQuY29uZig1KScgbWFuIHBhZ2UgZm9yIGRpc2N1c3Npb24gb2Ygb3RoZXIgdmlldyB0eXBlcy4KLS5JUCAiYXV0aGNvbW11bml0eSBUWVBFUyAgQ09NTVVOSVRZICAgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAiYXV0aGNvbW11bml0eSBUWVBFUyAgQ09NTVVOSVRZICAgW1NPVVJDRSBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBpcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgXGZJcm9jb21tdW5pdHlcZlIvXGZJcndjb21tdW5pdHlcZlIgZGlyZWN0aXZlcy4KIFRZUEVTIHdpbGwgdXN1YWxseSBiZSBcZklyZWFkXGZSIG9yIFxmSXJlYWQsd3JpdGVcZlIgcmVzcGVjdGl2ZWx5LgogVGhlIHZpZXcgc3BlY2lmaWNhdGlvbiBjYW4gZWl0aGVyIGJlIGFuIE9JRCBzdWJ0cmVlIChhcyBiZWZvcmUpLApAQCAtNDgwLDIwICs0NzQsMjAgQEAKIHRoZW4gYWNjZXNzIHdpbGwgYmUgYWxsb3dlZCB0byB0aGUgZnVsbCBPSUQgdHJlZS4KIElmIENPTlRFWFQgaXMgc3BlY2lmaWVkLCBhY2Nlc3MgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhpcyBTTk1QdjMgY29udGV4dC4KIE90aGVyd2lzZSB0aGUgZGVmYXVsdCBjb250ZXh0ICgiIikgaXMgdXNlZC4KLS5JUCAiYXV0aHVzZXIgICBUWVBFUyBbLXMgTU9ERUxdIFVTRVIgIFtMRVZFTCBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKKy5JUCAiYXV0aHVzZXIgICBUWVBFUyBbXC1zIE1PREVMXSBVU0VSICBbTEVWRUwgW09JRCB8IFwtViBWSUVXIFtDT05URVhUXV1dIgogaXMgYW4gYWx0ZXJuYXRpdmUgdG8gdGhlIFxmSXJvdXNlclxmUi9cZklyd3VzZXJcZlIgZGlyZWN0aXZlcy4KIFRoZSBmaWVsZHMgVFlQRVMsIE9JRCwgVklFVyBhbmQgQ09OVEVYVCBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCiBcZklhdXRoY29tbXVuaXR5XGZSLgotLklQICJhdXRoZ3JvdXAgIFRZUEVTIFstcyBNT0RFTF0gR1JPVVAgW0xFVkVMIFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJhdXRoZ3JvdXAgIFRZUEVTIFtcLXMgTU9ERUxdIEdST1VQIFtMRVZFTCBbT0lEIHwgXC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBpcyBhIGNvbXBhbmlvbiB0byB0aGUgXGZJYXV0aHVzZXJcZlIgZGlyZWN0aXZlLCBzcGVjaWZ5aW5nIGFjY2VzcwogZm9yIGEgcGFydGljdWxhciBncm91cCAoZGVmaW5lZCB1c2luZyB0aGUgXGZJZ3JvdXBcZlIgZGlyZWN0aXZlIGFzIHVzdWFsKS4KIEJvdGggXGZJYXV0aHVzZXJcZlIgYW5kIFxmSWF1dGhncm91cFxmUiBkZWZhdWx0IHRvIGF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMgLQogTEVWRUwgY2FuIGFsc28gYmUgc3BlY2lmaWVkIGFzIFxmSW5vYXV0aFxmUiBvciBcZklwcml2XGZSIHRvIGFsbG93CiB1bmF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMsIG9yIHJlcXVpcmUgZW5jcnlwdGlvbiByZXNwZWN0aXZlbHkuCiBCb3RoIFxmSWF1dGh1c2VyXGZSIGFuZCBcZklhdXRoZ3JvdXBcZlIgZGlyZWN0aXZlcyBhbHNvIGRlZmF1bHQgdG8gY29uZmlndXJpbmcKLWFjY2VzcyBmb3IgU05NUHYzL1VTTSByZXF1ZXN0cyAtIHVzZSB0aGUgJy1zJyBmbGFnIHRvIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUKK2FjY2VzcyBmb3IgU05NUHYzL1VTTSByZXF1ZXN0cyAtIHVzZSB0aGUgJ1wtcycgZmxhZyB0byBzcGVjaWZ5IGFuIGFsdGVybmF0aXZlCiBzZWN1cml0eSBtb2RlbCAodXNpbmcgdGhlIHNhbWUgdmFsdWVzIGFzIGZvciBcZklhY2Nlc3NcZlIgYWJvdmUpLgotLklQICJhdXRoYWNjZXNzIFRZUEVTIFstcyBNT0RFTF0gR1JPVVAgVklFVyBbTEVWRUwgW0NPTlRFWFRdXSIKKy5JUCAiYXV0aGFjY2VzcyBUWVBFUyBbXC1zIE1PREVMXSBHUk9VUCBWSUVXIFtMRVZFTCBbQ09OVEVYVF1dIgogYWxzbyBjb25maWd1cmVzIHRoZSBhY2Nlc3MgZm9yIGEgcGFydGljdWxhciBncm91cCwKIHNwZWNpZnlpbmcgdGhlIG5hbWUgYW5kIHR5cGUgb2YgdmlldyB0byBhcHBseS4gVGhlIE1PREVMIGFuZCBMRVZFTCBmaWVsZHMKIGFyZSBpbnRlcnByZXRlZCBpbiB0aGUgc2FtZSB3YXkgYXMgZm9yIFxmSWF1dGhncm91cFxmUi4KQEAgLTUxOSw3ICs1MTMsNyBAQAogLklQICJzeXNOYW1lIFNUUklORyIKIHNldCB0aGUgc3lzdGVtIGxvY2F0aW9uLCBzeXN0ZW0gY29udGFjdCBvciBzeXN0ZW0gbmFtZQogKFxmQ3N5c0xvY2F0aW9uLjBcZlIsIFxmQ3N5c0NvbnRhY3QuMFxmUiBhbmQgXGZDc3lzTmFtZS4wXGZSKSBmb3IgdGhlIGFnZW50IHJlc3BlY3RpdmVseS4KLU9yZGluYXJpbHkgdGhlc2Ugb2JqZWN0cyBhcmUgd3JpdGVhYmxlIHZpYSBzdWl0YWJseSBhdXRob3JpemVkIFNOTVAgU0VUCitPcmRpbmFyaWx5IHRoZXNlIG9iamVjdHMgYXJlIHdyaXRhYmxlIHZpYSBzdWl0YWJseSBhdXRob3JpemVkIFNOTVAgU0VUCiByZXF1ZXN0cy4gIEhvd2V2ZXIsIHNwZWNpZnlpbmcgb25lIG9mIHRoZXNlIGRpcmVjdGl2ZXMgbWFrZXMgdGhlCiBjb3JyZXNwb25kaW5nIG9iamVjdCByZWFkLW9ubHksIGFuZCBhdHRlbXB0cyB0byBTRVQgaXQgd2lsbCByZXN1bHQgaW4KIGEgXGZJbm90V3JpdGFibGVcZlIgZXJyb3IgcmVzcG9uc2UuCkBAIC01MzcsNyArNTMxLDcgQEAKIC5JUCAiaW50ZXJmYWNlIE5BTUUgVFlQRSBTUEVFRCIKIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgYXBwcm9wcmlhdGUgdHlwZSBhbmQgc3BlZWQgc2V0dGluZ3MgZm9yCiBpbnRlcmZhY2VzIHdoZXJlIHRoZSBhZ2VudCBmYWlscyB0byBkZXRlcm1pbmUgdGhpcyBpbmZvcm1hdGlvbiBjb3JyZWN0bHkuCi1UWVBFIGlzIGEgdHlwZSB2YWx1ZSBhcyBnaXZlbiBpbiB0aGUgSUFOQWlmVHlwZS1NSUIsCitUWVBFIGlzIGEgdHlwZSB2YWx1ZSBhcyBnaXZlbiBpbiB0aGUgSUFOQWlmVHlwZVwtTUlCLAogYW5kIGNhbiBiZSBzcGVjaWZpZWQgbnVtZXJpY2FsbHkgb3IgYnkgbmFtZSAoYXNzdW1pbmcgdGhpcyBNSUIgaXMgbG9hZGVkKS4KIC5JUCAiaW50ZXJmYWNlX2ZhZGVvdXQgVElNRU9VVCIKIHNwZWNpZmllcywgZm9yIGhvdyBsb25nIHRoZSBhZ2VudCBrZWVwcyBlbnRyaWVzIGluIFxmQ2lmVGFibGVcZlIgYWZ0ZXIKQEAgLTU5MCwxMyArNTg0LDMyIEBACiBhcyAnRml4ZWQgRGlza3MnLCBhbmQgdGhpcyBpcyBzdGlsbCB0aGUgZGVmYXVsdCBiZWhhdmlvdXIuCiBTZXR0aW5nIHRoaXMgZGlyZWN0aXZlIHRvICcxJyByZXBvcnRzIHN1Y2ggZmlsZSBzeXN0ZW1zIGFzCiBcJ05ldHdvcmsgRGlza3MnLCBhcyByZXF1aXJlZCBieSB0aGUgSG9zdCBSZXNvdXJjZXMgTUlCLgorLklQICJyZWFsU3RvcmFnZVVuaXRzIgorY29udHJvbGxzIGhvdyB0aGUgYWdlbnQgcmVwb3J0cyBoclN0b3JhZ2VBbGxvY2F0aW9uVW5pdHMsIGhyU3RvcmFnZVNpemUgYW5kCitoclN0b3JhZ2VVc2VkIGluIGhyU3RvcmFnZVRhYmxlLgorRm9yIGJpZyBzdG9yYWdlIGRyaXZlcyB3aXRoIHNtYWxsIGFsbG9jYXRpb24gdW5pdHMgdGhlIGFnZW50IHJlLWNhbGN1bGF0ZXMKK3RoZXNlIHZhbHVlcyBzbyB0aGV5IGFsbCBmaXQgSW50ZWdlcjMyIGFuZAoraHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzIHggaHJTdG9yYWdlU2l6ZQorZ2l2ZXMgcmVhbCBzaXplIG9mIHRoZSBzdG9yYWdlLgorLlJTCisuSVAgIkV4YW1wbGU6IgorTGludXggeGZzIDE2VEIgZmlsZXN5c3RlbSB3aXRoIDQwOTYgYnl0ZXMgbGFyZ2UgYmxvY2tzIHdpbGwgYmUKK3JlcG9ydGVkIGFzICBoclN0b3JhZ2VBbGxvY2F0aW9uVW5pdHMgPSA4MTkyIGFuZCBoclN0b3JhZ2VTaXplID0gMjE0NzQ4MzY0NywKK3NvIDgxOTIgeCAyMTQ3NDgzNjQ3IGdpdmVzIHJlYWwgc2l6ZSBvZiB0aGUgZmlsZXN5c3RlbSAoPTE2IFRCKS4KKy5SRQorLklQCitTZXR0aW5nIHRoaXMgZGlyZWN0aXZlIHRvICcxJyB0dXJucyBvZmYKK3RoaXMgY2FsY3VsYXRpb24gYW5kIHRoZSBhZ2VudCByZXBvcnRzIHJlYWwgaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzLCBidXQgaXQKK21pZ2h0IHJlcG9ydCB3cm9uZyBoclN0b3JhZ2VTaXplIGZvciBiaWcgZHJpdmVzIGJlY2F1c2UgdGhlIHZhbHVlIHdvbid0IGZpdCBpbnRvCitJbnRlZ2VyMzIuIEluIHRoaXMgY2FzZSwgaHJTdG9yYWdlQWxsb2NhdGlvblVuaXRzIHggaHJTdG9yYWdlU2l6ZSB3b24ndCBnaXZlCityZWFsIHNpemUgb2YgdGhlIHN0b3JhZ2UuCiAuU1MgUHJvY2VzcyBNb25pdG9yaW5nIAogVGhlIFxmQ2hyU1dSdW5cZlIgZ3JvdXAgb2YgdGhlIEhvc3QgUmVzb3VyY2VzIE1JQiBwcm92aWRlcwogaW5mb3JtYXRpb24gYWJvdXQgaW5kaXZpZHVhbCBwcm9jZXNzZXMgcnVubmluZyBvbiB0aGUgbG9jYWwgc3lzdGVtLgotVGhlIFxmQ3ByVGFibGVcZlIgb2YgdGhlIFVDRC1TTk1QLU1JQiBjb21wbGVtZW50cyB0aGlzIGJ5IHJlcG9ydGluZworVGhlIFxmQ3ByVGFibGVcZlIgb2YgdGhlIFVDRFwtU05NUFwtTUlCIGNvbXBsZW1lbnRzIHRoaXMgYnkgcmVwb3J0aW5nCiBvbiBzZWxlY3RlZCBzZXJ2aWNlcyAod2hpY2ggbWF5IGludm9sdmUgbXVsdGlwbGUgcHJvY2Vzc2VzKS4KIFRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgYWdlbnQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlCi1cZkl1Y2Qtc25tcC9wcm9jXGZSIG1vZHVsZSAod2hpY2ggaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUKK1xmSXVjZFwtc25tcC9wcm9jXGZSIG1vZHVsZSAod2hpY2ggaXMgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUKIGRlZmF1bHQgYnVpbGQgY29uZmlndXJhdGlvbikuCiAuSVAgInByb2MgTkFNRSBbTUFYIFtNSU5dXSIKIG1vbml0b3JzIHRoZSBudW1iZXIgb2YgcHJvY2Vzc2VzIGNhbGxlZCBOQU1FIChhcyByZXBvcnRlZCBieSBQU0NNRCkKQEAgLTYzNSw3ICs2NDgsNyBAQAogXGZDcHJUYWJsZVxmUiB3aWxsIGZhaWwgKFxmSW5vU3VjaE9iamVjdFxmSSkuCiAuU1MgRGlzayBVc2FnZSBNb25pdG9yaW5nCiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQotXGZJdWNkLXNubXAvZGlza1xmUiBtb2R1bGUgKHdoaWNoIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCitcZkl1Y2RcLXNubXAvZGlza1xmUiBtb2R1bGUgKHdoaWNoIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCiBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24pLgogLklQICJkaXNrIFBBVEggWyBNSU5TUEFDRSB8IE1JTlBFUkNFTlQlIF0iCiBtb25pdG9ycyB0aGUgZGlzayBtb3VudGVkIGF0IFBBVEggZm9yIGF2YWlsYWJsZSBkaXNrIHNwYWNlLgpAQCAtNjgxLDcgKzY5NCw3IEBACiB0aGVuIHdhbGtpbmcgdGhlIFxmQ2Rza1RhYmxlXGZSIHdpbGwgZmFpbCAoXGZJbm9TdWNoT2JqZWN0XGZJKS4KIC5TUyBEaXNrIEkvTyBNb25pdG9yaW5nCiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQotXGZJdWNkLXNubXAvZGlza2lvXGZSIG1vZHVsZSAod2hpY2ggaXMgbm90IGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCitcZkl1Y2RcLXNubXAvZGlza2lvXGZSIG1vZHVsZSAod2hpY2ggaXMgbm90IGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCiBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24pLgogLlBQCiBCeSBkZWZhdWx0LCBhbGwgYmxvY2sgZGV2aWNlcyBrbm93biB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbSBhcmUKQEAgLTcwMyw3ICs3MTYsNyBAQAogInJhbTAiCiAuU1MgU3lzdGVtIExvYWQgTW9uaXRvcmluZwogVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciBlaXRoZXIgdGhlCi1cZkl1Y2Qtc25tcC9sb2FkYXZlXGZSIG1vZHVsZSBvciB0aGUgXGZJdWNkLXNubXAvbWVtb3J5XGZSIG1vZHVsZQorXGZJdWNkXC1zbm1wL2xvYWRhdmVcZlIgbW9kdWxlIG9yIHRoZSBcZkl1Y2RcLXNubXAvbWVtb3J5XGZSIG1vZHVsZQogcmVzcGVjdGl2ZWx5IChib3RoIG9mIHdoaWNoIGFyZSBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQogZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KIC5JUCAibG9hZCBNQVgxIFtNQVg1IFtNQVgxNV1dIgpAQCAtNzMwLDcgKzc0Myw3IEBACiAuUFAKIFVubGlrZSB0aGUgXGZJcHJvY1xmUiBhbmQgXGZJZGlza1xmUiBkaXJlY3RpdmVzLCB3YWxraW5nIHRoZQogd2Fsa2luZyB0aGUgXGZDbGFUYWJsZVxmUiB3aWxsIHN1Y2NlZWQgKGFzc3VtaW5nIHRoZQotXGZJdWNkLXNubXAvbG9hZGF2ZVxmUiBtb2R1bGUgd2FzIGNvbmZpZ3VyZWQgaW50byB0aGUgYWdlbnQpLAorXGZJdWNkXC1zbm1wL2xvYWRhdmVcZlIgbW9kdWxlIHdhcyBjb25maWd1cmVkIGludG8gdGhlIGFnZW50KSwKIGV2ZW4gaWYgdGhlIFxmSWxvYWRcZlIgZGlyZWN0aXZlIGlzIG5vdCBwcmVzZW50LgogLklQICJzd2FwIE1JTiAiCiBtb25pdG9ycyB0aGUgYW1vdW50IG9mIHN3YXAgc3BhY2UgYXZhaWxhYmxlIG9uIHRoZSBsb2NhbCBzeXN0ZW0uCkBAIC03NDUsNyArNzU4LDcgQEAKIElmIHRoaXMgZGlyZWN0aXZlIGlzIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHRocmVzaG9sZCBpcyAxNiBNQi4KIC5TUyBMb2cgRmlsZSBNb25pdG9yaW5nCiBUaGlzIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIGVpdGhlciB0aGUKLVxmSXVjZC1zbm1wL2ZpbGVcZlIgb3IgXGZJdWNkLXNubXAvbG9nbWF0Y2hcZlIgbW9kdWxlcyByZXNwZWN0aXZlbHkKK1xmSXVjZFwtc25tcC9maWxlXGZSIG9yIFxmSXVjZFwtc25tcC9sb2dtYXRjaFxmUiBtb2R1bGVzIHJlc3BlY3RpdmVseQogKGJvdGggb2Ygd2hpY2ggYXJlIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCiBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24pLgogLklQICJmaWxlIEZJTEUgW01BWFNJWkVdIgpAQCAtNzcyLDcgKzc4NSw3IEBACiAuUlMKIC5JUCBOQU1FCiBuYW1lIG9mIHRoZSBsb2dtYXRjaCBpbnN0YW5jZSAod2lsbCBhcHBlYXIgYXMgbG9nTWF0Y2hOYW1lIHVuZGVyCi1sb2dNYXRjaC9sb2dNYXRjaFRhYmxlL2xvZ01hdGNoRW50cnkvbG9nTWF0Y2hOYW1lIGluIHRoZSB1Y2Qtc25tcCBNSUIgdHJlZSkKK2xvZ01hdGNoL2xvZ01hdGNoVGFibGUvbG9nTWF0Y2hFbnRyeS9sb2dNYXRjaE5hbWUgaW4gdGhlIHVjZFwtc25tcCBNSUIgdHJlZSkKIC5JUCBGSUxFCiBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBsb2dmaWxlIHRvIGJlIG1vbml0b3JlZC4gTm90ZSB0aGF0IHRoaXMgcGF0aAogY2FuIGNvbnRhaW4gZGF0ZS90aW1lIGRpcmVjdGl2ZXMgKGxpa2UgaW4gdGhlIFVOSVggJ2RhdGUnIGNvbW1hbmQpLiBTZWUgdGhlCkBAIC03OTAsMTIgKzgwMywxMiBAQAogRXhhbXBsZToKIC5SUwogLklQCi1sb2dtYXRjaCBhcGFjaGUtR0VUcyAvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzcy5sb2ctJVktJW0tJWQgNjAgR0VULipIVFRQLioKK2xvZ21hdGNoIGFwYWNoZVwtR0VUcyAvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzcy5sb2dcLSVZXC0lbVwtJWQgNjAgR0VULipIVFRQLioKIC5JUAotVGhpcyBsb2dtYXRjaCBpbnN0YW5jZSBpcyBuYW1lZCAnYXBhY2hlLUdFVHMnLCB1c2VzICdHRVQuKkhUVFAuKicgYXMgaXRzCitUaGlzIGxvZ21hdGNoIGluc3RhbmNlIGlzIG5hbWVkICdhcGFjaGVcLUdFVHMnLCB1c2VzICdHRVQuKkhUVFAuKicgYXMgaXRzCiByZWd1bGFyIGV4cHJlc3Npb24gYW5kIGl0IHdpbGwgbW9uaXRvciB0aGUgZmlsZSBuYW1lZAotKGFzc3VtaW5nIHRvZGF5IGlzIE1heSA2dGggMjAwOSk6ICcvdXNyL2xvY2FsL2FwYWNoZS9sb2dzL2FjY2Vzcy5sb2ctMjAwOS0wNS0wNicsCi10b21vcnJvdyBpdCB3aWxsIGxvb2sgZm9yICdhY2Nlc3MubG9nLTIwMDktMDUtMDcnLiBUaGUgbG9nZmlsZSBpcyByZWFkIGV2ZXJ5IDYwCisoYXNzdW1pbmcgdG9kYXkgaXMgTWF5IDZ0aCAyMDA5KTogJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvYWNjZXNzLmxvZ1wtMjAwOVwtMDVcLTA2JywKK3RvbW9ycm93IGl0IHdpbGwgbG9vayBmb3IgJ2FjY2Vzcy5sb2dcLTIwMDlcLTA1XC0wNycuIFRoZSBsb2dmaWxlIGlzIHJlYWQgZXZlcnkgNjAKIHNlY29uZHMuCiAuUkUKIC5JUApAQCAtODUwLDEyICs4NjMsMTIgQEAKIC5JICJTTk1QQ01EX0FSR1MiCiBzaG91bGQgYmUgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIHJlcXVpcmVkIGZvciBhbiBlcXVpdmFsZW50CiBcZklzbm1wdHJhcFxmUiAob3IgXGZJc25tcGluZm9ybVxmUikgY29tbWFuZCB0byBzZW5kIHRoZSBkZXNpcmVkIG5vdGlmaWNhdGlvbi4KLVRoZSBvcHRpb24gXGZJLUNpXGZSIGNhbiBiZSB1c2VkICh3aXRoIFxmSS12MmNcZlIgb3IgXGZJLXYzXGZSKSB0byBnZW5lcmF0ZQorVGhlIG9wdGlvbiBcZklcLUNpXGZSIGNhbiBiZSB1c2VkICh3aXRoIFxmSVwtdjJjXGZSIG9yIFxmSVwtdjNcZlIpIHRvIGdlbmVyYXRlCiBhbiBJTkZPUk0gbm90aWZpY2F0aW9uIHJhdGhlciB0aGFuIGFuIHVuYWNrbm93bGVkZ2VkIFRSQVAuCiAuSVAKIFRoaXMgaXMgdGhlIGFwcHJvcHJpYXRlIGRpcmVjdGl2ZSBmb3IgZGVmaW5pbmcgU05NUHYzIHRyYXAgcmVjZWl2ZXJzLgogU2VlCi1odHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC90dXRvcmlhbC01L2NvbW1hbmRzL3NubXB0cmFwLXYzLmh0bWwKK2h0dHA6Ly93d3cubmV0XC1zbm1wLm9yZy90dXRvcmlhbC90dXRvcmlhbFwtNS9jb21tYW5kcy9zbm1wdHJhcFwtdjMuaHRtbAogZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgU05NUHYzIG5vdGlmaWNhdGlvbiBiZWhhdmlvdXIuCiAuSVAgImF1dGh0cmFwZW5hYmxlIHsxfDJ9IgogZGV0ZXJtaW5lcyB3aGV0aGVyIHRvIGdlbmVyYXRlIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUgdHJhcHMKQEAgLTk1Nyw0NyArOTcwLDQ5IEBACiBUaGVyZSBhcmUgdmFyaW91cyBvcHRpb25zIHRvIGNvbnRyb2wgdGhlIGJlaGF2aW91ciBvZiB0aGUgbW9uaXRvcmVkCiBleHByZXNzaW9uLiAgVGhlc2UgaW5jbHVkZToKIC5SUwotLklQICItRCIKKy5JUCAiXC1EIgogaW5kaWNhdGVzIHRoYXQgdGhlIGV4cHJlc3Npb24gc2hvdWxkIGJlIGV2YWx1YXRlZCB1c2luZyBkZWx0YSBkaWZmZXJlbmNlcwogYmV0d2VlbiBzYW1wbGUgdmFsdWVzIChyYXRoZXIgdGhhbiB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMpLgotLklQICItZCBPSUQiCi0uSVAgIi1kaSBPSUQiCisuSVAgIlwtZCBPSUQiCisuSVAgIlwtZGkgT0lEIgogc3BlY2lmaWVzIGEgZGlzY29udGludWl0eSBtYXJrZXIgZm9yIHZhbGlkYXRpbmcgZGVsdGEgZGlmZmVyZW5jZXMuCi1BIFxmSS1kaVxmUiBvYmplY3QgaW5zdGFuY2Ugd2lsbCBiZSB1c2VkIGV4YWN0bHkgYXMgZ2l2ZW4uCi1BIFxmSS1kXGZSIG9iamVjdCB3aWxsIGhhdmUgdGhlIGluc3RhbmNlIHN1YmlkZW50aWZpZXJzIGZyb20gdGhlCitBIFxmSVwtZGlcZlIgb2JqZWN0IGluc3RhbmNlIHdpbGwgYmUgdXNlZCBleGFjdGx5IGFzIGdpdmVuLgorQSBcZklcLWRcZlIgb2JqZWN0IHdpbGwgaGF2ZSB0aGUgaW5zdGFuY2Ugc3ViaWRlbnRpZmllcnMgZnJvbSB0aGUKIGNvcnJlc3BvbmRpbmcgKHdpbGRjYXJkZWQpIGV4cHJlc3Npb24gb2JqZWN0IGFwcGVuZGVkLgotSWYgdGhlIFxmSS1JXGZSIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UKK0lmIHRoZSBcZklcLUlcZlIgZmxhZyBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlcmUgaXMgbm8gZGlmZmVyZW5jZQogYmV0d2VlbiB0aGVzZSB0d28gb3B0aW9ucy4KIC5JUAotVGhpcyBvcHRpb24gYWxzbyBpbXBsaWVzIFxmSS1EXGZSLgotLklQICItZSBFVkVOVCIKK1RoaXMgb3B0aW9uIGFsc28gaW1wbGllcyBcZklcLURcZlIuCisuSVAgIlwtZSBFVkVOVCIKIHNwZWNpZmllcyB0aGUgZXZlbnQgdG8gYmUgaW52b2tlZCB3aGVuIHRoaXMgbW9uaXRvciBlbnRyeSBpcyB0cmlnZ2VyZWQuCiBJZiB0aGlzIG9wdGlvbiBpcyBub3QgZ2l2ZW4sIHRoZSBtb25pdG9yIGVudHJ5IHdpbGwgZ2VuZXJhdGUgb25lCi1vZiB0aGUgc3RhbmRhcmQgbm90aWZpY2F0aW9ucyBkZWZpbmVkIGluIHRoZSBESVNNQU4tRVZFTlQtTUlCLgotLklQICItSSIKK29mIHRoZSBzdGFuZGFyZCBub3RpZmljYXRpb25zIGRlZmluZWQgaW4gdGhlIERJU01BTlwtRVZFTlRcLU1JQi4KKy5JUCAiXC1JIgogaW5kaWNhdGVzIHRoYXQgdGhlIG1vbml0b3JlZCBleHByZXNzaW9uIHNob3VsZCBiZSBhcHBsaWVkIHRvIHRoZQogc3BlY2lmaWVkIE9JRCBhcyBhIHNpbmdsZSBpbnN0YW5jZS4gIEJ5IGRlZmF1bHQsIHRoZSBPSUQgd2lsbAogYmUgdHJlYXRlZCBhcyBhIHdpbGRjYXJkZWQgb2JqZWN0LCBhbmQgdGhlIG1vbml0b3IgZXhwYW5kZWQKIHRvIGNvdmVyIGFsbCBtYXRjaGluZyBpbnN0YW5jZXMuCi0uSVAgIi1pIE9JRCIKLS5JUCAiLW8gT0lEIgorLklQICJcLWkgT0lEIgorLklQICJcLW8gT0lEIgogZGVmaW5lIGFkZGl0aW9uYWwgdmFyYmluZHMgdG8gYmUgYWRkZWQgdG8gdGhlIG5vdGlmaWNhdGlvbiBwYXlsb2FkCiB3aGVuIHRoaXMgbW9uaXRvciB0cmlnZ2VyIGZpcmVzLgogRm9yIGEgd2lsZGNhcmRlZCBleHByZXNzaW9uLCB0aGUgc3VmZml4IG9mIHRoZSBtYXRjaGVkIGluc3RhbmNlCi13aWxsIGJlIGFkZGVkIHRvIGFueSBPSURzIHNwZWNpZmllZCB1c2luZyBcZkktb1xmUiwgd2hpbGUgT0lEcwotc3BlY2lmaWVkIHVzaW5nIFxmSS1pXGZSIHdpbGwgYmUgdHJlYXRlZCBhcyBleGFjdCBpbnN0YW5jZXMuCi1JZiB0aGUgXGZJLUlcZlIgZmxhZyBpcyBzcGVjaWZpZWQsIHRoZW4gdGhlcmUgaXMgbm8gZGlmZmVyZW5jZQord2lsbCBiZSBhZGRlZCB0byBhbnkgT0lEcyBzcGVjaWZpZWQgdXNpbmcgXGZJXC1vXGZSLCB3aGlsZSBPSURzCitzcGVjaWZpZWQgdXNpbmcgXGZJXC1pXGZSIHdpbGwgYmUgdHJlYXRlZCBhcyBleGFjdCBpbnN0YW5jZXMuCitJZiB0aGUgXGZJXC1JXGZSIGZsYWcgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UKIGJldHdlZW4gdGhlc2UgdHdvIG9wdGlvbnMuCiAuSVAKIFNlZSBcZklzdHJpY3REaXNtYW5cZlIgZm9yIGRldGFpbHMgb2YgdGhlIG9yZGVyaW5nIG9mIG5vdGlmaWNhdGlvbiBwYXlsb2Fkcy4KLS5JUCAiLXIgRlJFUVVFTkNZIgotbW9uaXRvcnMgdGhlIGdpdmVuIGV4cHJlc3Npb24gZXZlcnkgRlJFUVVFTkNZIHNlY29uZHMuCi1CeSBkZWZhdWx0LCB0aGUgZXhwcmVzc2lvbiB3aWxsIGJlIGV2YWx1YXRlZCBldmVyeSA2MDBzICgxMCBtaW51dGVzKS4gCi0uSVAgIi1TIgorLklQICJcLXIgRlJFUVVFTkNZIgorbW9uaXRvcnMgdGhlIGdpdmVuIGV4cHJlc3Npb24gZXZlcnkgRlJFUVVFTkNZLCB3aGVyZSBGUkVRVUVOQ1kgaXMgaW4KK3NlY29uZHMgb3Igb3B0aW9uYWxseSBzdWZmaXhlZCBieSBvbmUgb2YgcyAoZm9yIHNlY29uZHMpLCBtIChmb3IKK21pbnV0ZXMpLCBoIChmb3IgaG91cnMpLCBkIChmb3IgZGF5cyksIG9yIHcgKGZvciB3ZWVrcykuICBCeSBkZWZhdWx0LAordGhlIGV4cHJlc3Npb24gd2lsbCBiZSBldmFsdWF0ZWQgZXZlcnkgNjAwcyAoMTAgbWludXRlcykuCisuSVAgIlwtUyIKIGluZGljYXRlcyB0aGF0IHRoZSBtb25pdG9yIGV4cHJlc3Npb24gc2hvdWxkIFxmSW5vdFxmUiBiZSBldmFsdWF0ZWQKIHdoZW4gdGhlIGFnZW50IGZpcnN0IHN0YXJ0cyB1cC4gIFRoZSBmaXJzdCBldmFsdWF0aW9uIHdpbGwgYmUgZG9uZQogb25jZSB0aGUgZmlyc3QgcmVwZWF0IGludGVydmFsIGhhcyBleHBpcmVkLgotLklQICItcyIKKy5JUCAiXC1zIgogaW5kaWNhdGVzIHRoYXQgdGhlIG1vbml0b3IgZXhwcmVzc2lvbiBcZklzaG91bGRcZlIgYmUgZXZhbHVhdGVkIHdoZW4gdGhlCiBhZ2VudCBmaXJzdCBzdGFydHMgdXAuICBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW91ci4KIC5SUwpAQCAtMTAwNSwyMCArMTAyMCwyMCBAQAogTm90aWZpY2F0aW9ucyB0cmlnZ2VyZWQgYnkgdGhpcyBpbml0aWFsIGV2YWx1YXRpb24gd2lsbCBiZSBzZW50CiBcZkliZWZvcmVcZlIgdGhlIFxmQ2NvbGRTdGFydFxmUiB0cmFwLgogLlJFCi0uSVAgIi11IFNFQ05BTUUiCisuSVAgIlwtdSBTRUNOQU1FIgogc3BlY2lmaWVzIGEgc2VjdXJpdHkgbmFtZSB0byB1c2UgZm9yIHNjYW5uaW5nIHRoZSBsb2NhbCBob3N0LAogaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCBcZklpcXVlcnlTZWNOYW1lXGZSLgogT25jZSBhZ2FpbiwgdGhpcyB1c2VyIG11c3QgYmUgZXhwbGljaXRseSBjcmVhdGVkIGFuZCBnaXZlbgogc3VpdGFibGUgYWNjZXNzIHJpZ2h0cy4KIC5SRQotLklQICJub3RpZmljYXRpb25FdmVudCBFTkFNRSBOT1RJRklDQVRJT04gWy1tXSBbLWkgT0lEIHwgLW8gT0lEIF0qIgorLklQICJub3RpZmljYXRpb25FdmVudCBFTkFNRSBOT1RJRklDQVRJT04gW1wtbV0gW1wtaSBPSUQgfCBcLW8gT0lEIF0qIgogZGVmaW5lcyBhIG5vdGlmaWNhdGlvbiBldmVudCBuYW1lZCBFTkFNRS4KIFRoaXMgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIGEgZ2l2ZW4gXGZJbW9uaXRvclxmUiBlbnRyeSBieSBzcGVjaWZ5aW5nCi10aGUgb3B0aW9uIFxmSS1lIEVOQU1FXGZSIChzZWUgYWJvdmUpLgotTk9USUZJQ0FUSU9OIHNob3VsZCBiZSB0aGUgT0lEIG9mIHRoZSBOT1RJRklDQVRJT04tVFlQRSBkZWZpbml0aW9uCit0aGUgb3B0aW9uIFxmSVwtZSBFTkFNRVxmUiAoc2VlIGFib3ZlKS4KK05PVElGSUNBVElPTiBzaG91bGQgYmUgdGhlIE9JRCBvZiB0aGUgTk9USUZJQ0FUSU9OXC1UWVBFIGRlZmluaXRpb24KIGZvciB0aGUgbm90aWZpY2F0aW9uIHRvIGJlIGdlbmVyYXRlZC4KIC5JUAotSWYgdGhlIFxmSS1tXGZSIG9wdGlvbiBpcyBnaXZlbiwgdGhlIG5vdGlmaWNhdGlvbiBwYXlsb2FkIHdpbGwKK0lmIHRoZSBcZklcLW1cZlIgb3B0aW9uIGlzIGdpdmVuLCB0aGUgbm90aWZpY2F0aW9uIHBheWxvYWQgd2lsbAogaW5jbHVkZSB0aGUgc3RhbmRhcmQgdmFyYmluZHMgYXMgc3BlY2lmaWVkIGluIHRoZSBPQkpFQ1RTIGNsYXVzZQogb2YgdGhlIG5vdGlmaWNhdGlvbiBNSUIgZGVmaW5pdGlvbi4KIFRoaXMgb3B0aW9uIG11c3QgY29tZSBcZkJhZnRlclxmUiB0aGUgTk9USUZJQ0FUSU9OIE9JRApAQCAtMTAyNywyNSArMTA0MiwyNSBAQAogYmUgbGlzdGVkIGV4cGxpY2l0bHkgKGVpdGhlciBoZXJlIG9yIGluIHRoZSBjb3JyZXNwb25kaW5nCiBcZkltb25pdG9yXGZSIGRpcmVjdGl2ZSkuCiAuSVAKLVRoZSBcZkktaSBPSURcZlIgYW5kIFxmSS1vIE9JRFxmUiBvcHRpb25zIHNwZWNpZnkgYWRkaXRpb25hbAorVGhlIFxmSVwtaSBPSURcZlIgYW5kIFxmSVwtbyBPSURcZlIgb3B0aW9ucyBzcGVjaWZ5IGFkZGl0aW9uYWwKIHZhcmJpbmRzIHRvIGJlIGFwcGVuZGVkIHRvIHRoZSBub3RpZmljYXRpb24gcGF5bG9hZCwgYWZ0ZXIgdGhlCiBzdGFuZGFyZCBsaXN0LgogSWYgdGhlIG1vbml0b3IgZW50cnkgdGhhdCB0cmlnZ2VyZWQgdGhpcyBldmVudCBpbnZvbHZlZCBhCiB3aWxkY2FyZGVkIGV4cHJlc3Npb24sIHRoZSBzdWZmaXggb2YgdGhlIG1hdGNoZWQgaW5zdGFuY2UKLXdpbGwgYmUgYWRkZWQgdG8gYW55IE9JRHMgc3BlY2lmaWVkIHVzaW5nIFxmSS1vXGZSLCB3aGlsZSBPSURzCi1zcGVjaWZpZWQgdXNpbmcgXGZJLWlcZlIgd2lsbCBiZSB0cmVhdGVkIGFzIGV4YWN0IGluc3RhbmNlcy4KLUlmIHRoZSBcZkktSVxmUiBmbGFnIHdhcyBzcGVjaWZpZWQgdG8gdGhlIFxmSW1vbml0b3JcZlIgZGlyZWN0aXZlLAord2lsbCBiZSBhZGRlZCB0byBhbnkgT0lEcyBzcGVjaWZpZWQgdXNpbmcgXGZJXC1vXGZSLCB3aGlsZSBPSURzCitzcGVjaWZpZWQgdXNpbmcgXGZJXC1pXGZSIHdpbGwgYmUgdHJlYXRlZCBhcyBleGFjdCBpbnN0YW5jZXMuCitJZiB0aGUgXGZJXC1JXGZSIGZsYWcgd2FzIHNwZWNpZmllZCB0byB0aGUgXGZJbW9uaXRvclxmUiBkaXJlY3RpdmUsCiB0aGVuIHRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVzZSB0d28gb3B0aW9ucy4KLS5JUCAic2V0RXZlbnQgRU5BTUUgWy1JXSBPSUQgPSBWQUxVRSAiCisuSVAgInNldEV2ZW50IEVOQU1FIFtcLUldIE9JRCA9IFZBTFVFICIKIGRlZmluZXMgYSBzZXQgZXZlbnQgbmFtZWQgRU5BTUUsIGFzc2lnbmluZyB0aGUgKGludGVnZXIpIFZBTFVFCiB0byB0aGUgc3BlY2lmaWVkIE9JRC4KIFRoaXMgY2FuIGJlIHRyaWdnZXJlZCBmcm9tIGEgZ2l2ZW4gXGZJbW9uaXRvclxmUiBlbnRyeSBieSBzcGVjaWZ5aW5nCi10aGUgb3B0aW9uIFxmSS1lIEVOQU1FXGZSIChzZWUgYWJvdmUpLgordGhlIG9wdGlvbiBcZklcLWUgRU5BTUVcZlIgKHNlZSBhYm92ZSkuCiAuSVAKIElmIHRoZSBtb25pdG9yIGVudHJ5IHRoYXQgdHJpZ2dlcmVkIHRoaXMgZXZlbnQgaW52b2x2ZWQgYQogd2lsZGNhcmRlZCBleHByZXNzaW9uLCB0aGUgc3VmZml4IG9mIHRoZSBtYXRjaGVkIGluc3RhbmNlCiB3aWxsIG5vcm1hbGx5IGJlIGFkZGVkIHRvIHRoZSBPSUQuCi1JZiB0aGUgXGZJLUlcZlIgZmxhZyB3YXMgc3BlY2lmaWVkIHRvIGVpdGhlciBvZiB0aGUKK0lmIHRoZSBcZklcLUlcZlIgZmxhZyB3YXMgc3BlY2lmaWVkIHRvIGVpdGhlciBvZiB0aGUKIFxmSW1vbml0b3JcZlIgb3IgXGZJc2V0RXZlbnRcZlIgZGlyZWN0aXZlcywgdGhlCiBzcGVjaWZpZWQgT0lEIHdpbGwgYmUgcmVnYXJkZWQgYXMgYW4gZXhhY3Qgc2luZ2xlIGluc3RhbmNlLgogLklQICJzdHJpY3REaXNtYW4geWVzIgpAQCAtMTA2Niw4ICsxMDgxLDggQEAKIC5SUwogLklQICJOb3RlOiIKIFN0cmljdCBEaXNNYW4gb3JkZXJpbmcgbWF5IHJlc3VsdCBpbiBnZW5lcmF0aW5nIGludmFsaWQgbm90aWZpY2F0aW9ucwotcGF5bG9hZCBsaXN0cyBpZiB0aGUgXGZJbm90aWZpY2F0aW9uRXZlbnQgLW5cZlIgZmxhZyBpcyB1c2VkIHRvZ2V0aGVyCi13aXRoIFxmSW1vbml0b3IgLW9cZlIgKG9yIFxmSS1pXGZSKSB2YXJiaW5kIG9wdGlvbnMuCitwYXlsb2FkIGxpc3RzIGlmIHRoZSBcZklub3RpZmljYXRpb25FdmVudCBcLW5cZlIgZmxhZyBpcyB1c2VkIHRvZ2V0aGVyCit3aXRoIFxmSW1vbml0b3IgXC1vXGZSIChvciBcZklcLWlcZlIpIHZhcmJpbmQgb3B0aW9ucy4KIC5SRQogLklQCiBJZiBubyBcZkltb25pdG9yXGZSIGVudHJpZXMgc3BlY2lmeSBwYXlsb2FkIHZhcmJpbmRzLApAQCAtMTA4NCwyNSArMTA5OSwyNSBAQAogbm90aWZpY2F0aW9uRXZlbnQgIGxpbmtVcFRyYXAgICAgbGlua1VwICAgaWZJbmRleCBpZkFkbWluU3RhdHVzIGlmT3BlclN0YXR1cwogbm90aWZpY2F0aW9uRXZlbnQgIGxpbmtEb3duVHJhcCAgbGlua0Rvd24gaWZJbmRleCBpZkFkbWluU3RhdHVzIGlmT3BlclN0YXR1cwogCi1tb25pdG9yICAtciA2MCAtZSBsaW5rVXBUcmFwICAgIkdlbmVyYXRlIGxpbmtVcCIgaWZPcGVyU3RhdHVzICE9IDIKLW1vbml0b3IgIC1yIDYwIC1lIGxpbmtEb3duVHJhcCAiR2VuZXJhdGUgbGlua0Rvd24iIGlmT3BlclN0YXR1cyA9PSAyCittb25pdG9yICBcLXIgNjAgXC1lIGxpbmtVcFRyYXAgICAiR2VuZXJhdGUgbGlua1VwIiBpZk9wZXJTdGF0dXMgIT0gMgorbW9uaXRvciAgXC1yIDYwIFwtZSBsaW5rRG93blRyYXAgIkdlbmVyYXRlIGxpbmtEb3duIiBpZk9wZXJTdGF0dXMgPT0gMgogLmZpCiAuUkUKIC5JUCAiZGVmYXVsdE1vbml0b3JzIHllcyIKIHdpbGwgY29uZmlndXJlIHRoZSBFdmVudCBNSUIgdGFibGVzIHRvIG1vbml0b3IgdGhlIHZhcmlvdXMKLVxmQ1VDRC1TTk1QLU1JQlxmUiB0YWJsZXMgZm9yIHByb2JsZW1zIChhcyBpbmRpY2F0ZWQgYnkKK1xmQ1VDRFwtU05NUFwtTUlCXGZSIHRhYmxlcyBmb3IgcHJvYmxlbXMgKGFzIGluZGljYXRlZCBieQogdGhlIGFwcHJvcHJpYXRlIFxmQ3h4RXJyRmxhZ1xmUiBjb2x1bW4gb2JqZWN0cykuCiAuSVAKIFRoaXMgaXMgZXhhY3RseSBlcXVpdmFsZW50IHRvIHRoZSBjb25maWd1cmF0aW9uOgogLlJTCiAuSVAKIC5uZgotbW9uaXRvcgktbyBwck5hbWVzIC1vIHByRXJyTWVzc2FnZSAicHJvY2VzcyB0YWJsZSIgcHJFcnJvckZsYWcgIT0gMAotbW9uaXRvcgktbyBtZW1FcnJvck5hbWUgLW8gbWVtU3dhcEVycm9yTXNnICJtZW1vcnkiIG1lbVN3YXBFcnJvciAhPSAwCi1tb25pdG9yCS1vIGV4dE5hbWVzIC1vIGV4dE91dHB1dCAiZXh0VGFibGUiIGV4dFJlc3VsdCAhPSAwCi1tb25pdG9yCS1vIGRza1BhdGggLW8gZHNrRXJyb3JNc2cgImRza1RhYmxlIiBkc2tFcnJvckZsYWcgIT0gMAotbW9uaXRvcgktbyBsYU5hbWVzIC1vIGxhRXJyTWVzc2FnZSAgImxhVGFibGUiIGxhRXJyb3JGbGFnICE9IDAKLW1vbml0b3IJLW8gZmlsZU5hbWUgLW8gZmlsZUVycm9yTXNnICAiZmlsZVRhYmxlIiBmaWxlRXJyb3JGbGFnICE9IDAKK21vbml0b3IJXC1vIHByTmFtZXMgXC1vIHByRXJyTWVzc2FnZSAicHJvY2VzcyB0YWJsZSIgcHJFcnJvckZsYWcgIT0gMAorbW9uaXRvcglcLW8gbWVtRXJyb3JOYW1lIFwtbyBtZW1Td2FwRXJyb3JNc2cgIm1lbW9yeSIgbWVtU3dhcEVycm9yICE9IDAKK21vbml0b3IJXC1vIGV4dE5hbWVzIFwtbyBleHRPdXRwdXQgImV4dFRhYmxlIiBleHRSZXN1bHQgIT0gMAorbW9uaXRvcglcLW8gZHNrUGF0aCBcLW8gZHNrRXJyb3JNc2cgImRza1RhYmxlIiBkc2tFcnJvckZsYWcgIT0gMAorbW9uaXRvcglcLW8gbGFOYW1lcyBcLW8gbGFFcnJNZXNzYWdlICAibGFUYWJsZSIgbGFFcnJvckZsYWcgIT0gMAorbW9uaXRvcglcLW8gZmlsZU5hbWUgXC1vIGZpbGVFcnJvck1zZyAgImZpbGVUYWJsZSIgZmlsZUVycm9yRmxhZyAhPSAwCiAuZmkKIC5SRQogLlBQCkBAIC0xMTE5LDcgKzExMzQsOSBAQAogVGhlcmUgYXJlIHRocmVlIHdheXMgb2Ygc3BlY2lmeWluZyB0aGUgc2NoZWR1bGVkIGFjdGlvbjoKIC5JUCAicmVwZWF0IEZSRVFVRU5DWSBPSUQgPSBWQUxVRSIKIGNvbmZpZ3VyZXMgYSBTRVQgYXNzaWdubWVudCBvZiB0aGUgKGludGVnZXIpIFZBTFVFIHRvIHRoZSBNSUIgaW5zdGFuY2UKLU9JRCwgdG8gYmUgcnVuIGV2ZXJ5IEZSRVFVRU5DWSBzZWNvbmRzLgorT0lELCB0byBiZSBydW4gZXZlcnkgRlJFUVVFTkNZIHNlY29uZHMsIHdoZXJlIEZSRVFVRU5DWSBpcyBpbgorc2Vjb25kcyBvciBvcHRpb25hbGx5IHN1ZmZpeGVkIGJ5IG9uZSBvZiBzIChmb3Igc2Vjb25kcyksIG0gKGZvcgorbWludXRlcyksIGggKGZvciBob3VycyksIGQgKGZvciBkYXlzKSwgb3IgdyAoZm9yIHdlZWtzKS4KIC5JUCAiY3JvbiBNSU5VVEUgSE9VUiBEQVkgTU9OVEggV0VFS0RBWSAgT0lEID0gVkFMVUUiCiBjb25maWd1cmVzIGEgU0VUIGFzc2lnbm1lbnQgb2YgdGhlIChpbnRlZ2VyKSBWQUxVRSB0byB0aGUgTUlCIGluc3RhbmNlCiBPSUQsIHRvIGJlIHJ1biBhdCB0aGUgdGltZXMgc3BlY2lmaWVkIGJ5IHRoZSBmaWVsZHMgTUlOVVRFIHRvIFdFRUtEQVkuCkBAIC0xMTM3LDYgKzExNTQsNzAgQEAKIGNvbmZpZ3VyZXMgYSBvbmUtc2hvdCBTRVQgYXNzaWdubWVudCwgdG8gYmUgcnVuIGF0IHRoZSBmaXJzdCBtYXRjaGluZwogdGltZSBhcyBzcGVjaWZpZWQgYnkgdGhlIGZpZWxkcyBNSU5VVEUgdG8gV0VFS0RBWS4gIFRoZSBpbnRlcnByZXRhdGlvbgogb2YgdGhlc2UgZmllbGRzIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgZm9yIHRoZSBcZkljcm9uXGZSIGRpcmVjdGl2ZS4KKy5TUyAiRGF0YSBEZWxpdmVyeSB2aWEgTm90ZmlpY2F0aW9ucyIKK05vdGU6IHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBpZiB0aGUKK1xmSWRlbGl2ZXIvZGVsaXZlckJ5Tm90aWZ5XGZSIG1pYiBtb2R1bGUgd2FzIGNvbXBsaWVkIGluIHRvIHRoZSBhZ2VudAorLlBQCitJbiBzb21lIHNpdHVhdGlvbnMgaXQgbWF5IGJlIGFkdmFudGFnZW91cyB0byBkZWxpdmVyIFNOTVAgZGF0YSBvdmVyCitTTk1QIE5vdGlmaWNhdGlvbnMgKFRSQVBzIGFuZCBJTkZPUk1zKSByYXRoZXIgdGhhbiB0aGUgdHlwaWNhbCBwcm9jZXNzCitvZiBoYXZpbmcgdGhlIG1hbmFnZXIgaXNzdWUgcmVxdWVzdHMgZm9yIHRoZSBkYXRhICh2aWEgR0VUcyBhbmQKK0dFVE5FWFRzKS4gIFJlYXNvbnMgZm9yIGRvaW5nIHRoaXMgYXJlIG51bWVyb3VzLCBidXQgZnJlcXVlbnRseSBjb3JuZXIKK2Nhc2VzLiAgVGhlIG1vc3QgY29tbW9uIHJlYXNvbiBmb3Igd2FudGluZyB0aGlzIGJlaGF2aW91ciBtaWdodCBiZSB0bworbW9uaXRvciBkZXZpY2VzIHRoYXQgcmVzaWRlIGJlaGluZCBOQVRzIG9yIEZpcmV3YWxscyB0aGF0IHByZXZlbnQKK2luY29taW5nIFNOTVAgdHJhZmZpYy4KKy5QUAorSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgYWx0aG91Z2ggbW9zdCBtYW5hZ2VtZW50IHNvZnR3YXJlIGlzIGNhcGFibGUKK29mIGxvZ2dpbmcgbm90aWZpY2F0aW9ucywgdmVyeSBsaXR0bGUgKGlmIGFueSkgbWFuYWdlbWVudCBzb2Z0d2FyZQord2lsbCB1cGRhdGVkIHRoZWlyICJrbm93bGVkZ2UgZGF0YWJhc2UiIGJhc2VkIG9uIHRoZSBjb250ZW50cyBvZiBTTk1QCitub3RpZmljYXRpb25zLiAgSUUsIGl0IHdvbid0IChmb3IgZXhhbXBsZSkgdXBkYXRlIHRoZSBpbnRlcmZhY2UKK3RyYWZmaWMgY291bnRlciBoaXN0b3J5IHRoYXQgaXMgdXNlZCB0byBwcm9kdWNlIGdyYXBocy4gIE1vc3QgbGFyZ2VyCituZXR3b3JrIG1hbmFnZW1lbnQgcGFja2FnZXMgaGF2ZSBhIHNlcGFyYXRlIGRhdGFiYXNlIGZvciBzdG9yaW5nIGRhdGEKK3JlY2VpdmVkIHZpYSBTTk1QIHJlcXVlc3RzIChHRVRzIGFuZCBHRVRORVhUcykgdnMgdGhvc2UgcmVjZWl2ZWQgZnJvbQorbm90aWZpY2F0aW9ucy4gIFJlc2VhcmNoaW5nIHRoZSBjYXBhYmlsaXRpZXMgb2YgeW91ciBtYW5hZ2VtZW50CitzdGF0aW9uIHNvZnR3YXJlIGlzIHJlcXVpcmVkIGJlZm9yZSBhc3N1bWluZyB0aGlzIGZ1bmN0aW9uYWxpdHkgd2lsbAorc29sdmUgeW91ciBkYXRhIGRlbGl2ZXJ5IHJlcXVpcmVtZW50cy4KKy5QUAorTm90aWZpY2F0aW9ucyBnZW5lcmF0ZWQgdmlhIHRoaXMgbWVjaGFuaXNtIHdpbGwgYmUgc2VudCB0byB0aGUKK3N0YW5kYXJkIHNldCBvZiBjb25maWd1cmVkIG5vdGlmaWNhdGlvbiB0YXJnZXRzLiAgU2VlIHRoZQorIk5vdGlmaWNhdGlvbiBIYW5kbGluZyIgc2VjdGlvbiBvZiB0aGlzIGRvY3VtZW50IGZvciBmdXJ0aGVyCitpbmZvcm1hdGlvbi4KKy5JUCAiZGVsaXZlckJ5Tm90aWZ5IFtcLXBdIFtcLW1dIFtcLXMgTUFYU0laRV0gRlJFUVVFTkNZIE9JRCIKK1RoaXMgZGlyZWN0aXZlIHRlbGxzIHRoZSBTTk1QIGFnZW50IHRvIHNlbGYtd2FsayB0aGUgXGZJT0lEXGZSLAorY29sbGVjdCBhbGwgdGhlIGRhdGEgYW5kIHNlbmQgaXQgb3V0IGV2ZXJ5IFxmSUZSRVFVRU5DWVxmUiBzZWNvbmRzLAord2hlcmUgRlJFUVVFTkNZIGlzIGluIHNlY29uZHMgb3Igb3B0aW9uYWxseSBzdWZmaXhlZCBieSBvbmUgb2YgcyAoZm9yCitzZWNvbmRzKSwgbSAoZm9yIG1pbnV0ZXMpLCBoIChmb3IgaG91cnMpLCBkIChmb3IgZGF5cyksIG9yIHcgKGZvcgord2Vla3MpLiAgQnkgZGVmYXVsdCBzY2FsYXJzIGFyZSBpbmNsdWRlZCBpbiB0aGUgbm90aWZpY2F0aW9uIHRoYXQKK3NwZWNpZnkgdGhlIGhvdyBvZnRlbiB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYmUgc2VudCAodW5sZXNzIHRoZQorXGZJXC1wXGZSIG9wdGlvbiBpcyBzcGVjaWZpZWQpIGFuZCB3aGljaCBtZXNzYWdlIG51bWJlciBvZiBob3cgbWFueQorbWVzc2FnZXMgYSBwYXJ0aWN1bGFyIG5vdGlmaWNhdGlvbiBpcyAodW5sZXNzIFxmSVwtbVxmUiBpcyBzcGVjaWZpZWQpLgorVG8gYnJlYWsgdGhlIG5vdGlmaWNhdGlvbnMgaW50byBtYW5hZ2VhYmxlIHBhY2tldCBzaXplcywgdXNlIHRoZQorXGZJXC1zXGZSIGZsYWcgdG8gc3BlY2lmeSB0aGUgYXBwcm94aW1hdGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdAorYSBub3RpZmljYXRpb24gbWVzc2FnZSBzaG91bGQgYmUgbGltaXRlZCB0by4gIElmIG1vcmUgdGhhbgorXGZJTUFYU0laRVxmUiBvZiBieXRlcyBpcyBuZWVkZWQgdGhlbiBtdWx0aXBsZSBub3RpZmljYXRpb25zIHdpbGwgYmUKK3NlbnQgdG8gZGVsaXZlciB0aGUgZGF0YS4gIE5vdGUgdGhhdCB0aGUgY2FsY3VsYXRpb25zIGZvciBlbnN1cmluZyB0aGUKK21heGltdW0gc2l6ZSBpcyBtZXQgYXJlIGFwcHJveGltYXRpb25zIGFuZCB0aHVzIGl0IGNhbiBiZSBhYnNvbHV0ZWx5CitndWFyYW50ZWVkIHRoZXknbGwgYmUgdW5kZXIgdGhhdCBzaXplLCBzbyBsZWF2ZSBhIHBhZGRpbmcgYnVmZmVyIGlmIGl0CitpcyBjcml0aWNhbCB0aGF0IHlvdSBhdm9pZCBmcmFnbWVudGF0aW9uLiAgQSB2YWx1ZSBvZiBcLTEgaW5kaWNhdGVzCitmb3JjZSBldmVyeXRoaW5nIGludG8gYSBzaW5nbGUgbWVzc2FnZSBubyBtYXR0ZXIgaG93IGJpZyBpdCBpcy4KKy5JUAorRXhhbXBsZSB1c2FnZTogdGhlIGZvbGxvd2luZyB3aWxsIGRlbGl2ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBpZlRhYmxlCitvbmNlIGFuIGhvdXIgYW5kIHRoZSBjb250ZW50cyBvZiB0aGUgc3lzdGVtIGdyb3VwIG9uY2UgZXZlcnkgMiBob3VyczoKKy5SUworLm5mCisKK2RlbGl2ZXJCeU5vdGlmeSAzNjAwIGlmVGFibGUKK2RlbGl2ZXJCeU5vdGlmeSA3MjAwIHN5c3RlbQorLmZpCisuUkUKKy5JUCAiZGVsaXZlckJ5Tm90aWZ5TWF4UGFja2V0U2l6ZSBTSVpFSU5CWVRFUyIKK1NldHMgdGhlIGRlZmF1bHQgbm90aWZpY2F0aW9uIHNpemUgbGltaXQgKHNlZSB0aGUgXGZJXC1zXGZSIGZsYWcgYWJvdmUpLgorLklQICJkZWxpdmVyQnlOb3RpZnlPaWQgT0lEIgorLklQICJkZWxpdmVyQnlOb3RpZnlGcmVxdWVuY3lPaWQgT0lEIgorLklQICJkZWxpdmVyQnlOb3RpZnlNZXNzYWdlTnVtYmVyT2lkIE9JRCIKKy5JUCAiZGVsaXZlckJ5Tm90aWZ5TWF4TWVzc2FnZU51bWJlck9pZCBPSUQiCitUaGVzZSBzZXQgdGhlIGRhdGEgT0lEIHRoYXQgdGhlIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHNlbnQgdW5kZXIsIHRoZQorc2NhbGFyIE9JRCwgdGhlIG1lc3NhZ2UgbnVtYmVyIE9JRCwgYW5kIHRoZSBtYXhpbXVtIG1lc3NhZ2UgbnVtYmVyCitPSUQuICBUaGVzZSBkZWZhdWx0IHRvIG9iamVjdHMgaW4gdGhlIE5FVFwtU05NUFwtUEVSSU9ESUNcLU5PVElGWVwtTUlCLgogLlNIICJFWFRFTkRJTkcgQUdFTlQgRlVOQ1RJT05BTElUWSIKIE9uZSBvZiB0aGUgZmlyc3QgZGlzdGluZ3Vpc2hpbmcgZmVhdHVyZXMgb2YgdGhlIG9yaWdpbmFsIFVDRCBzdWl0ZSB3YXMKIHRoZSBhYmlsaXR5IHRvIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYWdlbnQgLSBub3QganVzdCBieQpAQCAtMTE1NSw3ICsxMjM2LDcgQEAKIFNOTVAgb3BlcmF0aW9ucywgb3IgY29uZm9ybSB0byBhbnkgcGFydGljdWxhciBiZWhhdmlvdXIgLSB0aGUgTUlCCiBzdHJ1Y3R1cmVzIGFyZSBkZXNpZ25lZCB0byBhY2NvbW1vZGF0ZSBhbnkgZm9ybSBvZiBjb21tYW5kIG91dHB1dC4KIFVzZSBvZiB0aGlzIG1lY2hhbmlzbSByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUKLVxmSXVjZC1zbm1wL2V4dGVuc2libGVcZlIgYW5kL29yIFxmSWFnZW50L2V4dGVuZFxmUiBtb2R1bGVzICh3aGljaAorXGZJdWNkXC1zbm1wL2V4dGVuc2libGVcZlIgYW5kL29yIFxmSWFnZW50L2V4dGVuZFxmUiBtb2R1bGVzICh3aGljaAogYXJlIGJvdGggaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KIC5JUCAiZXhlYyBbTUlCT0lEXSBOQU1FIFBST0cgQVJHUyIKIC5JUCAic2ggW01JQk9JRF0gTkFNRSBQUk9HIEFSR1MiCkBAIC0xMjI5LDcgKzEzMTAsNyBAQAogXGZJZXh0ZW5kXGZSIGVudHJ5LCBhbmQgY2FuIGFwcGVhciBvbiBpdHMgb3duLgogLlBQCiBCb3RoIFxmSWV4dGVuZFxmUiBhbmQgXGZJZXh0ZW5kZml4XGZSIGRpcmVjdGl2ZXMgY2FuIGJlIGNvbmZpZ3VyZWQKLWR5bmFtaWNhbGx5LCB1c2luZyBTTk1QIFNFVCByZXF1ZXN0cyB0byB0aGUgTkVULVNOTVAtRVhURU5ELU1JQi4KK2R5bmFtaWNhbGx5LCB1c2luZyBTTk1QIFNFVCByZXF1ZXN0cyB0byB0aGUgTkVUXC1TTk1QXC1FWFRFTkRcLU1JQi4KIC5TUyAiTUlCLVNwZWNpZmljIEV4dGVuc2lvbiBDb21tYW5kcyIKIFRoZSBmaXJzdCBncm91cCBvZiBleHRlbnNpb24gZGlyZWN0aXZlcyBpbnZva2UgYXJiaXRyYXJ5IGNvbW1hbmRzLAogYW5kIHJlbHkgb24gdGhlIE1JQiBzdHJ1Y3R1cmUgKGFuZCBtYW5hZ2VtZW50IGFwcGxpY2F0aW9ucykgaGF2aW5nCkBAIC0xMjQwLDE3ICsxMzIxLDE3IEBACiBUaGUgcmVtYWluaW5nIGV4dGVuc2lvbiBtZWNoYW5pc21zIGFyZSBhbGwgY29uY2VybmVkIHdpdGggc3VjaAogTUlCLXNwZWNpZmljIHNpdHVhdGlvbnMgLSBzdGFydGluZyB3aXRoICJwYXNzLXRocm91Z2giIHNjcmlwdHMuCiBVc2Ugb2YgdGhpcyBtZWNoYW5pc20gcmVxdWlyZXMgdGhhdCB0aGUgYWdlbnQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlCi1cZkl1Y2Qtc25tcC9wYXNzXGZSIGFuZCBcZkl1Y2Qtc25tcC9wYXNzX3BlcnNpc3RcZlIgbW9kdWxlcyAod2hpY2gKK1xmSXVjZFwtc25tcC9wYXNzXGZSIGFuZCBcZkl1Y2RcLXNubXAvcGFzc19wZXJzaXN0XGZSIG1vZHVsZXMgKHdoaWNoCiBhcmUgYm90aCBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkIGNvbmZpZ3VyYXRpb24pLgotLklQICJwYXNzIFstcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCisuSVAgInBhc3MgW1wtcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCiB3aWxsIHBhc3MgY29udHJvbCBvZiB0aGUgc3VidHJlZSByb290ZWQgYXQgTUlCT0lEIHRvIHRoZSBzcGVjaWZpZWQKIFBST0cgY29tbWFuZC4gIEdFVCBhbmQgR0VUTkVYVCByZXF1ZXN0cyBmb3IgT0lEcyB3aXRoaW4gdGhpcyB0cmVlIHdpbGwKIHRyaWdnZXIgdGhpcyBjb21tYW5kLCBjYWxsZWQgYXM6CiAuUlMKIC5JUAotUFJPRyAtZyBPSUQKK1BST0cgXC1nIE9JRAogLklQCi1QUk9HIC1uIE9JRAorUFJPRyBcLW4gT0lECiAuUkUKIC5JUAogcmVzcGVjdGl2ZWx5LCB3aGVyZSBPSUQgaXMgdGhlIHJlcXVlc3RlZCBPSUQuCkBAIC0xMjc4LDcgKzEzNTksNyBAQAogQSBTRVQgcmVxdWVzdCB3aWxsIHJlc3VsdCBpbiB0aGUgY29tbWFuZCBiZWluZyBjYWxsZWQgYXM6CiAuUlMKIC5JUAotUFJPRyAtcyBPSUQgVFlQRSBWQUxVRQorUFJPRyBcLXMgT0lEIFRZUEUgVkFMVUUKIC5SRQogLklQCiB3aGVyZSBUWVBFIGlzIG9uZSBvZiB0aGUgdG9rZW5zIGxpc3RlZCBhYm92ZSwgaW5kaWNhdGluZyB0aGUgdHlwZSBvZiB0aGUKQEAgLTEzMTIsOSArMTM5Myw5IEBACiBhIHNlcGFyYXRlIGludm9jYXRpb24gb2YgdGhlIGNvbW1hbmQuCiAuSVAKIFRoZSBkZWZhdWx0IHJlZ2lzdHJhdGlvbiBwcmlvcml0eSBpcyAxMjcuICBUaGlzIGNhbiBiZQotY2hhbmdlZCBieSBzdXBwbHlpbmcgdGhlIG9wdGlvbmFsIC1wIGZsYWcsIHdpdGggbG93ZXIgcHJpb3JpdHkKK2NoYW5nZWQgYnkgc3VwcGx5aW5nIHRoZSBvcHRpb25hbCBcLXAgZmxhZywgd2l0aCBsb3dlciBwcmlvcml0eQogcmVnaXN0cmF0aW9ucyBiZWluZyB1c2VkIGluIHByZWZlcmVuY2UgdG8gaGlnaGVyIHByaW9yaXR5IHZhbHVlcy4KLS5JUCAicGFzc19wZXJzaXN0IFstcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCisuSVAgInBhc3NfcGVyc2lzdCBbXC1wIHByaW9yaXR5XSBNSUJPSUQgUFJPRyIKIHdpbGwgYWxzbyBwYXNzIGNvbnRyb2wgb2YgdGhlIHN1YnRyZWUgcm9vdGVkIGF0IE1JQk9JRCB0byB0aGUgc3BlY2lmaWVkCiBQUk9HIGNvbW1hbmQuICBIb3dldmVyIHRoaXMgY29tbWFuZCB3aWxsIGNvbnRpbnVlIHRvIHJ1biBhZnRlciB0aGUgaW5pdGlhbAogcmVxdWVzdCBoYXMgYmVlbiBhbnN3ZXJlZCwgc28gc3Vic2VxdWVudCByZXF1ZXN0cyBjYW4gYmUgcHJvY2Vzc2VkIHdpdGhvdXQKQEAgLTEzMzcsMTggKzE0MTgsMTggQEAKIElmIHRoZSBhc3NpZ25tZW50IGlzIHN1Y2Nlc3NmdWwsIHRoZSBjb21tYW5kIHNob3VsZCBwcmludAogIkRPTkVcXG4iIHRvIHN0ZG91dC4KIEVycm9ycyBzaG91bGQgYmUgaW5kaWNhdGVkIGJ5IHdyaXRpbmcgb25lIG9mIHRoZSBzdHJpbmdzCi0uQiBub3Qtd3JpdGFibGUsIAotLkIgd3JvbmctdHlwZSwKLS5CIHdyb25nLWxlbmd0aCwKLS5CIHdyb25nLXZhbHVlCisuQiBub3RcLXdyaXRhYmxlLCAKKy5CIHdyb25nXC10eXBlLAorLkIgd3JvbmdcLWxlbmd0aCwKKy5CIHdyb25nXC12YWx1ZQogb3IKLS5CIGluY29uc2lzdGVudC12YWx1ZQorLkIgaW5jb25zaXN0ZW50XC12YWx1ZQogdG8gc3Rkb3V0LAogYW5kIHRoZSBhZ2VudCB3aWxsIGdlbmVyYXRlIHRoZSBhcHByb3ByaWF0ZSBlcnJvciByZXNwb25zZS4KIEluIGVpdGhlciBjYXNlLCB0aGUgY29tbWFuZCBzaG91bGQgY29udGludWUgcnVubmluZy4KIC5JUAogVGhlIHJlZ2lzdHJhdGlvbiBwcmlvcml0eSBjYW4gYmUgY2hhbmdlZCB1c2luZyB0aGUgb3B0aW9uYWwKLS1wIGZsYWcsIGp1c3QgYXMgZm9yIHRoZSBcZklwYXNzXGZSIGRpcmVjdGl2ZS4KK1wtcCBmbGFnLCBqdXN0IGFzIGZvciB0aGUgXGZJcGFzc1xmUiBkaXJlY3RpdmUuCiAuUFAKIFxmSXBhc3NcZlIgYW5kIFxmSXBhc3NfcGVyc2lzdFxmUiBleHRlbnNpb25zIGNhbiBvbmx5IGJlIGNvbmZpZ3VyZWQgdmlhIHRoZQogc25tcGQuY29uZiBmaWxlLiAgVGhleSBjYW5ub3QgYmUgc2V0IHVwIHZpYSBTTk1QIFNFVCByZXF1ZXN0cy4KQEAgLTEzNjYsNyArMTQ0Nyw3IEBACiAuUFAKIFVzZSBvZiB0aGlzIG1lY2hhbmlzbSByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUgZW1iZWRkZWQKIHBlcmwgbWVjaGFuaXNtLCB3aGljaCBpcyBub3QgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCBlbnZpcm9ubWVudC4gSXQKLW11c3QgYmUgZXhwbGljaXRseSBpbmNsdWRlZCBieSBzcGVjaWZ5aW5nIHRoZSAnLS1lbmFibGUtZW1iZWRkZWQtcGVybCcKK211c3QgYmUgZXhwbGljaXRseSBpbmNsdWRlZCBieSBzcGVjaWZ5aW5nIHRoZSAnXC1cLWVuYWJsZVwtZW1iZWRkZWRcLXBlcmwnCiBvcHRpb24gdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgd2hlbiB0aGUgcGFja2FnZSBpcyBmaXJzdCBidWlsdC4KIC5QUAogSWYgZW5hYmxlZCwgdGhlIGZvbGxvd2luZyBkaXJlY3RpdmVzIHdpbGwgYmUgcmVjb2duaXNlZDoKQEAgLTEzOTEsNyArMTQ3Miw3IEBACiAubmYKIFxmQ3BlcmwgdXNlIERhdGE6OkR1bXBlcjsKIHBlcmwgc3ViIG15cm91dGluZSAgeyBwcmludCAiZ290IGNhbGxlZDogIixEdW1wZXIoQF8pLCJcXG4iOyB9Ci1wZXJsICRhZ2VudC0+cmVnaXN0ZXIoJ215bGluaycsICcuMS4zLjYuMS44NzY1JywgXFwmbXlyb3V0aW5lKTtcZlIKK3BlcmwgJGFnZW50XC0+cmVnaXN0ZXIoJ215bGluaycsICcuMS4zLjYuMS44NzY1JywgXFwmbXlyb3V0aW5lKTtcZlIKIC5maQogLlJFCiAuUkUKQEAgLTE0MTMsNyArMTQ5NCw3IEBACiB3aGVuIHRoZSBzdWl0ZSB3YXMgZmlyc3QgYnVpbHQuICBTdWNoIGltcGxlbWVudGF0aW9uIG1vZHVsZXMgY2FuIGFsc28gYmUKIGNvbXBpbGVkIGluZGVwZW5kZW50bHkgYW5kIGxvYWRlZCBpbnRvIHRoZSBydW5uaW5nIGFnZW50IG9uY2UgaXQgaGFzCiBzdGFydGVkLiAgVXNlIG9mIHRoaXMgbWVjaGFuaXNtIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQotXGZJdWNkLXNubXAvZGxtb2RcZlIgbW9kdWxlICh3aGljaCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBkZWZhdWx0CitcZkl1Y2RcLXNubXAvZGxtb2RcZlIgbW9kdWxlICh3aGljaCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZSBkZWZhdWx0CiBidWlsZCBjb25maWd1cmF0aW9uKS4KIC5JUCAiZGxtb2QgTkFNRSBQQVRIIgogd2lsbCBsb2FkIHRoZSBzaGFyZWQgb2JqZWN0IG1vZHVsZSBmcm9tIHRoZSBmaWxlIFBBVEggKGFuIGFic29sdXRlCkBAIC0xNDI2LDcgKzE1MDcsNyBAQAogLlJFCiAuUFAKIFRoaXMgZnVuY3Rpb25hbGl0eSBjYW4gYWxzbyBiZSBjb25maWd1cmVkIHVzaW5nIFNOTVAgU0VUIHJlcXVlc3RzCi10byB0aGUgVUNELURMTU9ELU1JQi4KK3RvIHRoZSBVQ0RcLURMTU9EXC1NSUIuCiAuU1MgIlByb3h5IFN1cHBvcnQiCiBBbm90aGVyIG1lY2hhbmlzbSBmb3IgZXh0ZW5kaW5nIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBhZ2VudAogaXMgdG8gcGFzcyBzZWxlY3RlZCByZXF1ZXN0cyAob3Igc2VsZWN0ZWQgdmFyYmluZHMpIHRvIGFub3RoZXIKQEAgLTE0MzUsOSArMTUxNiw5IEBACiBUaGlzIGNhbiBiZSB2aWV3ZWQgZWl0aGVyIGFzIHRoZSBtYWluIGFnZW50IGRlbGVnYXRpbmcgcmVxdWVzdHMgdG8KIHRoZSByZW1vdGUgb25lLCBvciBhY3RpbmcgYXMgYSBwcm94eSBmb3IgaXQuCiBVc2Ugb2YgdGhpcyBtZWNoYW5pc20gcmVxdWlyZXMgdGhhdCB0aGUgYWdlbnQgd2FzIGJ1aWx0IHdpdGggc3VwcG9ydCBmb3IgdGhlCi1cZkl1Y2Qtc25tcC9wcm94eVxmUiBtb2R1bGUgKHdoaWNoIGlzIGluY2x1ZGVkIGFzIHBhcnQgb2YgdGhlCitcZkl1Y2RcLXNubXAvcHJveHlcZlIgbW9kdWxlICh3aGljaCBpcyBpbmNsdWRlZCBhcyBwYXJ0IG9mIHRoZQogZGVmYXVsdCBidWlsZCBjb25maWd1cmF0aW9uKS4KLS5JUCAicHJveHkgWy1DbiBDT05URVhUTkFNRV0gW1NOTVBDTURfQVJHU10gSE9TVCBPSUQgW1JFTU9URU9JRF0iCisuSVAgInByb3h5IFtcLUNuIENPTlRFWFROQU1FXSBbU05NUENNRF9BUkdTXSBIT1NUIE9JRCBbUkVNT1RFT0lEXSIKIHdpbGwgcGFzcyBhbnkgaW5jb21pbmcgcmVxdWVzdHMgdW5kZXIgT0lEIHRvIHRoZSBhZ2VudCBsaXN0ZW5pbmcKIG9uIHRoZSBwb3J0IHNwZWNpZmllZCBieSB0aGUgdHJhbnNwb3J0IGFkZHJlc3MgSE9TVC4KIFNlZSB0aGUgc2VjdGlvbiAKQEAgLTE0NzYsNyArMTU1Nyw3IEBACiB3aXRoIFNNVVgtYmFzZWQgc3ViYWdlbnRzIChzdWNoIGFzIFxmSWdhdGVkXGZSLCBcZkl6ZWJyYVxmUiBvciBcZklxdWFnZ2FcZlIpLgogVXNlIG9mIHRoaXMgbWVjaGFuaXNtIHJlcXVpcmVzIHRoYXQgdGhlIGFnZW50IHdhcyBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRoZQogXGZJc211eFxmUiBtb2R1bGUsIHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoZSBkZWZhdWx0IGJ1aWxkIGVudmlyb25tZW50LCBhbmQKLW11c3QgYmUgZXhwbGljaXRseSBpbmNsdWRlZCBieSBzcGVjaWZ5aW5nIHRoZSAnLS13aXRoLW1pYi1tb2R1bGVzPXNtdXgnCittdXN0IGJlIGV4cGxpY2l0bHkgaW5jbHVkZWQgYnkgc3BlY2lmeWluZyB0aGUgJ1wtXC13aXRoXC1taWJcLW1vZHVsZXM9c211eCcKIG9wdGlvbiB0byB0aGUgY29uZmlndXJlIHNjcmlwdCB3aGVuIHRoZSBwYWNrYWdlIGlzIGZpcnN0IGJ1aWx0LgogLlJTCiAuSVAgIk5vdGU6IgpAQCAtMTUwMyw3ICsxNTg0LDcgQEAKIC5JUCAic211eHNvY2tldCA8SVB2NC1hZGRyZXNzPiIKIGRlZmluZXMgdGhlIElQdjQgYWRkcmVzcyBmb3IgU01VWCBwZWVycyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBOZXQtU05NUCBhZ2VudC4KIFRoZSBkZWZhdWx0IGlzIHRvIGxpc3RlbiBvbiBhbGwgSVB2NCBpbnRlcmZhY2VzICgiMC4wLjAuMCIpLCB1bmxlc3MgdGhlIAotcGFja2FnZSBoYXMgYmVlbiBjb25maWd1cmVkIHdpdGggIi0tZW5hYmxlLWxvY2FsLXNtdXgiIGF0IGJ1aWxkIHRpbWUsIHdoaWNoIAorcGFja2FnZSBoYXMgYmVlbiBjb25maWd1cmVkIHdpdGggIlwtXC1lbmFibGVcLWxvY2FsXC1zbXV4IiBhdCBidWlsZCB0aW1lLCB3aGljaCAKIGNhdXNlcyBpdCB0byBvbmx5IGxpc3RlbiBvbiAxMjcuMC4wLjEgYnkgZGVmYXVsdC4gU01VWCB1c2VzIHRoZSB3ZWxsLWtub3duCiBUQ1AgcG9ydCAxOTkuCiAuUFAKQEAgLTE1MjIsNyArMTYwMyw3IEBACiAuSVAgIm1hc3RlciBhZ2VudHgiCiB3aWxsIGVuYWJsZSB0aGUgQWdlbnRYIGZ1bmN0aW9uYWxpdHkgYW5kIGNhdXNlIHRoZSBhZ2VudCB0bwogc3RhcnQgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBBZ2VudFggcmVnaXN0cmF0aW9ucy4KLVRoaXMgY2FuIGFsc28gYmUgYWN0aXZhdGVkIGJ5IHNwZWNpZnlpbmcgdGhlICcteCcgY29tbWFuZC1saW5lCitUaGlzIGNhbiBhbHNvIGJlIGFjdGl2YXRlZCBieSBzcGVjaWZ5aW5nIHRoZSAnXC14JyBjb21tYW5kLWxpbmUKIG9wdGlvbiAodG8gc3BlY2lmeSBhbiBhbHRlcm5hdGl2ZSBsaXN0ZW5pbmcgc29ja2V0KS4KIC5JUCAiYWdlbnRYUGVybXMgU09DS1BFUk1TIFtESVJQRVJNUyBbVVNFUnxVSUQgW0dST1VQfEdJRF1dXSIKIERlZmluZXMgdGhlIHBlcm1pc3Npb25zIGFuZCBvd25lcnNoaXAgb2YgdGhlIEFnZW50WCBVbml4IERvbWFpbiBzb2NrZXQsCkBAIC0xNTUzLDExICsxNjM0LDEzIEBACiAuUlMKIC5JUCAiTm90ZToiCiBTcGVjaWZ5aW5nIGFuIEFnZW50WCBzb2NrZXQgZG9lcyBcZkJub3RcZlIgYXV0b21hdGljYWxseSBlbmFibGUKLUFnZW50WCBmdW5jdGlvbmFsaXR5ICh1bmxpa2UgdGhlICcteCcgY29tbWFuZC1saW5lIG9wdGlvbikuCitBZ2VudFggZnVuY3Rpb25hbGl0eSAodW5saWtlIHRoZSAnXC14JyBjb21tYW5kLWxpbmUgb3B0aW9uKS4KIC5SRQogLklQICJhZ2VudFhUaW1lb3V0IE5VTSIKIGRlZmluZXMgdGhlIHRpbWVvdXQgcGVyaW9kIChOVU0gc2Vjb25kcykgZm9yIGFuIEFnZW50WCByZXF1ZXN0LgotRGVmYXVsdCBpcyAxIHNlY29uZC4KK0RlZmF1bHQgaXMgMSBzZWNvbmQuICBOVU0gYWxzbyBiZSBzcGVjaWZpZWQgd2l0aCBhIHN1ZmZpeCBvZiBvbmUgb2YgcworKGZvciBzZWNvbmRzKSwgbSAoZm9yIG1pbnV0ZXMpLCBoIChmb3IgaG91cnMpLCBkIChmb3IgZGF5cyksIG9yIHcgKGZvcgord2Vla3MpLgogLklQICJhZ2VudFhSZXRyaWVzIE5VTSIKIGRlZmluZXMgdGhlIG51bWJlciBvZiByZXRyaWVzIGZvciBhbiBBZ2VudFggcmVxdWVzdC4KIERlZmF1bHQgaXMgNSByZXRyaWVzLgpAQCAtMTU2NSw5ICsxNjQ4LDkgQEAKIG5ldC1zbm1wIHNoaXBzIHdpdGggYm90aCBDIGFuZCBQZXJsIEFQSXMgdG8gZGV2ZWxvcCB5b3VyIG93biBBZ2VudFgKIHN1YmFnZW50LgogLlNIICJPVEhFUiBDT05GSUdVUkFUSU9OIgotLklQICJvdmVycmlkZSBbLXJ3XSBPSUQgVFlQRSBWQUxVRSIKKy5JUCAib3ZlcnJpZGUgW1wtcnddIE9JRCBUWVBFIFZBTFVFIgogVGhpcyBkaXJlY3RpdmUgYWxsb3dzIHlvdSB0byBvdmVycmlkZSBhIHBhcnRpY3VsYXIgT0lEIHdpdGggYQotZGlmZmVyZW50IHZhbHVlIChhbmQgcG9zc2libHkgYSBkaWZmZXJlbnQgdHlwZSBvZiB2YWx1ZSkuICBUaGUgLXJ3CitkaWZmZXJlbnQgdmFsdWUgKGFuZCBwb3NzaWJseSBhIGRpZmZlcmVudCB0eXBlIG9mIHZhbHVlKS4gIFRoZSBcLXJ3CiBmbGFnIHdpbGwgYWxsb3cgc25tcCBTRVRzIHRvIG1vZGlmeSBpdCdzIHZhbHVlIGFzIHdlbGwuIChub3RlIHRoYXQgaWYKIHlvdSdyZSBvdmVycmlkaW5nIG9yaWdpbmFsIGZ1bmN0aW9uYWxpdHksIHRoYXQgZnVuY3Rpb25hbGl0eSB3aWxsIGJlCiBlbnRpcmVseSBsb3N0LiAgVGh1cyBTRVRTIHdpbGwgZG8gbm90aGluZyBtb3JlIHRoYW4gbW9kaWZ5IHRoZQpAQCAtMTU5OSw4ICsxNjgyLDggQEAKIElmIHlvdSdyZSB0cnlpbmcgdG8gZmlndXJlIG91dCBhc3BlY3RzIG9mIHRoZSB2YXJpb3VzIG1pYiBtb2R1bGVzCiAocG9zc2libHkgc29tZSB0aGF0IHlvdSd2ZSBhZGRlZCB5b3Vyc2VsZiksIHRoZSBmb2xsb3dpbmcgbWF5IGhlbHAgeW91CiBzcGl0IG91dCBzb21lIHVzZWZ1bCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uICBGaXJzdCBvZmYsIHBsZWFzZSByZWFkCi10aGUgc25tcGQgbWFudWFsIHBhZ2Ugb24gdGhlIC1EIGZsYWcuICBUaGVuIHRoZSBmb2xsb3dpbmcKLWNvbmZpZ3VyYXRpb24gc25tcGQuY29uZiB0b2tlbiwgY29tYmluZWQgd2l0aCB0aGUgLUQgZmxhZywgY2FuIHByb2R1Y2UKK3RoZSBzbm1wZCBtYW51YWwgcGFnZSBvbiB0aGUgXC1EIGZsYWcuICBUaGVuIHRoZSBmb2xsb3dpbmcKK2NvbmZpZ3VyYXRpb24gc25tcGQuY29uZiB0b2tlbiwgY29tYmluZWQgd2l0aCB0aGUgXC1EIGZsYWcsIGNhbiBwcm9kdWNlCiB1c2VmdWwgb3V0cHV0OgogLklQICJpbmplY3RIYW5kbGVyIEhBTkRMRVIgbW9kdWxlbmFtZSBbYmVmb3JlVGhpc10iCiBUaGlzIHdpbGwgaW5zZXJ0IG5ldyBoYW5kbGVycyBpbnRvIHRoZSBzZWN0aW9uIG9mIHRoZSBtaWIgdHJlZQpAQCAtMTYyOSw3ICsxNzEyLDcgQEAKIAogLklQIGRlYnVnCiBQcmludHMgb3V0IGxvdHMgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIHdoZW4KLXRoZSAtRGhlbHBlcjpkZWJ1ZyBmbGFnIGlzIHBhc3NlZCB0byB0aGUgc25tcGQKK3RoZSBcLURoZWxwZXI6ZGVidWcgZmxhZyBpcyBwYXNzZWQgdG8gdGhlIHNubXBkCiBhcHBsaWNhdGlvbi4KIAogLklQIHJlYWRfb25seQpAQCAtMTY2NCw4ICsxNzQ3LDggQEAKIC5JUCBvCiBUaGUgTmV0LVNOTVAgYWdlbnQgY2FuIGJlIGluc3RydWN0ZWQgdG8gcmUtcmVhZCB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIGZpbGVzLAogZWl0aGVyIHZpYSBhbiBcZkJzbm1wc2V0XGZSIGFzc2lnbm1lbnQgb2YgaW50ZWdlcigxKSB0bwotXGZDVUNELVNOTVAtTUlCOjp2ZXJzaW9uVXBkYXRlQ29uZmlnLjBcZlIgKC4xLjMuNi4xLjQuMS4yMDIxLjEwMC4xMS4wKSwKLW9yIGJ5IHNlbmRpbmcgYSBcZkJraWxsIC1IVVBcZlIgc2lnbmFsIHRvIHRoZSBhZ2VudCBwcm9jZXNzLgorXGZDVUNEXC1TTk1QXC1NSUI6OnZlcnNpb25VcGRhdGVDb25maWcuMFxmUiAoLjEuMy42LjEuNC4xLjIwMjEuMTAwLjExLjApLAorb3IgYnkgc2VuZGluZyBhIFxmQmtpbGwgXC1IVVBcZlIgc2lnbmFsIHRvIHRoZSBhZ2VudCBwcm9jZXNzLgogLklQIG8KIEFsbCBkaXJlY3RpdmVzIGxpc3RlZCB3aXRoIGEgdmFsdWUgb2YgInllcyIgYWN0dWFsbHkgYWNjZXB0IGEgcmFuZ2UKIG9mIGJvb2xlYW4gdmFsdWVzLiAgVGhlc2Ugd2lsbCBhY2NlcHQgYW55IG9mIFxmSTFcZlIsIFxmSXllc1xmUiBvcgpkaWZmIC0tZ2l0IGEvbWFuL3NubXBkLmV4YW1wbGVzLjUuZGVmIGIvbWFuL3NubXBkLmV4YW1wbGVzLjUuZGVmCmluZGV4IDk3ZjlkOWMuLjM2MDI4NjkgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZC5leGFtcGxlcy41LmRlZgorKysgYi9tYW4vc25tcGQuZXhhbXBsZXMuNS5kZWYKQEAgLTEwNCw3ICsxMDQsNyBAQAogUEVSU0lTVEVOVF9ESVJFQ1RPUlkvc25tcGQuY29uZiBmaWxlLCByYXRoZXIgdGhhbiB0aGUgdXN1YWwgbG9jYXRpb24uCiAuUkUKIC5cIgotLlwiICA/Pz8gSWxsdXN0cmF0ZSAiLWUiLCAiLWwiIGFuZCAiLW0iIGZvcm1zID8/CisuXCIgID8/PyBJbGx1c3RyYXRlICJcLWUiLCAiXC1sIiBhbmQgIlwtbSIgZm9ybXMgPz8KIC5cIgogLlNTIFRyYWRpdGlvbmFsIEFjY2VzcyBDb250cm9sCiBUaGUgU05NUHYzIHVzZXJzIGRlZmluZWQgYWJvdmUgY2FuIGJlIGdyYW50ZWQgYWNjZXNzIHRvIHRoZSBmdWxsCkBAIC0yMTksNyArMjE5LDcgQEAKIHZpZXcgICBzeXMyVmlldyBpbmNsdWRlZCAgICBzeXN0ZW0KIHZpZXcgICBzeXMyVmlldyBpbmNsdWRlZCAgICAuMS4zLjYuMS4yLjEuMjUuMQogCi1hdXRoY29tbXVuaXR5IHJlYWQgICAgICAgcHVibGljICBkZWZhdWx0ICAgICAgLXYgc3lzMlZpZXcKK2F1dGhjb21tdW5pdHkgcmVhZCAgICAgICBwdWJsaWMgIGRlZmF1bHQgICAgICBcLXYgc3lzMlZpZXcKIGF1dGhjb21tdW5pdHkgcmVhZCx3cml0ZSBwcml2YXRlIDEwLjEwLjEwLjAvOAogLmZpCiAuUkUKQEAgLTIzOCwxMiArMjM4LDEyIEBACiBjYW4gYmUgZXhwbGljaXRseSBjb25maWd1cmVkIHVzaW5nOgogLlJTCiAubmYKLVxmSSMgT3ZlcnJpZGUgJ3VuYW1lIC1hJyBhbmQgaGFyZGNvZGVkIHN5c3RlbSBPSUQgLSBpbmhlcmVudGx5IHJlYWQtb25seSB2YWx1ZXNcZlIKK1xmSSMgT3ZlcnJpZGUgJ3VuYW1lIFwtYScgYW5kIGhhcmRjb2RlZCBzeXN0ZW0gT0lEIC0gaW5oZXJlbnRseSByZWFkLW9ubHkgdmFsdWVzXGZSCiBzeXNEZXNjciAgICAgVW5pdmVyc2FsIFR1cmluZyBNYWNoaW5lIG1rIEkKIHN5c09iamVjdElEICAuMS4zLjYuMS40LjEuODA3Mi4zLjIuMTA2NgogCiBcZkkjIE92ZXJyaWRlIGRlZmF1bHQgdmFsdWVzIGZyb20gJ2NvbmZpZ3VyZScgLSBtYWtlcyB0aGVzZSBvYmplY3RzIHJlYWQtb25seVxmUgotc3lzQ29udGFjdCAgIEFsYW4uVHVyaW5nQHByZS1jcy5tYW4uYWMudWsKK3N5c0NvbnRhY3QgICBBbGFuLlR1cmluZ0BwcmVcLWNzLm1hbi5hYy51awogc3lzTmFtZSAgICAgIHRvcnRvaXNlLnR1cmluZy5jb20KIHN5c0xvY2F0aW9uICBBbiBpZGVhIGluIHRoZSBtaW5kIG9mIEFUCiAKQEAgLTI2Miw3ICsyNjIsNyBAQAogLlJTCiAubmYKIGlnbm9yZWRpc2sgL2Rldi9yZHNrL2MwdFshNl1kMAotaWdub3JlZGlzayAvZGV2L3Jkc2svYzB0WzAtNTctOWEtZl1kMAoraWdub3JlZGlzayAvZGV2L3Jkc2svYzB0WzBcLTU3XC05YVwtZl1kMAogLmZpCiAuUkUKIGVpdGhlciBvZiB3aGljaCBwcmV2ZW50cyBhbGwgZGV2aWNlcyBcZkkvZGV2L3Jkc2svYzB0XGZSWFxmSWQwXGZSCkBAIC0zODgsNyArMzg4LDcgQEAKIC5QUAogQSBtb3JlIGRldGFpbGVkIG1vbml0b3IgZXhhbXBsZSBpcyBnaXZlbiBieToKIC5SUwotbW9uaXRvciAtdSBtZSAtbyBoclNXUnVuTmFtZSAiaGlnaCBwcm9jZXNzIG1lbW9yeSIgaHJTV1J1blBlcmZNZW0gPiAxMDAwMAorbW9uaXRvciBcLXUgbWUgXC1vIGhyU1dSdW5OYW1lICJoaWdoIHByb2Nlc3MgbWVtb3J5IiBoclNXUnVuUGVyZk1lbSA+IDEwMDAwCiAuUkUKIC5QUAogVGhpcyBkZWZpbmVzIGFuIGV4cGxpY2l0IGJvb2xlYW4gbW9uaXRvciBlbnRyeSwgbG9va2luZyBmb3IgYW55IHByb2Nlc3MKQEAgLTQwMiw3ICs0MDIsNyBAQAogT2JqZWN0cyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGZsdWN0dWF0ZSBhcm91bmQgdGhlIHNwZWNpZmllZCBsZXZlbAogYXJlIGJldHRlciBtb25pdG9yZWQgdXNpbmcgYSB0aHJlc2hvbGQgbW9uaXRvciBlbnRyeTogCiAuUlMKLW1vbml0b3IgLUQgLXIgMTAgIm5ldHdvcmsgdHJhZmZpYyIgaWZJbk9jdGV0cyAxMDAwMDAwIDUwMDAwMDAKK21vbml0b3IgXC1EIFwtciAxMCAibmV0d29yayB0cmFmZmljIiBpZkluT2N0ZXRzIDEwMDAwMDAgNTAwMDAwMAogLlJFCiAuUFAKIFRoaXMgd2lsbCBzZW5kIGEgXGZDbXRlVHJpZ2dlclJpc2luZ1xmUiB0cmFwIHdoZW5ldmVyIHRoZSBpbmNvbWluZwpAQCAtNDEwLDExICs0MTAsMTEgQEAKIGFuZCBhIGNvcnJlc3BvbmRpbmcgXGZDbXRlVHJpZ2dlckZhbGxpbmdcZlIgdHJhcCB3aGVuIGl0IGZhbGxzIGJlbG93CiAxMDAga0IvcyBhZ2Fpbi4KIC5QUAotTm90ZSB0aGF0IHRoaXMgbW9uaXRvcnMgdGhlIGRlbHRhcyBiZXR3ZWVuIHN1Y2Nlc3NpdmUgc2FtcGxlcyAoXGZJLURcZlIpCitOb3RlIHRoYXQgdGhpcyBtb25pdG9ycyB0aGUgZGVsdGFzIGJldHdlZW4gc3VjY2Vzc2l2ZSBzYW1wbGVzIChcZklcLURcZlIpCiByYXRoZXIgdGhhbiB0aGUgYWN0dWFsIHNhbXBsZSB2YWx1ZXMgdGhlbXNlbHZlcy4gIFRoZSBzYW1lIGVmZmVjdAogY291bGQgYmUgb2J0YWluZWQgdXNpbmc6CiAuUlMKLW1vbml0b3IgLXIgMTAgIm5ldHdvcmsgdHJhZmZpYyIgaWZJbk9jdGV0cyAtIC0gMTAwMDAwMCA1MDAwMDAwCittb25pdG9yIFwtciAxMCAibmV0d29yayB0cmFmZmljIiBpZkluT2N0ZXRzIFwtIFwtIDEwMDAwMDAgNTAwMDAwMAogLlJFCiAuUFAKIFRoZSBcZklsaW5rVXBEb3duTm90aWZpY2F0aW9uc1xmUiBkaXJlY3RpdmUgYWJvdmUgaXMgYnJvYWRseQpAQCAtNDI0LDggKzQyNCw4IEBACiBub3RpZmljYXRpb25FdmVudCAgbGlua1VwVHJhcCAgICBsaW5rVXAgICBpZkluZGV4IGlmQWRtaW5TdGF0dXMgaWZPcGVyU3RhdHVzCiBub3RpZmljYXRpb25FdmVudCAgbGlua0Rvd25UcmFwICBsaW5rRG93biBpZkluZGV4IGlmQWRtaW5TdGF0dXMgaWZPcGVyU3RhdHVzCiAKLW1vbml0b3IgIC1yIDYwIC1lIGxpbmtVcFRyYXAgICAiR2VuZXJhdGUgbGlua1VwIiAgIGlmT3BlclN0YXR1cyAhPSAyCi1tb25pdG9yICAtciA2MCAtZSBsaW5rRG93blRyYXAgIkdlbmVyYXRlIGxpbmtEb3duIiBpZk9wZXJTdGF0dXMgPT0gMgorbW9uaXRvciAgXC1yIDYwIFwtZSBsaW5rVXBUcmFwICAgIkdlbmVyYXRlIGxpbmtVcCIgICBpZk9wZXJTdGF0dXMgIT0gMgorbW9uaXRvciAgXC1yIDYwIFwtZSBsaW5rRG93blRyYXAgIkdlbmVyYXRlIGxpbmtEb3duIiBpZk9wZXJTdGF0dXMgPT0gMgogLmZpCiAuUkUKIC5QUApAQCAtNDM3LDEyICs0MzcsMTIgQEAKIG9mIChib29sZWFuKSBtb25pdG9yIGVudHJpZXM6CiAuUlMKIC5uZgotbW9uaXRvcgktbyBwck5hbWVzICAgICAgLW8gcHJFcnJNZXNzYWdlICAicHJvY1RhYmxlIiBwckVycm9yRmxhZyAgICE9IDAKLW1vbml0b3IJLW8gbWVtRXJyb3JOYW1lIC1vIG1lbVN3YXBFcnJvck1zZyAibWVtb3J5IiAgbWVtU3dhcEVycm9yICAhPSAwCi1tb25pdG9yCS1vIGV4dE5hbWVzICAgICAtbyBleHRPdXRwdXQgICAgICJleHRUYWJsZSIgIGV4dFJlc3VsdCAgICAgIT0gMAotbW9uaXRvcgktbyBkc2tQYXRoICAgICAgLW8gZHNrRXJyb3JNc2cgICAiZHNrVGFibGUiICBkc2tFcnJvckZsYWcgICE9IDAKLW1vbml0b3IJLW8gbGFOYW1lcyAgICAgIC1vIGxhRXJyTWVzc2FnZSAgImxhVGFibGUiICAgbGFFcnJvckZsYWcgICAhPSAwCi1tb25pdG9yCS1vIGZpbGVOYW1lICAgICAtbyBmaWxlRXJyb3JNc2cgICJmaWxlVGFibGUiIGZpbGVFcnJvckZsYWcgIT0gMAorbW9uaXRvcglcLW8gcHJOYW1lcyAgICAgIFwtbyBwckVyck1lc3NhZ2UgICJwcm9jVGFibGUiIHByRXJyb3JGbGFnICAgIT0gMAorbW9uaXRvcglcLW8gbWVtRXJyb3JOYW1lIFwtbyBtZW1Td2FwRXJyb3JNc2cgIm1lbW9yeSIgIG1lbVN3YXBFcnJvciAgIT0gMAorbW9uaXRvcglcLW8gZXh0TmFtZXMgICAgIFwtbyBleHRPdXRwdXQgICAgICJleHRUYWJsZSIgIGV4dFJlc3VsdCAgICAgIT0gMAorbW9uaXRvcglcLW8gZHNrUGF0aCAgICAgIFwtbyBkc2tFcnJvck1zZyAgICJkc2tUYWJsZSIgIGRza0Vycm9yRmxhZyAgIT0gMAorbW9uaXRvcglcLW8gbGFOYW1lcyAgICAgIFwtbyBsYUVyck1lc3NhZ2UgICJsYVRhYmxlIiAgIGxhRXJyb3JGbGFnICAgIT0gMAorbW9uaXRvcglcLW8gZmlsZU5hbWUgICAgIFwtbyBmaWxlRXJyb3JNc2cgICJmaWxlVGFibGUiIGZpbGVFcnJvckZsYWcgIT0gMAogLmZpCiAuUkUKIGFuZCB3aWxsIHNlbmQgYSB0cmFwIHdoZW5ldmVyIGFueSBvZiB0aGVzZSBlbnRyaWVzIGluZGljYXRlIGEgcHJvYmxlbS4KQEAgLTQ1Miw3ICs0NTIsNyBAQAogLlJTCiAubmYKIHNldEV2ZW50ICAgcHJGaXhJdCAgcHJFcnJGaXggPSAxCi1tb25pdG9yIC1lIHByRml4SXQgInByb2NUYWJsZSIgcHJFcnJvckZsYWcgICAhPSAwCittb25pdG9yIFwtZSBwckZpeEl0ICJwcm9jVGFibGUiIHByRXJyb3JGbGFnICAgIT0gMAogLmZpCiAuUkUKIChhbmQgc2ltaWxhcmx5IGZvciBhbnkgb2YgdGhlIG90aGVyIFxmSWRlZmF1bHRNb25pdG9yXGZSIGVudHJpZXMpLgpAQCAtNDk0LDEyICs0OTQsMTIgQEAKIC5TUyAiTUlCLVNwZWNpZmljIEV4dGVuc2lvbiBDb21tYW5kcyIKIC5JIE9uZS1TaG90CiAuUlMKLSJwYXNzIFstcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCisicGFzcyBbXC1wIHByaW9yaXR5XSBNSUJPSUQgUFJPRyIKIC5SRQogLklQCiAuSSBQZXJzaXN0ZW50CiAuUlMKLSJwYXNzX3BlcnNpc3QgWy1wIHByaW9yaXR5XSBNSUJPSUQgUFJPRyIKKyJwYXNzX3BlcnNpc3QgW1wtcCBwcmlvcml0eV0gTUlCT0lEIFBST0ciCiAuUkUKIC5TUyAiRW1iZWRkZWQgUGVybCBTdXBwb3J0IgogSWYgZW1iZWRkZWQgcGVybCBzdXBwb3J0IGlzIGVuYWJsZWQgaW4gdGhlIGFnZW50LCB0aGUgZGVmYXVsdApAQCAtNTE3LDcgKzUxNyw3IEBACiAubmYKIHBlcmwgdXNlIERhdGE6OkR1bXBlcjsKIHBlcmwgc3ViIG15cm91dGluZSAgeyBwcmludCAiZ290IGNhbGxlZDogIixEdW1wZXIoQF8pLCJcXG4iOyB9Ci1wZXJsICRhZ2VudC0+cmVnaXN0ZXIoJ215bGluaycsICcuMS4zLjYuMS44NzY1JywgXFwmbXlyb3V0aW5lKTsKK3BlcmwgJGFnZW50XC0+cmVnaXN0ZXIoJ215bGluaycsICcuMS4zLjYuMS44NzY1JywgXFwmbXlyb3V0aW5lKTsKIC5maQogLlJFCiAuUFAKQEAgLTU0OCwxMSArNTQ4LDExIEBACiBTTk1QIGFnZW50cyAocnVubmluZyBvbiByZW1vdGUgc3lzdGVtcykgbWlnaHQgYmU6CiAuUlMKIC5uZgotY29tMnNlYyAtQ24gcmVtMWNvbnRleHQgIHJlbTF1c2VyIGRlZmF1bHQgIHJlbW90ZWhvc3QxCi1jb20yc2VjIC1DbiByZW0yY29udGV4dCAgcmVtMnVzZXIgZGVmYXVsdCAgcmVtb3RlaG9zdDIKK2NvbTJzZWMgXC1DbiByZW0xY29udGV4dCAgcmVtMXVzZXIgZGVmYXVsdCAgcmVtb3RlaG9zdDEKK2NvbTJzZWMgXC1DbiByZW0yY29udGV4dCAgcmVtMnVzZXIgZGVmYXVsdCAgcmVtb3RlaG9zdDIKIAotcHJveHkgLUNuIHJlbTFjb250ZXh0ICAtdiAxIC1jIHB1YmxpYyAgcmVtb3RlaG9zdDEgIC4xLjMKLXByb3h5IC1DbiByZW0yY29udGV4dCAgLXYgMSAtYyBwdWJsaWMgIHJlbW90ZWhvc3QyICAuMS4zCitwcm94eSBcLUNuIHJlbTFjb250ZXh0ICBcLXYgMSAtYyBwdWJsaWMgIHJlbW90ZWhvc3QxICAuMS4zCitwcm94eSBcLUNuIHJlbTJjb250ZXh0ICBcLXYgMSAtYyBwdWJsaWMgIHJlbW90ZWhvc3QyICAuMS4zCiAuZmkKIC5SRQogKHBsdXMgc3VpdGFibGUgYWNjZXNzIGNvbnRyb2wgZW50cmllcykuCkBAIC01NzIsNyArNTcyLDcgQEAKIG9yIGxpc3RlbmluZyBvbiBhIGRpZmZlcmVudCBwb3J0IG9uIHRoZSBzYW1lIHN5c3RlbSksCiB3aGlsZSBoYW5kbGluZyB0aGUgcmVzdCBpbnRlcm5hbGx5OgogLlJTCi1wcm94eSAtdiAxIC1jIHB1YmxpYyAgbG9jYWxob3N0OjYxNjEgIC4xLjMuNi4xLjQuMS45OQorcHJveHkgXC12IDEgXC1jIHB1YmxpYyAgbG9jYWxob3N0OjYxNjEgIC4xLjMuNi4xLjQuMS45OQogLlJFCiBUaGlzIG1lY2hhbmlzbSBjYW4gYmUgdXNlZCB0byBsaW5rIHRvZ2V0aGVyIHR3byBzZXBhcmF0ZSBTTk1QIGFnZW50cy4KIC5QUApAQCAtNTgyLDcgKzU4Miw3IEBACiAubmYKIFxmSSMgdXNlcyBTTk1QdjMgdG8gYWNjZXNzIHRoZSBNSUIgdHJlZSAuMS4zLjYuMS4yLjEuMSBvbiAncmVtb3RlaG9zdCcKICMgYW5kIG1hcHMgdGhpcyB0byB0aGUgbG9jYWwgdHJlZSAuMS4zLjYuMS4zLjEwXGZSCi1wcm94eSAtdiAzIC1sIG5vQXV0aE5vUHJpdiAtdSB1c2VyIHJlbW90ZWhvc3QgLjEuMy42LjEuMy4xMCAuMS4zLjYuMS4yLjEuMQorcHJveHkgXC12IDMgXC1sIG5vQXV0aE5vUHJpdiBcLXUgdXNlciByZW1vdGVob3N0IC4xLjMuNi4xLjMuMTAgLjEuMy42LjEuMi4xLjEKIC5maQogLlJFCiAuU1MgU01VWCBTdWItQWdlbnRzCmRpZmYgLS1naXQgYS9tYW4vc25tcGRlbHRhLjEuZGVmIGIvbWFuL3NubXBkZWx0YS4xLmRlZgppbmRleCAzMzAxNTFjLi5lOTVhNjliIDEwMDY0NAotLS0gYS9tYW4vc25tcGRlbHRhLjEuZGVmCisrKyBiL21hbi9zbm1wZGVsdGEuMS5kZWYKQEAgLTEyLDcgKzEyLDcgQEAKIHNubXBkZWx0YSBcLSBNb25pdG9yIGRlbHRhIGRpZmZlcmVuY2VzIGluIFNOTVAgQ291bnRlciB2YWx1ZXMKIC5TSCBTWU5PUFNJUwogLkIgc25tcGRlbHRhCi1bIENPTU1PTiBPUFRJT05TIF0gWy1DZl0gWyAtQ3QgXSBbIC1DcyBdIFsgLUNTIF0gWyAtQ20gXSBbIC1DRiBjb25maWdmaWxlIF0gWyAtQ2wgXSBbIC1DcCBwZXJpb2QgXSBbIC1DUCBQZWFrcyBdIFsgLUNrIF0gWyAtQ1QgXSBBR0VOVCBPSUQgWyBPSUQgLi4uIF0KK1sgQ09NTU9OIE9QVElPTlMgXSBbXC1DZl0gWyBcLUN0IF0gWyBcLUNzIF0gWyBcLUNTIF0gWyBcLUNtIF0gWyBcLUNGIGNvbmZpZ2ZpbGUgXSBbIFwtQ2wgXSBbIFwtQ3AgcGVyaW9kIF0gWyBcLUNQIFBlYWtzIF0gWyBcLUNrIF0gWyBcLUNUIF0gQUdFTlQgT0lEIFsgT0lEIC4uLiBdCiAuU0ggIkRFU0NSSVBUSU9OIgogLkIgc25tcGRlbHRhCiB3aWxsIG1vbml0b3IgdGhlIHNwZWNpZmllZCBpbnRlZ2VyIHZhbHVlZCBPSURzLCBhbmQgcmVwb3J0IGNoYW5nZXMKQEAgLTM4LDUxICszOCw1MSBAQAogZm9yIGEgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIENPTU1PTiBPUFRJT05TCiBhcyB3ZWxsIGFzIHRoZWlyIGRlc2NyaXB0aW9ucy4KIC5UUAotLkIgLUNmCisuQiBcLUNmCiBEb24ndCBmaXggZXJyb3JzIGFuZCByZXRyeSB0aGUgcmVxdWVzdC4KIFdpdGhvdXQgdGhpcyBvcHRpb24sIGlmIG11bHRpcGxlIG9pZHMgaGF2ZSBiZWVuIHNwZWNpZmllZCBmb3IKIGEgc2luZ2xlIHJlcXVlc3QgYW5kIGlmIHRoZSByZXF1ZXN0IGZvciBvbmUgb3IgbW9yZSBvZiB0aGUKIG9pZHMgZmFpbHMsIHNubXBkZWx0YSB3aWxsIHJldHJ5IHRoZSByZXF1ZXN0IHNvIHRoYXQgZGF0YSBmb3IKIG9pZHMgYXBhcnQgZnJvbSB0aGUgb25lcyB0aGF0IGZhaWxlZCB3aWxsIHN0aWxsIGJlIHJldHVybmVkLiAKLVNwZWNpZnlpbmcgLUNmIHRlbGxzCitTcGVjaWZ5aW5nIFwtQ2YgdGVsbHMKIC5JICBzbm1wZGVsdGEKIG5vdCB0byByZXRyeSBhIHJlcXVlc3QsIGV2ZW4KIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBvaWRzIHNwZWNpZmllZC4KIC5UUAotLkIgLUN0CisuQiBcLUN0CiBGbGFnIHdpbGwgZGV0ZXJtaW5lIHRpbWUgaW50ZXJ2YWwgZnJvbSB0aGUgbW9uaXRvcmVkIGVudGl0eS4KIC5UUAotLkIgLUNzCisuQiBcLUNzCiBGbGFnIHdpbGwgZGlzcGxheSBhIHRpbWVzdGFtcC4KIC5UUAotLkIgLUNTCisuQiBcLUNTCiBHZW5lcmF0ZXMgYSAic3VtIGNvdW50IiBpbiBhZGRpdGlvbiB0byB0aGUgaW5kaXZpZHVhbCBpbnN0YW5jZQogY291bnRzLiAgVGhlICJzdW0gY291bnQiIGlzIHRoZSB0b3RhbCBvZiBhbGwgdGhlIGluZGl2aWR1YWwKIGRlbHRhcyBmb3IgZWFjaCB0aW1lIHBlcmlvZC4KIC5UUAotLkIgLUNtCisuQiBcLUNtCiBQcmludHMgdGhlIG1heCB2YWx1ZSBldmVyIGF0dGFpbmVkLgogLlRQCi0uQiAtQ0YgY29uZmlnZmlsZQorLkIgXC1DRiBjb25maWdmaWxlCiBUZWxscwogLkIgc25tcGRlbHRhCiB0byByZWFkIGl0J3MgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBzcGVjaWZpZWQgZmlsZS4KIFRoaXMgb3B0aW9ucyBhbGxvd3MgdGhlIGlucHV0IHRvIGJlIHNldCB1cCBpbiBhZHZhbmNlIHJhdGhlcgogdGhhbiBoYXZpbmcgdG8gYmUgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCiAuVFAKLS5CIC1DbAorLkIgXC1DbAogVGVsbHMKIC5CIHNubXBkZWx0YQogdG8gd3JpdGUgaXQncyBjb25maWd1cmF0aW9uIHRvIGZpbGVzIHdob3NlIG5hbWVzIGNvcnJlc3BvbmQgdG8gdGhlIE1JQgotaW5zdGFuY2VzIG1vbml0b3JlZC4gIEZvciBleGFtcGxlLCBzbm1wZGVsdGEgLUNsIGxvY2FsaG9zdCBpZkluT2N0ZXRzLjEKLXdpbGwgY3JlYXRlIGEgZmlsZSAibG9jYWxob3N0LWlmSW5PY3RldHMuMSIuCitpbnN0YW5jZXMgbW9uaXRvcmVkLiAgRm9yIGV4YW1wbGUsIHNubXBkZWx0YSBcLUNsIGxvY2FsaG9zdCBpZkluT2N0ZXRzLjEKK3dpbGwgY3JlYXRlIGEgZmlsZSAibG9jYWxob3N0XC1pZkluT2N0ZXRzLjEiLgogLlRQCi0uQiAtQ3AKKy5CIFwtQ3AKIFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHNlY29uZHMgYmV0d2VlbiBwb2xsaW5nIHBlcmlvZHMuCiBQb2xsaW5nIGNvbnN0aXR1dGVzIHNlbmRpbmcgYSByZXF1ZXN0IHRvIHRoZSBhZ2VudC4gVGhlCiBkZWZhdWx0IHBvbGxpbmcgcGVyaW9kIGlzIG9uZSBzZWNvbmQuCiAuVFAKLS5CIC1DUCBwZWFrcworLkIgXC1DUCBwZWFrcwogU3BlY2lmaWVzIHRoZSByZXBvcnRpbmcgcGVyaW9kIGluIG51bWJlciBvZiBwb2xsaW5nIHBlcmlvZHMuCiBJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHNubXBkZWx0YSBwb2xscyB0aGUgYWdlbnQKIC5JIHBlYWtzCkBAIC05MSwyNCArOTEsMjQgQEAKIHRoZSByZXBvcnRpbmcgcGVyaW9kLiBJbiBhZGRpdGlvbiwgdGhlIGhpZ2hlc3QgcG9sbGVkCiB2YWx1ZSB3aXRoaW4gdGhlIHJlcG9ydGluZyBwZXJpb2QgaXMgc2hvd24uCiAuVFAKLS5CIC1DawotV2hlbiB0aGUgcG9sbGluZyBwZXJpb2QgKC1DcCkgaXMgYW4gaW5jcmVtZW50IG9mIDYwIHNlY29uZHMKLWFuZCB0aGUgdGltZXN0YW1wIGlzIGRpc3BsYXllZCBpbiB0aGUgb3V0cHV0ICgtQ3MpLCB0aGVuCisuQiBcLUNrCitXaGVuIHRoZSBwb2xsaW5nIHBlcmlvZCAoXC1DcCkgaXMgYW4gaW5jcmVtZW50IG9mIDYwIHNlY29uZHMKK2FuZCB0aGUgdGltZXN0YW1wIGlzIGRpc3BsYXllZCBpbiB0aGUgb3V0cHV0IChcLUNzKSwgdGhlbgogdGhlIGRlZmF1bHQgZGlzcGxheSBzaG93cyB0aGUgdGltZXN0YW1wIGluIHRoZSBmb3JtYXQKIGhoOm1tIG1tL2RkLiBUaGlzIG9wdGlvbiBjYXVzZXMgdGhlIHRpbWVzdGFtcCBmb3JtYXQKIHRvIGJlIGhoOm1tOnNzIG1tL2RkLgogLlRQCi0uQiAtQ1QKKy5CIFwtQ1QKIE1ha2VzIAogLkIgc25tcGRlbHRhCiBwcmludCBpdHMgb3V0cHV0IGluIHRhYnVsYXIgZm9ybS4KIC5UUAotLkIgLUN2IHZhcnMvcGt0CisuQiBcLUN2IHZhcnMvcGt0CiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG9pZHMgYWxsb3dlZCB0byBiZSBwYWNrYWdlZAogaW4gYSBzaW5nbGUgUERVLiBNdWx0aXBsZSBQRFVzIGNhbiBiZSBjcmVhdGVkIGluIGEgc2luZ2xlCiByZXF1ZXN0LiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB2YXJpYWJsZXMgcGVyIHBhY2tldCBpcyA2MC4KIFRoaXMgb3B0aW9uIGlzIHVzZWZ1bCBpZiBhIHJlcXVlc3QgcmVzcG9uc2UgcmVzdWx0cyBpbiBhbgotZXJyb3IgYmVjYXVlcyB0aGUgcGFja2V0IGlzIHRvbyBiaWcuCitlcnJvciBiZWNhdXNlIHRoZSBwYWNrZXQgaXMgdG9vIGJpZy4KIC5QUAogTm90ZSB0aGF0CiAuQiBzbm1wZGVsdGEKQEAgLTExOCw3ICsxMTgsNyBAQAogbWFudWFsIHBhZ2UuCiAuU0ggRVhBTVBMRVMKIC5uZgotJCBzbm1wZGVsdGEgLWMgcHVibGljIC12IDEgLUNzIGxvY2FsaG9zdCBJRi1NSUI6OmlmSW5VY2FzdFBrdHMuMyBJRi1NSUI6OmlmT3V0VWNhc3RQa3RzLjMKKyQgc25tcGRlbHRhIFwtYyBwdWJsaWMgXC12IDEgXC1DcyBsb2NhbGhvc3QgSUZcLU1JQjo6aWZJblVjYXN0UGt0cy4zIElGXC1NSUI6OmlmT3V0VWNhc3RQa3RzLjMKIFsyMDoxNTo0MyA2LzE0XSBpZkluVWNhc3RQa3RzLjMgLzEgc2VjOiAxNTgKIFsyMDoxNTo0MyA2LzE0XSBpZk91dFVjYXN0UGt0cy4zIC8xIHNlYzogMTU4CiBbMjA6MTU6NDQgNi8xNF0gaWZJblVjYXN0UGt0cy4zIC8xIHNlYzogMTg0CkBAIC0xMzQsNyArMTM0LDcgQEAKIFsyMDoxNTo0OSA2LzE0XSBpZkluVWNhc3RQa3RzLjMgLzEgc2VjOiAxNTgKIFsyMDoxNTo0OSA2LzE0XSBpZk91dFVjYXN0UGt0cy4zIC8xIHNlYzogMTU4CiBeQwotJCBzbm1wZGVsdGEgLWMgcHVibGljIC12IDEgLUNzIC1DVCBsb2NhbGhvc3QgSUYtTUlCOmlmSW5VY2FzdFBrdHMuMyBJRi1NSUI6aWZPdXRjYXN0UGt0cy4zCiskIHNubXBkZWx0YSBcLWMgcHVibGljIFwtdiAxIFwtQ3MgXC1DVCBsb2NhbGhvc3QgSUZcLU1JQjppZkluVWNhc3RQa3RzLjMgSUZcLU1JQjppZk91dGNhc3RQa3RzLjMKIGxvY2FsaG9zdAlpZkluVWNhc3RQa3RzLjMJaWZPdXRVY2FzdFBrdHMuMwogWzIwOjE1OjU5IDYvMTRdCTE4NC4wMAkxODQuMDAKIFsyMDoxNjowMCA2LzE0XQkxNTguMDAJMTU4LjAwCkBAIC0xNTMsNyArMTUzLDcgQEAKIHNjcmVlbi4KIC5QUAogLm5mCi0kIHNubXBkZWx0YSAtYyBwdWJsaWMgLXYgMSAtQ3QgLUNzIC1DUyAtQ20gLUNsIC1DcCA2MCAtQ1AgNjAKKyQgc25tcGRlbHRhIFwtYyBwdWJsaWMgXC12IDEgXC1DdCBcLUNzIFwtQ1MgXC1DbSBcLUNsIFwtQ3AgNjAgXC1DUCA2MAogICBpbnRlcmxpbmsuc3cubmV0LmNtdS5lZHUgLjEuMy42LjEuMi4xLjIuMi4xLjE2LjMgLjEuMy42LjEuMi4xLjIuMi4xLjE2LjQKIC5maQogLlNIICJTRUUgQUxTTyIKZGlmZiAtLWdpdCBhL21hbi9zbm1wZGYuMS5kZWYgYi9tYW4vc25tcGRmLjEuZGVmCmluZGV4IDc2NTMzNDcuLjQwNjg0NWEgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZGYuMS5kZWYKKysrIGIvbWFuL3NubXBkZi4xLmRlZgpAQCAtNywxOSArNywxOSBAQAogLlwiIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKIC5cIiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QREYgMSAiMjUgSnVsIDIwMDMiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUERGIDEgIjI4IEphbiAyMDEzIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXBkZiAtIGRpc3BsYXkgZGlzayBzcGFjZSB1c2FnZSBvbiBhIG5ldHdvcmsgZW50aXR5IHZpYSBTTk1QCiAuU0ggU1lOT1BTSVMKIC5CIHNubXBkZgotW0NPTU1PTiBPUFRJT05TXSBbLUN1XSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1DdV0gW1wtQ2hdIEFHRU5UCiAuU0ggREVTQ1JJUFRJT04KIC5CIHNubXBkZgotaXMgc2ltcGx5IGEgbmV0d29ya2VkIHZlcmlzb24gb2YgdGhlIHR5cGljYWwgZGYgY29tbWFuZC4gIEl0CitpcyBzaW1wbHkgYSBuZXR3b3JrZWQgdmVyc2lvbiBvZiB0aGUgdHlwaWNhbCBkZiBjb21tYW5kLiAgSXQKIGNoZWNrcyB0aGUgZGlzayBzcGFjZSBvbiB0aGUgcmVtb3RlIG1hY2hpbmUgYnkgZXhhbWluaW5nIHRoZQotSE9TVC1SRVNPVVJDRVMtTUlCJ3MgaHJTdG9yYWdlVGFibGUgb3IgdGhlIFVDRC1TTk1QLU1JQidzIGRza1RhYmxlLgorSE9TVFwtUkVTT1VSQ0VTXC1NSUIncyBoclN0b3JhZ2VUYWJsZSBvciB0aGUgVUNEXC1TTk1QXC1NSUIncyBkc2tUYWJsZS4KIEJ5IGRlZmF1bHQsIHRoZSBoclN0b3JhZ2VUYWJsZSBpcyBwcmVmZXJyZWQgYXMgaXQgdHlwaWNhbGx5IGNvbnRhaW5zCi1tb3JlIGluZm9ybWF0aW9uLiAgSG93ZXZlciwgdGhlIC1DdSBhcmd1bWVudCBjYW4gYmUgcGFzc2VkIHRvIHNubXBkZgorbW9yZSBpbmZvcm1hdGlvbi4gIEhvd2V2ZXIsIHRoZSBcLUN1IGFyZ3VtZW50IGNhbiBiZSBwYXNzZWQgdG8gc25tcGRmCiB0byBmb3JjZSB0aGUgdXNhZ2Ugb2YgdGhlIGRza1RhYmxlLgogLlBQCiBBR0VOVCBpZGVudGlmaWVzIGEgdGFyZ2V0IFNOTVAgYWdlbnQsIHdoaWNoIGlzIGluc3RydW1lbnRlZApAQCAtNDQsMTYgKzQ0LDIyIEBACiBmb3IgYSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgQ09NTU9OIE9QVElPTlMKIGFzIHdlbGwgYXMgdGhlaXIgZGVzY3JpcHRpb25zLgogLlRQCi0uQiAtQ3UKKy5CIFwtQ3UKIEZvcmNlcyB0aGUgY29tbWFuZCB0byB1c2UgZHNrVGFibGUgaW4gbWliCi1VQ0QtU05NUC1NSUIgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCB0byBkZXRlcm1pbmUKK1VDRFwtU05NUFwtTUlCIGluc3RlYWQgb2YgdGhlIGRlZmF1bHQgdG8gZGV0ZXJtaW5lCiB0aGUgc3RvcmFnZSBpbmZvcm1hdGlvbi4gR2VuZXJhbGx5LCB0aGUgZGVmYXVsdAotdXNlIG9mIGhyU3RvcmFnZVRhYmxlIGluIG1pYiBIT1NULVJFU09VUkNFUy1NSUIKK3VzZSBvZiBoclN0b3JhZ2VUYWJsZSBpbiBtaWIgSE9TVFwtUkVTT1VSQ0VTXC1NSUIKIGlzIHByZWZlcnJlZCBiZWNhdXNlIGl0IHR5cGljYWxseSBjb250YWlucwogbW9yZSBpbmZvcm1hdGlvbi4KKy5UUAorLkIgXC1DaAorUHJpbnQgc2l6ZXMgaW4gaHVtYW4gcmVhZGFibGUgZm9ybWF0IChpLmUuIE1pQiwgR2lCLCBUaUIpCisuVFAKKy5CIFwtQ0gKK1ByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIFNJIGZvcm1hdCAoaS5lLiBNQiwgR0IsIFRCKQogLlNIICJFWEFNUExFUyIKIC5QUAotJSBzbm1wZGYgLXYgMmMgLWMgcHVibGljIGxvY2FsaG9zdAorJSBzbm1wZGYgXC12IDJjIFwtYyBwdWJsaWMgbG9jYWxob3N0CiAuUFAKIC5uZgogRGVzY3JpcHRpb24gICAgICAgc2l6ZSAoa0IpICAgICAgICAgVXNlZCAgICBBdmFpbGFibGUgVXNlZCUKZGlmZiAtLWdpdCBhL21hbi9zbm1wZ2V0LjEuZGVmIGIvbWFuL3NubXBnZXQuMS5kZWYKaW5kZXggNmJjMWI1YS4uMGVjYWMxOSAxMDA2NDQKLS0tIGEvbWFuL3NubXBnZXQuMS5kZWYKKysrIGIvbWFuL3NubXBnZXQuMS5kZWYKQEAgLTEsNyArMSw3IEBACiAuXCIgLSotIG5yb2ZmIC0qLQotLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gCi0uXCIgU2VlIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIKLS5cIiBjb3B5cmlnaHRzIHRoYXQgbWF5IGFwcGx5OgorLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorLlwiIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworLlwiIHRoYXQgbWF5IGFwcGx5OgogLlwiIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiIAlDb3B5cmlnaHQgMTk4OCwgMTk4OSBieSBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQogLlwiIApAQCAtMjgsNyArMjgsNyBAQAogc25tcGdldCAtIGNvbW11bmljYXRlcyB3aXRoIGEgbmV0d29yayBlbnRpdHkgdXNpbmcgU05NUCBHRVQgcmVxdWVzdHMKIC5TSCBTWU5PUFNJUwogLkIgc25tcGdldAotW0NPTU1PTiBPUFRJT05TXSBbLUNmXSBBR0VOVCBPSUQgW09JRF0uLi4KK1tDT01NT04gT1BUSU9OU10gW1wtQ2ZdIEFHRU5UIE9JRCBbT0lEXS4uLgogLlNIIERFU0NSSVBUSU9OCiAuQiBzbm1wZ2V0CiBpcyBhbiBTTk1QIGFwcGxpY2F0aW9uIHRoYXQgdXNlcyB0aGUgU05NUCBHRVQgcmVxdWVzdCB0byBxdWVyeSBmb3IKQEAgLTM4LDkgKzM4LDkgQEAKIC5JUiB2YXJpYWJsZXMoNSkgLgogLlNIICJPUFRJT05TIgogLlRQIDgKLS5CIC1DZgorLkIgXC1DZgogSWYKLS5CIC1DZgorLkIgXC1DZgogaXMKIC5JIG5vdAogc3BlY2lmaWVkLCBzb21lIGFwcGxpY2F0aW9ucwpAQCAtNjIsNyArNjIsNyBAQAogLlNIICJFWEFNUExFUyIKIFRoZSBjb21tYW5kOgogLlBQCi0gICAgc25tcGdldCAtYyBwdWJsaWMgemV1cyBzeXN0ZW0uc3lzRGVzY3IuMAorICAgIHNubXBnZXQgXC1jIHB1YmxpYyB6ZXVzIHN5c3RlbS5zeXNEZXNjci4wCiAuUFAKIHdpbGwgcmV0cmlldmUgdGhlIHZhcmlhYmxlIHN5c3RlbS5zeXNEZXNjci4wIGZyb20gdGhlIGhvc3QgCiAuQiB6ZXVzIApAQCAtNzgsMTMgKzc4LDEzIEBACiB2YXJpYWJsZXMgaW4gdGhlIHJlcXVlc3QsIHRoZSByZXF1ZXN0IHdpbGwgYmUgcmVzZW50IHdpdGhvdXQgdGhlIGJhZAogdmFyaWFibGUuCiAuUFAKLUhlcmUgaXMgYW5vdGhlciBleGFtcGxlLiBUaGUgLWMgYW5kIC12IG9wdGlvbnMgYXJlIGRlZmluZWQgaW4gdGhlIAorSGVyZSBpcyBhbm90aGVyIGV4YW1wbGUuIFRoZSBcLWMgYW5kIFwtdiBvcHRpb25zIGFyZSBkZWZpbmVkIGluIHRoZSAKIC5JIHNubXBjbWQoMSkKIG1hbnVhbCBwYWdlLiAoTm90ZSB0aGF0IHN5c3RlbS5zeXNVcFRpbWUgaXMgYW4gaW5jb21wbGV0ZQogT0lELCBhcyBpdCBuZWVkcyB0aGUgLjAgaW5kZXggYXBwZW5kZWQgdG8gaXQpOgogLlBQCiAubmYKLSAgICBzbm1wZ2V0IC12MSAtQ2YgLWMgcHVibGljIGxvY2FsaG9zdCBzeXN0ZW0uc3lzVXBUaW1lIHN5c3RlbS5zeXNDb250YWN0LjAKKyAgICBzbm1wZ2V0IFwtdjEgXC1DZiBcLWMgcHVibGljIGxvY2FsaG9zdCBzeXN0ZW0uc3lzVXBUaW1lIHN5c3RlbS5zeXNDb250YWN0LjAKIC5maQogLlBQCiBUaGlzIGV4YW1wbGUgd2lsbCByZXR1cm4gdGhlIGZvbGxvd2luZzoKQEAgLTk3LDcgKzk3LDcgQEAKIC5QUAogU2ltaWxhcmx5LCB0aGUgY29tbWFuZDoKIC5uZgotICAgIHNubXBnZXQgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzdGVtLnN5c1VwVGltZSBzeXN0ZW0uc3lzQ29udGFjdC4wCisgICAgc25tcGdldCBcLXYxIFwtYyBwdWJsaWMgbG9jYWxob3N0IHN5c3RlbS5zeXNVcFRpbWUgc3lzdGVtLnN5c0NvbnRhY3QuMAogLmZpCiAuUFAKIFdpbGwgcmV0dXJuOgpAQCAtMTEyLDcgKzExMiw3IEBACiAuUFAKIFdpdGggdGhlCiAuQgotLUNmCitcLUNmCiBmbGFnIHNwZWNpZmllZCB0aGUgYXBwbGljYXRpb24gd2lsbCBub3QgdHJ5IHRvIGZpeCB0aGUgUERVIGZvciB5b3UuCiAuU0ggIlNFRSBBTFNPIgogc25tcGNtZCgxKSwgc25tcHdhbGsoMSksIHZhcmlhYmxlcyg1KS4KZGlmZiAtLWdpdCBhL21hbi9zbm1wZ2V0bmV4dC4xLmRlZiBiL21hbi9zbm1wZ2V0bmV4dC4xLmRlZgppbmRleCA3N2M3ODM1Li5lNmM2ZTYwIDEwMDY0NAotLS0gYS9tYW4vc25tcGdldG5leHQuMS5kZWYKKysrIGIvbWFuL3NubXBnZXRuZXh0LjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAotLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCi0uXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKKy5cIiB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKy5cIiB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODgsIDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTI4LDkgKzI4LDkgQEAKIHNubXBnZXRuZXh0IC0gY29tbXVuaWNhdGVzIHdpdGggYSBuZXR3b3JrIGVudGl0eSB1c2luZyBTTk1QIEdFVE5FWFQgcmVxdWVzdHMKIC5TSCBTWU5PUFNJUwogLkIgc25tcGdldG5leHQKLVtDT01NT04gT1BUSU9OU10gWy1DZl0gQUdFTlQgT0lEIFtPSURdLi4uCitbQ09NTU9OIE9QVElPTlNdIFtcLUNmXSBBR0VOVCBPSUQgW09JRF0uLi4KIC5TSCBERVNDUklQVElPTgotLkIgc25tcGdldAorLkIgc25tcGdldG5leHQKIGlzIGFuIFNOTVAgYXBwbGljYXRpb24gdGhhdCB1c2VzIHRoZSBTTk1QIEdFVE5FWFQgcmVxdWVzdCB0byBxdWVyeSBmb3IKIGluZm9ybWF0aW9uIG9uIGEgbmV0d29yayBlbnRpdHkuICBPbmUgb3IgbW9yZSBvYmplY3QgaWRlbnRpZmllcnMKIChPSURzKSBtYXkgYmUgZ2l2ZW4gYXMgYXJndW1lbnRzIG9uIHRoZSBjb21tYW5kIGxpbmUuICBFYWNoIHZhcmlhYmxlCkBAIC00MSw3ICs0MSw3IEBACiAuUFAKIEZvciBleGFtcGxlOgogLlBQCi1zbm1wZ2V0bmV4dCAtYyBwdWJsaWMgemV1cyBpbnRlcmZhY2VzLmlmVGFibGUuaWZFbnRyeS5pZlR5cGUuMQorc25tcGdldG5leHQgXC1jIHB1YmxpYyB6ZXVzIGludGVyZmFjZXMuaWZUYWJsZS5pZkVudHJ5LmlmVHlwZS4xCiAuUFAKIHdpbGwgcmV0cmlldmUgdGhlIHZhcmlhYmxlIGludGVyZmFjZXMuaWZUYWJsZS5pZkVudHJ5LmlmVHlwZS4yOgogLlBQCkBAIC01Miw5ICs1Miw5IEBACiByZXF1ZXN0IHdhcyBtYWxmb3JtZWQuCiAuU0ggIk9QVElPTlMiCiAuVFAgOAotLkIgLUNmCisuQiBcLUNmCiBJZgotLkIgLUNmCisuQiBcLUNmCiBpcwogLkkgbm90CiBzcGVjaWZpZWQsIHNvbWUgYXBwbGljYXRpb25zCmRpZmYgLS1naXQgYS9tYW4vc25tcG5ldHN0YXQuMS5kZWYgYi9tYW4vc25tcG5ldHN0YXQuMS5kZWYKaW5kZXggOTJjZmVlNC4uNDUwYWI3ZiAxMDA2NDQKLS0tIGEvbWFuL3NubXBuZXRzdGF0LjEuZGVmCisrKyBiL21hbi9zbm1wbmV0c3RhdC4xLmRlZgpAQCAtMTIsNyArMTIsNyBAQAogLlwiIGJvdGggdGhhdCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiAKIC5cIiBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIENNVSBub3QgYmUKIC5cIiB1c2VkIGluIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUKLS5cIiBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICAKKy5cIiBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLCB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uCiAuXCIgCiAuXCIgQ01VIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLCBJTkNMVURJTkcKIC5cIiBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8gRVZFTlQgU0hBTEwKQEAgLTU4LDIxICs1OCwyMSBAQAogLlwiIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKIC5cIiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QTkVUU1RBVCAxICIyMCBKYW4gMjAxMCIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QTkVUU1RBVCAxICIwNCBOb3YgMjAxMyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wbmV0c3RhdCBcLSBkaXNwbGF5IG5ldHdvcmtpbmcgc3RhdHVzIGFuZCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZyb20gYSBuZXR3b3JrIGVudGl0eSB2aWEgU05NUAogLlNIIFNZTk9QU0lTCiAuQiBzbm1wbmV0c3RhdAotW0NPTU1PTiBPUFRJT05TXSBbLUNhXSBbLUNuXSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1DYV0gW1wtQ25dIFtcLUN2XSBbXC1DZiBhZGRyZXNzX2ZhbWlseV0gQUdFTlQKIC5icgogLkIgc25tcG5ldHN0YXQKLVtDT01NT04gT1BUSU9OU10gWy1DaV0gWy1Db10gWy1Dcl0gWy1Dbl0gWy1Dc10gQUdFTlQKK1tDT01NT04gT1BUSU9OU10gW1wtQ3JdIFtcLUNuXSBbXC1Ddl0gW1wtQ2YgYWRkcmVzc19mYW1pbHldIEFHRU5UCiAuYnIKIC5CIHNubXBuZXRzdGF0Ci1bQ09NTU9OIE9QVElPTlNdIFstQ2ldIFstQ25dIFstQ0kgaW50ZXJmYWNlXSBBR0VOVCBbaW50ZXJ2YWxdCitbQ09NTU9OIE9QVElPTlNdIFtcLUNpXSBbXC1DIG8gfCBiIHwgZF0gW1wtQ25dIFtcLUN2XSBbXC1DSSBpbnRlcmZhY2VdIFtcLUN3IGludGVydmFsXSBBR0VOVAogLmJyCiAuQiBzbm1wbmV0c3RhdAotW0NPTU1PTiBPUFRJT05TXSBbLUNhXSBbLUNuXSBbLUNzXSBbLUNwIHByb3RvY29sXSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1Dc1tzXV0gW1wtQ3AgcHJvdG9jb2xdIEFHRU5UCiAuU0ggREVTQ1JJUFRJT04KIFRoZQogLkIgc25tcG5ldHN0YXQgCkBAIC0xMTUsMTggKzExNSwzMiBAQAogZm9yIGEgbGlzdCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIGNvbW1vbiBvcHRpb25zCiBhcyB3ZWxsIGFzIHRoZWlyIGRlc2NyaXB0aW9ucy4KIC5QUAorLkIgXC1DTAordXNlIHRoZSBsZWdhY3kgU05NUCBNSUIgZWxlbWVudHMsIG5vdCB0aGUgbW9kZXJuIElQIHZlcnNpb24gYWdub3N0aWMKK3RhYmxlcy4gXGZJc25tcG5ldHN0YXRcZlIgIHdpbGwgYXV0b21hdGljYWxseSBmYWxsIGJhY2sgdG8gdGhlIGxlZ2FjeQordGFibGVzIGlmIHRoZSBtb2Rlcm4gb25lcyBhcmUgbm90IGF2YWlsYWJsZS4KKy5QUAogLkIgXC1DYQogV2l0aCB0aGUgZGVmYXVsdCBkaXNwbGF5LAogc2hvdyB0aGUgc3RhdGUgb2YgYWxsIHNvY2tldHM7IG5vcm1hbGx5IHNvY2tldHMgdXNlZCBieQogc2VydmVyIHByb2Nlc3NlcyBhcmUgbm90IHNob3duLgogLlBQCisuQkkgXC1DZiAiIGFkZHJlc3NfZmFtaWx5IgorT25seSBzaG93IGVudHJpZXMgZm9yIHRoZSBzZWxlY3RlZCBhZGRyZXNzIGZhbWlseSAoaW5ldCwgaW5ldDYpCisuUFAKIC5CIFwtQ2kKIFNob3cgdGhlIHN0YXRlIG9mIGFsbCBvZiB0aGUgbmV0d29yayBpbnRlcmZhY2VzLgotVGhlICBpbnRlcmZhY2UgIGRpc3BsYXkgIHByb3ZpZGVzICBhICB0YWJsZSAgb2YgY3VtdWxhdGl2ZQorVGhlIGludGVyZmFjZSBkaXNwbGF5IHByb3ZpZGVzIGEgdGFibGUgb2YgY3VtdWxhdGl2ZQogc3RhdGlzdGljcyByZWdhcmRpbmcgcGFja2V0cyB0cmFuc2ZlcnJlZCwgZXJyb3JzLCBhbmQgY29sbGlzaW9ucy4KLVRoZSAgbmV0d29yayBhZGRyZXNzZXMgb2YgdGhlIGludGVyZmFjZSBhbmQgdGhlIG1heGltdW0gdHJhbnNtaXNzaW9uIAorVGhlIG5ldHdvcmsgYWRkcmVzc2VzIG9mIHRoZSBpbnRlcmZhY2UgYW5kIHRoZSBtYXhpbXVtIHRyYW5zbWlzc2lvbiAKIHVuaXQgKGBgbXR1JycpIGFyZSBhbHNvIGRpc3BsYXllZC4KIC5QUAorLkIgXC1DZAorQWRkIGRyb3BwZWQgcGFja2V0cyB0byB0aGUgaW50ZXJmYWNlIGRpc3BsYXkuCisuUFAKKy5CIFwtQ2IKK1Nob3cgYW4gZXh0ZW5kZWQgaW50ZXJmYWNlIHN0YXR1cywgZ2l2aW5nIG9jdGV0cyBpbiBhZGRpdGlvbiB0byBwYWNrZXRzLgorLlBQCiAuQiBcLUNvCiBTaG93IGFuIGFiYnJldmlhdGVkIGludGVyZmFjZSBzdGF0dXMsIGdpdmluZyBvY3RldHMgaW4gcGxhY2Ugb2YgcGFja2V0cy4KIFRoaXMgaXMgdXNlZnVsIHdoZW4gZW5xdWlyaW5nIHZpcnR1YWwgaW50ZXJmYWNlcyAoc3VjaCBhcyBGcmFtZS1SZWxheSBjaXJjdWl0cykKQEAgLTE0NSw2ICsxNTksMTAgQEAKIHN5bWJvbGljYWxseSkuCiBUaGlzIG9wdGlvbiBtYXkgYmUgdXNlZCB3aXRoIGFueSBvZiB0aGUgZGlzcGxheSBmb3JtYXRzLgogLlBQCisuQiBcLUN2CitBbGxvdyBsb25nIGhvc3Qgb3Igc2VydmljZSBuYW1lcyB0byBicmVhayB0aGUgY29sdW1uYXIgb3V0cHV0LgorVGhpcyBvcHRpb24gbWF5IGJlIHVzZWQgd2l0aCBhbnkgb2YgdGhlIGRpc3BsYXkgZm9ybWF0cy4KKy5QUAogLkJJIFwtQ3AgIiBwcm90b2NvbCIKIFNob3cgc3RhdGlzdGljcyBhYm91dCAKIC5JUiBwcm90b2NvbCwKQEAgLTE1OCwyNCArMTc2LDIwIEBACiBpcyB1bmtub3duIG9yIGlmIHRoZXJlIGlzIG5vIHN0YXRpc3RpY3Mgcm91dGluZSBmb3IgaXQuCiAuUFAKIC5CIFwtQ3MKLVNob3cgcGVyLXByb3RvY29sIHN0YXRpc3RpY3MuICBXaGVuIHVzZWQgd2l0aCB0aGUKLS5CIFwtQ3IKLW9wdGlvbiwgc2hvdyByb3V0aW5nIHN0YXRpc3RpY3MgaW5zdGVhZC4KK1Nob3cgcGVyLXByb3RvY29sIHN0YXRpc3RpY3MuCitJZiB0aGlzIGlzIGR1cGxpY2F0ZWQgKC1Dc3MpIHN0YXRpc3RpY3MgZW50cmllcyB3aGljaCBhcmUgemVybyB3aWxsCitiZSBzdXBwcmVzc2VkLgogLlBQCiAuQiBcLUNyCiBTaG93IHRoZSByb3V0aW5nIHRhYmxlcy4KLVdoZW4KLS5CIFwtQ3MKLWlzIGFsc28gcHJlc2VudCwgc2hvdyBwZXItcHJvdG9jb2wgcm91dGluZyBzdGF0aXN0aWNzIGluc3RlYWQgb2YgCi10aGUgcm91dGluZyB0YWJsZXMuCiAuUFAKIC5CSSBcLUNSICIgcmVwZWF0ZXJzIgogRm9yIEdFVEJVTEsgcmVxdWVzdHMsCiAuSSByZXBlYXRlcnMKIHNwZWNpZmllcyB0aGUgbWF4LXJlcGVhdGVycyB2YWx1ZSB0byB1c2UuCiAuUFAKLVdoZW4gIHNubXBuZXRzdGF0IGlzIGludm9rZWQgd2l0aCBhbiBpbnRlcnZhbCBhcmd1bWVudCwgaXQKLWRpc3BsYXlzIGEgcnVubmluZyBjb3VudCBvZiBzdGF0aXN0aWNzIHJlbGF0ZWQgdG8gIG5ldHdvcmsKK1doZW4gc25tcG5ldHN0YXQgaXMgaW52b2tlZCB3aXRoIGFuIGludGVydmFsIGFyZ3VtZW50LCBpdAorZGlzcGxheXMgYSBydW5uaW5nIGNvdW50IG9mIHN0YXRpc3RpY3MgcmVsYXRlZCB0byBuZXR3b3JrCiBpbnRlcmZhY2VzLgogLkkgaW50ZXJ2YWwKIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuCkBAIC0xODQsNDMgKzE5OCw0MyBAQAogLkkgVGhlIEFjdGl2ZSBTb2NrZXRzIERpc3BsYXkgKGRlZmF1bHQpCiAuUFAKIFRoZSBkZWZhdWx0IGRpc3BsYXksIGZvciBhY3RpdmUgc29ja2V0cywgc2hvd3MgdGhlIGxvY2FsCi1hbmQgcmVtb3RlIGFkZHJlc3NlcywgcHJvdG9jb2wsIGFuZCB0aGUgaW50ZXJuYWwgc3RhdGUgIG9mCi10aGUgICBwcm90b2NvbC4gICAgQWRkcmVzcyAgIGZvcm1hdHMgICBhcmUgICBvZiAgdGhlICBmb3JtCi1gYGhvc3QucG9ydCcnIG9yIGBgbmV0d29yay5wb3J0JycgaWYgIGEgIHNvY2tldCdzICBhZGRyZXNzCi1zcGVjaWZpZXMgIGEgIG5ldHdvcmsgIGJ1dCBubyBzcGVjaWZpYyBob3N0IGFkZHJlc3MuICBXaGVuCithbmQgcmVtb3RlIGFkZHJlc3NlcywgcHJvdG9jb2wsIGFuZCB0aGUgaW50ZXJuYWwgc3RhdGUgb2YKK3RoZSBwcm90b2NvbC4gIEFkZHJlc3MgZm9ybWF0cyBhcmUgb2YgdGhlIGZvcm0KK2BgaG9zdC5wb3J0Jycgb3IgYGBuZXR3b3JrLnBvcnQnJyBpZiBhIHNvY2tldCdzIGFkZHJlc3MKK3NwZWNpZmllcyBhIG5ldHdvcmsgYnV0IG5vIHNwZWNpZmljIGhvc3QgYWRkcmVzcy4gIFdoZW4KIGtub3duLCB0aGUgaG9zdCBhbmQgbmV0d29yayBhZGRyZXNzZXMgYXJlIGRpc3BsYXllZCBzeW1ib2xpY2FsbHkKLWFjY29yZGluZyAgIHRvICB0aGUgIGRhdGEgIGJhc2VzIAotLkkgL2V0Yy9ob3N0cyAgYW5kCithY2NvcmRpbmcgdG8gdGhlIGRhdGFiYXNlcyAKKy5JIC9ldGMvaG9zdHMgYW5kCiAuSVIgL2V0Yy9uZXR3b3JrcywKLXJlc3BlY3RpdmVseS4gIElmIGEgc3ltYm9saWMgIG5hbWUgIGZvciAgYW4KLWFkZHJlc3MgIGlzIHVua25vd24sIG9yIGlmIHRoZQorcmVzcGVjdGl2ZWx5LiAgSWYgYSBzeW1ib2xpYyBuYW1lIGZvciBhbgorYWRkcmVzcyBpcyB1bmtub3duLCBvciBpZiB0aGUKIC5CIFwtQ24KIG9wdGlvbiBpcyBzcGVjaWZpZWQsIHRoZQotYWRkcmVzcyBpcyBwcmludGVkIG51bWVyaWNhbGx5LCBhY2NvcmRpbmcgdG8gIHRoZSAgYWRkcmVzcworYWRkcmVzcyBpcyBwcmludGVkIG51bWVyaWNhbGx5LCBhY2NvcmRpbmcgdG8gdGhlIGFkZHJlc3MKIGZhbWlseS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgSW50ZXJuZXQgYGBkb3QKLWZvcm1hdCwnJyByZWZlciAgdG8KK2Zvcm1hdCwnJyByZWZlciB0bwogLklSIGluZXQoM04pLgotVW5zcGVjaWZpZWQsICBvciAgYGB3aWxkY2FyZCcnLCBhZGRyZXNzZXMgYW5kIHBvcnRzIGFwcGVhciBhcyBgYConJy4KK1Vuc3BlY2lmaWVkLCBvciBgYHdpbGRjYXJkJycsIGFkZHJlc3NlcyBhbmQgcG9ydHMgYXBwZWFyIGFzIGBgKicnLgogLlBQCiAuSSBUaGUgSW50ZXJmYWNlIERpc3BsYXkKIC5QUAotVGhlICBpbnRlcmZhY2UgIGRpc3BsYXkgIHByb3ZpZGVzICBhICB0YWJsZSAgb2YgY3VtdWxhdGl2ZQorVGhlIGludGVyZmFjZSBkaXNwbGF5IHByb3ZpZGVzIGEgdGFibGUgb2YgY3VtdWxhdGl2ZQogc3RhdGlzdGljcyByZWdhcmRpbmcgcGFja2V0cyB0cmFuc2ZlcnJlZCwgZXJyb3JzLCBhbmQgY29sLQotbGlzaW9ucy4gICBUaGUgIG5ldHdvcmsgYWRkcmVzc2VzIG9mIHRoZSBpbnRlcmZhY2UgYW5kIHRoZQorbGlzaW9ucy4gIFRoZSBuZXR3b3JrIGFkZHJlc3NlcyBvZiB0aGUgaW50ZXJmYWNlIGFuZCB0aGUKIG1heGltdW0gdHJhbnNtaXNzaW9uIHVuaXQgKGBgbXR1JycpIGFyZSBhbHNvIGRpc3BsYXllZC4KIC5QUAogLkkgVGhlIFJvdXRpbmcgVGFibGUgRGlzcGxheQogLlBQCi1UaGUgcm91dGluZyB0YWJsZSBkaXNwbGF5IGluZGljYXRlcyB0aGUgIGF2YWlsYWJsZSAgcm91dGVzCi1hbmQgIHRoZWlyICBzdGF0dXMuICAgRWFjaCByb3V0ZSBjb25zaXN0cyBvZiBhIGRlc3RpbmF0aW9uCi1ob3N0IG9yIG5ldHdvcmsgYW5kIGEgZ2F0ZXdheSB0byB1c2UgaW4gIGZvcndhcmRpbmcgIHBhY2stCi1ldHMuICAgVGhlIGZsYWdzIGZpZWxkIHNob3dzIHRoZSBzdGF0ZSBvZiB0aGUgcm91dGUgKGBgVScnCi1pZiBgYHVwJycpLCB3aGV0aGVyIHRoZSByb3V0ZSBpcyAgdG8gIGEgIGdhdGV3YXkgIChgYEcnJyksCi13aGV0aGVyICB0aGUgIHJvdXRlICB3YXMgY3JlYXRlZCBkeW5hbWljYWxseSBieSBhIHJlZGlyZWN0Ci0oYGBEJycpLCBhbmQgd2hldGhlciB0aGUgcm91dGUgIGhhcyAgYmVlbiAgbW9kaWZpZWQgIGJ5ICBhCi1yZWRpcmVjdCAgKGBgTScnKS4gICBEaXJlY3QgIHJvdXRlcyAgYXJlICBjcmVhdGVkIGZvciBlYWNoCi1pbnRlcmZhY2UgYXR0YWNoZWQgdG8gdGhlIGxvY2FsIGhvc3Q7ICB0aGUgIGdhdGV3YXkgIGZpZWxkCi1mb3IgIHN1Y2ggZW50cmllcyBzaG93cyB0aGUgYWRkcmVzcyBvZiB0aGUgb3V0Z29pbmcgaW50ZXItCitUaGUgcm91dGluZyB0YWJsZSBkaXNwbGF5IGluZGljYXRlcyB0aGUgYXZhaWxhYmxlIHJvdXRlcworYW5kIHRoZWlyIHN0YXR1cy4gIEVhY2ggcm91dGUgY29uc2lzdHMgb2YgYSBkZXN0aW5hdGlvbgoraG9zdCBvciBuZXR3b3JrIGFuZCBhIGdhdGV3YXkgdG8gdXNlIGluIGZvcndhcmRpbmcgcGFjay0KK2V0cy4gIFRoZSBmbGFncyBmaWVsZCBzaG93cyB0aGUgc3RhdGUgb2YgdGhlIHJvdXRlIChgYFUnJworaWYgYGB1cCcnKSwgd2hldGhlciB0aGUgcm91dGUgaXMgdG8gYSBnYXRld2F5IChgYEcnJyksCit3aGV0aGVyIHRoZSByb3V0ZSB3YXMgY3JlYXRlZCBkeW5hbWljYWxseSBieSBhIHJlZGlyZWN0CisoYGBEJycpLCBhbmQgd2hldGhlciB0aGUgcm91dGUgaGFzIGJlZW4gbW9kaWZpZWQgYnkgYQorcmVkaXJlY3QgKGBgTScnKS4gIERpcmVjdCByb3V0ZXMgYXJlIGNyZWF0ZWQgZm9yIGVhY2gKK2ludGVyZmFjZSBhdHRhY2hlZCB0byB0aGUgbG9jYWwgaG9zdDsgdGhlIGdhdGV3YXkgZmllbGQKK2ZvciBzdWNoIGVudHJpZXMgc2hvd3MgdGhlIGFkZHJlc3Mgb2YgdGhlIG91dGdvaW5nIGludGVyLQogZmFjZS4gIFRoZSBpbnRlcmZhY2UgZW50cnkgaW5kaWNhdGVzIHRoZSBuZXR3b3JrIGludGVyZmFjZQogdXRpbGl6ZWQgZm9yIHRoZSByb3V0ZS4KIC5QUApAQCAtMjMxLDEwICsyNDUsMTAgQEAKIGlzIGludm9rZWQgd2l0aCBhbgogLkkgaW50ZXJ2YWwKIGFyZ3VtZW50LCBpdAotZGlzcGxheXMgYSBydW5uaW5nIGNvdW50IG9mIHN0YXRpc3RpY3MgcmVsYXRlZCB0byAgbmV0d29yawotaW50ZXJmYWNlcy4gICBUaGlzICBkaXNwbGF5ICBjb25zaXN0cyAgb2YgYSBjb2x1bW4gZm9yIHRoZQorZGlzcGxheXMgYSBydW5uaW5nIGNvdW50IG9mIHN0YXRpc3RpY3MgcmVsYXRlZCB0byBuZXR3b3JrCitpbnRlcmZhY2VzLiAgVGhpcyBkaXNwbGF5IGNvbnNpc3RzIG9mIGEgY29sdW1uIGZvciB0aGUKIHByaW1hcnkgaW50ZXJmYWNlIGFuZCBhIGNvbHVtbiBzdW1tYXJpemluZyBpbmZvcm1hdGlvbiBmb3IKLWFsbCAgaW50ZXJmYWNlcy4gICBUaGUgIHByaW1hcnkgIGludGVyZmFjZSBtYXkgYmUgcmVwbGFjZWQKK2FsbCBpbnRlcmZhY2VzLiAgVGhlIHByaW1hcnkgaW50ZXJmYWNlIG1heSBiZSByZXBsYWNlZAogd2l0aCBhbm90aGVyIGludGVyZmFjZSB3aXRoIHRoZQogLkIgXC1DSQogb3B0aW9uLiAgVGhlIGZpcnN0IGxpbmUKQEAgLTI1NCw3ICsyNjgsNyBAQAogLlNIIEVYQU1QTEVTCiBFeGFtcGxlIG9mIHVzaW5nIHNubXBuZXRzdGF0IHRvIGRpc3BsYXkgYWN0aXZlIHNvY2tldHMgKGRlZmF1bHQpOgogLlBQCi0lIHNubXBuZXRzdGF0IC12IDJjIC1jIHB1YmxpYyAtQ2EgdGVzdGhvc3QKKyUgc25tcG5ldHN0YXQgXC12IDJjIFwtYyBwdWJsaWMgXC1DYSB0ZXN0aG9zdAogLlBQCiAubmYKIEFjdGl2ZSBJbnRlcm5ldCAodGNwKSBDb25uZWN0aW9ucyAoaW5jbHVkaW5nIHNlcnZlcnMpCkBAIC0yNzgsNyArMjkyLDcgQEAKIFwmLi4uCiAuZmkKIC5QUAotJSBzbm1wbmV0c3RhdCAtdiAyYyAtYyBwdWJsaWMgLUNpIHRlc3Rob3N0CislIHNubXBuZXRzdGF0IFwtdiAyYyBcLWMgcHVibGljIFwtQ2kgdGVzdGhvc3QKIC5QUAogLm5mCiBOYW1lICAgICBNdHUgTmV0d29yayAgICBBZGRyZXNzICAgICAgICAgIElwa3RzICAgSWVycnMgICAgT3BrdHMgT2VycnMgUXVldWUKQEAgLTI4OSw3ICszMDMsNyBAQAogRXhhbXBsZSBvZiB1c2luZyBzbm1wbmV0c3RhdCB0byBzaG93IHN0YXRpc3RpY3MgYWJvdXQgYSBzcGVjaWZpYyBwcm90b2NvbDoKIC5QUAogLm5mCi0lIHNubXBuZXRzdGF0IC12IDJjIC1jIHB1YmxpYyAtQ3AgdGNwIHRlc3Rob3N0CislIHNubXBuZXRzdGF0IFwtdiAyYyBcLWMgcHVibGljIFwtQ3AgdGNwIHRlc3Rob3N0CiAKIEFjdGl2ZSBJbnRlcm5ldCAodGNwKSBDb25uZWN0aW9ucwogUHJvdG8gTG9jYWwgQWRkcmVzcyAgICAgICAgICAgICAgICBGb3JlaWduIEFkZHJlc3MgICAgICAgICAgICAgICAgIChzdGF0ZSkKZGlmZiAtLWdpdCBhL21hbi9zbm1wc2V0LjEuZGVmIGIvbWFuL3NubXBzZXQuMS5kZWYKaW5kZXggNWM3ZGY0Ni4uYjBjNGUwNyAxMDA2NDQKLS0tIGEvbWFuL3NubXBzZXQuMS5kZWYKKysrIGIvbWFuL3NubXBzZXQuMS5kZWYKQEAgLTEsNyArMSw3IEBACiAuXCIgLSotIG5yb2ZmIC0qLQotLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4KLS5cIiBTZWUgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlcgotLlwiIGNvcHlyaWdodHMgdGhhdCBtYXkgYXBwbHk6CisuXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAgU2VlCisuXCIgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisuXCIgdGhhdCBtYXkgYXBwbHk6CiAuXCIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIgCUNvcHlyaWdodCAxOTg4LCAxOTg5IGJ5IENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5CiAuXCIgCkBAIC04NiwxMyArODYsMTMgQEAKIC5QUAogRm9yIGV4YW1wbGU6CiAuUFAKLXNubXBzZXQgLWMgcHJpdmF0ZSAtdiAxIHRlc3QtaHViIHN5c3RlbS5zeXNDb250YWN0LjAgcyBkcHpAbm9jLnJ1dGdlcnMuZWR1IGlwLmlwZm9yd2FyZGluZy4wID0gMgorc25tcHNldCBcLWMgcHJpdmF0ZSBcLXYgMSB0ZXN0XC1odWIgc3lzdGVtLnN5c0NvbnRhY3QuMCBzIGRwekBub2MucnV0Z2Vycy5lZHUgaXAuaXBmb3J3YXJkaW5nLjAgPSAyCiAuUFAKIHdpbGwgc2V0IHRoZSB2YXJpYWJsZXMgc3lzQ29udGFjdC4wIGFuZCBpcEZvcndhcmRpbmcuMDoKIC5QUAogc3lzdGVtLnN5c0NvbnRhY3QuMCA9IFNUUklORzogImRwekBub2MucnV0Z2Vycy5lZHUiCiAuYnIKLWlwLmlwRm9yd2FyZGluZy4wID0gSU5URUdFUjogbm90LWZvcndhcmRpbmcoMikKK2lwLmlwRm9yd2FyZGluZy4wID0gSU5URUdFUjogbm90XC1mb3J3YXJkaW5nKDIpCiAuUFAKIElmIHRoZSBuZXR3b3JrIGVudGl0eSBoYXMgYW4gZXJyb3IgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdCBwYWNrZXQsIGFuCiBlcnJvciBwYWNrZXQgd2lsbCBiZSByZXR1cm5lZCBhbmQgYSBtZXNzYWdlIHdpbGwgYmUgc2hvd24sIGhlbHBpbmcgdG8KZGlmZiAtLWdpdCBhL21hbi9zbm1wc3RhdHVzLjEuZGVmIGIvbWFuL3NubXBzdGF0dXMuMS5kZWYKaW5kZXggYmJhNDhiMy4uMTEyNjE0NiAxMDA2NDQKLS0tIGEvbWFuL3NubXBzdGF0dXMuMS5kZWYKKysrIGIvbWFuL3NubXBzdGF0dXMuMS5kZWYKQEAgLTMyLDcgKzMyLDcgQEAKIHNubXBzdGF0dXMgLSByZXRyaWV2ZXMgYSBmaXhlZCBzZXQgb2YgbWFuYWdlbWVudCBpbmZvcm1hdGlvbiBmcm9tIGEgbmV0d29yayBlbnRpdHkKIC5TSCBTWU5PUFNJUwogLkIgc25tcHN0YXR1cwotW0NPTU1PTiBPUFRJT05TXSBbLUNmXSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1DZl0gQUdFTlQKIC5TSCBERVNDUklQVElPTgogLkIgc25tcHN0YXR1cwogaXMgYW4gU05NUCBhcHBsaWNhdGlvbiB0aGF0IHJldHJpZXZlcyBzZXZlcmFsIGltcG9ydGFudCBzdGF0aXN0aWNzCkBAIC02OCw3ICs2OCw3IEBACiAuUFAKIEZvciBleGFtcGxlOgogLlBQCi1zbm1wc3RhdHVzIC1jIHB1YmxpYyAtdiAxIG5ldGRldi1rYm94LmNjLmNtdS5lZHUKK3NubXBzdGF0dXMgXC1jIHB1YmxpYyBcLXYgMSBuZXRkZXZcLWtib3guY2MuY211LmVkdQogLlBQCiB3aWxsIHByb2R1Y2Ugb3V0cHV0IHNpbWlsYXIgdG8gdGhlIGZvbGxvd2luZzoKIC5QUApAQCAtOTAsNyArOTAsNyBAQAogLkIgc25tcHN0YXR1cwogd2lsbCBhdHRlbXB0IHRvIHJlZm9ybSBpdHMgcmVxdWVzdCB0byBlbGltaW5hdGUgdGhlIG1hbGZvcm1lZAogdmFyaWFibGUgKHVubGVzcyB0aGUKLS5CIC1DZgorLkIgXC1DZgogb3B0aW9uIGlzIGdpdmVuLCBzZWUgYmVsb3cpLCBidXQgdGhpcyB2YXJpYWJsZSB3aWxsIHRoZW4gYmUgbWlzc2luZwogZnJvbSB0aGUgZGlzcGxheWVkIGRhdGEuCiAuUFAKQEAgLTEwMiwxMCArMTAyLDEwIEBACiBmb3IgYSBsaXN0IG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgQ09NTU9OIE9QVElPTlMKIGFzIHdlbGwgYXMgdGhlaXIgZGVzY3JpcHRpb25zLgogLlRQCi0uQiAtQ2YKKy5CIFwtQ2YKIEJ5IGRlZmF1bHQsIHNubXBzdGF0dXMgd2lsbCB0cnkgdG8gZml4IGVycm9ycyByZXR1cm5lZAogYnkgdGhlIGFnZW50IGFuZCByZXRyeSBhIHJlcXVlc3QuIEluIHRoaXMgc2l0dWF0aW9uLAotdGhlIGNvbW1hbmQgd2lsbCBkaXNwbGF5IHRoZSBkYXRhIHRoYXQgaXQgY2FuLiBJZiB0aGUgLUNmIG9wdGlvbgordGhlIGNvbW1hbmQgd2lsbCBkaXNwbGF5IHRoZSBkYXRhIHRoYXQgaXQgY2FuLiBJZiB0aGUgXC1DZiBvcHRpb24KIGlzIHNwZWNpZmllZCwgdGhlbiBzbm1wc3RhdHVzIHdpbGwgbm90IHRyeSB0byBmaXgKIGVycm9ycywgYW5kIHRoZSBlcnJvciB3aWxsIGNhdXNlIHRoZSBjb21tYW5kIHRvIHRlcm1pbmF0ZS4KIC5TSCAiU0VFIEFMU08iCmRpZmYgLS1naXQgYS9tYW4vc25tcHRhYmxlLjEuZGVmIGIvbWFuL3NubXB0YWJsZS4xLmRlZgppbmRleCA1NzViMDM0Li40ZTY1Y2I0IDEwMDY0NAotLS0gYS9tYW4vc25tcHRhYmxlLjEuZGVmCisrKyBiL21hbi9zbm1wdGFibGUuMS5kZWYKQEAgLTIwLDI4ICsyMCwyMSBAQAogLlwiIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKIC5cIiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QVEFCTEUgMSAiMDYgU2VwIDIwMDMiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUFRBQkxFIDEgIjI1IEp1bCAyMDAzIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXB0YWJsZSAtIHJldHJpZXZlIGFuIFNOTVAgdGFibGUgYW5kIGRpc3BsYXkgaXQgaW4gdGFidWxhciBmb3JtCiAuU0ggU1lOT1BTSVMKIC5CIHNubXB0YWJsZQotW0NPTU1PTiBPUFRJT05TXSBbLUNiXSBbLUNCXSBbLUNoXSBbLUNIXSBbLUNpXSBbLUNmIFNUUklOR10gWy1DdyBXSURUSF0KLUFHRU5UIFRBQkxFLU9JRAorW0NPTU1PTiBPUFRJT05TXSBbXC1DYl0gW1wtQ0JdIFtcLUNoXSBbXC1DSF0gW1wtQ2ldIFtcLUNmIFNUUklOR10gW1wtQ3cgV0lEVEhdCitBR0VOVCBUQUJMRVwtT0lECiAuU0ggREVTQ1JJUFRJT04KIC5CIHNubXB0YWJsZQogaXMgYW4gU05NUCBhcHBsaWNhdGlvbiB0aGF0IHJlcGVhdGVkbHkgdXNlcyB0aGUgU05NUCBHRVRORVhUIG9yCiBHRVRCVUxLIHJlcXVlc3RzIHRvIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbiBvbiBhIG5ldHdvcmsgZW50aXR5LiAgVGhlCi1wYXJhbWV0ZXIKLS5JIFRBQkxFLU9JRAotbXVzdCBzcGVjaWZ5IGFuIFNOTVAgdGFibGUuCi0uUFAKLXNubXB0YWJsZSBpcyBhbiBTTk1QIGFwcGxpY2F0aW9uIHRoYXQgcmVwZWF0ZWRseSB1c2VzIHRoZQotU05NUCBHRVRORVhUIG9yIEdFVEJVTEsgcmVxdWVzdHMgdG8gcXVlcnkgZm9yICBpbmZvcm1hdGlvbgotb24gYSBuZXR3b3JrIGVudGl0eS4gIFRoZSBwYXJhbWV0ZXIgVEFCTEUtT0lEIG11c3Qgc3BlY2lmeQotYW4gU05NUCB0YWJsZS4KK3BhcmFtZXRlciBUQUJMRVwtT0lEIG11c3Qgc3BlY2lmeSBhbiBTTk1QIHRhYmxlLgogCiBBR0VOVCBpZGVudGlmaWVzIGEgdGFyZ2V0IFNOTVAgYWdlbnQsIHdoaWNoIGlzIGluc3RydW1lbnRlZAotdG8gbW9uaXRvciB0aGUgZ2lldm4gb2JqZWN0cy4gIEF0IGl0cyBzaW1wbGVzdCwgdGhlIEFHRU5UCit0byBtb25pdG9yIHRoZSBnaXZlbiBvYmplY3RzLiAgQXQgaXRzIHNpbXBsZXN0LCB0aGUgQUdFTlQKIHNwZWNpZmljYXRpb24gd2lsbCBjb25zaXN0IG9mIGEgaG9zdG5hbWUgb3IgYW4gSVB2NAogYWRkcmVzcy4gIEluIHRoaXMgc2l0dWF0aW9uLCB0aGUgY29tbWFuZCB3aWxsIGF0dGVtcHQKIGNvbW11bmljYXRpb24gd2l0aCB0aGUgYWdlbnQsIHVzaW5nIFVEUC9JUHY0IHRvIHBvcnQgMTYxCkBAIC01NywxOSArNTAsMTkgQEAKIGZvciBhIGxpc3Qgb2YgcG9zc2libGUgdmFsdWVzIGZvciBDT01NT04gT1BUSU9OUwogYXMgd2VsbCBhcyB0aGVpciBkZXNjcmlwdGlvbnMuCiAuVFAKLS5CIC1DYgorLkIgXC1DYgogRGlzcGxheSBvbmx5IGEgYnJpZWYgaGVhZGluZy4gQW55IGNvbW1vbiBwcmVmaXggb2YgdGhlIHRhYmxlIGZpZWxkCiBuYW1lcyB3aWxsIGJlIGRlbGV0ZWQuCiAuVFAgCi0uQiAtQ0IKKy5CIFwtQ0IKIERvIG5vdCB1c2UgR0VUQlVMSyByZXF1ZXN0cyB0byByZXRyaWV2ZSBkYXRhLCBvbmx5IEdFVE5FWFQuCiAuVFAgCi0uQkkgLUNjICIgQ0hBUlMiCisuQkkgXC1DYyAiIENIQVJTIgogUHJpbnQgdGFibGUgaW4gY29sdW1ucyBvZgogLkkgQ0hBUlMKIGNoYXJhY3RlcnMgd2lkdGguCiAuVFAKLS5CSSAtQ2YgIiBTVFJJTkciCisuQkkgXC1DZiAiIFNUUklORyIKIFRoZSBzdHJpbmcKIC5JIFNUUklORwogaXMgdXNlZCB0byBzZXBhcmF0ZSB0YWJsZSBjb2x1bW5zLiAgV2l0aCB0aGlzIG9wdGlvbiwgZWFjaCB0YWJsZSBlbnRyeQpAQCAtNzcsMjggKzcwLDI4IEBACiBzZXBhcmF0ZSB0aGUgY29sdW1ucyAodXNlZnVsIGlmIHlvdSB3YW50IHRvIGltcG9ydCBpdCBpbnRvIGEKIGRhdGFiYXNlKS4gIE90aGVyd2lzZSBpdCBpcyBwcmludGVkIGluIG5pY2VseSBhbGlnbmVkIGNvbHVtbnMuCiAuVFAKLS5CIC1DaAorLkIgXC1DaAogRGlzcGxheQogLkkgb25seQogdGhlIGNvbHVtbiBoZWFkaW5ncy4KIC5UUAotLkIgLUNICisuQiBcLUNICiBEbyBub3QgZGlzcGxheSB0aGUgY29sdW1uIGhlYWRpbmdzLgogLlRQCi0uQiAtQ2kKKy5CIFwtQ2kKIFRoaXMgb3B0aW9uIHByZXBlbmRzIHRoZSBpbmRleCBvZiB0aGUgZW50cnkgdG8gYWxsIHByaW50ZWQgbGluZXMuCiAuVFAKLS5CIC1DbAorLkIgXC1DbAogTGVmdCBqdXN0aWZ5IHRoZSBkYXRhIGluIGVhY2ggY29sdW1uLgogLlRQIAotLkJJIC1DciAiIFJFUEVBVEVSUyIKKy5CSSBcLUNyICIgUkVQRUFURVJTIgogRm9yIEdFVEJVTEsgcmVxdWVzdHMsIAogLkkgUkVQRUFURVJTCiBzcGVjaWZpZXMgdGhlIG1heC1yZXBlYXRlcnMgdmFsdWUgdG8gdXNlLiAgRm9yIEdFVE5FWFQgcmVxdWVzdHMsCiAuSSBSRVBFQVRFUlMKIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgdG8gcmV0cmlldmUgYXQgYSB0aW1lLgogLlRQIAotLkJJIC1DdyAiIFdJRFRIIgorLkJJIFwtQ3cgIiBXSURUSCIKIFNwZWNpZmllcyB0aGUgd2lkdGggb2YgdGhlIGxpbmVzIHdoZW4gdGhlIHRhYmxlIGlzIHByaW50ZWQuCiBJZiB0aGUgbGluZXMgd2lsbCBiZSBsb25nZXIsIHRoZSB0YWJsZSB3aWxsIGJlIHByaW50ZWQgaW4gc2VjdGlvbnMgb2YKIGF0IG1vc3QgCkBAIC0xMTUsMTQgKzEwOCwxNCBAQAogLkkgc25tcGNtZCgxKQogbWFudWFsIHBhZ2UuICBUaGlzIE9JRCBcZkJtdXN0XGZQIGJlIHRoYXQgb2YgYSBNSUIgdGFibGUgb2JqZWN0LgogLlNIIEVYQU1QTEVTCi0kIHNubXB0YWJsZSAtdiAyYyAtYyBwdWJsaWMgbG9jYWxob3N0IGF0LmF0VGFibGUKKyQgc25tcHRhYmxlIFwtdiAyYyBcLWMgcHVibGljIGxvY2FsaG9zdCBhdC5hdFRhYmxlCiAKLVNOTVAgdGFibGU6IGF0LmF0VGFibGUgUkZDMTIxMy1NSUI6OmF0VGFibGUKK1NOTVAgdGFibGU6IGF0LmF0VGFibGUgUkZDMTIxM1wtTUlCOjphdFRhYmxlCiAKIGF0SWZJbmRleCAgIGF0UGh5c0FkZHJlc3MgICBhdE5ldEFkZHJlc3MKICAgICAgICAgMSAgODowOjIwOjIwOjA6YWIgMTMwLjIyNS4yNDMuMzMKIC5QUAotJCBzbm1wdGFibGUgLXYgMmMgLWMgcHVibGljIC1DZiArIGxvY2FsaG9zdCBhdC5hdFRhYmxlCiskIHNubXB0YWJsZSBcLXYgMmMgXC1jIHB1YmxpYyBcLUNmICsgbG9jYWxob3N0IGF0LmF0VGFibGUKIAogU05NUCB0YWJsZTogYXQuYXRUYWJsZQogCkBAIC0xMzAsNyArMTIzLDcgQEAKIDErODowOjIwOjIwOjA6YWIrMTMwLjIyNS4yNDMuMzMKIC5QUAogLm5mCi0kIHNubXB0YWJsZSBsb2NhbGhvc3QgLUNsIC1DQiAtQ2kgLU9YIC1DYiAtQ2MgMTYgLUN3IDY0IGlmVGFibGUKKyQgc25tcHRhYmxlIGxvY2FsaG9zdCBcLUNsIFwtQ0IgXC1DaSBcLU9YIFwtQ2IgXC1DYyAxNiBcLUN3IDY0IGlmVGFibGUKIAogU05NUCB0YWJsZTogaWZUYWJsZQogCkBAIC0xNTksNyArMTUyLDcgQEAKIC5QUAogLlNIICJCVUdTIgogVGhlIHRlc3QgZm9yCi0uSSBUQUJMRS1PSUQKKy5JIFRBQkxFXC1PSUQKIGFjdHVhbGx5IHNwZWNpZnlpbmcgYSB0YWJsZSBpcyByYXRoZXIgaGV1cmlzdGljLiAgTm90ZSBhbHNvIHRoYXQgdGhlCiB0ZXN0IHJlcXVpcmVzIHRoZSBkZWZpbmluZyBNSUIgZmlsZSB0byBiZSBsb2FkZWQuCiAuUFAKZGlmZiAtLWdpdCBhL21hbi9zbm1wdGVzdC4xLmRlZiBiL21hbi9zbm1wdGVzdC4xLmRlZgppbmRleCBjMWVkYjQ4Li5kZmRhZWQ4IDEwMDY0NAotLS0gYS9tYW4vc25tcHRlc3QuMS5kZWYKKysrIGIvbWFuL3NubXB0ZXN0LjEuZGVmCkBAIC0yNyw3ICsyNyw3IEBACiAuXCIgVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQogLlwiIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLlRIIFNOTVBURVNUIDEgIjA2IFNlcCAyMDAzIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBURVNUIDEgIjI1IEp1bCAyMDAzIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXB0ZXN0IC0gY29tbXVuaWNhdGVzIHdpdGggYSBuZXR3b3JrIGVudGl0eSB1c2luZyBTTk1QIHJlcXVlc3RzCiAuU0ggU1lOT1BTSVMKQEAgLTYyLDcgKzYyLDcgQEAKIC5JUiB2YXJpYWJsZXMoNSkgLgogRm9yIGV4YW1wbGU6CiAuUFAKLXNubXB0ZXN0IC1jIHB1YmxpYyAtdiAxIHpldXMKK3NubXB0ZXN0IFwtYyBwdWJsaWMgXC12IDEgemV1cwogLmJyCiAuQlIgVmFyaWFibGU6ICIgc3lzdGVtLnN5c0Rlc2NyLjAiCiAuYnIKQEAgLTExNCw3ICsxMTQsNyBAQAogLlBQCiBHRVRORVhUIFJlcXVlc3Q6CiAuUFAKLVRoZSAiR0VUTkVYVCByZXF1ZXN0IiBtb2RlICgkTikgaXMgc2ltbGFyIHRvIHRoZSAiR2V0IHJlcXVlc3QiCitUaGUgIkdFVE5FWFQgcmVxdWVzdCIgbW9kZSAoJE4pIGlzIHNpbWlsYXIgdG8gdGhlICJHZXQgcmVxdWVzdCIKIG1vZGUsIGRlc2NyaWJlZCBhYm92ZS4KIC5QUAogU0VUIFJlcXVlc3Q6CkBAIC0xNzUsNyArMTc1LDcgQEAKIC5QUAogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHNlbmRpbmcgYSBHRVQgcmVxdWVzdCBmb3IgdHdvIE9JRHM6CiAuUFAKLSUgc25tcHRlc3QgLXYgMmMgLWMgcHVibGljIHRlc3Rob3N0Ojk5OTkKKyUgc25tcHRlc3QgXC12IDJjIFwtYyBwdWJsaWMgdGVzdGhvc3Q6OTk5OQogLlBQCiAubmYKIFZhcmlhYmxlOiBzeXN0ZW0uc3lzRGVzY3IuMApAQCAtMTgzLDE4ICsxODMsMTggQEAKIFZhcmlhYmxlOgogUmVjZWl2ZWQgR2V0IFJlc3BvbnNlIGZyb20gMTI4LjIuNTYuMjIwCiByZXF1ZXN0aWQgMHg3RDlGQ0Q2MyBlcnJzdGF0IDB4MCBlcnJpbmRleCAweDAKLVNOTVB2Mi1NSUI6OnN5c0Rlc2NyLjAgPSBTVFJJTkc6IFN1bk9TIHRlc3Rob3N0IDUuOSBHZW5lcmljXzExMjIzMy0wMiBzdW40dQotU05NUHYyLU1JQjo6c3lzQ29udGFjdC4wID0gU1RSSU5HOiB4MTExMQorU05NUHYyXC1NSUI6OnN5c0Rlc2NyLjAgPSBTVFJJTkc6IFN1bk9TIHRlc3Rob3N0IDUuOSBHZW5lcmljXzExMjIzM1wtMDIgc3VuNHUKK1NOTVB2MlwtTUlCOjpzeXNDb250YWN0LjAgPSBTVFJJTkc6IHgxMTExCiAuZmkKIC5QUAogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHNlbmRpbmcgYSBHRVRORVhUIHJlcXVlc3Q6CiAuUFAKIC5uZgotVmFyaWFibGU6IFNOTVB2Mi1NSUI6OnN5c09SVXBUaW1lCitWYXJpYWJsZTogU05NUHYyXC1NSUI6OnN5c09SVXBUaW1lCiBWYXJpYWJsZToKIFJlY2VpdmVkIEdldCBSZXNwb25zZSBmcm9tIDEyOC4yLjU2LjIyMAogcmVxdWVzdGlkIDB4N0Q5RkNENjQgZXJyc3RhdCAweDAgZXJyaW5kZXggMHgwCi1TTk1QdjItTUlCOjpzeXNPUlVwVGltZS4xID0gVGltZXRpY2tzOiAoNikgMDowMDowMC4wNgorU05NUHYyXC1NSUI6OnN5c09SVXBUaW1lLjEgPSBUaW1ldGlja3M6ICg2KSAwOjAwOjAwLjA2CiBWYXJpYWJsZToKIC5maQogLlBQCkBAIC0yMDksNyArMjA5LDcgQEAKIFZhcmlhYmxlOgogUmVjZWl2ZWQgR2V0IFJlc3BvbnNlIGZyb20gMTI4LjIuNTYuMjIwCiByZXF1ZXN0aWQgMHg3RDlGQ0Q2NSBlcnJzdGF0IDB4MCBlcnJpbmRleCAweDAKLVNOTVB2Mi1NSUI6OnN5c0xvY2F0aW9uLjAgPSBTVFJJTkc6IGJ1aWxkaW5nIEEKK1NOTVB2MlwtTUlCOjpzeXNMb2NhdGlvbi4wID0gU1RSSU5HOiBidWlsZGluZyBBCiBWYXJpYWJsZToKIC5maQogLlBQCkBAIC0yMjgsMTcgKzIyOCwxNyBAQAogV2hhdCByZXBlYXQgY291bnQ/IDIKIFJlY2VpdmVkIEdldCBSZXNwb25zZSBmcm9tIDEyOC4yLjU2LjIyMAogcmVxdWVzdGlkIDB4MkVBNzk0MkEgZXJyc3RhdCAweDAgZXJyaW5kZXggMHgwCi1TTk1QdjItTUlCOjpzeXNOYW1lLjAgPSBTVFJJTkc6IHRlc3Rob3N0Ci1TTk1QdjItTUlCOjpzeXNPUkxhc3RDaGFuZ2UuMCA9IFRpbWV0aWNrczogKDU4KSAwOjAwOjAwLjU4Ci1TTk1QdjItTUlCOjpzeXNMb2NhdGlvbi4wID0gU1RSSU5HOiBibGRnIEEKLVNOTVB2Mi1NSUI6OnN5c09SSUQuMSA9IE9JRDogSUYtTUlCOjppZk1JQgorU05NUHYyXC1NSUI6OnN5c05hbWUuMCA9IFNUUklORzogdGVzdGhvc3QKK1NOTVB2MlwtTUlCOjpzeXNPUkxhc3RDaGFuZ2UuMCA9IFRpbWV0aWNrczogKDU4KSAwOjAwOjAwLjU4CitTTk1QdjJcLU1JQjo6c3lzTG9jYXRpb24uMCA9IFNUUklORzogYmxkZyBBCitTTk1QdjJcLU1JQjo6c3lzT1JJRC4xID0gT0lEOiBJRlwtTUlCOjppZk1JQgogVmFyaWFibGU6CiAuZmkKIC5QUAogVGhlIGZvbGxvd2luZyBpcyBhbiBleGFtcGxlIG9mIHNlbmRpbmcgYW4gSW5mb3JtIHJlcXVlc3Q6CiAuUFAKIC5uZgotc25tcHRlc3QgLXYgMmMgLWMgcHVibGljIHNubXB0cmFwZF9ob3N0Citzbm1wdGVzdCBcLXYgMmMgXC1jIHB1YmxpYyBzbm1wdHJhcGRfaG9zdAogVmFyaWFibGU6ICRJCiBSZXF1ZXN0IHR5cGUgaXMgSW5mb3JtIFJlcXVlc3QKIChBcmUgeW91IHNlbmRpbmcgdG8gdGhlIHJpZ2h0IHBvcnQ/KQpAQCAtMjUyLDEzICsyNTIsMTMgQEAKIC5QUAogVGhlIHNubXB0cmFwZF9ob3N0IHdpbGwgc2hvdzoKIC5QUAotc25tcHRyYXBkX2hvc3QgWzxpcCBhZGRyZXNzPl06IFRyYXAgU05NUHYyLU1JQjo6c3lzQ29udGFjdC4wID0gU1RSSU5HOgorc25tcHRyYXBkX2hvc3QgWzxpcCBhZGRyZXNzPl06IFRyYXAgU05NUHYyXC1NSUI6OnN5c0NvbnRhY3QuMCA9IFNUUklORzoKIHgxMjM0NQogLlBQCiBUaGUgZm9sbG93aW5nIGlzIGFuIGV4YW1wbGUgb2Ygc2VuZGluZyBhbiBTTk1QdjIgVHJhcCByZXF1ZXN0OgogLlBQCiAubmYKLXNubXB0ZXN0IC12IDJjIC1jIHB1YmxpYyBzbm1wdHJhcGRfaG9zdAorc25tcHRlc3QgXC12IDJjIFwtYyBwdWJsaWMgc25tcHRyYXBkX2hvc3QKIFZhcmlhYmxlOiAkVAogUmVxdWVzdCB0eXBlIGlzIFNOTVB2MiBUcmFwIFJlcXVlc3QKIChBcmUgeW91IHNlbmRpbmcgdG8gdGhlIHJpZ2h0IHBvcnQ/KQpAQCAtMjcxLDcgKzI3MSw3IEBACiBUaGUgc25tcHRyYXBkX2hvc3Qgd2lsbCBzaG93OgogLlBQCiAubmYKLXNubXB0cmFwZF9ob3N0IFs8aXAgYWRkcmVzcz5dOiBUcmFwIFNOTVB2Mi1NSUI6OnN5cy4wID0gU1RSSU5HOgorc25tcHRyYXBkX2hvc3QgWzxpcCBhZGRyZXNzPl06IFRyYXAgU05NUHYyXC1NSUI6OnN5cy4wID0gU1RSSU5HOgogYnVpbGRpbmcgYQogLmZpCiAuU0ggIlNFRSBBTFNPIgpkaWZmIC0tZ2l0IGEvbWFuL3NubXB0cmFuc2xhdGUuMS5kZWYgYi9tYW4vc25tcHRyYW5zbGF0ZS4xLmRlZgppbmRleCAwZjMxYTU1Li43MjFhZjk5IDEwMDY0NAotLS0gYS9tYW4vc25tcHRyYW5zbGF0ZS4xLmRlZgorKysgYi9tYW4vc25tcHRyYW5zbGF0ZS4xLmRlZgpAQCAtMjcsNyArMjcsNyBAQAogLlwiIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKIC5cIiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QVFJBTlNMQVRFIDEgIjIwIEp1bCAyMDEwIiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIFNOTVBUUkFOU0xBVEUgMSAiMTMgTm92IDIwMTMiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogc25tcHRyYW5zbGF0ZSAtIHRyYW5zbGF0ZSBNSUIgT0lEIG5hbWVzIGJldHdlZW4gbnVtZXJpYyBhbmQgdGV4dHVhbCBmb3JtcwogLlNIIFNZTk9QU0lTCkBAIC00MiwxNyArNDIsMTcgQEAKIE9JRCBpcyBlaXRoZXIgYSBudW1lcmljIG9yIHRleHR1YWwgb2JqZWN0IGlkZW50aWZpZXIuCiAuU0ggT1BUSU9OUwogLlRQIDgKLS5CIC1EXGZJW1RPS0VOWywuLi5dXQorLkIgXC1EXGZJW1RPS0VOWywuLi5dXQogVHVybiBvbiBkZWJ1Z2dpbmcgb3V0cHV0IGZvciB0aGUgZ2l2ZW4KIC5JUiAiVE9LRU4iICIocykuIgogVHJ5CiAuSVIgQUxMCiBmb3IgZXh0cmVtZWx5IHZlcmJvc2Ugb3V0cHV0LgogLlRQCi0uQiAtaAorLkIgXC1oCiBEaXNwbGF5IGEgYnJpZWYgdXNhZ2UgbWVzc2FnZSBhbmQgdGhlbiBleGl0LgogLlRQCi0uQkkgLW0gIiBNSUJMSVNUIgorLkJJIFwtbSAiIE1JQkxJU1QiCiBTcGVjaWZpZXMgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBNSUIgbW9kdWxlcyB0byBsb2FkIGZvciB0aGlzCiBhcHBsaWNhdGlvbi4gIFRoaXMgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBNSUJTLgogLklQCkBAIC02MiwxNyArNjIsMjAgQEAKIGZpbGVzLiAgRXZlcnkgZmlsZSB3aG9zZSBuYW1lIGRvZXMgbm90IGJlZ2luIHdpdGggIi4iIHdpbGwgYmUgcGFyc2VkIGFzCiBpZiBpdCB3ZXJlIGEgTUlCIGZpbGUuCiAuVFAKLS5CSSAtTSAiIERJUkxJU1QiCisuQkkgXC1NICIgRElSTElTVCIKIFNwZWNpZmllcyBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgTUlCcy4KIFRoaXMgb3ZlcnJpZGVzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBNSUJESVJTLgogLlRQCi0uQkkgLVQgIiBUUkFOU09QVFMiCisuQkkgXC1UICIgVFJBTlNPUFRTIgogUHJvdmlkZXMgY29udHJvbCBvdmVyIHRoZSB0cmFuc2xhdGlvbiBvZiB0aGUgT0lEIHZhbHVlcy4gIFRoZQogZm9sbG93aW5nCiAuSSBUUkFOU09QVFMKIGFyZSBhdmFpbGFibGU6CiAuUlMKIC5UUCA2CisuQiBcLVRCCitQcmludCBhbGwgbWF0Y2hpbmcgb2JqZWN0cyBmb3IgYSByZWdleCBzZWFyY2guCisuVFAKIC5CIFwtVGQKIFByaW50IGZ1bGwgZGV0YWlscyBvZiB0aGUgc3BlY2lmaWVkIE9JRC4KIC5UUApAQCAtOTgsMjQgKzEwMSwyNCBAQAogRHVtcCBhIG51bWVyaWMgYW5kIGxhYmVsZWQgZm9ybSBvZiBhbGwgb2JqZWN0cyAoY29tcGF0aWJsZSB3aXRoIE1JQjJTQ0hFTUEgZm9ybWF0KS4KIC5SRQogLlRQCi0uQiAtVgorLkIgXC1WCiBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbiBhbmQgdGhlbiBleGl0LgogLlRQCi0uQkkgLXcgIiBXSURUSCIKKy5CSSBcLXcgIiBXSURUSCIKIFNwZWNpZmllcyB0aGUgd2lkdGggb2YKLS5CIC1UcAorLkIgXC1UcAogYW5kCi0uQiAtVGQKKy5CIFwtVGQKIG91dHB1dC4gVGhlIGRlZmF1bHQgaXMgdmVyeSBsYXJnZS4KIC5QUAogSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIG9wdGlvbnMsIAogLkIgc25tcHRyYW5zbGF0ZQogdGFrZXMgdGhlIE9JRCBpbnB1dCAKLS5SQiAoIC1JICksCisuUkIgKCBcLUkgKSwKIE1JQiBwYXJzaW5nCi0uUkIgKCAtTSApCisuUkIgKCBcLU0gKQogYW5kIE9JRCBvdXRwdXQKLS5SQiAoIC1PICkKKy5SQiAoIFwtTyApCiBvcHRpb25zIGRlc2NyaWJlZCBpbiB0aGUgCiAuQlIgIklOUFVUIE9QVElPTlMiICIsICIgIk1JQiBQQVJTSU5HIE9QVElPTlMiICIgYW5kICIgIk9VVFBVVCBPUFRJT05TIgogc2VjdGlvbnMgb2YgdGhlCkBAIC0xMjMsNDAgKzEyNiw0MCBAQAogbWFudWFsIHBhZ2UuCiAuU0ggRVhBTVBMRVMKIC5JUCBcKGJ1IDQKLXNubXB0cmFuc2xhdGUgLU9uIC1JUiBzeXNEZXNjcgorc25tcHRyYW5zbGF0ZSBcLU9uIFwtSVIgc3lzRGVzY3IKIC5icgogd2lsbCB0cmFuc2xhdGUgInN5c0Rlc2NyIiB0byBhIG1vcmUgcXVhbGlmaWVkIGZvcm06CiAuSVAKIHN5c3RlbS5zeXNEZXNjcgogLklQIFwoYnUgNAotc25tcHRyYW5zbGF0ZSAtT25mIC1JUiBzeXNEZXNjcgorc25tcHRyYW5zbGF0ZSBcLU9uZiBcLUlSIHN5c0Rlc2NyCiAuYnIKIHdpbGwgdHJhbnNsYXRlICJzeXNEZWNyIiB0bzoKIC5JUAotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yLnN5c3RlbS5zeXNEZXNjcgorLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMi5zeXN0ZW0uc3lzRGVzY3IKIC5JUCBcKGJ1IDQgCi1zbm1wdHJhbnNsYXRlIC1UZCAtT1Mgc3lzdGVtLnN5c0Rlc2NyCitzbm1wdHJhbnNsYXRlIFwtVGQgXC1PUyBzeXN0ZW0uc3lzRGVzY3IKIC5icgogd2lsbCB0cmFuc2xhdGUgInN5c0RlY3IiIGludG86CiAuSVAKIC5uZgotU05NUHYyLU1JQjo6c3lzRGVzY3IKLXN5c0Rlc2NyIE9CSkVDVC1UWVBFCi0gIC0tIEZST00gU05NUHYyLU1JQgotICAtLSBURVhUVUFMIENPTlZFTlRJT04gRGlzcGxheVN0cmluZworU05NUHYyXC1NSUI6OnN5c0Rlc2NyCitzeXNEZXNjciBPQkpFQ1RcLVRZUEUKKyAgXC1cLSBGUk9NIFNOTVB2MlwtTUlCCisgIFwtXC0gVEVYVFVBTCBDT05WRU5USU9OIERpc3BsYXlTdHJpbmcKICAgU1lOVEFYIE9DVEVUIFNUUklORyAoMC4uMjU1KQotICBESVNQTEFZLUhJTlQgIjI1NWEiCi0gIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CisgIERJU1BMQVlcLUhJTlQgIjI1NWEiCisgIE1BWFwtQUNDRVNTIHJlYWRcLW9ubHkKICAgU1RBVFVTIGN1cnJlbnQKICAgREVTQ1JJUFRJT04gIkEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgZW50aXR5LiBUaGlzCiAgICAgICAgICAgICAgICB2YWx1ZSBzaG91bGQgaW5jbHVkZSB0aGUgZnVsbCBuYW1lIGFuZAogICAgICAgICAgICAgICAgdmVyc2lvbiBpZGVudGlmaWNhdGlvbiBvZiB0aGUgc3lzdGVtJ3MKLSAgICAgICAgICAgICAgIGhhcmR3YXJlIHR5cGUsIHNvZnR3YXJlIG9wZXJhdGluZy1zeXN0ZW0sCisgICAgICAgICAgICAgICBoYXJkd2FyZSB0eXBlLCBzb2Z0d2FyZSBvcGVyYXRpbmdcLXN5c3RlbSwKICAgICAgICAgICAgICAgIGFuZCBuZXR3b3JraW5nIHNvZnR3YXJlLiIKLTo6PSB7IGlzbygxKSBvcmcoMykgZG9kKDYpIGludGVybmV0KDEpIG1nbXQoMikgbWliLTIoMSkgc3lzdGVtKDEpIDEgfQorOjo9IHsgaXNvKDEpIG9yZygzKSBkb2QoNikgaW50ZXJuZXQoMSkgbWdtdCgyKSBtaWJcLTIoMSkgc3lzdGVtKDEpIDEgfQogLmZpCiAuSVAgXChidSA0IAotc25tcHRyYW5zbGF0ZSAtVHAgLU9TIHN5c3RlbQorc25tcHRyYW5zbGF0ZSBcLVRwIFwtT1Mgc3lzdGVtCiAuYnIKIHdpbGwgcHJpbnQgdGhlIGZvbGxvd2luZyB0cmVlOgogLklQCkBAIC0xOTYsNyArMTk5LDcgQEAKIC5maQogLlBQCiAuSVAgXChidSA0Ci1zbm1wdHJhbnNsYXRlIC1UYSB8IGhlYWQKK3NubXB0cmFuc2xhdGUgXC1UYSB8IGhlYWQKIC5icgogd2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgZHVtcDoKIC5JUApAQCAtMjE0LDcgKzIxNyw3IEBACiAuZmkKIC5QUAogLklQIFwoYnUgNAotc25tcHRyYW5zbGF0ZSAtVGwgfCBoZWFkCitzbm1wdHJhbnNsYXRlIFwtVGwgfCBoZWFkCiAuYnIKIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGR1bXA6CiAuSVAKQEAgLTIyNCwxNSArMjI3LDE1IEBACiAuUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpCiAuUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLmRpcmVjdG9yeSgxKQogLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpCi0uUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliLTIoMSkKLS5SSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW50ZXJuZXQoMSkubWdtdCgyKS5taWItMigxKS5zeXN0ZW0oMSkKLS5SSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW50ZXJuZXQoMSkubWdtdCgyKS5taWItMigxKS5zeXN0ZW0oMSkuc3lzRGVzY3IoMSkKLS5SSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW50ZXJuZXQoMSkubWdtdCgyKS5taWItMigxKS5zeXN0ZW0oMSkuc3lzT2JqZWN0SUQoMikKLS5SSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW50ZXJuZXQoMSkubWdtdCgyKS5taWItMigxKS5zeXN0ZW0oMSkuc3lzVXBUaW1lKDMpCisuUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliXC0yKDEpCisuUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliXC0yKDEpLnN5c3RlbSgxKQorLlJJIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbnRlcm5ldCgxKS5tZ210KDIpLm1pYlwtMigxKS5zeXN0ZW0oMSkuc3lzRGVzY3IoMSkKKy5SSSAuaXNvKDEpLm9yZygzKS5kb2QoNikuaW50ZXJuZXQoMSkubWdtdCgyKS5taWJcLTIoMSkuc3lzdGVtKDEpLnN5c09iamVjdElEKDIpCisuUkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmludGVybmV0KDEpLm1nbXQoMikubWliXC0yKDEpLnN5c3RlbSgxKS5zeXNVcFRpbWUoMykKIC5maQogLlBQCiAuSVAgXChidSA0Ci1zbm1wdHJhbnNsYXRlIC1UbyB8IGhlYWQKK3NubXB0cmFuc2xhdGUgXC1UbyB8IGhlYWQKIC5icgogd2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgZHVtcAogLklQCkBAIC0yNTAsNyArMjUzLDcgQEAKIC5maQogLlBQCiAuSVAgXChidSA0Ci1zbm1wdHJhbnNsYXRlIC1UcyB8IGhlYWQKK3NubXB0cmFuc2xhdGUgXC1UcyB8IGhlYWQKIC5icgogd2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgZHVtcAogLklQCkBAIC0yNjAsMTUgKzI2MywxNSBAQAogLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldAogLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5kaXJlY3RvcnkKIC5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdAotLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYi0yCi0uUkkgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliLTIuc3lzdGVtCi0uUkkgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliLTIuc3lzdGVtLnN5c0Rlc2NyCi0uUkkgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliLTIuc3lzdGVtLnN5c09iamVjdElECi0uUkkgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliLTIuc3lzdGVtLnN5c1VwVGltZQorLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMgorLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMi5zeXN0ZW0KKy5SSSAuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWJcLTIuc3lzdGVtLnN5c0Rlc2NyCisuUkkgLmlzby5vcmcuZG9kLmludGVybmV0Lm1nbXQubWliXC0yLnN5c3RlbS5zeXNPYmplY3RJRAorLlJJIC5pc28ub3JnLmRvZC5pbnRlcm5ldC5tZ210Lm1pYlwtMi5zeXN0ZW0uc3lzVXBUaW1lCiAuZmkKIC5QUAogLklQIFwoYnUgNAotc25tcHRyYW5zbGF0ZSAtVHQgfCBoZWFkCitzbm1wdHJhbnNsYXRlIFwtVHQgfCBoZWFkCiAuYnIKIHdpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIGR1bXAKIC5JUApAQCAtMjc4LDcgKzI4MSw3IEBACiAgICAgICBpbnRlcm5ldCgxKSB0eXBlPTAKICAgICAgICAgZGlyZWN0b3J5KDEpIHR5cGU9MAogICAgICAgICBtZ210KDIpIHR5cGU9MAotICAgICAgICAgIG1pYi0yKDEpIHR5cGU9MAorICAgICAgICAgIG1pYlwtMigxKSB0eXBlPTAKICAgICAgICAgICAgIHN5c3RlbSgxKSB0eXBlPTAKICAgICAgICAgICAgICAgc3lzRGVzY3IoMSkgdHlwZT0yIHRjPTQgaGludD0yNTVhCiAgICAgICAgICAgICAgIHN5c09iamVjdElEKDIpIHR5cGU9MQpkaWZmIC0tZ2l0IGEvbWFuL3NubXB0cmFwLjEuZGVmIGIvbWFuL3NubXB0cmFwLjEuZGVmCmluZGV4IDA5YWVjNzkuLjU1YzE5ZDEgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wdHJhcC4xLmRlZgorKysgYi9tYW4vc25tcHRyYXAuMS5kZWYKQEAgLTEsNyArMSw3IEBACiAuXCIgLSotIG5yb2ZmIC0qLQotLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gCi0uXCIgU2VlIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIKLS5cIiBjb3B5cmlnaHRzIHRoYXQgbWF5IGFwcGx5OgorLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorLlwiIHRoZSBOZXQtU05NUCBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworLlwiIHRoYXQgbWF5IGFwcGx5OgogLlwiIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogLlwiIAlDb3B5cmlnaHQgMTk4OCwgMTk4OSBieSBDYXJuZWdpZSBNZWxsb24gVW5pdmVyc2l0eQogLlwiIApAQCAtMjcsMTMgKzI3LDEzIEBACiAuU0ggTkFNRQogc25tcHRyYXAsIHNubXBpbmZvcm0gLSBzZW5kcyBhbiBTTk1QIG5vdGlmaWNhdGlvbiB0byBhIG1hbmFnZXIKIC5TSCBTWU5PUFNJUwotLkIgc25tcHRyYXAgLXYgMQorLkIgc25tcHRyYXAgXC12IDEKIFtDT01NT04gT1BUSU9OU10gQUdFTlQgZW50ZXJwcmlzZS1vaWQgYWdlbnQgZ2VuZXJpYy10cmFwIHNwZWNpZmljLXRyYXAgdXB0aW1lIFtPSUQgVFlQRSBWQUxVRV0uLi4KIC5QUAotLkIgc25tcHRyYXAgLXYgWzJjfDNdCi1bQ09NTU9OIE9QVElPTlNdIFstQ2ldIEFHRU5UIHVwdGltZSB0cmFwLW9pZCBbT0lEIFRZUEUgVkFMVUVdLi4uCisuQiBzbm1wdHJhcCBcLXYgWzJjfDNdCitbQ09NTU9OIE9QVElPTlNdIFtcLUNpXSBBR0VOVCB1cHRpbWUgdHJhcC1vaWQgW09JRCBUWVBFIFZBTFVFXS4uLgogLlBQCi0uQiBzbm1waW5mb3JtIC12IFsyY3wzXQorLkIgc25tcGluZm9ybSBcLXYgWzJjfDNdCiBbQ09NTU9OIE9QVElPTlNdIEFHRU5UIHVwdGltZSB0cmFwLW9pZCBbT0lEIFRZUEUgVkFMVUVdLi4uCiAuU0ggREVTQ1JJUFRJT04KIC5CIHNubXB0cmFwCkBAIC00Nyw3ICs0Nyw3IEBACiBXaGVuIGludm9rZWQgYXMKIC5CIHNubXBpbmZvcm0sCiBvciB3aGVuCi0uQiAtQ2kKKy5CIFwtQ2kKIGlzIGFkZGVkIHRvIHRoZSBjb21tYW5kIGxpbmUgZmxhZ3Mgb2Ygc25tcHRyYXAsIGl0IHNlbmRzIGFuCiBJTkZPUk0tUERVLCBleHBlY3RpbmcgYSByZXNwb25zZSBmcm9tIHRoZSB0cmFwIHJlY2VpdmVyLAogcmV0cmFuc21pdHRpbmcgaWYgcmVxdWlyZWQuICBPdGhlcndpc2UgaXQgc2VuZHMgYW4gVFJBUC1QRFUgb3IKQEAgLTExMSw3ICsxMTEsNyBAQAogLlBQCiBGb3IgZXhhbXBsZToKIC5QUAotc25tcHRyYXAgLXYgMSAtYyBwdWJsaWMgbWFuYWdlciBlbnRlcnByaXNlcy5zcGlkZXIgdGVzdC1odWIgMyAwICcnIGludGVyZmFjZXMuaWZ0YWJsZS5pZmVudHJ5LmlmaW5kZXguMSBpIDEKK3NubXB0cmFwIFwtdiAxIFwtYyBwdWJsaWMgbWFuYWdlciBlbnRlcnByaXNlcy5zcGlkZXIgdGVzdFwtaHViIDMgMCAnJyBpbnRlcmZhY2VzLmlmdGFibGUuaWZlbnRyeS5pZmluZGV4LjEgaSAxCiAuUFAKIHdpbGwgc2VuZCBhIGdlbmVyaWMgbGlua1VwIHRyYXAgdG8gbWFuYWdlciwgZm9yIGludGVyZmFjZSAxLgogLlNIIE9QVElPTlMKQEAgLTEyMCw3ICsxMjAsNyBAQAogLkkgc25tcGNtZCgxKSAKIG1hbnVhbCBwYWdlIGluCiBhZGRpdGlvbiB0byB0aGUgCi0uQiAtQ2kKKy5CIFwtQ2kKIG9wdGlvbiBkZXNjcmliZWQgYWJvdmUuCiBOb3RlIHRoYXQKIC5CIHNubXB0cmFwCmRpZmYgLS1naXQgYS9tYW4vc25tcHRyYXBkLjguZGVmIGIvbWFuL3NubXB0cmFwZC44LmRlZgppbmRleCBiNjI0N2JmLi40NWJkMDM0IDEwMDY0NAotLS0gYS9tYW4vc25tcHRyYXBkLjguZGVmCisrKyBiL21hbi9zbm1wdHJhcGQuOC5kZWYKQEAgLTEsNyArMSw3IEBACiAuXCIgLSotIG5yb2ZmIC0qLQotLlwiIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4KLS5cIiBTZWUgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlcgotLlwiIGNvcHlyaWdodHMgdGhhdCBtYXkgYXBwbHk6CisuXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAgU2VlCisuXCIgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisuXCIgdGhhdCBtYXkgYXBwbHk6CiAuXCIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIgCUNvcHlyaWdodCAxOTg5IGJ5IENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5CiAuXCIgCkBAIC0yMyw3ICsyMyw3IEBACiAuXCIgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUwogLlwiIFNPRlRXQVJFLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QVFJBUEQgOCAiMzAgTWFyIDIwMTEiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUFRSQVBEIDggIjI3IEFwciAyMDE0IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgogLlNIIE5BTUUKIHNubXB0cmFwZCAtIFJlY2VpdmUgYW5kIGxvZyBTTk1QIHRyYXAgbWVzc2FnZXMuCiAuU0ggU1lOT1BTSVMKQEAgLTM5LDg4ICszOSw4OCBAQAogbXVzdCB0eXBpY2FsbHkgYmUgcnVuIGFzIHJvb3QuCiAuU0ggT1BUSU9OUwogLlRQIDgKLS5CIC1hCisuQiBcLWEKIElnbm9yZSBhdXRoZW50aWNhdGlvbkZhaWx1cmUgdHJhcHMuCiAuVFAKLS5CIC1BCisuQiBcLUEKIEFwcGVuZCB0byB0aGUgbG9nIGZpbGUgcmF0aGVyIHRoYW4gdHJ1bmNhdGluZyBpdC4KIAotTm90ZSB0aGF0IHRoaXMgbmVlZHMgdG8gY29tZSBcZkliZWZvcmVcZlAgYW55IC1MZiBvcHRpb25zCitOb3RlIHRoYXQgdGhpcyBuZWVkcyB0byBjb21lIFxmSWJlZm9yZVxmUCBhbnkgXC1MZiBvcHRpb25zCiB0aGF0IGl0IHNob3VsZCBhcHBseSB0by4KIC5UUAotLkJJICItYyIgIiBGSUxFIgorLkJJICJcLWMiICIgRklMRSIKIFJlYWQgCiAuSSBGSUxFCiBhcyBhIGNvbmZpZ3VyYXRpb24gZmlsZQogKG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBmaWxlcykuCiAuVFAKLS5CIC1DCisuQiBcLUMKIERvIG5vdCByZWFkIGFueSBjb25maWd1cmF0aW9uIGZpbGVzIGV4Y2VwdCB0aGUgb25lIG9wdGlvbmFsbHkgc3BlY2lmaWVkIGJ5IHRoZSAKLS5CIC1jIAorLkIgXC1jIAogb3B0aW9uLgogLlRQCi0uQiAtZAorLkIgXC1kCiBEdW1wIChpbiBoZXhhZGVjaW1hbCkgdGhlIHNlbnQgYW5kIHJlY2VpdmVkIFNOTVAgcGFja2V0cy4KIC5UUAotLkJJIC1EW1RPS0VOWywuLi5dXQorLkJJIFwtRFtUT0tFTlssLi4uXV0KIFR1cm4gb24gZGVidWdnaW5nIG91dHB1dCBmb3IgdGhlIGdpdmVuCiAuSVIgIlRPS0VOIiAiKHMpLiIKIFRyeQogLklSIEFMTAogZm9yIGV4dHJlbWVseSB2ZXJib3NlIG91dHB1dC4KIC5UUAotLkIgLWYKKy5CIFwtZgogRG8gbm90IGZvcmsoKSBmcm9tIHRoZSBjYWxsaW5nIHNoZWxsLgogLlRQCi0uQkkgLUYgIiBGT1JNQVQiCisuQkkgXC1GICIgRk9STUFUIgogV2hlbiBsb2dnaW5nIHRvIHN0YW5kYXJkIG91dHB1dCwgdXNlIHRoZSBmb3JtYXQgaW4gdGhlIHN0cmluZwogLklSIEZPUk1BVCAuCiBTZWUgdGhlIHNlY3Rpb24KIC5CIEZPUk1BVCBTUEVDSUZJQ0FUSU9OUwogYmVsb3cgZm9yIG1vcmUgZGV0YWlscy4KIC5UUAotLkIgLWgsIC0taGVscAorLkIgXC1oLCBcLVwtaGVscAogRGlzcGxheSBhIGJyaWVmIHVzYWdlIG1lc3NhZ2UgYW5kIHRoZW4gZXhpdC4KIC5UUAotLkIgLUgKKy5CIFwtSAogRGlzcGxheSBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBmaWxlIGRpcmVjdGl2ZXMgdW5kZXJzdG9vZCBieSB0aGUKIHRyYXAgZGFlbW9uIGFuZCB0aGVuIGV4aXQuCiAuVFAKLS5CIC1JIFxmSVstXUlOSVRMSVNUCisuQiBcLUkgXGZJW1wtXUlOSVRMSVNUCiBTcGVjaWZpZXMgd2hpY2ggbW9kdWxlcyBzaG91bGQgKG9yIHNob3VsZCBub3QpIGJlIGluaXRpYWxpemVkCiB3aGVuIHNubXB0cmFwZCBzdGFydHMgdXAuICBJZiB0aGUgY29tbWEtc2VwYXJhdGVkCiAuSSBJTklUTElTVAogaXMgcHJlY2VkZWQKLXdpdGggYSAnLScsIGl0IGlzIHRoZSBsaXN0IG9mIG1vZHVsZXMgdGhhdCBzaG91bGQgXGZJbm90XGZSIGJlIHN0YXJ0ZWQuCit3aXRoIGEgJ1wtJywgaXQgaXMgdGhlIGxpc3Qgb2YgbW9kdWxlcyB0aGF0IHNob3VsZCBcZklub3RcZlIgYmUgc3RhcnRlZC4KIE90aGVyd2lzZSB0aGlzIGlzIHRoZSBsaXN0IG9mIHRoZSBcZklvbmx5XGZSIG1vZHVsZXMgdGhhdCBzaG91bGQgYmUgc3RhcnRlZC4KIAogVG8gZ2V0IGEgbGlzdCBvZiBjb21waWxlZCBtb2R1bGVzLCBydW4gc25tcHRyYXBkIHdpdGggdGhlIGFyZ3VtZW50cwotLkkgIi1EbWliX2luaXQgLUgiCisuSSAiXC1EbWliX2luaXQgXC1IIgogKGFzc3VtaW5nIGRlYnVnZ2luZyBzdXBwb3J0IGhhcyBiZWVuIGNvbXBpbGVkIGluKS4KIC5UUAotLkIgLUxbZWZvc10KKy5CIFwtTFtlZm9zXQogU3BlY2lmeSB3aGVyZSBsb2dnaW5nIG91dHB1dCBzaG91bGQgYmUgZGlyZWN0ZWQgKHN0YW5kYXJkIGVycm9yIG9yIG91dHB1dCwKIHRvIGEgZmlsZSBvciB2aWEgc3lzbG9nKS4gIFNlZSBMT0dHSU5HIE9QVElPTlMgaW4gXGZJc25tcGNtZCgxKVxmUiBmb3IgZGV0YWlscy4KIC5UUAotLkJSIC1tICIgXGZJTUlCTElTVCIKKy5CUiBcLW0gIiBcZklNSUJMSVNUIgogU3BlY2lmaWVzIGEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgTUlCIG1vZHVsZXMgdG8gbG9hZCBmb3IgdGhpcwogYXBwbGljYXRpb24uICBUaGlzIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTUlCUy4KIFNlZSBcZklzbm1wY21kKDEpXGZSIGZvciBkZXRhaWxzLgogLlRQCi0uQlIgLU0gIiBcZklESVJMSVNUIgorLkJSIFwtTSAiIFxmSURJUkxJU1QiCiBTcGVjaWZpZXMgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIE1JQnMuCiBUaGlzIG92ZXJyaWRlcyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTUlCRElSUy4KIFNlZSBcZklzbm1wY21kKDEpXGZSIGZvciBkZXRhaWxzLgogLlRQCi0uQlIgLW4KKy5CUiBcLW4KIERvIG5vdCBhdHRlbXB0IHRvIHRyYW5zbGF0ZSBzb3VyY2UgYWRkcmVzc2VzIG9mIGluY29taW5nIHBhY2tldHMgaW50bwogaG9zdG5hbWVzLgogLlRQCi0uQkkgLXAgIiBGSUxFIgorLkJJIFwtcCAiIEZJTEUiCiBTYXZlIHRoZSBwcm9jZXNzIElEIG9mIHRoZSB0cmFwIGRhZW1vbiBpbgogLklSIEZJTEUgIi4iCiAuVFAKLS5CSSAtTyAiIFthYmVFZm5xUXNTdFR1VXZ4WF0iCisuQkkgXC1PICIgW2FiZUVmbnFRc1N0VHVVdnhYXSIKIFNwZWNpZmllcyBob3cgTUlCIG9iamVjdHMgYW5kIG90aGVyIG91dHB1dCBzaG91bGQgYmUgZGlzcGxheWVkLgogU2VlIHRoZSBzZWN0aW9uCiAuQiBPVVRQVVQgT1BUSU9OUwpAQCAtMTI4LDIyICsxMjgsMjUgQEAKIC5JIHNubXBjbWQoMSkKIG1hbnVhbCBwYWdlIGZvciBkZXRhaWxzLgogLlRQCi0uQkkgLXQKKy5CSSBcLXQKIERvIG5vdCBsb2cgdHJhcHMgdG8gc3lzbG9nLiAgVGhpcyBkaXNhYmxlcyBsb2dnaW5nIHRvIHN5c2xvZy4gIFRoaXMgaXMKIHVzZWZ1bCBpZiB5b3Ugd2FudCB0aGUgc25tcHRyYXBkIGFwcGxpY2F0aW9uIHRvCiAuQiBvbmx5CiBydW4gdHJhcGhhbmRsZSBob29rcyBhbmQgbm90IHRvIGxvZyBhbnkgdHJhcHMgdG8gYW55IGxvY2F0aW9uLgogLlRQCi0uQiAtdiwgLS12ZXJzaW9uCisuQiBcLXYsIFwtXC12ZXJzaW9uCiBQcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uIGZvciB0aGUgdHJhcCBkYWVtb24gYW5kIHRoZW4gZXhpdC4KIC5UUAotLkIgLXggXGZJQUREUkVTUworLkIgXC14IFxmSUFERFJFU1MKIENvbm5lY3QgdG8gdGhlIEFnZW50WCBtYXN0ZXIgYWdlbnQgb24gdGhlIHNwZWNpZmllZCBhZGRyZXNzLAogcmF0aGVyIHRoYW4gdGhlIGRlZmF1bHQgQUdFTlRYX1NPQ0tFVC4KIFNlZSBcZklzbm1wZCg4KVxmUiBmb3IgZGV0YWlscyBvZiB0aGUgZm9ybWF0IG9mIHN1Y2ggYWRkcmVzc2VzLgogLlRQCi0uQkkgLS0gIm5hbWUiPSJ2YWx1ZSIKLUFsbG93cyB0byBzcGVjaWZ5IGFueSB0b2tlbiAoIm5hbWUiKSBzdXBwb3J0ZWQgaW4gdGhlCisuQiBcLVgKK0RvIG5vdCBjb25uZWN0IHRvIGEgQWdlbnRYIG1hc3RlciBhZ2VudAorLlRQCisuQkkgXC1cLSAibmFtZSI9InZhbHVlIgorQWxsb3dzIG9uZSB0byBzcGVjaWZ5IGFueSB0b2tlbiAoIm5hbWUiKSBzdXBwb3J0ZWQgaW4gdGhlCiAuSSBzbm1wdHJhcGQuY29uZgogZmlsZSBhbmQgc2V0cyBpdHMgdmFsdWUgdG8gInZhbHVlIi4gT3ZlcnJpZGVzIHRoZSBjb3JyZXNwb25kaW5nIHRva2VuIGluIHRoZQogLkkgc25tcHRyYXBkLmNvbmYKQEAgLTE2MiwyMSArMTY1LDI2IEBACiBhIGxpdGVyYWwgJQogLlRQCiAuQiAlYQotdGhlIGNvbnRlbnRzIG9mIHRoZSBhZ2VudC1hZGRyIGZpZWxkIG9mIHRoZSBQRFUgKHYxIFRSQVBzIG9ubHkpCit0aGUgY29udGVudHMgb2YgdGhlIGFnZW50XC1hZGRyIGZpZWxkIG9mIHRoZSBQRFUgKHYxIFRSQVBzIG9ubHkpCiAuVFAKIC5CICVBCi10aGUgaG9zdG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgY29udGVudHMgb2YgdGhlIGFnZW50LWFkZHIgZmllbGQgb2YKLXRoZSBQRFUsIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHRoZSBjb250ZW50cyBvZiB0aGUgYWdlbnQtYWRkciBmaWVsZAordGhlIGhvc3RuYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbnRlbnRzIG9mIHRoZSBhZ2VudFwtYWRkciBmaWVsZCBvZgordGhlIFBEVSwgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBhZ2VudFwtYWRkciBmaWVsZAogb2YgdGhlIFBEVSAodjEgVFJBUHMgb25seSkuCiAuVFAKIC5CICViCi1QRFUgc291cmNlIGFkZHJlc3MgKE5vdGU6IHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IGFuIElQdjQKLWFkZHJlc3MpCitQRFUgdHJhbnNwb3J0IGFkZHJlc3MgKE5vdGU6IHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IGFuIElQdjQKK2FkZHJlc3MpLgorLmJyCitTb21ldGhpbmcgbGlrZSAiW1VEUDogWzE3Mi4xNi4xMC4xMl06MjM0NTYtPlsxMC4xNTAuMC44XV0iCiAuVFAKIC5CICVCCiBQRFUgc291cmNlIGhvc3RuYW1lIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIFBEVSBzb3VyY2UgYWRkcmVzcyAoc2VlCiBub3RlIGFib3ZlKSAKIC5UUAorLkIgJUUKK1NOTVB2MyBjb250ZXh0IGVuZ2luZSBpZAorLlRQCiAuQiAlaAogY3VycmVudCBob3VyIG9uIHRoZSBsb2NhbCBzeXN0ZW0KIC5UUApAQCAtMjEwLDEzICsyMTgsMTkgQEAKIC5CICVOCiBlbnRlcnByaXNlIHN0cmluZwogLlRQCi0uQiAlcQotdHJhcCBzdWItdHlwZSAobnVtZXJpYywgaW4gZGVjaW1hbCkKLS5UUAogLkIgJVAKIHNlY3VyaXR5IGluZm9ybWF0aW9uIGZyb20gdGhlIFBEVSAoY29tbXVuaXR5IG5hbWUgZm9yIHYxL3YyYywKIHVzZXIgYW5kIGNvbnRleHQgZm9yIHYzKQogLlRQCisuQiAlcQordHJhcCBzdWItdHlwZSAobnVtZXJpYywgaW4gZGVjaW1hbCkKKy5UUAorLkIgJXMKK1NOTVAgdmVyc2lvbiBudW1iZXIgKDA6IHYxLCAxOiB2MmMsIDI6IHYzKQorLlRQCisuQiAlUworU05NUHYzIHNlY3VyaXR5IG1vZGVsIHZlcnNpb24gbnVtYmVyCisuVFAKIC5CICV0CiBkZWNpbWFsIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGVwb2NoIChhcwogcmV0dXJuZWQgYnkKQEAgLTIyNSw2ICsyMzksOSBAQAogLkIgJVQKIHRoZSB2YWx1ZSBvZiB0aGUgXGZDc3lzVXBUaW1lLjBcZlIgdmFyYmluZCBpbiBzZWNvbmRzCiAuVFAKKy5CICV1CitTTk1QdjMgc2VjdXJpdHkgbmFtZSwgb3IgdjEvdjJjIGNvbW11bml0eSBuYW1lCisuVFAKIC5CICV2CiBsaXN0IG9mIHZhcmlhYmxlLWJpbmRpbmdzIGZyb20gdGhlIG5vdGlmaWNhdGlvbiBwYXlsb2FkLgogVGhlc2Ugd2lsbCBiZSBzZXBhcmF0ZWQgYnkgYSB0YWIsIApAQCAtMjU0LDcgKzI3MSw3IEBACiBhbmQgYSBmbGFnIHZhbHVlLiBUaGUgZm9sbG93aW5nIGZsYWdzIGFyZSBzdXBwb3J0ZWQ6CiAuUlMgNCAKIC5UUCA0Ci0uQiAtCisuQiBcLQogbGVmdCBqdXN0aWZ5CiAuVFAKIC5CIDAKQEAgLTI3OSw3ICsyOTYsNyBAQAogLlBQCiAuUlMKIC5uZgotc25tcHRyYXBkIC1QIC1GICIlMDIuMmg6JTAyLjJqIFRSQVAldy4lcSBmcm9tICVBXGVuIgorc25tcHRyYXBkIFwtUCBcLUYgIiUwMi4yaDolMDIuMmogVFJBUCV3LiVxIGZyb20gJUFcZW4iCiAuZmkKIC5SRQogLlBQCkBAIC0yODcsNyArMzA0LDcgQEAKIC5QUAogLlJTCiAubmYKLXNubXB0cmFwZCAtUCAtRiAiJSMwMi4yaDolIzAyLjJqIFRSQVAldy4lcSBmcm9tICVBXGVuIgorc25tcHRyYXBkIFwtUCBcLUYgIiUjMDIuMmg6JSMwMi4yaiBUUkFQJXcuJXEgZnJvbSAlQVxlbiIKIC5maQogLlJFCiAuU0ggTElTVEVOSU5HIEFERFJFU1NFUwpAQCAtMzAxLDIwICszMTgsMjAgQEAKIC5JIHNubXBkKDgpCiBtYW51YWwgcGFnZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm9ybWF0IG9mIGxpc3RlbmluZwogYWRkcmVzc2VzLgotLlNIIE5PVElGSUNBVElPTi1MT0ctTUlCIFNVUFBPUlQKKy5TSCBOT1RJRklDQVRJT05cLUxPR1wtTUlCIFNVUFBPUlQKIEFzIG9mIG5ldC1zbm1wIDUuMCwgdGhlIHNubXB0cmFwZCBhcHBsaWNhdGlvbiBzdXBwb3J0cyB0aGUKLU5PVElGSUNBVElPTi1MT0ctTUlCLiAgSXQgZG9lcyB0aGlzIGJ5IG9wZW5pbmcgYW4gQWdlbnRYIHN1YmFnZW50CitOT1RJRklDQVRJT05cLUxPR1wtTUlCLiAgSXQgZG9lcyB0aGlzIGJ5IG9wZW5pbmcgYW4gQWdlbnRYIHN1YmFnZW50CiBjb25uZWN0aW9uIHRvIHRoZSBtYXN0ZXIgc25tcGQgYWdlbnQgYW5kIHJlZ2lzdGVyaW5nIHRoZSBub3RpZmljYXRpb24KIGxvZyB0YWJsZXMuICBBcyBsb25nIGFzIHRoZSBzbm1wZCBhcHBsaWNhdGlvbiBpcyBzdGFydGVkIGZpcnN0LCBpdAogd2lsbCBhdHRhY2ggaXRzZWxmIHRvIGl0IGFuZCB0aHVzIHlvdSBzaG91bGQgYmUgYWJsZSB0byB2aWV3IHRoZSBsYXN0CiByZWNvcmRlZCBub3RpZmljYXRpb25zIHZpYSB0aGUgbmxtTG9nVGFibGUgYW5kIG5sbUxvZ1ZhcmlhYmxlVGFibGUuCiBTZWUgdGhlIHNubXB0cmFwZC5jb25mIGZpbGUgYW5kIHRoZSAiZG9Ob3RSZXRhaW5Ob3RpZmljYXRpb25Mb2dzIiB0b2tlbgogZm9yIHR1cm5pbmcKLW9mZiB0aGlzIHN1cHBvcnQuICBTZWUgdGhlIE5PVElGSUNBVElPTi1MT0ctTUlCIGZvciBtb3JlIGRldGFpbHMgYWJvdXQKK29mZiB0aGlzIHN1cHBvcnQuICBTZWUgdGhlIE5PVElGSUNBVElPTlwtTE9HXC1NSUIgZm9yIG1vcmUgZGV0YWlscyBhYm91dAogdGhlIE1JQiBpdHNlbGYuCiAuU0ggRVhURU5TSUJJTElUWSBBTkQgQ09ORklHVVJBVElPTgogU2VlIHRoZQogLkkgc25tcHRyYXBkLmNvbmYoNSkKIG1hbnVhbCBwYWdlLgogLlNIICJTRUUgQUxTTyIKLXNubXBjbWQoMSksIHNubXBkKDgpLCBwcmludGYoMyksIHNubXB0cmFwZC5jb25mKDUpLCBzeXNsb2coOCksIHZhcmlhYmxlcyg1KQorc25tcGNtZCgxKSwgc25tcGQoOCksIHByaW50ZigzKSwgc25tcHRyYXBkLmNvbmYoNSksIHN5c2xvZyg4KSwgdHJhcHRvZW1haWwoMSksIHZhcmlhYmxlcyg1KQpkaWZmIC0tZ2l0IGEvbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmIGIvbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmCmluZGV4IGUyMzk0Y2IuLjFiYmJmYmIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wdHJhcGQuY29uZi41LmRlZgorKysgYi9tYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYKQEAgLTEsNCArMSw0IEBACi0uVEggU05NUFRSQVBELkNPTkYgNSAiMTkgRmViIDIwMDkiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUFRSQVBELkNPTkYgNSAiMTMgTWFyIDIwMTQiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogc25tcHRyYXBkLmNvbmYgLSBjb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBOZXQtU05NUCBub3RpZmljYXRpb24gcmVjZWl2ZXIKIC5TSCBERVNDUklQVElPTgpAQCAtNyw3ICs3LDcgQEAKIChhbmQgSU5GT1JNIHJlcXVlc3RzKSBzaG91bGQgYmUgcHJvY2Vzc2VkLgogVGhpcyBmaWxlIChcZkJzbm1wdHJhcGQuY29uZlxmUikgY2FuIGJlIGxvY2F0ZWQgaW4KIG9uZSBvZiBzZXZlcmFsIGxvY2F0aW9ucywgYXMgZGVzY3JpYmVkIGluIHRoZQotLkkgc25tcF9jb25maWcoNSkKKy5JUiBzbm1wX2NvbmZpZyAoNSkKIG1hbnVhbCBwYWdlLgogLlNIIElNUE9SVEFOVAogUHJldmlvdXNseSwKQEAgLTMyLDIyICszMiwyMiBAQAogU2VlIHRoZSBzZWN0aW9uIAogLkIgTElTVEVOSU5HIEFERFJFU1NFUwogaW4gdGhlCi0uSSBzbm1wZCg4KQorLklSIHNubXBkICg4KQogbWFudWFsIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiBsaXN0ZW5pbmcKIGFkZHJlc3Nlcy4KIC5JUAogVGhlIGRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvCiBsaXN0ZW4gb24gVURQIHBvcnQgMTYyIG9uIGFsbCBJUHY0IGludGVyZmFjZXMuCiAuSVAgImRvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncyB5ZXMiCi1kaXNhYmxlcyBzdXBwb3J0IGZvciB0aGUgTk9USUZJQ0FUSU9OLUxPRy1NSUIuCitkaXNhYmxlcyBzdXBwb3J0IGZvciB0aGUgTk9USUZJQ0FUSU9OXC1MT0dcLU1JQi4KIE5vcm1hbGx5IHRoZSBzbm1wdHJhcGQgcHJvZ3JhbSBrZWVwcyBhIHJlY29yZCBvZiB0aGUgdHJhcHMKIHJlY2VpdmVkLCB3aGljaCBjYW4gYmUgcmV0cmlldmVkIGJ5IHF1ZXJ5aW5nCiB0aGUgXGZDbmxtTG9nVGFibGVcZlIgYW5kIFxmQ25sbUxvZ3ZhcmlhYmxlVGFibGVcZlIgdGFibGVzLiAgCiBUaGlzIGRpcmVjdGl2ZSBjYW4gYmUgdXNlZCB0byBzdXBwcmVzcyB0aGlzIGJlaGF2aW91ci4KIC5JUAogU2VlIHRoZSAKLS5JIHNubXB0cmFwZCg4KSAKLW1hbnVhbCBwYWdlIGFuZCB0aGUgTk9USUZJQ0FUSU9OLUxPRy1NSUIgZm9yIGRldGFpbHMuCisuSVIgc25tcHRyYXBkICg4KSAKK21hbnVhbCBwYWdlIGFuZCB0aGUgTk9USUZJQ0FUSU9OXC1MT0dcLU1JQiBmb3IgZGV0YWlscy4KIC5JUCAiZG9Ob3RMb2dUcmFwcyB5ZXMiCiBkaXNhYmxlcyB0aGUgbG9nZ2luZyBvZiBub3RpZmljYXRpb25zIGFsdG9nZXRoZXIuCiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgXGZCc25tcHRyYXBkXGZSIGFwcGxpY2F0aW9uIHNob3VsZApAQCAtODEsMTQgKzgxLDE2IEBACiBmb3IgYSBwYXJ0aWN1bGFyIGNhdGVnb3J5IG9mIG5vdGlmaWNhdGlvbi4gQnV0IGl0IGlzIHBlcmZlY3RseQogcG9zc2libGUgKGV2ZW4gZGVzaXJhYmxlKSB0byBsaW1pdCBjZXJ0YWluIG5vdGlmaWNhdGlvbiBzb3VyY2VzIHRvCiBzZWxlY3RlZCBwcm9jZXNzaW5nIG9ubHkuCi0uSVAgImF1dGhDb21tdW5pdHkgICBUWVBFUyBDT01NVU5JVFkgIFtTT1VSQ0UgW09JRCB8IC12IFZJRVcgXV0iCisuSVAgImF1dGhDb21tdW5pdHkgICBUWVBFUyBDT01NVU5JVFkgIFtTT1VSQ0UgW09JRCB8IFwtdiBWSUVXIF1dIgogYXV0aG9yaXNlcyB0cmFwcyAoYW5kIFNOTVB2MmMgSU5GT1JNIHJlcXVlc3RzKSB3aXRoIHRoZSBzcGVjaWZpZWQKIGNvbW11bml0eSB0byB0cmlnZ2VyIHRoZSB0eXBlcyBvZiBwcm9jZXNzaW5nIGxpc3RlZC4KIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBhbGxvdyBhbnkgbm90aWZpY2F0aW9uIHVzaW5nIHRoaXMgY29tbXVuaXR5CiB0byBiZSBwcm9jZXNzZWQuICBUaGUgU09VUkNFIGZpZWxkIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgdGhhdCB0aGUKIGNvbmZpZ3VyYXRpb24gc2hvdWxkIG9ubHkgYXBwbHkgdG8gbm90aWZpY2F0aW9ucyByZWNlaXZlZCBmcm9tCi1wYXJ0aWN1bGFyIHNvdXJjZXMgLSBzZWUgXGZJc25tcGQuY29uZig1KVxmUiBmb3IgbW9yZSBkZXRhaWxzLgotLklQICJhdXRoVXNlciAgIFRZUEVTIFstcyBNT0RFTF0gVVNFUiAgW0xFVkVMIFtPSUQgfCAtdiBWSUVXIF1dIgorcGFydGljdWxhciBzb3VyY2VzIC0gc2VlCisuSVIgc25tcGQuY29uZiAoNSkKK2ZvciBtb3JlIGRldGFpbHMuCisuSVAgImF1dGhVc2VyICAgVFlQRVMgW1wtcyBNT0RFTF0gVVNFUiAgW0xFVkVMIFtPSUQgfCBcLXYgVklFVyBdXSIKIGF1dGhvcmlzZXMgU05NUHYzIG5vdGlmaWNhdGlvbnMgd2l0aCB0aGUgc3BlY2lmaWVkCiB1c2VyIHRvIHRyaWdnZXIgdGhlIHR5cGVzIG9mIHByb2Nlc3NpbmcgbGlzdGVkLgogQnkgZGVmYXVsdCwgdGhpcyB3aWxsIGFjY2VwdCBhdXRoZW50aWNhdGVkIHJlcXVlc3RzLgpAQCAtOTYsNyArOTgsNyBAQAogYmUgdXNlZCB0byBhbGxvdyB1bmF1dGhlbnRpY2F0ZWQgbm90aWZpY2F0aW9ucyAoXGZJbm9hdXRoXGZSKSwKIG9yIHRvIHJlcXVpcmUgZW5jcnlwdGlvbiAoXGZJcHJpdlxmUiksIGp1c3QgYXMgZm9yIHRoZSBTTk1QIGFnZW50LgogLklQCi1XaXRoIGJvdGggb2YgdGhlc2UgZGlyZWN0aXZlcywgdGhlIE9JRCAob3IgXGZJLXYgVklFV1xmUikgZmllbGQKK1dpdGggYm90aCBvZiB0aGVzZSBkaXJlY3RpdmVzLCB0aGUgT0lEIChvciBcZklcLXYgVklFV1xmUikgZmllbGQKIGNhbiBiZSB1c2VkIHRvIHJldHJpY3QgdGhpcyBjb25maWd1cmF0aW9uIHRvIHRoZSBwcm9jZXNzaW5nIG9mCiBwYXJ0aWN1bGFyIG5vdGlmaWNhdGlvbnMuCiAuUlMKQEAgLTEwNiwxNiArMTA4LDE4IEBACiBpbmNvbWluZyBub3RpZmljYXRpb24uICBJdCBpcyBub3QgYXBwbGllZCB0byB0aGUgcGF5bG9hZCB2YXJiaW5kcwogaGVsZCB3aXRoaW4gdGhhdCBub3RpZmljYXRpb24uCiAuUkUKLS5JUCAiYXV0aEdyb3VwICBUWVBFUyBbLXMgTU9ERUxdIEdST1VQICBbTEVWRUwgW09JRCB8IC12IFZJRVcgXV0iCi0uSVAgImF1dGhBY2Nlc3MgVFlQRVMgWy1zIE1PREVMXSBHUk9VUCBWSUVXICBbTEVWRUwgW0NPTlRFWFRdXSIKKy5JUCAiYXV0aEdyb3VwICBUWVBFUyBbXC1zIE1PREVMXSBHUk9VUCAgW0xFVkVMIFtPSUQgfCBcLXYgVklFVyBdXSIKKy5JUCAiYXV0aEFjY2VzcyBUWVBFUyBbXC1zIE1PREVMXSBHUk9VUCBWSUVXICBbTEVWRUwgW0NPTlRFWFRdXSIKIC5JUCAic2V0QWNjZXNzIEdST1VQIENPTlRFWFQgTU9ERUwgTEVWRUwgUFJFRklYIFZJRVcgVFlQRVMiCiBhdXRob3Jpc2Ugbm90aWZpY2F0aW9ucyBpbiB0aGUgc3BlY2lmaWVkIEdST1VQCiAoY29uZmlndXJlZCB1c2luZyB0aGUgXGZJZ3JvdXBcZlIgZGlyZWN0aXZlKQogdG8gdHJpZ2dlciB0aGUgdHlwZXMgb2YgcHJvY2Vzc2luZyBsaXN0ZWQuCi1TZWUgXGZJc25tcGQuY29uZig1KVxmUiBmb3IgbW9yZSBkZXRhaWxzLgorU2VlCisuSVIgc25tcGQuY29uZiAoNSkKK2ZvciBtb3JlIGRldGFpbHMuCiAuSVAgImNyZWF0ZVVzZXIgWy1lICBFTkdJTkVJRF0gdXNlcm5hbWUgKE1ENXxTSEEpIGF1dGhwYXNzcGhyYXNlIFtERVN8QUVTXSIKIFNlZSB0aGUgCi0uSSBzbm1wZC5jb25mKDUpCisuSVIgc25tcGQuY29uZiAoNSkKIG1hbnVhbCBwYWdlIGZvciBhIGRlc2NyaXB0aW9uIG9mIGhvdyB0byBjcmVhdGUgU05NUHYzIHVzZXJzLiAgVGhpcwogaXMgcm91Z2hseSB0aGUgc2FtZSwgYnV0IHRoZSBmaWxlIG5hbWUgY2hhbmdlcyB0byBzbm1wdHJhcGQuY29uZiBmcm9tCiBzbm1wZC5jb25mLgpAQCAtMTMxLDkgKzEzNSwzOCBAQAogc3BlY2lmeSB0aGUgZm9ybWF0IHVzZWQgdG8gZGlzcGxheSBTTk1QdjEgVFJBUHMgYW5kIFNOTVB2Mgogbm90aWZpY2F0aW9ucyByZXNwZWN0aXZlbHkuICBOb3RlIHRoYXQgU05NUHYyYyBhbmQgU05NUHYzCiBib3RoIHVzZSB0aGUgc2FtZSBTTk1QdjIgUERVIGZvcm1hdC4KKy5JUCAiZm9ybWF0IERFU1RJTkFUSU9OIEZPUk1BVCIKK3NwZWNpZnkgdGhlIGZvcm1hdCB1c2VkIGZvciBkaWZmZXJlbnQgZGVzdGluYXRpb25zLgorREVTVElOQVRJT04gaXMgb25lIG9mOgorLklSIHByaW50ICIsICIgcHJpbnQxICIsICIgcHJpbnQyICIsICIgCisuSVIgc3lzbG9nICIsICIgc3lzbG9nMSAiLCAiIHN5c2xvZzIgIiwgIiAKKy5JUiBleGVjdXRlICIsICIgZXhlY3V0ZTEgIiwgIiBleGVjdXRlMiAuCisuSSBwcmludDEKK2lzIHVzZWQgZm9yIHByaW50aW5nIFNOTVB2MSB0cmFwcywKKy5JIHByaW50MgoraXMgZm9yIFNOTVB2Mi4KKy5JIHByaW50CitpcyB1c2VkIGZvciBib3RoIHZlcnNpb25zLgorLkkgc3lzbG9nCitpcyBzaW1pbGFybHkgdXNlZCB3aGVuIHNlbmRpbmcgdHJhcHMgdG8gc3lzbG9nLCBhbmQKKy5JIGV4ZWN1dGUKK3VzZWQgd2hlbiBzZW5kaW5nIHRyYXBzIHRvIGEgcHJvZ3JhbSBzdWNoIGFzCisuSVIgdHJhcHRvZW1haWwgKDEpLgorLklQCitUaGUgZGVmYXVsdCBmb3JtYXRzIGFyZQorLmJyCisuSSBmb3JtYXQgcHJpbnQxICUuNHktJS4ybS0lLjJsICUuMmg6JS4yajolLjJrICVCIFslYl0gKHZpYSAlQSBbJWFdKTogJU5cZW5cZXQlVyBUcmFwICglcSkgVXB0aW1lOiAlI1RcZW4ldlxlbgorLmJyCisuSSBmb3JtYXQgcHJpbnQyICUuNHktJS4ybS0lLjJsICUuMmg6JS4yajolLjJrICVCIFslYl06XGVuJXZcZW4KKy5icgorLkkgZm9ybWF0IHN5c2xvZzEgJWE6ICVXIFRyYXAgKCVxKSBVcHRpbWU6ICUjVCUjdlxlbgorLmJyCisuSSBmb3JtYXQgc3lzbG9nMiAlQiBbJWJdOiBUcmFwICUjdlxlbgorLmJyCisuSSBmb3JtYXQgZXhlY3V0ZSAlQlxlbiViXGVuJVZcZW4ldlxlbgogLklQCiBTZWUKLS5JUiBzbm1wdHJhcGQoOCkKKy5JUiBzbm1wdHJhcGQgKDgpCiBmb3IgdGhlIGxheW91dCBjaGFyYWN0ZXJzIGF2YWlsYWJsZS4KIC5JUCAiaWdub3JlQXV0aEZhaWx1cmUgeWVzIgogaW5zdHJ1Y3RzIHRoZSByZWNlaXZlciB0byBpZ25vcmUgXGZJYXV0aGVudGljYXRpb25GYWlsdXJlXGZSIHRyYXBzLgpAQCAtMTQ5LDEyICsxODIsMTQgQEAKIHNwZWNpZmllcyB3aGVyZSBub3RpZmljYXRpb25zIHNob3VsZCBiZSBsb2dnZWQgLSB0byBzdGFuZGFyZAogb3V0cHV0LCBzdGFuZGFyZCBlcnJvciwgYSBzcGVjaWZpZWQgZmlsZSBvciB2aWEgXGZJc3lzbG9nXGZSLgogU2VlIHRoZSBzZWN0aW9uIExPR0dJTkcgT1BUSU9OUyBpbiB0aGUKLVxmSXNubXBjbWQoMSlcZlIgbWFudWFsIHBhZ2UgZm9yIGRldGFpbHMuCisuSVIgc25tcGNtZCAoMSkKK21hbnVhbCBwYWdlIGZvciBkZXRhaWxzLgogLklQICJvdXRwdXRPcHRpb24gc3RyaW5nIgogc3BlY2lmaWVzIHZhcmlvdXMgY2hhcmFjdGVyaXN0aWNzIG9mIGhvdyBPSURzIGFuZCBvdGhlciB2YWx1ZXMKIHNob3VsZCBiZSBkaXNwbGF5ZWQuCiBTZWUgdGhlIHNlY3Rpb24gT1VUUFVUIE9QVElPTlMgaW4gdGhlCi1cZklzbm1wY21kKDEpXGZSIG1hbnVhbCBwYWdlIGZvciBkZXRhaWxzLgorLklSIHNubXBjbWQgKDEpCittYW51YWwgcGFnZSBmb3IgZGV0YWlscy4KIC5TSCBNeVNRTCBMb2dnaW5nCiBUaGVyZSBhcmUgdHdvIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgd29yayB0b2dldGhlciB0byBjb250cm9sCiB3aGVuIHF1ZXVlZCB0cmFwcyBhcmUgbG9nZ2VkIHRvIHRoZSBNeVNRTCBkYXRhYmFzZS4gQSBub24temVybwpAQCAtMjAxLDE0ICsyMzYsMTcgQEAKIE5vdGUgdGhhdCB0aGlzIHdpbGwgYWx3YXlzIHVzZSB0aGUgU05NUHYyLXN0eWxlIG5vdGlmaWNhdGlvbiBmb3JtYXQsIHdpdGgKIFNOTVB2MSB0cmFwcyBiZWluZyBjb252ZXJ0ZWQgYXMgcGVyIFJGQyAyNTc2LCBiZWZvcmUgYmVpbmcgcGFzc2VkIHRvIHRoZQogcHJvZ3JhbS4KLVRoZSBpbnB1dCBmb3JtYXQgaXMgYXMgZm9sbG93cywgb25lIGVudHJ5IHBlciBsaW5lOgorVGhlIGlucHV0IGZvcm1hdCBpcywgaWYgeW91IHVzZSB0aGUgZGVmYXVsdCBzZXQgYnkKK3RoZSAiZm9ybWF0IGV4ZWN1dGUgJUJcZW4lYlxlbiVWXGVuJXZcZW4iLCBvbmUgZW50cnkgcGVyIGxpbmU6CiAuUlMKIC5JUCBIT1NUTkFNRQogVGhlIG5hbWUgb2YgdGhlIGhvc3QgdGhhdCBzZW50IHRoZSBub3RpZmljYXRpb24sIGFzIGRldGVybWluZWQgYnkKLS5JUiBnZXRob3N0YnlhZGRyKDMpIC4KKy5JUiBnZXRob3N0YnlhZGRyICgzKS4KIC5icgotLklQIElQQUREUkVTUwotVGhlIElQIGFkZHJlc3Mgb2YgdGhlIGhvc3QgdGhhdCBzZW50IHRoZSBub3RpZmljYXRpb24uCisuSVAgQUREUkVTUworVGhlIHRyYW5zcG9ydCBhZGRyZXNzLCBsaWtlCisuYnIKKyJbVURQOiBbMTcyLjE2LjEwLjEyXToyMzQ1Ni0+WzEwLjE1MC4wLjhdXSIKIC5cIgogLlwiIFhYWCAtIFdoYXQgYWJvdXQgbm9uLUlQdjQgdHJhbnNwb3J0cz8KIC5cIgpAQCAtMjE5LDEwICsyNTcsMTAgQEAKIFRoZSBmb3JtYXQgb2YgYm90aCBvZiB0aGVzZSBhcmUgY29udHJvbGxlZCBieSB0aGUgXGZJb3V0cHV0T3B0aW9uXGZSCiBkaXJlY3RpdmUgKG9yIHNpbWlsYXIgY29uZmlndXJhdGlvbikuCiAuSVAKLVRoZSBmaXJzdCBPSUQgc2hvdWxkIGFsd2F5cyBiZSBcZkNTTk1QdjItTUlCOjpzeXNVcFRpbWUuMFxmUiwKLWFuZCB0aGUgc2Vjb25kIHNob3VsZCBiZSBcZkNTTk1QdjItTUlCOjpzbm1wVHJhcE9JRC4wXGZSLgorVGhlIGZpcnN0IE9JRCBzaG91bGQgYWx3YXlzIGJlIFxmQ1NOTVB2MlwtTUlCOjpzeXNVcFRpbWUuMFxmUiwKK2FuZCB0aGUgc2Vjb25kIHNob3VsZCBiZSBcZkNTTk1QdjJcLU1JQjo6c25tcFRyYXBPSUQuMFxmUi4KIFRoZSByZW1haW5pbmcgbGluZXMgd2lsbCBjb250YWluIHRoZSBwYXlsb2FkIHZhcmJpbmQgbGlzdC4KLUZvciBTTk1QdjEgdHJhcHMsIHRoZSBmaW5hbCBPSUQgd2lsbCBiZSBcZkNTTk1QdjItTUlCOjpzbm1wVHJhcEVudGVycHJpc2UuMFxmUi4KK0ZvciBTTk1QdjEgdHJhcHMsIHRoZSBmaW5hbCBPSUQgd2lsbCBiZSBcZkNTTk1QdjJcLU1JQjo6c25tcFRyYXBFbnRlcnByaXNlLjBcZlIuCiAuYnIKIC5JUCBFeGFtcGxlOgogQSBcZkJ0cmFwdG9lbWFpbFxmUiBzY3JpcHQgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIE5ldC1TTk1QIHBhY2thZ2UgdGhhdApAQCAtMjMwLDcgKzI2OCw3IEBACiAuYnIKIC5SUwogLlAKLXRyYXBoYW5kbGUgZGVmYXVsdCAvdXNyL2Jpbi9wZXJsIEJJTkRJUi90cmFwdG9lbWFpbCAtcyBteXNtdHAuc29tZXdoZXJlLmNvbSAtZiBhZG1pbkBzb21ld2hlcmUuY29tIG1lQHNvbWV3aGVyZS5jb20KK3RyYXBoYW5kbGUgZGVmYXVsdCAvdXNyL2Jpbi9wZXJsIEJJTkRJUi90cmFwdG9lbWFpbCBcLXMgbXlzbXRwLnNvbWV3aGVyZS5jb20gXC1mIGFkbWluQHNvbWV3aGVyZS5jb20gbWVAc29tZXdoZXJlLmNvbQogLlJFCiAuUkUKIC5JUCAiZm9yd2FyZCBPSUR8ZGVmYXVsdCBERVNUSU5BVElPTiIKQEAgLTI0Miw3ICsyODAsNyBAQAogU2VlIHRoZSBzZWN0aW9uIAogLkIgTElTVEVOSU5HIEFERFJFU1NFUwogaW4gdGhlCi0uSSBzbm1wZCg4KQorLklSIHNubXBkICg4KQogbWFudWFsIHBhZ2UgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiBsaXN0ZW5pbmcKIGFkZHJlc3Nlcy4KIC5SRQpAQCAtMjYyLDUgKzMwMCw1IEBACiAuU0ggRklMRVMKIFNZU0NPTkZESVIvc25tcC9zbm1wdHJhcGQuY29uZgogLlNIICJTRUUgQUxTTyIKLXNubXBfY29uZmlnKDUpLCBzbm1wdHJhcGQoOCksIHN5c2xvZyg4KSwgdmFyaWFibGVzKDUpLCBzbm1wZC5jb25mKDUpLCBuZXRzbm1wX2NvbmZpZ19hcGkoMykuCitzbm1wX2NvbmZpZyg1KSwgc25tcHRyYXBkKDgpLCBzeXNsb2coOCksIHRyYXB0b2VtYWlsKDEpLCB2YXJpYWJsZXMoNSksIG5ldHNubXBfY29uZmlnX2FwaSgzKS4KIApkaWZmIC0tZ2l0IGEvbWFuL3NubXB1c20uMS5kZWYgYi9tYW4vc25tcHVzbS4xLmRlZgppbmRleCAyMTc3NTkyLi45MDYxMjEzIDEwMDY0NAotLS0gYS9tYW4vc25tcHVzbS4xLmRlZgorKysgYi9tYW4vc25tcHVzbS4xLmRlZgpAQCAtMyw3ICszLDcgQEAKIHNubXB1c20gLSBjcmVhdGVzIGFuZCBtYWludGFpbnMgU05NUHYzIHVzZXJzIG9uIGEgbmV0d29yayBlbnRpdHkKIC5TSCBTWU5PUFNJUwogLkIgc25tcHVzbQotW0NPTU1PTiBPUFRJT05TXSBbLUN3XSBBR0VOVAorW0NPTU1PTiBPUFRJT05TXSBbXC1Dd10gQUdFTlQKIC5CIGNyZWF0ZQogVVNFUiBbQ0xPTkVGUk9NLVVTRVJdCiAuYnIKQEAgLTE4LDE3ICsxOCwxNyBAQAogVVNFUiBDTE9ORUZST00tVVNFUgogLmJyCiAuQiBzbm1wdXNtCi1bQ09NTU9OIE9QVElPTlNdIFstQ2FdIFstQ3hdIEFHRU5UCitbQ09NTU9OIE9QVElPTlNdIFtcLUNhXSBbXC1DeF0gQUdFTlQKIC5CIHBhc3N3ZAogT0xELVBBU1NQSFJBU0UgTkVXLVBBU1NQSFJBU0UgW1VTRVJdCiAuYnIKIC5CIHNubXB1c20KLVtDT01NT04gT1BUSU9OU10gPC1DYSB8IC1DeD4gLUNrIEFHRU5UCitbQ09NTU9OIE9QVElPTlNdIDxcLUNhIHwgXC1DeD4gXC1DayBBR0VOVAogLkIgcGFzc3dkCiBPTEQtS0VZLU9SLVBBU1NQSFJBU0UgTkVXLUtFWS1PUi1QQVNTUEhSQVNFIFtVU0VSXQogLmJyCiAuQiBzbm1wdXNtCi1bQ09NTU9OIE9QVElPTlNdIFstQ2FdIFstQ3hdIEFHRU5UCitbQ09NTU9OIE9QVElPTlNdIFtcLUNhXSBbXC1DeF0gQUdFTlQKIC5CIGNoYW5nZWtleQogW1VTRVJdCiAKQEAgLTQ2LDEyICs0NiwxMiBAQAogLkIgc25tcHVzbQogY29tbWFuZHM6CiAuVFAKLS5CSSAtQ0UgIiBFTkdJTkUtSUQiCisuQkkgXC1DRSAiIEVOR0lORS1JRCIKIFNldCB1c21Vc2VyRW5naW5lSUQgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBpbmRleCBvZiB0aGUgdXNtVXNlclRhYmxlLgotRGVmYXVsdCBpcyB0byB1c2UgdGhlIGNvbnRleHRFbmdpbmVJRCAoc2V0IHZpYSAtRSBvciBwcm9iZWQpIGFzIHRoZSAKK0RlZmF1bHQgaXMgdG8gdXNlIHRoZSBjb250ZXh0RW5naW5lSUQgKHNldCB2aWEgXC1FIG9yIHByb2JlZCkgYXMgdGhlIAogdXNtVXNlckVuZ2luZUlELgogLlRQCi0uQkkgLUNwICIgU1RSSU5HIgorLkJJIFwtQ3AgIiBTVFJJTkciCiBTZXQgdGhlIHVzbVVzZXJQdWJsaWMgdmFsdWUgb2YgdGhlIChuZXcpIHVzZXIgdG8gdGhlIHNwZWNpZmllZCBTVFJJTkcuCiAuUFAKIE9wdGlvbnMgZm9yIHRoZQpAQCAtNjAsMTUgKzYwLDE1IEBACiAuQiBjaGFuZ2VrZXkKIGNvbW1hbmRzOgogLlRQCi0uQkkgLUNhCisuQkkgXC1DYQogQ2hhbmdlIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkuCiAuVFAKLS5CSSAtQ3gKKy5CSSBcLUN4CiBDaGFuZ2UgdGhlIHByaXZhY3kga2V5LgogLlRQCi0uQkkgLUNrCi1BbGxvd3MgdG8gdXNlIGxvY2FsaXplZCBrZXkgKG11c3Qgc3RhcnQgd2l0aCAweCkgaW5zdGVhZCBvZiBwYXNzcGhyYXNlLgotV2hlbiB0aGlzIG9wdGlvbiBpcyB1c2VkLCBlaXRoZXIgdGhlIC1DYSBvciAtQ3ggb3B0aW9uIChidXQgbm90IGJvdGgpIG11c3QgYWxzbworLkJJIFwtQ2sKK0FsbG93cyBvbmUgdG8gdXNlIGxvY2FsaXplZCBrZXkgKG11c3Qgc3RhcnQgd2l0aCAweCkgaW5zdGVhZCBvZiBwYXNzcGhyYXNlLgorV2hlbiB0aGlzIG9wdGlvbiBpcyB1c2VkLCBlaXRoZXIgdGhlIFwtQ2Egb3IgXC1DeCBvcHRpb24gKGJ1dCBub3QgYm90aCkgbXVzdCBhbHNvCiBiZSB1c2VkLgogCiAuU0ggQ1JFQVRJTkcgVVNFUlMKQEAgLTc2LDE0ICs3NiwxNCBAQAogQW4gdW5hdXRoZW50aWNhdGVkIFNOTVB2MyB1c2VyIGNhbiBiZSBjcmVhdGVkIHVzaW5nIHRoZSBjb21tYW5kCiAuSVAKIC5CIHNubXB1c20KLVtPUFRJT05TXSBBR0VOVCBjcmVhdGUgVVNFUgorW0NPTU1PTiBPUFRJT05TXSBBR0VOVCBjcmVhdGUgVVNFUgogLlBQCiBUaGlzIGNvbnN0cnVjdHMgYW4gKGluYWN0aXZlKSBlbnRyeSBpbiB0aGUgdXNtVXNlclRhYmxlLAogd2l0aCBubyBhdXRoZW50aWNhdGlvbiBvciBwcml2YWN5IHNldHRpbmdzLgogSW4gcHJpbmNpcGxlLCB0aGlzIHVzZXIgc2hvdWxkIGJlIHVzZWFibGUgZm9yICdub0F1dGhOb1ByaXYnIHJlcXVlc3RzLAogYnV0IGluIHByYWN0aXNlIHRoZSBOZXQtU05NUCBhZ2VudCB3aWxsIG5vdCBhbGxvdyBzdWNoIGFuIGVudHJ5CiB0byBiZSBtYWRlIGFjdGl2ZS4gIFRoZSB1c2VyIGNhbiBiZSBjcmVhdGVkIHZpYSB0aGUgY3JlYXRlQW5kV2FpdAotb3BlcmF0aW9uIGluc3RlYWQgYnkgdXNpbmcgdGhlIC1DYSBmbGFnLiAgVGhpcyB3aWxsIHByZXZlbnQgdGhlIHVzZXIKK29wZXJhdGlvbiBpbnN0ZWFkIGJ5IHVzaW5nIHRoZSBcLUNhIGZsYWcuICBUaGlzIHdpbGwgcHJldmVudCB0aGUgdXNlcgogZnJvbSBiZWluZyBtYXJrZWQgYXMgYWN0aXZlIGluIGFueSBhZ2VudCB1bnRpbCBleHBsaWNpdGx5IGFjdGl2YXRlZAogbGF0ZXIgdmlhIHRoZSBhY3RpdmF0ZSBjb21tYW5kLgogCkBAIC05Miw3ICs5Miw3IEBACiB1c2VyLCB1c2luZyB0aGUgY29tbWFuZAogLklQCiAuQiBzbm1wdXNtCi1bT1BUSU9OU10gQUdFTlQgY2xvbmVGcm9tIFVTRVIgQ0xPTkVGUk9NLVVTRVIKK1tDT01NT04gT1BUSU9OU10gQUdFTlQgY2xvbmVGcm9tIFVTRVIgQ0xPTkVGUk9NLVVTRVIKIC5QUAogVGhlIFVTRVIgZW50cnkgdGhlbiBpbmhlcml0cyB0aGUgc2FtZSBhdXRoZW50aWNhdGlvbiBhbmQgcHJpdmFjeQogc2V0dGluZ3MgKGluY2x1ZGluZyBwYXNzIHBocmFzZXMpIGFzIHRoZSBDTE9ORUZST00gdXNlci4KQEAgLTEwMSw3ICsxMDEsNyBAQAogVGhlc2UgdHdvIHN0ZXBzIGNhbiBiZSBjb21iaW5lZCBpbnRvIG9uZSwgYnkgdXNpbmcgdGhlIGNvbW1hbmQKIC5JUAogLkIgc25tcHVzbQotW09QVElPTlNdIEFHRU5UIGNyZWF0ZSBVU0VSIENMT05FRlJPTS1VU0VSCitbQ09NTU9OIE9QVElPTlNdIEFHRU5UIGNyZWF0ZSBVU0VSIENMT05FRlJPTS1VU0VSCiAKIC5QUAogVGhlIHR3byBmb3JtcyBvZiB0aGUKQEAgLTEzNyw3ICsxMzcsNyBAQAogQSB1c2VyIGNhbiBiZSBkZWxldGVkIGZyb20gdGhlIHVzbVVzZXJUYWJsZSB1c2luZyB0aGUgY29tbWFuZAogLklQCiAuQiBzbm1wdXNtCi1bT1BUSU9OU10gQUdFTlQgZGVsZXRlIFVTRVIKK1tDT01NT04gT1BUSU9OU10gQUdFTlQgZGVsZXRlIFVTRVIKIAogLlNIIENIQU5HSU5HIFBBU1MgUEhSQVNFUwogVXNlciBwcm9maWxlcyBjb250YWluIHByaXZhdGUga2V5cyB0aGF0IGFyZSBuZXZlcgpAQCAtMTQ4LDcgKzE0OCw3IEBACiBUaGlzIHVzZXMgdGhlIGNvbW1hbmQKIC5JUAogLkIgc25tcHVzbQotW09QVElPTlNdIFstQ2FdIFstQ3hdIEFHRU5UIHBhc3N3ZCBPTEQtUEFTU1BIUkFTRSBORVctUEFTU1BIUkFTRSBbVVNFUl0KK1tDT01NT04gT1BUSU9OU10gW1wtQ2FdIFtcLUN4XSBBR0VOVCBwYXNzd2QgT0xELVBBU1NQSFJBU0UgTkVXLVBBU1NQSFJBU0UgW1VTRVJdCiAKIC5QUAogQWZ0ZXIgY2xvbmluZyBhIG5ldyB1c2VyIGVudHJ5IGZyb20gdGhlIGFwcHJvcHJpYXRlIHRlbXBsYXRlLApAQCAtMTU2LDIxICsxNTYsMjEgQEAKIAogLlBQCiBJZiBVU0VSIGlzIG5vdCBzcGVjaWZpZWQsIHRoaXMgY29tbWFuZCB3aWxsIGNoYW5nZSB0aGUgcGFzc3BocmFzZQotb2YgdGhlIChTTk1QdjMpIHVzZXIgaXNzdWluZyB0aGUgY29tbWFuZC4gIElmIHRoZSAtQ2Egb3IgLUN4IG9wdGlvbnMKK29mIHRoZSAoU05NUHYzKSB1c2VyIGlzc3VpbmcgdGhlIGNvbW1hbmQuICBJZiB0aGUgXC1DYSBvciBcLUN4IG9wdGlvbnMKIGFyZSBzcGVjaWZpZWQsIHRoZW4gb25seSB0aGUgYXV0aGVudGljYXRpb24gb3IgcHJpdmFjeSBrZXlzIGFyZSBjaGFuZ2VkLiAgSWYKIHRoZXNlIG9wdGlvbnMgYXJlIG5vdCBzcGVjaWZpZWQsIHRoZW4gYm90aCB0aGUgYXV0aGVudGljYXRpb24gYW5kIHByaXZhY3kga2V5cwogYXJlIGNoYW5nZWQuCiAKIC5JUAogLkIgc25tcHVzbQotW09QVElPTlNdIFstQ2FdIFstQ3hdIEFHRU5UIGNoYW5nZWtleSBbVVNFUl0KK1tDT01NT04gT1BUSU9OU10gW1wtQ2FdIFtcLUN4XSBBR0VOVCBjaGFuZ2VrZXkgW1VTRVJdCiAKIC5QUAogVGhpcyBjb21tYW5kIGNoYW5nZXMgdGhlIGtleSBpbiBhIHBlcmZlY3QtZm9yd2FyZC1zZWNyZWN5IGNvbXBsaWFudAogd2F5IHRocm91Z2ggYSBkaWZmaWUtaGVsbWFuIGV4Y2hhbmdlLiAgVGhlIHJlbW90ZSBhZ2VudCBtdXN0IHN1cHBvcnQKLXRoZSBTTk1QLVVTTS1ESC1PQkpFQ1RTLU1JQiBmb3IgdGhpcyBjb21tYW5kIHRvIHdvcmsuICBUaGUgcmVzdWx0aW5nCit0aGUgU05NUFwtVVNNXC1ESFwtT0JKRUNUU1wtTUlCIGZvciB0aGlzIGNvbW1hbmQgdG8gd29yay4gIFRoZSByZXN1bHRpbmcKIGtleXMgYXJlIHByaW50ZWQgdG8gdGhlIGNvbnNvbGUgYW5kIG1heSBiZSB0aGVuIHNldCBpbiBmdXR1cmUgY29tbWFuZAotaW52b2NhdGlvbnMgdXNpbmcgdGhlIC0tZGVmQXV0aExvY2FsaXplZEtleSBhbmQgLS1kZWZQcml2TG9jYWxpemVkS2V5CitpbnZvY2F0aW9ucyB1c2luZyB0aGUgXC1cLWRlZkF1dGhMb2NhbGl6ZWRLZXkgYW5kIFwtXC1kZWZQcml2TG9jYWxpemVkS2V5CiBvcHRpb25zIG9yIGluIHlvdXIgc25tcC5jb25mIGZpbGUgdXNpbmcgdGhlIGRlZkF1dGhMb2NhbGl6ZWRLZXkgYW5kCiBkZWZQcml2TG9jYWxpemVkS2V5IGtleXdvcmRzLgogCkBAIC0xODcsMTAgKzE4NywxMCBAQAogCiAuSVAKIC5CIHNubXB1c20KLVtPUFRJT05TXSA8LUNhIHwgLUN4PiAtQ2sgQUdFTlQgcGFzc3dkIE9MRC1LRVktT1ItUEFTU1BIUkFTRSBORVctS0VZLU9SLVBBU1NQSFJBU0UgW1VTRVJdCitbQ09NTU9OIE9QVElPTlNdIDxcLUNhIHwgXC1DeD4gXC1DayBBR0VOVCBwYXNzd2QgT0xELUtFWS1PUi1QQVNTUEhSQVNFIE5FVy1LRVktT1ItUEFTU1BIUkFTRSBbVVNFUl0KIAogLlBQCi1FaXRoZXIgdGhlIC1DYSBvciB0aGUgLUN4IG9wdGlvbiBtdXN0IGJlIHNwZWNpZmllZC4gIFRoZSBPTEQtS0VZLU9SLVBBU1NQSFJBU0UKK0VpdGhlciB0aGUgXC1DYSBvciB0aGUgXC1DeCBvcHRpb24gbXVzdCBiZSBzcGVjaWZpZWQuICBUaGUgT0xELUtFWS1PUi1QQVNTUEhSQVNFCiBhbmQvb3IgTkVXLUtFWS1PUi1QQVNTUEhSQVNFIGFyZ3VtZW50cyBjYW4gZWl0aGVyIGJlIGEgcGFzc3BocmFzZSBvciBhCiBsb2NhbGl6ZWQga2V5IHN0YXJ0aW5nIHdpdGggIjB4IiwgZS5nLiBhcyBwcmludGVkIG91dCBieSB0aGUKIC5CIGNoYW5nZWtleQpAQCAtMjI5LDcgKzIyOSw3IEBACiBpbiBsZW5ndGguCiAuU1MgQ3JlYXRlIGEgbmV3IHVzZXIKIC5QUAotc25tcHVzbSAtdjMgLXUgaW5pdGlhbCAtbiAiIiAtbCBhdXRoTm9Qcml2IC1hIE1ENSAtQSBzZXR1cF9wYXNzcGhyYXNlCitzbm1wdXNtIFwtdjMgXC11IGluaXRpYWwgXC1uICIiIFwtbCBhdXRoTm9Qcml2IFwtYSBNRDUgXC1BIHNldHVwX3Bhc3NwaHJhc2UKIGxvY2FsaG9zdCBjcmVhdGUgd2VzIGluaXRpYWwKIC5JUAogQ3JlYXRlcyBhIG5ldyB1c2VyLCBoZXJlIG5hbWVkICJ3ZXMiIHVzaW5nIHRoZSB1c2VyICJpbml0aWFsIiB0byBkbwpAQCAtMjM3LDcgKzIzNyw3IEBACiB0aGF0IHVzZXIncyBwYXNzcGhyYXNlICgic2V0dXBfcGFzc3BocmFzZSIpLgogLlNTIENoYW5nZSB0aGUgdXNlcidzIHBhc3NwaHJhc2UKIC5QUAotc25tcHVzbSAtdiAzIC11IHdlcyAtbiAiIiAtbCBhdXRoTm9Qcml2IC1hIE1ENSAtQSBzZXR1cF9wYXNzcGhyYXNlCitzbm1wdXNtIFwtdiAzIFwtdSB3ZXMgXC1uICIiIFwtbCBhdXRoTm9Qcml2IFwtYSBNRDUgXC1BIHNldHVwX3Bhc3NwaHJhc2UKIGxvY2FsaG9zdCBwYXNzd2Qgc2V0dXBfcGFzc3BocmFzZSBuZXdfcGFzc3BocmFzZQogLklQCiBBZnRlciBjcmVhdGluZyB0aGUgdXNlciAid2VzIiB3aXRoIHRoZSBzYW1lIHBhc3NwaHJhc2UgYXMgdGhlCkBAIC0yNDYsNyArMjQ2LDcgQEAKIHRoZSBpbml0aWFsIHVzZXIsIHRvICJuZXdfcGFzc3BocmFzZSIuCiAuU1MgVGVzdCB0aGUgbmV3IHVzZXIKIC5QUAotc25tcGdldCAtdiAzIC11IHdlcyAtbiAiIiAtbCBhdXRoTm9Qcml2IC1hIE1ENSAtQSBuZXdfcGFzc3BocmFzZQorc25tcGdldCBcLXYgMyBcLXUgd2VzIFwtbiAiIiBcLWwgYXV0aE5vUHJpdiBcLWEgTUQ1IFwtQSBuZXdfcGFzc3BocmFzZQogbG9jYWxob3N0IHN5c1VwVGltZS4wCiAuSVAKIElmIHRoZSBhYm92ZSBjb21tYW5kcyB3ZXJlIHN1Y2Nlc3NmdWwsIHRoaXMgY29tbWFuZCBzaG91bGQgaGF2ZQpkaWZmIC0tZ2l0IGEvbWFuL3NubXB2YWNtLjEuZGVmIGIvbWFuL3NubXB2YWNtLjEuZGVmCmluZGV4IDZhZTFmMDMuLjcwYjA4OWUgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wdmFjbS4xLmRlZgorKysgYi9tYW4vc25tcHZhY20uMS5kZWYKQEAgLTE1LDcgKzE1LDcgQEAKIC5CIHNubXB2YWNtCiBbQ09NTU9OIE9QVElPTlNdIEFHRU5UCiAuQiBjcmVhdGVWaWV3Ci1bLUNlXSBOQU1FIFNVQlRSRUUgTUFTSworW1wtQ2VdIE5BTUUgU1VCVFJFRSBNQVNLCiAuYnIKIC5CIHNubXB2YWNtCiBbQ09NTU9OIE9QVElPTlNdIEFHRU5UCkBAIC0xMDIsNyArMTAyLDcgQEAKIC5CIGNyZWF0ZVNlYzJHcm91cAogY29tbWFuZCAob3IgZXF1aXZhbGVudCkuCiAKLS5TUyBjcmVhdGVWaWV3IFxmUlstQ2VdIE5BTUUgU1VCVFJFRSBNQVNLXGZQCisuU1MgY3JlYXRlVmlldyBcZlJbXC1DZV0gTkFNRSBTVUJUUkVFIE1BU0tcZlAKIC5QUAogQ3JlYXRlIGFuIGVudHJ5IGluIHRoZSBTTk1QdjMgTUlCIHZpZXcgdGFibGUuCiBBIE1JQiB2aWV3IGNvbnNpc3RzIG9mIGEgZmFtaWx5IG9mIHZpZXcgc3VidHJlZXMgd2hpY2ggbWF5IGJlIGluZGl2aWR1YWxseQpAQCAtMTEwLDcgKzExMCw3IEBACiBkZWZpbmVkIGJ5IGEgY29tYmluYXRpb24gb2YgYW4gT0lEIHN1YnRyZWUgdG9nZXRoZXIgd2l0aCBhIGJpdCBzdHJpbmcgbWFzay4KIFRoZSB2aWV3IHRhYmxlIGlzIGluZGV4ZWQgYnkgdGhlIHZpZXcgbmFtZSBhbmQgc3VidHJlZSBPSUQgdmFsdWVzLgogLlBQCi1bLUNlXQorW1wtQ2VdCiAuSVAKIEFuIG9wdGlvbmFsIGZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0aGlzIHZpZXcgc3VidHJlZSBzaG91bGQgYmUgZXhjbHVkZWQKIGZyb20gdGhlIG5hbWVkIHZpZXcuCkBAIC0zMjcsNyArMzI3LDcgQEAKIC5QUAogVGhpcyBjcmVhdGVzIGEgbmV3IHNlY3VyaXR5IGdyb3VwIG5hbWVkICJST0dyb3VwIiBjb250YWluaW5nIHRoZSAocHJlLWV4aXN0aW5nKQogdXNlciAid2VzIiwgYSBuZXcgdmlldyAic3lzVmlldyIgY29udGFpbmluZyBqdXN0IHRoZSBPSUQgdHJlZSBiYXNlZCBvbgotLkkgLmlzbygxKS5vcmcoMykuZG9kKDYpLmluZXQoMSkubWdtdCgyKS5taWItMigxKS5zeXN0ZW0oMSkKKy5JIC5pc28oMSkub3JnKDMpLmRvZCg2KS5pbmV0KDEpLm1nbXQoMikubWliXC0yKDEpLnN5c3RlbSgxKQogLCBhbmQgdGhlbiBhbGxvd3MgdGhvc2UgdXNlcnMgaW4gdGhlIGdyb3VwICJST0dyb3VwIiAoaS5lLiAid2VzIikKIHJlYWQtYWNjZXNzLCBidXQgbm90IHdyaXRlLWFjY2VzcyB0byB0aGUgdmlldyAic3lzVmlldyIgKGkuZS4gdGhlIHN5c3RlbSBncm91cCkuCiAKZGlmZiAtLWdpdCBhL21hbi9zbm1wd2Fsay4xLmRlZiBiL21hbi9zbm1wd2Fsay4xLmRlZgppbmRleCA2ZTE1MjAxLi5kOWYzZDVjIDEwMDY0NAotLS0gYS9tYW4vc25tcHdhbGsuMS5kZWYKKysrIGIvbWFuL3NubXB3YWxrLjEuZGVmCkBAIC0xLDcgKzEsNyBAQAogLlwiIC0qLSBucm9mZiAtKi0KLS5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuIAotLlwiIFNlZSB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyCi0uXCIgY29weXJpZ2h0cyB0aGF0IG1heSBhcHBseToKKy5cIiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKKy5cIiB0aGUgTmV0LVNOTVAgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKy5cIiB0aGF0IG1heSBhcHBseToKIC5cIiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIC5cIiAJQ29weXJpZ2h0IDE5ODgsIDE5ODkgYnkgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKIC5cIiAKQEAgLTQzLDcgKzQzLDcgQEAKIC5QUAogSWYgbm8gT0lEIGFyZ3VtZW50IGlzIHByZXNlbnQsCiAuQiBzbm1wd2Fsawotd2lsbCBzZWFyY2ggdGhlIHN1YnRyZWUgcm9vdGVkIGF0IFNOTVB2Mi1TTUk6Om1pYi0yCit3aWxsIHNlYXJjaCB0aGUgc3VidHJlZSByb290ZWQgYXQgU05NUHYyXC1TTUk6Om1pYlwtMgogKGluY2x1ZGluZyBhbnkgTUlCIG9iamVjdCB2YWx1ZXMgZnJvbSBvdGhlciBNSUIgbW9kdWxlcywKIHRoYXQgYXJlIGRlZmluZWQgYXMgbHlpbmcgd2l0aGluIHRoaXMgc3VidHJlZSkuCiBJZiB0aGUgbmV0d29yayBlbnRpdHkgaGFzIGFuIGVycm9yIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QgcGFja2V0LCBhbgpAQCAtNTQsNyArNTQsNyBAQAogTUlCLCB0aGUgbWVzc2FnZSAiRW5kIG9mIE1JQiIgd2lsbCBiZSBkaXNwbGF5ZWQuCiAuU0ggT1BUSU9OUwogLlRQIDgKLS5CIC1DYworLkIgXC1DYwogRG8gbm90IGNoZWNrIHdoZXRoZXIgdGhlIHJldHVybmVkIE9JRHMgYXJlIGluY3JlYXNpbmcuICBTb21lIGFnZW50cwogKExhc2VySmV0cyBhcmUgYW4gZXhhbXBsZSkgcmV0dXJuIE9JRHMgb3V0IG9mIG9yZGVyLCBidXQgY2FuCiBjb21wbGV0ZSB0aGUgd2FsayBhbnl3YXkuICBPdGhlciBhZ2VudHMgcmV0dXJuIE9JRHMgdGhhdCBhcmUgb3V0IG9mCkBAIC02NCwxNSArNjQsMTUgQEAKIC5CIHNubXB3YWxrCiB0cmllcyB0byBkZXRlY3QgdGhpcyBiZWhhdmlvciBhbmQgd2FybnMgeW91IHdoZW4gaXQgaGl0cyBhbiBhZ2VudAogYWN0aW5nIGlsbGVnYWxseS4gIFVzZQotLkIgLUNjCisuQiBcLUNjCiB0byB0dXJuIG9mZiB0aGlzIGNoZWNrLgogLlRQCi0uQiAtQ0Uge09JRH0KKy5CIFwtQ0Uge09JRH0KIEVuZCB0aGUgd2FsayBhdCB0aGUgc3BlY2lmaWVkIE9JRCwgcmF0aGVyIHRoYW4gYSBzaW1wbGUgc3VidHJlZS4KIFRoaXMgY2FuIGJlIHVzZWQgdG8gd2FsayBhIHBhcnRpYWwgc3VidHJlZSwgc2VsZWN0ZWQgY29sdW1ucyBvZgogYSB0YWJsZSwgb3IgZXZlbiB0d28gb3IgbW9yZSB0YWJsZXMgd2l0aGluIGEgc2luZ2xlIGNvbW1hbmQuCiAuVFAKLS5CIC1DaQorLkIgXC1DaQogSW5jbHVkZSB0aGUgZ2l2ZW4gT0lEIGluIHRoZSBzZWFyY2ggcmFuZ2UuICBOb3JtYWxseQogLkIgc25tcHdhbGsKIHVzZXMgR0VUTkVYVCByZXF1ZXN0cyBzdGFydGluZyB3aXRoIHRoZSBPSUQgeW91IHNwZWNpZmllZCBhbmQgcmV0dXJucwpAQCAtODEsNyArODEsNyBAQAogcmVzdWx0cyBpZiBpdCBpcyBhIHZhbGlkIE9JRCBpbiB0aGUgdHJlZSBpdHNlbGYuICBUaGlzIG9wdGlvbiBsZXRzIHlvdQogZG8gdGhpcyBleHBsaWNpdGx5LgogLlRQCi0uQiAtQ0kKKy5CIFwtQ0kKIEluIGZhY3QsIHRoZSBnaXZlbiBPSUQgd2lsbCBiZSByZXRyaWV2ZWQgYXV0b21hdGljYWxseSBpZiB0aGUgbWFpbgogc3VidHJlZSB3YWxrIHJldHVybnMgbm8gdXNlYWJsZSB2YWx1ZXMuICBUaGlzIGFsbG93cyBhIHdhbGsgb2YgYQogc2luZ2xlIGluc3RhbmNlIHRvIGJlaGF2ZSBhcyBnZW5lcmFsbHkgZXhwZWN0ZWQsIGFuZCByZXR1cm4gdGhlCkBAIC04OSwxMCArODksMTAgQEAKIFRoaXMgb3B0aW9uIHR1cm5zIG9mZiB0aGlzIGZpbmFsIEdFVCByZXF1ZXN0LCBzbyBhIHdhbGsgb2YgYQogc2luZ2xlIGluc3RhbmNlIHdpbGwgcmV0dXJuIG5vdGhpbmcuCiAuVFAKLS5CIC1DcAorLkIgXC1DcAogVXBvbiBjb21wbGV0aW9uIG9mIHRoZSB3YWxrLCBwcmludCB0aGUgbnVtYmVyIG9mIHZhcmlhYmxlcyBmb3VuZC4KIC5UUAotLkIgLUN0CisuQiBcLUN0CiBVcG9uIGNvbXBsZXRpb24gb2YgdGhlIHdhbGssIHByaW50IHRoZSB0b3RhbCB3YWxsLWNsb2NrIHRpbWUgaXQgdG9vawogdG8gY29sbGVjdCB0aGUgZGF0YSAoaW4gc2Vjb25kcykuICBOb3RlIHRoYXQgdGhlIHRpbWVyIGlzIHN0YXJ0ZWQganVzdAogYmVmb3JlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgcmVxdWVzdCBzZXJpZXMgYW5kIHN0b3BwZWQganVzdCBhZnRlcgpAQCAtMTA4LDEyICsxMDgsMTIgQEAKIC5TSCBFWEFNUExFUwogLmJyCiBOb3RlIHRoYXQKLS5CIHNubXBidWxrZ2V0CisuQiBzbm1wd2FsawogUkVRVUlSRVMgIGFuIGFyZ3VtZW50IHNwZWNpZnlpbmcgdGhlIGFnZW50IHRvIHF1ZXJ5CiBhbmQgYXQgbW9zdCBvbmUgT0lEIGFyZ3VtZW50LCBhcyBkZXNjcmliZWQgdGhlcmUuCiBUaGUgY29tbWFuZDoKIC5QUAotc25tcHdhbGsgLU9zIC1jIHB1YmxpYyAtdiAxIHpldXMgc3lzdGVtCitzbm1wd2FsayBcLU9zIFwtYyBwdWJsaWMgXC12IDEgemV1cyBzeXN0ZW0KIC5QUAogd2lsbCByZXRyaWV2ZSBhbGwgb2YgdGhlIHZhcmlhYmxlcyB1bmRlciBzeXN0ZW06CiAuUFAKQEAgLTEzNSw3ICsxMzUsNyBAQAogCiBUaGUgY29tbWFuZDoKIC5QUAotc25tcHdhbGsgLU9zIC1jIHB1YmxpYyAtdiAxIC1DRSBzeXNPUlRhYmxlIHpldXMgc3lzdGVtCitzbm1wd2FsayBcLU9zIFwtYyBwdWJsaWMgXC12IDEgXC1DRSBzeXNPUlRhYmxlIHpldXMgc3lzdGVtCiAuUFAKIHdpbGwgcmV0cmlldmUgdGhlIHNjYWxhciB2YWx1ZXMsIGJ1dCBvbWl0IHRoZSBzeXNPUlRhYmxlLgogLlNIICJTRUUgQUxTTyIKZGlmZiAtLWdpdCBhL21hbi90a21pYi4xLmRlZiBiL21hbi90a21pYi4xLmRlZgppbmRleCBmYTQ1ZGNlLi5mMDI1M2I5IDEwMDY0NAotLS0gYS9tYW4vdGttaWIuMS5kZWYKKysrIGIvbWFuL3RrbWliLjEuZGVmCkBAIC0xLDQgKzEsNCBAQAotLlRIIHRrbWliIDEgIjE2IE5vdiAyMDA2IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlRIIHRrbWliICIxIiAiMTYgTm92IDIwMDYiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogdGttaWIgLSBhbiBpbnRlcmFjdGl2ZSBncmFwaGljYWwgTUlCIGJyb3dzZXIgZm9yIFNOTVAKIC5TSCBTWU5PUFNJUwpkaWZmIC0tZ2l0IGEvbWlicy9ORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dCBiL21pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNlYWNhZAotLS0gL2Rldi9udWxsCisrKyBiL21pYnMvTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQi50eHQKQEAgLTAsMCArMSw4MyBAQAorTkVULVNOTVAtUEVSSU9ESUMtTk9USUZZLU1JQiBERUZJTklUSU9OUyA6Oj0gQkVHSU4KKworLS0KKy0tIE9iamVjdHMgZm9yIHBlcmlvZGljIG5vdGlmaWNhdGlvbnMgY29udGFpbmluZyBkYXRhIHBheWxvYWRzCistLQorCitJTVBPUlRTCisgICAgbmV0U25tcE1vZHVsZUlEcywgbmV0U25tcE9iamVjdHMsIG5ldFNubXBOb3RpZmljYXRpb25zIEZST00gTkVULVNOTVAtTUlCCisKKyAgICBPQkpFQ1QtVFlQRSwgTk9USUZJQ0FUSU9OLVRZUEUsIE1PRFVMRS1JREVOVElUWSwgSW50ZWdlcjMyLCBVbnNpZ25lZDMyCisgICAgICAgIEZST00gU05NUHYyLVNNSQorCisgICAgRGlzcGxheVN0cmluZyBGUk9NIFNOTVB2Mi1UQzsKKworCituZXRTbm1wUGVyaW9kaWNOb3RpZnlNaWIgTU9EVUxFLUlERU5USVRZCisgICAgTEFTVC1VUERBVEVEICIyMDExMDQyMDAwMDBaIgorICAgIE9SR0FOSVpBVElPTiAid3d3Lm5ldC1zbm1wLm9yZyIKKyAgICBDT05UQUNULUlORk8gICAgCisJICJwb3N0YWw6ICAgV2VzIEhhcmRha2VyCisgICAgICAgICAgICAgICAgICAgIFAuTy4gQm94IDM4MgorICAgICAgICAgICAgICAgICAgICBEYXZpcyBDQSAgOTU2MTcKKworICAgICAgICAgIGVtYWlsOiAgICBuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0IgorICAgIERFU0NSSVBUSU9OCisJIk9iamVjdHMgZm9yIHBlcmlvZGljIG5vdGlmaWNhdGlvbnMgY29udGFpbmluZyBkYXRhIHBheWxvYWRzIgorICAgIFJFVklTSU9OICAgICAiMjAxMTA0MjAwMDAwWiIKKyAgICBERVNDUklQVElPTgorCSJGaXJzdCByZXZpc2lvbi4iCisgICAgOjo9IHsgbmV0U25tcE1vZHVsZUlEcyA1IH0KKworbnNQTlNjYWxhcnMgICAgICAgICAgICAgICAgIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7bmV0U25tcFBlcmlvZGljTm90aWZ5TWliIDF9Cituc1BOVGFibGVzICAgICAgICAgICAgICAgICAgT0JKRUNUIElERU5USUZJRVIgOjo9IHtuZXRTbm1wUGVyaW9kaWNOb3RpZnlNaWIgMn0KK25zUE5vdGlmeU9iamVjdHMgICAgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiA6Oj0ge25ldFNubXBQZXJpb2RpY05vdGlmeU1pYiAzfQorbnNQTm90aWZpY2F0aW9uUHJlZml4ICAgICAgIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7bmV0U25tcFBlcmlvZGljTm90aWZ5TWliIDR9Cituc1BOb3RpZmljYXRpb25zICAgICAgICAgICAgT0JKRUNUIElERU5USUZJRVIgOjo9IHtuc1BOb3RpZmljYXRpb25QcmVmaXggMH0KK25zUE5vdGlmaWNhdGlvbk9iamVjdHMgICAgICBPQkpFQ1QgSURFTlRJRklFUiA6Oj0ge25zUE5vdGlmaWNhdGlvblByZWZpeCAxfQorCistLQorLS0gTm90aWZpY2F0aW9uIERlZmluaXRpb25zCistLQorCituc05vdGlmeVBlcmlvZGljTm90aWZpY2F0aW9uICAgICAgICBOT1RJRklDQVRJT04tVFlQRQorICAgIFNUQVRVUwljdXJyZW50CisgICAgREVTQ1JJUFRJT04KKwkiRGF0YSBkZWxpdmVyeSBub3RpZmljYXRpb24gZnJvbSBhIGNvbmZpZ3VyZWQgbGlzdCBvZiBwZXJpb2RpYworCWRhdGEgc2V0cyB0byBkZWxpdmVyLiAgU2VlIHRoZSBzbm1wZC5jb25mIG1hbnVhbCBwYWdlIGZvcgorCWRldGFpbHMgYWJvdXQgY29uZmlndXJpbmcgTmV0LVNOTVAgYWdlbnRzIGZvciBzZW5kaW5nIHRoZXNlCisJbm90aWZpY2F0aW9ucyBvdXQgb24gYSByZWd1bGFyIGJhc2lzLiIKKyAgICA6Oj0geyBuc1BOb3RpZmljYXRpb25zIDEgfQorCistLQorLS0gT2JqZWN0cyB0aGF0IGNhbiBiZSBwdXQgaW50byB0aGUgbm90aWZpY2F0aW9ucworLS0KKworbnNQTlBlcmlvZGljVGltZSBPQkpFQ1QtVFlQRQorICAgICBTWU5UQVggICAgICBVbnNpZ25lZDMyCisgICAgIE1BWC1BQ0NFU1MgIGFjY2Vzc2libGUtZm9yLW5vdGlmeQorICAgICBTVEFUVVMgICAgICBjdXJyZW50CisgICAgIERFU0NSSVBUSU9OCisgICAgICAgICAiVGhlIG51bWJlciBvZiBzZWNvbmRzIGJldHdlZW4gbm90aWZpY2F0aW9ucyBjb250YWluaW5nIHRoaXMgZGF0YSBzZXQuIgorICAgICA6Oj0geyBuc1BOb3RpZnlPYmplY3RzIDEgfQorCituc1BOb3RpZnlNZXNzYWdlTnVtYmVyIE9CSkVDVC1UWVBFCisgICAgU1lOVEFYICAgICAgVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MgIGFjY2Vzc2libGUtZm9yLW5vdGlmeQorICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKKyAgICBERVNDUklQVElPTgorICAgICAgICAiSW5kaWNhdGVzIHRoaXMgaXMgdGhlIE50aCBub3RpZmljYXRpb24gaW4gYSBsb25nZXIgc2VxdWVuY2UKKyAgICAgICAgb2Ygbm90aWZpY2F0aW9ucyIKKyAgICA6Oj0geyBuc1BOb3RpZnlPYmplY3RzIDIgfQorCituc1BOb3RpZnlNYXhNZXNzYWdlTnVtYmVyIE9CSkVDVC1UWVBFCisgICAgU1lOVEFYICAgICAgVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MgIGFjY2Vzc2libGUtZm9yLW5vdGlmeQorICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKKyAgICBERVNDUklQVElPTgorICAgICAgICAiVGhlIG1heGltdW0gbnVtYmVyIG9mIG1lc3NhZ2VzIHRoaXMgbm90aWZpY2F0aW9uIHNlcXVlbmNlCisgICAgICAgIHdpbGwgY29udGFpbi4iCisgICAgOjo9IHsgbnNQTm90aWZ5T2JqZWN0cyAzIH0KKworCitFTkQKZGlmZiAtLWdpdCBhL21pYnMvVUNELVNOTVAtTUlCLnR4dCBiL21pYnMvVUNELVNOTVAtTUlCLnR4dAppbmRleCA2OWY5YWM1Li5lOGFjYzhjIDEwMDY0NAotLS0gYS9taWJzL1VDRC1TTk1QLU1JQi50eHQKKysrIGIvbWlicy9VQ0QtU05NUC1NSUIudHh0CkBAIC0zNyw3ICszNyw3IEBACiAJRlJPTSBTTk1QdjItVEM7CiAKIHVjZGF2aXMgTU9EVUxFLUlERU5USVRZCi0gICAgTEFTVC1VUERBVEVEICIyMDA5MDExOTAwMDBaIgorICAgIExBU1QtVVBEQVRFRCAiMjAxNDA3MzEwMDAwWiIKICAgICBPUkdBTklaQVRJT04gIlVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYSwgRGF2aXMiCiAgICAgQ09OVEFDVC1JTkZPICAgIAogCSJUaGlzIG1pYiBpcyBubyBsb25nZXIgYmVpbmcgbWFpbnRhaW5lZCBieSB0aGUgVW5pdmVyc2l0eSBvZgpAQCAtNTUsNiArNTUsMTMgQEAKICAgICBERVNDUklQVElPTgogCSJUaGlzIGZpbGUgZGVmaW5lcyB0aGUgcHJpdmF0ZSBVQ0QgU05NUCBNSUIgZXh0ZW5zaW9ucy4iCiAKKyAgICBSRVZJU0lPTiAgICAgIjIwMTQwNzMxMDAwMFoiCisgICAgREVTQ1JJUFRJT04KKwkiTmV3IG9iamVjdCBmb3IgbnVtYmVyIG9mIENQVXMgYXMgY291bnRlZCBieSB0aGUgYWdlbnQiCisgICAgUkVWSVNJT04JICIyMDExMDUxNDAwMDBaIgorICAgIERFU0NSSVBUSU9OCisJIk5ldyBvYmplY3RzIGZvciBtb25pdG9yaW5nIENQVSBTdGVhbCwgR3Vlc3QgYW5kIE5pY2UgdmFsdWVzIgorCiAgICAgUkVWSVNJT04JICIyMDA5MDExOTAwMDBaIgogICAgIERFU0NSSVBUSU9OCiAJIk5ldyA2NC1iaXQgb2JqZWN0cyBmb3IgbW9uaXRvcmluZyBsYXJnZSBkaXNrIHVzYWdlIgpAQCAtMTQzMiw2ICsxNDM5LDc1IEBACiAgICAgICAgICJOdW1iZXIgb2YgYmxvY2tzIHN3YXBwZWQgb3V0IgogICAgIDo6PSB7IHN5c3RlbVN0YXRzIDYzIH0KIAorc3NDcHVSYXdTdGVhbCBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWCAgICAgIENvdW50ZXIzMgorICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQorICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKKyAgICBERVNDUklQVElPTgorICAgICAgICAiVGhlIG51bWJlciBvZiAndGlja3MnICh0eXBpY2FsbHkgMS8xMDBzKSBzcGVudAorICAgICAgICAgYnkgdGhlIGh5cGVydmlzb3IgY29kZSB0byBydW4gb3RoZXIgVk1zIGV2ZW4KKyAgICAgICAgIHRob3VnaCB0aGUgQ1BVIGluIHRoZSBjdXJyZW50IFZNIGhhZCBzb21ldGhpbmcgcnVubmFibGUuCisKKyAgICAgICAgIFRoaXMgb2JqZWN0IHdpbGwgbm90IGJlIGltcGxlbWVudGVkIG9uIGhvc3RzIHdoZXJlCisgICAgICAgICB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXMgbm90IG1lYXN1cmUKKyAgICAgICAgIHRoaXMgcGFydGljdWxhciBDUFUgbWV0cmljLgorCisgICAgICAgICBPbiBhIG11bHRpLXByb2Nlc3NvciBzeXN0ZW0sIHRoZSAnc3NDcHVSYXcqJworICAgICAgICAgY291bnRlcnMgYXJlIGN1bXVsYXRpdmUgb3ZlciBhbGwgQ1BVcywgc28gdGhlaXIKKyAgICAgICAgIHN1bSB3aWxsIHR5cGljYWxseSBiZSBOKjEwMCAoZm9yIE4gcHJvY2Vzc29ycykuIgorICAgIDo6PSB7IHN5c3RlbVN0YXRzIDY0IH0KKworc3NDcHVSYXdHdWVzdCBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWCAgICAgIENvdW50ZXIzMgorICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQorICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKKyAgICBERVNDUklQVElPTgorICAgICAgICAiVGhlIG51bWJlciBvZiAndGlja3MnICh0eXBpY2FsbHkgMS8xMDBzKSBzcGVudAorICAgICAgICAgYnkgdGhlIENQVSB0byBydW4gYSB2aXJ0dWFsIENQVSAoZ3Vlc3QpLgorCisgICAgICAgICBUaGlzIG9iamVjdCB3aWxsIG5vdCBiZSBpbXBsZW1lbnRlZCBvbiBob3N0cyB3aGVyZQorICAgICAgICAgdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBkb2VzIG5vdCBtZWFzdXJlCisgICAgICAgICB0aGlzIHBhcnRpY3VsYXIgQ1BVIG1ldHJpYy4KKworICAgICAgICAgT24gYSBtdWx0aS1wcm9jZXNzb3Igc3lzdGVtLCB0aGUgJ3NzQ3B1UmF3KicKKyAgICAgICAgIGNvdW50ZXJzIGFyZSBjdW11bGF0aXZlIG92ZXIgYWxsIENQVXMsIHNvIHRoZWlyCisgICAgICAgICBzdW0gd2lsbCB0eXBpY2FsbHkgYmUgTioxMDAgKGZvciBOIHByb2Nlc3NvcnMpLiIKKyAgICA6Oj0geyBzeXN0ZW1TdGF0cyA2NSB9CisKK3NzQ3B1UmF3R3Vlc3ROaWNlIE9CSkVDVC1UWVBFCisgICAgU1lOVEFYICAgICAgQ291bnRlcjMyCisgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5CisgICAgU1RBVFVTICAgICAgY3VycmVudAorICAgIERFU0NSSVBUSU9OCisgICAgICAgICJUaGUgbnVtYmVyIG9mICd0aWNrcycgKHR5cGljYWxseSAxLzEwMHMpIHNwZW50CisgICAgICAgICBieSB0aGUgQ1BVIHRvIHJ1biBhIG5pY2VkIHZpcnR1YWwgQ1BVIChndWVzdCkuCisKKyAgICAgICAgIFRoaXMgb2JqZWN0IHdpbGwgbm90IGJlIGltcGxlbWVudGVkIG9uIGhvc3RzIHdoZXJlCisgICAgICAgICB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIGRvZXMgbm90IG1lYXN1cmUKKyAgICAgICAgIHRoaXMgcGFydGljdWxhciBDUFUgbWV0cmljLgorCisgICAgICAgICBPbiBhIG11bHRpLXByb2Nlc3NvciBzeXN0ZW0sIHRoZSAnc3NDcHVSYXcqJworICAgICAgICAgY291bnRlcnMgYXJlIGN1bXVsYXRpdmUgb3ZlciBhbGwgQ1BVcywgc28gdGhlaXIKKyAgICAgICAgIHN1bSB3aWxsIHR5cGljYWxseSBiZSBOKjEwMCAoZm9yIE4gcHJvY2Vzc29ycykuIgorICAgIDo6PSB7IHN5c3RlbVN0YXRzIDY2IH0KKworc3NDcHVOdW1DcHVzIE9CSkVDVC1UWVBFCisgICAgU1lOVEFYICAgICAgSW50ZWdlcjMyCisgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5CisgICAgU1RBVFVTICAgICAgY3VycmVudAorICAgIERFU0NSSVBUSU9OCisgICAgICAgICJUaGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMsIGFzIGNvdW50ZWQgYnkgdGhlIGFnZW50LgorICAgICAgICAgVGhpcyBvYmplY3QncyB2YWx1ZSBtYXkgYmUgdXNlZnVsIGluIHRoZSBtYW5hZ2VtZW50CisgICAgICAgICBvZiBjZXJ0YWluIG9wZXJhdGluZyBzeXN0ZW1zIHdoZXJlIG5vdGlvbnMgc3VjaCBhcworICAgICAgICAgbG9hZCBhdmVyYWdlIGRvIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUgbnVtYmVyIG9mCisgICAgICAgICBwcm9jZXNzb3JzIGluIHRoZSBzeXN0ZW0uCisKKyAgICAgICAgIEZvciBvdGhlciBvYmplY3RzIGluIHRoZSBzeXN0ZW1TdGF0cyBncm91cCB3aG9zZQorICAgICAgICAgZGVzY3JpcHRpb25zIHJlZmVyIHRvICdOIHByb2Nlc3NvcnMnLCB0aGlzIG9iamVjdCdzCisgICAgICAgICB2YWx1ZSBpcyBOLiIKKyAgICA6Oj0geyBzeXN0ZW1TdGF0cyA2NyB9CisKKwogLS0gcG9zc2libHkgdXNlZCBpbiB0aGUgZnV0dXJlOgogLS0KIC0tIHNzRXJyb3JGbGFnIE9CSkVDVC1UWVBFCmRpZmYgLS1naXQgYS9wZXJsL0FTTi9BU04ucG0gYi9wZXJsL0FTTi9BU04ucG0KaW5kZXggNmYwNjAzZi4uMDA4ZTk3YiAxMDA2NDQKLS0tIGEvcGVybC9BU04vQVNOLnBtCisrKyBiL3BlcmwvQVNOL0FTTi5wbQpAQCAtNjYsNyArNjYsNyBAQAogCUFTTl9VTlNJR05FRAogCUFTTl9VTlNJR05FRDY0CiApOwotJFZFUlNJT04gPSAnNS4wNjAyJzsKKyRWRVJTSU9OID0gJzUuMDcwMyc7CiAKIHN1YiBBVVRPTE9BRCB7CiAgICAgIyBUaGlzIEFVVE9MT0FEIGlzIHVzZWQgdG8gJ2F1dG9sb2FkJyBjb25zdGFudHMgZnJvbSB0aGUgY29uc3RhbnQoKQpkaWZmIC0tZ2l0IGEvcGVybC9BU04vbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmggYi9wZXJsL0FTTi9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvcGVybC9BU04vbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKZGlmZiAtLWdpdCBhL3BlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0gYi9wZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtCmluZGV4IDQ0Yjg1YWUuLjY3Yzc5MWYgMTAwNjQ0Ci0tLSBhL3BlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0KKysrIGIvcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbQpAQCAtNiw3ICs2LDcgQEAKICMjICAgc2NhbGFyIHNldHM/CiAjIyAgIG11bHRpLWhvc3RzCiAKLSRBbnlEYXRhOjpTdG9yYWdlOjpWRVJTSU9OID0gJzUuMDYwMic7CiskQW55RGF0YTo6U3RvcmFnZTo6VkVSU0lPTiA9ICc1LjA3MDMnOwogdXNlIHN0cmljdDsKIHVzZSB3YXJuaW5nczsKIApkaWZmIC0tZ2l0IGEvcGVybC9NYWtlZmlsZS5QTCBiL3BlcmwvTWFrZWZpbGUuUEwKaW5kZXggOTJmNWFkMi4uMzFmZGM0MCAxMDA2NDQKLS0tIGEvcGVybC9NYWtlZmlsZS5QTAorKysgYi9wZXJsL01ha2VmaWxlLlBMCkBAIC0xMSw3ICsxMSw3IEBACiAgICAgJG5zY29uZmlnPSJuZXQtc25tcC1jb25maWciOyAjIGluIHBhdGggYnkgZGVmYXVsdAogICAgIG15ICVQYXJhbXMgPSAoCiAJCSAgJ05BTUUnID0+ICdCdW5kbGU6Ok5ldFNOTVAnLAotCQkgICdESVInID0+IFtxdyhkZWZhdWx0X3N0b3JlIEFTTiBPSUQgYWdlbnQgU05NUCBUcmFwUmVjZWl2ZXIpXQorCQkgICdESVInID0+IFtxdyhkZWZhdWx0X3N0b3JlIEFTTiBPSUQgYWdlbnQgU05NUCBUcmFwUmVjZWl2ZXIpXSwKIAkJICApOwogCiAgICAgIyBib2d1cywgYnV0IHRoZXNlIG9wdGlvbnMgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIGxvd2VyIGxldmVscwpkaWZmIC0tZ2l0IGEvcGVybC9PSUQvT0lELnBtIGIvcGVybC9PSUQvT0lELnBtCmluZGV4IGRjM2E0MjcuLmI3NWJmMWQgMTAwNjQ0Ci0tLSBhL3BlcmwvT0lEL09JRC5wbQorKysgYi9wZXJsL09JRC9PSUQucG0KQEAgLTkyLDcgKzkyLDcgQEAKIAlzbm1wX29pZF9jb21wYXJlCiAgICAgICAgIGNvbXBhcmUKICk7Ci0kVkVSU0lPTiA9ICc1LjA2MDInOworJFZFUlNJT04gPSAnNS4wNzAzJzsKIAogc3ViIG5ldyB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKZGlmZiAtLWdpdCBhL3BlcmwvT0lEL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oIGIvcGVybC9PSUQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmI0Y2NkYgotLS0gL2Rldi9udWxsCisrKyBiL3BlcmwvT0lEL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCkBAIC0wLDAgKzEsNiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfb2JqaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbnByaW50X3ZhbHVlKQorCmRpZmYgLS1naXQgYS9wZXJsL1NOTVAvU05NUC5wbSBiL3BlcmwvU05NUC9TTk1QLnBtCmluZGV4IGNhNjIzMzkuLmEwNWNkMzggMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC9TTk1QLnBtCisrKyBiL3BlcmwvU05NUC9TTk1QLnBtCkBAIC03LDcgKzcsNyBAQAogIyAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFBlcmwgaXRzZWxmLgogCiBwYWNrYWdlIFNOTVA7Ci0kVkVSU0lPTiA9ICc1LjA2MDInOyAgICMgY3VycmVudCByZWxlYXNlIHZlcnNpb24gbnVtYmVyCiskVkVSU0lPTiA9ICc1LjA3MDMnOyAgICMgY3VycmVudCByZWxlYXNlIHZlcnNpb24gbnVtYmVyCiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CmRpZmYgLS1naXQgYS9wZXJsL1NOTVAvU05NUC54cyBiL3BlcmwvU05NUC9TTk1QLnhzCmluZGV4IGNlMGZiNWMuLjJhNzM0ZTggMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC9TTk1QLnhzCisrKyBiL3BlcmwvU05NUC9TTk1QLnhzCkBAIC0yNDQsNyArMjQ0LDggQEAKIAogICAgICAgICBTT0NLX1NUQVJUVVA7CiAKLSAgICAgICAgc25tcF9zZXRfcXVpY2tfcHJpbnQoMSk7CisgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9RVUlDS19QUklOVCwgMSk7CiAgICAgICAgIGluaXRfc25tcChhcHBuYW1lKTsKICAgICAKICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX0RPTlRfQlJFQUtET1dOX09JRFMsIDEpOwpAQCAtMzA3Myw2ICszMDc0LDcgQEAKICAgICAgICAgICAgaW50IHVzZV9lbnVtczsKICAgICAgICAgICAgc3RydWN0IGVudW1fbGlzdCAqZXA7CiAgICAgICAgICAgIGludCBiZXN0X2d1ZXNzOwkgICAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKICAgICAgICAgICAgTmV3ICgwLCBvaWRfYXJyLCBNQVhfT0lEX0xFTiwgb2lkKTsKIApAQCAtMzE5NCw2ICszMTk2LDkgQEAKICAgICAgICAgICAgICAgLyogQlVHISEhIG5lZWQgdG8gcmV0dXJuIGFuIGVycm9yIHZhbHVlICovCiAgICAgICAgICAgICAgIFhQVVNIcygmc3ZfdW5kZWYpOyAvKiBubyBtZW0gb3IgYmFkIGFyZ3MgKi8KICAgICAgICAgICAgfQorI2Vsc2UgIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgICAgICAgICB3YXJuKCJlcnJvcjogTmV0LVNOTVAgd2FzIGNvbXBpbGVkIHVzaW5nIC0tZW5hYmxlLXJlYWQtb25seSwgc2V0KCkgY2FuIG5vdCBiZSB1c2VkLiIpOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogZG9uZToKICAgICAgICAgICAgU2FmZWZyZWUob2lkX2Fycik7CiAgICAgICAgIH0KQEAgLTQ0NDYsNyArNDQ1MSw3IEBACiAJICAgCiAgICAgICAgICAgIE5ldyAoMCwgb2lkX2FyciwgTUFYX09JRF9MRU4sIG9pZCk7CiAKLSAgICAgICAgICAgaWYgKG9pZF9hcnIgJiYgU3ZST0soc2Vzc19yZWYpICYmIFN2Uk9LKHZhcmxpc3RfcmVmKSkgeworICAgICAgICAgICBpZiAob2lkX2FyciAmJiBTdlJPSyhzZXNzX3JlZikpIHsKIAogICAgICAgICAgICAgICBzZXNzX3B0cl9zdiA9IGh2X2ZldGNoKChIViopU3ZSVihzZXNzX3JlZiksICJTZXNzUHRyIiwgNywgMSk7CiAJICAgICAgc3MgPSAoU25tcFNlc3Npb24gKilTdklWKChTViopU3ZSVigqc2Vzc19wdHJfc3YpKTsKQEAgLTQ0NjAsOCArNDQ2NSwxMyBAQAogCSAgICAgIAogICAgICAgICAgICAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUoU05NUF9NU0dfVFJBUDIpOwogCi0gICAgICAgICAgICAgIHZhcmxpc3QgPSAoQVYqKSBTdlJWKHZhcmxpc3RfcmVmKTsKLSAgICAgICAgICAgICAgdmFybGlzdF9sZW4gPSBhdl9sZW4odmFybGlzdCk7CisgICAgICAgICAgICAgIGlmIChTdlJPSyh2YXJsaXN0X3JlZikpIHsKKyAgICAgICAgICAgICAgICAgIHZhcmxpc3QgPSAoQVYqKSBTdlJWKHZhcmxpc3RfcmVmKTsKKyAgICAgICAgICAgICAgICAgIHZhcmxpc3RfbGVuID0gYXZfbGVuKHZhcmxpc3QpOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgdmFybGlzdCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICB2YXJsaXN0X2xlbiA9IC0xOworICAgICAgICAgICAgICB9CiAJICAgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICAgICAgICAgICAgcmVzID0gX19hZGRfdmFyX3ZhbF9zdHIocGR1LCBzeXNVcFRpbWUsIFNZU19VUFRJTUVfT0lEX0xFTiwKIAkJCQl1cHRpbWUsIHN0cmxlbih1cHRpbWUpLCBUWVBFX1RJTUVUSUNLUyk7CkBAIC00NzQ5LDcgKzQ3NTksOCBAQAogCWludAkJZmxhZwogCUNPREU6CiAJewotCSAgIHNubXBfc2V0X2R1bXBfcGFja2V0KGZsYWcpOworICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9EVU1QX1BBQ0tFVCwgZmxhZyk7CiAJfQogCiAKQEAgLTQ4OTcsNyArNDkwOCw4IEBACiAJaW50CXZhbAogCUNPREU6CiAJewotCSAgIHNubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zKHZhbCk7CisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NBVkVfTUlCX0RFU0NSUywgdmFsKTsKIAl9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3BlcmwvU05NUC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCBiL3BlcmwvU05NUC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGM2NDJjCi0tLSAvZGV2L251bGwKKysrIGIvcGVybC9TTk1QL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCkBAIC0wLDAgKzEsOCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNucHJpbnRfb2JqaWQpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbnByaW50X3ZhbHVlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZmluZF9tb2R1bGUpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShnZXRfdGNfZGVzY3JpcHRpb24pCisKZGlmZiAtLWdpdCBhL3BlcmwvU05NUC90L2FzeW5jLnQgYi9wZXJsL1NOTVAvdC9hc3luYy50CmluZGV4IGIxYzg2YzYuLmYzZmIzOGQgMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC90L2FzeW5jLnQKKysrIGIvcGVybC9TTk1QL3QvYXN5bmMudApAQCAtMTcsNyArMTcsNyBAQAogdXNlIHZhcnMgcXcoJGFnZW50X3BvcnQgJGNvbW0gJGFnZW50X2hvc3QpOwogCiBpZiAoJF5PID1+IC93aW4zMi9pKSB7Ci0gIHdhcm4gIldpbjMyIGRldGVjdGVkIC0gc2tpcHBpbmcgYXN5bmMgY2FsbHNcbiI7CisgIHdhcm4gIldpbjMyL1dpbjY0IGRldGVjdGVkIC0gc2tpcHBpbmcgYXN5bmMgY2FsbHNcbiI7CiAgIGV4aXQ7CiB9CiAKZGlmZiAtLWdpdCBhL3BlcmwvU05NUC90L2J1bGt3YWxrLnQgYi9wZXJsL1NOTVAvdC9idWxrd2Fsay50CmluZGV4IDYwZjEwYjUuLjJkMTNlN2IgMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC90L2J1bGt3YWxrLnQKKysrIGIvcGVybC9TTk1QL3QvYnVsa3dhbGsudApAQCAtMzI2LDcgKzMyNiw3IEBACiAJCQkgICAgWydpZlNwZWVkJ10sIFsnaWZEZXNjciddKTsJICMgUmVwZWF0ZWQgdmFyaWFibGVzLgogCiBpZiAoJF5PID1+IC93aW4zMi9pKSB7Ci0gIHdhcm4gIldpbjMyIGRldGVjdGVkIC0gc2tpcHBpbmcgYXN5bmMgY2FsbHNcbiI7CisgIHdhcm4gIldpbjMyL1dpbjY0IGRldGVjdGVkIC0gc2tpcHBpbmcgYXN5bmMgY2FsbHNcbiI7CiB9CiBlbHNlIHsKICAgQGxpc3QgPSAkczEtPmJ1bGt3YWxrKDIsIDE2LCAkdmFycywgWyBcJmFzeW5jX2NiMSwgJHZhcnMgXSApOwpkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL3Qvbm90aWZ5LnQgYi9wZXJsL1NOTVAvdC9ub3RpZnkudAppbmRleCA0MzQyMzdmLi43MjYwMGZhIDEwMDY0NAotLS0gYS9wZXJsL1NOTVAvdC9ub3RpZnkudAorKysgYi9wZXJsL1NOTVAvdC9ub3RpZnkudApAQCAtMTAsNyArMTAsNyBAQAogICAgICRFTlZ7J01JQkRJUlMnfSA9ICcrJyAuIGFic19wYXRoKCIuLi8uLi9taWJzIik7CiB9CiB1c2UgVGVzdDsKLUJFR0lOIHsgJG4gPSAxMDsgcGxhbiB0ZXN0cyA9PiAkbiB9CitCRUdJTiB7ICRuID0gMTE7IHBsYW4gdGVzdHMgPT4gJG4gfQogdXNlIFNOTVA7CiB1c2UgdmFycyBxdygkYWdlbnRfcG9ydCAkY29tbSAkY29tbTIgJHRyYXBfcG9ydCAkYWdlbnRfaG9zdCAkc2VjX25hbWUgJHByaXZfcGFzcyAkYXV0aF9wYXNzICRiYWRfbmFtZSk7CiByZXF1aXJlICd0L3N0YXJ0YWdlbnQucGwnOwpAQCAtMjEsMjAgKzIxLDIwIEBACiBteSAkZ2VuZXJpYyA9ICdzcGVjaWZpYyc7CiAKICMgICAgICAgICAgICAgICAgICAgICAgICAgVjEgdHJhcCB0ZXN0aW5nCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAxICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAxICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIEZpcmUgdXAgYSB0cmFwIHNlc3Npb24uCiBteSAkczEgPQogICAgIG5ldyBTTk1QOjpTZXNzaW9uIChEZXN0SG9zdD0+JGFnZW50X2hvc3QsVmVyc2lvbj0+MSxDb21tdW5pdHk9PiRjb21tLFJlbW90ZVBvcnQ9PiR0cmFwX3BvcnQpOwogb2soZGVmaW5lZCgkczEpKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDIgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAyICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHRlc3QgdjEgdHJhcAogaWYgKGRlZmluZWQoJHMxKSkgewogICAkcmVzID0gJHMxLT50cmFwKGVudGVycHJpc2UgPT4gJGVudGVycHJpc2UsIGFnZW50PT4kYWdlbnRfaG9zdCwgZ2VuZXJpYz0+JGdlbmVyaWMsW1tzeXNDb250YWN0LCAwLCAncm9vdEBsb2NhbGhvc3QnXSwgW3N5c0xvY2F0aW9uLCAwLCAnaGVyZSddXSApOwogfQogb2soJHJlcyA9fiAvXjAgYnV0IHRydWUvKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIDMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgMyAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyB0ZXN0IHdpdGggd3JvbmcgdmFyYmluZAogdW5kZWYgJHJlczsKIGlmIChkZWZpbmVkKCRzMSkpIHsKQEAgLTQ1LDEyICs0NSwxMiBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgICAgICAgICAgICAgICAgICAgICAgVjIgdGVzdGluZwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgNCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDQgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgRmlyZSB1cCBhIHYyIHRyYXAgc2Vzc2lvbi4KIG15ICRzMiA9CiAgICAgbmV3IFNOTVA6OlNlc3Npb24gKFZlcnNpb249PjIsIERlc3RIb3N0PT4kYWdlbnRfaG9zdCxDb21tdW5pdHk9PiRjb21tMixSZW1vdGVQb3J0PT4kdHJhcF9wb3J0KTsKIG9rKGRlZmluZWQoJHMyKSk7Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA1ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgNSAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyB0ZXN0IHYyIHRyYXAKIHVuZGVmICRyZXM7CiBpZiAoZGVmaW5lZCgkczIpKSB7CkBAIC01OCw3ICs1OCw3IEBACiAgICNwcmludCgicmVzIGlzICRyZXNcbiIpOwogfQogb2soJHJlcyA9fiAvXjAgYnV0IHRydWUvKTsKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA2ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA2ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIG5vIHRyYXBvaWQgYW5kIHVwdGltZSBnaXZlbi4gU2hvdWxkIHRha2UgZGVmYXVsdHMuLi4KIG15ICRyZXQ7CiBpZiAoZGVmaW5lZCgkczIpKSB7CkBAIC02NiwyNyArNjYsMzUgQEAKICAgI3ByaW50KCJyZXMgaXMgJHJldFxuIik7CiB9CiBvayhkZWZpbmVkKCRyZXQpKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgNyAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBubyB2YXJiaW5kIGxpc3QgZ2l2ZW4uCit1bmRlZiAkcmVzOworaWYgKGRlZmluZWQoJHMyKSkgeworICAkcmVzID0gJHMyLT50cmFwKHRyYXBvaWQ9Pidjb2xkU3RhcnQnKTsKKyAgI3ByaW50KCJyZXMgaXMgJHJlc1xuIik7Cit9CitvayhkZWZpbmVkKCRyZXMpICYmICRyZXMgPX4gL14wIGJ1dCB0cnVlLyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjICAgICAgICAgICAgICAgICAgICAgdjMgdGVzdGluZwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICA3ICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDggICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgRmlyZSB1cCBhIHYzIHRyYXAgc2Vzc2lvbi4KIG15ICRzMyA9IG5ldyBTTk1QOjpTZXNzaW9uKFZlcnNpb249PjMsIERlc3RIb3N0PT4gJGFnZW50X2hvc3QsIFJlbW90ZVBvcnQ9PiR0cmFwX3BvcnQsIFNlY05hbWUgPT4gJHNlY19uYW1lKTsKIG9rKGRlZmluZWQoJHMzKSk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgOCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgIDkgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIGlmIChkZWZpbmVkKCRzMykpIHsKICAgJHJlcyA9ICRzMy0+aW5mb3JtKHVwdGltZT0+MTExLCB0cmFwb2lkPT4nY29sZFN0YXJ0JywgW1tzeXNDb250YWN0LCAwLCAncm9vdEBsb2NhbGhvc3QnXSwgW3N5c0xvY2F0aW9uLCAwLCAnaGVyZSddXSApOwogfQogb2soJHJlcyA9fiAvXjAgYnV0IHRydWUvKTsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMgOSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAxMCAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBGaXJlIHVwIGEgdjMgdHJhcCBzZXNzaW9uLgogJHMzID0gbmV3IFNOTVA6OlNlc3Npb24oVmVyc2lvbj0+MywgRGVzdEhvc3Q9PiAkYWdlbnRfaG9zdCwgUmVtb3RlUG9ydD0+JHRyYXBfcG9ydCwgU2VjTmFtZSA9PiAkc2VjX25hbWUsIFNlY0xldmVsID0+IGF1dGhQcml2LCBBdXRoUGFzcyA9PiAkYXV0aF9wYXNzLCBQcml2UGFzcyA9PiAkcHJpdl9wYXNzKTsKIG9rKGRlZmluZWQoJHMzKSk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgMTAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIDExICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiB1bmRlZiAkcmVzOwogaWYgKGRlZmluZWQoJHMzKSkgewogICAgICRyZXMgPSAkczMtPmluZm9ybSh1cHRpbWU9PjExMSwgdHJhcG9pZD0+J2NvbGRTdGFydCcsIFtbc3lzQ29udGFjdCwgMCwgJ3Jvb3RAbG9jYWxob3N0J10sIFtzeXNMb2NhdGlvbiwgMCwgJ2hlcmUnXV0gKTsKZGlmZiAtLWdpdCBhL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSBiL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbQppbmRleCBiZDkwZTNjLi44NWEwNDFhIDEwMDY0NAotLS0gYS9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0KKysrIGIvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtCkBAIC00Nyw3ICs0Nyw3IEBACiAJTkVUU05NUFRSQVBEX1BSRV9IQU5ETEVSCiApOwogCi0kVkVSU0lPTiA9ICc1LjA2MDInOworJFZFUlNJT04gPSAnNS4wNzAzJzsKIAogIyBzdWIgbmV3IHsKICMgICAgIG15ICR0eXBlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9wZXJsL1RyYXBSZWNlaXZlci9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCBiL3BlcmwvVHJhcFJlY2VpdmVyL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMzMxZTMKLS0tIC9kZXYvbnVsbAorKysgYi9wZXJsL1RyYXBSZWNlaXZlci9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaApAQCAtMCwwICsxLDYgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShuZXRzbm1wX2FkZF9kZWZhdWx0X3RyYXBoYW5kbGVyKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUobWVtb3J5X2ZyZWUpCisKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtIGIvcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0KaW5kZXggMDY1NDFjZC4uMDNmNTRkOSAxMDA2NDQKLS0tIGEvcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0KKysrIGIvcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0KQEAgLTI2LDcgKzI2LDcgQEAKIEBJU0EgICAgICAgPSBxdyhFeHBvcnRlciBnZXRMZWFmKTsKIEBFWFBPUlQgICAgPSBxdyhyZWdpc3RlckFnZW50IGdldE9pZEVsZW1lbnQgc2V0T2lkRWxlbWVudCk7CiBARVhQT1JUX09LID0gcXcoKTsKLSRWRVJTSU9OID0gJzUuMDYwMic7CiskVkVSU0lPTiA9ICc1LjA3MDMnOwogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwpkaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9hZ2VudC5wbSBiL3BlcmwvYWdlbnQvYWdlbnQucG0KaW5kZXggMWUyZGFkNS4uNDY1MDBmZiAxMDA2NDQKLS0tIGEvcGVybC9hZ2VudC9hZ2VudC5wbQorKysgYi9wZXJsL2FnZW50L2FnZW50LnBtCkBAIC04Nyw3ICs4Nyw3IEBACiAJU05NUF9FUlJfQVVUSE9SSVpBVElPTkVSUk9SCiAJU05NUF9FUlJfTk9UV1JJVEFCTEUKICk7Ci0kVkVSU0lPTiA9ICc1LjA2MDInOworJFZFUlNJT04gPSAnNS4wNzAzJzsKIAogc3ViIEFVVE9MT0FEIHsKICAgICAjIFRoaXMgQVVUT0xPQUQgaXMgdXNlZCB0byAnYXV0b2xvYWQnIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudCgpCkBAIC0xOTksNiArMTk5LDEyIEBACiAgICAgX19hZ2VudF9jaGVja19hbmRfcHJvY2VzcygkYmxvY2tpbmcgfHwgMCk7CiB9CiAKK3N1YiB1cHRpbWUgeworICAgIG15ICRzZWxmID0gc2hpZnQ7CisgICAgJHNlbGYtPm1heWJlX2luaXRfbGliKCk7CisgICAgcmV0dXJuIF91cHRpbWUoKTsKK30KKwogYm9vdHN0cmFwIE5ldFNOTVA6OmFnZW50ICRWRVJTSU9OOwogCiAjIFByZWxvYWRlZCBtZXRob2RzIGdvIGhlcmUuCmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2FnZW50LnhzIGIvcGVybC9hZ2VudC9hZ2VudC54cwppbmRleCA5OWU4ZWNiLi5jN2I1ZDlhIDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L2FnZW50LnhzCisrKyBiL3BlcmwvYWdlbnQvYWdlbnQueHMKQEAgLTYwLDEyICs2MCwxNCBAQAogc3RhdGljIGludCBjb25zdGFudF9NT0RFX1NFVF9SKGRvdWJsZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGludCBsZW4pCiB7CiAgICAgc3dpdGNoIChsZW4gPj0gMTYgPyBuYW1lWzE2XSA6IC0xKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgIGNhc2UgJzEnOgogCVRFU1RfQ09OU1RBTlQodmFsdWUsIG5hbWUsIE1PREVfU0VUX1JFU0VSVkUxKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSAnMic6CiAJVEVTVF9DT05TVEFOVCh2YWx1ZSwgbmFtZSwgTU9ERV9TRVRfUkVTRVJWRTIpOwogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICB9CiAgICAgcmV0dXJuIEVJTlZBTDsKIH0KQEAgLTEyMSw2ICsxMjMsNyBAQAogICAgICAgICByZXR1cm4gRUlOVkFMOwogCiAgICAgc3dpdGNoIChsZW4gPj0gOSA/IG5hbWVbOV0gOiAtMSkgeworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlICdBJzoKICAgICAgICAgVEVTVF9DT05TVEFOVCh2YWx1ZSwgbmFtZSwgTU9ERV9TRVRfQUNUSU9OKTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzMsMTEgKzEzNiwxMiBAQAogICAgIGNhc2UgJ0YnOgogICAgICAgICBURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBNT0RFX1NFVF9GUkVFKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAnUic6Ci0gICAgICAgIHJldHVybiBjb25zdGFudF9NT0RFX1NFVF9SKHZhbHVlLCBuYW1lLCBsZW4pOwogICAgIGNhc2UgJ1UnOgogICAgICAgICBURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBNT0RFX1NFVF9VTkRPKTsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgY2FzZSAnUic6CisgICAgICAgIHJldHVybiBjb25zdGFudF9NT0RFX1NFVF9SKHZhbHVlLCBuYW1lLCBsZW4pOwogICAgIH0KICAgICByZXR1cm4gRUlOVkFMOwogfQpAQCAtMjM0LDYgKzIzOCwxMyBAQAogICAgIE9VVFBVVDoKIAlSRVRWQUwKIAoraW50CitfdXB0aW1lKCkKKyAgICBDT0RFOgorICAgICAgICBSRVRWQUwgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKKyAgICBPVVRQVVQ6CisJUkVUVkFMCisKIHZvaWQKIGluaXRfbWliKCkKICAgICBDT0RFOgpkaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0gYi9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbQppbmRleCAzOWI4YTE0Li5hODgxMmViIDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbQorKysgYi9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbQpAQCAtOTYsNyArOTYsNyBAQAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfTUFYX0dFVEJVTEtSRVBFQVRTCiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9NQVhfR0VUQlVMS1JFU1BPTlNFUwogKTsKLSRWRVJTSU9OID0gJzUuMDYwMic7CiskVkVSU0lPTiA9ICc1LjA3MDMnOwogCiBzdWIgQVVUT0xPQUQgewogICAgICMgVGhpcyBBVVRPTE9BRCBpcyB1c2VkIHRvICdhdXRvbG9hZCcgY29uc3RhbnRzIGZyb20gdGhlIGNvbnN0YW50KCkKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmggYi9wZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmMjYzMGUKLS0tIC9kZXYvbnVsbAorKysgYi9wZXJsL2FnZW50L25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCkBAIC0wLDAgKzEsNiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoc25tcF9lbmFibGVfc3RkZXJybG9nKQorCmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L3Rlc3QucGwgYi9wZXJsL2FnZW50L3Rlc3QucGwKaW5kZXggYTdhYzhmOS4uODhjYmE1NiAxMDA2NDQKLS0tIGEvcGVybC9hZ2VudC90ZXN0LnBsCisrKyBiL3BlcmwvYWdlbnQvdGVzdC5wbApAQCAtOSw3ICs5LDcgQEAKIEJFR0lOIHsgJHwgPSAxOyAKICAgICAgICAgJEVOVnsnU05NUENPTkZQQVRIJ30gPSAnbm9wYXRoJzsKICAgICAgICAgJEVOVnsnTUlCUyd9ID0gJyc7Ci0gICAgICAgIHByaW50ICIxLi41XG4iOworICAgICAgICBwcmludCAiMS4uNlxuIjsKICAgICAgIH0KIEVORCB7cHJpbnQgIm5vdCBvayAxXG4iIHVubGVzcyAkbG9hZGVkO30KIHVzZSBOZXRTTk1QOjphZ2VudCAoJzphbGwnKTsKQEAgLTc2LDYgKzc2LDEyIEBACiBwcmludCBpdCgkcmVnaXRlbSwgNCk7CiAjcHJpbnQgU1RERVJSICRyZWdpdGVtLCI6IixyZWYoJHJlZ2l0ZW0pLCJcbiI7CiBwcmludCBpdChyZWYoJHJlZ2l0ZW0pIGVxICJOZXRTTk1QOjphZ2VudDo6bmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiIsIDUpOworCitteSAkdXB0aW1lMSA9ICRhZ2VudC0+dXB0aW1lKCk7CitteSAkdXB0aW1lMiA9ICRhZ2VudC0+dXB0aW1lKDY2Nik7CitteSAkdXB0aW1lMyA9ICRhZ2VudC0+dXB0aW1lKDU1NSwgNDQ0KTsKK3ByaW50IGl0KCR1cHRpbWUxIDw9ICR1cHRpbWUyICYmICR1cHRpbWUyIDw9ICR1cHRpbWUzLCA2KTsKKwogZXhpdDsKIAogd2hpbGUoMSkgewpkaWZmIC0tZ2l0IGEvcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0gYi9wZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbQppbmRleCBjY2FlNjA2Li5iODk4NTAxIDEwMDY0NAotLS0gYS9wZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbQorKysgYi9wZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbQpAQCAtMjAwLDcgKzIwMCw3IEBACiAJCQkJICAgTkVUU05NUF9EU19MSUJfS1NNX1NFUlZJQ0VfTkFNRQogCQkJCSAgIE5FVFNOTVBfRFNfTElCX1NCU01fTE9DQUxfUFdECiApOwotJFZFUlNJT04gPSAnNS4wNjAyJzsKKyRWRVJTSU9OID0gJzUuMDcwMyc7CiAKIHN1YiBBVVRPTE9BRCB7CiAgICAgIyBUaGlzIEFVVE9MT0FEIGlzIHVzZWQgdG8gJ2F1dG9sb2FkJyBjb25zdGFudHMgZnJvbSB0aGUgY29uc3RhbnQoKQpkaWZmIC0tZ2l0IGEvcGVybC9kZWZhdWx0X3N0b3JlL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oIGIvcGVybC9kZWZhdWx0X3N0b3JlL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2OWRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9wZXJsL2RlZmF1bHRfc3RvcmUvbmV0c25tcC1mZWF0dXJlLWRlZmluaXRpb25zLmgKZGlmZiAtLWdpdCBhL3B5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMgYi9weXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jCmluZGV4IDlmNzI2ZjUuLjhiODgwNWQgMTAwNjQ0Ci0tLSBhL3B5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMKKysrIGIvcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYwpAQCAtMTM2MCwxMiArMTM2MCwxMiBAQAogCiAgIGlmIChvdXJfaWRlbnRpdHkgJiYgb3VyX2lkZW50aXR5WzBdICE9ICdcMCcpCiAgICAgICBDT05UQUlORVJfSU5TRVJUKHNlc3Npb24udHJhbnNwb3J0X2NvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2NyZWF0ZV9jb25maWcoIm91cl9pZGVudGl0eSIsCisgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2NyZWF0ZV9jb25maWcoImxvY2FsQ2VydCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3VyX2lkZW50aXR5KSk7CiAKICAgaWYgKHRoZWlyX2lkZW50aXR5ICYmIHRoZWlyX2lkZW50aXR5WzBdICE9ICdcMCcpCiAgICAgICBDT05UQUlORVJfSU5TRVJUKHNlc3Npb24udHJhbnNwb3J0X2NvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2NyZWF0ZV9jb25maWcoInRoZWlyX2lkZW50aXR5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfY3JlYXRlX2NvbmZpZygicGVlckNlcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZWlyX2lkZW50aXR5KSk7CiAKICAgaWYgKHRoZWlyX2hvc3RuYW1lICYmIHRoZWlyX2hvc3RuYW1lWzBdICE9ICdcMCcpCmRpZmYgLS1naXQgYS9weXRob24vbmV0c25tcC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaCBiL3B5dGhvbi9uZXRzbm1wL25ldHNubXAtZmVhdHVyZS1kZWZpbml0aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4OTQxNmEKLS0tIC9kZXYvbnVsbAorKysgYi9weXRob24vbmV0c25tcC9uZXRzbm1wLWZlYXR1cmUtZGVmaW5pdGlvbnMuaApAQCAtMCwwICsxLDYgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzbnByaW50X3ZhbHVlKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZW5hYmxlX3N0ZGVycmxvZykKKwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQgYi9zbm1wbGliL01ha2VmaWxlLmRlcGVuZAppbmRleCAyMGZjNjUzLi42MmI1MTExIDEwMDY0NAotLS0gYS9zbm1wbGliL01ha2VmaWxlLmRlcGVuZAorKysgYi9zbm1wbGliL01ha2VmaWxlLmRlcGVuZApAQCAtNSw4ICs1LDcgQEAKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaApAQCAtMjAsMTEgKzE5LDggQEAKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zMyw2ICsyOSw3IEBACiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTU5LDYgKzU2LDcgQEAKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtNzcsMTEgKzc1LDggQEAKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMTUsMTEgKzExMCw1NyBAQAogLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY2VydF91dGlsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2NlcnRfdXRpbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jZXJ0X3V0aWwuaAorLi9jZXJ0X3V0aWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX29wZW5zc2wuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC0xMzksMTEgKzE4MCw4IEBACiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTUzLDYgKzE5MSw3IEBACiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTc2LDcgKzIxNSw2IEBACiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKQEAgLTE4OCw2ICsyMjYsNyBAQAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTIwOCwxMSArMjQ3LDggQEAKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yMjIsMTEgKzI1OCwxMSBAQAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY2xvc2VkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9jbG9zZWRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2Nsb3NlZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vY211X2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTI0NywxMSArMjgzLDggQEAKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yNjEsNiArMjk0LDcgQEAKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yOTUsOCArMzI5LDEwIEBACiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaApAQCAtMzE1LDExICszNTEsOCBAQAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM2Myw5ICszOTYsMTEgQEAKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX251bGwuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTM4NSwxMSArNDIwLDggQEAKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC00MzMsOCArNDY1LDEwIEBACiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC00NTQsMTEgKzQ4OCw4IEBACiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNTAyLDggKzUzMywxMCBAQAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTUyMywxMSArNTU2LDggQEAKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC01NzEsOSArNjAxLDExIEBACiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9udWxsLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaApAQCAtNTkyLDExICs2MjQsOCBAQAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTY0MCw4ICs2NjksMTAgQEAKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtNjYwLDExICs2OTEsOCBAQAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTcwMCw2ICs3MjgsNyBAQAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC03MTgsMTEgKzc0Nyw4IEBACiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtNzY2LDYgKzc5Miw3IEBACiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaAogLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaApAQCAtNzg5LDExICs4MTYsOCBAQAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTgwMyw2ICs4MjcsNyBAQAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTgzNywxMCArODYyLDEyIEBACiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTg2MCwxMSArODg3LDggQEAKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC05MDgsNiArOTMyLDcgQEAKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmlsZV91dGlscy5oCiAuL2dldG9wdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaApAQCAtOTMxLDExICs5NTYsOCBAQAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTk0NSw2ICs5NjcsNyBAQAogLi9nZXR0aW1lb2ZkYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vZ2V0dGltZW9mZGF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2dldHRpbWVvZmRheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtOTY4LDExICs5OTEsOCBAQAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTk4Miw2ICsxMDAyLDcgQEAKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmggaW5ldF9udG9wLmgKQEAgLTEwMDQsMTEgKzEwMjUsOCBAQAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTEwMTgsNiArMTAzNiw3IEBACiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oIGluZXRfcHRvbi5oCkBAIC0xMDM5LDExICsxMDU4LDggQEAKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMDUyLDEyICsxMDY4LDE0IEBACiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0xMDc2LDExICsxMDk0LDggQEAKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMTMyLDExICsxMTQ3LDggQEAKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xMTQ2LDYgKzExNTgsNyBAQAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTE4MCw5ICsxMTkzLDExIEBACiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMTIwMSwxMSArMTIxNiw4IEBACiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTI1OCwxMSArMTI3MCw4IEBACiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTI3MSw2ICsxMjgwLDcgQEAKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMzAzLDkgKzEzMTMsMTEgQEAKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWQ1LmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTEzMjMsMTEgKzEzMzUsOCBAQAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTEzNjMsNiArMTM3Miw3IEBACiAuL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbXRfc3VwcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC0xMzgxLDExICsxMzkxLDggQEAKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xNDI5LDYgKzE0MzYsNyBAQAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMTQ0OSwxMSArMTQ1Nyw4IEBACiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTQ2MiwxMSArMTQ2NywxMyBAQAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vb3BlbmRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9vcGVuZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL29wZW5kaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTE0ODQsMTEgKzE0OTEsOCBAQAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE1MjQsNiArMTUyOCw3IEBACiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9wa2NzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMTU0MiwxMSArMTU0Nyw4IEBACiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTYwMCwxMSArMTYwMiw4IEBACiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTYxMywxMSArMTYxMiwxMyBAQAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vcmVhZGRpci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9yZWFkZGlyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3JlYWRkaXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTE2MzUsMTEgKzE2MzYsOCBAQAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE2OTEsMTEgKzE2ODksOCBAQAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTE3MDUsNiArMTcwMCw3IEBACiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTczMSw2ICsxNzI3LDcgQEAKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCkBAIC0xNzQ5LDExICsxNzQ2LDggQEAKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xODE0LDExICsxODA4LDggQEAKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0xODI4LDYgKzE4MTksNyBAQAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMTg2NywxMSArMTg1OSw4IEBACiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTg4MCwxMCArMTg2OSwxMiBAQAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMTkwMiwxMSArMTg5Myw4IEBACiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTk0MywxMSArMTkzMSw4IEBACiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMTk1Nyw2ICsxOTQyLDcgQEAKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xOTgzLDYgKzE5NjksNyBAQAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMjAwMSwxMSArMTk4OCw4IEBACiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjA0MiwxMSArMjAyNiw4IEBACiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjA1NSw2ICsyMDM2LDcgQEAKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjA4OSw2ICsyMDcxLDcgQEAKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMjEwNywxMSArMjA5MCw4IEBACiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjE2NiwxMSArMjE0Niw4IEBACiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjE4MCw2ICsyMTU3LDcgQEAKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIyMTQsNiArMjE5Miw3IEBACiAuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaApAQCAtMjIzNSwxMSArMjIxNCw4IEBACiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjI0OSw2ICsyMjI1LDcgQEAKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIyODMsNiArMjI2MCw3IEBACiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKQEAgLTIzMDMsMTEgKzIyODEsOCBAQAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTIzMTcsNiArMjI5Miw3IEBACiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTIzNDQsNyArMjMyMCw5IEBACiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBzbm1wc21faW5pdC5oCisuL3NubXBfc2VjbW9kLmxvOiBzbm1wc21fc2h1dGRvd24uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKQEAgLTIzNjUsMTEgKzIzNDMsOCBAQAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTIzNzksNiArMjM1NCw3IEBACiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0yNDEzLDggKzIzODksMTAgQEAKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMjQzMywxMSArMjQxMSw4IEBACiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjQ1MCw2ICsyNDI1LDcgQEAKIC4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMjQ2OCwxMSArMjQ0NCw4IEBACiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjUwMiw2ICsyNDc1LDkgQEAKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKQEAgLTI1MDksNiArMjQ4NSw3IEBACiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiB0cmFuc3BvcnRzL3NubXBfdHJhbnNwb3J0X2luaXRzLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC0yNTI3LDExICsyNTA0LDggQEAKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0yNTczLDkgKzI1NDcsMTAgQEAKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTI1OTQsMTEgKzI1NjksOCBAQAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI2NTYsMTEgKzI2MjgsOCBAQAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI2NjksNiArMjYzOCw3IEBACiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjcyNCwxMSArMjY5NCw4IEBACiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjczNyw2ICsyNzA0LDcgQEAKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjc2MCwxMSArMjcyOCw4IEBACiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjc3Myw2ICsyNzM4LDcgQEAKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjc5NiwxMSArMjc2Miw4IEBACiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjgxMCw2ICsyNzczLDcgQEAKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMjgzNCwxMSArMjc5OCw4IEBACiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMjg0OCwxMSArMjgwOSwxMyBAQAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTI4NzAsMTEgKzI4MzMsOCBAQAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTI5MDcsNzcgKzI4NjcsOSBAQAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaCBpbmV0X250b3AuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaApAQCAtMjk5NywxMSArMjg4OSw4IEBACiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzA0NSwxMCArMjkzNCwxMiBAQAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RleHRfdXRpbHMuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKQEAgLTMwNjYsMTEgKzI5NTcsOCBAQAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTMwOTksNiArMjk4Nyw3IEBACiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWQuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMzExNywxMSArMzAwNiw4IEBACiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzE1OCwxMSArMzA0NCw4IEBACiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzE3MSw2ICszMDU0LDcgQEAKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzIyMywxMSArMzEwNyw4IEBACiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzIzNyw2ICszMTE4LDcgQEAKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMjQ2LDYgKzMxMjgsNyBAQAogLi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKIC4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCiAuL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdHJhbnNwb3J0cy9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZC5oCkBAIC0zMjY1LDExICszMTQ4LDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zMjc5LDYgKzMxNTksNyBAQAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMzE1LDYgKzMxOTYsNyBAQAogLi90cmFuc3BvcnRzL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3RyYW5zcG9ydHMvc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKIC4vdHJhbnNwb3J0cy9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzMzNSwxMSArMzIxNyw4IEBACiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zMzQ5LDYgKzMyMjgsNyBAQAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zMzk0LDExICszMjc0LDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zNDA4LDQ5ICszMjg1LDEzIEBACiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmxvOiBpbmV0X250b3AuaCBpbmV0X3B0b24uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKQEAgLTM0NzEsMTEgKzMzMTIsOCBAQAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM0ODQsNiArMzMyMiw3IEBACiAuL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNDkzLDYgKzMzMzIsNyBAQAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAogLi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKQEAgLTM1MTIsMTEgKzMzNTIsOCBAQAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM1MjYsNiArMzM2Myw3IEBACiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBTb2NrZXRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaApAQCAtMzUzNSw2ICszMzczLDcgQEAKIC4vdHJhbnNwb3J0cy9zbm1wU29ja2V0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3RyYW5zcG9ydHMvc25tcFNvY2tldEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkLmgKQEAgLTM1NTQsMTEgKzMzOTMsOCBAQAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM2MDAsMTEgKzM0MzYsOCBAQAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM2MTQsNiArMzQ0Nyw3IEBACiAuL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0zNjM3LDExICszNDcxLDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zNjUxLDYgKzM0ODIsNyBAQAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wVENQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTM2NzQsMTEgKzM1MDYsOCBAQAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM2ODgsMTMgKzM1MTcsMTYgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQQmFzZURvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCkBAIC0zNzE1LDExICszNTQ3LDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zNzM0LDEzICszNTYzLDE5IEBACiAuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2VydF91dGlsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oCi0uL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVExTVENQRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaApAQCAtMzc2MSw5ICszNTk2LDYgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaApAQCAtMzgxMSwxMSArMzY0Myw4IEBACiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY0QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NkJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaApAQCAtMzgyNSwxMCArMzY1NCwxNCBAQAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTb2NrZXRCYXNlRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQQmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKQEAgLTM4NTIsMTEgKzM2ODUsOCBAQAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVB2NEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKQEAgLTM4NjYsOSArMzY5NiwxMyBAQAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjRCYXNlRG9tYWluLmgKKy4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zODk4LDExICszNzMyLDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQQmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjZCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zOTEyLDkgKzM3NDMsMTIgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUEJhc2VEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zOTM5LDExICszNzczLDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKQEAgLTM5NTIsMTAgKzM3ODMsMTMgQEAKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vdHJhbnNwb3J0cy9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCkBAIC0zOTc0LDExICszODA4LDggQEAKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaAotLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKLS4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKIC4vdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCkBAIC0zOTk5LDMgKzM4MzAsNCBAQAogLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU29ja2V0QmFzZURvbWFpbi5oCiAuL3RyYW5zcG9ydHMvc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaApkaWZmIC0tZ2l0IGEvc25tcGxpYi9NYWtlZmlsZS5pbiBiL3NubXBsaWIvTWFrZWZpbGUuaW4KaW5kZXggYzFhMDg2ZC4uNTA2YjhkNCAxMDA2NDQKLS0tIGEvc25tcGxpYi9NYWtlZmlsZS5pbgorKysgYi9zbm1wbGliL01ha2VmaWxlLmluCkBAIC0xMyw2ICsxMyw3IEBACiAjCiAKIHRvcF9idWlsZGRpcj0uLgorbXlzdWJkaXI9c25tcGxpYgogCiAjIHVzZSBHTlUgdnBhdGgsIGlmIGF2YWlsYWJsZSwgdG8gb25seSBzZXQgYSBwYXRoIGZvciBzb3VyY2UgYW5kIGhlYWRlcnMKICMgVlBBVEggd2lsbCBwaWNrIHVwIG9iamVjdHMgdG9vLCB3aGljaCBpcyBiYWQgaWYgeW91IGFyZSBzaGFyaW5nIGEKQEAgLTg0LDcgKzg1LDYgQEAKIAl0b29scy5oIFwKIAl0cmFuc2Zvcm1fb2lkcy5oIFwKIAl0eXBlcy5oIFwKLSAgICAgICAgY211X2NvbXBhdC5oIFwKICAgICAgICAgZ2V0b3B0LmggXAogICAgICAgICBsY2RfdGltZS5oIFwKICAgICAgICAgbXRfc3VwcG9ydC5oIFwKQEAgLTEzOCw2MSArMTM4LDkxIEBACiAKICMKICMgVGhpbmdzIHRvIGJ1aWxkCisjICAgLSBmb3IgdGhlIGZlYXR1cmUgY2hlY2tpbmcgLyByZW1vdmFsIC8gbWluaW1pYWxpc3Qgc3VwcG9ydCB0aGVzZQorIyAgICAgbXVzdCBiZSBsaXN0ZWQgc3VjaCB0aGF0IGNvZGUgcmVxdWlyaW5nIGEgZmVhdHVyZSBtdXN0IGJlIGxpc3RlZAorIyAgICAgKmJlZm9yZSogdGhlIGNvZGUgaW1wbGVtZW50aW5nIHRoZSBmZWF0dXJlLgogIwogQ1NSQ1M9CXNubXBfY2xpZW50LmMgbWliLmMgcGFyc2UuYyBzbm1wX2FwaS5jIHNubXAuYyAJCVwKLQlsYXJnZV9mZF9zZXQuYyBjZXJ0X3V0aWwuYwkJCQlcCiAJc25tcF9hdXRoLmMgYXNuMS5jIG1kNS5jIHNubXBfcGFyc2VfYXJncy5jCQlcCiAJc3lzdGVtLmMgdmFjbS5jIGludDY0LmMgcmVhZF9jb25maWcuYyBwa2NzLmMJCVwKIAlzbm1wX2RlYnVnLmMgdG9vbHMuYyAgc25tcF9sb2dnaW5nLmMgdGV4dF91dGlscy5jCVwKLQlzbm1wdjMuYyBsY2RfdGltZS5jIGtleXRvb2xzLmMgZmlsZV91dGlscy5jIGRpcl91dGlscy5jIFwKKwlsYXJnZV9mZF9zZXQuYyBjZXJ0X3V0aWwuYyBzbm1wX29wZW5zc2wuYyAJCVwKKwlzbm1wdjMuYyBsY2RfdGltZS5jIGtleXRvb2xzLmMgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAlzY2FwaS5jIGNhbGxiYWNrLmMgZGVmYXVsdF9zdG9yZS5jIHNubXBfYWxhcm0uYwkJXAogCWRhdGFfbGlzdC5jIG9pZF9zdGFzaC5jIGZkX2V2ZW50X21hbmFnZXIuYyAJCVwKKwljaGVja192YXJiaW5kLmMgCQkJCQlcCiAJbXRfc3VwcG9ydC5jIHNubXBfZW51bS5jIHNubXAtdGMuYyBzbm1wX3NlcnZpY2UuYwlcCiAJc25wcmludGYuYwkJCQkJCVwKIAlzbm1wX3RyYW5zcG9ydC5jIEB0cmFuc3BvcnRfc3JjX2xpc3RACQkJXAogCXNubXBfc2VjbW9kLmMgQHNlY3VyaXR5X3NyY19saXN0QCBzbm1wX3ZlcnNpb24uYyAgICAgICAgXAotCWNoZWNrX3ZhcmJpbmQuYyBjb250YWluZXIuYyBjb250YWluZXJfYmluYXJ5X2FycmF5LmMJXAogCWNvbnRhaW5lcl9udWxsLmMgY29udGFpbmVyX2xpc3Rfc3NsbC5jIGNvbnRhaW5lcl9pdGVyYXRvci5jIFwKLQljbXVfY29tcGF0LmMgdWNkX2NvbXBhdC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQlzbm1wX29wZW5zc2wuYyBAb3RoZXJfc3JjX2xpc3RAIEBjcnlwdG9fZmlsZXNfY0AKKwl1Y2RfY29tcGF0LmMJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorCUBvdGhlcl9zcmNfbGlzdEAgQGNyeXB0b19maWxlc19jQCAgICAgICAgCQlcCisJZGlyX3V0aWxzLmMgZmlsZV91dGlscy5jIAkgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29udGFpbmVyLmMgY29udGFpbmVyX2JpbmFyeV9hcnJheS5jCQogCiBPQkpTPQlzbm1wX2NsaWVudC5vIG1pYi5vIHBhcnNlLm8gc25tcF9hcGkubyBzbm1wLm8gCQlcCi0JbGFyZ2VfZmRfc2V0Lm8gY2VydF91dGlsLm8JCQkJXAogCXNubXBfYXV0aC5vIGFzbjEubyBtZDUubyBzbm1wX3BhcnNlX2FyZ3MubwkJXAogCXN5c3RlbS5vIHZhY20ubyBpbnQ2NC5vIHJlYWRfY29uZmlnLm8gcGtjcy5vIAkJXAogCXNubXBfZGVidWcubyB0b29scy5vICBzbm1wX2xvZ2dpbmcubyB0ZXh0X3V0aWxzLm8JXAotCXNubXB2My5vIGxjZF90aW1lLm8ga2V5dG9vbHMubyBmaWxlX3V0aWxzLm8gZGlyX3V0aWxzLm8gXAorCWxhcmdlX2ZkX3NldC5vIGNlcnRfdXRpbC5vIHNubXBfb3BlbnNzbC5vIAkJXAorCXNubXB2My5vIGxjZF90aW1lLm8ga2V5dG9vbHMubyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCXNjYXBpLm8gY2FsbGJhY2subyBkZWZhdWx0X3N0b3JlLm8gc25tcF9hbGFybS5vCQlcCiAJZGF0YV9saXN0Lm8gb2lkX3N0YXNoLm8gZmRfZXZlbnRfbWFuYWdlci5vCQlcCisJY2hlY2tfdmFyYmluZC5vIAkJCQkJXAogCW10X3N1cHBvcnQubyBzbm1wX2VudW0ubyBzbm1wLXRjLm8gc25tcF9zZXJ2aWNlLm8JXAogCXNucHJpbnRmLm8JCQkJCQlcCiAJc25tcF90cmFuc3BvcnQubyBAdHJhbnNwb3J0X29ial9saXN0QCAgICAgICAgICAgICAgICAgICBcCiAJc25tcF9zZWNtb2QubyBAc2VjdXJpdHlfb2JqX2xpc3RAIHNubXBfdmVyc2lvbi5vICAgICAgICBcCi0JY2hlY2tfdmFyYmluZC5vIGNvbnRhaW5lci5vIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkubwlcCiAJY29udGFpbmVyX251bGwubyBjb250YWluZXJfbGlzdF9zc2xsLm8gY29udGFpbmVyX2l0ZXJhdG9yLm8gXAotCWNtdV9jb21wYXQubyB1Y2RfY29tcGF0Lm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzbm1wX29wZW5zc2wubyBAY3J5cHRvX2ZpbGVzX29AIEBvdGhlcl9vYmpzX2xpc3RAIEBMSUJPQkpTQAorCXVjZF9jb21wYXQubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCVwKKyAgICAgICAgQGNyeXB0b19maWxlc19vQCBAb3RoZXJfb2Jqc19saXN0QCBATElCT0JKU0AgCQlcCisJZGlyX3V0aWxzLm8gZmlsZV91dGlscy5vIAkgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29udGFpbmVyLm8gY29udGFpbmVyX2JpbmFyeV9hcnJheS5vCQogCiBMT0JKUz0Jc25tcF9jbGllbnQubG8gbWliLmxvIHBhcnNlLmxvIHNubXBfYXBpLmxvIHNubXAubG8gCVwKLQlsYXJnZV9mZF9zZXQubG8gY2VydF91dGlsLmxvCQkJCVwKIAlzbm1wX2F1dGgubG8gYXNuMS5sbyBtZDUubG8gc25tcF9wYXJzZV9hcmdzLmxvCQlcCiAJc3lzdGVtLmxvIHZhY20ubG8gaW50NjQubG8gcmVhZF9jb25maWcubG8gcGtjcy5sbwlcCiAJc25tcF9kZWJ1Zy5sbyB0b29scy5sbyAgc25tcF9sb2dnaW5nLmxvCSB0ZXh0X3V0aWxzLmxvCVwKLQlzbm1wdjMubG8gbGNkX3RpbWUubG8ga2V5dG9vbHMubG8gZmlsZV91dGlscy5sbyBkaXJfdXRpbHMubG8gXAotCXNjYXBpLmxvIGNhbGxiYWNrLmxvIGRlZmF1bHRfc3RvcmUubG8gc25tcF9hbGFybS5sbwkJXAorCWxhcmdlX2ZkX3NldC5sbyBjZXJ0X3V0aWwubG8gc25tcF9vcGVuc3NsLmxvIAkJXAorCXNubXB2My5sbyBsY2RfdGltZS5sbyBrZXl0b29scy5sbyAgICAgICAgICAgICAgICAgICAgICAgXAorCXNjYXBpLmxvIGNhbGxiYWNrLmxvIGRlZmF1bHRfc3RvcmUubG8gc25tcF9hbGFybS5sbwlcCiAJZGF0YV9saXN0LmxvIG9pZF9zdGFzaC5sbyBmZF9ldmVudF9tYW5hZ2VyLmxvCQlcCisJY2hlY2tfdmFyYmluZC5sbyAJCQkJCVwKIAltdF9zdXBwb3J0LmxvIHNubXBfZW51bS5sbyBzbm1wLXRjLmxvIHNubXBfc2VydmljZS5sbwlcCiAJc25wcmludGYubG8JCQkJCQlcCiAJc25tcF90cmFuc3BvcnQubG8gQHRyYW5zcG9ydF9sb2JqX2xpc3RAICAgICAgICAgICAgICAgICBcCiAJc25tcF9zZWNtb2QubG8gQHNlY3VyaXR5X2xvYmpfbGlzdEAgc25tcF92ZXJzaW9uLmxvICAgICBcCi0JY2hlY2tfdmFyYmluZC5sbyBjb250YWluZXIubG8gY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbwlcCi0JY29udGFpbmVyX251bGwubG8gY29udGFpbmVyX2xpc3Rfc3NsbC5sbyBjb250YWluZXJfaXRlcmF0b3IubG8gXAotCWNtdV9jb21wYXQubG8gdWNkX2NvbXBhdC5sbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzbm1wX29wZW5zc2wubG8gQGNyeXB0b19maWxlc19sb0AgQG90aGVyX2xvYmpzX2xpc3RAIEBMVExJQk9CSlNACisJY29udGFpbmVyLmxvIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG8JCQlcCisJdWNkX2NvbXBhdC5sbwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEBjcnlwdG9fZmlsZXNfbG9AIEBvdGhlcl9sb2Jqc19saXN0QCBATFRMSUJPQkpTQCAgICAgICAgXAorCWRpcl91dGlscy5sbyBmaWxlX3V0aWxzLmxvIAkgICAgICAgICAgICAgICAgICAgICAgICBcCisJY29udGFpbmVyX251bGwubG8gY29udGFpbmVyX2xpc3Rfc3NsbC5sbyBjb250YWluZXJfaXRlcmF0b3IubG8gCisKK0ZUT0JKUz0Jc25tcF9jbGllbnQuZnQgbWliLmZ0IHBhcnNlLmZ0IHNubXBfYXBpLmZ0IHNubXAuZnQgCVwKKwlzbm1wX2F1dGguZnQgYXNuMS5mdCBtZDUuZnQgc25tcF9wYXJzZV9hcmdzLmZ0CQlcCisJc3lzdGVtLmZ0IHZhY20uZnQgaW50NjQuZnQgcmVhZF9jb25maWcuZnQgcGtjcy5mdAlcCisJc25tcF9kZWJ1Zy5mdCB0b29scy5mdCAgc25tcF9sb2dnaW5nLmZ0CSB0ZXh0X3V0aWxzLmZ0CVwKKwlzbm1wdjMuZnQgbGNkX3RpbWUuZnQga2V5dG9vbHMuZnQgICAgICAgICAgICAgICAgICAgICAgIFwKKwlzY2FwaS5mdCBjYWxsYmFjay5mdCBkZWZhdWx0X3N0b3JlLmZ0IHNubXBfYWxhcm0uZnQJXAorCWRhdGFfbGlzdC5mdCBvaWRfc3Rhc2guZnQgZmRfZXZlbnRfbWFuYWdlci5mdAkJXAorCWNoZWNrX3ZhcmJpbmQuZnQgCQkJCQlcCisJbXRfc3VwcG9ydC5mdCBzbm1wX2VudW0uZnQgc25tcC10Yy5mdCBzbm1wX3NlcnZpY2UuZnQJXAorCXNucHJpbnRmLmZ0CQkJCQkJXAorCXNubXBfdHJhbnNwb3J0LmZ0IEB0cmFuc3BvcnRfZnRvYmpfbGlzdEAgICAgICAgICAgICAgICAgXAorCXNubXBfc2VjbW9kLmZ0IEBzZWN1cml0eV9mdG9ial9saXN0QCBzbm1wX3ZlcnNpb24uZnQgICAgXAorCWNvbnRhaW5lci5mdCBjb250YWluZXJfYmluYXJ5X2FycmF5LmZ0CVwKKwl1Y2RfY29tcGF0LmZ0CQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAlcCisgICAgICAgIEBvdGhlcl9mdG9ianNfbGlzdEAgICAgICAgICAgICAgICAgICAgICAJCVwKKwlsYXJnZV9mZF9zZXQuZnQgY2VydF91dGlsLmZ0IHNubXBfb3BlbnNzbC5mdCAJCVwKKwlkaXJfdXRpbHMuZnQgZmlsZV91dGlscy5mdCAJICAgICAgICAgICAgICAgICAgICAgICAgXAorCWNvbnRhaW5lcl9udWxsLmZ0IGNvbnRhaW5lcl9saXN0X3NzbGwuZnQgY29udGFpbmVyX2l0ZXJhdG9yLmZ0CiAKICMganVzdCBpbiBjYXNlIHNvbWVvbmUgd2FudHMgdG8gcmVtb3ZlIGxpYnRvb2wsIGNoYW5nZSB0aGlzIHRvIE9CSlMuCiBUT0JKUz0kKExPQkpTKQogCitGRUFUVVJFRklMRSAgICAgPSAkKHRvcF9idWlsZGRpcikvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZlYXR1cmVzLmgKKwogIyAKIENQUEZMQUdTID0gJChUT1BfSU5DTFVERVMpIC1JLiAJJChTTk1QTElCX0lOQ0xVREVTKSBAQ1BQRkxBR1NACiAKQEAgLTIxMyw3ICsyNDMsMyBAQAogcGFyc2U6ICBtaWIubyBwYXJzZS5jCiAJJChDQykgJChDRkxBR1MpIC1EVEVTVCBwYXJzZS5jIC1vICRAIFwKIAkJYCQodG9wX3NyY2RpcikvbmV0LXNubXAtY29uZmlnIC0tbGlic2AKLQotdGVzdF9iaW5hcnlfYXJyYXk6IHRlc3RfYmluYXJ5X2FycmF5LmMKLQkkKENDKSAkKENGTEFHUykgdGVzdF9iaW5hcnlfYXJyYXkuYyAtbyAkQCBcCi0JCWAkKHRvcF9zcmNkaXIpL25ldC1zbm1wLWNvbmZpZyAtLWxpYnNgCmRpZmYgLS1naXQgYS9zbm1wbGliL2NhbGxiYWNrLmMgYi9zbm1wbGliL2NhbGxiYWNrLmMKaW5kZXggZmVhMGYyNS4uZGZlNTM3YSAxMDA2NDQKLS0tIGEvc25tcGxpYi9jYWxsYmFjay5jCisrKyBiL3NubXBsaWIvY2FsbGJhY2suYwpAQCAtMTcsNiArMTcsNyBAQAogICogIEB7CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWYgSEFWRV9TVERMSUJfSApAQCAtNTIsNiArNTMsMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2FsbGJhY2tzX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNhbGxiYWNrX2NvdW50LCBjYWxsYmFja3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNhbGxiYWNrX2xpc3QsIGNhbGxiYWNrc19hbGwpCisKIC8qCiAgKiB0aGUgaW5saW5lIGNhbGxiYWNrIG1ldGhvZHMgdXNlIG1ham9yL21pbm9yIHRvIGluZGV4IGludG8gYXJyYXlzLgogICogYWxsIHVzZXJzIGluIHRoaXMgZnVuY3Rpb24gZG8gcmFuZ2UgY2hlY2tpbmcgYmVmb3JlIGNhbGxpbmcgdGhlc2UKQEAgLTIxNCw3ICsyMjAsOSBAQAogICogQHBhcmFtIG5ld19jYWxsYmFjayBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyByZWdpc3RlcmVkLgogICoKICAqIEBwYXJhbSBhcmcgd2hlbiBub3QgTlVMTCBpcyBhIHZvaWQgcG9pbnRlciB1c2VkIHdoZW5ldmVyIG5ld19jYWxsYmFjayAKLSAqCWZ1bmN0aW9uIGlzIGV4ZXJjaXNlZC4KKyAqCWZ1bmN0aW9uIGlzIGV4ZXJjaXNlZC4gT3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSB0d29kaW1lbnNpb25hbAorICogICAgICB0aGVjYWxsYmFja3NbXVtdIGFycmF5LiBUaGUgZnVuY3Rpb24gY2xlYXJfY2FsbGJhY2soKSB3aWxsIGRlYWxsb2NhdGUKKyAqICAgICAgdGhlIG1lbW9yeSBwb2ludGVkIGF0IGJ5IGNhbGxpbmcgZnJlZSgpLgogICoKICAqIEByZXR1cm4gCiAgKglSZXR1cm5zIFNOTVBFUlJfR0VORVJSIGlmIG1ham9yIGlzID49IE1BWF9DQUxMQkFDS19JRFMgb3IgbWlub3IgaXMgPj0KQEAgLTIzNCw2ICsyNDIsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9DQUxMQkFDS19ERUZBVUxUX1BSSU9SSVRZKTsKIH0KIAorLyoqCisgKiBSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uLgorICoKKyAqIEBwYXJhbSBtYWpvciAgICAgICAgTWFqb3IgY2FsbGJhY2sgZXZlbnQgdHlwZS4KKyAqIEBwYXJhbSBtaW5vciAgICAgICAgTWlub3IgY2FsbGJhY2sgZXZlbnQgdHlwZS4KKyAqIEBwYXJhbSBuZXdfY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24gYmVpbmcgcmVnaXN0ZXJlZC4KKyAqIEBwYXJhbSBhcmcgICAgICAgICAgQXJndW1lbnQgdGhhdCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uCisgKiBAcGFyYW0gcHJpb3JpdHkgICAgIEhhbmRsZXIgaW52b2NhdGlvbiBwcmlvcml0eS4gV2hlbiBtdWx0aXBsZSBoYW5kbGVycyBoYXZlCisgKiAgIGJlZW4gcmVnaXN0ZXJlZCBmb3IgdGhlIHNhbWUgKG1ham9yLCBtaW5vcikgY2FsbGJhY2sgZXZlbnQgdHlwZSwgaGFuZGxlcnMKKyAqICAgd2l0aCB0aGUgbnVtZXJpY2FsbHkgbG93ZXN0IHByaW9yaXR5IHdpbGwgYmUgaW52b2tlZCBmaXJzdC4gSGFuZGxlcnMgd2l0aAorICogICBpZGVudGljYWwgcHJpb3JpdHkgYXJlIGludm9rZWQgaW4gdGhlIG9yZGVyIHRoZXkgaGF2ZSBiZWVuIHJlZ2lzdGVyZWQuCisgKgorICogQHNlZSBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrCisgKi8KIGludAogbmV0c25tcF9yZWdpc3Rlcl9jYWxsYmFjayhpbnQgbWFqb3IsIGludCBtaW5vciwgU05NUENhbGxiYWNrICogbmV3X2NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICphcmcsIGludCBwcmlvcml0eSkKQEAgLTM1MSw2ICszNzMsNyBAQAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUxMQkFDS19DT1VOVAogaW50CiBzbm1wX2NvdW50X2NhbGxiYWNrcyhpbnQgbWFqb3IsIGludCBtaW5vcikKIHsKQEAgLTM3MCw2ICszOTMsNyBAQAogCiAgICAgcmV0dXJuIGNvdW50OwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FMTEJBQ0tfQ09VTlQgKi8KIAogaW50CiBzbm1wX2NhbGxiYWNrX2F2YWlsYWJsZShpbnQgbWFqb3IsIGludCBtaW5vcikKQEAgLTU0OCw2ICs1NzIsNyBAQAogICAgIH0KIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NBTExCQUNLX0xJU1QKIHN0cnVjdCBzbm1wX2dlbl9jYWxsYmFjayAqCiBzbm1wX2NhbGxiYWNrX2xpc3QoaW50IG1ham9yLCBpbnQgbWlub3IpCiB7CkBAIC01NTYsNCArNTgxLDUgQEAKIAogICAgIHJldHVybiAodGhlY2FsbGJhY2tzW21ham9yXVttaW5vcl0pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FMTEJBQ0tfTElTVCAqLwogLyoqICBAfSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jZXJ0X3V0aWwuYyBiL3NubXBsaWIvY2VydF91dGlsLmMKaW5kZXggNmIyY2IzMC4uMjQ2YTZjOSAxMDA2NDQKLS0tIGEvc25tcGxpYi9jZXJ0X3V0aWwuYworKysgYi9zbm1wbGliL2NlcnRfdXRpbC5jCkBAIC0xLDEzICsxLDQwIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX0xJQlNTTCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjZXJ0X3V0aWxfYWxsLCBsaWJuZXRzbm1wKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNlcnRfdXRpbCwgY2VydF91dGlsX2FsbCkKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DRVJUX1VUSUwKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9kaXJlY3RvcnkpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZmlmbykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9kdXApCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZnJlZV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShzdWJjb250YWluZXJfZmluZCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNlcnRfbWFwX3JlbW92ZSwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2VydF9tYXBfZmluZCwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzdG1wYXJhbXNfZXh0ZXJuYWwsIGNlcnRfdXRpbF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzdG1wYXJhbXNfY29udGFpbmVyLCB0bHN0bXBhcmFtc19leHRlcm5hbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0bHN0bXBhcmFtc19yZW1vdmUsIHRsc3RtcGFyYW1zX2V4dGVybmFsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc3RtcGFyYW1zX2ZpbmQsIHRsc3RtcGFyYW1zX2V4dGVybmFsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc3RtQWRkcl9yZW1vdmUsIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRsc3RtYWRkcl9leHRlcm5hbCwgY2VydF91dGlsX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0bHN0bWFkZHJfY29udGFpbmVyLCB0bHN0bWFkZHJfZXh0ZXJuYWwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzdG1BZGRyX2dldF9zZXJ2ZXJJZCwgdGxzdG1hZGRyX2V4dGVybmFsKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2VydF9maW5nZXJwcmludHMsIGNlcnRfdXRpbF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGxzX2ZpbmdlcnByaW50X2J1aWxkLCBjZXJ0X3V0aWxfYWxsKQorCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfQ0VSVF9VVElMICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX1VUSUwKKworI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGN0eXBlLmg+Ci0KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZWxzZQpAQCAtMjI4LDYgKzI1NSwxMSBAQAogbmV0c25tcF9jZXJ0c19zaHV0ZG93bih2b2lkKQogewogICAgIERFQlVHTVNHVCgoImNlcnQ6dXRpbDpzaHV0ZG93biIsInNodXRkb3duXG4iKSk7CisgICAgaWYgKF9tYXBzKSB7CisgICAgICAgIENPTlRBSU5FUl9GUkVFX0FMTChfbWFwcywgTlVMTCk7CisgICAgICAgIENPTlRBSU5FUl9GUkVFKF9tYXBzKTsKKyAgICAgICAgX21hcHMgPSBOVUxMOworICAgIH0KICAgICBpZiAoTlVMTCAhPSBfY2VydHMpIHsKICAgICAgICAgQ09OVEFJTkVSX0ZSRUVfQUxMKF9jZXJ0cywgTlVMTCk7CiAgICAgICAgIENPTlRBSU5FUl9GUkVFKF9jZXJ0cyk7CkBAIC0xMTM3LDcgKzExNjksNyBAQAogc3RhdGljIHZvaWQKIF9maW5kX3BhcnRuZXIobmV0c25tcF9jZXJ0ICpjZXJ0LCBuZXRzbm1wX2tleSAqa2V5KQogewotICAgIG5ldHNubXBfdm9pZF9hcnJheSAqbWF0Y2hpbmc7CisgICAgbmV0c25tcF92b2lkX2FycmF5ICptYXRjaGluZyA9IE5VTEw7CiAgICAgY2hhciAgICAgICAgICAgICAgICBmaWxlbmFtZVtOQU1FX01BWF0sICpwb3M7CiAKICAgICBpZiAoKGNlcnQgJiYga2V5KSB8fCAoIWNlcnQgJiYgISBrZXkpKSB7CkBAIC0xNjExLDYgKzE2NDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VfZmluZF9sYWJlbF9pbl9zbGlzdCgiY2VydF9oYXNoX2FsZyIsIGMtPmhhc2hfdHlwZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5oYXNoX3R5cGUsIGMtPmZpbmdlcnByaW50KSk7CiAgICAgICAgIH0KKyAgICAgICAgLyogbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2VydF91dGlsc19kdW1wX25hbWVzKSAqLwogICAgICAgICAvKiBuZXRzbm1wX29wZW5zc2xfY2VydF9kdW1wX25hbWVzKGMtPm9jZXJ0KTsgKi8KICAgICAgICAgbmV0c25tcF9vcGVuc3NsX2NlcnRfZHVtcF9leHRlbnNpb25zKGMtPm9jZXJ0KTsKICAgICB9CkBAIC0xNzAxLDcgKzE3MzQsNiBAQAogbmV0c25tcF9jZXJ0X2ZpbmQoaW50IHdoYXQsIGludCB3aGVyZSwgdm9pZCAqaGludCkKIHsKICAgICBuZXRzbm1wX2NlcnQgKnJlc3VsdCA9IE5VTEw7Ci0gICAgaW50ICAgICAgICAgICB0bXA7CiAgICAgY2hhciAgICAgICAgICpmcCwgKmhpbnRfc3RyOwogCiAgICAgREVCVUdNU0dUKCgiY2VydDpmaW5kOnBhcmFtcyIsICJsb29raW5nIGZvciAlcyglZCkgaW4gJXMoMHgleCksIGhpbnQgJWx1XG4iLApAQCAtMTcxMSwxMyArMTc0MywyMCBAQAogICAgICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAod2hhdCkgewogICAgICAgICAgICAgY2FzZSBOU19DRVJUX0lERU5USVRZOiAvKiB3YW50IG15IElEICovCi0gICAgICAgICAgICAgICAgdG1wID0gKHB0cmRpZmZfdCloaW50OwotICAgICAgICAgICAgICAgIERFQlVHTVNHVCgoImNlcnQ6ZmluZDpwYXJhbXMiLCAiIGhpbnQgPSAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA/ICJzZXJ2ZXIiIDogImNsaWVudCIpKTsKICAgICAgICAgICAgICAgICBmcCA9CiAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPyBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UTFNfTE9DQUxfQ0VSVCk7CisgICAgICAgICAgICAgICAgLyoqIHRlbXAgYmFja3dhcmRzIGNvbXBhYmlsaXR5OyByZW1vdmUgaW4gNS43ICovCisgICAgICAgICAgICAgICAgaWYgKCFmcCkgeworICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIHRtcDsKKyAgICAgICAgICAgICAgICAgICAgdG1wID0gKHB0cmRpZmZfdCloaW50OworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1QoKCJjZXJ0OmZpbmQ6cGFyYW1zIiwgIiBoaW50ID0gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wID8gInNlcnZlciIgOiAiY2xpZW50IikpOworICAgICAgICAgICAgICAgICAgICBmcCA9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCB0bXAgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfU0VSVkVSX1BVQiA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCICk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmICghZnApIHsKICAgICAgICAgICAgICAgICAgICAgLyogQXMgYSBzcGVjaWFsIGNhc2UsIHVzZSB0aGUgYXBwbGljYXRpb24gdHlwZSB0bwogICAgICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgYSBmaWxlIG5hbWUgdG8gcHVsbCB0aGUgZGVmYXVsdCBpZGVudGl0eQpAQCAtMTcyNyw3ICsxNzY2LDExIEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5TX0NFUlRfUkVNT1RFX1BFRVI6CiAgICAgICAgICAgICAgICAgZnAgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfU0VSVkVSX1BVQik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfVExTX1BFRVJfQ0VSVCk7CisgICAgICAgICAgICAgICAgLyoqIHRlbXAgYmFja3dhcmRzIGNvbXBhYmlsaXR5OyByZW1vdmUgaW4gNS43ICovCisgICAgICAgICAgICAgICAgaWYgKCFmcCkKKyAgICAgICAgICAgICAgICAgICAgZnAgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBERUJVR01TR1QoKCJjZXJ0OmZpbmQ6ZXJyIiwgInVuaGFuZGxlZCB0eXBlICVkIGZvciAlcyglZClcbiIsCkBAIC0xODMxLDEyICsxODc0LDcgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbnQKLW5ldHNubXBfY2VydF92YWxpZGF0ZShpbnQgd2hvLCBpbnQgaG93LCBYNTA5ICpjZXJ0KQotewotICAgIHJldHVybiAtMTsKLX0KLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfRklOR0VSUFJJTlRTCiBpbnQKIG5ldHNubXBfY2VydF9jaGVja192Yl9maW5nZXJwcmludChjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcikKIHsKQEAgLTE5MTEsNyArMTk0OSw5IEBACiAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9GSU5HRVJQUklOVFMgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU19GSU5HRVJQUklOVF9CVUlMRAogLyoqCiAgKiBjb21iaW5lIGEgaGFzaCB0eXBlIGFuZCBoZXggZmluZ2VycHJpbnQgaW50byBhIFNubXBUTFNGaW5nZXJwcmludAogICoKQEAgLTE5NTcsNiArMTk5Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU19GSU5HRVJQUklOVF9CVUlMRCAqLwogCiAvKioKICAqIFRydXN0cyBhIGdpdmVuIGNlcnRpZmljYXRlIGZvciB1c2UgaW4gVExTIHRyYW5zbGF0aW9ucy4KQEAgLTIyNDUsOCArMjI4NiwxMyBAQAogICAgIG1hdGNoaW5nID0gQ09OVEFJTkVSX0dFVF9TVUJTRVQoY29udGFpbmVyLCAmc2VhcmNoKTsKICAgICBERUJVR01TR1QoKCI5OmNlcnQ6c3Vic2V0OmZvdW5kIiwgIiUiIE5FVFNOTVBfUFJJeiAiZCBtYXRjaGVzXG4iLCBtYXRjaGluZyA/CiAgICAgICAgICAgICAgICBtYXRjaGluZy0+c2l6ZSA6IDApKTsKLSAgICBpZiAobWF0Y2hpbmcgJiYgbWF0Y2hpbmctPnNpemUgPiAxKQorICAgIGlmIChtYXRjaGluZyAmJiBtYXRjaGluZy0+c2l6ZSA+IDEpIHsKICAgICAgICAgX3JlZHVjZV9zdWJzZXQobWF0Y2hpbmcsIGZpbGVuYW1lKTsKKyAgICAgICAgaWYgKDAgPT0gbWF0Y2hpbmctPnNpemUpIHsKKyAgICAgICAgICAgIGZyZWUobWF0Y2hpbmctPmFycmF5KTsKKyAgICAgICAgICAgIFNOTVBfRlJFRShtYXRjaGluZyk7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIG1hdGNoaW5nOwogfQogCkBAIC0yMjYxLDggKzIzMDcsMTMgQEAKICAgICBuZXRzbm1wX2Fzc2VydChmbl9jb250YWluZXIpOwogCiAgICAgbWF0Y2hpbmcgPSBfY2VydF9maW5kX3N1YnNldF9jb21tb24oZmlsZW5hbWUsIGZuX2NvbnRhaW5lcik7Ci0gICAgaWYgKG1hdGNoaW5nICYmIChtYXRjaGluZy0+c2l6ZSA+IDEpICYmIGRpcmVjdG9yeSkKKyAgICBpZiAobWF0Y2hpbmcgJiYgKG1hdGNoaW5nLT5zaXplID4gMSkgJiYgZGlyZWN0b3J5KSB7CiAgICAgICAgIF9yZWR1Y2Vfc3Vic2V0X2RpcihtYXRjaGluZywgZGlyZWN0b3J5KTsKKyAgICAgICAgaWYgKDAgPT0gbWF0Y2hpbmctPnNpemUpIHsKKyAgICAgICAgICAgIGZyZWUobWF0Y2hpbmctPmFycmF5KTsKKyAgICAgICAgICAgIFNOTVBfRlJFRShtYXRjaGluZyk7CisgICAgICAgIH0KKyAgICB9CiAgICAgcmV0dXJuIG1hdGNoaW5nOwogfQogCkBAIC0yNDI4LDYgKzI0NzksNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfTUFQX1JFTU9WRQogaW50CiBuZXRzbm1wX2NlcnRfbWFwX3JlbW92ZShuZXRzbm1wX2NlcnRfbWFwICptYXApCiB7CkBAIC0yNDQ0LDcgKzI0OTYsOSBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9NQVBfUkVNT1ZFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX01BUF9GSU5ECiBuZXRzbm1wX2NlcnRfbWFwICoKIG5ldHNubXBfY2VydF9tYXBfZmluZChuZXRzbm1wX2NlcnRfbWFwICptYXApCiB7CkBAIC0yNDUzLDYgKzI1MDcsNyBAQAogCiAgICAgcmV0dXJuIENPTlRBSU5FUl9GSU5EKF9tYXBzLCBtYXApOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9NQVBfRklORCAqLwogCiBzdGF0aWMgdm9pZAogX21hcF9mcmVlKG5ldHNubXBfY2VydF9tYXAgKm1hcCwgdm9pZCAqY29udGV4dCkKQEAgLTI1MDIsMTAgKzI1NTcsOSBAQAogbmV0c25tcF9jb250YWluZXIgKgogbmV0c25tcF9jZXJ0X21hcF9jb250YWluZXJfY3JlYXRlKGludCB3aXRoX2ZwKQogewotICAgIG5ldHNubXBfY29udGFpbmVyICpjaGFpbl9tYXAgPQotICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJjZXJ0X21hcDpzdGFjazpiaW5hcnlfYXJyYXkiKTsKLSAgICBuZXRzbm1wX2NvbnRhaW5lciAqZnA7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNoYWluX21hcCwgKmZwOwogCisgICAgY2hhaW5fbWFwID0gbmV0c25tcF9jb250YWluZXJfZmluZCgiY2VydF9tYXA6c3RhY2s6YmluYXJ5X2FycmF5Iik7CiAgICAgaWYgKE5VTEwgPT0gY2hhaW5fbWFwKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgYWxsb2NhdGUgY29udGFpbmVyIGZvciBjZXJ0X21hcFxuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjg5OCwxMSArMjk1MiwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXNfaGVscCk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTVBBUkFNU19DT05UQUlORVIKIG5ldHNubXBfY29udGFpbmVyICoKIG5ldHNubXBfdGxzdG1QYXJhbXNfY29udGFpbmVyKHZvaWQpCiB7CiAgICAgcmV0dXJuIF90bHN0bVBhcmFtczsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNUEFSQU1TX0NPTlRBSU5FUiAqLwogCiBzbm1wVGxzdG1QYXJhbXMgKgogbmV0c25tcF90bHN0bVBhcmFtc19jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwgaW50IGhhc2hUeXBlLCBjb25zdCBjaGFyICpmcCwKQEAgLTMwMDYsNiArMzA2Miw3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTVBBUkFNU19SRU1PVkUKIGludAogbmV0c25tcF90bHN0bVBhcmFtc19yZW1vdmUoc25tcFRsc3RtUGFyYW1zICpzdHApCiB7CkBAIC0zMDIyLDcgKzMwNzksOSBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTVBBUkFNU19SRU1PVkUgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNUEFSQU1TX0ZJTkQKIHNubXBUbHN0bVBhcmFtcyAqCiBuZXRzbm1wX3Rsc3RtUGFyYW1zX2ZpbmQoc25tcFRsc3RtUGFyYW1zICpzdHApCiB7CkBAIC0zMDM0LDYgKzMwOTMsNyBAQAogICAgIGZvdW5kID0gQ09OVEFJTkVSX0ZJTkQoX3Rsc3RtUGFyYW1zLCBzdHApOwogICAgIHJldHVybiBmb3VuZDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNUEFSQU1TX0ZJTkQgKi8KIAogc3RhdGljIHZvaWQKIF9wYXJzZV9wYXJhbXMoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCkBAIC0zMTAwLDExICszMTYwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcl9oZWxwKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RMU1RNQUREUl9DT05UQUlORVIKIG5ldHNubXBfY29udGFpbmVyICoKIG5ldHNubXBfdGxzdG1BZGRyX2NvbnRhaW5lcih2b2lkKQogewogICAgIHJldHVybiBfdGxzdG1BZGRyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1BRERSX0NPTlRBSU5FUiAqLwogCiAvKgogICogY3JlYXRlIGEgbmV3IHJvdyBpbiB0aGUgdGFibGUgCkBAIC0zMjEwLDYgKzMyNzIsNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVExTVE1BRERSX1JFTU9WRQogaW50CiBuZXRzbm1wX3Rsc3RtQWRkcl9yZW1vdmUoc25tcFRsc3RtQWRkciAqZW50cnkpCiB7CkBAIC0zMjIzLDYgKzMyODYsNyBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTUFERFJfUkVNT1ZFICovCiAKIHN0YXRpYyB2b2lkCiBfcGFyc2VfYWRkcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKQEAgLTMyNzQsNiArMzMzOCw3IEBACiAgICAgcmV0dXJuIHJlc3VsdC0+ZmluZ2VycHJpbnQ7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTUFERFJfR0VUX1NFUlZFUklECiBjaGFyICoKIG5ldHNubXBfdGxzdG1BZGRyX2dldF9zZXJ2ZXJJZChjb25zdCBjaGFyICpuYW1lKQogewpAQCAtMzI5MCwxMCArMzM1NSwxMyBAQAogCiAgICAgcmV0dXJuIHJlc3VsdC0+aWRlbnRpdHk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9UTFNUTUFERFJfR0VUX1NFUlZFUklEICovCiAvKgogICogRU5EIHNubXBUbHN0bUFkZHJUYWJsZSBkYXRhCiAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKICNlbHNlCi1pbnQgY2VydF91bnVzZWQ7CS8qIFN1cHByZXNzICJlbXB0eSB0cmFuc2xhdGlvbiB1bml0IiB3YXJuaW5nICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGNlcnRfdXRpbCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX1VUSUwgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoY2VydF91dGlsKTsKICNlbmRpZiAvKiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9MSUJTU0wpICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2NoZWNrX3ZhcmJpbmQuYyBiL3NubXBsaWIvY2hlY2tfdmFyYmluZC5jCmluZGV4IDQ0Mjc5NWMuLjEyYjdhNTIgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY2hlY2tfdmFyYmluZC5jCisrKyBiL3NubXBsaWIvY2hlY2tfdmFyYmluZC5jCkBAIC0xLDkgKzEsMjcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmFyYmluZF9hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja192Yl9yYW5nZSwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfc2l6ZV9yYW5nZSwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfdWludCwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfc3RvcmFnZXR5cGUsIGNoZWNrX3ZhcmJpbmRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZiX29pZCwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUsIGNoZWNrX3ZhcmJpbmRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplLCBjaGVja192YXJiaW5kX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja192Yl9yb3dzdGF0dXNfd2l0aF9zdG9yYWdldHlwZSwgY2hlY2tfdmFyYmluZF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2hlY2tfdmJfdHJ1dGh2YWx1ZSwgY2hlY2tfdmFyYmluZF9hbGwpCisKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DSEVDS19WQl9ST1dTVEFUVVNfV0lUSF9TVE9SQUdFVFlQRQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2hlY2tfcm93c3RhdHVzX3dpdGhfc3RvcmFnZXR5cGVfdHJhbnNpdGlvbikKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRVNfQ0hFQ0tfVkJfUk9XU1RBVFVTX1dJVEhfU1RPUkFHRVRZUEUgKi8KKworCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfdHlwZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgaW50IHR5cGUgKQogewpAQCAtNDksNiArNjcsNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1JBTkdFCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfcmFuZ2UoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsb3csIHNpemVfdCBoaWdoICkKQEAgLTY0LDcgKzgzLDkgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1JBTkdFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9TSVpFX1JBTkdFCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfc2l6ZV9yYW5nZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbG93LCBzaXplX3QgaGlnaCApCkBAIC04MCw2ICsxMDEsNyBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfU0laRV9SQU5HRSAqLwogCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwKQEAgLTk4LDYgKzEyMCw3IEBACiAgICAgcmV0dXJuIHJjOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfVFlQRV9BTkRfTUFYX1NJWkUKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgc2l6ZV90IHNpemUpCkBAIC0xMTQsNyArMTM3LDkgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1RZUEVfQU5EX01BWF9TSVpFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9PSUQKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9jaGVja192Yl9vaWQoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIpCiB7CkBAIC0xMzAsNiArMTU1LDcgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX09JRCAqLwogCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfaW50KGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyKQpAQCAtMTQwLDYgKzE2Niw3IEBACiAgICAgcmV0dXJuIG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZSh2YXIsIEFTTl9JTlRFR0VSLCBzaXplb2YobG9uZykpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfVUlOVAogTkVUU05NUF9JTkxJTkUgaW50CiBuZXRzbm1wX2NoZWNrX3ZiX3VpbnQoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIpCiB7CkBAIC0xNDgsNiArMTc1LDcgQEAKICAgICAKICAgICByZXR1cm4gbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplKHZhciwgQVNOX1VOU0lHTkVELCBzaXplb2YobG9uZykpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfVUlOVCAqLwogCiBORVRTTk1QX0lOTElORSBpbnQKIG5ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlKGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCBpbnQgbG93LCBpbnQgaGlnaCkKQEAgLTE2Nyw2ICsxOTUsNyBAQAogICAgIHJldHVybiByYzsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1ZCX1RSVVRIVkFMVUUKIGludAogbmV0c25tcF9jaGVja192Yl90cnV0aHZhbHVlKGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyKQogewpAQCAtMTgwLDYgKzIwOSw3IEBACiAgICAgCiAgICAgcmV0dXJuIG5ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlKHZhciwgMSwgMik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9UUlVUSFZBTFVFICovCiAKIE5FVFNOTVBfSU5MSU5FIGludAogbmV0c25tcF9jaGVja192Yl9yb3dzdGF0dXNfdmFsdWUoY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXIpCkBAIC0yMTMsNiArMjQzLDcgQEAKICAgICByZXR1cm4gY2hlY2tfcm93c3RhdHVzX3RyYW5zaXRpb24ob2xkX3ZhbHVlLCAqdmFyLT52YWwuaW50ZWdlcik7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9ST1dTVEFUVVNfV0lUSF9TVE9SQUdFVFlQRQogaW50CiBuZXRzbm1wX2NoZWNrX3ZiX3Jvd3N0YXR1c193aXRoX3N0b3JhZ2V0eXBlKGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2xkX3ZhbHVlLCBpbnQgb2xkX3N0b3JhZ2UpCkBAIC0yMjksNyArMjYwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmFyLT52YWwuaW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRfc3RvcmFnZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19WQl9ST1dTVEFUVVNfV0lUSF9TVE9SQUdFVFlQRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfU1RPUkFHRVRZUEUKIGludAogbmV0c25tcF9jaGVja192Yl9zdG9yYWdldHlwZShjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgaW50IG9sZF92YWx1ZSkKIHsKQEAgLTI0NywzICsyODAsNCBAQAogICAgICAgICAKICAgICByZXR1cm4gY2hlY2tfc3RvcmFnZV90cmFuc2l0aW9uKG9sZF92YWx1ZSwgKnZhci0+dmFsLmludGVnZXIpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0hFQ0tfVkJfU1RPUkFHRVRZUEUgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvY211X2NvbXBhdC5jIGIvc25tcGxpYi9jbXVfY29tcGF0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZGNmM2EuLjAwMDAwMDAKLS0tIGEvc25tcGxpYi9jbXVfY29tcGF0LmMKKysrIC9kZXYvbnVsbApAQCAtMSw5MyArMCwwIEBACi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0KLSNpZmRlZiBDTVVfQ09NUEFUSUJMRQotCi0jaW5jbHVkZSA8bmV0LXNubXAvbWliX2FwaS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9zZXNzaW9uX2FwaS5oPgotCi1pbnQKLW1pYl9UeHRUb09pZChjaGFyICpCdWYsIG9pZCAqKiBPaWRQLCBzaXplX3QgKiBMZW5QKQotewotICAgIHJldHVybiByZWFkX29iamlkKEJ1ZiwgKk9pZFAsIExlblApOwotfQotCi1pbnQKLW1pYl9PaWRUb1R4dChvaWQgKiBPLCBzaXplX3QgT2lkTGVuLCBjaGFyICpCdWYsIHNpemVfdCBCdWZMZW4pCi17Ci0gICAgX3NwcmludF9vYmppZChCdWYsIE8sIE9pZExlbik7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLQotLyoKLSAqIGNtdV9zbm1wX3BhcnNlIC0gZW11bGF0ZSBDTVUgbGlicmFyeSdzIHNubXBfcGFyc2UuCi0gKgotICogUGFyc2UgcGFja2V0LCBzdG9yaW5nIHJlc3VsdHMgaW50byBQRFUuCi0gKiBSZXR1cm5zIGNvbW11bml0eSBzdHJpbmcgaWYgc3VjY2VzcywgTlVMTCBpZiBmYWlsLgotICogV0FSTklORzogbWF5IHJldHVybiBhIHplcm8gbGVuZ3RoIGNvbW11bml0eSBzdHJpbmcuCi0gKgotICogTm90ZToKLSAqIFNvbWUgQ01VLWF3YXJlIGFwcHMgY2FsbCBpbml0X21pYigpLCBidXQgZG8gbm90Ci0gKiBpbml0aWFsaXplIGEgc2Vzc2lvbi4KLSAqIENoZWNrIFJlcWlkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoaXMgbW9kdWxlIGlzIGluaXRpYWxpemVkLgotICovCi0KLXVfY2hhciAgICAgICAgICoKLWNtdV9zbm1wX3BhcnNlKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sCi0gICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqcGR1LCB1X2NoYXIgKiBkYXRhLCBzaXplX3QgbGVuZ3RoKQotewotICAgIHVfY2hhciAgICAgICAgICpidWZwID0gTlVMTDsKLQotICAgIHNubXBfc2Vzc19pbml0KHNlc3Npb24pOyAgICAvKiBnaW1tZSBhIGJyZWFrISAqLwotCi0gICAgc3dpdGNoIChwZHUtPnZlcnNpb24pIHsKLSAgICBjYXNlIFNOTVBfVkVSU0lPTl8xOgotICAgIGNhc2UgU05NUF9WRVJTSU9OXzJjOgotICAgIGNhc2UgU05NUF9ERUZBVUxUX1ZFUlNJT046Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNpZm5kZWYgTk9fSU5URVJOQUxfVkFSTElTVAotICAgIGlmIChzbm1wX3BhcnNlKDAsIHNlc3Npb24sIHBkdSwgZGF0YSwgbGVuZ3RoKSAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSNlbHNlCi0gICAgLyoKLSAgICAgKiB3aGlsZSB0aGVyZSBhcmUgdHdvIHZlcnNpb25zIG9mIHZhcmlhYmxlX2xpc3Q6Ci0gICAgICogdXNlIGFuIGludGVybmFsIHZhcmlhYmxlIGxpc3QgZm9yIHNubXBfcGFyc2U7Ci0gICAgICogY2xvbmUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBpZiAoMSkgewotICAgICAgICBuZXRzbm1wX3BkdSAgICAqc25tcF9jbG9uZV9wZHUobmV0c25tcF9wZHUgKik7Ci0gICAgICAgIG5ldHNubXBfcGR1ICAgICpzbm1wXzJjbG9uZV9wZHUobmV0c25tcF9wZHUgKmZyb21fcGR1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICp0b19wZHUpOwotCi0gICAgICAgIG5ldHNubXBfcGR1ICAgICppcGR1OwotICAgICAgICBpcGR1ID0gc25tcF9jbG9uZV9wZHUocGR1KTsKLSAgICAgICAgaWYgKHNubXBfcGFyc2UoMCwgc2Vzc2lvbiwgaXBkdSwgZGF0YSwgbGVuZ3RoKSAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7Ci0gICAgICAgICAgICBzbm1wX2ZyZWVfaW50ZXJuYWxfcGR1KGlwZHUpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgcGR1ID0gc25tcF8yY2xvbmVfcGR1KGlwZHUsIHBkdSk7Ci0gICAgICAgIHNubXBfZnJlZV9pbnRlcm5hbF9wZHUoaXBkdSk7Ci0gICAgfQotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOT19JTlRFUk5BTF9WQVJfTElTVCAqLwotCi0gICAgLyoKLSAgICAgKiBBZGQgYSBudWxsIHRvIG1lZXQgdGhlIGNhbGxlcidzIGV4cGVjdGF0aW9ucy4gCi0gICAgICovCi0KLSAgICBidWZwID0gKHVfY2hhciAqKSBtYWxsb2MoMSArIHBkdS0+Y29tbXVuaXR5X2xlbik7Ci0gICAgaWYgKGJ1ZnAgJiYgcGR1LT5jb21tdW5pdHlfbGVuKSB7Ci0gICAgICAgIG1lbWNweShidWZwLCBwZHUtPmNvbW11bml0eSwgcGR1LT5jb21tdW5pdHlfbGVuKTsKLSAgICAgICAgYnVmcFtwZHUtPmNvbW11bml0eV9sZW5dID0gJ1wwJzsKLSAgICB9Ci0gICAgcmV0dXJuIChidWZwKTsKLX0KLQotCi0jZWxzZQotaW50IGNtdV91bnVzZWQ7CS8qIFN1cHByZXNzICJlbXB0eSB0cmFuc2xhdGlvbiB1bml0IiB3YXJuaW5nICovCi0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNVV9DT01QQVRJQkxFICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2NvbnRhaW5lci5jIGIvc25tcGxpYi9jb250YWluZXIuYwppbmRleCAxN2RkNDBmLi5iMmFjOTdlIDEwMDY0NAotLS0gYS9zbm1wbGliL2NvbnRhaW5lci5jCisrKyBiL3NubXBsaWIvY29udGFpbmVyLmMKQEAgLTksMTIgKzksMzEgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9udWxsLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2ZhY3RvcmllcywgY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfdHlwZXMsIGNvbnRhaW5lcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2NvbXBhcmUsIGNvbnRhaW5lcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2R1cCwgY29udGFpbmVyX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfZnJlZV9hbGwsIGNvbnRhaW5lcl9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3ViY29udGFpbmVyX2ZpbmQsIGNvbnRhaW5lcl9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfbmNvbXBhcmVfY3N0cmluZywgY29udGFpbmVyX2NvbXBhcmUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2NvbXBhcmVfbWVtLCBjb250YWluZXJfY29tcGFyZSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfY29tcGFyZV9sb25nLCBjb250YWluZXJfY29tcGFyZSkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfY29tcGFyZV91bG9uZywgY29udGFpbmVyX2NvbXBhcmUpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2NvbXBhcmVfaW50MzIsIGNvbnRhaW5lcl9jb21wYXJlKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9jb21wYXJlX3VpbnQzMiwgY29udGFpbmVyX2NvbXBhcmUpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfZmluZF9mYWN0b3J5LCBjb250YWluZXJfZmFjdG9yaWVzKQorCiAvKiogQGRlZmdyb3VwIGNvbnRhaW5lciBjb250YWluZXIKICAqLwogCkBAIC02OCwxOCArODcsMjUgQEAKICAgICAgKiByZWdpc3RlciBjb250YWluZXJzCiAgICAgICovCiAgICAgbmV0c25tcF9jb250YWluZXJfYmluYXJ5X2FycmF5X2luaXQoKTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QKICAgICBuZXRzbm1wX2NvbnRhaW5lcl9zc2xsX2luaXQoKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9MSU5LRURfTElTVCAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9OVUxMCiAgICAgbmV0c25tcF9jb250YWluZXJfbnVsbF9pbml0KCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTlVMTCAqLwogCiAgICAgLyoKICAgICAgKiBkZWZhdWx0IGFsaWFzZXMgZm9yIHNvbWUgY29udGFpbmVycwogICAgICAqLwogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyKCJ0YWJsZV9jb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJiaW5hcnlfYXJyYXkiKSk7CisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QKICAgICBuZXRzbm1wX2NvbnRhaW5lcl9yZWdpc3RlcigibGlua2VkX2xpc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJzb3J0ZWRfc2luZ2x5X2xpbmtlZF9saXN0IikpOwogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyKCJzc2xsX2NvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZ2V0X2ZhY3RvcnkoInNvcnRlZF9zaW5nbHlfbGlua2VkX2xpc3QiKSk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QgKi8KIAogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyX3dpdGhfY29tcGFyZQogICAgICAgICAoImNzdHJpbmciLCBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgiYmluYXJ5X2FycmF5IiksCkBAIC0xNjYsNiArMTkyLDcgQEAKICAgICByZXR1cm4gZm91bmQgPyBmb3VuZC0+ZmFjdG9yeSA6IE5VTEw7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfRklORF9GQUNUT1JZCiBuZXRzbm1wX2ZhY3RvcnkgKgogbmV0c25tcF9jb250YWluZXJfZmluZF9mYWN0b3J5KGNvbnN0IGNoYXIgKnR5cGVfbGlzdCkKIHsKQEAgLTE4OCw2ICsyMTUsNyBAQAogICAgIGZyZWUobGlzdCk7CiAgICAgcmV0dXJuIGY7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfRklORF9GQUNUT1JZICovCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KQEAgLTI4Niw4ICszMTQsNiBAQAogICAgIG5ld19pbmRleC0+cHJldiA9IGN1cnI7CiB9CiAKLSNpZm5kZWYgTkVUU05NUF9VU0VfSU5MSU5FIC8qIGRlZmF1bHQgaXMgdG8gaW5saW5lICovCi0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIEVYQUNUTFkgbWF0Y2ggdGhlIGlubGluZSB2ZXJzaW9uIGluCiAgKiBjb250YWluZXIuaC4gSWYgeW91IGNoYW5nZSBvbmUsIGNoYW5nZSB0aGVtIGJvdGguCkBAIC0zNTIsNiArMzc4LDcgQEAKICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgRVhBQ1RMWSBtYXRjaCB0aGUgZnVuY3Rpb24gdmVyc2lvbiBpbgogICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0RVUAogbmV0c25tcF9jb250YWluZXIgKkNPTlRBSU5FUl9EVVAobmV0c25tcF9jb250YWluZXIgKngsIHZvaWQgKmN0eCwgdV9pbnQgZmxhZ3MpCiB7CiAgICAgaWYgKE5VTEwgPT0geC0+ZHVwbGljYXRlKSB7CkBAIC0zNjEsNiArMzg4LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIHgtPmR1cGxpY2F0ZSh4LCBjdHgsIGZsYWdzKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9EVVAgKi8KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgRVhBQ1RMWSBtYXRjaCB0aGUgaW5saW5lIHZlcnNpb24gaW4KQEAgLTQxMyw2ICs0NDEsNyBAQAogICAgIHgtPmNsZWFyKHgsIGYsIGMpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0ZSRUVfQUxMCiAvKgogICogY2xlYXIgYWxsIGNvbnRhaW5lcnMuIFdoZW4gY2xlYXJpbmcgdGhlICpmaXJzdCogY29udGFpbmVyLCBhbmQKICAqICpvbmx5KiB0aGUgZmlyc3QgY29udGFpbmVyLCBjYWxsIHRoZSBmcmVlX2l0ZW0gZnVuY3Rpb24gZm9yIGVhY2ggaXRlbS4KQEAgLTQyMiw3ICs0NTEsOSBAQAogewogICAgIENPTlRBSU5FUl9DTEVBUih4LCB4LT5mcmVlX2l0ZW0sIGMpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0ZSRUVfQUxMICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVUJDT05UQUlORVJfRklORAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgRVhBQ1RMWSBtYXRjaCB0aGUgZnVuY3Rpb24gdmVyc2lvbiBpbgogICogY29udGFpbmVyLmMuIElmIHlvdSBjaGFuZ2Ugb25lLCBjaGFuZ2UgdGhlbSBib3RoLgpAQCAtNDQ2LDcgKzQ3Nyw3IEBACiAgICAgfQogICAgIHJldHVybiB4OwogfQotI2VuZGlmCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVUJDT05UQUlORVJfRklORCAqLwogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC01NTAsNiArNTgxLDcgQEAKICAgICAgICAgICAgICAgICAgICgoY29uc3QgY29udGFpbmVyX3R5cGUqKXJocyktPm5hbWUpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX05DT01QQVJFX0NTVFJJTkcKIGludAogbmV0c25tcF9uY29tcGFyZV9jc3RyaW5nKGNvbnN0IHZvaWQgKiBsaHMsIGNvbnN0IHZvaWQgKiByaHMpCiB7CkBAIC01NTcsNiArNTg5LDcgQEAKICAgICAgICAgICAgICAgICAgICAoKGNvbnN0IGNvbnRhaW5lcl90eXBlKilyaHMpLT5uYW1lLAogICAgICAgICAgICAgICAgICAgIHN0cmxlbigoKGNvbnN0IGNvbnRhaW5lcl90eXBlKilyaHMpLT5uYW1lKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTkNPTVBBUkVfQ1NUUklORyAqLwogCiBpbnQKIG5ldHNubXBfY29tcGFyZV9kaXJlY3RfY3N0cmluZyhjb25zdCB2b2lkICogbGhzLCBjb25zdCB2b2lkICogcmhzKQpAQCAtNTcxLDYgKzYwNCw3IEBACiAgKiBjb21wYXJlIHVwIHRvIHRoZSBsZW5ndGggb2YgdGhlIHNtYWxsZXIsIGFuZCB0aGVuIHVzZSBsZW5ndGggdG8KICAqIGJyZWFrIGFueSB0aWVzLgogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0NPTVBBUkVfTUVNCiBpbnQKIG5ldHNubXBfY29tcGFyZV9tZW0oY29uc3QgY2hhciAqIGxocywgc2l6ZV90IGxoc19sZW4sCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiByaHMsIHNpemVfdCByaHNfbGVuKQpAQCAtNTg3LDE2ICs2MjEsMTYgQEAKIAogICAgIHJldHVybiByYzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX01FTSAqLwogCi10eXBlZGVmIHN0cnVjdCBkdW1teV9sb25nX3MgewotICAgIGxvbmcgICAgICAgICAgICAgICAgICAgICAgaW5kZXg7Ci19IGR1bW15X2xvbmc7Ci0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9MT05HCiBpbnQKIG5ldHNubXBfY29tcGFyZV9sb25nKGNvbnN0IHZvaWQgKiBsaHMsIGNvbnN0IHZvaWQgKiByaHMpCiB7Ci0gICAgY29uc3QgZHVtbXlfbG9uZyAqbGhkID0gKGNvbnN0IGR1bW15X2xvbmcqKWxoczsKLSAgICBjb25zdCBkdW1teV9sb25nICpyaGQgPSAoY29uc3QgZHVtbXlfbG9uZyopcmhzOworICAgIHR5cGVkZWYgc3RydWN0IHsgbG9uZyBpbmRleDsgfSBkdW1teTsKKworICAgIGNvbnN0IGR1bW15ICpsaGQgPSAoY29uc3QgZHVtbXkqKWxoczsKKyAgICBjb25zdCBkdW1teSAqcmhkID0gKGNvbnN0IGR1bW15KilyaHM7CiAKICAgICBpZiAobGhkLT5pbmRleCA8IHJoZC0+aW5kZXgpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTYwNSwxNiArNjM5LDE2IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX0xPTkcgKi8KIAotdHlwZWRlZiBzdHJ1Y3QgZHVtbXlfdWxvbmdfcyB7Ci0gICAgdV9sb25nICAgICAgICAgICAgICAgICAgICAgIGluZGV4OwotfSBkdW1teV91bG9uZzsKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX1VMT05HCiBpbnQKIG5ldHNubXBfY29tcGFyZV91bG9uZyhjb25zdCB2b2lkICogbGhzLCBjb25zdCB2b2lkICogcmhzKQogewotICAgIGNvbnN0IGR1bW15X3Vsb25nICpsaGQgPSAoY29uc3QgZHVtbXlfdWxvbmcqKWxoczsKLSAgICBjb25zdCBkdW1teV91bG9uZyAqcmhkID0gKGNvbnN0IGR1bW15X3Vsb25nKilyaHM7CisgICAgdHlwZWRlZiBzdHJ1Y3QgeyB1X2xvbmcgaW5kZXg7IH0gZHVtbXk7CisKKyAgICBjb25zdCBkdW1teSAqbGhkID0gKGNvbnN0IGR1bW15KilsaHM7CisgICAgY29uc3QgZHVtbXkgKnJoZCA9IChjb25zdCBkdW1teSopcmhzOwogCiAgICAgaWYgKGxoZC0+aW5kZXggPCByaGQtPmluZGV4KQogICAgICAgICByZXR1cm4gLTE7CkBAIC02MjMsMTYgKzY1NywxNiBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9VTE9ORyAqLwogCi10eXBlZGVmIHN0cnVjdCBkdW1teV9pbnQzMl9zIHsKLSAgICBpbnQzMl90ICAgICAgICAgICAgICAgICAgICBpbmRleDsKLX0gZHVtbXlfaW50MzI7Ci0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfQ09NUEFSRV9JTlQzMgogaW50CiBuZXRzbm1wX2NvbXBhcmVfaW50MzIoY29uc3Qgdm9pZCAqIGxocywgY29uc3Qgdm9pZCAqIHJocykKIHsKLSAgICBjb25zdCBkdW1teV9pbnQzMiAqbGhkID0gKGNvbnN0IGR1bW15X2ludDMyKilsaHM7Ci0gICAgY29uc3QgZHVtbXlfaW50MzIgKnJoZCA9IChjb25zdCBkdW1teV9pbnQzMiopcmhzOworICAgIHR5cGVkZWYgc3RydWN0IHsgaW50MzJfdCBpbmRleDsgfSBkdW1teTsKKworICAgIGNvbnN0IGR1bW15ICpsaGQgPSAoY29uc3QgZHVtbXkqKWxoczsKKyAgICBjb25zdCBkdW1teSAqcmhkID0gKGNvbnN0IGR1bW15KilyaHM7CiAKICAgICBpZiAobGhkLT5pbmRleCA8IHJoZC0+aW5kZXgpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTY0MSwxNiArNjc1LDE2IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX0lOVDMyICovCiAKLXR5cGVkZWYgc3RydWN0IGR1bW15X3VpbnQzMl9zIHsKLSAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICBpbmRleDsKLX0gZHVtbXlfdWludDMyOwotCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0NPTVBBUkVfVUlOVDMyCiBpbnQKIG5ldHNubXBfY29tcGFyZV91aW50MzIoY29uc3Qgdm9pZCAqIGxocywgY29uc3Qgdm9pZCAqIHJocykKIHsKLSAgICBjb25zdCBkdW1teV91aW50MzIgKmxoZCA9IChjb25zdCBkdW1teV91aW50MzIqKWxoczsKLSAgICBjb25zdCBkdW1teV91aW50MzIgKnJoZCA9IChjb25zdCBkdW1teV91aW50MzIqKXJoczsKKyAgICB0eXBlZGVmIHN0cnVjdCB7IHVpbnQzMl90IGluZGV4OyB9IGR1bW15OworCisgICAgY29uc3QgZHVtbXkgKmxoZCA9IChjb25zdCBkdW1teSopbGhzOworICAgIGNvbnN0IGR1bW15ICpyaGQgPSAoY29uc3QgZHVtbXkqKXJoczsKIAogICAgIGlmIChsaGQtPmluZGV4IDwgcmhkLT5pbmRleCkKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNjU5LDYgKzY5Myw3IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9DT01QQVJFX1VJTlQzMiAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogbmV0c25tcF9jb250YWluZXJfc2ltcGxlX2ZyZWUKZGlmZiAtLWdpdCBhL3NubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jIGIvc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMKaW5kZXggYTMwOTI0OC4uMGY1Y2Y2MiAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMKKysrIGIvc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMKQEAgLTM3LDcgKzM3LDYgQEAKICAgICBzaXplX3QgICAgICAgICAgICAgICAgICAgICBtYXhfc2l6ZTsgICAvKiBTaXplIG9mIHRoZSBjdXJyZW50IGRhdGEgdGFibGUgKi8KICAgICBzaXplX3QgICAgICAgICAgICAgICAgICAgICBjb3VudDsgICAgICAvKiBJbmRleCBvZiB0aGUgbmV4dCBmcmVlIGVudHJ5ICovCiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgZGlydHk7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zaXplOyAgLyogU2l6ZSBvZiBhbiBpbmRpdmlkdWFsIGVudHJ5ICovCiAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgICoqZGF0YTsgICAgICAgLyogVGhlIHRhYmxlIGl0c2VsZiAqLwogfSBiaW5hcnlfYXJyYXlfdGFibGU7CiAKQEAgLTIyMSw3ICsyMjAsNiBAQAogICAgIHQtPm1heF9zaXplID0gMDsKICAgICB0LT5jb3VudCA9IDA7CiAgICAgdC0+ZGlydHkgPSAwOwotICAgIHQtPmRhdGFfc2l6ZSA9IHNpemVvZih2b2lkKik7CiAgICAgdC0+ZGF0YSA9IE5VTEw7CiAKICAgICByZXR1cm4gdDsKQEAgLTIzMSw5ICsyMjksNyBAQAogbmV0c25tcF9iaW5hcnlfYXJyYXlfcmVsZWFzZShuZXRzbm1wX2NvbnRhaW5lciAqYykKIHsKICAgICBiaW5hcnlfYXJyYXlfdGFibGUgKnQgPSAoYmluYXJ5X2FycmF5X3RhYmxlKiljLT5jb250YWluZXJfZGF0YTsKLSAgICBpZiAodC0+ZGF0YSAhPSBOVUxMKSB7Ci0JU05NUF9GUkVFKHQtPmRhdGEpOwotICAgIH0KKyAgICBTTk1QX0ZSRUUodC0+ZGF0YSk7CiAgICAgU05NUF9GUkVFKHQpOwogICAgIFNOTVBfRlJFRShjKTsKIH0KQEAgLTI4OCw2ICsyODQsMjQgQEAKICAgICBpZiAoa2V5KSB7CiAgICAgICAgIGlmICgoaW5kZXggPSBiaW5hcnlfc2VhcmNoKGtleSwgYywgZXhhY3QpKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIWV4YWN0ICYmCisgICAgICAgICAgICBjLT5mbGFncyAmIENPTlRBSU5FUl9LRVlfQUxMT1dfRFVQTElDQVRFUykgeworICAgICAgICAgICAgaW50IHJlc3VsdDsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIElmIGR1cGxpY2F0ZXMgYXJlIGFsbG93ZWQsIHdlIGhhdmUgdG8gYmUgZXh0cmEKKyAgICAgICAgICAgICAqIHN1cmUgdGhhdCB3ZSBkaWRuJ3QganVzdCBpbmNyZW1lbnQgdG8gYSBkdXBsaWNhdGUsCisgICAgICAgICAgICAgKiB0aHVzIGNhdXNpbmcgYSBnZXRuZXh0IGxvb3AuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJlc3VsdCA9IGMtPmNvbXBhcmUodC0+ZGF0YVtpbmRleF0sIGtleSk7CisgICAgICAgICAgICB3aGlsZSAocmVzdWx0ID09IDApIHsKKwkJREVCVUdNU0dUTCgoImNvbnRhaW5lciIsInNraXBwaW5nIGR1cGxpY2F0ZSBrZXkgaW4gJXNcbiIsCisJCQkJCSAgICBjLT5jb250YWluZXJfbmFtZSkpOworICAgICAgICAgICAgICAgIGlmICgrK2luZGV4ID09IHQtPmNvdW50KQorICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGMtPmNvbXBhcmUodC0+ZGF0YVtpbmRleF0sIGtleSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAgICByZXR1cm4gdC0+ZGF0YVtpbmRleF07CkBAIC0zMjIsNyArMzM2LDcgQEAKICAgICAgICAgICogb3RoZXJ3aXNlLCBzaGlmdCBhcnJheSBkb3duCiAgICAgICAgICAqLwogICAgICAgICBtZW1tb3ZlKCZ0LT5kYXRhW2luZGV4XSwgJnQtPmRhdGFbaW5kZXgrMV0sCi0gICAgICAgICAgICAgICAgdC0+ZGF0YV9zaXplICogKHQtPmNvdW50IC0gaW5kZXgpKTsKKyAgICAgICAgICAgICAgICBzaXplb2Yodm9pZCopICogKHQtPmNvdW50IC0gaW5kZXgpKTsKIAogICAgICAgICArK2MtPnN5bmM7CiAgICAgfQpAQCAtMzk3LDE2ICs0MTEsMTMgQEAKIG5ldHNubXBfYmluYXJ5X2FycmF5X2luc2VydChuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqZW50cnkpCiB7CiAgICAgYmluYXJ5X2FycmF5X3RhYmxlICp0ID0gKGJpbmFyeV9hcnJheV90YWJsZSopYy0+Y29udGFpbmVyX2RhdGE7Ci0gICAgaW50ICAgICAgICAgICAgIG5ld19tYXgsIG5ld19zaXplLCB3YXNfZGlydHkgPSAwOwotICAgIGNoYXIgICAgICAgICAgICpuZXdfZGF0YTsgICAvKiBVc2VkIGZvciAqIGEpIGV4dGVuZGluZyB0aGUgZGF0YSB0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAqIGIpIHRoZSBuZXh0IGVudHJ5IHRvIHVzZSAqLworICAgIGludCAgICAgICAgICAgICB3YXNfZGlydHkgPSAwOwogICAgIC8qCiAgICAgICogY2hlY2sgZm9yIGR1cGxpY2F0ZXMKICAgICAgKi8KICAgICBpZiAoISAoYy0+ZmxhZ3MgJiBDT05UQUlORVJfS0VZX0FMTE9XX0RVUExJQ0FURVMpKSB7CiAgICAgICAgIHdhc19kaXJ0eSA9IHQtPmRpcnR5OwotICAgICAgICBuZXdfZGF0YSA9IG5ldHNubXBfYmluYXJ5X2FycmF5X2dldChjLCBlbnRyeSwgMSk7Ci0gICAgICAgIGlmIChOVUxMICE9IG5ld19kYXRhKSB7CisgICAgICAgIGlmIChOVUxMICE9IG5ldHNubXBfYmluYXJ5X2FycmF5X2dldChjLCBlbnRyeSwgMSkpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJjb250YWluZXIiLCJub3QgaW5zZXJ0aW5nIGR1cGxpY2F0ZSBrZXlcbiIpKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQpAQCAtNDE3LDIyICs0MjgsMjAgQEAKICAgICAgKi8KICAgICBpZiAodC0+bWF4X3NpemUgPD0gdC0+Y291bnQpIHsKICAgICAgICAgLyoKLSAgICAgICAgICogVGFibGUgaXMgZnVsbCwgc28gZXh0ZW5kIGl0IHRvIGRvdWJsZSB0aGUgc2l6ZQorICAgICAgICAgKiBUYWJsZSBpcyBmdWxsLCBzbyBleHRlbmQgaXQgdG8gZG91YmxlIHRoZSBzaXplLCBvciB1c2UgMTAgZWxlbWVudHMKKyAgICAgICAgICogaWYgaXQgaXMgZW1wdHkuCiAgICAgICAgICAqLwotICAgICAgICBuZXdfbWF4ID0gMiAqIHQtPm1heF9zaXplOwotICAgICAgICBpZiAobmV3X21heCA9PSAwKQotICAgICAgICAgICAgbmV3X21heCA9IDEwOyAgICAgICAvKiBTdGFydCB3aXRoIDEwIGVudHJpZXMgKi8KKyAgICAgICAgc2l6ZV90IGNvbnN0IG5ld19tYXggPSB0LT5tYXhfc2l6ZSA+IDAgPyAyICogdC0+bWF4X3NpemUgOiAxMDsKKyAgICAgICAgdm9pZCAqKiBjb25zdCBuZXdfZGF0YSA9CisgICAgICAgICAgICAodm9pZCoqKSByZWFsbG9jKHQtPmRhdGEsIG5ld19tYXggKiBzaXplb2Yodm9pZCopKTsKIAotICAgICAgICBuZXdfc2l6ZSA9IG5ld19tYXggKiB0LT5kYXRhX3NpemU7Ci0gICAgICAgIG5ld19kYXRhID0gKGNoYXIgKikgcmVhbGxvYyh0LT5kYXRhLCBuZXdfc2l6ZSk7CiAgICAgICAgIGlmIChuZXdfZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGludCBvbGRfc2l6ZSA9IHQtPm1heF9zaXplICogdC0+ZGF0YV9zaXplOwotICAgICAgICAgICAgaW50IGNvdW50ID0gbmV3X3NpemUgLSBvbGRfc2l6ZTsKLSAgICAgICAgICAgIG1lbXNldCgmbmV3X2RhdGFbb2xkX3NpemVdLCAweDAsIGNvdW50KTsKLSAgICAgICAgfQotICAgICAgICB0LT5kYXRhID0gKHZvaWQqKiluZXdfZGF0YTsKKworICAgICAgICBtZW1zZXQobmV3X2RhdGEgKyB0LT5tYXhfc2l6ZSwgMHgwLAorICAgICAgICAgICAgICAgKG5ld19tYXggLSB0LT5tYXhfc2l6ZSkgKiBzaXplb2Yodm9pZCopKTsKKworICAgICAgICB0LT5kYXRhID0gbmV3X2RhdGE7CiAgICAgICAgIHQtPm1heF9zaXplID0gbmV3X21heDsKICAgICB9CiAKQEAgLTUzMiw5ICs1NDEsOSBAQAogICAgIH0KIAogICAgICpsZW4gPSBlbmQgLSBzdGFydCArIDE7Ci0gICAgc3Vic2V0ID0gKHZvaWQgKiopbWFsbG9jKCgqbGVuKSAqIHQtPmRhdGFfc2l6ZSk7CisgICAgc3Vic2V0ID0gKHZvaWQgKiopbWFsbG9jKCgqbGVuKSAqIHNpemVvZih2b2lkKikpOwogICAgIGlmIChzdWJzZXQpCi0gICAgICAgIG1lbWNweShzdWJzZXQsICZ0LT5kYXRhW3N0YXJ0XSwgdC0+ZGF0YV9zaXplICogKCpsZW4pKTsKKyAgICAgICAgbWVtY3B5KHN1YnNldCwgJnQtPmRhdGFbc3RhcnRdLCBzaXplb2Yodm9pZCopICogKCpsZW4pKTsKIAogICAgIHJldHVybiBzdWJzZXQ7CiB9CkBAIC02NTcsMjAgKzY2NiwxOSBAQAogICAgIGR1cHQtPm1heF9zaXplID0gdC0+bWF4X3NpemU7CiAgICAgZHVwdC0+Y291bnQgPSB0LT5jb3VudDsKICAgICBkdXB0LT5kaXJ0eSA9IHQtPmRpcnR5OwotICAgIGR1cHQtPmRhdGFfc2l6ZSA9IHQtPmRhdGFfc2l6ZTsKIAogICAgIC8qCiAgICAgICogc2hhbGxvdyBjb3B5CiAgICAgICovCi0gICAgZHVwdC0+ZGF0YSA9ICh2b2lkKiopIGNhbGxvYyhkdXB0LT5tYXhfc2l6ZSwgZHVwdC0+ZGF0YV9zaXplKTsKKyAgICBkdXB0LT5kYXRhID0gKHZvaWQqKikgbWFsbG9jKGR1cHQtPm1heF9zaXplICogc2l6ZW9mKHZvaWQqKSk7CiAgICAgaWYgKE5VTEwgPT0gZHVwdC0+ZGF0YSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gbWVtb3J5IGZvciBiaW5hcnkgYXJyYXkgZHVwbGljYXRlXG4iKTsKICAgICAgICAgbmV0c25tcF9iaW5hcnlfYXJyYXlfcmVsZWFzZShkdXApOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBtZW1jcHkoZHVwdC0+ZGF0YSwgdC0+ZGF0YSwgZHVwdC0+bWF4X3NpemUgKiBkdXB0LT5kYXRhX3NpemUpOwotICAgIAorICAgIG1lbWNweShkdXB0LT5kYXRhLCB0LT5kYXRhLCBkdXB0LT5tYXhfc2l6ZSAqIHNpemVvZih2b2lkKikpOworCiAgICAgcmV0dXJuIGR1cDsKIH0KIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYyBiL3NubXBsaWIvY29udGFpbmVyX2l0ZXJhdG9yLmMKaW5kZXggZTI2ZDk5ZS4uNDFiMTRmZiAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXJfaXRlcmF0b3IuYworKysgYi9zbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jCkBAIC00LDYgKzQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpZiBIQVZFX1NURExJQl9ICkBAIC0yOCw2ICsyOSw5IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2l0ZXJhdG9yLCBjb250YWluZXJfdHlwZXMpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfSVRFUkFUT1IKIC8qKgogICogIEhvbGRzIGl0ZXJhdG9yIGluZm9ybWF0aW9uIGNvbnRhaW5pbmcgZnVuY3Rpb25zIHdoaWNoIHNob3VsZCBiZSBjYWxsZWQKICAqICBieSB0aGUgaXRlcmF0b3JfaGFuZGxlciB0byBsb29wIG92ZXIgeW91ciBkYXRhIHNldCBhbmQgc29ydCBpdCBpbiBhCkBAIC01MDQsMyArNTA4LDYgQEAKICAgICBpaS0+cmVtb3ZlX2RhdGEgPSByZW1vdmVfZGF0YTsKICAgICBpaS0+Z2V0X3NpemUgPSBnZXRfc2l6ZTsKIH0KKyNlbHNlICAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9JVEVSQVRPUiAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChjb250YWluZXJfaXRlcmF0b3IpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0lURVJBVE9SICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYyBiL3NubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCmluZGV4IDY1ZTM5NjguLjdmZjAxYzQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCisrKyBiL3NubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCkBAIC00LDYgKzQsNyBAQAogICoKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2lmIEhBVkVfU1RETElCX0gKQEAgLTI4LDYgKzI5LDE5IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9saW5rZWRfbGlzdCwgY29udGFpbmVyX3R5cGVzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9maWZvLCBjb250YWluZXJfdHlwZXMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY29udGFpbmVyX2xpZm8sIGNvbnRhaW5lcl90eXBlcykKKworLyogdGhpcyBpcyBhIGZhbmN5IHdheSBvZiBjbGVhbmluZyB1cCBpZmRlZnMgKi8KKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DT05UQUlORVJfRklGTworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2xpbmtlZF9saXN0KQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0NPTlRBSU5FUl9GSUZPICovCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfQ09OVEFJTkVSX0xJRk8KK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNvbnRhaW5lcl9saW5rZWRfbGlzdCkKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DT05UQUlORVJfTElGTyAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0xJTktFRF9MSVNUCiB0eXBlZGVmIHN0cnVjdCBzbF9ub2RlIHsKICAgIHZvaWQgICAgICAgICAgICpkYXRhOwogICAgc3RydWN0IHNsX25vZGUgKm5leHQ7CkBAIC01NTEsMyArNTY1LDYgQEAKIAogICAgIHJldHVybiAobmV0c25tcF9pdGVyYXRvciAqKWl0OwogfQorI2Vsc2UgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTElOS0VEX0xJU1QgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQoY29udGFpbmVyX2xpbmtlZF9saXN0KTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9MSU5LRURfTElTVCAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXJfbnVsbC5jIGIvc25tcGxpYi9jb250YWluZXJfbnVsbC5jCmluZGV4IDA0Y2NhMjEuLjFmNDg3MGUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyX251bGwuYworKysgYi9zbm1wbGliL2NvbnRhaW5lcl9udWxsLmMKQEAgLTcsNiArNyw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpZiBIQVZFX0lPX0gKICNpbmNsdWRlIDxpby5oPgpAQCAtMzMsNiArMzQsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb250YWluZXJfbnVsbCwgY29udGFpbmVyX3R5cGVzKQorCiAvKiogQGRlZmdyb3VwIG51bGxfY29udGFpbmVyIG51bGxfY29udGFpbmVyCiAgKiAgSGVscHMgeW91IGltcGxlbWVudCBzcGVjaWFsaXplZCBjb250YWluZXJzLgogICogIEBpbmdyb3VwIGNvbnRhaW5lcgpAQCAtNTAsNiArNTMsNyBAQAogICogIEB7CiAgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9OVUxMCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIGNvbnRhaW5lcgpAQCAtMTgwLDUgKzE4NCw4IEBACiAgICAgbmV0c25tcF9jb250YWluZXJfcmVnaXN0ZXIoIm51bGwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9udWxsX2ZhY3RvcnkoKSk7CiB9CisjZWxzZSAgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTlVMTCAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChjb250YWluZXJfbnVsbCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT05UQUlORVJfTlVMTCAqLwogLyoqICBAfSAqLwogCmRpZmYgLS1naXQgYS9zbm1wbGliL2RhdGFfbGlzdC5jIGIvc25tcGxpYi9kYXRhX2xpc3QuYwppbmRleCBjMzc5ZmE2Li41MDVkNGZjIDEwMDY0NAotLS0gYS9zbm1wbGliL2RhdGFfbGlzdC5jCisrKyBiL3NubXBsaWIvZGF0YV9saXN0LmMKQEAgLTQsOCArNCwxNCBAQAogICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGF0YV9saXN0X2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRhdGFfbGlzdF9hZGRfZGF0YSwgZGF0YV9saXN0X2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkYXRhX2xpc3RfZ2V0X2xpc3Rfbm9kZSwgZGF0YV9saXN0X2FsbCkKKwogLyoqIEBkZWZncm91cCBkYXRhX2xpc3QgZ2VuZXJpYyBsaW5rZWQtbGlzdCBkYXRhIGhhbmRsaW5nIHdpdGggYSBzdHJpbmcgYXMgYSBrZXkuCiAgKiBAaW5ncm91cCBsaWJyYXJ5CiAgKiBAewpAQCAtNjIsOCArNjgsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBub2RlLT5uYW1lID0gc3RyZHVwKG5hbWUpOwogICAgIGlmICghbm9kZS0+bmFtZSkgewotICAgICAgZnJlZShub2RlKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBmcmVlKG5vZGUpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbm9kZS0+ZGF0YSA9IGRhdGE7CiAgICAgbm9kZS0+ZnJlZV9mdW5jID0gYmVlcjsKQEAgLTEzMSw2ICsxMzcsNyBAQAogICogQHBhcmFtIGJlZXIgQSBmdW5jdGlvbiB0aGF0IGNhbiBmcmVlIHRoZSBkYXRhIHBvaW50ZXIgKGluIHRoZSBmdXR1cmUpCiAgKiBAcmV0dXJuIGEgbmV3bHkgY3JlYXRlZCBkYXRhX2xpc3Qgbm9kZSB3aGljaCB3YXMgaW5zZXJ0ZWQgaW4gdGhlIGxpc3QKICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RBVEFfTElTVF9BRERfREFUQQogTkVUU05NUF9JTkxJTkUgbmV0c25tcF9kYXRhX2xpc3QgKgogbmV0c25tcF9kYXRhX2xpc3RfYWRkX2RhdGEobmV0c25tcF9kYXRhX2xpc3QgKipoZWFkLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgTmV0c25tcF9GcmVlX0xpc3RfRGF0YSAqIGJlZXIpCkBAIC0xNTAsNiArMTU3LDcgQEAKIAogICAgIHJldHVybiBub2RlOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREFUQV9MSVNUX0FERF9EQVRBICovCiAKIC8qKiByZXR1cm5zIGEgZGF0YV9saXN0IG5vZGUncyBkYXRhIGZvciBhIGdpdmVuIG5hbWUgd2l0aGluIGEgZGF0YV9saXN0CiAgKiBAcGFyYW0gaGVhZCB0aGUgaGVhZCBub2RlIG9mIGEgZGF0YV9saXN0CkBAIC0xNzQsNiArMTgyLDcgQEAKICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIHRvIGZpbmQKICAqIEByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkYXRhX2xpc3Qgbm9kZQogICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREFUQV9MSVNUX0dFVF9MSVNUX05PREUKIE5FVFNOTVBfSU5MSU5FIG5ldHNubXBfZGF0YV9saXN0ICAgICoKIG5ldHNubXBfZ2V0X2xpc3Rfbm9kZShuZXRzbm1wX2RhdGFfbGlzdCAqaGVhZCwgY29uc3QgY2hhciAqbmFtZSkKIHsKQEAgLTE4Niw2ICsxOTUsNyBAQAogICAgICAgICByZXR1cm4gaGVhZDsKICAgICByZXR1cm4gTlVMTDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RBVEFfTElTVF9HRVRfTElTVF9OT0RFICovCiAKIC8qKiBSZW1vdmVzIGEgbmFtZWQgbm9kZSBmcm9tIGEgZGF0YV9saXN0IChhbmQgZnJlZXMgaXQpCiAgKiBAcGFyYW0gcmVhbGhlYWQgYSBwb2ludGVyIHRvIHRoZSBoZWFkIG5vZGUgb2YgYSBkYXRhX2xpc3QKZGlmZiAtLWdpdCBhL3NubXBsaWIvZGVmYXVsdF9zdG9yZS5jIGIvc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMKaW5kZXggODNmNGUzNC4uOGRiYzliYyAxMDA2NDQKLS0tIGEvc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMKKysrIGIvc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMKQEAgLTEyNiw2ICsxMjYsNyBAQAogICogIEB7CiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTE1Nyw2ICsxNTgsMTQgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGRlZmF1bHRfc3RvcmVfYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZGVmYXVsdF9zdG9yZV92b2lkLCBkZWZhdWx0X3N0b3JlX2FsbCkKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFRkFVTFRfU1RPUkVfVk9JRAorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVGQVVMVF9TVE9SRV9WT0lEICovCisKKwogc3RhdGljIGNvbnN0IGNoYXIgKiBzdG9yZXMgW05FVFNOTVBfRFNfTUFYX0lEU10gPSB7ICJMSUIiLCAiQVBQIiwgIlRPSyIgfTsKIAogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9kc19yZWFkX2NvbmZpZ19zIHsKQEAgLTE3Myw3ICsxODIsOSBAQAogc3RhdGljIGludCAgIG5ldHNubXBfZHNfaW50ZWdlcnNbTkVUU05NUF9EU19NQVhfSURTXVtORVRTTk1QX0RTX01BWF9TVUJJRFNdOwogc3RhdGljIGNoYXIgIG5ldHNubXBfZHNfYm9vbGVhbnNbTkVUU05NUF9EU19NQVhfSURTXVtORVRTTk1QX0RTX01BWF9TVUJJRFMvOF07CiBzdGF0aWMgY2hhciAqbmV0c25tcF9kc19zdHJpbmdzW05FVFNOTVBfRFNfTUFYX0lEU11bTkVUU05NUF9EU19NQVhfU1VCSURTXTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUZBVUxUX1NUT1JFX1ZPSUQKIHN0YXRpYyB2b2lkICpuZXRzbm1wX2RzX3ZvaWRzW05FVFNOTVBfRFNfTUFYX0lEU11bTkVUU05NUF9EU19NQVhfU1VCSURTXTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RFRkFVTFRfU1RPUkVfVk9JRCAqLwogCiAvKgogICogUHJvdG90eXBlIGRlZmluaXRpb25zIApAQCAtMzEzLDYgKzMyNCw3IEBACiAgICAgcmV0dXJuIG5ldHNubXBfZHNfc3RyaW5nc1tzdG9yZWlkXVt3aGljaF07CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ERUZBVUxUX1NUT1JFX1ZPSUQKIGludAogbmV0c25tcF9kc19zZXRfdm9pZChpbnQgc3RvcmVpZCwgaW50IHdoaWNoLCB2b2lkICp2YWx1ZSkKIHsKQEAgLTMzOSw2ICszNTEsNyBAQAogCiAgICAgcmV0dXJuIG5ldHNubXBfZHNfdm9pZHNbc3RvcmVpZF1bd2hpY2hdOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfREVGQVVMVF9TVE9SRV9WT0lEICovCiAKIGludAogbmV0c25tcF9kc19wYXJzZV9ib29sZWFuKGNoYXIgKmxpbmUpCmRpZmYgLS1naXQgYS9zbm1wbGliL2Rpcl91dGlscy5jIGIvc25tcGxpYi9kaXJfdXRpbHMuYwppbmRleCBhOTc1MDVkLi5kMzVlNzAwIDEwMDY0NAotLS0gYS9zbm1wbGliL2Rpcl91dGlscy5jCisrKyBiL3NubXBsaWIvZGlyX3V0aWxzLmMKQEAgLTksNiArOSw3IEBACiAgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTQ3LDYgKzQ4LDEzIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNvbnRhaW5lcl9kaXJlY3RvcnksIGNvbnRhaW5lcl90eXBlcykKKyNpZmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9DT05UQUlORVJfRElSRUNUT1JZCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShmaWxlX3V0aWxzKQorbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY29udGFpbmVyX2ZyZWVfYWxsKQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRVFVSVJFX0NPTlRBSU5FUl9ESVJFQ1RPUlkgKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9ESVJFQ1RPUlkKIHN0YXRpYyBpbnQKIF9pbnNlcnRfbnNmaWxlKCBuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0YXQgKnN0YXRzLAogICAgICAgICAgICAgICAgIHVfaW50IGZsYWdzKTsKQEAgLTIyOSwxMCArMjM3LDEzIEBACiAgICAgICAgIH0KICAgICAKICAgICAgICAgLyoqIHVzZSBzdGF0cyBmcm9tIGVhcmxpZXIgaWYgd2UgaGF2ZSB0aGVtICovCi0gICAgICAgIGlmIChzdGF0cykKKyAgICAgICAgaWYgKHN0YXRzKSB7CiAgICAgICAgICAgICBtZW1jcHkobnNfZmlsZS0+c3RhdHMsIHN0YXRzLCBzaXplb2YoKnN0YXRzKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHN0YXQobnNfZmlsZS0+bmFtZSwgbnNfZmlsZS0+c3RhdHMpOworICAgICAgICB9IGVsc2UgaWYgKHN0YXQobnNfZmlsZS0+bmFtZSwgbnNfZmlsZS0+c3RhdHMpIDwgMCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInN0YXQoKSBmYWlsZWQgZm9yIG5zX2ZpbGVcbiIpOworICAgICAgICAgICAgbmV0c25tcF9maWxlX3JlbGVhc2UobnNfZmlsZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICB9CiAKICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoYywgbnNfZmlsZSk7CkBAIC0yNDMsMyArMjU0LDYgQEAKIAogICAgIHJldHVybiAwOwogfQorI2Vsc2UgIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ09OVEFJTkVSX0RJUkVDVE9SWSAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChjb250YWluZXJfZGlyZWN0b3J5KTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NPTlRBSU5FUl9ESVJFQ1RPUlkgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jIGIvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKaW5kZXggMjA0NTRmNy4uZjljZjA4ZSAxMDA2NDQKLS0tIGEvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKKysrIGIvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKQEAgLTQsMTIgKzQsMTUgQEAKICNpbmNsdWRlIDxzeXMvc2VsZWN0Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZkX2V2ZW50X21hbmFnZXIsIGxpYm5ldHNubXApCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSCiBpbnQgICAgIGV4dGVybmFsX3JlYWRmZFtOVU1fRVhURVJOQUxfRkRTXSwgICBleHRlcm5hbF9yZWFkZmRsZW4gICA9IDA7CiBpbnQgICAgIGV4dGVybmFsX3dyaXRlZmRbTlVNX0VYVEVSTkFMX0ZEU10sICBleHRlcm5hbF93cml0ZWZkbGVuICA9IDA7CiBpbnQgICAgIGV4dGVybmFsX2V4Y2VwdGZkW05VTV9FWFRFUk5BTF9GRFNdLCBleHRlcm5hbF9leGNlcHRmZGxlbiA9IDA7CkBAIC0yODksMyArMjkyLDYgQEAKICAgICAgIH0KICAgfQogfQorI2Vsc2UgIC8qICAhTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSICovCituZXRzbm1wX2ZlYXR1cmVfdW51c2VkKGZkX2V2ZW50X21hbmFnZXIpOworI2VuZGlmIC8qICAhTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GRF9FVkVOVF9NQU5BR0VSICovCmRpZmYgLS1naXQgYS9zbm1wbGliL2ZpbGVfdXRpbHMuYyBiL3NubXBsaWIvZmlsZV91dGlscy5jCmluZGV4IDg4OWQ1NTIuLjUyNjE0MzEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZmlsZV91dGlscy5jCisrKyBiL3NubXBsaWIvZmlsZV91dGlscy5jCkBAIC0xLDQgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0zNyw3ICszOCwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmaWxlX3V0aWxzX2FsbCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmaWxlX3V0aWxzLCBmaWxlX3V0aWxzX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmaWxlX2Nsb3NlLCBmaWxlX3V0aWxzX2FsbCkKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTEVfVVRJTFMKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogUHJvdG90eXBlcwpAQCAtMjA2LDYgKzIxMSw3IEBACiAgKiBAcmV0dmFsICAwIDogc3VjY2VzcwogICogQHJldHZhbCAtMSA6IGVycm9yCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSUxFX0NMT1NFCiBpbnQKIG5ldHNubXBfZmlsZV9jbG9zZShuZXRzbm1wX2ZpbGUgKiBmaWxlaSkKIHsKQEAgLTIzNiw2ICsyNDIsNyBAQAogCiAgICAgcmV0dXJuIHJjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklMRV9DTE9TRSAqLwogCiB2b2lkCiBuZXRzbm1wX2ZpbGVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9maWxlICpmaWxlLCB2b2lkICpjb250ZXh0KQpAQCAtMjUxLDMgKzI1OCw2IEBACiAKICAgICByZXR1cm4gc3RyY21wKGxocy0+bmFtZSwgcmhzLT5uYW1lKTsKIH0KKyNlbHNlIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklMRV9VVElMUyAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChmaWxlX3V0aWxzKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTEVfVVRJTFMgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvZ2V0dGltZW9mZGF5LmMgYi9zbm1wbGliL2dldHRpbWVvZmRheS5jCmluZGV4IDNjNzVkM2EuLmRmNWMwYTAgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZ2V0dGltZW9mZGF5LmMKKysrIGIvc25tcGxpYi9nZXR0aW1lb2ZkYXkuYwpAQCAtMjgsNiArMjgsNiBAQAogCiAgICAgX2Z0aW1lKCZ0aW1lYnVmZmVyKTsKICAgICB0di0+dHZfdXNlYyA9IHRpbWVidWZmZXIubWlsbGl0bSAqIDEwMDA7Ci0gICAgdHYtPnR2X3NlYyA9IHRpbWVidWZmZXIudGltZTsKKyAgICB0di0+dHZfc2VjID0gKGxvbmcpdGltZWJ1ZmZlci50aW1lOwogICAgIHJldHVybiAoMCk7CiB9CmRpZmYgLS1naXQgYS9zbm1wbGliL2ludDY0LmMgYi9zbm1wbGliL2ludDY0LmMKaW5kZXggMmQ4Njk1OS4uNTFmMWYzMiAxMDA2NDQKLS0tIGEvc25tcGxpYi9pbnQ2NC5jCisrKyBiL3NubXBsaWIvaW50NjQuYwpAQCAtMjMsNiArMjMsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiAvKioKICAqIERpdmlkZSBhbiB1bnNpZ25lZCA2NC1iaXQgaW50ZWdlciBieSAxMC4KICAqCkBAIC0xOTcsNiArMTk5LDggQEAKICAgICB1NjRJbmNyKHB1NjRvdXQsICZ0bXApOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodTY0Y29weSwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVTY0Q09QWQogLyoqCiAgKiBDb3B5IGEgNjQtYml0IG51bWJlci4KICAqCkBAIC0yMDgsNiArMjEyLDcgQEAKIHsKICAgICAqcHU2NG9uZSA9ICpwdTY0dHdvOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVTY0Q09QWSAqLwogCiAvKioKICAqIFNldCBhbiB1bnNpZ25lZCA2NC1iaXQgbnVtYmVyIHRvIHplcm8uCmRpZmYgLS1naXQgYS9zbm1wbGliL2tleXRvb2xzLmMgYi9zbm1wbGliL2tleXRvb2xzLmMKaW5kZXggYzFkYmNkNi4uMGNjYjNhNiAxMDA2NDQKLS0tIGEvc25tcGxpYi9rZXl0b29scy5jCisrKyBiL3NubXBsaWIva2V5dG9vbHMuYwpAQCAtMTQsNiArMTQsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTYyLDYgKzYzLDExIEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fc3VwcG9ydCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fa2V5dG9vbHMsIHVzbV9zdXBwb3J0KQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX0tFWVRPT0xTCisKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCiAgKiBnZW5lcmF0ZV9LdQogICoKQEAgLTY1Myw4ICs2NTksNyBAQAogICAgICAgICAgICAgbWVtc2V0KG5ld2tleSwgMCwgcHJvcGVybGVuZ3RoKTsKICAgICB9CiAgICAgbWVtc2V0KHRtcF9idWYsIDAsIFNOTVBfTUFYQlVGKTsKLSAgICBpZiAodG1wYnVmICE9IE5VTEwpCi0gICAgICAgIFNOTVBfRlJFRSh0bXBidWYpOworICAgIFNOTVBfRlJFRSh0bXBidWYpOwogCiAgICAgcmV0dXJuIHJ2YWw7CiAKQEAgLTY2MywzICs2NjgsNCBAQAogI2Vsc2UKIF9LRVlUT09MU19OT1RfQVZBSUxBQkxFCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGludGVybmFsIG9yIG9wZW5zc2wgKi8KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VTTV9LRVlUT09MUyAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9sYXJnZV9mZF9zZXQuYyBiL3NubXBsaWIvbGFyZ2VfZmRfc2V0LmMKaW5kZXggODkwNThhYS4uODhkZDQ4MSAxMDA2NDQKLS0tIGEvc25tcGxpYi9sYXJnZV9mZF9zZXQuYworKysgYi9zbm1wbGliL2xhcmdlX2ZkX3NldC5jCkBAIC0xMzQsMTAgKzEzNCwxMCBAQAogfQogCiBpbnQKLW5ldF9zbm1wX2xhcmdlX2ZkX3NldF9zZWxlY3QoaW50IG51bWZkcywgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAotICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMsCi0gICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpCituZXRzbm1wX2xhcmdlX2ZkX3NldF9zZWxlY3QoaW50IG51bWZkcywgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZXhjZXB0ZmRzLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpCiB7CiAjaWYgZGVmaW5lZChjeWd3aW4pIHx8ICFkZWZpbmVkKEhBVkVfV0lOU09DS19IKQogICAgIC8qIEJpdC1zZXQgcmVwcmVzZW50YXRpb246IG1ha2Ugc3VyZSBhbGwgZmRzIGhhdmUgYXQgbGVhc3Qgc2l6ZSAnbnVtZmRzJy4gKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvbGNkX3RpbWUuYyBiL3NubXBsaWIvbGNkX3RpbWUuYwppbmRleCAyMjIyOTA0Li4yYmZhNTQ5IDEwMDY0NAotLS0gYS9zbm1wbGliL2xjZF90aW1lLmMKKysrIGIvc25tcGxpYi9sY2RfdGltZS5jCkBAIC02LDYgKzYsNyBAQAogICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTUyLDYgKzUzLDExIEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fc3VwcG9ydCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1c21fbGNkX3RpbWUsIHVzbV9zdXBwb3J0KQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX0xDRF9USU1FCisKIC8qCiAgKiBHbG9iYWwgc3RhdGljIGhhc2hsaXN0IHRvIGNvbnRhaW4gRW5naW5ldGltZSBlbnRyaWVzLgogICoKQEAgLTk0LDcgKzEwMCw3IEBACiAgICAgICAgICAgICAgICB1X2ludCAqIGVuZ2luZV90aW1lLCB1X2ludCBhdXRoZW50aWNhdGVkKQogewogICAgIGludCAgICAgICAgICAgICBydmFsID0gU05NUEVSUl9TVUNDRVNTOwotICAgIHRpbWVfdCAgICAgICAgICB0aW1lZGlmZiA9IDA7CisgICAgaW50ICAgICAgICAgICAgIHRpbWVkaWZmID0gMDsKICAgICBFbmdpbmV0aW1lICAgICAgZSA9IE5VTEw7CiAKIApAQCAtMTI2LDcgKzEzMiw3IEBACiAgICAgICAgICplbmdpbmVfdGltZSA9IGUtPmVuZ2luZVRpbWU7CiAgICAgICAgICplbmdpbmVib290ID0gZS0+ZW5naW5lQm9vdDsKIAotICAgICAgIHRpbWVkaWZmID0gc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCkgLSBlLT5sYXN0UmVjZWl2ZWRFbmdpbmVUaW1lOworICAgICAgIHRpbWVkaWZmID0gKGludCkgKHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSgpIC0gZS0+bGFzdFJlY2VpdmVkRW5naW5lVGltZSk7CiAKICNpZmRlZiBMQ0RfVElNRV9TWU5DX09QVAogICAgIH0KQEAgLTE5MCw3ICsxOTYsNyBAQAogICAgICAgICAgICAgICAgICAgdV9pbnQgKiBsYXN0X2VuZ2luZV90aW1lLCB1X2ludCBhdXRoZW50aWNhdGVkKQogewogICAgIGludCAgICAgICAgICAgICBydmFsID0gU05NUEVSUl9TVUNDRVNTOwotICAgIHRpbWVfdCAgICAgICAgICB0aW1lZGlmZiA9IDA7CisgICAgaW50ICAgICAgICAgICAgIHRpbWVkaWZmID0gMDsKICAgICBFbmdpbmV0aW1lICAgICAgZSA9IE5VTEw7CiAKIApAQCAtMjIyLDcgKzIyOCw3IEBACiAgICAgICAgICpsYXN0X2VuZ2luZV90aW1lID0gKmVuZ2luZV90aW1lID0gZS0+ZW5naW5lVGltZTsKICAgICAgICAgKmVuZ2luZWJvb3QgPSBlLT5lbmdpbmVCb290OwogCi0gICAgICAgdGltZWRpZmYgPSBzbm1wdjNfbG9jYWxfc25tcEVuZ2luZVRpbWUoKSAtIGUtPmxhc3RSZWNlaXZlZEVuZ2luZVRpbWU7CisgICAgICAgdGltZWRpZmYgPSAoaW50KSAoc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCkgLSBlLT5sYXN0UmVjZWl2ZWRFbmdpbmVUaW1lKTsKIAogI2lmZGVmIExDRF9USU1FX1NZTkNfT1BUCiAgICAgfQpAQCAtNjA1LDMgKzYxMSw0IEBACiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIGR1bXBfZXRpbWVsaXN0KCkgKi8KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VU01fTENEX1RJTUUgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvbWliLmMgYi9zbm1wbGliL21pYi5jCmluZGV4IGU3ZmM4NDkuLmU3OTA4NzggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvbWliLmMKKysrIGIvc25tcGxpYi9taWIuYwpAQCAtMzgsNiArMzgsNyBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC0xMDQsNiArMTA1LDE5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1pYl9hcGksIGxpYm5ldHNubXApCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWliX3N0cmluZ3NfYWxsLCBtaWJfYXBpKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWliX3NucHJpbnQsIG1pYl9zdHJpbmdzX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtaWJfc25wcmludF9kZXNjcmlwdGlvbiwgbWliX3N0cmluZ3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1pYl9zbnByaW50X3ZhcmlhYmxlLCBtaWJfc3RyaW5nc19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWliX3N0cmluZ19jb252ZXJzaW9ucywgbWliX3N0cmluZ3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHByaW50X21pYiwgbWliX3N0cmluZ3NfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNucHJpbnRfb2JqaWQsIG1pYl9zdHJpbmdzX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbnByaW50X3ZhbHVlLCBtaWJfc3RyaW5nc19hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtaWJfdG9fYXNuX3R5cGUsIG1pYl9hcGkpCisKIC8qKiBAZGVmZ3JvdXAgbWliX3V0aWxpdGllcyBtaWIgcGFyc2luZyBhbmQgZGF0YXR5cGUgbWFuaXB1bGF0aW9uIHJvdXRpbmVzLgogICogIEBpbmdyb3VwIGxpYnJhcnkKICAqCkBAIC0yODk5LDcgKzI5MTMsNiBAQAogICAgICAgICBpZiAodHJlZV90b3AtPmxhYmVsKQogICAgICAgICAgICAgU05NUF9GUkVFKHRyZWVfdG9wLT5sYWJlbCk7CiAgICAgICAgIFNOTVBfRlJFRSh0cmVlX3RvcCk7Ci0gICAgICAgIHRyZWVfdG9wID0gTlVMTDsKICAgICB9CiAgICAgdHJlZV9oZWFkID0gTlVMTDsKICAgICBNaWIgPSBOVUxMOwpAQCAtMjkyNSwxMSArMjkzOCwxMyBAQAogICoKICAqIEBwYXJhbSBmcCAgIFRoZSBmaWxlIGRlc2NyaXB0b3IgdG8gcHJpbnQgdG8uCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9QUklOVF9NSUIKIHZvaWQKIHByaW50X21pYihGSUxFICogZnApCiB7CiAgICAgcHJpbnRfc3VidHJlZShmcCwgdHJlZV9oZWFkLCAwKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BSSU5UX01JQiAqLwogCiB2b2lkCiBwcmludF9hc2NpaV9kdW1wKEZJTEUgKiBmcCkKQEAgLTMzMTAsNiArMzMyNSw3IEBACiAgICAgcmV0dXJuICFidWZfb3ZlcmZsb3c7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TUFJJTlRfT0JKSUQKIGludAogc25wcmludF9vYmppZChjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKQpAQCAtMzMyMyw2ICszMzM5LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NQUklOVF9PQkpJRCAqLwogCiAvKioKICAqIFByaW50cyBhbiBvaWQgdG8gc3Rkb3V0LgpAQCAtMzQ2MCw2ICszNDc3LDcgQEAKICAgICB9CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTlBSSU5UX1ZBUkFCTEUKIGludAogc25wcmludF92YXJpYWJsZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLApAQCAtMzQ3NCw2ICszNDkyLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOUFJJTlRfVkFSQUJMRSAqLwogCiAvKioKICAqIFByaW50cyBhIHZhcmlhYmxlIHRvIHN0ZG91dC4KQEAgLTM1NjgsNiArMzU4Nyw4IEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05QUklOVF9WQUxVRQorLyogdXNlZCBpbiB0aGUgcGVybCBtb2R1bGUgKi8KIGludAogc25wcmludF92YWx1ZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLApAQCAtMzU4Miw2ICszNjAzLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOUFJJTlRfVkFMVUUgKi8KIAogdm9pZAogcHJpbnRfdmFsdWUoY29uc3Qgb2lkICogb2JqaWQsCkBAIC00Njg1LDYgKzQ3MDcsNyBAQAogICAgIFNOTVBfRlJFRShidWYpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1NOUFJJTlRfREVTQ1JJUFRJT04KIGludAogc25wcmludF9kZXNjcmlwdGlvbihjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICAgICAgICBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpCkBAIC00Njk4LDYgKzQ3MjEsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1NOUFJJTlRfREVTQ1JJUFRJT04gKi8KIAogaW50CiBzcHJpbnRfcmVhbGxvY19kZXNjcmlwdGlvbih1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLApAQCAtNjAxMyw3ICs2MDM3LDYgQEAKIAogLyoqCiAgKiBDb252ZXJ0cyB0aW1ldGlja3MgdG8gaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMgc3RyaW5nLgotICogQ01VIGNvbXBhdGlibGUgZG9lcyBub3Qgc2hvdyBjZW50aXNlY29uZHMuCiAgKgogICogQHBhcmFtIHRpbWV0aWNrcyAgICBUaGUgdGltZXRpY2tzIHRvIGNvbnZlcnQuCiAgKiBAcGFyYW0gYnVmICAgICAgICAgIEJ1ZmZlciB0byB3cml0ZSB0bywgaGFzIHRvIGJlIGF0IApAQCAtNjAzMywxMyArNjA1Niw2IEBACiB1cHRpbWVfc3RyaW5nX24odV9sb25nIHRpbWV0aWNrcywgY2hhciAqYnVmLCBzaXplX3QgYnVmbGVuKQogewogICAgIHVwdGltZVN0cmluZyh0aW1ldGlja3MsIGJ1ZiwgYnVmbGVuKTsKLSNpZmRlZiBDTVVfQ09NUEFUSUJMRQotICAgIHsKLSAgICBjaGFyICpjcCA9IHN0cnJjaHIoYnVmLCAnLicpOwotICAgIGlmIChjcCkKLSAgICAgICAgKmNwID0gJ1wwJzsKLSAgICB9Ci0jZW5kaWYKICAgICByZXR1cm4gYnVmOwogfQogCkBAIC02MzkyLDYgKzY0MDgsNyBAQAogCiAjZW5kaWYgLyogdGVzdF9kaXNwbGF5X2hpbnQgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01JQl9UT19BU05fVFlQRQogdV9jaGFyCiBtaWJfdG9fYXNuX3R5cGUoaW50IG1pYl90eXBlKQogewpAQCAtNjQ0MSw2ICs2NDU4LDcgQEAKICAgICB9CiAgICAgcmV0dXJuIC0xOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1RPX0FTTl9UWVBFICovCiAKIC8qKgogICogQ29udmVydHMgYSBzdHJpbmcgdG8gaXRzIE9JRCBmb3JtLgpAQCAtNjQ1Miw2ICs2NDcwLDcgQEAKICAqCiAgKiBAcmV0dXJuIDAgb24gU3VjZXNzLCAxIG9uIGZhaWx1cmUuCiAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NSUJfU1RSSU5HX0NPTlZFUlNJT05TCiBpbnQKIG5ldHNubXBfc3RyMm9pZChjb25zdCBjaGFyICpTLCBvaWQgKiBPLCBpbnQgTCkKIHsKQEAgLTY1MzEsNyArNjU1MCwxMCBAQAogCiAgICAgcmV0dXJuIDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NSUJfU1RSSU5HX0NPTlZFUlNJT05TICovCiAKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01JQl9TTlBSSU5UCiBpbnQKIHNucHJpbnRfYnlfdHlwZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAogICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKQEAgLTY4MDksNSArNjgzMSw2IEBACiAgICAgICAgIHJldHVybiAtMTsKIH0KICNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUlCX1NOUFJJTlQgKi8KIC8qKiBAfSAqLwogCmRpZmYgLS1naXQgYS9zbm1wbGliL29pZF9zdGFzaC5jIGIvc25tcGxpYi9vaWRfc3Rhc2guYwppbmRleCA4NjBhYmFiLi44YTc5ODk3IDEwMDY0NAotLS0gYS9zbm1wbGliL29pZF9zdGFzaC5jCisrKyBiL3NubXBsaWIvb2lkX3N0YXNoLmMKQEAgLTUsOCArNSwxNSBAQAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX2FsbCwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvaWRfc3Rhc2gsIG9pZF9zdGFzaF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX25vX2ZyZWUsIG9pZF9zdGFzaF9hbGwpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0gKKwogLyoqIEBkZWZncm91cCBvaWRfc3Rhc2ggU3RvcmUgYW5kIHJldHJpZXZlIGRhdGEgcmVmZXJlbmNlZCBieSBhbiBPSUQuCiAgICAgVGhpcyBpcyBlc3NlbnRpYWxseSBhIHdheSBvZiBzdG9yaW5nIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4KICAgICBPSUQuICBJdCBzdG9yZXMgYSBidW5jaCBvZiBkYXRhIHBvaW50ZXJzIHdpdGhpbiBhIG1lbW9yeSB0cmVlIHRoYXQKQEAgLTY4LDYgKzc1LDggQEAKICAgICByZXR1cm4gbmV0c25tcF9vaWRfc3Rhc2hfY3JlYXRlX3NpemVkX25vZGUoT0lEX1NUQVNIX0NISUxEUkVOX1NJWkUpOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX2FkZF9kYXRhLCBvaWRfc3Rhc2hfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9BRERfREFUQQogLyoqIGFkZHMgZGF0YSB0byB0aGUgc3Rhc2ggYXQgYSBnaXZlbiBvaWQuCiAKICAqIEBwYXJhbSByb290IHRoZSB0b3Agb2YgdGhlIHN0YXNoIHRyZWUKQEAgLTE0NCw2ICsxNTMsNyBAQAogICAgIHRtcHAtPnRoZWRhdGEgPSBteWRhdGE7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9BRERfREFUQSAqLwogCiAvKiogcmV0dXJucyBhIG5vZGUgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gT0lELgogICogQHBhcmFtIHJvb3QgdGhlIHRvcCBvZiB0aGUgc3Rhc2ggdHJlZQpAQCAtMTg3LDYgKzE5Nyw4IEBACiAgKiBAcGFyYW0gbG9va3VwIHRoZSBvaWQgdG8gbG9vayB1cCBhIG5vZGUgZm9yLgogICogQHBhcmFtIGxvb2t1cF9sZW4gdGhlIGxlbmd0aCBvZiB0aGUgbG9va3VwIG9pZAogICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX2l0ZXJhdGUsIG9pZF9zdGFzaF9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX0lURVJBVEUKIG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKgogbmV0c25tcF9vaWRfc3Rhc2hfZ2V0bmV4dF9ub2RlKG5ldHNubXBfb2lkX3N0YXNoX25vZGUgKnJvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbikKQEAgLTI2OCw3ICsyODAsMTAgQEAKICAgICAvKiBmZWxsIG9mZiB0aGUgdG9wICovCiAgICAgcmV0dXJuIE5VTEw7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0hfSVRFUkFURSAqLwogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob2lkX3N0YXNoX2dldF9kYXRhLCBvaWRfc3Rhc2hfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9HRVRfREFUQQogLyoqIHJldHVybnMgYSBkYXRhIHBvaW50ZXIgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gT0lELgogCiAgICAgVGhpcyBpcyBlcXVpdmVsZW50IHRvIG5ldHNubXBfb2lkX3N0YXNoX2dldF9ub2RlLCBidXQgcmV0dXJucyBvbmx5CkBAIC0yODgsNyArMzAzLDEwIEBACiAgICAgICAgIHJldHVybiByZXQtPnRoZWRhdGE7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0hfR0VUX0RBVEEgKi8KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG9pZF9zdGFzaF9zdG9yZV9hbGwsIG9pZF9zdGFzaF9hbGwpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX1NUQVNIX1NUT1JFX0FMTAogLyoqIGEgd3JhcHBlciBhcm91bmQgbmV0c25tcF9vaWRfc3Rhc2hfc3RvcmUgZm9yIHVzZSB3aXRoIGEgc25tcF9hbGFybS4KICAqIHdoZW4gY2FsbGluZyBzbm1wX2FsYXJtLCB5b3UgY2FuIGxpc3QgdGhpcyBhcyBhIGNhbGxiYWNrLiAgVGhlCiAgKiBjbGllbnRhcmcgc2hvdWxkIGJlIGEgcG9pbnRlciB0byBhIG5ldHNubXBfb2lkX3N0YXNoX3NhdmVfaW5mbwpAQCAtMzE0LDYgKzMzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkYmFzZSwwKTsKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9TVE9SRV9BTEwgKi8KIAogLyoqIHN0b3JlcyBkYXRhIGluIGEgc3RhcnNoIHRyZWUgdG8gcGVyaXN0ZW50IHN0b3JhZ2UuCiAKQEAgLTQyNywxMCArNDQ2LDE2IEBACiAgICAgKnJvb3QgPSBOVUxMOwogfQogCisjZWxzZSAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSCAqLworbmV0c25tcF9mZWF0dXJlX3VudXNlZChvaWRfc3Rhc2gpOworI2VuZGlmLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PSURfU1RBU0ggKi8KKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9OT19GUkVFCiB2b2lkCiBuZXRzbm1wX29pZF9zdGFzaF9ub19mcmVlKHZvaWQgKmJvZ3VzKQogewogICAgIC8qIG5vb3AgKi8KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9TVEFTSF9OT19GUkVFICovCiAKIC8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9wYXJzZS5jIGIvc25tcGxpYi9wYXJzZS5jCmluZGV4IDgxN2M4OTcuLjRkNDRkODggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvcGFyc2UuYworKysgYi9zbm1wbGliL3BhcnNlLmMKQEAgLTMzLDYgKzMzLDcgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORwogCkBAIC0xMDYsNiArMTA3LDEwIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9wYXJzZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbWliLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGZpbmRfbW9kdWxlLCBtaWJfYXBpKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGdldF90Y19kZXNjcmlwdGlvbiwgbWliX2FwaSkKIAogLyoKICAqIEEgbGlua2VkIGxpc3Qgb2Ygbm9kZXMuCkBAIC01MjksNyArNTM0LDExIEBACiAgKiAjZGVmaW5lIE1PRFVMRV9MT0FEX0ZBSUxFRCAgIDMgICAgICAgCiAgKi8KICNkZWZpbmUgTU9EVUxFX0xPQURfRkFJTEVECU1PRFVMRV9OT1RfRk9VTkQKKyNkZWZpbmUgTU9EVUxFX1NZTlRBWF9FUlJPUiAgICAgNAogCitpbnQgZ01pYkVycm9yID0gMCxnTG9vcCA9IDA7CitjaGFyICpncE1pYkVycm9yU3RyaW5nID0gTlVMTDsKK2NoYXIgZ01pYk5hbWVzW1NUUklOR01BWF07CiAKICNkZWZpbmUgSEFTSFNJWkUgICAgICAgIDMyCiAjZGVmaW5lIEJVQ0tFVCh4KSAgICAgICAoeCAmIChIQVNIU0laRS0xKSkKQEAgLTc3NCwxMSArNzgzLDE0IEBACiAKIHN0YXRpYyBpbnQgICAgICBlcnJvbmVvdXNNaWJzID0gMDsKIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHBhcnNlX2dldF9lcnJvcl9jb3VudCwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfR0VUX0VSUk9SX0NPVU5UCiBpbnQKIGdldF9taWJfcGFyc2VfZXJyb3JfY291bnQodm9pZCkKIHsKICAgICByZXR1cm4gZXJyb25lb3VzTWliczsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0dFVF9FUlJPUl9DT1VOVCAqLwogCiAKIHN0YXRpYyB2b2lkCkBAIC05MDYsOSArOTE4LDkgQEAKIAogICAgIHVubGlua190YnVja2V0KFRyZWUpOwogICAgIGZyZWVfcGFydGlhbF90cmVlKFRyZWUsIEZBTFNFKTsKLSAgICBpZiAoVHJlZS0+bnVtYmVyX21vZHVsZXMgPiAxKQotICAgICAgICBmcmVlKChjaGFyICopIFRyZWUtPm1vZHVsZV9saXN0KTsKLSAgICBmcmVlKChjaGFyICopIFRyZWUpOworICAgIGlmIChUcmVlLT5tb2R1bGVfbGlzdCAhPSAmVHJlZS0+bW9kaWQpCisgICAgICAgIGZyZWUoVHJlZS0+bW9kdWxlX2xpc3QpOworICAgIGZyZWUoVHJlZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNTU5LDE1ICsxNTcxLDE0IEBACiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBVcGRhdGUgbGlzdCBvZiBtb2R1bGVzIAogICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGludF9wID0KLSAgICAgICAgICAgICAgICAgICAgKGludCAqKSBtYWxsb2MoKHRwLT5udW1iZXJfbW9kdWxlcyArIDEpICogc2l6ZW9mKGludCkpOworICAgICAgICAgICAgICAgIGludF9wID0gbWFsbG9jKCh0cC0+bnVtYmVyX21vZHVsZXMgKyAxKSAqIHNpemVvZihpbnQpKTsKICAgICAgICAgICAgICAgICBpZiAoaW50X3AgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIG1lbWNweShpbnRfcCwgdHAtPm1vZHVsZV9saXN0LAogICAgICAgICAgICAgICAgICAgICAgICB0cC0+bnVtYmVyX21vZHVsZXMgKiBzaXplb2YoaW50KSk7CiAgICAgICAgICAgICAgICAgaW50X3BbdHAtPm51bWJlcl9tb2R1bGVzXSA9IG5wLT5tb2RpZDsKLSAgICAgICAgICAgICAgICBpZiAodHAtPm51bWJlcl9tb2R1bGVzID4gMSkKLSAgICAgICAgICAgICAgICAgICAgZnJlZSgoY2hhciAqKSB0cC0+bW9kdWxlX2xpc3QpOworICAgICAgICAgICAgICAgIGlmICh0cC0+bW9kdWxlX2xpc3QgIT0gJnRwLT5tb2RpZCkKKyAgICAgICAgICAgICAgICAgICAgZnJlZSh0cC0+bW9kdWxlX2xpc3QpOwogICAgICAgICAgICAgICAgICsrdHAtPm51bWJlcl9tb2R1bGVzOwogICAgICAgICAgICAgICAgIHRwLT5tb2R1bGVfbGlzdCA9IGludF9wOwogCkBAIC0yMTQwLDYgKzIxNTEsOCBAQAogICAgIHJldHVybiAodGNsaXN0W3RjX2luZGV4XS5kZXNjcmlwdG9yKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0dFVF9UQ19ERVNDUklQVElPTgorLyogdXNlZCBpbiB0aGUgcGVybCBtb2R1bGUgKi8KIGNvbnN0IGNoYXIgICAgICoKIGdldF90Y19kZXNjcmlwdGlvbihpbnQgdGNfaW5kZXgpCiB7CkBAIC0yMTQ3LDYgKzIxNjAsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gKHRjbGlzdFt0Y19pbmRleF0uZGVzY3JpcHRpb24pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX1RDX0RFU0NSSVBUSU9OICovCiAKIAogLyoKQEAgLTI5NzUsNiArMjk4OSwxNSBAQAogICAgICAgICBmcmVlX25vZGUobnApOwogICAgICAgICByZXR1cm4gKE5VTEwpOwogICAgIH0KKworICAgIC8qIENhdGNoIHRoZSBzeW50YXggZXJyb3IgKi8KKyAgICBpZiAobnAtPnBhcmVudCA9PSBOVUxMKSB7CisgICAgICAgIGZyZWVfbm9kZShucC0+bmV4dCk7CisgICAgICAgIGZyZWVfbm9kZShucCk7CisgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CisgICAgICAgIHJldHVybiAoTlVMTCk7CisgICAgfQorCiAgICAgbnAtPm5leHQtPnBhcmVudCA9IG5wLT5wYXJlbnQ7CiAgICAgbnAtPnBhcmVudCA9IChjaGFyICopIG1hbGxvYyhzdHJsZW4obnAtPnBhcmVudCkgKyAyKTsKICAgICBpZiAobnAtPnBhcmVudCA9PSBOVUxMKSB7CkBAIC0zNzU0LDYgKzM3NzcsOCBAQAogICogICAgICBvciB0aG9zZSByZWxhdGluZyB0byBhIHNwZWNpZmllZCBpZGVudGlmaWVyIChyZWFkX2ltcG9ydF9yZXBsYWNlbWVudHMpCiAgKiAgICAgIHBsdXMgYW4gaW50ZXJmYWNlIHRvIGFkZCBuZXcgcmVwbGFjZW1lbnQgcmVxdWlyZW1lbnRzCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihwYXJzZV9hZGRfbW9kdWxlX3JlcGxhY2VtZW50LCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9QQVJTRV9BRERfTU9EVUxFX1JFUExBQ0VNRU5UCiB2b2lkCiBhZGRfbW9kdWxlX3JlcGxhY2VtZW50KGNvbnN0IGNoYXIgKm9sZF9tb2R1bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5ld19tb2R1bGVfbmFtZSwKQEAgLTM3NzUsNiArMzgwMCw3IEBACiAgICAgbWNwLT5uZXh0ID0gbW9kdWxlX21hcF9oZWFkOwogICAgIG1vZHVsZV9tYXBfaGVhZCA9IG1jcDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0FERF9NT0RVTEVfUkVQTEFDRU1FTlQgKi8KIAogc3RhdGljIGludAogcmVhZF9tb2R1bGVfcmVwbGFjZW1lbnRzKGNvbnN0IGNoYXIgKm5hbWUpCkBAIC0zODUwLDYgKzM4NzYsNyBAQAogewogICAgIHN0cnVjdCBtb2R1bGUgICptcDsKICAgICBGSUxFICAgICAgICAgICAqZnA7CisgICAgc3RydWN0IG5vZGUgICAgKm5wOwogCiAgICAgbmV0c25tcF9pbml0X21pYl9pbnRlcm5hbHMoKTsKIApAQCAtMzg2NSw5ICszODkyLDE3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE1PRFVMRV9BTFJFQURZX0xPQURFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgoZnAgPSBmb3BlbihtcC0+ZmlsZSwgInIiKSkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGludCBydmFsOworICAgICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFTk9URElSIHx8IGVycm5vID09IEVOT0VOVCkKKyAgICAgICAgICAgICAgICAgICAgcnZhbCA9IE1PRFVMRV9OT1RfRk9VTkQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBydmFsID0gTU9EVUxFX0xPQURfRkFJTEVEOwogICAgICAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcihtcC0+ZmlsZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1PRFVMRV9MT0FEX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnZhbDsKICAgICAgICAgICAgIH0KKyNpZmRlZiBIQVZFX0ZMT0NLRklMRQorICAgICAgICAgICAgZmxvY2tmaWxlKGZwKTsKKyNlbmRpZgogICAgICAgICAgICAgbXAtPm5vX2ltcG9ydHMgPSAwOyAvKiBOb3RlIHRoYXQgd2UndmUgcmVhZCB0aGUgZmlsZSAqLwogICAgICAgICAgICAgRmlsZSA9IG1wLT5maWxlOwogICAgICAgICAgICAgbWliTGluZSA9IDE7CkBAIC0zODc1LDExICszOTEwLDE2IEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogUGFyc2UgdGhlIGZpbGUKICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgcGFyc2UoZnAsIE5VTEwpOworICAgICAgICAgICAgbnAgPSBwYXJzZShmcCwgTlVMTCk7CisjaWZkZWYgSEFWRV9GVU5MT0NLRklMRQorICAgICAgICAgICAgZnVubG9ja2ZpbGUoZnApOworI2VuZGlmCiAgICAgICAgICAgICBmY2xvc2UoZnApOwogICAgICAgICAgICAgRmlsZSA9IG9sZEZpbGU7CiAgICAgICAgICAgICBtaWJMaW5lID0gb2xkTGluZTsKICAgICAgICAgICAgIGN1cnJlbnRfbW9kdWxlID0gb2xkTW9kdWxlOworICAgICAgICAgICAgaWYgKChucCA9PSBOVUxMKSAmJiAoZ01pYkVycm9yID09IE1PRFVMRV9TWU5UQVhfRVJST1IpICkKKyAgICAgICAgICAgICAgICByZXR1cm4gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgIHJldHVybiBNT0RVTEVfTE9BREVEX09LOwogICAgICAgICB9CiAKQEAgLTM5NjgsOSArNDAwOCwyMCBAQAogc3RydWN0IHRyZWUgICAgKgogbmV0c25tcF9yZWFkX21vZHVsZShjb25zdCBjaGFyICpuYW1lKQogewotICAgIGlmIChyZWFkX21vZHVsZV9pbnRlcm5hbChuYW1lKSA9PSBNT0RVTEVfTk9UX0ZPVU5EKQorICAgIGludCBzdGF0dXMgPSAwOworICAgIHN0YXR1cyA9IHJlYWRfbW9kdWxlX2ludGVybmFsKG5hbWUpOworCisgICAgaWYgKHN0YXR1cyA9PSBNT0RVTEVfTk9UX0ZPVU5EKSB7CiAgICAgICAgIGlmICghcmVhZF9tb2R1bGVfcmVwbGFjZW1lbnRzKG5hbWUpKQotCSAgICBwcmludF9tb2R1bGVfbm90X2ZvdW5kKG5hbWUpOworICAgICAgICAgICAgcHJpbnRfbW9kdWxlX25vdF9mb3VuZChuYW1lKTsKKyAgICB9IGVsc2UgaWYgKHN0YXR1cyA9PSBNT0RVTEVfU1lOVEFYX0VSUk9SKSB7CisgICAgICAgIGdNaWJFcnJvciA9IDA7CisgICAgICAgIGdMb29wID0gMTsKKworICAgICAgICBzdHJuY2F0KGdNaWJOYW1lcywgIiAiLCBzaXplb2YoZ01pYk5hbWVzKSAtIHN0cmxlbihnTWliTmFtZXMpIC0gMSk7CisgICAgICAgIHN0cm5jYXQoZ01pYk5hbWVzLCBuYW1lLCBzaXplb2YoZ01pYk5hbWVzKSAtIHN0cmxlbihnTWliTmFtZXMpIC0gMSk7CisgICAgfQorCiAgICAgcmV0dXJuIHRyZWVfaGVhZDsKIH0KIApAQCAtNDI5MCw2ICs0MzQxLDcgQEAKICAgICAgICAgY2FzZSBFTkQ6CiAgICAgICAgICAgICBpZiAoc3RhdGUgIT0gSU5fTUlCKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkVycm9yLCBFTkQgYmVmb3JlIHN0YXJ0IG9mIE1JQiIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHN0cnVjdCBtb2R1bGUgICptcDsKQEAgLTQzNTMsNiArNDQwNSw3IEBACiAgICAgICAgICAgICAgICAgbm5wID0gcGFyc2VfbWFjcm8oZnAsIG5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiQmFkIHBhcnNlIG9mIE1BQ1JPIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAqIHJldHVybiBOVUxMOwogICAgICAgICAgICAgICAgICAgICAgKi8KQEAgLTQzNzYsNiArNDQyOSw3IEBACiAgICAgICAgICAgICAgICAgdHlwZSA9IGdldF90b2tlbihmcCwgdG9rZW4sIE1BWFRPS0VOKTsKICAgICAgICAgICAgIGlmICh0eXBlID09IEVORE9GRklMRSkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJFeHBlY3RlZCBcIn1cIiIsIHRva2VuLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdHlwZSA9IGdldF90b2tlbihmcCwgdG9rZW4sIE1BWFRPS0VOKTsKQEAgLTQzODUsNiArNDQzOSw3IEBACiAgICAgICAgIGNhc2UgREVGSU5JVElPTlM6CiAgICAgICAgICAgICBpZiAoc3RhdGUgIT0gQkVUV0VFTl9NSUJTKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkVycm9yLCBuZXN0ZWQgTUlCUyIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdGF0ZSA9IElOX01JQjsKQEAgLTQ0MDksNiArNDQ2NCw3IEBACiAgICAgICAgICAgICBubnAgPSBwYXJzZV9vYmplY3R0eXBlKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgT0JKRUNULVRZUEUiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDE2LDYgKzQ0NzIsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2Vfb2JqZWN0Z3JvdXAoZnAsIG5hbWUsIE9CSkVDVFMsICZvYmplY3RzKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgT0JKRUNULUdST1VQIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQyMyw2ICs0NDgwLDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX29iamVjdGdyb3VwKGZwLCBuYW1lLCBOT1RJRklDQVRJT05TLCAmbm90aWZzKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgTk9USUZJQ0FUSU9OLUdST1VQIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQzMCw2ICs0NDg4LDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX3RyYXBEZWZpbml0aW9uKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgVFJBUC1UWVBFIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQzNyw2ICs0NDk2LDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX25vdGlmaWNhdGlvbkRlZmluaXRpb24oZnAsIG5hbWUpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBOT1RJRklDQVRJT04tVFlQRSIsIE5VTEwsIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ0NDQsNiArNDUwNCw3IEBACiAgICAgICAgICAgICBubnAgPSBwYXJzZV9jb21wbGlhbmNlKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgTU9EVUxFLUNPTVBMSUFOQ0UiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDUxLDYgKzQ1MTIsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2VfY2FwYWJpbGl0aWVzKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgQUdFTlQtQ0FQQUJJTElUSUVTIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ1OCw2ICs0NTIwLDcgQEAKICAgICAgICAgICAgIG5ucCA9IHBhcnNlX21hY3JvKGZwLCBuYW1lKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgTUFDUk8iLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgICovCkBAIC00NDY5LDYgKzQ1MzIsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2VfbW9kdWxlSWRlbnRpdHkoZnAsIG5hbWUpOwogICAgICAgICAgICAgaWYgKG5ucCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBwYXJzZSBvZiBNT0RVTEUtSURFTlRJVFkiLCBOVUxMLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC00NDc2LDYgKzQ1NDAsNyBAQAogICAgICAgICAgICAgbm5wID0gcGFyc2Vfb2JqZWN0Z3JvdXAoZnAsIG5hbWUsIE9CSkVDVFMsICZvYmplY3RzKTsKICAgICAgICAgICAgIGlmIChubnAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJCYWQgcGFyc2Ugb2YgT0JKRUNULUlERU5USVRZIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDQ4MywxNiArNDU0OCwxOSBAQAogICAgICAgICAgICAgdHlwZSA9IGdldF90b2tlbihmcCwgdG9rZW4sIE1BWFRPS0VOKTsKICAgICAgICAgICAgIGlmICh0eXBlICE9IElERU5USUZJRVIpIHsKICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiRXhwZWN0ZWQgSURFTlRJRklFUiIsIHRva2VuLCB0eXBlKTsKKyAgICAgICAgICAgICAgICBnTWliRXJyb3IgPSBNT0RVTEVfU1lOVEFYX0VSUk9SOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdHlwZSA9IGdldF90b2tlbihmcCwgdG9rZW4sIE1BWFRPS0VOKTsKICAgICAgICAgICAgIGlmICh0eXBlICE9IEVRVUFMUykgewogICAgICAgICAgICAgICAgIHByaW50X2Vycm9yKCJFeHBlY3RlZCBcIjo6PVwiIiwgdG9rZW4sIHR5cGUpOworICAgICAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBubnAgPSBwYXJzZV9vYmplY3RpZChmcCwgbmFtZSk7CiAgICAgICAgICAgICBpZiAobm5wID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBwcmludF9lcnJvcigiQmFkIHBhcnNlIG9mIE9CSkVDVCBJREVOVElGSUVSIiwgTlVMTCwgdHlwZSk7CisgICAgICAgICAgICAgICAgZ01pYkVycm9yID0gTU9EVUxFX1NZTlRBWF9FUlJPUjsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDUwNCw2ICs0NTcyLDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcHJpbnRfZXJyb3IoIkJhZCBvcGVyYXRvciIsIHRva2VuLCB0eXBlKTsKKyAgICAgICAgICAgIGdNaWJFcnJvciA9IE1PRFVMRV9TWU5UQVhfRVJST1I7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAobm5wKSB7CkBAIC00NTM3LDYgKzQ2MDYsMjEgQEAKICAgICByZXR1cm4gMDsKIH0KIAorLyoqCisgKiBSZWFkIGEgc2luZ2xlIGNoYXJhY3RlciBmcm9tIGEgZmlsZS4gQXNzdW1lcyB0aGF0IHRoZSBjYWxsZXIgaGFzIGludm9rZWQKKyAqIGZsb2NrZmlsZSgpLiBVc2VzIGZnZXRjX3VubG9ja2VkKCkgaW5zdGVhZCBvZiBnZXRjKCkgc2luY2UgdGhlIGZvcm1lciBpcworICogaW1wbGVtZW50ZWQgYXMgYW4gaW5saW5lIGZ1bmN0aW9uIGluIGdsaWJjLiBTZWUgYWxzbyBidWcgMzQ0NzE5NgorICogKGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/ZnVuYz1kZXRhaWwmYWlkPTM0NDcxOTYmZ3JvdXBfaWQ9MTI2OTQmYXRpZD0xMTI2OTQpLgorICovCitzdGF0aWMgaW50IG5ldHNubXBfZ2V0YyhGSUxFICpzdHJlYW0pCit7CisjaWZkZWYgSEFWRV9GR0VUQ19VTkxPQ0tFRAorICAgIHJldHVybiBmZ2V0Y191bmxvY2tlZChzdHJlYW0pOworI2Vsc2UKKyAgICByZXR1cm4gZ2V0YyhzdHJlYW0pOworI2VuZGlmCit9CisKIC8qCiAgKiBQYXJzZXMgYSB0b2tlbiBmcm9tIHRoZSBmaWxlLiAgVGhlIHR5cGUgb2YgdGhlIHRva2VuIHBhcnNlZCBpcyByZXR1cm5lZCwKICAqIGFuZCB0aGUgdGV4dCBpcyBwbGFjZWQgaW4gdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5IHRva2VuLgpAQCAtNDU1Niw3ICs0NjQwLDcgQEAKICAgICAgKiBza2lwIGFsbCB3aGl0ZSBzcGFjZSAKICAgICAgKi8KICAgICBkbyB7Ci0gICAgICAgIGNoID0gZ2V0YyhmcCk7CisgICAgICAgIGNoID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgaWYgKGNoID09ICdcbicpCiAgICAgICAgICAgICBtaWJMaW5lKys7CiAgICAgfQpAQCAtNDU3MCw3ICs0NjU0LDcgQEAKICAgICAgICAgcmV0dXJuIHBhcnNlUXVvdGVTdHJpbmcoZnAsIHRva2VuLCBtYXh0bGVuKTsKICAgICBjYXNlICdcJyc6ICAgICAgICAgICAgICAgICAvKiBiaW5hcnkgb3IgaGV4IGNvbnN0YW50ICovCiAgICAgICAgIHNlZW5TeW1ib2xzID0gYmRpZ2l0czsKLSAgICAgICAgd2hpbGUgKChjaCA9IGdldGMoZnApKSAhPSBFT0YgJiYgY2ggIT0gJ1wnJykgeworICAgICAgICB3aGlsZSAoKGNoID0gbmV0c25tcF9nZXRjKGZwKSkgIT0gRU9GICYmIGNoICE9ICdcJycpIHsKICAgICAgICAgICAgIHN3aXRjaCAoc2VlblN5bWJvbHMpIHsKICAgICAgICAgICAgIGNhc2UgYmRpZ2l0czoKICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJzAnIHx8IGNoID09ICcxJykKQEAgLTQ1ODksNyArNDY3Myw3IEBACiAgICAgICAgIGlmIChjaCA9PSAnXCcnKSB7CiAgICAgICAgICAgICB1bnNpZ25lZCBsb25nICAgdmFsID0gMDsKICAgICAgICAgICAgIGNoYXIgICAgICAgICAgICpydW4gPSB0b2tlbiArIDE7Ci0gICAgICAgICAgICBjaCA9IGdldGMoZnApOworICAgICAgICAgICAgY2ggPSBuZXRzbm1wX2dldGMoZnApOwogICAgICAgICAgICAgc3dpdGNoIChjaCkgewogICAgICAgICAgICAgY2FzZSBFT0Y6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVORE9GRklMRTsKQEAgLTQ2NDgsMjUgKzQ3MzIsMjUgQEAKICAgICBjYXNlICd8JzoKICAgICAgICAgcmV0dXJuIEJBUjsKICAgICBjYXNlICcuJzoKLSAgICAgICAgY2hfbmV4dCA9IGdldGMoZnApOworICAgICAgICBjaF9uZXh0ID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgaWYgKGNoX25leHQgPT0gJy4nKQogICAgICAgICAgICAgcmV0dXJuIFJBTkdFOwogICAgICAgICB1bmdldGMoY2hfbmV4dCwgZnApOwogICAgICAgICByZXR1cm4gTEFCRUw7CiAgICAgY2FzZSAnOic6Ci0gICAgICAgIGNoX25leHQgPSBnZXRjKGZwKTsKKyAgICAgICAgY2hfbmV4dCA9IG5ldHNubXBfZ2V0YyhmcCk7CiAgICAgICAgIGlmIChjaF9uZXh0ICE9ICc6JykgewogICAgICAgICAgICAgdW5nZXRjKGNoX25leHQsIGZwKTsKICAgICAgICAgICAgIHJldHVybiBMQUJFTDsKICAgICAgICAgfQotICAgICAgICBjaF9uZXh0ID0gZ2V0YyhmcCk7CisgICAgICAgIGNoX25leHQgPSBuZXRzbm1wX2dldGMoZnApOwogICAgICAgICBpZiAoY2hfbmV4dCAhPSAnPScpIHsKICAgICAgICAgICAgIHVuZ2V0YyhjaF9uZXh0LCBmcCk7CiAgICAgICAgICAgICByZXR1cm4gTEFCRUw7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIEVRVUFMUzsKICAgICBjYXNlICctJzoKLSAgICAgICAgY2hfbmV4dCA9IGdldGMoZnApOworICAgICAgICBjaF9uZXh0ID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgaWYgKGNoX25leHQgPT0gJy0nKSB7CiAgICAgICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAogCQkJCSAgICAgICBORVRTTk1QX0RTX0xJQl9NSUJfQ09NTUVOVF9URVJNKSkgewpAQCAtNDY3NCw3ICs0NzU4LDcgQEAKICAgICAgICAgICAgICAgICAgKiBUcmVhdCB0aGUgcmVzdCBvZiB0aGlzIGxpbmUgYXMgYSBjb21tZW50LiAKICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICB3aGlsZSAoKGNoX25leHQgIT0gRU9GKSAmJiAoY2hfbmV4dCAhPSAnXG4nKSkKLSAgICAgICAgICAgICAgICAgICAgY2hfbmV4dCA9IGdldGMoZnApOworICAgICAgICAgICAgICAgICAgICBjaF9uZXh0ID0gbmV0c25tcF9nZXRjKGZwKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBUcmVhdCB0aGUgcmVzdCBvZiB0aGUgbGluZSBvciB1bnRpbCBhbm90aGVyICctLScgYXMgYSBjb21tZW50IApAQCAtNDY4MywxMSArNDc2NywxMSBAQAogICAgICAgICAgICAgICAgICAqICh0aGlzIGlzIHRoZSAidGVjaG5pY2FsbHkiIGNvcnJlY3Qgd2F5IHRvIHBhcnNlIGNvbW1lbnRzKSAKICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBjaCA9ICcgJzsKLSAgICAgICAgICAgICAgICBjaF9uZXh0ID0gZ2V0YyhmcCk7CisgICAgICAgICAgICAgICAgY2hfbmV4dCA9IG5ldHNubXBfZ2V0YyhmcCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGNoX25leHQgIT0gRU9GICYmIGNoX25leHQgIT0gJ1xuJyAmJgogICAgICAgICAgICAgICAgICAgICAgICAoY2ggIT0gJy0nIHx8IGNoX25leHQgIT0gJy0nKSkgewogICAgICAgICAgICAgICAgICAgICBjaCA9IGNoX25leHQ7Ci0gICAgICAgICAgICAgICAgICAgIGNoX25leHQgPSBnZXRjKGZwKTsKKyAgICAgICAgICAgICAgICAgICAgY2hfbmV4dCA9IG5ldHNubXBfZ2V0YyhmcCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoX25leHQgPT0gRU9GKQpAQCAtNDcwOCw3ICs0NzkyLDcgQEAKICAgICAgICAgICAgIHJldHVybiBMQUJFTDsKICAgICAgICAgaGFzaCArPSB0b2xvd2VyKGNoKTsKICAgICAgIG1vcmU6Ci0gICAgICAgIHdoaWxlIChpc19sYWJlbGNoYXIoY2hfbmV4dCA9IGdldGMoZnApKSkgeworICAgICAgICB3aGlsZSAoaXNfbGFiZWxjaGFyKGNoX25leHQgPSBuZXRzbm1wX2dldGMoZnApKSkgewogICAgICAgICAgICAgaGFzaCArPSB0b2xvd2VyKGNoX25leHQpOwogICAgICAgICAgICAgaWYgKGNwIC0gdG9rZW4gPCBtYXh0bGVuIC0gMSkKICAgICAgICAgICAgICAgICAqY3ArKyA9IGNoX25leHQ7CkBAIC00NzI3LDcgKzQ4MTEsNyBAQAogICAgICAgICBpZiAodHApIHsKICAgICAgICAgICAgIGlmICh0cC0+dG9rZW4gIT0gQ09OVElOVUUpCiAgICAgICAgICAgICAgICAgcmV0dXJuICh0cC0+dG9rZW4pOwotICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKGNoX25leHQgPSBnZXRjKGZwKSkpKQorICAgICAgICAgICAgd2hpbGUgKGlzc3BhY2UoKGNoX25leHQgPSBuZXRzbm1wX2dldGMoZnApKSkpCiAgICAgICAgICAgICAgICAgaWYgKGNoX25leHQgPT0gJ1xuJykKICAgICAgICAgICAgICAgICAgICAgbWliTGluZSsrOwogICAgICAgICAgICAgaWYgKGNoX25leHQgPT0gRU9GKQpAQCAtNDc0OCwxMSArNDgzMiwxNCBAQAogICAgIH0KIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHBhcnNlX2dldF90b2tlbiwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUEFSU0VfR0VUX1RPS0VOCiBpbnQKIHNubXBfZ2V0X3Rva2VuKEZJTEUgKiBmcCwgY2hhciAqdG9rZW4sIGludCBtYXh0bGVuKQogewogICAgIHJldHVybiBnZXRfdG9rZW4oZnAsIHRva2VuLCBtYXh0bGVuKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0dFVF9UT0tFTiAqLwogCiBpbnQKIGFkZF9taWJmaWxlKGNvbnN0IGNoYXIqIHRtcHN0ciwgY29uc3QgY2hhciogZF9uYW1lLCBGSUxFICppcCApCkBAIC00OTM1LDYgKzUwMjIsMjMgQEAKICAgICAgICAgICAgIG5ldHNubXBfcmVhZF9tb2R1bGUobXAtPm5hbWUpOwogICAgIGFkb3B0X29ycGhhbnMoKTsKIAorICAgIC8qIElmIGVudGVyZWQgdGhlIHN5bnRheCBlcnJvciBsb29wIGluICJyZWFkX21vZHVsZSgpIiAqLworICAgIGlmIChnTG9vcCA9PSAxKSB7CisgICAgICAgIGdMb29wID0gMDsKKyAgICAgICAgaWYgKGdwTWliRXJyb3JTdHJpbmcgIT0gTlVMTCkgeworICAgICAgICAgICAgU05NUF9GUkVFKGdwTWliRXJyb3JTdHJpbmcpOworICAgICAgICB9CisgICAgICAgIGdwTWliRXJyb3JTdHJpbmcgPSAoY2hhciAqKSBjYWxsb2MoMSwgTUFYUVVPVEVTVFIpOworICAgICAgICBpZiAoZ3BNaWJFcnJvclN0cmluZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfQ1JJVCwgImZhaWxlZCB0byBhbGxvY2F0ZWQgbWVtb3J5IGZvciBncE1pYkVycm9yU3RyaW5nXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNucHJpbnRmKGdwTWliRXJyb3JTdHJpbmcsIHNpemVvZihncE1pYkVycm9yU3RyaW5nKS0xLCAiRXJyb3IgaW4gcGFyc2luZyBNSUIgbW9kdWxlKHMpOiAlcyAhIFVuYWJsZSB0byBsb2FkIGNvcnJlc3BvbmRpbmcgTUlCKHMpIiwgZ01pYk5hbWVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIENhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUgdGhpcyBtZW1vcnkgKi8KKyAgICB0cmVlX2hlYWQtPnBhcnNlRXJyb3JTdHJpbmcgPSBncE1pYkVycm9yU3RyaW5nOworCQogICAgIHJldHVybiB0cmVlX2hlYWQ7CiB9CiAKQEAgLTQ5NzAsNyArNTA3NCw3IEBACiAgICAgaW50ICAgICAgICAgICAgIHRvb19sb25nID0gMDsKICAgICBjaGFyICAgICAgICAgICAqdG9rZW5fc3RhcnQgPSB0b2tlbjsKIAotICAgIGZvciAoY2ggPSBnZXRjKGZwKTsgY2ggIT0gRU9GOyBjaCA9IGdldGMoZnApKSB7CisgICAgZm9yIChjaCA9IG5ldHNubXBfZ2V0YyhmcCk7IGNoICE9IEVPRjsgY2ggPSBuZXRzbm1wX2dldGMoZnApKSB7CiAgICAgICAgIGlmIChjaCA9PSAnXHInKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChjaCA9PSAnXG4nKSB7CkBAIC01MjMwLDggKzUzMzQsOCBAQAogICAgIHJldHVybiAoZmluZF90cmVlX25vZGUobmFtZSwgLTEpKTsKIH0KIAotLyogRmluZCBub2RlIGluIHNwZWNpZmljIE1JQiBtb2R1bGUKLSAgIFVzZWQgYnkgUGVybCBtb2R1bGVzCQkqLworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHBhcnNlX2ZpbmRfbm9kZTIsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0ZJTkRfTk9ERTIKIHN0cnVjdCB0cmVlICAgICoKIGZpbmRfbm9kZTIoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbW9kdWxlKQogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTUyNDUsNyArNTM0OSwxMCBAQAogICB9CiAgIHJldHVybiAoZmluZF90cmVlX25vZGUobmFtZSwgbW9kaWQpKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1BBUlNFX0ZJTkRfTk9ERTIgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfTU9EVUxFCisvKiBVc2VkIGluIHRoZSBwZXJsIG1vZHVsZSAqLwogc3RydWN0IG1vZHVsZSAgKgogZmluZF9tb2R1bGUoaW50IG1pZCkKIHsKQEAgLTUyNTcsNiArNTM2NCw3IEBACiAgICAgfQogICAgIHJldHVybiBtcDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0ZJTkRfTU9EVUxFICovCiAKIAogc3RhdGljIGNoYXIgICAgIGxlYXZlX2luZGVudFsyNTZdOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9yZWFkX2NvbmZpZy5jIGIvc25tcGxpYi9yZWFkX2NvbmZpZy5jCmluZGV4IDhlNzI0YzAuLjMxNjc2NzQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvcmVhZF9jb25maWcuYworKysgYi9zbm1wbGliL3JlYWRfY29uZmlnLmMKQEAgLTY1LDYgKzY1LDcgQEAKICAqICBAewogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTE0NSw2ICsxNDYsMTIgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9jb25maWdfYWxsLCBsaWJuZXRzbm1wKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIsIHJlYWRfY29uZmlnX2FsbCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihyZWFkX2NvbmZpZ19yZWdpc3Rlcl9hcHBfcHJlbmV0c25tcF9taWJfaGFuZGxlciwgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocmVhZF9jb25maWdfcmVnaXN0ZXJfY29uc3RfY29uZmlnX2hhbmRsZXIsIG5ldHNubXBfdW51c2VkKQorCiBzdGF0aWMgaW50ICAgICAgY29uZmlnX2Vycm9yczsKIAogc3RydWN0IGNvbmZpZ19maWxlcyAqY29uZmlnX2ZpbGVzID0gTlVMTDsKQEAgLTI1Miw2ICsyNTksNyBAQAogCQkJCQkgICAgaGVscCwgUFJFTUlCX0NPTkZJRyk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX0NPTkZJR19SRUdJU1RFUl9BUFBfUFJFTkVUU05NUF9NSUJfSEFORExFUgogc3RydWN0IGNvbmZpZ19saW5lICoKIHJlZ2lzdGVyX2FwcF9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKGNvbnN0IGNoYXIgKnRva2VuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwKQEAgLTI2MSw2ICsyNjksNyBAQAogICAgIHJldHVybiAocmVnaXN0ZXJfcHJlbmV0c25tcF9taWJfaGFuZGxlcgogICAgICAgICAgICAgKE5VTEwsIHRva2VuLCBwYXJzZXIsIHJlbGVhc2VyLCBoZWxwKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9SRUFEX0NPTkZJR19SRUdJU1RFUl9BUFBfUFJFTkVUU05NUF9NSUJfSEFORExFUiAqLwogCiAvKioKICAqIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyIHJlZ2lzdGVycyBoYW5kbGVycyBmb3IgY2VydGFpbiB0b2tlbnMgc3BlY2lmaWVkIGluCkBAIC0zMDUsNiArMzE0LDcgQEAKIAkJCQkJICAgIGhlbHAsIE5PUk1BTF9DT05GSUcpOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9DT05GSUdfUkVHSVNURVJfQ09OU1RfQ09ORklHX0hBTkRMRVIKIHN0cnVjdCBjb25maWdfbGluZSAqCiByZWdpc3Rlcl9jb25zdF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICp0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sCkBAIC0zMTYsNiArMzI2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLCByZWxlYXNlciwKIAkJCQkJICAgIGhlbHAsIE5PUk1BTF9DT05GSUcpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfUkVBRF9DT05GSUdfUkVHSVNURVJfQ09OU1RfQ09ORklHX0hBTkRMRVIgKi8KIAogc3RydWN0IGNvbmZpZ19saW5lICoKIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICp0b2tlbiwKQEAgLTQxOSwxMSArNDMwLDEzIEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5SRUdJU1RFUl9BUFBfQ09ORklHX0hBTkRMRVIKIHZvaWQKIHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKnRva2VuKQogewogICAgIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoTlVMTCwgdG9rZW4pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5SRUdJU1RFUl9BUFBfQ09ORklHX0hBTkRMRVIgKi8KIAogdm9pZAogdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzKHZvaWQpCkBAIC00NjMsOCArNDc2LDggQEAKIH0KICNlbmRpZgogCi1pbnQgICAgICAgICAgICAgbGluZWNvdW50LCAgICBwcmV2X2xpbmVjb3VudDsKLWNvbnN0IGNoYXIgICAgICpjdXJmaWxlbmFtZSwgKnByZXZfZmlsZW5hbWU7CitzdGF0aWMgdW5zaWduZWQgaW50ICBsaW5lY291bnQ7CitzdGF0aWMgY29uc3QgY2hhciAgICpjdXJmaWxlbmFtZTsKIAogc3RydWN0IGNvbmZpZ19saW5lICoKIHJlYWRfY29uZmlnX2dldF9oYW5kbGVycyhjb25zdCBjaGFyICp0eXBlKQpAQCAtNzQyLDE3ICs3NTUsMTcgQEAKIHsKICAgICBzdGF0aWMgaW50ICAgICAgZGVwdGggPSAwOwogICAgIHN0YXRpYyBpbnQgICAgICBmaWxlcyA9IDA7CisKKyAgICBjb25zdCBjaGFyICogY29uc3QgcHJldl9maWxlbmFtZSA9IGN1cmZpbGVuYW1lOworICAgIGNvbnN0IHVuc2lnbmVkIGludCBwcmV2X2xpbmVjb3VudCA9IGxpbmVjb3VudDsKKwogICAgIEZJTEUgICAgICAgICAgICppZmlsZTsKLSAgICBjaGFyICAgICAgICAgICAgbGluZVtTVFJJTkdNQVhdLCB0b2tlbltTVFJJTkdNQVhdOwotICAgIGNoYXIgICAgICAgICAgICpjcHRyOwotICAgIGludCAgICAgICAgICAgICBpLCByZXQ7Ci0gICAgc3RydWN0IGNvbmZpZ19saW5lICpscHRyOworICAgIGNoYXIgICAgICAgICAgICpsaW5lID0gTlVMTDsgIC8qIGN1cnJlbnQgbGluZSBidWZmZXIgKi8KKyAgICBzaXplX3QgICAgICAgICAgbGluZXNpemUgPSAwOyAvKiBhbGxvY2F0ZWQgc2l6ZSBvZiBsaW5lICovCiAKLSAgICAvLyByZXNldCBmaWxlIGNvdW50ZXIgd2hlbiByZWN1cnNpb24gZGVwdGggaXMgMAotICAgIGlmIChkZXB0aCA9PSAwKSBmaWxlcyA9IDA7Ci0KLSAgICBsaW5lY291bnQgPSAwOwotICAgIGN1cmZpbGVuYW1lID0gZmlsZW5hbWU7CisgICAgLyogcmVzZXQgZmlsZSBjb3VudGVyIHdoZW4gcmVjdXJzaW9uIGRlcHRoIGlzIDAgKi8KKyAgICBpZiAoZGVwdGggPT0gMCkKKyAgICAgICAgZmlsZXMgPSAwOwogCiAgICAgaWYgKChpZmlsZSA9IGZvcGVuKGZpbGVuYW1lLCAiciIpKSA9PSBOVUxMKSB7CiAjaWZkZWYgRU5PRU5UCkBAIC03NjcsMTMgKzc4MCw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpKTsKICAgICAgICAgfSBlbHNlCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVBQ0NFUyAqLwotI2lmIGRlZmluZWQoRU5PRU5UKSB8fCBkZWZpbmVkKEVBQ0NFUykKICAgICAgICAgewogICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKGZpbGVuYW1lKTsKICAgICAgICAgfQotI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkZWZpbmVkKEVOT0VOVCkgfHwgZGVmaW5lZChFQUNDRVMpICovCi0gICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoZmlsZW5hbWUpOwotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFTk9FTlQgKi8KICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogICAgIH0KIApAQCAtNzkxLDI1ICs4MDAsNTggQEAKIAlmY2xvc2UoaWZpbGUpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgfQorCisgICAgbGluZWNvdW50ID0gMDsKKyAgICBjdXJmaWxlbmFtZSA9IGZpbGVuYW1lOworCiAgICAgKytmaWxlczsKICAgICArK2RlcHRoOwogCiAgICAgREVCVUdNU0dUTCgoInJlYWRfY29uZmlnOmZpbGUiLCAiUmVhZGluZyBjb25maWd1cmF0aW9uICVzICglZClcbiIsCiAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIHdoZW4pKTsKLSAgICAKLSAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpZmlsZSkgIT0gTlVMTCkgewotICAgICAgICBscHRyID0gbGluZV9oYW5kbGVyOwotICAgICAgICBsaW5lY291bnQrKzsKLSAgICAgICAgY3B0ciA9IGxpbmU7Ci0gICAgICAgIGkgPSBzdHJsZW4obGluZSkgLSAxOwotICAgICAgICBpZiAobGluZVtpXSA9PSAnXG4nKQotICAgICAgICAgICAgbGluZVtpXSA9IDA7CisKKyAgICB3aGlsZSAoaWZpbGUpIHsKKyAgICAgICAgc2l6ZV90ICAgICAgICAgICAgICBsaW5lbGVuID0gMDsgLyogc3RybGVuIG9mIHRoZSBjdXJyZW50IGxpbmUgKi8KKyAgICAgICAgY2hhciAgICAgICAgICAgICAgICpjcHRyOworICAgICAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKmxwdHIgPSBsaW5lX2hhbmRsZXI7CisKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgaWYgKGxpbmVzaXplIDw9IGxpbmVsZW4gKyAxKSB7CisgICAgICAgICAgICAgICAgY2hhciAqdG1wID0gcmVhbGxvYyhsaW5lLCBsaW5lc2l6ZSArIDI1Nik7CisgICAgICAgICAgICAgICAgaWYgKHRtcCkgeworICAgICAgICAgICAgICAgICAgICBsaW5lID0gdG1wOworICAgICAgICAgICAgICAgICAgICBsaW5lc2l6ZSArPSAyNTY7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIkZhaWxlZCB0byBhbGxvY2F0ZSBtZW1vcnlcbiIpOworICAgICAgICAgICAgICAgICAgICBmcmVlKGxpbmUpOworICAgICAgICAgICAgICAgICAgICBmY2xvc2UoaWZpbGUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZnZXRzKGxpbmUgKyBsaW5lbGVuLCBsaW5lc2l6ZSAtIGxpbmVsZW4sIGlmaWxlKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbGluZVtsaW5lbGVuXSA9ICdcMCc7CisgICAgICAgICAgICAgICAgZmNsb3NlIChpZmlsZSk7CisgICAgICAgICAgICAgICAgaWZpbGUgPSBOVUxMOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lbGVuICs9IHN0cmxlbihsaW5lICsgbGluZWxlbik7CisKKyAgICAgICAgICAgIGlmIChsaW5lW2xpbmVsZW4gLSAxXSA9PSAnXG4nKSB7CisgICAgICAgICAgICAgIGxpbmVbbGluZWxlbiAtIDFdID0gJ1wwJzsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICArK2xpbmVjb3VudDsKICAgICAgICAgREVCVUdNU0dUTCgoIjk6cmVhZF9jb25maWc6bGluZSIsICIlczolZCBleGFtaW5pbmc6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZWNvdW50LCBsaW5lKSk7CiAgICAgICAgIC8qCiAgICAgICAgICAqIGNoZWNrIGJsYW5rIGxpbmUgb3IgIyBjb21tZW50IAogICAgICAgICAgKi8KLSAgICAgICAgaWYgKChjcHRyID0gc2tpcF93aGl0ZShjcHRyKSkpIHsKKyAgICAgICAgaWYgKChjcHRyID0gc2tpcF93aGl0ZShsaW5lKSkpIHsKKyAgICAgICAgICAgIGNoYXIgdG9rZW5bU1RSSU5HTUFYXTsKKwogICAgICAgICAgICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgdG9rZW4sIHNpemVvZih0b2tlbikpOwogICAgICAgICAgICAgaWYgKHRva2VuWzBdID09ICdbJykgewogICAgICAgICAgICAgICAgIGlmICh0b2tlbltzdHJsZW4odG9rZW4pIC0gMV0gIT0gJ10nKSB7CkBAIC04NjQsOCArOTA2LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiQ2FuJ3Qgb3BlbiBpbmNsdWRlIGRpciAnJXMnLiIsIGNwdHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcHJldl9maWxlbmFtZSAgPSBjdXJmaWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgcHJldl9saW5lY291bnQgPSBsaW5lY291bnQ7CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgoZW50cnkgPSByZWFkZGlyKCBkICkpICE9IE5VTEwgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGVudHJ5LT5kX25hbWVbMF0gIT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuID0gTkFNTEVOKGVudHJ5KTsKQEAgLTg3Nyw4ICs5MTcsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNsb3NlZGlyKGQpOwotICAgICAgICAgICAgICAgICAgICBjdXJmaWxlbmFtZSA9IHByZXZfZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVjb3VudCAgID0gcHJldl9saW5lY291bnQ7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHN0cmNhc2VjbXAoIHRva2VuLCAiaW5jbHVkZWZpbGUiICk9PTApIHsKICAgICAgICAgICAgICAgICAgICAgY2hhciAgZm5hbWVbU05NUF9NQVhQQVRIXSwgKmNwOwpAQCAtODk5LDE3ICs5MzcsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKCsrY3ApID0gJ1wwJzsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxjYXQoZm5hbWUsIGNwdHIsIFNOTVBfTUFYUEFUSCk7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcHJldl9maWxlbmFtZSAgPSBjdXJmaWxlbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgcHJldl9saW5lY291bnQgPSBsaW5lY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IHJlYWRfY29uZmlnKGZuYW1lLCBsaW5lX2hhbmRsZXIsIHdoZW4pOwotICAgICAgICAgICAgICAgICAgICBjdXJmaWxlbmFtZSA9IHByZXZfZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVjb3VudCAgID0gcHJldl9saW5lY291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgocmV0ICE9IFNOTVBFUlJfU1VDQ0VTUykgJiYgKHdoZW4gIT0gUFJFTUlCX0NPTkZJRykpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiSW5jbHVkZWQgZmlsZSAnJXMnIG5vdCBmb3VuZC4iLCBmbmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZWFkX2NvbmZpZyhmbmFtZSwgbGluZV9oYW5kbGVyLCB3aGVuKSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgU05NUEVSUl9TVUNDRVNTICYmIHdoZW4gIT0gUFJFTUlCX0NPTkZJRykKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJJbmNsdWRlZCBmaWxlICclcycgbm90IGZvdW5kLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHN0cmNhc2VjbXAoIHRva2VuLCAiaW5jbHVkZXNlYXJjaCIgKT09MCkgewogICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29uZmlnX2ZpbGVzIGN0bXA7Ci0gICAgICAgICAgICAgICAgICAgIGludCBsZW47CisgICAgICAgICAgICAgICAgICAgIGludCBsZW4sIHJldDsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2hlbiAhPSBQUkVNSUJfQ09ORklHKQpAQCAtOTIyLDExICs5NTcsNyBAQAogICAgICAgICAgICAgICAgICAgICBjdG1wLm5leHQgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICBpZiAoKGxlbiA+IDUpICYmIChzdHJjbXAoJmNwdHJbbGVuLTVdLCIuY29uZiIpID09IDApKQogICAgICAgICAgICAgICAgICAgICAgICBjcHRyW2xlbi01XSA9IDA7IC8qIGNob3Agb2ZmIC5jb25mICovCi0gICAgICAgICAgICAgICAgICAgIHByZXZfZmlsZW5hbWUgID0gY3VyZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIHByZXZfbGluZWNvdW50ID0gbGluZWNvdW50OwogICAgICAgICAgICAgICAgICAgICByZXQgPSByZWFkX2NvbmZpZ19maWxlc19vZl90eXBlKHdoZW4sJmN0bXApOwotICAgICAgICAgICAgICAgICAgICBjdXJmaWxlbmFtZSA9IHByZXZfZmlsZW5hbWU7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVjb3VudCAgID0gcHJldl9saW5lY291bnQ7CiAgICAgICAgICAgICAgICAgICAgIGlmICgobGVuID4gNSkgJiYgKGNwdHJbbGVuLTVdID09IDApKQogICAgICAgICAgICAgICAgICAgICAgICBjcHRyW2xlbi01XSA9ICcuJzsgLyogcmVzdG9yZSAuY29uZiAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoKCByZXQgIT0gU05NUEVSUl9TVUNDRVNTICkgJiYgKHdoZW4gIT0gUFJFTUlCX0NPTkZJRykpCkBAIC05NDcsNyArOTc4LDkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBmY2xvc2UoaWZpbGUpOworICAgIGZyZWUobGluZSk7CisgICAgbGluZWNvdW50ID0gcHJldl9saW5lY291bnQ7CisgICAgY3VyZmlsZW5hbWUgPSBwcmV2X2ZpbGVuYW1lOwogICAgIC0tZGVwdGg7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zY2FwaS5jIGIvc25tcGxpYi9zY2FwaS5jCmluZGV4IGU0MmY2YzYuLjE2YWM4MjkgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc2NhcGkuYworKysgYi9zbm1wbGliL3NjYXBpLmMKQEAgLTE1LDYgKzE1LDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmZGVmIEhBVkVfU1RETElCX0gKQEAgLTUwLDYgKzUxLDExIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3V0aWxpdGllcy5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtX3N1cHBvcnQsIGxpYm5ldHNubXApCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtX3NjYXBpLCB1c21fc3VwcG9ydCkKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VTTV9TQ0FQSQorCiAjaWZkZWYgTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9tZDUuaD4KICNlbmRpZgpAQCAtNjgsNiArNzQsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvb3BlbnNzbF9kZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L29wZW5zc2xfYWVzLmg+CiAjZW5kaWYKKwogI2lmZGVmIE5FVFNOTVBfVVNFX09QRU5TU0wKICNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgpAQCAtMTQzLDYgKzE1MCw4IEBACiAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc2NhcGlfZ2V0X3Byb3Blcl9wcml2X2xlbmd0aCwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0NBUElfR0VUX1BST1BFUl9QUklWX0xFTkdUSAogaW50CiBzY19nZXRfcHJvcGVyX3ByaXZfbGVuZ3RoKGNvbnN0IG9pZCAqIHByaXZ0eXBlLCB1X2ludCBwcml2dHlwZV9sZW4pCiB7CkBAIC0xNTksNiArMTY4LDcgQEAKICNlbmRpZgogICAgIHJldHVybiBwcm9wZXJsZW5ndGg7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TQ0FQSV9HRVRfUFJPUEVSX1BSSVZfTEVOR1RIICovCiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKQEAgLTE4MCw3ICsxOTAsNyBAQAogCiAgICAgZ2V0dGltZW9mZGF5KCZ0diwgKHN0cnVjdCB0aW1lem9uZSAqKSAwKTsKIAotICAgIHNyYW5kb20odHYudHZfc2VjIF4gdHYudHZfdXNlYyk7CisgICAgc3JhbmRvbSgodW5zaWduZWQpKHR2LnR2X3NlYyBeIHR2LnR2X3VzZWMpKTsKICNlbGlmIE5FVFNOTVBfVVNFX1BLQ1MxMQogICAgIERFQlVHVFJBQ0U7CiAgICAgcnZhbCA9IHBrY3NfaW5pdCgpOwpAQCAtMTM1MCwzICsxMzYwLDQgQEAKICAgICByZXR1cm4gcmM7CiB9CiAjZW5kaWYgLyogTkVUU05NUF9VU0VfSU5URVJOQUxfQ1JZUFRPICovCisjZW5kaWYgLyogIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX1NDQVBJICAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wLXRjLmMgYi9zbm1wbGliL3NubXAtdGMuYwppbmRleCAzODI4NWUxLi44OTFjM2EwIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXAtdGMuYworKysgYi9zbm1wbGliL3NubXAtdGMuYwpAQCAtNSw2ICs1LDcgQEAKIAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZiBIQVZFX1NURExJQl9ICiAjaW5jbHVkZSA8c3RkbGliLmg+CkBAIC0zMiw2ICszMywxNCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oPiAgIC8qIGZvciAiaW50ZXJuYWwiIGRlZmluaXRpb25zICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF90Y19hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihuZXRzbm1wX2RhdGVhbmR0aW1lX3NldF9idWZfZnJvbV92YXJzLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihkYXRlX25fdGltZSwgc25tcF90Y19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY3RpbWVfdG9fdGltZXQsIHNubXBfdGNfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGNoZWNrX3Jvd3N0YXR1c193aXRoX3N0b3JhZ2V0eXBlX3RyYW5zaXRpb24sIHNubXBfdGNfYWxsKQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9EQVRFQU5EVElNRV9TRVRfQlVGX0ZST01fVkFSUwogLyoKICAgRGF0ZUFuZFRpbWUgOjo9IFRFWFRVQUwtQ09OVkVOVElPTgogICAgIERJU1BMQVktSElOVCAiMmQtMWQtMWQsMWQ6MWQ6MWQuMWQsMWExZDoxZCIKQEAgLTExMiw3ICsxMjEsOSBAQAogCiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX05FVFNOTVBfREFURUFORFRJTUVfU0VUX0JVRl9GUk9NX1ZBUlMgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0RBVEVfTl9USU1FCiB1X2NoYXIgICAgICAgICAqCiBkYXRlX25fdGltZShjb25zdCB0aW1lX3QgKiB3aGVuLCBzaXplX3QgKiBsZW5ndGgpCiB7CkBAIC0xOTIsOCArMjAzLDkgQEAKIAogICAgIHJldHVybiBzdHJpbmc7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9EQVRFX05fVElNRSAqLwogCi0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DVElNRV9UT19USU1FVAogdGltZV90CiBjdGltZV90b190aW1ldChjb25zdCBjaGFyICpzdHIpCiB7CkBAIC0yNTEsOSArMjYzLDEwIEBACiAKICAgICByZXR1cm4gKG1rdGltZSgmdG0pKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NUSU1FX1RPX1RJTUVUICovCiAKIC8qCi0gKiBibGF0YW50bHkgbGlmdGVkIGZyb20gb3BlbnNtcCAKKyAqIGJsYXRhbnRseSBsaWZ0ZWQgZnJvbSBvcGVuc25tcCAKICAqLwogY2hhcgogY2hlY2tfcm93c3RhdHVzX3RyYW5zaXRpb24oaW50IG9sZFZhbHVlLCBpbnQgbmV3VmFsdWUpCkBAIC00MDEsNiArNDE0LDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1JPV1NUQVRVU19XSVRIX1NUT1JBR0VUWVBFX1RSQU5TSVRJT04KIGNoYXIKIGNoZWNrX3Jvd3N0YXR1c193aXRoX3N0b3JhZ2V0eXBlX3RyYW5zaXRpb24oaW50IG9sZFZhbHVlLCBpbnQgbmV3VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvbGRTdG9yYWdlKQpAQCAtNDE1LDcgKzQyOSwxMCBAQAogCiAgICAgcmV0dXJuIGNoZWNrX3Jvd3N0YXR1c190cmFuc2l0aW9uKG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DSEVDS19ST1dTVEFUVVNfV0lUSF9TVE9SQUdFVFlQRV9UUkFOU0lUSU9OICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjaGVja19zdG9yYWdlX3RyYW5zaXRpb24sIHNubXBfdGNfYWxsKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1NUT1JBR0VfVFJBTlNJVElPTgogY2hhcgogY2hlY2tfc3RvcmFnZV90cmFuc2l0aW9uKGludCBvbGRWYWx1ZSwgaW50IG5ld1ZhbHVlKQogewpAQCAtNDU2LDMgKzQ3Myw0IEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NIRUNLX1NUT1JBR0VfVFJBTlNJVElPTiAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2FsYXJtLmMgYi9zbm1wbGliL3NubXBfYWxhcm0uYwppbmRleCA3NDYyOGJlLi5hZjQ4MDBmIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfYWxhcm0uYworKysgYi9zbm1wbGliL3NubXBfYWxhcm0uYwpAQCAtODIsMjkgKzgyLDI0IEBACiB2b2lkCiBzYV91cGRhdGVfZW50cnkoc3RydWN0IHNubXBfYWxhcm0gKmEpCiB7Ci0gICAgaWYgKCF0aW1lcmlzc2V0KCZhLT50X2xhc3QpKSB7Ci0gICAgICAgIHN0cnVjdCB0aW1ldmFsICB0X25vdzsKKyAgICBpZiAoIXRpbWVyaXNzZXQoJmEtPnRfbGFzdE0pKSB7CiAgICAgICAgIC8qCi0gICAgICAgICAqIE5ldmVyIGJlZW4gY2FsbGVkIHlldCwgY2FsbCB0aW1lIGB0JyBmcm9tIG5vdy4gIAorICAgICAgICAgKiBGaXJzdCBjYWxsIG9mIHNhX3VwZGF0ZV9lbnRyeSgpIGZvciBhbGFybSBhOiBzZXQgdF9sYXN0TSBhbmQgdF9uZXh0TS4KICAgICAgICAgICovCi0gICAgICAgIGdldHRpbWVvZmRheSgmdF9ub3csIE5VTEwpOwotCi0gICAgICAgIGEtPnRfbGFzdCA9IHRfbm93OwotCi0gICAgICAgIE5FVFNOTVBfVElNRVJBREQoJnRfbm93LCAmYS0+dCwgJmEtPnRfbmV4dCk7Ci0gICAgfSBlbHNlIGlmICghdGltZXJpc3NldCgmYS0+dF9uZXh0KSkgeworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJmEtPnRfbGFzdE0pOworICAgICAgICBORVRTTk1QX1RJTUVSQUREKCZhLT50X2xhc3RNLCAmYS0+dCwgJmEtPnRfbmV4dE0pOworICAgIH0gZWxzZSBpZiAoIXRpbWVyaXNzZXQoJmEtPnRfbmV4dE0pKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFdlJ3ZlIGJlZW4gY2FsbGVkIGJ1dCBub3QgcmVzZXQgZm9yIHRoZSBuZXh0IGNhbGwuICAKICAgICAgICAgICovCiAgICAgICAgIGlmIChhLT5mbGFncyAmIFNBX1JFUEVBVCkgewotICAgICAgICAgICAgaWYgKCF0aW1lcmlzc2V0KCZhLT50KSkgeworICAgICAgICAgICAgaWYgKHRpbWVyaXNzZXQoJmEtPnQpKSB7CisgICAgICAgICAgICAgICAgTkVUU05NUF9USU1FUkFERCgmYS0+dF9sYXN0TSwgJmEtPnQsICZhLT50X25leHRNKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1cGRhdGVfZW50cnk6IGlsbGVnYWwgaW50ZXJ2YWwgc3BlY2lmaWVkXG4iKSk7CiAgICAgICAgICAgICAgICAgc25tcF9hbGFybV91bnJlZ2lzdGVyKGEtPmNsaWVudHJlZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBORVRTTk1QX1RJTUVSQUREKCZhLT50X2xhc3QsICZhLT50LCAmYS0+dF9uZXh0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBTaW5nbGUgdGltZSBjYWxsLCByZW1vdmUgaXQuICAKQEAgLTE3NywyMiArMTcyLDEyIEBACiBzYV9maW5kX25leHQodm9pZCkKIHsKICAgICBzdHJ1Y3Qgc25tcF9hbGFybSAqYSwgKmxvd2VzdCA9IE5VTEw7Ci0gICAgc3RydWN0IHRpbWV2YWwgIHRfbm93OwogCi0gICAgZ2V0dGltZW9mZGF5KCZ0X25vdywgTlVMTCk7CisgICAgZm9yIChhID0gdGhlYWxhcm1zOyBhICE9IE5VTEw7IGEgPSBhLT5uZXh0KQorICAgICAgICBpZiAoIShhLT5mbGFncyAmIFNBX0ZJUkVEKQorICAgICAgICAgICAgJiYgKGxvd2VzdCA9PSBOVUxMIHx8IHRpbWVyY21wKCZhLT50X25leHRNLCAmbG93ZXN0LT50X25leHRNLCA8KSkpCisgICAgICAgICAgICBsb3dlc3QgPSBhOwogCi0gICAgZm9yIChhID0gdGhlYWxhcm1zOyBhICE9IE5VTEw7IGEgPSBhLT5uZXh0KSB7Ci0gICAgICAgIGlmICghKGEtPmZsYWdzICYgU0FfRklSRUQpKSB7Ci0gICAgICAgICAgICAvKiBjaGVjayBmb3IgdGltZSBkZWx0YSBza2V3ICovCi0gICAgICAgICAgICBpZiAoKGEtPnRfbmV4dC50dl9zZWMgLSB0X25vdy50dl9zZWMpID4gYS0+dC50dl9zZWMpIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidGltZV9za2V3IiwgIlRpbWUgZGVsdGEgdG9vIGJpZyAoJWxkIHNlY29uZHMpLCBzaG91bGQgYmUgJWxkIHNlY29uZHMgLSBmaXhpbmdcbiIsCi0JCSAgICAobG9uZykoYS0+dF9uZXh0LnR2X3NlYyAtIHRfbm93LnR2X3NlYyksIChsb25nKWEtPnQudHZfc2VjKSk7Ci0gICAgICAgICAgICAgICAgTkVUU05NUF9USU1FUkFERCgmdF9ub3csICZhLT50LCAmYS0+dF9uZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChsb3dlc3QgPT0gTlVMTCB8fCB0aW1lcmNtcCgmYS0+dF9uZXh0LCAmbG93ZXN0LT50X25leHQsIDwpKQotICAgICAgICAgICAgICAgIGxvd2VzdCA9IGE7Ci0gICAgICAgfQotICAgIH0KICAgICByZXR1cm4gbG93ZXN0OwogfQogCkBAIC0yMTIsOCArMTk3LDcgQEAKIHZvaWQKIHJ1bl9hbGFybXModm9pZCkKIHsKLSAgICBpbnQgICAgICAgICAgICAgZG9uZSA9IDA7Ci0gICAgc3RydWN0IHNubXBfYWxhcm0gKmEgPSBOVUxMOworICAgIHN0cnVjdCBzbm1wX2FsYXJtICphOwogICAgIHVuc2lnbmVkIGludCAgICBjbGllbnRyZWc7CiAgICAgc3RydWN0IHRpbWV2YWwgIHRfbm93OwogCkBAIC0yMjIsMzEgKzIwNiwyNyBAQAogICAgICAqIGNhbGwgdW50aWwgYWxsIGV2ZW50cyBhcmUgZmluYWxseSBpbiB0aGUgZnV0dXJlIGFnYWluLiAgCiAgICAgICovCiAKLSAgICB3aGlsZSAoIWRvbmUpIHsKLSAgICAgICAgaWYgKChhID0gc2FfZmluZF9uZXh0KCkpID09IE5VTEwpIHsKKyAgICB3aGlsZSAoKGEgPSBzYV9maW5kX25leHQoKSkgIT0gTlVMTCkgeworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRfbm93KTsKKworICAgICAgICBpZiAodGltZXJjbXAoJmEtPnRfbmV4dE0sICZ0X25vdywgPikpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KIAotICAgICAgICBnZXR0aW1lb2ZkYXkoJnRfbm93LCBOVUxMKTsKKyAgICAgICAgY2xpZW50cmVnID0gYS0+Y2xpZW50cmVnOworICAgICAgICBhLT5mbGFncyB8PSBTQV9GSVJFRDsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLCAicnVuIGFsYXJtICVkXG4iLCBjbGllbnRyZWcpKTsKKyAgICAgICAgKCooYS0+dGhlY2FsbGJhY2spKSAoY2xpZW50cmVnLCBhLT5jbGllbnRhcmcpOworICAgICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsICJhbGFybSAlZCBjb21wbGV0ZWRcbiIsIGNsaWVudHJlZykpOwogCi0gICAgICAgIGlmICh0aW1lcmNtcCgmYS0+dF9uZXh0LCAmdF9ub3csIDwpKSB7Ci0gICAgICAgICAgICBjbGllbnRyZWcgPSBhLT5jbGllbnRyZWc7Ci0gICAgICAgICAgICBhLT5mbGFncyB8PSBTQV9GSVJFRDsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgInJ1biBhbGFybSAlZFxuIiwgY2xpZW50cmVnKSk7Ci0gICAgICAgICAgICAoKihhLT50aGVjYWxsYmFjaykpIChjbGllbnRyZWcsIGEtPmNsaWVudGFyZyk7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsICJhbGFybSAlZCBjb21wbGV0ZWRcbiIsIGNsaWVudHJlZykpOwotCi0gICAgICAgICAgICBpZiAoKGEgPSBzYV9maW5kX3NwZWNpZmljKGNsaWVudHJlZykpICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBhLT50X2xhc3QgPSB0X25vdzsKLSAgICAgICAgICAgICAgICB0aW1lcmNsZWFyKCZhLT50X25leHQpOwotICAgICAgICAgICAgICAgIGEtPmZsYWdzICY9IH5TQV9GSVJFRDsKLSAgICAgICAgICAgICAgICBzYV91cGRhdGVfZW50cnkoYSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgImFsYXJtICVkIGRlbGV0ZWQgaXRzZWxmXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudHJlZykpOwotICAgICAgICAgICAgfQorICAgICAgICBhID0gc2FfZmluZF9zcGVjaWZpYyhjbGllbnRyZWcpOworICAgICAgICBpZiAoYSkgeworICAgICAgICAgICAgYS0+dF9sYXN0TSA9IHRfbm93OworICAgICAgICAgICAgdGltZXJjbGVhcigmYS0+dF9uZXh0TSk7CisgICAgICAgICAgICBhLT5mbGFncyAmPSB+U0FfRklSRUQ7CisgICAgICAgICAgICBzYV91cGRhdGVfZW50cnkoYSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBkb25lID0gMTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgImFsYXJtICVkIGRlbGV0ZWQgaXRzZWxmXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50cmVnKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC0yODEsOSArMjYxLDkgQEAKIAogICAgIGlmIChzYV9wdHIpIHsKICAgICAgICAgbmV0c25tcF9hc3NlcnQoYWxhcm1fdG0pOwotICAgICAgICBuZXRzbm1wX2Fzc2VydCh0aW1lcmlzc2V0KCZzYV9wdHItPnRfbmV4dCkpOwotICAgICAgICBpZiAodGltZXJjbXAoJnNhX3B0ci0+dF9uZXh0LCBub3csID4pKQotICAgICAgICAgICAgKmFsYXJtX3RtID0gc2FfcHRyLT50X25leHQ7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KHRpbWVyaXNzZXQoJnNhX3B0ci0+dF9uZXh0TSkpOworICAgICAgICBpZiAodGltZXJjbXAoJnNhX3B0ci0+dF9uZXh0TSwgbm93LCA+KSkKKyAgICAgICAgICAgICphbGFybV90bSA9IHNhX3B0ci0+dF9uZXh0TTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgKmFsYXJtX3RtID0gKm5vdzsKICAgICAgICAgcmV0dXJuIHNhX3B0ci0+Y2xpZW50cmVnOwpAQCAtMzA3LDcgKzI4Nyw3IEBACiAgICAgc3RydWN0IHRpbWV2YWwgdF9ub3csIGFsYXJtX3RtOwogICAgIGludCByZXM7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJnRfbm93LCBOVUxMKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnRfbm93KTsKICAgICByZXMgPSBuZXRzbm1wX2dldF9uZXh0X2FsYXJtX3RpbWUoJmFsYXJtX3RtLCAmdF9ub3cpOwogICAgIGlmIChyZXMpCiAgICAgICAgIE5FVFNOTVBfVElNRVJTVUIoJmFsYXJtX3RtLCAmdF9ub3csIGRlbHRhKTsKQEAgLTMzOSw3ICszMTksNyBAQAogICAgICAgICBzaWduYWwoU0lHQUxSTSwgYWxhcm1faGFuZGxlcik7CiAgICAgICAgIHNldGl0aW1lcihJVElNRVJfUkVBTCwgJml0LCBOVUxMKTsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLCAic2NoZWR1bGUgYWxhcm0gJWQgaW4gJWxkLiUwM2xkIHNlY29uZHNcbiIsCi0gICAgICAgICAgICAgICAgICAgIG5leHRhbGFybSwgZGVsdGEudHZfc2VjLCAoZGVsdGEudHZfdXNlYyAvIDEwMDApKSk7CisgICAgICAgICAgICAgICAgICAgIG5leHRhbGFybSwgKGxvbmcpIGRlbHRhLnR2X3NlYywgKGxvbmcpKGRlbHRhLnR2X3VzZWMgLyAxMDAwKSkpOwogIyBlbHNlICAvKiBIQVZFX1NFVElUSU1FUiAqLwogIyAgaWZkZWYgU0lHQUxSTQogICAgICAgICBzaWduYWwoU0lHQUxSTSwgYWxhcm1faGFuZGxlcik7CkBAIC00NjYsNyArNDQ2LDcgQEAKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwKICAgICAgICAgICAgICAgICAicmVnaXN0ZXJlZCBhbGFybSAlZCwgdCA9ICVsZC4lMDNsZCwgZmxhZ3M9MHglMDJ4XG4iLAotICAgICAgICAgICAgICAgICgqcyktPmNsaWVudHJlZywgKCpzKS0+dC50dl9zZWMsICgoKnMpLT50LnR2X3VzZWMgLyAxMDAwKSwKKyAgICAgICAgICAgICAgICAoKnMpLT5jbGllbnRyZWcsIChsb25nKSAoKnMpLT50LnR2X3NlYywgKGxvbmcpKCgqcyktPnQudHZfdXNlYyAvIDEwMDApLAogICAgICAgICAgICAgICAgICgqcyktPmZsYWdzKSk7CiAKICAgICBpZiAoc3RhcnRfYWxhcm1zKSB7CkBAIC00OTQsMTIgKzQ3NCwxMiBAQAogICAgIHN0cnVjdCBzbm1wX2FsYXJtICphOwogICAgIHN0cnVjdCB0aW1ldmFsICB0X25vdzsKICAgICBpZiAoKGEgPSBzYV9maW5kX3NwZWNpZmljKGNsaWVudHJlZykpICE9IE5VTEwpIHsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0X25vdywgTlVMTCk7Ci0gICAgICAgIGEtPnRfbGFzdC50dl9zZWMgPSB0X25vdy50dl9zZWM7Ci0gICAgICAgIGEtPnRfbGFzdC50dl91c2VjID0gdF9ub3cudHZfdXNlYzsKLSAgICAgICAgYS0+dF9uZXh0LnR2X3NlYyA9IDA7Ci0gICAgICAgIGEtPnRfbmV4dC50dl91c2VjID0gMDsKLSAgICAgICAgTkVUU05NUF9USU1FUkFERCgmdF9ub3csICZhLT50LCAmYS0+dF9uZXh0KTsKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZ0X25vdyk7CisgICAgICAgIGEtPnRfbGFzdE0udHZfc2VjID0gdF9ub3cudHZfc2VjOworICAgICAgICBhLT50X2xhc3RNLnR2X3VzZWMgPSB0X25vdy50dl91c2VjOworICAgICAgICBhLT50X25leHRNLnR2X3NlYyA9IDA7CisgICAgICAgIGEtPnRfbmV4dE0udHZfdXNlYyA9IDA7CisgICAgICAgIE5FVFNOTVBfVElNRVJBREQoJnRfbm93LCAmYS0+dCwgJmEtPnRfbmV4dE0pOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm1fcmVzZXQiLCAiYWxhcm0gJWQgbm90IGZvdW5kXG4iLApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2FwaS5jIGIvc25tcGxpYi9zbm1wX2FwaS5jCmluZGV4IDBkY2Y2NmQuLjE5MWRlYmYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9hcGkuYworKysgYi9zbm1wbGliL3NubXBfYXBpLmMKQEAgLTM4LDYgKzM4LDcgQEAKICAqIHNubXBfYXBpLmMgLSBBUEkgZm9yIGFjY2VzcyB0byBzbm1wLgogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KQEAgLTEzNSw4ICsxMzYsMTQgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdmFjbS5oPgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3RhdGlzdGljcywgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX2FwaSwgbGlibmV0c25tcCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvaWRfaXNfc3VidHJlZSwgc25tcF9hcGkpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzLCBzbm1wX2FwaSkKKwogI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX0xJQlNTTCkKIGV4dGVybiB2b2lkIG5ldHNubXBfY2VydHNfaW5pdCh2b2lkKTsKK2V4dGVybiB2b2lkIG5ldHNubXBfY2VydHNfc2h1dGRvd24odm9pZCk7CiAjZW5kaWYKIAogc3RhdGljIHZvaWQgICAgIF9pbml0X3NubXAodm9pZCk7CkBAIC0xODcsNyArMTk0LDcgQEAKIAogI2RlZmluZSBERUZBVUxUX0NPTU1VTklUWSAgICJwdWJsaWMiCiAjZGVmaW5lIERFRkFVTFRfUkVUUklFUwkgICAgNQotI2RlZmluZSBERUZBVUxUX1RJTUVPVVQJICAgIDEwMDAwMDBMCisjZGVmaW5lIERFRkFVTFRfVElNRU9VVAkgICAgT05FX1NFQwogI2RlZmluZSBERUZBVUxUX1JFTVBPUlQJICAgIFNOTVBfUE9SVAogI2RlZmluZSBERUZBVUxUX0VOVEVSUFJJU0UgIGRlZmF1bHRfZW50ZXJwcmlzZQogI2RlZmluZSBERUZBVUxUX1RJTUUJICAgIDAKQEAgLTIyMiwxOCArMjI5LDYgQEAKICAgICBzaXplX3QgICAgICAgICAgcGFja2V0X2xlbiwgcGFja2V0X3NpemU7CiB9OwogCi0vKgotICogVGhlIGxpc3Qgb2YgYWN0aXZlL29wZW4gc2Vzc2lvbnMuCi0gKi8KLXN0cnVjdCBzZXNzaW9uX2xpc3QgewotICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKm5leHQ7Ci0gICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOwotICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQ7Ci0gICAgc3RydWN0IHNubXBfaW50ZXJuYWxfc2Vzc2lvbiAqaW50ZXJuYWw7Ci19OwotCi0KLQogc3RhdGljIGNvbnN0IGNoYXIgKmFwaV9lcnJvcnNbLVNOTVBFUlJfTUFYICsgMV0gPSB7CiAgICAgIk5vIGVycm9yIiwgICAgICAgICAgICAgICAgIC8qIFNOTVBFUlJfU1VDQ0VTUyAqLwogICAgICJHZW5lcmljIGVycm9yIiwgICAgICAgICAgICAvKiBTTk1QRVJSX0dFTkVSUiAqLwpAQCAtMzUzLDcgKzM0OCw2IEBACiAKIHN0YXRpYyB2b2lkICAgICBzbm1wdjNfY2FsY19tc2dfZmxhZ3MoaW50LCBpbnQsIHVfY2hhciAqKTsKIHN0YXRpYyBpbnQgICAgICBzbm1wdjNfdmVyaWZ5X21zZyhuZXRzbm1wX3JlcXVlc3RfbGlzdCAqLCBuZXRzbm1wX3BkdSAqKTsKLXN0YXRpYyBpbnQgICAgICBzbm1wdjNfYnVpbGRfcHJvYmVfcGR1KG5ldHNubXBfcGR1ICoqKTsKIHN0YXRpYyBpbnQgICAgICBzbm1wdjNfYnVpbGQodV9jaGFyICoqIHBrdCwgc2l6ZV90ICogcGt0X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb2Zmc2V0LCBuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqcGR1KTsKQEAgLTM5MSwxMiArMzg1LDE0IEBACiAgICAgICAgIHJldHVybiAiR0VUIjsKICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CiAgICAgICAgIHJldHVybiAiR0VUTkVYVCI7Ci0gICAgY2FzZSBTTk1QX01TR19SRVNQT05TRToKLSAgICAgICAgcmV0dXJuICJSRVNQT05TRSI7Ci0gICAgY2FzZSBTTk1QX01TR19TRVQ6Ci0gICAgICAgIHJldHVybiAiU0VUIjsKICAgICBjYXNlIFNOTVBfTVNHX0dFVEJVTEs6CiAgICAgICAgIHJldHVybiAiR0VUQlVMSyI7CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorICAgIGNhc2UgU05NUF9NU0dfU0VUOgorICAgICAgICByZXR1cm4gIlNFVCI7CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworICAgIGNhc2UgU05NUF9NU0dfUkVTUE9OU0U6CisgICAgICAgIHJldHVybiAiUkVTUE9OU0UiOwogICAgIGNhc2UgU05NUF9NU0dfSU5GT1JNOgogICAgICAgICByZXR1cm4gIklORk9STSI7CiAgICAgY2FzZSBTTk1QX01TR19UUkFQMjoKQEAgLTY3NSw3ICs2NzEsNyBAQAogICAgIHRtcFJlcWlkID0gbHJhbmQ0OCgpOwogICAgIHRtcE1zZ2lkID0gbHJhbmQ0OCgpOwogI2Vsc2UKLSAgICBzcmFuZG9tKHR2LnR2X3NlYyBeIHR2LnR2X3VzZWMpOworICAgIHNyYW5kb20oKHVuc2lnbmVkKSh0di50dl9zZWMgXiB0di50dl91c2VjKSk7CiAgICAgdG1wUmVxaWQgPSByYW5kb20oKTsKICAgICB0bXBNc2dpZCA9IHJhbmRvbSgpOwogI2VuZGlmCkBAIC03MTEsNiArNzA3LDggQEAKIAogICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsIAogICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9IRVhfT1VUUFVUX0xFTkdUSCwgMTYpOworICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX1JFVFJJRVMsCisgICAgICAgICAgICAgICAgICAgICAgIERFRkFVTFRfUkVUUklFUyk7CiAKICNpZmRlZiBORVRTTk1QX1VTRV9SRVZFUlNFX0FTTkVOQ09ESU5HCiAgICAgbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIApAQCAtNzg3LDYgKzc4NSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub0NvbnRleHRFbmdpbmVJRERpc2NvdmVyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX05PX0RJU0NPVkVSWSk7CisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0lOVEVHRVIsICJzbm1wIiwgInRpbWVvdXQiLAorCQkgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX1RJTUVPVVQpOworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9JTlRFR0VSLCAic25tcCIsICJyZXRyaWVzIiwKKwkJICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9SRVRSSUVTKTsKIAogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2VydmljZV9oYW5kbGVycygpOwogfQpAQCAtODQ0LDYgKzg0NiwxMSBAQAogI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX0xJQlNTTCkKICAgICBuZXRzbm1wX2NlcnRzX2luaXQoKTsKICNlbmRpZgorI2lmZGVmIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OCisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0JPT0xFQU4sICJzbm1wIiwgImRuc3NlY1dhcm5Pbmx5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRE5TU0VDX1dBUk5fT05MWSk7CisjZW5kaWYKIAogICAgIHJlYWRfcHJlbWliX2NvbmZpZ3MoKTsKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCkBAIC05MDUsNiArOTEyLDkgQEAKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HCiAgICAgc2h1dGRvd25fbWliKCk7CiAjZW5kaWYgLyogTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HICovCisjaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfTElCU1NMKQorICAgIG5ldHNubXBfY2VydHNfc2h1dGRvd24oKTsKKyNlbmRpZgogICAgIHVucmVnaXN0ZXJfYWxsX2NvbmZpZ19oYW5kbGVycygpOwogICAgIG5ldHNubXBfY29udGFpbmVyX2ZyZWVfbGlzdCgpOwogICAgIGNsZWFyX3NlY19tb2QoKTsKQEAgLTkxMiwxMCArOTIyLDkgQEAKICAgICBuZXRzbm1wX2NsZWFyX3Rkb21haW5fbGlzdCgpOwogICAgIGNsZWFyX2NhbGxiYWNrKCk7CiAgICAgbmV0c25tcF9kc19zaHV0ZG93bigpOwotICAgIGNsZWFyX3VzZXJfbGlzdCgpOwogICAgIG5ldHNubXBfY2xlYXJfZGVmYXVsdF90YXJnZXQoKTsKICAgICBuZXRzbm1wX2NsZWFyX2RlZmF1bHRfZG9tYWluKCk7Ci0gICAgZnJlZV9ldGltZWxpc3QoKTsKKyAgICBzaHV0ZG93bl9zZWNtb2QoKTsKIAogICAgIGluaXRfc25tcF9pbml0X2RvbmUgID0gMDsKICAgICBfaW5pdF9zbm1wX2luaXRfZG9uZSA9IDA7CkBAIC05NDksNiArOTU4LDggQEAKIC8qCiAgKiBleHRlbmRlZCBvcGVuIAogICovCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9vcGVuX2V4LCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX09QRU5fRVgKIG5ldHNubXBfc2Vzc2lvbiAqCiBzbm1wX29wZW5fZXgobmV0c25tcF9zZXNzaW9uICpzZXNzaW9uLAogICAgICAgICAgICAgIGludCAoKmZwcmVfcGFyc2UpCShuZXRzbm1wX3Nlc3Npb24gKiwgbmV0c25tcF90cmFuc3BvcnQgKiwKQEAgLTk4Myw2ICs5OTQsNyBAQAogCiAgICAgcmV0dXJuIChzbHAtPnNlc3Npb24pOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9PUEVOX0VYICovCiAKIHN0YXRpYyBzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICoKIF9zZXNzX2NvcHkobmV0c25tcF9zZXNzaW9uICogaW5fc2Vzc2lvbikKQEAgLTExNzIsMTAgKzExODQsMjIgQEAKICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlOYW1lTGVuID0gc3RybGVuKGNwKTsKICAgICB9CiAKLSAgICBpZiAoc2Vzc2lvbi0+cmV0cmllcyA9PSBTTk1QX0RFRkFVTFRfUkVUUklFUykKLSAgICAgICAgc2Vzc2lvbi0+cmV0cmllcyA9IERFRkFVTFRfUkVUUklFUzsKLSAgICBpZiAoc2Vzc2lvbi0+dGltZW91dCA9PSBTTk1QX0RFRkFVTFRfVElNRU9VVCkKLSAgICAgICAgc2Vzc2lvbi0+dGltZW91dCA9IERFRkFVTFRfVElNRU9VVDsKKyAgICBpZiAoc2Vzc2lvbi0+cmV0cmllcyA9PSBTTk1QX0RFRkFVTFRfUkVUUklFUykgeworICAgICAgICBpbnQgcmV0cnkgPSBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUkVUUklFUyk7CisgICAgICAgIGlmIChyZXRyeSA8IDApCisgICAgICAgICAgICBzZXNzaW9uLT5yZXRyaWVzID0gREVGQVVMVF9SRVRSSUVTOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXNzaW9uLT5yZXRyaWVzID0gcmV0cnk7CisgICAgfQorICAgIGlmIChzZXNzaW9uLT50aW1lb3V0ID09IFNOTVBfREVGQVVMVF9USU1FT1VUKSB7CisgICAgICAgIGludCB0aW1lb3V0ID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfVElNRU9VVCk7CisgICAgICAgIGlmICh0aW1lb3V0IDw9IDApCisgICAgICAgICAgICBzZXNzaW9uLT50aW1lb3V0ID0gREVGQVVMVF9USU1FT1VUOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXNzaW9uLT50aW1lb3V0ID0gdGltZW91dCAqIE9ORV9TRUM7CisgICAgfQogICAgIHNlc3Npb24tPnNlc3NpZCA9IHNubXBfZ2V0X25leHRfc2Vzc2lkKCk7CiAKICAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TRVNTSU9OX0lOSVQsCkBAIC0xMjI3LDYgKzEyNTEsNyBAQAogICAgIHJldHVybiBwc2w7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QVjNfUFJPQkVfQ09OVEVYVEVOR0lORUlEX1JGQzUzNDMKIC8qKgogICogcHJvYmUgZm9yIGVuZ2luZUlEIHVzaW5nIFJGQyA1MzQzIHByb2JpbmcgbWVjaGFuaXNtcwogICoKQEAgLTEzMTgsNiArMTM0Myw3IEBACiAgICAgfQogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QVjNfUFJPQkVfQ09OVEVYVEVOR0lORUlEX1JGQzUzNDMgKi8KIAogCiAvKioKQEAgLTEzMzksMTYgKzEzNjUsMTcgQEAKIHNubXB2M19lbmdpbmVJRF9wcm9iZShzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICpzbHAsCiAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICogaW5fc2Vzc2lvbikKIHsKLSAgICBuZXRzbm1wX3BkdSAgICAqcGR1ID0gTlVMTCwgKnJlc3BvbnNlID0gTlVMTDsKICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247Ci0gICAgdW5zaWduZWQgaW50ICAgIGk7CiAgICAgaW50ICAgICAgICAgICAgIHN0YXR1czsKKyAgICBzdHJ1Y3Qgc25tcF9zZWNtb2RfZGVmICpzcHRyID0gTlVMTDsKIAogICAgIGlmIChzbHAgPT0gTlVMTCB8fCBzbHAtPnNlc3Npb24gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBzZXNzaW9uID0gc2xwLT5zZXNzaW9uOworICAgIG5ldHNubXBfYXNzZXJ0X29yX3JldHVybihzZXNzaW9uICE9IE5VTEwsIDApOworICAgIHNwdHIgPSBmaW5kX3NlY19tb2Qoc2Vzc2lvbi0+c2VjdXJpdHlNb2RlbCk7CiAKICAgICAvKgogICAgICAqIElmIHdlIGFyZSBvcGVuaW5nIGEgVjMgc2Vzc2lvbiBhbmQgd2UgZG9uJ3Qga25vdyBlbmdpbmVJRCB3ZSBtdXN0IHByb2JlCkBAIC0xMzU2LDkwICsxMzgzLDMwIEBACiAgICAgICogbGlzdCBzbyB0aGF0IHRoZSByZXNwb25zZSBjYW4gaGFuZGxlZCBjb3JyZWN0bHkuIAogICAgICAqLwogCi0gICAgaWYgKChzZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfRE9OVF9QUk9CRSkgPT0gU05NUF9GTEFHU19ET05UX1BST0JFKQotICAgICAgICByZXR1cm4gMTsKLQotICAgIGlmIChzZXNzaW9uLT52ZXJzaW9uID09IFNOTVBfVkVSU0lPTl8zKSB7Ci0gICAgICAgIHN0cnVjdCBzbm1wX3NlY21vZF9kZWYgKnNwdHIgPSBmaW5kX3NlY19tb2Qoc2Vzc2lvbi0+c2VjdXJpdHlNb2RlbCk7Ci0KKyAgICBpZiAoc2Vzc2lvbi0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMyAmJgorICAgICAgICAoMCA9PSAoc2Vzc2lvbi0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX0RPTlRfUFJPQkUpKSkgewogICAgICAgICBpZiAoTlVMTCAhPSBzcHRyICYmIE5VTEwgIT0gc3B0ci0+cHJvYmVfZW5naW5laWQpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsICJwcm9iaW5nIGZvciBlbmdpbmVJRCB1c2luZyBzZWN1cml0eSBtb2RlbCBjYWxsYmFjay4uLlxuIikpOwogICAgICAgICAgICAgLyogc2VjdXJpdHkgbW9kZWwgc3BlY2lmaWMgbWVjaGFuaXNtIG9mIGRldGVybWluaW5nIGVuZ2luZUlEICovCi0gICAgICAgICAgICBzdGF0dXMgPSAoKnNwdHItPnByb2JlX2VuZ2luZWlkKSAoc2xwLCBzZXNzaW9uKTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMpCisgICAgICAgICAgICBzdGF0dXMgPSAoKnNwdHItPnByb2JlX2VuZ2luZWlkKSAoc2xwLCBpbl9zZXNzaW9uKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gU05NUEVSUl9TVUNDRVNTKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHN1Y2Nlc3MhICovCi0gICAgICAgIH0gZWxzZSBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAoc25tcHYzX2J1aWxkX3Byb2JlX3BkdSgmcGR1KSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgInVuYWJsZSB0byBjcmVhdGUgcHJvYmUgUERVXG4iKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAicHJvYmluZyBmb3IgZW5naW5lSUQuLi5cbiIpKTsKLSAgICAgICAgICAgIHNlc3Npb24tPmZsYWdzIHw9IFNOTVBfRkxBR1NfRE9OVF9QUk9CRTsgLyogcHJldmVudCByZWN1cnNpb24gKi8KLSAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZShzbHAsIHBkdSwgJnJlc3BvbnNlKTsKLQotICAgICAgICAgICAgaWYgKChyZXNwb25zZSA9PSBOVUxMKSAmJiAoc3RhdHVzID09IFNUQVRfU1VDQ0VTUykpIHsKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBTVEFUX0VSUk9SOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzd2l0Y2ggKHN0YXR1cykgewotICAgICAgICAgICAgY2FzZSBTVEFUX1NVQ0NFU1M6Ci0gICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9JTlZBTElEX01TRzsgLyogWFg/PyAqLwotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiBleHBlY3RlZCBSZXBvcnQgYXMgcmVzcG9uc2UgdG8gcHJvYmU6ICVzICglbGQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZXJyc3RyaW5nKHJlc3BvbnNlLT5lcnJzdGF0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+ZXJyc3RhdCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVEFUX0VSUk9SOiAgIC8qIHRoaXMgaXMgd2hhdCB3ZSBleHBlY3RlZCAtPiBSZXBvcnQgPT0gU1RBVF9FUlJPUiAqLwotICAgICAgICAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9FTkdfSUQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNUQVRfVElNRU9VVDoKLSAgICAgICAgICAgICAgICBpbl9zZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1RJTUVPVVQ7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBjb25uZWN0IHdpdGggcmVtb3RlIGVuZ2luZTogJXMgKCVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2FwaV9lcnJzdHJpbmcoc2Vzc2lvbi0+c19zbm1wX2Vycm5vKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8pKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHNscC0+c2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGRldGVybWluZSByZW1vdGUgZW5naW5lIElEXG4iKSk7Ci0gICAgICAgICAgICAgICAgLyogY2xlYXIgdGhlIGZsYWcgc28gdGhhdCBwcm9iZSBvY2N1cnMgb24gbmV4dCBpbmZvcm0gKi8KLSAgICAgICAgICAgICAgICBzZXNzaW9uLT5mbGFncyAmPSB+U05NUF9GTEFHU19ET05UX1BST0JFOwotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpbl9zZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1NVQ0NFU1M7Ci0gICAgICAgICAgICBpZiAoc25tcF9nZXRfZG9fZGVidWdnaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9zZXNzX29wZW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHByb2JlIGZvdW5kIGVuZ2luZUlEOiAgIikpOwotICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzbHAtPnNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW47IGkrKykKLSAgICAgICAgICAgICAgICAgICAgREVCVUdNU0coKCJzbm1wX3Nlc3Nfb3BlbiIsICIlMDJ4IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNscC0+c2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRFtpXSkpOwotICAgICAgICAgICAgICAgIERFQlVHTVNHKCgic25tcF9zZXNzX29wZW4iLCAiXG4iKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKgotICAgICAgICAgKiBpZiBib290L3RpbWUgc3VwcGxpZWQgc2V0IGl0IGZvciB0aGlzIGVuZ2luZUlEIAotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHNlc3Npb24tPmVuZ2luZUJvb3RzIHx8IHNlc3Npb24tPmVuZ2luZVRpbWUpIHsKLSAgICAgICAgICAgIHNldF9lbmdpbmV0aW1lKHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+ZW5naW5lQm9vdHMsIHNlc3Npb24tPmVuZ2luZVRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24oc2xwLT5zZXNzaW9uKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9VU0VSX05BTUU7ICAgICAgIC8qIFhYPz8gKi8KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAic25tcHYzX2VuZ2luZV9wcm9iZSgpOiBmYWlsZWQoMikgdG8gY3JlYXRlIGEgbmV3IHVzZXIgZnJvbSBzZXNzaW9uXG4iKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBYWFg6IGRlZmF1bHQgdG8gdGhlIGRlZmF1bHQgUkZDNTM0MyBjb250ZXh0RW5naW5lSUQgUHJvYmU/ICovCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KIAorICAgIC8qCisgICAgICogc2VlIGlmIHRoZXJlIGlzIGEgaG9vayB0byBjYWxsIG5vdyB0aGF0IHdlJ3JlIGRvbmUgcHJvYmluZyBmb3IgYW4KKyAgICAgKiBlbmdpbmVJRAorICAgICAqLworICAgIGlmIChzcHRyICYmIHNwdHItPnBvc3RfcHJvYmVfZW5naW5laWQpIHsKKyAgICAgICAgc3RhdHVzID0gKCpzcHRyLT5wb3N0X3Byb2JlX2VuZ2luZWlkKShzbHAsIGluX3Nlc3Npb24pOworICAgICAgICBpZiAoc3RhdHVzICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIHJldHVybiAxOwogfQogCkBAIC0xNTg5LDEyICsxNTU2LDEyIEBACiAgICAgICAgIGlmIChpbl9zZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfU1RSRUFNX1NPQ0tFVCkgewogICAgICAgICAgICAgdHJhbnNwb3J0ID0KICAgICAgICAgICAgICAgICBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X2Z1bGwoInNubXAiLCBpbl9zZXNzaW9uLT5wZWVybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInRjcCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3Nlc3Npb24tPmxvY2FsX3BvcnQsICJ0Y3AsdGNwNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdHJhbnNwb3J0ID0KICAgICAgICAgICAgICAgICBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X2Z1bGwoInNubXAiLCBpbl9zZXNzaW9uLT5wZWVybmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInVkcCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX3Nlc3Npb24tPmxvY2FsX3BvcnQsICJ1ZHAsdWRwNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgICAgICB9CiAKQEAgLTE3ODMsMTggKzE3NTAsMTEgQEAKICAgICBpZiAoc2xwLT5zZXNzaW9uLT52ZXJzaW9uID09IFNOTVBfVkVSU0lPTl8zKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3NfYWRkIiwKICAgICAgICAgICAgICAgICAgICAgImFkZGluZyB2MyBzZXNzaW9uIC0tIG1heWJlIGVuZ2luZUlEIHByb2JlIG5vd1xuIikpOwotICAgICAgICBpZiAoIXNubXB2M19lbmdpbmVJRF9wcm9iZShzbHAsIGluX3Nlc3Npb24pKSB7CisgICAgICAgIGlmICghc25tcHYzX2VuZ2luZUlEX3Byb2JlKHNscCwgc2xwLT5zZXNzaW9uKSkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2Vzc19hZGQiLCAiZW5naW5lIElEIHByb2JlIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgc25tcF9zZXNzX2Nsb3NlKHNscCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpZiAoY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKHNscC0+c2Vzc2lvbikgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBpbl9zZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1VOS05PV05fVVNFUl9OQU1FOwotICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzbm1wX3Nlc3NfYWRkKCk6IGZhaWxlZCgyKSB0byBjcmVhdGUgYSBuZXcgdXNlciBmcm9tIHNlc3Npb25cbiIpKTsKLSAgICAgICAgICAgIHNubXBfc2Vzc19jbG9zZShzbHApOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICBzbHAtPnNlc3Npb24tPmZsYWdzICY9IH5TTk1QX0ZMQUdTX0RPTlRfUFJPQkU7CkBAIC0xODI4LDIyNSArMTc4OCwxNyBAQAogICAgIHJldHVybiBwdm9pZDsKIH0KIAotCi0KLS8qCi0gKiBjcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKToKLSAqIAotICogY3JlYXRlcyBhIHVzZXIgaW4gdGhlIHVzbSB0YWJsZSBmcm9tIHRoZSBpbmZvcm1hdGlvbiBpbiBhIHNlc3Npb24uCi0gKiBJZiB0aGUgdXNlciBhbHJlYWR5IGV4aXN0cywgaXQgaXMgdXBkYXRlZCB3aXRoIHRoZSBjdXJyZW50Ci0gKiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZXNzaW9uCi0gKiAKLSAqIFBhcmFtZXRlcnM6Ci0gKiBzZXNzaW9uIC0tIElOOiBwb2ludGVyIHRvIHRoZSBzZXNzaW9uIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSB1c2VyLgotICogCi0gKiBSZXR1cm5zOgotICogU05NUEVSUl9TVUNDRVNTCi0gKiBTTk1QRVJSX0dFTkVSUiAKLSAqLwogaW50Ci1jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbikKLXsKLSAgICBzdHJ1Y3QgdXNtVXNlciAqdXNlcjsKLSAgICBpbnQgICAgICAgICAgICAgdXNlcl9qdXN0X2NyZWF0ZWQgPSAwOwotICAgIGNoYXIgKmNwOworY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24pIHsKKyNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KKyAgICByZXR1cm4gdXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbihzZXNzaW9uKTsKKyNlbHNlCisgICAgc25tcF9sb2coTE9HX0VSUiwgImNyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbiBjYWxsZWQgd2hlbiBVU00gd2Fzbid0IGNvbXBpbGVkIGluIik7CisgICAgbmV0c25tcF9hc3NlcnQoMCA9PSAxKTsKKyAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworI2VuZGlmCit9CiAKLSAgICAvKgotICAgICAqIC0gZG9uJ3QgY3JlYXRlLWFub3RoZXIvY29weS1pbnRvIHVzZXIgZm9yIHRoaXMgc2Vzc2lvbiBieSBkZWZhdWx0Ci0gICAgICogLSBiYWlsIG5vdyAobm8gZXJyb3IpIGlmIHdlIGRvbid0IGhhdmUgYW4gZW5naW5lSUQKLSAgICAgKi8KLSAgICBpZiAoU05NUF9GTEFHU19VU0VSX0NSRUFURUQgPT0gKHNlc3Npb24tPmZsYWdzICYgU05NUF9GTEFHU19VU0VSX0NSRUFURUQpIHx8Ci0gICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TW9kZWwgIT0gU05NUF9TRUNfTU9ERUxfVVNNIHx8Ci0gICAgICAgIHNlc3Npb24tPnZlcnNpb24gIT0gU05NUF9WRVJTSU9OXzMgfHwKLSAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlOYW1lTGVuID09IDAgfHwKLSAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKQotICAgICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwotCi0gICAgc2Vzc2lvbi0+ZmxhZ3MgfD0gU05NUF9GTEFHU19VU0VSX0NSRUFURUQ7Ci0KLSAgICAvKgotICAgICAqIG5vdyB0aGF0IHdlIGhhdmUgdGhlIGVuZ2luZUlELCBjcmVhdGUgYW4gZW50cnkgaW4gdGhlIFVTTSBsaXN0Ci0gICAgICogZm9yIHRoaXMgdXNlciB1c2luZyB0aGUgaW5mb3JtYXRpb24gaW4gdGhlIHNlc3Npb24gCi0gICAgICovCi0gICAgdXNlciA9IHVzbV9nZXRfdXNlcl9mcm9tX2xpc3Qoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c21fZ2V0X3VzZXJMaXN0KCksIDApOwotICAgIGlmICh1c2VyID09IE5VTEwpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgIkJ1aWxkaW5nIHVzZXIgJXMuLi5cbiIsCi0gICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TmFtZSkpOwotICAgICAgICAvKgotICAgICAgICAgKiB1c2VyIGRvZXNuJ3QgZXhpc3Qgc28gd2UgY3JlYXRlIGFuZCBhZGQgaXQgCi0gICAgICAgICAqLwotICAgICAgICB1c2VyID0gKHN0cnVjdCB1c21Vc2VyICopIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHVzbVVzZXIpKTsKLSAgICAgICAgaWYgKHVzZXIgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLQotICAgICAgICAvKgotICAgICAgICAgKiBjb3B5IGluIHRoZSBzZWN1cml0eU5hbWUgCi0gICAgICAgICAqLwotICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKSB7Ci0gICAgICAgICAgICB1c2VyLT5uYW1lID0gc3RyZHVwKHNlc3Npb24tPnNlY3VyaXR5TmFtZSk7Ci0gICAgICAgICAgICB1c2VyLT5zZWNOYW1lID0gc3RyZHVwKHNlc3Npb24tPnNlY3VyaXR5TmFtZSk7Ci0gICAgICAgICAgICBpZiAodXNlci0+bmFtZSA9PSBOVUxMIHx8IHVzZXItPnNlY05hbWUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogY29weSBpbiB0aGUgZW5naW5lSUQgCi0gICAgICAgICAqLwotICAgICAgICB1c2VyLT5lbmdpbmVJRCA9IG5ldHNubXBfbWVtZHVwKHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbik7Ci0gICAgICAgIGlmICghdXNlci0+ZW5naW5lSUQpIHsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgIH0KLSAgICAgICAgdXNlci0+ZW5naW5lSURMZW4gPSBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuOwotCi0gICAgICAgIHVzZXJfanVzdF9jcmVhdGVkID0gMTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIGNvcHkgdGhlIGF1dGggcHJvdG9jb2wgCi0gICAgICovCi0gICAgaWYgKHVzZXItPmF1dGhQcm90b2NvbCA9PSBOVUxMICYmIHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKHVzZXItPmF1dGhQcm90b2NvbCk7Ci0gICAgICAgIHVzZXItPmF1dGhQcm90b2NvbCA9Ci0gICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChzZXNzaW9uLT5zZWN1cml0eUF1dGhQcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvTGVuKTsKLSAgICAgICAgaWYgKHVzZXItPmF1dGhQcm90b2NvbCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwotICAgICAgICB9Ci0gICAgICAgIHVzZXItPmF1dGhQcm90b2NvbExlbiA9IHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvTGVuOwotICAgIH0KLQotICAgIC8qCi0gICAgICogY29weSB0aGUgcHJpdiBwcm90b2NvbCAKLSAgICAgKi8KLSAgICBpZiAodXNlci0+cHJpdlByb3RvY29sID09IE5VTEwgJiYgc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG8gIT0gTlVMTCkgewotICAgICAgICBTTk1QX0ZSRUUodXNlci0+cHJpdlByb3RvY29sKTsKLSAgICAgICAgdXNlci0+cHJpdlByb3RvY29sID0KLSAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHNlc3Npb24tPnNlY3VyaXR5UHJpdlByb3RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG9MZW4pOwotICAgICAgICBpZiAodXNlci0+cHJpdlByb3RvY29sID09IE5VTEwpIHsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7Ci0gICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgIH0KLSAgICAgICAgdXNlci0+cHJpdlByb3RvY29sTGVuID0gc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG9MZW47Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBjb3B5IGluIHRoZSBhdXRoZW50aWNhdGlvbiBLZXkuICBJZiBub3QgbG9jYWxpemVkLCBsb2NhbGl6ZSBpdCAKLSAgICAgKi8KLSAgICBpZiAodXNlci0+YXV0aEtleSA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleSAhPSBOVUxMCi0gICAgICAgICAgICAmJiBzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleUxlbiAhPSAwKSB7Ci0gICAgICAgICAgICAvKiBhbHJlYWR5IGxvY2FsaXplZCBrZXkgcGFzc2VkIGluLiAgdXNlIGl0ICovCi0gICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aEtleSk7Ci0gICAgICAgICAgICB1c2VyLT5hdXRoS2V5ID0gbmV0c25tcF9tZW1kdXAoc2Vzc2lvbi0+c2VjdXJpdHlBdXRoTG9jYWxLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoTG9jYWxLZXlMZW4pOwotICAgICAgICAgICAgaWYgKCF1c2VyLT5hdXRoS2V5KSB7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1c2VyLT5hdXRoS2V5TGVuID0gc2Vzc2lvbi0+c2VjdXJpdHlBdXRoTG9jYWxLZXlMZW47Ci0gICAgICAgIH0gZWxzZSBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlBdXRoS2V5ICE9IE5VTEwKLSAgICAgICAgICAgICAgICAgICAmJiBzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXlMZW4gIT0gMCkgewotICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPmF1dGhLZXkpOwotICAgICAgICAgICAgdXNlci0+YXV0aEtleSA9ICh1X2NoYXIgKikgY2FsbG9jKDEsIFVTTV9MRU5HVEhfS1VfSEFTSEJMT0NLKTsKLSAgICAgICAgICAgIGlmICh1c2VyLT5hdXRoS2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVzZXItPmF1dGhLZXlMZW4gPSBVU01fTEVOR1RIX0tVX0hBU0hCTE9DSzsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0ZV9rdWwodXNlci0+YXV0aFByb3RvY29sLCB1c2VyLT5hdXRoUHJvdG9jb2xMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoS2V5TGVuLCB1c2VyLT5hdXRoS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlci0+YXV0aEtleUxlbikgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoKGNwID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FVVEhMT0NBTElaRURLRVkpKSkgewotICAgICAgICAgICAgc2l6ZV90IGJ1ZmxlbiA9IFVTTV9BVVRIX0tVX0xFTjsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5hdXRoS2V5KTsKLSAgICAgICAgICAgIHVzZXItPmF1dGhLZXkgPSAodV9jaGFyICopbWFsbG9jKGJ1Zmxlbik7IC8qIG1heCBsZW5ndGggbmVlZGVkICovCi0gICAgICAgICAgICB1c2VyLT5hdXRoS2V5TGVuID0gMDsKLSAgICAgICAgICAgIC8qIGl0IHdpbGwgYmUgYSBoZXggc3RyaW5nICovCi0gICAgICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmdXNlci0+YXV0aEtleSwgJmJ1ZmxlbiwgJnVzZXItPmF1dGhLZXlMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBjcCkpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qCi0gICAgICogY29weSBpbiB0aGUgcHJpdmFjeSBLZXkuICBJZiBub3QgbG9jYWxpemVkLCBsb2NhbGl6ZSBpdCAKLSAgICAgKi8KLSAgICBpZiAodXNlci0+cHJpdktleSA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleSAhPSBOVUxMCi0gICAgICAgICAgICAmJiBzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleUxlbiAhPSAwKSB7Ci0gICAgICAgICAgICAvKiBhbHJlYWR5IGxvY2FsaXplZCBrZXkgcGFzc2VkIGluLiAgdXNlIGl0ICovCi0gICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+cHJpdktleSk7Ci0gICAgICAgICAgICB1c2VyLT5wcml2S2V5ID0gbmV0c25tcF9tZW1kdXAoc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXlMZW4pOwotICAgICAgICAgICAgaWYgKCF1c2VyLT5wcml2S2V5KSB7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1c2VyLT5wcml2S2V5TGVuID0gc2Vzc2lvbi0+c2VjdXJpdHlQcml2TG9jYWxLZXlMZW47Ci0gICAgICAgIH0gZWxzZSBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlQcml2S2V5ICE9IE5VTEwKLSAgICAgICAgICAgICAgICAgICAmJiBzZXNzaW9uLT5zZWN1cml0eVByaXZLZXlMZW4gIT0gMCkgewotICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPnByaXZLZXkpOwotICAgICAgICAgICAgdXNlci0+cHJpdktleSA9ICh1X2NoYXIgKikgY2FsbG9jKDEsIFVTTV9MRU5HVEhfS1VfSEFTSEJMT0NLKTsKLSAgICAgICAgICAgIGlmICh1c2VyLT5wcml2S2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4gPSBVU01fTEVOR1RIX0tVX0hBU0hCTE9DSzsKLSAgICAgICAgICAgIGlmIChnZW5lcmF0ZV9rdWwodXNlci0+YXV0aFByb3RvY29sLCB1c2VyLT5hdXRoUHJvdG9jb2xMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5UHJpdktleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlQcml2S2V5TGVuLCB1c2VyLT5wcml2S2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdXNlci0+cHJpdktleUxlbikgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoKGNwID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1BSSVZMT0NBTElaRURLRVkpKSkgewotICAgICAgICAgICAgc2l6ZV90IGJ1ZmxlbiA9IFVTTV9QUklWX0tVX0xFTjsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5wcml2S2V5KTsKLSAgICAgICAgICAgIHVzZXItPnByaXZLZXkgPSAodV9jaGFyICopbWFsbG9jKGJ1Zmxlbik7IC8qIG1heCBsZW5ndGggbmVlZGVkICovCi0gICAgICAgICAgICB1c2VyLT5wcml2S2V5TGVuID0gMDsKLSAgICAgICAgICAgIC8qIGl0IHdpbGwgYmUgYSBoZXggc3RyaW5nICovCi0gICAgICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmdXNlci0+cHJpdktleSwgJmJ1ZmxlbiwgJnVzZXItPnByaXZLZXlMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBjcCkpIHsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICh1c2VyX2p1c3RfY3JlYXRlZCkgewotICAgICAgICAvKgotICAgICAgICAgKiBhZGQgdGhlIHVzZXIgaW50byB0aGUgZGF0YWJhc2UgCi0gICAgICAgICAqLwotICAgICAgICB1c2VyLT51c2VyU3RhdHVzID0gUlNfQUNUSVZFOwotICAgICAgICB1c2VyLT51c2VyU3RvcmFnZVR5cGUgPSBTVF9SRUFET05MWTsKLSAgICAgICAgdXNtX2FkZF91c2VyKHVzZXIpOwotICAgIH0KLQotICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7Ci0KLQotfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKCkgKi8KIAogLyoKICAqICBEbyBhICJkZWVwIGZyZWUoKSIgb2YgYSBuZXRzbm1wX3Nlc3Npb24uCkBAIC0yMjA4LDQ5ICsxOTYwLDYgQEAKICAgICByZXR1cm4gMTsKIH0KIAotc3RhdGljIGludAotc25tcHYzX2J1aWxkX3Byb2JlX3BkdShuZXRzbm1wX3BkdSAqKnBkdSkKLXsKLSAgICBzdHJ1Y3QgdXNtVXNlciAqdXNlcjsKLQotICAgIC8qCi0gICAgICogY3JlYXRlIHRoZSBwZHUgCi0gICAgICovCi0gICAgaWYgKCFwZHUpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICAqcGR1ID0gc25tcF9wZHVfY3JlYXRlKFNOTVBfTVNHX0dFVCk7Ci0gICAgaWYgKCEoKnBkdSkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICAoKnBkdSktPnZlcnNpb24gPSBTTk1QX1ZFUlNJT05fMzsKLSAgICAoKnBkdSktPnNlY3VyaXR5TmFtZSA9IHN0cmR1cCgiIik7Ci0gICAgKCpwZHUpLT5zZWN1cml0eU5hbWVMZW4gPSBzdHJsZW4oKCpwZHUpLT5zZWN1cml0eU5hbWUpOwotICAgICgqcGR1KS0+c2VjdXJpdHlMZXZlbCA9IFNOTVBfU0VDX0xFVkVMX05PQVVUSDsKLSAgICAoKnBkdSktPnNlY3VyaXR5TW9kZWwgPSBTTk1QX1NFQ19NT0RFTF9VU007Ci0KLSAgICAvKgotICAgICAqIGNyZWF0ZSB0aGUgZW1wdHkgdXNlciAKLSAgICAgKi8KLSAgICB1c2VyID0gdXNtX2dldF91c2VyKE5VTEwsIDAsICgqcGR1KS0+c2VjdXJpdHlOYW1lKTsKLSAgICBpZiAodXNlciA9PSBOVUxMKSB7Ci0gICAgICAgIHVzZXIgPSAoc3RydWN0IHVzbVVzZXIgKikgY2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgdXNtVXNlcikpOwotICAgICAgICBpZiAodXNlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KCpwZHUpOwotICAgICAgICAgICAgKnBkdSA9IChuZXRzbm1wX3BkdSAqKSBOVUxMOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIHVzZXItPm5hbWUgPSBzdHJkdXAoKCpwZHUpLT5zZWN1cml0eU5hbWUpOwotICAgICAgICB1c2VyLT5zZWNOYW1lID0gc3RyZHVwKCgqcGR1KS0+c2VjdXJpdHlOYW1lKTsKLSAgICAgICAgdXNlci0+YXV0aFByb3RvY29sTGVuID0gc2l6ZW9mKHVzbU5vQXV0aFByb3RvY29sKSAvIHNpemVvZihvaWQpOwotICAgICAgICB1c2VyLT5hdXRoUHJvdG9jb2wgPQotICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQodXNtTm9BdXRoUHJvdG9jb2wsIHVzZXItPmF1dGhQcm90b2NvbExlbik7Ci0gICAgICAgIHVzZXItPnByaXZQcm90b2NvbExlbiA9IHNpemVvZih1c21Ob1ByaXZQcm90b2NvbCkgLyBzaXplb2Yob2lkKTsKLSAgICAgICAgdXNlci0+cHJpdlByb3RvY29sID0KLSAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHVzbU5vUHJpdlByb3RvY29sLCB1c2VyLT5wcml2UHJvdG9jb2xMZW4pOwotICAgICAgICB1c21fYWRkX3VzZXIodXNlcik7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCiBzdGF0aWMgdm9pZAogc25tcHYzX2NhbGNfbXNnX2ZsYWdzKGludCBzZWNfbGV2ZWwsIGludCBtc2dfY29tbWFuZCwgdV9jaGFyICogZmxhZ3MpCiB7CkBAIC0yMzQwLDkgKzIwNDksMTMgQEAKICAgICAgICAgLyoKICAgICAgICAgICogRmFsbHRocm91Z2ggCiAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PVElGWV9PTkxZCiAgICAgY2FzZSBTTk1QX01TR19HRVQ6CiAgICAgY2FzZSBTTk1QX01TR19HRVRORVhUOgorI2VuZGlmIC8qICEgTkVUU05NUF9OT1RJRllfT05MWSAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBfTVNHX1NFVDoKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgY2FzZSBTTk1QX01TR19JTkZPUk06CiAgICAgICAgIGlmIChwZHUtPmVycnN0YXQgPT0gU05NUF9ERUZBVUxUX0VSUlNUQVQpCiAgICAgICAgICAgICBwZHUtPmVycnN0YXQgPSAwOwpAQCAtMjM1MCw2ICsyMDYzLDcgQEAKICAgICAgICAgICAgIHBkdS0+ZXJyaW5kZXggPSAwOwogICAgICAgICBicmVhazsKIAorI2lmbmRlZiBORVRTTk1QX05PVElGWV9PTkxZCiAgICAgY2FzZSBTTk1QX01TR19HRVRCVUxLOgogICAgICAgICBpZiAocGR1LT5tYXhfcmVwZXRpdGlvbnMgPCAwKSB7CiAgICAgICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX0JBRF9SRVBFVElUSU9OUzsKQEAgLTIzNjAsNiArMjA3NCw3IEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogISBORVRTTk1QX05PVElGWV9PTkxZICovCiAKICAgICBjYXNlIFNOTVBfTVNHX1RSQVA6CiAgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVjFfSU5fVjI7CkBAIC0zMDI2LDkgKzI3NDEsMTMgQEAKICAgICAgICAgLyoKICAgICAgICAgICogRmFsbHRocm91Z2ggCiAgICAgICAgICAqLworI2lmbmRlZiBORVRTTk1QX05PVElGWV9PTkxZCiAgICAgY2FzZSBTTk1QX01TR19HRVQ6CiAgICAgY2FzZSBTTk1QX01TR19HRVRORVhUOgorI2VuZGlmIC8qICEgTkVUU05NUF9OT1RJRllfT05MWSAqLworI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICBjYXNlIFNOTVBfTVNHX1NFVDoKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAgICAgICAgIC8qCiAgICAgICAgICAqIGFsbCB2ZXJzaW9ucyBzdXBwb3J0IHRoZXNlIFBEVSB0eXBlcyAKICAgICAgICAgICovCkBAIC0zMDYzLDYgKzI3ODIsNyBAQAogICAgICAgICAgICAgcGR1LT5lcnJpbmRleCA9IDA7CiAgICAgICAgIGJyZWFrOwogCisjaWZuZGVmIE5FVFNOTVBfTk9USUZZX09OTFkKICAgICBjYXNlIFNOTVBfTVNHX0dFVEJVTEs6CiAgICAgICAgIC8qCiAgICAgICAgICAqIG5vdCBzdXBwb3J0ZWQgaW4gU05NUHYxIGFuZCBTTk1Qc2VjIApAQCAtMzA4Miw2ICsyODAyLDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiAhIE5FVFNOTVBfTk9USUZZX09OTFkgKi8KIAogICAgIGNhc2UgU05NUF9NU0dfVFJBUDoKICAgICAgICAgLyoKQEAgLTMxNjUsNyArMjg4Niw2IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGlmICgwID09IHNlc3Npb24tPmNvbW11bml0eV9sZW4pIHsKICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUocGR1LT5jb21tdW5pdHkpOwotICAgICAgICAgICAgICAgIHBkdS0+Y29tbXVuaXR5ID0gTlVMTDsKICAgICAgICAgICAgIH0gZWxzZSBpZiAocGR1LT5jb21tdW5pdHlfbGVuID09IHNlc3Npb24tPmNvbW11bml0eV9sZW4pIHsKICAgICAgICAgICAgICAgICBtZW1tb3ZlKHBkdS0+Y29tbXVuaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+Y29tbXVuaXR5LCBzZXNzaW9uLT5jb21tdW5pdHlfbGVuKTsKQEAgLTQwNzYsOSArMzc5Niw3IEBACiAgICAgICAgICAgICBERUJVR0lOREVOVEFERCgtNCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobWFsbG9jYnVmKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUobWFsbG9jYnVmKTsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUobWFsbG9jYnVmKTsKICAgICAgICAgcmV0dXJuIHJldF92YWw7CiAgICAgfQogCkBAIC00MDkxLDkgKzM4MDksNyBAQAogICAgIGlmIChkYXRhID09IE5VTEwpIHsKICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfU05NUElOQVNOUEFSU0VFUlJTKTsKICAgICAgICAgREVCVUdJTkRFTlRBREQoLTQpOwotICAgICAgICBpZiAobWFsbG9jYnVmKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUobWFsbG9jYnVmKTsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUobWFsbG9jYnVmKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfQVNOX1BBUlNFX0VSUjsKICAgICB9CiAKQEAgLTQxMTYsMTUgKzM4MzIsMTEgQEAKICAgICBpZiAocmV0ICE9IFNOTVBFUlJfU1VDQ0VTUykgewogICAgICAgICBFUlJPUl9NU0coImVycm9yIHBhcnNpbmcgUERVIik7CiAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1NOTVBJTkFTTlBBUlNFRVJSUyk7Ci0gICAgICAgIGlmIChtYWxsb2NidWYpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwotICAgICAgICB9CisgICAgICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9BU05fUEFSU0VfRVJSOwogICAgIH0KIAotICAgIGlmIChtYWxsb2NidWYpIHsKLSAgICAgICAgU05NUF9GUkVFKG1hbGxvY2J1Zik7Ci0gICAgfQorICAgIFNOTVBfRlJFRShtYWxsb2NidWYpOwogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBzbm1wdjNfcGFyc2UoKSAqLwogCkBAIC00MjM2LDcgKzM5NDgsMTEgQEAKICAgICAvKgogICAgICAqIGZpbmQgdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvdW50ZXIgIAogICAgICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MKICAgICBsdG1wID0gc25tcF9nZXRfc3RhdGlzdGljKHN0YXRfaW5kKTsKKyNlbHNlIC8qICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MgKi8KKyAgICBsdG1wID0gMTsKKyNlbmRpZiAvKiAhTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFUSVNUSUNTICovCiAKICAgICAvKgogICAgICAqIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY291bnRlciAgCkBAIC00NzE1LDEyICs0NDMxLDE2IEBACiAgICAgICAgICAqIGZhbGx0aHJvdWdoIAogICAgICAgICAgKi8KIAorI2lmbmRlZiBORVRTTk1QX05PVElGWV9PTkxZCiAgICAgY2FzZSBTTk1QX01TR19HRVQ6CiAgICAgY2FzZSBTTk1QX01TR19HRVRORVhUOgogICAgIGNhc2UgU05NUF9NU0dfR0VUQlVMSzoKKyNlbmRpZiAvKiAhIE5FVFNOTVBfTk9USUZZX09OTFkgKi8KKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCisgICAgY2FzZSBTTk1QX01TR19TRVQ6CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogICAgIGNhc2UgU05NUF9NU0dfVFJBUDI6CiAgICAgY2FzZSBTTk1QX01TR19JTkZPUk06Ci0gICAgY2FzZSBTTk1QX01TR19TRVQ6CiAgICAgICAgIC8qCiAgICAgICAgICAqIFBEVSBpcyBub3QgYW4gU05NUHYxIFRSQVAgCiAgICAgICAgICAqLwpAQCAtNDk2NywxOCArNDY4Nyw2IEBACiAgICAgfQogCiAgICAgLyoKLSAgICAgKiBjaGVjayB0aGF0IGl0IGFncmVlcyB3aXRoIGVuZ2luZUlEIHJldHVybmVkIGZyb20gVVNNIGFib3ZlCi0gICAgICogKiBvbmx5IGEgd2FybmluZyBiZWNhdXNlIHRoaXMgY291bGQgYmUgbGVnYWwgaWYgd2UgYXJlIGEgcHJveHkKLSAgICAgKi8KLSAgICBpZiAocGR1LT5zZWN1cml0eU1vZGVsID09IE5FVFNOTVBfU0VDTU9EX1VTTSAmJgotICAgICAgICAocGR1LT5zZWN1cml0eUVuZ2luZUlETGVuICE9IHBkdS0+Y29udGV4dEVuZ2luZUlETGVuIHx8Ci0gICAgICAgICBtZW1jbXAocGR1LT5zZWN1cml0eUVuZ2luZUlELCBwZHUtPmNvbnRleHRFbmdpbmVJRCwKLSAgICAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4pICE9IDApKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzY29wZWRQRFVfcGFyc2UiLAotICAgICAgICAgICAgICAgICAgICAiTm90ZTogc2VjdXJpdHkgYW5kIGNvbnRleHQgZW5naW5lSURzIGRpZmZlclxuIikpOwotICAgIH0KLQotICAgIC8qCiAgICAgICogcGFyc2UgY29udGV4dE5hbWUgZnJvbSBzY29wZWRQZHUKICAgICAgKi8KICAgICB0bXBfYnVmX2xlbiA9IFNOTVBfTUFYX0NPTlRFWFRfU0laRTsKQEAgLTUxNDUsMTYgKzQ4NTMsNiBAQAogICAgICAgICAgICAgcmV0dXJuIDA7IC8qIHNfc25tcF9lcnJubyBhbHJlYWR5IHNldCAqLwogICAgIH0KIAotICAgIC8qCi0gICAgICogY2hlY2sgdG8gc2VlIGlmIHdlIG5lZWQgdG8gY3JlYXRlIGEgdjMgdXNlciBmcm9tIHRoZSBzZXNzaW9uIGluZm8KLSAgICAgKi8KLSAgICBpZiAoY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKHNlc3Npb24pICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1VOS05PV05fVVNFUl9OQU1FOyAgLyogWFg/PyAqLwotICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLAotICAgICAgICAgICAgICAgICAgICAic25tcF9zZW5kKCk6IGZhaWxlZCgyKSB0byBjcmVhdGUgYSBuZXcgdXNlciBmcm9tIHNlc3Npb25cbiIpKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgaWYgKChwa3RidWYgPSAodV9jaGFyICopbWFsbG9jKDIwNDgpKSA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX2FzeW5jX3NlbmQiLAogICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgbWFsbG9jIGluaXRpYWwgcGFja2V0IGJ1ZmZlclxuIikpOwpAQCAtNTE3NSw4ICs0ODczLDEwIEBACiAgICAgICovCiAgICAgaWYgKHBkdS0+dmFyaWFibGVzID09IE5VTEwpIHsKICAgICAgICAgc3dpdGNoIChwZHUtPmNvbW1hbmQpIHsKLSAgICAgICAgY2FzZSBTTk1QX01TR19HRVQ6CisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogICAgICAgICBjYXNlIFNOTVBfTVNHX1NFVDoKKyNlbmRpZiAvKiAhTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCisgICAgICAgIGNhc2UgU05NUF9NU0dfR0VUOgogICAgICAgICBjYXNlIFNOTVBfTVNHX0dFVE5FWFQ6CiAgICAgICAgIGNhc2UgU05NUF9NU0dfR0VUQlVMSzoKICAgICAgICAgY2FzZSBTTk1QX01TR19SRVNQT05TRToKQEAgLTUyODksNyArNDk4OSw3IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCi0gICAgICAgIGdldHRpbWVvZmRheSgmdHYsIChzdHJ1Y3QgdGltZXpvbmUgKikgMCk7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmdHYpOwogICAgICAgICBycC0+cGR1ID0gcGR1OwogICAgICAgICBycC0+cmVxdWVzdF9pZCA9IHBkdS0+cmVxaWQ7CiAgICAgICAgIHJwLT5tZXNzYWdlX2lkID0gcGR1LT5tc2dpZDsKQEAgLTUzMDEsMTEgKzUwMDEsMTEgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJwLT50aW1lb3V0ID0gc2Vzc2lvbi0+dGltZW91dDsKICAgICAgICAgfQotICAgICAgICBycC0+dGltZSA9IHR2OworICAgICAgICBycC0+dGltZU0gPSB0djsKICAgICAgICAgdHYudHZfdXNlYyArPSBycC0+dGltZW91dDsKICAgICAgICAgdHYudHZfc2VjICs9IHR2LnR2X3VzZWMgLyAxMDAwMDAwTDsKICAgICAgICAgdHYudHZfdXNlYyAlPSAxMDAwMDAwTDsKLSAgICAgICAgcnAtPmV4cGlyZSA9IHR2OworICAgICAgICBycC0+ZXhwaXJlTSA9IHR2OwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYIGxvY2sgc2hvdWxkIGJlIHBlciBzZXNzaW9uICEgCkBAIC01NTEyLDkgKzUyMTIsNyBAQAogICBpZiAoaXNwLT5ob29rX3ByZSkgewogICAgIGlmIChpc3AtPmhvb2tfcHJlKHNwLCB0cmFuc3BvcnQsIG9wYXF1ZSwgb2xlbmd0aCkgPT0gMCkgewogICAgICAgREVCVUdNU0dUTCgoInNlc3NfcHJvY2Vzc19wYWNrZXQiLCAicHJlLXBhcnNlIGZhaWxcbiIpKTsKLSAgICAgIGlmIChvcGFxdWUgIT0gTlVMTCkgewotCVNOTVBfRlJFRShvcGFxdWUpOwotICAgICAgfQorICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICB9CkBAIC01NTI3LDkgKzUyMjUsNyBAQAogCiAgIGlmIChwZHUgPT0gTlVMTCkgewogICAgIHNubXBfbG9nKExPR19FUlIsICJwZHUgZmFpbGVkIHRvIGJlIGNyZWF0ZWRcbiIpOwotICAgIGlmIChvcGFxdWUgIT0gTlVMTCkgewotICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7Ci0gICAgfQorICAgIFNOTVBfRlJFRShvcGFxdWUpOwogICAgIHJldHVybiAtMTsKICAgfQogCkBAIC01NzE1LDE5ICs1NDExLDE0IEBACiAJLyoKIAkgKiBTdWNjZXNzZnVsLCBzbyBkZWxldGUgcmVxdWVzdC4gIAogCSAqLwotCWlmIChpc3AtPnJlcXVlc3RzID09IHJwKSB7Ci0JICBpc3AtPnJlcXVlc3RzID0gcnAtPm5leHRfcmVxdWVzdDsKLQkgIGlmIChpc3AtPnJlcXVlc3RzRW5kID09IHJwKSB7Ci0JICAgIGlzcC0+cmVxdWVzdHNFbmQgPSBOVUxMOwotCSAgfQotCX0gZWxzZSB7CisJaWYgKG9ycCkKIAkgIG9ycC0+bmV4dF9yZXF1ZXN0ID0gcnAtPm5leHRfcmVxdWVzdDsKLQkgIGlmIChpc3AtPnJlcXVlc3RzRW5kID09IHJwKSB7Ci0JICAgIGlzcC0+cmVxdWVzdHNFbmQgPSBvcnA7Ci0JICB9Ci0JfQorICAgICAgICBlbHNlCisJICBpc3AtPnJlcXVlc3RzID0gcnAtPm5leHRfcmVxdWVzdDsKKyAgICAgICAgaWYgKGlzcC0+cmVxdWVzdHNFbmQgPT0gcnApCisJICBpc3AtPnJlcXVlc3RzRW5kID0gb3JwOwogCXNubXBfZnJlZV9wZHUocnAtPnBkdSk7Ci0JZnJlZSgoY2hhciAqKSBycCk7CisJZnJlZShycCk7CiAJLyoKIAkgKiBUaGVyZSBzaG91bGRuJ3QgYmUgYW55IG1vcmUgcmVxdWVzdHMgd2l0aCB0aGUgc2FtZSByZXFpZC4gIAogCSAqLwpAQCAtNTk4Miw5ICs1NjczLDcgQEAKICAgICAgICAgc3AtPnNfZXJybm8gPSBlcnJubzsKICAgICAgICAgc25tcF9zZXRfZGV0YWlsKHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgIFNOTVBfRlJFRShyeGJ1Zik7Ci0gICAgICAgIGlmIChvcGFxdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTYwMTgsOSArNTcwNyw3IEBACiAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLCAiZmQgJWQgY2xvc2VkXG4iLCB0cmFuc3BvcnQtPnNvY2spKTsKICAgICAgICAgdHJhbnNwb3J0LT5mX2Nsb3NlKHRyYW5zcG9ydCk7CiAgICAgICAgIFNOTVBfRlJFRShpc3AtPnBhY2tldCk7Ci0gICAgICAgIGlmIChvcGFxdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7Ci0gICAgICAgIH0KKyAgICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTYwNjAsOSArNTc0Nyw3IEBACiAJCX0KIAkJREVCVUdNU0dUTCgoInNlc3NfcmVhZCIsICJmZCAlZCBjbG9zZWRcbiIsIHRyYW5zcG9ydC0+c29jaykpOwogICAgICAgICAgICAgICAgIHRyYW5zcG9ydC0+Zl9jbG9zZSh0cmFuc3BvcnQpOwotICAgICAgICAgICAgICAgIGlmIChvcGFxdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgICAgICAgICAgICAgLyoqIFhYWC1ya3M6IHdoeSBubyBTTk1QX0ZSRUUoaXNwLT5wYWNrZXQpOyA/PyAqLwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KQEAgLTYwODIsOSArNTc2Nyw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHBwdHIgIT0gaXNwLT5wYWNrZXQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBvcGFxdWUgZnJlZWQgZm9yIHVzIG91dHNpZGUgb2YgbG9vcC4gKi8KIAotICAgICAgICAgICAgICAgIGlmIChvcGFxdWUgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUob3BhcXVlKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAKQEAgLTYxMzMsOSArNTgxNiw3IEBACiAJICAgIG9mIHRoZSBvcGFxdWUgcG9pbnRlciwgc28gd2Ugc3RpbGwgbmVlZCB0byBmcmVlKCkgdGhlIG9wYXF1ZQogCSAgICBwb2ludGVyIGl0c2VsZi4gICovCiAKLQlpZiAob3BhcXVlICE9IE5VTEwpIHsKLQkgICAgU05NUF9GUkVFKG9wYXF1ZSk7Ci0JfQorCVNOTVBfRlJFRShvcGFxdWUpOwogCiAgICAgICAgIGlmIChpc3AtPnBhY2tldF9sZW4gPj0gTUFYSU1VTV9QQUNLRVRfU0laRSkgewogICAgICAgICAgICAgLyoKQEAgLTYxNTYsNyArNTgzNyw2IEBACiAgICAgICAgICAgICAgKiBmb290cHJpbnQgZG93bi4KICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgU05NUF9GUkVFKGlzcC0+cGFja2V0KTsKLSAgICAgICAgICAgIGlzcC0+cGFja2V0ID0gTlVMTDsKICAgICAgICAgICAgIGlzcC0+cGFja2V0X3NpemUgPSAwOwogICAgICAgICAgICAgaXNwLT5wYWNrZXRfbGVuID0gMDsKICAgICAgICAgICAgIHJldHVybiByYzsKQEAgLTY0MDQsOSArNjA4NCwxMCBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICByZXF1ZXN0cysrOwogICAgICAgICAgICAgZm9yIChycCA9IHNscC0+aW50ZXJuYWwtPnJlcXVlc3RzOyBycDsgcnAgPSBycC0+bmV4dF9yZXF1ZXN0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKCghdGltZXJpc3NldCgmZWFybGllc3QpCi0gICAgICAgICAgICAgICAgICAgICB8fCAodGltZXJjbXAoJnJwLT5leHBpcmUsICZlYXJsaWVzdCwgPCkpKSkgewotICAgICAgICAgICAgICAgICAgICBlYXJsaWVzdCA9IHJwLT5leHBpcmU7CisgICAgICAgICAgICAgICAgaWYgKCF0aW1lcmlzc2V0KCZlYXJsaWVzdCkKKyAgICAgICAgICAgICAgICAgICAgfHwgKHRpbWVyaXNzZXQoJnJwLT5leHBpcmVNKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGltZXJjbXAoJnJwLT5leHBpcmVNLCAmZWFybGllc3QsIDwpKSkgeworICAgICAgICAgICAgICAgICAgICBlYXJsaWVzdCA9IHJwLT5leHBpcmVNOwogICAgICAgICAgICAgICAgICAgICBERUJVR01TRygoInZlcmJvc2U6c2Vzc19zZWxlY3QiLCIodG8gaW4gJWQuJTA2ZCBzZWMpICIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCllYXJsaWVzdC50dl9zZWMsIChpbnQpZWFybGllc3QudHZfdXNlYykpOwogICAgICAgICAgICAgICAgIH0KQEAgLTY0MjMsNyArNjEwNCw3IEBACiAgICAgfQogICAgIERFQlVHTVNHKCgic2Vzc19zZWxlY3QiLCAiXG4iKSk7CiAKLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgTlVMTCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZub3cpOwogCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FMQVJNX0RPTlRfVVNFX1NJRykgJiYKQEAgLTY0NTEsNyArNjEzMiw3IEBACiAgICAgICAgIHRpbWVfdCBvdmVyZHVlX21zID0gLShlYXJsaWVzdC50dl9zZWMgKiAxMDAwICsgZWFybGllc3QudHZfdXNlYyAvIDEwMDApOwogICAgICAgICBpZiAob3ZlcmR1ZV9tcyA+PSAxMCkKICAgICAgICAgICAgIERFQlVHTVNHVCgoInZlcmJvc2U6c2Vzc19zZWxlY3QiLCJ0aW1lciBvdmVyZHVlIGJ5ICVsZCBtc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmR1ZV9tcykpOworICAgICAgICAgICAgICAgICAgICAgICAobG9uZykgb3ZlcmR1ZV9tcykpOwogICAgICAgICB0aW1lcmNsZWFyKCZlYXJsaWVzdCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgREVCVUdNU0dUKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsInRpbWVyIGR1ZSBpbiAlZC4lMDZkIHNlY1xuIiwKQEAgLTY1NjAsOSArNjI0MSw3IEBACiAgICAgICAgICAqIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4gIAogICAgICAgICAgKi8KICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfcmVzZW5kIiwgImVuY29kaW5nIGZhaWx1cmVcbiIpKTsKLSAgICAgICAgaWYgKHBrdGJ1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUocGt0YnVmKTsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUocGt0YnVmKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtNjU4MCw3ICs2MjU5LDcgQEAKIAogICAgIGlmIChwa3RidWYgIT0gTlVMTCkgewogICAgICAgICBTTk1QX0ZSRUUocGt0YnVmKTsKLSAgICAgICAgcGt0YnVmID0gcGFja2V0ID0gTlVMTDsKKyAgICAgICAgcGFja2V0ID0gTlVMTDsKICAgICB9CiAKICAgICBpZiAocmVzdWx0IDwgMCkgewpAQCAtNjU4OSwxMyArNjI2OCwxMyBAQAogICAgICAgICBzbm1wX3NldF9kZXRhaWwoc3RyZXJyb3IoZXJybm8pKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGdldHRpbWVvZmRheSgmbm93LCAoc3RydWN0IHRpbWV6b25lICopIDApOworICAgICAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CiAgICAgICAgIHR2ID0gbm93OwotICAgICAgICBycC0+dGltZSA9IHR2OworICAgICAgICBycC0+dGltZU0gPSB0djsKICAgICAgICAgdHYudHZfdXNlYyArPSBycC0+dGltZW91dDsKICAgICAgICAgdHYudHZfc2VjICs9IHR2LnR2X3VzZWMgLyAxMDAwMDAwTDsKICAgICAgICAgdHYudHZfdXNlYyAlPSAxMDAwMDAwTDsKLSAgICAgICAgcnAtPmV4cGlyZSA9IHR2OworICAgICAgICBycC0+ZXhwaXJlTSA9IHR2OwogICAgIH0KICAgICByZXR1cm4gMDsKIH0KQEAgLTY2MjEsNyArNjMwMCw3IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnZXR0aW1lb2ZkYXkoJm5vdywgKHN0cnVjdCB0aW1lem9uZSAqKSAwKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CiAKICAgICAvKgogICAgICAqIEZvciBlYWNoIHJlcXVlc3Qgb3V0c3RhbmRpbmcsIGNoZWNrIHRvIHNlZSBpZiBpdCBoYXMgZXhwaXJlZC4KQEAgLTY2MzUsNyArNjMxNCw3IEBACiAgICAgICAgICAgICBmcmVlbWUgPSBOVUxMOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCh0aW1lcmNtcCgmcnAtPmV4cGlyZSwgJm5vdywgPCkpKSB7CisgICAgICAgIGlmICgodGltZXJjbXAoJnJwLT5leHBpcmVNLCAmbm93LCA8KSkpIHsKICAgICAgICAgICAgIGlmICgoc3B0ciA9IGZpbmRfc2VjX21vZChycC0+cGR1LT5zZWN1cml0eU1vZGVsKSkgIT0gTlVMTCAmJgogICAgICAgICAgICAgICAgIHNwdHItPnBkdV90aW1lb3V0ICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICAvKgpAQCAtNjY2MywxOCArNjM0MiwxMyBAQAogICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhORVRTTk1QX0NBTExCQUNLX09QX1RJTUVEX09VVCwgc3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwLT5wZHUtPnJlcWlkLCBycC0+cGR1LCBtYWdpYyk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChpc3AtPnJlcXVlc3RzID09IHJwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlzcC0+cmVxdWVzdHMgPSBycC0+bmV4dF9yZXF1ZXN0OwotICAgICAgICAgICAgICAgICAgICBpZiAoaXNwLT5yZXF1ZXN0c0VuZCA9PSBycCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaXNwLT5yZXF1ZXN0c0VuZCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChvcnApCiAgICAgICAgICAgICAgICAgICAgIG9ycC0+bmV4dF9yZXF1ZXN0ID0gcnAtPm5leHRfcmVxdWVzdDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGlzcC0+cmVxdWVzdHNFbmQgPT0gcnApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlzcC0+cmVxdWVzdHNFbmQgPSBvcnA7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc25tcF9mcmVlX3BkdShycC0+cGR1KTsgLyogRklYICBycCBpcyBhbHJlYWR5IGZyZWUnZCEgKi8KKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGlzcC0+cmVxdWVzdHMgPSBycC0+bmV4dF9yZXF1ZXN0OworICAgICAgICAgICAgICAgIGlmIChpc3AtPnJlcXVlc3RzRW5kID09IHJwKQorICAgICAgICAgICAgICAgICAgICBpc3AtPnJlcXVlc3RzRW5kID0gb3JwOworICAgICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUocnAtPnBkdSk7CiAgICAgICAgICAgICAgICAgZnJlZW1lID0gcnA7CiAgICAgICAgICAgICAgICAgY29udGludWU7ICAgICAgIC8qIGRvbid0IHVwZGF0ZSBvcnAgYmVsb3cgKi8KICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC02OTI3LDYgKzY2MDEsNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT0lEX0lTX1NVQlRSRUUKIC8qKiBJZGVudGljYWwgdG8gbmV0c25tcF9vaWRfZXF1YWxzLCBleGNlcHQgb25seSB0aGUgbGVuZ3RoIHVwIHRvIGxlbjEgaXMgY29tcGFyZWQuCiAgKiBGdW5jdGlvbmFsbHksIHRoaXMgZGV0ZXJtaW5lcyBpZiBpbl9uYW1lMiBpcyBlcXVhbCBvciBhIHN1YnRyZWUgb2YgaW5fbmFtZTEKICAqIEBwYXJhbSBpbl9uYW1lMSBBIHBvaW50ZXIgdG8gdGhlIGZpcnN0IG9pZC4KQEAgLTY5NDcsNiArNjYyMiw3IEBACiAKICAgICByZXR1cm4gMDsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09JRF9JU19TVUJUUkVFICovCiAKIC8qKiBHaXZlbiB0d28gT0lEcywgZGV0ZXJtaW5lIHRoZSBjb21tb24gcHJlZml4IHRvIHRoZW0gYm90aC4KICAqIEBwYXJhbSBpbl9uYW1lMSBBIHBvaW50ZXIgdG8gdGhlIGZpcnN0IG9pZC4KQEAgLTc2OTAsNiArNzM2Niw3IEBACiAgICAgcmV0dXJuIHJldHVybk9pZDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NUQVRJU1RJQ1MKIC8qCiAgKiBnZW5lcmljIHN0YXRpc3RpY3MgY291bnRlciBmdW5jdGlvbnMgCiAgKi8KQEAgLTc3MjgsNSArNzQwNSw1IEBACiB7CiAgICAgbWVtc2V0KHN0YXRpc3RpY3MsIDAsIHNpemVvZihzdGF0aXN0aWNzKSk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVEFUSVNUSUNTICovCiAvKiogIEB9ICovCi0KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9jbGllbnQuYyBiL3NubXBsaWIvc25tcF9jbGllbnQuYwppbmRleCBiZmYzMjVlLi5hYjdhNThjIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfY2xpZW50LmMKKysrIGIvc25tcGxpYi9zbm1wX2NsaWVudC5jCkBAIC00MCw2ICs0MCw3IEBACiAgKiAgQHsKICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGVycm5vLmg+CkBAIC05OCw2ICs5OSwxMiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9wZHVfYXBpLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX2NsaWVudF9hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzbm1wX3NwbGl0X3BkdSwgc25tcF9jbGllbnRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBfcmVzZXRfdmFyX3R5cGVzLCBzbm1wX2NsaWVudF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YocXVlcnlfc2V0X2RlZmF1bHRfc2Vzc2lvbiwgc25tcF9jbGllbnRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHJvd19jcmVhdGUsIHNubXBfY2xpZW50X2FsbCkKIAogI2lmbmRlZiBCU0Q0XzMKICNkZWZpbmUgQlNENF8yCkBAIC01ODcsNiArNTk0LDcgQEAKICAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBjbG9uZWQgUERVIGlmIHN1Y2Nlc3NmdWwuCiAgKiBSZXR1cm5zIDAgaWYgZmFpbHVyZS4KICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfU1BMSVRfUERVCiBuZXRzbm1wX3BkdSAgICAqCiBzbm1wX3NwbGl0X3BkdShuZXRzbm1wX3BkdSAqcGR1LCBpbnQgc2tpcF9jb3VudCwgaW50IGNvcHlfY291bnQpCiB7CkBAIC01OTcsNiArNjA1LDcgQEAKIAogICAgIHJldHVybiBuZXdwZHU7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX1NQTElUX1BEVSAqLwogCiAKIC8qCkBAIC03MzUsNiArNzQ0LDggQEAKICAgICByZXR1cm4gY291bnQ7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjb3VudF92YXJiaW5kc19vZl90eXBlLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT1VOVF9WQVJCSU5EU19PRl9UWVBFCiBpbnQKIGNvdW50X3ZhcmJpbmRzX29mX3R5cGUobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyX3B0ciwgdV9jaGFyIHR5cGUpCiB7CkBAIC03NDYsNyArNzU3LDEwIEBACiAKICAgICByZXR1cm4gY291bnQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DT1VOVF9WQVJCSU5EU19PRl9UWVBFICovCiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihmaW5kX3ZhcmluZF9vZl90eXBlLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9GSU5EX1ZBUklORF9PRl9UWVBFCiBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKgogZmluZF92YXJiaW5kX29mX3R5cGUobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyX3B0ciwgdV9jaGFyIHR5cGUpCiB7CkBAIC03NTUsNiArNzY5LDcgQEAKIAogICAgIHJldHVybiB2YXJfcHRyOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfRklORF9WQVJJTkRfT0ZfVFlQRSAqLwogCiBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QqCiBmaW5kX3ZhcmJpbmRfaW5fbGlzdCggbmV0c25tcF92YXJpYWJsZV9saXN0ICp2Ymxpc3QsCkBAIC05OTgsNiArMTAxMyw3IEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9SRVNFVF9WQVJfVFlQRVMKIHZvaWQKIHNubXBfcmVzZXRfdmFyX3R5cGVzKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZibCwgdV9jaGFyIG5ld190eXBlKQogewpAQCAtMTAwNiw2ICsxMDIyLDcgQEAKICAgICAgICAgdmJsID0gdmJsLT5uZXh0X3ZhcmlhYmxlOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfUkVTRVRfVkFSX1RZUEVTICovCiAKIGludAogc25tcF9zeW5jaF9yZXNwb25zZV9jYihuZXRzbm1wX3Nlc3Npb24gKiBzcywKQEAgLTEyMTMsMTIgKzEyMzAsMTYgQEAKICAqCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKwogc3RhdGljIG5ldHNubXBfc2Vzc2lvbiAqX2RlZl9xdWVyeV9zZXNzaW9uID0gTlVMTDsKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1FVRVJZX1NFVF9ERUZBVUxUX1NFU1NJT04KIHZvaWQKIG5ldHNubXBfcXVlcnlfc2V0X2RlZmF1bHRfc2Vzc2lvbiggbmV0c25tcF9zZXNzaW9uICpzZXNzKSB7CiAgICAgREVCVUdNU0dUTCgoImlxdWVyeSIsICJzZXQgZGVmYXVsdCBzZXNzaW9uICVwXG4iLCBzZXNzKSk7CiAgICAgX2RlZl9xdWVyeV9zZXNzaW9uID0gc2VzczsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1FVRVJZX1NFVF9ERUZBVUxUX1NFU1NJT04gKi8KIAogLyoqCiAgKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGludGVybmFsIHF1ZXJ5IHNlc3Npb24uCkBAIC0xMzExLDYgKzEzMzIsNyBAQAogICAgICAgICAgICAgICAgICAgICBERUJVR01TR1ZBUigoImlxdWVyeTpyZXN1bHQiLCB2dG1wKSk7CiAgICAgICAgICAgICAgICAgREVCVUdNU0coKCJpcXVlcnk6cmVzdWx0IiwgIlxuIikpOwogICAgICAgICAgICAgfQorI2lmbmRlZiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKICAgICAgICAgICAgIGlmIChyZXF1ZXN0ICE9IFNOTVBfTVNHX1NFVCAmJgogICAgICAgICAgICAgICAgIHJlc3BvbnNlLT5lcnJpbmRleCAhPSAwKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImlxdWVyeSIsICJyZXRyeWluZyBxdWVyeSAoJWQsICVsZClcbiIsIHJldCwgcmVzcG9uc2UtPmVycmluZGV4KSk7CkBAIC0xMzIwLDYgKzEzNDIsNyBAQAogICAgICAgICAgICAgICAgIGlmICggcGR1ICE9IE5VTEwgKQogICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHJ5OwogICAgICAgICAgICAgfQorI2VuZGlmIC8qICFORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGZvciAodmIxID0gcmVzcG9uc2UtPnZhcmlhYmxlcywgdmIyID0gbGlzdDsKICAgICAgICAgICAgICAgICAgdmIxOwpAQCAtMTM1OSwxMCArMTM4MiwxMiBAQAogfQogCiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiBpbnQgbmV0c25tcF9xdWVyeV9zZXQobmV0c25tcF92YXJpYWJsZV9saXN0ICpsaXN0LAogICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAgICAgICAqc2Vzc2lvbil7CiAgICAgcmV0dXJuIF9xdWVyeSggbGlzdCwgU05NUF9NU0dfU0VULCBzZXNzaW9uICk7CiB9CisjZW5kaWYgLyogIU5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLwogCiAvKgogICogQSB3YWxrIG5lZWRzIGEgYml0IG1vcmUgd29yay4KQEAgLTE0ODAsNiArMTUwNSw4IEBACiAgICAgcmV0dXJuIGlucHV0LT5sYXN0X3J1bi0+cmVzdWx0OwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1JPV19DUkVBVEUKIC8qKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICoKICAqIHJvdyBjcmVhdGUgc3RhdGUgbWFjaGluZSBzdGVwcwpAQCAtMTg1Niw2ICsxODgzLDggQEAKIAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ST1dfQ1JFQVRFICovCisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIAogLyoqIEB9ICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfZW51bS5jIGIvc25tcGxpYi9zbm1wX2VudW0uYwppbmRleCAzOTk2NmZhLi44YTZiZDM4IDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfZW51bS5jCisrKyBiL3NubXBsaWIvc25tcF9lbnVtLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2lmZGVmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTIyLDYgKzIzLDEzIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBfZW51bV9hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihzZV9maW5kX2ZyZWVfdmFsdWVfaW5fc2xpc3QsIHNubXBfZW51bV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9lbnVtX3N0b3JlX2xpc3QsIHNubXBfZW51bV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc25tcF9lbnVtX3N0b3JlX3NsaXN0LCBzbm1wX2VudW1fYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNubXBfZW51bV9jbGVhciwgc25tcF9lbnVtX2FsbCkKKwogc3RydWN0IHNubXBfZW51bV9saXN0X3N0ciB7CiAgICAgY2hhciAgICAgICAgICAgKm5hbWU7CiAgICAgc3RydWN0IHNubXBfZW51bV9saXN0ICpsaXN0OwpAQCAtMTc3LDYgKzE4NSw3IEBACiAgICAgcmVhZF9jb25maWdfc3RvcmUodHlwZSwgbGluZSk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX0VOVU1fU1RPUkVfTElTVAogdm9pZAogc2Vfc3RvcmVfbGlzdCh1bnNpZ25lZCBpbnQgbWFqb3IsIHVuc2lnbmVkIGludCBtaW5vciwgY29uc3QgY2hhciAqdHlwZSkKIHsKQEAgLTE4NSw2ICsxOTQsNyBAQAogICAgIHNucHJpbnRmKHRva2VuLCBzaXplb2YodG9rZW4pLCAiJWQ6JWQiLCBtYWpvciwgbWlub3IpOwogICAgIHNlX3N0b3JlX2VudW1fbGlzdChzZV9maW5kX2xpc3QobWFqb3IsIG1pbm9yKSwgdG9rZW4sIHR5cGUpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9FTlVNX1NUT1JFX0xJU1QgKi8KIAogc3RydWN0IHNubXBfZW51bV9saXN0ICoKIHNlX2ZpbmRfbGlzdCh1bnNpZ25lZCBpbnQgbWFqb3IsIHVuc2lnbmVkIGludCBtaW5vcikKQEAgLTMzMSwxOCArMzQxLDE5IEBACiAgICAgcmV0dXJuIChzZV9maW5kX2xhYmVsX2luX2xpc3Qoc2VfZmluZF9zbGlzdChsaXN0bmFtZSksIHZhbHVlKSk7CiB9CiAKLQogaW50CiBzZV9maW5kX3ZhbHVlX2luX3NsaXN0KGNvbnN0IGNoYXIgKmxpc3RuYW1lLCBjb25zdCBjaGFyICpsYWJlbCkKIHsKICAgICByZXR1cm4gKHNlX2ZpbmRfdmFsdWVfaW5fbGlzdChzZV9maW5kX3NsaXN0KGxpc3RuYW1lKSwgbGFiZWwpKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NFX0ZJTkRfRlJFRV9WQUxVRV9JTl9TTElTVAogaW50CiBzZV9maW5kX2ZyZWVfdmFsdWVfaW5fc2xpc3QoY29uc3QgY2hhciAqbGlzdG5hbWUpCiB7CiAgICAgcmV0dXJuIChzZV9maW5kX2ZyZWVfdmFsdWVfaW5fbGlzdChzZV9maW5kX3NsaXN0KGxpc3RuYW1lKSkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU0VfRklORF9GUkVFX1ZBTFVFX0lOX1NMSVNUICovCiAKIGludAogc2VfYWRkX3BhaXJfdG9fc2xpc3QoY29uc3QgY2hhciAqbGlzdG5hbWUsIGNoYXIgKmxhYmVsLCBpbnQgdmFsdWUpCkBAIC00MjcsMTIgKzQzOCw3IEBACiAgICAgcmV0dXJuOwogfQogCi12b2lkCi1zZV9jbGVhcl9zbGlzdChjb25zdCBjaGFyICpsaXN0bmFtZSkKLXsKLSAgICBzZV9jbGVhcl9saXN0KHNlX2ZpbmRfc2xpc3RfcHRyKGxpc3RuYW1lKSk7Ci19Ci0KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TTk1QX0VOVU1fU1RPUkVfU0xJU1QKIHZvaWQKIHNlX3N0b3JlX3NsaXN0KGNvbnN0IGNoYXIgKmxpc3RuYW1lLCBjb25zdCBjaGFyICp0eXBlKQogewpAQCAtNDQ5LDYgKzQ1NSwxNCBAQAogICAgIHNlX3N0b3JlX3NsaXN0KChjaGFyICopY2xpZW50YXJncywgYXBwbmFtZSk7CiAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1NOTVBfRU5VTV9TVE9SRV9TTElTVCAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9FTlVNX0NMRUFSCit2b2lkCitzZV9jbGVhcl9zbGlzdChjb25zdCBjaGFyICpsaXN0bmFtZSkKK3sKKyAgICBzZV9jbGVhcl9saXN0KHNlX2ZpbmRfc2xpc3RfcHRyKGxpc3RuYW1lKSk7Cit9CiAKIHZvaWQKIHNlX2NsZWFyX2FsbF9saXN0cyh2b2lkKQpAQCAtNDU4LDMgKzQ3Miw0IEBACiAgICAgZm9yIChzcHRyID0gc2xpc3RzdG9yYWdlOyBzcHRyICE9IE5VTEw7IHNwdHIgPSBzcHRyLT5uZXh0KQogICAgICAgICBzZV9jbGVhcl9saXN0KCYoc3B0ci0+bGlzdCkpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU05NUF9FTlVNX0NMRUFSICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfbG9nZ2luZy5jIGIvc25tcGxpYi9zbm1wX2xvZ2dpbmcuYwppbmRleCBiMzBmMTY1Li5hMmNkNTVhIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfbG9nZ2luZy5jCisrKyBiL3NubXBsaWIvc25tcF9sb2dnaW5nLmMKQEAgLTE4LDYgKzE4LDcgQEAKICAqICBAewogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2lmIEhBVkVfTUFMTE9DX0gKICNpbmNsdWRlIDxtYWxsb2MuaD4KQEAgLTg0LDYgKzg1LDIyIEBACiAjZW5kaWYKICNlbmRpZgogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobG9nZ2luZ19hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihsb2dnaW5nX291dHB1dHMsIGxvZ2dpbmdfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfZmlsZSwgbG9nZ2luZ19vdXRwdXRzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfc3RkaW8sIGxvZ2dpbmdfb3V0cHV0cykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihsb2dnaW5nX3N5c2xvZywgbG9nZ2luZ19vdXRwdXRzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKGxvZ2dpbmdfZXh0ZXJuYWwsIGxvZ2dpbmdfYWxsKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoZW5hYmxlX3N0ZGVycmxvZywgbG9nZ2luZ19hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihsb2dnaW5nX2VuYWJsZV9jYWxsbG9nLCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihsb2dnaW5nX2VuYWJsZV9sb2doYW5kbGVyLCBuZXRzbm1wX3VudXNlZCkKKworLyogZGVmYXVsdCB0byB0aGUgZmlsZS9zdGRpby9zeXNsb2cgc2V0ICovCituZXRzbm1wX2ZlYXR1cmVfd2FudChsb2dnaW5nX291dHB1dHMpCisKIC8qCiAgKiBsb2doX2hlYWQ6ICBBIGxpc3Qgb2YgYWxsIGxvZyBoYW5kbGVycywgaW4gaW5jcmVhc2luZyBvcmRlciBvZiBwcmlvcml0eQogICogbG9naF9wcmlvcml0aWVzOiAgJ0luZGV4ZXMnIGludG8gdGhpcyBsaXN0LCBieSBwcmlvcml0eQpAQCAtOTIsNyArMTA5LDkgQEAKIG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2hfcHJpb3JpdGllc1tMT0dfREVCVUcrMV07CiBzdGF0aWMgaW50ICBsb2doX2VuYWJsZWQgPSAwOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKIHN0YXRpYyBjaGFyIHN5c2xvZ25hbWVbNjRdID0gREVGQVVMVF9MT0dfSUQ7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogCiB2b2lkCiBuZXRzbm1wX2Rpc2FibGVfdGhpc19sb2doYW5kbGVyKG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2gpCkBAIC0xMTMsOCArMTMyLDEwIEBACiAgICAgKytsb2doX2VuYWJsZWQ7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKIHZvaWQKIG5ldHNubXBfZW5hYmxlX2ZpbGVsb2cobmV0c25tcF9sb2dfaGFuZGxlciAqbG9naCwgaW50IGRvbnRfemVyb19sb2cpOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAKICNpZm5kZWYgSEFWRV9WU05QUklOVEYKICAgICAgICAgICAgICAgICAvKgpAQCAtMTU0LDYgKzE3NSw3IEBACiAvKgogICogVGhlc2UgZGVmaW5pdGlvbnMgaGFuZGxlIDQuMiBzeXN0ZW1zIHdpdGhvdXQgYWRkaXRpb25hbCBzeXNsb2cgZmFjaWxpdGllcy4KICAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAjaWZuZGVmIExPR19DT05TCiAjZGVmaW5lIExPR19DT05TCTAgICAgICAgLyogRG9uJ3QgYm90aGVyIGlmIG5vdCBkZWZpbmVkLi4uICovCiAjZW5kaWYKQEAgLTE5MCw2ICsyMTIsNyBAQAogI2lmbmRlZiBMT0dfVVNFUgogI2RlZmluZSBMT0dfVVNFUgkwCiAjZW5kaWYKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKIC8qIFNldCBsaW5lIGJ1ZmZlcmluZyBtb2RlIGZvciBhIHN0cmVhbS4gKi8KIHZvaWQKQEAgLTI4NSw2ICszMDgsNyBAQAogICAgIHJldHVybiBwcmlfbG93OwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKIGludAogZGVjb2RlX2ZhY2lsaXR5KCBjaGFyICpvcHRhcmcgKQogewpAQCAtMzE5LDYgKzM0Myw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogCiBpbnQKIHNubXBfbG9nX29wdGlvbnMoY2hhciAqb3B0YXJnLCBpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YpCkBAIC0zNzUsNiArNDAwLDcgQEAKICAgICBERUJVR01TR1QoKCJsb2dnaW5nOm9wdGlvbnMiLCAiKmNwOiAnJWMnXG4iLCAqY3ApKTsKICAgICBzd2l0Y2ggKCpjcCkgewogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTwogICAgIC8qCiAgICAgICogTG9nIHRvIFN0YW5kYXJkIEVycm9yCiAgICAgICovCkBAIC00MTEsNiArNDM3LDcgQEAKICAgICAgICAgICAgIGxvZ2gtPmltYWdpYyAgPSAxOwkgICAgLyogc3Rkb3V0LCBub3Qgc3RkZXJyICovCiAJfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8gKi8KIAogICAgIC8qCiAgICAgICogTG9nIHRvIGEgbmFtZWQgZmlsZQpAQCAtNDIwLDYgKzQ0Nyw3IEBACiAgICAgICAgIGlmIChwcmlvcml0eSA9PSAtMSB8fCAhYXJndikgIHJldHVybiAtMTsKICAgICAgICAgb3B0YXJnID0gYXJndlsrK29wdGluZF07CiAgICAgICAgIC8qIEZhbGx0aHJvdWdoICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFCiAgICAgY2FzZSAnZic6CiAgICAgICAgIGlmIChpbmNfb3B0aW5kKQogICAgICAgICAgICAgb3B0aW5kKys7CkBAIC00MzYsNyArNDY0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BUFBFTkRfTE9HRklMRVMpKTsKIAl9CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgIC8qCiAgICAgICogTG9nIHRvIHN5c2xvZwogICAgICAqLwpAQCAtNDY4LDYgKzQ5OCw3IEBACiAJICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChzbm1wX2xvZ19zeXNsb2duYW1lKE5VTEwpLCBmYWNpbGl0eSk7CiAJfQogICAgICAgICBicmVhazsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKICAgICAvKgogICAgICAqIERvbid0IGxvZyAKQEAgLTQ5OSw2ICs1MzAsNyBAQAogICAgIHJldHVybiAwOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKIGNoYXIgKgogc25tcF9sb2dfc3lzbG9nbmFtZShjb25zdCBjaGFyICpwc3RyKQogewpAQCAtNTA3LDIwICs1MzksMjkgQEAKIAogICByZXR1cm4gc3lzbG9nbmFtZTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKIHZvaWQKIHNubXBfbG9nX29wdGlvbnNfdXNhZ2UoY29uc3QgY2hhciAqbGVhZCwgRklMRSAqIG91dGYpCiB7CiAgICAgY29uc3QgY2hhciAqcHJpMV9tc2cgPSAiIGZvciBsZXZlbCAncHJpJyBhbmQgYWJvdmUiOwogICAgIGNvbnN0IGNoYXIgKnByaTJfbXNnID0gIiBmb3IgbGV2ZWxzICdwMScgdG8gJ3AyJyI7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTwogICAgIGZwcmludGYob3V0ZiwgIiVzZTogICAgICAgICAgIGxvZyB0byBzdGFuZGFyZCBlcnJvclxuIiwgbGVhZCk7CiAgICAgZnByaW50ZihvdXRmLCAiJXNvOiAgICAgICAgICAgbG9nIHRvIHN0YW5kYXJkIG91dHB1dFxuIiwgbGVhZCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCiAgICAgZnByaW50ZihvdXRmLCAiJXNuOiAgICAgICAgICAgZG9uJ3QgbG9nIGF0IGFsbFxuIiwgbGVhZCk7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFCiAgICAgZnByaW50ZihvdXRmLCAiJXNmIGZpbGU6ICAgICAgbG9nIHRvIHRoZSBzcGVjaWZpZWQgZmlsZVxuIiwgbGVhZCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgIGZwcmludGYob3V0ZiwgIiVzcyBmYWNpbGl0eTogIGxvZyB0byBzeXNsb2cgKHZpYSB0aGUgc3BlY2lmaWVkIGZhY2lsaXR5KVxuIiwgbGVhZCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogICAgIGZwcmludGYob3V0ZiwgIlxuJXModmFyaWFudHMpXG4iLCBsZWFkKTsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICBmcHJpbnRmKG91dGYsICIlc1tFT05dIHByaTogICBsb2cgdG8gc3RhbmRhcmQgZXJyb3IsIG91dHB1dCBvciAvZGV2L251bGwlc1xuIiwgbGVhZCwgcHJpMV9tc2cpOwogICAgIGZwcmludGYob3V0ZiwgIiVzW0VPTl0gcDEtcDI6IGxvZyB0byBzdGFuZGFyZCBlcnJvciwgb3V0cHV0IG9yIC9kZXYvbnVsbCVzXG4iLCBsZWFkLCBwcmkyX21zZyk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KICAgICBmcHJpbnRmKG91dGYsICIlc1tGU10gcHJpIHRva2VuOiAgICBsb2cgdG8gZmlsZS9zeXNsb2clc1xuIiwgbGVhZCwgcHJpMV9tc2cpOwogICAgIGZwcmludGYob3V0ZiwgIiVzW0ZTXSBwMS1wMiB0b2tlbjogIGxvZyB0byBmaWxlL3N5c2xvZyVzXG4iLCBsZWFkLCBwcmkyX21zZyk7CiB9CkBAIC01NTUsNiArNTk2LDcgQEAKICAgICByZXR1cm4gc2J1ZjsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiB2b2lkCiBzbm1wX2Rpc2FibGVfc3lzbG9nX2VudHJ5KG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2gpCiB7CkBAIC01ODQsNyArNjI2LDkgQEAKICAgICAgICAgaWYgKGxvZ2gtPmVuYWJsZWQgJiYgbG9naC0+dHlwZSA9PSBORVRTTk1QX0xPR0hBTkRMRVJfU1lTTE9HKQogICAgICAgICAgICAgc25tcF9kaXNhYmxlX3N5c2xvZ19lbnRyeShsb2doKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKIHZvaWQKIHNubXBfZGlzYWJsZV9maWxlbG9nX2VudHJ5KG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2gpCiB7CkBAIC01OTgsNyArNjQyLDkgQEAKICAgICB9CiAgICAgbmV0c25tcF9kaXNhYmxlX3RoaXNfbG9naGFuZGxlcihsb2doKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFCiB2b2lkCiBzbm1wX2Rpc2FibGVfZmlsZWxvZyh2b2lkKQogewpAQCAtNjA4LDcgKzY1NCw5IEBACiAgICAgICAgIGlmIChsb2doLT5lbmFibGVkICYmIGxvZ2gtPnR5cGUgPT0gTkVUU05NUF9MT0dIQU5ETEVSX0ZJTEUpCiAgICAgICAgICAgICBzbm1wX2Rpc2FibGVfZmlsZWxvZ19lbnRyeShsb2doKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTwogLyoKICAqIHJldHVybnMgdGhhdCBzdGF0dXMgb2Ygc3RkZXJyIGxvZ2dpbmcKICAqCkBAIC02NDAsNyArNjg4LDkgQEAKICAgICAgICAgICAgIG5ldHNubXBfZGlzYWJsZV90aGlzX2xvZ2hhbmRsZXIobG9naCk7CiAJfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19FTkFCTEVfQ0FMTExPRwogdm9pZAogc25tcF9kaXNhYmxlX2NhbGxsb2codm9pZCkKIHsKQEAgLTY1MSw2ICs3MDEsNyBAQAogICAgICAgICAgICAgbmV0c25tcF9kaXNhYmxlX3RoaXNfbG9naGFuZGxlcihsb2doKTsKIAl9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VOQUJMRV9DQUxMTE9HICovCiAKIHZvaWQKIHNubXBfZGlzYWJsZV9sb2codm9pZCkKQEAgLTY1OCwxMCArNzA5LDE0IEBACiAgICAgbmV0c25tcF9sb2dfaGFuZGxlciAqbG9naDsKIAogICAgIGZvciAobG9naCA9IGxvZ2hfaGVhZDsgbG9naDsgbG9naCA9IGxvZ2gtPm5leHQpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRwogICAgICAgICBpZiAobG9naC0+dHlwZSA9PSBORVRTTk1QX0xPR0hBTkRMRVJfU1lTTE9HKQogICAgICAgICAgICAgc25tcF9kaXNhYmxlX3N5c2xvZ19lbnRyeShsb2doKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFCiAgICAgICAgIGlmIChsb2doLT50eXBlID09IE5FVFNOTVBfTE9HSEFORExFUl9GSUxFKQogICAgICAgICAgICAgc25tcF9kaXNhYmxlX2ZpbGVsb2dfZW50cnkobG9naCk7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KICAgICAgICAgbmV0c25tcF9kaXNhYmxlX3RoaXNfbG9naGFuZGxlcihsb2doKTsKICAgICB9CiB9CkBAIC02NzQsMTUgKzcyOSwyMCBAQAogbmV0c25tcF9sb2dnaW5nX3Jlc3RhcnQodm9pZCkKIHsKICAgICBuZXRzbm1wX2xvZ19oYW5kbGVyICpsb2doOworICAgIGludCBkb25lb25lID0gMDsKIAogICAgIGZvciAobG9naCA9IGxvZ2hfaGVhZDsgbG9naDsgbG9naCA9IGxvZ2gtPm5leHQpIHsKICAgICAgICAgaWYgKDAgPT0gbG9naC0+ZW5hYmxlZCkKICAgICAgICAgICAgIGNvbnRpbnVlOworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HCiAgICAgICAgIGlmIChsb2doLT50eXBlID09IE5FVFNOTVBfTE9HSEFORExFUl9TWVNMT0cpIHsKICAgICAgICAgICAgIHNubXBfZGlzYWJsZV9zeXNsb2dfZW50cnkobG9naCk7CiAgICAgICAgICAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQobG9naC0+dG9rZW4sKGludCkoaW50cHRyX3QpbG9naC0+bWFnaWMpOworICAgICAgICAgICAgZG9uZW9uZSA9IDE7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobG9naC0+dHlwZSA9PSBORVRTTk1QX0xPR0hBTkRMRVJfRklMRSkgeworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKKyAgICAgICAgaWYgKGxvZ2gtPnR5cGUgPT0gTkVUU05NUF9MT0dIQU5ETEVSX0ZJTEUgJiYgIWRvbmVvbmUpIHsKICAgICAgICAgICAgIHNubXBfZGlzYWJsZV9maWxlbG9nX2VudHJ5KGxvZ2gpOwogICAgICAgICAgICAgLyoqIGhtbSwgZG9uJ3QgemVybyBzdGF0dXMgaXNuJ3Qgc2F2ZWQuLiBpIHRoaW5rIGl0J3MKICAgICAgICAgICAgICAqIHNhZmVyIG5vdCB0byBvdmVyd3JpdGUsIGluIGNhc2UgYSBodXAgaXMganVzdCB0bwpAQCAtNjkwLDExICs3NTAsMTMgQEAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgbmV0c25tcF9lbmFibGVfZmlsZWxvZyhsb2doLCAxKTsKICAgICAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAgICAgfQogfQogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKIHZvaWQKIHNubXBfZW5hYmxlX3N5c2xvZyh2b2lkKQogewpAQCAtNzU0LDcgKzgxNiw5IEBACiAgICAgICAgIH0KICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NZU0xPRyAqLwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFCiB2b2lkCiBuZXRzbm1wX2VuYWJsZV9maWxlbG9nKG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2gsIGludCBkb250X3plcm9fbG9nKQogewpAQCAtODA0LDggKzg2OCwxMSBAQAogICAgICAgICAgICAgICAgIG5ldHNubXBfZW5hYmxlX2ZpbGVsb2cobG9naCwgZG9udF96ZXJvX2xvZyk7CiAgICAgfQogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0VOQUJMRV9TVERFUlJMT0cKKy8qIHVzZWQgaW4gdGhlIHBlcmwgbW9kdWxlcyBhbmQgaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfc3ViYWdlbnQuYyAqLwogdm9pZAogc25tcF9lbmFibGVfc3RkZXJybG9nKHZvaWQpCiB7CkBAIC04MjYsOCArODkzLDkgQEAKICAgICAgICAgICAgIGxvZ2gtPnRva2VuICAgID0gc3RyZHVwKCJzdGRlcnIiKTsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9FTkFCTEVfU1RERVJSTE9HICovCiAKLQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRU5BQkxFX0NBTExMT0cKIHZvaWQKIHNubXBfZW5hYmxlX2NhbGxsb2codm9pZCkJLyogWFhYIC0gb3IgdGFrZSBhIGNhbGxiYWNrIHJvdXRpbmUgPz8/ICovCiB7CkBAIC04NDcsNyArOTE1LDcgQEAKICAgICAgICAgICAgIGxvZ2gtPnRva2VuICAgID0gc3RyZHVwKCJjYWxsYmFjayIpOwogICAgIH0KIH0KLQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19FTkFCTEVfQ0FMTExPRyAqLwogCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KQEAgLTkzMywxNyArMTAwMSwyMyBAQAogICAgIGNhc2UgTkVUU05NUF9MT0dIQU5ETEVSX1NURE9VVDoKICAgICAgICAgbG9naC0+aW1hZ2ljICA9IDE7CiAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTwogICAgIGNhc2UgTkVUU05NUF9MT0dIQU5ETEVSX1NUREVSUjoKICAgICAgICAgbG9naC0+aGFuZGxlciA9IGxvZ19oYW5kbGVyX3N0ZG91dGVycjsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUKICAgICBjYXNlIE5FVFNOTVBfTE9HSEFORExFUl9GSUxFOgogICAgICAgICBsb2doLT5oYW5kbGVyID0gbG9nX2hhbmRsZXJfZmlsZTsKICAgICAgICAgbG9naC0+aW1hZ2ljICA9IDE7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19GSUxFICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICAgICBjYXNlIE5FVFNOTVBfTE9HSEFORExFUl9TWVNMT0c6CiAgICAgICAgIGxvZ2gtPmhhbmRsZXIgPSBsb2dfaGFuZGxlcl9zeXNsb2c7CiAgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cgKi8KICAgICBjYXNlIE5FVFNOTVBfTE9HSEFORExFUl9DQUxMQkFDSzoKICAgICAgICAgbG9naC0+aGFuZGxlciA9IGxvZ19oYW5kbGVyX2NhbGxiYWNrOwogICAgICAgICBicmVhazsKQEAgLTk2MSw2ICsxMDM1LDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19FTkFCTEVfTE9HSEFORExFUgogaW50CiBuZXRzbm1wX2VuYWJsZV9sb2doYW5kbGVyKCBjb25zdCBjaGFyICp0b2tlbiApCiB7CkBAIC05ODUsNiArMTA2MCw3IEBACiAgICAgbmV0c25tcF9kaXNhYmxlX3RoaXNfbG9naGFuZGxlcihsb2doKTsKICAgICByZXR1cm4gMTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRU5BQkxFX0xPR0hBTkRMRVIgKi8KIAogaW50CiBuZXRzbm1wX3JlbW92ZV9sb2doYW5kbGVyKCBuZXRzbm1wX2xvZ19oYW5kbGVyICpsb2doICkKQEAgLTEwMTEsNiArMTA4Nyw3IEBACiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8KIGludAogbG9nX2hhbmRsZXJfc3Rkb3V0ZXJyKCAgbmV0c25tcF9sb2dfaGFuZGxlciogbG9naCwgaW50IHByaSwgY29uc3QgY2hhciAqc3RyKQogewpAQCAtMTAzOCw4ICsxMTE1LDEwIEBACiAKICAgICByZXR1cm4gMTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8gKi8KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TWVNMT0cKICNpZmRlZiBXSU4zMgogaW50CiBsb2dfaGFuZGxlcl9zeXNsb2coICBuZXRzbm1wX2xvZ19oYW5kbGVyKiBsb2doLCBpbnQgcHJpLCBjb25zdCBjaGFyICpzdHIpCkBAIC0xMTIzLDggKzEyMDIsMTAgQEAKICAgICByZXR1cm4gMTsKIH0KICNlbmRpZiAvKiAhV0lOMzIgKi8KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1lTTE9HICovCiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfRklMRQogaW50CiBsb2dfaGFuZGxlcl9maWxlKCAgICBuZXRzbm1wX2xvZ19oYW5kbGVyKiBsb2doLCBpbnQgcHJpLCBjb25zdCBjaGFyICpzdHIpCiB7CkBAIC0xMTYxLDYgKzEyNDIsNyBAQAogICAgIGxvZ2gtPmltYWdpYyA9IHN0cltzdHJsZW4oc3RyKSAtIDFdID09ICdcbic7CiAgICAgcmV0dXJuIDE7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0ZJTEUgKi8KIAogaW50CiBsb2dfaGFuZGxlcl9jYWxsYmFjayhuZXRzbm1wX2xvZ19oYW5kbGVyKiBsb2doLCBpbnQgcHJpLCBjb25zdCBjaGFyICpzdHIpCkBAIC0xMTk1LDEwICsxMjc3LDEyIEBACiB2b2lkCiBzbm1wX2xvZ19zdHJpbmcoaW50IHByaW9yaXR5LCBjb25zdCBjaGFyICpzdHIpCiB7CisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTwogICAgIHN0YXRpYyBpbnQgc3RkZXJyX2VuYWJsZWQgPSAwOwogICAgIHN0YXRpYyBuZXRzbm1wX2xvZ19oYW5kbGVyIGxoID0geyAxLCAwLCAwLCAwLCAic3RkZXJyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2hhbmRsZXJfc3Rkb3V0ZXJyLCAwLCBOVUxMLCAgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCB9OworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLwogICAgIG5ldHNubXBfbG9nX2hhbmRsZXIgKmxvZ2g7CiAKICAgICAvKgpAQCAtMTIwNiwyMSArMTI5MCwyMyBAQAogICAgICAqIElmIHlvdSBkb24ndCB3YW50IHN0ZGVyciBsb2dnaW5nLCB0aGVuIGVuYWJsZSBzb21ldGhpbmcgZWxzZS4KICAgICAgKi8KICAgICBpZiAoMCA9PSBsb2doX2VuYWJsZWQpIHsKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX1NURElPCiAgICAgICAgIGlmICghc3RkZXJyX2VuYWJsZWQpIHsKICAgICAgICAgICAgICsrc3RkZXJyX2VuYWJsZWQ7CiAgICAgICAgICAgICBuZXRzbm1wX3NldF9saW5lX2J1ZmZlcmluZyhzdGRlcnIpOwotICAgICAgICAgICAgbG9nX2hhbmRsZXJfc3Rkb3V0ZXJyKCAmbGgsIExPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gbG9nIGhhbmRsaW5nIGVuYWJsZWQgLSB1c2luZyBzdGRlcnIgbG9nZ2luZ1xuIik7CiAgICAgICAgIH0KICAgICAgICAgbG9nX2hhbmRsZXJfc3Rkb3V0ZXJyKCAmbGgsIHByaW9yaXR5LCBzdHIgKTsKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8gKi8KIAogICAgICAgICByZXR1cm47CiAgICAgfQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0xPR0dJTkdfU1RESU8KICAgICBlbHNlIGlmIChzdGRlcnJfZW5hYmxlZCkgewogICAgICAgICBzdGRlcnJfZW5hYmxlZCA9IDA7CiAgICAgICAgIGxvZ19oYW5kbGVyX3N0ZG91dGVyciggJmxoLCBMT0dfSU5GTywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTG9nIGhhbmRsaW5nIGRlZmluZWQgLSBkaXNhYmxpbmcgc3RkZXJyXG4iICk7CiAgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19TVERJTyAqLwogICAgICAgICAKIAogICAgIC8qCkBAIC0xMzY0LDExICsxNDUwLDEzIEBACiAgICAgfQogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTE9HR0lOR19FWFRFUk5BTAogLyogZXh0ZXJuYWwgYWNjZXNzIHRvIGxvZ2hfaGVhZCB2YXJpYWJsZSAqLwogbmV0c25tcF9sb2dfaGFuZGxlciAgKgogZ2V0X2xvZ2hfaGVhZCh2b2lkKQogewogCXJldHVybiBsb2doX2hlYWQ7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9MT0dHSU5HX0VYVEVSTkFMICovCiAKIC8qKiAgQH0gKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcF9vcGVuc3NsLmMgYi9zbm1wbGliL3NubXBfb3BlbnNzbC5jCmluZGV4IGUxM2U1OWUuLjNiMGVhYTggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9vcGVuc3NsLmMKKysrIGIvc25tcGxpYi9zbm1wX29wZW5zc2wuYwpAQCAtNiw3ICs2LDE2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogCi0jaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfTElCU1NMKQorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKKyNpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpICYmIGRlZmluZWQoSEFWRV9MSUJTU0wpICYmICFkZWZpbmVkKE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9VVElMKQorCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZShjb250YWluZXJfZnJlZV9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihvcGVuc3NsX2NlcnRfZ2V0X3N1YmplY3RBbHROYW1lcywgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yob3BlbnNzbF9odDJuaWQsIG5ldHNubXBfdW51c2VkKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG9wZW5zc2xfZXJyX2xvZywgbmV0c25tcF91bnVzZWQpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2VydF9kdW1wX25hbWVzLCBuZXRzbm1wX3VudXNlZCkKIAogI2luY2x1ZGUgPGN0eXBlLmg+CiAKQEAgLTEzMSw2ICsxNDAsNyBAQAogICAgIHJldHVybiBfY2VydF9nZXRfbmFtZShvY2VydCwgTklEX2NvbW1vbk5hbWUsIGJ1ZiwgbGVuLCAwKTsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX0NFUlRfRFVNUF9OQU1FUwogLyoqIG5ldHNubXBfb3BlbnNzbF9jZXJ0X2R1bXBfbmFtZTogZHVtcCBzdWJqZWN0IG5hbWVzIGluIGNlcnQKICAqLwogdm9pZApAQCAtMTc0LDYgKzE4NCw3IEBACiAgICAgICAgICAgICAgICAgICAgcHJlZml4X3Nob3J0LCBBU04xX1NUUklOR19kYXRhKG9uYW1lX2VudHJ5LT52YWx1ZSkpKTsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DRVJUX0RVTVBfTkFNRVMgKi8KIAogc3RhdGljIGNoYXIgKgogX2NlcnRfZ2V0X2V4dGVuc2lvbihYNTA5X0VYVEVOU0lPTiAgKm9leHQsIGNoYXIgKipidWYsIGludCAqbGVuLCBpbnQgZmxhZ3MpCkBAIC0zNjgsOCArMzc5LDcgQEAKICAgICByZXR1cm4gcnRuOwogfQogCi0vKioKLSAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09QRU5TU0xfQ0VSVF9HRVRfU1VCSkVDVEFMVE5BTUVTCiAvKiogbmV0c25tcF9vcGVuc3NsX2NlcnRfZ2V0X3N1YmplY3RBbHROYW1lOiBnZXQgc3ViamVjdEFsdE5hbWUgZm9yIGNlcnQuCiAgKiBpZiBhIHBvaW50ZXIgdG8gYSBidWZmZXIgYW5kIGl0cyBsZW5ndGggYXJlIHNwZWNpZmllZCwgdGhleSB3aWxsIGJlCiAgKiB1c2VkLiBvdGhlcndpc2UsIGEgbmV3IGJ1ZmZlciB3aWxsIGJlIGFsbG9jYXRlZCwgd2hpY2ggdGhlIGNhbGxlciB3aWxsCkBAIC0zODAsNiArMzkwLDcgQEAKIHsKICAgICByZXR1cm4gX2NlcnRfZ2V0X2V4dGVuc2lvbl9pZF9zdHIob2NlcnQsIE5JRF9zdWJqZWN0X2FsdF9uYW1lLCBidWYsIGxlbiwgMCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PUEVOU1NMX0NFUlRfR0VUX1NVQkpFQ1RBTFROQU1FUyAqLwogCiB2b2lkCiBuZXRzbm1wX29wZW5zc2xfY2VydF9kdW1wX2V4dGVuc2lvbnMoWDUwOSAqb2NlcnQpCkBAIC00NDAsNiArNDUxLDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09QRU5TU0xfSFQyTklECiBpbnQKIF9odDJuaWQoaW50IGh0KQogewpAQCAtNDQ3LDYgKzQ1OSw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBfaHRtYXBbaHRdOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfT1BFTlNTTF9IVDJOSUQgKi8KIAogLyoqCiAgKiByZXR1cm5zIGFsbG9jYXRlZCBwb2ludGVyIGNhbGxlciBtdXN0IGZyZWUuCkBAIC00OTUsNyArNTA4LDcgQEAKICAgICAgICAgICAgIGRpZ2VzdCA9IEVWUF9zaGExKCk7CiAgICAgICAgICAgICBicmVhazsKIAotI2lmbmRlZiBPUEVOU1NMX05PX1NIQTI1NgorI2lmZGVmIEhBVkVfRVZQX1NIQTIyNAogICAgICAgICBjYXNlIE5TX0hBU0hfU0hBMjI0OgogICAgICAgICAgICAgZGlnZXN0ID0gRVZQX3NoYTIyNCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC01MDUsNyArNTE4LDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogCiAjZW5kaWYKLSNpZm5kZWYgT1BFTlNTTF9OT19TSEE1MTIKKyNpZmRlZiBIQVZFX0VWUF9TSEEzODQKICAgICAgICAgY2FzZSBOU19IQVNIX1NIQTM4NDoKICAgICAgICAgICAgIGRpZ2VzdCA9IEVWUF9zaGEzODQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNzk5LDYgKzgxMiw3IEBACiB9CiAKIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX09QRU5TU0xfRVJSX0xPRwogdm9pZAogbmV0c25tcF9vcGVuc3NsX2Vycl9sb2coY29uc3QgY2hhciAqcHJlZml4KQogewpAQCAtODA5LDYgKzgyMyw3IEBACiAgICAgICAgICAgICAgICAgIEVSUl9HRVRfTElCKGVyciksIEVSUl9HRVRfRlVOQyhlcnIpLCBFUlJfR0VUX1JFQVNPTihlcnIpKTsKICAgICB9CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9PUEVOU1NMX0VSUl9MT0cgKi8KIAogdm9pZAogbmV0c25tcF9vcGVuc3NsX251bGxfY2hlY2tzKFNTTCAqc3NsLCBpbnQgKm51bGxfYXV0aCwgaW50ICpudWxsX2NpcGhlcikKQEAgLTg2MSw0ICs4NzYsNCBAQAogICAgIH0KIH0KIAotI2VuZGlmIC8qIE5FVFNOTVBfVVNFX09QRU5TU0wgJiYgSEFWRV9MSUJTU0wgKi8KKyNlbmRpZiAvKiBORVRTTk1QX1VTRV9PUEVOU1NMICYmIEhBVkVfTElCU1NMICYmICFkZWZpbmVkKE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0VSVF9VVElMKSAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYyBiL3NubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMKaW5kZXggOTQ3YTc4YS4uNjg0MmQwZSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYworKysgYi9zbm1wbGliL3NubXBfcGFyc2VfYXJncy5jCkBAIC0yMTAsNyArMjEwLDcgQEAKICAgICAgKiBpbml0aWFsaXplIHNlc3Npb24gdG8gZGVmYXVsdCB2YWx1ZXMgCiAgICAgICovCiAgICAgc25tcF9zZXNzX2luaXQoc2Vzc2lvbik7Ci0gICAgc3RyY3B5KE9wdHMsICJZOlZoSG06TTpPOkk6UDpEOmR2OnI6dDpjOlo6ZTpFOm46dTpsOng6WDphOkE6cDpUOi06MzpzOlM6TDoiKTsKKyAgICBzdHJjcHkoT3B0cywgIlk6VmhIbTpNOk86STpQOkQ6ZHY6cjp0OmM6WjplOkU6bjp1Omw6eDpYOmE6QTpwOlQ6LTozOkw6Iik7CiAgICAgaWYgKGxvY2FsT3B0cykgewogICAgICAgICBpZiAoc3RybGVuKGxvY2FsT3B0cykgKyBzdHJsZW4oT3B0cykgPj0gc2l6ZW9mKE9wdHMpKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiVG9vIG1hbnkgbG9jYWxPcHRzIGluIHNubXBfcGFyc2VfYXJncygpXG4iKTsKQEAgLTU1Nyw2ICs1NTcsNyBAQAogCiAgICAgICAgICAgICBicmVhazsKIAorI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQogICAgICAgICBjYXNlICdhJzoKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01ENQogICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wKG9wdGFyZywgIk1ENSIpKSB7CkBAIC02MzAsNiArNjMxLDcgQEAKIAkgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNOTVBWM19DTURfT1BUSU9OUyAqLworI2VuZGlmIC8qIE5FVFNOTVBfU0VDTU9EX1VTTSAqLwogCiAgICAgICAgIGNhc2UgJz8nOgogICAgICAgICAgICAgcmV0dXJuIChORVRTTk1QX1BBUlNFX0FSR1NfRVJST1JfVVNBR0UpOwpAQCAtNjkwLDYgKzY5Miw5IEBACiAgICAgICAgIH0KICAgICB9CiAKKyNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KKyAgICAvKiBYWFg6IHRoaXMgc2hvdWxkIGlkZWFsbHkgYmUgbW92ZWQgdG8gc25tcHVzbS5jIHNvbWVob3cgKi8KKwogICAgIC8qCiAgICAgICogbWFrZSBtYXN0ZXIga2V5IGZyb20gcGFzcyBwaHJhc2VzIAogICAgICAqLwpAQCAtNzcwLDYgKzc3NSw4IEBACiAgICAgICAgICAgICByZXR1cm4gKE5FVFNOTVBfUEFSU0VfQVJHU19FUlJPUik7CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYgLyogTkVUU05NUF9TRUNNT0RfVVNNICovCisKICAgICAvKgogICAgICAqIGdldCB0aGUgaG9zdG5hbWUgCiAgICAgICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfc2VjbW9kLmMgYi9zbm1wbGliL3NubXBfc2VjbW9kLmMKaW5kZXggYThjZjkyOC4uOWU2MGE0MiAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX3NlY21vZC5jCisrKyBiL3NubXBsaWIvc25tcF9zZWNtb2QuYwpAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KKwogc3RhdGljIHN0cnVjdCBzbm1wX3NlY21vZF9saXN0ICpyZWdpc3RlcmVkX3NlcnZpY2VzID0gTlVMTDsKIAogc3RhdGljIFNOTVBDYWxsYmFjayBzZXRfZGVmYXVsdF9zZWNtb2Q7CkBAIC01MSw2ICs1MywxMSBAQAogI2luY2x1ZGUgInNubXBzbV9pbml0LmgiCiB9CiAKK3ZvaWQKK3NodXRkb3duX3NlY21vZCh2b2lkKQoreworICAgICNpbmNsdWRlICJzbm1wc21fc2h1dGRvd24uaCIKK30KIAogaW50CiByZWdpc3Rlcl9zZWNfbW9kKGludCBzZWNtb2QsIGNvbnN0IGNoYXIgKm1vZG5hbWUsCkBAIC05OSw2ICsxMDYsOCBAQAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1bnJlZ2lzdGVyX3NlY19tb2QsIG5ldHNubXBfdW51c2VkKQorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfU0VDX01PRAogaW50CiB1bnJlZ2lzdGVyX3NlY19tb2QoaW50IHNlY21vZCkKIHsKQEAgLTEyMSw2ICsxMzAsNyBAQAogICAgICAqLwogICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VOUkVHSVNURVJfU0VDX01PRCAqLwogCiB2b2lkICAgICAgICAgICAgCiBjbGVhcl9zZWNfbW9kKHZvaWQpCkBAIC0xNTMsNiArMTYzLDE5IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKy8qIHRyeSB0byBwaWNrIGEgcmVhc29uYWJsZSBzZWN1cml0eSBtb2R1bGUgZGVmYXVsdCBiYXNlZCBvbiB3aGF0IHdhcworICAgY29tcGlsZWQgaW50byB0aGUgbmV0LXNubXAgcGFja2FnZSAqLworI2lmZGVmIFVTTV9TRUNfTU9ERUxfTlVNQkVSCisjZGVmaW5lIE5FVFNOTVBfU0VDTU9EX0RFRkFVTFRfTU9ERUwgIFVTTV9TRUNfTU9ERUxfTlVNQkVSCisjZWxpZiBkZWZpbmVkKFRTTV9TRUNfTU9ERUxfTlVNQkVSKQorI2RlZmluZSBORVRTTk1QX1NFQ01PRF9ERUZBVUxUX01PREVMICBUU01fU0VDX01PREVMX05VTUJFUgorI2VsaWYgZGVmaW5lZChLU01fU0VDX01PREVMX05VTUJFUikKKyNkZWZpbmUgTkVUU05NUF9TRUNNT0RfREVGQVVMVF9NT0RFTCAgS1NNX1NFQ19NT0RFTF9OVU1CRVIKKyNlbHNlCisvKiBlbHNlIHdlIGdpdmUgdXAgYW5kIGxlYXZlIGl0IGJsYW5rICovCisjZGVmaW5lIE5FVFNOTVBfU0VDTU9EX0RFRkFVTFRfTU9ERUwgIC0xCisjZW5kaWYKKwogc3RhdGljIGludAogc2V0X2RlZmF1bHRfc2VjbW9kKGludCBtYWpvciwgaW50IG1pbm9yLCB2b2lkICpzZXJ2ZXJhcmcsIHZvaWQgKmNsaWVudGFyZykKIHsKQEAgLTE3MiwxMSArMTk1LDExIEBACiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBzZWN1cml0eSBtb2RlbCBuYW1lOiAlcy4gIEZvcmNpbmcgVVNNIGluc3RlYWQuXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNwdHIpOwotICAgICAgICAgICAgICAgIHNlc3MtPnNlY3VyaXR5TW9kZWwgPSBVU01fU0VDX01PREVMX05VTUJFUjsKKyAgICAgICAgICAgICAgICBzZXNzLT5zZWN1cml0eU1vZGVsID0gTkVUU05NUF9TRUNNT0RfREVGQVVMVF9NT0RFTDsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzZXNzLT5zZWN1cml0eU1vZGVsID0gVVNNX1NFQ19NT0RFTF9OVU1CRVI7CisgICAgICAgICAgICBzZXNzLT5zZWN1cml0eU1vZGVsID0gTkVUU05NUF9TRUNNT0RfREVGQVVMVF9NT0RFTDsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jIGIvc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jCmluZGV4IDRkZjk2MDIuLmFkYTQ3ODEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF90cmFuc3BvcnQuYworKysgYi9zbm1wbGliL3NubXBfdHJhbnNwb3J0LmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgpAQCAtNzAsNiArNzEsMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRyYW5zcG9ydF9hbGwsIGxpYm5ldHNubXApCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0ZG9tYWluX3N1cHBvcnQsIHRyYW5zcG9ydF9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRvbWFpbl90cmFuc3BvcnRfb2lkLCB0cmFuc3BvcnRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHNvY2thZGRyX3NpemUsIHRyYW5zcG9ydF9hbGwpCiAKIC8qCiAgKiBPdXIgbGlzdCBvZiBzdXBwb3J0ZWQgdHJhbnNwb3J0IGRvbWFpbnMuICAKQEAgLTk5LDkgKzEwNSw2IEBACiBzdGF0aWMgdm9pZCAgICAgbmV0c25tcF90ZG9tYWluX2R1bXAodm9pZCk7CiAKIAotLyoKLSAqIE1ha2UgYSBkZWVwIGNvcHkgb2YgYW4gbmV0c25tcF90cmFuc3BvcnQuICAKLSAqLwogCiB2b2lkCiBpbml0X3NubXBfdHJhbnNwb3J0KHZvaWQpCkBAIC0xMTIsMTYgKzExNSwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0RPTlRfTE9BRF9IT1NUX0ZJTEVTKTsKIH0KIAorLyoKKyAqIE1ha2UgYSBkZWVwIGNvcHkgb2YgYW4gbmV0c25tcF90cmFuc3BvcnQuICAKKyAqLwogbmV0c25tcF90cmFuc3BvcnQgKgogbmV0c25tcF90cmFuc3BvcnRfY29weShuZXRzbm1wX3RyYW5zcG9ydCAqdCkKIHsKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqbiA9IE5VTEw7CiAKLSAgICBuID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICBpZiAodCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG4gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAobiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1zZXQobiwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CiAKICAgICBpZiAodC0+ZG9tYWluICE9IE5VTEwpIHsKICAgICAgICAgbi0+ZG9tYWluID0gdC0+ZG9tYWluOwpAQCAtMTgwLDYgKzE4OSw3IEBACiAgICAgbi0+Zl9mbXRhZGRyID0gdC0+Zl9mbXRhZGRyOwogICAgIG4tPnNvY2sgPSB0LT5zb2NrOwogICAgIG4tPmZsYWdzID0gdC0+ZmxhZ3M7CisgICAgbi0+YmFzZV90cmFuc3BvcnQgPSBuZXRzbm1wX3RyYW5zcG9ydF9jb3B5KHQtPmJhc2VfdHJhbnNwb3J0KTsKIAogICAgIC8qIGdpdmUgdGhlIHRyYW5zcG9ydCBhIGNoYW5jZSB0byBkbyAic3BlY2lhbCB0aGluZ3MiICovCiAgICAgaWYgKHQtPmZfY29weSkKQEAgLTE5NiwxNSArMjA2LDExIEBACiAgICAgaWYgKE5VTEwgPT0gdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHQtPmxvY2FsICE9IE5VTEwpIHsKLSAgICAgICAgU05NUF9GUkVFKHQtPmxvY2FsKTsKLSAgICB9Ci0gICAgaWYgKHQtPnJlbW90ZSAhPSBOVUxMKSB7Ci0gICAgICAgIFNOTVBfRlJFRSh0LT5yZW1vdGUpOwotICAgIH0KLSAgICBpZiAodC0+ZGF0YSAhPSBOVUxMKSB7Ci0gICAgICAgIFNOTVBfRlJFRSh0LT5kYXRhKTsKLSAgICB9CisgICAgU05NUF9GUkVFKHQtPmxvY2FsKTsKKyAgICBTTk1QX0ZSRUUodC0+cmVtb3RlKTsKKyAgICBTTk1QX0ZSRUUodC0+ZGF0YSk7CisgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0LT5iYXNlX3RyYW5zcG9ydCk7CisKICAgICBTTk1QX0ZSRUUodCk7CiB9CiAKQEAgLTIzMCw2ICsyMzYsMjggQEAKIAogICAgIHJldHVybiBzdHI7CiB9CisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TT0NLQUREUl9TSVpFCitpbnQKK25ldHNubXBfc29ja2FkZHJfc2l6ZShzdHJ1Y3Qgc29ja2FkZHIgKnNhKQoreworICAgIGlmIChOVUxMID09IHNhKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHN3aXRjaCAoc2EtPnNhX2ZhbWlseSkgeworICAgICAgICBjYXNlIEFGX0lORVQ6CisgICAgICAgICAgICByZXR1cm4gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisgICAgICAgIGJyZWFrOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgY2FzZSBBRl9JTkVUNjoKKyAgICAgICAgICAgIHJldHVybiBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNik7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU09DS0FERFJfU0laRSAqLwogICAgIAogaW50CiBuZXRzbm1wX3RyYW5zcG9ydF9zZW5kKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpwYWNrZXQsIGludCBsZW5ndGgsCkBAIC0yOTksNiArMzI3LDcgQEAKIAogCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URE9NQUlOX1NVUFBPUlQKIGludAogbmV0c25tcF90ZG9tYWluX3N1cHBvcnQoY29uc3Qgb2lkICogaW5fb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluX2xlbiwKQEAgLTMxNyw3ICszNDYsNyBAQAogICAgIH0KICAgICByZXR1cm4gMDsKIH0KLQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERPTUFJTl9TVVBQT1JUICovCiAKIAogdm9pZApAQCAtMzk1LDYgKzQyNCw4IEBACiAKIAogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGRvbWFpbl91bnJlZ2lzdGVyLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URE9NQUlOX1VOUkVHSVNURVIKIGludAogbmV0c25tcF90ZG9tYWluX3VucmVnaXN0ZXIobmV0c25tcF90ZG9tYWluICpuKQogewpAQCAtNDE1LDYgKzQ0Niw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RET01BSU5fVU5SRUdJU1RFUiAqLwogCiAKIHN0YXRpYyBuZXRzbm1wX3Rkb21haW4gKgpAQCAtNDY2LDEwICs0OTgsNyBAQAogICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqc3BlYyA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgICAgICBhbnlfZm91bmQgPSAwOwogICAgIGNoYXIgYnVmW1NOTVBfTUFYUEFUSF07Ci0gICAgZXh0ZXJuIGNvbnN0IGNoYXIgKmN1cmZpbGVuYW1lOwkJLyogZnJvbSByZWFkX2NvbmZpZy5jICovCi0gICAgY29uc3QgY2hhciAgICAgICAgKnByZXZfY3VyZmlsZW5hbWU7Ci0KLSAgICBwcmV2X2N1cmZpbGVuYW1lID0gY3VyZmlsZW5hbWU7CisgICAgY2hhciAqKmxzcGVjID0gMDsKIAogICAgIERFQlVHTVNHVEwoKCJ0ZG9tYWluIiwKICAgICAgICAgICAgICAgICAidGRvbWFpbl90cmFuc3BvcnRfZnVsbChcIiVzXCIsIFwiJXNcIiwgJWQsIFwiJXNcIiwgXCIlc1wiKVxuIiwKQEAgLTU1OSw3ICs1ODgsMjEgQEAKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0ZG9tYWluIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgdXNlciBzcGVjaWZpZWQgZGVmYXVsdCBkb21haW4gXCIlc1wiXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9kb21haW4pKTsKLSAgICAgICAgICAgIG1hdGNoID0gZmluZF90ZG9tYWluKGRlZmF1bHRfZG9tYWluKTsKKyAgICAgICAgICAgIGlmICghc3RyY2hyKGRlZmF1bHRfZG9tYWluLCAnLCcpKQorICAgICAgICAgICAgICAgIG1hdGNoID0gZmluZF90ZG9tYWluKGRlZmF1bHRfZG9tYWluKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBjb21tYXMgPSAwOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNwID0gZGVmYXVsdF9kb21haW47CisgICAgICAgICAgICAgICAgY2hhciAqZHVwID0gc3RyZHVwKGRlZmF1bHRfZG9tYWluKTsKKworICAgICAgICAgICAgICAgIHdoaWxlICgqKytjcCkgaWYgKCpjcCA9PSAnLCcpIGNvbW1hcysrOworICAgICAgICAgICAgICAgIGxzcGVjID0gY2FsbG9jKGNvbW1hcysyLCBzaXplb2YoY2hhciAqKSk7CisgICAgICAgICAgICAgICAgY29tbWFzID0gMTsKKyAgICAgICAgICAgICAgICBsc3BlY1swXSA9IHN0cnRvayhkdXAsICIsIik7CisgICAgICAgICAgICAgICAgd2hpbGUgKChsc3BlY1tjb21tYXMrK10gPSBzdHJ0b2soTlVMTCwgIiwiKSkpCisgICAgICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgICAgICBzcGVjID0gKGNvbnN0IGNoYXIgKiBjb25zdCAqKWxzcGVjOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3BlYyA9IG5ldHNubXBfbG9va3VwX2RlZmF1bHRfZG9tYWlucyhhcHBsaWNhdGlvbik7CiAgICAgICAgICAgICBpZiAoc3BlYyA9PSBOVUxMKSB7CkBAIC01OTksMTIgKzY0MiwxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQgYWRkcmVzcyBcIiVzXCJcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaC0+cHJlZml4WzBdLCBhZGRyID8gYWRkciA6ICJbTklMXSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyMiA/IGFkZHIyIDogIltOSUxdIikpOwotICAgICAgICAgICAgaWYgKG1hdGNoLT5mX2NyZWF0ZV9mcm9tX3RzdHJpbmcpCisgICAgICAgICAgICBpZiAobWF0Y2gtPmZfY3JlYXRlX2Zyb21fdHN0cmluZykgeworICAgICAgICAgICAgICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNwb3J0IGRvbWFpbiAlcyB1c2VzIGRlcHJlY2F0ZWQgZl9jcmVhdGVfZnJvbV90c3RyaW5nXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2gtPnByZWZpeFswXSkpOwogICAgICAgICAgICAgICAgIHQgPSBtYXRjaC0+Zl9jcmVhdGVfZnJvbV90c3RyaW5nKGFkZHIsIGxvY2FsKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0ID0gbWF0Y2gtPmZfY3JlYXRlX2Zyb21fdHN0cmluZ19uZXcoYWRkciwgbG9jYWwsIGFkZHIyKTsKICAgICAgICAgICAgIGlmICh0KSB7Ci0gICAgICAgICAgICAgICAgY3VyZmlsZW5hbWUgPSBwcmV2X2N1cmZpbGVuYW1lOworICAgICAgICAgICAgICAgIGlmIChsc3BlYykgeworICAgICAgICAgICAgICAgICAgICBmcmVlKGxzcGVjWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgZnJlZShsc3BlYyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiB0OwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02MTYsNyArNjY2LDEwIEBACiAgICAgfQogICAgIGlmICghYW55X2ZvdW5kKQogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTm8gc3VwcG9ydCBmb3IgYW55IGNoZWNrZWQgdHJhbnNwb3J0IGRvbWFpblxuIik7Ci0gICAgY3VyZmlsZW5hbWUgPSBwcmV2X2N1cmZpbGVuYW1lOworICAgIGlmIChsc3BlYykgeworICAgICAgICBmcmVlKGxzcGVjWzBdKTsKKyAgICAgICAgZnJlZShsc3BlYyk7CisgICAgfQogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC02MzAsNiArNjgzLDcgQEAKIH0KIAogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVERPTUFJTl9UUkFOU1BPUlRfT0lECiBuZXRzbm1wX3RyYW5zcG9ydCAqCiBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X29pZChjb25zdCBvaWQgKiBkb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZG9tX2xlbiwKQEAgLTY1NCw2ICs3MDgsNyBAQAogICAgIHNubXBfbG9nKExPR19FUlIsICJObyBzdXBwb3J0IGZvciByZXF1ZXN0ZWQgdHJhbnNwb3J0IGRvbWFpblxuIik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URE9NQUlOX1RSQU5TUE9SVF9PSUQgKi8KIAogbmV0c25tcF90cmFuc3BvcnQqCiBuZXRzbm1wX3RyYW5zcG9ydF9vcGVuKGNvbnN0IGNoYXIqIGFwcGxpY2F0aW9uLCBjb25zdCBjaGFyKiBzdHIsIGludCBsb2NhbCkKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcGtzbS5jIGIvc25tcGxpYi9zbm1wa3NtLmMKaW5kZXggNGI2NDAwMy4uN2QzMDYxMiAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wa3NtLmMKKysrIGIvc25tcGxpYi9zbm1wa3NtLmMKQEAgLTY2LDYgKzY2LDEyIEBACiAjZGVmaW5lIFRJQ0tFVF9DTElFTlQoeCkJKHgpLT5lbmNfcGFydDItPmNsaWVudAogI2VuZGlmCQkJCS8qIE5FVFNOTVBfVVNFX0tFUkJFUk9TX0hFSU1EQUwgKi8KIAorI2lmIEhBVkVfRVRfQ09NX0VSUl9ICisjaW5jbHVkZSA8ZXQvY29tX2Vyci5oPgorI2VsaWYgSEFWRV9DT01fRVJSX0gKKyNpbmNsdWRlIDxjb21fZXJyLmg+CisjZW5kaWYKKwogI2luY2x1ZGUgPG5ldC1zbm1wL291dHB1dF9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9jb25maWdfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvdXRpbGl0aWVzLmg+CkBAIC0yNTMsNiArMjU5LDEwIEBACiAgICAgcmVnaXN0ZXJfc2VjX21vZChORVRTTk1QX1NFQ19NT0RFTF9LU00sICJrc20iLCBkZWYpOwogfQogCit2b2lkIHNodXRkb3duX2tzbSh2b2lkKQoreworfQorCiAvKgogICogVGhlc2Ugcm91dGluZXMgaW1wbGVtZW50IGEgc2ltcGxlIGNhY2hlIGZvciBpbmZvcm1hdGlvbiB3ZSBuZWVkIHRvCiAgKiBwcm9jZXNzIHJlc3BvbnNlcy4gIFdoZW4gd2Ugc2VuZCBvdXQgYSByZXF1ZXN0LCBpdCBjb250YWlucyBhbiBBUF9SRVE7CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXB0c20uYyBiL3NubXBsaWIvc25tcHRzbS5jCmluZGV4IGEzOGM2MzIuLjQyZGU2ODIgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcHRzbS5jCisrKyBiL3NubXBsaWIvc25tcHRzbS5jCkBAIC05LDYgKzksNyBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaD4KQEAgLTI2LDYgKzI3LDkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBEVExTU0NUUERvbWFpbi5oPgogI2VuZGlmCiAKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNubXB2M19wcm9iZV9jb250ZXh0RW5naW5lSURfcmZjNTM0MykKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHJvd19jcmVhdGUpCisKICNpbmNsdWRlIDx1bmlzdGQuaD4KIAogc3RhdGljIGludCAgICAgIHRzbV9zZXNzaW9uX2luaXQobmV0c25tcF9zZXNzaW9uICopOwpAQCAtNjcsNiArNzEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UU01fVVNFX1BSRUZJWCk7CiB9CiAKKy8qKiBzaHV0ZG93biB0aGUgVFNNIHNlY3VyaXR5IG1vZHVsZSAqLwordm9pZAorc2h1dGRvd25fdHNtKHZvaWQpCit7Cit9CisKIC8qCiAgKiBJbml0aWFsaXplIHNwZWNpZmljIHNlc3Npb24gaW5mb3JtYXRpb24gKHJpZ2h0IG5vdywganVzdCBzZXQgdXAgdGhpbmdzIHRvCiAgKiBub3QgZG8gYW4gZW5naW5lSUQgcHJvYmUpCkBAIC01NDAsNyArNTUwLDcgQEAKICAgICAgICBtZXNzYWdlLiovCiAgICAgaWYgKHBhcm1zLT5zZWNMZXZlbCA+IHRtU3RhdGVSZWYtPnRyYW5zcG9ydFNlY3VyaXR5TGV2ZWwpIHsKICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVFNNX1NOTVBUU01JTkFERVFVQVRFU0VDVVJJVFlMRVZFTFMpOwotICAgICAgICBERUJVR01TR1RMKCgidHNtIiwgImluYWRlcXVhdGUgc2VjdXJpdHkgbGV2ZWwgJWRcbiIsIHBhcm1zLT5zZWNMZXZlbCkpOworICAgICAgICBERUJVR01TR1RMKCgidHNtIiwgImluYWRlcXVhdGUgc2VjdXJpdHkgbGV2ZWw6ICVkXG4iLCBwYXJtcy0+c2VjTGV2ZWwpKTsKICAgICAgICAgLyogbmV0LXNubXAgcmV0dXJucyBlcnJvciBjb2RlcyBub3QgT0lEcywgd2hpY2ggYXJlIGRlYWx0IHdpdGggbGF0ZXIgKi8KICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVU5TVVBQT1JURURfU0VDX0xFVkVMOwogICAgIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcHVzbS5jIGIvc25tcGxpYi9zbm1wdXNtLmMKaW5kZXggODc4MDU5Ni4uNmE5Y2VjMyAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wdXNtLmMKKysrIGIvc25tcGxpYi9zbm1wdXNtLmMKQEAgLTIyLDYgKzIyLDcgQEAKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC03MSw2ICs3MiwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVzbV9hbGwsIGxpYm5ldHNubXApCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodXNtX3N1cHBvcnQsIHVzbV9hbGwpCisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHVzbV9zdXBwb3J0KQorCiBvaWQgICAgICAgICAgICAgdXNtTm9BdXRoUHJvdG9jb2xbMTBdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMCwgMSwgMSwgMSB9OwogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUQ1CiBvaWQgICAgICAgICAgICAgdXNtSE1BQ01ENUF1dGhQcm90b2NvbFsxMF0gPQpAQCAtODksNiArOTUsMTYgQEAKIHN0YXRpYyB1X2ludCAgICBkdW1teV9ldGltZSwgZHVtbXlfZWJvb3Q7ICAgICAgIC8qIEZvciBJU0VOR0lORUtOT1dOKCkuICovCiAKIC8qCisgKiBTZXQgdXAgZGVmYXVsdCBzbm1wdjMgcGFyYW1ldGVyIHZhbHVlIHN0b3JhZ2UuCisgKi8KKyNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KK3N0YXRpYyBjb25zdCBvaWQgKmRlZmF1bHRBdXRoVHlwZSA9IE5VTEw7CitzdGF0aWMgc2l6ZV90ICAgZGVmYXVsdEF1dGhUeXBlTGVuID0gMDsKK3N0YXRpYyBjb25zdCBvaWQgKmRlZmF1bHRQcml2VHlwZSA9IE5VTEw7CitzdGF0aWMgc2l6ZV90ICAgZGVmYXVsdFByaXZUeXBlTGVuID0gMDsKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KKworLyoKICAqIEdsb2JhbHMuCiAgKi8KIHN0YXRpYyB1X2ludCAgICBzYWx0X2ludGVnZXI7CkBAIC0xNTgsNiArMTc0LDIxIEBACiB9CiAKIAoraW50CitmcmVlX2VuZ2luZXRpbWVfb25fc2h1dGRvd24oaW50IG1ham9yaWQsIGludCBtaW5vcmlkLCB2b2lkICpzZXJ2ZXJhcmcsCisJCQkgICAgdm9pZCAqY2xpZW50YXJnKQoreworICAgIHVfY2hhciBlbmdpbmVJRFtTTk1QX01BWF9FTkdfU0laRV07CisgICAgc2l6ZV90IGVuZ2luZUlEX2xlbiA9IHNpemVvZihlbmdpbmVJRCk7CisKKyAgICBERUJVR01TR1RMKCgic25tcHYzIiwgImZyZWUgZW5naW5ldGltZSBjYWxsYmFjayBjYWxsZWRcbiIpKTsKKworICAgIGVuZ2luZUlEX2xlbiA9IHNubXB2M19nZXRfZW5naW5lSUQoZW5naW5lSUQsIGVuZ2luZUlEX2xlbik7CisgICAgaWYgKGVuZ2luZUlEX2xlbiA+IDApCisJZnJlZV9lbmdpbmV0aW1lKGVuZ2luZUlELCBlbmdpbmVJRF9sZW4pOworICAgIHJldHVybiAwOworfQorCiBzdHJ1Y3QgdXNtU3RhdGVSZWZlcmVuY2UgKgogdXNtX21hbGxvY191c21TdGF0ZVJlZmVyZW5jZSh2b2lkKQogewpAQCAtMjE0MywxMSArMjE3NCw3IEBACiAgICAgICAgIGlmIChib290c191aW50ID09IEVOR0lORUJPT1RfTUFYCiAgICAgICAgICAgICB8fCBib290c191aW50ICE9IG15Qm9vdHMKICAgICAgICAgICAgIHx8IHRpbWVfZGlmZmVyZW5jZSA+IFVTTV9USU1FX1dJTkRPVykgewotICAgICAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTTk9USU5USU1FV0lORE9XUykgPT0KLSAgICAgICAgICAgICAgICAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNOT1RJTlRJTUVXSU5ET1dTKTsKIAogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYm9vdF91aW50ICV1IG15Qm9vdHMgJXUgdGltZV9kaWZmICV1ID0+IG5vdCBpbiB0aW1lIHdpbmRvd1xuIiwKQEAgLTIzNjAsMTYgKzIzODcsMTAgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBUaGlzIGluZGljYXRlcyBhIGRlY3J5cHRpb25FcnJvci4gIAogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKSA9PQotICAgICAgICAgICAgICAgIDApIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX0RFQ1JZUFRJT05FUlJPUjsKICAgICAgICAgfQotICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfU05NUElOQVNOUEFSU0VFUlJTKSA9PSAwKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICB9CisgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1NOTVBJTkFTTlBBUlNFRVJSUyk7CiAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9QQVJTRUVSUk9SOwogICAgIH0KIApAQCAtMjM4MCwxMCArMjQwMSw3IEBACiAgICAgICogY2FsbGluZyBtb2R1bGUuCiAgICAgICovCiAgICAgaWYgKChzZWNMZXZlbCA9PSBTTk1QX1NFQ19MRVZFTF9BVVRIUFJJVikgJiYgKHNhbHRfbGVuZ3RoICE9IDgpKSB7Ci0gICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpID09IAotICAgICAgICAgICAgMCkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgfQorICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fREVDUllQVElPTkVSUk9SOwogICAgIH0KIApAQCAtMjQzMSwxMSArMjQ0OSw3IEBACiAgICAgICAgICghc2VzcyAmJiAobXNnX2ZsYWdzICYgU05NUF9NU0dfRkxBR19SUFJUX0JJVCkpKSB7CiAgICAgICAgIGlmIChJU0VOR0lORUtOT1dOKHNlY0VuZ2luZUlELCAqc2VjRW5naW5lSURMZW4pID09IEZBTFNFKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIlVua25vd24gRW5naW5lIElELlxuIikpOwotICAgICAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTVU5LTk9XTkVOR0lORUlEUykgPT0KLSAgICAgICAgICAgICAgICAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNVTktOT1dORU5HSU5FSURTKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9VTktOT1dORU5HSU5FSUQ7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMjQ1OSw5ICsyNDczLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCFzZXNzKSkgPyAwIDogMSkpKQogICAgICAgICA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiVW5rbm93biBVc2VyKCVzKVxuIiwgc2VjTmFtZSkpOwotICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNVTktOT1dOVVNFUk5BTUVTKSA9PSAwKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIHRvIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICB9CisgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTVU5LTk9XTlVTRVJOQU1FUyk7CiAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9VTktOT1dOU0VDVVJJVFlOQU1FOwogICAgIH0KIApAQCAtMjQ3OSwxMCArMjQ5MSw3IEBACiAgICAgaWYgKDEgPT0gcmMpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICJVbnN1cHBvcnRlZCBTZWN1cml0eSBMZXZlbCAoJWQpLlxuIiwKICAgICAgICAgICAgICAgICAgICAgc2VjTGV2ZWwpKTsKLSAgICAgICAgaWYgKHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYwotICAgICAgICAgICAgKFNUQVRfVVNNU1RBVFNVTlNVUFBPUlRFRFNFQ0xFVkVMUykgPT0gMCkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCB0byBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgfQorICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU1VOU1VQUE9SVEVEU0VDTEVWRUxTKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX1VOU1VQUE9SVEVEU0VDVVJJVFlMRVZFTDsKICAgICB9IGVsc2UgaWYgKHJjICE9IDApIHsKICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICJVbmtub3duIGlzc3VlLlxuIikpOwpAQCAtMjUwMCwxMCArMjUwOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZSwgc2lnbmF0dXJlX2xlbmd0aCkKICAgICAgICAgICAgICE9IFNOTVBfRVJSX05PRVJST1IpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiVmVyaWZpY2F0aW9uIGZhaWxlZC5cbiIpKTsKLSAgICAgICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU1dST05HRElHRVNUUykgPT0gMCkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTV1JPTkdESUdFU1RTKTsKIAkgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJBdXRoZW50aWNhdGlvbiBmYWlsZWQgZm9yICVzXG4iLAogCQkJCXVzZXItPm5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX0FVVEhFTlRJQ0FUSU9ORkFJTFVSRTsKQEAgLTI1OTQsOSArMjYwMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNyeXB0ZWQgc1BEVSIpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB3aGlsZSBwYXJzaW5nIGVuY3J5cHRlZCBzUERVLiIpKTsKLSAgICAgICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9TTk1QSU5BU05QQVJTRUVSUlMpID09IDApIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIiVzXG4iLCAiRmFpbGVkIGluY3JlbWVudCBzdGF0aXN0aWMuIikpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfU05NUElOQVNOUEFSU0VFUlJTKTsKICAgICAgICAgICAgIHVzbV9mcmVlX3VzbVN0YXRlUmVmZXJlbmNlKCpzZWNTdGF0ZVJlZik7CiAgICAgICAgICAgICAqc2VjU3RhdGVSZWYgPSBOVUxMOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX1BBUlNFRVJST1I7CkBAIC0yNjE3LDEwICsyNjIxLDcgQEAKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2lwaGVydGV4dCBpcyAlbHUgYnl0ZXMsIG5vdCBhbiBpbnRlZ2VyIG11bHRpcGxlIG9mIDggKHJlbSAlbHUpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXJlbWFpbmluZywgKHVuc2lnbmVkIGxvbmcpcmVtYWluaW5nICUgOCkpOwotICAgICAgICAgICAgICAgIGlmIChzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9VU01TVEFUU0RFQ1JZUFRJT05FUlJPUlMpID09Ci0gICAgICAgICAgICAgICAgICAgIDApIHsKLSAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKTsKICAgICAgICAgICAgICAgICB1c21fZnJlZV91c21TdGF0ZVJlZmVyZW5jZSgqc2VjU3RhdGVSZWYpOwogICAgICAgICAgICAgICAgICpzZWNTdGF0ZVJlZiA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX0RFQ1JZUFRJT05FUlJPUjsKQEAgLTI2MzAsMTAgKzI2MzEsNyBAQAogCiAgICAgICAgICAgICBpZiAoICF1c2VyLT5wcml2S2V5ICkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiTm8gcHJpdmFjeSBwYXNzIHBocmFzZSBmb3IgJXNcbiIsIHVzZXItPnNlY05hbWUpKTsKLSAgICAgICAgICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKSA9PQotICAgICAgICAgICAgICAgICAgICAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsICJGYWlsZWQgaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTREVDUllQVElPTkVSUk9SUyk7CiAgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNtU3RhdGVSZWZlcmVuY2UoKnNlY1N0YXRlUmVmKTsKICAgICAgICAgICAgICAgICAqc2VjU3RhdGVSZWYgPSBOVUxMOwogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9ERUNSWVBUSU9ORVJST1I7CkBAIC0yNjY1LDEwICsyNjYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfcHRyLCByZW1haW5pbmcsICpzY29wZWRQZHUsIHNjb3BlZFBkdUxlbikKICAgICAgICAgICAgICE9IFNOTVBfRVJSX05PRVJST1IpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsICJGYWlsZWQgZGVjcnlwdGlvbi4iKSk7Ci0gICAgICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljCi0gICAgICAgICAgICAgICAgKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbSIsICIlc1xuIiwgIkZhaWxlZCBpbmNyZW1lbnQgc3RhdGlzdGljLiIpKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNubXBfaW5jcmVtZW50X3N0YXRpc3RpYyhTVEFUX1VTTVNUQVRTREVDUllQVElPTkVSUk9SUyk7CiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9VU01fREVDUllQVElPTkVSUk9SOwogICAgICAgICB9CiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCkBAIC0yODU3LDEwICsyODUyLDM1MiBAQAogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CiB9CiAKKworLyoKKyAqIHVzbV9jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKToKKyAqIAorICogY3JlYXRlcyBhIHVzZXIgaW4gdGhlIHVzbSB0YWJsZSBmcm9tIHRoZSBpbmZvcm1hdGlvbiBpbiBhIHNlc3Npb24uCisgKiBJZiB0aGUgdXNlciBhbHJlYWR5IGV4aXN0cywgaXQgaXMgdXBkYXRlZCB3aXRoIHRoZSBjdXJyZW50CisgKiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZXNzaW9uCisgKiAKKyAqIFBhcmFtZXRlcnM6CisgKiBzZXNzaW9uIC0tIElOOiBwb2ludGVyIHRvIHRoZSBzZXNzaW9uIHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSB1c2VyLgorICogCisgKiBSZXR1cm5zOgorICogU05NUEVSUl9TVUNDRVNTCisgKiBTTk1QRVJSX0dFTkVSUiAKKyAqLworaW50Cit1c21fY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24pCit7CisgICAgc3RydWN0IHVzbVVzZXIgKnVzZXI7CisgICAgaW50ICAgICAgICAgICAgIHVzZXJfanVzdF9jcmVhdGVkID0gMDsKKyAgICBjaGFyICpjcDsKKworICAgIC8qCisgICAgICogLSBkb24ndCBjcmVhdGUtYW5vdGhlci9jb3B5LWludG8gdXNlciBmb3IgdGhpcyBzZXNzaW9uIGJ5IGRlZmF1bHQKKyAgICAgKiAtIGJhaWwgbm93IChubyBlcnJvcikgaWYgd2UgZG9uJ3QgaGF2ZSBhbiBlbmdpbmVJRAorICAgICAqLworICAgIGlmIChTTk1QX0ZMQUdTX1VTRVJfQ1JFQVRFRCA9PSAoc2Vzc2lvbi0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX1VTRVJfQ1JFQVRFRCkgfHwKKyAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlNb2RlbCAhPSBTTk1QX1NFQ19NT0RFTF9VU00gfHwKKyAgICAgICAgc2Vzc2lvbi0+dmVyc2lvbiAhPSBTTk1QX1ZFUlNJT05fMyB8fAorICAgICAgICBzZXNzaW9uLT5zZWN1cml0eU5hbWVMZW4gPT0gMCB8fAorICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDApCisgICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgidXNtIiwgIm5vIGZsYWcgZGVmaW5lZC4uLiAgY29udGludWluZ1xuIikpOworICAgIHNlc3Npb24tPmZsYWdzIHw9IFNOTVBfRkxBR1NfVVNFUl9DUkVBVEVEOworCisgICAgLyoKKyAgICAgKiBub3cgdGhhdCB3ZSBoYXZlIHRoZSBlbmdpbmVJRCwgY3JlYXRlIGFuIGVudHJ5IGluIHRoZSBVU00gbGlzdAorICAgICAqIGZvciB0aGlzIHVzZXIgdXNpbmcgdGhlIGluZm9ybWF0aW9uIGluIHRoZSBzZXNzaW9uIAorICAgICAqLworICAgIHVzZXIgPSB1c21fZ2V0X3VzZXJfZnJvbV9saXN0KHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNtX2dldF91c2VyTGlzdCgpLCAwKTsKKyAgICBERUJVR01TR1RMKCgidXNtIiwgInVzZXIgZXhpc3RzPyB4PSVwXG4iLCB1c2VyKSk7CisgICAgaWYgKHVzZXIgPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgidXNtIiwgIkJ1aWxkaW5nIHVzZXIgJXMuLi5cbiIsCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb24tPnNlY3VyaXR5TmFtZSkpOworICAgICAgICAvKgorICAgICAgICAgKiB1c2VyIGRvZXNuJ3QgZXhpc3Qgc28gd2UgY3JlYXRlIGFuZCBhZGQgaXQgCisgICAgICAgICAqLworICAgICAgICB1c2VyID0gKHN0cnVjdCB1c21Vc2VyICopIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHVzbVVzZXIpKTsKKyAgICAgICAgaWYgKHVzZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKworICAgICAgICAvKgorICAgICAgICAgKiBjb3B5IGluIHRoZSBzZWN1cml0eU5hbWUgCisgICAgICAgICAqLworICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKSB7CisgICAgICAgICAgICB1c2VyLT5uYW1lID0gc3RyZHVwKHNlc3Npb24tPnNlY3VyaXR5TmFtZSk7CisgICAgICAgICAgICB1c2VyLT5zZWNOYW1lID0gc3RyZHVwKHNlc3Npb24tPnNlY3VyaXR5TmFtZSk7CisgICAgICAgICAgICBpZiAodXNlci0+bmFtZSA9PSBOVUxMIHx8IHVzZXItPnNlY05hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBpbiB0aGUgZW5naW5lSUQgCisgICAgICAgICAqLworICAgICAgICB1c2VyLT5lbmdpbmVJRCA9IG5ldHNubXBfbWVtZHVwKHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbik7CisgICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlEICYmICF1c2VyLT5lbmdpbmVJRCkgeworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICB1c2VyLT5lbmdpbmVJRExlbiA9IHNlc3Npb24tPnNlY3VyaXR5RW5naW5lSURMZW47CisKKyAgICAgICAgdXNlcl9qdXN0X2NyZWF0ZWQgPSAxOworICAgIH0KKworICAgIC8qCisgICAgICogY29weSB0aGUgYXV0aCBwcm90b2NvbCAKKyAgICAgKi8KKyAgICBpZiAodXNlci0+YXV0aFByb3RvY29sID09IE5VTEwgJiYgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoUHJvdG8gIT0gTlVMTCkgeworICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aFByb3RvY29sKTsKKyAgICAgICAgdXNlci0+YXV0aFByb3RvY29sID0KKyAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHNlc3Npb24tPnNlY3VyaXR5QXV0aFByb3RvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoUHJvdG9MZW4pOworICAgICAgICBpZiAodXNlci0+YXV0aFByb3RvY29sID09IE5VTEwpIHsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICAgICAgdXNlci0+YXV0aFByb3RvY29sTGVuID0gc2Vzc2lvbi0+c2VjdXJpdHlBdXRoUHJvdG9MZW47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjb3B5IHRoZSBwcml2IHByb3RvY29sIAorICAgICAqLworICAgIGlmICh1c2VyLT5wcml2UHJvdG9jb2wgPT0gTlVMTCAmJiBzZXNzaW9uLT5zZWN1cml0eVByaXZQcm90byAhPSBOVUxMKSB7CisgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5wcml2UHJvdG9jb2wpOworICAgICAgICB1c2VyLT5wcml2UHJvdG9jb2wgPQorICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQoc2Vzc2lvbi0+c2VjdXJpdHlQcml2UHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eVByaXZQcm90b0xlbik7CisgICAgICAgIGlmICh1c2VyLT5wcml2UHJvdG9jb2wgPT0gTlVMTCkgeworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcih1c2VyKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICB1c2VyLT5wcml2UHJvdG9jb2xMZW4gPSBzZXNzaW9uLT5zZWN1cml0eVByaXZQcm90b0xlbjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNvcHkgaW4gdGhlIGF1dGhlbnRpY2F0aW9uIEtleS4gIElmIG5vdCBsb2NhbGl6ZWQsIGxvY2FsaXplIGl0IAorICAgICAqLworICAgIGlmICh1c2VyLT5hdXRoS2V5ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHNlc3Npb24tPnNlY3VyaXR5QXV0aExvY2FsS2V5ICE9IE5VTEwKKyAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5QXV0aExvY2FsS2V5TGVuICE9IDApIHsKKyAgICAgICAgICAgIC8qIGFscmVhZHkgbG9jYWxpemVkIGtleSBwYXNzZWQgaW4uICB1c2UgaXQgKi8KKyAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5hdXRoS2V5KTsKKyAgICAgICAgICAgIHVzZXItPmF1dGhLZXkgPSBuZXRzbm1wX21lbWR1cChzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleUxlbik7CisgICAgICAgICAgICBpZiAoIXVzZXItPmF1dGhLZXkpIHsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVzZXItPmF1dGhLZXlMZW4gPSBzZXNzaW9uLT5zZWN1cml0eUF1dGhMb2NhbEtleUxlbjsKKyAgICAgICAgfSBlbHNlIGlmIChzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXkgIT0gTlVMTAorICAgICAgICAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5QXV0aEtleUxlbiAhPSAwKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+YXV0aEtleSk7CisgICAgICAgICAgICB1c2VyLT5hdXRoS2V5ID0gKHVfY2hhciAqKSBjYWxsb2MoMSwgVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0spOworICAgICAgICAgICAgaWYgKHVzZXItPmF1dGhLZXkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXNlci0+YXV0aEtleUxlbiA9IFVTTV9MRU5HVEhfS1VfSEFTSEJMT0NLOworICAgICAgICAgICAgaWYgKGdlbmVyYXRlX2t1bCh1c2VyLT5hdXRoUHJvdG9jb2wsIHVzZXItPmF1dGhQcm90b2NvbExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlBdXRoS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXlMZW4sIHVzZXItPmF1dGhLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyLT5hdXRoS2V5TGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgoY3AgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQVVUSExPQ0FMSVpFREtFWSkpKSB7CisgICAgICAgICAgICBzaXplX3QgYnVmbGVuID0gVVNNX0FVVEhfS1VfTEVOOworICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPmF1dGhLZXkpOworICAgICAgICAgICAgdXNlci0+YXV0aEtleSA9ICh1X2NoYXIgKiltYWxsb2MoYnVmbGVuKTsgLyogbWF4IGxlbmd0aCBuZWVkZWQgKi8KKyAgICAgICAgICAgIHVzZXItPmF1dGhLZXlMZW4gPSAwOworICAgICAgICAgICAgLyogaXQgd2lsbCBiZSBhIGhleCBzdHJpbmcgKi8KKyAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ1c2VyLT5hdXRoS2V5LCAmYnVmbGVuLCAmdXNlci0+YXV0aEtleUxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGNwKSkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjb3B5IGluIHRoZSBwcml2YWN5IEtleS4gIElmIG5vdCBsb2NhbGl6ZWQsIGxvY2FsaXplIGl0IAorICAgICAqLworICAgIGlmICh1c2VyLT5wcml2S2V5ID09IE5VTEwpIHsKKyAgICAgICAgaWYgKHNlc3Npb24tPnNlY3VyaXR5UHJpdkxvY2FsS2V5ICE9IE5VTEwKKyAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5UHJpdkxvY2FsS2V5TGVuICE9IDApIHsKKyAgICAgICAgICAgIC8qIGFscmVhZHkgbG9jYWxpemVkIGtleSBwYXNzZWQgaW4uICB1c2UgaXQgKi8KKyAgICAgICAgICAgIFNOTVBfRlJFRSh1c2VyLT5wcml2S2V5KTsKKyAgICAgICAgICAgIHVzZXItPnByaXZLZXkgPSBuZXRzbm1wX21lbWR1cChzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleUxlbik7CisgICAgICAgICAgICBpZiAoIXVzZXItPnByaXZLZXkpIHsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4gPSBzZXNzaW9uLT5zZWN1cml0eVByaXZMb2NhbEtleUxlbjsKKyAgICAgICAgfSBlbHNlIGlmIChzZXNzaW9uLT5zZWN1cml0eVByaXZLZXkgIT0gTlVMTAorICAgICAgICAgICAgICAgICAgICYmIHNlc3Npb24tPnNlY3VyaXR5UHJpdktleUxlbiAhPSAwKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUodXNlci0+cHJpdktleSk7CisgICAgICAgICAgICB1c2VyLT5wcml2S2V5ID0gKHVfY2hhciAqKSBjYWxsb2MoMSwgVVNNX0xFTkdUSF9LVV9IQVNIQkxPQ0spOworICAgICAgICAgICAgaWYgKHVzZXItPnByaXZLZXkgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdXNlci0+cHJpdktleUxlbiA9IFVTTV9MRU5HVEhfS1VfSEFTSEJMT0NLOworICAgICAgICAgICAgaWYgKGdlbmVyYXRlX2t1bCh1c2VyLT5hdXRoUHJvdG9jb2wsIHVzZXItPmF1dGhQcm90b2NvbExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlQcml2S2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eVByaXZLZXlMZW4sIHVzZXItPnByaXZLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ1c2VyLT5wcml2S2V5TGVuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKHVzZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgoY3AgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfUFJJVkxPQ0FMSVpFREtFWSkpKSB7CisgICAgICAgICAgICBzaXplX3QgYnVmbGVuID0gVVNNX1BSSVZfS1VfTEVOOworICAgICAgICAgICAgU05NUF9GUkVFKHVzZXItPnByaXZLZXkpOworICAgICAgICAgICAgdXNlci0+cHJpdktleSA9ICh1X2NoYXIgKiltYWxsb2MoYnVmbGVuKTsgLyogbWF4IGxlbmd0aCBuZWVkZWQgKi8KKyAgICAgICAgICAgIHVzZXItPnByaXZLZXlMZW4gPSAwOworICAgICAgICAgICAgLyogaXQgd2lsbCBiZSBhIGhleCBzdHJpbmcgKi8KKyAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ1c2VyLT5wcml2S2V5LCAmYnVmbGVuLCAmdXNlci0+cHJpdktleUxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGNwKSkgeworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIodXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHVzZXJfanVzdF9jcmVhdGVkKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGFkZCB0aGUgdXNlciBpbnRvIHRoZSBkYXRhYmFzZSAKKyAgICAgICAgICovCisgICAgICAgIHVzZXItPnVzZXJTdGF0dXMgPSBSU19BQ1RJVkU7CisgICAgICAgIHVzZXItPnVzZXJTdG9yYWdlVHlwZSA9IFNUX1JFQURPTkxZOworICAgICAgICB1c21fYWRkX3VzZXIodXNlcik7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKworCit9CisKKy8qIEEgd3JhcHBlciBhcm91bmQgdGhlIGhvb2sgKi8KK2ludAordXNtX2NyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbl9ob29rKHZvaWQgKnNscCwgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKQoreworICAgIERFQlVHTVNHVEwoKCJ1c20iLCAicG90ZW50aWFsbHkgYm9vdHN0cmFwcGluZyB0aGUgVVNNIHRhYmxlIGZyb20gc2Vzc2lvbiBkYXRhXG4iKSk7CisgICAgcmV0dXJuIHVzbV9jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb24oc2Vzc2lvbik7Cit9CisKK3N0YXRpYyBpbnQKK3VzbV9idWlsZF9wcm9iZV9wZHUobmV0c25tcF9wZHUgKipwZHUpCit7CisgICAgc3RydWN0IHVzbVVzZXIgKnVzZXI7CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSB0aGUgcGR1IAorICAgICAqLworICAgIGlmICghcGR1KQorICAgICAgICByZXR1cm4gLTE7CisgICAgKnBkdSA9IHNubXBfcGR1X2NyZWF0ZShTTk1QX01TR19HRVQpOworICAgIGlmICghKCpwZHUpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgKCpwZHUpLT52ZXJzaW9uID0gU05NUF9WRVJTSU9OXzM7CisgICAgKCpwZHUpLT5zZWN1cml0eU5hbWUgPSBzdHJkdXAoIiIpOworICAgICgqcGR1KS0+c2VjdXJpdHlOYW1lTGVuID0gc3RybGVuKCgqcGR1KS0+c2VjdXJpdHlOYW1lKTsKKyAgICAoKnBkdSktPnNlY3VyaXR5TGV2ZWwgPSBTTk1QX1NFQ19MRVZFTF9OT0FVVEg7CisgICAgKCpwZHUpLT5zZWN1cml0eU1vZGVsID0gU05NUF9TRUNfTU9ERUxfVVNNOworCisgICAgLyoKKyAgICAgKiBjcmVhdGUgdGhlIGVtcHR5IHVzZXIgCisgICAgICovCisgICAgdXNlciA9IHVzbV9nZXRfdXNlcihOVUxMLCAwLCAoKnBkdSktPnNlY3VyaXR5TmFtZSk7CisgICAgaWYgKHVzZXIgPT0gTlVMTCkgeworICAgICAgICB1c2VyID0gKHN0cnVjdCB1c21Vc2VyICopIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHVzbVVzZXIpKTsKKyAgICAgICAgaWYgKHVzZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcF9mcmVlX3BkdSgqcGR1KTsKKyAgICAgICAgICAgICpwZHUgPSAobmV0c25tcF9wZHUgKikgTlVMTDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICB1c2VyLT5uYW1lID0gc3RyZHVwKCgqcGR1KS0+c2VjdXJpdHlOYW1lKTsKKyAgICAgICAgdXNlci0+c2VjTmFtZSA9IHN0cmR1cCgoKnBkdSktPnNlY3VyaXR5TmFtZSk7CisgICAgICAgIHVzZXItPmF1dGhQcm90b2NvbExlbiA9IHNpemVvZih1c21Ob0F1dGhQcm90b2NvbCkgLyBzaXplb2Yob2lkKTsKKyAgICAgICAgdXNlci0+YXV0aFByb3RvY29sID0KKyAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHVzbU5vQXV0aFByb3RvY29sLCB1c2VyLT5hdXRoUHJvdG9jb2xMZW4pOworICAgICAgICB1c2VyLT5wcml2UHJvdG9jb2xMZW4gPSBzaXplb2YodXNtTm9Qcml2UHJvdG9jb2wpIC8gc2l6ZW9mKG9pZCk7CisgICAgICAgIHVzZXItPnByaXZQcm90b2NvbCA9CisgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZCh1c21Ob1ByaXZQcm90b2NvbCwgdXNlci0+cHJpdlByb3RvY29sTGVuKTsKKyAgICAgICAgdXNtX2FkZF91c2VyKHVzZXIpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworaW50IHVzbV9kaXNjb3Zlcl9lbmdpbmVpZCh2b2lkICpzbHB2LCBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pIHsKKyAgICBuZXRzbm1wX3BkdSAgICAqcGR1ID0gTlVMTCwgKnJlc3BvbnNlID0gTlVMTDsKKyAgICBpbnQgc3RhdHVzLCBpOworICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKnNscCA9IChzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICopIHNscHY7CisKKyAgICBpZiAodXNtX2J1aWxkX3Byb2JlX3BkdSgmcGR1KSAhPSAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsICJ1bmFibGUgdG8gY3JlYXRlIHByb2JlIFBEVVxuIikpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKyAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAicHJvYmluZyBmb3IgZW5naW5lSUQuLi5cbiIpKTsKKyAgICBzZXNzaW9uLT5mbGFncyB8PSBTTk1QX0ZMQUdTX0RPTlRfUFJPQkU7IC8qIHByZXZlbnQgcmVjdXJzaW9uICovCisgICAgc3RhdHVzID0gc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlKHNscCwgcGR1LCAmcmVzcG9uc2UpOworCisgICAgaWYgKChyZXNwb25zZSA9PSBOVUxMKSAmJiAoc3RhdHVzID09IFNUQVRfU1VDQ0VTUykpIHsKKyAgICAgICAgc3RhdHVzID0gU1RBVF9FUlJPUjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgU1RBVF9TVUNDRVNTOgorICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX0lOVkFMSURfTVNHOyAvKiBYWD8/ICovCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCisgICAgICAgICAgICAgICAgICAgICJlcnJvcjogZXhwZWN0ZWQgUmVwb3J0IGFzIHJlc3BvbnNlIHRvIHByb2JlOiAlcyAoJWxkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgc25tcF9lcnJzdHJpbmcocmVzcG9uc2UtPmVycnN0YXQpLAorICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+ZXJyc3RhdCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNUQVRfRVJST1I6ICAgLyogdGhpcyBpcyB3aGF0IHdlIGV4cGVjdGVkIC0+IFJlcG9ydCA9PSBTVEFUX0VSUk9SICovCisgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9FTkdfSUQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU1RBVF9USU1FT1VUOgorICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1RJTUVPVVQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCisgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gY29ubmVjdCB3aXRoIHJlbW90ZSBlbmdpbmU6ICVzICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHNubXBfYXBpX2VycnN0cmluZyhzZXNzaW9uLT5zX3NubXBfZXJybm8pLAorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8pKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHNscC0+c2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsCisgICAgICAgICAgICAgICAgICAgICJ1bmFibGUgdG8gZGV0ZXJtaW5lIHJlbW90ZSBlbmdpbmUgSURcbiIpKTsKKyAgICAgICAgLyogY2xlYXIgdGhlIGZsYWcgc28gdGhhdCBwcm9iZSBvY2N1cnMgb24gbmV4dCBpbmZvcm0gKi8KKyAgICAgICAgc2Vzc2lvbi0+ZmxhZ3MgJj0gflNOTVBfRkxBR1NfRE9OVF9QUk9CRTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1NVQ0NFU1M7CisgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCisgICAgICAgICAgICAgICAgICAgICIgIHByb2JlIGZvdW5kIGVuZ2luZUlEOiAgIikpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2xwLT5zZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuOyBpKyspCisgICAgICAgICAgICBERUJVR01TRygoInNubXBfc2Vzc19vcGVuIiwgIiUwMngiLAorICAgICAgICAgICAgICAgICAgICAgIHNscC0+c2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRFtpXSkpOworICAgICAgICBERUJVR01TRygoInNubXBfc2Vzc19vcGVuIiwgIlxuIikpOworICAgIH0KKworICAgIC8qCisgICAgICogaWYgYm9vdC90aW1lIHN1cHBsaWVkIHNldCBpdCBmb3IgdGhpcyBlbmdpbmVJRCAKKyAgICAgKi8KKyAgICBpZiAoc2Vzc2lvbi0+ZW5naW5lQm9vdHMgfHwgc2Vzc2lvbi0+ZW5naW5lVGltZSkgeworICAgICAgICBzZXRfZW5naW5ldGltZShzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlELAorICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLT5lbmdpbmVCb290cywgc2Vzc2lvbi0+ZW5naW5lVGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgVFJVRSk7CisgICAgfQorICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7Cit9CisKIHZvaWQKIGluaXRfdXNtKHZvaWQpCiB7CiAgICAgc3RydWN0IHNubXBfc2VjbW9kX2RlZiAqZGVmOworICAgIGNoYXIgKnR5cGU7CiAKICAgICBERUJVR01TR1RMKCgiaW5pdF91c20iLCAidW5pdF91c206ICUiIE5FVFNOTVBfUFJJbyAidSAlIiBORVRTTk1QX1BSSW8gInVcbiIsCiAgICAgICAgICAgICAgICAgdXNtTm9Qcml2UHJvdG9jb2xbMF0sIHVzbU5vUHJpdlByb3RvY29sWzFdKSk7CkBAIC0yODgyLDYgKzMyMTksOCBAQAogICAgIGRlZi0+cGR1X2ZyZWVfc3RhdGVfcmVmID0gdXNtX2ZyZWVfdXNtU3RhdGVSZWZlcmVuY2U7CiAgICAgZGVmLT5zZXNzaW9uX3NldHVwID0gdXNtX3Nlc3Npb25faW5pdDsKICAgICBkZWYtPmhhbmRsZV9yZXBvcnQgPSB1c21faGFuZGxlX3JlcG9ydDsKKyAgICBkZWYtPnByb2JlX2VuZ2luZWlkID0gdXNtX2Rpc2NvdmVyX2VuZ2luZWlkOworICAgIGRlZi0+cG9zdF9wcm9iZV9lbmdpbmVpZCA9IHVzbV9jcmVhdGVfdXNlcl9mcm9tX3Nlc3Npb25faG9vazsKICAgICByZWdpc3Rlcl9zZWNfbW9kKFVTTV9TRUNfTU9ERUxfTlVNQkVSLCAidXNtIiwgZGVmKTsKIAogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLApAQCAtMjg5Niw2ICszMjM1LDM5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NIVVRET1dOLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9lbmdpbmVJRCwgTlVMTCk7CiAKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcCIsICJkZWZBdXRoVHlwZSIsIHNubXB2M19hdXRodHlwZV9jb25mLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICJNRDV8U0hBIik7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiZGVmUHJpdlR5cGUiLCBzbm1wdjNfcHJpdnR5cGVfY29uZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorI2lmZGVmIEhBVkVfQUVTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFU3xBRVMiCisjZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERVMgKEFFUyBzdXBwb3J0IG5vdCBhdmFpbGFibGUpIgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisgICAgLyoKKyAgICAgKiBGcmVlIHN0dWZmIGF0IHNodXRkb3duIHRpbWUKKyAgICAgKi8KKyAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfU0hVVERPV04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlX2VuZ2luZXRpbWVfb25fc2h1dGRvd24sIE5VTEwpOworCisKKyAgICB0eXBlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfQVBQVFlQRSk7CisKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhQYXNzIiwgdXNtX3NldF9wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldFByaXZQYXNzIiwgdXNtX3NldF9wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKyAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdktleSIsIHVzbV9zZXRfcGFzc3dvcmQsIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIodHlwZSwgInVzZXJTZXRBdXRoTG9jYWxLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOworICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdkxvY2FsS2V5IiwgdXNtX3NldF9wYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKIH0KIAogdm9pZApAQCAtMzAwNCw2ICszMzc2LDEzIEBACiAKIH0KIAordm9pZAorc2h1dGRvd25fdXNtKHZvaWQpCit7CisgICAgZnJlZV9ldGltZWxpc3QoKTsKKyAgICBjbGVhcl91c2VyX2xpc3QoKTsKK30KKwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKICAqIHVzbV9jaGVja19zZWNMZXZlbAogICoKQEAgLTM0MDksNiArMzc4OCw3IEBACiAKIAogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogLyoKICAqIHRha2UgYSBnaXZlbiB1c2VyIGFuZCBjbG9uZSB0aGUgc2VjdXJpdHkgaW5mbyBpbnRvIGFub3RoZXIgCiAgKi8KQEAgLTM0NzIsNiArMzg1Miw3IEBACiAgICAgfQogICAgIHJldHVybiB0bzsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KIAogLyoKICAqIHVzbV9jcmVhdGVfdXNlcih2b2lkKToKQEAgLTM5MzcsMyArNDMxOCwzNTUgQEAKICAgICAgICAgfQogICAgIH0KIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHVzbV9zZXRfcGFzc3dvcmQoKSAqLworCit2b2lkCit1c21fcGFyc2VfY3JlYXRlX3VzbVVzZXIoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCit7CisgICAgY2hhciAgICAgICAgICAgKmNwOworICAgIGNoYXIgICAgICAgICAgICBidWZbU05NUF9NQVhCVUZfTUVESVVNXTsKKyAgICBzdHJ1Y3QgdXNtVXNlciAqbmV3dXNlcjsKKyAgICB1X2NoYXIgICAgICAgICAgdXNlcktleVtTTk1QX01BWEJVRl9TTUFMTF0sICp0bXBwOworICAgIHNpemVfdCAgICAgICAgICB1c2VyS2V5TGVuID0gU05NUF9NQVhCVUZfU01BTEw7CisgICAgc2l6ZV90ICAgICAgICAgIHByaXZLZXlMZW4gPSAwOworICAgIHNpemVfdCAgICAgICAgICByZXQ7CisgICAgaW50ICAgICAgICAgICAgIHJldDI7CisgICAgaW50ICAgICAgICAgICAgIHRlc3RjYXNlOworCisgICAgbmV3dXNlciA9IHVzbV9jcmVhdGVfdXNlcigpOworCisgICAgLyoKKyAgICAgKiBSRUFEOiBTZWN1cml0eSBOYW1lIAorICAgICAqLworICAgIGNwID0gY29weV9ud29yZChsaW5lLCBidWYsIHNpemVvZihidWYpKTsKKworICAgIC8qCisgICAgICogbWlnaHQgYmUgYSAtZSBFTkdJTkVJRCBhcmd1bWVudCAKKyAgICAgKi8KKyAgICBpZiAoc3RyY21wKGJ1ZiwgIi1lIikgPT0gMCkgeworICAgICAgICBzaXplX3QgICAgICAgICAgZWJ1Zl9sZW4gPSAzMiwgZW91dF9sZW4gPSAwOworICAgICAgICB1X2NoYXIgICAgICAgICAqZWJ1ZiA9ICh1X2NoYXIgKikgbWFsbG9jKGVidWZfbGVuKTsKKworICAgICAgICBpZiAoZWJ1ZiA9PSBOVUxMKSB7CisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJtYWxsb2MgZmFpbHVyZSBwcm9jZXNzaW5nIC1lIGZsYWciKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBHZXQgdGhlIHNwZWNpZmllZCBlbmdpbmVpZCBmcm9tIHRoZSBsaW5lLiAgCisgICAgICAgICAqLworICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmZWJ1ZiwgJmVidWZfbGVuLCAmZW91dF9sZW4sIDEsIGJ1ZikpIHsKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQgRW5naW5lSUQgYXJndW1lbnQgdG8gLWUiKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICBTTk1QX0ZSRUUoZWJ1Zik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRCA9IGVidWY7CisgICAgICAgIG5ld3VzZXItPmVuZ2luZUlETGVuID0gZW91dF9sZW47CisgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbmV3dXNlci0+ZW5naW5lSUQgPSBzbm1wdjNfZ2VuZXJhdGVfZW5naW5lSUQoJnJldCk7CisgICAgICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRExlbiA9IHJldDsKKyAgICB9CisKKyAgICBuZXd1c2VyLT5zZWNOYW1lID0gc3RyZHVwKGJ1Zik7CisgICAgbmV3dXNlci0+bmFtZSA9IHN0cmR1cChidWYpOworCisgICAgaWYgKCFjcCkKKyAgICAgICAgZ290byBhZGQ7ICAgICAgICAgICAgICAgLyogbm8gYXV0aGVudGljYXRpb24gb3IgcHJpdmFjeSB0eXBlICovCisKKyAgICAvKgorICAgICAqIFJFQUQ6IEF1dGhlbnRpY2F0aW9uIFR5cGUgCisgICAgICovCisjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NRDUKKyAgICBpZiAoc3RybmNtcChjcCwgIk1ENSIsIDMpID09IDApIHsKKyAgICAgICAgbWVtY3B5KG5ld3VzZXItPmF1dGhQcm90b2NvbCwgdXNtSE1BQ01ENUF1dGhQcm90b2NvbCwKKyAgICAgICAgICAgICAgIHNpemVvZih1c21ITUFDTUQ1QXV0aFByb3RvY29sKSk7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICAgICAgaWYgKHN0cm5jbXAoY3AsICJTSEEiLCAzKSA9PSAwKSB7CisgICAgICAgIG1lbWNweShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIHVzbUhNQUNTSEExQXV0aFByb3RvY29sLAorICAgICAgICAgICAgICAgc2l6ZW9mKHVzbUhNQUNTSEExQXV0aFByb3RvY29sKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigiVW5rbm93biBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCIpOworICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY3AgPSBza2lwX3Rva2VuKGNwKTsKKworICAgIC8qCisgICAgICogUkVBRDogQXV0aGVudGljYXRpb24gUGFzcyBQaHJhc2Ugb3Iga2V5CisgICAgICovCisgICAgaWYgKCFjcCkgeworICAgICAgICBjb25maWdfcGVycm9yKCJubyBhdXRoZW50aWNhdGlvbiBwYXNzIHBocmFzZSIpOworICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgaWYgKHN0cmNtcChidWYsIi1tIikgPT0gMCkgeworICAgICAgICAvKiBhIG1hc3RlciBrZXkgaXMgc3BlY2lmaWVkICovCisgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIHJldCA9IHNpemVvZih1c2VyS2V5KTsKKyAgICAgICAgdG1wcCA9IHVzZXJLZXk7CisgICAgICAgIHVzZXJLZXlMZW4gPSAwOworICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmdG1wcCwgJnJldCwgJnVzZXJLZXlMZW4sIDAsIGJ1ZikpIHsKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1tIik7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChzdHJjbXAoYnVmLCItbCIpICE9IDApIHsKKyAgICAgICAgLyogYSBwYXNzd29yZCBpcyBzcGVjaWZpZWQgKi8KKyAgICAgICAgdXNlcktleUxlbiA9IHNpemVvZih1c2VyS2V5KTsKKyAgICAgICAgcmV0MiA9IGdlbmVyYXRlX0t1KG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIGJ1Ziwgc3RybGVuKGJ1ZiksIHVzZXJLZXksICZ1c2VyS2V5TGVuKTsKKyAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2VuZXJhdGUgdGhlIGF1dGhlbnRpY2F0aW9uIGtleSBmcm9tIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwbGllZCBwYXNzIHBocmFzZS4iKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9ICAgICAgICAKKyAgICAgICAgCisgICAgLyoKKyAgICAgKiBBbmQgdHVybiBpdCBpbnRvIGEgbG9jYWxpemVkIGtleSAKKyAgICAgKi8KKyAgICByZXQyID0gc2NfZ2V0X3Byb3Blcmxlbmd0aChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuKTsKKyAgICBpZiAocmV0MiA8PSAwKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoIkNvdWxkIG5vdCBnZXQgcHJvcGVyIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIGtleSBsZW5ndGgiKTsKKwl1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG5ld3VzZXItPmF1dGhLZXkgPSAodV9jaGFyICopIG1hbGxvYyhyZXQyKTsKKworICAgIGlmIChzdHJjbXAoYnVmLCItbCIpID09IDApIHsKKyAgICAgICAgLyogYSBsb2NhbCBrZXkgaXMgZGlyZWN0bHkgc3BlY2lmaWVkICovCisgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIG5ld3VzZXItPmF1dGhLZXlMZW4gPSAwOworICAgICAgICByZXQgPSByZXQyOworICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmbmV3dXNlci0+YXV0aEtleSwgJnJldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld3VzZXItPmF1dGhLZXlMZW4sIDAsIGJ1ZikpIHsKKyAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1sIik7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChyZXQgIT0gbmV3dXNlci0+YXV0aEtleUxlbikgeworICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiaW1wcm9wZXIga2V5IGxlbmd0aCB0byAtbCIpOworICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG5ld3VzZXItPmF1dGhLZXlMZW4gPSByZXQyOworICAgICAgICByZXQyID0gZ2VuZXJhdGVfa3VsKG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+ZW5naW5lSUQsIG5ld3VzZXItPmVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcktleSwgdXNlcktleUxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmF1dGhLZXksICZuZXd1c2VyLT5hdXRoS2V5TGVuKTsKKyAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2VuZXJhdGUgbG9jYWxpemVkIGF1dGhlbnRpY2F0aW9uIGtleSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICIoS3VsKSBmcm9tIHRoZSBtYXN0ZXIga2V5IChLdSkuIik7CisgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFjcCkKKyAgICAgICAgZ290byBhZGQ7ICAgICAgICAgICAgICAgLyogbm8gcHJpdmFjeSB0eXBlICh3aGljaCBpcyBsZWdhbCkgKi8KKworICAgIC8qCisgICAgICogUkVBRDogUHJpdmFjeSBUeXBlIAorICAgICAqLworICAgIHRlc3RjYXNlID0gMDsKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX0RFUworICAgIGlmIChzdHJuY21wKGNwLCAiREVTIiwgMykgPT0gMCkgeworICAgICAgICBtZW1jcHkobmV3dXNlci0+cHJpdlByb3RvY29sLCB1c21ERVNQcml2UHJvdG9jb2wsCisgICAgICAgICAgICAgICBzaXplb2YodXNtREVTUHJpdlByb3RvY29sKSk7CisgICAgICAgIHRlc3RjYXNlID0gMTsKKwkvKiBERVMgdXNlcyBhIDEyOCBiaXQga2V5LCA2NCBiaXRzIG9mIHdoaWNoIGlzIGEgc2FsdCAqLworCXByaXZLZXlMZW4gPSAxNjsKKyAgICB9CisjZW5kaWYKKyNpZmRlZiBIQVZFX0FFUworICAgIGlmIChzdHJuY21wKGNwLCAiQUVTMTI4IiwgNikgPT0gMCB8fAorICAgICAgICAgICAgICAgc3RybmNtcChjcCwgIkFFUyIsIDMpID09IDApIHsKKyAgICAgICAgbWVtY3B5KG5ld3VzZXItPnByaXZQcm90b2NvbCwgdXNtQUVTUHJpdlByb3RvY29sLAorICAgICAgICAgICAgICAgc2l6ZW9mKHVzbUFFU1ByaXZQcm90b2NvbCkpOworICAgICAgICB0ZXN0Y2FzZSA9IDE7CisJcHJpdktleUxlbiA9IDE2OworICAgIH0KKyNlbmRpZgorICAgIGlmICh0ZXN0Y2FzZSA9PSAwKSB7CisgICAgICAgIGNvbmZpZ19wZXJyb3IoIlVua25vd24gcHJpdmFjeSBwcm90b2NvbCIpOworICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY3AgPSBza2lwX3Rva2VuKGNwKTsKKyAgICAvKgorICAgICAqIFJFQUQ6IEVuY3J5cHRpb24gUGFzcyBQaHJhc2Ugb3Iga2V5CisgICAgICovCisgICAgaWYgKCFjcCkgeworICAgICAgICAvKgorICAgICAgICAgKiBhc3N1bWUgdGhlIHNhbWUgYXMgdGhlIGF1dGhlbnRpY2F0aW9uIGtleSAKKyAgICAgICAgICovCisgICAgICAgIG5ld3VzZXItPnByaXZLZXkgPSBuZXRzbm1wX21lbWR1cChuZXd1c2VyLT5hdXRoS2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dXNlci0+YXV0aEtleUxlbik7CisgICAgICAgIG5ld3VzZXItPnByaXZLZXlMZW4gPSBuZXd1c2VyLT5hdXRoS2V5TGVuOworICAgIH0gZWxzZSB7CisgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgICAgIAorICAgICAgICBpZiAoc3RyY21wKGJ1ZiwiLW0iKSA9PSAwKSB7CisgICAgICAgICAgICAvKiBhIG1hc3RlciBrZXkgaXMgc3BlY2lmaWVkICovCisgICAgICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICAgICAgcmV0ID0gc2l6ZW9mKHVzZXJLZXkpOworICAgICAgICAgICAgdG1wcCA9IHVzZXJLZXk7CisgICAgICAgICAgICB1c2VyS2V5TGVuID0gMDsKKyAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZ0bXBwLCAmcmV0LCAmdXNlcktleUxlbiwgMCwgYnVmKSkgeworICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImludmFsaWQga2V5IHZhbHVlIGFyZ3VtZW50IHRvIC1tIik7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGJ1ZiwiLWwiKSAhPSAwKSB7CisgICAgICAgICAgICAvKiBhIHBhc3N3b3JkIGlzIHNwZWNpZmllZCAqLworICAgICAgICAgICAgdXNlcktleUxlbiA9IHNpemVvZih1c2VyS2V5KTsKKyAgICAgICAgICAgIHJldDIgPSBnZW5lcmF0ZV9LdShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgYnVmLCBzdHJsZW4oYnVmKSwgdXNlcktleSwgJnVzZXJLZXlMZW4pOworICAgICAgICAgICAgaWYgKHJldDIgIT0gU05NUEVSUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdlbmVyYXRlIHRoZSBwcml2YWN5IGtleSBmcm9tIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcGxpZWQgcGFzcyBwaHJhc2UuIik7CisgICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgICAgIAorICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogQW5kIHR1cm4gaXQgaW50byBhIGxvY2FsaXplZCBrZXkgCisgICAgICAgICAqLworICAgICAgICByZXQyID0gc2NfZ2V0X3Byb3Blcmxlbmd0aChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbik7CisgICAgICAgIGlmIChyZXQyIDwgMCkgeworICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdldCBwcm9wZXIga2V5IGxlbmd0aCB0byB1c2UgZm9yIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJwcml2YWN5IGFsZ29yaXRobS4iKTsKKyAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbmV3dXNlci0+cHJpdktleSA9ICh1X2NoYXIgKikgbWFsbG9jKHJldDIpOworCisgICAgICAgIGlmIChzdHJjbXAoYnVmLCItbCIpID09IDApIHsKKyAgICAgICAgICAgIC8qIGEgbG9jYWwga2V5IGlzIGRpcmVjdGx5IHNwZWNpZmllZCAqLworICAgICAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKKyAgICAgICAgICAgIHJldCA9IHJldDI7CisgICAgICAgICAgICBuZXd1c2VyLT5wcml2S2V5TGVuID0gMDsKKyAgICAgICAgICAgIGlmICghc25tcF9oZXhfdG9fYmluYXJ5KCZuZXd1c2VyLT5wcml2S2V5LCAmcmV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld3VzZXItPnByaXZLZXlMZW4sIDAsIGJ1ZikpIHsKKyAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIGtleSB2YWx1ZSBhcmd1bWVudCB0byAtbCIpOworICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV3dXNlci0+cHJpdktleUxlbiA9IHJldDI7CisgICAgICAgICAgICByZXQyID0gZ2VuZXJhdGVfa3VsKG5ld3VzZXItPmF1dGhQcm90b2NvbCwgbmV3dXNlci0+YXV0aFByb3RvY29sTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmVuZ2luZUlELCBuZXd1c2VyLT5lbmdpbmVJRExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyS2V5LCB1c2VyS2V5TGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPnByaXZLZXksICZuZXd1c2VyLT5wcml2S2V5TGVuKTsKKyAgICAgICAgICAgIGlmIChyZXQyICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImNvdWxkIG5vdCBnZW5lcmF0ZSBsb2NhbGl6ZWQgcHJpdmFjeSBrZXkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihLdWwpIGZyb20gdGhlIG1hc3RlciBrZXkgKEt1KS4iKTsKKyAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICgobmV3dXNlci0+cHJpdktleUxlbiA+PSBwcml2S2V5TGVuKSB8fCAocHJpdktleUxlbiA9PSAwKSl7CisgICAgICBuZXd1c2VyLT5wcml2S2V5TGVuID0gcHJpdktleUxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvKiBUaGUgcHJpdktleSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHJlcXVpcmVkIGJ5IHByaXZQcm90b2NvbCAqLworICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisKKyAgYWRkOgorICAgIHVzbV9hZGRfdXNlcihuZXd1c2VyKTsKKyAgICBERUJVR01TR1RMKCgidXNtVXNlciIsICJjcmVhdGVkIGEgbmV3IHVzZXIgJXMgYXQgIiwgbmV3dXNlci0+c2VjTmFtZSkpOworICAgIERFQlVHTVNHSEVYKCgidXNtVXNlciIsIG5ld3VzZXItPmVuZ2luZUlELCBuZXd1c2VyLT5lbmdpbmVJRExlbikpOworICAgIERFQlVHTVNHKCgidXNtVXNlciIsICJcbiIpKTsKK30KKwordm9pZAorc25tcHYzX2F1dGh0eXBlX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cikKK3sKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01ENQorICAgIGlmIChzdHJjYXNlY21wKGNwdHIsICJNRDUiKSA9PSAwKQorICAgICAgICBkZWZhdWx0QXV0aFR5cGUgPSB1c21ITUFDTUQ1QXV0aFByb3RvY29sOworICAgIGVsc2UKKyNlbmRpZgorICAgICAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiU0hBIikgPT0gMCkKKyAgICAgICAgZGVmYXVsdEF1dGhUeXBlID0gdXNtSE1BQ1NIQTFBdXRoUHJvdG9jb2w7CisgICAgZWxzZQorICAgICAgICBjb25maWdfcGVycm9yKCJVbmtub3duIGF1dGhlbnRpY2F0aW9uIHR5cGUiKTsKKyAgICBkZWZhdWx0QXV0aFR5cGVMZW4gPSBVU01fTEVOR1RIX09JRF9UUkFOU0ZPUk07CisgICAgREVCVUdNU0dUTCgoInNubXB2MyIsICJzZXQgZGVmYXVsdCBhdXRoZW50aWNhdGlvbiB0eXBlOiAlc1xuIiwgY3B0cikpOworfQorCitjb25zdCBvaWQgICAgICAqCitnZXRfZGVmYXVsdF9hdXRodHlwZShzaXplX3QgKiBsZW4pCit7CisgICAgaWYgKGRlZmF1bHRBdXRoVHlwZSA9PSBOVUxMKSB7CisgICAgICAgIGRlZmF1bHRBdXRoVHlwZSA9IFNOTVBfREVGQVVMVF9BVVRIX1BST1RPOworICAgICAgICBkZWZhdWx0QXV0aFR5cGVMZW4gPSBTTk1QX0RFRkFVTFRfQVVUSF9QUk9UT0xFTjsKKyAgICB9CisgICAgaWYgKGxlbikKKyAgICAgICAgKmxlbiA9IGRlZmF1bHRBdXRoVHlwZUxlbjsKKyAgICByZXR1cm4gZGVmYXVsdEF1dGhUeXBlOworfQorCit2b2lkCitzbm1wdjNfcHJpdnR5cGVfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKQoreworICAgIGludCB0ZXN0Y2FzZSA9IDA7CisKKyNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX0RFUworICAgIGlmIChzdHJjYXNlY21wKGNwdHIsICJERVMiKSA9PSAwKSB7CisgICAgICAgIHRlc3RjYXNlID0gMTsKKyAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtREVTUHJpdlByb3RvY29sOworICAgIH0KKyNlbmRpZgorCisjaWYgSEFWRV9BRVMKKyAgICAvKiBYWFggQUVTOiBhc3N1bWVzIG9pZCBsZW5ndGggPT0gZGVzIG9pZCBsZW5ndGggKi8KKyAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiQUVTMTI4IikgPT0gMCB8fAorICAgICAgICBzdHJjYXNlY21wKGNwdHIsICJBRVMiKSA9PSAwKSB7CisgICAgICAgIHRlc3RjYXNlID0gMTsKKyAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtQUVTMTI4UHJpdlByb3RvY29sOworICAgIH0KKyNlbmRpZgorICAgIGlmICh0ZXN0Y2FzZSA9PSAwKQorICAgICAgICBjb25maWdfcGVycm9yKCJVbmtub3duIHByaXZhY3kgdHlwZSIpOworICAgIGRlZmF1bHRQcml2VHlwZUxlbiA9IFNOTVBfREVGQVVMVF9QUklWX1BST1RPTEVOOworICAgIERFQlVHTVNHVEwoKCJzbm1wdjMiLCAic2V0IGRlZmF1bHQgcHJpdmFjeSB0eXBlOiAlc1xuIiwgY3B0cikpOworfQorCitjb25zdCBvaWQgICAgICAqCitnZXRfZGVmYXVsdF9wcml2dHlwZShzaXplX3QgKiBsZW4pCit7CisgICAgaWYgKGRlZmF1bHRQcml2VHlwZSA9PSBOVUxMKSB7CisjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKKyAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtREVTUHJpdlByb3RvY29sOworI2Vsc2UKKyAgICAgICAgZGVmYXVsdFByaXZUeXBlID0gdXNtQUVTUHJpdlByb3RvY29sOworI2VuZGlmCisgICAgICAgIGRlZmF1bHRQcml2VHlwZUxlbiA9IFVTTV9MRU5HVEhfT0lEX1RSQU5TRk9STTsKKyAgICB9CisgICAgaWYgKGxlbikKKyAgICAgICAgKmxlbiA9IGRlZmF1bHRQcml2VHlwZUxlbjsKKyAgICByZXR1cm4gZGVmYXVsdFByaXZUeXBlOworfQorCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXB2My5jIGIvc25tcGxpYi9zbm1wdjMuYwppbmRleCA4YjQ5MzYyLi40MzVjYWZkIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXB2My5jCisrKyBiL3NubXBsaWIvc25tcHYzLmMKQEAgLTc1LDYgKzc1LDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgorCiBzdGF0aWMgdV9sb25nICAgZW5naW5lQm9vdHMgPSAxOwogc3RhdGljIHVuc2lnbmVkIGludCBlbmdpbmVJRFR5cGUgPSBFTkdJTkVJRF9UWVBFX05FVFNOTVBfUk5EOwogc3RhdGljIHVuc2lnbmVkIGNoYXIgKmVuZ2luZUlEID0gTlVMTDsKQEAgLTg1LDEwMCArODcsMTAgQEAKIHN0YXRpYyBzaXplX3QgICBvbGRFbmdpbmVJRExlbmd0aCA9IDA7CiBzdGF0aWMgc3RydWN0IHRpbWV2YWwgc25tcHYzc3RhcnR0aW1lOwogCi0vKgotICogU2V0IHVwIGRlZmF1bHQgc25tcHYzIHBhcmFtZXRlciB2YWx1ZSBzdG9yYWdlLgotICovCi1zdGF0aWMgY29uc3Qgb2lkICpkZWZhdWx0QXV0aFR5cGUgPSBOVUxMOwotc3RhdGljIHNpemVfdCAgIGRlZmF1bHRBdXRoVHlwZUxlbiA9IDA7Ci1zdGF0aWMgY29uc3Qgb2lkICpkZWZhdWx0UHJpdlR5cGUgPSBOVUxMOwotc3RhdGljIHNpemVfdCAgIGRlZmF1bHRQcml2VHlwZUxlbiA9IDA7Ci0KLS8qIHRoaXMgaXMgcHJvYmFibHkgYW4gb3Zlci1raWxsIGlmZGVmLCBidXQgd2h5IG5vdCAqLwotI2lmIGRlZmluZWQoSEFWRV9TWVNfVElNRVNfSCkgJiYgZGVmaW5lZChIQVZFX1VOSVNURF9IKSAmJiBkZWZpbmVkKEhBVkVfVElNRVMpICYmIGRlZmluZWQoX1NDX0NMS19UQ0spICYmIGRlZmluZWQoSEFWRV9TWVNDT05GKSAmJiBkZWZpbmVkKFVJTlRfTUFYKQotCi0jZGVmaW5lIFNOTVBfVVNFX1RJTUVTIDEKLQotc3RhdGljIGNsb2NrX3Qgc25tcHYzc3RhcnRDbG9jazsKLXN0YXRpYyBsb25nIGNsb2NrdGlja3MgPSAwOwotc3RhdGljIHVuc2lnbmVkIGludCBsYXN0Y2FsbHRpbWUgPSAwOwotc3RhdGljIHVuc2lnbmVkIGludCB3cmFwY291bnRlciA9IDA7Ci0KLSNlbmRpZiAvKiB0aW1lcygpIHRlc3RzICovCi0KICNpZiBkZWZpbmVkKElGSFdBRERSTEVOKSAmJiBkZWZpbmVkKFNJT0NHSUZIV0FERFIpCiBzdGF0aWMgaW50ICAgICAgZ2V0SHdBZGRyZXNzKGNvbnN0IGNoYXIgKm5ldHdvcmtEZXZpY2UsIGNoYXIgKmFkZHJlc3NPdXQpOwogI2VuZGlmCiAKLXZvaWQKLXNubXB2M19hdXRodHlwZV9jb25mKGNvbnN0IGNoYXIgKndvcmQsIGNoYXIgKmNwdHIpCi17Ci0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NRDUKLSAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiTUQ1IikgPT0gMCkKLSAgICAgICAgZGVmYXVsdEF1dGhUeXBlID0gdXNtSE1BQ01ENUF1dGhQcm90b2NvbDsKLSAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgaWYgKHN0cmNhc2VjbXAoY3B0ciwgIlNIQSIpID09IDApCi0gICAgICAgIGRlZmF1bHRBdXRoVHlwZSA9IHVzbUhNQUNTSEExQXV0aFByb3RvY29sOwotICAgIGVsc2UKLSAgICAgICAgY29uZmlnX3BlcnJvcigiVW5rbm93biBhdXRoZW50aWNhdGlvbiB0eXBlIik7Ci0gICAgZGVmYXVsdEF1dGhUeXBlTGVuID0gVVNNX0xFTkdUSF9PSURfVFJBTlNGT1JNOwotICAgIERFQlVHTVNHVEwoKCJzbm1wdjMiLCAic2V0IGRlZmF1bHQgYXV0aGVudGljYXRpb24gdHlwZTogJXNcbiIsIGNwdHIpKTsKLX0KLQotY29uc3Qgb2lkICAgICAgKgotZ2V0X2RlZmF1bHRfYXV0aHR5cGUoc2l6ZV90ICogbGVuKQotewotICAgIGlmIChkZWZhdWx0QXV0aFR5cGUgPT0gTlVMTCkgewotICAgICAgICBkZWZhdWx0QXV0aFR5cGUgPSBTTk1QX0RFRkFVTFRfQVVUSF9QUk9UTzsKLSAgICAgICAgZGVmYXVsdEF1dGhUeXBlTGVuID0gU05NUF9ERUZBVUxUX0FVVEhfUFJPVE9MRU47Ci0gICAgfQotICAgIGlmIChsZW4pCi0gICAgICAgICpsZW4gPSBkZWZhdWx0QXV0aFR5cGVMZW47Ci0gICAgcmV0dXJuIGRlZmF1bHRBdXRoVHlwZTsKLX0KLQotdm9pZAotc25tcHYzX3ByaXZ0eXBlX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cikKLXsKLSAgICBpbnQgdGVzdGNhc2UgPSAwOwotCi0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKLSAgICBpZiAoc3RyY2FzZWNtcChjcHRyLCAiREVTIikgPT0gMCkgewotICAgICAgICB0ZXN0Y2FzZSA9IDE7Ci0gICAgICAgIGRlZmF1bHRQcml2VHlwZSA9IHVzbURFU1ByaXZQcm90b2NvbDsKLSAgICB9Ci0jZW5kaWYKLQotI2lmIEhBVkVfQUVTCi0gICAgLyogWFhYIEFFUzogYXNzdW1lcyBvaWQgbGVuZ3RoID09IGRlcyBvaWQgbGVuZ3RoICovCi0gICAgaWYgKHN0cmNhc2VjbXAoY3B0ciwgIkFFUzEyOCIpID09IDAgfHwKLSAgICAgICAgc3RyY2FzZWNtcChjcHRyLCAiQUVTIikgPT0gMCkgewotICAgICAgICB0ZXN0Y2FzZSA9IDE7Ci0gICAgICAgIGRlZmF1bHRQcml2VHlwZSA9IHVzbUFFUzEyOFByaXZQcm90b2NvbDsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAodGVzdGNhc2UgPT0gMCkKLSAgICAgICAgY29uZmlnX3BlcnJvcigiVW5rbm93biBwcml2YWN5IHR5cGUiKTsKLSAgICBkZWZhdWx0UHJpdlR5cGVMZW4gPSBTTk1QX0RFRkFVTFRfUFJJVl9QUk9UT0xFTjsKLSAgICBERUJVR01TR1RMKCgic25tcHYzIiwgInNldCBkZWZhdWx0IHByaXZhY3kgdHlwZTogJXNcbiIsIGNwdHIpKTsKLX0KLQotY29uc3Qgb2lkICAgICAgKgotZ2V0X2RlZmF1bHRfcHJpdnR5cGUoc2l6ZV90ICogbGVuKQotewotICAgIGlmIChkZWZhdWx0UHJpdlR5cGUgPT0gTlVMTCkgewotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfREVTCi0gICAgICAgIGRlZmF1bHRQcml2VHlwZSA9IHVzbURFU1ByaXZQcm90b2NvbDsKLSNlbHNlCi0gICAgICAgIGRlZmF1bHRQcml2VHlwZSA9IHVzbUFFU1ByaXZQcm90b2NvbDsKLSNlbmRpZgotICAgICAgICBkZWZhdWx0UHJpdlR5cGVMZW4gPSBVU01fTEVOR1RIX09JRF9UUkFOU0ZPUk07Ci0gICAgfQotICAgIGlmIChsZW4pCi0gICAgICAgICpsZW4gPSBkZWZhdWx0UHJpdlR5cGVMZW47Ci0gICAgcmV0dXJuIGRlZmF1bHRQcml2VHlwZTsKLX0KLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKICAqIHNubXB2M19zZWNMZXZlbF9jb25mCiAgKgpAQCAtMzUyLDYgKzI2NCw3IEBACiAKICAgICAgICAgYnJlYWs7CiAKKyNpZmRlZiBORVRTTk1QX1NFQ01PRF9VU00KICAgICBjYXNlICdhJzoKICNpZm5kZWYgTkVUU05NUF9ESVNBQkxFX01ENQogICAgICAgICBpZiAoIXN0cmNhc2VjbXAob3B0YXJnLCAiTUQ1IikpIHsKQEAgLTQwMiw2ICszMTUsNyBAQAogICAgIGNhc2UgJ1gnOgogICAgICAgICAqWHBzeiA9IG9wdGFyZzsKICAgICAgICAgYnJlYWs7CisjZW5kaWYgLyogTkVUU05NUF9TRUNNT0RfVVNNICovCiAKICAgICBjYXNlICdtJzogewogICAgICAgICBzaXplX3QgYnVmU2l6ZSA9IHNpemVvZihzZXNzaW9uLT5zZWN1cml0eUF1dGhLZXkpOwpAQCAtNTI4LDcgKzQ0Miw3IEBACiAgICAgICAgICAqIGdldCB0aGUgaG9zdCBuYW1lIGFuZCBzYXZlIHRoZSBpbmZvcm1hdGlvbiAKICAgICAgICAgICovCiAgICAgICAgIGdldGhvc3RuYW1lKChjaGFyICopIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICBoZW50ID0gZ2V0aG9zdGJ5bmFtZSgoY2hhciAqKSBidWYpOworICAgICAgICBoZW50ID0gbmV0c25tcF9nZXRob3N0YnluYW1lKChjaGFyICopIGJ1Zik7CiAgICAgICAgIGlmIChoZW50ICYmIGhlbnQtPmhfYWRkcnR5cGUgPT0gQUZfSU5FVDYpIHsKICAgICAgICAgICAgIGxvY2FsRW5naW5lSURUeXBlID0gRU5HSU5FSURfVFlQRV9JUFY2OwogICAgICAgICB9IGVsc2UgewpAQCAtNTUxLDcgKzQ2NSw3IEBACiAgICAgICAgICAqIGdldCB0aGUgaG9zdCBuYW1lIGFuZCBzYXZlIHRoZSBpbmZvcm1hdGlvbiAKICAgICAgICAgICovCiAgICAgICAgIGdldGhvc3RuYW1lKChjaGFyICopIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICBoZW50ID0gZ2V0aG9zdGJ5bmFtZSgoY2hhciAqKSBidWYpOworICAgICAgICBoZW50ID0gbmV0c25tcF9nZXRob3N0YnluYW1lKChjaGFyICopIGJ1Zik7CiAgICAgfQogI2VuZGlmCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEhBVkVfR0VUSE9TVE5BTUUgKi8KQEAgLTc0NCwyOTcgKzY1OCw2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLWludAotZnJlZV9lbmdpbmV0aW1lX29uX3NodXRkb3duKGludCBtYWpvcmlkLCBpbnQgbWlub3JpZCwgdm9pZCAqc2VydmVyYXJnLAotCQkJICAgIHZvaWQgKmNsaWVudGFyZykKLXsKLSAgICBERUJVR01TR1RMKCgic25tcHYzIiwgImZyZWUgZW5naW5ldGltZSBjYWxsYmFjayBjYWxsZWRcbiIpKTsKLSAgICBpZiAoZW5naW5lSUQgIT0gTlVMTCkKLQlmcmVlX2VuZ2luZXRpbWUoZW5naW5lSUQsIGVuZ2luZUlETGVuZ3RoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZAotdXNtX3BhcnNlX2NyZWF0ZV91c21Vc2VyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQotewotICAgIGNoYXIgICAgICAgICAgICpjcDsKLSAgICBjaGFyICAgICAgICAgICAgYnVmW1NOTVBfTUFYQlVGX01FRElVTV07Ci0gICAgc3RydWN0IHVzbVVzZXIgKm5ld3VzZXI7Ci0gICAgdV9jaGFyICAgICAgICAgIHVzZXJLZXlbU05NUF9NQVhCVUZfU01BTExdLCAqdG1wcDsKLSAgICBzaXplX3QgICAgICAgICAgdXNlcktleUxlbiA9IFNOTVBfTUFYQlVGX1NNQUxMOwotICAgIHNpemVfdCAgICAgICAgICBwcml2S2V5TGVuID0gMDsKLSAgICBzaXplX3QgICAgICAgICAgcmV0OwotICAgIGludCAgICAgICAgICAgICByZXQyOwotICAgIGludCAgICAgICAgICAgICB0ZXN0Y2FzZTsKLQotICAgIG5ld3VzZXIgPSB1c21fY3JlYXRlX3VzZXIoKTsKLQotICAgIC8qCi0gICAgICogUkVBRDogU2VjdXJpdHkgTmFtZSAKLSAgICAgKi8KLSAgICBjcCA9IGNvcHlfbndvcmQobGluZSwgYnVmLCBzaXplb2YoYnVmKSk7Ci0KLSAgICAvKgotICAgICAqIG1pZ2h0IGJlIGEgLWUgRU5HSU5FSUQgYXJndW1lbnQgCi0gICAgICovCi0gICAgaWYgKHN0cmNtcChidWYsICItZSIpID09IDApIHsKLSAgICAgICAgc2l6ZV90ICAgICAgICAgIGVidWZfbGVuID0gMzIsIGVvdXRfbGVuID0gMDsKLSAgICAgICAgdV9jaGFyICAgICAgICAgKmVidWYgPSAodV9jaGFyICopIG1hbGxvYyhlYnVmX2xlbik7Ci0KLSAgICAgICAgaWYgKGVidWYgPT0gTlVMTCkgewotICAgICAgICAgICAgY29uZmlnX3BlcnJvcigibWFsbG9jIGZhaWx1cmUgcHJvY2Vzc2luZyAtZSBmbGFnIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogR2V0IHRoZSBzcGVjaWZpZWQgZW5naW5laWQgZnJvbSB0aGUgbGluZS4gIAotICAgICAgICAgKi8KLSAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKLSAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJmVidWYsICZlYnVmX2xlbiwgJmVvdXRfbGVuLCAxLCBidWYpKSB7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIEVuZ2luZUlEIGFyZ3VtZW50IHRvIC1lIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgU05NUF9GUkVFKGVidWYpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbmV3dXNlci0+ZW5naW5lSUQgPSBlYnVmOwotICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRExlbiA9IGVvdXRfbGVuOwotICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG5ld3VzZXItPmVuZ2luZUlEID0gc25tcHYzX2dlbmVyYXRlX2VuZ2luZUlEKCZyZXQpOwotICAgICAgICBpZiAocmV0ID09IDApIHsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbmV3dXNlci0+ZW5naW5lSURMZW4gPSByZXQ7Ci0gICAgfQotCi0gICAgbmV3dXNlci0+c2VjTmFtZSA9IHN0cmR1cChidWYpOwotICAgIG5ld3VzZXItPm5hbWUgPSBzdHJkdXAoYnVmKTsKLQotICAgIGlmICghY3ApCi0gICAgICAgIGdvdG8gYWRkOyAgICAgICAgICAgICAgIC8qIG5vIGF1dGhlbnRpY2F0aW9uIG9yIHByaXZhY3kgdHlwZSAqLwotCi0gICAgLyoKLSAgICAgKiBSRUFEOiBBdXRoZW50aWNhdGlvbiBUeXBlIAotICAgICAqLwotI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUQ1Ci0gICAgaWYgKHN0cm5jbXAoY3AsICJNRDUiLCAzKSA9PSAwKSB7Ci0gICAgICAgIG1lbWNweShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIHVzbUhNQUNNRDVBdXRoUHJvdG9jb2wsCi0gICAgICAgICAgICAgICBzaXplb2YodXNtSE1BQ01ENUF1dGhQcm90b2NvbCkpOwotICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgIGlmIChzdHJuY21wKGNwLCAiU0hBIiwgMykgPT0gMCkgewotICAgICAgICBtZW1jcHkobmV3dXNlci0+YXV0aFByb3RvY29sLCB1c21ITUFDU0hBMUF1dGhQcm90b2NvbCwKLSAgICAgICAgICAgICAgIHNpemVvZih1c21ITUFDU0hBMUF1dGhQcm90b2NvbCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIlVua25vd24gYXV0aGVudGljYXRpb24gcHJvdG9jb2wiKTsKLSAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNwID0gc2tpcF90b2tlbihjcCk7Ci0KLSAgICAvKgotICAgICAqIFJFQUQ6IEF1dGhlbnRpY2F0aW9uIFBhc3MgUGhyYXNlIG9yIGtleQotICAgICAqLwotICAgIGlmICghY3ApIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigibm8gYXV0aGVudGljYXRpb24gcGFzcyBwaHJhc2UiKTsKLSAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgIGlmIChzdHJjbXAoYnVmLCItbSIpID09IDApIHsKLSAgICAgICAgLyogYSBtYXN0ZXIga2V5IGlzIHNwZWNpZmllZCAqLwotICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICByZXQgPSBzaXplb2YodXNlcktleSk7Ci0gICAgICAgIHRtcHAgPSB1c2VyS2V5OwotICAgICAgICB1c2VyS2V5TGVuID0gMDsKLSAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJnRtcHAsICZyZXQsICZ1c2VyS2V5TGVuLCAwLCBidWYpKSB7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIGtleSB2YWx1ZSBhcmd1bWVudCB0byAtbSIpOwotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoc3RyY21wKGJ1ZiwiLWwiKSAhPSAwKSB7Ci0gICAgICAgIC8qIGEgcGFzc3dvcmQgaXMgc3BlY2lmaWVkICovCi0gICAgICAgIHVzZXJLZXlMZW4gPSBzaXplb2YodXNlcktleSk7Ci0gICAgICAgIHJldDIgPSBnZW5lcmF0ZV9LdShuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBidWYsIHN0cmxlbihidWYpLCB1c2VyS2V5LCAmdXNlcktleUxlbik7Ci0gICAgICAgIGlmIChyZXQyICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdlbmVyYXRlIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkgZnJvbSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcGxpZWQgcGFzcyBwaHJhc2UuIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfSAgICAgICAgCi0gICAgICAgIAotICAgIC8qCi0gICAgICogQW5kIHR1cm4gaXQgaW50byBhIGxvY2FsaXplZCBrZXkgCi0gICAgICovCi0gICAgcmV0MiA9IHNjX2dldF9wcm9wZXJsZW5ndGgobmV3dXNlci0+YXV0aFByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbik7Ci0gICAgaWYgKHJldDIgPD0gMCkgewotICAgICAgICBjb25maWdfcGVycm9yKCJDb3VsZCBub3QgZ2V0IHByb3BlciBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCBrZXkgbGVuZ3RoIik7Ci0JdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBuZXd1c2VyLT5hdXRoS2V5ID0gKHVfY2hhciAqKSBtYWxsb2MocmV0Mik7Ci0KLSAgICBpZiAoc3RyY21wKGJ1ZiwiLWwiKSA9PSAwKSB7Ci0gICAgICAgIC8qIGEgbG9jYWwga2V5IGlzIGRpcmVjdGx5IHNwZWNpZmllZCAqLwotICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICBuZXd1c2VyLT5hdXRoS2V5TGVuID0gMDsKLSAgICAgICAgcmV0ID0gcmV0MjsKLSAgICAgICAgaWYgKCFzbm1wX2hleF90b19iaW5hcnkoJm5ld3VzZXItPmF1dGhLZXksICZyZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXd1c2VyLT5hdXRoS2V5TGVuLCAwLCBidWYpKSB7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIGtleSB2YWx1ZSBhcmd1bWVudCB0byAtbCIpOwotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAocmV0ICE9IG5ld3VzZXItPmF1dGhLZXlMZW4pIHsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImltcHJvcGVyIGtleSBsZW5ndGggdG8gLWwiKTsKLSAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBuZXd1c2VyLT5hdXRoS2V5TGVuID0gcmV0MjsKLSAgICAgICAgcmV0MiA9IGdlbmVyYXRlX2t1bChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmVuZ2luZUlELCBuZXd1c2VyLT5lbmdpbmVJRExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJLZXksIHVzZXJLZXlMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5hdXRoS2V5LCAmbmV3dXNlci0+YXV0aEtleUxlbik7Ci0gICAgICAgIGlmIChyZXQyICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiY291bGQgbm90IGdlbmVyYXRlIGxvY2FsaXplZCBhdXRoZW50aWNhdGlvbiBrZXkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiKEt1bCkgZnJvbSB0aGUgbWFzdGVyIGtleSAoS3UpLiIpOwotICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghY3ApCi0gICAgICAgIGdvdG8gYWRkOyAgICAgICAgICAgICAgIC8qIG5vIHByaXZhY3kgdHlwZSAod2hpY2ggaXMgbGVnYWwpICovCi0KLSAgICAvKgotICAgICAqIFJFQUQ6IFByaXZhY3kgVHlwZSAKLSAgICAgKi8KLSAgICB0ZXN0Y2FzZSA9IDA7Ci0jaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKLSAgICBpZiAoc3RybmNtcChjcCwgIkRFUyIsIDMpID09IDApIHsKLSAgICAgICAgbWVtY3B5KG5ld3VzZXItPnByaXZQcm90b2NvbCwgdXNtREVTUHJpdlByb3RvY29sLAotICAgICAgICAgICAgICAgc2l6ZW9mKHVzbURFU1ByaXZQcm90b2NvbCkpOwotICAgICAgICB0ZXN0Y2FzZSA9IDE7Ci0JLyogREVTIHVzZXMgYSAxMjggYml0IGtleSwgNjQgYml0cyBvZiB3aGljaCBpcyBhIHNhbHQgKi8KLQlwcml2S2V5TGVuID0gMTY7Ci0gICAgfQotI2VuZGlmCi0jaWZkZWYgSEFWRV9BRVMKLSAgICBpZiAoc3RybmNtcChjcCwgIkFFUzEyOCIsIDYpID09IDAgfHwKLSAgICAgICAgICAgICAgIHN0cm5jbXAoY3AsICJBRVMiLCAzKSA9PSAwKSB7Ci0gICAgICAgIG1lbWNweShuZXd1c2VyLT5wcml2UHJvdG9jb2wsIHVzbUFFU1ByaXZQcm90b2NvbCwKLSAgICAgICAgICAgICAgIHNpemVvZih1c21BRVNQcml2UHJvdG9jb2wpKTsKLSAgICAgICAgdGVzdGNhc2UgPSAxOwotCXByaXZLZXlMZW4gPSAxNjsKLSAgICB9Ci0jZW5kaWYKLSAgICBpZiAodGVzdGNhc2UgPT0gMCkgewotICAgICAgICBjb25maWdfcGVycm9yKCJVbmtub3duIHByaXZhY3kgcHJvdG9jb2wiKTsKLSAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNwID0gc2tpcF90b2tlbihjcCk7Ci0gICAgLyoKLSAgICAgKiBSRUFEOiBFbmNyeXB0aW9uIFBhc3MgUGhyYXNlIG9yIGtleQotICAgICAqLwotICAgIGlmICghY3ApIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogYXNzdW1lIHRoZSBzYW1lIGFzIHRoZSBhdXRoZW50aWNhdGlvbiBrZXkgCi0gICAgICAgICAqLwotICAgICAgICBuZXd1c2VyLT5wcml2S2V5ID0gbmV0c25tcF9tZW1kdXAobmV3dXNlci0+YXV0aEtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3VzZXItPmF1dGhLZXlMZW4pOwotICAgICAgICBuZXd1c2VyLT5wcml2S2V5TGVuID0gbmV3dXNlci0+YXV0aEtleUxlbjsKLSAgICB9IGVsc2UgewotICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICAKLSAgICAgICAgaWYgKHN0cmNtcChidWYsIi1tIikgPT0gMCkgewotICAgICAgICAgICAgLyogYSBtYXN0ZXIga2V5IGlzIHNwZWNpZmllZCAqLwotICAgICAgICAgICAgY3AgPSBjb3B5X253b3JkKGNwLCBidWYsIHNpemVvZihidWYpKTsKLSAgICAgICAgICAgIHJldCA9IHNpemVvZih1c2VyS2V5KTsKLSAgICAgICAgICAgIHRtcHAgPSB1c2VyS2V5OwotICAgICAgICAgICAgdXNlcktleUxlbiA9IDA7Ci0gICAgICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmdG1wcCwgJnJldCwgJnVzZXJLZXlMZW4sIDAsIGJ1ZikpIHsKLSAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJpbnZhbGlkIGtleSB2YWx1ZSBhcmd1bWVudCB0byAtbSIpOwotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChidWYsIi1sIikgIT0gMCkgewotICAgICAgICAgICAgLyogYSBwYXNzd29yZCBpcyBzcGVjaWZpZWQgKi8KLSAgICAgICAgICAgIHVzZXJLZXlMZW4gPSBzaXplb2YodXNlcktleSk7Ci0gICAgICAgICAgICByZXQyID0gZ2VuZXJhdGVfS3UobmV3dXNlci0+YXV0aFByb3RvY29sLCBuZXd1c2VyLT5hdXRoUHJvdG9jb2xMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIGJ1Ziwgc3RybGVuKGJ1ZiksIHVzZXJLZXksICZ1c2VyS2V5TGVuKTsKLSAgICAgICAgICAgIGlmIChyZXQyICE9IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImNvdWxkIG5vdCBnZW5lcmF0ZSB0aGUgcHJpdmFjeSBrZXkgZnJvbSB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cHBsaWVkIHBhc3MgcGhyYXNlLiIpOwotICAgICAgICAgICAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9ICAgICAgICAKLSAgICAgICAgCi0gICAgICAgIC8qCi0gICAgICAgICAqIEFuZCB0dXJuIGl0IGludG8gYSBsb2NhbGl6ZWQga2V5IAotICAgICAgICAgKi8KLSAgICAgICAgcmV0MiA9IHNjX2dldF9wcm9wZXJsZW5ndGgobmV3dXNlci0+YXV0aFByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5hdXRoUHJvdG9jb2xMZW4pOwotICAgICAgICBpZiAocmV0MiA8IDApIHsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoImNvdWxkIG5vdCBnZXQgcHJvcGVyIGtleSBsZW5ndGggdG8gdXNlIGZvciB0aGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpdmFjeSBhbGdvcml0aG0uIik7Ci0gICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG5ld3VzZXItPnByaXZLZXkgPSAodV9jaGFyICopIG1hbGxvYyhyZXQyKTsKLQotICAgICAgICBpZiAoc3RyY21wKGJ1ZiwiLWwiKSA9PSAwKSB7Ci0gICAgICAgICAgICAvKiBhIGxvY2FsIGtleSBpcyBkaXJlY3RseSBzcGVjaWZpZWQgKi8KLSAgICAgICAgICAgIGNwID0gY29weV9ud29yZChjcCwgYnVmLCBzaXplb2YoYnVmKSk7Ci0gICAgICAgICAgICByZXQgPSByZXQyOwotICAgICAgICAgICAgbmV3dXNlci0+cHJpdktleUxlbiA9IDA7Ci0gICAgICAgICAgICBpZiAoIXNubXBfaGV4X3RvX2JpbmFyeSgmbmV3dXNlci0+cHJpdktleSwgJnJldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXd1c2VyLT5wcml2S2V5TGVuLCAwLCBidWYpKSB7Ci0gICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiaW52YWxpZCBrZXkgdmFsdWUgYXJndW1lbnQgdG8gLWwiKTsKLSAgICAgICAgICAgICAgICB1c21fZnJlZV91c2VyKG5ld3VzZXIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5ld3VzZXItPnByaXZLZXlMZW4gPSByZXQyOwotICAgICAgICAgICAgcmV0MiA9IGdlbmVyYXRlX2t1bChuZXd1c2VyLT5hdXRoUHJvdG9jb2wsIG5ld3VzZXItPmF1dGhQcm90b2NvbExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5lbmdpbmVJRCwgbmV3dXNlci0+ZW5naW5lSURMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcktleSwgdXNlcktleUxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXd1c2VyLT5wcml2S2V5LCAmbmV3dXNlci0+cHJpdktleUxlbik7Ci0gICAgICAgICAgICBpZiAocmV0MiAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjb3VsZCBub3QgZ2VuZXJhdGUgbG9jYWxpemVkIHByaXZhY3kga2V5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoS3VsKSBmcm9tIHRoZSBtYXN0ZXIga2V5IChLdSkuIik7Ci0gICAgICAgICAgICAgICAgdXNtX2ZyZWVfdXNlcihuZXd1c2VyKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoKG5ld3VzZXItPnByaXZLZXlMZW4gPj0gcHJpdktleUxlbikgfHwgKHByaXZLZXlMZW4gPT0gMCkpewotICAgICAgbmV3dXNlci0+cHJpdktleUxlbiA9IHByaXZLZXlMZW47Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgLyogVGhlIHByaXZLZXkgbGVuZ3RoIGlzIHNtYWxsZXIgdGhhbiByZXF1aXJlZCBieSBwcml2UHJvdG9jb2wgKi8KLSAgICAgIHVzbV9mcmVlX3VzZXIobmV3dXNlcik7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gIGFkZDoKLSAgICB1c21fYWRkX3VzZXIobmV3dXNlcik7Ci0gICAgREVCVUdNU0dUTCgoInVzbVVzZXIiLCAiY3JlYXRlZCBhIG5ldyB1c2VyICVzIGF0ICIsIG5ld3VzZXItPnNlY05hbWUpKTsKLSAgICBERUJVR01TR0hFWCgoInVzbVVzZXIiLCBuZXd1c2VyLT5lbmdpbmVJRCwgbmV3dXNlci0+ZW5naW5lSURMZW4pKTsKLSAgICBERUJVR01TRygoInVzbVVzZXIiLCAiXG4iKSk7Ci19Ci0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCiAgKiBlbmdpbmVCb290c19jb25mCiAgKgpAQCAtMTEyMCw5ICs3NDMsNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiBTZWUgaWYgYWxyZWFkeSBzZXQgaWYgc28gZXJhc2UgJiByZWxlYXNlIGl0IAogICAgICAgICAgKi8KLSAgICAgICAgaWYgKE5VTEwgIT0gZW5naW5lSUROaWMpIHsKLSAgICAgICAgICAgIFNOTVBfRlJFRShlbmdpbmVJRE5pYyk7Ci0gICAgICAgIH0KKyAgICAgICAgU05NUF9GUkVFKGVuZ2luZUlETmljKTsKICAgICAgICAgZW5naW5lSUROaWMgPSAodV9jaGFyICopIG1hbGxvYyhzdHJsZW4oY3B0cikgKyAxKTsKICAgICAgICAgaWYgKE5VTEwgIT0gZW5naW5lSUROaWMpIHsKICAgICAgICAgICAgIHN0cmNweSgoY2hhciAqKSBlbmdpbmVJRE5pYywgY3B0cik7CkBAIC0xMjI3LDYgKzg0OCw4IEBACiAvKgogICogbWVyZWx5IGNhbGwgCiAgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihnZXRfZW5naW5ldGltZV9hbGFybSwgbmV0c25tcF91bnVzZWQpCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfR0VUX0VOR0lORVRJTUVfQUxBUk0KIHZvaWQKIGdldF9lbmdpbmV0aW1lX2FsYXJtKHVuc2lnbmVkIGludCByZWdudW0sIHZvaWQgKmNsaWVudGFyZ3MpCiB7CkBAIC0xMjM0LDYgKzg1Nyw3IEBACiAgICAgICAgd3JhcHBpbmcgb2YgdGhlIHRpbWVzKCkgb3V0cHV0ICovCiAgICAgc25tcHYzX2xvY2FsX3NubXBFbmdpbmVUaW1lKCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9HRVRfRU5HSU5FVElNRV9BTEFSTSAqLwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgogICogaW5pdF9zbm1wdjMKQEAgLTEyNDgsMTkgKzg3Miw3IEBACiB2b2lkCiBpbml0X3NubXB2Myhjb25zdCBjaGFyICp0eXBlKQogewotI2lmIFNOTVBfVVNFX1RJTUVTCi0gIHN0cnVjdCB0bXMgZHVtbXk7Ci0KLSAgLyogZml4bWU6IC0xIGlzIGZhdWx0IGNvZGUuLi4gKi8KLSAgc25tcHYzc3RhcnRDbG9jayA9IHRpbWVzKCZkdW1teSk7Ci0KLSAgLyogcmVtZW1iZXIgaG93IG1hbnkgdGlja3MgcGVyIHNlY29uZCB0aGVyZSBhcmUsIHNpbmNlIHRpbWVzKCkgcmV0dXJucyB0aGlzICovCi0KLSAgY2xvY2t0aWNrcyA9IHN5c2NvbmYoX1NDX0NMS19UQ0spOwotCi0jZW5kaWYgLyogU05NUF9VU0VfVElNRVMgKi8KLQotICAgIGdldHRpbWVvZmRheSgmc25tcHYzc3RhcnR0aW1lLCBOVUxMKTsKKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJnNubXB2M3N0YXJ0dGltZSk7CiAKICAgICBpZiAoIXR5cGUpCiAgICAgICAgIHR5cGUgPSAiX19zbm1wYXBwX18iOwpAQCAtMTI4MiwxMyArODk0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXB2M19zdG9yZSwgKHZvaWQgKikgc3RyZHVwKHR5cGUpKTsKIAogICAgIC8qCi0gICAgICogRnJlZSBzdHVmZiBhdCBzaHV0ZG93biB0aW1lCi0gICAgICovCi0gICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NIVVRET1dOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9lbmdpbmV0aW1lX29uX3NodXRkb3duLCBOVUxMKTsKLQotICAgIC8qCiAgICAgICogaW5pdGlhbGl6ZSBzdWJtb2R1bGVzIAogICAgICAqLwogICAgIC8qCkBAIC0xMzQ4LDMwICs5NTMsOSBAQAogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImRlZlZlcnNpb24iLCB2ZXJzaW9uX2NvbmYsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjF8MmN8MyIpOwogCi0gICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiZGVmQXV0aFR5cGUiLCBzbm1wdjNfYXV0aHR5cGVfY29uZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAiTUQ1fFNIQSIpOwotICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImRlZlByaXZUeXBlIiwgc25tcHYzX3ByaXZ0eXBlX2NvbmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSNpZmRlZiBIQVZFX0FFUwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERVN8QUVTIik7Ci0jZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJERVMgKEFFUyBzdXBwb3J0IG5vdCBhdmFpbGFibGUpIik7Ci0jZW5kaWYKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcCIsICJkZWZTZWN1cml0eUxldmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wdjNfc2VjTGV2ZWxfY29uZiwgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9BdXRoTm9Qcml2fGF1dGhOb1ByaXZ8YXV0aFByaXYiKTsKLSAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhQYXNzIiwgdXNtX3NldF9wYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKLSAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldFByaXZQYXNzIiwgdXNtX3NldF9wYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKLSAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcih0eXBlLCAidXNlclNldEF1dGhLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdktleSIsIHVzbV9zZXRfcGFzc3dvcmQsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIodHlwZSwgInVzZXJTZXRBdXRoTG9jYWxLZXkiLCB1c21fc2V0X3Bhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwotICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKHR5cGUsICJ1c2VyU2V0UHJpdkxvY2FsS2V5IiwgdXNtX3NldF9wYXNzd29yZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKIH0KIAogLyoKQEAgLTE0MDYsMTIgKzk5MCwxNCBAQAogICAgICAgICBlbmdpbmVCb290cyA9IDE7CiAgICAgfQogCisjaWZkZWYgTkVUU05NUF9TRUNNT0RfVVNNCiAgICAgLyoKLSAgICAgKiBzZXQgb3VyIGxvY2FsIGVuZ2luZVRpbWUgaW4gdGhlIExDRCB0aW1pbmcgY2FjaGUgCisgICAgICogZm9yIFVTTSBzZXQgb3VyIGxvY2FsIGVuZ2luZVRpbWUgaW4gdGhlIExDRCB0aW1pbmcgY2FjaGUgCiAgICAgICovCiAgICAgc2V0X2VuZ2luZXRpbWUoY19lbmdpbmVJRCwgZW5naW5lSURMZW4sCiAgICAgICAgICAgICAgICAgICAgc25tcHYzX2xvY2FsX3NubXBFbmdpbmVCb290cygpLAogICAgICAgICAgICAgICAgICAgIHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSgpLCBUUlVFKTsKKyNlbmRpZiAvKiBORVRTTk1QX1NFQ01PRF9VU00gKi8KIAogICAgIFNOTVBfRlJFRShjX2VuZ2luZUlEKTsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwpAQCAtMTUyNSwxMCArMTExMSw3IEBACiAgICAgaWYgKCFkZXN0IHx8ICFkZXN0bGVuKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICgqZGVzdCkgewotICAgICAgICBTTk1QX0ZSRUUoKmRlc3QpOwotICAgICAgICAqZGVzdCA9IE5VTEw7Ci0gICAgfQorICAgIFNOTVBfRlJFRSgqZGVzdCk7CiAgICAgKmRlc3RsZW4gPSAwOwogCiAgICAgaWYgKHNyY2xlbiAmJiBzcmMpIHsKQEAgLTE1NzYsMzggKzExNTksMzMgQEAKIAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgc25tcHYzX2dlbmVyYXRlX2VuZ2luZUlEKCkgKi8KIAotLyoKLSAqIHNubXB2M19sb2NhbF9zbm1wRW5naW5lVGltZSgpOiByZXR1cm4gdGhlIG51bWJlciBvZiBzZWNvbmRzIHNpbmNlIHRoZQotICogc25tcHYzIGVuZ2luZSBsYXN0IGluY3JlbWVudGVkIGVuZ2luZV9ib290cyAKKy8qKgorICogUmV0dXJuIHRoZSB2YWx1ZSBvZiBzbm1wRW5naW5lVGltZS4gQWNjb3JkaW5nIHRvIFJGQyAzNDE0IHNubXBFbmdpbmVUaW1lCisgKiBpcyBhIDMxLWJpdCBjb3VudGVyLiBlbmdpbmVCb290cyBtdXN0IGJlIGluY3JlbWVudGVkIGV2ZXJ5IHRpbWUgdGhhdAorICogY291bnRlciB3cmFwcyBhcm91bmQuCisgKgorICogQHNlZSBTZWUgYWxzbyA8YSBocmVmPSJodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDE0Ij5SRkMgMzQxNDwvYT4uCisgKgorICogQG5vdGUgSXQgaXMgYXNzdW1lZCB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IGxlYXN0IG9uY2UgZXZlcnkKKyAqICAgMioqMzEgc2Vjb25kcy4KICAqLwogdV9sb25nCiBzbm1wdjNfbG9jYWxfc25tcEVuZ2luZVRpbWUodm9pZCkKIHsKLSNpZmRlZiBTTk1QX1VTRV9USU1FUwotICBzdHJ1Y3QgdG1zIGR1bW15OwotICBjbG9ja190IG5vdyA9IHRpbWVzKCZkdW1teSk7Ci0gIC8qIGZpeG1lOiAtMSBpcyBmYXVsdCBjb2RlLi4uICovCi0gIHVuc2lnbmVkIGludCByZXN1bHQ7CisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX0NIRUNLSU5HCisgICAgbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoY2FsY3VsYXRlX3NlY3RpbWVfZGlmZikKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfQ0hFQ0tJTkcgKi8KIAotICBpZiAobm93IDwgc25tcHYzc3RhcnRDbG9jaykgewotICAgICAgcmVzdWx0ID0gVUlOVF9NQVggLSAoc25tcHYzc3RhcnRDbG9jayAtIG5vdyk7Ci0gIH0gZWxzZSB7Ci0gICAgICByZXN1bHQgPSBub3cgLSBzbm1wdjNzdGFydENsb2NrOwotICB9Ci0gIGlmIChyZXN1bHQgPCBsYXN0Y2FsbHRpbWUpIHsKLSAgICAgIC8qIHdyYXBwZWQgKi8KLSAgICAgIHdyYXBjb3VudGVyKys7Ci0gIH0KLSAgbGFzdGNhbGx0aW1lID0gcmVzdWx0OwotICByZXN1bHQgPSAgKFVJTlRfTUFYL2Nsb2NrdGlja3MpKndyYXBjb3VudGVyICsgcmVzdWx0L2Nsb2NrdGlja3M7Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLSNlbHNlIC8qICFTTk1QX1VTRV9USU1FUyAqLworICAgIHN0YXRpYyB1aW50MzJfdCBsYXN0X2VuZ2luZVRpbWU7CiAgICAgc3RydWN0IHRpbWV2YWwgIG5vdzsKKyAgICB1aW50MzJfdCBlbmdpbmVUaW1lOwogCi0gICAgZ2V0dGltZW9mZGF5KCZub3csIE5VTEwpOwotICAgIHJldHVybiBjYWxjdWxhdGVfc2VjdGltZV9kaWZmKCZub3csICZzbm1wdjNzdGFydHRpbWUpOwotI2VuZGlmIC8qIEhBVkVfU1lTX1RJTUVTX0ggKi8KKyAgICBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soJm5vdyk7CisgICAgZW5naW5lVGltZSA9IGNhbGN1bGF0ZV9zZWN0aW1lX2RpZmYoJm5vdywgJnNubXB2M3N0YXJ0dGltZSkgJiAweDdmZmZmZmZmTDsKKyAgICBpZiAoZW5naW5lVGltZSA8IGxhc3RfZW5naW5lVGltZSkKKyAgICAgICAgZW5naW5lQm9vdHMrKzsKKyAgICBsYXN0X2VuZ2luZVRpbWUgPSBlbmdpbmVUaW1lOworICAgIHJldHVybiBlbmdpbmVUaW1lOwogfQogCiAKQEAgLTE2NzksMTggKzEyNTcsMTcgQEAKICNlbmRpZgogCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCi0vKgotICogc25tcHYzX3NldF9lbmdpbmVCb290c0FuZFRpbWUoKTogdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdC4gIEdvIGF3YXkuIAotICovCi0vKgotICogSXQgY2VydGFpbmx5IHNob3VsZCBuZXZlciBiZSB1c2VkLCB1bmxlc3MgaW4gYSB0ZXN0aW5nIHNjZW5lcm8sCi0gKiB3aGljaCBpcyB3aHkgaXQgd2FzIGNyZWF0ZWQgCisvKioKKyAqIFNldCBTTk1QdjMgZW5naW5lQm9vdHMgYW5kIHN0YXJ0IHRpbWUuCisgKgorICogQG5vdGUgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBleGlzdC4gR28gYXdheS4gSXQgY2VydGFpbmx5IHNob3VsZCBuZXZlciBiZQorICogICB1c2VkLCB1bmxlc3MgaW4gYSB0ZXN0aW5nIHNjZW5hcmlvLCB3aGljaCBpcyB3aHkgaXQgd2FzIGNyZWF0ZWQKICAqLwogdm9pZAogc25tcHYzX3NldF9lbmdpbmVCb290c0FuZFRpbWUoaW50IGJvb3RzLCBpbnQgdHRpbWUpCiB7CiAgICAgZW5naW5lQm9vdHMgPSBib290czsKLSAgICBnZXR0aW1lb2ZkYXkoJnNubXB2M3N0YXJ0dGltZSwgTlVMTCk7CisgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCZzbm1wdjNzdGFydHRpbWUpOwogICAgIHNubXB2M3N0YXJ0dGltZS50dl9zZWMgLT0gdHRpbWU7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NubXBsaWIvc3RydG91bGwuYyBiL3NubXBsaWIvc3RydG91bGwuYwppbmRleCA2Yzk4ZmM0Li45ZWU1M2I0IDEwMDY0NAotLS0gYS9zbm1wbGliL3N0cnRvdWxsLmMKKysrIGIvc25tcGxpYi9zdHJ0b3VsbC5jCkBAIC0yMCw2ICsyMCw4IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2lmbmRlZiBIQVZFX1NUUlRPVUxMCisKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CkBAIC0xNTYsMyArMTU4LDUgQEAKICAgICAgICAgKmVuZHB0ciA9IChjaGFyICopIG5wdHI7CiAgICAgcmV0dXJuIDA7CiB9CisKKyNlbmRpZiAvKiBIQVZFX1NUUlRPVUxMICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3N5c3RlbS5jIGIvc25tcGxpYi9zeXN0ZW0uYwppbmRleCA0MjUyMmM2Li5iNmRlMTQ1IDEwMDY0NAotLS0gYS9zbm1wbGliL3N5c3RlbS5jCisrKyBiL3NubXBsaWIvc3lzdGVtLmMKQEAgLTQyLDYgKzQyLDcgQEAKICAqIFN5c3RlbSBkZXBlbmRlbnQgcm91dGluZXMgZ28gaGVyZQogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KQEAgLTE2Miw2ICsxNjMsMTkgQEAKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNlbmRpZgogCisjaWYgSEFWRV9BUlBBX0lORVRfSAorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisKKyNpZmRlZiBETlNTRUNfTE9DQUxfVkFMSURBVElPTgorI2lmIDEgLypIQVZFX0FSUEFfTkFNRVNFUl9IKi8KKyNpbmNsdWRlIDxhcnBhL25hbWVzZXIuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHZhbGlkYXRvci92YWxpZGF0b3IuaD4KKy8qIE5ldFNOTVAgYW5kIEROU1NFQy1Ub29scyBib3RoIGRlZmluZSBGUkVFLiBXZSdsbCBub3QgdXNlIGVpdGhlciBoZXJlLiAqLworI3VuZGVmIEZSRUUKKyNlbmRpZgorCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9vdXRwdXRfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvdXRpbGl0aWVzLmg+CkBAIC0xNzAsNiArMTg0LDE2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaD4gLyogZm9yIGdldF90ZW1wX2ZpbGVfcGF0dGVybigpICovCiAKKyNpbmNsdWRlICJpbmV0X250b3AuaCIKKworLyogTmV0U05NUCBhbmQgRE5TU0VDLVRvb2xzIGJvdGggZGVmaW5lIEZSRUUuIFdlJ2xsIG5vdCB1c2UgZWl0aGVyIGhlcmUuICovCisjdW5kZWYgRlJFRQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3lzdGVtX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVzZXJfaW5mb3JtYXRpb24sIHN5c3RlbV9hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoY2FsY3VsYXRlX3NlY3RpbWVfZGlmZiwgc3lzdGVtX2FsbCkKKwogI2lmbmRlZiBJRkZfTE9PUEJBQ0sKICMJZGVmaW5lIElGRl9MT09QQkFDSyAwCiAjZW5kaWYKQEAgLTE4MCw2ICsyMDQsMTAgQEAKICMgZGVmaW5lIExPT1BCQUNLICAgIDB4N2YwMDAwMDEKICNlbmRpZgogCisjaWZuZGVmIEVBSV9GQUlMCisjIGRlZmluZSBFQUlfRkFJTCAgICAtNCAgICAvKiBOb24tcmVjb3ZlcmFibGUgZmFpbHVyZSBpbiBuYW1lIHJlcy4gICovCisjZW5kaWYKKwogI2lmIGRlZmluZWQoSEFWRV9GT1JLKQogc3RhdGljIHZvaWQKIF9kYWVtb25fcHJlcChpbnQgc3RkZXJyX2xvZykKQEAgLTU2NCwxNCArNTkyLDE3IEBACiAgICAgc2l6ZV90ICAgICAgICAgIGxlbjsKICNlbGlmIGRlZmluZWQoTkVUU05NUF9DQU5fVVNFX05MSVNUKQogICAgIGludCAgICAgICAgICAgICBrbWVtOwotICAgIHN0YXRpYyBzdHJ1Y3Qgbmxpc3QgbmxbXSA9IHsKICNpZiAhZGVmaW5lZChocHV4KQotICAgICAgICB7KGNoYXIgKikgIl9ib290dGltZSJ9LAorICAgIHN0YXRpYyBjaGFyIGJvb3R0aW1lX25hbWVbXSA9ICJfYm9vdHRpbWUiOwogI2Vsc2UKLSAgICAgICAgeyhjaGFyICopICJib290dGltZSJ9LAorICAgIHN0YXRpYyBjaGFyIGJvb3R0aW1lX25hbWVbXSA9ICJib290dGltZSI7CiAjZW5kaWYKLSAgICAgICAgeyhjaGFyICopICIifQotICAgIH07CisgICAgc3RhdGljIGNoYXIgZW1wdHlfbmFtZVtdID0gIiI7CisgICAgc3RydWN0IG5saXN0IG5sWzJdOworCisgICAgbWVtc2V0KG5sLCAwLCBzaXplb2YobmwpKTsKKyAgICBubFswXS5uX25hbWUgPSBib290dGltZV9uYW1lOworICAgIG5sWzFdLm5fbmFtZSA9IGVtcHR5X25hbWU7CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwgKi8KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaHB1eDEwIHx8IGhwdXggMTEgKi8KIApAQCAtNjI1LDEwICs2NTYsMTEgQEAKIGdldF91cHRpbWUodm9pZCkKIHsKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KSB8fCBkZWZpbmVkKGFpeDcpCisgICAgc3RhdGljIGNoYXIgbGJvbHRfbmFtZVtdID0gImxib2x0IjsKICAgICBzdHJ1Y3Qgbmxpc3Qgbmw7CiAgICAgaW50IGttZW07CiAgICAgdGltZV90IGxib2x0OwotICAgIG5sLm5fbmFtZSA9IChjaGFyICopICJsYm9sdCI7CisgICAgbmwubl9uYW1lID0gbGJvbHRfbmFtZTsKICAgICBpZihrbmxpc3QoJm5sLCAxLCBzaXplb2Yoc3RydWN0IG5saXN0KSkgIT0gMCkgcmV0dXJuKDApOwogICAgIGlmKG5sLm5fdHlwZSA9PSAwIHx8IG5sLm5fdmFsdWUgPT0gMCkgcmV0dXJuKDApOwogICAgIGlmKChrbWVtID0gb3BlbigiL2Rldi9tZW0iLCAwKSkgPCAwKSByZXR1cm4gMDsKQEAgLTY4NywxMCArNzE5LDI4IEBACiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICEgV0lOMzIgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KK3N0YXRpYyB2YWxfY29udGV4dF90ICpfdmFsX2NvbnRleHQgPSBOVUxMOworCitzdGF0aWMgdmFsX2NvbnRleHRfdCAqCituZXRzbm1wX3ZhbGlkYXRvcl9jb250ZXh0KHZvaWQpCit7CisgICAgaWYgKE5VTEwgPT0gX3ZhbF9jb250ZXh0KSB7CisgICAgICAgIGludCByYzsKKyAgICAgICAgY2hhciAqYXBwdHlwZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpOworICAgICAgICBERUJVR01TR1RMKCgiZG5zOnNlYzpjb250ZXh0IiwgImNyZWF0aW5nIGRuc3NlYyBjb250ZXh0IGZvciAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgYXBwdHlwZSkpOworICAgICAgICByYyA9IHZhbF9jcmVhdGVfY29udGV4dChhcHB0eXBlLCAmX3ZhbF9jb250ZXh0KTsKKyAgICB9CisKKyAgICByZXR1cm4gX3ZhbF9jb250ZXh0OworfQorI2VuZGlmIC8qIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OICovCisKIGludAogbmV0c25tcF9nZXRob3N0YnluYW1lX3Y0KGNvbnN0IGNoYXIqIG5hbWUsIGluX2FkZHJfdCAqYWRkcl9vdXQpCiB7Ci0KICNpZiBIQVZFX0dFVEFERFJJTkZPCiAgICAgc3RydWN0IGFkZHJpbmZvICphZGRycyA9IE5VTEw7CiAgICAgc3RydWN0IGFkZHJpbmZvIGhpbnQ7CkBAIC03MDIsMTcgKzc1MiwxMSBAQAogICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwogICAgIGhpbnQuYWlfcHJvdG9jb2wgPSAwOwogCi0gICAgZXJyID0gZ2V0YWRkcmluZm8obmFtZSwgTlVMTCwgJmhpbnQsICZhZGRycyk7CisgICAgZXJyID0gbmV0c25tcF9nZXRhZGRyaW5mbyhuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKICAgICBpZiAoZXJyICE9IDApIHsKLSNpZiBIQVZFX0dBSV9TVFJFUlJPUgotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm86ICVzICVzXG4iLCBuYW1lLAotICAgICAgICAgICAgICAgICBnYWlfc3RyZXJyb3IoZXJyKSk7Ci0jZWxzZQotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm86ICVzIChlcnJvciAlZClcbiIsIG5hbWUsCi0gICAgICAgICAgICAgICAgIGVycik7Ci0jZW5kaWYKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKwogICAgIGlmIChhZGRycyAhPSBOVUxMKSB7CiAgICAgICAgIG1lbWNweShhZGRyX291dCwKICAgICAgICAgICAgICAgICYoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKSBhZGRycy0+YWlfYWRkciktPnNpbl9hZGRyLApAQCAtNzI3LDcgKzc3MSw3IEBACiAjZWxpZiBIQVZFX0dFVEhPU1RCWU5BTUUKICAgICBzdHJ1Y3QgaG9zdGVudCAqaHAgPSBOVUxMOwogCi0gICAgaHAgPSBnZXRob3N0YnluYW1lKG5hbWUpOworICAgIGhwID0gbmV0c25tcF9nZXRob3N0YnluYW1lKG5hbWUpOwogICAgIGlmIChocCA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJnZXRfdGhpc2FkZHIiLAogICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUgKGNvdWxkbid0IHJlc29sdmUpXG4iKSk7CkBAIC03NjMsNiArODA3LDE5NiBAQAogI2VuZGlmCiB9CiAKK2ludAorbmV0c25tcF9nZXRhZGRyaW5mbyhjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYWRkcmluZm8gKmhpbnRzLCBzdHJ1Y3QgYWRkcmluZm8gKipyZXMpCit7CisjaWYgSEFWRV9HRVRBRERSSU5GTworICAgIHN0cnVjdCBhZGRyaW5mbyAqYWRkcnMgPSBOVUxMOworICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50OworICAgIGludCAgICAgICAgICAgICBlcnI7CisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKyAgICB2YWxfc3RhdHVzX3QgICAgdmFsX3N0YXR1czsKKyNlbmRpZgorCisgICAgREVCVUdNU0dUTCgoImRuczpnZXRhZGRyaW5mbyIsICJsb29raW5nIHVwICIpKTsKKyAgICBpZiAobmFtZSkKKyAgICAgICAgREVCVUdNU0coKCJkbnM6Z2V0YWRkcmluZm8iLCAiXCIlc1wiIiwgbmFtZSkpOworICAgIGVsc2UKKyAgICAgICAgREVCVUdNU0coKCJkbnM6Z2V0YWRkcmluZm8iLCAiPE5VTEw+IikpOworCisgICAgaWYgKHNlcnZpY2UpCisJREVCVUdNU0coKCJkbnM6Z2V0YWRkcmluZm8iLCAiOlwiJXNcIiIsIHNlcnZpY2UpKTsKKworICAgIGlmIChoaW50cykKKwlERUJVR01TRygoImRuczpnZXRhZGRyaW5mbyIsICIgd2l0aCBoaW50ICh7IC4uLiB9KSIpKTsKKyAgICBlbHNlCisJREVCVUdNU0coKCJkbnM6Z2V0YWRkcmluZm8iLCAiIHdpdGggbm8gaGludCIpKTsKKworICAgIERFQlVHTVNHKCgiZG5zOmdldGFkZHJpbmZvIiwgIlxuIikpOworCisgICAgaWYgKE5VTEwgPT0gaGludHMpIHsKKyAgICAgICAgbWVtc2V0KCZoaW50LCAwLCBzaXplb2YgaGludCk7CisgICAgICAgIGhpbnQuYWlfZmxhZ3MgPSAwOworICAgICAgICBoaW50LmFpX2ZhbWlseSA9IFBGX0lORVQ7CisgICAgICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOworICAgICAgICBoaW50LmFpX3Byb3RvY29sID0gMDsKKyAgICAgICAgaGludHMgPSAmaGludDsKKyAgICB9IGVsc2UgeworICAgICAgICBtZW1jcHkoJmhpbnQsIGhpbnRzLCBzaXplb2YgaGludCk7CisgICAgfQorCisjaWZuZGVmIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OCisgICAgZXJyID0gZ2V0YWRkcmluZm8obmFtZSwgTlVMTCwgJmhpbnQsICZhZGRycyk7CisjZWxzZSAvKiBETlNTRUNfTE9DQUxfVkFMSURBVElPTiAqLworICAgIGVyciA9IHZhbF9nZXRhZGRyaW5mbyhuZXRzbm1wX3ZhbGlkYXRvcl9jb250ZXh0KCksIG5hbWUsIE5VTEwsICZoaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcnMsICZ2YWxfc3RhdHVzKTsKKyAgICBERUJVR01TR1RMKCgiZG5zOnNlYzp2YWwiLCAiZXJyICVkLCB2YWxfc3RhdHVzICVkIC8gJXM7IHRydXN0ZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgIGVyciwgdmFsX3N0YXR1cywgcF92YWxfc3RhdHVzKHZhbF9zdGF0dXMpLAorICAgICAgICAgICAgICAgIHZhbF9pc3RydXN0ZWQodmFsX3N0YXR1cykpKTsKKyAgICBpZiAoISB2YWxfaXN0cnVzdGVkKHZhbF9zdGF0dXMpKSB7CisgICAgICAgIGludCByYzsKKyAgICAgICAgaWYgKChlcnIgIT0gMCkgJiYgVkFMX0dFVEFERFJJTkZPX0hBU19TVEFUVVMoZXJyKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAiV0FSTklORzogVU5UUlVTVEVEIGVycm9yIGluIEROUyByZXNvbHV0aW9uIGZvciAlcyFcbiIsCisgICAgICAgICAgICAgICAgICAgICBuYW1lKTsKKyAgICAgICAgICAgIHJjID0gRUFJX0ZBSUw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICJUaGUgYXV0aGVudGljaXR5IG9mIEROUyByZXNwb25zZSBpcyBub3QgdHJ1c3RlZCAoJXMpXG4iLAorICAgICAgICAgICAgICAgICAgICAgcF92YWxfc3RhdHVzKHZhbF9zdGF0dXMpKTsKKyAgICAgICAgICAgIHJjID0gRUFJX05PTkFNRTsKKyAgICAgICAgfQorICAgICAgICAvKiogY29udGludWUgYW55d2F5cyBpZiBETlNTRUNfV0FSTl9PTkxZIGlzIHNldCAqLworICAgICAgICBpZiAoIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0ROU1NFQ19XQVJOX09OTFkpKQorICAgICAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworCisjZW5kaWYgLyogRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04gKi8KKyAgICAqcmVzID0gYWRkcnM7CisgICAgaWYgKCgwID09IGVycikgJiYgYWRkcnMgJiYgYWRkcnMtPmFpX2FkZHIpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImRuczpnZXRhZGRyaW5mbyIsICJhbnN3ZXIgeyBBRl9JTkVULCAlczolaHUgfVxuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKCgoc3RydWN0IHNvY2thZGRyX2luKilhZGRycy0+YWlfYWRkciktPnNpbl9hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgbnRvaHMoKChzdHJ1Y3Qgc29ja2FkZHJfaW4qKWFkZHJzLT5haV9hZGRyKS0+c2luX3BvcnQpKSk7CisgICAgfQorICAgIHJldHVybiBlcnI7CisjZWxzZQorICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgImdldGFkZHJpbmZvIG5vdCBhdmFpbGFibGUiKSk7CisgICAgcmV0dXJuIEVBSV9GQUlMOworI2VuZGlmIC8qIGdldGFkZHJpbmZvICovCit9CisKK3N0cnVjdCBob3N0ZW50ICoKK25ldHNubXBfZ2V0aG9zdGJ5bmFtZShjb25zdCBjaGFyICpuYW1lKQoreworI2lmIEhBVkVfR0VUSE9TVEJZTkFNRQorI2lmZGVmIEROU1NFQ19MT0NBTF9WQUxJREFUSU9OCisgICAgdmFsX3N0YXR1c190IHZhbF9zdGF0dXM7CisjZW5kaWYKKyAgICBzdHJ1Y3QgaG9zdGVudCAqaHAgPSBOVUxMOworCisgICAgaWYgKE5VTEwgPT0gbmFtZSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieW5hbWUiLCAibG9va2luZyB1cCAlc1xuIiwgbmFtZSkpOworCisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKyAgICBocCAgPSB2YWxfZ2V0aG9zdGJ5bmFtZShuZXRzbm1wX3ZhbGlkYXRvcl9jb250ZXh0KCksIG5hbWUsICZ2YWxfc3RhdHVzKTsKKyAgICBERUJVR01TR1RMKCgiZG5zOnNlYzp2YWwiLCAidmFsX3N0YXR1cyAlZCAvICVzOyB0cnVzdGVkOiAlZFxuIiwKKyAgICAgICAgICAgICAgICB2YWxfc3RhdHVzLCBwX3ZhbF9zdGF0dXModmFsX3N0YXR1cyksCisgICAgICAgICAgICAgICAgdmFsX2lzdHJ1c3RlZCh2YWxfc3RhdHVzKSkpOworICAgIGlmICghdmFsX2lzdHJ1c3RlZCh2YWxfc3RhdHVzKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgIlRoZSBhdXRoZW50aWNpdHkgb2YgRE5TIHJlc3BvbnNlIGlzIG5vdCB0cnVzdGVkICglcylcbiIsCisgICAgICAgICAgICAgICAgIHBfdmFsX3N0YXR1cyh2YWxfc3RhdHVzKSk7CisgICAgICAgIC8qKiBjb250aW51ZSBhbnl3YXlzIGlmIEROU1NFQ19XQVJOX09OTFkgaXMgc2V0ICovCisgICAgICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfRE5TU0VDX1dBUk5fT05MWSkpCisgICAgICAgICAgICBocCA9IE5VTEw7CisgICAgfQorICAgIGVsc2UgaWYgKHZhbF9kb2VzX25vdF9leGlzdCh2YWxfc3RhdHVzKSAmJiBocCkKKyAgICAgICAgaHAgPSBOVUxMOworI2Vsc2UKKyAgICBocCA9IGdldGhvc3RieW5hbWUobmFtZSk7CisjZW5kaWYKKyAgICBpZiAoaHAgPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieW5hbWUiLAorICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgcmVzb2x2ZSAlc1xuIiwgbmFtZSkpOworICAgIH0gZWxzZSBpZiAoaHAtPmhfYWRkcnR5cGUgIT0gQUZfSU5FVCkgeworICAgICAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieW5hbWUiLAorICAgICAgICAgICAgICAgICAgICAid2FybmluZzogcmVzcG9uc2UgZm9yICVzIG5vdCBBRl9JTkVUIVxuIiwgbmFtZSkpOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkbnM6Z2V0aG9zdGJ5bmFtZSIsCisgICAgICAgICAgICAgICAgICAgICIlcyByZXNvbHZlZCBva2F5XG4iLCBuYW1lKSk7CisgICAgfQorICAgIHJldHVybiBocDsKKyNlbHNlCisgICAgTkVUU05NUF9MT0dPTkNFKChMT0dfRVJSLCAiZ2V0aG9zdGJ5bmFtZSBub3QgYXZhaWxhYmxlIikpOworICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIEhBVkVfR0VUSE9TVEJZTkFNRSAqLworfQorCisvKioKKyAqIExvb2sgdXAgdGhlIGhvc3QgbmFtZSB2aWEgRE5TLgorICoKKyAqIEBwYXJhbVtpbl0gYWRkciBQb2ludGVyIHRvIHRoZSBhZGRyZXNzIHRvIHJlc29sdmUuIFRoaXMgYXJndW1lbnQgcG9pbnRzIGUuZy4KKyAqICAgdG8gYSBzdHJ1Y3QgaW5fYWRkciBmb3IgQUZfSU5FVCBvciB0byBhIHN0cnVjdCBpbjZfYWRkciBmb3IgQUZfSU5FVDYuCisgKiBAcGFyYW1baW5dIGxlbiAgTGVuZ3RoIGluIGJ5dGVzIG9mICphZGRyLgorICogQHBhcmFtW2luXSB0eXBlIEFkZHJlc3MgZmFtaWx5LCBlLmcuIEFGX0lORVQgb3IgQUZfSU5FVDYuCisgKgorICogQHJldHVybiBQb2ludGVyIHRvIGEgaG9zdGVudCBzdHJ1Y3R1cmUgaWYgYWRkcmVzcyBsb29rdXAgc3VjY2VlZGVkIG9yIE5VTEwKKyAqICAgaWYgdGhlIGxvb2t1cCBmYWlsZWQuCisgKgorICogQHNlZSBTZWUgYWxzbyB0aGUgZ2V0aG9zdGJ5YWRkcigpIG1hbiBwYWdlLgorICovCitzdHJ1Y3QgaG9zdGVudCAqCituZXRzbm1wX2dldGhvc3RieWFkZHIoY29uc3Qgdm9pZCAqYWRkciwgc29ja2xlbl90IGxlbiwgaW50IHR5cGUpCit7CisjaWYgSEFWRV9HRVRIT1NUQllBRERSCisgICAgc3RydWN0IGhvc3RlbnQgKmhwID0gTlVMTDsKKyAgICBjaGFyIGJ1Zls2NF07CisKKyAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieWFkZHIiLCAicmVzb2x2aW5nICVzXG4iLAorICAgICAgICAgICAgICAgIGluZXRfbnRvcCh0eXBlLCBhZGRyLCBidWYsIHNpemVvZihidWYpKSkpOworCisjaWZkZWYgRE5TU0VDX0xPQ0FMX1ZBTElEQVRJT04KKyAgICB2YWxfc3RhdHVzX3QgdmFsX3N0YXR1czsKKyAgICBocCA9IHZhbF9nZXRob3N0YnlhZGRyKG5ldHNubXBfdmFsaWRhdG9yX2NvbnRleHQoKSwgYWRkciwgbGVuLCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbF9zdGF0dXMpOworICAgIERFQlVHTVNHVEwoKCJkbnM6c2VjOnZhbCIsICJ2YWxfc3RhdHVzICVkIC8gJXM7IHRydXN0ZWQ6ICVkXG4iLAorICAgICAgICAgICAgICAgIHZhbF9zdGF0dXMsIHBfdmFsX3N0YXR1cyh2YWxfc3RhdHVzKSwKKyAgICAgICAgICAgICAgICB2YWxfaXN0cnVzdGVkKHZhbF9zdGF0dXMpKSk7CisgICAgaWYgKCF2YWxfaXN0cnVzdGVkKHZhbF9zdGF0dXMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAiVGhlIGF1dGhlbnRpY2l0eSBvZiBETlMgcmVzcG9uc2UgaXMgbm90IHRydXN0ZWQgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgcF92YWxfc3RhdHVzKHZhbF9zdGF0dXMpKTsKKyAgICAgICAgLyoqIGNvbnRpbnVlIGFueXdheXMgaWYgRE5TU0VDX1dBUk5fT05MWSBpcyBzZXQgKi8KKyAgICAgICAgaWYgKCFuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9ETlNTRUNfV0FSTl9PTkxZKSkKKyAgICAgICAgICAgIGhwID0gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAodmFsX2RvZXNfbm90X2V4aXN0KHZhbF9zdGF0dXMpICYmIGhwKQorICAgICAgICBocCA9IE5VTEw7CisjZWxzZQorICAgIGhwID0gZ2V0aG9zdGJ5YWRkcihhZGRyLCBsZW4sIHR5cGUpOworI2VuZGlmCisgICAgaWYgKGhwID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImRuczpnZXRob3N0YnlhZGRyIiwgImNvdWxkbid0IHJlc29sdmUgYWRkclxuIikpOworICAgIH0gZWxzZSBpZiAoaHAtPmhfYWRkcnR5cGUgIT0gQUZfSU5FVCkgeworICAgICAgICBERUJVR01TR1RMKCgiZG5zOmdldGhvc3RieWFkZHIiLAorICAgICAgICAgICAgICAgICAgICAid2FybmluZzogcmVzcG9uc2UgZm9yIGFkZHIgbm90IEFGX0lORVQhXG4iKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImRuczpnZXRob3N0YnlhZGRyIiwgImFkZHIgcmVzb2x2ZWQgb2theVxuIikpOworICAgIH0KKyAgICByZXR1cm4gaHA7CisjZWxzZQorICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgImdldGhvc3RieWFkZHIgbm90IGF2YWlsYWJsZSIpKTsKKyAgICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogI2lmbmRlZiBIQVZFX1NUUk5DQVNFQ01QCkBAIC04NTUsNDEgKzEwODksMzIgQEAKIH0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFWRV9TRVRFTlYgKi8KIAotLyogcmV0dXJucyBjZW50aXNlY29uZHMgKi8KK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihjYWxjdWxhdGVfdGltZV9kaWZmLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUxDVUxBVEVfVElNRV9ESUZGCisvKioKKyAqIENvbXB1dGUgKCpub3cgLSAqdGhlbikgaW4gY2VudGlzZWNvbmRzLgorICovCiBpbnQKIGNhbGN1bGF0ZV90aW1lX2RpZmYoY29uc3Qgc3RydWN0IHRpbWV2YWwgKm5vdywgY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRoZW4pCiB7Ci0gICAgc3RydWN0IHRpbWV2YWwgIHRtcCwgZGlmZjsKLSAgICBtZW1jcHkoJnRtcCwgbm93LCBzaXplb2Yoc3RydWN0IHRpbWV2YWwpKTsKLSAgICB0bXAudHZfc2VjLS07Ci0gICAgdG1wLnR2X3VzZWMgKz0gMTAwMDAwMEw7Ci0gICAgZGlmZi50dl9zZWMgPSB0bXAudHZfc2VjIC0gdGhlbi0+dHZfc2VjOwotICAgIGRpZmYudHZfdXNlYyA9IHRtcC50dl91c2VjIC0gdGhlbi0+dHZfdXNlYzsKLSAgICBpZiAoZGlmZi50dl91c2VjID4gMTAwMDAwMEwpIHsKLSAgICAgICAgZGlmZi50dl91c2VjIC09IDEwMDAwMDBMOwotICAgICAgICBkaWZmLnR2X3NlYysrOwotICAgIH0KLSAgICByZXR1cm4gKChkaWZmLnR2X3NlYyAqIDEwMCkgKyAoZGlmZi50dl91c2VjIC8gMTAwMDApKTsKLX0KKyAgICBzdHJ1Y3QgdGltZXZhbCAgZGlmZjsKIAotLyogcmV0dXJucyBkaWZmIGluIHJvdW5kZWQgc2Vjb25kcyAqLworICAgIE5FVFNOTVBfVElNRVJTVUIobm93LCB0aGVuLCAmZGlmZik7CisgICAgcmV0dXJuIChpbnQpKGRpZmYudHZfc2VjICogMTAwICsgZGlmZi50dl91c2VjIC8gMTAwMDApOworfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FMQ1VMQVRFX1RJTUVfRElGRiAqLworCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfQ0FMQ1VMQVRFX1NFQ1RJTUVfRElGRgorLyoqIENvbXB1dGUgcm91bmRlZCAoKm5vdyAtICp0aGVuKSBpbiBzZWNvbmRzLiAqLwogdV9pbnQKIGNhbGN1bGF0ZV9zZWN0aW1lX2RpZmYoY29uc3Qgc3RydWN0IHRpbWV2YWwgKm5vdywgY29uc3Qgc3RydWN0IHRpbWV2YWwgKnRoZW4pCiB7Ci0gICAgc3RydWN0IHRpbWV2YWwgIHRtcCwgZGlmZjsKLSAgICBtZW1jcHkoJnRtcCwgbm93LCBzaXplb2Yoc3RydWN0IHRpbWV2YWwpKTsKLSAgICB0bXAudHZfc2VjLS07Ci0gICAgdG1wLnR2X3VzZWMgKz0gMTAwMDAwMEw7Ci0gICAgZGlmZi50dl9zZWMgPSB0bXAudHZfc2VjIC0gdGhlbi0+dHZfc2VjOwotICAgIGRpZmYudHZfdXNlYyA9IHRtcC50dl91c2VjIC0gdGhlbi0+dHZfdXNlYzsKLSAgICBpZiAoZGlmZi50dl91c2VjID49IDEwMDAwMDBMKSB7Ci0gICAgICAgIGRpZmYudHZfdXNlYyAtPSAxMDAwMDAwTDsKLSAgICAgICAgZGlmZi50dl9zZWMrKzsKLSAgICB9Ci0gICAgaWYgKGRpZmYudHZfdXNlYyA+PSA1MDAwMDBMKQotICAgICAgICByZXR1cm4gZGlmZi50dl9zZWMgKyAxOwotICAgIHJldHVybiAgZGlmZi50dl9zZWM7CisgICAgc3RydWN0IHRpbWV2YWwgIGRpZmY7CisKKyAgICBORVRTTk1QX1RJTUVSU1VCKG5vdywgdGhlbiwgJmRpZmYpOworICAgIHJldHVybiBkaWZmLnR2X3NlYyArIChkaWZmLnR2X3VzZWMgPj0gNTAwMDAwTCk7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9DQUxDVUxBVEVfU0VDVElNRV9ESUZGICovCiAKICNpZm5kZWYgSEFWRV9TVFJDQVNFU1RSCiAvKgpAQCAtMTE0NSw2ICsxMzcwLDE3IEBACiAjZW5kaWYKIH0KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN0cl90b191aWQsIHVzZXJfaW5mb3JtYXRpb24pCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSX1RPX1VJRAorLyoqCisgKiBDb252ZXJ0IGEgdXNlciBuYW1lIG9yIG51bWJlciBpbnRvIG51bWVyaWMgZm9ybS4KKyAqCisgKiBAcGFyYW1baW5dIHVzZXJvcnVpZCBFaXRoZXIgYSBVbml4IHVzZXIgbmFtZSBvciB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24KKyAqICAgb2YgYSB1c2VyIG51bWJlci4KKyAqCisgKiBAcmV0dXJuIEVpdGhlciBhIHVzZXIgbnVtYmVyID4gMCBvciAwIGlmIHVzZXJvcnVpZCBpcyBub3QgYSB2YWxpZCB1c2VyCisgKiAgIG5hbWUsIG5vdCBhIHZhbGlkIHVzZXIgbnVtYmVyIG9yIHRoZSBuYW1lIG9mIHRoZSByb290IHVzZXIuCisgKi8KIGludCBuZXRzbm1wX3N0cl90b191aWQoY29uc3QgY2hhciAqdXNlcm9ydWlkKSB7CiAgICAgaW50IHVpZDsKICNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKQEAgLTExNTMsMzcgKzEzODksNDkgQEAKIAogICAgIHVpZCA9IGF0b2kodXNlcm9ydWlkKTsKIAotICAgIGlmICggdWlkID09IDAgKSB7CisgICAgaWYgKHVpZCA9PSAwKSB7CiAjaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICi0gICAgICAgIHB3ZCA9IGdldHB3bmFtKCB1c2Vyb3J1aWQgKTsKLSAgICAgICAgaWYgKHB3ZCkKLSAgICAgICAgICAgIHVpZCA9IHB3ZC0+cHdfdWlkOwotICAgICAgICBlbHNlCisgICAgICAgIHB3ZCA9IGdldHB3bmFtKHVzZXJvcnVpZCk7CisgICAgICAgIHVpZCA9IHB3ZCA/IHB3ZC0+cHdfdWlkIDogMDsKKyAgICAgICAgZW5kcHdlbnQoKTsKICNlbmRpZgorICAgICAgICBpZiAodWlkID09IDApCiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIkNhbid0IGlkZW50aWZ5IHVzZXIgKCVzKS5cbiIsIHVzZXJvcnVpZCk7CiAgICAgfQogICAgIHJldHVybiB1aWQ7CiAgICAgCiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9TVFJfVE9fVUlEICovCiAKLWludCBuZXRzbm1wX3N0cl90b19naWQoY29uc3QgY2hhciAqZ3JvdXBvcmdpZCkgeworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHN0cl90b19naWQsIHVzZXJfaW5mb3JtYXRpb24pCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSX1RPX0dJRAorLyoqCisgKiBDb252ZXJ0IGEgZ3JvdXAgbmFtZSBvciBudW1iZXIgaW50byBudW1lcmljIGZvcm0uCisgKgorICogQHBhcmFtW2luXSBncm91cG9yZ2lkIEVpdGhlciBhIFVuaXggZ3JvdXAgbmFtZSBvciB0aGUgQVNDSUkgcmVwcmVzZW50YXRpb24KKyAqICAgb2YgYSBncm91cCBudW1iZXIuCisgKgorICogQHJldHVybiBFaXRoZXIgYSBncm91cCBudW1iZXIgPiAwIG9yIDAgaWYgZ3JvdXBvcmdpZCBpcyBub3QgYSB2YWxpZCBncm91cAorICogICBuYW1lLCBub3QgYSB2YWxpZCBncm91cCBudW1iZXIgb3IgdGhlIHJvb3QgZ3JvdXAuCisgKi8KK2ludCBuZXRzbm1wX3N0cl90b19naWQoY29uc3QgY2hhciAqZ3JvdXBvcmdpZCkKK3sKICAgICBpbnQgZ2lkOwotI2lmIEhBVkVfR0VUR1JOQU0gJiYgSEFWRV9HUlBfSAotICAgIHN0cnVjdCBncm91cCAgKmdycDsKLSNlbmRpZgogCiAgICAgZ2lkID0gYXRvaShncm91cG9yZ2lkKTsKIAotICAgIGlmICggZ2lkID09IDAgKSB7CisgICAgaWYgKGdpZCA9PSAwKSB7CiAjaWYgSEFWRV9HRVRHUk5BTSAmJiBIQVZFX0dSUF9ICi0gICAgICAgIGdycCA9IGdldGdybmFtKCBncm91cG9yZ2lkICk7Ci0gICAgICAgIGlmIChncnApCi0gICAgICAgICAgICBnaWQgPSBncnAtPmdyX2dpZDsKLSAgICAgICAgZWxzZQorICAgICAgICBzdHJ1Y3QgZ3JvdXAgICpncnA7CisKKyAgICAgICAgZ3JwID0gZ2V0Z3JuYW0oZ3JvdXBvcmdpZCk7CisgICAgICAgIGdpZCA9IGdycCA/IGdycC0+Z3JfZ2lkIDogMDsKKyAgICAgICAgZW5kZ3JlbnQoKTsKICNlbmRpZgotICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJDYW4ndCBpZGVudGlmeSBncm91cCAoJXMpLlxuIiwKLSAgICAgICAgICAgICAgICAgICAgIGdyb3Vwb3JnaWQpOworICAgICAgICBpZiAoZ2lkID09IDApCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIkNhbid0IGlkZW50aWZ5IGdyb3VwICglcykuXG4iLCBncm91cG9yZ2lkKTsKICAgICB9CiAKICAgICByZXR1cm4gZ2lkOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSX1RPX0dJRCAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi90ZXN0X2JpbmFyeV9hcnJheS5jIGIvc25tcGxpYi90ZXN0X2JpbmFyeV9hcnJheS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGIxZjBlLi4wMDAwMDAwCi0tLSBhL3NubXBsaWIvdGVzdF9iaW5hcnlfYXJyYXkuYworKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0KLSNpZiBIQVZFX0lPX0gKLSNpbmNsdWRlIDxpby5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpZiBIQVZFX1NURExJQl9ICi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX01BTExPQ19ICi0jaW5jbHVkZSA8bWFsbG9jLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX1NUUklOR19ICi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+Ci0KLSNkZWZpbmUgVEVTVF9TSVpFIDcKLQotdm9pZAotcHJpbnRfaW50KG5ldHNubXBfaW5kZXggKmksIHZvaWQgKnYpCi17Ci0gICAgcHJpbnRmKCJpdGVtICVwID0gJWxkXG4iLCBpLCBpLT5vaWRzWzBdKTsKLX0KLQotaW50Ci10ZXN0X2ludCh2b2lkKQotewotICAgIG9pZCBvMSA9IDE7Ci0gICAgb2lkIG8yID0gMjsKLSAgICBvaWQgbzMgPSA2OwotICAgIG9pZCBvNCA9IDg7Ci0gICAgb2lkIG81ID0gOTsKLSAgICBvaWQgb3ggPSA3OwotICAgIG9pZCBveSA9IDEwOwotICAgIG5ldHNubXBfaW5kZXggaTEsaTIsaTMsaTQsaTUsaXgsaXksICppcDsKLSAgICBuZXRzbm1wX2luZGV4ICphW1RFU1RfU0laRV0gPSB7ICZpMSwgJmkyLCAmaTMsICZpeCwgJmk0LCAmaTUsICZpeSB9OwotICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gbmV0c25tcF9jb250YWluZXJfZ2V0X2JpbmFyeV9hcnJheSgpOwotICAgIGludCBpOwotCi0gICAgYy0+Y29tcGFyZSA9IG5ldHNubXBfY29tcGFyZV9uZXRzbm1wX2luZGV4OwotICAgIAotICAgIGkxLm9pZHMgPSAmbzE7Ci0gICAgaTIub2lkcyA9ICZvMjsKLSAgICBpMy5vaWRzID0gJm8zOwotICAgIGk0Lm9pZHMgPSAmbzQ7Ci0gICAgaTUub2lkcyA9ICZvNTsKLSAgICBpeC5vaWRzID0gJm94OwotICAgIGl5Lm9pZHMgPSAmb3k7Ci0gICAgaTEubGVuID0gaTIubGVuID0gaTMubGVuID0gaTQubGVuID0gaTUubGVuID0gaXgubGVuID0gaXkubGVuID0gMTsKLQotICAgIHByaW50ZigiQ3JlYXRpbmcgY29udGFpbmVyLi4uXG4iKTsKLQotICAgIHByaW50ZigiSW5zZXJ0aW5nIGRhdGEuLi5cbiIpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTQpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTIpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTMpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTEpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYywmaTUpOwotCi0gICAgcHJpbnRmKCJGb3IgZWFjaC4uLlxuIik7Ci0gICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGMsIHByaW50X2ludCwgTlVMTCk7Ci0gICAgcHJpbnRmKCJEb25lLlxuIik7Ci0KLSAgICBwcmludGYoIlxuIik7Ci0gICAgaXAgPSBDT05UQUlORVJfRklSU1QoYyk7Ci0gICAgcHJpbnRmKCJGaW5kIGZpcnN0ID0gJXAgJWxkXG4iLGlwLCBpcC0+b2lkc1swXSk7Ci0gICAgd2hpbGUoIGlwICkgewotICAgICAgICBpcCA9IENPTlRBSU5FUl9ORVhUKGMsaXApOwotICAgICAgICBpZihpcCkKLSAgICAgICAgICAgIHByaW50ZigiRmluZCBuZXh0ID0gJXAgJWxkXG4iLGlwLCBpcC0+b2lkc1swXSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHByaW50ZigiRmluZCBuZXh0ID0gJXNcbiIsaXApOwotICAgIH0KLQotICAgIGZvciggaT0wOyBpIDwgVEVTVF9TSVpFOyArK2kpIHsKLSAgICAgICAgcHJpbnRmKCJcbiIpOwotICAgICAgICBpcCA9IENPTlRBSU5FUl9GSU5EKGMsYVtpXSk7Ci0gICAgICAgIHByaW50ZigiRmluZCAlbGQgPSAlcCAlbGRcbiIsIGFbaV0tPm9pZHNbMF0sIGlwLCBpcCA/IGlwLT5vaWRzWzBdIDogMCk7Ci0gICAgICAgIGlwID0gQ09OVEFJTkVSX05FWFQoYyxhW2ldKTsKLSAgICAgICAgcHJpbnRmKCJOZXh0ICVsZCA9ICVwICVsZFxuIiwgYVtpXS0+b2lkc1swXSwgaXAsIGlwID8gaXAtPm9pZHNbMF0gOiAwKTsKLSAgICB9Ci0KLSAgICBwcmludGYoIkRvbmUuXG4iKTsKLQotICAgIHJldHVybiAwOwotfQotCi12b2lkCi1wcmludF9zdHJpbmcoY2hhciAqaSwgdm9pZCAqdikKLXsKLSAgICBwcmludGYoIml0ZW0gJXNcbiIsIGkpOwotfQotCi1pbnQKLW15X3N0cmNtcChjaGFyICpsaHMsIGNoYXIgKnJocykKLXsKLSAgICBpbnQgcmMgPSBzdHJjbXAobGhzLHJocyk7Ci0vKiAgICAgIHByaW50ZigiJXMgJWQgJXNcbiIsbGhzLCByYywgcmhzKTsgKi8KLSAgICByZXR1cm4gcmM7Ci19Ci0KLWludAotdGVzdF9zdHJpbmcoKQotewotICAgIGNvbnN0IGNoYXIgKm8xID0gInplYnJhIjsKLSAgICBjb25zdCBjaGFyICpvMiA9ICJiLXR3byI7Ci0gICAgY29uc3QgY2hhciAqbzMgPSAiYiI7Ci0gICAgY29uc3QgY2hhciAqbzQgPSAiY2VkYXIiOwotICAgIGNvbnN0IGNoYXIgKm81ID0gImFscGhhIjsKLSAgICBjb25zdCBjaGFyICpveCA9ICJkZXYiOwotICAgIGNvbnN0IGNoYXIgKm95ID0gImFhIjsKLSAgICBjb25zdCBjaGFyICogaXA7Ci0gICAgCi0gICAgY29uc3QgY2hhciAqYVtURVNUX1NJWkVdID0geyBvMSwgbzIsIG8zLCBveCwgbzQsIG81LCBveSB9OwotICAgIG5ldHNubXBfY29udGFpbmVyICpjID0gbmV0c25tcF9jb250YWluZXJfZ2V0X2JpbmFyeV9hcnJheSgpOwotICAgIGludCBpOwotCi0gICAgYy0+Y29tcGFyZSA9IG15X3N0cmNtcDsKLSAgICAKLSAgICBwcmludGYoIkNyZWF0aW5nIGNvbnRhaW5lci4uLlxuIik7Ci0KLSAgICBwcmludGYoIkluc2VydGluZyBkYXRhLi4uXG4iKTsKLSAgICBDT05UQUlORVJfSU5TRVJUKGMsbzQpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYyxvMik7Ci0gICAgQ09OVEFJTkVSX0lOU0VSVChjLG8zKTsKLSAgICBDT05UQUlORVJfSU5TRVJUKGMsbzEpOwotICAgIENPTlRBSU5FUl9JTlNFUlQoYyxvNSk7Ci0gICAgcHJpbnRmKCJcbiIpOwotICAgIHByaW50ZigiRm9yIGVhY2guLi5cbiIpOwotICAgIENPTlRBSU5FUl9GT1JfRUFDSChjLCBwcmludF9zdHJpbmcsIE5VTEwpOwotICAgIHByaW50ZigiRG9uZS5cbiIpOwotCi0gICAgcHJpbnRmKCJcbiIpOwotICAgIGlwID0gQ09OVEFJTkVSX0ZJUlNUKGMpOwotICAgIHByaW50ZigiRmluZCBmaXJzdCA9ICVzXG4iLGlwKTsKLSAgICB3aGlsZSggaXAgKSB7Ci0gICAgICAgIGlwID0gQ09OVEFJTkVSX05FWFQoYyxpcCk7Ci0gICAgICAgIHByaW50ZigiRmluZCBuZXh0ID0gJXNcbiIsaXApOwotICAgIH0KLQotICAgIGZvciggaT0wOyBpIDwgVEVTVF9TSVpFOyArK2kpIHsKLSAgICAgICAgcHJpbnRmKCJcbiIpOwotICAgICAgICBpcCA9IENPTlRBSU5FUl9GSU5EKGMsYVtpXSk7Ci0gICAgICAgIHByaW50ZigiRmluZCAlcyA9ICVzXG4iLCBhW2ldLCBpcCk7Ci0gICAgICAgIGlwID0gQ09OVEFJTkVSX05FWFQoYyxhW2ldKTsKLSAgICAgICAgcHJpbnRmKCJOZXh0ICVzID0gJXNcbiIsIGFbaV0sIGlwKTsKLSAgICB9Ci0KLSAgICBwcmludGYoIkRvbmUuXG4iKTsKLQotICAgIHJldHVybiAwOwotfQotCi1pbnQKLW1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotewotCi0gICAgdGVzdF9pbnQoKTsKLSAgICB0ZXN0X3N0cmluZygpOwotfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90ZXh0X3V0aWxzLmMgYi9zbm1wbGliL3RleHRfdXRpbHMuYwppbmRleCA3MTQ4ZGNjLi4zMjU5NmJlIDEwMDY0NAotLS0gYS9zbm1wbGliL3RleHRfdXRpbHMuYworKysgYi9zbm1wbGliL3RleHRfdXRpbHMuYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNDIsNyArNDMsMTQgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3RleHRfdXRpbHMuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRleHRfdXRpbHMsIGxpYm5ldHNubXApCiAKK25ldHNubXBfZmVhdHVyZV9wcm92aWRlKHRleHRfdXRpbHMpCisjaWZkZWYgTkVUU05NUF9GRUFUVVJFX1JFUVVJUkVfVEVYVF9VVElMUworbmV0c25tcF9mZWF0dXJlX3JlcXVpcmUoZmlsZV91dGlscykKKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVRVUlSRV9URVhUX1VUSUxTICovCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URVhUX1VUSUxTCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIFByb3RvdHlwZXMKQEAgLTE0Nyw2ICsxNTUsOCBAQAogICAgIHJldHVybiBjOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodGV4dF90b2tlbl9jb250YWluZXJfZnJvbV9maWxlLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9URVhUX1RPS0VOX0NPTlRBSU5FUl9GUk9NX0ZJTEUKIG5ldHNubXBfY29udGFpbmVyICoKIG5ldHNubXBfdGV4dF90b2tlbl9jb250YWluZXJfZnJvbV9maWxlKGNvbnN0IGNoYXIgKmZpbGUsIHVfaW50IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNpbiwgdm9pZCAqY29udGV4dCkKQEAgLTE5OSw2ICsyMDksNyBAQAogICAgIAogICAgIHJldHVybiBjOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVEVYVF9UT0tFTl9DT05UQUlORVJfRlJPTV9GSUxFICovCiAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTUxMCwzICs1MjEsNiBAQAogICAgIHJldHVybiBQTUxQX1JDX01FTU9SWV9VU0VEOwogfQogCisjZWxzZSAgLyogISBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RFWFRfVVRJTFMgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQodGV4dF91dGlscyk7CisjZW5kaWYgLyogISBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1RFWFRfVVRJTFMgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvdG9vbHMuYyBiL3NubXBsaWIvdG9vbHMuYwppbmRleCBmOTk1MWI5Li4yOWU1ZmVmIDEwMDY0NAotLS0gYS9zbm1wbGliL3Rvb2xzLmMKKysrIGIvc25tcGxpYi90b29scy5jCkBAIC0xNCw2ICsxNCw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC00OCw2ICs0OSw5IEBACiAjaWZkZWYgSEFWRV9BUlBBX0lORVRfSAogI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogI2VuZGlmCisjaWZkZWYgSEFWRV9WQUxHUklORF9NRU1DSEVDS19ICisjaW5jbHVkZSA8dmFsZ3JpbmQvbWVtY2hlY2suaD4KKyNlbmRpZgogI2lmZGVmIGN5Z3dpbgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgpAQCAtNjgsNiArNzIsMjMgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L21pYi5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaD4KIAorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHRvb2xzX2FsbCwgbGlibmV0c25tcCkKKworbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV93cmFwcGVycywgdG9vbHNfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHZhbGdyaW5kLCB0b29sc19hbGwpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2Yoc3RyaW5nX3RpbWVfdG9fc2VjcywgdG9vbHNfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG5ldHNubXBfY2hlY2tfZGVmaW5lZG5lc3MsIHZhbGdyaW5kKQorCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YodWF0aW1lX3JlYWR5LCBuZXRzbm1wX3VudXNlZCkKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0aW1ldmFsX3R0aWNrcywgbmV0c25tcF91bnVzZWQpCisKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtZW1vcnlfc3RyZHVwLCBtZW1vcnlfd3JhcHBlcnMpCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YobWVtb3J5X2NhbGxvYywgbWVtb3J5X3dyYXBwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV9tYWxsb2MsIG1lbW9yeV93cmFwcGVycykKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZihtZW1vcnlfcmVhbGxvYywgbWVtb3J5X3dyYXBwZXJzKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKG1lbW9yeV9mcmVlLCBtZW1vcnlfd3JhcHBlcnMpCisKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfV1JBUFBFUlMKIC8qKgogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgZm9yIHRoZSBzdHJkdXAgZnVuY3Rpb24uCiAgKgpAQCAtNzgsNiArOTksOCBAQAogewogICAgIHJldHVybiBzdHJkdXAocHRyKTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9TVFJEVVAgKi8KKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfQ0FMTE9DCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGZvciB0aGUgY2FsbG9jIGZ1bmN0aW9uLgogICovCkBAIC04NSw3ICsxMDgsOCBAQAogewogICAgIHJldHVybiBjYWxsb2Mobm1lbWIsIHNpemUpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfQ0FMTE9DICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUVNT1JZX01BTExPQwogLyoqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGEgd3JhcHBlciBmb3IgdGhlIG1hbGxvYyBmdW5jdGlvbi4KICAqLwpAQCAtOTMsNyArMTE3LDggQEAKIHsKICAgICByZXR1cm4gbWFsbG9jKHNpemUpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfTUFMTE9DICovCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTUVNT1JZX1JFQUxMT0MKIC8qKgogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgZm9yIHRoZSByZWFsbG9jIGZ1bmN0aW9uLgogICovCkBAIC0xMDEsNyArMTI2LDggQEAKIHsKICAgICByZXR1cm4gcmVhbGxvYyhwdHIsIHNpemUpOwogfQotCisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfUkVBTExPQyAqLworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX01FTU9SWV9GUkVFCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSB3cmFwcGVyIGZvciB0aGUgZnJlZSBmdW5jdGlvbi4KICAqIEl0IGNhbGxzIGZyZWUgb25seSBpZiB0aGUgY2FsbGluZyBwYXJhbWV0ZXIgaGFzIGEgbm9uLXplcm8gdmFsdWUuCkBAIC0xMTEsNiArMTM3LDcgQEAKICAgICBpZiAocHRyKQogICAgICAgICBmcmVlKHB0cik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9NRU1PUllfRlJFRSAqLwogCiAvKioKICAqIFRoaXMgZnVuY3Rpb24gaW5jcmVhc2UgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIGF0IGJ5ICpidWYsIHdoaWNoIGlzCkBAIC0xODAsNiArMjA3LDkgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmICghKmJ1ZikKKyAgICAgICAgcmV0dXJuIDA7CisKICAgICBzdHJjcHkoKGNoYXIgKikgKCpidWYgKyAqb3V0X2xlbiksIChjb25zdCBjaGFyICopIHMpOwogICAgICpvdXRfbGVuICs9IHN0cmxlbigoY2hhciAqKSAoKmJ1ZiArICpvdXRfbGVuKSk7CiAgICAgcmV0dXJuIDE7CkBAIC0yMDAsNiArMjMwLDcgQEAKIAogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgZnJlZV96ZXJvKCkgKi8KIAorI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VTTV9TQ0FQSQogLyoqCiAgKiBSZXR1cm5zIHBvaW50ZXIgdG8gYWxsb2NhZWQgJiBzZXQgYnVmZmVyIG9uIHN1Y2Nlc3MsIHNpemUgY29udGFpbnMKICAqIG51bWJlciBvZiByYW5kb20gYnl0ZXMgZmlsbGVkLiAgYnVmIGlzIE5VTEwgYW5kICpzaXplIHNldCB0byBLTVQKQEAgLTIzMCw2ICsyNjEsNyBAQAogICAgIHJldHVybiBidWY7CiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIG1hbGxvY19yYW5kb20oKSAqLworI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVVNNX1NDQVBJICovCiAKIC8qKgogICogRHVwbGljYXRlcyBhIG1lbW9yeSBibG9jay4KQEAgLTI1Miw2ICsyODQsMzkgQEAKICAgICByZXR1cm4gdG87CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBuZXRzbm1wX21lbWR1cCgpICovCiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9ORVRTTk1QX0NIRUNLX0RFRklORURORVNTCisvKioKKyAqIFdoZW4gcnVubmluZyB1bmRlciBWYWxncmluZCwgY2hlY2sgd2hldGhlciBhbGwgYnl0ZXMgaW4gdGhlIHJhbmdlIFtwYWNrZXQsCisgKiBwYWNrZXQrbGVuZ3RoKSBhcmUgZGVmaW5lZC4gTGV0IFZhbGdyaW5kIHByaW50IGEgYmFja3RyYWNlIGlmIG9uZSBvciBtb3JlCisgKiBieXRlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgdmFsdWVzIGhhdmUgYmVlbiBmb3VuZC4gVGhpcyBmdW5jdGlvbiBjYW4gaGVscCB0bworICogZmluZCB0aGUgY2F1c2Ugb2YgdW5kZWZpbmVkIHZhbHVlIGVycm9ycyBpZiAtLXRyYWNrLW9yaWdpbnM9eWVzIGlzIG5vdAorICogc3VmZmljaWVudC4gRG9lcyBub3RoaW5nIHdoZW4gbm90IHJ1bm5pbmcgdW5kZXIgVmFsZ3JpbmQuCisgKgorICogTm90ZTogdGhpcyByZXF1aXJlcyBhIGZhaXJseSByZWNlbnQgdmFsZ3JpbmQuCisgKi8KK3ZvaWQKK25ldHNubXBfY2hlY2tfZGVmaW5lZG5lc3MoY29uc3Qgdm9pZCAqcGFja2V0LCBzaXplX3QgbGVuZ3RoKQoreworI2lmIGRlZmluZWQoX19WQUxHUklORF9NQUpPUl9fKSAmJiBkZWZpbmVkKF9fVkFMR1JJTkRfTUlOT1JfXykgICBcCisgICAgJiYgKF9fVkFMR1JJTkRfTUFKT1JfXyA+IDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfHwgKF9fVkFMR1JJTkRfTUFKT1JfXyA9PSAzICYmIF9fVkFMR1JJTkRfTUlOT1JfXyA+PSA2KSkKKworICAgIGlmIChSVU5OSU5HX09OX1ZBTEdSSU5EKSB7CisgICAgICAgIGludCBpOworICAgICAgICBjaGFyIHZiaXRzOworCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKFZBTEdSSU5EX0dFVF9WQklUUygoY29uc3QgY2hhciAqKXBhY2tldCArIGksICZ2Yml0cywgMSkgPT0gMQorICAgICAgICAgICAgICAgICYmIHZiaXRzKQorICAgICAgICAgICAgICAgIFZBTEdSSU5EX1BSSU5URl9CQUNLVFJBQ0UoIlVuZGVmaW5lZDogYnl0ZSAlZC8lZCIsIGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisKKyNlbmRpZgorfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfTkVUU05NUF9DSEVDS19ERUZJTkVETkVTUyAqLworCiAvKiogY29waWVzIGEgKHBvc3NpYmxlKSB1bnRlcm1pbmF0ZWQgc3RyaW5nIG9mIGEgZ2l2ZW4gbGVuZ3RoIGludG8gYQogICogIG5ldyBidWZmZXIgYW5kIG51bGwgdGVybWluYXRlcyBpdCBhcyB3ZWxsIChuZXcgYnVmZmVyIE1BWSBiZSBvbmUKICAqICBieXRlIGxvbmdlciB0byBhY2NvdW50IGZvciB0aGlzICovCkBAIC0zNzAsMTEgKzQzNSwxNCBAQAogaGV4X3RvX2JpbmFyeTIoY29uc3QgdV9jaGFyICogaW5wdXQsIHNpemVfdCBsZW4sIGNoYXIgKipvdXRwdXQpCiB7CiAgICAgdV9pbnQgICAgICAgICAgIG9sZW4gPSAobGVuIC8gMikgKyAobGVuICUgMik7Ci0gICAgY2hhciAgICAgICAgICAgKnMgPSAoY2hhciAqKSBjYWxsb2MoMSwgKG9sZW4pID8gb2xlbiA6IDEpLCAqb3AgPSBzOworICAgIGNoYXIgICAgICAgICAgICpzID0gY2FsbG9jKDEsIG9sZW4gPyBvbGVuIDogMSksICpvcCA9IHM7CiAgICAgY29uc3QgdV9jaGFyICAgKmlwID0gaW5wdXQ7CiAKIAogICAgICpvdXRwdXQgPSBOVUxMOworICAgIGlmICghcykKKyAgICAgICAgZ290byBoZXhfdG9fYmluYXJ5Ml9xdWl0OworCiAgICAgKm9wID0gMDsKICAgICBpZiAobGVuICUgMikgewogICAgICAgICBpZiAoIWlzeGRpZ2l0KCppcCkpCkBAIC0zODMsNyArNDUxLDcgQEAKICAgICAgICAgaXArKzsKICAgICB9CiAKLSAgICB3aGlsZSAoaXAgLSBpbnB1dCA8IChpbnQpIGxlbikgeworICAgIHdoaWxlIChpcCA8IGlucHV0ICsgbGVuKSB7CiAgICAgICAgIGlmICghaXN4ZGlnaXQoKmlwKSkKICAgICAgICAgICAgIGdvdG8gaGV4X3RvX2JpbmFyeTJfcXVpdDsKICAgICAgICAgKm9wID0gSEVYMlZBTCgqaXApIDw8IDQ7CkBAIC04MDYsOCArODc0LDExIEBACiAKIAogLyoqCi0gKiBjcmVhdGUgYSBuZXcgdGltZSBtYXJrZXIuCi0gKiBOT1RFOiBDYWxsZXIgbXVzdCBmcmVlIHRpbWUgbWFya2VyIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KKyAqIENyZWF0ZSBhIG5ldyByZWFsLXRpbWUgbWFya2VyLgorICoKKyAqIFxkZXByZWNhdGVkIFVzZSBuZXRzbm1wX3NldF9tb25vdG9uaWNfbWFya2VyKCkgaW5zdGVhZC4KKyAqCisgKiBAbm90ZSBDYWxsZXIgbXVzdCBmcmVlIHRpbWUgbWFya2VyIHdoZW4gbm8gbG9uZ2VyIG5lZWRlZC4KICAqLwogbWFya2VyX3QKIGF0aW1lX25ld01hcmtlcih2b2lkKQpAQCAtODE4LDcgKzg4OSw4IEBACiB9CiAKIC8qKgotICogc2V0IGEgdGltZSBtYXJrZXIuCisgKiBTZXQgYSB0aW1lIG1hcmtlciB0byB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgcmVhbC10aW1lIGNsb2NrLgorICogXGRlcHJlY2F0ZWQgVXNlIG5ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIoKSBpbnN0ZWFkLgogICovCiB2b2lkCiBhdGltZV9zZXRNYXJrZXIobWFya2VyX3QgcG0pCkBAIC04MjksOSArOTAxLDg4IEBACiAgICAgZ2V0dGltZW9mZGF5KChzdHJ1Y3QgdGltZXZhbCAqKSBwbSwgTlVMTCk7CiB9CiAKKy8qKgorICogUXVlcnkgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIG1vbm90b25pYyBjbG9jay4KKyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgbW9ub3RvbmljIGNsb2NrIGlmIHN1Y2ggYSBjbG9jayBpcyBwcm92aWRlZCBieQorICogdGhlIG9wZXJhdGluZyBzeXN0ZW0gb3IgdGhlIHdhbGwgY2xvY2sgdGltZSBpZiBubyBzdWNoIGNsb2NrIGlzIHByb3ZpZGVkIGJ5CisgKiB0aGUgb3BlcmF0aW5nIHN5c3RlbS4gQSBtb25vdG9uaWMgY2xvY2sgaXMgYSBjbG9jayB0aGF0IGlzIG5ldmVyIGFkanVzdGVkCisgKiBiYWNrd2FyZHMgYW5kIHRoYXQgcHJvY2VlZHMgYXQgdGhlIHNhbWUgcmF0ZSBhcyB3YWxsIGNsb2NrIHRpbWUuCisgKgorICogQHBhcmFtW291dF0gdHYgUG9pbnRlciB0byBtb25vdG9uaWMgY2xvY2sgdGltZS4KKyAqLwordm9pZCBuZXRzbm1wX2dldF9tb25vdG9uaWNfY2xvY2soc3RydWN0IHRpbWV2YWwqIHR2KQoreworI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKSAmJiBkZWZpbmVkKENMT0NLX01PTk9UT05JQykKKyAgICBzdHJ1Y3QgdGltZXNwZWMgdHM7CisgICAgaW50IHJlczsKKworICAgIHJlcyA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpOworICAgIGlmIChyZXMgPj0gMCkgeworICAgICAgICB0di0+dHZfc2VjID0gdHMudHZfc2VjOworICAgICAgICB0di0+dHZfdXNlYyA9IHRzLnR2X25zZWMgLyAxMDAwOworICAgIH0gZWxzZSB7CisgICAgICAgIGdldHRpbWVvZmRheSh0diwgTlVMTCk7CisgICAgfQorI2VsaWYgZGVmaW5lZChXSU4zMikKKyAgICAvKgorICAgICAqIFdpbmRvd3M6IHJldHVybiB0aWNrIGNvdW50LiBOb3RlOiB0aGUgcmF0ZSBhdCB3aGljaCB0aGUgdGljayBjb3VudAorICAgICAqIGluY3JlYXNlcyBpcyBub3QgYWRqdXN0ZWQgYnkgdGhlIHRpbWUgc3luY2hyb25pemF0aW9uIGFsZ29yaXRobSwgc28KKyAgICAgKiBleHBlY3QgYW4gZXJyb3Igb2YgPD0gMTAwIHBwbSBmb3IgdGhlIHJhdGUgYXQgd2hpY2ggdGhpcyBjbG9jaworICAgICAqIGluY3JlYXNlcy4KKyAgICAgKi8KKyAgICB0eXBlZGVmIFVMT05HTE9ORyAoV0lOQVBJICogcGZHZXRUaWNrQ291bnQ2NCkodm9pZCk7CisgICAgc3RhdGljIGludCBzX2luaXRpYWxpemVkOworICAgIHN0YXRpYyBwZkdldFRpY2tDb3VudDY0IHNfcGZHZXRUaWNrQ291bnQ2NDsKKyAgICB1aW50NjRfdCBub3c2NDsKKworICAgIGlmICghc19pbml0aWFsaXplZCkgeworICAgICAgICBITU9EVUxFIGhLZXJuZWwzMiA9IEdldE1vZHVsZUhhbmRsZSgia2VybmVsMzIiKTsKKyAgICAgICAgc19wZkdldFRpY2tDb3VudDY0ID0KKyAgICAgICAgICAgIChwZkdldFRpY2tDb3VudDY0KSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsICJHZXRUaWNrQ291bnQ2NCIpOworICAgICAgICBzX2luaXRpYWxpemVkID0gVFJVRTsKKyAgICB9CisKKyAgICBpZiAoc19wZkdldFRpY2tDb3VudDY0KSB7CisgICAgICAgIC8qIFdpbmRvd3MgVmlzdGEsIFdpbmRvd3MgMjAwOCBvciBhbnkgbGF0ZXIgV2luZG93cyB2ZXJzaW9uICovCisgICAgICAgIG5vdzY0ID0gKCpzX3BmR2V0VGlja0NvdW50NjQpKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLyogV2luZG93cyBYUCwgV2luZG93cyAyMDAzIG9yIGFueSBlYXJsaWVyIFdpbmRvd3MgdmVyc2lvbiAqLworICAgICAgICBzdGF0aWMgdWludDMyX3Qgc193cmFwcywgc19sYXN0OworICAgICAgICB1aW50MzJfdCBub3c7CisKKyAgICAgICAgbm93ID0gR2V0VGlja0NvdW50KCk7CisgICAgICAgIGlmIChub3cgPCBzX2xhc3QpCisgICAgICAgICAgICBzX3dyYXBzKys7CisgICAgICAgIHNfbGFzdCA9IG5vdzsKKyAgICAgICAgbm93NjQgPSAoKHVpbnQ2NF90KXNfd3JhcHMgPDwgMzIpIHwgbm93OworICAgIH0KKyAgICB0di0+dHZfc2VjID0gbm93NjQgLyAxMDAwOworICAgIHR2LT50dl91c2VjID0gKG5vdzY0ICUgMTAwMCkgKiAxMDAwOworI2Vsc2UKKyAgICAvKiBBdCBsZWFzdCBGcmVlQlNEIDQgZG9lc24ndCBwcm92aWRlIG1vbm90b25pYyBjbG9jayBzdXBwb3J0LiAqLworI3dhcm5pbmcgTm90IHN1cmUgaG93IHRvIHF1ZXJ5IGEgbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGNsb2NrIG9uIHlvdXIgc3lzdGVtLiBcCitUaW1lcnMgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkgaWYgdGhlIHN5c3RlbSBjbG9jayBpcyBhZGp1c3RlZCBieSBlLmcuIG50cGQuCisgICAgZ2V0dGltZW9mZGF5KHR2LCBOVUxMKTsKKyNlbmRpZgorfQorCisvKioKKyAqIFNldCBhIHRpbWUgbWFya2VyIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBtb25vdG9uaWMgY2xvY2suCisgKi8KK3ZvaWQKK25ldHNubXBfc2V0X21vbm90b25pY19tYXJrZXIobWFya2VyX3QgKnBtKQoreworICAgIGlmICghKnBtKQorICAgICAgICAqcG0gPSBtYWxsb2Moc2l6ZW9mKHN0cnVjdCB0aW1ldmFsKSk7CisgICAgaWYgKCpwbSkKKyAgICAgICAgbmV0c25tcF9nZXRfbW9ub3RvbmljX2Nsb2NrKCpwbSk7Cit9CiAKIC8qKgogICogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gbXNlYykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMKKyAqCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCiAgKi8KIGxvbmcKIGF0aW1lX2RpZmYoY29uc3RfbWFya2VyX3QgZmlyc3QsIGNvbnN0X21hcmtlcl90IHNlY29uZCkKQEAgLTg0MCwxMSArOTkxLDEzIEBACiAKICAgICBORVRTTk1QX1RJTUVSU1VCKChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKSBzZWNvbmQsIChjb25zdCBzdHJ1Y3QgdGltZXZhbCAqKSBmaXJzdCwgJmRpZmYpOwogCi0gICAgcmV0dXJuIChkaWZmLnR2X3NlYyAqIDEwMDAgKyBkaWZmLnR2X3VzZWMgLyAxMDAwKTsKKyAgICByZXR1cm4gKGxvbmcpKGRpZmYudHZfc2VjICogMTAwMCArIGRpZmYudHZfdXNlYyAvIDEwMDApOwogfQogCiAvKioKICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2UgKGluIHVfbG9uZyBtc2VjKSBiZXR3ZWVuIHRoZSB0d28gbWFya2VycworICoKKyAqIFxkZXByZWNhdGVkIERvbid0IHVzZSBpbiBuZXcgY29kZS4KICAqLwogdV9sb25nCiB1YXRpbWVfZGlmZihjb25zdF9tYXJrZXJfdCBmaXJzdCwgY29uc3RfbWFya2VyX3Qgc2Vjb25kKQpAQCAtODU5LDYgKzEwMTIsOCBAQAogLyoqCiAgKiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiB1X2xvbmcgMS8xMDB0aCBzZWNzKSBiZXR3ZWVuIHRoZSB0d28gbWFya2VycwogICogKGZ1bmN0aW9uYWxseSB0aGlzIGlzIHdoYXQgc3lzVXBUaW1lIG5lZWRzKQorICoKKyAqIFxkZXByZWNhdGVkIERvbid0IHVzZSBpbiBuZXcgY29kZS4KICAqLwogdV9sb25nCiB1YXRpbWVfaGRpZmYoY29uc3RfbWFya2VyX3QgZmlyc3QsIGNvbnN0X21hcmtlcl90IHNlY29uZCkKQEAgLTg3Miw2ICsxMDI3LDggQEAKIC8qKgogICogVGVzdDogSGFzIChtYXJrZWQgdGltZSBwbHVzIGRlbHRhKSBleGNlZWRlZCBjdXJyZW50IHRpbWUgPwogICogUmV0dXJucyAwIGlmIHRlc3QgZmFpbHMgb3IgY2Fubm90IGJlIHRlc3RlZCAobm8gbWFya2VyKS4KKyAqCisgKiBcZGVwcmVjYXRlZCBVc2UgbmV0c25tcF9yZWFkeV9tb25vdG9uaWMoKSBpbnN0ZWFkLgogICovCiBpbnQKIGF0aW1lX3JlYWR5KGNvbnN0X21hcmtlcl90IHBtLCBpbnQgZGVsdGFfbXMpCkBAIC04OTEsOSArMTA0OCwxMiBAQAogICAgIHJldHVybiAxOwogfQogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUFUSU1FX1JFQURZCiAvKioKICAqIFRlc3Q6IEhhcyAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgZXhjZWVkZWQgY3VycmVudCB0aW1lID8KICAqIFJldHVybnMgMCBpZiB0ZXN0IGZhaWxzIG9yIGNhbm5vdCBiZSB0ZXN0ZWQgKG5vIG1hcmtlcikuCisgKgorICogXGRlcHJlY2F0ZWQgVXNlIG5ldHNubXBfcmVhZHlfbW9ub3RvbmljKCkgaW5zdGVhZC4KICAqLwogaW50CiB1YXRpbWVfcmVhZHkoY29uc3RfbWFya2VyX3QgcG0sIHVuc2lnbmVkIGludCBkZWx0YV9tcykKQEAgLTkxMiw2ICsxMDcyLDMzIEBACiAKICAgICByZXR1cm4gMTsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VBVElNRV9SRUFEWSAqLworCisvKioKKyAqIElzIHRoZSBjdXJyZW50IHRpbWUgcGFzdCAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgPworICoKKyAqIEBwYXJhbVtpbl0gcG0gUG9pbnRlciB0byBtYXJrZWQgdGltZSBhcyBvYnRhaW5lZCB2aWEKKyAqICAgbmV0c25tcF9zZXRfbW9ub3RvbmljX21hcmtlcigpLgorICogQHBhcmFtW2luXSBkZWx0YV9tcyBUaW1lIGRlbHRhIGluIG1pbGxpc2Vjb25kcy4KKyAqCisgKiBAcmV0dXJuIHBtICE9IE5VTEwgJiYgbm93ID49ICgqcG0gKyBkZWx0YV9tcykKKyAqLworaW50CituZXRzbm1wX3JlYWR5X21vbm90b25pYyhjb25zdF9tYXJrZXJfdCBwbSwgaW50IGRlbHRhX21zKQoreworICAgIHN0cnVjdCB0aW1ldmFsICBub3csIGRpZmYsIGRlbHRhOworCisgICAgbmV0c25tcF9hc3NlcnQoZGVsdGFfbXMgPj0gMCk7CisgICAgaWYgKHBtKSB7CisgICAgICAgIG5ldHNubXBfZ2V0X21vbm90b25pY19jbG9jaygmbm93KTsKKyAgICAgICAgTkVUU05NUF9USU1FUlNVQigmbm93LCAoY29uc3Qgc3RydWN0IHRpbWV2YWwgKikgcG0sICZkaWZmKTsKKyAgICAgICAgZGVsdGEudHZfc2VjID0gZGVsdGFfbXMgLyAxMDAwOworICAgICAgICBkZWx0YS50dl91c2VjID0gKGRlbHRhX21zICUgMTAwMCkgKiAxMDAwVUw7CisgICAgICAgIHJldHVybiB0aW1lcmNtcCgmZGlmZiwgJmRlbHRhLCA+PSkgPyBUUlVFIDogRkFMU0U7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KK30KIAogCiAgICAgICAgIC8qCkBAIC05MTksNyArMTEwNiw5IEBACiAgICAgICAgICAqLwogCiAvKioKLSAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHRpbWVUaWNrcyBzaW5jZSB0aGUgZ2l2ZW4gbWFya2VyIAorICogUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZVRpY2tzIHNpbmNlIHRoZSBnaXZlbiBtYXJrZXIKKyAqCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCiAgKi8KIGludAogbWFya2VyX3R0aWNrcyhjb25zdF9tYXJrZXJfdCBwbSkKQEAgLTkzMiwxMSArMTEyMSwxNiBAQAogICAgIHJldHVybiByZXMgLyAxMDsgICAgICAgICAgICAvKiBhdGltZV9kaWZmIHdvcmtzIGluIG1zZWMsIG5vdCBjc2VjICovCiB9CiAKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9USU1FVkFMX1RUSUNLUworLyoqCisgKiBcZGVwcmVjYXRlZCBEb24ndCB1c2UgaW4gbmV3IGNvZGUuCisgKi8KIGludAogdGltZXZhbF90dGlja3MoY29uc3Qgc3RydWN0IHRpbWV2YWwgKnR2KQogewogICAgIHJldHVybiBtYXJrZXJfdHRpY2tzKChjb25zdF9tYXJrZXJfdCkgdHYpOwogfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVElNRVZBTF9UVElDS1MgKi8KIAogLyoqCiAgKiBOb24gV2luZG93czogIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZXNpcmVkIGVudmlyb25tZW50IHZhcmlhYmxlICAKQEAgLTk5NSw4ICsxMTg5LDcgQEAKICAgICAgICAgICAgIE5VTEwsICAgICAgICAgICAgICAgLyogSnVzdCBnZXQgdGhlIHNpemUgKi8KICAgICAgICAgICAgICZrZXlfdmFsdWVfc2l6ZSkgPT0gRVJST1JfU1VDQ0VTUykgewogCi0gICAgICAgIGlmIChrZXlfdmFsdWUpCi0gICAgICAgICAgU05NUF9GUkVFKGtleV92YWx1ZSk7CisgICAgICAgIFNOTVBfRlJFRShrZXlfdmFsdWUpOwogCiAgICAgICAgIC8qIEFsbG9jYXRlIG1lbW9yeSBuZWVkZWQgKzEgdG8gYWxsb3cgUmVnUXVlcnlWYWx1ZUV4QSB0byBOVUxMIHRlcm1pbmF0ZSB0aGUKICAgICAgICAgICogc3RyaW5nIGRhdGEgaW4gcmVnaXN0cnkgaXMgbWlzc2luZyBvbmUgKHdoaWNoIGlzIHVubGlrZWx5KS4KQEAgLTEwMzcsOCArMTIzMCw3IEBACiAgICAgICAgICAgICBOVUxMLCAgICAgICAgICAgICAgIC8qIEp1c3QgZ2V0IHRoZSBzaXplICovCiAgICAgICAgICAgICAma2V5X3ZhbHVlX3NpemUpID09IEVSUk9SX1NVQ0NFU1MpIHsKIAotICAgICAgICBpZiAoa2V5X3ZhbHVlKQotICAgICAgICAgIFNOTVBfRlJFRShrZXlfdmFsdWUpOworICAgICAgICBTTk1QX0ZSRUUoa2V5X3ZhbHVlKTsKIAogICAgICAgICAvKiBBbGxvY2F0ZSBtZW1vcnkgbmVlZGVkICsxIHRvIGFsbG93IFJlZ1F1ZXJ5VmFsdWVFeEEgdG8gTlVMTCB0ZXJtaW5hdGUgdGhlCiAgICAgICAgICAqIHN0cmluZyBkYXRhIGluIHJlZ2lzdHJ5IGlzIG1pc3Npbmcgb25lICh3aGljaCBpcyB1bmxpa2VseSkuCkBAIC0xMTIwLDMgKzEzMTIsNjUgQEAKIAogICAgIHJldHVybiAwOwogfQorCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSSU5HX1RJTUVfVE9fU0VDUworLyoqCisgKiBUYWtlcyBhIHRpbWUgc3RyaW5nIGxpa2UgNGggYW5kIGNvbnZlcnRzIGl0IHRvIHNlY29uZHMuCisgKiBUaGUgc3RyaW5nIHRpbWUgZ2l2ZW4gbWF5IGVuZCBpbiAncycgZm9yIHNlY29uZHMgKHRoZSBkZWZhdWx0CisgKiBhbnl3YXkgaWYgbm8gc3VmZml4IGlzIHNwZWNpZmllZCksCisgKiAnbScgZm9yIG1pbnV0ZXMsICdoJyBmb3IgaG91cnMsICdkJyBmb3IgZGF5cywgb3IgJ3cnIGZvciB3ZWVrcy4gIFRoZQorICogdXBwZXIgY2FzZSB2ZXJzaW9ucyBhcmUgYWxzbyBhY2NlcHRlZC4KKyAqCisgKiBAcGFyYW0gdGltZV9zdHJpbmcgVGhlIHRpbWUgc3RyaW5nIHRvIGNvbnZlcnQuCisgKgorICogQHJldHVybiBzZWNvbmRzIGNvbnZlcnRlZCBmcm9tIHRoZSBzdHJpbmcKKyAqIEByZXR1cm4gLTEgIDogb24gZmFpbHVyZQorICovCitpbnQKK25ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2Vjcyhjb25zdCBjaGFyICp0aW1lX3N0cmluZykgeworICAgIGludCBzZWNzID0gLTE7CisgICAgaWYgKCF0aW1lX3N0cmluZyB8fCAhdGltZV9zdHJpbmdbMF0pCisgICAgICAgIHJldHVybiBzZWNzOworCisgICAgc2VjcyA9IGF0b2kodGltZV9zdHJpbmcpOworCisgICAgaWYgKGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpdGltZV9zdHJpbmdbc3RybGVuKHRpbWVfc3RyaW5nKS0xXSkpCisgICAgICAgIHJldHVybiBzZWNzOyAvKiBubyBsZXR0ZXIgc3BlY2lmaWVkLCBpdCdzIGFscmVhZHkgaW4gc2Vjb25kcyAqLworICAgIAorICAgIHN3aXRjaCAodGltZV9zdHJpbmdbc3RybGVuKHRpbWVfc3RyaW5nKS0xXSkgeworICAgIGNhc2UgJ3MnOgorICAgIGNhc2UgJ1MnOgorICAgICAgICAvKiBhbHJlYWR5IGluIHNlY29uZHMgKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdtJzoKKyAgICBjYXNlICdNJzoKKyAgICAgICAgc2VjcyA9IHNlY3MgKiA2MDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICdoJzoKKyAgICBjYXNlICdIJzoKKyAgICAgICAgc2VjcyA9IHNlY3MgKiA2MCAqIDYwOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgJ2QnOgorICAgIGNhc2UgJ0QnOgorICAgICAgICBzZWNzID0gc2VjcyAqIDYwICogNjAgKiAyNDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlICd3JzoKKyAgICBjYXNlICdXJzoKKyAgICAgICAgc2VjcyA9IHNlY3MgKiA2MCAqIDYwICogMjQgKiA3OworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ0aW1lIHN0cmluZyAlcyBjb250YWlucyBhbiBpbnZhbGlkIHN1ZmZpeCBsZXR0ZXJcbiIsCisgICAgICAgICAgICAgICAgIHRpbWVfc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJzdHJpbmdfdGltZV90b19zZWNzIiwgIkNvbnZlcnRlZCB0aW1lIHN0cmluZyAlcyB0byAlZFxuIiwKKyAgICAgICAgICAgICAgICB0aW1lX3N0cmluZywgc2VjcykpOworICAgIHJldHVybiBzZWNzOworfQorI2VuZGlmIC8qIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfU1RSSU5HX1RJTUVfVE9fU0VDUyAqLwpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBBQUw1UFZDRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYwppbmRleCAyYjI4Y2IzLi41YWM2OWExIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcEFBTDVQVkNEb21haW4uYwpAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2NvbmZpZ19hcGkuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAKIAogb2lkIG5ldHNubXBfQUFMNVBWQ0RvbWFpblsxMF0gPSB7IE5FVFNOTVBfRU5URVJQUklTRV9NSUIsIDMsIDMsIDMgfTsKQEAgLTE3MiwxMSArMTczLDE2IEBACiB7CiAgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOwogCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIGlmIChsb2NhbCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworCiAgICAgaWYgKGFkZHIgPT0gTlVMTCB8fCBhZGRyLT5zYXBfZmFtaWx5ICE9IEFGX0FUTVBWQykgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0ID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xODksOCArMTk1LDYgQEAKICAgICAgICAgZnJlZShzdHIpOwogICAgIH0KIAotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKLQogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBfQUFMNVBWQ0RvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0KICAgICAgICAgc2l6ZW9mKG5ldHNubXBfQUFMNVBWQ0RvbWFpbikgLyBzaXplb2YobmV0c25tcF9BQUw1UFZDRG9tYWluWzBdKTsKQEAgLTIyNCw2ICsyMjgsNyBAQAogICAgIH0KIAogICAgIGlmIChsb2NhbCkgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIHQtPmxvY2FsID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYyg4KTsKICAgICAgICAgaWYgKHQtPmxvY2FsID09IE5VTEwpIHsKICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CkBAIC0yNDcsNiArMjUyLDkgQEAKICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfSBlbHNlIHsKICAgICAgICAgdC0+cmVtb3RlID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYyg4KTsKICAgICAgICAgaWYgKHQtPnJlbW90ZSA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcENhbGxiYWNrRG9tYWluLmMKaW5kZXggMTc1YzIyOC4uOTUwMThiOCAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBDYWxsYmFja0RvbWFpbi5jCisrKyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wQ2FsbGJhY2tEb21haW4uYwpAQCAtMjg5LDEwICsyODksNyBAQAogICAgICAgICAvKgogICAgICAgICAgKiB3ZSBkb24ndCBuZWVkIHRoZSB0cmFuc3BvcnQgZGF0YSBhbnkgbW9yZSAKICAgICAgICAgICovCi0gICAgICAgIGlmICgqb3BhcXVlKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUoKm9wYXF1ZSk7Ci0gICAgICAgICAgICAqb3BhcXVlID0gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBTTk1QX0ZSRUUoKm9wYXF1ZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyoKICAgICAgICAgICogd2UncmUgdGhlIHNlcnZlciwgc2VuZCBpdCB0byB0aGUgcGVyc29uIHRoYXQgc2VudCB1cyB0aGUgcmVxdWVzdCAKQEAgLTMwMSwxMCArMjk4LDcgQEAKICAgICAgICAgLyoKICAgICAgICAgICogd2UgZG9uJ3QgbmVlZCB0aGUgdHJhbnNwb3J0IGRhdGEgYW55IG1vcmUgCiAgICAgICAgICAqLwotICAgICAgICBpZiAoKm9wYXF1ZSkgewotICAgICAgICAgICAgU05NUF9GUkVFKCpvcGFxdWUpOwotICAgICAgICAgICAgKm9wYXF1ZSA9IE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgU05NUF9GUkVFKCpvcGFxdWUpOwogICAgICAgICBvdGhlcl9zaWRlID0gZmluZF90cmFuc3BvcnRfZnJvbV9jYWxsYmFja19udW0oZnJvbSk7CiAgICAgICAgIGlmICghb3RoZXJfc2lkZSkgewogICAgICAgICAgICAgc25tcF9mcmVlX3BkdShjcC0+cGR1KTsKQEAgLTM1OSw3ICszNTMsNyBAQAogewogICAgIERFQlVHTVNHVEwoKCJ0cmFuc3BvcnRfY2FsbGJhY2siLCAiaG9va19hY2NlcHQgZW50ZXJcbiIpKTsKICAgICBERUJVR01TR1RMKCgidHJhbnNwb3J0X2NhbGxiYWNrIiwgImhvb2tfYWNjZXB0IGV4aXRcbiIpKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gLTE7CiB9CiAKIApkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBEVExTVURQRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYwppbmRleCBhNTA5MThiLi5iN2RjNzY3IDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcERUTFNVRFBEb21haW4uYwpAQCAtMTgsNyArMTgsMTMgQEAKIAogI2lmZGVmIEhBVkVfTElCU1NMX0RUTFMKIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNlcnRfdXRpbCkKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKHNvY2thZGRyX3NpemUpCisKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBEVExTVURQRG9tYWluLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTgwLDEwICs4Niw2IEBACiAjZGVmaW5lIElOQUREUl9OT05FCS0xCiAjZW5kaWYKIAotI2lmbmRlZiBNU0dfRE9OVFdBSVQKLSNkZWZpbmUgTVNHX0RPTlRXQUlUIDAKLSNlbmRpZgotCiAjZGVmaW5lIFdFX0FSRV9TRVJWRVIgMAogI2RlZmluZSBXRV9BUkVfQ0xJRU5UIDEKIApAQCAtOTEsNiArOTMsOSBAQAogc2l6ZV90ICAgICAgICAgIG5ldHNubXBEVExTVURQRG9tYWluX2xlbiA9IE9JRF9MRU5HVEgobmV0c25tcERUTFNVRFBEb21haW4pOwogCiBzdGF0aWMgbmV0c25tcF90ZG9tYWluIGR0bHN1ZHBEb21haW47CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KK3N0YXRpYyBpbnQgb3BlbnNzbF9hZGRyX2luZGV4NiA9IDA7CisjZW5kaWYKIAogLyogdGhpcyBzdG9yZXMgb3BlbnNzbCBjcmVkZW50aWFscyBmb3IgZWFjaCBjb25uZWN0aW9uIHNpbmNlIG9wZW5zc2wKICAgIGNhbid0IGRvIGl0IGZvciB1cyBhdCB0aGUgbW9tZW50OyBob3BlZnVsbHkgZnV0dXJlIHZlcnNpb25zIHdpbGwKQEAgLTk4LDkgKzEwMyw3IEBACiB0eXBlZGVmIHN0cnVjdCBiaW9fY2FjaGVfcyB7CiAgICBCSU8gKnJlYWRfYmlvOyAgLyogT3BlblNTTCB3aWxsIHJlYWQgaXRzIGluY29taW5nIFNTTCBwYWNrZXRzIGZyb20gaGVyZSAqLwogICAgQklPICp3cml0ZV9iaW87IC8qIE9wZW5TU0wgd2lsbCB3cml0ZSBpdHMgb3V0Z29pbmcgU1NMIHBhY2tldHMgdG8gaGVyZSAqLwotICAgc3RydWN0IHNvY2thZGRyX2luIHNvY2thZGRyOwotICAgdWludDMyX3QgaXB2NGFkZHI7Ci0gICB1X3Nob3J0IHBvcnRudW07CisgICBuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2Ugc2FzOwogICAgdV9pbnQgZmxhZ3M7CiAgICBzdHJ1Y3QgYmlvX2NhY2hlX3MgKm5leHQ7CiAgICBpbnQgbXNnbnVtOwpAQCAtMTIzLDI0ICsxMjYsMzYgQEAKIHN0YXRpYyBpbnQgbmV0c25tcF9kdGxzX2dlbl9jb29raWUoU1NMICpzc2wsIHVuc2lnbmVkIGNoYXIgKmNvb2tpZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50ICpjb29raWVfbGVuKTsKIAotCiAvKiB0aGlzIHN0b3JlcyByZW1vdGUgY29ubmVjdGlvbnMgaW4gYSBsaXN0IHRvIHNlYXJjaCB0aHJvdWdoICovCiAvKiBYWFg6IG9wdGltaXplIGZvciBzZWFyY2hpbmcgKi8KIC8qIFhYWDogaGFuZGxlIHN0YXRlIGlzc3VlcyBmb3IgbmV3IGNvbm5lY3Rpb25zIHRvIHJlZHVjZSBET1MgaXNzdWVzICovCiAvKiAgICAgIChUTFMgc2hvdWxkIGRvIHRoaXMsIGJ1dCBvcGVuc3NsIGNhbid0IGRvIG1vcmUgdGhhbiBvbmUgY3R4IHBlciBzb2NrICovCiAvKiBYWFg6IHB1dCBhIHRpbWVyIG9uIHRoZSBjYWNoZSBmb3IgZXhwaXJhcnkgcHVycG9zZXMgKi8KLXN0YXRpYyBiaW9fY2FjaGUgKmZpbmRfYmlvX2NhY2hlKHN0cnVjdCBzb2NrYWRkcl9pbiAqZnJvbV9hZGRyKSB7CitzdGF0aWMgYmlvX2NhY2hlICpmaW5kX2Jpb19jYWNoZShuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UgKmZyb21fYWRkcikgewogICAgIGJpb19jYWNoZSAqY2FjaGVwID0gTlVMTDsKLSAgICBjYWNoZXAgPSBiaW9jYWNoZTsKLSAgICB3aGlsZShjYWNoZXApIHsKKyAgICAKKyAgICBmb3IoY2FjaGVwID0gYmlvY2FjaGU7IGNhY2hlcDsgY2FjaGVwID0gY2FjaGVwLT5uZXh0KSB7CiAKLSAgICAgICAgaWYgKGNhY2hlcC0+aXB2NGFkZHIgPT0gZnJvbV9hZGRyLT5zaW5fYWRkci5zX2FkZHIgJiYKLSAgICAgICAgICAgIGNhY2hlcC0+cG9ydG51bSA9PSBmcm9tX2FkZHItPnNpbl9wb3J0KSB7Ci0gICAgICAgICAgICAvKiBmb3VuZCBhbiBleGlzdGluZyBjb25uZWN0aW9uICovCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIGNhY2hlcCA9IGNhY2hlcC0+bmV4dDsKKyAgICAgICAgaWYgKGNhY2hlcC0+c2FzLnNhLnNhX2ZhbWlseSAhPSBmcm9tX2FkZHItPnNhLnNhX2ZhbWlseSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICgoZnJvbV9hZGRyLT5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVCkgJiYKKyAgICAgICAgICAgICgoY2FjaGVwLT5zYXMuc2luLnNpbl9hZGRyLnNfYWRkciAhPQorICAgICAgICAgICAgICBmcm9tX2FkZHItPnNpbi5zaW5fYWRkci5zX2FkZHIpIHx8CisgICAgICAgICAgICAgKGNhY2hlcC0+c2FzLnNpbi5zaW5fcG9ydCAhPSBmcm9tX2FkZHItPnNpbi5zaW5fcG9ydCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgICAgIGVsc2UgaWYgKChmcm9tX2FkZHItPnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgJiYKKyAgICAgICAgICAgICAgICAgKChjYWNoZXAtPnNhcy5zaW42LnNpbjZfcG9ydCAhPSBmcm9tX2FkZHItPnNpbjYuc2luNl9wb3J0KSB8fAorICAgICAgICAgICAgICAgICAgKGNhY2hlcC0+c2FzLnNpbjYuc2luNl9zY29wZV9pZCAhPQorICAgICAgICAgICAgICAgICAgIGZyb21fYWRkci0+c2luNi5zaW42X3Njb3BlX2lkKSB8fAorICAgICAgICAgICAgICAgICAgKG1lbWNtcChjYWNoZXAtPnNhcy5zaW42LnNpbjZfYWRkci5zNl9hZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX2FkZHItPnNpbjYuc2luNl9hZGRyLnM2X2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihmcm9tX2FkZHItPnNpbjYuc2luNl9hZGRyLnM2X2FkZHIpKSAhPSAwKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyNlbmRpZgorICAgICAgICAvKiBmb3VuZCBhbiBleGlzdGluZyBjb25uZWN0aW9uICovCisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gY2FjaGVwOwogfQpAQCAtMTkzLDcgKzIwOCw3IEBACiAKIHN0YXRpYyBiaW9fY2FjaGUgKgogc3RhcnRfbmV3X2NhY2hlZF9jb25uZWN0aW9uKG5ldHNubXBfdHJhbnNwb3J0ICp0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqcmVtb3RlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlICpyZW1vdGVfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2VfYXJlX2NsaWVudCkgewogICAgIGJpb19jYWNoZSAqY2FjaGVwID0gTlVMTDsKICAgICBfbmV0c25tcFRMU0Jhc2VEYXRhICp0bHNkYXRhOwpAQCAtMjcwLDkgKzI4NSwxNCBAQAogICAgIGNhY2hlcC0+bmV4dCA9IGJpb2NhY2hlOwogICAgIGJpb2NhY2hlID0gY2FjaGVwOwogCi0gICAgY2FjaGVwLT5pcHY0YWRkciA9IHJlbW90ZV9hZGRyLT5zaW5fYWRkci5zX2FkZHI7Ci0gICAgY2FjaGVwLT5wb3J0bnVtID0gcmVtb3RlX2FkZHItPnNpbl9wb3J0OwotICAgIG1lbWNweSgmY2FjaGVwLT5zb2NrYWRkciwgcmVtb3RlX2FkZHIsIHNpemVvZigqcmVtb3RlX2FkZHIpKTsKKyAgICBpZiAocmVtb3RlX2FkZHItPnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICBtZW1jcHkoJmNhY2hlcC0+c2FzLnNpbiwgJnJlbW90ZV9hZGRyLT5zaW4sIHNpemVvZihyZW1vdGVfYWRkci0+c2luKSk7CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKyAgICBlbHNlIGlmIChyZW1vdGVfYWRkci0+c2Euc2FfZmFtaWx5ID09IEFGX0lORVQ2KQorICAgICAgICBtZW1jcHkoJmNhY2hlcC0+c2FzLnNpbjYsICZyZW1vdGVfYWRkci0+c2luNiwgc2l6ZW9mKHJlbW90ZV9hZGRyLT5zaW42KSk7CisjZW5kaWYKKyAgICBlbHNlCisgICAgICAgIERJRUhFUkUoInVua25vd24gYWRkcmVzcyBmYW1pbHkiKTsKIAogICAgIC8qIGNyZWF0ZSBjYWNoaW5nIG1lbW9yeSBiaW9zIGZvciBPcGVuU1NMIHRvIHJlYWQgYW5kIHdyaXRlIHRvICovCiAKQEAgLTM4Niw3ICs0MDYsOCBAQAogfQogCiBzdGF0aWMgYmlvX2NhY2hlICoKLWZpbmRfb3JfY3JlYXRlX2Jpb19jYWNoZShuZXRzbm1wX3RyYW5zcG9ydCAqdCwgc3RydWN0IHNvY2thZGRyX2luICpmcm9tX2FkZHIsCitmaW5kX29yX2NyZWF0ZV9iaW9fY2FjaGUobmV0c25tcF90cmFuc3BvcnQgKnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zb2NrYWRkcl9zdG9yYWdlICpmcm9tX2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdlX2FyZV9jbGllbnQpIHsKICAgICBiaW9fY2FjaGUgKmNhY2hlcCA9IGZpbmRfYmlvX2NhY2hlKGZyb21fYWRkcik7CiAgICAgaWYgKE5VTEwgPT0gY2FjaGVwKSB7CkBAIC00MDEsNiArNDIyLDQ3IEBACiAgICAgcmV0dXJuIGNhY2hlcDsKIH0KIAorc3RhdGljIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKgorX2V4dHJhY3RfYWRkcl9wYWlyKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpvcGFxdWUsIGludCBvbGVuKQoreworICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7CisKKyAgICBpZiAob3BhcXVlICYmIG9sZW4gPT0gc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSkpIHsKKyAgICAgICAgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICp0bVN0YXRlUmVmID0KKyAgICAgICAgICAgIChuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKikgb3BhcXVlOworCisgICAgICAgIGlmICh0bVN0YXRlUmVmLT5oYXZlX2FkZHJlc3NlcykKKyAgICAgICAgICAgIGFkZHJfcGFpciA9ICYodG1TdGF0ZVJlZi0+YWRkcmVzc2VzKTsKKyAgICB9CisgICAgaWYgKChOVUxMID09IGFkZHJfcGFpcikgJiYgKE5VTEwgIT0gdCkpIHsKKyAgICAgICAgaWYgKHQtPmRhdGEgIT0gTlVMTCAmJgorICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKQorICAgICAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKHQtPmRhdGEpOworICAgICAgICBlbHNlIGlmICh0LT5kYXRhICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKF9uZXRzbm1wVExTQmFzZURhdGEpKSB7CisgICAgICAgICAgICBfbmV0c25tcFRMU0Jhc2VEYXRhICp0bHNkYXRhID0gKF9uZXRzbm1wVExTQmFzZURhdGEgKikgdC0+ZGF0YTsKKyAgICAgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICopICh0bHNkYXRhLT5hZGRyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBhZGRyX3BhaXI7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qgc29ja2FkZHIgKgorX2ZpbmRfcmVtb3RlX3NvY2thZGRyKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpvcGFxdWUsIGludCBvbGVuLCBpbnQgKnNvY2tsZW4pCit7CisgICAgbmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gX2V4dHJhY3RfYWRkcl9wYWlyKHQsIG9wYXF1ZSwgb2xlbik7CisgICAgc3RydWN0IHNvY2thZGRyICpzYSA9IE5VTEw7CisKKyAgICBpZiAoTlVMTCA9PSBhZGRyX3BhaXIpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc2EgPSAmYWRkcl9wYWlyLT5yZW1vdGVfYWRkci5zYTsKKyAgICAqc29ja2xlbiA9IG5ldHNubXBfc29ja2FkZHJfc2l6ZShzYSk7CisgICAgcmV0dXJuIHNhOworfQorCisKIC8qCiAgKiBSZWFkcyBkYXRhIGZyb20gb3VyIGludGVybmFsIG9wZW5zc2wgb3V0Z29pbmcgQklPIGFuZCBzZW5kcyBhbnkKICAqIHF1ZXVlZCBwYWNrZXRzIG91dCB0aGUgVURQIHBvcnQKQEAgLTQyMSwxNyArNDgzLDE0IEBACiAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgImhhdmUgJWQgYnl0ZXMgdG8gc2VuZFxuIiwgb3V0c2l6ZSkpOwogCiAgICAgICAgIC8qIHNob3VsZCBhbHdheXMgYmUgdHJ1ZS4gKi8KLSNpZiBkZWZpbmVkKFhYWEZJWE1FKSAmJiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCi0gICAgICAgIC8qIFhYWDogYmVmb3JlIHRoaXMgY2FuIHdvcmssIHdlIG5lZWQgdG8gcmVtZW1iZXIgYWRkcmVzcyB3ZQotICAgICAgICAgICByZWNlaXZlZCBpdCBmcm9tIChhZGRyX3BhaXIpICovCi0gICAgICAgIHJjMiA9IG5ldHNubXBfdWRwX3NlbmR0byh0LT5zb2NrLCBhZGRyX3BhaXItPmxvY2FsX2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3BhaXItPmlmX2luZGV4LCBhZGRyX3BhaXItPnJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0YnVmLCBvdXRzaXplKTsKLSNlbHNlCi0gICAgICAgIHJjMiA9IHNlbmR0byh0LT5zb2NrLCBvdXRidWYsIG91dHNpemUsIDAsCi0gICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJmNhY2hlcC0+c29ja2FkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKLSNlbmRpZiAvKiBsaW51eCAmJiBJUF9QS1RJTkZPICovCi0KKyAgICAgICAgaW50IHNvY2tzaXplOworICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhOworICAgICAgICBzYSA9IF9maW5kX3JlbW90ZV9zb2NrYWRkcih0LCBOVUxMLCAwLCAmc29ja3NpemUpOworICAgICAgICBpZiAoTlVMTCA9PSBzYSkKKyAgICAgICAgICAgIHNhID0gJmNhY2hlcC0+c2FzLnNhOworICAgICAgICBzb2Nrc2l6ZSA9IG5ldHNubXBfc29ja2FkZHJfc2l6ZShzYSk7CisgICAgICAgIHJjMiA9IHQtPmJhc2VfdHJhbnNwb3J0LT5mX3NlbmQodCwgb3V0YnVmLCBvdXRzaXplLCAodm9pZCoqKSZzYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc29ja3NpemUpOwogICAgICAgICBpZiAocmMyID09IC0xKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHRvIHNlbmQgYSBEVExTIHNwZWNpZmljIHBhY2tldFxuIik7CiAgICAgICAgIH0KQEAgLTU0NSw3ICs2MDQsNiBAQAogICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKm9wYXF1ZSwgaW50ICpvbGVuZ3RoKQogewogICAgIGludCAgICAgICAgICAgICByYyA9IC0xOwotICAgIHNvY2tsZW5fdCAgICAgICBmcm9tbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcik7CiAgICAgbmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gTlVMTDsKICAgICBzdHJ1Y3Qgc29ja2FkZHIgKmZyb207CiAgICAgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICp0bVN0YXRlUmVmID0gTlVMTDsKQEAgLTU3NywxNCArNjM1LDEyIEBACiAgICAgZnJvbSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKIAogICAgIHdoaWxlIChyYyA8IDApIHsKLSNpZiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCi0gICAgICAgIHNvY2tsZW5fdCBsb2NhbF9hZGRyX2xlbiA9IHNpemVvZihhZGRyX3BhaXItPmxvY2FsX2FkZHIpOwotICAgICAgICByYyA9IG5ldHNubXBfdWRwX3JlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgZnJvbSwgJmZyb21sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciopJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbF9hZGRyX2xlbiwgJihhZGRyX3BhaXItPmlmX2luZGV4KSk7Ci0jZWxzZQotICAgICAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgTVNHX0RPTlRXQUlULCBmcm9tLCAmZnJvbWxlbik7Ci0jZW5kaWYgLyogbGludXggJiYgSVBfUEtUSU5GTyAqLworICAgICAgICBjaGFyICpvcGFxdWUgPSBOVUxMOworICAgICAgICBpbnQgb2xlbjsKKyAgICAgICAgcmMgPSB0LT5iYXNlX3RyYW5zcG9ydC0+Zl9yZWN2KHQsIGJ1Ziwgc2l6ZSwgKHZvaWQqKikmb3BhcXVlLCAmb2xlbik7CisgICAgICAgIGlmIChyYyA+IDApCisgICAgICAgICAgICBtZW1jcHkoZnJvbSwgb3BhcXVlLCBvbGVuKTsKKyAgICAgICAgU05NUF9GUkVFKG9wYXF1ZSk7CiAgICAgICAgIGlmIChyYyA8IDAgJiYgZXJybm8gIT0gRUlOVFIpIHsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04NzcsNiArOTMzLDcgQEAKICAgICAgICAgICAgIHRsc2RhdGEtPmZsYWdzIHw9IE5FVFNOTVBfVExTQkFTRV9DRVJUX0ZQX1ZFUklGSUVEOwogICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAiVmVyaWZpZWQgdGhlIHNlcnZlcidzIGNlcnRpZmljYXRlXG4iKSk7CiAgICAgICAgIH0gZWxzZSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICAgICAgICAgICAgIC8qIHZlcmlmeSB0aGF0IHRoZSBjbGllbnQncyBjZXJ0aWZpY2F0ZSBpcyB0aGUgY29ycmVjdCBvbmUgKi8KICAgICAgICAgCiAgICAgICAgICAgICBpZiAoKHZlcmlmeXJlc3VsdCA9IG5ldHNubXBfdGxzYmFzZV92ZXJpZnlfY2xpZW50X2NlcnQodGxzZGF0YS0+c3NsLCB0bHNkYXRhKSkKQEAgLTkwMCw2ICs5NTcsOSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGxzZGF0YS0+ZmxhZ3MgfD0gTkVUU05NUF9UTFNCQVNFX0NFUlRfRlBfVkVSSUZJRUQ7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJWZXJpZmllZCB0aGUgY2xpZW50J3MgY2VydGlmaWNhdGVcbiIpKTsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICAgICAgfQogICAgIH0KIApAQCAtOTExLDcgKzk3MSw5IEBACiAgICAgfQogCiAgICAgREVCVUdJRiAoIjk6ZHRsc3VkcCIpIHsKLSAgICAgICAgY2hhciAqc3RyID0gbmV0c25tcF91ZHBfZm10YWRkcihOVUxMLCBhZGRyX3BhaXIsIHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSk7CisgICAgICAgIGNoYXIgKnN0ciA9CisgICAgICAgICAgICB0LT5iYXNlX3RyYW5zcG9ydC0+Zl9mbXRhZGRyKHQsIGFkZHJfcGFpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpOwogICAgICAgICBERUJVR01TR1RMKCgiOTpkdGxzdWRwIiwKICAgICAgICAgICAgICAgICAgICAgInJlY3Zmcm9tIGZkICVkIGdvdCAlZCBieXRlcyAoZnJvbSAlcylcbiIsCiAgICAgICAgICAgICAgICAgICAgIHQtPnNvY2ssIHJjLCBzdHIpKTsKQEAgLTk1OSwzOSArMTAyMSwyNSBAQAogewogICAgIGludCByYyA9IC0xOwogICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7Ci0gICAgc3RydWN0IHNvY2thZGRyICp0byA9IE5VTEw7CiAgICAgYmlvX2NhY2hlICpjYWNoZXAgPSBOVUxMOwogICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZiA9IE5VTEw7CiAgICAgdV9jaGFyIG91dGJ1Zls2NTUzNV07CiAgICAgX25ldHNubXBUTFNCYXNlRGF0YSAqdGxzZGF0YSA9IE5VTEw7CisgICAgaW50IHNvY2tzaXplOworICAgIHN0cnVjdCBzb2NrYWRkciAqc2E7CiAgICAgCiAgICAgREVCVUdUUkFDRVRPSygiOTpkdGxzdWRwIik7CiAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAic2VuZGluZyAlZCBieXRlc1xuIiwgc2l6ZSkpOwogCi0gICAgLyogZGV0ZXJtaW5lIHJlbW90ZSBhZGRyZXNzZXMgKi8KLSAgICBpZiAob3BhcXVlICE9IE5VTEwgJiYgKm9wYXF1ZSAhPSBOVUxMICYmCi0gICAgICAgICpvbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UpKSB7Ci0gICAgICAgIHRtU3RhdGVSZWYgPSAobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICopICpvcGFxdWU7Ci0KLSAgICAgICAgaWYgKHRtU3RhdGVSZWYtPmhhdmVfYWRkcmVzc2VzKQotICAgICAgICAgICAgYWRkcl9wYWlyID0gJih0bVN0YXRlUmVmLT5hZGRyZXNzZXMpOwotICAgICAgICBlbHNlIGlmICh0ICE9IE5VTEwgJiYgdC0+ZGF0YSAhPSBOVUxMICYmCi0gICAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSkKLSAgICAgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICopICh0LT5kYXRhKTsKLSAgICAgICAgZWxzZSBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgICB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSkpIHsKLSAgICAgICAgICAgIHRsc2RhdGEgPSAoX25ldHNubXBUTFNCYXNlRGF0YSAqKSB0LT5kYXRhOwotICAgICAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKHRsc2RhdGEtPnJlbW90ZV9hZGRyKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCAmJgotICAgICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKSB7Ci0gICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyICopICh0LT5kYXRhKTsKLSAgICB9IGVsc2UgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihfbmV0c25tcFRMU0Jhc2VEYXRhKSkgewotICAgICAgICB0bHNkYXRhID0gKF9uZXRzbm1wVExTQmFzZURhdGEgKikgdC0+ZGF0YTsKLSAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKHRsc2RhdGEtPnJlbW90ZV9hZGRyKTsKKyAgICBpZiAoTlVMTCA9PSB0IHx8IHQtPnNvY2sgPD0gMCkgeworICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OSU5WQUxJRENBQ0hFUyk7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIG5ldHNubXBfZHRsc3VkcF9zZW5kIHVzYWdlXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAorICAgIC8qIGRldGVybWluZSByZW1vdGUgYWRkcmVzc2VzICovCisgICAgYWRkcl9wYWlyID0gX2V4dHJhY3RfYWRkcl9wYWlyKHQsIG9wYXF1ZSA/ICpvcGFxdWUgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGVuZ3RoID8gKm9sZW5ndGggOiAwKTsKICAgICBpZiAoTlVMTCA9PSBhZGRyX3BhaXIpIHsKICAgICAgIC8qIFJGQzU5NTM6IHNlY3Rpb24gNS4yLCBzdGVwIDE6CiAgICAgICAgMSkgIElmIHRtU3RhdGVSZWZlcmVuY2UgZG9lcyBub3QgcmVmZXIgdG8gYSBjYWNoZSBjb250YWluaW5nIHZhbHVlcwpAQCAtMTAwNiwxNCArMTA1NCw2IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICB0byA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKLQotICAgIGlmIChOVUxMID09IHRvIHx8IE5VTEwgPT0gdCB8fCB0LT5zb2NrIDw9IDApIHsKLSAgICAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVExTVE1fU05NUFRMU1RNU0VTU0lPTklOVkFMSURDQUNIRVMpOwotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBuZXRzbm1wX2R0bHN1ZHBfc2VuZCB1c2FnZVxuIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KICAgICAvKiBSRkM1OTUzOiBzZWN0aW9uIDUuMiwgc3RlcCAyOgogICAgICAgIDIpICBFeHRyYWN0IHRoZSB0bVNlc3Npb25JRCwgdG1UcmFuc3BvcnREb21haW4sIHRtVHJhbnNwb3J0QWRkcmVzcywKICAgICAgICAgICAgdG1TZWN1cml0eU5hbWUsIHRtUmVxdWVzdGVkU2VjdXJpdHlMZXZlbCwgYW5kIHRtU2FtZVNlY3VyaXR5CkBAIC0xMDI3LDYgKzEwNjcsOSBAQAogICAgICAgIC0gaWYgd2UgZG9uJ3QgaGF2ZSBhIHNlc3Npb24geWV0IChlZywgbm8gdG1TZXNzaW9uSUQgZnJvbSB0aGUKICAgICAgICAgIHNwZWNzKSB0aGVuIHdlIGNyZWF0ZSBvbmUgYXV0b21hdGljYWxseSBoZXJlLgogICAgICovCisgICAgaWYgKG9wYXF1ZSAhPSBOVUxMICYmICpvcGFxdWUgIT0gTlVMTCAmJgorICAgICAgICBvbGVuZ3RoICE9IE5VTEwgJiYgKm9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSkpCisgICAgICAgIHRtU3RhdGVSZWYgPSAobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICopICpvcGFxdWU7CiAKIAogICAgIC8qIFJGQzU5NTM6IHNlY3Rpb24gNS4yLCBzdGVwIDM6CkBAIC0xMTA4LDcgKzExNTEsNyBAQAogICAgIH0KIAogICAgIERFQlVHSUYgKCI5OmR0bHN1ZHAiKSB7Ci0gICAgICAgIGNoYXIgKnN0ciA9IG5ldHNubXBfdWRwX2ZtdGFkZHIoTlVMTCwgKHZvaWQgKikgYWRkcl9wYWlyLAorICAgICAgICBjaGFyICpzdHIgPSB0LT5iYXNlX3RyYW5zcG9ydC0+Zl9mbXRhZGRyKHQsICh2b2lkICopIGFkZHJfcGFpciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpOwogICAgICAgICBERUJVR01TR1RMKCgiOTpkdGxzdWRwIiwgInNlbmQgJWQgYnl0ZXMgZnJvbSAlcCB0byAlcyBvbiBmZCAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgc2l6ZSwgYnVmLCBzdHIsIHQtPnNvY2spKTsKQEAgLTExNzYsMTQgKzEyMTksOSBAQAogICAgICAgICAvKiBpbiB0aGVvcnkgYW4gb2sgdGhpbmcgKi8KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotI2lmIGRlZmluZWQoRklYTUUpICYmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKLSAgICAvKiBYWFg6IGJlZm9yZSB0aGlzIGNhbiB3b3JrLCB3ZSBuZWVkIHRvIHJlbWVtYmVyIGFkZHJlc3Mgd2UKLSAgICAgICByZWNlaXZlZCBpdCBmcm9tIChhZGRyX3BhaXIpICovCi0gICAgcmMgPSBuZXRzbm1wX3VkcGJhc2Vfc2VuZHRvKHQtPnNvY2ssICZjYWNoZXAtPnNvY2thZGRyICByZW1vdGUgIGFkZHJfcGFpciA/ICYoYWRkcl9wYWlyLT5sb2NhbF9hZGRyKSA6IE5VTEwsIHRvLCBvdXRidWYsIHJjKTsKLSNlbHNlCi0gICAgcmMgPSBzZW5kdG8odC0+c29jaywgb3V0YnVmLCByYywgMCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjYWNoZXAtPnNvY2thZGRyLAotICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKLSNlbmRpZiAvKiBsaW51eCAmJiBJUF9QS1RJTkZPICovCisgICAgc29ja3NpemUgPSBuZXRzbm1wX3NvY2thZGRyX3NpemUoJmNhY2hlcC0+c2FzLnNhKTsKKyAgICBzYSA9ICZjYWNoZXAtPnNhcy5zYTsKKyAgICByYyA9IHQtPmJhc2VfdHJhbnNwb3J0LT5mX3NlbmQodCwgb3V0YnVmLCByYywgKHZvaWQqKikmc2EsICZzb2Nrc2l6ZSk7CiAKICAgICByZXR1cm4gcmM7CiB9CkBAIC0xMjA3LDcgKzEyNDUsNyBAQAogICAgICAgICAgICAgc25tcFRsc3RtU2Vzc2lvblNlcnZlckNsb3NlcyBjb3VudGVyIGFzIGFwcHJvcHJpYXRlLgogICAgICovCiAgICAgc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVExTVE1fU05NUFRMU1RNU0VTU0lPTkNMSUVOVENMT1NFUyk7Ci0gICAgCisKICAgICAvKiBSRkM1OTUzOiBzZWN0aW9uIDUuNCwgc3RlcCAyOgogICAgICAgICAyKSAgTG9vayB1cCB0aGUgc2Vzc2lvbiB1c2luZyB0aGUgdG1TZXNzaW9uSUQuCiAgICAgKi8KQEAgLTEyMTcsOCArMTI1NSw4IEBACiAgICAgaWYgKE5VTEwgIT0gdC0+ZGF0YSAmJiB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSkpIHsKICAgICAgICAgdGxzYmFzZSA9IChfbmV0c25tcFRMU0Jhc2VEYXRhICopIHQtPmRhdGE7CiAKLSAgICAgICAgaWYgKHRsc2Jhc2UtPnJlbW90ZV9hZGRyKQotICAgICAgICAgICAgY2FjaGVwID0gZmluZF9iaW9fY2FjaGUoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKXRsc2Jhc2UtPnJlbW90ZV9hZGRyKTsKKyAgICAgICAgaWYgKHRsc2Jhc2UtPmFkZHIpCisgICAgICAgICAgICBjYWNoZXAgPSBmaW5kX2Jpb19jYWNoZSgmdGxzYmFzZS0+YWRkci0+cmVtb3RlX2FkZHIpOwogICAgIH0KIAogICAgIC8qIFJGQzU5NTM6IHNlY3Rpb24gNS40LCBzdGVwIDM6CkBAIC0xMjM3LDExICsxMjc1LDExIEBACiAgICAgICAgIGludCBvcGFxdWVfbGVuID0gMDsKICAgICAgICAgZmRfc2V0IHJlYWRmczsKICAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7Ci0KKyAKICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHA6Y2xvc2UiLAogCQkgICAgIiUiIE5FVFNOTVBfUFJJeiAiZCBieXRlcyByZW1haW4gaW4gd3JpdGVfY2FjaGVcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNhY2hlcC0+d3JpdGVfY2FjaGVfbGVuKSk7Ci0KKyAKICAgICAgICAgLyoKICAgICAgICAgICogaWYgbmVnb3RpYXRpb25zIGhhdmUgY29tcGxldGVkIGFuZCB3ZSd2ZSByZWNlaXZlZCBkYXRhLCB0cnkgYW5kCiAgICAgICAgICAqIHNlbmQgYW55IHF1ZXVlZCBwYWNrZXRzLgpAQCAtMTI1OCw3ICsxMjk2LDcgQEAKICAgICAgICAgICAgICAgICBfbmV0c25tcF9iaW9fdHJ5X2FuZF93cml0ZV9idWZmZXJlZCh0LCBjYWNoZXApOwogICAgICAgICAgICAgICAgIGlmIChjYWNoZXAtPndyaXRlX2NhY2hlX2xlbiA9PSAwKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKLQorIAogICAgICAgICAgICAgICAgIC8qIGlmIHdlJ3ZlIGZhaWxlZCB0aGF0LCB3ZSBwcm9iYWJseSBuZWVkIHRvIHdhaXQgZm9yIHBhY2tldHMgKi8KICAgICAgICAgICAgICAgICBGRF9aRVJPKCZyZWFkZnMpOwogICAgICAgICAgICAgICAgIEZEX1NFVCh0LT5zb2NrLCAmcmVhZGZzKTsKQEAgLTEzMDgsNiArMTM0NiwxMyBAQAogY2hhciAqCiBuZXRzbm1wX2R0bHN1ZHBfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKIHsKKyAgICBpbnQgICAgICAgICAgICAgIHNhX2xlbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gX2ZpbmRfcmVtb3RlX3NvY2thZGRyKHQsIGRhdGEsIGxlbiwgJnNhX2xlbik7CisgICAgaWYgKHNhKSB7CisgICAgICAgIGRhdGEgPSBzYTsKKyAgICAgICAgbGVuID0gc2FfbGVuOworICAgIH0KKwogICAgIHJldHVybiBuZXRzbm1wX2lwdjRfZm10YWRkcigiRFRMU1VEUCIsIHQsIGRhdGEsIGxlbik7CiB9CiAKQEAgLTEzMTcsNDYgKzEzNjIsNDQgQEAKICAqIHRoZSByZW1vdGUgYWRkcmVzcyB0byBzZW5kIHRoaW5ncyB0by4gIAogICovCiAKLW5ldHNubXBfdHJhbnNwb3J0ICoKLW5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luICphZGRyLCBpbnQgbG9jYWwpCitzdGF0aWMgbmV0c25tcF90cmFuc3BvcnQgKgorX3RyYW5zcG9ydF9jb21tb24obmV0c25tcF90cmFuc3BvcnQgKnQsIGludCBsb2NhbCkKIHsKLSAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CisgICAgY2hhciAqdG1wID0gTlVMTDsKKyAgICBpbnQgdG1wX2xlbjsKIAogICAgIERFQlVHVFJBQ0VUT0soIjk6ZHRsc3VkcCIpOwogCi0gICAgdCA9IG5ldHNubXBfdWRwaXB2NGJhc2VfdHJhbnNwb3J0KGFkZHIsIGxvY2FsKTsKICAgICBpZiAoTlVMTCA9PSB0KQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIC8qKiBzYXZlIGJhc2UgdHJhbnNwb3J0IGZvciBjbGllbnRzOyBuZWVkIGluIHNlbmQvcmVjdiBmdW5jdGlvbnMgbGF0ZXIgKi8KKyAgICBpZiAodC0+ZGF0YSkgeyAvKiBkb24ndCBjb3B5IGRhdGEgKi8KKyAgICAgICAgdG1wID0gdC0+ZGF0YTsKKyAgICAgICAgdG1wX2xlbiA9IHQtPmRhdGFfbGVuZ3RoOworICAgICAgICB0LT5kYXRhID0gTlVMTDsKKyAgICB9CisgICAgdC0+YmFzZV90cmFuc3BvcnQgPSBuZXRzbm1wX3RyYW5zcG9ydF9jb3B5KHQpOworCisgICAgaWYgKHRtcCkgeworICAgICAgICB0LT5kYXRhID0gdG1wOworICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IHRtcF9sZW47CisgICAgfQogICAgIGlmIChOVUxMICE9IHQtPmRhdGEgJiYKICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKSB7CiAgICAgICAgIF9uZXRzbm1wVExTQmFzZURhdGEgKnRsc2RhdGEgPQogICAgICAgICAgICAgbmV0c25tcF90bHNiYXNlX2FsbG9jYXRlX3Rsc2RhdGEodCwgbG9jYWwpOwotICAgICAgICB0bHNkYXRhLT5yZW1vdGVfYWRkciA9IHQtPmRhdGE7CisgICAgICAgIHRsc2RhdGEtPmFkZHIgPSB0LT5kYXRhOwogICAgICAgICB0LT5kYXRhID0gdGxzZGF0YTsKICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSBzaXplb2YoX25ldHNubXBUTFNCYXNlRGF0YSk7CiAgICAgfQogCi0gICAgaWYgKCFsb2NhbCkgewotICAgICAgICAvKiBkdGxzIG5lZWRzIHRvIGJpbmQgdGhlIHNvY2tldCBmb3IgU1NMX3dyaXRlIHRvIHdvcmsgKi8KLSAgICAgICAgaWYgKGNvbm5lY3QodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLCBzaXplb2YoKmFkZHIpKSA9PSAtMSkKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiBmYWlsZWQgdG8gY29ubmVjdFxuIik7Ci0gICAgfQotCi0gICAgLyogWFhYOiBQb3RlbnRpYWxseSBzZXQgc29jayBvcHRzIGhlcmUgKFNPX1NOREJVRi9TT19SQ1ZfQlVGKSAqLyAgICAgIAotICAgIC8qIFhYWDogYW5kIGJ1ZiBzaXplICovICAgICAgICAKLQogICAgIC8qCiAgICAgICogU2V0IERvbWFpbgogICAgICAqLwogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBEVExTVURQRG9tYWluOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICB0LT5kb21haW5fbGVuZ3RoID0gbmV0c25tcERUTFNVRFBEb21haW5fbGVuOyAgICAgCiAKLSAgICAvKgotICAgICAqIDE2LWJpdCBsZW5ndGggZmllbGQsIDggYnl0ZSBEVExTIGhlYWRlciwgMjAgYnl0ZSBJUHY0IGhlYWRlciAgCi0gICAgICovCi0gICAgdC0+bXNnTWF4U2l6ZSAgICAgID0gMHhmZmZmIC0gOCAtIDIwOwotCiAgICAgdC0+Zl9yZWN2ICAgICAgICAgID0gbmV0c25tcF9kdGxzdWRwX3JlY3Y7CiAgICAgdC0+Zl9zZW5kICAgICAgICAgID0gbmV0c25tcF9kdGxzdWRwX3NlbmQ7CiAgICAgdC0+Zl9jbG9zZSAgICAgICAgID0gbmV0c25tcF9kdGxzdWRwX2Nsb3NlOwpAQCAtMTM3MCwyOSArMTQxMywxMDAgQEAKICAgICByZXR1cm4gdDsKIH0KIAotCi12b2lkCi1uZXRzbm1wX2R0bHN1ZHBfYWdlbnRfY29uZmlnX3Rva2Vuc19yZWdpc3Rlcih2b2lkKQorbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9kdGxzdWRwX3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsIGludCBsb2NhbCkKIHsKKyAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CisKKyAgICBERUJVR1RSQUNFVE9LKCJkdGxzdWRwIik7CisKKyAgICB0ID0gbmV0c25tcF91ZHBfdHJhbnNwb3J0KGFkZHIsIGxvY2FsKTsKKyAgICBpZiAoTlVMTCA9PSB0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIF90cmFuc3BvcnRfY29tbW9uKHQsIGxvY2FsKTsKKworICAgIGlmICghbG9jYWwpIHsKKyAgICAgICAgLyogZHRscyBuZWVkcyB0byBiaW5kIHRoZSBzb2NrZXQgZm9yIFNTTF93cml0ZSB0byB3b3JrICovCisgICAgICAgIGlmIChjb25uZWN0KHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkciwgc2l6ZW9mKCphZGRyKSkgPT0gLTEpCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZHRsczogZmFpbGVkIHRvIGNvbm5lY3RcbiIpOworICAgIH0KKworICAgIHJldHVybiB0OwogfQogCiAKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorCitjaGFyICoKK25ldHNubXBfZHRsc3VkcDZfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgIHNhX2xlbjsKKyAgICBzdHJ1Y3Qgc29ja2FkZHIgKnNhID0gX2ZpbmRfcmVtb3RlX3NvY2thZGRyKHQsIGRhdGEsIGxlbiwgJnNhX2xlbik7CisgICAgaWYgKHNhKSB7CisgICAgICAgIGRhdGEgPSBzYTsKKyAgICAgICAgbGVuID0gc2FfbGVuOworICAgIH0KKworICAgIHJldHVybiBuZXRzbm1wX2lwdjZfZm10YWRkcigiRFRMU1VEUDYiLCB0LCBkYXRhLCBsZW4pOworfQorCisvKgorICogT3BlbiBhIERUTFMtYmFzZWQgdHJhbnNwb3J0IGZvciBTTk1QLiAgTG9jYWwgaXMgVFJVRSBpZiBhZGRyIGlzIHRoZSBsb2NhbAorICogYWRkcmVzcyB0byBiaW5kIHRvIChpLmUuIHRoaXMgaXMgYSBzZXJ2ZXItdHlwZSBzZXNzaW9uKTsgb3RoZXJ3aXNlIGFkZHIgaXMgCisgKiB0aGUgcmVtb3RlIGFkZHJlc3MgdG8gc2VuZCB0aGluZ3MgdG8uICAKKyAqLworCituZXRzbm1wX3RyYW5zcG9ydCAqCituZXRzbm1wX2R0bHN1ZHA2X3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyLCBpbnQgbG9jYWwpCit7CisgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOworCisgICAgREVCVUdUUkFDRVRPSygiZHRsc3VkcCIpOworCisgICAgdCA9IG5ldHNubXBfdWRwNl90cmFuc3BvcnQoYWRkciwgbG9jYWwpOworICAgIGlmIChOVUxMID09IHQpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgX3RyYW5zcG9ydF9jb21tb24odCwgbG9jYWwpOworCisgICAgaWYgKCFsb2NhbCkgeworICAgICAgICAvKiBkdGxzIG5lZWRzIHRvIGJpbmQgdGhlIHNvY2tldCBmb3IgU1NMX3dyaXRlIHRvIHdvcmsgKi8KKyAgICAgICAgaWYgKGNvbm5lY3QodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLCBzaXplb2YoKmFkZHIpKSA9PSAtMSkKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiBmYWlsZWQgdG8gY29ubmVjdFxuIik7CisgICAgfQorCisgICAgLyogWFhYOiBQb3RlbnRpYWxseSBzZXQgc29jayBvcHRzIGhlcmUgKFNPX1NOREJVRi9TT19SQ1ZfQlVGKSAqLyAgICAgIAorICAgIC8qIFhYWDogYW5kIGJ1ZiBzaXplICovICAgICAgICAKKworICAgIHQtPmZfZm10YWRkciAgICAgICA9IG5ldHNubXBfZHRsc3VkcDZfZm10YWRkcjsKKworICAgIHJldHVybiB0OworfQorI2VuZGlmCiAKIAogbmV0c25tcF90cmFuc3BvcnQgKgogbmV0c25tcF9kdGxzdWRwX2NyZWF0ZV90c3RyaW5nKGNvbnN0IGNoYXIgKnN0ciwgaW50IGlzc2VydmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlZmF1bHRfdGFyZ2V0KQogeworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgc3RydWN0IHNvY2thZGRyX2luNiBhZGRyNjsKKyNlbmRpZgogICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOwogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0OwogICAgIF9uZXRzbm1wVExTQmFzZURhdGEgKnRsc2RhdGE7CiAgICAgY2hhciBidWZbU1BSSU5UX01BWF9MRU5dLCAqY3A7CiAKLSAgICBpZiAobmV0c25tcF9zb2NrYWRkcl9pbjIoJmFkZHIsIHN0ciwgZGVmYXVsdF90YXJnZXQpKSB7CisgICAgaWYgKG5ldHNubXBfc29ja2FkZHJfaW4yKCZhZGRyLCBzdHIsIGRlZmF1bHRfdGFyZ2V0KSkKICAgICAgICAgdCA9IG5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoJmFkZHIsIGlzc2VydmVyKTsKLSAgICB9IGVsc2UgeworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgZWxzZSBpZiAobmV0c25tcF9zb2NrYWRkcl9pbjZfMigmYWRkcjYsIHN0ciwgZGVmYXVsdF90YXJnZXQpKQorICAgICAgICB0ID0gbmV0c25tcF9kdGxzdWRwNl90cmFuc3BvcnQoJmFkZHI2LCBpc3NlcnZlcik7CisjZW5kaWYKKyAgICBlbHNlCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKwogCiAgICAgLyogc2VlIGlmIHdlIGNhbiBleHRyYWN0IHRoZSByZW1vdGUgaG9zdG5hbWUgKi8KICAgICBpZiAoIWlzc2VydmVyICYmIHQgJiYgdC0+ZGF0YSAmJiBzdHIpIHsKQEAgLTE0MjMsNiArMTUzNywxNiBAQAogICAgICAgICBhZGRyLnNpbl9wb3J0ID0gaHRvbnMocG9ydHRtcCk7CiAgICAgICAgIHJldHVybiBuZXRzbm1wX2R0bHN1ZHBfdHJhbnNwb3J0KCZhZGRyLCBsb2NhbCk7CiAgICAgfQorI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgZWxzZSBpZiAob19sZW4gPT0gMTgpIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2luNiBhZGRyNjsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydHRtcCA9IChvWzE2XSA8PCA4KSArIG9bMTddOworICAgICAgICBhZGRyNi5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworICAgICAgICBtZW1jcHkoKHVfY2hhciAqKSAmIChhZGRyNi5zaW42X2FkZHIuczZfYWRkciksIG8sIDQpOworICAgICAgICBhZGRyNi5zaW42X3BvcnQgPSBodG9ucyhwb3J0dG1wKTsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfZHRsc3VkcDZfdHJhbnNwb3J0KCZhZGRyNiwgbG9jYWwpOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0xNDMwLDE2ICsxNTU0LDMyIEBACiBuZXRzbm1wX2R0bHN1ZHBfY3Rvcih2b2lkKQogewogICAgIGNoYXIgaW5kZXhuYW1lW10gPSAiX25ldHNubXBfYWRkcl9pbmZvIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqcHJlZml4ZXNbXSA9IHsgImR0bHN1ZHAiLCAiZHRscyIKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsICJkdGxzdWRwNiIsICJkdGxzNiIKKyNlbmRpZgorICAgIH07CisgICAgaW50IGksIG51bV9wcmVmaXhlcyA9IHNpemVvZihwcmVmaXhlcykgLyBzaXplb2YoY2hhciAqKTsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGNoYXIgaW5kZXhuYW1lNltdID0gIl9uZXRzbm1wX2FkZHJfaW5mbzYiOworI2VuZGlmCiAKICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJyZWdpc3RlcmluZyBEVExTIGNvbnN0cnVjdG9yXG4iKSk7CiAKICAgICAvKiBjb25maWcgc2V0dGluZ3MgKi8KIAorI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VEUElQVjZfRE9NQUlOCisgICAgaWYgKCFvcGVuc3NsX2FkZHJfaW5kZXg2KQorICAgICAgICBvcGVuc3NsX2FkZHJfaW5kZXg2ID0KKyAgICAgICAgICAgIFNTTF9nZXRfZXhfbmV3X2luZGV4KDAsIGluZGV4bmFtZTYsIE5VTEwsIE5VTEwsIE5VTEwpOworI2VuZGlmCisKICAgICBkdGxzdWRwRG9tYWluLm5hbWUgPSBuZXRzbm1wRFRMU1VEUERvbWFpbjsKICAgICBkdGxzdWRwRG9tYWluLm5hbWVfbGVuZ3RoID0gbmV0c25tcERUTFNVRFBEb21haW5fbGVuOwotICAgIGR0bHN1ZHBEb21haW4ucHJlZml4ID0gKGNvbnN0IGNoYXIqKiljYWxsb2MoMywgc2l6ZW9mKGNoYXIgKikpOwotICAgIGR0bHN1ZHBEb21haW4ucHJlZml4WzBdID0gImR0bHN1ZHAiOwotICAgIGR0bHN1ZHBEb21haW4ucHJlZml4WzFdID0gImR0bHMiOworICAgIGR0bHN1ZHBEb21haW4ucHJlZml4ID0gKGNvbnN0IGNoYXIqKiljYWxsb2MobnVtX3ByZWZpeGVzICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjaGFyICopKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3ByZWZpeGVzOyArKyBpKQorICAgICAgICBkdGxzdWRwRG9tYWluLnByZWZpeFtpXSA9IHByZWZpeGVzW2ldOwogCiAgICAgZHRsc3VkcERvbWFpbi5mX2NyZWF0ZV9mcm9tX3RzdHJpbmcgICAgID0gTlVMTDsKICAgICBkdGxzdWRwRG9tYWluLmZfY3JlYXRlX2Zyb21fdHN0cmluZ19uZXcgPSBuZXRzbm1wX2R0bHN1ZHBfY3JlYXRlX3RzdHJpbmc7CkBAIC0xNDYzLDYgKzE2MDMsOSBAQAogdHlwZWRlZiB1bmlvbiB7CiAgICAgICAgc3RydWN0IHNvY2thZGRyIHNhOwogICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzNDsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgczY7CisjZW5kaWYKIH0gX3BlZXJfdW5pb247CiAKIGludCBuZXRzbm1wX2R0bHNfZ2VuX2Nvb2tpZShTU0wgKnNzbCwgdW5zaWduZWQgY2hhciAqY29va2llLApAQCAtMTQ5MCw3ICsxNjMzLDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImR0bHM6IGZhaWxlZCB0byBnZXQgdGhlIHBlZXIgYWRkcmVzc1xuIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBwZWVyID0gKF9wZWVyX3VuaW9uICopJmNhY2hlcC0+c29ja2FkZHI7CisgICAgcGVlciA9IChfcGVlcl91bmlvbiAqKSZjYWNoZXAtPnNhczsKIAogICAgIC8qIENyZWF0ZSBidWZmZXIgd2l0aCBwZWVyJ3MgYWRkcmVzcyBhbmQgcG9ydCAqLwogICAgIGxlbmd0aCA9IDA7CkBAIC0xNDk5LDYgKzE2NDIsMTIgQEAKICAgICAgICAgbGVuZ3RoICs9IHNpemVvZihzdHJ1Y3QgaW5fYWRkcik7CiAgICAgICAgIGxlbmd0aCArPSBzaXplb2YocGVlci0+czQuc2luX3BvcnQpOwogICAgICAgICBicmVhazsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgIGxlbmd0aCArPSBzaXplb2Yoc3RydWN0IGluNl9hZGRyKTsKKyAgICAgICAgbGVuZ3RoICs9IHNpemVvZihwZWVyLT5zNi5zaW42X3BvcnQpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzIGdlbmVyYXRpbmcgY29va2llOiB1bmtub3duIGZhbWlseTogJWRcbiIsCiAgICAgICAgICAgICAgICAgIHBlZXItPnNhLnNhX2ZhbWlseSk7CkBAIC0xNTE5LDYgKzE2NjgsMTYgQEAKICAgICAgICAgICAgICAgICZwZWVyLT5zNC5zaW5fYWRkciwKICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOwogICAgICAgICBicmVhazsKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorICAgIGNhc2UgQUZfSU5FVDY6CisgICAgICAgIG1lbWNweShidWZmZXIsCisgICAgICAgICAgICAgICAmcGVlci0+czYuc2luNl9wb3J0LAorICAgICAgICAgICAgICAgc2l6ZW9mKHBlZXItPnM2LnNpbjZfcG9ydCkpOworICAgICAgICBtZW1jcHkoYnVmZmVyICsgc2l6ZW9mKHBlZXItPnM2LnNpbjZfcG9ydCksCisgICAgICAgICAgICAgICAmcGVlci0+czYuc2luNl9hZGRyLAorICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcikpOworICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiB1bmtub3duIGFkZHJlc3MgZmFtaWx5IGdlbmVyYXRpbmcgYSBjb29raWVcbiIpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTE1NTYsNyArMTcxNSw3IEBACiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzOiBmYWlsZWQgdG8gZ2V0IHRoZSBwZWVyIGFkZHJlc3NcbiIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcGVlciA9IChfcGVlcl91bmlvbiAqKSZjYWNoZXAtPnNvY2thZGRyOworICAgIHBlZXIgPSAoX3BlZXJfdW5pb24gKikmY2FjaGVwLT5zYXM7CiAKICAgICAvKiBDcmVhdGUgYnVmZmVyIHdpdGggcGVlcidzIGFkZHJlc3MgYW5kIHBvcnQgKi8KICAgICBsZW5ndGggPSAwOwpAQCAtMTU2NSw2ICsxNzI0LDEyIEBACiAgICAgICAgIGxlbmd0aCArPSBzaXplb2Yoc3RydWN0IGluX2FkZHIpOwogICAgICAgICBsZW5ndGggKz0gc2l6ZW9mKHBlZXItPnM0LnNpbl9wb3J0KTsKICAgICAgICAgYnJlYWs7CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICBsZW5ndGggKz0gc2l6ZW9mKHN0cnVjdCBpbjZfYWRkcik7CisgICAgICAgIGxlbmd0aCArPSBzaXplb2YocGVlci0+czYuc2luNl9wb3J0KTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZHRsczogdW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCBnZW5lcmF0aW5nIGEgY29va2llXG4iLApAQCAtMTU4Niw2ICsxNzUxLDE2IEBACiAgICAgICAgICAgICAgICAmcGVlci0+czQuc2luX2FkZHIsCiAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IGluX2FkZHIpKTsKICAgICAgICAgYnJlYWs7CisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4KKyAgICBjYXNlIEFGX0lORVQ2OgorICAgICAgICBtZW1jcHkoYnVmZmVyLAorICAgICAgICAgICAgICAgJnBlZXItPnM2LnNpbjZfcG9ydCwKKyAgICAgICAgICAgICAgIHNpemVvZihwZWVyLT5zNi5zaW42X3BvcnQpKTsKKyAgICAgICAgbWVtY3B5KGJ1ZmZlciArIHNpemVvZihwZWVyLT5zNi5zaW42X3BvcnQpLAorICAgICAgICAgICAgICAgJnBlZXItPnM2LnNpbjZfYWRkciwKKyAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZHRsczogdW5rbm93biBhZGRyZXNzIGZhbWlseSAlZCBnZW5lcmF0aW5nIGEgY29va2llXG4iLApkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVBYRG9tYWluLmMKaW5kZXggZmRjODA3MS4uMTM0NjE1NiAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUFhEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcElQWERvbWFpbi5jCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAogI2RlZmluZSBTTk1QX0lQWF9ERUZBVUxUX1BPUlQJMzY4NzkgICAvKiAgU3BlY2lmaWVkIGluIFJGQyAxNDIwLiAgKi8KIHN0YXRpYyBuZXRzbm1wX3Rkb21haW4gaXB4RG9tYWluOwpAQCAtMTgyLDExICsxODMsMTYgQEAKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gMDsKIAorI2lmZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKKyAgICBpZiAobG9jYWwpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKwogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2lweF9mYW1pbHkgIT0gQUZfSVBYKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTE5OSw4ICsyMDUsNiBAQAogICAgICAgICBmcmVlKHN0cik7CiAgICAgfQogCi0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwotCiAgICAgdC0+ZG9tYWluID0gbmV0c25tcElQWERvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0gbmV0c25tcElQWERvbWFpbl9sZW47CiAKQEAgLTIxMSw2ICsyMTUsNyBAQAogICAgIH0KIAogICAgIGlmIChsb2NhbCkgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIHQtPmxvY2FsID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYygxMik7CiAgICAgICAgIGlmICh0LT5sb2NhbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwpAQCAtMjM2LDYgKzI0MSw5IEBACiAgICAgICAgIH0KICAgICAgICAgdC0+ZGF0YSA9IE5VTEw7CiAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID0gMDsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0gZWxzZSB7CiAgICAgICAgIHQtPnJlbW90ZSA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2MoMTIpOwogICAgICAgICBpZiAodC0+cmVtb3RlID09IE5VTEwpIHsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NEJhc2VEb21haW4uYwppbmRleCA5ZjRiNmE5Li4wNWUxNTBiIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjRCYXNlRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY0QmFzZURvbWFpbi5jCkBAIC0yMDIsMTkgKzIwMiwxOSBAQAogICAgICAgICB0byA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKICAgICAgICAgaWYgKHRvID09IE5VTEwpIHsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlczogdW5rbm93bi0+WyVzXTolaHUiLCBwcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICBpbmV0X250b2EoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbl9hZGRyKSwKLSAgICAgICAgICAgICAgICAgICAgIG50b2hzKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW5fcG9ydCkpOworICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW4uc2luX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgbnRvaHMoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbi5zaW5fcG9ydCkpOwogICAgICAgICB9IGVsc2UgaWYgKCB0ICYmIHQtPmZsYWdzICYgTkVUU05NUF9UUkFOU1BPUlRfRkxBR19IT1NUTkFNRSApIHsKICAgICAgICAgICAgIC8qIFhYWDogaG1tLi4uICB3aHkgaXNuJ3QgdGhpcyBwcmVmaXhlZCAqLwogICAgICAgICAgICAgLyogYXNzdW1pbmcgaW50ZW50aW9uYWwgKi8KLSAgICAgICAgICAgIGhvc3QgPSBnZXRob3N0YnlhZGRyKChjaGFyICopJnRvLT5zaW5fYWRkciwgNCwgQUZfSU5FVCk7CisgICAgICAgICAgICBob3N0ID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKChjaGFyICopJnRvLT5zaW5fYWRkciwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgQUZfSU5FVCk7CiAgICAgICAgICAgICByZXR1cm4gKGhvc3QgPyBzdHJkdXAoaG9zdC0+aF9uYW1lKSA6IE5VTEwpOyAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCwgc2l6ZW9mKHRtcCksICIlczogWyVzXTolaHUtPiIsIHByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvYSh0by0+c2luX2FkZHIpLCBudG9ocyh0by0+c2luX3BvcnQpKTsKICAgICAgICAgICAgIHNucHJpbnRmKHRtcCArIHN0cmxlbih0bXApLCBzaXplb2YodG1wKS1zdHJsZW4odG1wKSwgIlslc106JWh1IiwKLSAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvYShhZGRyX3BhaXItPmxvY2FsX2FkZHIuc2luX2FkZHIpLAotICAgICAgICAgICAgICAgICAgICAgbnRvaHMoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbl9wb3J0KSk7CisgICAgICAgICAgICAgICAgICAgICBpbmV0X250b2EoYWRkcl9wYWlyLT5sb2NhbF9hZGRyLnNpbi5zaW5fYWRkciksCisgICAgICAgICAgICAgICAgICAgICBudG9ocyhhZGRyX3BhaXItPmxvY2FsX2FkZHIuc2luLnNpbl9wb3J0KSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgdG1wW3NpemVvZih0bXApLTFdID0gJ1wwJzsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wSVB2NkJhc2VEb21haW4uYwppbmRleCAwMWY4MWI5Li4xYWQ2ODg4IDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcElQdjZCYXNlRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBJUHY2QmFzZURvbWFpbi5jCkBAIC0zLDggKzMsMTEgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBJUHY2QmFzZURvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmg+CiAKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtOTAsNyArOTMsNyBAQAogICAgIGNoYXIgYWRkcltJTkVUNl9BRERSU1RSTEVOXTsKICAgICBjaGFyIHRtcFtJTkVUNl9BRERSU1RSTEVOICsgMThdOwogCi0gICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwNiIsICJmbXRhZGRyOiB0ID0gJXAsIGRhdGEgPSAlcCwgbGVuID0gJWRcbiIsIHQsCisgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfaXB2NiIsICJmbXRhZGRyOiB0ID0gJXAsIGRhdGEgPSAlcCwgbGVuID0gJWRcbiIsIHQsCiAgICAgICAgICAgICAgICAgZGF0YSwgbGVuKSk7CiAgICAgaWYgKGRhdGEgIT0gTlVMTCAmJiBsZW4gPT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKSB7CiAgICAgICAgIHRvID0gKHN0cnVjdCBzb2NrYWRkcl9pbjYgKikgZGF0YTsKQEAgLTM0MCwxNiArMzQzLDkgQEAKICAgICAgICAgICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwogICAgICAgICAgICAgaGludC5haV9wcm90b2NvbCA9IDA7CiAKLSAgICAgICAgICAgIGVyciA9IGdldGFkZHJpbmZvKHBlZXJuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKKyAgICAgICAgICAgIGVyciA9IG5ldHNubXBfZ2V0YWRkcmluZm8ocGVlcm5hbWUsIE5VTEwsICZoaW50LCAmYWRkcnMpOwogICAgICAgICB9CiAgICAgICAgIGlmIChlcnIgIT0gMCkgewotI2lmIEhBVkVfR0FJX1NUUkVSUk9SCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm8oXCIlc1wiLCBOVUxMLCAuLi4pOiAlc1xuIiwgcGVlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICBnYWlfc3RyZXJyb3IoZXJyKSk7Ci0jZWxzZQotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImdldGFkZHJpbmZvKFwiJXNcIiwgTlVMTCwgLi4uKTogKGVycm9yICVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgIHBlZXJuYW1lLCBlcnIpOwotI2VuZGlmCiAgICAgICAgICAgICBmcmVlKHBlZXJuYW1lKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CkBAIC0zNzQsNyArMzcwLDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW42XzIiLCAiaG9zdG5hbWUgKHJlc29sdmVkIG9rYXkpXG4iKSk7CiAgICAgICAgIG1lbWNweSgmKGFkZHItPnNpbjZfYWRkciksIGhwLT5oX2FkZHIsIGhwLT5oX2xlbmd0aCk7CiAjZWxpZiBIQVZFX0dFVEhPU1RCWU5BTUUKLSAgICAgICAgaHAgPSBnZXRob3N0YnluYW1lKHBlZXJuYW1lKTsKKyAgICAgICAgaHAgPSBuZXRzbm1wX2dldGhvc3RieW5hbWUocGVlcm5hbWUpOwogICAgICAgICBpZiAoaHAgPT0gTlVMTCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW42XzIiLAogICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChjb3VsZG4ndCByZXNvbHZlKVxuIikpOwpAQCAtNDIzLDMgKzQxOSw1IEBACiAgICAgc3ByaW50ZihidWYsICI6JXUiLCByZW1vdGVfcG9ydCk7CiAgICAgcmV0dXJuIG5ldHNubXBfc29ja2FkZHJfaW42XzIoYWRkciwgaW5wZWVybmFtZSwgcmVtb3RlX3BvcnQgPyBidWYgOiBOVUxMKTsKIH0KKworI2VuZGlmIC8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFNTSERvbWFpbi5jCmluZGV4IDdmNTFmODYuLmE5ZWQ4MWYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1NIRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBTU0hEb21haW4uYwpAQCAtMSw0ICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1mZWF0dXJlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmg+CiAKQEAgLTYwLDYgKzYxLDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBTb2NrZXRCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oPgogCituZXRzbm1wX2ZlYXR1cmVfcmVxdWlyZSh1c2VyX2luZm9ybWF0aW9uKQorCiAjZGVmaW5lIE1BWF9OQU1FX0xFTkdUSCAxMjcKIAogI2RlZmluZSBORVRTTk1QX1NTSFRPU05NUF9WRVJTSU9OMSAgICAgIDEKQEAgLTgwLDEwICs4Myw2IEBACiBjb25zdCBvaWQgbmV0c25tcF9zbm1wU1NIRG9tYWluW10gPSB7IFRSQU5TUE9SVF9ET01BSU5fU1NIX0lQIH07CiBzdGF0aWMgbmV0c25tcF90ZG9tYWluIHNzaERvbWFpbjsKIAotY29uc3QgY2hhciAqa2V5ZmlsZTE9Ii9ob21lL2hhcmRha2VyLy5zc2gvaWRfcnNhLnB1YiI7Ci1jb25zdCBjaGFyICprZXlmaWxlMj0iL2hvbWUvaGFyZGFrZXIvLnNzaC9pZF9yc2EiOwotY29uc3QgY2hhciAqdXNlcm5hbWU9ImhhcmRha2VyIjsKLQogI2RlZmluZSBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFIDEKIAogLyoKQEAgLTU4NCw2ICs1ODMsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSFRPU05NUF9TT0NLRVQpOwogICAgIGNoYXIgdG1wc29ja3BhdGhbTUFYUEFUSExFTl07CiAKKyNpZmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCisgICAgaWYgKGxvY2FsKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisKICAgICBpZiAoYWRkciA9PSBOVUxMIHx8IGFkZHItPnNpbl9mYW1pbHkgIT0gQUZfSU5FVCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01OTIsNyArNTk2LDYgQEAKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CiAKICAgICB0LT5kb21haW4gPSBuZXRzbm1wX3NubXBTU0hEb21haW47CiAgICAgdC0+ZG9tYWluX2xlbmd0aCA9IG5ldHNubXBfc25tcFNTSERvbWFpbl9sZW47CkBAIC02MDcsNiArNjEwLDcgQEAKICAgICB0LT5kYXRhX2xlbmd0aCA9IHNpemVvZihuZXRzbm1wX3NzaF9hZGRyX3BhaXIpOwogCiAgICAgaWYgKGxvY2FsKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICNpZmRlZiBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFCiAKICAgICAgICAgLyogWFhYOiBzZXQgdC0+bG9jYWwgYW5kIHQtPmxvY2FsX2xlbmd0aCAqLwpAQCAtNzE1LDkgKzcxOSw0MiBAQAogICAgICAgICAvKiBYWFg6IHZlcmlmeSB3ZSdyZSBpbnNpZGUgc3NoICovCiAgICAgICAgIHQtPnNvY2sgPSBTVERJTl9GSUxFTk87CiAjZW5kaWYgLyogISBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFICovCi0KKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFhYWDogbmVlZCBhbiBpcHY2IGZyaWVuZGx5IG9uZSB0b28gKHNpZ2gpICovCisgICAgICAgIGNoYXIgKnVzZXJuYW1lOworICAgICAgICBjaGFyICprZXlmaWxlcHViOworICAgICAgICBjaGFyICprZXlmaWxlcHJpdjsKKyAgICAgICAgCisgICAgICAgIC8qIHVzZSB0aGUgcmVxdWVzdGVkIHVzZXIgbmFtZSAqLworICAgICAgICAvKiBYWFg6IGRlZmF1bHQgdG8gdGhlIGN1cnJlbnQgdXNlciBuYW1lIG9uIHRoZSBzeXN0ZW0gbGlrZSBzc2ggZG9lcyAqLworICAgICAgICB1c2VybmFtZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSF9VU0VSTkFNRSk7CisgICAgICAgIGlmICghdXNlcm5hbWUgfHwgMCA9PSAqdXNlcm5hbWUpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJZb3UgbXVzdCBzcGVjaWZ5IGEgc3NoIHVzZXJuYW1lIHRvIHVzZS4gIFNlZSB0aGUgc25tcC5jb25mIG1hbnVhbCBwYWdlXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLyogdXNlIHRoZSByZXF1ZXN0ZWQgcHVibGljIGtleSBmaWxlICovCisgICAgICAgIGtleWZpbGVwdWIgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSF9QVUJLRVkpOworICAgICAgICBpZiAoIWtleWZpbGVwdWIgfHwgMCA9PSAqa2V5ZmlsZXB1YikgeworICAgICAgICAgICAgLyogWFhYOiBkZWZhdWx0IHRvIH4vLnNzaC9pZF9yc2EucHViICovCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiWW91IG11c3Qgc3BlY2lmeSBhIHNzaCBwdWJsaWMga2V5IGZpbGUgdG8gdXNlLiAgU2VlIHRoZSBzbm1wLmNvbmYgbWFudWFsIHBhZ2VcbiIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiB1c2UgdGhlIHJlcXVlc3RlZCBwcml2YXRlIGtleSBmaWxlICovCisgICAgICAgIGtleWZpbGVwcml2ID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIX1BSSVZLRVkpOworICAgICAgICBpZiAoIWtleWZpbGVwcml2IHx8IDAgPT0gKmtleWZpbGVwcml2KSB7CisgICAgICAgICAgICAvKiBYWFg6IGRlZmF1bHQgdG8ga2V5ZmlsZXB1YiB3aXRob3V0IHRoZSAucHViIHN1ZmZpeCAqLworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIllvdSBtdXN0IHNwZWNpZnkgYSBzc2ggcHJpdmF0ZSBrZXkgZmlsZSB0byB1c2UuICBTZWUgdGhlIHNubXAuY29uZiBtYW51YWwgcGFnZVxuIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHh4eDogbmVlZCBhbiBpcHY2IGZyaWVuZGx5IG9uZSB0b28gKHNpZ2gpICovCiAKICAgICAgICAgLyogWFhYOiBub3QgaWRlYWwgd2hlbiBzdHJ1Y3RzIGRvbid0IGFjdHVhbGx5IG1hdGNoIHNpemUgd2lzZSAqLwogICAgICAgICBtZW1jcHkoJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKSwgYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOwpAQCAtODA0LDcgKzg0MSw3IEBACiAgICAgICAgICAgICAvKiBwdWJsaWMga2V5ICovCiAgICAgICAgICAgICBpZiAobGlic3NoMl91c2VyYXV0aF9wdWJsaWNrZXlfZnJvbWZpbGUoYWRkcl9wYWlyLT5zZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGUxLCBrZXlmaWxlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlmaWxlcHViLCBrZXlmaWxlcHJpdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKSkgewogICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIkF1dGhlbnRpY2F0aW9uIGJ5IHB1YmxpYyBrZXkgZmFpbGVkIVxuIik7CiAgICAgICAgICAgICAgICAgZ290byBzaHV0ZG93bjsKQEAgLTk1NCw2ICs5OTEsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIVE9TTk1QX1NPQ0tFVCk7CiAKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJzc2h1c2VybmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1NTSF9VU0VSTkFNRSk7CisKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJzc2hwdWJsaWNrZXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9TU0hfUFVCS0VZKTsKKworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgInNzaHByaXZhdGVrZXkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9TU0hfUFJJVktFWSk7CisKICAgICBERUJVR01TR1RMKCgic3NoIiwgInJlZ2lzdGVyaW5nIHRoZSBzc2ggZG9tYWluXG4iKSk7CiAgICAgbmV0c25tcF90ZG9tYWluX3JlZ2lzdGVyKCZzc2hEb21haW4pOwogfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBTVEREb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wU1RERG9tYWluLmMKaW5kZXggMjFlMGQ3OS4uMGExYzNmOSAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBTVEREb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFNURERvbWFpbi5jCkBAIC0xNTQsMTEgKzE1NCwxMCBAQAogewogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0OwogCi0gICAgdCA9IChuZXRzbm1wX3RyYW5zcG9ydCAqKSBtYWxsb2Moc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CisgICAgdCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90cmFuc3BvcnQpOwogICAgIGlmICh0ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKIAogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBfc25tcFNURERvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0KZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUERvbWFpbi5jCmluZGV4IGExMDNmMDYuLjdmZWIwMjggMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUQ1BEb21haW4uYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcElQdjRCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wU29ja2V0QmFzZURvbWFpbi5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRDUEJhc2VEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAKIC8qCiAgKiBuZWVkcyB0byBiZSBpbiBzeW5jIHdpdGggdGhlIGRlZmluaXRpb25zIGluIHNubXBsaWIvc25tcFVEUERvbWFpbi5jCkBAIC03NiwxMCArNzcsOSBAQAogICAgIHN0cnVjdCBzb2NrYWRkciAqZmFyZW5kID0gTlVMTDsKICAgICBuZXRzbm1wX3VkcF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7CiAgICAgaW50ICAgICAgICAgICAgIG5ld3NvY2sgPSAtMTsKLSAgICBzb2NrbGVuX3QgICAgICAgZmFyZW5kbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbik7CisgICAgc29ja2xlbl90ICAgICAgIGZhcmVuZGxlbiA9IHNpemVvZihuZXRzbm1wX3VkcF9hZGRyX3BhaXIpOwogCi0gICAgYWRkcl9wYWlyID0gKG5ldHNubXBfdWRwX2FkZHJfcGFpciAqKW1hbGxvYyhzaXplb2YobmV0c25tcF91ZHBfYWRkcl9wYWlyKSk7Ci0KKyAgICBhZGRyX3BhaXIgPSAobmV0c25tcF91ZHBfYWRkcl9wYWlyICopbWFsbG9jKGZhcmVuZGxlbik7CiAgICAgaWYgKGFkZHJfcGFpciA9PSBOVUxMKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIEluZGljYXRlIHRoYXQgdGhlIGFjY2VwdGFuY2Ugb2YgdGhpcyBzb2NrZXQgZmFpbGVkLiAgCkBAIC04OCw3ICs4OCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgbWVtc2V0KGFkZHJfcGFpciwgMCwgc2l6ZW9mICphZGRyX3BhaXIpOwotICAgIGZhcmVuZCA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKKyAgICBmYXJlbmQgPSAmYWRkcl9wYWlyLT5yZW1vdGVfYWRkci5zYTsKIAogICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+c29jayA+PSAwKSB7CiAgICAgICAgIG5ld3NvY2sgPSBhY2NlcHQodC0+c29jaywgZmFyZW5kLCAmZmFyZW5kbGVuKTsKQEAgLTk2LDcgKzk2LDcgQEAKICAgICAgICAgaWYgKG5ld3NvY2sgPCAwKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF90Y3AiLCAiYWNjZXB0IGZhaWxlZCByYyAlZCBlcnJubyAlZCBcIiVzXCJcbiIsCiAJCQluZXdzb2NrLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKSk7Ci0gICAgICAgICAgICBmcmVlKGZhcmVuZCk7CisgICAgICAgICAgICBmcmVlKGFkZHJfcGFpcik7CiAgICAgICAgICAgICByZXR1cm4gbmV3c29jazsKICAgICAgICAgfQogCkBAIC0xMzAsNyArMTMwLDcgQEAKIAogICAgICAgICByZXR1cm4gbmV3c29jazsKICAgICB9IGVsc2UgewotICAgICAgICBmcmVlKGZhcmVuZCk7CisgICAgICAgIGZyZWUoYWRkcl9wYWlyKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIH0KQEAgLTE1MCwxNiArMTUwLDE5IEBACiAgICAgbmV0c25tcF91ZHBfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOwogICAgIGludCByYyA9IDA7CiAKKyNpZmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCisgICAgaWYgKGxvY2FsKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAKICAgICBpZiAoYWRkciA9PSBOVUxMIHx8IGFkZHItPnNpbl9mYW1pbHkgIT0gQUZfSU5FVCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0ID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwogCiAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfdWRwX2FkZHJfcGFpciAqKW1hbGxvYyhzaXplb2YobmV0c25tcF91ZHBfYWRkcl9wYWlyKSk7CiAgICAgaWYgKGFkZHJfcGFpciA9PSBOVUxMKSB7CkBAIC0xODQsNiArMTg3LDcgQEAKICAgICB0LT5mbGFncyA9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNOwogCiAgICAgaWYgKGxvY2FsKSB7CisjaWZuZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKICAgICAgICAgaW50IG9wdCA9IDE7CiAKICAgICAgICAgLyoKQEAgLTI0Miw3ICsyNDYsOSBAQAogICAgICAgICAvKgogICAgICAgICAgKiBubyBidWZmZXIgc2l6ZSBvbiBsaXN0ZW4gc29ja2V0IC0gZG9lc24ndCBtYWtlIHNlbnNlCiAgICAgICAgICAqLwotCisjZWxzZSAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KICAgICB9IGVsc2UgewogICAgICAgdC0+cmVtb3RlID0gKHVfY2hhciAqKW1hbGxvYyg2KTsKICAgICAgICAgaWYgKHQtPnJlbW90ZSA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRDUElQdjZEb21haW4uYyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jCmluZGV4IDJhNTllZWEuLmQyZTBhMmQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jCisrKyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVENQSVB2NkRvbWFpbi5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BCYXNlRG9tYWluLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgogCiAjaW5jbHVkZSAiaW5ldF9udG9wLmgiCiAKQEAgLTE0MCwxNSArMTQxLDE5IEBACiAgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOwogICAgIGludCAgICAgICAgICAgICByYyA9IDA7CiAKKyNpZmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCisgICAgaWYgKGxvY2FsKQorICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisKICAgICBpZiAoYWRkciA9PSBOVUxMIHx8IGFkZHItPnNpbjZfZmFtaWx5ICE9IEFGX0lORVQ2KSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKICAgICBpZiAodCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CiAKICAgICBERUJVR0lGKCJuZXRzbm1wX3RjcDYiKSB7CiAgICAgICAgIGNoYXIgKnN0ciA9IG5ldHNubXBfdGNwNl9mbXRhZGRyKE5VTEwsICh2b2lkICopYWRkciwKQEAgLTE1OCwxNCArMTYzLDEyIEBACiAgICAgICAgIGZyZWUoc3RyKTsKICAgICB9CiAKLSAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7Ci0KLSAgICB0LT5kYXRhID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisgICAgdC0+ZGF0YSA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpOwogICAgIGlmICh0LT5kYXRhID09IE5VTEwpIHsKICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHQtPmRhdGFfbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpOworICAgIHQtPmRhdGFfbGVuZ3RoID0gc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpOwogICAgIG1lbWNweSh0LT5kYXRhLCBhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOwogCiAgICAgdC0+ZG9tYWluID0gbmV0c25tcF9UQ1BJUHY2RG9tYWluOwpAQCAtMTgwLDYgKzE4Myw3IEBACiAgICAgdC0+ZmxhZ3MgPSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1NUUkVBTTsKIAogICAgIGlmIChsb2NhbCkgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIGludCBvcHQgPSAxOwogCiAgICAgICAgIC8qCkBAIC0yNDgsNyArMjUyLDkgQEAKICAgICAgICAgLyoKICAgICAgICAgICogbm8gYnVmZmVyIHNpemUgb24gbGlzdGVuIHNvY2tldCAtIGRvZXNuJ3QgbWFrZSBzZW5zZQogICAgICAgICAgKi8KLQorI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfSBlbHNlIHsKICAgICAgICAgdC0+cmVtb3RlID0gKHVuc2lnbmVkIGNoYXIqKW1hbGxvYygxOCk7CiAgICAgICAgIGlmICh0LT5yZW1vdGUgPT0gTlVMTCkgewpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNCYXNlRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYwppbmRleCBiMWU5NDY1Li5jNTRkNmFkIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU0Jhc2VEb21haW4uYwpAQCAtMSw1ICsxLDkgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNlcnRfdXRpbCkKKwogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRMU0Jhc2VEb21haW4uaD4KIAogI2lmIEhBVkVfRE1BTExPQ19ICkBAIC0zNCw2ICszOCw3IEBACiAjaW5jbHVkZSA8b3BlbnNzbC94NTA5djMuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY2VydF91dGlsLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX29wZW5zc2wuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaD4KQEAgLTQ1LDYgKzUwLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaD4KIAogI2RlZmluZSBMT0dBTkRESUUobXNnKSBkbyB7IHNubXBfbG9nKExPR19FUlIsICIlc1xuIiwgbXNnKTsgcmV0dXJuIDA7IH0gd2hpbGUoMCkKQEAgLTE1MSwyNiArMTU3LDI2IEBACiAKICAgICBpZiAoIXRsc2RhdGEtPnRoZWlyX2ZpbmdlcnByaW50ICYmIHRsc2RhdGEtPnRoZWlyX2lkZW50aXR5KSB7CiAgICAgICAgIC8qIHdlIGhhdmUgYW4gaWRlbnRpdHk7IHRyeSBhbmQgZmluZCBpdCdzIGZpbmdlcnByaW50ICovCi0gICAgICAgIG5ldHNubXBfY2VydCAqdGhlaXJfY2VydDsKLSAgICAgICAgdGhlaXJfY2VydCA9CisgICAgICAgIG5ldHNubXBfY2VydCAqcGVlcl9jZXJ0OworICAgICAgICBwZWVyX2NlcnQgPQogICAgICAgICAgICAgbmV0c25tcF9jZXJ0X2ZpbmQoTlNfQ0VSVF9SRU1PVEVfUEVFUiwgTlNfQ0VSVEtFWV9NVUxUSVBMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRsc2RhdGEtPnRoZWlyX2lkZW50aXR5KTsKIAotICAgICAgICBpZiAodGhlaXJfY2VydCkKKyAgICAgICAgaWYgKHBlZXJfY2VydCkKICAgICAgICAgICAgIHRsc2RhdGEtPnRoZWlyX2ZpbmdlcnByaW50ID0KLSAgICAgICAgICAgICAgICBuZXRzbm1wX29wZW5zc2xfY2VydF9nZXRfZmluZ2VycHJpbnQodGhlaXJfY2VydC0+b2NlcnQsIC0xKTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX29wZW5zc2xfY2VydF9nZXRfZmluZ2VycHJpbnQocGVlcl9jZXJ0LT5vY2VydCwgLTEpOwogICAgIH0KIAogICAgIGlmICghdGxzZGF0YS0+dGhlaXJfZmluZ2VycHJpbnQgJiYgdHJ5X2RlZmF1bHQpIHsKICAgICAgICAgLyogdHJ5IGZvciB0aGUgZGVmYXVsdCBpbnN0ZWFkICovCi0gICAgICAgIG5ldHNubXBfY2VydCAqdGhlaXJfY2VydDsKLSAgICAgICAgdGhlaXJfY2VydCA9CisgICAgICAgIG5ldHNubXBfY2VydCAqcGVlcl9jZXJ0OworICAgICAgICBwZWVyX2NlcnQgPQogICAgICAgICAgICAgbmV0c25tcF9jZXJ0X2ZpbmQoTlNfQ0VSVF9SRU1PVEVfUEVFUiwgTlNfQ0VSVEtFWV9ERUZBVUxULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAKLSAgICAgICAgaWYgKHRoZWlyX2NlcnQpCisgICAgICAgIGlmIChwZWVyX2NlcnQpCiAgICAgICAgICAgICB0bHNkYXRhLT50aGVpcl9maW5nZXJwcmludCA9Ci0gICAgICAgICAgICAgICAgbmV0c25tcF9vcGVuc3NsX2NlcnRfZ2V0X2ZpbmdlcnByaW50KHRoZWlyX2NlcnQtPm9jZXJ0LCAtMSk7CisgICAgICAgICAgICAgICAgbmV0c25tcF9vcGVuc3NsX2NlcnRfZ2V0X2ZpbmdlcnByaW50KHBlZXJfY2VydC0+b2NlcnQsIC0xKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHRsc2RhdGEtPnRoZWlyX2ZpbmdlcnByaW50KSB7CkBAIC01NzksOCArNTg1LDcgQEAKICAgICAgICAgTE9HQU5ERElFKCJjYW4ndCBjcmVhdGUgYSBuZXcgY29udGV4dCIpOwogICAgIH0KIAotICAgIGlkX2NlcnQgPSBuZXRzbm1wX2NlcnRfZmluZChOU19DRVJUX0lERU5USVRZLCBOU19DRVJUS0VZX0RFRkFVTFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKikxKTsKKyAgICBpZF9jZXJ0ID0gbmV0c25tcF9jZXJ0X2ZpbmQoTlNfQ0VSVF9JREVOVElUWSwgTlNfQ0VSVEtFWV9ERUZBVUxULCBOVUxMKTsKICAgICBpZiAoIWlkX2NlcnQpCiAgICAgICAgIExPR0FORERJRSAoImVycm9yIGZpbmRpbmcgc2VydmVyIGlkZW50aXR5IGtleXMiKTsKIApAQCAtNjIxLDI0ICs2MjYsMjggQEAKIAogICAgIHRsc2RhdGEgPSB0LT5kYXRhOwogCi0gICAgaWYgKHN0cmNtcCh0b2tlbiwgIm91cl9pZGVudGl0eSIpID09IDApIHsKKyAgICBpZiAoKHN0cmNtcCh0b2tlbiwgImxvY2FsQ2VydCIpID09IDApIHx8CisgICAgICAgIChzdHJjbXAodG9rZW4sICJvdXJfaWRlbnRpdHkiKSA9PSAwKSkgewogICAgICAgICBTTk1QX0ZSRUUodGxzZGF0YS0+b3VyX2lkZW50aXR5KTsKICAgICAgICAgdGxzZGF0YS0+b3VyX2lkZW50aXR5ID0gc3RyZHVwKHZhbHVlKTsKICAgICAgICAgREVCVUdNU0dUKCgidGxzOmNvbmZpZyIsIm91ciBpZGVudGl0eSAlc1xuIiwgdmFsdWUpKTsKICAgICB9CiAKLSAgICBpZiAoc3RyY21wKHRva2VuLCAidGhlaXJfaWRlbnRpdHkiKSA9PSAwKSB7CisgICAgaWYgKChzdHJjbXAodG9rZW4sICJwZWVyQ2VydCIpID09IDApIHx8CisgICAgICAgIChzdHJjbXAodG9rZW4sICJ0aGVpcl9pZGVudGl0eSIpID09IDApKSB7CiAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhLT50aGVpcl9pZGVudGl0eSk7CiAgICAgICAgIHRsc2RhdGEtPnRoZWlyX2lkZW50aXR5ID0gc3RyZHVwKHZhbHVlKTsKICAgICAgICAgREVCVUdNU0dUKCgidGxzOmNvbmZpZyIsInRoZWlyIGlkZW50aXR5ICVzXG4iLCB2YWx1ZSkpOwogICAgIH0KIAotICAgIGlmIChzdHJjbXAodG9rZW4sICJ0aGVpcl9ob3N0bmFtZSIpID09IDApIHsKKyAgICBpZiAoKHN0cmNtcCh0b2tlbiwgInBlZXJIb3N0bmFtZSIpID09IDApIHx8CisgICAgICAgIChzdHJjbXAodG9rZW4sICJ0aGVpcl9ob3N0bmFtZSIpID09IDApKSB7CiAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhLT50aGVpcl9ob3N0bmFtZSk7CiAgICAgICAgIHRsc2RhdGEtPnRoZWlyX2hvc3RuYW1lID0gc3RyZHVwKHZhbHVlKTsKICAgICB9CiAKLSAgICBpZiAoc3RyY21wKHRva2VuLCAidHJ1c3RfY2VydCIpID09IDApIHsKKyAgICBpZiAoKHN0cmNtcCh0b2tlbiwgInRydXN0X2NlcnQiKSA9PSAwKSB8fAorICAgICAgICAoc3RyY21wKHRva2VuLCAidHJ1c3RDZXJ0IikgPT0gMCkpIHsKICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEtPnRydXN0X2NlcnQpOwogICAgICAgICB0bHNkYXRhLT50cnVzdF9jZXJ0ID0gc3RyZHVwKHZhbHVlKTsKICAgICB9CkBAIC03MDUsNiArNzE0LDMyIEBACiAgICAgcmV0dXJuIG9wZW5zc2xfbG9jYWxfaW5kZXg7CiB9CiAKK3N0YXRpYyB2b2lkIF9wYXJzZV9jbGllbnRfY2VydChjb25zdCBjaGFyICp0b2ssIGNoYXIgKmxpbmUpCit7CisgICAgY29uZmlnX3B3YXJuKCJjbGllbnRDZXJ0IGlzIGRlcHJlY2F0ZWQuIENsaWVudHMgc2hvdWxkIHVzZSBsb2NhbENlcnQsIHNlcnZlcnMgc2hvdWxkIHVzZSBwZWVyQ2VydCIpOworICAgIGlmICgqbGluZSA9PSAnIicpIHsKKyAgICAgICAgY2hhciBidWZbU05NUF9NQVhCVUZdOworICAgICAgICBjb3B5X253b3JkKGxpbmUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCLCBidWYpOworICAgIH0gZWxzZQorICAgICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCLCBsaW5lKTsKK30KKworc3RhdGljIHZvaWQgX3BhcnNlX3NlcnZlcl9jZXJ0KGNvbnN0IGNoYXIgKnRvaywgY2hhciAqbGluZSkKK3sKKyAgICBjb25maWdfcHdhcm4oInNlcnZlckNlcnQgaXMgZGVwcmVjYXRlZC4gQ2xpZW50cyBzaG91bGQgdXNlIHBlZXJDZXJ0LCBzZXJ2ZXJzIHNob3VsZCB1c2UgbG9jYWxDZXJ0LiIpOworICAgIGlmICgqbGluZSA9PSAnIicpIHsKKyAgICAgICAgY2hhciBidWZbU05NUF9NQVhCVUZdOworICAgICAgICBjb3B5X253b3JkKGxpbmUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCLCBidWYpOworICAgIH0gZWxzZQorICAgICAgICBuZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFVCLCBsaW5lKTsKK30KKwogdm9pZAogbmV0c25tcF90bHNiYXNlX2N0b3Iodm9pZCkgewogCkBAIC03MzEsMjYgKzc2NiwyNSBAQAogICAgICAqLwogCiAgICAgLyogdGhlIHB1YmxpYyBjbGllbnQgY2VydCB0byBhdXRoZW50aWNhdGUgd2l0aCAqLwotICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgImNsaWVudENlcnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QVUIpOwotICAgIC8qIFhYWDogdGhpcyBvbmUgbmVlZHMgdG8gZ28gYXdheSBiZWZvcmUgNS42IGZpbmFsICovCi0gICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAiZGVmWDUwOUNsaWVudFB1YiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX1BVQik7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiY2xpZW50Q2VydCIsIF9wYXJzZV9jbGllbnRfY2VydCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKIAogICAgIC8qCiAgICAgICogZm9yIHRoZSBzZXJ2ZXIKICAgICAgKi8KIAogICAgIC8qIFRoZSBYNTA5IHNlcnZlciBrZXkgdG8gdXNlICovCi0gICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAic2VydmVyQ2VydCIsCisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAic2VydmVyQ2VydCIsIF9wYXJzZV9zZXJ2ZXJfY2VydCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAvKgorICAgICAqIHJlbW92ZSBjZXJ0IGNvbmZpZyBhbWJpZ3VpdHk6IGxvY2FsQ2VydCwgcGVlckNlcnQKKyAgICAgKi8KKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJsb2NhbENlcnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOwotICAgIC8qIFhYWDogdGhpcyBvbmUgbmVlZHMgdG8gZ28gYXdheSBiZWZvcmUgNS42IGZpbmFsICovCi0gICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAiZGVmWDUwOVNlcnZlclB1YiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfVExTX0xPQ0FMX0NFUlQpOworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgInBlZXJDZXJ0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFVCKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UTFNfUEVFUl9DRVJUKTsKIAogICAgIC8qCiAgICAgICogcmVnaXN0ZXIgb3VyIGJvb3Qtc3RyYXBwaW5nIG5lZWRzCkBAIC05MDAsNiArOTM0LDggQEAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCituZXRzbm1wX2ZlYXR1cmVfY2hpbGRfb2YoX3g1MDlfZ2V0X2Vycm9yLCBuZXRzbm1wX3VudXNlZCkKKyNpZm5kZWYgTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9fWDUwOV9HRVRfRVJST1IKIGNvbnN0IGNoYXIgKiBfeDUwOV9nZXRfZXJyb3IoaW50IHg1MDlmYWlsdmFsdWUsIGNvbnN0IGNoYXIgKmxvY2F0aW9uKSB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKnJlYXNvbiA9IE5VTEw7CiAgICAgCkBAIC0xMDU1LDYgKzEwOTEsNyBAQAogCiAgICAgcmV0dXJuIHJlYXNvbjsKIH0KKyNlbmRpZiAvKiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX19YNTA5X0dFVF9FUlJPUiAqLwogCiB2b2lkIF9vcGVuc3NsX2xvZ19lcnJvcihpbnQgcmMsIFNTTCAqY29uLCBjb25zdCBjaGFyICpsb2NhdGlvbikgewogICAgIGNvbnN0IGNoYXIgICAgICpyZWFzb24sICpmaWxlLCAqZGF0YTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFRMU1RDUERvbWFpbi5jCmluZGV4IGUzODBiZDUuLjQ3M2QwMmMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBUTFNUQ1BEb21haW4uYwpAQCAtOSw2ICs5LDEwIEBACiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CisKK25ldHNubXBfZmVhdHVyZV9yZXF1aXJlKGNlcnRfdXRpbCkKKwogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRMU1RDUERvbWFpbi5oPgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTEyOSw5ICsxMzMsOSBAQAogICAgICAgICBuZXd0bHNkYXRhLT50aGVpcl9ob3N0bmFtZSA9IHN0cmR1cChvbGR0bHNkYXRhLT50aGVpcl9ob3N0bmFtZSk7CiAgICAgaWYgKG9sZHRsc2RhdGEtPnRydXN0X2NlcnQpCiAgICAgICAgIG5ld3Rsc2RhdGEtPnRydXN0X2NlcnQgPSBzdHJkdXAob2xkdGxzZGF0YS0+dHJ1c3RfY2VydCk7Ci0gICAgaWYgKG9sZHRsc2RhdGEtPnJlbW90ZV9hZGRyKQotICAgICAgICBuZXd0bHNkYXRhLT5yZW1vdGVfYWRkciA9IG5ldHNubXBfbWVtZHVwKG9sZHRsc2RhdGEtPnJlbW90ZV9hZGRyLAotICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKTsKKyAgICBpZiAob2xkdGxzZGF0YS0+YWRkcikKKyAgICAgICAgbmV3dGxzZGF0YS0+YWRkciA9IG5ldHNubXBfbWVtZHVwKG9sZHRsc2RhdGEtPmFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKm9sZHRsc2RhdGEtPmFkZHIpKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtNzIzLDggKzcyNyw2IEBACiAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OT1BFTkVSUk9SUyk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gY3JlYXRlIGJpb1xuIik7CiAgICAgICAgICAgICBfb3BlbnNzbF9sb2dfZXJyb3IocmMsIE5VTEwsICJCSU8gY3JlYXRpb24iKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTczNiw4ICs3MzgsNiBAQAogCQkgICAgIHRsc2RhdGEtPmFkZHJfc3RyaW5nKTsKICAgICAgICAgICAgIF9vcGVuc3NsX2xvZ19lcnJvcihyYywgTlVMTCwgIkJJT19kb19jb25uZWN0Iik7CiAgICAgICAgICAgICBCSU9fZnJlZShiaW8pOwotICAgICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEpOwotICAgICAgICAgICAgU05NUF9GUkVFKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtNzQ3LDggKzc0Nyw2IEBACiAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OT1BFTkVSUk9SUyk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gY3JlYXRlIGEgU1NMIGNvbm5lY3Rpb25cbiIpOwogICAgICAgICAgICAgQklPX2ZyZWUoYmlvKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNzYyLDggKzc2MCw2IEBACiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gY3JlYXRlIGEgU1NMIGNvbm5lY3Rpb25cbiIpOwogICAgICAgICAgICAgU1NMX3NodXRkb3duKHNzbCk7CiAgICAgICAgICAgICBCSU9fZnJlZShiaW8pOwotICAgICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEpOwotICAgICAgICAgICAgU05NUF9GUkVFKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtNzc0LDggKzc3MCw2IEBACiAgICAgICAgICAgICBzbm1wX2luY3JlbWVudF9zdGF0aXN0aWMoU1RBVF9UTFNUTV9TTk1QVExTVE1TRVNTSU9OT1BFTkVSUk9SUyk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidGxzdGNwOiBmYWlsZWQgdG8gc3NsX2Nvbm5lY3RcbiIpOwogICAgICAgICAgICAgQklPX2ZyZWUoYmlvKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0bHNkYXRhKTsKLSAgICAgICAgICAgIFNOTVBfRlJFRSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAKQEAgLTgzMCw4ICs4MjQsNiBAQAogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInRsc3RjcDogZmFpbGVkIHRvIHZlcmlmeSBzc2wgY2VydGlmaWNhdGVcbiIpOwogICAgICAgICAgICAgU1NMX3NodXRkb3duKHNzbCk7CiAgICAgICAgICAgICBCSU9fZnJlZShiaW8pOwotICAgICAgICAgICAgU05NUF9GUkVFKHRsc2RhdGEpOwotICAgICAgICAgICAgU05NUF9GUkVFKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtODY5LDYgKzg2MSw3IEBACiAgICAgICAgIHQtPnNvY2sgPSBCSU9fZ2V0X2ZkKGJpbywgTlVMTCk7CiAKICAgICB9IGVsc2UgeworI2lmbmRlZiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUCiAgICAgICAgIC8qIElzIHRoZSBzZXJ2ZXIgKi8KICAgICAgICAgCiAgICAgICAgIC8qIENyZWF0ZSB0aGUgc29ja2V0IGJpbyAqLwpAQCAtODc4LDggKzg3MSw2IEBACiAgICAgICAgIHQtPmxvY2FsID0gKHZvaWQgKikgc3RyZHVwKHRsc2RhdGEtPmFkZHJfc3RyaW5nKTsKICAgICAgICAgdC0+bG9jYWxfbGVuZ3RoID0gc3RybGVuKHRsc2RhdGEtPmFkZHJfc3RyaW5nKSsxOwogICAgICAgICBpZiAoTlVMTCA9PSB0bHNkYXRhLT5hY2NlcHRfYmlvKSB7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodCk7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodGxzZGF0YSk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiVExTVENQOiBGYWxpZWQgdG8gY3JlYXRlIGEgYWNjZXB0IEJJT1xuIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtODg3LDggKzg3OCw2IEBACiAgICAgICAgIC8qIG9wZW5zc2wgcmVxdWlyZXMgYW4gaW5pdGlhbCBhY2NlcHQgdG8gYmluZCgpIHRoZSBzb2NrZXQgKi8KICAgICAgICAgaWYgKEJJT19kb19hY2NlcHQodGxzZGF0YS0+YWNjZXB0X2JpbykgPD0gMCkgewogCSAgICBfb3BlbnNzbF9sb2dfZXJyb3IocmMsIHRsc2RhdGEtPnNzbCwgIkJJT19kb19fYWNjZXB0Iik7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodCk7Ci0gICAgICAgICAgICBTTk1QX0ZSRUUodGxzZGF0YSk7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiVExTVENQOiBGYWxpZWQgdG8gZG8gZmlyc3QgYWNjZXB0IG9uIHRoZSBUTFMgYWNjZXB0IEJJT1xuIik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtODk5LDYgKzg4OCw5IEBACiAKICAgICAgICAgdC0+c29jayA9IEJJT19nZXRfZmQodGxzZGF0YS0+YWNjZXB0X2JpbywgTlVMTCk7CiAgICAgICAgIHQtPmZsYWdzIHw9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfTElTVEVOOworI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfQogICAgIHJldHVybiB0OwogfQpAQCAtOTE3LDEyICs5MDksMTYgQEAKICAgICBjaGFyICpjcDsKICAgICBjaGFyIGJ1ZltTUFJJTlRfTUFYX0xFTl07CiAgICAgCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIGlmIChpc3NlcnZlcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworCiAgICAgLyogYWxsb2NhdGUgb3VyIHRyYW5zcG9ydCBzdHJ1Y3R1cmUgKi8KICAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKE5VTEwgPT0gdCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbWVtc2V0KHQsIDAsIHNpemVvZihuZXRzbm1wX3RyYW5zcG9ydCkpOwogCiAgICAgLyogYWxsb2NhdGUgb3VyIFRMUyBzcGVjaWZpYyBkYXRhICovCiAgICAgaWYgKE5VTEwgPT0gKHRsc2RhdGEgPSBuZXRzbm1wX3Rsc2Jhc2VfYWxsb2NhdGVfdGxzZGF0YSh0LCBpc3NlcnZlcikpKQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBCYXNlRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYwppbmRleCA1Y2IyOGQ2Li44NDk3ZjcxIDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUEJhc2VEb21haW4uYwpAQCAtMyw2ICszLDkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmg+CisKICNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMTUsOSArMTgsNiBAQAogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKLSNpZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZgogI2lmIEhBVkVfTkVUSU5FVF9JTl9ICiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2VuZGlmCkBAIC0zNyw3ICszNyw2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS90b29scy5oPgpAQCAtNTMsMTIgKzUyLDYgQEAKICNkZWZpbmUgTVNHX05PU0lHTkFMIDAKICNlbmRpZgogCi0jaWYgZGVmaW5lZChJUF9SRUNWRFNUQUREUikgJiYgZGVmaW5lZChfX0RyYWdvbkZseV9fKQotIyBpZm5kZWYgSVBfU0VORFNSQ0FERFIKLSMgIGRlZmluZSBJUF9TRU5EU1JDQUREUiBJUF9SRUNWRFNUQUREUiAvKiBEcmFnb25GbHkgQlNEICovCi0jIGVuZGlmCi0jZW5kaWYKLQogdm9pZAogX25ldHNubXBfdWRwX3NvY2tvcHRfc2V0KGludCBmZCwgaW50IGxvY2FsKQogewpAQCAtMzkzLDcgKzM4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqb3BhcXVlLCBpbnQgKm9sZW5ndGgpCiB7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gLTE7Ci0gICAgc29ja2xlbl90ICAgICAgIGZyb21sZW4gPSBzaXplb2Yoc3RydWN0IHNvY2thZGRyKTsKKyAgICBzb2NrbGVuX3QgICAgICAgZnJvbWxlbiA9IHNpemVvZihuZXRzbm1wX3NvY2thZGRyX3N0b3JhZ2UpOwogICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7CiAgICAgc3RydWN0IHNvY2thZGRyICpmcm9tOwogCkBAIC00MDUsNyArMzk4LDcgQEAKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1lbXNldChhZGRyX3BhaXIsIDAsIHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSk7Ci0gICAgICAgICAgICBmcm9tID0gKHN0cnVjdCBzb2NrYWRkciAqKSAmKGFkZHJfcGFpci0+cmVtb3RlX2FkZHIpOworICAgICAgICAgICAgZnJvbSA9ICZhZGRyX3BhaXItPnJlbW90ZV9hZGRyLnNhOwogICAgICAgICB9CiAKIAl3aGlsZSAocmMgPCAwKSB7CkBAIC00NTIsMTQgKzQ0NSwxNSBAQAogICAgIHN0cnVjdCBzb2NrYWRkciAqdG8gPSBOVUxMOwogCiAgICAgaWYgKG9wYXF1ZSAhPSBOVUxMICYmICpvcGFxdWUgIT0gTlVMTCAmJgotICAgICAgICAqb2xlbmd0aCA9PSBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikpIHsKKyAgICAgICAgKCgqb2xlbmd0aCA9PSBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcikgfHwKKyAgICAgICAgICAoKm9sZW5ndGggPT0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpKSkpIHsKICAgICAgICAgYWRkcl9wYWlyID0gKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgKikgKCpvcGFxdWUpOwogICAgIH0gZWxzZSBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCAmJgogICAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSkgewogICAgICAgICBhZGRyX3BhaXIgPSAobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpciAqKSAodC0+ZGF0YSk7CiAgICAgfQogCi0gICAgdG8gPSAoc3RydWN0IHNvY2thZGRyICopICYoYWRkcl9wYWlyLT5yZW1vdGVfYWRkcik7CisgICAgdG8gPSAmYWRkcl9wYWlyLT5yZW1vdGVfYWRkci5zYTsKIAogICAgIGlmICh0byAhPSBOVUxMICYmIHQgIT0gTlVMTCAmJiB0LT5zb2NrID49IDApIHsKICAgICAgICAgREVCVUdJRigibmV0c25tcF91ZHAiKSB7CkBAIC00NzIsNyArNDY2LDcgQEAKIAl3aGlsZSAocmMgPCAwKSB7CiAjaWZkZWYgbmV0c25tcF91ZHBiYXNlX3JlY3Zmcm9tX3NlbmR0b19kZWZpbmVkCiAgICAgICAgICAgICByYyA9IG5ldHNubXBfdWRwX3NlbmR0byh0LT5zb2NrLAotICAgICAgICAgICAgICAgICAgICBhZGRyX3BhaXIgPyAmKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW5fYWRkcikgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICBhZGRyX3BhaXIgPyAmKGFkZHJfcGFpci0+bG9jYWxfYWRkci5zaW4uc2luX2FkZHIpIDogTlVMTCwKICAgICAgICAgICAgICAgICAgICAgYWRkcl9wYWlyID8gYWRkcl9wYWlyLT5pZl9pbmRleCA6IDAsIHRvLCBidWYsIHNpemUpOwogI2Vsc2UKICAgICAgICAgICAgIHJjID0gc2VuZHRvKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgMCwgdG8sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUERvbWFpbi5jCmluZGV4IDdmYTJlZmQuLmEwYWJkOGMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQRG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBEb21haW4uYwpAQCAtMTEsNiArMTEsMTAgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oPgorCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTUzLDggKzU3LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9jb25maWdfYXBpLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBTb2NrZXRCYXNlRG9tYWluLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CkBAIC03MCwxMiArNzIsNiBAQAogI2RlZmluZSBJTkVUX0FERFJTVFJMRU4gMTYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChJUF9SRUNWRFNUQUREUikgJiYgZGVmaW5lZChfX0RyYWdvbkZseV9fKQotIyBpZm5kZWYgSVBfU0VORFNSQ0FERFIKLSMgIGRlZmluZSBJUF9TRU5EU1JDQUREUiBJUF9SRUNWRFNUQUREUiAvKiBEcmFnb25GbHkgQlNEICovCi0jIGVuZGlmCi0jZW5kaWYKLQogc3RhdGljIG5ldHNubXBfdGRvbWFpbiB1ZHBEb21haW47CiAKIC8qCmRpZmYgLS1naXQgYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjRCYXNlRG9tYWluLmMKaW5kZXggNzgwOWNhZS4uOGMwZmIwNSAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY0QmFzZURvbWFpbi5jCisrKyBiL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVURQSVB2NEJhc2VEb21haW4uYwpAQCAtMyw2ICszLDkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY0QmFzZURvbWFpbi5oPgorCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTM2LDE3ICszOSw4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBTb2NrZXRCYXNlRG9tYWluLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NEJhc2VEb21haW4uaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBCYXNlRG9tYWluLmg+Ci0KLSNpZiBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKSAmJiBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jIGlmbmRlZiBJUF9TRU5EU1JDQUREUgotIyAgZGVmaW5lIElQX1NFTkRTUkNBRERSIElQX1JFQ1ZEU1RBRERSIC8qIERyYWdvbkZseSBCU0QgKi8KLSMgZW5kaWYKLSNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX0lQX1BLVElORk8pIHx8IGRlZmluZWQoSEFWRV9JUF9SRUNWRFNUQUREUikKLQogaW50IG5ldHNubXBfdWRwaXB2NF9yZWN2ZnJvbShpbnQgcywgdm9pZCAqYnVmLCBpbnQgbGVuLCBzdHJ1Y3Qgc29ja2FkZHIgKmZyb20sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tsZW5fdCAqZnJvbWxlbiwgc3RydWN0IHNvY2thZGRyICpkc3RpcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ja2xlbl90ICpkc3RsZW4sIGludCAqaWZfaW5kZXgpCkBAIC03MSw2ICs2NSwxMSBAQAogICAgIG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIgYWRkcl9wYWlyOwogICAgIHNvY2tsZW5fdCAgICAgICBsb2NhbF9hZGRyX2xlbjsKIAorI2lmZGVmIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQKKyAgICBpZiAobG9jYWwpCisgICAgICAgIHJldHVybiBOVUxMOworI2VuZGlmIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKwogICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2luX2ZhbWlseSAhPSBBRl9JTkVUKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTk5LDEzICs5OCwxNCBAQAogICAgIF9uZXRzbm1wX3VkcF9zb2Nrb3B0X3NldCh0LT5zb2NrLCBsb2NhbCk7CiAKICAgICBpZiAobG9jYWwpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgICAgICAvKgogICAgICAgICAgKiBUaGlzIHNlc3Npb24gaXMgaW50ZW5lZGVkIGFzIGEgc2VydmVyLCBzbyB3ZSBtdXN0IGJpbmQgb24gdG8gdGhlCiAgICAgICAgICAqIGdpdmVuIElQIGFkZHJlc3MsIHdoaWNoIG1heSBpbmNsdWRlIGFuIGludGVyZmFjZSBhZGRyZXNzLCBvciBjb3VsZAogICAgICAgICAgKiBiZSBJTkFERFJfQU5ZLCBidXQgY2VydGFpbmx5IGluY2x1ZGVzIGEgcG9ydCBudW1iZXIuCiAgICAgICAgICAqLwogCi0gICAgICB0LT5sb2NhbCA9ICh1X2NoYXIgKikgbWFsbG9jKDYpOworICAgICAgICB0LT5sb2NhbCA9ICh1X2NoYXIgKikgbWFsbG9jKDYpOwogICAgICAgICBpZiAodC0+bG9jYWwgPT0gTlVMTCkgewogICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTYwLDYgKzE2MCw5IEBACiAgICAgICAgIH0KICAgICAgICAgdC0+ZGF0YSA9IE5VTEw7CiAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID0gMDsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fTElTVEVOX1NVUFBPUlQgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoaXMgaXMgYSBjbGllbnQgc2Vzc2lvbi4gIElmIHdlJ3ZlIGJlZW4gZ2l2ZW4gYQpkaWZmIC0tZ2l0IGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVRFBJUHY2RG9tYWluLmMgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwppbmRleCA1NWUzNjEwLi4xOGRlODc2IDEwMDY0NAotLS0gYS9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYworKysgYi9zbm1wbGliL3RyYW5zcG9ydHMvc25tcFVEUElQdjZEb21haW4uYwpAQCAtMSw2ICsxLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KIApAQCAtNjQsNiArNjUsNyBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAKICNpbmNsdWRlICJpbmV0X250b3AuaCIKICNpbmNsdWRlICJpbmV0X3B0b24uaCIKQEAgLTE1Miw3ICsxNTQsOCBAQAogICAgICAgICAqb2xlbmd0aCA9PSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHsKICAgICAgICAgdG8gPSAoc3RydWN0IHNvY2thZGRyICopICgqb3BhcXVlKTsKICAgICB9IGVsc2UgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwgJiYKLSAgICAgICAgICAgICAgIHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSkgeworICAgICAgICAgICAgICAgKCh0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpIHx8CisgICAgICAgICAgICAgICAgKHQtPmRhdGFfbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX2luZGV4ZWRfYWRkcl9wYWlyKSkpKSB7CiAgICAgICAgIHRvID0gKHN0cnVjdCBzb2NrYWRkciAqKSAodC0+ZGF0YSk7CiAgICAgfQogCkBAIC0xODgsMTEgKzE5MSwxNiBAQAogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0ID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgcmMgPSAwOwogCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIGlmIChsb2NhbCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjZW5kaWYgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworCiAgICAgaWYgKGFkZHIgPT0gTlVMTCB8fCBhZGRyLT5zaW42X2ZhbWlseSAhPSBBRl9JTkVUNikgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0ID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yMDUsOCArMjEzLDYgQEAKICAgICAgICAgZnJlZShzdHIpOwogICAgIH0KIAotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKLQogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBfVURQSVB2NkRvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0KICAgICAgICAgc2l6ZW9mKG5ldHNubXBfVURQSVB2NkRvbWFpbikgLyBzaXplb2YobmV0c25tcF9VRFBJUHY2RG9tYWluWzBdKTsKQEAgLTIyMCw4ICsyMjYsOSBAQAogICAgIF9uZXRzbm1wX3VkcF9zb2Nrb3B0X3NldCh0LT5zb2NrLCBsb2NhbCk7CiAKICAgICBpZiAobG9jYWwpIHsKKyNpZm5kZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAogICAgICAgICAvKgotICAgICAgICAgKiBUaGlzIHNlc3Npb24gaXMgaW50ZW5lZGVkIGFzIGEgc2VydmVyLCBzbyB3ZSBtdXN0IGJpbmQgb24gdG8gdGhlCisgICAgICAgICAqIFRoaXMgc2Vzc2lvbiBpcyBpbnRlbmRlZCBhcyBhIHNlcnZlciwgc28gd2UgbXVzdCBiaW5kIG9uIHRvIHRoZQogICAgICAgICAgKiBnaXZlbiBJUCBhZGRyZXNzLCB3aGljaCBtYXkgaW5jbHVkZSBhbiBpbnRlcmZhY2UgYWRkcmVzcywgb3IgY291bGQKICAgICAgICAgICogYmUgSU5BRERSX0FOWSwgYnV0IGNlcnRhaW5seSBpbmNsdWRlcyBhIHBvcnQgbnVtYmVyLgogICAgICAgICAgKi8KQEAgLTI1NSwyMCArMjYyLDIzIEBACiAgICAgICAgIHQtPmxvY2FsX2xlbmd0aCA9IDE4OwogICAgICAgICB0LT5kYXRhID0gTlVMTDsKICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSAwOworI2Vsc2UgLyogTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVCAqLworICAgICAgICByZXR1cm4gTlVMTDsKKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCiAgICAgfSBlbHNlIHsKICAgICAgICAgLyoKICAgICAgICAgICogVGhpcyBpcyBhIGNsaWVudCBzZXNzaW9uLiAgU2F2ZSB0aGUgYWRkcmVzcyBpbiB0aGUKICAgICAgICAgICogdHJhbnNwb3J0LXNwZWNpZmljIGRhdGEgcG9pbnRlciBmb3IgbGF0ZXIgdXNlIGJ5IG5ldHNubXBfdWRwNl9zZW5kLgogICAgICAgICAgKi8KIAotICAgICAgICB0LT5kYXRhID0gbWFsbG9jKHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CisgICAgICAgIHQtPmRhdGEgPSBtYWxsb2Moc2l6ZW9mKG5ldHNubXBfaW5kZXhlZF9hZGRyX3BhaXIpKTsKICAgICAgICAgaWYgKHQtPmRhdGEgPT0gTlVMTCkgewogICAgICAgICAgICAgbmV0c25tcF9zb2NrZXRiYXNlX2Nsb3NlKHQpOwogICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIG1lbWNweSh0LT5kYXRhLCBhZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOwotICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKKyAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSBzaXplb2YobmV0c25tcF9pbmRleGVkX2FkZHJfcGFpcik7CiAgICAgICAgIHQtPnJlbW90ZSA9ICh1bnNpZ25lZCBjaGFyKiltYWxsb2MoMTgpOwogICAgICAgICBpZiAodC0+cmVtb3RlID09IE5VTEwpIHsKICAgICAgICAgICAgIG5ldHNubXBfc29ja2V0YmFzZV9jbG9zZSh0KTsKQEAgLTU0MCw3ICs1NTAsNyBAQAogCiAgICAgICAgICAgICAgICAgaGludHMuYWlfZmFtaWx5ID0gQUZfSU5FVDY7CiAgICAgICAgICAgICAgICAgaGludHMuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwotICAgICAgICAgICAgICAgIGdhaV9lcnJvciA9IGdldGFkZHJpbmZvKHNvdXJjZSwgTlVMTCwgJmhpbnRzLCAmcmVzKTsKKyAgICAgICAgICAgICAgICBnYWlfZXJyb3IgPSBuZXRzbm1wX2dldGFkZHJpbmZvKHNvdXJjZSwgTlVMTCwgJmhpbnRzLCAmcmVzKTsKICAgICAgICAgICAgICAgICBpZiAoZ2FpX2Vycm9yICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcihnYWlfc3RyZXJyb3IoZ2FpX2Vycm9yKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wVW5peERvbWFpbi5jIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMKaW5kZXggMWJkNWVmNi4uNDdkZmZjMSAxMDA2NDQKLS0tIGEvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMKKysrIGIvc25tcGxpYi90cmFuc3BvcnRzL3NubXBVbml4RG9tYWluLmMKQEAgLTEsNCArMSw1IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtZmVhdHVyZXMuaD4KIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaD4KQEAgLTM0LDcgKzM1LDEwIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNvY2tldEJhc2VEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPiAvKiBta2RpcmhpZXIgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih0cmFuc3BvcnRfdW5peF9zb2NrZXRfYWxsLCB0cmFuc3BvcnRfYWxsKQorbmV0c25tcF9mZWF0dXJlX2NoaWxkX29mKHVuaXhfc29ja2V0X3BhdGhzLCB0cmFuc3BvcnRfdW5peF9zb2NrZXRfYWxsKQogCiAjaWZuZGVmIE5FVFNOTVBfU1RSRUFNX1FVRVVFX0xFTgogI2RlZmluZSBORVRTTk1QX1NUUkVBTV9RVUVVRV9MRU4gIDUKQEAgLTI1OSw2ICsyNjMsNyBAQAogc3RhdGljIGludCBjcmVhdGVfcGF0aCA9IDA7CiBzdGF0aWMgbW9kZV90IGNyZWF0ZV9tb2RlOwogCisjaWZuZGVmIE5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVU5JWF9TT0NLRVRfUEFUSFMKIC8qKiBJZiB0cnlpbmcgdG8gY3JlYXRlIHVuaXggc29ja2V0cyBpbiBub25leGlzdGluZyBkaXJlY3RvcmllcyB0aGVuCiAgKiAgdHJ5IHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IHdpdGggbWFzayBtb2RlLgogICovCkBAIC0yNzUsNiArMjgwLDcgQEAKIHsKICAgICBjcmVhdGVfcGF0aCA9IDA7CiB9CisjZW5kaWYgLyogTkVUU05NUF9GRUFUVVJFX1JFTU9WRV9VTklYX1NPQ0tFVF9QQVRIUyAqLwogCiAvKgogICogT3BlbiBhIFVuaXgtZG9tYWluIHRyYW5zcG9ydCBmb3IgU05NUC4gIExvY2FsIGlzIFRSVUUgaWYgYWRkciBpcyB0aGUgbG9jYWwKQEAgLTI5MCwxMSArMjk2LDE4IEBACiAgICAgc29ja2FkZHJfdW5fcGFpciAqc3VwID0gTlVMTDsKICAgICBpbnQgICAgICAgICAgICAgcmMgPSAwOwogCisjaWZkZWYgTkVUU05NUF9OT19MSVNURU5fU1VQUE9SVAorICAgIC8qIFNQRUNJQUwgQ0lSQ1VNU1RBTkNFOiBXZSBzdGlsbCB3YW50IEFnZW50WCB0byBiZSBhYmxlIHRvIG9wZXJhdGUsCisgICAgICAgc28gd2UgYWxsb3cgZm9yIHVuaXggZG9tYWluIHNvY2t0ZXMgdG8gc3RpbGwgbGlzdGVuIHdoZW4gZXZlcnl0aGluZworICAgICAgIGVsc2UgaXNuJ3QgYWxsb3dlZCB0by4gIFRodXMsIHdlIGlnbm9yZSB0aGlzIGRlZmluZSBpbiB0aGlzIGZpbGUuCisgICAgKi8KKyNlbmRpZiAvKiBORVRTTk1QX05PX0xJU1RFTl9TVVBQT1JUICovCisKICAgICBpZiAoYWRkciA9PSBOVUxMIHx8IGFkZHItPnN1bl9mYW1pbHkgIT0gQUZfVU5JWCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICB0ID0gKG5ldHNubXBfdHJhbnNwb3J0ICopIG1hbGxvYyhzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKKyAgICB0ID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RyYW5zcG9ydCk7CiAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0zMDcsOCArMzIwLDYgQEAKICAgICAgICAgZnJlZShzdHIpOwogICAgIH0KIAotICAgIG1lbXNldCh0LCAwLCBzaXplb2YobmV0c25tcF90cmFuc3BvcnQpKTsKLQogICAgIHQtPmRvbWFpbiA9IG5ldHNubXBfVW5peERvbWFpbjsKICAgICB0LT5kb21haW5fbGVuZ3RoID0KICAgICAgICAgc2l6ZW9mKG5ldHNubXBfVW5peERvbWFpbikgLyBzaXplb2YobmV0c25tcF9Vbml4RG9tYWluWzBdKTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvdWNkX2NvbXBhdC5jIGIvc25tcGxpYi91Y2RfY29tcGF0LmMKaW5kZXggYmYyMWJlOC4uNjRjMWUxMyAxMDA2NDQKLS0tIGEvc25tcGxpYi91Y2RfY29tcGF0LmMKKysrIGIvc25tcGxpYi91Y2RfY29tcGF0LmMKQEAgLTQsNiArNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWZlYXR1cmVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3Nlc3Npb25fYXBpLmg+CkBAIC0xMSw2ICsxMiw5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9taWIuaD4JLyogZm9yIE9JRCBPL1AgZm9ybWF0IGVudW1zICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0Lmg+CiAKK25ldHNubXBfZmVhdHVyZV9jaGlsZF9vZih1Y2RfY29tcGF0aWJpbGl0eSwgbGlibmV0c25tcCkKKworI2lmbmRlZiBORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VDRF9DT01QQVRJQklMSVRZCiAvKgogICogdXNlIDxuZXRzbm1wX3Nlc3Npb24gKiktPnNfc25tcF9lcnJubyBpbnN0ZWFkIAogICovCkBAIC0yMjEsMyArMjI1LDYgQEAKIHsKICAgbmV0c25tcF9kc19zaHV0ZG93bigpOwogfQorI2Vsc2UgLyogIU5FVFNOTVBfRkVBVFVSRV9SRU1PVkVfVUNEX0NPTVBBVElCSUxJVFkgKi8KK25ldHNubXBfZmVhdHVyZV91bnVzZWQodWNkX2NvbXBhdGliaWxpdHkpOworI2VuZGlmIC8qICFORVRTTk1QX0ZFQVRVUkVfUkVNT1ZFX1VDRF9DT01QQVRJQklMSVRZICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3ZhY20uYyBiL3NubXBsaWIvdmFjbS5jCmluZGV4IDJkYTFkZjkuLmM2Mzk3ODUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvdmFjbS5jCisrKyBiL3NubXBsaWIvdmFjbS5jCkBAIC04NDIsNiArODQyLDcgQEAKICAgICByZXR1cm4gZ3A7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiB2b2lkCiB2YWNtX2Rlc3Ryb3lHcm91cEVudHJ5KGludCBzZWN1cml0eU1vZGVsLCBjb25zdCBjaGFyICpzZWN1cml0eU5hbWUpCiB7CkBAIC04NjcsNiArODY4LDcgQEAKICAgICBmcmVlKHZwKTsKICAgICByZXR1cm47CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHZvaWQKIHZhY21fZGVzdHJveUFsbEdyb3VwRW50cmllcyh2b2lkKQpAQCAtMTAzOCw2ICsxMDQwLDcgQEAKICAgICByZXR1cm4gdnA7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiB2b2lkCiB2YWNtX2Rlc3Ryb3lBY2Nlc3NFbnRyeShjb25zdCBjaGFyICpncm91cE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0UHJlZml4LApAQCAtMTA2OSw2ICsxMDcyLDcgQEAKICAgICBmcmVlKHZwKTsKICAgICByZXR1cm47CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHZvaWQKIHZhY21fZGVzdHJveUFsbEFjY2Vzc0VudHJpZXModm9pZCkKQEAgLTExNDIsMTIgKzExNDYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld1N1YnRyZWVMZW4pOwogfQogCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAogdm9pZAogdmFjbV9kZXN0cm95Vmlld0VudHJ5KGNvbnN0IGNoYXIgKnZpZXdOYW1lLAogICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHZpZXdTdWJ0cmVlLCBzaXplX3Qgdmlld1N1YnRyZWVMZW4pCiB7CiAgICAgbmV0c25tcF92aWV3X2Rlc3Ryb3koICZ2aWV3TGlzdCwgdmlld05hbWUsIHZpZXdTdWJ0cmVlLCB2aWV3U3VidHJlZUxlbik7CiB9CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCiAKIHZvaWQKIHZhY21fZGVzdHJveUFsbFZpZXdFbnRyaWVzKHZvaWQpCmRpZmYgLS1naXQgYS90ZXN0aW5nL1JVTlRFU1RTIGIvdGVzdGluZy9SVU5URVNUUwppbmRleCA2OWZiYWU0Li40OTMzMzA3IDEwMDc1NQotLS0gYS90ZXN0aW5nL1JVTlRFU1RTCisrKyBiL3Rlc3RpbmcvUlVOVEVTVFMKQEAgLTEyLDEzICsxMiwxNyBAQAogCiAjIE1ha2Ugc3VyZSBNaW5HVyAvIE1TWVMgdXNlcnMgaGF2ZSB0aGUgcHNraWxsLmV4ZSBwcm9ncmFtIHRvIHN0b3AgdGhlIGFnZW50IGFuZAogIyBzbm1wdHJhcGQKLWlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgLWEgInhgdHlwZSBwc2tpbGwuZXhlIDI+L2Rldi9udWxsYCIgPSAieCIgXTsgdGhlbgotICAgIGVjaG8gIkNvdWxkIG5vdCBmaW5kIHBza2lsbC5leGUuIEFib3J0aW5nIHRlc3RzLiIKLSAgICBlY2hvICJwc2tpbGwuZXhlIGNhbiBiZSBpbnN0YWxsZWQgYXMgZm9sbG93czoiCi0gICAgZWNobyAiIC0gRG93bmxvYWQgcHNraWxsLmV4ZSBmcm9tIGh0dHA6Ly90ZWNobmV0Lm1pY3Jvc29mdC5jb20vZW4tdXMvc3lzaW50ZXJuYWxzL2RlZmF1bHQuYXNweC4iCi0gICAgZWNobyAiIC0gQ29weSBwc2tpbGwuZXhlIHRvIEM6XFxNaW5HV1xcbXN5c1xcMS4wXFxiaW4uIgotICAgIGV4aXQgMQotZmkgCitpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KKyAgICBmb3IgZSBpbiBwc2tpbGwuZXhlIHBzbGlzdC5leGU7IGRvCisJaWYgWyAieGB0eXBlICRlIDI+L2Rldi9udWxsYCIgPSAieCIgXTsgdGhlbgorCSAgICBlY2hvICJDb3VsZCBub3QgZmluZCAkZS4gQWJvcnRpbmcgdGVzdHMuIgorCSAgICBlY2hvICIkZSBjYW4gYmUgaW5zdGFsbGVkIGFzIGZvbGxvd3M6IgorCSAgICBlY2hvICItIERvd25sb2FkIFBTVG9vbHMuemlwIGZyb20gaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9zeXNpbnRlcm5hbHMvZGVmYXVsdC4iCisJICAgIGVjaG8gIi0gQ29weSAkZSB0byBDOlxcTWluR1dcXG1zeXNcXDEuMFxcYmluLiIKKwkgICAgZXhpdCAxCisJZmkKKyAgICBkb25lCitmaQogCiBzdWNjZXNzX2NvdW50PTAKIGZhaWxlZF9jb3VudD0wCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M2NvbmZpZyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnCmluZGV4IDQzYTdmYjIuLjU1ZGY1YjQgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzY29uZmlnCkBAIC0xLDUgKzEsNyBAQAogIyEvYmluL3NoCiAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KKwogWyAieCRTTk1QX1NNVVhfU09DS0VUIiA9ICJ4IiBdICYmIFNOTVBfU01VWF9TT0NLRVQ9MS4wLjAuMAogCiBDT05GSUdBR0VOVCBbc25tcF0gcGVyc2lzdGVudGRpciAkU05NUF9UTVBfUEVSU0lTVEVOVERJUgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN1c21jb25maWdiYXNlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN1c21jb25maWdiYXNlCmluZGV4IDk5YmRhMDQuLmIyZTFlYjIgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdXNtY29uZmlnYmFzZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3VzbWNvbmZpZ2Jhc2UKQEAgLTIyLDYgKzIyLDggQEAKICMgICBURVNUUFJJVkFSR1NbTk9QQVNTXVsyXQogIwogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKICMjIERlZmF1bHRzCiBbICJ4JERFRlNFQ1VSSVRZTEVWRUwiID0gIngiIF0gJiYgREVGU0VDVVJJVFlMRVZFTD1hdXRoUHJpdgogCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3ZhY21jb25maWcgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2M3ZhY21jb25maWcKaW5kZXggM2Q3YmY5NS4uN2MzNWUzNiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdjN2YWNtY29uZmlnCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3YzdmFjbWNvbmZpZwpAQCAtMTAsNiArMTAsNyBAQAogIyBYWFg6IGRvIGF1dG9zZWxlY3Rpb24gb2Ygc3VwcG9ydGVkIGFsZ29yaXRobXMKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfTUQ1CiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX0RFUworU0tJUElGTk9UIE5FVFNOTVBfU0VDTU9EX1VTTQogCiBDT05GSUdBR0VOVCBbc25tcF0gcGVyc2lzdGVudGRpciAkU05NUF9UTVBfUEVSU0lTVEVOVERJUgogCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2YW55Y29uZmlnIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9TdmFueWNvbmZpZwppbmRleCBiOTFlYjBmLi44Y2I1M2RjIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1N2YW55Y29uZmlnCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvU3Zhbnljb25maWcKQEAgLTI2LDQgKzI2LDQgQEAKIAogQ09ORklHQUdFTlQgZ3JvdXAgICB0ZXN0Y29tbXVuaXR5Z3JvdXAgICRzbm1wX3ZlcnNpb24gICAgIHRlc3Rjb21tdW5pdHlzZWMKIENPTkZJR0FHRU5UIHZpZXcgICAgYWxsICAgICBpbmNsdWRlZCAuMSA4MAotQ09ORklHQUdFTlQgImFjY2VzcyAgdGVzdGNvbW11bml0eWdyb3VwICAiJyIiJyIgYW55IG5vYXV0aCBleGFjdCBhbGwgJHNubXBfd3JpdGVfYWNjZXNzIG5vbmUiCitDT05GSUdBR0VOVCAiYWNjZXNzICB0ZXN0Y29tbXVuaXR5Z3JvdXAgICcnIGFueSBub2F1dGggZXhhY3QgYWxsICRzbm1wX3dyaXRlX2FjY2VzcyBub25lIgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE0MXNubXB2MmNzZXRfc2ltcGxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZDliYWUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTQxc25tcHYyY3NldF9zaW1wbGUKQEAgLTAsMCArMSwzNSBAQAorIyEvYmluL3NoCisKKy4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAorCitIRUFERVIgU05NUHYyYyBzZXQgb2Ygc3lzdGVtLnN5c0NvbnRhY3QuMAorCitTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCitTS0lQSUYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCitTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorCisjCisjIEJlZ2luIHRlc3QKKyMKKworIyBzdGFuZGFyZCBWMkMgY29uZmlndXJhdGlvbjogdGVzdGNvbXVubml0eQorc25tcF93cml0ZV9hY2Nlc3M9J2FsbCcKKy4gLi9TdjJjY29uZmlnCitTVEFSVEFHRU5UCisKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYgMmMgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS40LjAiCisKK0NIRUNLICIuMS4zLjYuMS4yLjEuMS40LjAgPSBTVFJJTkc6IgorCitDQVBUVVJFICJzbm1wc2V0IC1PbiAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12IDJjICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuMi4xLjEuNC4wIHMgZm9vYmFydGVzdGluZ2JheiIKKworQ0hFQ0sgIi4xLjMuNi4xLjIuMS4xLjQuMCA9IFNUUklORzoiCisKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYgMmMgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS40LjAiCisKK0NIRUNLICJTVFJJTkc6IGZvb2JhcnRlc3RpbmdiYXoiCisKK1NUT1BBR0VOVAorCitGSU5JU0hFRApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE2c25tcHYyY2dldGZhaWxfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDE2c25tcHYyY2dldGZhaWxfc2ltcGxlCmluZGV4IDZlM2I4MTQuLjFjZDBlOTQgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAxNnNubXB2MmNnZXRmYWlsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMTZzbm1wdjJjZ2V0ZmFpbF9zaW1wbGUKQEAgLTEwLDYgKzEwLDcgQEAKIAogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiBTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9WQUNNX0NPTkZfTU9EVUxFCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI1c25tcHYzZ2V0U0hBREVTX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyNXNubXB2M2dldFNIQURFU19zaW1wbGUKaW5kZXggYTU5YjY5Yi4uZDAxYTRlZiAxMDA3NTUKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI1c25tcHYzZ2V0U0hBREVTX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjVzbm1wdjNnZXRTSEFERVNfc2ltcGxlCkBAIC0xNyw2ICsxNyw3IEBACiBERUZQUklWVFlQRT0iREVTIgogLiAuL1N2M2NvbmZpZwogCitBR0VOVF9GTEFHUz0iJEFHRU5UX0ZMQUdTIC1JLXdpbkV4dERMTCIKIFNUQVJUQUdFTlQKIAogQ0FQVFVSRSAic25tcGdldCAtT24gJFNOTVBfRkxBR1MgJFBSSVZURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjIuMS4xLjMuMCIKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyNnNubXB2M2dldFNIQUFFU19zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjZzbm1wdjNnZXRTSEFBRVNfc2ltcGxlCmluZGV4IGNiZmNjYTcuLjU2MWNkYWIgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyNnNubXB2M2dldFNIQUFFU19zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDI2c25tcHYzZ2V0U0hBQUVTX3NpbXBsZQpAQCAtMTcsNiArMTcsNyBAQAogREVGQVVUSFRZUEU9IlNIQSIKIC4gLi9TdjNjb25maWcKIAorQUdFTlRfRkxBR1M9IiRBR0VOVF9GTEFHUyAtSS13aW5FeHRETEwiCiBTVEFSVEFHRU5UCiAKIENBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTICRQUklWVEVTVEFSR1MgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS4zLjAiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjdzbm1wdjNEZWZhdWx0c19zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMjdzbm1wdjNEZWZhdWx0c19zaW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JiZjVlMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAyN3NubXB2M0RlZmF1bHRzX3NpbXBsZQpAQCAtMCwwICsxLDM5IEBACisjIS9iaW4vc2gKKworLiAuLi9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBTTk1QdjMgZ2V0IHVzaW5nIGRlZmF1bHQgY29uZmlnIG9mIC4xLjMuNi4xLjIuMS4xLjMuMAorCitTS0lQSUZOT1QgTkVUU05NUF9DQU5fRE9fQ1JZUFRPCitTS0lQSUZOT1QgTkVUU05NUF9FTkFCTEVfU0NBUElfQVVUSFBSSVYKK1NLSVBJRk5PVCBIQVZFX0FFU19DRkIxMjhfRU5DUllQVAorCisjCisjIEJlZ2luIHRlc3QKKyMKKworIyBzdGFuZGFyZCBWMyBjb25maWd1cmF0aW9uIGZvciB0ZW1wbGF0ZVNIQSB1c2VyCitERUZQUklWVFlQRT0iQUVTIgorREVGQVVUSFRZUEU9IlNIQSIKKy4gLi9TdjNjb25maWcKKworU1RBUlRBR0VOVAorCitDT05GSUdBUFAgZGVmVmVyc2lvbiAzCitDT05GSUdBUFAgZGVmUHJpdlR5cGUgQUVTCitDT05GSUdBUFAgZGVmQXV0aFR5cGUgU0hBCitDT05GSUdBUFAgZGVmQ29udGV4dCBcIlwiCitDT05GSUdBUFAgZGVmQXV0aFBhc3NQaHJhc2UgaW5pdGlhbF90ZXN0X3Bhc3NfYXV0aAorQ09ORklHQVBQIGRlZlByaXZQYXNzUGhyYXNlIGluaXRpYWxfdGVzdF9wYXNzX2F1dGgKK0NPTkZJR0FQUCBkZWZTZWN1cml0eUxldmVsIGF1dGhQcml2CitDT05GSUdBUFAgZGVmU2VjdXJpdHlOYW1lIGluaXRpYWwKKworIyBtYWtlIHN1cmUgdGhhdCB0aGUgYWJvdmUgY29uZmlndXJhdGlvbiB0b2tlbnMgcHJvcGVybHkgc2V0IHRoaW5ncyB1cCBzbyB0aGF0CisjIG5vIGZsYWdzIGFyZSBuZWVkZWQKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuMi4xLjEuMy4wIgorCitTVE9QQUdFTlQKKworQ0hFQ0sgIi4xLjMuNi4xLjIuMS4xLjMuMCA9IFRpbWV0aWNrczoiCisKK0ZJTklTSEVECmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzBzbm1wdjN1c2VyY3JlYXRpb25fc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDMwc25tcHYzdXNlcmNyZWF0aW9uX3NpbXBsZQppbmRleCA0MGU0Y2FjLi4yOGVhYWU4IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzBzbm1wdjN1c2VyY3JlYXRpb25fc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDAzMHNubXB2M3VzZXJjcmVhdGlvbl9zaW1wbGUKQEAgLTUsNiArNSw3IEBACiBIRUFERVIgU05NUHYzIGFnZW50IFVTTSB1c2VyIG1hbmFnZW1lbnQgd2l0aCBzbm1wdXNtCiAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIFNLSVBJRk5PVCBVU0lOR19TTk1QVjNfVVNNVVNFUl9NT0RVTEUKIFNLSVBJRk5PVCBORVRTTk1QX0NBTl9ET19DUllQVE8KIFNLSVBJRk5PVCBORVRTTk1QX0VOQUJMRV9TQ0FQSV9BVVRIUFJJVgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDM1c25tcHYzdHJhcGR1c2VybWdtdF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210X3NpbXBsZQppbmRleCBjYTMzZGM5Li5iZTdhYWI2IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210X3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210X3NpbXBsZQpAQCAtOSw3ICs5LDggQEAKIFNLSVBJRk5PVCBVU0lOR19TTk1QVjNfVVNNVVNFUl9NT0RVTEUKIFNLSVBJRiAgICBORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWAogU0tJUElGICAgIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAotU0tJUElGTk9UIE5FVFNOTVBfVVNFX09QRU5TU0wKK1NLSVBJRiAgICBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK1NLSVBJRk5PVCBORVRTTk1QX0NBTl9ET19DUllQVE8KIFNLSVBJRk5PVCBORVRTTk1QX0VOQUJMRV9TQ0FQSV9BVVRIUFJJVgogCiAjCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1fc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDQ5c25tcHYzaW5mb3JtX3NpbXBsZQppbmRleCAzMjM3ZWZhLi45OWNiNWViIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1fc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybV9zaW1wbGUKQEAgLTIsNiArMiw4IEBACiAKIC4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKIERFRlNFQ1VSSVRZTEVWRUw9bm9BdXRoTm9Qcml2CiAKIEhFQURFUiAiU05NUHYzIGluZm9ybXMgKG5vQXV0aE5vUHJpdikgcmVjZWl2ZWQgYW5kIHNlbnQgYnkgdG9vbHMiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNDlzbm1wdjNpbmZvcm1hdXRoX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlCmluZGV4IGQxNGFmYmEuLjBmMTg1NzcgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA0OXNubXB2M2luZm9ybWF1dGhfc2ltcGxlCkBAIC0yLDYgKzIsOCBAQAogCiAuIC4uL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2gKIAorU0tJUElGTk9UIE5FVFNOTVBfU0VDTU9EX1VTTQorCiBERUZTRUNVUklUWUxFVkVMPWF1dGhOb1ByaXYKIAogSEVBREVSICJTTk1QdjMgaW5mb3JtcyAoYXV0aE5vUHJpdikgcmVjZWl2ZWQgYW5kIHNlbnQgYnkgdG9vbHMiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTFzbm1wdjJjdHJhcF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTFzbm1wdjJjdHJhcF9zaW1wbGUKaW5kZXggNzQzMTcxYS4uOGUxYmU2YiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDUxc25tcHYyY3RyYXBfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MXNubXB2MmN0cmFwX3NpbXBsZQpAQCAtNSw2ICs1LDcgQEAKIEhFQURFUiBTTk1QdjJjIHRyYXBzIHJlY2VpdmVkIGFuZCBzZW50IGJ5IHRvb2xzCiAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQworU0tJUElGTk9UIFVTSU5HX01JQklJX1ZBQ01fQ09ORl9NT0RVTEUKIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTJzbm1wdjJjaW5mb3JtX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MnNubXB2MmNpbmZvcm1fc2ltcGxlCmluZGV4IDc3ZjNhNGMuLjQyMDhkZjggMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MnNubXB2MmNpbmZvcm1fc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1MnNubXB2MmNpbmZvcm1fc2ltcGxlCkBAIC01LDYgKzUsNyBAQAogSEVBREVSIFNOTVB2MmMgaW5mb3JtcyByZWNlaXZlZCBhbmQgc2VudCBieSB0b29scwogCiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9WQUNNX0NPTkZfTU9EVUxFCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDJfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDJfc2ltcGxlCmluZGV4IDA3M2QzYzQuLjZhNDM5ODkgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3QyX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0Ml9zaW1wbGUKQEAgLTIsNiArMiw4IEBACiAKIC4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKIEhFQURFUiBzbm1wdHJhcGQgZGlzY2FyZHMgb2YgdW5hdXRob3JpemVkIG5vdGlmaWNhdGlvbiB0eXBlcyAKIAogIwpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDNfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdDNfc2ltcGxlCmluZGV4IDE0MjZiNGEuLjA3OGVmMzggMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3QzX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTd0cmFwZGF1dGh0ZXN0M19zaW1wbGUKQEAgLTIsNiArMiw4IEBACiAKIC4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKIEhFQURFUiBzbm1wdHJhcGQgZGlzY2FyZHMgb2YgaW5jb3JyZWN0IHZpZXcgdHlwZXMgCiAKICMKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1N3RyYXBkYXV0aHRlc3Rfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUKaW5kZXggZTI1ZTM5ZS4uNGUyZmMxMCAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU3dHJhcGRhdXRodGVzdF9zaW1wbGUKQEAgLTIsNiArMiw4IEBACiAKIC4gLi4vc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAogCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCisKIEhFQURFUiBzbm1wdHJhcGQgYXV0aG9yaXphdGlvbiBmYWlsdXJlIG9mIG5vbiBhdXRob3JpemVkIHVzZXJzCiAKICMKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1OXRyYXBkdHJhcGhhbmRsZV9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNTl0cmFwZHRyYXBoYW5kbGVfc2ltcGxlCmluZGV4IDJjMWY3YTYuLjUzZDViOTAgMTAwNzU1Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA1OXRyYXBkdHJhcGhhbmRsZV9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDU5dHJhcGR0cmFwaGFuZGxlX3NpbXBsZQpAQCAtMTksNiArMTksNyBAQAogCiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIFNLSVBJRk5PVCBVU0lOR19VVElMSVRJRVNfRVhFQ1VURV9NT0RVTEUKK1NLSVBJRk5PVCBIQVZFX1NJR0hVUAogCiAjCiAjIEJlZ2luIHRlc3QKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MHRyYXBkcGVybF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjB0cmFwZHBlcmxfc2ltcGxlCmluZGV4IDdlNzIzYmIuLjcwZGVjZjQgMTAwNzU1Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MHRyYXBkcGVybF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYwdHJhcGRwZXJsX3NpbXBsZQpAQCAtNyw2ICs3LDcgQEAKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU05NUFYyQwogU0tJUElGTk9UIE5FVFNOTVBfRU1CRURERURfUEVSTAogU0tJUElGTk9UIEhBVkVfU0lHSFVQCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYxYWdlbnRwZXJsX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2MWFnZW50cGVybF9zaW1wbGUKaW5kZXggNWViZjg2My4uYzIwYTNmZiAxMDA3NTUKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDYxYWdlbnRwZXJsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjFhZ2VudHBlcmxfc2ltcGxlCkBAIC03LDYgKzcsNyBAQAogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiBTS0lQSUZOT1QgTkVUU05NUF9FTUJFRERFRF9QRVJMCiBTS0lQSUZOT1QgSEFWRV9TSUdIVVAKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjVhZ2VudGV4dGVuZF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QwNjVhZ2VudGV4dGVuZF9zaW1wbGUKaW5kZXggNjhjMzhmOS4uZjQxOTI2NiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMDY1YWdlbnRleHRlbmRfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDA2NWFnZW50ZXh0ZW5kX3NpbXBsZQpAQCAtMjEsMTEgKzIxLDEwIEBACiAjIEJlZ2luIHRlc3QKICMKIAoraW5kZXg9JyJoZWxsbyInCiBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KLSAgICBpbmRleD0nXCJoZWxsb1wiJwogICAgIENPTkZJR0FHRU5UIGV4dGVuZCBoZWxsbyAkTVNZU19TSCAtYyAiJyIgZWNobyBoZWxsb193b3JsZCAiJyIKIGVsc2UKLSAgICBpbmRleD0nImhlbGxvIicKICAgICBDT05GSUdBR0VOVCBleHRlbmQgaGVsbG8gL3Vzci9iaW4vZW52IGVjaG8gaGVsbG9fd29ybGQKIGZpCiAKQEAgLTMzLDE1ICszMiwxNSBAQAogCiAjIE5FVC1TTk1QLUVYVEVORC1NSUI6Om5zRXh0ZW5kT3V0cHV0MUxpbmUuImhlbGxvIiA9IFNUUklORzogImhlbGxvX3dvcmxkIgogQ0FQVFVSRSAiJFNOTVBHRVQgJFNOTVBfRkxBR1MgLSRzbm1wX3ZlcnNpb24gLWMgJFRFU1RDT01NVU5JVFkgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS40LjEuODA3Mi4xLjMuMi4zLjEuMS4kaW5kZXgiCi1DSEVDS09SRElFICJoZWxsb193b3JsZCIKK0NIRUNLT1JESUUgIlNUUklORzogaGVsbG9fd29ybGQiCiAKICNORVQtU05NUC1FWFRFTkQtTUlCOjpuc0V4dGVuZE91dHB1dEZ1bGwuImhlbGxvIiA9IFNUUklORzogImhlbGxvX3dvcmxkIgogQ0FQVFVSRSAiJFNOTVBHRVQgJFNOTVBfRkxBR1MgLSRzbm1wX3ZlcnNpb24gLWMgJFRFU1RDT01NVU5JVFkgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS40LjEuODA3Mi4xLjMuMi4zLjEuMi4kaW5kZXgiCi1DSEVDS09SRElFICJoZWxsb193b3JsZCIKK0NIRUNLT1JESUUgIlNUUklORzogaGVsbG9fd29ybGQiCiAKICNORVQtU05NUC1FWFRFTkQtTUlCOjpuc0V4dGVuZE91dExpbmUuImhlbGxvIi4xID0gU1RSSU5HOiAiaGVsbG9fd29ybGQiCiBDQVBUVVJFICIkU05NUEdFVCAkU05NUF9GTEFHUyAtJHNubXBfdmVyc2lvbiAtYyAkVEVTVENPTU1VTklUWSAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjQuMS44MDcyLjEuMy4yLjQuMS4yLiRpbmRleC4xIgotQ0hFQ0tPUkRJRSAiaGVsbG9fd29ybGQiCitDSEVDS09SRElFICJTVFJJTkc6IGhlbGxvX3dvcmxkIgogCiAjTkVULVNOTVAtRVhURU5ELU1JQjo6bnNFeHRlbmRPdXROdW1MaW5lcy4iaGVsbG8iID0gSU5URUdFUjogMQogQ0FQVFVSRSAiJFNOTVBHRVQgJFNOTVBfRkxBR1MgLSRzbm1wX3ZlcnNpb24gLWMgJFRFU1RDT01NVU5JVFkgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS40LjEuODA3Mi4xLjMuMi4zLjEuMy4kaW5kZXgiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTFhZ2VudHhzZXRfc2ltcGxlIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTExYWdlbnR4c2V0X3NpbXBsZQppbmRleCBjNzY3MDY0Li44NzkzOWJkIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTFhZ2VudHhzZXRfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExMWFnZW50eHNldF9zaW1wbGUKQEAgLTgsNiArOCw3IEBACiBTS0lQSUZOT1QgVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRQogU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCitTS0lQSUYgICAgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTEyYWdlbnR4c2V0ZmFpbF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTJhZ2VudHhzZXRmYWlsX3NpbXBsZQppbmRleCA0ZjFmMGNiLi5kNjEwYjQxIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTJhZ2VudHhzZXRmYWlsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTJhZ2VudHhzZXRmYWlsX3NpbXBsZQpAQCAtOCw2ICs4LDcgQEAKIFNLSVBJRk5PVCBVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFCiBTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKIFNLSVBJRiAgICBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiAgICBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKIAogIwogIyBCZWdpbiB0ZXN0CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTNhZ2VudHh0cmFwX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlCmluZGV4IGJlMmI5YmUuLjRmYTVlMmYgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDExM2FnZW50eHRyYXBfc2ltcGxlCkBAIC03LDYgKzcsNyBAQAogU0tJUElGTk9UIFVTSU5HX0FHRU5UWF9NQVNURVJfTU9EVUxFCiBTS0lQSUZOT1QgVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRQogU0tJUElGTk9UIFVTSU5HX0VYQU1QTEVTX0VYQU1QTEVfTU9EVUxFCitTS0lQSUZOT1QgTkVUU05NUF9TRUNNT0RfVVNNCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTE0YWdlbnR4YWdlbnR4dHJhcF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZQppbmRleCAzODBjMGVmLi41ODQ3NWQwIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMTRhZ2VudHhhZ2VudHh0cmFwX3NpbXBsZQpAQCAtNSw2ICs1LDcgQEAKIEhFQURFUiBBZ2VudFggdHJhcCBzZW5kaW5nIHN1cHBvcnQgdXNpbmcgYWdlbnR4dHJhcAogCiBTS0lQSUZOT1QgVVNJTkdfQUdFTlRYX01BU1RFUl9NT0RVTEUKK1NLSVBJRk5PVCBORVRTTk1QX1NFQ01PRF9VU00KIAogIwogIyBCZWdpbiB0ZXN0CkBAIC0zNyw3ICszOCw3IEBACiBTVE9QVFJBUEQKIAogIyBDaGVjayB0aGF0IHRoZSB0cmFwIHdhcyByZWNlaXZlZAotQ0hFQ0tUUkFQRCAibW9zdGx5X2hhcm1sZXNzIgorQ0hFQ0tUUkFQRCAiPSBTVFJJTkc6IFwiKm1vc3RseV9oYXJtbGVzc1wiKiIKIAogIyBhbGwgZG9uZSAod2hldykKIEZJTklTSEVECmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMjFwcm94eXNldF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMjFwcm94eXNldF9zaW1wbGUKaW5kZXggYzg3NjY4Yy4uZGQxOTY0MSAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTIxcHJveHlzZXRfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEyMXByb3h5c2V0X3NpbXBsZQpAQCAtOCw2ICs4LDcgQEAKIFNLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQogU0tJUElGICAgIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCitTS0lQSUYgICAgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKICMgWFhYOiB1Y2Qtc25tcC9wcm94eSBkb2Vzbid0IHByb3Blcmx5IHN1cHBvcnQgVENQIC0tIHJlbW92ZSB0aGlzIG9uY2UgaXQgZG9lcwogWyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4dGNwIiAtbyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4dGNwNiIgXSAmJiBTS0lQIFRlc3QgZG9lcyBub3Qgc3VwcG9ydCBUQ1AKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEyMnByb3h5c2V0ZmFpbF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMjJwcm94eXNldGZhaWxfc2ltcGxlCmluZGV4IDdmNTdiZTkuLjdmMjc4NzMgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDEyMnByb3h5c2V0ZmFpbF9zaW1wbGUKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTIycHJveHlzZXRmYWlsX3NpbXBsZQpAQCAtOCw2ICs4LDcgQEAKIFNLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQogU0tJUElGICAgIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCitTS0lQSUYgICAgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCiAKICMgWFhYOiB1Y2Qtc25tcC9wcm94eSBkb2Vzbid0IHByb3Blcmx5IHN1cHBvcnQgVENQIC0tIHJlbW92ZSB0aGlzIG9uY2UgaXQgZG9lcwogWyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4dGNwIiBdICYmIFNLSVAgVGVzdCBkb2VzIG5vdCBzdXBwb3J0IFRDUApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTMwc25tcHYxdmFjbWdldF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZQppbmRleCAxOTc0YjdmLi44MDYyM2Y0IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxMzBzbm1wdjF2YWNtZ2V0X3NpbXBsZQpAQCAtMTYsNiArMTYsNyBAQAogc25tcF92ZXJzaW9uPXYxCiAuIC4vU3ZhY21jb25maWcKIAorQUdFTlRfRkxBR1M9IiRBR0VOVF9GTEFHUyAtSS13aW5FeHRETEwiCiBTVEFSVEFHRU5UCiAKIENBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkxIC12IDEgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS4xLjAiIApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTQxc25tcHYyY3ZhY21nZXRmYWlsX3NpbXBsZSBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE0MXNubXB2MmN2YWNtZ2V0ZmFpbF9zaW1wbGUKaW5kZXggNWY2NjViYS4uY2QzNjJhYSAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTQxc25tcHYyY3ZhY21nZXRmYWlsX3NpbXBsZQorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNDFzbm1wdjJjdmFjbWdldGZhaWxfc2ltcGxlCkBAIC02LDYgKzYsOCBAQAogCiBTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIFNLSVBJRiBORVRTTk1QX0RJU0FCTEVfU0VUX1NVUFBPUlQKK1NLSVBJRiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9WQUNNX0NPTkZfTU9EVUxFCiAKICMKICMgQmVnaW4gdGVzdApkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTU0ZGlzbWFucGluZ21pYl9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNTRkaXNtYW5waW5nbWliX3NpbXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWNmZmUwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTU0ZGlzbWFucGluZ21pYl9zaW1wbGUKQEAgLTAsMCArMSwxMTYgQEAKKyMhL2Jpbi9zaAorCisuIC4uL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2gKKworSEVBREVSIERJU01BTiBQSU5HIE1JQgorCitbICIkVUlEIiA9IDAgXSB8fCBTS0lQICJOb3QgcGVybWl0dGVkIHRvIGNyZWF0ZSByYXcgc29ja2V0cyIKK1NLSVBJRk5PVCBVU0lOR19ESVNNQU5fUElOR19NSUJfTU9EVUxFCitTS0lQSUYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMQorCisjIFNOTVB2Mi1UQworYWN0aXZlPTEKK2NyZWF0ZUFuZFdhaXQ9NQorZGVzdHJveT02CisjIERJU01BTi1QSU5HLU1JQgorRElTTUFOX1BJTkdfTUlCPS4xLjMuNi4xLjIuMS44MC4xCitwaW5nQ3RsRW50cnk9JHtESVNNQU5fUElOR19NSUJ9LjIuMQorcGluZ0N0bFRhcmdldEFkZHJlc3NUeXBlPSR7cGluZ0N0bEVudHJ5fS4zCitwaW5nQ3RsVGFyZ2V0QWRkcmVzVHlwZUlwdjQ9MQorcGluZ0N0bFRhcmdldEFkZHJlc3M9JHtwaW5nQ3RsRW50cnl9LjQKK3BpbmdDdGxQcm9iZUNvdW50PSR7cGluZ0N0bEVudHJ5fS43CitwaW5nQ3RsQWRtaW5TdGF0dXM9JHtwaW5nQ3RsRW50cnl9LjgKK3BpbmdDdGxBZG1pblN0YXR1c0VuYWJsZWQ9MQorcGluZ0N0bEZyZXF1ZW5jeT0ke3BpbmdDdGxFbnRyeX0uMTAKK3BpbmdDdGxEZXNjcj0ke3BpbmdDdGxFbnRyeX0uMTcKK3BpbmdDdGxSb3dTdGF0dXM9JHtwaW5nQ3RsRW50cnl9LjIzCitwaW5nUmVzdWx0c0VudHJ5PSR7RElTTUFOX1BJTkdfTUlCfS4zLjEKK3BpbmdSZXN1bHRzUHJvYmVSZXNwb25zZXM9JHtwaW5nUmVzdWx0c0VudHJ5fS43CitwaW5nUmVzdWx0c1NlbnRQcm9iZXM9JHtwaW5nUmVzdWx0c0VudHJ5fS44CisjIFRlc3QgY29uZmlndXJhdGlvbgorVEFSR0VUX0FERFJFU1M9MTI3LjAuMC4xCitJRFhQRlg9OC43OC4xMDEuMTE2LjQ1LjgzLjc4Ljc3LjgwLjYuODQuNDkuNTMuNTIgIyAiTmV0LVNOTVAiLiJUMTU0IgorSURYUz0iJHtJRFhQRlh9Ljk1LjQ5ICR7SURYUEZYfS45NS41MCAke0lEWFBGWH0uOTUuNTEiCitQUk9CRV9DT1VOVD01CisKKworIworIyBCZWdpbiB0ZXN0CisjCisKKyMgc3RhbmRhcmQgVjEgY29uZmlndXJhdGlvbjogdGVzdGNvbW11bml0eQorc25tcF93cml0ZV9hY2Nlc3M9J2FsbCcKKy4gLi9TdjFjb25maWcKKworU1RBUlRBR0VOVAorCitmb3IgSURYIGluICRJRFhTOyBkbworCitDQVBUVVJFICJzbm1wc2V0IC1PbmUgJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdjEgICAgICAgICAgXAorICAgICAgICAgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAgIFwKKyAgICAgICAgICRwaW5nQ3RsUm93U3RhdHVzLiRJRFggaSAkZGVzdHJveSIKKworQ0hFQ0sgIl4kcGluZ0N0bFJvd1N0YXR1cy4kSURYID0gSU5URUdFUjogJGRlc3Ryb3kiCisKK0NBUFRVUkUgInNubXBzZXQgLU9uZSAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12MSAgICAgICAgICBcCisgICAgICAgICAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUICAgXAorICAgICAgICAgJHBpbmdDdGxSb3dTdGF0dXMuJElEWCBpICRjcmVhdGVBbmRXYWl0IgorCitDSEVDSyAiXiRwaW5nQ3RsUm93U3RhdHVzLiRJRFggPSBJTlRFR0VSOiAkY3JlYXRlQW5kV2FpdCIKKworQ0FQVFVSRSAic25tcHNldCAtT25lICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYxICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsVGFyZ2V0QWRkcmVzc1R5cGUuJElEWCBpICRwaW5nQ3RsVGFyZ2V0QWRkcmVzVHlwZUlwdjQgIFwKKyAgICAgICAgICRwaW5nQ3RsVGFyZ2V0QWRkcmVzcy4kSURYIHMgJFRBUkdFVF9BRERSRVNTICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsRnJlcXVlbmN5LiRJRFggdSAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsRGVzY3IuJElEWCBzIFNjcmlwdEdlbmVyYXRlZCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsUHJvYmVDb3VudC4kSURYIHUgJHtQUk9CRV9DT1VOVH0gICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICRwaW5nQ3RsQWRtaW5TdGF0dXMuJElEWCBpICRwaW5nQ3RsQWRtaW5TdGF0dXNFbmFibGVkIgorCitDSEVDSyAiXiRwaW5nQ3RsQWRtaW5TdGF0dXMuJElEWCA9IElOVEVHRVI6ICRwaW5nQ3RsQWRtaW5TdGF0dXNFbmFibGVkIgorCitDQVBUVVJFICJzbm1wc2V0IC1PbmUgJFNOTVBfRkxBR1MgLWMgdGVzdGNvbW11bml0eSAtdjEgICAgICAgICAgXAorICAgICAgICAgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAgIFwKKyAgICAgICAgICRwaW5nQ3RsUm93U3RhdHVzLiRJRFggaSAkYWN0aXZlIgorCitDSEVDSyAiXiRwaW5nQ3RsUm93U3RhdHVzLiRJRFggPSBJTlRFR0VSOiAkYWN0aXZlIgorCitkb25lCisKK3NsZWVwICR7UFJPQkVfQ09VTlR9CitzbGVlcCAyCisKK2ZvciBJRFggaW4gJElEWFM7IGRvCisKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYxICAgICAgICAgICBcCisgICAgICAgICAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUICAgXAorICAgICAgICAgJHBpbmdSZXN1bHRzU2VudFByb2Jlcy4kSURYIgorCitDSEVDSyAiXiRwaW5nUmVzdWx0c1NlbnRQcm9iZXMuJElEWCA9IEdhdWdlMzI6ICR7UFJPQkVfQ09VTlR9IgorCitDQVBUVVJFICJzbm1wZ2V0IC1PbiAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12MSAgICAgICAgICAgXAorICAgICAgICAgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAgIFwKKyAgICAgICAgICRwaW5nUmVzdWx0c1Byb2JlUmVzcG9uc2VzLiRJRFgiCisKK0NIRUNLICJeJHBpbmdSZXN1bHRzUHJvYmVSZXNwb25zZXMuJElEWCA9IEdhdWdlMzI6ICR7UFJPQkVfQ09VTlR9IgorCitkb25lCisKKyMgRGVsZXRlIGZpcnN0IHJvdyBhbmQgbGVhdmUgdGhlIHJlbWFpbmluZyByb3dzIGluIHRoZSB0YWJsZS4KKworZm9yIElEWCBpbiAkSURYUzsgZG8KKworQ0FQVFVSRSAic25tcHNldCAtT25lICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYxICAgICAgICAgIFwKKyAgICAgICAgICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgICBcCisgICAgICAgICAkcGluZ0N0bFJvd1N0YXR1cy4kSURYIGkgJGRlc3Ryb3kiCisKK0NIRUNLICJeJHBpbmdDdGxSb3dTdGF0dXMuJElEWCA9IElOVEVHRVI6ICRkZXN0cm95IgorCiticmVhaworCitkb25lCisKK1NUT1BBR0VOVAorCisKK0ZJTklTSEVECmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNjFzbm1wVGFyZ2V0QWRkcl9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9kZWZhdWx0L1QxNjFzbm1wVGFyZ2V0QWRkcl9zaW1wbGUKaW5kZXggYzdjYWE2YS4uMDBlMDk0ZSAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvZGVmYXVsdC9UMTYxc25tcFRhcmdldEFkZHJfc2ltcGxlCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL2RlZmF1bHQvVDE2MXNubXBUYXJnZXRBZGRyX3NpbXBsZQpAQCAtMzIsMTEgKzMyLDI0IEBACiAKIENIRUNLT1JESUUgIm5vQ3JlYXRpb24iCiAKKyMgQ3JlYXRlIGFuIGVudHJ5IHdpdGggaW5kZXggJ0JcMEEnCitDQVBUVVJFICJzbm1wc2V0IC1PbiAtT2UgJFNOTVBfRkxBR1MgJEFVVEhURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY2LjAuNjUgaSA1IgorCitDSEVDS09SRElFICIuMS4zLjYuMS42LjMuMTIuMS4yLjEuOS42Ni4wLjY1ID0gSU5URUdFUjogNSIKKworIyBDaGVjayB0aGF0IHRoZSB0YWJsZSBjb250YWlucyB0aGUgJ0JcMEEnIGVudHJ5IGFuZCBubyBvdGhlcgorQ0FQVFVSRSAic25tcHdhbGsgLU9uIC1PZSAkU05NUF9GTEFHUyAkQVVUSFRFU1RBUkdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkiCisKK0NIRUNLICJeLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkiCitDSEVDS09SRElFICIuMS4zLjYuMS42LjMuMTIuMS4yLjEuOS42Ni4wLjY1ID0iCisKKyMgRGVsZXRlIGFuIGVudHJ5IHdpdGggaW5kZXggJ0JcMEEnCitDQVBUVVJFICJzbm1wc2V0IC1PbiAtT2UgJFNOTVBfRkxBR1MgJEFVVEhURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY2LjAuNjUgaSA2IgorCiAjIENyZWF0ZSBhbiBlbnRyeSB3aXRoIGluZGV4ICdBJwogQ0FQVFVSRSAic25tcHNldCAtT24gLU9lICRTTk1QX0ZMQUdTICRBVVRIVEVTVEFSR1MgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS42LjMuMTIuMS4yLjEuOS42NSBpIDUiCiAKIENIRUNLT1JESUUgIi4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY1ID0gSU5URUdFUjogNSIKLUNIRUNLT1JESUUgIi4xLjMuNi4xLjYuMy4xMi4xLjIuMS45LjY1ID0iCiAKICMgQ2hlY2sgdGhhdCB0aGUgdGFibGUgY29udGFpbnMgb25lIGFuZCBvbmx5IG9uZSBlbnRyeQogQ0FQVFVSRSAic25tcHdhbGsgLU9uIC1PZSAkU05NUF9GTEFHUyAkQVVUSFRFU1RBUkdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuNi4zLjEyLjEuMi4xLjkiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9yZWFkLW9ubHkvVDAxNDFzbm1wdjJjc2V0ZmFpbF9zaW1wbGUgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9yZWFkLW9ubHkvVDAxNDFzbm1wdjJjc2V0ZmFpbF9zaW1wbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTcwNWY0OQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3JlYWQtb25seS9UMDE0MXNubXB2MmNzZXRmYWlsX3NpbXBsZQpAQCAtMCwwICsxLDMyIEBACisjIS9iaW4vc2gKKworLiAuLi9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBTTk1QdjJjIHNldCBmYWlsdXJlIHRvIHN5c3RlbS5zeXNDb250YWN0LjAKKworU0tJUElGTk9UIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCitTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKKworIworIyBCZWdpbiB0ZXN0CisjCisKKyMgc3RhbmRhcmQgVjJDIGNvbmZpZ3VyYXRpb246IHRlc3Rjb211bm5pdHkKK3NubXBfd3JpdGVfYWNjZXNzPSdhbGwnCisoY2QgLi4vZGVmYXVsdCA7IC4gLi9TdjJjY29uZmlnKQorU1RBUlRBR0VOVAorCitDQVBUVVJFICJzbm1wZ2V0IC1PbiAkU05NUF9GTEFHUyAtYyB0ZXN0Y29tbXVuaXR5IC12IDJjICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuMi4xLjEuNC4wIgorCitDSEVDSyAiLjEuMy42LjEuMi4xLjEuNC4wID0gU1RSSU5HOiIKKworQ0FQVFVSRSAic25tcHNldCAtciAwIC10IDEgLU9uICRTTk1QX0ZMQUdTIC1jIHRlc3Rjb21tdW5pdHkgLXYgMmMgJFNOTVBfVFJBTlNQT1JUX1NQRUM6JFNOTVBfVEVTVF9ERVNUJFNOTVBfU05NUERfUE9SVCAuMS4zLjYuMS4yLjEuMS40LjAgcyBmb29iYXJ0ZXN0aW5nYmF6IgorCitDSEVDSyAiVGltZW91dDogTm8gUmVzcG9uc2UiCisKK1NUT1BBR0VOVAorCitDSEVDS0FHRU5UICdCYWQgUERVIHR5cGUgcmVjZWl2ZWQnCisKK0ZJTklTSEVECmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zbm1wdjMvVDA0MGtleW1hbmFnZXRlc3RfY2FwcC5jIGIvdGVzdGluZy9mdWxsdGVzdHMvc25tcHYzL1QwNDBrZXltYW5hZ2V0ZXN0X2NhcHAuYwppbmRleCAzZTBmZDU4Li5kNjhmNjYzIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zbm1wdjMvVDA0MGtleW1hbmFnZXRlc3RfY2FwcC5jCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3NubXB2My9UMDQwa2V5bWFuYWdldGVzdF9jYXBwLmMKQEAgLTQwMSw5ICs0MDEsNyBAQAogICAgICAgICBmcHJpbnRmKHN0ZG91dCwgIiMgZW5naW5lSUQlcyAobGVuPSVkKTogICVzXG4iLAogICAgICAgICAgICAgICAgIChpc2RlZmF1bHQpID8gIiAoZGVmYXVsdCkiIDogIiIsCiAgICAgICAgICAgICAgICAgZW5naW5lSURfbGVuLCAoKHMgIT0gMCkgPyAoKHVfY2hhciAqKSBzKSA6IGVuZ2luZUlEKSk7Ci0gICAgaWYgKHMpIHsKLSAgICAgICAgU05NUF9GUkVFKHMpOwotICAgIH0KKyAgICBTTk1QX0ZSRUUocyk7CiAKIAogCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9URVNUQ09ORi5zaCBiL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoCmluZGV4IDVkMWRjNTAuLjJhMGE4YWYgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX1RFU1RDT05GLnNoCkBAIC03LDYgKzcsMjggQEAKICMgICpTTk1QX1BFUlNJU1RFTlRfRklMRTogd2hlcmUgdG8gc3RvcmUgdGhlIGFnZW50J3MgcGVyc2lzdGVudCBpbmZvcm1hdGlvbgogIyAgICAgICAgICAgICAgICAgICAgICAgICAoWFhYOiB0aGlzIHNob3VsZCBiZSBzcGVjaWZpYyB0byBqdXN0IHRoZSBhZ2VudCkKIAorIyBNaW5HVy9NU1lTIG9ubHk6IHRyYW5zbGF0ZSBhbiBNU1lTIHBhdGggYmFjayBpbnRvIGEgRE9TIHBhdGggc3VjaCB0aGF0IHNubXBkCisjIGFuZCB0aGUgTmV0LVNOTVAgYXBwbGljYXRpb25zIGNhbiB1bmRlcnN0YW5kIGl0LiBPbmUgb2YgdGhlIGZlYXR1cmVzIG9mIE1TWVMKKyMgaXMgdGhhdCBpZiBhIFBPU0lYLXN0eWxlIHBhdGggaXMgcGFzc2VkIGFzIGEgY29tbWFuZC1saW5lIGFyZ3VtZW50IHRvIGFuCisjIGV4ZWN1dGFibGUgdGhhdCBNU1lTIHRyYW5zbGF0ZXMgdGhhdCBwYXRoIHRvIGEgRE9TLXN0eWxlIHBhdGggYmVmb3JlCisjIHN0YXJ0aW5nIHRoZSBleGVjdXRhYmxlLiBUaGlzIGlzIGEga2V5IGZlYXR1cmUgb2YgTVNZUyB0aGF0IG1ha2VzIGl0CisjIHBvc3NpYmxlIHRvIHJ1biBzaGVsbCBzY3JpcHRzIHVubW9kaWZpZWQgYW5kIGF0IHRoZSBzYW1lIHRpbWUgdG8gdXNlCisjIGV4ZWN1dGFibGVzIHRoYXQgYWNjZXB0IERPUy1zdHlsZSBwYXRocy4gVGhlcmUgaXMgbm8gc3VwcG9ydCBob3dldmVyIGZvcgorIyBhdXRvbWF0aWNhbCB0cmFuc2xhdGlvbiBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCBjb250YWluIHBhdGhzLiBIZW5jZQorIyB0aGlzIGZ1bmN0aW9uIHRoYXQgdHJhbnNsYXRlcyBwYXRocyBleHBsaWNpdGx5LgordHJhbnNsYXRlX3BhdGgoKSB7CisgIGlmIFsgIiRPU1RZUEUiID0gbXN5cyBdOyB0aGVuCisgICAgbG9jYWwgdD1gc2V0IFwKKyAgICAgICAgICAgICB8IHNlZCAtbiAtZSAicy9eJDE9J1woLipcKSckLyR7U05NUF9FTlZfU0VQQVJBVE9SfVwxL3AiIFwKKyAgICAgICAgICAgICAgICAgICAgICAtZSAicy9eJDE9XCguKlwpJC8ke1NOTVBfRU5WX1NFUEFSQVRPUn1cMS9wIiBcCisgICAgICAgICAgICAgfCBzZWQgLWUgInN8JHtTTk1QX0VOVl9TRVBBUkFUT1J9L2MvfCR7U05NUF9FTlZfU0VQQVJBVE9SfWM6L3xnIiBcCisgICAgICAgICAgICAgICAgICAgLWUgInN8JHtTTk1QX0VOVl9TRVBBUkFUT1J9L3RtcC98JHtTTk1QX0VOVl9TRVBBUkFUT1J9Yzovd2luZG93cy90ZW1wL3xnIiBcCisgICAgICAgICAgICAgfCBzZWQgLWUgInMvXiR7U05NUF9FTlZfU0VQQVJBVE9SfS8vIiBcCisgICAgICAgICAgICBgCisgICAgZXZhbCAiJDE9JyR0JyIKKyAgZmkKK30KKwogIwogIyBPbmx5IGFsbG93IG91cnNlbHZlcyB0byBiZSBldmFsJ2VkIG9uY2UKICMKQEAgLTQ4LDYgKzcwLDggQEAKICAgICBleHBvcnQgU05NUF9WRVJCT1NFCiBmaQogCitTTk1QX0VOVl9TRVBBUkFUT1I9ImAke2J1aWxkZGlyfS9uZXQtc25tcC1jb25maWcgLS1lbnYtc2VwYXJhdG9yYCIKKwogaWYgWyAieCRNSUJESVJTIiA9ICJ4IiBdOyB0aGVuCiAgIGlmIFsgIngkU05NUF9QUkVGRVJfTkVBUl9NSUJTIiA9ICJ4MSIgXTsgdGhlbgogICAgIE1JQkRJUlM9JHtzcmNkaXJ9L21pYnMKQEAgLTEwMyw2ICsxMjcsNyBAQAogICAgICAgICB0ZXN0bnVtPTAKICAgICBmaQogICAgIFNOTVBfVE1QRElSPSIvdG1wL3NubXAtdGVzdC0kdGVzdG51bS0kJCIKKyAgICB0cmFuc2xhdGVfcGF0aCBTTk1QX1RNUERJUgogICAgIGV4cG9ydCBTTk1QX1RNUERJUgogICAgIGlmIFsgLWQgJFNOTVBfVE1QRElSIF07IHRoZW4KIAllY2hvICIkMDogRVJST1I6ICRTTk1QX1RNUERJUiBhbHJlYWR5IGV4aXN0ZWQuIgpAQCAtMTEwLDcgKzEzNSw3IEBACiAgICAgZmkKICAgZmkKICAgaWYgWyAhIC1kICRTTk1QX1RNUERJUiBdOyB0aGVuCi0gICAgbWtkaXIgJFNOTVBfVE1QRElSCisgICAgbWtkaXIgLXAgJFNOTVBfVE1QRElSCiAgICAgY2htb2QgMDcwMCAkU05NUF9UTVBESVIKICAgZmkKICAgaWYgWyAieCRTTk1QX1RNUF9QRVJTSVNURU5URElSIiA9ICJ4IiBdOyB0aGVuCkBAIC0xMzAsNyArMTU1LDYgQEAKIAogU05NUF9JR05PUkVfV0lORE9XU19SRUdJU1RSWT0idHJ1ZSIKIGV4cG9ydCBTTk1QX0lHTk9SRV9XSU5ET1dTX1JFR0lTVFJZCi1TTk1QX0VOVl9TRVBBUkFUT1I9ImAke2J1aWxkZGlyfS9uZXQtc25tcC1jb25maWcgLS1lbnYtc2VwYXJhdG9yYCIKIFNOTVBfUEVSTFBST0c9ImAke2J1aWxkZGlyfS9uZXQtc25tcC1jb25maWcgLS1wZXJscHJvZ2AiCiBTTk1QX1RFU1RESVI9IiRTTk1QX0JBU0VESVIvdGVzdHMiCiBTTk1QX0NPTkZJR19GSUxFPSIkU05NUF9UTVBESVIvc25tcGQuY29uZiIKQEAgLTE0NCw4ICsxNjgsMTAgQEAKIFNOTVBfQUdFTlRYX1BJRF9GSUxFPSIkU05NUF9UTVBESVIvYWdlbnR4LnBpZCIKIFNOTVBfQUdFTlRYX0xPR19GSUxFPSIkU05NUF9UTVBESVIvYWdlbnR4LmxvZyIKIFNOTVBDT05GUEFUSD0iJHtTTk1QX1RNUERJUn0ke1NOTVBfRU5WX1NFUEFSQVRPUn0ke1NOTVBfVE1QX1BFUlNJU1RFTlRESVJ9IgordHJhbnNsYXRlX3BhdGggU05NUENPTkZQQVRICiBleHBvcnQgU05NUENPTkZQQVRICiBTTk1QX1BFUlNJU1RFTlRfRElSPSRTTk1QX1RNUF9QRVJTSVNURU5URElSCit0cmFuc2xhdGVfcGF0aCBTTk1QX1BFUlNJU1RFTlRfRElSCiBleHBvcnQgU05NUF9QRVJTSVNURU5UX0RJUgogI1NOTVBfUEVSU0lTVEVOVF9GSUxFPSIkU05NUF9UTVBfUEVSU0lTVEVOVERJUi9wZXJzaXN0ZW50LXN0b3JlLmNvbmYiCiAjZXhwb3J0IFNOTVBfUEVSU0lTVEVOVF9GSUxFCkBAIC0xNzUsOCArMjAxLDEyIEBACiBmaQogCiBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KLSAgICAjIFRvIGRvOiBtYWtlIGNvbmZpZ3VyZSBmaW5kIG91dCB0aGUgcGF0aCBvZiBNU1lTJyBzaC5leGUuCi0gICAgTVNZU19TSD0iYzovbXN5cy8xLjAvYmluL3NoLmV4ZSIKKyAgICAjIE9idGFpbiB0aGUgTVNZUyBpbnN0YWxsYXRpb24gcGF0aCBmcm9tIHRoZSAhQzogZW52aXJvbm1lbnQgdmFyaWFibGUsCisgICAgIyByZW1vdmUgc3Vycm91bmRpbmcgc2luZ2xlIHF1b3RlcyBhbmQgY29udmVydCBiYWNrc2xhc2hlcyBpbnRvIGZvcndhcmQKKyAgICAjIHNsYXNoZXMuCisgICAgTVNZU19QQVRIPSIkKHNldCBcCisgICAgICAgICAgICAgICAgIHwgc2VkIC1uICdzfF5cIUM6PSciJyInXCguKlwpJyInIickfFwxfHAnIHwgc2VkICdzfFxcfC98ZycpIgorICAgIE1TWVNfU0g9IiRNU1lTX1BBVEgvc2guZXhlIgogZmkKIAogUFJPQkVfRk9SX1BPUlQoKSB7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoIGIvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfZXZhbF90b29scy5zaAppbmRleCAyZGYyYzk1Li43MThlZGM0IDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ldmFsX3Rvb2xzLnNoCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX2V2YWxfdG9vbHMuc2gKQEAgLTY4LDggKzY4LDggQEAKIH0KIAogQ0FOX1VTTEVFUCgpIHsKLSAgIGlmIFsgIiRTTk1QX0NBTl9VU0xFRVAiID0gMCAtbyAiJFNOTVBfQ0FOX1VTTEVFUCIgPSAwIF0gOyB0aGVuCi0gICAgIHJldHVybiAkU05NUF9DQU5fVVNMRUVQCisgICBpZiBbICIkU05NUF9DQU5fVVNMRUVQIiA9IDAgLW8gIiRTTk1QX0NBTl9VU0xFRVAiID0gMSBdIDsgdGhlbgorICAgICByZXR1cm4gMAogICAgZmkKICAgIHNsZWVwIC4xID4gL2Rldi9udWxsIDI+JjEKICAgIGlmIFsgJD8gPSAwIF0gOyB0aGVuCkBAIC0xMzQsNyArMTM0LDcgQEAKIAltaXNzaW5nZmlsZXM9IiIKIAogCWZvciBmIGluICQqOyBkbwotCQlbIC1lICIkZiIgXSAmJiBjb250aW51ZQorCQlbIC1mICIkZiIgXSAmJiBjb250aW51ZQogCQllY2hvICJGQUlMRUQ6IENhbm5vdCBmaW5kIGZpbGUgXCIkZlwiLiIKIAkJbWlzc2luZ2ZpbGVzPXRydWUKIAlkb25lCkBAIC0xNTEsNyArMTUxLDcgQEAKICMKIFNUQVJUVEVTVCgpIHsKICAgICAgICAgTkVXT1VUUFVURklMRQotCVsgISAtZSAiJGp1bmtvdXRwdXRmaWxlIiBdICYmIHsKKwlbICEgLWYgIiRqdW5rb3V0cHV0ZmlsZSIgXSAmJiB7CiAJCXRvdWNoICRqdW5rb3V0cHV0ZmlsZQogCQlyZXR1cm4KIAl9CkBAIC0yODYsNyArMjg2LDcgQEAKICAgICBzaGlmdAogICAgIHNoaWZ0CiAgICAgaWYgWyAkU05NUF9WRVJCT1NFIC1ndCAwIF07IHRoZW4KLQllY2hvIC1uICJjaGVja2luZyBvdXRwdXQgZm9yIFwiJCpcIi4uLiIKKwllY2hvIC1uICJjaGVja2luZyAkY2hrZmlsZSBmb3IgJGNrZmNvdW50IFwiJCpcIi4uLiIKICAgICBmaQogCiAgICAgaWYgWyAtZiAkY2hrZmlsZSBdOyB0aGVuCkBAIC0zNTYsODUgKzM1Niw4MyBAQAogICAgIENIRUNLRklMRUNPVU5UICRTTk1QX1NOTVBEX0xPR19GSUxFICRjb3VudCAkQAogfQogCi1XQUlURk9SQUdFTlRTSFVUVElOR0RPV04oKSB7Ci0gICAgaWYgWyAieCRPU1RZUEUiICE9ICJ4bXN5cyIgXTsgdGhlbgotICAgICAgICBXQUlURk9SQUdFTlQgInNodXR0aW5nIGRvd24iCisjIFJldHVybiAwICh0cnVlKSBpZiBhIHByb2Nlc3Mgd2l0aCBwaWQgJDEgZXhpc3RzIGFuZCAxIChmYWxzZSkgaWYgbm8gcHJvY2VzcworIyB3aXRoIHBpZCAkMSBleGlzdHMuCitJU1JVTk5JTkcoKSB7CisgICAgaWYgWyAieCRPU1RZUEUiID0gInhtc3lzIiBdOyB0aGVuCisJcHNsaXN0LmV4ZSAiJDEiIDI+JjEgfCB3aGlsZSByZWFkIG5hbWUgcHNwaWQgcmVzdDsgZG8KKwkgICAgaWYgWyAiJDEiID0gIiRwc3BpZCIgXTsgdGhlbgorCQlyZXR1cm4gMAorCSAgICBmaQorCWRvbmUKKwlyZXR1cm4gMQogICAgIGVsc2UKLQlDQU5fVVNMRUVQCi0JaWYgWyAkU05NUF9DQU5fVVNMRUVQID0gMSBdIDsgdGhlbgotCSAgc2xlZXB0aW1lPWBleHByICRTTk1QX1NMRUVQICcqJyA1MGAKLQllbHNlIAotCSAgc2xlZXB0aW1lPWBleHByICRTTk1QX1NMRUVQICcqJyA1YAotCWZpCi0gICAgICAgIHNubXBkX3BpZD1gY2F0ICRTTk1QX1NOTVBEX1BJRF9GSUxFYAotICAgICAgICB3aGlsZSBbICRzbGVlcHRpbWUgLWd0IDAgXSAmJiBraWxsIC0wICIkc25tcGRfcGlkIiAyPi9kZXYvbnVsbDsgZG8KLSAgICAgICAgICAgIGlmIFsgJFNOTVBfQ0FOX1VTTEVFUCA9IDEgXTsgdGhlbgotICAgICAgICAgICAgICAgIHNsZWVwIC4xCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc2xlZXAgMQotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIHNsZWVwdGltZT1gZXhwciAkc2xlZXB0aW1lIC0gMWAKLSAgICAgICAgZG9uZQorICAgICAgICBraWxsIC0wICIkMSIgMj4vZGV2L251bGwKICAgICBmaQogfQogCisjIEVjaG8gYSBjb21tYW5kIHRoYXQgYXNrcyB0aGUgcHJvY2VzcyB3aXRoIHBpZCAkMSB0byBzdG9wLgorRUNIT1NFTkRTSUdURVJNKCkgeworICAgIGlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXTsgdGhlbgorICAgICAgICBlY2hvIHBza2lsbC5leGUgJDEKKyAgICBlbHNlCisgICAgICAgIGVjaG8ga2lsbCAtVEVSTSAkMQorICAgIGZpCit9CisKKyMgRWNobyBhIGNvbW1hbmQgdGhhdCBzdG9wcyB0aGUgcHJvY2VzcyB3aXRoIHBpZCAkMSBmb3JjaWJseS4KK0VDSE9TRU5EU0lHS0lMTCgpIHsKKyAgICBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KKyAgICAgICAgZWNobyBwc2tpbGwuZXhlICQxCisgICAgZWxzZQorICAgICAgICBlY2hvIGtpbGwgLUtJTEwgJDEKKyAgICBmaQorfQorCisjIFdhaXQgdW50aWwgdGhlIHNoZWxsIHN0YXRlbWVudCAiJEAiIGV2YWx1YXRlcyB0byBmYWxzZS4KK1dBSVRGT1JOT1RDT05EKCkgeworICAgIENBTl9VU0xFRVAKKyAgICBpZiBbICRTTk1QX0NBTl9VU0xFRVAgPSAxIF0gOyB0aGVuCisgICAgICAgIHNsZWVwdGltZT1gZXhwciAkU05NUF9TTEVFUCAnKicgNTBgCisgICAgZWxzZSAKKyAgICAgICAgc2xlZXB0aW1lPWBleHByICRTTk1QX1NMRUVQICcqJyA1YAorICAgIGZpCisgICAgd2hpbGUgWyAkc2xlZXB0aW1lIC1ndCAwIF0gJiYgZXZhbCAiJEAiOyBkbworICAgICAgICBpZiBbICRTTk1QX0NBTl9VU0xFRVAgPSAxIF07IHRoZW4KKyAgICAgICAgICAgIHNsZWVwIC4xCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNsZWVwIDEKKyAgICAgICAgZmkKKyAgICAgICAgc2xlZXB0aW1lPWBleHByICRzbGVlcHRpbWUgLSAxYAorICAgIGRvbmUKK30KKworIyBXYWl0IHVudGlsIHRoZSBzaGVsbCBzdGF0ZW1lbnQgIiRAIiBldmFsdWF0ZXMgdG8gdHJ1ZS4KK1dBSVRGT1JDT05EKCkgeworICAgIFdBSVRGT1JOT1RDT05EIGlmICIkQDsiIHRoZW4gZmFsc2UgIjsiIGVsc2UgdHJ1ZSAiOyIgZmkKK30KKwogV0FJVEZPUkFHRU5UKCkgewogICAgIFdBSVRGT1IgIiRAIiAkU05NUF9TTk1QRF9MT0dfRklMRQorICAgIGlmIFsgJFNOTVBfQ0FOX1VTTEVFUCA9IDEgXTsgdGhlbgorICAgICAgICBzbGVlcCAuMQorICAgIGVsc2UKKyAgICAgICAgc2xlZXAgMQorICAgIGZpCiB9CiAKIFdBSVRGT1JUUkFQRCgpIHsKICAgICBXQUlURk9SICIkQCIgJFNOTVBfU05NUFRSQVBEX0xPR19GSUxFCisgICAgaWYgWyAkU05NUF9DQU5fVVNMRUVQID0gMSBdOyB0aGVuCisgICAgICAgIHNsZWVwIC4xCisgICAgZWxzZQorICAgICAgICBzbGVlcCAxCisgICAgZmkKIH0KIAorIyBXYWl0IHVudGlsIHBhdHRlcm4gIiQxIiBhcHBlYXJzIGluIGZpbGUgIiQyIi4KIFdBSVRGT1IoKSB7Ci0gICMjIHNhdmUgdGhlIHByZXZpb3VzIHNhdmUgc3RhdGUgYW5kIHRlc3QgcmVzdWx0Ci0gICAgc2F2ZV9zdGF0ZT0kT0tfVE9fU0FWRV9SRVNVTFQKLSAgICBzYXZlX3Rlc3Q9JHNubXBfbGFzdF90ZXN0X3Jlc3VsdAotICAgIE9LX1RPX1NBVkVfUkVTVUxUPTAKLQotICAgIHNsZWVwdGltZT0kU05NUF9TTEVFUAotICAgIG9sZHNsZWVwdGltZT0kU05NUF9TTEVFUAotICAgIGlmIFsgIiQxIiAhPSAiIiBdIDsgdGhlbgotCUNBTl9VU0xFRVAKLQlpZiBbICRTTk1QX0NBTl9VU0xFRVAgPSAxIF0gOyB0aGVuCi0JICBzbGVlcHRpbWU9YGV4cHIgJFNOTVBfU0xFRVAgJyonIDUwYAotICAgICAgICAgIFNOTVBfU0xFRVA9LjEKLQllbHNlIAotCSAgc2xlZXB0aW1lPWBleHByICRTTk1QX1NMRUVQICcqJyA1YAotCSAgU05NUF9TTEVFUD0xCi0JZmkKLSAgICAgICAgd2hpbGUgWyAkc2xlZXB0aW1lIC1ndCAwIF0gOyBkbwotCSAgaWYgWyAiJDIiID0gIiIgXSA7IHRoZW4KLSAgICAgICAgICAgIENIRUNLQ09VTlQgbm9lcnJvciAiJEAiCi0gICAgICAgICAgZWxzZQotCSAgICBDSEVDS0ZJTEVDT1VOVCAiJDIiIG5vZXJyb3IgIiQxIgotCSAgZmkKLSAgICAgICAgICBpZiBbICIkc25tcF9sYXN0X3Rlc3RfcmVzdWx0IiAhPSAiIiBdIDsgdGhlbgotICAgICAgICAgICAgICBpZiBbICIkc25tcF9sYXN0X3Rlc3RfcmVzdWx0IiAtZ3QgMCBdIDsgdGhlbgotCSAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICBmaQotCSAgZmkKLSAgICAgICAgICBERUxBWQotICAgICAgICAgIHNsZWVwdGltZT1gZXhwciAkc2xlZXB0aW1lIC0gMWAKLSAgICAgICAgZG9uZQotCi0JIyB0aGUgYWJvdmUgbXVsdGktY2hlY2svc2xlZXAgZG9lc24ndCByZXBvcnQgZXJyb3JzIG91dCBvZiBUQVAKLSAgICAgICAgIyB0aGlzIGZpbmFsIGNoZWNrIHdpbGwgcmVwb3J0IG9ubHkgMSAKLQlpZiBbICIkMiIgPSAiIiBdIDsgdGhlbgotICAgICAgICAgIENIRUNLQ09VTlQgYXRsZWFzdG9uZSAiJEAiCi0gICAgICAgIGVsc2UKLQkgIENIRUNLRklMRUNPVU5UICIkMiIgYXRsZWFzdG9uZSAiJDEiCi0JZmkKLSAgICAgICAgU05NUF9TTEVFUD0kb2xkc2xlZXB0aW1lCi0gICAgZWxzZQotICAgICAgICBpZiBbICRTTk1QX1NMRUVQIC1uZSAwIF0gOyB0aGVuCi0JICAgIHNsZWVwICRTTk1QX1NMRUVQCi0gICAgICAgIGZpCi0gICAgZmkKLQotICAjIyByZXN0b3JlIHRoZSBwcmV2aW91cyBzYXZlIHN0YXRlIGFuZCB0ZXN0IHJlc3VsdAotICAgIE9LX1RPX1NBVkVfUkVTVUxUPSRzYXZlX3N0YXRlCi0gICAgc25tcF9sYXN0X3Rlc3RfcmVzdWx0PSRzYXZlX3Rlc3QKKyAgICBXQUlURk9SQ09ORCBncmVwICIkMSIgIiQyIiAiPi9kZXYvbnVsbCIgIjI+JjEiCiB9CiAKIEdPT0QoKSB7CkBAIC00NTUsMTYgKzQ1Myw2IEBACiAgICAgZWNobyAiIyAkQCIgPj4gJFNOTVBfVE1QRElSL2ludm9rZWQKIH0KIAotIyBXQUlURk9ST1JESUUgImdyZXAgc3RyaW5nIiBbImZpbGUiXQotV0FJVEZPUk9SRElFKCkgewotICAgIFdBSVRGT1IgIiQxIiAiJDIiCi0gICAgaWYgWyAiJHNubXBfbGFzdF90ZXN0X3Jlc3VsdCIgIT0gMCBdIDsgdGhlbgotICAgICAgICBCQUQKLSAgICAgICAgRklOSVNIRUQKLSAgICBmaQotICAgIEdPT0QKLX0KLQogIyBDSEVDS09SRElFICJncmVwIHN0cmluZyIgWyJmaWxlIl0gLi4gRkFJTCBpZiAiZ3JlcCBzdHJpbmciIGlzICpub3QqIGZvdW5kCiBDSEVDS09SRElFKCkgewogICAgIGlmIFsgIngkMiIgPSAieCIgXTsgdGhlbgpAQCAtNTIwLDcgKzUwOCw2IEBACiAjCiAjIGNvbW1vbiB0byBTVEFSVEFHRU5UIGFuZCBTVEFSVFRSQVBECiAjIGxvZyBjb21tYW5kIHRvICJpbnZva2VkIiBmaWxlCi0jIGRlbGF5IGFmdGVyIGNvbW1hbmQgdG8gYWxsb3cgZm9yIHNldHRsZQogIwogU1RBUlRQUk9HKCkgewogICAgIGlmIFsgIngkRFlOQU1JQ19BTkFMWVpFUiIgIT0gIngiIF07IHRoZW4KQEAgLTU2OCw3ICs1NTUsOCBAQAogICAgICAgICBQT1JUX1NQRUM9IiR7U05NUF9UUkFOU1BPUlRfU1BFQ306JHtTTk1QX1RFU1RfREVTVH0ke1BPUlRfU1BFQ30iCiAgICAgZmkKICAgICBTVEFSVFBST0cKLSAgICBXQUlURk9SQUdFTlQgIk5FVC1TTk1QIHZlcnNpb24iCisgICAgV0FJVEZPUkNPTkQgdGVzdCAtZiAkU05NUF9TTk1QRF9QSURfRklMRQorICAgIFdBSVRGT1JBR0VOVCAiTkVULVNOTVAudmVyc2lvbiIKIH0KIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtby0KQEAgLTU4Miw3ICs1NzAsOCBAQAogICAgICAgICBQT1JUX1NQRUM9IiR7U05NUF9UUkFOU1BPUlRfU1BFQ306JHtTTk1QX1RFU1RfREVTVH0ke1BPUlRfU1BFQ30iCiAgICAgZmkKICAgICBTVEFSVFBST0cKLSAgICBXQUlURk9SVFJBUEQgIk5FVC1TTk1QIHZlcnNpb24iCisgICAgV0FJVEZPUkNPTkQgdGVzdCAtZiAkU05NUF9TTk1QVFJBUERfUElEX0ZJTEUKKyAgICBXQUlURk9SVFJBUEQgIk5FVC1TTk1QLnZlcnNpb24iCiB9CiAKICMjIHNlbmRpbmcgU0lHSFVQIGZvciByZWNvbmZpZ3VyYXRpb24KQEAgLTU5NSw2ICs1ODQsNyBAQAogICAgICAgICAgIENPTU1BTkQ9ImtpbGwgLUhVUCBgY2F0ICQxYCIKICAgICAgICAgZmkKIAllY2hvICRDT01NQU5EID4+ICRTTk1QX1RNUERJUi9pbnZva2VkCisJVkVSQk9TRV9PVVQgMCAkQ09NTUFORAogCSRDT01NQU5EID4gL2Rldi9udWxsIDI+JjEKICAgICBmaQogfQpAQCAtNjE5LDE0ICs2MDksMTMgQEAKICMgICAgdGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCBmb3IgaW50ZXJhY3Rpb24gYmV0d2VlbgogIyAgICBtYXN0ZXIgYWdlbnQgYW5kIHN1YiBhZ2VudC4KIFNUT1BQUk9HKCkgewotICAgIGlmIFsgLWYgJDEgXTsgdGhlbgotICAgICAgICBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF07IHRoZW4KLSAgICAgICAgICBDT01NQU5EPSJwc2tpbGwuZXhlIGBjYXQgJDFgIgotICAgICAgICBlbHNlCi0gICAgICAgICAgQ09NTUFORD0ia2lsbCAtVEVSTSBgY2F0ICQxYCIKLSAgICAgICAgZmkKLQllY2hvICRDT01NQU5EID4+ICRTTk1QX1RNUERJUi9pbnZva2VkCi0JJENPTU1BTkQgPiAvZGV2L251bGwgMj4mMQorICAgIHBpZD0iYGNhdCAkMSAyPi9kZXYvbnVsbGAiCisgICAgaWYgWyAieCRwaWQiICE9ICJ4IiBdOyB0aGVuCisJQ09NTUFORD0iYEVDSE9TRU5EU0lHVEVSTSAkcGlkYCIKKwllY2hvICIkQ09NTUFORCAoJDEpIiA+PiAkU05NUF9UTVBESVIvaW52b2tlZAorCVZFUkJPU0VfT1VUIDAgIiRDT01NQU5EICgkMSkiCisgICAgICAgICRDT01NQU5EID4vZGV2L251bGwgMj4mMQorICAgICAgICBXQUlURk9STk9UQ09ORCAiSVNSVU5OSU5HICRwaWQiCiAgICAgZmkKIH0KIApAQCAtNjM1LDcgKzYyNCw2IEBACiBTVE9QQUdFTlQoKSB7CiAgICAgU0FWRV9SRVNVTFRTCiAgICAgU1RPUFBST0cgJFNOTVBfU05NUERfUElEX0ZJTEUKLSAgICBXQUlURk9SQUdFTlRTSFVUVElOR0RPV04KICAgICBpZiBbICRTTk1QX1ZFUkJPU0UgLWd0IDEgXTsgdGhlbgogCWVjaG8gIkFnZW50IE91dHB1dDoiCiAJZWNobyAiJHNlcGFyYXRvciBbc3Rkb3V0XSIKQEAgLTY1MSw5ICs2MzksNiBAQAogU1RPUFRSQVBEKCkgewogICAgIFNBVkVfUkVTVUxUUwogICAgIFNUT1BQUk9HICRTTk1QX1NOTVBUUkFQRF9QSURfRklMRQotICAgIGlmIFsgIngkT1NUWVBFIiAhPSAieG1zeXMiIF07IHRoZW4KLSAgICAgICAgV0FJVEZPUlRSQVBEICJTdG9wcGVkIgotICAgIGZpCiAgICAgaWYgWyAkU05NUF9WRVJCT1NFIC1ndCAxIF07IHRoZW4KIAllY2hvICJzbm1wdHJhcGQgT3V0cHV0OiIKIAllY2hvICIkc2VwYXJhdG9yIFtzdGRvdXRdIgpAQCAtNjcxLDMzICs2NTYsMTkgQEAKICAgICAjIyBubyBtb3JlIGNoYW5nZXMgdG8gdGVzdCByZXN1bHQuCiAgICAgT0tfVE9fU0FWRV9SRVNVTFQ9MAogCisgICAgcGlkcz0iYGNhdCAkU05NUF9UTVBESVIvKnBpZCogMj4vZGV2L251bGxgIgogICAgIGlmIFsgIiRTTk1QRFNUQVJURUQiID0gIjEiIF0gOyB0aGVuCiAgICAgICBTVE9QQUdFTlQKICAgICBmaQogICAgIGlmIFsgIiRUUkFQRFNUQVJURUQiID0gIjEiIF0gOyB0aGVuCiAgICAgICBTVE9QVFJBUEQKICAgICBmaQotICAgIGZvciBwZmlsZSBpbiAkU05NUF9UTVBESVIvKnBpZCogOyBkbwotICAgICAgICBpZiBbICJ4JHBmaWxlIiA9ICJ4JFNOTVBfVE1QRElSLypwaWQqIiBdOyB0aGVuCi0gICAgICAgICAgICBCQUQgIihubyBwaWQgZmlsZShzKSBmb3VuZCkgIgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZmkKLSAgICAgICAgaWYgWyAhIC1mICRwZmlsZSBdOyB0aGVuCi0gICAgICAgICAgICBCQUQgIignJHBmaWxlJyBkaXNhcHBlYXJlZCkgIgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZmkKLQlwaWQ9YGNhdCAkcGZpbGVgCi0gICAgICAgICMgV2hlbiBub3QgcnVubmluZyBvbiBNaW5HVywgY2hlY2sgd2hldGhlciBzbm1wZCBpcyBzdGlsbCBydW5uaW5nLgotICAgICAgICBpZiBbICJ4JE9TVFlQRSIgPSAieG1zeXMiIF0gfHwgeyBwcyAtZSAyPi9kZXYvbnVsbCB8IGVncmVwICJeWwkgXSokcGlkWwkgXSsiID4gL2Rldi9udWxsIDI+JjE7IH07IHRoZW4KLSAgICAgICAgICAgIGlmIFsgIngkT1NUWVBFIiAhPSAieG1zeXMiIF07IHRoZW4KLSAgICAgICAgICAgICAgICBTTk1QX1NBVkVfVE1QRElSPXllcwotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIGlmIFsgIngkT1NUWVBFIiA9ICJ4bXN5cyIgXTsgdGhlbgotICAgICAgICAgICAgICBDT01NQU5EPSJwc2tpbGwuZXhlICRwaWQiCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIENPTU1BTkQ9ImtpbGwgLTkgJHBpZCIKLSAgICAgICAgICAgIGZpCi0JICAgIGVjaG8gJENPTU1BTkQgIigkcGZpbGUpIiA+PiAkU05NUF9UTVBESVIvaW52b2tlZAorICAgIGZvciBwaWQgaW4gJHBpZHM7IGRvCisgICAgICAgIGlmIElTUlVOTklORyAkcGlkOyB0aGVuCisJICAgIFNOTVBfU0FWRV9UTVBESVI9eWVzCisJICAgIENPTU1BTkQ9ImBFQ0hPU0VORFNJR0tJTEwgJHBpZGAiCisJICAgIGVjaG8gIiRDT01NQU5EICgkcGZpbGUpIiA+PiAkU05NUF9UTVBESVIvaW52b2tlZAorCSAgICBWRVJCT1NFX09VVCAwICIkQ09NTUFORCAoJHBmaWxlKSIKIAkgICAgJENPTU1BTkQgPiAvZGV2L251bGwgMj4mMQogCSAgICByZXR1cm5fdmFsdWU9MQogCWZpCkBAIC03MjgsNyArNjk5LDcgQEAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLW8tCiAjCiBWRVJCT1NFX09VVCgpIHsKLSAgICBpZiBbICRTTk1QX1ZFUkJPU0UgPiAkMSBdOyB0aGVuCisgICAgaWYgWyAkU05NUF9WRVJCT1NFIC1ndCAkMSBdOyB0aGVuCiAJc2hpZnQKIAllY2hvICIkKiIKICAgICBmaQpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfcnVuIGIvdGVzdGluZy9mdWxsdGVzdHMvc3VwcG9ydC9zaW1wbGVfcnVuCmluZGV4IGViMzdlOTYuLjE5NzgwMDkgMTAwNzU1Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL3N1cHBvcnQvc2ltcGxlX3J1bgorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy9zdXBwb3J0L3NpbXBsZV9ydW4KQEAgLTExLDcgKzExLDggQEAKICAgICBpZiBjZCB0ZXN0aW5nIDI+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgOgogICAgIGVsc2UKLSAgICAgICBlY2hvICJFcnJvcjogJDAgbXVzdCBiZSBzdGFydGVkIGZyb20gaW5zaWRlIHRoZSB0ZXN0aW5nIGRpcmVjdG9yeS4iCisgICAgICAgZWNobyAiRXJyb3I6ICQwIG11c3QgYmUgc3RhcnRlZCBmcm9tIGluc2lkZSB0aGUgdGVzdGluZyBkaXJlY3RvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLiIKKyAgICAgICBlY2hvICJUaGUgYnVpbGRkaXIgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHNldCB0byBwb2ludCB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiIKICAgICAgICBleGl0IDEKICAgICBmaQogZmkKQEAgLTI0LDcgKzI1LDggQEAKICAgICBpZiBjZCB0ZXN0aW5nIDI+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgOgogICAgIGVsc2UKLSAgICAgICBlY2hvICJFcnJvcjogJDAgbXVzdCBiZSBzdGFydGVkIGZyb20gaW5zaWRlIHRoZSB0ZXN0aW5nIGRpcmVjdG9yeS4iCisgICAgICAgZWNobyAiRXJyb3I6ICQwIG11c3QgYmUgc3RhcnRlZCBmcm9tIGluc2lkZSB0aGUgdGVzdGluZyBkaXJlY3RvcnkgaW4gdGhlIHNvdXJjZSB0cmVlLiIKKyAgICAgICBlY2hvICJUaGUgYnVpbGRkaXIgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIGJlIHNldCB0byBwb2ludCB0byB0aGUgYnVpbGQgZGlyZWN0b3J5LiIKICAgICAgICBleGl0IDEKICAgICBmaQogZmkKQEAgLTQ3LDcgKzQ5LDEyIEBACiBleHBvcnQgU05NUF9PUklHRElSCiAKIFNOTVBfVVBESVI9JHtidWlsZGRpcn0gICAgICAgICAgIyMgYnVpbGQgZGlyZWN0b3J5Ci1TTk1QX1NMRUVQPSR7U05NUF9TTEVFUDo9MX0gCSMjIGRlZmF1bHQgc2Vjb25kcyB0byBzbGVlcAoraWYgWyAieCREWU5BTUlDX0FOQUxZWkVSIiA9ICJ4IiBdOyB0aGVuCisgICAgU05NUF9TTEVFUF9ERUZBVUxUPTEKK2Vsc2UKKyAgICBTTk1QX1NMRUVQX0RFRkFVTFQ9MTAKK2ZpCitTTk1QX1NMRUVQPSR7U05NUF9TTEVFUDo9JFNOTVBfU0xFRVBfREVGQVVMVH0gCSMjIGRlZmF1bHQgc2Vjb25kcyB0byBzbGVlcAogZXhwb3J0IFNOTVBfU0xFRVAKIAogIyBGaW5kIGV4ZWN1dGFibGVzIGluIHNvdXJjZSBmaXJzdCwgdGhlbiBidWlsZCwgdGhlbiBleGlzdGluZyBQQVRILgpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA0c25tcF9lbnVtX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNHNubXBfZW51bV9jbGliLmMKaW5kZXggNzJlZTVjOS4uZDI4YjE5YiAxMDA2NDQKLS0tIGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA0c25tcF9lbnVtX2NsaWIuYworKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDRzbm1wX2VudW1fY2xpYi5jCkBAIC04NywxMCArODcsMTAgQEAKIE9LKHNlX2ZpbmRfbGlzdCgyLCAzKSwgImxpc3QgKDIsIDMpIHNob3VsZCBiZSBwcmVzZW50Iik7CiBpZiAoc2VfZmluZF9saXN0KDIsIDMpKSB7CiAgIE9LKHNlX2ZpbmRfdmFsdWUoMiwgMywgImtpd2lmcnVpdCIpID09IDMsCi0gICAgICJsb29rdXAgYnkgc3RyaW5nIHNob3VsZCByZXR1cm4gdGhlIHByb3BlciB2YWx1ZSIpCisgICAgICJsb29rdXAgYnkgc3RyaW5nIHNob3VsZCByZXR1cm4gdGhlIHByb3BlciB2YWx1ZSIpOwogICBzZV9maW5kX3Jlc3VsdCA9IHNlX2ZpbmRfbGFiZWwoMiwgMywgMik7CiAgIE9LKHNlX2ZpbmRfcmVzdWx0ICYmIHN0cmNtcChzZV9maW5kX3Jlc3VsdCwgInBlYXIiKSA9PSAwLAotICAgICAibG9va3VwIGJ5IGxhYmVsIHNob3VsZCByZXR1cm4gdGhlIHByb3BlciBzdHJpbmciKQorICAgICAibG9va3VwIGJ5IGxhYmVsIHNob3VsZCByZXR1cm4gdGhlIHByb3BlciBzdHJpbmciKTsKIH0KIAogc2VfcmVhZF9jb25mKCJlbnVtIiwKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNXRhYmxlX2RhdGFzZXRfY2FnZW50bGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDV0YWJsZV9kYXRhc2V0X2NhZ2VudGxpYi5jCmluZGV4IGY5MDZjNTUuLjcxNTY0MWEgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNXRhYmxlX2RhdGFzZXRfY2FnZW50bGliLmMKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA1dGFibGVfZGF0YXNldF9jYWdlbnRsaWIuYwpAQCAtMTUsNiArMTUsOSBAQAogaW50MzJfdCBpdmFsOwogaW50MzJfdCBpLCBqOwogCitTT0NLX1NUQVJUVVA7CisKK2luaXRfYWdlbnQoInNubXBkIik7CiBpbml0X3NubXAoInNubXBkIik7CiAKIHRkcyA9IG5ldHNubXBfY3JlYXRlX3RhYmxlX2RhdGFfc2V0KCJ0YWJsZV9kYXRhc2V0IHVuaXQtdGVzdCIpOwpAQCAtNTIsNSArNTUsOCBAQAogbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQodGRzKTsKIAogc25tcF9zaHV0ZG93bigic25tcGQiKTsKK3NodXRkb3duX2FnZW50KCk7CisKK1NPQ0tfQ0xFQU5VUDsKIAogT0soVFJVRSwgImRvbmUiKTsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2FnZW50bGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDZzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jCmluZGV4IGFlZjQyZDEuLmVkN2FlNjggMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAwNnNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY2FnZW50bGliLmMKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA2c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jYWdlbnRsaWIuYwpAQCAtMSwyNCArMSw0MSBAQAogLyogSEVBREVSIFRlc3RpbmcgU05NUCBoYW5kbGVyIHJlZ2lzdHJhdGlvbiAqLwogCiBzdGF0aWMgb2lkIE9pZFtdID0geyAxLCAzLCA2LCAxLCAzLCAzMjcgfTsgLyogZXhwZXJpbWVudGFsLjMyNyAqLwotbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqaGFuZGxlcjsKLW5ldHNubXBfbWliX2hhbmRsZXIgKmRoID0gTlVMTDsKK25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKmhhbmRsZXIsICpoYW5kbGVyMjsKK25ldHNubXBfbWliX2hhbmRsZXIgKmRoOworbmV0c25tcF9jYWNoZSAqbmMsICpuYzI7CiAKIGluaXRfc25tcCgic25tcCIpOwogCiBoYW5kbGVyID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImV4cGVyaW1lbnRhbC4zMjciLCBOVUxMLAogCU9pZCwgT0lEX0xFTkdUSChPaWQpLCBIQU5ETEVSX0NBTl9SV1JJVEUpOwogT0soaGFuZGxlciAhPSBOVUxMLCAiSGFuZGxlciBjcmVhdGlvbi4iKTsKLWhhbmRsZXItPmhhbmRsZXItPm15dm9pZCA9IG1hbGxvYygzMjkpOwotaGFuZGxlci0+aGFuZGxlci0+ZGF0YV9mcmVlID0gZnJlZTsKKworbmMgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgxMCwgTlVMTCwgTlVMTCwgT2lkLCBPSURfTEVOR1RIKE9pZCkpOworT0sobmMsICJuZXRzbm1wX2NhY2hlIGFsbG9jYXRpb24iKTsKK09LKHNubXBfb2lkX2NvbXBhcmUobmMtPnJvb3RvaWQsIG5jLT5yb290b2lkX2xlbiwgT2lkLCBPSURfTEVOR1RIKE9pZCkpID09IDAsCisgICAiSGFuZGxlciBwcml2YXRlIE9JRC4iKTsKKworaGFuZGxlci0+aGFuZGxlci0+bXl2b2lkID0gbmM7CituZXRzbm1wX2NhY2hlX2hhbmRsZXJfb3duc19jYWNoZShoYW5kbGVyLT5oYW5kbGVyKTsKKworbmMyID0gaGFuZGxlci0+aGFuZGxlci0+bXl2b2lkOworT0sobmMyLCAiSGFuZGxlciBwcml2YXRlIGRhdGEiKTsKK09LKHNubXBfb2lkX2NvbXBhcmUobmMyLT5yb290b2lkLCBuYzItPnJvb3RvaWRfbGVuLCBPaWQsIE9JRF9MRU5HVEgoT2lkKSkgPT0gMCwKKyAgICJIYW5kbGVyIHByaXZhdGUgT0lELiIpOwogCiBPSyhuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKGhhbmRsZXIpID09IE1JQl9SRUdJU1RFUkVEX09LLAogICAgIk1JQiByZWdpc3RyYXRpb24uIik7CiAKLSNpZiAwCitoYW5kbGVyMiA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJleHBlcmltZW50YWwuMzI3IiwgTlVMTCwKKyAgICAgICAgT2lkLCBPSURfTEVOR1RIKE9pZCksIEhBTkRMRVJfQ0FOX1JXUklURSk7CitPSyhoYW5kbGVyMiAhPSBOVUxMLCAiU2Vjb25kIHJlZ2lzdHJhdGlvbiIpOworCitPSyhuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKGhhbmRsZXIyKSA9PSBNSUJfRFVQTElDQVRFX1JFR0lTVFJBVElPTiwKKyAgICJEdXBsaWNhdGUgTUlCIHJlZ2lzdHJhdGlvbi4iKTsKKwogZGggPSBuZXRzbm1wX2hhbmRsZXJfZHVwKGhhbmRsZXItPmhhbmRsZXIpOwogT0soZGgsICJIYW5kbGVyIGR1cGxpY2F0aW9uLiIpOwotI2VuZGlmCiAKIE9LKG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKGhhbmRsZXIpID09IFNOTVBFUlJfU1VDQ0VTUywKICAgICJIYW5kbGVyIHVucmVnaXN0cmF0aW9uLiIpOwpkaWZmIC0tZ2l0IGEvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDA4YXNuMV9jbGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDhhc24xX2NsaWIuYwppbmRleCA3M2JiNTExLi5iOTQ3MTRhIDEwMDY0NAotLS0gYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDhhc24xX2NsaWIuYworKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMDhhc24xX2NsaWIuYwpAQCAtMTM1LDcgKzEzNSw3IEBACiAJdV9jaGFyICpidWlsZF9yZXN1bHQ7CiAJc2l6ZV90IGRlY29kZWRfbGVuZ3RoOwogCXVfY2hhciBkZWNvZGVkX3R5cGU7Ci0Jc3RydWN0IGNvdW50ZXI2NCBkZWNvZGVkX3ZhbHVlID0geyB9OworCXN0cnVjdCBjb3VudGVyNjQgZGVjb2RlZF92YWx1ZSA9IHsgMCB9OwogCXVfY2hhciAqcGFyc2VfcmVzdWx0OwogICAgICAgICB1X2NoYXIgKnJidWlsZF9yZXN1bHQgPSBOVUxMOwogICAgICAgICBzaXplX3QgcmJ1aWxkX2xlbiA9IDA7CkBAIC0yMDEsNyArMjAxLDcgQEAKIAl1X2NoYXIgKmJ1aWxkX3Jlc3VsdDsKIAlzaXplX3QgZGVjb2RlZF9sZW5ndGg7CiAJdV9jaGFyIGRlY29kZWRfdHlwZTsKLQlzdHJ1Y3QgY291bnRlcjY0IGRlY29kZWRfdmFsdWUgPSB7IH07CisJc3RydWN0IGNvdW50ZXI2NCBkZWNvZGVkX3ZhbHVlID0geyAwIH07CiAJdV9jaGFyICpwYXJzZV9yZXN1bHQ7CiAgICAgICAgIHVfY2hhciAqcmJ1aWxkX3Jlc3VsdCA9IE5VTEw7CiAgICAgICAgIHNpemVfdCByYnVpbGRfbGVuID0gMDsKQEAgLTI0Niw3ICsyNDYsNyBAQAogCXVfY2hhciAqYnVpbGRfcmVzdWx0OwogCXNpemVfdCBkZWNvZGVkX2xlbmd0aDsKIAl1X2NoYXIgZGVjb2RlZF90eXBlOwotCXN0cnVjdCBjb3VudGVyNjQgZGVjb2RlZF92YWx1ZSA9IHsgfTsKKwlzdHJ1Y3QgY291bnRlcjY0IGRlY29kZWRfdmFsdWUgPSB7IDAgfTsKIAl1X2NoYXIgKnBhcnNlX3Jlc3VsdDsKICAgICAgICAgdV9jaGFyICpyYnVpbGRfcmVzdWx0ID0gTlVMTDsKICAgICAgICAgc2l6ZV90IHJidWlsZF9sZW4gPSAwOwpAQCAtMjg5LDcgKzI4OSw3IEBACiAJdV9jaGFyICpidWlsZF9yZXN1bHQ7CiAJc2l6ZV90IGRlY29kZWRfbGVuZ3RoOwogCXVfY2hhciBkZWNvZGVkX3R5cGU7Ci0Jc3RydWN0IGNvdW50ZXI2NCBkZWNvZGVkX3ZhbHVlID0geyB9OworCXN0cnVjdCBjb3VudGVyNjQgZGVjb2RlZF92YWx1ZSA9IHsgMCB9OwogCXVfY2hhciAqcGFyc2VfcmVzdWx0OwogICAgICAgICB1X2NoYXIgKnJidWlsZF9yZXN1bHQgPSBOVUxMOwogICAgICAgICBzaXplX3QgcmJ1aWxkX2xlbiA9IDA7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTBuZXRzbm1wX3N0cmluZ190aW1lX3RvX3NlY3NfY2xpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDEwbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzX2NsaWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzFhZWViCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDEwbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzX2NsaWIuYwpAQCAtMCwwICsxLDQ1IEBACisvKiBIRUFERVIgVGVzdGluZyB0aGUgbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzIEFQSSAqLworaW50IHNlY3M7CisKKyNkZWZpbmUgVEVTVElUKHgseSkgXAorICAgIE9LRih5ID09IChzZWNzID0gbmV0c25tcF9zdHJpbmdfdGltZV90b19zZWNzKHgpKSwgXAorICAgICAgICAoIm5ldHNubXBfc3RyaW5nX3RpbWVfdG9fc2VjcyBvZiAlcyByZXR1cm5lZCAlZCwgbm90IDUiLCB4LCBzZWNzKSkKKworVEVTVElUKCI1IiwgNSk7CitURVNUSVQoIjUiLCA1KTsKKworVEVTVElUKCI1cyIsIDUpOworVEVTVElUKCI1UyIsIDUpOworCitURVNUSVQoIjVtIiwgNSAqIDYwKTsKK1RFU1RJVCgiNU0iLCA1ICogNjApOworCitURVNUSVQoIjVoIiwgNSAqIDYwICogNjApOworVEVTVElUKCI1SCIsIDUgKiA2MCAqIDYwKTsKKworVEVTVElUKCI1ZCIsIDUgKiA2MCAqIDYwICogMjQpOworVEVTVElUKCI1RCIsIDUgKiA2MCAqIDYwICogMjQpOworCitURVNUSVQoIjV3IiwgNSAqIDYwICogNjAgKiAyNCAqIDcpOworVEVTVElUKCI1VyIsIDUgKiA2MCAqIDYwICogMjQgKiA3KTsKKworLyogbm93IHdpdGggbG9uZ2VyIHRpbWVzICovCitURVNUSVQoIjEyMzQiLCAxMjM0KTsKK1RFU1RJVCgiMTIzNCIsIDEyMzQpOworCitURVNUSVQoIjEyMzRzIiwgMTIzNCk7CitURVNUSVQoIjEyMzRTIiwgMTIzNCk7CisKK1RFU1RJVCgiMTIzNG0iLCAxMjM0ICogNjApOworVEVTVElUKCIxMjM0TSIsIDEyMzQgKiA2MCk7CisKK1RFU1RJVCgiMTIzNGgiLCAxMjM0ICogNjAgKiA2MCk7CitURVNUSVQoIjEyMzRIIiwgMTIzNCAqIDYwICogNjApOworCitURVNUSVQoIjEyMzRkIiwgMTIzNCAqIDYwICogNjAgKiAyNCk7CitURVNUSVQoIjEyMzREIiwgMTIzNCAqIDYwICogNjAgKiAyNCk7CisKK1RFU1RJVCgiMTIzNHciLCAxMjM0ICogNjAgKiA2MCAqIDI0ICogNyk7CitURVNUSVQoIjEyMzRXIiwgMTIzNCAqIDYwICogNjAgKiAyNCAqIDcpOworCisKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMXNubXBfb2xkX2FwaV9yZWdpc3RyYXRpb25fY2FnZW50bGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTFzbm1wX29sZF9hcGlfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMWQ0NDkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTFzbm1wX29sZF9hcGlfcmVnaXN0cmF0aW9uX2NhZ2VudGxpYi5jCkBAIC0wLDAgKzEsNDYgQEAKKy8qIEhFQURFUiBUZXN0aW5nIFNOTVAgaGFuZGxlciByZWdpc3RyYXRpb24gdmlhIHRoZSBvbGQgQVBJICovCisKK3N0YXRpYyBvaWQgT2lkW10gPSB7IDEsIDMsIDYsIDEsIDMsIDMyNyB9OyAvKiBleHBlcmltZW50YWwuMzI3ICovCitzdHJ1Y3QgdmFyaWFibGUgdmFyX2FycmF5W10gPSB7CisgICAgeyAwLCAwLyp0eXBlKi8sIDAvKmFjbCovLCBOVUxMLypmaW5kVmFyKi8sIDcsIHsgMSwgMywgNiwgMSwgMywgMzI3LCAxIH0gfSwKKyAgICB7IDAsIDAvKnR5cGUqLywgMC8qYWNsKi8sIE5VTEwvKmZpbmRWYXIqLywgNywgeyAxLCAzLCA2LCAxLCAzLCAzMjcsIDIgfSB9LAorICAgIHsgMCwgMC8qdHlwZSovLCAwLyphY2wqLywgTlVMTC8qZmluZFZhciovLCA3LCB7IDEsIDMsIDYsIDEsIDMsIDMyNywgMyB9IH0sCit9OworbmV0c25tcF9zZXNzaW9uICpzZXNzOworaW50IHJlczsKKworaW5pdF9zbm1wKCJzbm1wIik7CisKK3Nlc3MgPSBjYWxsb2MoMSwgc2l6ZW9mKCpzZXNzKSk7Citzbm1wX3Nlc3NfaW5pdChzZXNzKTsKKworcmVzID0gCituZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoImV4cC4zMjcuYSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX2FycmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2YXJfYXJyYXlbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih2YXJfYXJyYXkpL3NpemVvZih2YXJfYXJyYXlbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIE9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoT2lkKS9zaXplb2YoT2lkWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAyLCAvKiBwcmlvcml0eSAqLworICAgICAgICAgICAgICAgICAgICAgICAgIDAsIC8qIHJhbmdlX3N1YmlkICovCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogcmFuZ2VfdWJvdW5kICovCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGV4dCIsIDUvKnRpbWVvdXQqLywgMC8qZmxhZ3MgLSBpZ25vcmVkKi8pOworT0socmVzID09IFNOTVBFUlJfU1VDQ0VTUywgIkhhbmRsZXIgcmVnaXN0cmF0aW9uICgxKS4iKTsKKworLyogVmVyaWZ5IHRoYXQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiBkb2VzIG5vdCBjYXVzZSBhbnkgaGF2b2MuICovCityZXMgPSAKK25ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSgiZXhwLjMyNy5iIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfYXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZhcl9hcnJheVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHZhcl9hcnJheSkvc2l6ZW9mKHZhcl9hcnJheVswXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgT2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihPaWQpL3NpemVvZihPaWRbMF0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIDIsIC8qIHByaW9yaXR5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgMCwgLyogcmFuZ2Vfc3ViaWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAwLCAvKiByYW5nZV91Ym91bmQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb250ZXh0IiwgNS8qdGltZW91dCovLCAwLypmbGFncyAtIGlnbm9yZWQqLyk7CitPSyhyZXMgPT0gU05NUEVSUl9TVUNDRVNTLCAiSGFuZGxlciByZWdpc3RyYXRpb24gKDIpLiIpOworCitzbm1wX3NodXRkb3duKCJzbm1wIik7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTJiaW5hcnlfYXJyYXlfb2lkX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxMmJpbmFyeV9hcnJheV9vaWRfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZWI1MDIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTJiaW5hcnlfYXJyYXlfb2lkX2NsaWIuYwpAQCAtMCwwICsxLDcyIEBACisvKiBIRUFERVIgVGVzdGluZyBiaW5hcnkgT0lEIGFycmF5ICovCisKK3N0YXRpYyBjb25zdCBjaGFyIHRlc3RfbmFtZVtdID0gImJpbmFyeS1hcnJheS1vZi1PSURzLXRlc3QiOworb2lkIG8xID0gMTsKK29pZCBvMiA9IDI7CitvaWQgbzMgPSA2Oworb2lkIG80ID0gODsKK29pZCBvNSA9IDk7CitvaWQgb3ggPSA3Oworb2lkIG95ID0gMTA7CituZXRzbm1wX2luZGV4IGkxLCBpMiwgaTMsIGk0LCBpNSwgaXgsIGl5LCAqaXA7Citjb25zdCBuZXRzbm1wX2luZGV4ICpjb25zdCBpX2xhc3QgPSAmaTU7CituZXRzbm1wX2luZGV4ICphW10gPSB7ICZpeCwgJml5IH07CituZXRzbm1wX2luZGV4ICpiW10gPSB7ICZpNCwgJmkyLCAmaTMsICZpMSwgJmk1IH07CituZXRzbm1wX2NvbnRhaW5lciAqYzsKK2ludCBpOworCitpbml0X3NubXAodGVzdF9uYW1lKTsKKworYyA9IG5ldHNubXBfY29udGFpbmVyX2dldF9iaW5hcnlfYXJyYXkoKTsKK2MtPmNvbXBhcmUgPSBuZXRzbm1wX2NvbXBhcmVfbmV0c25tcF9pbmRleDsKKyAgICAKK2kxLm9pZHMgPSAmbzE7CitpMi5vaWRzID0gJm8yOworaTMub2lkcyA9ICZvMzsKK2k0Lm9pZHMgPSAmbzQ7CitpNS5vaWRzID0gJm81OworaXgub2lkcyA9ICZveDsKK2l5Lm9pZHMgPSAmb3k7CitpMS5sZW4gPSBpMi5sZW4gPSBpMy5sZW4gPSBpNC5sZW4gPSBpNS5sZW4gPSBpeC5sZW4gPSBpeS5sZW4gPSAxOworCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGIpL3NpemVvZihiWzBdKTsgKytpKQorICAgIENPTlRBSU5FUl9JTlNFUlQoYywgYltpXSk7CisKK2ZvciAoaXAgPSBDT05UQUlORVJfRklSU1QoYyk7IGlwOyBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGlwKSkgeworICAgIGZvciAoaSA9IHNpemVvZihiKS9zaXplb2YoYlswXSkgLSAxOyBpID49IDA7IC0taSkKKyAgICAgICAgaWYgKGMtPmNvbXBhcmUoaXAsIGJbaV0pID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICBPS0YoaSA+PSAwLCAoIk9JRCBiWyVkXSA9ICUiIE5FVFNOTVBfUFJJbyAiZCBwcmVzZW50IiwgaSwgYltpXS0+b2lkc1swXSkpOworfQorCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGIpL3NpemVvZihiWzBdKTsgKytpKSB7CisgICAgaXAgPSBDT05UQUlORVJfRklORChjLCBiW2ldKTsKKyAgICBPS0YoaXAsICgiVmFsdWUgYlslZF0gPSAlIiBORVRTTk1QX1BSSW8gImQgcHJlc2VudCIsIGksIGJbaV0tPm9pZHNbMF0pKTsKKyAgICBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGJbaV0pOworICAgIGlmIChjLT5jb21wYXJlKGJbaV0sIGlfbGFzdCkgPCAwKQorICAgICAgICBPS0YoaXAgJiYgYy0+Y29tcGFyZShiW2ldLCBpcCkgPCAwLAorICAgICAgICAgICAgKCJTdWNjZXNzb3Igb2YgYlslZF0gPSAlIiBORVRTTk1QX1BSSW8gImQgaXMgJSIgTkVUU05NUF9QUklvICJkIiwKKyAgICAgICAgICAgICBpLCBiW2ldLT5vaWRzWzBdLCBpcC0+b2lkc1swXSkpOworICAgIGVsc2UKKyAgICAgICAgT0tGKCFpcCwgKCJObyBzdWNjZXNzb3IgZm91bmQgZm9yIGJbJWRdID0gJSIgTkVUU05NUF9QUklvICJkIiwgaSwKKyAgICAgICAgICAgICAgICAgIGJbaV0tPm9pZHNbMF0pKTsKK30KKworZm9yIChpID0gMDsgaSA8IHNpemVvZihhKS9zaXplb2YoYVswXSk7ICsraSkgeworICAgIGlwID0gQ09OVEFJTkVSX0ZJTkQoYywgYVtpXSk7CisgICAgT0tGKCFpcCwgKCJhWyVkXSA9ICUiIE5FVFNOTVBfUFJJbyAiZCBhYnNlbnQiLCBpLCBhW2ldLT5vaWRzWzBdKSk7CisgICAgaXAgPSBDT05UQUlORVJfTkVYVChjLCBhW2ldKTsKKyAgICBpZiAoYy0+Y29tcGFyZShhW2ldLCBpX2xhc3QpIDwgMCkKKyAgICAgICAgT0tGKGlwICYmIGMtPmNvbXBhcmUoaXAsIGFbaV0pID4gMCwKKyAgICAgICAgICAgICgiU3VjY2Vzc29yIG9mIGFbJWRdID0gJSIgTkVUU05NUF9QUklvICJkIGlzICUiIE5FVFNOTVBfUFJJbyAiZCIsCisgICAgICAgICAgICAgaSwgYVtpXS0+b2lkc1swXSwgaXAtPm9pZHNbMF0pKTsKKyAgICBlbHNlCisgICAgICAgIE9LRighaXAsICgiTm8gc3VjY2Vzc29yIGZvdW5kIGZvciBhWyVkXSA9ICUiIE5FVFNOTVBfUFJJbyAiZCIsIGksCisgICAgICAgICAgICAgICAgICBhW2ldLT5vaWRzWzBdKSk7Cit9CisKK3doaWxlICgoaXAgPSBDT05UQUlORVJfRklSU1QoYykpKQorICBDT05UQUlORVJfUkVNT1ZFKGMsIGlwKTsKK0NPTlRBSU5FUl9GUkVFKGMpOworCitzbm1wX3NodXRkb3duKHRlc3RfbmFtZSk7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTNiaW5hcnlfYXJyYXlfc3RyaW5nX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxM2JpbmFyeV9hcnJheV9zdHJpbmdfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNDM2MWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTNiaW5hcnlfYXJyYXlfc3RyaW5nX2NsaWIuYwpAQCAtMCwwICsxLDU5IEBACisvKiBIRUFERVIgVGVzdGluZyBiaW5hcnkgc3RyaW5nIGFycmF5ICovCisKK3N0YXRpYyBjb25zdCBjaGFyIHRlc3RfbmFtZVtdID0gImJpbmFyeS1hcnJheS1vZi1zdHJpbmdzLXRlc3QiOworY29uc3QgY2hhciBvMVtdID0gInplYnJhIjsKK2NvbnN0IGNoYXIgbzJbXSA9ICJiLXR3byI7Citjb25zdCBjaGFyIG8zW10gPSAiYiI7Citjb25zdCBjaGFyIG80W10gPSAiY2VkYXIiOworY29uc3QgY2hhciBvNVtdID0gImFscGhhIjsKK2NvbnN0IGNoYXIgb3hbXSA9ICJkZXYiOworY29uc3QgY2hhciBveVtdID0gImFhIjsKK2NvbnN0IGNoYXIqIGNvbnN0IG9fbGFzdCA9IG8xOworY29uc3QgY2hhciAqaXA7Citjb25zdCBjaGFyICpjb25zdCBhW10gPSB7IG94LCBveSB9OworY29uc3QgY2hhciAqY29uc3QgYltdID0geyBvNCwgbzIsIG8zLCBvMSwgbzUgfTsKK25ldHNubXBfY29udGFpbmVyICpjOworaW50IGk7CisKK2luaXRfc25tcCh0ZXN0X25hbWUpOworCitjID0gbmV0c25tcF9jb250YWluZXJfZ2V0X2JpbmFyeV9hcnJheSgpOworYy0+Y29tcGFyZSA9IChuZXRzbm1wX2NvbnRhaW5lcl9jb21wYXJlKilzdHJjbXA7CisgICAgCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGIpL3NpemVvZihiWzBdKTsgKytpKQorICAgIENPTlRBSU5FUl9JTlNFUlQoYywgYltpXSk7CisKK2ZvciAoaXAgPSBDT05UQUlORVJfRklSU1QoYyk7IGlwOyBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGlwKSkgeworICAgIGZvciAoaSA9IHNpemVvZihiKS9zaXplb2YoYlswXSkgLSAxOyBpID49IDA7IC0taSkKKyAgICAgICAgaWYgKGMtPmNvbXBhcmUoaXAsIGJbaV0pID09IDApCisgICAgICAgICAgICBicmVhazsKKyAgICBPS0YoaSA+PSAwLCAoInN0cmluZyBiWyVkXSA9IFwiJXNcIiBwcmVzZW50IiwgaSwgYltpXSkpOworfQorCitmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGIpL3NpemVvZihiWzBdKTsgKytpKSB7CisgICAgaXAgPSBDT05UQUlORVJfRklORChjLCBiW2ldKTsKKyAgICBPS0YoaXAsICgiYlslZF0gPSBcIiVzXCIgcHJlc2VudCIsIGksIGJbaV0pKTsKKyAgICBpcCA9IENPTlRBSU5FUl9ORVhUKGMsIGJbaV0pOworICAgIGlmIChjLT5jb21wYXJlKGJbaV0sIG9fbGFzdCkgPCAwKQorICAgICAgICBPS0YoaXAgJiYgYy0+Y29tcGFyZShiW2ldLCBpcCkgPCAwLAorICAgICAgICAgICAgKCJTdWNjZXNzb3Igb2YgYlslZF0gPSBcIiVzXCIgaXMgXCIlc1wiIiwgaSwgYltpXSwgaXApKTsKKyAgICBlbHNlCisgICAgICAgIE9LRighaXAsICgiTm8gc3VjY2Vzc29yIGZvdW5kIGZvciBiWyVkXSA9IFwiJXNcIiIsIGksIGJbaV0pKTsKK30KKworZm9yIChpID0gMDsgaSA8IHNpemVvZihhKS9zaXplb2YoYVswXSk7ICsraSkgeworICAgIGlwID0gQ09OVEFJTkVSX0ZJTkQoYywgYVtpXSk7CisgICAgT0tGKCFpcCwgKCJhWyVkXSA9IFwiJXNcIiBhYnNlbnQiLCBpLCBhW2ldKSk7CisgICAgaXAgPSBDT05UQUlORVJfTkVYVChjLCBhW2ldKTsKKyAgICBpZiAoYy0+Y29tcGFyZShhW2ldLCBvX2xhc3QpIDwgMCkKKyAgICAgICAgT0tGKGlwICYmIGMtPmNvbXBhcmUoaXAsIGFbaV0pID4gMCwKKyAgICAgICAgICAgICgiU3VjY2Vzc29yIG9mIGFbJWRdID0gXCIlc1wiIGlzIFwiJXNcIiIsIGksIGFbaV0sIGlwKSk7CisgICAgZWxzZQorICAgICAgICBPS0YoIWlwLCAoIk5vIHN1Y2Nlc3NvciBmb3VuZCBmb3IgYVslZF0gPSBcIiVzXCIiLCBpLCBhW2ldKSk7Cit9CisKK3doaWxlICgoaXAgPSBDT05UQUlORVJfRklSU1QoYykpKQorICBDT05UQUlORVJfUkVNT1ZFKGMsIGlwKTsKK0NPTlRBSU5FUl9GUkVFKGMpOworCitzbm1wX3NodXRkb3duKHRlc3RfbmFtZSk7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTRnZXRob3N0YnlhZGRyX2NsaWIuYyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDAxNGdldGhvc3RieWFkZHJfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYTU3OGUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMTRnZXRob3N0YnlhZGRyX2NsaWIuYwpAQCAtMCwwICsxLDk3IEBACisvKgorICogSEVBREVSIFRlc3RpbmcgbmV0c25tcF9nZXRob3N0YnlhZGRyKCkgCisgKi8KKworU09DS19TVEFSVFVQOworCit7CisgICAgaW50ICAgICAgICAgICAgIHJhbl90ZXN0ID0gMDsKKyNpZmRlZiBIQVZFX0dFVEhPU1RCWUFERFIKKyAgICBzdHJ1Y3QgaG9zdGVudCAqaCwgKmgyID0gTlVMTDsKKyAgICBzdHJ1Y3QgaW5fYWRkciAgdjRsb29wOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzaW5fYWRkcjsKKyAgICBpbnQgICAgICAgICAgICAgczsKKworICAgIHY0bG9vcC5zX2FkZHIgPSBodG9ubChJTkFERFJfTE9PUEJBQ0spOworICAgIG1lbXNldCgmc2luX2FkZHIsIDAsIHNpemVvZihzaW5fYWRkcikpOworICAgIHNpbl9hZGRyLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgIHNpbl9hZGRyLnNpbl9hZGRyID0gdjRsb29wOworICAgIHMgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgaWYgKHMgPj0gMCkgeworICAgICAgICBpZiAoYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopICZzaW5fYWRkciwgc2l6ZW9mKHNpbl9hZGRyKSkgPj0gMCkgeworICAgICAgICAgICAgaCA9IG5ldHNubXBfZ2V0aG9zdGJ5YWRkcigmdjRsb29wLCBzaXplb2YodjRsb29wKSwgQUZfSU5FVCk7CisgICAgICAgICAgICBpZiAoaCkKKyAgICAgICAgICAgICAgICBoMiA9IGdldGhvc3RieW5hbWUoaC0+aF9uYW1lKTsKKyAgICAgICAgICAgIE9LRihoICYmIChzdHJjbXAoaC0+aF9uYW1lLCAibG9jYWxob3N0IikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgIChoMiAmJiBtZW1jbXAoaDItPmhfYWRkciwgJnY0bG9vcC5zX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodjRsb29wLnNfYWRkcikpID09IDApKSwKKyAgICAgICAgICAgICAgICAoIjEyNy4wLjAuMSBsb29rdXAgKCVzIC0+ICVzKSIsIGggPyBoLT5oX25hbWUgOiAiKGZhaWxlZCkiLAorICAgICAgICAgICAgICAgICBoMiA/IGluZXRfbnRvYSgqKHN0cnVjdCBpbl9hZGRyICopIGgyLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaF9hZGRyKSA6ICIoZmFpbGVkKSIpKTsKKyAgICAgICAgICAgIHJhbl90ZXN0ID0gMTsKKyAgICAgICAgfQorICAgICAgICBjbG9zZShzKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAoIXJhbl90ZXN0KQorICAgICAgICBPS0YoMSwgKCJTa2lwcGVkIElQdjQgdGVzdCIpKTsKK30KKworeworICAgIHN0cnVjdCBob3N0ZW50ICpoOworI2lmZGVmIGN5Z3dpbgorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgdjZsb29wID0geyB7IElONkFERFJfTE9PUEJBQ0tfSU5JVCB9IH07CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW42X2FkZHIgdjZsb29wID0gSU42QUREUl9MT09QQkFDS19JTklUOworI2VuZGlmCisgICAgc3RydWN0IHNvY2thZGRyX2luNiBzaW42X2FkZHI7CisgICAgc3RydWN0IGFkZHJpbmZvIGhpbnRzLCAqYWRkciA9IE5VTEwsICphcDsKKyAgICBjaGFyICAgICAgICAgICAgYnVmWzY0XTsKKyAgICBpbnQgICAgICAgICAgICAgcywgcmVzLCByYW5fdGVzdCA9IDA7CisKKyAgICBtZW1zZXQoJnNpbjZfYWRkciwgMCwgc2l6ZW9mKHNpbjZfYWRkcikpOworICAgIHNpbjZfYWRkci5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OworICAgIHNpbjZfYWRkci5zaW42X2FkZHIgPSB2Nmxvb3A7CisgICAgcyA9IHNvY2tldChBRl9JTkVUNiwgU09DS19ER1JBTSwgMCk7CisgICAgaWYgKHMgPj0gMCkgeworICAgICAgICBpZiAoYmluZChzLCAoc3RydWN0IHNvY2thZGRyICopICZzaW42X2FkZHIsIHNpemVvZihzaW42X2FkZHIpKSA+PQorICAgICAgICAgICAgMCkgeworICAgICAgICAgICAgc3RyY3B5KGJ1ZiwgIihmYWlsZWQpIik7CisgICAgICAgICAgICBoID0gbmV0c25tcF9nZXRob3N0YnlhZGRyKCZ2Nmxvb3AsIHNpemVvZih2Nmxvb3ApLCBBRl9JTkVUNik7CisgICAgICAgICAgICBpZiAoaCkgeworICAgICAgICAgICAgICAgIG1lbXNldCgmaGludHMsIDAsIHNpemVvZihoaW50cykpOworICAgICAgICAgICAgICAgIGhpbnRzLmFpX2ZhbWlseSA9IEFGX0lORVQ2OworICAgICAgICAgICAgICAgIHJlcyA9IGdldGFkZHJpbmZvKGgtPmhfbmFtZSwgTlVMTCwgJmhpbnRzLCAmYWRkcik7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoYXAgPSBhZGRyOyBhcDsgYXAgPSBhcC0+YWlfbmV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwLT5haV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmV0X250b3AoYXAtPmFpX2ZhbWlseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJigoc3RydWN0IHNvY2thZGRyX2luNiAqKSBhcC0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWlfYWRkciktPnNpbjZfYWRkciwgYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoYnVmKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhcCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmNweShidWYsICJubyBBRl9JTkVUNiBhZGRyZXNzIGZvdW5kIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChhZGRyKQorICAgICAgICAgICAgICAgICAgICAgICAgZnJlZWFkZHJpbmZvKGFkZHIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJnZXRhZGRyaW5mbygpIGZhaWxlZDogJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE9LRihoICYmIChzdHJjbXAoaC0+aF9uYW1lLCAibG9jYWxob3N0IikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgIChyZXMgPT0gMCAmJiBtZW1jbXAoYWRkci0+YWlfYWRkciwgJnNpbjZfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzaW42X2FkZHIpKSA9PSAwKSksCisgICAgICAgICAgICAgICAgKCI6OjEgbG9va3VwICglcyAtPiAlcykiLCBoID8gaC0+aF9uYW1lIDogIihmYWlsZWQpIiwKKyAgICAgICAgICAgICAgICAgYnVmKSk7CisgICAgICAgICAgICByYW5fdGVzdCA9IDE7CisgICAgICAgIH0KKyAgICAgICAgY2xvc2Uocyk7CisgICAgfQorICAgIGlmICghcmFuX3Rlc3QpCisgICAgICAgIE9LRigxLCAoIlNraXBwZWQgSVB2NiB0ZXN0IikpOworfQorCitTT0NLX0NMRUFOVVA7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QwMjFiaW5hcnlfYXJyYXlfb2lkX2R1cGxpY2F0ZXNfY2xpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDIxYmluYXJ5X2FycmF5X29pZF9kdXBsaWNhdGVzX2NsaWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDI3MzI5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMDIxYmluYXJ5X2FycmF5X29pZF9kdXBsaWNhdGVzX2NsaWIuYwpAQCAtMCwwICsxLDcyIEBACisvKiBIRUFERVIgVGVzdGluZyBkdXBsaWNhdGUgaGFuZGxpbmcgaW4gYmluYXJ5IE9JRCBhcnJheSAqLworCisvKiBNdWNoIGNvcGllZCBmcm9tIFQwMTIgKi8KK3N0YXRpYyBjb25zdCBjaGFyIHRlc3RfbmFtZVtdID0gImJpbmFyeS1hcnJheS1vZi1PSURzLWR1cGxpY2F0ZS10ZXN0IjsKK29pZCBvMSA9IDE7CitvaWQgbzIgPSAyOworb2lkIG8zID0gNjsKK29pZCBvNCA9IDg7CitvaWQgbzUgPSA5Oworb2lkIG94ID0gNzsKK29pZCBveSA9IDEwOworbmV0c25tcF9pbmRleCBpMSwgaTIsIGkzLCBpNCwgaTUsIGl4LCBpeSwgKmlwOworbmV0c25tcF9pbmRleCAqYltdID0geyAmaTQsICZpMiwgJmkzLCAmaTEsICZpNSB9OworbmV0c25tcF9jb250YWluZXIgKmM7CitpbnQgaTsKKworaW5pdF9zbm1wKHRlc3RfbmFtZSk7CisKK2MgPSBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfYmluYXJ5X2FycmF5KCk7CitjLT5jb21wYXJlID0gbmV0c25tcF9jb21wYXJlX25ldHNubXBfaW5kZXg7CituZXRzbm1wX2JpbmFyeV9hcnJheV9vcHRpb25zX3NldChjLCAxLAorCQkJCSBDT05UQUlORVJfS0VZX0FMTE9XX0RVUExJQ0FURVMpOworCitpMS5vaWRzID0gJm8xOworaTIub2lkcyA9ICZvMjsKK2kzLm9pZHMgPSAmbzM7CitpNC5vaWRzID0gJm80OworaTUub2lkcyA9ICZvNTsKK2l4Lm9pZHMgPSAmb3g7CitpeS5vaWRzID0gJm95OworaTEubGVuID0gaTIubGVuID0gaTMubGVuID0gaTQubGVuID0gaTUubGVuID0gaXgubGVuID0gaXkubGVuID0gMTsKKworZm9yIChpID0gMDsgaSA8IHNpemVvZihiKS9zaXplb2YoYlswXSk7ICsraSkKKyAgICBDT05UQUlORVJfSU5TRVJUKGMsIGJbaV0pOworCisjZGVmaW5lIE1BWF9ST1VORFMgNgorLyogSW5zZXJ0IHNvbWUgZHVwbGljYXRlcyBvZiBpNDsgYWxzbyBpbnNlcnQgYSBkdXBsaWNhdGUgb2YKKyAqIGkxIHRvIG1vdmUgdGhlIGNvbnRlbnRzIG9mIHRoZSBhcnJheSBhcm91bmQuICovCitmb3IgKGkgPSAwOyBpIDwgTUFYX1JPVU5EUzsgKytpKSB7CisgICAgc3dpdGNoIChpKSB7CisJY2FzZSAwOgorCSAgICAvKiBGaXJzdCByb3VuZDogbm8gaW5zZXJ0ICovCisJICAgIGJyZWFrOworCWNhc2UgMToKKwljYXNlIDI6CisJY2FzZSA0OgorCWNhc2UgNToKKwkgICAgLyogSW5zZXJ0IGFub3RoZXIgZHVwbGljYXRlIG9mIG91ciB0YXJnZXQgb2JqZWN0ICovCisJICAgIENPTlRBSU5FUl9JTlNFUlQoYywgJmk0KTsKKwkgICAgYnJlYWs7CisJY2FzZSAzOgorCSAgICAvKiBJbnNlcnQgYSBkdWxpY2F0ZSBvZiBhbiBlYXJsaWVyIE9JRCwgc28gdGhhdCBpdAorCSAgICAgKiBjaGFuZ2VzIHRoZSBiaW5hcnkgc2VhcmNoIGJlaGF2aW9yICovCisJICAgIENPTlRBSU5FUl9JTlNFUlQoYywgJmkxKTsKKwkgICAgYnJlYWs7CisgICAgfQorICAgIC8qIFByaW1hcnkgcmVxdWlyZW1lbnQ6IGdldG5leHQgcmV0dXJucyB0aGUgbmV4dCB2YWx1ZSEgKi8KKyAgICBpcCA9IENPTlRBSU5FUl9GSU5EKGMsICZpNCk7CisgICAgT0tGKGlwLCAoIkZJTkQgcmV0dXJuZWQgYSB2YWx1ZSIpKTsKKyAgICBPS0YoYy0+Y29tcGFyZSgmaTQsIGlwKSA9PSAwLAorICAgICAgICAoIkZJTkQgcmV0dXJuZWQgb2lkICUiIE5FVFNOTVBfUFJJbyAiZCIsIGlwLT5vaWRzWzBdKSk7CisgICAgaXAgPSBDT05UQUlORVJfTkVYVChjLCAmaTQpOworICAgIE9LRihpcCwgKCJORVhUIHJldHVybmVkIGEgdmFsdWUiKSk7CisgICAgT0tGKGMtPmNvbXBhcmUoJmk1LCBpcCkgPT0gMCwKKyAgICAgICAgKCJORVhUIHJldHVybmVkIGluZGV4IDUgPSAlIiBORVRTTk1QX1BSSW8gImQiLCBpNS5vaWRzWzBdKSk7Cit9CisKK3doaWxlICgoaXAgPSBDT05UQUlORVJfRklSU1QoYykpKQorICBDT05UQUlORVJfUkVNT1ZFKGMsIGlwKTsKK0NPTlRBSU5FUl9GUkVFKGMpOworCitzbm1wX3NodXRkb3duKHRlc3RfbmFtZSk7CmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDFwZHVfdHlwZV9jbGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDFwZHVfdHlwZV9jbGliLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcxYWE2MQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwMXBkdV90eXBlX2NsaWIuYwpAQCAtMCwwICsxLDEzIEBACisvKiBIRUFERVIgUERVIHR5cGUgZGVzY3JpcHRpb25zICovCitjb25zdCBjaGFyICpwZHVfZGVzY3JpcHRpb247CitwZHVfZGVzY3JpcHRpb24gPSBzbm1wX3BkdV90eXBlKFNOTVBfTVNHX0dFVCk7CitPS0YoKHN0cmNtcChwZHVfZGVzY3JpcHRpb24sICJHRVQiKSA9PSAwKSwKKyAgICAoIlNOTVAgR0VUIFBEVSB0eXBlIGRpZCBub3QgcmV0dXJuIHRoZSBleHBlY3RlZCBpZGVudGlmaWVyIChHRVQpOiAlcyIsCisgICAgIHBkdV9kZXNjcmlwdGlvbikpOworCisjaWZkZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCitwZHVfZGVzY3JpcHRpb24gPSBzbm1wX3BkdV90eXBlKDE2Myk7CitPS0YoKHN0cmNtcChwZHVfZGVzY3JpcHRpb24sICI/MHhBMz8iKSA9PSAwKSwKKyAgICAoIlNOTVAgU0VUIFBEVSB0eXBlIGRpZCBub3QgcmV0dXJuIHRoZSBleHBlY3RlZCB1bmtub3duIGlkZW50aWZpZXIgKD8weEEzPyk6ICVzIiwKKyAgICAgcGR1X2Rlc2NyaXB0aW9uKSk7CisjZW5kaWYgLyogTkVUU05NUF9OT19XUklURV9TVVBQT1JUICovCmRpZmYgLS1naXQgYS90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDJwZHVfYnVpbGRfY2xpYi5jIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmJhNjllCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy9mdWxsdGVzdHMvdW5pdC10ZXN0cy9UMTAycGR1X2J1aWxkX2NsaWIuYwpAQCAtMCwwICsxLDY3IEBACisvKiBIRUFERVIgUERVIGJ1aWxkaW5nICovCisKK1NPQ0tfU1RBUlRVUDsKKworbmV0c25tcF9wZHUgKnBkdTsKK3VfY2hhciAqcGFja2V0Oworc2l6ZV90IHBhY2tldF9sZW4sIG9mZnNldCA9IDA7CituZXRzbm1wX3Nlc3Npb24gc2Vzc2lvbiwgKnNzOworaW50IHJjOworCisvKiBwcm90b3R5cGUgY29waWVkIGZyb20gc25tcF9hcGkuYyAqLworaW50ICAgICAgICAgICAgIHNubXBfYnVpbGQodV9jaGFyICoqIHBrdCwgc2l6ZV90ICogcGt0X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG9mZnNldCwgbmV0c25tcF9zZXNzaW9uICogcHNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKnBkdSk7CisKK2luaXRfc25tcCgidGVzdGluZyIpOworc25tcF9zZXNzX2luaXQoJnNlc3Npb24pOworc2Vzc2lvbi52ZXJzaW9uID0gU05NUF9WRVJTSU9OXzJjOworc2Vzc2lvbi5wZWVybmFtZSA9IHN0cmR1cCgidWRwOjEyNy4wLjAuMSIpOyAvKiB3ZSB3b24ndCBhY3R1YWxseSBjb25uZWN0ICovCitzZXNzaW9uLmNvbW11bml0eSA9ICh1X2NoYXIgKikgc3RyZHVwKCJib2d1cyIpOworc2Vzc2lvbi5jb21tdW5pdHlfbGVuID0gc3RybGVuKChjaGFyICopIHNlc3Npb24uY29tbXVuaXR5KTsKK3NzID0gc25tcF9vcGVuKCZzZXNzaW9uKTsKKworT0tGKChzcyAhPSBOVUxMKSwgKCJDcmVhdGluZyBhIHNlc3Npb24gZmFpbGVkIikpOworaWYgKHNzID09IE5VTEwpCisgICAgc25tcF9wZXJyb3IoImFjayIpOworCitwYWNrZXRfbGVuID0gNDA5NjsKK3BhY2tldCA9IG1hbGxvYyhwYWNrZXRfbGVuKTsKKworcGR1ID0gc25tcF9wZHVfY3JlYXRlKFNOTVBfTVNHX0dFVCk7CitwZHUtPnZlcnNpb24gPSBzZXNzaW9uLnZlcnNpb247CisKK09LRigocGR1ICE9IE5VTEwpLCAoIkNyZWF0aW5nIGEgR0VUIFBEVSBmYWlsZWQiKSk7CisKK3JjID0gc25tcF9idWlsZCgmcGFja2V0LCAmcGFja2V0X2xlbiwgJm9mZnNldCwgc3MsIHBkdSk7CisKKyNpZm5kZWYgTkVUU05NUF9OT1RJRllfT05MWQorT0tGKChyYyA9PSBTTk1QRVJSX1NVQ0NFU1MpLAorICAgICgiQnVpbGRpbmcgYSBHRVQgUERVL3BhY2tldCBzaG91bGQgaGF2ZSB3b3JrZWQ6ICVkIiwgcmMpKTsKKyNlbHNlIC8qIE5FVFNOTVBfTk9USUZZX09OTFkgKi8KK09LRigocmMgIT0gU05NUEVSUl9TVUNDRVNTKSwKKyAgICAoIkJ1aWxkaW5nIGEgR0VUIFBEVS9wYWNrZXQgc2hvdWxkIGhhdmUgZmFpbGVkOiAlZCIsIHJjKSk7CisjZW5kaWYgLyogTkVUU05NUF9OT1RJRllfT05MWSAqLworCitvZmZzZXQgPSAwOworcGR1LT5jb21tYW5kID0gMTYzOyAvKiBhIFNFVCBtZXNzYWdlICovCityYyA9IHNubXBfYnVpbGQoJnBhY2tldCwgJnBhY2tldF9sZW4sICZvZmZzZXQsIHNzLCBwZHUpOworCisjaWZuZGVmIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVAorT0tGKChyYyA9PSBTTk1QRVJSX1NVQ0NFU1MpLAorICAgICgiQnVpbGRpbmcgYSBTRVQgUERVL3BhY2tldCBzaG91bGQgaGF2ZSBzdWNjZWVkZWQ6ICVkIiwgcmMpKTsKKyNlbHNlIC8qIE5FVFNOTVBfTk9fV1JJVEVfU1VQUE9SVCAqLworT0tGKChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpLAorICAgICgiQnVpbGRpbmcgYSBTRVQgUERVL3BhY2tldCBzaG91bGQgaGF2ZSBmYWlsZWQ6ICVkIiwgcmMpKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KKworCisKK29mZnNldCA9IDA7CitwZHUtPmNvbW1hbmQgPSBTTk1QX01TR19JTkZPUk07CityYyA9IHNubXBfYnVpbGQoJnBhY2tldCwgJnBhY2tldF9sZW4sICZvZmZzZXQsIHNzLCBwZHUpOworCitPS0YoKHJjID09IFNOTVBFUlJfU1VDQ0VTUyksCisgICAgKCJCdWlsZGluZyBhbiBJTkZPUk0gUERVL3BhY2tldCBzaG91bGQgaGF2ZSBzdWNjZWVkOiAlZCIsIHJjKSk7CisKK1NPQ0tfQ0xFQU5VUDsKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvZnVsbHRlc3RzL3VuaXQtdGVzdHMvVDEwM3BkdV9wYXJzZV9jbGliLmMgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDNwZHVfcGFyc2VfY2xpYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNTg4MmQKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL2Z1bGx0ZXN0cy91bml0LXRlc3RzL1QxMDNwZHVfcGFyc2VfY2xpYi5jCkBAIC0wLDAgKzEsMjIgQEAKKy8qIEhFQURFUiBQYXJzaW5nIG9mIFBEVXMgKi8KK25ldHNubXBfcGR1IHBkdTsKK2ludCByYzsKK3VfY2hhciBkYXRhW10gPSB7IAorICAgIDB4QTIsIDB4MUQsIDB4MDIsIDB4MDQsIDB4NEUsIDB4MzksCisgICAgMHhCMiwgMHg4RSwgMHgwMiwgMHgwMSwgMHgwMCwgMHgwMiwgMHgwMSwgMHgwMCwKKyAgICAweDMwLCAweDBGLCAweDMwLCAweDBELCAweDA2LCAweDA4LCAweDJCLCAweDA2LAorICAgIDB4MDEsIDB4MDIsIDB4MDEsIDB4MDEsIDB4MDQsIDB4MDAsIDB4MDQsIDB4MDEsCisgICAgMHg2NgorfTsKK3NpemVfdCBkYXRhX2xlbmd0aD1zaXplb2YoZGF0YSk7CisKK3JjID0gc25tcF9wZHVfcGFyc2UoJnBkdSwgZGF0YSwgJmRhdGFfbGVuZ3RoKTsKKworT0tGKChyYyA9PSAwKSwgKCJQYXJzaW5nIG9mIGEgZ2VuZXJpYyBQRFUgZmFpbGVkIikpOworCisjaWZkZWYgTkVUU05NUF9OT19XUklURV9TVVBQT1JUCitkYXRhWzBdID0gMHhBMzsgLyogY2hhbmdlcyBpdCB0byBhIFNFVCBwZHUgKi8KK3JjID0gc25tcF9wZHVfcGFyc2UoJnBkdSwgZGF0YSwgJmRhdGFfbGVuZ3RoKTsKKworT0tGKChyYyAhPSAwKSwgKCJQYXJzaW5nIG9mIGEgZ2VuZXJpYyBTRVQgUERVIHN1Y2NlZWRlZCIpKTsKKyNlbmRpZiAvKiBORVRTTk1QX05PX1dSSVRFX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL3dpbjMyL0NvbmZpZ3VyZSBiL3dpbjMyL0NvbmZpZ3VyZQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGJjNjhhZmUuLmEzNmRiMGIKLS0tIGEvd2luMzIvQ29uZmlndXJlCisrKyBiL3dpbjMyL0NvbmZpZ3VyZQpAQCAtMTA0LDQ3ICsxMDQsNTUgQEAKICAgfQogfQogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBDcmVhdGUgbWFpbiBNYWtlZmlsZQotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQXJndW1lbnRzOgorIyAkMTogTmFtZSBvZiBvdXRwdXQgZmlsZQorIyAkMjogTmFtZSBvZiBpbnB1dCBmaWxlCisjICQzOiBSZWZlcmVuY2UgdG8gYSBoYXNoIHdpdGggc3Vic3RpdHV0aW9ucy4gQSBzdWJzdGl0dXRpb24gaXMgYW4gYXJyYXkgd2l0aAorIyAgICAgdHdvIGVsZW1lbnRzIHdoZXJlIGVsZW1lbnQgWzBdIGlzIHRoZSBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IgYW5kIGVsZW1lbnQKKyMgICAgIFsxXSB0aGUgcmVwbGFjZW1lbnQgdGV4dC4KK3N1YiBzdWJzdGl0dXRlCiB7Ci0gIG15ICRtYWtlZmlsZV9vdXQgPSAiTWFrZWZpbGUiOwotICBteSAkbWFrZWZpbGVfaW4gID0gIk1ha2VmaWxlLmluIjsKKyAgbXkgJG91dCAgPSBzaGlmdDsKKyAgbXkgJGluICAgPSBzaGlmdDsKKyAgbXkgJHN1YnMgPSBzaGlmdDsKIAotICBvcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKKyAgb3BlbiAoT1VULCAiPiRvdXQiKSB8fCBkaWUgIkNhbid0IG9wZW4gJG91dFxuIjsKKyAgb3BlbiAoSU4sICAiPCRpbiIpICB8fCBkaWUgIkNhbid0IG9wZW4gJGluXG4iOwogCi0gIHByaW50ICJjcmVhdGluZyAkbWFrZWZpbGVfb3V0XG4iOworICBwcmludCAiY3JlYXRpbmcgJG91dFxuIjsKIAotICB3aGlsZSAoPE1BS0VfSU4+KQotICB7CisgIHdoaWxlICg8SU4+KSB7CiAgICAgY2hvbXA7Ci0gICAgaWYgKCRzZGsgPT0gMSkgewotICAgICAgcy9eU0RLPS9TREs9dHJ1ZS87CisgICAgZm9yZWFjaCBteSAkZSAoa2V5cyAlJHN1YnMpIHsKKyAgICAgICAgbXkgJHAgPSAkJHN1YnN7JGV9WzBdOworICAgICAgICBteSAkcSA9ICQkc3Vic3skZX1bMV07CisgICAgICAgIHMvJHAvJHEvOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgIHMvXlNESz0vU0RLPWZhbHNlLzsKLSAgICB9Ci0KLSAgICBzL15MSU5LVFlQRT0vTElOS1RZUEU9JGxpbmt0eXBlLzsKLSAgICBzL15DRkc9L0NGRz0kY29uZmlnLzsKLSAgICBzL15QUkVGSVg9L1BSRUZJWD0kcHJlZml4LzsKLSAgICBzL15QUkVGSVhfRE9TPS9QUkVGSVhfRE9TPSRwcmVmaXhkb3MvOwotICAgIHMvXlNTTD0uKi9TU0w9JG9wZW5zc2wvOwotCi0gICAgcHJpbnQgTUFLRV9PVVQgJF8gLiAiXG4iOworICAgIHByaW50IE9VVCAkXyAuICJcbiI7CiAgIH0KKworICBjbG9zZSBJTjsKKyAgY2xvc2UgT1VUOwogfQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwotIyBDcmVhdGUgTWFrZWZpbGVzIGZvciBhcHBsaWNhdGlvbnMgZnJvbQotIyBNYWtlZmlsZS1hcHBzLmluCi0jIChleGNlcHQgZm9yIHNubXBuZXRzdGF0KQorIyBQZXJmb3JtIHN1YnN0aXR1dGlvbnMKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAlc3VicyA9ICgKKyAgICAiY2ZnIiA9PiBbICJeQ0ZHPSIsICAgICAgICAiQ0ZHPSRjb25maWciICAgICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAiaW50IiA9PiBbICJeSU5URElSPSIsICAgICAiSU5URElSPS5cXCRjb25maWciICAgICAgICAgICAgICAgICAgXSwKKyAgICAibG5rIiA9PiBbICJeTElOS1RZUEU9IiwgICAiTElOS1RZUEU9JGxpbmt0eXBlIiAgICAgICAgICAgICAgICAgXSwKKyAgICAib3V0IiA9PiBbICJeT1VURElSPSIsICAgICAiT1VURElSPS5cXCRjb25maWciICAgICAgICAgICAgICAgICAgXSwKKyAgICAicGZ4IiA9PiBbICJeUFJFRklYPSIsICAgICAiUFJFRklYPSRwcmVmaXgiICAgICAgICAgICAgICAgICAgICAgXSwKKyAgICAiZG9zIiA9PiBbICJeUFJFRklYX0RPUz0iLCAiUFJFRklYX0RPUz0kcHJlZml4ZG9zIiAgICAgICAgICAgICAgXSwKKyAgICAic2RrIiA9PiBbICJeU0RLPSIsICAgICAgICAkc2RrID09IDEgPyAiU0RLPXRydWUiIDogIlNESz1mYWxzZSIgXSwKKyAgICApOworCitzdWJzdGl0dXRlKCJNYWtlZmlsZSIsICJNYWtlZmlsZS5pbiIsIFwlc3Vicyk7CitzdWJzdGl0dXRlKCJsb2NhbC9NYWtlZmlsZSIsICJsb2NhbC9NYWtlZmlsZS5pbiIsIFwlc3Vicyk7CisKIG15IEBwcm9ncmFtcyA9IHF3CiAvZW5jb2RlX2tleWNoYW5nZQogc25tcGJ1bGtnZXQKQEAgLTE2NSwyNDAgKzE3Myw1MSBAQAogLzsKIAogZm9yZWFjaCBteSAkcHJvZ05hbWUgKEBwcm9ncmFtcykgewotCi0gIG15ICRtYWtlZmlsZV9vdXQgPSAiJHByb2dOYW1lXFxNYWtlZmlsZSI7Ci0gIG15ICRtYWtlZmlsZV9pbiA9ICJNYWtlZmlsZS1hcHBzLmluIjsKLQotICBteSAkb3V0ZGlyID0gJGNvbmZpZzsKLSAgbXkgJGludGRpciA9ICRjb25maWc7Ci0KLSAgb3BlbiAoTUFLRV9PVVQsICI+JG1ha2VmaWxlX291dCIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkbWFrZWZpbGVfb3V0XG4iOwotICBvcGVuIChNQUtFX0lOLCAiPCRtYWtlZmlsZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkbWFrZWZpbGVfaW5cbiI7Ci0KLSAgcHJpbnQgImNyZWF0aW5nICRtYWtlZmlsZV9vdXRcbiI7Ci0KLSAgd2hpbGUgKDxNQUtFX0lOPikKLSAgewotICAgIGNob21wOwotCi0gICAgcy9eTElOS1RZUEU9L0xJTktUWVBFPSRsaW5rdHlwZS87Ci0gICAgcy9eUFJPR05BTUU9L1BST0dOQU1FPSRwcm9nTmFtZS87Ci0gICAgcy9eQ0ZHPS9DRkc9JGNvbmZpZy87Ci0gICAgcy9eT1VURElSPS9PVVRESVI9LlxcJG91dGRpci87Ci0gICAgcy9eSU5URElSPS9JTlRESVI9LlxcJGludGRpci87Ci0gICAgcy9eU1NMPS4qL1NTTD0kb3BlbnNzbC87Ci0KLSAgICBwcmludCBNQUtFX09VVCAkXyAuICJcbiI7Ci0gIH0KKyAgICAkc3Vic3sicHJnIn0gPSBbICJeUFJPR05BTUU9IiwgIlBST0dOQU1FPSRwcm9nTmFtZSIgXTsKKyAgICBzdWJzdGl0dXRlKCIkcHJvZ05hbWUvTWFrZWZpbGUiLCAiTWFrZWZpbGUtYXBwcy5pbiIsIFwlc3Vicyk7CiB9CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBNYWtlZmlsZXMgZm9yIHNubXBuZXRzdGF0IGZyb20KLSMgc25tcG5ldHN0YXRcTWFrZWZpbGUuaW4KLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1teSBAcHJvZ3JhbXMgPSBxdwotL3NubXBuZXRzdGF0Ci0vOwotCi1mb3JlYWNoIG15ICRwcm9nTmFtZSAoQHByb2dyYW1zKSB7Ci0KLSAgbXkgJG1ha2VmaWxlX291dCA9ICIkcHJvZ05hbWVcXE1ha2VmaWxlIjsKLSAgbXkgJG1ha2VmaWxlX2luID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUuaW4iOwotCi0gIG15ICRvdXRkaXIgPSAkY29uZmlnOwotICBteSAkaW50ZGlyID0gJGNvbmZpZzsKLQotICBvcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKLQotICBwcmludCAiY3JlYXRpbmcgJG1ha2VmaWxlX291dFxuIjsKLQotICB3aGlsZSAoPE1BS0VfSU4+KQotICB7Ci0gICAgY2hvbXA7Ci0KLSAgICBzL15MSU5LVFlQRT0vTElOS1RZUEU9JGxpbmt0eXBlLzsKLSAgICBzL15QUk9HTkFNRT0vUFJPR05BTUU9JHByb2dOYW1lLzsKLSAgICBzL15DRkc9L0NGRz0kY29uZmlnLzsKLSAgICBzL15PVVRESVI9L09VVERJUj0uXFwkb3V0ZGlyLzsKLSAgICBzL15JTlRESVI9L0lOVERJUj0uXFwkaW50ZGlyLzsKLSAgICBzL15TU0w9LiovU1NMPSRvcGVuc3NsLzsKLQotICAgIHByaW50IE1BS0VfT1VUICRfIC4gIlxuIjsKLSAgfQorZm9yZWFjaCBteSAkcHJvZ05hbWUgKCJsaWJhZ2VudCIsICJsaWJuZXRzbm1wdHJhcGQiLCAibG9jYWwiLAorICAgICAgICAgICAgICAgICAgICAgICJuZXRzbm1wbWlicyIsICJzbm1wZCIsICJzbm1wdHJhcGQiLCAic25tcG5ldHN0YXQiLAorICAgICAgICAgICAgICAgICAgICAgICRsaW5rdHlwZSBlcSAiZHluYW1pYyIgPyAibGlic25tcF9kbGwiIDogImxpYnNubXAiKSB7CisgICAgJHN1YnN7InByZyJ9ID0gWyAiXlBST0dOQU1FPSIsICJQUk9HTkFNRT0kcHJvZ05hbWUiIF07CisgICAgc3Vic3RpdHV0ZSgiJHByb2dOYW1lL01ha2VmaWxlIiwgIiRwcm9nTmFtZS9NYWtlZmlsZS5pbiIsIFwlc3Vicyk7CiB9CiAKK215ICVzdWJzID0gKAorICAgICJlbnYiID0+IFsgIlxARU5WX1NFUEFSQVRPUlxAIiwgIjsiIF0KKyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBNYWtlZmlsZXMgZm9yIGxpYnJhcmllcwotIyBmcm9tIG5hbWVcTWFrZWZpbGUuaW4KLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1teSBAcHJvZ3JhbXMgPSBxdwotL2xpYmFnZW50Ci1saWJuZXRzbm1wdHJhcGQKLW5ldHNubXBtaWJzCi0vOworc3Vic3RpdHV0ZSgiLi4vbG9jYWwvc25tcGNvbmYiLCAiLi4vbG9jYWwvc25tcGNvbmYuaW4iLCBcJXN1YnMpOwogCisKK215ICVzdWJzID0gKAorICAgICJ2ZXIiID0+IFsgIl4jZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTi4qIiwKKyAgICAgICAgICAgICAgICIjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiBcIiR2ZXJzaW9uXCIiIF0KKyAgICApOworaWYgKCRwcmVmaXggbmUgIiIpIHsKKyAgICAkc3Vic3sicGZ4In0gPSBbICJeI2RlZmluZSBJTlNUQUxMX0JBU0UuKiIsICIjZGVmaW5lIElOU1RBTExfQkFTRSBcIiRwcmVmaXhcIiIgXTsKK30KIGlmICgkbGlua3R5cGUgZXEgImR5bmFtaWMiKSB7Ci0gIHB1c2ggKEBwcm9ncmFtcywgImxpYnNubXBfZGxsIik7CisgICAgJHN1YnN7ImRsbCJ9ID0gWyAiXi4qI3VuZGVmIE5FVFNOTVBfVVNFX0RMTC4qIiwgIiNkZWZpbmUgTkVUU05NUF9VU0VfRExMIDEiIF07CiB9Ci1lbHNlIHsKLSAgcHVzaCAoQHByb2dyYW1zLCAibGlic25tcCIpOworaWYgKCRzZGsgPT0gMSkgeworICAgICRzdWJzeyJzZGsifSA9IFsgIl4uKiN1bmRlZiBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESy4qIiwgIiNkZWZpbmUgSEFWRV9XSU4zMl9QTEFURk9STV9TREsgMSIgXTsKK30KK2lmICgkb3BlbnNzbCA9PSAxKSB7CisgICAgJHN1YnN7InNzbCJ9ID0gWyAiXi4qI3VuZGVmIE5FVFNOTVBfVVNFX09QRU5TU0wuKiIsICIjZGVmaW5lIE5FVFNOTVBfVVNFX09QRU5TU0wgMSIgXTsKK30gZWxzZSB7CisgICAgJHN1YnN7InNzbCJ9ID0gWyAiXi4qI3VuZGVmIE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENS4qIiwgIiNkZWZpbmUgTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1IDEiIF07Cit9CitpZiAoJGJfaXB2NiA9PSAxKSB7CisgICAgJHN1YnN7ImlwdjYifSA9IFsgIl4uKiN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2LioiLCAiI2RlZmluZSBORVRTTk1QX0VOQUJMRV9JUFY2IDEiIF07Cit9CitpZiAoJGJfd2luZXh0ZGxsID09IDEpIHsKKyAgICAkc3Vic3sid2luZXh0ZGxsIn0gPSBbICJeLiojdW5kZWYgVVNJTkdfV0lORVhURExMX01PRFVMRS4qIiwgIiNkZWZpbmUgVVNJTkdfV0lORVhURExMX01PRFVMRSAxIiBdOwogfQogCi1mb3JlYWNoIG15ICRwcm9nTmFtZSAoQHByb2dyYW1zKSB7Ci0KLSAgbXkgJG1ha2VmaWxlX291dCA9ICIkcHJvZ05hbWVcXE1ha2VmaWxlIjsKLSAgbXkgJG1ha2VmaWxlX2luID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUuaW4iOwotCi0gIG15ICRvdXRkaXIgPSAkY29uZmlnOwotICBteSAkaW50ZGlyID0gJGNvbmZpZzsKLQotICBvcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKLQotICBwcmludCAiY3JlYXRpbmcgJG1ha2VmaWxlX291dFxuIjsKLQotICB3aGlsZSAoPE1BS0VfSU4+KQotICB7Ci0gICAgY2hvbXA7Ci0KLSAgICBpZiAoJHNkayA9PSAxKSB7Ci0gICAgICBzL15TREs9L1NESz10cnVlLzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBzL15TREs9L1NESz1mYWxzZS87Ci0gICAgfQotCi0gICAgcy9eUFJPR05BTUU9L1BST0dOQU1FPSRwcm9nTmFtZS87Ci0gICAgcy9eQ0ZHPS9DRkc9JGNvbmZpZy87Ci0gICAgcy9eT1VURElSPS9PVVRESVI9LlxcJG91dGRpci87Ci0gICAgcy9eSU5URElSPS9JTlRESVI9LlxcJGludGRpci87Ci0gICAgcy9eU1NMPS4qL1NTTD0kb3BlbnNzbC87Ci0gICAgcHJpbnQgTUFLRV9PVVQgJF8gLiAiXG4iOwotICB9Ci19Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBNYWtlZmlsZXMgZm9yIGRhZW1vbnMKLSMgZnJvbSBuYW1lXE1ha2VmaWxlLmluCi0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotbXkgQHByb2dyYW1zID0gcXcKLS9zbm1wZAotc25tcHRyYXBkCi0vOwotCi1mb3JlYWNoIG15ICRwcm9nTmFtZSAoQHByb2dyYW1zKSB7Ci0KLSAgbXkgJG1ha2VmaWxlX291dCA9ICIkcHJvZ05hbWVcXE1ha2VmaWxlIjsKLSAgbXkgJG1ha2VmaWxlX2luID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUuaW4iOwotCi0gIG15ICRvdXRkaXIgPSAkY29uZmlnOwotICBteSAkaW50ZGlyID0gJGNvbmZpZzsKLQotICBvcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKE1BS0VfSU4sICI8JG1ha2VmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9pblxuIjsKLQotICBwcmludCAiY3JlYXRpbmcgJG1ha2VmaWxlX291dFxuIjsKLQotICB3aGlsZSAoPE1BS0VfSU4+KQotICB7Ci0gICAgY2hvbXA7Ci0KLSAgICBpZiAoJHNkayA9PSAxKSB7Ci0gICAgICBzL15TREs9L1NESz10cnVlLzsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICBzL15TREs9L1NESz1mYWxzZS87Ci0gICAgfQotCi0gICAgcy9eTElOS1RZUEU9L0xJTktUWVBFPSRsaW5rdHlwZS87Ci0gICAgcy9eUFJPR05BTUU9L1BST0dOQU1FPSRwcm9nTmFtZS87Ci0gICAgcy9eQ0ZHPS9DRkc9JGNvbmZpZy87Ci0gICAgcy9eT1VURElSPS9PVVRESVI9LlxcJG91dGRpci87Ci0gICAgcy9eSU5URElSPS9JTlRESVI9LlxcJGludGRpci87Ci0gICAgcy9eU1NMPS4qL1NTTD0kb3BlbnNzbC87Ci0KLSAgICBwcmludCBNQUtFX09VVCAkXyAuICJcbiI7Ci0gIH0KLX0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQ3JlYXRlIE1ha2VmaWxlIGZvciBQZXJsIHNjcmlwdHMgaW4gbG9jYWwKLSMgZnJvbSBsb2NhbFxNYWtlZmlsZS5pbgotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotbXkgJG1ha2VmaWxlX291dCA9ICJsb2NhbFxcTWFrZWZpbGUiOwotbXkgJG1ha2VmaWxlX2luID0gImxvY2FsXFxNYWtlZmlsZS5pbiI7Ci0KLW15ICRvdXRkaXIgPSAkY29uZmlnOwotCi1vcGVuIChNQUtFX09VVCwgIj4kbWFrZWZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRtYWtlZmlsZV9vdXRcbiI7Ci1vcGVuIChNQUtFX0lOLCAiPCRtYWtlZmlsZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkbWFrZWZpbGVfaW5cbiI7Ci0KLXByaW50ICJjcmVhdGluZyAkbWFrZWZpbGVfb3V0XG4iOwotCi13aGlsZSAoPE1BS0VfSU4+KQotewotICBjaG9tcDsKLQotICBzL15PVVRESVI9L09VVERJUj0uXFwkb3V0ZGlyLzsKLSAgcy9eUFJFRklYPS9QUkVGSVg9JHByZWZpeC87Ci0gIHMvXlBSRUZJWF9ET1M9L1BSRUZJWF9ET1M9JHByZWZpeGRvcy87Ci0KLSAgcHJpbnQgTUFLRV9PVVQgJF8gLiAiXG4iOwotfQotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIENyZWF0ZSBuZXQtc25tcC1jb25maWcuaAotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLXsKLSAgbXkgJGZpbGVfb3V0ID0gIm5ldC1zbm1wXFxuZXQtc25tcC1jb25maWcuaCI7Ci0gIG15ICRmaWxlX2luID0gIm5ldC1zbm1wXFxuZXQtc25tcC1jb25maWcuaC5pbiI7Ci0KLSAgb3BlbiAoRklMRV9PVVQsICI+JGZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX291dFxuIjsKLSAgb3BlbiAoRklMRV9JTiwgIjwkZmlsZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkZmlsZV9pblxuIjsKLQotICBwcmludCAiY3JlYXRpbmcgJGZpbGVfb3V0XG4iOwotCi0gIHdoaWxlICg8RklMRV9JTj4pCi0gIHsKLSAgICBjaG9tcDsKLSAgICBzL14jZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTi4qLyNkZWZpbmUgUEFDS0FHRV9WRVJTSU9OIFwiJHZlcnNpb25cIi87Ci0gICAgaWYgKCRwcmVmaXggbmUgIiIpIHsKLSAgICAgIHMvXiNkZWZpbmUgSU5TVEFMTF9CQVNFLiovI2RlZmluZSBJTlNUQUxMX0JBU0UgXCIkcHJlZml4XCIvOwotICAgIH0KLSAgICBpZiAoJGxpbmt0eXBlIGVxICJkeW5hbWljIikgewotICAgICAgcy9eLiojdW5kZWYgTkVUU05NUF9VU0VfRExMLiovI2RlZmluZSBORVRTTk1QX1VTRV9ETEwgMS87Ci0gICAgfQotICAgIGlmICgkc2RrID09IDEpIHsKLSAgICAgIHMvXi4qI3VuZGVmIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLLiovI2RlZmluZSBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyAxLzsKLSAgICB9Ci0gICAgaWYgKCRvcGVuc3NsID09IDEpIHsKLSAgICAgIHMvXi4qI3VuZGVmIE5FVFNOTVBfVVNFX09QRU5TU0wuKi8jZGVmaW5lIE5FVFNOTVBfVVNFX09QRU5TU0wgMS87Ci0gICAgfQotICAgIGlmICgkYl9pcHY2ID09IDEpIHsKLSAgICAgIHMvXi4qI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYuKi8jZGVmaW5lIE5FVFNOTVBfRU5BQkxFX0lQVjYgMS87Ci0gICAgfQotICAgIGlmICgkYl93aW5leHRkbGwgPT0gMSkgewotICAgICAgcy9eLiojdW5kZWYgVVNJTkdfV0lORVhURExMX01PRFVMRS4qLyNkZWZpbmUgVVNJTkdfV0lORVhURExMX01PRFVMRSAxLzsKLSAgICB9Ci0KLSAgICBwcmludCBGSUxFX09VVCAkXyAuICJcbiI7Ci0gIH0KLX0KLQorc3Vic3RpdHV0ZSgibmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgiLCAibmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4iLAorICAgICAgICAgICBcJXN1YnMpOwogCiBwcmludCBxcS8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvd2luMzIvTWFrZWZpbGUtYXBwcy5pbiBiL3dpbjMyL01ha2VmaWxlLWFwcHMuaW4KaW5kZXggMjExM2FkZS4uYmNmYjI2ZSAxMDA2NDQKLS0tIGEvd2luMzIvTWFrZWZpbGUtYXBwcy5pbgorKysgYi93aW4zMi9NYWtlZmlsZS1hcHBzLmluCkBAIC0zLDcgKzMsNiBAQAogT1VURElSPQogSU5URElSPQogTElOS1RZUEU9Ci1TU0w9CiAKICMgU2V0IHRvIDEgdG8gYWxsb3cgdGhlIGJ1aWxkaW5nIHVzaW5nIHRoZSBETEwgdmVyc2lvbiBvZiBTTk1QTElCLgogQUxMT1dfRExMPTEKZGlmZiAtLWdpdCBhL3dpbjMyL2J1aWxkLnBsIGIvd2luMzIvYnVpbGQucGwKaW5kZXggYzE5MWYyOC4uNDAwN2ZhZSAxMDA2NDQKLS0tIGEvd2luMzIvYnVpbGQucGwKKysrIGIvd2luMzIvYnVpbGQucGwKQEAgLTUsMzIgKzUsNDkgQEAKICMgTWFyY2ggMTJ0aCwgMjAwNAogIwogdXNlIHN0cmljdDsKLW15ICRvcGVuc3NsID0gImRpc2FibGVkIjsKLW15ICRiX2lwdjYgPSAiZGlzYWJsZWQiOwotbXkgJGJfd2luZXh0ZGxsID0gImRpc2FibGVkIjsKLW15ICRzZGsgPSAiZGlzYWJsZWQiOwordXNlIHdhcm5pbmdzOwordXNlIENvbmZpZzsKK3VzZSBDd2QgJ2Fic19wYXRoJzsKK3VzZSBGaWxlOjpCYXNlbmFtZTsKK3VzZSBjb25zdGFudCBmYWxzZSA9PiAwOwordXNlIGNvbnN0YW50IHRydWUgPT4gMTsKK215ICR0YXJnZXRfYXJjaCA9ICRFTlZ7VEFSR0VUX0NQVX0gPyAkRU5We1RBUkdFVF9DUFV9IDogJEVOVntQbGF0Zm9ybX0gPworICAgICAgICAgICAgICAgICAgJEVOVntQbGF0Zm9ybX0gOiAieDg2IjsKK2lmICgkdGFyZ2V0X2FyY2ggbmUgIng4NiIgJiYgJHRhcmdldF9hcmNoIG5lICJ4NjQiKSB7CisgICAgcHJpbnQgIkVycm9yOiB1bnN1cHBvcnRlZCB0YXJnZXQgYXJjaGl0ZWN0dXJlICR0YXJnZXRfYXJjaFxuIjsKKyAgICBkaWU7Cit9CitteSBAcGVybF9hcmNoID0gc3BsaXQoLy0vLCAkQ29uZmlne2FyY2huYW1lfSk7CitpZiAoJHBlcmxfYXJjaFsxXSBuZSAkdGFyZ2V0X2FyY2gpIHsKKyAgICBwcmludCAicGVybF9hcmNoID0gJHBlcmxfYXJjaFsxXSBkb2VzIG5vdCBtYXRjaCB0YXJnZXRfYXJjaCA9ICR0YXJnZXRfYXJjaFxuIjsKKyAgICBkaWU7Cit9CitteSAkb3BlbnNzbCA9IGZhbHNlOworbXkgJGRlZmF1bHRfb3BlbnNzbGRpciA9ICR0YXJnZXRfYXJjaCBlcSAieDY0IiA/CisgICAgIkM6XFxPcGVuU1NMLVdpbjY0IiA6ICJDOlxcT3BlblNTTC1XaW4zMiI7CitteSAkZGVmYXVsdF9vcGVuc3NsaW5jZGlyID0gJGRlZmF1bHRfb3BlbnNzbGRpciAuICJcXGluY2x1ZGUiOworbXkgJG9wZW5zc2xpbmNkaXIgPSAkZGVmYXVsdF9vcGVuc3NsaW5jZGlyOworbXkgJGRlZmF1bHRfb3BlbnNzbGxpYmRpciA9ICRkZWZhdWx0X29wZW5zc2xkaXIgLiAiXFxsaWJcXFZDIjsKK215ICRvcGVuc3NsbGliZGlyID0gJGRlZmF1bHRfb3BlbnNzbGxpYmRpcjsKK215ICRiX2lwdjYgPSBmYWxzZTsKK215ICRiX3dpbmV4dGRsbCA9IGZhbHNlOworbXkgJHNkayA9IGZhbHNlOwogbXkgJGRlZmF1bHRfaW5zdGFsbF9iYXNlID0gImM6L3VzciI7CiBteSAkaW5zdGFsbF9iYXNlID0gJGRlZmF1bHRfaW5zdGFsbF9iYXNlOwotbXkgJGluc3RhbGwgPSAiZW5hYmxlZCI7Ci1teSAkaW5zdGFsbF9kZXZlbCA9ICJkaXNhYmxlZCI7Ci1teSAkcGVybCA9ICJkaXNhYmxlZCI7Ci1teSAkcGVybF9pbnN0YWxsID0gImRpc2FibGVkIjsKLW15ICRsb2dnaW5nID0gImVuYWJsZWQiOwotbXkgJGRlYnVnID0gImRpc2FibGVkIjsKK215ICRpbnN0YWxsID0gdHJ1ZTsKK215ICRpbnN0YWxsX2RldmVsID0gZmFsc2U7CitteSAkcGVybCA9IGZhbHNlOworbXkgJHBlcmxfaW5zdGFsbCA9IGZhbHNlOworbXkgJGxvZ2dpbmcgPSB0cnVlOworbXkgJGRlYnVnID0gZmFsc2U7CiBteSAkY29uZmlnT3B0cyA9ICIiOwotbXkgJGxpbmt0eXBlID0gInN0YXRpYyI7CitteSAkbGlua19keW5hbWljID0gZmFsc2U7CiBteSAkb3B0aW9uOwogCi0jIFByZXBlbmQgd2luMzJcIGlmIHJ1bm5pbmcgZnJvbSBtYWluIGRpcmVjdG9yeQotbXkgJGN1cnJlbnRfcHdkID0gYCVDT01TUEVDJSAvYyBjZGA7Ci1jaG9tcCAkY3VycmVudF9wd2Q7Ci1pZiAoISAoJGN1cnJlbnRfcHdkID1+IC9cXHdpbjMyJC8pKSB7Ci0gIGNoZGlyICgid2luMzIiKTsKLSAgJGN1cnJlbnRfcHdkID0gYCVDT01TUEVDJSAvYyBjZGA7Ci0gIGNob21wICRjdXJyZW50X3B3ZDsKLX0KKyMgUGF0aCBvZiB0aGlzIHNjcmlwdCAoc291cmNlIHRyZWUgcGF0aCArICJ3aW4zMiIpLgorbXkgJGN1cnJlbnRfcHdkID0gZGlybmFtZShhYnNfcGF0aCgkMCkpOwogCi1pZiAoIC1kICRFTlZ7TVNWQ0Rpcn0gfHwgLWQgJEVOVntWQ0lOU1RBTExESVJ9KSB7CitpZiAoIC1kICRFTlZ7TVNWQ0Rpcn0gfHwgLWQgJEVOVntWQ0lOU1RBTExESVJ9IHx8IGRlZmluZWQoJEVOVntUQVJHRVRfQ1BVfSkgKSB7CiB9CiBlbHNlIHsKICAgcHJpbnQgIlxuUGxlYXNlIHJ1biBWQ1ZBUlMzMi5CQVQgZmlyc3QgdG8gc2V0IHVwIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkXG4iIC4KQEAgLTQyLDEzMiArNTksODkgQEAKIHdoaWxlICgxKSB7CiAgIHByaW50ICJcblxuTmV0LVNOTVAgYnVpbGQgYW5kIGluc3RhbGwgb3B0aW9uc1xuIjsKICAgcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKLSAgcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKLSAgcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKKyAgcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAoJG9wZW5zc2wgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKS4gIlxuIjsKKyAgcHJpbnQgIjIuICBPcGVuU1NMIGluY2x1ZGUgZGlyZWN0b3J5OiAgICAgICIgLiAkb3BlbnNzbGluY2Rpci4gIlxuIjsKKyAgcHJpbnQgIjMuICBPcGVuU1NMIGxpYnJhcnkgZGlyZWN0b3I6ICAgICAgICIgLiAkb3BlbnNzbGxpYmRpci4gIlxuIjsKKyAgcHJpbnQgIjQuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAoJHNkayA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpIC4gIlxuIjsKICAgcHJpbnQgIlxuIjsKLSAgcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKLSAgcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7CisgIHByaW50ICI1LiAgSW5zdGFsbCBwYXRoOiAgICAgICAgICAgICAgICAgICAiIC4gJGluc3RhbGxfYmFzZSAuICJcbiI7CisgIHByaW50ICI2LiAgSW5zdGFsbCBhZnRlciBidWlsZDogICAgICAgICAgICAiIC4gKCRpbnN0YWxsID8gImVuYWJsZWQiIDogImRpc2FibGVkIikgLiAiXG4iOwogICBwcmludCAiXG4iOwotICBwcmludCAiNS4gIFBlcmwgbW9kdWxlczogICAgICAgICAgICAgICAgICAgIiAuICRwZXJsIC4gIlxuIjsKLSAgcHJpbnQgIjYuICBJbnN0YWxsIHBlcmwgbW9kdWxlczogICAgICAgICAgICIgLiAkcGVybF9pbnN0YWxsIC4gIlxuIjsKKyAgcHJpbnQgIjcuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAoJHBlcmwgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CisgIHByaW50ICI4LiAgSW5zdGFsbCBwZXJsIG1vZHVsZXM6ICAgICAgICAgICAiIC4gKCRwZXJsX2luc3RhbGwgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CiAgIHByaW50ICJcbiI7Ci0gIHByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOwotICBwcmludCAiOC4gIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICRkZWJ1ZyAuICJcbiI7CisgIHByaW50ICI5LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gKCRsb2dnaW5nID8gImVuYWJsZWQiIDogImRpc2FibGVkIikgLiAiXG4iOworICBwcmludCAiMTAuIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICgkZGVidWcgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CiAgIHByaW50ICJcbiI7Ci0gIHByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7Ci0gIHByaW50ICIxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiAiIC4gJGJfd2luZXh0ZGxsIC4gIlxuIjsKKyAgcHJpbnQgIjExLiBJUHY2IHRyYW5zcG9ydHMgKHJlcXVpcmVzIFNESyk6ICIgLiAoJGJfaXB2NiA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpIC4gIlxuIjsKKyAgcHJpbnQgIjEyLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6ICIgLiAoJGJfd2luZXh0ZGxsID8gImVuYWJsZWQiIDogImRpc2FibGVkIikgLiAiXG4iOwogICBwcmludCAiXG4iOwotICBwcmludCAiMTEuIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAgICAgIiAuICRsaW5rdHlwZSAuICJcbiI7CisgIHByaW50ICIxMy4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gKCRsaW5rX2R5bmFtaWMgPyAiZHluYW1pYyIgOiAic3RhdGljIikgLiAiXG4iOwogICBwcmludCAiXG4iOwotICBwcmludCAiMTIuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAgICAgIiAuICRpbnN0YWxsX2RldmVsIC4gIlxuIjsKKyAgcHJpbnQgIjE0LiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAoJGluc3RhbGxfZGV2ZWwgPyAiZW5hYmxlZCIgOiAiZGlzYWJsZWQiKSAuICJcbiI7CiAgIHByaW50ICJcbkYuICBGaW5pc2hlZCAtIHN0YXJ0IGJ1aWxkXG4iOwogICBwcmludCAiUS4gIFF1aXQgLSBhYm9ydCBidWlsZFxuXG4iOwogICBwcmludCAiU2VsZWN0IG9wdGlvbiB0byBzZXQgLyB0b2dnbGU6ICI7CiAKICAgY2hvbXAgKCRvcHRpb24gPSA8Pik7CiAgIGlmICgkb3B0aW9uIGVxICIxIikgewotICAgIGlmICgkb3BlbnNzbCBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRvcGVuc3NsID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkb3BlbnNzbCA9ICJlbmFibGVkIjsKLSAgICB9CisgICAgJG9wZW5zc2wgPSAhJG9wZW5zc2w7CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjIiKSB7Ci0gICAgaWYgKCRzZGsgZXEgImVuYWJsZWQiKSB7Ci0gICAgICAkc2RrID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkc2RrID0gImVuYWJsZWQiOwotICAgIH0KLSAgfQotICBlbHNpZiAoJG9wdGlvbiBlcSAiOSIpIHsKLSAgICBpZiAoJGJfaXB2NiBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRiX2lwdjYgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRiX2lwdjYgPSAiZW5hYmxlZCI7Ci0gICAgICBpZiAoJHNkayA9ICJkaXNhYmxlZCIpIHsKLSAgICAgICAgcHJpbnQgIlxuXG4qIFNESyByZXF1aXJlZCBmb3IgSVB2NiBhbmQgaGFzIGJlZW4gYXV0b21hdGljYWxseSBlbmFibGVkIjsKLSAgICAgICAgJHNkayA9ICJlbmFibGVkIjsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgZWxzaWYgKCRvcHRpb24gZXEgIjEwIikgewotICAgIGlmICgkYl93aW5leHRkbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgICAkYl93aW5leHRkbGwgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRiX3dpbmV4dGRsbCA9ICJlbmFibGVkIjsKLSAgICAgIGlmICgkc2RrID0gImRpc2FibGVkIikgewotICAgICAgICBwcmludCAiXG5cbiogU0RLIHJlcXVpcmVkIGZvciBJUHY2IGFuZCBoYXMgYmVlbiBhdXRvbWF0aWNhbGx5IGVuYWJsZWQiOwotICAgICAgICAkc2RrID0gImVuYWJsZWQiOwotICAgICAgfQotICAgIH0KKyAgICBwcmludCAiUGxlYXNlIGVudGVyIHRoZSBPcGVuU1NMIGluY2x1ZGUgZGlyZWN0b3J5IFskb3BlbnNzbGluY2Rpcl06ICI7CisgICAgY2hvbXAgKCRvcGVuc3NsaW5jZGlyID0gPD4pOworICAgICRvcGVuc3NsaW5jZGlyID1+IHMvXFwvXC8vZzsKKyAgICAkb3BlbnNzbGluY2RpciA9ICRkZWZhdWx0X29wZW5zc2xpbmNkaXIgaWYgKCRvcGVuc3NsaW5jZGlyIGVxICIiKTsKICAgfQogICBlbHNpZiAoJG9wdGlvbiBlcSAiMyIpIHsKLSAgICBwcmludCAiUGxlYXNlIGVudGVyIHRoZSBuZXcgaW5zdGFsbCBwYXRoIFskZGVmYXVsdF9pbnN0YWxsX2Jhc2VdOiAiOwotICAgIGNob21wICgkaW5zdGFsbF9iYXNlID0gPD4pOwotICAgIGlmICgkaW5zdGFsbF9iYXNlIGVxICIiKSB7Ci0gICAgICAkaW5zdGFsbF9iYXNlID0gJGRlZmF1bHRfaW5zdGFsbF9iYXNlOwotICAgIH0KLSAgICAkaW5zdGFsbF9iYXNlID1+IHMvXFwvXC8vZzsKKyAgICBwcmludCAiUGxlYXNlIGVudGVyIHRoZSBPcGVuU1NMIGxpYnJhcnkgZGlyZWN0b3J5IFskb3BlbnNzbGxpYmRpcl06ICI7CisgICAgY2hvbXAgKCRvcGVuc3NsbGliZGlyID0gPD4pOworICAgICRvcGVuc3NsbGliZGlyID1+IHMvXFwvXC8vZzsKKyAgICAkb3BlbnNzbGxpYmRpciA9ICRkZWZhdWx0X29wZW5zc2xsaWJkaXIgaWYgKCRvcGVuc3NsbGliZGlyIGVxICIiKTsKICAgfQogICBlbHNpZiAoJG9wdGlvbiBlcSAiNCIpIHsKLSAgICBpZiAoJGluc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgICAkaW5zdGFsbCA9ICJkaXNhYmxlZCI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgJGluc3RhbGwgPSAiZW5hYmxlZCI7CisgICAgJHNkayA9ICEkc2RrOworICB9CisgIGVsc2lmICgkb3B0aW9uIGVxICIxMSIpIHsKKyAgICAkYl9pcHY2ID0gISRiX2lwdjY7CisgICAgaWYgKCRiX2lwdjYgJiYgISRzZGspIHsKKyAgICAgIHByaW50ICJcblxuKiBTREsgcmVxdWlyZWQgZm9yIElQdjYgYW5kIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCI7CisgICAgICAkc2RrID0gdHJ1ZTsKICAgICB9CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjEyIikgewotICAgIGlmICgkaW5zdGFsbF9kZXZlbCBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRpbnN0YWxsX2RldmVsID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkaW5zdGFsbF9kZXZlbCA9ICJlbmFibGVkIjsKKyAgICAkYl93aW5leHRkbGwgPSAhJGJfd2luZXh0ZGxsOworICAgIGlmICgkYl93aW5leHRkbGwgJiYgISRzZGspIHsKKyAgICAgIHByaW50ICJcblxuKiBTREsgcmVxdWlyZWQgZm9yIElQdjYgYW5kIGhhcyBiZWVuIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCI7CisgICAgICAkc2RrID0gdHJ1ZTsKICAgICB9CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjUiKSB7Ci0gICAgaWYgKCRwZXJsIGVxICJlbmFibGVkIikgewotICAgICAgJHBlcmwgPSAiZGlzYWJsZWQiOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICRwZXJsID0gImVuYWJsZWQiOwotICAgIH0KKyAgICBwcmludCAiUGxlYXNlIGVudGVyIHRoZSBuZXcgaW5zdGFsbCBwYXRoIFskZGVmYXVsdF9pbnN0YWxsX2Jhc2VdOiAiOworICAgIGNob21wICgkaW5zdGFsbF9iYXNlID0gPD4pOworICAgICRpbnN0YWxsX2Jhc2UgPX4gcy9cXC9cLy9nOworICAgICRpbnN0YWxsX2Jhc2UgPSAkZGVmYXVsdF9pbnN0YWxsX2Jhc2UgaWYgKCRpbnN0YWxsX2Jhc2UgZXEgIiIpOwogICB9CiAgIGVsc2lmICgkb3B0aW9uIGVxICI2IikgewotICAgIGlmICgkcGVybF9pbnN0YWxsIGVxICJlbmFibGVkIikgewotICAgICAgJHBlcmxfaW5zdGFsbCA9ICJkaXNhYmxlZCI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgJHBlcmxfaW5zdGFsbCA9ICJlbmFibGVkIjsKLSAgICB9CisgICAgJGluc3RhbGwgPSAhJGluc3RhbGw7CisgIH0KKyAgZWxzaWYgKCRvcHRpb24gZXEgIjE0IikgeworICAgICRpbnN0YWxsX2RldmVsID0gISRpbnN0YWxsX2RldmVsOwogICB9CiAgIGVsc2lmICgkb3B0aW9uIGVxICI3IikgewotICAgIGlmICgkbG9nZ2luZyBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRsb2dnaW5nID0gImRpc2FibGVkIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkbG9nZ2luZyA9ICJlbmFibGVkIjsKLSAgICB9CisgICAgJHBlcmwgPSAhJHBlcmw7CiAgIH0KICAgZWxzaWYgKCRvcHRpb24gZXEgIjgiKSB7Ci0gICAgaWYgKCRkZWJ1ZyBlcSAiZW5hYmxlZCIpIHsKLSAgICAgICRkZWJ1ZyA9ICJkaXNhYmxlZCI7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgJGRlYnVnID0gImVuYWJsZWQiOwotICAgIH0KKyAgICAkcGVybF9pbnN0YWxsID0gISRwZXJsX2luc3RhbGw7CiAgIH0KLSAgZWxzaWYgKCRvcHRpb24gZXEgIjExIikgewotICAgIGlmICgkbGlua3R5cGUgZXEgInN0YXRpYyIpIHsKLSAgICAgICRsaW5rdHlwZSA9ICJkeW5hbWljIjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAkbGlua3R5cGUgPSAic3RhdGljIjsKLSAgICB9CisgIGVsc2lmICgkb3B0aW9uIGVxICI5IikgeworICAgICRsb2dnaW5nID0gISRsb2dnaW5nOworICB9CisgIGVsc2lmICgkb3B0aW9uIGVxICIxMCIpIHsKKyAgICAkZGVidWcgPSAhJGRlYnVnOworICB9CisgIGVsc2lmICgkb3B0aW9uIGVxICIxMyIpIHsKKyAgICAkbGlua19keW5hbWljID0gISRsaW5rX2R5bmFtaWM7CiAgIH0KICAgZWxzaWYgKGxjKCRvcHRpb24pIGVxICJmIikgewogICAgIGxhc3Q7CkBAIC0xNzcsMTUgKzE1MSwxNiBAQAogICB9CiB9CiAKLSRjb25maWdPcHRzIC49ICRvcGVuc3NsIGVxICJlbmFibGVkIiA/ICItLXdpdGgtc3NsIiA6ICIiOworbXkgJGxpbmt0eXBlID0gJGxpbmtfZHluYW1pYyA/ICJkeW5hbWljIiA6ICJzdGF0aWMiOworJGNvbmZpZ09wdHMgLj0gJG9wZW5zc2wgPyAiLS13aXRoLXNzbCIgOiAiIjsKICRjb25maWdPcHRzIC49ICIgIjsKLSRjb25maWdPcHRzIC49ICRzZGsgZXEgImVuYWJsZWQiID8gIi0td2l0aC1zZGsiIDogIiI7CiskY29uZmlnT3B0cyAuPSAkc2RrID8gIi0td2l0aC1zZGsiIDogIiI7CiAkY29uZmlnT3B0cyAuPSAiICI7Ci0kY29uZmlnT3B0cyAuPSAkYl9pcHY2IGVxICJlbmFibGVkIiA/ICItLXdpdGgtaXB2NiIgOiAiIjsKKyRjb25maWdPcHRzIC49ICRiX2lwdjYgPyAiLS13aXRoLWlwdjYiIDogIiI7CiAkY29uZmlnT3B0cyAuPSAiICI7Ci0kY29uZmlnT3B0cyAuPSAkYl93aW5leHRkbGwgZXEgImVuYWJsZWQiID8gIi0td2l0aC13aW5leHRkbGwiIDogIiI7CiskY29uZmlnT3B0cyAuPSAkYl93aW5leHRkbGwgPyAiLS13aXRoLXdpbmV4dGRsbCIgOiAiIjsKICRjb25maWdPcHRzIC49ICIgIjsKLSRjb25maWdPcHRzIC49ICRkZWJ1ZyBlcSAiZW5hYmxlZCIgPyAiLS1jb25maWc9ZGVidWciIDogIi0tY29uZmlnPXJlbGVhc2UiOworJGNvbmZpZ09wdHMgLj0gJGRlYnVnID8gIi0tY29uZmlnPWRlYnVnIiA6ICItLWNvbmZpZz1yZWxlYXNlIjsKIAogIyBTZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAKQEAgLTE5MywxNDQgKzE2OCw5NCBAQAogJEVOVntOT19FWFRFUk5BTF9ERVBTfT0iMSI7CiAKICMgU2V0IFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgc28gUGVybCBtYWtlIHRlc3RzIGNhbiBsb2NhdGUgdGhlIERMTAotJEVOVntQQVRIfSA9ICIkY3VycmVudF9wd2RcXGJpblxcIiAuICgkZGVidWcgZXEgImVuYWJsZWQiID8gImRlYnVnIiA6ICJyZWxlYXNlIiApIC4gIjskRU5We1BBVEh9IjsKKyRFTlZ7UEFUSH0gPSAiJGN1cnJlbnRfcHdkXFxiaW5cXCIgLiAoJGRlYnVnID8gImRlYnVnIiA6ICJyZWxlYXNlIiApIC4gIjskRU5We1BBVEh9IjsKKworJEVOVntJTkNMVURFfSAuPSAiOyRvcGVuc3NsaW5jZGlyIjsKKyRFTlZ7TElCfSAgICAgLj0gIjskb3BlbnNzbGxpYmRpciI7CiAKICMgU2V0IE1JQkRJUlMgZW52aXJvbm1lbnQgdmFyaWFibGUgc28gUGVybCBtYWtlIHRlc3RzIGNhbiBsb2NhdGUgdGhlIG1pYnMKLW15ICR0ZW1wX21pYmRpciA9ICIkY3VycmVudF9wd2QvLi4vbWlicyI7Ci0kdGVtcF9taWJkaXIgPX4gcy9cXC9cLy9nOwotJEVOVntNSUJESVJTfT0kdGVtcF9taWJkaXI7CiskRU5We01JQkRJUlN9ID0gZGlybmFtZSgkY3VycmVudF9wd2QpIC4gIi9taWJzIjsKIAogIyBTZXQgU05NUENPTkZQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIHNvIFBlcmwgY29uZi50IHRlc3QgY2FuIGxvY2F0ZQogIyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4KICMgU2VlIHRoZSBub3RlIGFib3V0IGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgV2luMzIgc2VjdGlvbiBvZgogIyBwZXJsL1NOTVAvUkVBRE1FIGZvciBkZXRhaWxzIG9uIHdoeSB0aGlzIGlzIG5lZWRlZC4KLSRFTlZ7U05NUENPTkZQQVRIfT0idCI7JEVOVntTTk1QQ09ORlBBVEh9OworJEVOVntTTk1QQ09ORlBBVEh9PSJ0IjsKIAogcHJpbnQgIlxuQnVpbGRpbmcuLi5cbiI7CiAKLWlmICgkbG9nZ2luZyBlcSAiZW5hYmxlZCIpIHsKLSAgcHJpbnQgIlxuQ3JlYXRpbmcgKi5vdXQgbG9nIGZpbGVzLlxuXG4iOworcHJpbnQgIlxuQ3JlYXRpbmcgKi5vdXQgbG9nIGZpbGVzLlxuXG4iOworCitwcmludCAiRGVsZXRpbmcgb2xkIGxvZyBmaWxlcy4uLlxuIjsKK3N5c3RlbSgiZGVsICoub3V0IiAuICgkbG9nZ2luZyA/ICIgPiBOVUw6IDI+JjEiIDogIiIpKTsKKworIyBEZWxldGUgbmV0LXNubXAtY29uZmlnLmggZnJvbSBtYWluIGluY2x1ZGUgZm9sZGVyIGp1c3QgaW4gY2FzZSBpdCB3YXMgY3JlYXRlZCBieSBhIEN5Z3dpbiBvciBNaW5HVyBidWlsZAordW5saW5rICIuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIjsKK3VubGluayAiLi4vc25tcGxpYi90cmFuc3BvcnRzL3NubXBfdHJhbnNwb3J0X2luaXRzLmgiOworCitwcmludCAiUnVubmluZyBDb25maWd1cmUuLi5cbiI7CitzeXN0ZW0oInBlcmwgQ29uZmlndXJlICRjb25maWdPcHRzIC0tbGlua3R5cGU9JGxpbmt0eXBlIC0tcHJlZml4PVwiJGluc3RhbGxfYmFzZVwiIiAuICgkbG9nZ2luZyA/ICIgPiBjb25maWd1cmUub3V0IDI+JjEiIDogIiIpKSA9PSAwIHx8IGRpZSAoJGxvZ2dpbmcgPyAiQnVpbGQgZXJyb3IgKHNlZSBjb25maWd1cmUub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKworcHJpbnQgIkNsZWFuaW5nLi4uXG4iOworc3lzdGVtKCJubWFrZSAvbm9sb2dvIGNsZWFuIiAuICgkbG9nZ2luZyA/ICIgPiBjbGVhbi5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIGNsZWFuLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisKK3ByaW50ICJCdWlsZGluZyBtYWluIHBhY2thZ2UuLi5cbiI7CitzeXN0ZW0oIm5tYWtlIC9ub2xvZ28iIC4gKCRsb2dnaW5nID8gIiA+IG1ha2Uub3V0IDI+JjEiIDogIiIpKSA9PSAwIHx8IGRpZSAoJGxvZ2dpbmcgPyAiQnVpbGQgZXJyb3IgKHNlZSBtYWtlLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisKK2lmICgkcGVybCkgeworICBpZiAoISRsaW5rX2R5bmFtaWMpIHsKKyAgICBwcmludCAiUnVubmluZyBDb25maWd1cmUgZm9yIERMTC4uLlxuIjsKKyAgICBzeXN0ZW0oInBlcmwgQ29uZmlndXJlICRjb25maWdPcHRzIC0tbGlua3R5cGU9ZHluYW1pYyAtLXByZWZpeD1cIiRpbnN0YWxsX2Jhc2VcIiIgLiAoJGxvZ2dpbmcgPyAiID4gcGVybGNvbmZpZ3VyZS5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIHBlcmxjb25maWd1cmUub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKworICAgIHByaW50ICJDbGVhbmluZyBsaWJyYXJpZXMuLi5cbiI7CisgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGxpYnNfY2xlYW4iIC4gKCRsb2dnaW5nID8gIiA+PiBjbGVhbi5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIGNsZWFuLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisKKyAgICBwcmludCAiQnVpbGRpbmcgRExMIGxpYnJhcmllcy4uLlxuIjsKKyAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gbGlicyIgLiAoJGxvZ2dpbmcgPyAiID4gZGxsLm91dCAyPiYxIiA6ICIiKSkgPT0gMCB8fCBkaWUgKCRsb2dnaW5nID8gIkJ1aWxkIGVycm9yIChzZWUgZGxsLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisgIH0KKworICBwcmludCAiQ2xlYW5pbmcgUGVybC4uLi5cbiI7CisgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX2NsZWFuIiAuICgkbG9nZ2luZyA/ICIgPj4gY2xlYW4ub3V0IDI+JjEiIDogIiIpKTsgIyBJZiBhbHJlYWR5IGNsZWFuZWQsIE1ha2VmaWxlIGlzIGdvbmUgc28gZG9uJ3Qgd29ycnkgYWJvdXQgZXJyb3JzIQorCisgIHByaW50ICJCdWlsZGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7CisgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsIiAuICgkbG9nZ2luZyA/ICIgPiBwZXJsbWFrZS5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIHBlcmxtYWtlLm91dCkiIDogIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIik7CisKKyAgcHJpbnQgIlRlc3RpbmcgUGVybCBtb2R1bGVzLi4uXG4iOworICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF90ZXN0IiAuICgkbG9nZ2luZyA/ICIgPiBwZXJsdGVzdC5vdXQgMj4mMSIgOiAiIikpOyAjIERvbid0IGRpZSBpZiBhbGwgdGhlIHRlc3RzIGRvbid0IHBhc3MuLgorCisgIGlmICgkcGVybF9pbnN0YWxsKSB7CisgICAgcHJpbnQgIkluc3RhbGxpbmcgUGVybCBtb2R1bGVzLi4uXG4iOworICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX2luc3RhbGwiIC4gKCRsb2dnaW5nID8gIiA+IHBlcmxpbnN0YWxsLm91dCAyPiYxIiA6ICIiKSkgPT0gMCB8fCBkaWUgKCRsb2dnaW5nID8gIkJ1aWxkIGVycm9yIChzZWUgcGVybGluc3RhbGwub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKKyAgfQorCisgIHByaW50ICJcblNlZSBwZXJsdGVzdC5vdXQgZm9yIFBlcmwgdGVzdCByZXN1bHRzXG4iOwogfQogCi1pZiAoJGxvZ2dpbmcgZXEgImVuYWJsZWQiKSB7Ci0gIHByaW50ICJEZWxldGluZyBvbGQgbG9nIGZpbGVzLi4uXG4iOwotICBzeXN0ZW0oImRlbCAqLm91dCA+IE5VTDogMj4mMSIpOwotCi0gICMgRGVsZXRlIG5ldC1zbm1wLWNvbmZpZy5oIGZyb20gbWFpbiBpbmNsdWRlIGZvbGRlciBqdXN0IGluIGNhc2UgaXQgd2FzIGNyZWF0ZWQgYnkgYSBDeWd3aW4gb3IgTWluR1cgYnVpbGQKLSAgc3lzdGVtKCJkZWwgLi5cXGluY2x1ZGVcXG5ldC1zbm1wXFxuZXQtc25tcC1jb25maWcuaCA+IE5VTDogMj4mMSIpOwotICB1bmxpbmsgIi4uL3NubXBsaWIvdHJhbnNwb3J0cy9zbm1wX3RyYW5zcG9ydF9pbml0cy5oIjsKLQotICBwcmludCAiUnVubmluZyBDb25maWd1cmUuLi5cbiI7Ci0gIHN5c3RlbSgicGVybCBDb25maWd1cmUgJGNvbmZpZ09wdHMgLS1saW5rdHlwZT0kbGlua3R5cGUgLS1wcmVmaXg9XCIkaW5zdGFsbF9iYXNlXCIgPiBjb25maWd1cmUub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBjb25maWd1cmUub3V0KSI7Ci0KLSAgcHJpbnQgIkNsZWFuaW5nLi4uXG4iOwotICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gY2xlYW4gPiBjbGVhbi5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGNsZWFuLm91dCkiOwotCi0gIHByaW50ICJCdWlsZGluZyBtYWluIHBhY2thZ2UuLi5cbiI7Ci0gIHN5c3RlbSgibm1ha2UgL25vbG9nbyA+IG1ha2Uub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBtYWtlLm91dCkiOwotCi0gIGlmICgkcGVybCBlcSAiZW5hYmxlZCIpIHsKLSAgICBpZiAoJGxpbmt0eXBlIGVxICJzdGF0aWMiKSB7Ci0gICAgICBwcmludCAiUnVubmluZyBDb25maWd1cmUgZm9yIERMTC4uLlxuIjsKLSAgICAgIHN5c3RlbSgicGVybCBDb25maWd1cmUgJGNvbmZpZ09wdHMgLS1saW5rdHlwZT1keW5hbWljIC0tcHJlZml4PVwiJGluc3RhbGxfYmFzZVwiID4gcGVybGNvbmZpZ3VyZS5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIHBlcmxjb25maWd1cmUub3V0KSI7Ci0KLSAgICAgIHByaW50ICJDbGVhbmluZyBsaWJyYXJpZXMuLi5cbiI7Ci0gICAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gbGlic19jbGVhbiA+PiBjbGVhbi5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGNsZWFuLm91dCkiOwotCi0gICAgICBwcmludCAiQnVpbGRpbmcgRExMIGxpYnJhcmllcy4uLlxuIjsKLSAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBsaWJzID4gZGxsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgZGxsLm91dCkiOwotICAgIH0KLQotICAgIHByaW50ICJDbGVhbmluZyBQZXJsLi4uLlxuIjsKLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF9jbGVhbiA+PiBjbGVhbi5vdXQgMj4mMSIpOyAjIElmIGFscmVhZHkgY2xlYW5lZCwgTWFrZWZpbGUgaXMgZ29uZSBzbyBkb24ndCB3b3JyeSBhYm91dCBlcnJvcnMhCi0KLSAgICBwcmludCAiQnVpbGRpbmcgUGVybCBtb2R1bGVzLi4uXG4iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsID4gcGVybG1ha2Uub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBwZXJsbWFrZS5vdXQpIjsKLQotICAgIHByaW50ICJUZXN0aW5nIFBlcmwgbW9kdWxlcy4uLlxuIjsKLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF90ZXN0ID4gcGVybHRlc3Qub3V0IDI+JjEiKTsgIyBEb24ndCBkaWUgaWYgYWxsIHRoZSB0ZXN0cyBkb24ndCBwYXNzLi4KLQotICAgIGlmICgkcGVybF9pbnN0YWxsIGVxICJlbmFibGVkIikgewotICAgICAgcHJpbnQgIkluc3RhbGxpbmcgUGVybCBtb2R1bGVzLi4uXG4iOwotICAgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmxfaW5zdGFsbCA+IHBlcmxpbnN0YWxsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgcGVybGluc3RhbGwub3V0KSI7Ci0gICAgfQotCi0gICAgcHJpbnQgIlxuU2VlIHBlcmx0ZXN0Lm91dCBmb3IgUGVybCB0ZXN0IHJlc3VsdHNcbiI7Ci0gIH0KLQotICBwcmludCAiXG4iOwotICBpZiAoJGluc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgcHJpbnQgIkluc3RhbGxpbmcgbWFpbiBwYWNrYWdlLi4uXG4iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBpbnN0YWxsID4gaW5zdGFsbC5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGluc3RhbGwub3V0KSI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgcHJpbnQgIlR5cGUgbm1ha2UgaW5zdGFsbCB0byBpbnN0YWxsIHRoZSBwYWNrYWdlIHRvICRpbnN0YWxsX2Jhc2VcbiI7Ci0gIH0KLQotICBpZiAoJGluc3RhbGxfZGV2ZWwgZXEgImVuYWJsZWQiKSB7Ci0gICAgcHJpbnQgIkluc3RhbGxpbmcgZGV2ZWxvcG1lbnQgZmlsZXMuLi5cbiI7Ci0gICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGluc3RhbGxfZGV2ZWwgPiBpbnN0YWxsX2RldmVsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgaW5zdGFsbF9kZXZlbC5vdXQpIjsKLSAgfQotICBlbHNlIHsKLSAgICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsX2RldmVsIHRvIGluc3RhbGwgdGhlIGRldmVsb3BtZW50IGZpbGVzIHRvICRpbnN0YWxsX2Jhc2VcbiI7Ci0gIH0KLQotICBpZiAoJHBlcmxfaW5zdGFsbCBlcSAiZGlzYWJsZWQiICYmICRwZXJsIGVxICJlbmFibGVkIikgewotICAgIHByaW50ICJUeXBlIG5tYWtlIHBlcmxfaW5zdGFsbCB0byBpbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXNcbiI7Ci0gIH0KK3ByaW50ICJcbiI7CitpZiAoJGluc3RhbGwpIHsKKyAgcHJpbnQgIkluc3RhbGxpbmcgbWFpbiBwYWNrYWdlLi4uXG4iOworICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gaW5zdGFsbCIgLiAoJGxvZ2dpbmcgPyAiID4gaW5zdGFsbC5vdXQgMj4mMSIgOiAiIikpID09IDAgfHwgZGllICgkbG9nZ2luZyA/ICJCdWlsZCBlcnJvciAoc2VlIGluc3RhbGwub3V0KSIgOiAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiKTsKIH0KIGVsc2UgewotICBzeXN0ZW0oImRlbCAqLm91dCIpOworICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsIHRvIGluc3RhbGwgdGhlIHBhY2thZ2UgdG8gJGluc3RhbGxfYmFzZVxuIjsKK30KIAotICAjIERlbGV0ZSBuZXQtc25tcC1jb25maWcuaCBmcm9tIG1haW4gaW5jbHVkZSBmb2xkZXIganVzdCBpbiBjYXNlIGl0IHdhcyBjcmVhdGVkIGJ5IGEgQ3lnd2luIG9yIE1pbkdXIGJ1aWxkCi0gIHN5c3RlbSgiZGVsIC4uXFxpbmNsdWRlXFxuZXQtc25tcFxcbmV0LXNubXAtY29uZmlnLmggPiBOVUw6IDI+JjEiKTsKK2lmICgkaW5zdGFsbF9kZXZlbCkgeworICBwcmludCAiSW5zdGFsbGluZyBkZXZlbG9wbWVudCBmaWxlcy4uLlxuIjsKKyAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGluc3RhbGxfZGV2ZWwgPiBpbnN0YWxsX2RldmVsLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgaW5zdGFsbF9kZXZlbC5vdXQpIjsKK30KK2Vsc2UgeworICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsX2RldmVsIHRvIGluc3RhbGwgdGhlIGRldmVsb3BtZW50IGZpbGVzIHRvICRpbnN0YWxsX2Jhc2VcbiI7Cit9CiAKLSAgc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAkY29uZmlnT3B0cyAtLWxpbmt0eXBlPSRsaW5rdHlwZSAtLXByZWZpeD1cIiRpbnN0YWxsX2Jhc2VcIiIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSI7Ci0gIHN5c3RlbSgibm1ha2UgL25vbG9nbyBjbGVhbiIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSI7Ci0gIHN5c3RlbSgibm1ha2UgL25vbG9nbyIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGFib3ZlKSI7Ci0KLSAgaWYgKCRwZXJsIGVxICJlbmFibGVkIikgewotICAgIGlmICgkbGlua3R5cGUgZXEgInN0YXRpYyIpIHsKLSAgICAgIHN5c3RlbSgicGVybCBDb25maWd1cmUgJGNvbmZpZ09wdHMgLS1saW5rdHlwZT1keW5hbWljIC0tcHJlZml4PVwiJGluc3RhbGxfYmFzZVwiIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBsaWJzX2NsZWFuIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBsaWJzIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgICB9Ci0KLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF9jbGVhbiIpOyAjIElmIGFscmVhZHkgY2xlYW5lZCwgTWFrZWZpbGUgaXMgZ29uZSBzbyBkb24ndCB3b3JyeSBhYm91dCBlcnJvcnMhCi0gICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmwiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBhYm92ZSkiOwotCi0gICAgbXkgJHBhdGhfb2xkID0gJEVOVntQQVRIfTsKLSAgICAkRU5We1BBVEh9ID0gIiRjdXJyZW50X3B3ZFxcYmluXFwiIC4gKCRkZWJ1ZyBlcSAiZW5hYmxlZCIgPyAiZGVidWciIDogInJlbGVhc2UiICkgLiAiOyRFTlZ7UEFUSH0iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX3Rlc3QiKTsgIyBEb24ndCBkaWUgaWYgYWxsIHRoZSB0ZXN0cyBkb24ndCBwYXNzLi4KLSAgICAkRU5We1BBVEh9ID0gJHBhdGhfb2xkOwotCi0gICAgaWYgKCRwZXJsX2luc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgICBwcmludCAiSW5zdGFsbGluZyBQZXJsIG1vZHVsZXMuLi5cbiI7Ci0gICAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF9pbnN0YWxsIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgICB9Ci0gIH0KLQotICBwcmludCAiXG4iOwotICBpZiAoJGluc3RhbGwgZXEgImVuYWJsZWQiKSB7Ci0gICAgcHJpbnQgIkluc3RhbGxpbmcgbWFpbiBwYWNrYWdlLi4uXG4iOwotICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBpbnN0YWxsIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgYWJvdmUpIjsKLSAgfQotICBlbHNlIHsKLSAgICBwcmludCAiVHlwZSBubWFrZSBpbnN0YWxsIHRvIGluc3RhbGwgdGhlIHBhY2thZ2UgdG8gJGluc3RhbGxfYmFzZVxuIjsKLSAgfQotCi0gIGlmICgkaW5zdGFsbF9kZXZlbCBlcSAiZW5hYmxlZCIpIHsKLSAgICBwcmludCAiSW5zdGFsbGluZyBkZXZlbG9wbWVudCBmaWxlcy4uLlxuIjsKLSAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gaW5zdGFsbF9kZXZlbCA+IGluc3RhbGxfZGV2ZWwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBpbnN0YWxsX2RldmVsLm91dCkiOwotICB9Ci0gIGVsc2UgewotICAgIHByaW50ICJUeXBlIG5tYWtlIGluc3RhbGxfZGV2ZWwgdG8gaW5zdGFsbCB0aGUgZGV2ZWxvcG1lbnQgZmlsZXMgdG8gJGluc3RhbGxfYmFzZVxuIjsKLSAgfQotCi0gIGlmICgkcGVybF9pbnN0YWxsIGVxICJkaXNhYmxlZCIgJiYgJHBlcmwgZXEgImVuYWJsZWQiKSB7Ci0gICAgcHJpbnQgIlR5cGUgbm1ha2UgcGVybF9pbnN0YWxsIHRvIGluc3RhbGwgdGhlIFBlcmwgbW9kdWxlc1xuIjsKLSAgfQoraWYgKCRwZXJsICYmICEkcGVybF9pbnN0YWxsKSB7CisgIHByaW50ICJUeXBlIG5tYWtlIHBlcmxfaW5zdGFsbCB0byBpbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXNcbiI7CiB9CiAKIHByaW50ICJcbkRvbmUhXG4iOwogCisjIExvY2FsIFZhcmlhYmxlczoKKyMgbW9kZTogcGVybAorIyBwZXJsLWluZGVudC1sZXZlbDogMgorIyBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvd2luMzIvY29uZmlnLmggYi93aW4zMi9jb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQxY2I5YS4uMDAwMDAwMAotLS0gYS93aW4zMi9jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotLyoKLSAqIEV2ZXJ5b25lIHNob3VsZCBiZSBpbmNsdWRpbmcgdGhlIG5ldyBzdHlsZSBjb25maWcgaGVhZGVyLgotICogRm9yIG5vdywgd2UnbGwgZG8gaXQgZm9yIHRoZW0gZm9yIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5LgotICovCi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CmRpZmYgLS1naXQgYS93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQgYi93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQKaW5kZXggYmEyMzRiYS4uNjBlMTcyOCAxMDA3NTUKLS0tIGEvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkuYmF0CisrKyBiL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LmJhdApAQCAtMSw1ICsxLDMgQEAKIEBlY2hvIG9mZgogCi1jZCB3aW4zMiA+IE5VTDogMj4mMQotcGVybCBidWlsZC1iaW5hcnkucGwKLQorcGVybCAlfmRwMFxidWlsZC1iaW5hcnkucGwKZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsIGIvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGwKaW5kZXggZDEwMmRmYi4uYjA2NGNjOCAxMDA3NTUKLS0tIGEvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGwKKysrIGIvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGwKQEAgLTUsMjcgKzUsNDggQEAKICMgTWF5IDEwdGgsIDIwMDkKICMKIHVzZSBzdHJpY3Q7Cit1c2UgRmlsZTo6QmFzZW5hbWU7CiB1c2UgRmlsZTo6Q29weTsKK3VzZSBGaWxlOjpTcGVjOwogdXNlIEN3ZCAnYWJzX3BhdGgnOwogCiBwcmludCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwogCi1teSAkdGFyX2NvbW1hbmQgPSAnQzpcbXN5c1wxLjBcYmluXHRhci5leGUnOwotbXkgJGd6aXBfY29tbWFuZCA9ICdDOlxtc3lzXDEuMFxiaW5cZ3ppcC5leGUnOworbXkgJHRhcl9jb21tYW5kOworbXkgJGd6aXBfY29tbWFuZDsKK2ZvciBteSAkbXN5c2JpbmRpciAoKCJDOlxcbXN5c1xcMS4wXFxiaW4iLCAiQzpcXG1pbmd3XFxtc3lzXFwxLjBcXGJpbiIpKSB7CisgICAgJHRhcl9jb21tYW5kID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbXN5c2JpbmRpciwgInRhci5leGUiKTsKKyAgICAkZ3ppcF9jb21tYW5kID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkbXN5c2JpbmRpciwgImd6aXAuZXhlIik7CisgICAgbGFzdCBpZiAoLWYgJHRhcl9jb21tYW5kKTsKK30KIAogaWYgKCEgKC1mICR0YXJfY29tbWFuZCkpIHsKLSAgZGllICgiQ291bGQgbm90IGZpbmQgdGFyIGNvbW1hbmQgKCR0YXJfY29tbWFuZCkiKTsKKyAgZGllICgiQ291bGQgbm90IGZpbmQgdGFyIGNvbW1hbmQiKTsKIH0KIGVsc2UgewogICBwcmludCAidGFyIGNvbW1hbmQ6ICAkdGFyX2NvbW1hbmRcbiI7CiB9CiBpZiAoISAoLWYgJGd6aXBfY29tbWFuZCkpIHsKLSAgZGllICgiQ291bGQgbm90IGZpbmQgZ3ppcCBjb21tYW5kICgkZ3ppcF9jb21tYW5kKSIpOworICBkaWUgKCJDb3VsZCBub3QgZmluZCBnemlwIGNvbW1hbmQiKTsKIH0KIGVsc2UgewogICBwcmludCAiZ3ppcCBjb21tYW5kOiAkZ3ppcF9jb21tYW5kXG4iOwogfQogCitteSAkbWFrZW5zaXM7Citmb3IgbXkgJG5zaXNkaXIgKCgiQzpcXFByb2dyYW0gRmlsZXNcXE5TSVMiLCAiQzpcXFByb2dyYW0gRmlsZXMgKHg4NilcXE5TSVMiKSkgeworICAgICRtYWtlbnNpcyA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJG5zaXNkaXIsICJtYWtlbnNpcy5leGUiKTsKKyAgICBsYXN0IGlmICgtZiAkbWFrZW5zaXMpOworfQorZGllKCJtYWtlbnNpcy5leGUgbm90IGZvdW5kIikgaWYgKCEoLWYgJG1ha2Vuc2lzKSk7CisKK215ICR0YXJnZXRfYXJjaCA9ICRFTlZ7VEFSR0VUX0NQVX0gPyAkRU5We1RBUkdFVF9DUFV9IDogJEVOVntQbGF0Zm9ybX0gPworICAgICAgICAgICAgICAgICAgJEVOVntQbGF0Zm9ybX0gOiAieDg2IjsKK215ICRvcGVuc3NsZGlyID0gJHRhcmdldF9hcmNoIGVxICJ4NjQiID8gIkM6XFxPcGVuU1NMLVdpbjY0IiA6CisgICAgICAgICAgICAgICAgICJDOlxcT3BlblNTTC1XaW4zMiI7CitteSAkb3BlbnNzbGluY2RpciA9ICRvcGVuc3NsZGlyIC4gIlxcaW5jbHVkZSI7CitteSAkb3BlbnNzbGxpYmRpciA9ICRvcGVuc3NsZGlyIC4gIlxcbGliXFxWQyI7CisKIG15ICR2ZXJzaW9uID0gInVua25vd24iOwogbXkgJHZlcnNpb25fZm9yX3BlcmwgPSAidW5rbm93biI7CiBteSAkdmVyc2lvbl9tYWo7CkBAIC00OSwzMyArNzAsMTAgQEAKIG15ICRsaW5rdHlwZSA9ICJzdGF0aWMiOwogbXkgJG9wdGlvbjsKIAotIyBQcmVwZW5kIHdpbjMyXCBpZiBydW5uaW5nIGZyb20gbWFpbiBkaXJlY3RvcnkKLW15ICRjdXJyZW50X3B3ZCA9IGAlQ09NU1BFQyUgL2MgY2RgOwotY2hvbXAgJGN1cnJlbnRfcHdkOwotbXkgJHRvcF9kaXI7Ci1teSAkd2luMzJfZGlyOwotbXkgJHBlcmxfZGlyOwotCi1pZiAoJGN1cnJlbnRfcHdkID1+IC9cXHdpbjMyXFxkaXN0JC8pIHsKLSAgJHdpbjMyX2RpciA9ICIkY3VycmVudF9wd2QvLi4vIjsKLSAgJHRvcF9kaXIgPSAiJGN1cnJlbnRfcHdkLy4uLy4uLyI7Ci0gICRwZXJsX2RpciA9ICIkY3VycmVudF9wd2QvLi4vLi4vcGVybC8iOwotfQotZWxzaWYgKCRjdXJyZW50X3B3ZCA9fiAvXFx3aW4zMiQvKSB7Ci0gICR3aW4zMl9kaXIgPSAkY3VycmVudF9wd2Q7Ci0gICR0b3BfZGlyID0gIiRjdXJyZW50X3B3ZC8uLi8iOwotICAkcGVybF9kaXIgPSAiJGN1cnJlbnRfcHdkLy4uL3BlcmwvIjsKLX0KLWVsc2UgeyAgIyBBc3N1bWUgdG9wIGxldmVsIGZvbGRlcgotICAkd2luMzJfZGlyID0gIiRjdXJyZW50X3B3ZC93aW4zMi8iOwotICAkdG9wX2RpciA9ICRjdXJyZW50X3B3ZDsKLSAgJHBlcmxfZGlyID0gIiRjdXJyZW50X3B3ZC9wZXJsLyI7Ci19Ci0KLSR0b3BfZGlyID0gYWJzX3BhdGgoJHRvcF9kaXIpOwotJHdpbjMyX2RpciA9IGFic19wYXRoKCR3aW4zMl9kaXIpOwotJHBlcmxfZGlyID0gYWJzX3BhdGgoJHBlcmxfZGlyKTsKLQorbXkgJHNjcmlwdGRpciA9IGRpcm5hbWUoYWJzX3BhdGgoJDApKTsKK215ICR3aW4zMl9kaXIgPSBkaXJuYW1lKCRzY3JpcHRkaXIpOworbXkgJHRvcF9kaXIgPSBkaXJuYW1lKCR3aW4zMl9kaXIpOworbXkgJHBlcmxfZGlyID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCR0b3BfZGlyLCAicGVybCIpOwogCiBwcmludCAiXG50b3BfZGlyOiAgICAgICR0b3BfZGlyXG4iOwogcHJpbnQgIndpbjMyX2RpcjogICAgJHdpbjMyX2RpclxuIjsKQEAgLTkwLDkgKzg4LDcgQEAKICAgZXhpdDsKIH0KIAotaWYgKCAtZCAkRU5We01TVkNEaXJ9IHx8IC1kICRFTlZ7VkNJTlNUQUxMRElSfSkgewotfQotZWxzZSB7CitpZiAoISgtZCAkRU5We01TVkNEaXJ9KSAmJiAhKC1kICRFTlZ7VkNJTlNUQUxMRElSfSkgJiYgIWRlZmluZWQoJEVOVntUQVJHRVRfQ1BVfSkpIHsKICAgcHJpbnQgIlxuUGxlYXNlIHJ1biBWQ1ZBUlMzMi5CQVQgZmlyc3QgdG8gc2V0IHVwIHRoZSBWaXN1YWwgU3R1ZGlvIGJ1aWxkXG4iIC4KICAgICAgICAgImVudmlyb25tZW50LlxuXG4iOwogICBleGl0OwpAQCAtMTg5LDI3ICsxODUsNiBAQAogJGluc3RhbGwgPSAiZW5hYmxlZCI7CiAkaW5zdGFsbF9kZXZlbCA9ICJlbmFibGVkIjsKIAotcHJpbnQgIlxuXG5CdWlsZGluZyB3aXRoIG9wdGlvbnM6XG4iOwotcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKLXByaW50ICIxLiAgT3BlblNTTCBzdXBwb3J0OiAgICAgICAgICAgICAgICAiIC4gJG9wZW5zc2wuICJcbiI7Ci1wcmludCAiMi4gIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAgICAgICAgICAgIiAuICRzZGsgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIzLiAgSW5zdGFsbCBwYXRoOiAgICAgICAgICAgICAgICAgICAiIC4gJGluc3RhbGxfYmFzZSAuICJcbiI7Ci1wcmludCAiNC4gIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAgICAgICAgICAgIiAuICRpbnN0YWxsIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiNS4gIFBlcmwgbW9kdWxlczogICAgICAgICAgICAgICAgICAgIiAuICRwZXJsIC4gIlxuIjsKLXByaW50ICI2LiAgSW5zdGFsbCBwZXJsIG1vZHVsZXM6ICAgICAgICAgICAiIC4gJHBlcmxfaW5zdGFsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjcuICBRdWlldCBidWlsZCAobG9nZ2VkKTogICAgICAgICAgICIgLiAkbG9nZ2luZyAuICJcbiI7Ci1wcmludCAiOC4gIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICRkZWJ1ZyAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjkuICBJUHY2IHRyYW5zcG9ydHMgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl9pcHY2IC4gIlxuIjsKLXByaW50ICIxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiAiIC4gJGJfd2luZXh0ZGxsIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMTEuIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAgICAgIiAuICRsaW5rdHlwZSAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAkaW5zdGFsbF9kZXZlbCAuICJcbiI7Ci0KIGNoZGlyICR3aW4zMl9kaXI7CiAmYnVpbGQoKTsKICZjcmVhdGVfcGVybF9wYWNrYWdlKCk7CkBAIC0yMjgsMjcgKzIwMyw2IEBACiAkaW5zdGFsbCA9ICJkaXNhYmxlZCI7CiAkaW5zdGFsbF9kZXZlbCA9ICJkaXNhYmxlZCI7CiAKLXByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKLXByaW50ICI9PT09PT09PT09PT09PT09PT09PT09XG5cbiI7Ci1wcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICRvcGVuc3NsLiAiXG4iOwotcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAgICAgICAgICAgIiAuICRpbnN0YWxsX2Jhc2UgLiAiXG4iOwotcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjUuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAkcGVybCAuICJcbiI7Ci1wcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOwotcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7Ci1wcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgICIgLiAkbGlua3R5cGUgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgICAgICAiIC4gJGluc3RhbGxfZGV2ZWwgLiAiXG4iOwotCiBjaGRpciAkd2luMzJfZGlyOwogJmJ1aWxkKCk7CiAKQEAgLTI4MCwyNyArMjM0LDYgQEAKICRpbnN0YWxsID0gImVuYWJsZWQiOwogJGluc3RhbGxfZGV2ZWwgPSAiZW5hYmxlZCI7CiAKLXByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKLXByaW50ICI9PT09PT09PT09PT09PT09PT09PT09XG5cbiI7Ci1wcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICRvcGVuc3NsLiAiXG4iOwotcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAgICAgICAgICAgIiAuICRpbnN0YWxsX2Jhc2UgLiAiXG4iOwotcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjUuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAkcGVybCAuICJcbiI7Ci1wcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOwotcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7Ci1wcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgICIgLiAkbGlua3R5cGUgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgICAgICAiIC4gJGluc3RhbGxfZGV2ZWwgLiAiXG4iOwotCiBjaGRpciAkd2luMzJfZGlyOwogJmJ1aWxkKCk7CiAmY3JlYXRlX3BlcmxfcGFja2FnZSgpOwpAQCAtMzE5LDI3ICsyNTIsNiBAQAogJGluc3RhbGwgPSAiZGlzYWJsZWQiOwogJGluc3RhbGxfZGV2ZWwgPSAiZGlzYWJsZWQiOwogCi1wcmludCAiXG5cbkJ1aWxkaW5nIHdpdGggb3B0aW9uczpcbiI7Ci1wcmludCAiPT09PT09PT09PT09PT09PT09PT09PVxuXG4iOwotcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKLXByaW50ICIyLiAgUGxhdGZvcm0gU0RLIHN1cHBvcnQ6ICAgICAgICAgICAiIC4gJHNkayAuICJcbiI7Ci1wcmludCAiXG4iOwotcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKLXByaW50ICI0LiAgSW5zdGFsbCBhZnRlciBidWlsZDogICAgICAgICAgICAiIC4gJGluc3RhbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOwotcHJpbnQgIjYuICBJbnN0YWxsIHBlcmwgbW9kdWxlczogICAgICAgICAgICIgLiAkcGVybF9pbnN0YWxsIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAgICAgICAgICAgIiAuICRsb2dnaW5nIC4gIlxuIjsKLXByaW50ICI4LiAgRGVidWcgbW9kZTogICAgICAgICAgICAgICAgICAgICAiIC4gJGRlYnVnIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiOS4gIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICRiX2lwdjYgLiAiXG4iOwotcHJpbnQgIjEwLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl93aW5leHRkbGwgLiAiXG4iOwotcHJpbnQgIlxuIjsKLXByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKLXByaW50ICJcbiI7Ci1wcmludCAiMTIuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAgICAgIiAuICRpbnN0YWxsX2RldmVsIC4gIlxuIjsKLQogY2hkaXIgJHdpbjMyX2RpcjsKICZidWlsZCgpOwogCkBAIC0zNzYsNyArMjg4LDcgQEAKIAogY2hkaXIgJHRvcF9kaXI7CiBjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxTZXRFblZhci5uc2knLCIkaW5zdGFsbF9iYXNlLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7Ci1jb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC5uc2knLCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaS5pbiIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7Citjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC5uc2knLCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaSIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7CiBjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxBZGQyUGF0aC5uc2knLCIkaW5zdGFsbF9iYXNlLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7CiBjb3B5KCd3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC1oZWFkZXIxLmJtcCcsIiRpbnN0YWxsX2Jhc2UvIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKIApAQCAtMzkxLDQyICszMDMsMjAgQEAKIG9wZW4gKFRFTVAsICI+JGluc3RhbGxfYmFzZS9ldGMvc25tcC9zbm1wLmNvbmYiKSB8fCBkaWUgKCJDb3VsZCBub3QgY3JlYXRlIGZpbGU6ICQ/Iik7CiBjbG9zZSBURU1QOwogCi0jCi0jIEJ1aWxkIG5ldC1zbm1wLm5zaSBmaWxlCi0jCi0gIHsKLSAgICBteSAkZmlsZV9vdXQgPSAiJGluc3RhbGxfYmFzZS9uZXQtc25tcC5uc2kiOwotICAgIG15ICRmaWxlX2luID0gIiRpbnN0YWxsX2Jhc2UvbmV0LXNubXAubnNpLmluIjsKLSAgCi0gICAgb3BlbiAoRklMRV9PVVQsICI+JGZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX291dFxuIjsKLSAgICBvcGVuIChGSUxFX0lOLCAiPCRmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX2luXG4iOwotICAgIAotICAgIHByaW50ICJjcmVhdGluZyAkZmlsZV9vdXRcbiI7Ci0JICAKLSAgICB3aGlsZSAoPEZJTEVfSU4+KQotICAgIHsKLSAgICAgIGNob21wOwotICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfTUFKX1ZFUlNJT04uKi8hZGVmaW5lIFBST0RVQ1RfTUFKX1ZFUlNJT04gXCIkdmVyc2lvbl9tYWpcIi87Ci0gICAgICBzLyFkZWZpbmUgUFJPRFVDVF9NSU5fVkVSU0lPTi4qLyFkZWZpbmUgUFJPRFVDVF9NSU5fVkVSU0lPTiBcIiR2ZXJzaW9uX21pblwiLzsKLSAgICAgIHMvIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OLiovIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OIFwiJHZlcnNpb25fcmV2XCIvOwotICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfRVhFX1ZFUlNJT04uKi8hZGVmaW5lIFBST0RVQ1RfRVhFX1ZFUlNJT04gXCIkaW5zdGFsbGVyX2V4ZV92ZXJzaW9uXCIvOwotCSAgaWYgKCRFTlZ7TElCfSA9fiAvXFx4NjQvKSB7Ci0gICAgICAgICAgICBzLyFkZWZpbmUgSU5TVEFMTEVSX1BMQVRGT1JNLiovIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gXCJ4NjRcIi87Ci0gICAgICAgICAgICBzLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCIueDY0LmV4ZVwiLzsKLSAgICAgICAgICAgIHMvIWRlZmluZSBXSU4zMl9QTEFURk9STS4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwieDY0XCIvOwotCSAgfQotCSAgZWxzZSB7Ci0gICAgICAgICAgICBzLyFkZWZpbmUgSU5TVEFMTEVSX1BMQVRGT1JNLiovIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gXCJ4ODZcIi87Ci0gICAgICAgICAgICBzLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCIueDg2LmV4ZSIvOwotICAgICAgICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfRVhFX1NVRkZJWC4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwiLng4Ni5leGUiLzsKLSAgICAgICAgICAgIHMvIWRlZmluZSBXSU4zMl9QTEFURk9STS4qLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYIFwieDg2XCIvOwotCSAgfQotICAKLSAgICAgIHByaW50IEZJTEVfT1VUICRfIC4gIlxuIjsKLSAgICB9Ci0gICAgY2xvc2UgRklMRV9JTjsKLSAgICBjbG9zZSBGSUxFX09VVDsKLSAgfQorcHJpbnQgIlxuXG5Db3B5aW5nIGRvY3VtZW50YXRpb246XG4iOworcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiI7CisKKyMgVG8gZG86IHJlcGxhY2UgdGhlIHR3byBsaW5lcyBiZWxvdyB3aXRoIGNvbW1hbmRzIHRoYXQgYnVpbGQgdGhlIC5jaG0gZmlsZS4KK29wZW4gb3V0LCAiPiRpbnN0YWxsX2Jhc2UvZG9jcy9uZXQtc25tcC5jaG0iOworY2xvc2Ugb3V0OworCitwcmludCAiXG5cbkJ1aWxkaW5nIGluc3RhbGxlcjpcbiI7CitwcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKKworbXkgJHN1ZmZpeCA9ICRFTlZ7TElCfSA9fiAvXFx4NjR8XFxhbWQ2NC8gPyAieDY0IiA6ICJ4ODYiOworaWYgKHN5c3RlbSgiXCIkbWFrZW5zaXNcIiAvRFBST0RVQ1RfTUFKX1ZFUlNJT049XCIkdmVyc2lvbl9tYWpcIiAvRFBST0RVQ1RfTUlOX1ZFUlNJT049XCIkdmVyc2lvbl9taW5cIiAvRFBST0RVQ1RfUkVWSVNJT049XCIkdmVyc2lvbl9yZXZcIiAvRFBST0RVQ1RfRVhFX1ZFUlNJT049XCIkaW5zdGFsbGVyX2V4ZV92ZXJzaW9uXCIgL0RJTlNUQUxMRVJfUExBVEZPUk09XCIkc3VmZml4XCIgXCIkaW5zdGFsbF9iYXNlL25ldC1zbm1wLm5zaVwiIikgIT0gMCkgeworICAgIGRpZSgiQnVpbGRpbmcgaW5zdGFsbGVyIGZhaWxlZCIpOworfQogCiBwcmludCAiXG49PT09PT09XG4iOwogcHJpbnQgIkRvbmUhISFcbiI7CkBAIC00NTcsNiArMzQ3LDI2IEBACiAKICMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIHN1YiBidWlsZCB7CisgIHByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKKyAgcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKKyAgcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKKyAgcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKKyAgcHJpbnQgIlxuIjsKKyAgcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKKyAgcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7CisgIHByaW50ICJcbiI7CisgIHByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOworICBwcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOworICBwcmludCAiXG4iOworICBwcmludCAiNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAgICAgICAgICAgIiAuICRsb2dnaW5nIC4gIlxuIjsKKyAgcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOworICBwcmludCAiXG4iOworICBwcmludCAiOS4gIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICRiX2lwdjYgLiAiXG4iOworICBwcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7CisgIHByaW50ICJcbiI7CisgIHByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKKyAgcHJpbnQgIlxuIjsKKyAgcHJpbnQgIjEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAkaW5zdGFsbF9kZXZlbCAuICJcbiI7CiAKICAgJGNUbXAgPSAoJG9wZW5zc2wgZXEgImVuYWJsZWQiID8gIi0td2l0aC1zc2wiIDogIiIgKTsKICAgJGNvbmZpZ09wdHMgPSAiJGNUbXAiOwpAQCAtNDczLDEyICszODMsMTUgQEAKICAgCiAgICMgU2V0IHRvIG5vdCBzZWFyY2ggZm9yIG5vbi1leGlzdGVudCAiLmRlcCIgZmlsZXMKICAgJEVOVntOT19FWFRFUk5BTF9ERVBTfT0iMSI7Ci0gIAorCisgICRFTlZ7SU5DTFVERX0gLj0gIjskb3BlbnNzbGluY2RpciI7CisgICRFTlZ7TElCfSAgICAgLj0gIjskb3BlbnNzbGxpYmRpciI7CisKICAgIyBTZXQgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIG1ha2UgdGVzdHMgY2FuIGxvY2F0ZSB0aGUgRExMCi0gICRFTlZ7UEFUSH0gPSAiJGN1cnJlbnRfcHdkXFxiaW5cXCIgLiAoJGRlYnVnIGVxICJlbmFibGVkIiA/ICJkZWJ1ZyIgOiAicmVsZWFzZSIgKSAuICI7JEVOVntQQVRIfSI7CisgICRFTlZ7UEFUSH0gPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHRvcF9kaXIsICJiaW4iLCAkZGVidWcgZXEgImVuYWJsZWQiID8gImRlYnVnIiA6ICJyZWxlYXNlIikgLiAiOyRFTlZ7UEFUSH0iOwogICAKICAgIyBTZXQgTUlCRElSUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIG1ha2UgdGVzdHMgY2FuIGxvY2F0ZSB0aGUgbWlicwotICBteSAkdGVtcF9taWJkaXIgPSAiJGN1cnJlbnRfcHdkLy4uL21pYnMiOworICBteSAkdGVtcF9taWJkaXIgPSBGaWxlOjpTcGVjLT5jYXRkaXIoJHRvcF9kaXIsICJtaWJzIik7CiAgICR0ZW1wX21pYmRpciA9fiBzL1xcL1wvL2c7CiAgICRFTlZ7TUlCRElSU309JHRlbXBfbWliZGlyOwogICAKZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaSBiL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaQppbmRleCA1ZTZmYzc1Li4yNDAzZDc3IDEwMDY0NAotLS0gYS93aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2kKKysrIGIvd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpCkBAIC0zLDE3ICszLDE0IEBACiAKICFpbmNsdWRlIHg2NC5uc2gKICFpbmNsdWRlICJTZWN0aW9ucy5uc2giCi0KLTsgQnVpbGRpbmcgYSB4ODYgb3IgeDY0IGJpbmFyeQotIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gIng2NCIJCQorIWluY2x1ZGUgRmlsZUZ1bmMubnNoCishaW5zZXJ0bWFjcm8gR2V0UGFyYW1ldGVycworIWluc2VydG1hY3JvIEdldE9wdGlvbnMKK3ZhciBjbWRMaW5lUGFyYW1ldGVycwogCiA7IEhNIE5JUyBFZGl0IFdpemFyZCBoZWxwZXIgZGVmaW5lcwogIWRlZmluZSBQUk9EVUNUX05BTUUgIk5ldC1TTk1QIgotIWRlZmluZSBQUk9EVUNUX01BSl9WRVJTSU9OICI1IgotIWRlZmluZSBQUk9EVUNUX01JTl9WRVJTSU9OICI1IgotIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OICJwcmUyIgotIWRlZmluZSBQUk9EVUNUX0VYRV9WRVJTSU9OICIxIgotIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggIi54NjQuZXhlIgorIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggIi4ke0lOU1RBTExFUl9QTEFURk9STX0uZXhlIgogIWRlZmluZSBQUk9EVUNUX1dFQl9TSVRFICJodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZyIKICFkZWZpbmUgUFJPRFVDVF9ESVJfUkVHS0VZICJTb2Z0d2FyZVxOZXQtU05NUCIKICFkZWZpbmUgUFJPRFVDVF9VTklOU1RfS0VZICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcJHtQUk9EVUNUX05BTUV9IgpAQCAtNzUsNyArNzIsNyBAQAogOyBNVUkgZW5kIC0tLS0tLQogCiBOYW1lICIke1BST0RVQ1RfTkFNRX0gJHtQUk9EVUNUX01BSl9WRVJTSU9OfS4ke1BST0RVQ1RfTUlOX1ZFUlNJT059LiR7UFJPRFVDVF9SRVZJU0lPTn0iCi1PdXRGaWxlICIuLlxcbmV0LXNubXAtJHtQUk9EVUNUX01BSl9WRVJTSU9OfS5cCitPdXRGaWxlICJuZXQtc25tcC0ke1BST0RVQ1RfTUFKX1ZFUlNJT059LlwKICAgICAgICAgICAgICAgICAgICR7UFJPRFVDVF9NSU5fVkVSU0lPTn0uXAogICAgICAgICAgICAgICAgICAgJHtQUk9EVUNUX1JFVklTSU9OfVwKICAgICAgICAgICAgICAgICAgIC0ke1BST0RVQ1RfRVhFX1ZFUlNJT059XApAQCAtMTAxLDExICs5OCw2IEBACiAgIEZpbGUgIlJFQURNRS50eHQiCiAgIFNldE91dFBhdGggIiRJTlNURElSXGJpbiIKIAotICBGaWxlICJiaW5cbXN2Y205MC5kbGwiCi0gIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKLSAgRmlsZSAiYmluXG1zdmNyOTAuZGxsIgotICBGaWxlICJiaW5cTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IgotCiAgIEZpbGUgImJpblxuZXRzbm1wLmRsbCIKICAgRmlsZSAiYmluXGVuY29kZV9rZXljaGFuZ2UuZXhlIgogICBGaWxlICJiaW5cc25tcHZhY20uZXhlIgpAQCAtMTMyLDExICsxMjQsNiBAQAogICBGaWxlICJSRUFETUUudHh0IgogICBTZXRPdXRQYXRoICIkSU5TVERJUlxiaW4iCiAKLSAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgotICBGaWxlICJiaW5cbXN2Y3A5MC5kbGwiCi0gIEZpbGUgImJpblxtc3ZjcjkwLmRsbCIKLSAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKLQogICBGaWxlICJiaW4uc3NsXG5ldHNubXAuZGxsIgogICBGaWxlICJiaW4uc3NsXGVuY29kZV9rZXljaGFuZ2UuZXhlIgogICBGaWxlICJiaW4uc3NsXHNubXB2YWNtLmV4ZSIKQEAgLTIwOCwxMSArMTk1LDYgQEAKICAgICA7IERlbGV0ZSBhZ2VudCBvdGhlcndpc2UgcmUtaW5zdGFsbGluZyBhIGRpZmZlcmVudCBhZ2VudCBtYXkgbm90IHdvcmsgYmVjYXVzZSBvZiBkYXRlIHN0YW1wcwogICAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIgIAogCi0gICAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgotICAgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKLSAgICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCi0gICAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKLQogICAgIFN0ckNtcCAkb3BlblNTTCAiZmFsc2UiIFNFQzAyX25vT3BlblNTTCBTRUMwMl9PcGVuU1NMCiAgICAgU0VDMDJfbm9PcGVuU1NMOgogICAgICAgRmlsZSAiYmluXHNubXBkLmV4ZSIKQEAgLTIzMyw2ICsyMTUsOCBAQAogICAgIEZpbGUgInVucmVnaXN0ZXJhZ2VudC5iYXQiCiAgICAgQ2FsbCBDcmVhdGVBZ2VudEJhdHMKIAorCUNsZWFyRXJyb3JzCisJU3RyQ21wICRJQ09OU19HUk9VUCAiIiBTRUMwMl9Ob1NlcnZpY2UKICAgICBDcmVhdGVEaXJlY3RvcnkgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHJlZ2lzdGVyYWdlbnQuYmF0IgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIiAiJElOU1RESVJcdW5yZWdpc3RlcmFnZW50LmJhdCIKQEAgLTI0OCwxMSArMjMyLDYgQEAKICAgICA7IERlbGV0ZSBhZ2VudCBvdGhlcndpc2UgcmUtaW5zdGFsbGluZyBhIGRpZmZlcmVudCBhZ2VudCBtYXkgbm90IHdvcmsgYmVjYXVzZSBvZiBkYXRlIHN0YW1wcwogICAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIgIAogCi0gICAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgotICAgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKLSAgICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCi0gICAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKLQogICAgIFN0ckNtcCAkb3BlblNTTCAiZmFsc2UiIFNFQzAzX25vT3BlblNTTCBTRUMwM19PcGVuU1NMCiAgICAgU0VDMDNfbm9PcGVuU1NMOgogICAgICAgRmlsZSAvb25hbWU9c25tcGQuZXhlICJiaW5cc25tcGQtd2luRXh0RExMLmV4ZSIKQEAgLTI3Myw2ICsyNTIsOCBAQAogICAgIEZpbGUgInVucmVnaXN0ZXJhZ2VudC5iYXQiCiAgICAgQ2FsbCBDcmVhdGVBZ2VudEJhdHMKIAorCUNsZWFyRXJyb3JzCisJU3RyQ21wICRJQ09OU19HUk9VUCAiIiBTRUMwM19Ob1NlcnZpY2UKICAgICBDcmVhdGVEaXJlY3RvcnkgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHJlZ2lzdGVyYWdlbnQuYmF0IgogICAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIiAiJElOU1RESVJcdW5yZWdpc3RlcmFnZW50LmJhdCIKQEAgLTI4OSwxMSArMjcwLDYgQEAKIAogICBTdHJDbXAgJG9wZW5TU0wgImZhbHNlIiBTRUMwNF9ub09wZW5TU0wgU0VDMDRfT3BlblNTTAogCi0gIEZpbGUgImJpblxtc3ZjbTkwLmRsbCIKLSAgRmlsZSAiYmluXG1zdmNwOTAuZGxsIgotICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCi0gIEZpbGUgImJpblxNaWNyb3NvZnQuVkM5MC5DUlQubWFuaWZlc3QiCi0KICAgU0VDMDRfbm9PcGVuU1NMOgogICBGaWxlICJiaW5cc25tcHRyYXBkLmV4ZSIKICAgZ290byBTRUMwNF9jb250aW51ZQpAQCAtMzE3LDYgKzI5Myw4IEBACiAgIEZpbGUgInVucmVnaXN0ZXJ0cmFwZC5iYXQiCiAgIENhbGwgQ3JlYXRlVHJhcGRCYXRzCiAgIAorICBDbGVhckVycm9ycworICBTdHJDbXAgJElDT05TX0dST1VQICIiIE5vVHJhcFNlcnZpY2UKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIFRyYXAgU2VydmljZS5sbmsiICIkSU5TVERJUlxyZWdpc3RlcnRyYXBkLmJhdCIKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFVucmVnaXN0ZXIgVHJhcCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHVucmVnaXN0ZXJ0cmFwZC5iYXQiCiAgIApAQCAtMzc4LDEwICszNTYsMTQgQEAKIFNlY3Rpb25FbmQKIAogU2VjdGlvbiAtQWRkaXRpb25hbEljb25zCisgIENsZWFyRXJyb3JzCisgIFN0ckNtcCAkSUNPTlNfR1JPVVAgIiIgbm9BZGRpdGlvbmFsSXRlbXMKICAgQ3JlYXRlRGlyZWN0b3J5ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCiAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcVW5pbnN0YWxsLmxuayIgIiRJTlNURElSXHVuaW5zdC5leGUiCiAgIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcTmV0LVNOTVAgSGVscC5sbmsiICIkSU5TVERJUlxkb2NzXE5ldC1TTk1QLmNobSIKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxSRUFETUUubG5rIiAiJElOU1RESVJcUkVBRE1FLnR4dCIKKyAgCisgIG5vQWRkaXRpb25hbEl0ZW1zOgogU2VjdGlvbkVuZAogCiBTZWN0aW9uIC1Qb3N0CkBAIC02ODksNiArNjcxLDE2IEBACiBTZXRSZWdWaWV3IDY0CQk7IFByZXZlbnQgdGhlIGluc3RhbGxlciBmcm9tIHVzaW5nIHRoZSBXb3c2NDMyTm9kZSBIS0xNIHN1YmtleSBvbiA2NC1iaXQgc3lzdGVtcwogUHVzaCAkMAogUHVzaCAkUjAKK1B1c2ggJFIxCisKKzsgQ2hlY2sgZm9yIC8/IGNvbW1hbmQgbGluZSB1c2FnZSBvcHRpb24KKyR7R2V0UGFyYW1ldGVyc30gJFIxCitTdHJDcHkgJGNtZExpbmVQYXJhbWV0ZXJzICRSMQorQ2xlYXJFcnJvcnMKKyR7R2V0T3B0aW9uc30gJGNtZExpbmVQYXJhbWV0ZXJzICcvPycgJFIwCitJZkVycm9ycyArMyAwCitNZXNzYWdlQm94IE1CX09LICJPcHRpb25zOiRcbiAgXFN0YXJ0TWVudT17R3JvdXBOYW1lfSRcbiAgXEFnZW50PXN0YW5kYXJkfGV4dERMTHxub25lICAgKGRlZmF1bHQgc3RhbmRhcmQpJFxuICBcbm9UcmFwZCRcdChkZWZhdWx0IFxUcmFwZCkkXG4gIFxub1BlcmwkXHQkXHQoZGVmYXVsdCBcUGVybCkkXG4gIFxEZXYkXHQkXHQoZGVmYXVsdCBcbm9EZXYpJFxuICBcT3BlblNTTCRcdChkZWZhdWx0IFxub09wZW5TU0wpIgorQWJvcnQKIAogOyBNYWtlIHN1cmUgd2UncmUgcnVubmluZyBXaW5kb3dzIDIwMDAgKDUuMCkgb3IgaGlnaGVyCiBDbGVhckVycm9ycwpAQCAtNzQ2LDEwICs3MzgsMTIxIEBACiA7IFN0b3JlIGN1cnJlbnQgc3RhdHVzIG9mIFNFQzA3IChTU0wpLiAgVXNlZCBmb3IgY2hlY2tpbmcgaWYgT3BlblNTTCBpcyBpbnN0YWxsZWQuCiBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJFI5CiAKKzsgcHJvY2VzcyBvdGhlciBjb21tYW5kIGxpbmUgcGFyYW1ldGVycworQ2FsbCBwYXJzZVBhcmFtZXRlcnMKKwogUG9wICRSMAogUG9wICQwCiBGdW5jdGlvbkVuZAogCitGdW5jdGlvbiBwYXJzZVBhcmFtZXRlcnMKKyAgUHVzaCAkUjAKKyAgUHVzaCAkMAorCisgIDsgL1N0YXJ0TWVudT0KKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9TdGFydE1lbnU9IiAgJFIwCisgIElmRXJyb3JzICsyIDAKKyAgU3RyQ3B5ICRJQ09OU19HUk9VUCAkUjAKKworICA7IC97bm8sfVRyYXBkICAKKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9UcmFwZCIgICRSMAorICBJZkVycm9ycyArNCAwCisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzA0fSAkMAorICBJbnRPcCAkMCAkMCB8ICR7U0ZfU0VMRUNURUR9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzA0fSAkMAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL25vVHJhcGQiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNH0gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNH0gJDAKKworICA7IC97bm8sfVBlcmwgIAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL1BlcmwiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNX0gJDAKKyAgSW50T3AgJDAgJDAgfCAke1NGX1NFTEVDVEVEfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNX0gJDAKKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9ub1BlcmwiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNX0gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNX0gJDAKKworICA7IC97bm8sfURldiAgCisgIENsZWFyRXJyb3JzCisgICR7R2V0T3B0aW9uc30gJGNtZExpbmVQYXJhbWV0ZXJzICIvRGV2IiAgJFIwCisgIElmRXJyb3JzICs0IDAKKyAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDZ9ICQwCisgIEludE9wICQwICQwIHwgJHtTRl9TRUxFQ1RFRH0KKyAgU2VjdGlvblNldEZsYWdzICR7U0VDMDZ9ICQwCisgIENsZWFyRXJyb3JzCisgICR7R2V0T3B0aW9uc30gJGNtZExpbmVQYXJhbWV0ZXJzICIvbm9EZXYiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwNn0gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwNn0gJDAKKworICA7IC97bm8sfU9wZW5TU0wgIAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL09wZW5TU0wiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJDAKKyAgSW50T3AgJDAgJDAgfCAke1NGX1NFTEVDVEVEfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwN30gJDAKKyAgQ2xlYXJFcnJvcnMKKyAgJHtHZXRPcHRpb25zfSAkY21kTGluZVBhcmFtZXRlcnMgIi9ub09wZW5TU0wiICAkUjAKKyAgSWZFcnJvcnMgKzQgMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwN30gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwN30gJDAKKworICA7IC9BZ2VudD0gIAorICBDbGVhckVycm9ycworICAke0dldE9wdGlvbnN9ICRjbWRMaW5lUGFyYW1ldGVycyAiL0FnZW50PSIgICRSMAorICBJZkVycm9ycyBlbmRPZkFnZW50IDAKKyAgOyAvQWdlbnQ9bm9uZQorICBDbGVhckVycm9ycworICBTdHJDbXAgJFIwICJub25lIiAwIHN0YW5kYXJkQWdlbnQKKyAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDJ9ICQwCisgIEludE9wICQwICQwICYgJHtTRUNUSU9OX09GRn0KKyAgU2VjdGlvblNldEZsYWdzICR7U0VDMDJ9ICQwCisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAzfSAkMAorICBJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAzfSAkMAorICBHb3RvIGVuZE9mQWdlbnQKKyAgCisgIHN0YW5kYXJkQWdlbnQ6CisgIDsgL0FnZW50PXN0YW5kYXJkCisgIENsZWFyRXJyb3JzCisgIFN0ckNtcCAkUjAgInN0YW5kYXJkIiAwIHdpbkV4dERMTEFnZW50CisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAyfSAkMAorICBJbnRPcCAkMCAkMCB8ICR7U0ZfU0VMRUNURUR9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAyfSAkMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgR290byBlbmRPZkFnZW50CisgIAorICB3aW5FeHRETExBZ2VudDoKKyAgOyAvQWdlbnQ9ZXh0RExMCisgIENsZWFyRXJyb3JzCisgIFN0ckNtcCAkUjAgImV4dERMTCIgMCBlbmRPZkFnZW50CisgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAyfSAkMAorICBJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CisgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAyfSAkMAorICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgSW50T3AgJDAgJDAgfCAke1NGX1NFTEVDVEVEfQorICBTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgZW5kT2ZBZ2VudDoKKyAgCisgIFBvcCAkUjAgIAorRnVuY3Rpb25FbmQKKwogRnVuY3Rpb24gLm9uU2VsQ2hhbmdlCiAKIDsgICFpbnNlcnRtYWNybyBTdGFydFJhZGlvQnV0dG9ucyAkMgpAQCAtODM5LDExICs5NDIsOCBAQAogICBEZWxldGUgIiRJTlNURElSXGRvY3NcQ09QWUlORyIKICAgRGVsZXRlICIkSU5TVERJUlxkb2NzXE5ldC1TTk1QLmNobSIKICAgRGVsZXRlICIkSU5TVERJUlxiaW5cbmV0LXNubXAtcGVybC10ZXN0LnBsIgotCi0gIERlbGV0ZSAiJElOU1RESVJcYmluXG1zdmNtOTAuZGxsIgotICBEZWxldGUgIiRJTlNURElSXGJpblxtc3ZjcDkwLmRsbCIKLSAgRGVsZXRlICIkSU5TVERJUlxiaW5cbXN2Y3I5MC5kbGwiCi0gIERlbGV0ZSAiJElOU1RESVJcYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKKyAgOyBpZGVhbGx5IHdlIHNob3VsZCBjaGVjayB3aGV0aGVyIHRoaXMgZmlsZSBoYXMgY2hhbmdlZAorICBEZWxldGUgIiRJTlNURElSXGV0Y1xzbm1wXHNubXAuY29uZiIKIAogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wdHJhcGQuZXhlIgogICBEZWxldGUgIiRJTlNURElSXGJpblxzbm1wZC5leGUiCkBAIC04OTMsNiArOTkzLDcgQEAKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcHRyYXBkLWRhdGFcbG9nZ2luZyIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcHRyYXBkLWRhdGFccnVudGltZSIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcQUdFTlRYLU1JQi50eHQiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXEJSSURHRS1NSUIudHh0IgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xESVNNQU4tRVZFTlQtTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcRElTTUFOLU5TTE9PS1VQLU1JQi50eHQiCkBAIC05MjcsNiArMTAyOCw3IEBACiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXE5FVC1TTk1QLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXE5FVC1TTk1QLU1PTklUT1ItTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcTkVULVNOTVAtUEFTUy1NSUIudHh0IgorICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xORVQtU05NUC1QRVJJT0RJQy1OT1RJRlktTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcTkVULVNOTVAtU1lTVEVNLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXE5FVC1TTk1QLVRDLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcTkVULVNOTVAtVkFDTS1NSUIudHh0IgpAQCAtOTQ0LDYgKzEwNDYsOCBAQAogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xTTk1QLU5PVElGSUNBVElPTi1NSUIudHh0IgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xTTk1QLVBST1hZLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVEFSR0VULU1JQi50eHQiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVExTLVRNLU1JQi50eHQiCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVFNNLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIudHh0IgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xTTk1QLVVTTS1BRVMtTUlCLnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0IgpAQCAtOTY1LDggKzEwNjksOCBAQAogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWlic1xVQ0QtU05NUC1NSUItT0xELnR4dCIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYnNcVURQLU1JQi50eHQiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWJzXC5pbmRleCIKKyAgRGVsZXRlICIkSU5TVERJUlxzbm1wXHBlcnNpc3RcbWliX2luZGV4ZXNcMCIKIAotICBTZXRPdXRQYXRoICIkSU5TVERJUlxzaGFyZVxzbm1wIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuYXJyYXktdXNlci5jb25mIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMuY2hlY2tfdmFsdWVzLmNvbmYiCkBAIC05OTEsNyArMTA5NSw2IEBACiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy5zY2FsYXIuY29uZiIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLnRhYmxlX2RhdGEuY29uZiIKIAotICBTZXRPdXRQYXRoICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGEiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXGRlZmF1bHQtbWZkLXRvcC5tMmMiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXGRldGFpbHMtZW51bXMubTJpIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMtZGF0YVxkZXRhaWxzLW5vZGUubTJpIgpAQCAtMTAzNCw3ICsxMTM3LDcgQEAKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYyIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcbWZkLWludGVyZmFjZS5tMmMiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1tYWtlZmlsZS5tMm0iCi0gIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1wZXJzaXN0ZW5jZS5tMm0iCisgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1wZXJzaXN0ZW5jZS5tMmkiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXG1mZC1yZWFkbWUubTJjIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMtZGF0YVxtZmQtdG9wLm0yYyIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcbm9kZS1nZXQubTJpIgpAQCAtMTA1OCw3ICsxMTYxLDYgQEAKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcc3ludGF4LVJvd1N0YXR1cy12YXJiaW5kLXZhbGlkYXRlLm0yaSIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLWRhdGFcc3ludGF4LVN0b3JhZ2VUeXBlLWRlcGVuZGVuY2llcy5tMmkiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy1kYXRhXHN5bnRheC1UZXN0QW5kSW5jci1nZXQubTJpIgotICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMtZGF0YVwiCiAKICAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcTmV0LVNOTVAgSGVscC5sbmsiCiAgIERlbGV0ZSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFVuaW5zdGFsbC5sbmsiCkBAIC0xMjcwLDggKzEzNzIsNiBAQAogICBEZWxldGUgIiRJTlNURElSXGxpYlxuZXRzbm1wbWlicy5saWIiCiAgIERlbGV0ZSAiJElOU1RESVJcbGliXG5ldHNubXAuZXhwIgogICAKLSAgUk1EaXIgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlIgotICBSTURpciAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQIgogICBSTURpciAiJElOU1RESVJccGVybFx4ODYiCiAgIFJNRGlyICIkSU5TVERJUlxwZXJsIgogICBSTURpciAiJElOU1RESVJcbGliIgpAQCAtMTI5NSw2ICsxMzk1LDcgQEAKICAgUk1EaXIgIiRJTlNURElSXHNoYXJlIgogCiAgIFJNRGlyICIkSU5TVERJUlx0ZW1wIgorICBSTURpciAiJElOU1RESVJcc25tcFxwZXJzaXN0XG1pYl9pbmRleGVzIgogICBSTURpciAiJElOU1RESVJcc25tcFxwZXJzaXN0IgogICBSTURpciAiJElOU1RESVJcc25tcCIKICAgUk1EaXIgIiRJTlNURElSXGV0Y1xzbm1wIgpAQCAtMTMwNCw2ICsxNDA1LDMxIEBACiAgIFJNRGlyICIkSU5TVERJUlxpbmNsdWRlIgogICBSTURpciAiJElOU1RESVJcbG9nIgogICBSTURpciAiJElOU1RESVIiCisgIAorICA7IFN0YXJ0IE1lbnUgZW50cmllcyBtYXkgaGF2ZSBiZWVuIGluc3RhbGxlZCBmb3IgdGhlIGN1cnJlbnQgdXNlciBvbmx5LAorICA7IG9yIGZvciBBbGwgVXNlcnMuICBTbyBsZXQncyBkZWxldGUgYm90aCBzZXRzLi4uLgorICBTZXRTaGVsbFZhckNvbnRleHQgY3VycmVudAorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxVbmluc3RhbGwubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxOZXQtU05NUCBIZWxwLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcUkVBRE1FLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIFRyYXAgU2VydmljZS5sbmsiCisgIERlbGV0ZSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcVW5yZWdpc3RlciBUcmFwIFNlcnZpY2UubG5rIgorICBSTURpciAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2UiCisgIFJNRGlyICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCisKKyAgU2V0U2hlbGxWYXJDb250ZXh0IGFsbAorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxVbmluc3RhbGwubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxOZXQtU05NUCBIZWxwLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcUkVBRE1FLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIKKyAgRGVsZXRlICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxVbnJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIgorICBEZWxldGUgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIFRyYXAgU2VydmljZS5sbmsiCisgIERlbGV0ZSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcVW5yZWdpc3RlciBUcmFwIFNlcnZpY2UubG5rIgorICBSTURpciAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2UiCisgIFJNRGlyICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVAiCisgIAogICA7IERlbGV0ZSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgIDtQdXNoICJTTk1QQ09ORlBBVEgiCiAgIDtDYWxsIHVuLkRlbGV0ZUVudlN0cgpAQCAtMTMyMSwxMyArMTQ0NywyMyBAQAogCiBGdW5jdGlvbiBJc1NTTEluc3RhbGxlZAogICBQdXNoICRSMAotICBSZWFkRW52U3RyICRSMCAiT1BFTlNTTF9DT05GIgotICBJZkZpbGVFeGlzdHMgIiRSMCIgMCBub1NTTAotICAgIEdvdG8gY29udGludWVJbnN0YWxsCisgIFB1c2ggJFIxCisKKyAgR2V0RExMVmVyc2lvbiBsaWJlYXkzMi5kbGwgJFIwICRSMQorICBJZkVycm9ycyBub1NTTAorCisgIDsgQ29udGludWUgaW5zdGFsbGluZyBpZiB0aGUgRExMIHZlcnNpb24gaXMgPj0gMS4wLjAuMAorICBJbnRDbXBVIDY1NTM2ICRSMCBjb250aW51ZUluc3RhbGwgY29udGludWVJbnN0YWxsCisKKyAgTWVzc2FnZUJveCBNQl9PSyAiVGhpcyBwYWNrYWdlIGlzIGtub3duIG5vdCB0byB3b3JrIHdpdGggT3BlblNTTCB2ZXJzaW9ucyBiZWZvcmUgMS4wLjAuICBQbGVhc2UgaW5zdGFsbCB0aGUgbGF0ZXN0IE9wZW5TU0wgdmVyc2lvbiBmcm9tIGh0dHA6Ly93d3cuc2xwcm93ZWIuY29tL3Byb2R1Y3RzL1dpbjMyT3BlblNTTC5odG1sIGFuZCB0cnkgYWdhaW4uIgorICBRdWl0CisKICAgbm9TU0w6CiAgICAgTWVzc2FnZUJveCBNQl9ZRVNOT3xNQl9JQ09OUVVFU1RJT04gIk9wZW5TU0wgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGluc3RhbGxlZC4gIE9wZW5TU0wgaXMgcmVxdWlyZWQgZm9yIHRoaXMgaW5zdGFsbGF0aW9uIG9mIE5ldC1TTk1QLiAgUGxlYXNlIGluc3RhbGwgT3BlblNTTCBmcm9tIGh0dHA6Ly93d3cuc2xwcm93ZWIuY29tL3Byb2R1Y3RzL1dpbjMyT3BlblNTTC5odG1sIGFuZCB0cnkgYWdhaW4uICBXb3VsZCB5b3UgbGlrZSB0byBjb250aW51ZSBpbnN0YWxsaW5nIGFueXdheXM/IiBJRFlFUyBjb250aW51ZUluc3RhbGwKICAgUXVpdAorICAKICAgY29udGludWVJbnN0YWxsOgorICBQb3AgJFIxCiAgIFBvcCAkUjAKIEZ1bmN0aW9uRW5kCiAKZGlmZiAtLWdpdCBhL3dpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AgYi93aW4zMi9lbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UuZHNwCmluZGV4IDVlMTkzNjYuLjVhMjUyZjUgMTAwNjQ0Ci0tLSBhL3dpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AKKysrIGIvd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL2VuY29kZV9rZXljaGFuZ2UuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL2VuY29kZV9rZXljaGFuZ2UuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImVuY29kZV9rZXljaGFuZ2UgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9lbmNvZGVfa2V5Y2hhbmdlLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL2VuY29kZV9rZXljaGFuZ2UuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluIGIvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4KaW5kZXggMzBhNmNmNi4uYWJjZDgyZSAxMDA2NDQKLS0tIGEvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4KQEAgLTM1LDYgKzM1LDcgQEAKIAkiJChJTlRESVIpXHNjYWxhcl9ncm91cC5vYmoiIFwKIAkiJChJTlRESVIpXHNlcmlhbGl6ZS5vYmoiIFwKIAkiJChJTlRESVIpXHNubXBfYWdlbnQub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX2dldF9zdGF0aXN0aWMub2JqIiBcCiAJIiQoSU5URElSKVxzbm1wX3ZhcnMub2JqIiBcCiAJIiQoSU5URElSKVxzdGFzaF9jYWNoZS5vYmoiIFwKIAkiJChJTlRESVIpXHN0YXNoX3RvX25leHQub2JqIiBcCkBAIC0yMzYsNiArMjM3LDEyIEBACiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKK1NPVVJDRT0uLlwuLlxhZ2VudFxoZWxwZXJzXHNubXBfZ2V0X3N0YXRpc3RpYy5jCisKKyIkKElOVERJUilcc25tcF9nZXRfc3RhdGlzdGljLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKwogU09VUkNFPS4uXC4uXGFnZW50XGhlbHBlcnNcc3Rhc2hfY2FjaGUuYwogCiAiJChJTlRESVIpXHN0YXNoX2NhY2hlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKZGlmZiAtLWdpdCBhL3dpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRzcCBiL3dpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRzcAppbmRleCA4OTJlOGQzLi42MzY0MmMyIDEwMDY0NAotLS0gYS93aW4zMi9saWJhZ2VudC9saWJhZ2VudC5kc3AKKysrIGIvd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwCkBAIC0xNzcsNiArMTc3LDEwIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Li5cLi5cYWdlbnRcaGVscGVyc1xzbm1wX2dldF9zdGF0aXN0aWMuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxhZ2VudFxoZWxwZXJzXHN0YXNoX2NhY2hlLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCmRpZmYgLS1naXQgYS93aW4zMi9saWJzbm1wL01ha2VmaWxlLmluIGIvd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbgppbmRleCA1MWY1ZDRmLi45OGQ4M2M4IDEwMDY0NAotLS0gYS93aW4zMi9saWJzbm1wL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4KQEAgLTE3LDcgKzE3LDYgQEAKIAkiJChJTlRESVIpXGNhbGxiYWNrLm9iaiIgXAogCSIkKElOVERJUilcY2hlY2tfdmFyYmluZC5vYmoiIFwKIAkiJChJTlRESVIpXGNsb3NlZGlyLm9iaiIgXAotCSIkKElOVERJUilcY211X2NvbXBhdC5vYmoiIFwKIAkiJChJTlRESVIpXGNvbnRhaW5lci5vYmoiIFwKIAkiJChJTlRESVIpXGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkub2JqIiBcCiAJIiQoSU5URElSKVxjb250YWluZXJfaXRlcmF0b3Iub2JqIiBcCkBAIC05NSw5ICs5NCw5IEBACiAKIENQUD1jbC5leGUKICFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0VIc2MgL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvRUhzYyAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAhRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi1DUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0VIc2MgL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogIUVORElGCiAKIC5jeyQoSU5URElSKX0ub2JqOjoKQEAgLTE1OCwxMiArMTU3LDYgQEAKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIAotU09VUkNFPS4uXC4uXHNubXBsaWJcY211X2NvbXBhdC5jCi0KLSIkKElOVERJUilcY211X2NvbXBhdC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXGNvbnRhaW5lci5jCiAKICIkKElOVERJUilcY29udGFpbmVyLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKZGlmZiAtLWdpdCBhL3dpbjMyL2xpYnNubXAvbGlic25tcC5kc3AgYi93aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwCmluZGV4IDY0NDg4MDIuLjIzODYzMzEgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXAvbGlic25tcC5kc3AKKysrIGIvd2luMzIvbGlic25tcC9saWJzbm1wLmRzcApAQCAtMTAxLDEwICsxMDEsNiBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPS4uXC4uXHNubXBsaWJcY211X2NvbXBhdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPS4uXC4uXHNubXBsaWJcY29udGFpbmVyLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCkBAIC0zNjksMTAgKzM2NSw2IEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Ii4uXC4uXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxjbXVfY29tcGF0LmgiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQogU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcY29udGFpbmVyLmgiDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpkaWZmIC0tZ2l0IGEvd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4gYi93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbgppbmRleCAzMWFlMWJkLi4wYWFmNDFiIDEwMDY0NAotLS0gYS93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbgpAQCAtMiw3ICsyLDYgQEAKIENGRz0KIE9VVERJUj0KIElOVERJUj0KLVNTTD0KIFNESz0KIAogIUlGICIkKE9TKSIgPT0gIldpbmRvd3NfTlQiCkBAIC0xOCw3ICsxNyw2IEBACiAJIiQoSU5URElSKVxjYWxsYmFjay5vYmoiIFwKIAkiJChJTlRESVIpXGNoZWNrX3ZhcmJpbmQub2JqIiBcCiAJIiQoSU5URElSKVxjbG9zZWRpci5vYmoiIFwKLQkiJChJTlRESVIpXGNtdV9jb21wYXQub2JqIiBcCiAJIiQoSU5URElSKVxjb250YWluZXIub2JqIiBcCiAJIiQoSU5URElSKVxjb250YWluZXJfYmluYXJ5X2FycmF5Lm9iaiIgXAogCSIkKElOVERJUilcY29udGFpbmVyX2l0ZXJhdG9yLm9iaiIgXApAQCAtMTc0LDEyICsxNzIsNiBAQAogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCi1TT1VSQ0U9Li5cLi5cc25tcGxpYlxjbXVfY29tcGF0LmMKLQotIiQoSU5URElSKVxjbXVfY29tcGF0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQogU09VUkNFPS4uXC4uXHNubXBsaWJcY29udGFpbmVyLmMKIAogIiQoSU5URElSKVxjb250YWluZXIub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgpkaWZmIC0tZ2l0IGEvd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwIGIvd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwCmluZGV4IDY0MDdkNDIuLjEyYzA0MTQgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcAorKysgYi93aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3AKQEAgLTEwOCwxMCArMTA4LDYgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KLVNPVVJDRT0uLlwuLlxzbm1wbGliXGNtdV9jb21wYXQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KIFNPVVJDRT0uLlwuLlxzbm1wbGliXGNvbnRhaW5lci5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtMzc2LDEwICszNzIsNiBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQotU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcY211X2NvbXBhdC5oIg0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KIFNPVVJDRT0iLi5cLi5caW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XGNvbnRhaW5lci5oIg0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KZGlmZiAtLWdpdCBhL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIGIvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKaW5kZXggN2Q2ZTNiNy4uMTYwODU2MyAxMDA2NDQKLS0tIGEvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKysrIGIvd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKQEAgLTUsMTIgKzUsMTQgQEAKICNkZWZpbmUgTkVUX1NOTVBfQ09ORklHX0gKIAogLyogX01TQ19WRVIgdmFsdWVzCi0gICAxNjAwID0gMTAuMCAoMjAxMCkKLSAgIDE1MDAgPSAgOS4wICgyMDA4KQotICAgMTQwMCA9ICA4LjAgKDIwMDUpCi0gICAxMzEwID0gIDcuMSAoMjAwMykKLSAgIDEzMDAgPSAgNy4wICgyMDAyKQotICAgMTIwMCA9ICA2LjAKKyAgIDE4MDAgPSBNU1ZDKysgMTIuMCAoVmlzdWFsIFN0dWRpbyAyMDEzKQorICAgMTcwMCA9IE1TVkMrKyAxMS4wIChWaXN1YWwgU3R1ZGlvIDIwMTIpCisgICAxNjAwID0gTVNWQysrIDEwLjAgKFZpc3VhbCBTdHVkaW8gMjAxMCkKKyAgIDE1MDAgPSBNU1ZDKysgIDkuMCAoVmlzdWFsIFN0dWRpbyAyMDA4KQorICAgMTQwMCA9IE1TVkMrKyAgOC4wIChWaXN1YWwgU3R1ZGlvIDIwMDUpCisgICAxMzEwID0gTVNWQysrICA3LjEgKFZpc3VhbCBTdHVkaW8gMjAwMykKKyAgIDEzMDAgPSBNU1ZDKysgIDcuMCAoVmlzdWFsIFN0dWRpbyAyMDAyKQorICAgMTIwMCA9IE1TVkMrKyAgNi4wCiAqLwogCiAjaWZkZWYgX01TQ19WRVIKQEAgLTE1ODIsMTUgKzE1ODQsMTQgQEAKICNpZm5kZWYgSEFWRV9TVERJTlRfSAogdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7CiB0eXBlZGVmIGNoYXIgaW50OF90OwotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsKLXR5cGVkZWYgc2hvcnQgaW50MTZfdDsKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQxNiB1aW50MTZfdDsKK3R5cGVkZWYgX19pbnQxNiBpbnQxNl90OwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDMyIHVpbnQzMl90OwotdHlwZWRlZiBsb25nIGludDMyX3Q7Cit0eXBlZGVmIF9faW50MzIgaW50MzJfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsKIHR5cGVkZWYgX19pbnQ2NCBpbnQ2NF90OwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnRtYXhfdDsKIHR5cGVkZWYgX19pbnQ2NCBpbnRtYXhfdDsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICB1aW50MTZfdDsKICNlbHNlIC8qIEhBVkVfU1RESU5UX0ggKi8KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNlbmRpZiAvKiBIQVZFX1NURElOVF9IICovCkBAIC0xNjE3LDEwICsxNjE4LDE3IEBACiAjZW5kaWYKIAogI2lmbmRlZiBfX2NwbHVzcGx1cworI2lmZGVmIF9NU0NfVkVSCisjcHJhZ21hIHdhcm5pbmcocHVzaCkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0ODA0KSAvLyAnLScgOiB1bnNhZmUgdXNlIG9mIHR5cGUgJ2Jvb2wnIGluIG9wZXJhdGlvbgorI2VuZGlmCiBlbnVtIHsKICAgICBuZXRzbm1wX2NvbXBpbGVfdGltZV91aW50cHRyX3Rfc2l6ZV9jaGVjawogICAgICAgICA9IHNpemVvZihzdHJ1Y3QgbmV0c25tcF9jb21waWxlX3RpbWVfdWludHB0cl90X3NpemVfY2hlY2tfcyB7IGludDotIShzaXplb2YodWludHB0cl90KSA9PSBzaXplb2Yodm9pZCopKTsgfSkKIH07CisjaWZkZWYgX01TQ19WRVIKKyNwcmFnbWEgd2FybmluZyhwb3ApCisjZW5kaWYKICNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGNsb3Nlc29ja2V0IGZ1bmN0aW9uLiAgKi8KQEAgLTE2NzcsNyArMTY4NSw3IEBACiAvKiBNU1ZDIE9wZW5TU0wgbGlua2VyIHNldHRpbmdzLiAqLwogI2lmIGRlZmluZWQoX01TQ19WRVIpCiAjICBpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpCi0jICAgIGlmZGVmIE5FVFNOTVBfVVNFX0RMTAorIyAgICBpZmRlZiBfRExMCiAjICAgICAgaWZkZWYgX0RFQlVHCiAjICAgICAgICBwcmFnbWEgY29tbWVudChsaWIsICJsaWJlYXkzMk1EZC5saWIiKQogIyAgICAgIGVsc2UKQEAgLTE2OTEsNiArMTY5OSw3IEBACiAjICAgICAgZW5kaWYKICMgICAgZW5kaWYKICMgICAgcHJhZ21hIGNvbW1lbnQobGliLCAiZ2RpMzIubGliIikKKyMgICAgcHJhZ21hIGNvbW1lbnQobGliLCAidXNlcjMyLmxpYiIpCiAjICBlbmRpZgogI2VuZGlmCiAKQEAgLTE3NTEsNyArMTc2MCwxMSBAQAogI2VuZGlmCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG91bGwnIGZ1bmN0aW9uLiAqLworI2lmIF9NU0NfVkVSID49IDE4MDAKKyNkZWZpbmUgSEFWRV9TVFJUT1VMTCAxCisjZWxzZQogLyogI3VuZGVmIEhBVkVfU1RSVE9VTEwgKi8KKyNlbmRpZgogCiAvKgogICogTW9kdWxlIGNvbmZpZ3VyYXRpb24gYW5kIGNvbnRyb2wgc3RhcnRzIGhlcmUuCmRpZmYgLS1naXQgYS93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiBiL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCmluZGV4IDA0YWE5OWMuLjk2OTM3MzAgMTAwNjQ0Ci0tLSBhL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCisrKyBiL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCkBAIC01LDEyICs1LDE0IEBACiAjZGVmaW5lIE5FVF9TTk1QX0NPTkZJR19ICiAKIC8qIF9NU0NfVkVSIHZhbHVlcwotICAgMTYwMCA9IDEwLjAgKDIwMTApCi0gICAxNTAwID0gIDkuMCAoMjAwOCkKLSAgIDE0MDAgPSAgOC4wICgyMDA1KQotICAgMTMxMCA9ICA3LjEgKDIwMDMpCi0gICAxMzAwID0gIDcuMCAoMjAwMikKLSAgIDEyMDAgPSAgNi4wCisgICAxODAwID0gTVNWQysrIDEyLjAgKFZpc3VhbCBTdHVkaW8gMjAxMykKKyAgIDE3MDAgPSBNU1ZDKysgMTEuMCAoVmlzdWFsIFN0dWRpbyAyMDEyKQorICAgMTYwMCA9IE1TVkMrKyAxMC4wIChWaXN1YWwgU3R1ZGlvIDIwMTApCisgICAxNTAwID0gTVNWQysrICA5LjAgKFZpc3VhbCBTdHVkaW8gMjAwOCkKKyAgIDE0MDAgPSBNU1ZDKysgIDguMCAoVmlzdWFsIFN0dWRpbyAyMDA1KQorICAgMTMxMCA9IE1TVkMrKyAgNy4xIChWaXN1YWwgU3R1ZGlvIDIwMDMpCisgICAxMzAwID0gTVNWQysrICA3LjAgKFZpc3VhbCBTdHVkaW8gMjAwMikKKyAgIDEyMDAgPSBNU1ZDKysgIDYuMAogKi8KIAogI2lmZGVmIF9NU0NfVkVSCkBAIC0xNTgyLDE1ICsxNTg0LDE0IEBACiAjaWZuZGVmIEhBVkVfU1RESU5UX0gKIHR5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90OwogdHlwZWRlZiBjaGFyIGludDhfdDsKLXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7Ci10eXBlZGVmIHNob3J0IGludDE2X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50MTYgdWludDE2X3Q7Cit0eXBlZGVmIF9faW50MTYgaW50MTZfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiB1aW50MzJfdDsKLXR5cGVkZWYgbG9uZyBpbnQzMl90OwordHlwZWRlZiBfX2ludDMyIGludDMyX3Q7CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0X3Q7CiB0eXBlZGVmIF9faW50NjQgaW50NjRfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50bWF4X3Q7CiB0eXBlZGVmIF9faW50NjQgaW50bWF4X3Q7Ci10eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgdWludDE2X3Q7CiAjZWxzZSAvKiBIQVZFX1NURElOVF9IICovCiAjaW5jbHVkZSA8c3RkaW50Lmg+CiAjZW5kaWYgLyogSEFWRV9TVERJTlRfSCAqLwpAQCAtMTYxNywxMCArMTYxOCwxNyBAQAogI2VuZGlmCiAKICNpZm5kZWYgX19jcGx1c3BsdXMKKyNpZmRlZiBfTVNDX1ZFUgorI3ByYWdtYSB3YXJuaW5nKHB1c2gpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDgwNCkgLy8gJy0nIDogdW5zYWZlIHVzZSBvZiB0eXBlICdib29sJyBpbiBvcGVyYXRpb24KKyNlbmRpZgogZW51bSB7CiAgICAgbmV0c25tcF9jb21waWxlX3RpbWVfdWludHB0cl90X3NpemVfY2hlY2sKICAgICAgICAgPSBzaXplb2Yoc3RydWN0IG5ldHNubXBfY29tcGlsZV90aW1lX3VpbnRwdHJfdF9zaXplX2NoZWNrX3MgeyBpbnQ6LSEoc2l6ZW9mKHVpbnRwdHJfdCkgPT0gc2l6ZW9mKHZvaWQqKSk7IH0pCiB9OworI2lmZGVmIF9NU0NfVkVSCisjcHJhZ21hIHdhcm5pbmcocG9wKQorI2VuZGlmCiAjZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBjbG9zZXNvY2tldCBmdW5jdGlvbi4gICovCkBAIC0xNjc3LDcgKzE2ODUsNyBAQAogLyogTVNWQyBPcGVuU1NMIGxpbmtlciBzZXR0aW5ncy4gKi8KICNpZiBkZWZpbmVkKF9NU0NfVkVSKQogIyAgaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKQotIyAgICBpZmRlZiBORVRTTk1QX1VTRV9ETEwKKyMgICAgaWZkZWYgX0RMTAogIyAgICAgIGlmZGVmIF9ERUJVRwogIyAgICAgICAgcHJhZ21hIGNvbW1lbnQobGliLCAibGliZWF5MzJNRGQubGliIikKICMgICAgICBlbHNlCkBAIC0xNjkxLDYgKzE2OTksNyBAQAogIyAgICAgIGVuZGlmCiAjICAgIGVuZGlmCiAjICAgIHByYWdtYSBjb21tZW50KGxpYiwgImdkaTMyLmxpYiIpCisjICAgIHByYWdtYSBjb21tZW50KGxpYiwgInVzZXIzMi5saWIiKQogIyAgZW5kaWYKICNlbmRpZgogCkBAIC0xNzUxLDcgKzE3NjAsMTEgQEAKICNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdWxsJyBmdW5jdGlvbi4gKi8KKyNpZiBfTVNDX1ZFUiA+PSAxODAwCisjZGVmaW5lIEhBVkVfU1RSVE9VTEwKKyNlbHNlCiAvKiAjdW5kZWYgSEFWRV9TVFJUT1VMTCAqLworI2VuZGlmCiAKIC8qCiAgKiBNb2R1bGUgY29uZmlndXJhdGlvbiBhbmQgY29udHJvbCBzdGFydHMgaGVyZS4KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcCBiL3dpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcAppbmRleCBmZTVlNWFlLi4zOTU5OWRiIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wYnVsa2dldC9zbm1wYnVsa2dldC5kc3AKKysrIGIvd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGJ1bGtnZXQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBidWxrZ2V0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wYnVsa2dldCAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBidWxrZ2V0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBidWxrZ2V0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLmRzcCBiL3dpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwCmluZGV4IGVhOGJiMGMuLjkxZTk0ZDMgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwCisrKyBiL3dpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGJ1bGt3YWxrLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wYnVsa3dhbGsuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBidWxrd2FsayAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBidWxrd2Fsay5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wYnVsa3dhbGsuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBkL01ha2VmaWxlLmluIGIvd2luMzIvc25tcGQvTWFrZWZpbGUuaW4KaW5kZXggNjUyZGQ4MC4uMWIxYjNhYyAxMDA2NDQKLS0tIGEvd2luMzIvc25tcGQvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvc25tcGQvTWFrZWZpbGUuaW4KQEAgLTMsNyArMyw2IEBACiBPVVRESVI9CiBJTlRESVI9CiBTREs9Ci1TU0w9CiBMSU5LVFlQRT0KIAogIyBTZXQgdG8gMSB0byBhbGxvdyB0aGUgYnVpbGRpbmcgdXNpbmcgdGhlIERMTCB2ZXJzaW9uIG9mIFNOTVBMSUIuCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wZC9zbm1wZC5kc3AgYi93aW4zMi9zbm1wZC9zbm1wZC5kc3AKaW5kZXggNTUzNDMwNi4uNDVlMmNhZCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcGQvc25tcGQuZHNwCisrKyBiL3dpbjMyL3NubXBkL3NubXBkLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBkLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wZC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcGQgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS5kc3AgYi93aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLmRzcAppbmRleCBiMTdiODIyLi43ZjVhNWQzIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLmRzcAorKysgYi93aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBkZWx0YS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGRlbHRhLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wZGVsdGEgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZGVsdGEuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcGRlbHRhLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wZGYvc25tcGRmLmRzcCBiL3dpbjMyL3NubXBkZi9zbm1wZGYuZHNwCmluZGV4IDg4YzNmNmQuLmUyZTRiOTQgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBkZi9zbm1wZGYuZHNwCisrKyBiL3dpbjMyL3NubXBkZi9zbm1wZGYuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGRmLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wZGYuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBkZiAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBkZi5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZGYuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBnZXQvc25tcGdldC5kc3AgYi93aW4zMi9zbm1wZ2V0L3NubXBnZXQuZHNwCmluZGV4IDY0OTgwZWQuLjA2MDMyMzIgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBnZXQvc25tcGdldC5kc3AKKysrIGIvd2luMzIvc25tcGdldC9zbm1wZ2V0LmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBnZXQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBnZXQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBnZXQgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wZ2V0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBnZXQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcCBiL3dpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcAppbmRleCAyMzMxOTlkLi5jYjYzYzg0IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC5kc3AKKysrIGIvd2luMzIvc25tcGdldG5leHQvc25tcGdldG5leHQuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGdldG5leHQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBnZXRuZXh0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wZ2V0bmV4dCAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBnZXRuZXh0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBnZXRuZXh0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiBiL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCmluZGV4IGUyN2Q5N2QuLjA1YTAxZTggMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCisrKyBiL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCkBAIC0yLDcgKzIsNiBAQAogQ0ZHPQogT1VURElSPQogSU5URElSPQotU1NMPQogTElOS1RZUEU9CiAKICMgU2V0IHRvIDEgdG8gYWxsb3cgdGhlIGJ1aWxkaW5nIHVzaW5nIHRoZSBETEwgdmVyc2lvbiBvZiBTTk1QTElCLgpAQCAtMjMsOCArMjIsMTAgQEAKIAktQGVyYXNlICIkKElOVERJUilcaWYub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0Lm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcaW5ldDYub2JqIgorCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0eC5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXG1haW4ub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxyb3V0ZS5vYmoiCisJLUBlcmFzZSAiJChJTlRESVIpXHJvdXRleC5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXGZmcy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgogCS1AZXJhc2UgIiQoSU5URElSKVx3aW5zdHViLm9iaiIKQEAgLTg2LDggKzg3LDEwIEBACiAJIiQoSU5URElSKVxpZi5vYmoiIFwKIAkiJChJTlRESVIpXGluZXQub2JqIiBcCiAJIiQoSU5URElSKVxpbmV0Ni5vYmoiIFwKKwkiJChJTlRESVIpXGluZXR4Lm9iaiIgXAogCSIkKElOVERJUilcbWFpbi5vYmoiIFwKIAkiJChJTlRESVIpXHJvdXRlLm9iaiIgXAorCSIkKElOVERJUilccm91dGV4Lm9iaiIgXAogCSIkKElOVERJUilcZmZzLm9iaiIgXAogCSIkKElOVERJUilcd2luc3R1Yi5vYmoiCiAKQEAgLTExNiwxMCArMTE5LDE0IEBACiAJLUBlcmFzZSAiJChJTlRESVIpXGluZXQuc2JyIgogCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0Ni5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXGluZXQ2LnNiciIKKwktQGVyYXNlICIkKElOVERJUilcaW5ldHgub2JqIgorCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0eC5zYnIiCiAJLUBlcmFzZSAiJChJTlRESVIpXG1haW4ub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxtYWluLnNiciIKIAktQGVyYXNlICIkKElOVERJUilccm91dGUub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxyb3V0ZS5zYnIiCisJLUBlcmFzZSAiJChJTlRESVIpXHJvdXRleC5vYmoiCisJLUBlcmFzZSAiJChJTlRESVIpXHJvdXRleC5zYnIiCiAJLUBlcmFzZSAiJChJTlRESVIpXGZmcy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXGZmcy5zYnIiCiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgpAQCAtMTgyLDggKzE4OSwxMCBAQAogCSIkKElOVERJUilcaWYuc2JyIiBcCiAJIiQoSU5URElSKVxpbmV0LnNiciIgXAogCSIkKElOVERJUilcaW5ldDYuc2JyIiBcCisJIiQoSU5URElSKVxpbmV0eC5zYnIiIFwKIAkiJChJTlRESVIpXG1haW4uc2JyIiBcCiAJIiQoSU5URElSKVxyb3V0ZS5zYnIiIFwKKwkiJChJTlRESVIpXHJvdXRleC5zYnIiIFwKIAkiJChJTlRESVIpXGZmcy5zYnIiIFwKIAkiJChJTlRESVIpXHdpbnN0dWIuc2JyIgogCkBAIC0xOTgsOCArMjA3LDEwIEBACiAJIiQoSU5URElSKVxpZi5vYmoiIFwKIAkiJChJTlRESVIpXGluZXQub2JqIiBcCiAJIiQoSU5URElSKVxpbmV0Ni5vYmoiIFwKKwkiJChJTlRESVIpXGluZXR4Lm9iaiIgXAogCSIkKElOVERJUilcbWFpbi5vYmoiIFwKIAkiJChJTlRESVIpXHJvdXRlLm9iaiIgXAorCSIkKElOVERJUilccm91dGV4Lm9iaiIgXAogCSIkKElOVERJUilcZmZzLm9iaiIgXAogCSIkKElOVERJUilcd2luc3R1Yi5vYmoiCiAKQEAgLTI4Myw2ICsyOTQsMTEgQEAKIAogIUVORElGIAogCitTT1VSQ0U9Li5cLi5cYXBwc1wkKFBST0dOQU1FKVxpbmV0eC5jCisKKyIkKElOVERJUilcaW5ldHgub2JqIgkiJChJTlRESVIpXGluZXR4LnNiciIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKIFNPVVJDRT0uLlwuLlxhcHBzXCQoUFJPR05BTUUpXG1haW4uYwogCiAhSUYgICIkKENGRykiID09ICJyZWxlYXNlIgpAQCAtMzE5LDYgKzMzNSwxMSBAQAogCiAhRU5ESUYgCiAKK1NPVVJDRT0uLlwuLlxhcHBzXCQoUFJPR05BTUUpXHJvdXRleC5jCisKKyIkKElOVERJUilccm91dGV4Lm9iaiIJIiQoSU5URElSKVxyb3V0ZXguc2JyIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKwogU09VUkNFPS4uXC4uXGFwcHNcJChQUk9HTkFNRSlcZmZzLmMKIAogIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LmRzcCBiL3dpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LmRzcApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDI1ZWMwMzEuLjJlZGE1NzUKLS0tIGEvd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQuZHNwCisrKyBiL3dpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXBuZXRzdGF0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wbmV0c3RhdC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcG5ldHN0YXQgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wbmV0c3RhdC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wbmV0c3RhdC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpAQCAtODQsNiArODQsMTAgQEAKICMgTmFtZSAic25tcG5ldHN0YXQgLSBXaW4zMiBEZWJ1ZyINCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQorU09VUkNFPS4uXC4uXGFwcHNcc25tcG5ldHN0YXRcZmZzLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCiBTT1VSQ0U9Li5cLi5cYXBwc1xzbm1wbmV0c3RhdFxpZi5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtOTYsNiArMTAwLDEwIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Li5cLi5cYXBwc1xzbm1wbmV0c3RhdFxpbmV0eC5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQogU09VUkNFPS4uXC4uXGFwcHNcc25tcG5ldHN0YXRcbWFpbi5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtMTA0LDcgKzExMiw3IEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Li5cLi5cYXBwc1xzbm1wbmV0c3RhdFxmZnMuYw0KK1NPVVJDRT0uLlwuLlxhcHBzXHNubXBuZXRzdGF0XHJvdXRleC5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHNldC9zbm1wc2V0LmRzcCBiL3dpbjMyL3NubXBzZXQvc25tcHNldC5kc3AKaW5kZXggZmRlY2EzMC4uYWQwZjUwOSAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHNldC9zbm1wc2V0LmRzcAorKysgYi93aW4zMi9zbm1wc2V0L3NubXBzZXQuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHNldC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHNldC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHNldCAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBzZXQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHNldC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHNtX2luaXQuaCBiL3dpbjMyL3NubXBzbV9pbml0LmgKaW5kZXggODAxNWZmNi4uYzhhNDEwYiAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHNtX2luaXQuaAorKysgYi93aW4zMi9zbm1wc21faW5pdC5oCkBAIC0xLDIgKzEgQEAKLS8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBjb25maWd1cmUuICBEbyBub3QgbW9kaWZ5IGJ5IGhhbmQuICovCiBpbml0X3VzbSgpOwpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHNtX3NodXRkb3duLmggYi93aW4zMi9zbm1wc21fc2h1dGRvd24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTBjNTUxCi0tLSAvZGV2L251bGwKKysrIGIvd2luMzIvc25tcHNtX3NodXRkb3duLmgKQEAgLTAsMCArMSBAQAorc2h1dGRvd25fdXNtKCk7CmRpZmYgLS1naXQgYS93aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwIGIvd2luMzIvc25tcHN0YXR1cy9zbm1wc3RhdHVzLmRzcAppbmRleCAxYjY4MzczLi5lNmE0MTAwIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwCisrKyBiL3dpbjMyL3NubXBzdGF0dXMvc25tcHN0YXR1cy5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wc3RhdHVzLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wc3RhdHVzLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wc3RhdHVzIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHN0YXR1cy5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wc3RhdHVzLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcCBiL3dpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUuZHNwCmluZGV4IDc1Zjk2NGYuLjFkZmMxMzggMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUuZHNwCisrKyBiL3dpbjMyL3NubXB0YWJsZS9zbm1wdGFibGUuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHRhYmxlLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdGFibGUuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXB0YWJsZSAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB0YWJsZS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdGFibGUuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LmRzcCBiL3dpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LmRzcAppbmRleCBkZmIwY2YxLi44OWMwOGU5IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC5kc3AKKysrIGIvd2luMzIvc25tcHRlc3Qvc25tcHRlc3QuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHRlc3QuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB0ZXN0LmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wdGVzdCAtIFdpbjMyIERlYnVnIg0KIA0KQEAgLTc0LDcgKzc0LDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB0ZXN0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXB0ZXN0LmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwIGIvd2luMzIvc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLmRzcAppbmRleCBhM2ViZGU1Li5jM2VjYTAyIDEwMDY0NAotLS0gYS93aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwCisrKyBiL3dpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhbnNsYXRlLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhbnNsYXRlLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wdHJhbnNsYXRlIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHRyYW5zbGF0ZS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdHJhbnNsYXRlLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AgYi93aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AKaW5kZXggOGQyN2VlMS4uYzM0ZmZkOCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHRyYXAvc25tcHRyYXAuZHNwCisrKyBiL3dpbjMyL3NubXB0cmFwL3NubXB0cmFwLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB0cmFwLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhcC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHRyYXAgLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdHJhcC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdHJhcC5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluIGIvd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluCmluZGV4IGRjNGZlNTAuLjJmYTVjY2IgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW4KQEAgLTIsNyArMiw2IEBACiBDRkc9CiBPVVRESVI9CiBJTlRESVI9Ci1TU0w9CiBMSU5LVFlQRT0KIAogIyBTZXQgdG8gMSB0byBhbGxvdyB0aGUgYnVpbGRpbmcgdXNpbmcgdGhlIERMTCB2ZXJzaW9uIG9mIFNOTVBMSUIuCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdHJhcGQvc25tcHRyYXBkLmRzcCBiL3dpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwCmluZGV4IDUwMzkxOGEuLjlmNDkzODkgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwCisrKyBiL3dpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwCkBAIC01MCw3ICs1MCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcHRyYXBkLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdHJhcGQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB0cmFwZC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHRyYXBkIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXB0cmFwZC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdHJhcGQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHRyYXBkLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdXNtL3NubXB1c20uZHNwIGIvd2luMzIvc25tcHVzbS9zbm1wdXNtLmRzcAppbmRleCBkYjQzZjJlLi5hMWMwMTI0IDEwMDY0NAotLS0gYS93aW4zMi9zbm1wdXNtL3NubXB1c20uZHNwCisrKyBiL3dpbjMyL3NubXB1c20vc25tcHVzbS5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdXNtLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdXNtLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KIA0KICFFTFNFSUYgICIkKENGRykiID09ICJzbm1wdXNtIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHVzbS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdXNtLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KIA0KICFFTkRJRiANCiANCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaCBiL3dpbjMyL3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3NjNjZjgKLS0tIC9kZXYvbnVsbAorKysgYi93aW4zMi9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaApAQCAtMCwwICsxIEBACisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmg+CmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS5kc3AgYi93aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS5kc3AKaW5kZXggMDg1NjgzMi4uMmZkNTNmZCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHZhY20vc25tcHZhY20uZHNwCisrKyBiL3dpbjMyL3NubXB2YWNtL3NubXB2YWNtLmRzcApAQCAtNTAsNyArNTAsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6bm9uZSAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9yZWxlYXNlL3NubXB2YWNtLmV4ZSIgL2xpYnBhdGg6Ii4uL2xpYi9yZWxlYXNlIg0KKyMgQUREIExJTkszMiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wdmFjbS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCiANCiAhRUxTRUlGICAiJChDRkcpIiA9PSAic25tcHZhY20gLSBXaW4zMiBEZWJ1ZyINCiANCkBAIC03NCw3ICs3NCw3IEBACiAjIEFERCBCU0MzMiAvbm9sb2dvDQogTElOSzMyPWxpbmsuZXhlDQogIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdmFjbS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi9kZWJ1Zy9zbm1wdmFjbS5leGUiIC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uL2xpYi9kZWJ1ZyINCiANCiAhRU5ESUYgDQogDQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcHdhbGsvc25tcHdhbGsuZHNwIGIvd2luMzIvc25tcHdhbGsvc25tcHdhbGsuZHNwCmluZGV4IDVkODE5NTcuLjY3NTk4ZjEgMTAwNjQ0Ci0tLSBhL3dpbjMyL3NubXB3YWxrL3NubXB3YWxrLmRzcAorKysgYi93aW4zMi9zbm1wd2Fsay9zbm1wd2Fsay5kc3AKQEAgLTUwLDcgKzUwLDcgQEAKICMgQUREIEJTQzMyIC9ub2xvZ28NCiBMSU5LMzI9bGluay5leGUNCiAjIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBhZHZhcGkzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBuZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOm5vbmUgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vcmVsZWFzZS9zbm1wd2Fsay5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSINCisjIEFERCBMSU5LMzIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcHdhbGsuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQogDQogIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXB3YWxrIC0gV2luMzIgRGVidWciDQogDQpAQCAtNzQsNyArNzQsNyBAQAogIyBBREQgQlNDMzIgL25vbG9nbw0KIExJTkszMj1saW5rLmV4ZQ0KICMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHdhbGsuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQorIyBBREQgTElOSzMyIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vZGVidWcvc25tcHdhbGsuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciDQogDQogIUVORElGIA0KIA0K