ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQgYi9ydW50aW1lL2RvYy9jaGFuZ2UudHh0CmluZGV4IDYzNDYxZWUuLjkzYzU1NGYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQKKysrIGIvcnVudGltZS9kb2MvY2hhbmdlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpjaGFuZ2UudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTUKKypjaGFuZ2UudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTEwNDgsNyArMTA0OCw3IEBACiBmaWxsZWQgaW4gYW5kIHRoZSA8RHJvcD4gcHNldWRvIGtleSBpcyBzZW50IGZvciBub3RpZmljYXRpb24uICBZb3UgY2FuIHJlbWFwCiB0aGlzIGtleSBpZiB5b3Ugd2FudDsgdGhlIGRlZmF1bHQgYWN0aW9uIChmb3IgYWxsIG1vZGVzKSBpcyB0byBpbnNlcnQgdGhlCiBjb250ZW50cyBvZiB0aGUgIn4gcmVnaXN0ZXIgYXQgdGhlIGN1cnNvciBwb3NpdGlvbi4gIHtub3QgaW4gVml9Ci17b25seSBhdmFpbGFibGUgd2hlbiBjb21waWxlZCB3aXRoIHRoZSB8K2RuZHwgZmVhdHVyZSwgY3VyZW50bHkgb25seSB3aXRoIHRoZQore29ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCtkbmR8IGZlYXR1cmUsIGN1cnJlbnRseSBvbmx5IHdpdGggdGhlCiBHVEsgR1VJfQogCiBOb3RlOiBUaGUgIn4gcmVnaXN0ZXIgaXMgb25seSB1c2VkIHdoZW4gZHJvcHBpbmcgcGxhaW4gdGV4dCBvbnRvIFZpbS4KQEAgLTExMzgsNiArMTEzOCwxMyBAQAogCQkJdGhlIHRleHQuICBIb3dldmVyLCAnZm9ybWF0cHJnJyBpcyBub3QgdXNlZC4KIAkJCXtub3QgaW4gVml9CiAKK2d3Z3cJCQkJCQkJKmd3Z3cqICpnd3cqCitnd3cJCQlGb3JtYXQgdGhlIGN1cnJlbnQgbGluZSBhcyB3aXRoICJndyIuICB7bm90IGluIFZpfQorCisJCQkJCQkJKnZfZ3cqCit7VmlzdWFsfWd3CQlGb3JtYXQgdGhlIGhpZ2hsaWdodGVkIHRleHQgYXMgd2l0aCAiZ3ciLiAgKGZvcgorCQkJe1Zpc3VhbH0gc2VlIHxWaXN1YWwtbW9kZXwpLiAge25vdCBpbiBWaX0KKwogRXhhbXBsZTogVG8gZm9ybWF0IHRoZSBjdXJyZW50IHBhcmFncmFwaCB1c2U6CQkJKmdxYXAqICA+CiAJZ3FhcAogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9lZGl0aW5nLnR4dCBiL3J1bnRpbWUvZG9jL2VkaXRpbmcudHh0CmluZGV4IDgyN2Y3ODAuLjRmZWVmNDEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2VkaXRpbmcudHh0CisrKyBiL3J1bnRpbWUvZG9jL2VkaXRpbmcudHh0CkBAIC0xLDQgKzEsNCBAQAotKmVkaXRpbmcudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1biAxNAorKmVkaXRpbmcudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1biAxNwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMzQwLDEwICszNDAsMTEgQEAKIAogCQkJCQkJCSpgPSoKIFlvdSBjYW4gaGF2ZSB0aGUgYmFja3RpY2tzIGV4cGFuZGVkIGFzIGEgVmltIGV4cHJlc3Npb24sIGluc3RlYWQgb2YKLWFuIGV4dGVybmFsIGNvbW1hbmQsIGJ5IHVzaW5nIHRoZSBzeW50YXggYD17ZXhwcn1gIGUuZy4gPgorYW4gZXh0ZXJuYWwgY29tbWFuZCwgYnkgdXNpbmcgdGhlIHN5bnRheCBgPXtleHByfWAgZS5nLjogPgogCTpsZXQgZm9vPSdiYXInCiAJOmUgYD1mb28gLiAiLmMiIGAKLWVkaXRzICJiYXIuYyIuICBOb3RlIHRoYXQgdGhlIGV4cHJlc3Npb24gY2Fubm90IGNvbnRhaW4gYSBiYWNrdGljay4KK1RoaXMgd2lsbCBlZGl0ICJiYXIuYyIuICBUaGUgZXhwcmVzc2lvbiBjYW4gY29udGFpbiBqdXN0IGFib3V0IGFueXRoaW5nLCB0aHVzCit0aGlzIGNhbiBhbHNvIGJlIHVzZWQgdG8gYXZvaWQgdGhlIHNwZWNpYWwgbWVhbmluZyBvZiAnIicsICd8JywgJyUnIGFuZCAnIycuCiAKIAkJCQkJCQkqKytvcHQqICpbKytvcHRdKgogVGhlIFsrK29wdF0gYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gZm9yY2UgdGhlIHZhbHVlIG9mICdmaWxlZm9ybWF0JyBvcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZXZhbC50eHQgYi9ydW50aW1lL2RvYy9ldmFsLnR4dAppbmRleCA0Njg1ZmY1Li40NjJkNjZiIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9ldmFsLnR4dAorKysgYi9ydW50aW1lL2RvYy9ldmFsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpldmFsLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBNYXkgMTgKKypldmFsLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMjAKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTUxNSw3ICs1MTUsNyBAQAogCWNvbW1hbmQgVGljayBsZXQgczpjb3VudGVyID0gczpjb3VudGVyICsgMSB8IGVjaG8gczpjb3VudGVyCiAKIFdoZW4gY2FsbGluZyBhIGZ1bmN0aW9uIGFuZCBpbnZva2luZyBhIHVzZXItZGVmaW5lZCBjb21tYW5kLCB0aGUgY29udGV4dCBmb3IKLXNjcmlwdCB2YXJpYWxiZXMgaXMgc2V0IHRvIHRoZSBzY3JpcHQgd2hlcmUgdGhlIGZ1bmN0aW9uIG9yIGNvbW1hbmQgd2FzCitzY3JpcHQgdmFyaWFibGVzIGlzIHNldCB0byB0aGUgc2NyaXB0IHdoZXJlIHRoZSBmdW5jdGlvbiBvciBjb21tYW5kIHdhcwogZGVmaW5lZC4KIAogVGhlIHNjcmlwdCB2YXJpYWJsZXMgYXJlIGFsc28gYXZhaWxhYmxlIHdoZW4gYSBmdW5jdGlvbiBpcyBkZWZpbmVkIGluc2lkZSBhCkBAIC05NzIsOSArOTcyLDEzIEBACiBidWZleGlzdHMoe2V4cHJ9KQkJCQkJKmJ1ZmV4aXN0cygpKgogCQlUaGUgcmVzdWx0IGlzIGEgTnVtYmVyLCB3aGljaCBpcyBub24temVybyBpZiBhIGJ1ZmZlciBjYWxsZWQKIAkJe2V4cHJ9IGV4aXN0cy4KKwkJSWYgdGhlIHtleHByfSBhcmd1bWVudCBpcyBhIG51bWJlciwgYnVmZmVyIG51bWJlcnMgYXJlIHVzZWQuCiAJCUlmIHRoZSB7ZXhwcn0gYXJndW1lbnQgaXMgYSBzdHJpbmcgaXQgbXVzdCBtYXRjaCBhIGJ1ZmZlciBuYW1lCi0JCWV4YWN0bHkuCi0JCUlmIHRoZSB7ZXhwcn0gYXJndW1lbnQgaXMgYSBudW1iZXIgYnVmZmVyIG51bWJlcnMgYXJlIHVzZWQuCisJCWV4YWN0bHkuICBUaGUgbmFtZSBjYW4gYmU6CisJCS0gUmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgorCQktIEEgZnVsbCBwYXRoLgorCQktIFRoZSBuYW1lIG9mIGEgYnVmZmVyIHdpdGggJ2ZpbGV0eXBlJyBzZXQgdG8gIm5vZmlsZSIuCisJCS0gQSBVUkwgbmFtZS4KIAkJVW5saXN0ZWQgYnVmZmVycyB3aWxsIGJlIGZvdW5kLgogCQlOb3RlIHRoYXQgaGVscCBmaWxlcyBhcmUgbGlzdGVkIGJ5IHRoZWlyIHNob3J0IG5hbWUgaW4gdGhlCiAJCW91dHB1dCBvZiB8OmJ1ZmZlcnN8LCBidXQgYnVmZXhpc3RzKCkgcmVxdWlyZXMgdXNpbmcgdGhlaXIKQEAgLTk4NywxMiArOTkxLDEyIEBACiBidWZsaXN0ZWQoe2V4cHJ9KQkJCQkJKmJ1Zmxpc3RlZCgpKgogCQlUaGUgcmVzdWx0IGlzIGEgTnVtYmVyLCB3aGljaCBpcyBub24temVybyBpZiBhIGJ1ZmZlciBjYWxsZWQKIAkJe2V4cHJ9IGV4aXN0cyBhbmQgaXMgbGlzdGVkIChoYXMgdGhlICdidWZsaXN0ZWQnIG9wdGlvbiBzZXQpLgotCQlUaGUge2V4cHJ9IGFyZ3VtZW50IGlzIHVzZWQgbGlrZSB3aXRoIGJ1ZmV4aXN0cygpLgorCQlUaGUge2V4cHJ9IGFyZ3VtZW50IGlzIHVzZWQgbGlrZSB3aXRoIHxidWZleGlzdHMoKXwuCiAKIGJ1ZmxvYWRlZCh7ZXhwcn0pCQkJCQkqYnVmbG9hZGVkKCkqCiAJCVRoZSByZXN1bHQgaXMgYSBOdW1iZXIsIHdoaWNoIGlzIG5vbi16ZXJvIGlmIGEgYnVmZmVyIGNhbGxlZAogCQl7ZXhwcn0gZXhpc3RzIGFuZCBpcyBsb2FkZWQgKHNob3duIGluIGEgd2luZG93IG9yIGhpZGRlbikuCi0JCVRoZSB7ZXhwcn0gYXJndW1lbnQgaXMgdXNlZCBsaWtlIHdpdGggYnVmZXhpc3RzKCkuCisJCVRoZSB7ZXhwcn0gYXJndW1lbnQgaXMgdXNlZCBsaWtlIHdpdGggfGJ1ZmV4aXN0cygpfC4KIAogYnVmbmFtZSh7ZXhwcn0pCQkJCQkJKmJ1Zm5hbWUoKSoKIAkJVGhlIHJlc3VsdCBpcyB0aGUgbmFtZSBvZiBhIGJ1ZmZlciwgYXMgaXQgaXMgZGlzcGxheWVkIGJ5IHRoZQpAQCAtMTIzMyw2ICsxMjM3LDkgQEAKIAkJVGhpcyBmdW5jdGlvbiBjaGVja3MgaWYgYW4gZXhlY3V0YWJsZSB3aXRoIHRoZSBuYW1lIHtleHByfQogCQlleGlzdHMuICB7ZXhwcn0gbXVzdCBiZSB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbSB3aXRob3V0IGFueQogCQlhcmd1bWVudHMuICBleGVjdXRhYmxlKCkgdXNlcyB0aGUgbm9ybWFsICRQQVRILgorCQlPbiBNUy1ET1MgYW5kIE1TLVdpbmRvd3MgdGhlICIuZXhlIiwgIi5iYXQiLCBldGMuIG11c3QgYmUKKwkJaW5jbHVkZWQuICBJdCBvbmx5IGNoZWNrcyBpZiB0aGUgZmlsZSBleGlzdHMgYW5kIGlzIG5vdCBhCisJCWRpcmVjdG9yeSwgbm90IGlmIGl0J3MgcmVhbGx5IGV4ZWN1dGFibGUuCiAJCVRoZSByZXN1bHQgaXMgYSBOdW1iZXI6CiAJCQkxCWV4aXN0cwogCQkJMAlkb2VzIG5vdCBleGlzdApAQCAtMTkxMCw3ICsxOTE3LDcgQEAKIAkJVGhpcyBhdXRvY29tbWFuZCBqdW1wcyB0byB0aGUgbGFzdCBrbm93biBwb3NpdGlvbiBpbiBhIGZpbGUKIAkJanVzdCBhZnRlciBvcGVuaW5nIGl0LCBpZiB0aGUgJyIgbWFyayBpcyBzZXQ6ID4KIAk6YXUgQnVmUmVhZFBvc3QgKiBpZiBsaW5lKCInXCIiKSA+IDAgJiYgbGluZSgiJ1wiIikgPD0gbGluZSgiJCIpIHwgZXhlICJub3JtYWwgZydcIiIgfCBlbmRpZgotPAorCiBsaW5lMmJ5dGUoe2xudW19KQkJCQkJKmxpbmUyYnl0ZSgpKgogCQlSZXR1cm4gdGhlIGJ5dGUgY291bnQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciBmb3IgbGluZQogCQl7bG51bX0uICBUaGlzIGluY2x1ZGVzIHRoZSBlbmQtb2YtbGluZSBjaGFyYWN0ZXIsIGRlcGVuZGluZyBvbgpAQCAtMjc0Niw3ICsyNzUzLDcgQEAKIGdldHRleHQJCQlDb21waWxlZCB3aXRoIG1lc3NhZ2UgdHJhbnNsYXRpb24gfG11bHRpLWxhbmd8CiBndWkJCQlDb21waWxlZCB3aXRoIEdVSSBlbmFibGVkLgogZ3VpX2F0aGVuYQkJQ29tcGlsZWQgd2l0aCBBdGhlbmEgR1VJLgotZ3VpX2Jlb3MJCUNvbXBpbGVkIHdpdGggQmVPcyBHVUkuCitndWlfYmVvcwkJQ29tcGlsZWQgd2l0aCBCZU9TIEdVSS4KIGd1aV9ndGsJCQlDb21waWxlZCB3aXRoIEdUSysgR1VJIChhbnkgdmVyc2lvbikuCiBndWlfZ3RrMgkJQ29tcGlsZWQgd2l0aCBHVEsrIDIgR1VJIChndWlfZ3RrIGlzIGFsc28gZGVmaW5lZCkuCiBndWlfbWFjCQkJQ29tcGlsZWQgd2l0aCBNYWNpbnRvc2ggR1VJLgpAQCAtMjgwMSw3ICsyODA4LDcgQEAKIHNob3djbWQJCQlDb21waWxlZCB3aXRoICdzaG93Y21kJyBzdXBwb3J0Lgogc2lnbnMJCQlDb21waWxlZCB3aXRoIHw6c2lnbnwgc3VwcG9ydC4KIHNtYXJ0aW5kZW50CQlDb21waWxlZCB3aXRoICdzbWFydGluZGVudCcgc3VwcG9ydC4KLXNuaWZmCQkJQ29tcGlsZWQgd2l0aCBTbmlGRiBpbnRlcmZhY2Ugc3VwcG9ydC4KK3NuaWZmCQkJQ29tcGlsZWQgd2l0aCBTTmlGRiBpbnRlcmZhY2Ugc3VwcG9ydC4KIHN0YXR1c2xpbmUJCUNvbXBpbGVkIHdpdGggc3VwcG9ydCBmb3IgJ3N0YXR1c2xpbmUnLCAncnVsZXJmb3JtYXQnCiAJCQlhbmQgc3BlY2lhbCBmb3JtYXRzIG9mICd0aXRsZXN0cmluZycgYW5kICdpY29uc3RyaW5nJy4KIHN1bl93b3Jrc2hvcAkJQ29tcGlsZWQgd2l0aCBzdXBwb3J0IGZvciBTdW4gfHdvcmtzaG9wfC4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2ZhcnNpLnR4dCBiL3J1bnRpbWUvZG9jL2ZhcnNpLnR4dAppbmRleCA5OTAyNzA5Li42ZjMyZjZlIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9mYXJzaS50eHQKKysrIGIvcnVudGltZS9kb2MvZmFyc2kudHh0CkBAIC0xLDQgKzEsNCBAQAotKmZhcnNpLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDAyIE9jdCAyOQorKmZhcnNpLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1biAxNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBNb3J0YXphIEdoYXNzYWIgU2hpcmFuCkBAIC02Niw3ICs2Niw3IEBACiBzdWJkaXJlY3RvcmllcyBvZiB0aGUgJyRWSU0vZmFyc2knIGRpcmVjdG9yeToKIAogICAgKyAgZmFyLWEwMS5wY2YgICAgWCBXaW5kb3dzIGZvbnRzIGZvciBVbml4IGluY2x1ZGluZyBMaW51eCBzeXN0ZW1zCi0gICArICBmYXItYTAxLmJmICAgICBYIFdpbmRvd3MgZm9udHMgZm9yIFN1bk9zCisgICArICBmYXItYTAxLmJmICAgICBYIFdpbmRvd3MgZm9udHMgZm9yIFN1bk9TCiAgICArICBmYXItYTAxLmYxNiAgICBhIHNjcmVlbiBmb250cyBmb3IgVW5peCBpbmNsdWRpbmcgTGludXggc3lzdGVtcwogICAgKyAgZmFyLWEwMS5mb24gICAgYSBtb25vc3BhY2VkIGZvbnRzIGZvciBXaW5kb3dzIE5ULzk1Lzk4CiAgICArICBmYXItYTAxLmNvbSAgICBhIHNjcmVlbiBmb250cyBmb3IgRE9TCkBAIC05Miw3ICs5Miw3IEBACiAgICA+ICBta2ZvbnRkaXIKICAgID4gIHhzZXQgK2ZwIHBhdGhfbmFtZV9vZl9mYXJzaV9mb250c19kaXJlY3RvcnkKIAotbyAgSW5zdGFsbGF0aW9uIG9mIGZvbnRzIGZvciBYIFdpbmRvdyBzeXN0ZW1zIChTdW5PcykKK28gIEluc3RhbGxhdGlvbiBvZiBmb250cyBmb3IgWCBXaW5kb3cgc3lzdGVtcyAoU3VuT1MpCiAKICAgIENvcHkgZmFyLWEwMS5iZiBmb250IGludG8gYSBkaXJlY3Rvcnkgb2YgeW91ciBjaG9pY2UuCiAgICBDaGFuZ2UgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBmYXItYTAxLmZiIGZvbnRzIGFuZApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaW5kZXgudHh0IGIvcnVudGltZS9kb2MvaW5kZXgudHh0CmluZGV4IDc5MWU1YmEuLjc3ZmUwODUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2luZGV4LnR4dAorKysgYi9ydW50aW1lL2RvYy9pbmRleC50eHQKQEAgLTEsNCArMSw0IEBACi0qaW5kZXgudHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgTWF5IDI0CisqaW5kZXgudHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMzAsOCArMTMwLDggQEAKIHxpXzxDLUhvbWU+fAk8Qy1Ib21lPgljdXJzb3IgdG8gc3RhcnQgb2YgZmlsZQogfGlfPEVuZD58CTxFbmQ+CQljdXJzb3IgcGFzdCBlbmQgb2YgbGluZQogfGlfPEMtRW5kPnwJPEMtRW5kPgkJY3Vyc29yIHBhc3QgZW5kIG9mIGZpbGUKLXxpXzxQYWdlVXA+fAk8UGFnZVVwPglvbmUgc2NyZWVuZnVsbCBiYWNrd2FyZAotfGlfPFBhZ2VEb3duPnwJPFBhZ2VEb3duPglvbmUgc2NyZWVuZnVsbCBmb3J3YXJkCit8aV88UGFnZVVwPnwJPFBhZ2VVcD4Jb25lIHNjcmVlbmZ1bCBiYWNrd2FyZAorfGlfPFBhZ2VEb3duPnwJPFBhZ2VEb3duPglvbmUgc2NyZWVuZnVsIGZvcndhcmQKIHxpXzxGMT58CTxGMT4JCXNhbWUgYXMgPEhlbHA+CiB8aV88SGVscD58CTxIZWxwPgkJc3RvcCBpbnNlcnQgbW9kZSBhbmQgZGlzcGxheSBoZWxwIHdpbmRvdwogfGlfPEluc2VydD58CTxJbnNlcnQ+CXRvZ2dsZSBJbnNlcnQvUmVwbGFjZSBtb2RlCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9pbnNlcnQudHh0IGIvcnVudGltZS9kb2MvaW5zZXJ0LnR4dAppbmRleCAxNDM5ZGJlLi44MDI4YjY2IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pbnNlcnQudHh0CisrKyBiL3J1bnRpbWUvZG9jL2luc2VydC50eHQKQEAgLTEsNCArMSw0IEBACi0qaW5zZXJ0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXByIDA5CisqaW5zZXJ0LnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC05MDgsNyArOTA4LDcgQEAKIAkJCVRoZSBwb3NpdGlvbiBpcyBjb3JyZWN0ZWQgZm9yIGluc2VydGVkL2RlbGV0ZWQgbGluZXMsCiAJCQlidXQgTk9UIGZvciBpbnNlcnRlZC9kZWxldGVkIGNoYXJhY3RlcnMuCiAJCQlXaGVuIHRoZSB8OmtlZXBqdW1wc3wgY29tbWFuZCBtb2RpZmllciBpcyB1c2VkIHRoZSB8J158Ci0JCQltYXJrIHdvbnQgYmUgY2hhbmdlZC4KKwkJCW1hcmsgd29uJ3QgYmUgY2hhbmdlZC4KIAkJCXtub3QgaW4gVml9CiAKIAkJCQkJCQkqbyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21ieXRlLnR4dCBiL3J1bnRpbWUvZG9jL21ieXRlLnR4dAppbmRleCA1MmMzYjI0Li45ZTk2YzNlIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9tYnl0ZS50eHQKKysrIGIvcnVudGltZS9kb2MvbWJ5dGUudHh0CkBAIC0xLDQgKzEsNCBAQAotKm1ieXRlLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1biAwNworKm1ieXRlLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1biAxNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyIGV0IGFsLgpAQCAtMTQxLDcgKzE0MSw3IEBACiAtIEZvciBhbGwgc3lzdGVtcyBrZXltYXBzIGNhbiBiZSB1c2VkLiAgU2VlIHxtYnl0ZS1rZXltYXB8LgogCiBUaGUgb3B0aW9ucyAnaW1pbnNlcnQnLCAnaW1zZWFyY2gnIGFuZCAnaW1jbWRsaW5lJyBjYW4gYmUgdXNlZCB0byBjaG9zZQotdGhlIGRpZmZlcmVudCBpbnB1dCBtZWRob2RzIG9yIGRpc2FibGUgdGhlbSB0ZW1wb3JhcmlseS4KK3RoZSBkaWZmZXJlbnQgaW5wdXQgbWV0aG9kcyBvciBkaXNhYmxlIHRoZW0gdGVtcG9yYXJpbHkuCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogMi4gIExvY2FsZQkJCQkJCSptYnl0ZS1sb2NhbGUqCkBAIC05MDYsNyArOTA2LDcgQEAKIFRoaXMgd29ya3Mgb24gbm90IG9ubHkgaW5zZXJ0LW5vcm1hbCBtb2RlLCBidXQgYWxzbyBzZWFyY2gtY29tbWFuZCBpbnB1dCBhbmQKIHJlcGxhY2UgbW9kZS4KIFRoZSBvcHRpb25zICdpbWluc2VydCcsICdpbXNlYXJjaCcgYW5kICdpbWNtZGxpbmUnIGNhbiBiZSB1c2VkIHRvIGNob3NlCi10aGUgZGlmZmVyZW50IGlucHV0IG1lZGhvZHMgb3IgZGlzYWJsZSB0aGVtIHRlbXBvcmFyaWx5LgordGhlIGRpZmZlcmVudCBpbnB1dCBtZXRob2RzIG9yIGRpc2FibGUgdGhlbSB0ZW1wb3JhcmlseS4KIAogV0hBVCBJUyBJTUUKICAgICBJTUUgaXMgYSBwYXJ0IG9mIEVhc3QgYXNpYW4gdmVyc2lvbiBXaW5kb3dzLiAgVGhhdCBoZWxwcyB5b3UgdG8gaW5wdXQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL21vdGlvbi50eHQgYi9ydW50aW1lL2RvYy9tb3Rpb24udHh0CmluZGV4IGIyMjQxM2EuLmIyZjY4NTggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL21vdGlvbi50eHQKKysrIGIvcnVudGltZS9kb2MvbW90aW9uLnR4dApAQCAtMSw0ICsxLDQgQEAKLSptb3Rpb24udHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBNYXkgMTMKKyptb3Rpb24udHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTcKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTY3MiwxMSArNjcyLDEyIEBACiAJCQl0aGUgY3Vyc29yLCB0aGlzIGlzIG5vdCBhIG1vdGlvbiBjb21tYW5kKS4KIAogCQkJCQkJKjptYSogKjptYXJrKiAqRTE5MSoKLTpbcmFuZ2VdbWFbcmtdIHthLXpBLVp9CVNldCBtYXJrIHthLXpBLVp9IGF0IGxhc3QgbGluZSBudW1iZXIgaW4gW3JhbmdlXSwKKzpbcmFuZ2VdbWFbcmtdIHthLXpBLVonfQorCQkJU2V0IG1hcmsge2EtekEtWid9IGF0IGxhc3QgbGluZSBudW1iZXIgaW4gW3JhbmdlXSwKIAkJCWNvbHVtbiAwLiAgRGVmYXVsdCBpcyBjdXJzb3IgbGluZS4KIAogCQkJCQkJKjprKgotOltyYW5nZV1re2EtekEtWn0JU2FtZSBhcyA6bWFyaywgYnV0IHRoZSBzcGFjZSBiZWZvcmUgdGhlIG1hcmsgbmFtZSBjYW4KKzpbcmFuZ2Vda3thLXpBLVonfQlTYW1lIGFzIDptYXJrLCBidXQgdGhlIHNwYWNlIGJlZm9yZSB0aGUgbWFyayBuYW1lIGNhbgogCQkJYmUgb21pdHRlZC4KIAogCQkJCQkJKicqIConYSogKmAqICpgYSoKQEAgLTY5Miw3ICs2OTMsOSBAQAogCQkJanVtcGluZyB3aXRoaW4gdGhlIGN1cnJlbnQgYnVmZmVyLiAgRXhhbXBsZTogPgogCQkJCWdgIgogPAkJCWp1bXBzIHRvIHRoZSBsYXN0IGtub3duIHBvc2l0aW9uIGluIGEgZmlsZS4gIFNlZQotCQkJJFZJTVJVTlRJTUUvdmltcmNfZXhhbXBsZS52aW0uICB7bm90IGluIFZpfQorCQkJJFZJTVJVTlRJTUUvdmltcmNfZXhhbXBsZS52aW0uCisJCQlBbHNvIHNlZSB8OmtlZXBqdW1wc3wuCisJCQl7bm90IGluIFZpfQogCiAJCQkJCQkqOm1hcmtzKgogOm1hcmtzCQkJTGlzdCBhbGwgdGhlIGN1cnJlbnQgbWFya3MgKG5vdCBhIG1vdGlvbiBjb21tYW5kKS4KQEAgLTg2OCw3ICs4NzEsNyBAQAogCQkJICBvciBsYXJnZXIgdGhhbiBiZWZvcmUsIGFsbCBtYXJrcyBhcmUga2VwdCBhdCB0aGUKIAkJCSAgc2FtZSBsaW5lIG51bWJlci4KIAkJCS0gV2hlbiB0aGUgbnVtYmVyIG9mIGxpbmVzIGRlY3JlYXNlcywgdGhlIG1hcmtzIGluIHRoZQotCQkJICBpbG5lcyB0aGF0IGRpc2FwcGVhcmVkIGFyZSBkZWxldGVkLgorCQkJICBsaW5lcyB0aGF0IGRpc2FwcGVhcmVkIGFyZSBkZWxldGVkLgogCQkJSW4gYW55IGNhc2UgdGhlIG1hcmtzIGJlbG93IHRoZSBmaWx0ZXJlZCB0ZXh0IGhhdmUKIAkJCXRoZWlyIGxpbmUgbnVtYmVycyBhZGp1c3RlZCwgdGh1cyBzdGljayB0byB0aGUgdGV4dCwKIAkJCWFzIHVzdWFsLgpAQCAtODc3LDEyICs4ODAsMjIgQEAKIAogCQkJCQkJCSo6a2VlcGoqICo6a2VlcGp1bXBzKgogOmtlZXBqW3VtcHNdIHtjb21tYW5kfQotCQkJRG8gbm90IGNoYW5nZSB0aGUgfCcnfCwgfCcufCBhbmQgfCdefCBtYXJrcywgdGhlCi0JCQl8anVtcGxpc3R8IG9yIHRoZSB8Y2hhbmdlbGlzdHwuICBVc2VmdWwgd2hlbiBtYWtpbmcgYQotCQkJY2hhbmdlIG9yIGluc2VydGluZyB0ZXh0IGF1dG9tYXRpY2FsbHkgYW5kIHRoZSB1c2VyCi0JCQlkb2Vzbid0IHdhbnQgdG8gZ28gdG8gdGhpcyBwb3NpdGlvbi4gIEUuZy4sIHdoZW4KLQkJCXVwZGF0aW5nIGEgIkxhc3QgY2hhbmdlIiB0aW1lc3RhbXA6ID4KLQlhdXRvY21kIEJ1ZldyaXRlUHJlLEZpbGVXcml0ZVByZSAqLmFiYyBrZWVwanVtcHMgY2FsbCBTZXRMYXN0Q2hhbmdlKCkKKwkJCU1vdmluZyBhcm91bmQgaW4ge2NvbW1hbmR9IGRvZXMgbm90IGNoYW5nZSB0aGUgfCcnfCwKKwkJCXwnLnwgYW5kIHwnXnwgbWFya3MsIHRoZSB8anVtcGxpc3R8IG9yIHRoZQorCQkJfGNoYW5nZWxpc3R8LgorCQkJVXNlZnVsIHdoZW4gbWFraW5nIGEgY2hhbmdlIG9yIGluc2VydGluZyB0ZXh0CisJCQlhdXRvbWF0aWNhbGx5IGFuZCB0aGUgdXNlciBkb2Vzbid0IHdhbnQgdG8gZ28gdG8gdGhpcworCQkJcG9zaXRpb24uICBFLmcuLCB3aGVuIHVwZGF0aW5nIGEgIkxhc3QgY2hhbmdlIgorCQkJdGltZXN0YW1wIGluIHRoZSBmaXJzdCBsaW5lOiA+CisKKwkJCQk6bGV0IGxudW0gPSBnZXRsaW5lKCIuIikKKwkJCQk6a2VlcGp1bXBzIG5vcm1hbCBnZworCQkJCTpjYWxsIFNldExhc3RDaGFuZ2UoKQorCQkJCTprZWVwanVtcHMgZXhlICJub3JtYWwgIiAuIGxudW0gLiAiRyIKKzwKKwkJCU5vdGUgdGhhdCAiOmtlZXBqdW1wcyIgbXVzdCBiZSB1c2VkIGZvciBldmVyeSBjb21tYW5kLgorCQkJV2hlbiBpbnZva2luZyBhIGZ1bmN0aW9uIHRoZSBjb21tYW5kcyBpbiB0aGF0IGZ1bmN0aW9uCisJCQljYW4gc3RpbGwgY2hhbmdlIHRoZSBqdW1wbGlzdC4KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiA4LiBKdW1wcwkJCQkJKmp1bXAtbW90aW9ucyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL25ldGJlYW5zLnR4dCBiL3J1bnRpbWUvZG9jL25ldGJlYW5zLnR4dAppbmRleCA1NTcyNWUxLi5lZTZhZGVhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9uZXRiZWFucy50eHQKKysrIGIvcnVudGltZS9kb2MvbmV0YmVhbnMudHh0CkBAIC0xLDQgKzEsNCBAQAotKm5ldGJlYW5zLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IE1heSAwMQorKm5ldGJlYW5zLnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1biAxNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBHb3Jkb24gUHJpZXVyCkBAIC0xODAsNyArMTgwLDcgQEAKIAkJY2hhbmdlLgogCiAJCQkJCQkJKkU2NTYqCi1OZXRCZWFucyBkaXNzYWxsb3dzIHdyaXRlcyBvZiB1bm1vZGlmaWVkIGJ1ZmZlcnMKK05ldEJlYW5zIGRpc2FsbG93cyB3cml0ZXMgb2YgdW5tb2RpZmllZCBidWZmZXJzCiAJCU5ldEJlYW5zIGRvZXMgbm90IHN1cHBvcnQgd3JpdGVzIG9mIHVubW9kaWZpZWQgYnVmZmVycyB0aGF0CiAJCXdlcmUgb3BlbmVkIGZyb20gTmV0QmVhbnMuCiAKQEAgLTI0NSw3ICsyNDUsNyBAQAogY29tbWFuZC4gSW4gcHJvdG9jb2wgdmVyc2lvbiAyLjEgYW5kIGVhcmxpZXIgdGhpcyB3YXMgaW5jb3JyZWN0bHkgaW50ZXJwcmV0ZWQKIGFzIGEgbm90aWZpY2F0aW9uIHRoYXQgYSB3cml0ZSBoYWQgdGFrZW4gcGxhY2UuIEluIHJlYWxpdHksIGl0IHRvbGQgTmV0QmVhbnMKIHRvIHNhdmUgdGhlIGZpbGUgc28gbXVsdGlwbGUgd3JpdGVzIHdlcmUgYmVpbmcgZG9uZS4gVGhpcyBjYXVzZWQgdmFyaW91cwotcHJvYmxlbXMgYW5kIGhhcyBiZWVuIGZpeGVkIGluIDIuMi4gVG8gZGVjcmVhc2UgdGhlIGxpa2VseWhvb2Qgb2YgdGhpcworcHJvYmxlbXMgYW5kIGhhcyBiZWVuIGZpeGVkIGluIDIuMi4gVG8gZGVjcmVhc2UgdGhlIGxpa2VsaWhvb2Qgb2YgdGhpcwogY29uZnVzaW9uIGhhcHBlbmluZyBhZ2FpbiwgbmV0YmVhbnNfc2F2ZWQoKSBoYXMgYmVlbiByZW5hbWVkIHRvCiBuZXRiZWFuc19zYXZlX2J1ZmZlcigpLgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9vc19tYWMudHh0IGIvcnVudGltZS9kb2Mvb3NfbWFjLnR4dAppbmRleCBjMjEwMmJmLi5mMjQyNTUyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vc19tYWMudHh0CisrKyBiL3J1bnRpbWUvZG9jL29zX21hYy50eHQKQEAgLTEsNCArMSw0IEBACi0qb3NfbWFjLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgQXByIDI3Cisqb3NfbWFjLnR4dCogICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyIGV0IGFsLgpAQCAtNzQsMTEgKzc0LDE2IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDQuIE1hYyBMYWNrCQkJCQkJKm1hYy1sYWNrKgogCi0tVGhlIGZpbGVuYW1lcyBjb250YWluaW5nIGJvdGggIjoiIGFuZCAiLyIgYXJlIHNvbWV0aW1lcyBtaXNpbnRlcnByZXRlZC4KLSAgKGp1c3QgcmUtZXhlY3V0ZSB0aGUgY29tbWFuZCkKLS1TY3JvbGxiYXIgYXJlIG5vdCBzY3JvbGxpbmcgbGl2ZSwgYW5kICB3aGVuIG9ubHkgdGhlIGFycm93IG9yIHNjcm9sbCBhcmVhLAotICAgYSBsaW1pdCBvZiAzMiBsaW5lIG9yIHBhZ2UgaXMgc2Nyb2xsZWQuCi0tU3ludGF4IGhpZ2hsaWdodGluZyB3b3JrcyBvbiA2OGsgTWFjcyBidXQgaXMgX3JlYWxseV8gc2xvdy4KK1RoZSBmaWxlbmFtZXMgY29udGFpbmluZyBib3RoICI6IiBhbmQgIi8iIGFyZSBzb21ldGltZXMgbWlzaW50ZXJwcmV0ZWQuICAoanVzdAorcmUtZXhlY3V0ZSB0aGUgY29tbWFuZCkKKworU2Nyb2xsYmFyIGFyZSBub3Qgc2Nyb2xsaW5nIGxpdmUsIGFuZCAgd2hlbiBvbmx5IHRoZSBhcnJvdyBvciBzY3JvbGwgYXJlYSwgYQorbGltaXQgb2YgMzIgbGluZSBvciBwYWdlIGlzIHNjcm9sbGVkLgorCitTeW50YXggaGlnaGxpZ2h0aW5nIHdvcmtzIG9uIDY4ayBNYWNzIGJ1dCBpcyBfcmVhbGx5XyBzbG93LgorCitJbiBhIHRlcm1pbmFsIENUUkwtXiBuZWVkcyB0byBiZSBlbnRlcmVkIGFzIFNoaWZ0LUNvbnRyb2wtNi4gIENUUkwtQCBhcworU2hpZnQtQ29udHJvbC0yLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDUuIE1hYyBCdWcgUmVwb3J0CQkJCQkqbWFjLWJ1ZyoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL29zX3Ztcy50eHQgYi9ydW50aW1lL2RvYy9vc192bXMudHh0CmluZGV4IDgzNGIzNWIuLmFhYjVhMjQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL29zX3Ztcy50eHQKKysrIGIvcnVudGltZS9kb2Mvb3Nfdm1zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvc192bXMudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBNYXkgMTYKKypvc192bXMudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwKQEAgLTI4MCw3ICsyODAsNyBAQAogICAgWW91IG5lZWQgdG8gc2V0IHVwIG9uZSBYIHNlcnZlciBhbmQgcnVuIFZpbSBhcyBpbiBwb2ludCAyLgogICAgRm9yIE1TIFdpbmRvd3MgdGhlcmUgYXJlIGF2YWlsYWJsZSBmcmVlIFggc2VydmVycyBhcyBNSVggLCBPbW5pIFggZXRjLgogICAgYXMgd2VsbCBhcyBleGNlbGxlbnQgY29tbWVyY2lhbCBwcm9kdWN0cyBhcyBlWGN1cnNpb24gb3IgUmVmbGVjdGlvblggd2l0aAotICAgYnVpdCBpbiBERUMgc3VwcG9ydC4KKyAgIGJ1aWx0IGluIERFQyBzdXBwb3J0LgogCiBQbGVhc2Ugbm90ZSwgdGhhdCBleGVjdXRhYmxlcyB3aXRob3V0IEdVSSBhcmUgc2xpZ2h0bHkgZmFzdGVyIGR1cmluZyBzdGFydHVwCiB0aGVuIHdpdGggZW5hYmxlZCBHVUkgaW4gY2hhcmFjdGVyIG1vZGUuIFRoZXJlZm9yZSwgaWYgeW91IGRvIG5vdCB1c2UgR1VJCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9waV9uZXRydy50eHQgYi9ydW50aW1lL2RvYy9waV9uZXRydy50eHQKaW5kZXggYWJmYThjZS4uMGExM2RjMiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcGlfbmV0cncudHh0CisrKyBiL3J1bnRpbWUvZG9jL3BpX25ldHJ3LnR4dApAQCAtMSwxMSArMSwxMSBAQAotKnBpX25ldHJ3LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiBBcHIgMjEsIDIwMDQKKypwaV9uZXRydy50eHQqICBGb3IgVmltIHZlcnNpb24gNi4yLiAgTGFzdCBjaGFuZ2U6IEp1biAxNSwgMjAwNAogCiAKIAkJVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuCiAKLSpkYXYqCQkqaHR0cCoJCSpuZXR3b3JrKgkqcmNwKgkJKnNjcCoKLSpmZXRjaCoJCSpuZXRydyoJCSpOcmVhZCoJCSpyc3luYyoJCSpzZnRwKgotKmZ0cCoJCSpuZXRydy52aW0qCSpOd3JpdGUqCSpuZXRydy1maWxlKgorKmRhdiogICAgICAgICAgICpodHRwKiAgICAgICAgICAqbmV0d29yayogICAgICAgKnJjcCogICAgICAgICAgICpzY3AqCisqZmV0Y2gqICAgICAgICAgKm5ldHJ3KiAgICAgICAgICpOcmVhZCogICAgICAgICAqcnN5bmMqICAgICAgICAgKnNmdHAqCisqZnRwKiAgICAgICAgICAgKm5ldHJ3LnZpbSogICAgICpOd3JpdGUqICAgICAgICAqbmV0cnctZmlsZSoKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAwLiBDb250ZW50cwkJCQkJCSpuZXRydy1jb250ZW50cyoKQEAgLTE2LDE1ICsxNiwxNiBAQAogNC4gIFRyYW5zcGFyZW50IEZpbGUgVHJhbnNmZXIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctdHJhbnNwYXJlbnR8CiA1LiAgRXggQ29tbWFuZHMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLnxuZXRydy1leHwKIDYuICBWYXJpYWJsZXMgYW5kIE9wdGlvbnMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LXZhcnwKLTcuICBEZWJ1Z2dpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWRlYnVnfAotOC4gIE5ldyBTdHVmZi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctbmV3fAotOS4gIENyZWRpdHMuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctY3JlZGl0c3wKKzcuICBSZW1vdGUgRGlyZWN0b3J5IExpc3RpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWRpcnwKKzguICBEZWJ1Z2dpbmcuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWRlYnVnfAorOS4gIEhpc3RvcnkuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi58bmV0cnctaGlzdG9yeXwKKzEwLiBDcmVkaXRzLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4ufG5ldHJ3LWNyZWRpdHN8CiAKIFRoZSBmdW5jdGlvbmFsaXR5IG1lbnRpb25lZCBoZXJlIGlzIGRvbmUgdmlhIHVzaW5nIHxzdGFuZGFyZC1wbHVnaW58CiB0ZWNobmlxdWVzLiAgVGhpcyBwbHVnaW4gaXMgb25seSBhdmFpbGFibGUgaWYKIAotCXNldCBub2NwCQkgICAgIiAnY29tcGF0aWJsZScgaXMgbm90IHNldAotCWZpbGV0eXBlIHBsdWdpbiBvbgkgICAgIiBwbHVnaW5zIGFyZSBlbmFibGVkCisJc2V0IG5vY3AgICAgICAgICAgICAgICAgICAgICIgJ2NvbXBhdGlibGUnIGlzIG5vdCBzZXQKKwlmaWxldHlwZSBwbHVnaW4gb24gICAgICAgICAgIiBwbHVnaW5zIGFyZSBlbmFibGVkCiAKIFlvdSBjYW4gYXZvaWQgbG9hZGluZyB0aGlzIHBsdWdpbiBieSBzZXR0aW5nIHRoZSAibG9hZGVkX25ldHJ3IiB2YXJpYWJsZQogaW4geW91ciA8LnZpbXJjPiBmaWxlOiA+CkBAIC00OSwxNiArNTAsMTYgQEAKIAogCUNvbnRyb2xsaW5nIEV4dGVybmFsIEFwcGxpY2F0aW9ucwogCi0JIFByb3RvY29sICBWYXJpYWJsZQkgICAgICAgRGVmYXVsdCBWYWx1ZQotCSAtLS0tLS0tLSAgLS0tLS0tLS0tLS0tLS0tLSAgICAtLS0tLS0tLS0tLS0tCi0JICAgZGF2OiAgICBnOm5ldHJ3X2Rhdl9jbWQgICA9ICJjYWRhdmVyIgotCSAgIGZldGNoOiAgZzpuZXRyd19mZXRjaF9jbWQgPSAiZmV0Y2ggLW8iCi0JICAgZnRwOiAgICBnOm5ldHJ3X2Z0cF9jbWQgICA9ICJmdHAiCi0JICAgaHR0cDogICBnOm5ldHJ3X2h0dHBfY21kICA9ICJmZXRjaCAtbyIgICBlbHNlIGlmIGZldGNoIGlzIGF2YWlsYWJsZQotCSAgIGh0dHA6ICAgZzpuZXRyd19odHRwX2NtZCAgPSAid2dldCAtcSAtTyIgICAgSWYgd2dldCBpcyBhdmFpbGFibGUKLQkgICByY3A6ICAgIGc6bmV0cndfcmNwX2NtZCAgID0gInJjcCIKLQkgICByc3luYzogIGc6bmV0cndfcnN5bmNfY21kID0gInJzeW5jIC1hIgotCSAgIHNjcDogICAgZzpuZXRyd19zY3BfY21kICAgPSAic2NwIC1xIgorCSBQcm90b2NvbCAgVmFyaWFibGUJICAgICBEZWZhdWx0IFZhbHVlCisJIC0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tCisJICAgIGRhdjogICAgZzpuZXRyd19kYXZfY21kICA9ICJjYWRhdmVyIgorCSAgZmV0Y2g6ICBnOm5ldHJ3X2ZldGNoX2NtZCAgPSAiZmV0Y2ggLW8iCisJICAgIGZ0cDogICAgZzpuZXRyd19mdHBfY21kICA9ICJmdHAiCisgICAgICAgICAgIGh0dHA6ICAgZzpuZXRyd19odHRwX2NtZCAgPSAiZmV0Y2ggLW8iICAgIGlmIGZldGNoIGlzIGF2YWlsYWJsZQorCSAgIGh0dHA6ICAgZzpuZXRyd19odHRwX2NtZCAgPSAid2dldCAtcSAtTyIgIElmIHdnZXQgIGlzIGF2YWlsYWJsZQorCSAgICByY3A6ICAgIGc6bmV0cndfcmNwX2NtZCAgPSAicmNwIgorCSAgcnN5bmM6ICBnOm5ldHJ3X3JzeW5jX2NtZCAgPSAicnN5bmMgLWEiCisJICAgIHNjcDogICAgZzpuZXRyd19zY3BfY21kICA9ICJzY3AgLXEiCiAJICAgc2Z0cDogICBnOm5ldHJ3X3NmdHBfY21kICA9ICJzZnRwIgogCiAgICAgUkVBRElORwpAQCAtNzYsNyArNzcsNyBAQAogCTpOcmVhZCAic2Z0cDovL1t1c2VyQF1tYWNoaW5lL2ZpbGUiCQl1c2VzIHNmdHAKIAogICAgIFdSSVRJTkcKLQk6TndyaXRlID8JCQkJCWdpdmUgaGVscAorCTpOd3JpdGUgPyAgICAJCQkJCWdpdmUgaGVscAogCTpOd3JpdGUgIm1hY2hpbmU6ZmlsZSIJCQkJdXNlcyByY3AKIAk6TndyaXRlICJtYWNoaW5lIGZpbGUiCQkJCXVzZXMgZnRwICAgd2l0aCA8Lm5ldHJjPgogCTpOd3JpdGUgIm1hY2hpbmUgaWQgcGFzc3dvcmQgZmlsZSIJCXVzZXMgZnRwCkBAIC04OCw2ICs4OSw5IEBACiAJOk53cml0ZSAic2Z0cDovL1t1c2VyQF1tYWNoaW5lL2ZpbGUiCQl1c2VzIHNmdHAKIAlodHRwOiBub3Qgc3VwcG9ydGVkIQogCisgICAgRElSRUNUT1JZIExJU1RJTkcKKwk6TnJlYWQgW3Byb3RvY29sXTovL1t1c2VyXUBob3N0bmFtZS9wYXRoLworCiAgICAgVVNFUiBBTkQgUEFTU1dPUkQgQ0hBTkdJTkcKIAlBdHRlbXB0cyB0byB1c2UgZnRwIHdpbGwgcHJvbXB0IHlvdSBmb3IgYSB1c2VyLWlkIGFuZCBhIHBhc3N3b3JkLgogCVRoZXNlIHdpbGwgYmUgc2F2ZWQgaW4gZzpuZXRyd191aWQgYW5kIGc6bmV0cndfcGFzc3dkIFN1YnNlcXVlbnQgdXNlcwpAQCAtMTQ4LDcgKzE1Miw3IEBACiBjbGVhbiB1cC4KIAogT25lIG1heSBtb2RpZnkgYW55IHByb3RvY29sJ3MgaW1wbGVtZW50aW5nIGV4dGVybmFsIGFwcGxpY2F0aW9uCi1ieSBzZXR0aW5nIGEgdmFyaWFibGUgKGV4LiBzY3AgdXNlcyB0aGUgdmFyaWFibGUgZzpuZXRyd19zY3BfY21kLAorYnkgc2V0dGluYmcgYSB2YXJpYWJsZSAoZXguIHNjcCB1c2VzIHRoZSB2YXJpYWJsZSBnOm5ldHJ3X3NjcF9jbWQsCiB3aGljaCBpcyBkZWZhdWx0ZWQgdG8gInNjcCAtcSIpLgogCiBGdHAsIGFuIG9sZCBwcm90b2NvbCwgc2VlbXMgdG8gYmUgYmxlc3NlZCBieSBudW1lcm91cyBpbXBsZW1lbnRhdGlvbnMuCkBAIC0xODEsNTcgKzE4NSw1NyBAQAogCiAJCQkJCQkJCSpuZXRydy11cmxzKgogICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09KwotICB8ICBSZWFkaW5nCQkJICAgIHwgV3JpdGluZwkJCSB8ICBVc2VzICAgICAgfAorICB8ICBSZWFkaW5nICAgICAgICAgICAgICAgICAgICAgICAgfCBXcml0aW5nICAgICAgICAgICAgICAgICAgICB8ICBVc2VzICAgICAgfAogICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09KwotICB8IERBVjoJCQkgICAgfAkJCQkgfAkgICAgICB8Ci0gIHwgIGRhdjovL2hvc3QvcGF0aAkJICAgIHwJCQkJIHwgY2FkYXZlciAgICB8Ci0gIHwgIDpOcmVhZCBkYXY6Ly9ob3N0L3BhdGgJICAgIHwgOk53cml0ZSBkYXY6Ly9ob3N0L3BhdGgJIHwgY2FkYXZlciAgICB8CisgIHwgREFWOiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgIHwgIGRhdjovL2hvc3QvcGF0aCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FkYXZlciAgICB8CisgIHwgIDpOcmVhZCBkYXY6Ly9ob3N0L3BhdGggICAgICAgICB8IDpOd3JpdGUgZGF2Oi8vaG9zdC9wYXRoICAgIHwgY2FkYXZlciAgICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi0gIHwgRkVUQ0g6CQkJICAgIHwJCQkJIHwJICAgICAgfAotICB8ICBmZXRjaDovL1t1c2VyQF1ob3N0L3BhdGgJICAgIHwJCQkJIHwJICAgICAgfAotICB8ICBmZXRjaDovL1t1c2VyQF1ob3N0Omh0dHAvcGF0aCAgfCAgTm90IEF2YWlsYWJsZQkJIHwgZmV0Y2ggICAgICB8Ci0gIHwgIDpOcmVhZCBmZXRjaDovL1t1c2VyQF1ob3N0L3BhdGh8CQkJCSB8CSAgICAgIHwKKyAgfCBGRVRDSDogICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKKyAgfCAgZmV0Y2g6Ly9bdXNlckBdaG9zdC9wYXRoICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKKyAgfCAgZmV0Y2g6Ly9bdXNlckBdaG9zdDpodHRwL3BhdGggIHwgIE5vdCBBdmFpbGFibGUgICAgICAgICAgICAgfCBmZXRjaCAgICAgIHwKKyAgfCAgOk5yZWFkIGZldGNoOi8vW3VzZXJAXWhvc3QvcGF0aHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLSAgfCBGSUxFOgkJCSAgICB8CQkJCSB8CSAgICAgIHwKLSAgfCAgZmlsZTovLy8qCQkJICAgIHwgZmlsZTovLy8qCQkJIHwJICAgICAgfAotICB8ICBmaWxlOi8vbG9jYWxob3N0LyoJCSAgICB8IGZpbGU6Ly9sb2NhbGhvc3QvKgkgfAkgICAgICB8CisgIHwgRklMRTogICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgIHwgIGZpbGU6Ly8vKiAgICAgICAgICAgICAgICAgICAgICB8IGZpbGU6Ly8vKiAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgIHwgIGZpbGU6Ly9sb2NhbGhvc3QvKiAgICAgICAgICAgICB8IGZpbGU6Ly9sb2NhbGhvc3QvKiAgICAgICAgIHwgICAgICAgICAgICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi0gIHwgRlRQOgkgICgqMykJCSAgICB8CQkgICAoKjMpCQkgfAkgICAgICB8Ci0gIHwgIGZ0cDovL1t1c2VyQF1ob3N0L3BhdGgJICAgIHwgZnRwOi8vW3VzZXJAXWhvc3QvcGF0aAkgfCBmdHAJKCoyKSAgfAotICB8ICA6TnJlYWQgZnRwOi8vaG9zdC9wYXRoCSAgICB8IDpOd3JpdGUgZnRwOi8vaG9zdC9wYXRoCSB8IGZ0cCsubmV0cmMgfAotICB8ICA6TnJlYWQgaG9zdCBwYXRoCQkgICAgfCA6TndyaXRlIGhvc3QgcGF0aAkJIHwgZnRwKy5uZXRyYyB8Ci0gIHwgIDpOcmVhZCBob3N0IHVpZCBwYXNzIHBhdGgJICAgIHwgOk53cml0ZSBob3N0IHVpZCBwYXNzIHBhdGggfCBmdHAJICAgICAgfAorICB8IEZUUDogICAgICAgICAgKCozKSAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgKCozKSAgICAgICAgICB8ICAgICAgICAgICAgfAorICB8ICBmdHA6Ly9bdXNlckBdaG9zdC9wYXRoICAgICAgICAgfCBmdHA6Ly9bdXNlckBdaG9zdC9wYXRoICAgICB8IGZ0cCAgKCoyKSAgfAorICB8ICA6TnJlYWQgZnRwOi8vaG9zdC9wYXRoICAgICAgICAgfCA6TndyaXRlIGZ0cDovL2hvc3QvcGF0aCAgICB8IGZ0cCsubmV0cmMgfAorICB8ICA6TnJlYWQgaG9zdCBwYXRoICAgICAgICAgICAgICAgfCA6TndyaXRlIGhvc3QgcGF0aCAgICAgICAgICB8IGZ0cCsubmV0cmMgfAorICB8ICA6TnJlYWQgaG9zdCB1aWQgcGFzcyBwYXRoICAgICAgfCA6TndyaXRlIGhvc3QgdWlkIHBhc3MgcGF0aCB8IGZ0cCAgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotICB8IEhUVFA6IHdnZXQgaXMgZXhlY3V0YWJsZTogKCo0KSAgfAkJCQkgfAkgICAgICB8Ci0gIHwgIGh0dHA6Ly9bdXNlckBdaG9zdC9wYXRoCSAgICB8CSAgICAgTm90IEF2YWlsYWJsZQkgfCB3Z2V0ICAgICAgIHwKKyAgfCBIVFRQOiB3Z2V0IGlzIGV4ZWN1dGFibGU6ICgqNCkgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHwKKyAgfCAgaHR0cDovL1t1c2VyQF1ob3N0L3BhdGggICAgICAgIHwgICAgICAgIE5vdCBBdmFpbGFibGUgICAgICAgfCB3Z2V0ICAgICAgIHwKICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSsKLSAgfCBIVFRQOiBmZXRjaCBpcyBleGVjdXRhYmxlICgqNCkgIHwJCQkJIHwJICAgICAgfAotICB8ICBodHRwOi8vW3VzZXJAXWhvc3QvcGF0aAkgICAgfAkgICAgIE5vdCBBdmFpbGFibGUJIHwgZmV0Y2ggICAgICB8CisgIHwgSFRUUDogZmV0Y2ggaXMgZXhlY3V0YWJsZSAoKjQpICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgIHwgIGh0dHA6Ly9bdXNlckBdaG9zdC9wYXRoICAgICAgICB8ICAgICAgICBOb3QgQXZhaWxhYmxlICAgICAgIHwgZmV0Y2ggICAgICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi0gIHwgUkNQOgkJCSAgICB8CQkJCSB8CSAgICAgIHwKLSAgfCAgcmNwOi8vW3VzZXJAXWhvc3QvcGF0aAkgICAgfCByY3A6Ly9bdXNlckBdaG9zdC9wYXRoCSB8IHJjcAkgICAgICB8CisgIHwgUkNQOiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgIHwgIHJjcDovL1t1c2VyQF1ob3N0L3BhdGggICAgICAgICB8IHJjcDovL1t1c2VyQF1ob3N0L3BhdGggICAgIHwgcmNwICAgICAgICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi0gIHwgUlNZTkM6CQkJICAgIHwJCQkJIHwJICAgICAgfAotICB8ICByc3luYzovL1t1c2VyQF1ob3N0L3BhdGgJICAgIHwgcnN5bmM6Ly9bdXNlckBdaG9zdC9wYXRoCSB8IHJzeW5jICAgICAgfAotICB8ICA6TnJlYWQgcnN5bmM6Ly9ob3N0L3BhdGgJICAgIHwgOk53cml0ZSByc3luYzovL2hvc3QvcGF0aCAgfCByc3luYyAgICAgIHwKLSAgfCAgOk5yZWFkIHJjcDovL2hvc3QvcGF0aAkgICAgfCA6TndyaXRlIHJjcDovL2hvc3QvcGF0aAkgfCByY3AJICAgICAgfAorICB8IFJTWU5DOiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfAorICB8ICByc3luYzovL1t1c2VyQF1ob3N0L3BhdGggICAgICAgfCByc3luYzovL1t1c2VyQF1ob3N0L3BhdGggICB8IHJzeW5jICAgICAgfAorICB8ICA6TnJlYWQgcnN5bmM6Ly9ob3N0L3BhdGggICAgICAgfCA6TndyaXRlIHJzeW5jOi8vaG9zdC9wYXRoICB8IHJzeW5jICAgICAgfAorICB8ICA6TnJlYWQgcmNwOi8vaG9zdC9wYXRoICAgICAgICAgfCA6TndyaXRlIHJjcDovL2hvc3QvcGF0aCAgICB8IHJjcCAgICAgICAgfAogICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKwotICB8IFNDUDoJCQkgICAgfAkJCQkgfAkgICAgICB8Ci0gIHwgIHNjcDovL1t1c2VyQF1ob3N0L3BhdGgJICAgIHwgc2NwOi8vW3VzZXJAXWhvc3QvcGF0aAkgfCBzY3AJICAgICAgfAotICB8ICA6TnJlYWQgc2NwOi8vaG9zdC9wYXRoCSAgICB8IDpOd3JpdGUgc2NwOi8vaG9zdC9wYXRoCSB8IHNjcAkoKjEpICB8CisgIHwgU0NQOiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgIHwgIHNjcDovL1t1c2VyQF1ob3N0L3BhdGggICAgICAgICB8IHNjcDovL1t1c2VyQF1ob3N0L3BhdGggICAgIHwgc2NwICAgICAgICB8CisgIHwgIDpOcmVhZCBzY3A6Ly9ob3N0L3BhdGggICAgICAgICB8IDpOd3JpdGUgc2NwOi8vaG9zdC9wYXRoICAgIHwgc2NwICAoKjEpICB8CiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCi0gIHwgU0ZUUDoJCQkgICAgfAkJCQkgfAkgICAgICB8Ci0gIHwgIHNmdHA6Ly9bdXNlckBdaG9zdC9wYXRoCSAgICB8IHNmdHA6Ly9bdXNlckBdaG9zdC9wYXRoCSB8IHNmdHAgICAgICAgfAotICB8ICA6TnJlYWQgc2Z0cDovL2hvc3QvcGF0aAkgICAgfCA6TndyaXRlIHNmdHA6Ly9ob3N0L3BhdGgJIHwgc2Z0cCAgKCoxKSB8CisgIHwgU0ZUUDogICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8CisgIHwgIHNmdHA6Ly9bdXNlckBdaG9zdC9wYXRoICAgICAgICB8IHNmdHA6Ly9bdXNlckBdaG9zdC9wYXRoICAgIHwgc2Z0cCAgICAgICB8CisgIHwgIDpOcmVhZCBzZnRwOi8vaG9zdC9wYXRoICAgICAgICB8IDpOd3JpdGUgc2Z0cDovL2hvc3QvcGF0aCAgIHwgc2Z0cCAgKCoxKSB8CiAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rCiAKIAkoKjEpIEZvciBhbiBhYnNvbHV0ZSBwYXRoIHVzZSBzY3A6Ly9tYWNoaW5lLy9wYXRoLgogCiAJKCoyKSBpZiA8Lm5ldHJjPiBpcyBwcmVzZW50LCBpdCBpcyBhc3N1bWVkIHRoYXQgaXQgd2lsbAogCXdvcmsgd2l0aCB5b3VyIGZ0cCBjbGllbnQuICBPdGhlcndpc2UgdGhlIHNjcmlwdCB3aWxsCi0JcHJvbXB0IGZvciB1c2VyLWlkIGFuZCBwYXNzd29yZC4KKwlwcm9tcHQgZm9yIHVzZXItaWQgYW5kIHBhc3dvcmQuCiAKLQkoKjMpIGZvciBmdHAsICJtYWNoaW5lIiBtYXkgYmUgbWFjaGluZSNwb3J0IG9yIG1hY2hpbmU6cG9ydAorICAgICAgICAoKjMpIGZvciBmdHAsICJtYWNoaW5lIiBtYXkgYmUgbWFjaGluZSNwb3J0IG9yIG1hY2hpbmU6cG9ydAogCWlmIGEgZGlmZmVyZW50IHBvcnQgaXMgbmVlZGVkIHRoYW4gdGhlIHN0YW5kYXJkIGZ0cCBwb3J0CiAKIAkoKjQpIGZvciBodHRwOi4uLiwgaWYgd2dldCBpcyBhdmFpbGFibGUgaXQgd2lsbCBiZSB1c2VkLiAgT3RoZXJ3aXNlLApAQCAtMzI3LDY3ICszMzEsODggQEAKIAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTYuIFZhcmlhYmxlcyBhbmQgT3B0aW9ucwkJCSpuZXRydy1vcHRpb25zKiAqbmV0cnctdmFyKgorNi4gVmFyaWFibGVzIGFuZCBPcHRpb25zICAgICAgIAkJCSpuZXRydy1vcHRpb25zKiAqbmV0cnctdmFyKgogCiBUaGUgc2NyaXB0IDxuZXRydy52aW0+IHVzZXMgc2V2ZXJhbCB2YXJpYWJsZXMgd2hpY2ggY2FuIGFmZmVjdCA8bmV0cncudmltPidzCiBiZWhhdmlvci4gIFRoZXNlIHZhcmlhYmxlcyB0eXBpY2FsbHkgbWF5IGJlIHNldCBpbiB0aGUgdXNlcidzIDwudmltcmM+IGZpbGU6Ci0KLQlnOm5ldHJ3X3VpZAkJSG9sZHMgY3VycmVudCB1c2VyLWlkIGZvciBmdHAuCi0JZzpuZXRyd19wYXNzd2QJCUhvbGRzIGN1cnJlbnQgcGFzc3dvcmQgZm9yIGZ0cC4KLQliOm5ldHJ3X2xhc3RmaWxlCUhvbGRzIGxhdGVzdCBtZXRob2QvbWFjaGluZS9wYXRoLgotCWI6bmV0cndfbGluZQkJSG9sZHMgY3VycmVudCBsaW5lIG51bWJlciAgICAgKGR1cmluZyBOZXRXcml0ZSkKLQliOm5ldHJ3X2NvbAkJSG9sZHMgY3VycmVudCBjdXJzb3IgcG9zaXRpb24gKGR1cmluZyBOZXRXcml0ZSkKLQlnOm5ldHJ3X2Z0cAkJPTAgdXNlIGRlZmF1bHQgZnRwCSAgICAgICh1aWQgcGFzc3dvcmQpCi0JCQkJPTEgdXNlIGFsdGVybmF0ZSBmdHAJICAgICAgKHVzZXIgdWlkIHBhc3N3b3JkKQotCQkJCShzZWUgfG5ldHJ3LW9wdGlvbnN8KQotCWc6bmV0cndfZnRwbW9kZQkJPSJiaW5hcnkiCQkgICAgICAoZGVmYXVsdCkKLQkJCQk9ImFzY2lpIgkJICAgICAgKHlvdXIgY2hvaWNlKQotCWc6bmV0cndfaWdub3JlbmV0cmMJPTEJCQkgICAgICAoZGVmYXVsdCkKLQkJCQkgICBpZiB5b3UgaGF2ZSBhIDwubmV0cmM+IGZpbGUgYnV0IHlvdSBkb24ndAorPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAJTmV0cncgT3B0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tCisJT3B0aW9uCQkJTWVhbmluZworCS0tLS0tLS0tLS0tLS0tCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorPAorICAgICAgICBiOm5ldHJ3X2NvbCAgICAgICAgICAgICBIb2xkcyBjdXJyZW50IGN1cnNvciBwb3NpdGlvbiAoZHVyaW5nIE5ldFdyaXRlKQorICAgICAgICBnOm5ldHJ3X2N5Z3dpbiAgICAgICAgICA9MSBhc3N1bWUgc2NwIHVuZGVyIHdpbmRvd3MgaXMgZnJvbSBjeWd3aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQvd2luZG93cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPTAgYXNzdW1lIHNjcCB1bmRlciB3aW5kb3dzIGFjY2VwdHMgd2luZG93cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSBwYXRocyAgICAgICAgICAgICAgICAoZGVmYXVsdC9lbHNlKQorICAgICAgICBnOm5ldHJ3X2Z0cCAgICAgICAgICAgICA9MCB1c2UgZGVmYXVsdCBmdHAgICAgICAgICAgICAodWlkIHBhc3N3b3JkKQorICAgICAgICBnOm5ldHJ3X2Z0cG1vZGUgICAgICAgICA9ImJpbmFyeSIgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSJhc2NpaSIgICAgICAgICAgICAgICAgICAgICAgKHlvdXIgY2hvaWNlKQorCWc6bmV0cndfaWdub3JlbmV0cmMgICAgID0xICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0KQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHlvdSBoYXZlIGEgPC5uZXRyYz4gZmlsZSBidXQgeW91IGRvbid0CiAJCQkJICAgd2FudCBpdCB1c2VkLCB0aGVuIHNldCB0aGlzIHZhcmlhYmxlLiAgSXRzCiAJCQkJICAgbWVyZSBleGlzdGVuY2UgaXMgZW5vdWdoIHRvIGNhdXNlIDwubmV0cmM+CiAJCQkJICAgdG8gYmUgaWdub3JlZC4KLQlnOm5ldHJ3X3dpbjk1ZnRwCT0wIHVzZSB1bml4LXN0eWxlIGZ0cCBldmVuIGlmIHdpbjk1Lzk4L01FL2V0YwotCQkJCT0xIHVzZSBkZWZhdWx0IG1ldGhvZCB0byBkbyBmdHAKLQlnOm5ldHJ3X2N5Z3dpbgkJPTEgYXNzdW1lIHNjcCB1bmRlciB3aW5kb3dzIGlzIGZyb20gY3lnd2luCi0JCQkJCQkJICAgICAgKGRlZmF1bHQvd2luZG93cykKLQkJCQk9MCBhc3N1bWUgc2NwIHVuZGVyIHdpbmRvd3MgYWNjZXB0cyB3aW5kb3dzCi0JCQkJICAgc3R5bGUgcGF0aHMJCSAgICAgIChkZWZhdWx0L2Vsc2UpCi0JZzpuZXRyd191c2VfbnRfcmNwCT0wIGRvbid0IHVzZSBXaW5OVC8ySy9YUCdzIHJjcCAoZGVmYXVsdCkKLQkJCQk9MSB1c2UgV2luTlQvMksvWFAncyByY3AsIGJpbmFyeSBtb2RlCi0KLQorICAgICAgICBiOm5ldHJ3X2xhc3RmaWxlICAgICAgICBIb2xkcyBsYXRlc3QgbWV0aG9kL21hY2hpbmUvcGF0aC4KKyAgICAgICAgYjpuZXRyd19saW5lICAgICAgICAgICAgSG9sZHMgY3VycmVudCBsaW5lIG51bWJlciAgICAgKGR1cmluZyBOZXRXcml0ZSkKKyAgICAgICAgZzpuZXRyd19wYXNzd2QgICAgICAgICAgSG9sZHMgY3VycmVudCBwYXNzd29yZCBmb3IgZnRwLgorCWc6bmV0cndfc2lsZW50ICAgICAgICAgID0wIHRyYW5zZmVycyBkb25lIG5vcm1hbGx5CisJICAgICAgICAgICAgICAgICAgICAgICAgPTEgdHJhbnNmZXJzIGRvbmUgc2lsZW50bHkKKyAgICAgICAgZzpuZXRyd191aWQgICAgICAgICAgICAgSG9sZHMgY3VycmVudCB1c2VyLWlkIGZvciBmdHAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0xIHVzZSBhbHRlcm5hdGUgZnRwICAgICAgICAgICh1c2VyIHVpZCBwYXNzd29yZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlZSB8bmV0cnctb3B0aW9uc3wpCisgICAgICAgIGc6bmV0cndfdXNlX250X3JjcCAgICAgID0wIGRvbid0IHVzZSBXaW5OVC8ySy9YUCdzIHJjcCAoZGVmYXVsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPTEgdXNlIFdpbk5ULzJLL1hQJ3MgcmNwLCBiaW5hcnkgbW9kZQorICAgICAgICBnOm5ldHJ3X3dpbjk1ZnRwICAgICAgICA9MCB1c2UgdW5peC1zdHlsZSBmdHAgZXZlbiBpZiB3aW45NS85OC9NRS9ldGMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPTEgdXNlIGRlZmF1bHQgbWV0aG9kIHRvIGRvIGZ0cCA+CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzwKIFRoZSBzY3JpcHQgd2lsbCBhbHNvIG1ha2UgdXNlIG9mIHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGludGVybmFsbHksIGFsYmVpdAogdGVtcG9yYXJpbHkuCi0KKz4KKwkJCSAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkJICAgICBUZW1wb3JhcnkgVmFyaWFibGVzCisJCQkgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KKwlWYXJpYWJsZQkJTWVhbmluZworCS0tLS0tLS0tCQktLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzwKIAlnOm5ldHJ3X21ldGhvZAkJSW5kZXggaW5kaWNhdGluZyByY3AvZnRwKy5uZXRyYy9mdHAKIAlnOm5ldHJ3X21hY2hpbmUJCUhvbGRzIG1hY2hpbmUgbmFtZSBwYXJzZWQgZnJvbSBpbnB1dAotCWc6bmV0cndfZm5hbWUJCUhvbGRzIGZpbGVuYW1lIGJlaW5nIGFjY2Vzc2VkCi0KKwlnOm5ldHJ3X2ZuYW1lCQlIb2xkcyBmaWxlbmFtZSBiZWluZyBhY2Nlc3NlZCA+CisJLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis8CiAJCQkJCQkJCSpuZXRydy1wcm90b2NvbCoKKworTmV0cncgc3VwcG9ydHMgYSBudW1iZXIgb2YgcHJvdG9jb2xzLiAgVGhlc2UgcHJvdG9jb2xzIGFyZSBpbnZva2VkIHVzaW5nIHRoZQordmFyaWFibGVzIGxpc3RlZCBiZWxvdywgYW5kIG1heSBiZSBtb2RpZmllZCBieSB0aGUgdXNlci4KID4KIAkJCSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCQkJICAgUHJvdG9jb2wgQ29udHJvbCBPcHRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm90b2NvbCBDb250cm9sIE9wdGlvbnMKIAkJCSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIE9wdGlvbgkgICAgICBUeXBlCSAgU2V0dGluZwkgIE1lYW5pbmcgfgotICAgIC0tLS0tLS0tLQkgICAgICAtLS0tLS0tLQkgIC0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gPgotICAgIG5ldHJ3X2Z0cAkgICAgICB2YXJpYWJsZQkgID1kb2Vzbid0IGV4aXN0ICB1c2VyaWQgc2V0IGJ5ICJ1c2VyIHVzZXJpZCIKLQkJCQkgID0wCQkgIHVzZXJpZCBzZXQgYnkgInVzZXIgdXNlcmlkIgotCQkJCSAgPTEJCSAgdXNlcmlkIHNldCBieSAidXNlcmlkIgotICAgIE5ldFJlYWRGaXh1cCAgICAgIGZ1bmN0aW9uCSAgPWRvZXNuJ3QgZXhpc3QgIG5vIGNoYW5nZQotCQkJCSAgPWV4aXN0cwkgIEFsbG93cyB1c2VyIHRvIGhhdmUgZmlsZXMKLQkJCQkJCSAgcmVhZCB2aWEgZnRwIGF1dG9tYXRpY2FsbHkKLQkJCQkJCSAgdHJhbnNmb3JtZWQgaG93ZXZlciB0aGV5IHdpc2gKLQkJCQkJCSAgYnkgTmV0UmVhZEZpeHVwKCkKKyAgICBPcHRpb24gICAgICAgICAgICBUeXBlICAgICAgICBTZXR0aW5nICAgICAgICAgTWVhbmluZworICAgIC0tLS0tLS0tLSAgICAgICAgIC0tLS0tLS0tICAgIC0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzwKKyAgICBuZXRyd19mdHAgICAgICAgICB2YXJpYWJsZSAgICA9ZG9lc24ndCBleGlzdCAgdXNlcmlkIHNldCBieSAidXNlciB1c2VyaWQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPTAgICAgICAgICAgICAgIHVzZXJpZCBzZXQgYnkgInVzZXIgdXNlcmlkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0xICAgICAgICAgICAgICB1c2VyaWQgc2V0IGJ5ICJ1c2VyaWQiCisgICAgTmV0UmVhZEZpeHVwICAgICAgZnVuY3Rpb24gICAgPWRvZXNuJ3QgZXhpc3QgIG5vIGNoYW5nZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID1leGlzdHMgICAgICAgICBBbGxvd3MgdXNlciB0byBoYXZlIGZpbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgdmlhIGZ0cCBhdXRvbWF0aWNhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkIGhvd2V2ZXIgdGhleSB3aXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IE5ldFJlYWRGaXh1cCgpCiAgICAgZzpuZXRyd19kYXZfY21kICAgIHZhcmlhYmxlICAgPSJjYWRhdmVyIgogICAgIGc6bmV0cndfZmV0Y2hfY21kICB2YXJpYWJsZSAgID0iZmV0Y2ggLW8iCiAgICAgZzpuZXRyd19mdHBfY21kICAgIHZhcmlhYmxlICAgPSJmdHAiCiAgICAgZzpuZXRyd19odHRwX2NtZCAgIHZhcmlhYmxlICAgPSJmZXRjaCAtbyIgZWxzZSBpZiBmZXRjaCBpcyBleGVjdXRhYmxlCiAgICAgZzpuZXRyd19odHRwX2NtZCAgIHZhcmlhYmxlICAgPSJ3Z2V0IC1PIiAgaWYgICAgICB3Z2V0ICBpcyBleGVjdXRhYmxlCisgICAgZzpuZXRyd19saXN0X2NtZCAgIHZhcmlhYmxlICAgPSJzc2ggSE9TVE5BTUUgbHMgLUZhIgogICAgIGc6bmV0cndfcmNwX2NtZCAgICB2YXJpYWJsZSAgID0icmNwIgogICAgIGc6bmV0cndfcnN5bmNfY21kICB2YXJpYWJsZSAgID0icnN5bmMgLWEiCiAgICAgZzpuZXRyd19zY3BfY21kICAgIHZhcmlhYmxlICAgPSJzY3AgLXEiCi0gICAgZzpuZXRyd19zZnRwX2NtZCAgIHZhcmlhYmxlICAgPSJzZnRwIgorICAgIGc6bmV0cndfc2Z0cF9jbWQgICB2YXJpYWJsZSAgID0ic2Z0cCIgPgorICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDwKIFRoZSBmaXJzdCB0d28gb3B0aW9ucyBib3RoIGhlbHAgd2l0aCBjZXJ0YWluIGZ0cCdzIHRoYXQgZ2l2ZSB0cm91YmxlIG90aGVyd2lzZS4KIEluIG9yZGVyIHRvIGJlc3QgdW5kZXJzdGFuZCBob3cgdG8gdXNlIHRoZXNlIG9wdGlvbnMgaWYgZnRwIGlzIGdpdmluZyB5b3UKQEAgLTM5NiwxNiArNDIxLDIxIEBACiBUaGUgZzpuZXRyd18uLi5fY21kIHZhcmlhYmxlcyBzcGVjaWZ5IHRoZSBleHRlcm5hbCBwcm9ncmFtIHRvIHVzZSBoYW5kbGUKIHRoZSBhc3NvY2lhdGVkIHByb3RvY29sIChyY3AsIGZ0cCwgZXRjKSwgcGx1cyBhbnkgb3B0aW9ucy4KIAotTmV0cncgdHlwaWNhbGx5IGJ1aWxkcyB1cCBsaW5lcyBvZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXRzIGluIGEKK1RoZSBnOm5ldHJ3X2xpc3RfY21kJ3MgSE9TVE5BTUUgZW50cnkgd2lsbCBiZSBjaGFuZ2VkIHZpYSBzdWJzdGl0dXRpb24gd2l0aAord2hhdGV2ZXIgdGhlIGN1cnJlbnQgcmVxdWVzdCBpcyBmb3IgYSBob3N0bmFtZS4KKworRm9yIGZ0cCwgbmV0cncgdHlwaWNhbGx5IGJ1aWxkcyB1cCBsaW5lcyBvZiBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtYXRzIGluIGEKIHRlbXBvcmFyeSBmaWxlOgogPgogICBJRiBnOm5ldHJ3X2Z0cCAhZXhpc3RzIG9yIGlzIG5vdCAxICAgICBJRiBnOm5ldHJ3X2Z0cCBleGlzdHMgYW5kIGlzIDEKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgb3BlbiBtYWNoaW5lIFtwb3J0XQkJICAgICAgb3BlbiBtYWNoaW5lIFtwb3J0XQotICAgICAgIHVzZXIgdXNlcmlkIHBhc3N3b3JkCQkgICAgICB1c2VyaWQgcGFzc3dvcmQKLSAgICAgICBbZzpuZXRyd19mdHBtb2RlXQkJICAgICAgcGFzc3dvcmQKLSAgICAgICBnZXQgZmlsZW5hbWUgdGVtcGZpbGUJCSAgICAgIFtnOm5ldHJ3X2Z0cG1vZGVdCi0JCQkJCSAgICAgIGdldCBmaWxlbmFtZSB0ZW1wZmlsZQorPAorICAgICAgIG9wZW4gbWFjaGluZSBbcG9ydF0gICAgICAgICAgICAgICAgICAgIG9wZW4gbWFjaGluZSBbcG9ydF0KKyAgICAgICB1c2VyIHVzZXJpZCBwYXNzd29yZCAgICAgICAgICAgICAgICAgICB1c2VyaWQgcGFzc3dvcmQKKyAgICAgICBbZzpuZXRyd19mdHBtb2RlXSAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZAorICAgICAgIGdldCBmaWxlbmFtZSB0ZW1wZmlsZSAgICAgICAgICAgICAgICAgIFtnOm5ldHJ3X2Z0cG1vZGVdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGZpbGVuYW1lIHRlbXBmaWxlID4KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA8CiBOZXRydyB0aGVuIGV4ZWN1dGVzIHRoZSBsaW5lcyBhYm92ZSBieSB1c2Ugb2YgYSBmaWx0ZXI6CiA+CkBAIC00MTgsMTQgKzQ0OCwxNCBAQAogCS1uIG1lYW5zIGRvbid0IHVzZSBuZXRyYyBhbmQgaXMgdXNlZCBmb3IgTWV0aG9kICMzIChmdHAgdy9vIDwubmV0cmM+KQogCiBJZiA8Lm5ldHJjPiBleGlzdHMgaXQgd2lsbCBiZSB1c2VkIHRvIGF2b2lkIGhhdmluZyB0byBxdWVyeSB0aGUgdXNlciBmb3IKLXVzZXJpZCBhbmQgcGFzc3dvcmQpLiAgVGhlIHRyYW5zZmVycmVkIGZpbGUgaXMgcHV0IGludG8gYSB0ZW1wb3JhcnkgZmlsZS4KK3VzZXJpZCBhbmQgcGFzc3dvcmQuICBUaGUgdHJhbnNmZXJyZWQgZmlsZSBpcyBwdXQgaW50byBhIHRlbXBvcmFyeSBmaWxlLgogVGhlIHRlbXBvcmFyeSBmaWxlIGlzIHRoZW4gcmVhZCBpbnRvIHRoZSBtYWluIGVkaXRpbmcgc2Vzc2lvbiB3aW5kb3cgdGhhdAogcmVxdWVzdGVkIGl0IGFuZCB0aGUgdGVtcG9yYXJ5IGZpbGUgZGVsZXRlZC4KIAogSWYgeW91ciBmdHAgZG9lc24ndCBhY2NlcHQgdGhlICJ1c2VyIiBjb21tYW5kIGFuZCBpbW1lZGlhdGVseSBqdXN0IGRlbWFuZHMKIGEgdXNlcmlkLCB0aGVuIHRyeSBwdXR0aW5nICJsZXQgbmV0cndfZnRwPTEiIGluIHlvdXIgPC52aW1yYz4uCiAKLQkJCQkJCQkJKm5ldHJ3LWZpeHVwKgorCQkJCQkJCSAJKm5ldHJ3LWZpeHVwKgogSWYgeW91ciBmdHAgZm9yIHdoYXRldmVyIHJlYXNvbiBnZW5lcmF0ZXMgdW53YW50ZWQgbGluZXMgKHN1Y2ggYXMgQVVUSAogbWVzc2FnZXMpIHlvdSBtYXkgd3JpdGUgYSBOZXRSZWFkRml4dXAodG1wZmlsZSkgZnVuY3Rpb246CiA+CkBAIC00NDEsNyArNDcxLDcgQEAKICAgICAgIGVsc2VpZiBhOm1ldGhvZCA9PSA3ICJyc3luYwogICAgICAgZWxzZWlmIGE6bWV0aG9kID09IDggImZldGNoCiAgICAgICBlbHNlaWYgYTptZXRob2QgPT0gOSAic2Z0cAotICAgICAgZWxzZQkJICIgY29tcGxhaW4KKyAgICAgIGVsc2UgICAgICAgICAgICAgICAiIGNvbXBsYWluCiAgICAgICBlbmRpZgogICAgIGVuZGZ1bmN0aW9uCiA+CkBAIC00NTMsMTcgKzQ4Myw0MiBAQAogZnJvbSA8bmV0cncudmltPiBpdHNlbGY6CiA+CiAgICAgaWYgaGFzKCJ3aW45NSIpICYmIGc6bmV0cndfd2luOTVmdHAKLSAgICAgZnUhIE5ldFJlYWRGaXh1cChtZXRob2QsIGxpbmUxLCBsaW5lMikKKyAgICAgZnVuISBOZXRSZWFkRml4dXAobWV0aG9kLCBsaW5lMSwgbGluZTIpCiAgICAgICAgaWYgbWV0aG9kID09IDMgICAiIGZ0cCAobm8gPC5uZXRyYz4pCi0JbGV0IGZvdXJibGFua2xpbmVzPSBsaW5lMiAtIDMKLQlzaWxlbnQgZm91cmJsYW5rbGluZXMuIiwiLmxpbmUyLiJnL15ccyovZCIKKyAgICAgICAgbGV0IGZvdXJibGFua2xpbmVzPSBsaW5lMiAtIDMKKyAgICAgICAgc2lsZW50IGZvdXJibGFua2xpbmVzLiIsIi5saW5lMi4iZy9eXHMqL2QiCiAgICAgICAgZW5kaWYKICAgICAgZW5kZnVuY3Rpb24KICAgICBlbmRpZgogPgogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTcuIERlYnVnZ2luZwkJCQkJCSpuZXRydy1kZWJ1ZyoKKzcuIFJlbW90ZSBEaXJlY3RvcnkgTGlzdGluZwkJCQkqbmV0cnctZGlyKiAqbmV0cnctbGlzdCoKKworTmV0cncgc3VwcG9ydHMgbGlzdGluZyAoYnJvd3NpbmcpIGRpcmVjdG9yaWVzIG9uIHJlbW90ZSBob3N0czsgc2ltcGx5IGF0dGVtcHQKK3RvIHJlYWQgYSAiZmlsZSIgd2l0aCBhIHRyYWlsaW5nIHNsYXNoIGFuZCBpdCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEKK3JlcXVlc3QgdG8gYnJvd3NlIGEgZGlyZWN0b3J5OgorCisJdmltIFtwcm90b2NvbF06Ly9bdXNlckBdaG9zdG5hbWUvcGF0aC8KKworTmV0cncgd2lsbCBtb2RpZnkgdGhlIGNvbW1hbmQgaW4gZzpuZXRyd19saXN0IHRvIHBlcmZvcm0gdGhlIGRpcmVjdG9yeSBsaXN0aW5nCitvcGVyYXRpb24uICBCeSBkZWZhdWx0IHRoZSBjb21tYW5kIGlzOgorCisJc3NoIEhPU1ROQU1FIGxzIC1GYQorCit3aGVyZSB0aGUgSE9TVE5BTUUgYmVjb21lcyB0aGUgaG9zdG5hbWUgYXMgcmVxdWVzdGVkIGJ5IHRoZSBhdHRlbXB0ZWQKK3JlYWQuICBOYXR1cmFsbHksIHRoZSB1c2VyIG1heSBvdmVycmlkZSB0aGlzIGNvbW1hbmQgd2l0aCB3aGF0ZXZlciBpcworcHJlZmVycmVkLiAgVGhlIE5ldExpc3QgZnVuY3Rpb24gd2hpY2ggaW1wbGVtZW50cyByZW1vdGUgZGlyZWN0b3J5Citicm93c2luZyBleHBlY3RzIHRoYXQgZGlyZWN0b3JpZXMgd2lsbCBiZSBmbGFnZ2VkIGJ5IGEgdHJhaWxpbmcgc2xhc2guCisKK0Jyb3dzaW5nIGlzIHNpbXBsZTogbW92ZSB0aGUgY3Vyc29yIG9udG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBvZiBpbnRlcmVzdC4KK0hpdHRpbmcgdGhlIDxjcj4gKHRoZSByZXR1cm4ga2V5KSB3aWxsIHNlbGVjdCB0aGUgZmlsZSBvciBkaXJlY3RvcnkuICBEaXJlY3Rvcmllcword2lsbCB0aGVtc2VsdmVzIGJlIGxpc3RlZCwgYW5kIGZpbGVzIHdpbGwgYmUgb3BlbmVkIHVzaW5nIHRoZSBwcm90b2NvbCBnaXZlbgoraW4gdGhlIG9yaWdpbmFsIHJlYWQgcmVxdWVzdC4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzguIERlYnVnZ2luZwkJCQkJCSpuZXRydy1kZWJ1ZyoKIAogVGhlIDxuZXRydy52aW0+IHNjcmlwdCBpcyB0eXBpY2FsbHkgYXZhaWxhYmxlIGFzOgogCkBAIC00OTQsMzEgKzU0OSw0MCBAQAogCQlkcmNoaXBOT1NQQU0gYXQgY2FtcGJlbGxmYW1pbHkuYml6IC0gTk9TUEFNCiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotOC4gTmV3IFN0dWZmCQkJCQkJKm5ldHJ3LW5ldyogKm5ldHJ3LW5ld3N0dWZmKgorOS4gSGlzdG9yeQkJCQkJCSpuZXRydy1oaXN0b3J5KgogCi0gICAgICAgdjQzOiAqIG1vdmVkICJFeHBsYW5hdGlvbiIgY29tbWVudHMgdG8gPHBpX25ldHJ3LnR4dD4gaGVscCBmaWxlCi0JICAgICAgYXMgIk5ldHdvcmsgUmVmZXJlbmNlIiAofG5ldHJ3LXJlZnwpCi0JICAgICogPG5ldHJ3LnZpbT4gbm93IHVzZXMgRGZ1bmMoKSBEZWNobygpIGFuZCBEcmV0KCkgZm9yIGRlYnVnZ2luZwotCSAgICAqIHJlbW92ZWQgc3VwZXJmbHVvdXMgTmV0UmVzdG9yZVBvc24oKSBjYWxscwotICAgICAgIHY0MjogKiBub3cgZG9lcyBCdWZSZWFkUHJlIGFuZCBCdWZSZWFkUG9zdCBldmVudHMgb24gZmlsZTovLy8qCi0JICAgICAgYW5kIGZpbGU6Ly9sb2NhbGhvc3QvKgotICAgICAgIHY0MTogKiBpbnN0YWxsZWQgZmlsZTovLy8qIGFuZCBmaWxlOi8vbG9jYWxob3N0LyogaGFuZGxpbmcKLSAgICAgICB2NDA6ICogcHJldmVudHMgcmVkcmF3IHdoZW4gYSBwcm90b2NvbCBlcnJvciBvY2N1cnMgc28gdGhhdCB0aGUKLQkgICAgICB1c2VyIG1heSBzZWUgaXQKLSAgICAgICB2Mzk6ICogc2Z0cCBzdXBwb3J0Ci0gICAgICAgdjM4OiAqIE5vdyB1c2VzIE5ldFJlc3RvcmVQb3NuKCkgY2FsbHMgd2l0aCBOcmVhZC9Od3JpdGUgY29tbWFuZHMKLQkgICAgKiBUZW1wb3JhcnkgZmlsZXMgbm93IHJlbW92ZWQgdmlhIGJ3aXBlISBpbnN0ZWFkIG9mIGJ3aXBlCi0JICAgICAgKHRoYW5rcyB0byBEYXZlIFJvYmVydHMpCi0gICAgICAgdjM3OiAqIENsYWFyJ3MgbW9kaWZpY2F0aW9ucyB3aGljaCB0ZXN0IGlmIGZ0cCBpcyBzdWNjZXNzZnVsLCBvdGhlcndpc2UKLQkgICAgICBnaXZlIGFuIGVycm9yIG1lc3NhZ2UKLQkgICAgKiBBZnRlciBhIHJlYWQsIHRoZSBhbHRlcm5hdGUgZmlsZSB3YXMgcG9pbnRpbmcgdG8gdGhlIHRlbXAgZmlsZS4KLQkgICAgICBUaGUgdGVtcCBmaWxlIGJ1ZmZlciBpcyBub3cgd2lwZWQgb3V0LgotCSAgICAqIHJlbW92ZWQgc2lsZW50IGZyb20gdHJhbnNmZXIgbWV0aG9kcyBzbyB1c2VyIGNhbiBzZWUgd2hhdCdzCi0JICAgICAgaGFwcGVuaW5nCisJdjQ2OiAqIG5vdyBoYW5kbGVzIHJlbW90ZSBkaXJlY3RvcnkgYnJvd3NpbmcKKwkgICAgICogZzpuZXRyd19zaWxlbnQgKGlmIDEpIHdpbGwgY2F1c2UgYWxsIHRyYW5zZmVycyB0byBiZSBzaWxlbnQnZAorCXY0NTogKiBtYWRlIHRoZSBbdXNlckBdaG9zdG5hbWU6cGF0aCBmb3JtIGEgYml0IG1vcmUgcmVzdHJpY3RpdmUKKwkgICAgICAgdG8gYmV0dGVyIGhhbmRsZSBlcnJvcnMgaW4gdXNpbmcgcHJvdG9jb2xzCisJICAgICAgIChlLmcuIHNjcDp1c3JAaG9zdDpmaWxlIHdhcyBiZWluZyByZWNvZ25pemVkIGFzIGFuIHJjcCByZXF1ZXN0KQorCXY0NDogKiBjaGFuZ2VkIGZyb20gInJzeW5jIC1hIiB0byBqdXN0ICJyc3luYyIKKwkgICAgICogc29tZWhvdyBhbiBlZGl0aW5nIGVycm9yIG1lc3NlZCB1cCB0aGUgdGVzdCB0byByZWNvZ25pemUKKwkgICAgICAgdXNlIG9mIHRoZSBmZXRjaCBtZXRob2QgZm9yIE5ldFJlYWQuCisJICAgICAqIG1vcmUgZGVidWdnaW5nIHN0YXRlbWVudHMgaW5jbHVkZWQKKwl2NDM6ICogbW92ZWQgIkV4cGxhbmF0aW9uIiBjb21tZW50cyB0byA8cGlfbmV0cncudHh0PiBoZWxwIGZpbGUKKwkgICAgICAgYXMgIk5ldHdvcmsgUmVmZXJlbmNlIiAofG5ldHJ3LXJlZnwpCisJICAgICAqIDxuZXRydy52aW0+IG5vdyB1c2VzIERmdW5jKCkgRGVjaG8oKSBhbmQgRHJldCgpIGZvciBkZWJ1Z2dpbmcKKwkgICAgICogcmVtb3ZlZCBzdXBlcmZsdW91cyBOZXRSZXN0b3JlUG9zbigpIGNhbGxzCisJdjQyOiAqIG5vdyBkb2VzIEJ1ZlJlYWRQcmUgYW5kIEJ1ZlJlYWRQb3N0IGV2ZW50cyBvbiBmaWxlOi8vLyoKKwkgICAgICAgYW5kIGZpbGU6Ly9sb2NhbGhvc3QvKgorCXY0MTogKiBpbnN0YWxsZWQgZmlsZTovLy8qIGFuZCBmaWxlOi8vbG9jYWxob3N0LyogaGFuZGxpbmcKKwl2NDA6ICogcHJldmVudHMgcmVkcmF3IHdoZW4gYSBwcm90b2NvbCBlcnJvciBvY2N1cnMgc28gdGhhdCB0aGUKKwkgICAgICAgdXNlciBtYXkgc2VlIGl0CisJdjM5OiAqIHNmdHAgc3VwcG9ydAorCXYzODogKiBOb3cgdXNlcyBOZXRSZXN0b3JlUG9zbigpIGNhbGxzIHdpdGggTnJlYWQvTndyaXRlIGNvbW1hbmRzCisJICAgICAqIFRlbXBvcmFyeSBmaWxlcyBub3cgcmVtb3ZlZCB2aWEgYndpcGUhIGluc3RlYWQgb2YgYndpcGUKKwkgICAgICAgKHRoYW5rcyB0byBEYXZlIFJvYmVydHMpCisJdjM3OiAqIENsYWFyJ3MgbW9kaWZpY2F0aW9ucyB3aGljaCB0ZXN0IGlmIGZ0cCBpcyBzdWNjZXNzZnVsLCBvdGhlcndpc2UKKwkgICAgICAgZ2l2ZSBhbiBlcnJvciBtZXNzYWdlCisJICAgICAqIEFmdGVyIGEgcmVhZCwgdGhlIGFsdGVybmF0ZSBmaWxlIHdhcyBwb2ludGluZyB0byB0aGUgdGVtcCBmaWxlLgorCSAgICAgICBUaGUgdGVtcCBmaWxlIGJ1ZmZlciBpcyBub3cgd2lwZWQgb3V0LgorCSAgICAgKiByZW1vdmVkIHNpbGVudCBmcm9tIHRyYW5zZmVyIG1ldGhvZHMgc28gdXNlciBjYW4gc2VlIHdoYXQncworCSAgICAgICBoYXBwZW5pbmcKIAogCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLTkuIENyZWRpdHMJCQkJCQkqbmV0cnctY3JlZGl0cyoKKzEwLiBDcmVkaXRzCQkJCQkJKm5ldHJ3LWNyZWRpdHMqCiAKIAlWaW0gZWRpdG9yCWJ5IEJyYW0gTW9vbGVuYWFyIChUaGFua3MsIEJyYW0hKQogCWRhdgkJc3VwcG9ydCBieSBDIENhbXBiZWxsCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9xdWlja2ZpeC50eHQgYi9ydW50aW1lL2RvYy9xdWlja2ZpeC50eHQKaW5kZXggMWMzNWQ2OC4uNGY4MTc0YiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcXVpY2tmaXgudHh0CisrKyBiL3J1bnRpbWUvZG9jL3F1aWNrZml4LnR4dApAQCAtMSw0ICsxLDQgQEAKLSpxdWlja2ZpeC50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBNYXkgMjAKKypxdWlja2ZpeC50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTc5NSw3ICs3OTUsNyBAQAogCiBNYWludGFpbmluZyB0aGUgY29ycmVjdCBkaXJlY3RvcnkgaXMgbW9yZSBjb21wbGljYXRlZCBpZiB5b3UgZG9uJ3QgdXNlCiBHTlUtbWFrZS4gQUlYLW1ha2UgZm9yIGV4YW1wbGUgZG9lc24ndCBwcmludCBhbnkgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHdvcmtpbmcKLWRpcmVjdG9yeS4gVGhlbiB5b3UgbmVlZCB0byBlbmhhbmNlIHRoZSBtYWtlZmlsZS4gSW4gdGhlIG1ha2VmaWxlIG9mIGxlc3N0aWZmCitkaXJlY3RvcnkuIFRoZW4geW91IG5lZWQgdG8gZW5oYW5jZSB0aGUgbWFrZWZpbGUuIEluIHRoZSBtYWtlZmlsZSBvZiBMZXNzVGlmCiB0aGVyZSBpcyBhIGNvbW1hbmQgd2hpY2ggZWNob2VzICJNYWtpbmcge3RhcmdldH0gaW4ge2Rpcn0iLiBUaGUgc3BlY2lhbAogcHJvYmxlbSBoZXJlIGlzIHRoYXQgaXQgZG9lc24ndCBwcmludCBpbmZvcm1hdGlvbnMgb24gbGVhdmluZyB0aGUgZGlyZWN0b3J5CiBhbmQgdGhhdCBpdCBkb2Vzbid0IHByaW50IHRoZSBhYnNvbHV0ZSBwYXRoLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvcmVjb3Zlci50eHQgYi9ydW50aW1lL2RvYy9yZWNvdmVyLnR4dAppbmRleCAxOWNiZTAxLi42OTEzYmUyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9yZWNvdmVyLnR4dAorKysgYi9ydW50aW1lL2RvYy9yZWNvdmVyLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpyZWNvdmVyLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBBcHIgMTYKKypyZWNvdmVyLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTYxLDcgKzYxLDcgQEAKICAgZGlyZWN0b3JpZXMgKGFsdGhvdWdoIFZpbSB0cmllcyB0byBhdm9pZCB0aGF0IGJ5IGNvbXBhcmluZyB0aGUgcGF0aCBuYW1lKS4KICAgVGhpcyB3aWxsIHJlc3VsdCBpbiBib2d1cyBBVFRFTlRJT04gd2FybmluZyBtZXNzYWdlcy4KIC0gV2hlbiB5b3UgdXNlIHlvdXIgaG9tZSBkaXJlY3RvcnksIGFuZCBzb21lYm9keSBlbHNlIHRyaWVzIHRvIGVkaXQgdGhlIHNhbWUKLSAgZmlsZSwgaGUgd2lsbCBub3Qgc2VlIHlvdXIgc3dhcCBmaWxlIGFuZCB3aWxsIG5vdCBnZXQgdGhlIEFUVEVOVElPTiB3YXJpbmcKKyAgZmlsZSwgaGUgd2lsbCBub3Qgc2VlIHlvdXIgc3dhcCBmaWxlIGFuZCB3aWxsIG5vdCBnZXQgdGhlIEFUVEVOVElPTiB3YXJuaW5nCiAgIG1lc3NhZ2UuCiBPbiB0aGUgQW1pZ2EgeW91IGNhbiBhbHNvIHVzZSBhIHJlY292ZXJhYmxlIHJhbSBkaXNrLCBidXQgdGhlcmUgaXMgbm8gMTAwJQogZ3VhcmFudGVlIHRoYXQgdGhpcyB3b3Jrcy4gIFB1dHRpbmcgc3dhcCBmaWxlcyBpbiBhIG5vcm1hbCByYW0gZGlzayAobGlrZSBSQU06CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zcG9uc29yLnR4dCBiL3J1bnRpbWUvZG9jL3Nwb25zb3IudHh0CmluZGV4IDM0YWJjNDYuLjc2NmMzZDggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Nwb25zb3IudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Nwb25zb3IudHh0CkBAIC0xLDQgKzEsNCBAQAotKnNwb25zb3IudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEFwciAyMworKnNwb25zb3IudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1biAxNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtODMsOSArODMsMTAgQEAKIAkJc2hvdyBvdGhlcnMgeW91IGFyZSBhIHJlZ2lzdGVyZWQgVmltIHVzZXIgb3Igc3BvbnNvci4KIAogQ2FzaAkJU21hbGwgYW1vdW50cyBjYW4gYmUgc2VuZCB3aXRoIG9yZGluYXJ5IG1haWwuICBQdXQgc29tZXRoaW5nCi0JCWFyb3VuZCB0aGUgbW9uZXksIHNvIHRoYXQgaXQncyBub3Qgbm90aWNhYmxlIGZyb20gdGhlIG91dHNpZGUuCi0JCU1lbnRpb24geW91ciBlLW1haWwgYWRkcmVzcyBpZiB5b3Ugd2FudCB0byB2b3RlIGZvciBmZWF0dXJlcwotCQlhbmQgc2hvdyBvdGhlcnMgeW91IGFyZSBhIHJlZ2lzdGVyZWQgVmltIHVzZXIgb3Igc3BvbnNvci4KKwkJYXJvdW5kIHRoZSBtb25leSwgc28gdGhhdCBpdCdzIG5vdCBub3RpY2VhYmxlIGZyb20gdGhlCisJCW91dHNpZGUuICBNZW50aW9uIHlvdXIgZS1tYWlsIGFkZHJlc3MgaWYgeW91IHdhbnQgdG8gdm90ZSBmb3IKKwkJZmVhdHVyZXMgYW5kIHNob3cgb3RoZXJzIHlvdSBhcmUgYSByZWdpc3RlcmVkIFZpbSB1c2VyIG9yCisJCXNwb25zb3IuCiAKIFRoaXMgaXMgQnJhbSdzIGFkZHJlc3M6IEJyYW0gTW9vbGVuYWFyCiAJCQlDbGVtYXRpc3N0cmFhdCAzMApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc3RhcnRpbmcudHh0IGIvcnVudGltZS9kb2Mvc3RhcnRpbmcudHh0CmluZGV4IGY5ZTEzMDEuLmM3M2QxN2UgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3N0YXJ0aW5nLnR4dAorKysgYi9ydW50aW1lL2RvYy9zdGFydGluZy50eHQKQEAgLTEsNCArMSw0IEBACi0qc3RhcnRpbmcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE1Cisqc3RhcnRpbmcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE4CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMjIyLDcgKzEyMjIsNyBAQAogLSBUaGV5IGRvbid0IHJlc3RvcmUgZXZlcnl0aGluZy4gIEZvciBleGFtcGxlLCBkZWZpbmVkIGZ1bmN0aW9ucywgYXV0b2NvbW1hbmRzCiAgIGFuZCAiOnN5bnRheCBvbiIgYXJlIG5vdCBpbmNsdWRlZC4gIFRoaW5ncyBsaWtlIHJlZ2lzdGVyIGNvbnRlbnRzIGFuZAogICBjb21tYW5kIGxpbmUgaGlzdG9yeSBhcmUgaW4gdmltaW5mbywgbm90IGluIFNlc3Npb25zIG9yIFZpZXdzLgotLSBHbG9iYWwgb3B0aW9uIHZhbHVlcyBhcmUgb25seSBzZXQgd2hlbiB0aGUgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgdmFsdWUuCistIEdsb2JhbCBvcHRpb24gdmFsdWVzIGFyZSBvbmx5IHNldCB3aGVuIHRoZXkgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgdmFsdWUuCiAgIFdoZW4gdGhlIGN1cnJlbnQgdmFsdWUgaXMgbm90IHRoZSBkZWZhdWx0IHZhbHVlLCBsb2FkaW5nIGEgU2Vzc2lvbiB3aWxsIG5vdAogICBzZXQgaXQgYmFjayB0byB0aGUgZGVmYXVsdCB2YWx1ZS4gIExvY2FsIG9wdGlvbnMgd2lsbCBiZSBzZXQgYmFjayB0byB0aGUKICAgZGVmYXVsdCB2YWx1ZSB0aG91Z2guCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zeW50YXgudHh0IGIvcnVudGltZS9kb2Mvc3ludGF4LnR4dAppbmRleCA1YmQ5NzIzLi5hYzRjMjM1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zeW50YXgudHh0CisrKyBiL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKQEAgLTEsNCArMSw0IEBACi0qc3ludGF4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE1Cisqc3ludGF4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTczOSw3ICs3MzksNyBAQAogQ1lOTElCCQkJCQkJKmN5bmxpYi52aW0qICpjeW5saWItc3ludGF4KgogCiBDeW5saWIgZmlsZXMgYXJlIEMrKyBmaWxlcyB0aGF0IHVzZSB0aGUgQ3lubGliIGNsYXNzIGxpYnJhcnkgdG8gZW5hYmxlCi1oYXJkd2FyZSBtb2RlbGluZyBhbmQgc2ltdWxhdGlvbiB1c2luZyBDKysuIFR5cGljYWxseSBDeW5saWIgZmlsZXMgaGF2ZSBhIC5jYworaGFyZHdhcmUgbW9kZWxsaW5nIGFuZCBzaW11bGF0aW9uIHVzaW5nIEMrKy4gVHlwaWNhbGx5IEN5bmxpYiBmaWxlcyBoYXZlIGEgLmNjCiBvciBhIC5jcHAgZXh0ZW5zaW9uLCB3aGljaCBtYWtlcyBpdCB2ZXJ5IGRpZmZpY3VsdCB0byBkaXN0aW5ndWlzaCB0aGVtIGZyb20gYQogbm9ybWFsIEMrKyBmaWxlLiBUaHVzLCB0byBlbmFibGUgQ3lubGliIGhpZ2hsaWdodGluZyBmb3IgLmNjIGZpbGVzLCBhZGQgdGhpcwogbGluZSB0byB5b3VyIC52aW1yYyBmaWxlOiA+CkBAIC0xNjY0LDcgKzE2NjQsNyBAQAogCiAJbGV0IGI6cHJlcHJvY3NfYXNfc2VjdGlvbnMgPSAxCiAKLUFzIHdlbGwsIHRoZSBzeW50YXggZmlsZSBhZGRzIGFuIGV4dHJhIHBhcmFncmFwaCBtYXJrZXIgZm9yIHRoZSBleGRlbnRlZAorQXMgd2VsbCwgdGhlIHN5bnRheCBmaWxlIGFkZHMgYW4gZXh0cmEgcGFyYWdyYXBoIG1hcmtlciBmb3IgdGhlIGV4dGVuZGVkCiBwYXJhZ3JhcGggbWFjcm8gKC5YUCkgaW4gdGhlIG1zIHBhY2thZ2UuCiAKIEZpbmFsbHksIHRoZXJlIGlzIGEgfGdyb2ZmLnZpbXwgc3ludGF4IGZpbGUgdGhhdCBjYW4gYmUgdXNlZCBmb3IgZW5hYmxpbmcKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RvZG8udHh0IGIvcnVudGltZS9kb2MvdG9kby50eHQKaW5kZXggMDBkOTRjMS4uZDVkNDRkZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdG9kby50eHQKKysrIGIvcnVudGltZS9kb2MvdG9kby50eHQKQEAgLTEsNCArMSw0IEBACi0qdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE2CisqdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDIwCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTMwLDE5ICszMCwxMCBAQAogCQkJCQkJCSprbm93bi1idWdzKgogLS0tLS0tLS0tLS0tLS0tLS0tLS0gS25vd24gYnVncyBhbmQgY3VycmVudCB3b3JrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgZXhhbXBsZSBkb2Vzbid0IHdvcms6Ci0gICAgOmUgYD1mb28gLiAiLmMiIGAKLUluc2lkZSBgYCBkb24ndCB1c2UgIiBhcyB0aGUgc3RhcnQgb2YgYSBjb21tZW50LgotQWxzbyBkb24ndCBleHBhbmQgJSBvciAjLgotCi1Db3JyZWN0aW9ucyBmb3IgZG9jcyBmcm9tIEEzLiAgU2tpcCBvbmVzIGFscmVhZHkgZG9uZS4KLQotCiBGb3IgdmVyc2lvbiA3LjA6CiAtICAgSW5jbHVkZSBtYW55IFBBVENIRVM6Ci0gICAgOSAgIFdpbjMyIEd1STogVGhlIHByaW50IGRpYWxvZyB1c2VzIGEgZm9udCB3aGljaCBkb2Vzbid0IGRpc3BsYXkgbXVsdGktYnl0ZQotCW1lc3NhZ2VzLiAgSW5jbHVkZSBwYXRjaCBmcm9tIFZpcGluIEFyYXZpbmQ/ICBVcGRhdGUgZnJvbSBZYXN1aGlybwotCU1hdHN1bW90by4KKyAgICA5ICAgTWVyZ2UgaW4gaWRlYXMgZnJvbSB0dXRvci50eHQgKEdhYnJpZWwgWmFjaG1hbm4pCisJTmV3IHZlcnNpb24gMjAwNCBKdW5lIDE2LgogICAgIDggICAiOndpbnBvcyIgZG9lc24ndCB3b3JrLiAgUGF0Y2ggZnJvbSBWaXBpbiBBcmF2aW5kLgogICAgIDggICBBZGQgR1RLIDIuMyBmaWxlIGRpYWxvZyBzdXBwb3J0LiAgUGF0Y2ggYnkgR3JhaGFtZSBCb3dsYW5kLCAyMDA0IE1hciAxNSwKIAlidXQgaXQgZG9lc24ndCB1c2UgImluaXRkaXIiIG9yICJkZmx0Ii4gKHdpbGwgdXBkYXRlIHBhdGNoKQpAQCAtNTEsNyArNDIsNyBAQAogICAgIDggICBBZGQgZmlsZSBsb2NraW5nLiAgTG9jayBhIGZpbGUgd2hlbiBzdGFydGluZyB0byBlZGl0IGl0IHdpdGggZmxvY2soKSBvcgogCWZjbnRsKCkuICBUaGlzIHBhdGNoIGhhcyBhZHZpc29yeSBmaWxlIGxvY2tpbmcgd2hpbGUgcmVhZGluZy93cml0aW5nCiAJdGhlIGZpbGU6IH4vdmltL3BhdGNoZXMva2Fobl9maWxlX2xvY2tpbmcgLgotCURvIHdlIHN0aWxsIHdhbnQgdGhpcy8KKwlEbyB3ZSBzdGlsbCB3YW50IHRoaXM/ICBBbmR5IGRvZXNuJ3QgaGF2ZSB0aW1lIHRvIHdvcmsgb24gaXQuCiAgICAgOCAgIEFkZCBidWZmZXItbG9jYWwgYXV0b2NvbW1hbmRzPyAgUmVkdWNlcyBvdmVyaGVhZCBmb3IgYXV0b2NvbW1hbmRzIHRoYXQKIAl0cmlnZ2VyIG9mdGVuIChpbnNlcnRpbmcgYSBjaGFyYWN0ZXIsIHN3aXRjaGluZyBtb2RlKS4KIAkgICAgOmF1IEV2ZW50IDxidWZmZXI+IGRvLXNvbWV0aGluZwpAQCAtNjQsMTAgKzU1LDc5IEBACiAJVmltUmVzaXplZAkgICAgLSBXaGVuIHRoZSBWaW0gd2luZG93IGhhcyBiZWVuIHJlc2l6ZWQgKFNJR1dJTkNIKQogCSAgcGF0Y2ggZnJvbSBZYWtvdiBMZXJuZXIsIDIwMDMgSnVseSAyNC4KIAkgIEhlJ2xsIHdyaXRlIGRvY3VtZW50YXRpb24gYW5kIHNlbmQgdXBkYXRlZCBwYXRjaC4KKyAgICAgICAgSW5zbW9kRW50ZXIKKwlJbnNtb2RMZWF2ZQkgICAgVGFybyBNdXJhb2thLCAyMDA0IEp1biAxNgogICAgIC0gICBJbmNsdWRlIHRoZSBrdmltIHBhdGNoLiBodHRwOi8vZnJlZW51eC5vcmcvdmltLyAoTWlja2FlbCBNYXJjaGFuZCkKIAlEbyBub3QgYWRkIFF0b3BpYSB5ZXQsIGl0IGRvZXNuJ3Qgd29yayB2ZXJ5IHdlbGwuCiAJTWlja2FlbCB3aWxsIHVwZGF0ZSB0aGUgcGF0Y2ggYmVmb3JlIDIxc3QuCi0gICAgLS0tIHJlc3BvbnNlcyBhYm92ZQorICAgIDggICBVbml4OiBXaGVuIGxpYmNhbGwoKSBmYWlscyB0aGVyZSBpcyBubyBjbGVhciBlcnJvciBtZXNzYWdlLiAgSm9oYW5uZXMKKwlaZWxsbmVyIGhhcyBhIHBhdGNoIGZvciB0aGlzLgorCXVwZGF0ZWQgcGF0Y2ggMjAwNCBKdW5lIDE2LgorICAgIDcgICBBZGQgdGhlIE16U2NoZW1lIGludGVyZmFjZS4gIFBhdGNoIG9uIGh0dHA6Ly9pYW1waGV0Lm5tLnJ1L3NjaGVtZS8KKwkoU2VyZ2V5IEtob3JldikKKwlBbHQgVVJMOiBodHRwOi8vY3liZXIubWllbS5lZHUucnUvfmlhbXBoZXQvc2NoZW1lL216dmltLTAuNTYwLnRhci5negorICAgIDggICBBZGQgcGF0Y2ggZnJvbSBNdXJhb2thIFRhcm8gKE1hciAxNikgdG8gc3VwcG9ydCBpbnB1dCBtZXRob2Qgb24gTWFjPworCU5ldyBwYXRjaCAyMDA0IEp1biAxNgorICAgIDggICBBZGQgZXhwcmVzc2lvbi1leHBhbnNpb24sIHNvIHRoYXQgdGhlIHVzZXIgY2FuIGRlZmluZSBoaXMgb3duIGtpbmQgb2YKKwljb21wbGV0aW9uLiAgUGF0Y2ggZnJvbSBUYXJvIE11cmFva2EsIDIwMDMgQXVnIDI2LgorCU5ldyBwYXRjaCAyMDA0IEp1biAxNgorICAgIDggICBUZXh0IG9iamVjdHM6IEFkZCAiYSciIGFuZCAnYSInOiBhIHNpbmdsZSBvciBkb3VibGUgcXVvdGVkIHN0cmluZy4KKwkoVGltIENoYXNlKSBQYXRjaCBmcm9tIFRhcm8gTXVyYW9rYSAoMjAwMyBEZWMgMTYpLgorCU5ldyBwYXRjaCAyMDA0IEp1biAxNgorICAgIDcgICBBZGQgIm5ic3AiIGluICdsaXN0Y2hhcnMnPyAgUGF0Y2ggZnJvbSBEYXZpZCBCbGFuY2hldCwgMjAwMyBKdWwgMjguCisJYWdhaW4gMjAwNCBKdW4gMTYKKyAgICA4ICAgQWRkICI6biIgdG8gZm5hbWVtb2RpZnkoKTogbm9ybWFsaXplIHBhdGgsIHJlbW92ZSAiLi4vIiB3aGVuIHBvc3NpYmxlLgorCUFyaWMgQmx1bWVyIGhhcyBhIHBhdGNoIGZvciB0aGlzLgorCUhlIHdpbGwgdXBkYXRlIHRoZSBwYXRjaCBmb3IgNi4zLgorICAgIDkgICBBZGQgY3Vyc29yLWNvbHVtbiBoaWdobGlnaHRpbmcuICBFbmFibGUgaXQgd2l0aCAnY3Vyc29yY29sdW1uJyBvcHRpb24sCisJc2V0IGhpZ2hsaWdodGluZyB3aXRoICJDdXJzb3JDb2x1bW4iIGdyb3VwLiAgVXNlZnVsIGZvciBhbGlnbmluZyB0ZXh0LgorCUFsc28gY3Vyc29yLXJvdyBoaWdobGlnaHRpbmcuICBQYXRjaCBmcm9tIFlhc3VoaXJvIE1hdHN1bW90byBmb3IKKwl1bmRlcmxpbmluZyB0aGUgY3Vyc29yIGxpbmUsIDIwMDQgTWFyIDI0LiAgVXBkYXRlIDIwMDQgSnVuIDE3CisJQWx0ZXJuYXRpZTogd2hlbiAnbnVtYmVyJyBpcyBzZXQgaGlnaGxpZ2h0IHRoZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQKKwlsaW5lLgorICAgIDcgICBDb21wbGV0aW9uIG9mIG5ldHdvcmsgc2hhcmVzLCBwYXRjaCBieSBZYXN1aGlybyBNYXRzdW1vdG8uCisJVXBkYXRlIDIwMDQgSnVuIDE3LgorICAgIDggICBQYXRjaGVzIGZyb20gUGV0ZXIgIlJhaW4gRG9nIiBDdWNrYToKKwktIGd1aWZvbnQgc2VsZWN0b3IgKDIwMDIgRGVjIDE1KSAgd2lsbCBzZW5kIHVwZGF0ZQorICAgIDcgICBBZGQgYW4gb3B0aW9uIHRvIHNldCB0aGUgd2lkdGggb2YgdGhlICdudW1iZXInIGNvbHVtbi4gIEVpZ2h0CisJcG9zaXRpb25zIGlzIG9mdGVuIG1vcmUgdGhhbiBuZWVkZWQuICBPciBhZGp1c3QgdGhlIHdpZHRoIHRvIHRoZQorCWxlbmd0aCBvZiB0aGUgZmlsZT8KKwlBZGQgcGF0Y2ggdGhhdCBhZGRzICdudW1iZXJsZW4nIG9wdGlvbi4gKEphbWVzIEhhcnZleSkKKwlPdGhlciBwYXRjaCB3aXRoIG1pbiBhbmQgbWF4IGZyb20gRW1tYW51ZWwgUmVuaWVyaXMgKDIwMDIgSnVsIDI0KQorCU90aGVyIHBhdGNoIHdpdGhvdXQgYW4gb3B0aW9uIGJ5IEdpbGxlcyBSb3kgKDIwMDIgSnVsIDI1KQorCU5ldyBwYXRjaCBmcm9tIEVtbWFudWVsIFJlbmllcmlzLCAyMDA0IEp1biAxNworCU5lZWRzIG1vcmUgd29yazogdXNlIG9uZSBvcHRpb24gd2l0aCBvbmUgb3IgdHdvIG51bWJlcnMKKyAgICA3ICAgQmUgYWJsZSB0byBjYWxsIGEgZnVuY3Rpb24gd2hpbGUgcGFzc2luZyBvbiBhIHZhcmlhYmxlIG51bWJlciBvZgorCWFyZ3VtZW50czoKKwkgICAgOmZ1bmN0aW9uIEZvbyhhYmMsIC4uLikKKwkgICAgOiAgY2FsbCBCYXIoYTphYmMsIGE6KikKKwlDaGFybGVzIENhbXBiZWxsIGhhcyBhIHBhdGNoIGZvciB0aGlzCisJSGUgbG9zdCB0aGUgcGF0Y2ggaGltc2VsZi4KKyAgICA3ICAgTWFrZSAiOnN0YXJ0aW5zZXJ0IiBjb21tYW5kIHdvcmsgZGlyZWN0bHkgZm9yIGZ1bmN0aW9ucyBhbmQgc2NyaXB0cz8KKwlBbHNvIG1ha2UgaXQgcG9zc2libGUgdG8gYXBwZW5kIChpdCdzIGRpZmZpY3VsdCBhdCBlbmQgb2YgbGluZSkuCisJQW5kIGFkZCAiOnN0YXJ0cmVwbGFjZSIgKHBhdGNoIGJ5IENoYXJsZXMgQ2FtcGJlbGwsIDIwMDQgSmFuIDksCisJaHR0cDovL3d3dy5lcm9scy5jb20vYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI1BhdGNoKQorCVVwZGF0ZSAyMDA0IEp1bmUgMTgKKyAgICA4ICAgQWRkIHBhdGNoIGZyb20gQ2hhcmxlcyBDYW1wYmVsbCB0byBoYXZlICI6MGZpbGUhIiByZW1vdmUgdGhlIG5hbWUgb2YKKwl0aGUgY3VycmVudCBidWZmZXIuICgyMDAzIEp1bmUgMTcpCisJTG9zdCB0aGUgcGF0Y2ggaGltc2VsZi4KKyAgICA4ICAgTWFrZSBpdCBwb3NzaWJsZSB0byBkZWxldGUgbWFya3MuICBDaGFybGVzIENhbXBiZWxsIGhhcyBhIHBhdGNoIHRoYXQKKwlkb2VzIHRoaXMgd2l0aCB0aGUgbWFya2NsZWFyKCkgZnVuY3Rpb24gKDIwMDQgSmFuIDkpLiAgQW5kIHRoZQorCSI6ZGVsbWFyayIgY29tbWFuZCAoMjAwNCBGZWIgOSkKKwlVcGRhdGUgMjAwNCBKdW5lIDE4CisgICAgOCAgICI6aGFyZGNvcHkiOgorCS0gUGF0Y2ggdG8gYXBwZW5kIENUUkwtRCB0byBQb3N0U2NyaXB0IG91dHB1dCAoTWlrZSBXaWxsaWFtcywgMjAwNCBKdW4KKwkgIDE0KQorCS0gc3VwcG9ydCBwcmludGluZyBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuICBQYXRjaCBmcm9tIE1vdG9ub2J1CisJICBJY2hpbXVyYS4gIE5ldyAoYmV0dGVyKSBwYXRjaCBmcm9tIE1pa2UgV2lsbGlhbXMgKDIwMDQgSmFuIDIwKQorCSAgVXBkYXRlZCBwYXRjaDogaHR0cDovL3d3dy5lYW5kZW0uY28udWsvbXJ3L3ZpbS9zcGVjaWFsL2luZGV4Lmh0bWwKKyAgICA3ICAgQWRkIHBhdGNoIGZyb20gV2FsbCBmb3IgdGhpcyBvbmUgKCB+L01haWwvb2xkbWFpbC93YWxsL2luLjAwMDE5ICk6CisJJ2ZsaXBjYXNlJyB2YXJpYWJsZTogdXBwZXIvbG93ZXJjYXNlIHBhaXJzLgorCUluc2VydCBjb21tYSdzIGJldHdlZW4gcGFpcnMgYW5kIGFsbG93IGEgcmFuZ2UsIG1ha2UgaXQgbG9vayBsaWtlCisJJ2lzZm5hbWUnLiAgRS5nLiAiOnNldCBmbGlwY2FzZT1hLXpBLVoseFgsMjMtMzM6MTQzLTE1MyIuICBUaGUgY29sb24gdG8KKwlzZXBhcmF0ZSB0aGUgZnJvbSBhbmQgdG8gcGFydCBpcyBvcHRpb25hbC4KKwlSZXNwOiBubyB0aW1lIG5vdy4KKyAgICAtLS0gcmVzcG9uc2VzIGFib3ZlIC0tCiAgICAgNyAgIE1ha2UgIjVkZCIgb24gbGFzdC1idXQtb25lLWxpbmUgbm90IGRlbGV0ZSBhbnl0aGluZyAoVmkgY29tcGF0aWJsZSkuCiAJQWRkIGZsYWcgaW4gJ2Nwb3B0aW9ucycgZm9yIHRoaXMuICBXaGVuIG5vdCBwcmVzZW50LCAiMmRkIiBpbiB0aGUgbGFzdAogCWxpbmUgc2hvdWxkIGRlbGV0ZSB0aGUgbGFzdCBsaW5lLiAgUGF0Y2ggZnJvbSBncmVlbnggMjAwMiBBcHIgMTEuCkBAIC03NywzMCArMTM3LDEwIEBACiAJTWFydGluIERhbGVja2kgMjAwMiBKYW4gMTEuCiAgICAgOCAgIEFkZCBhIGZldyBtb3JlIGNvbW1hbmQgbmFtZXMgdG8gdGhlIG1lbnVzLiAgUGF0Y2ggZnJvbSBKaXJpIEJyZXppbmEKIAkoMjggZmViIDIwMDIpLgotICAgIDggICBQYXRjaCB0byBhZGQgJ3RyYW5zcGFyZW5jeScgb3B0aW9uLiAgRGlzYWR2YW50YWdlOiBpdCdzIHNsb3cuIChFY2tlaGFyZAotCUJlcm5zLCAyMDA0IE1heSA5KSBodHRwOi8vZWNraS50by92aW0taWNucy9UcmFuc0JhY2suZGlmZgotICAgIDggICBQYXRjaGVzIGZyb20gIlJhaW4gRG9nIiBDdWNrYToKLQktIGd1aWZvbnQgc2VsZWN0b3IgKDIwMDIgRGVjIDE1KQotCS0gc2Nyb2xsYmFyICgyMDAyIERlYyA4KQotCS0gUXVhcnR6IGZvbnRzICgyMDAyIERlYyA4KQogICAgIDcgICBBVFRFTlRJT04gZGlhbG9nIGNob2ljZXMgYXJlIG1vcmUgbG9naWNhbCB3aGVuICJEZWxldGUgaXQnIGFwcGVhcnMKIAliZWZvcmUgIlF1aXQiLiAgUGF0Y2ggYnkgUm9iZXJ0IFdlYmIsIDIwMDQgTWF5IDMuCi0gICAgOCAgIFVuaXg6IFdoZW4gbGliY2FsbCgpIGZhaWxzIHRoZXJlIGlzIG5vIGNsZWFyIGVycm9yIG1lc3NhZ2UuICBKb2hhbm5lcwotCVplbGxuZXIgaGFzIGEgcGF0Y2ggZm9yIHRoaXMuCi0gICAgOCAgICI6aGFyZGNvcHkiOgotCS0gUGF0Y2ggdG8gYXBwZW5kIENUUkwtRCB0byBQb3N0U2NyaXB0IG91dHB1dCAoTWlrZSBXaWxsaWFtcywgMjAwNCBKdW4KLQkgIDE0KQotCS0gc3VwcG9ydCBwcmludGluZyBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuICBQYXRjaCBmcm9tIE1vdG9ub2J1Ci0JICBJY2hpbXVyYS4gIE5ldyAoYmV0dGVyKSBwYXRjaCBmcm9tIE1pa2UgV2lsbGlhbXMgKDIwMDQgSmFuIDIwKQotICAgIDkgICBNZXJnZSBpbiBpZGVhcyBmcm9tIH4vdmltL3BhdGNoZXMvdHV0b3IudHh0IChHYWJyaWVsIFphY2htYW5uKQotICAgIDggICBBZGQgcGF0Y2ggZnJvbSBNdXJhb2thIFRhcm8gKE1hciAxNikgdG8gc3VwcG9ydCBpbnB1dCBtZXRob2Qgb24gTWFjPwogICAgIC0gICBJbmNsdWRlIGZsaXBjYXNlIHBhdGNoOiB+L3ZpbS9wYXRjaGVzL3dhbGwuZmxpcGNhc2UyID8gIE1ha2UgaXQgd29yawogCWZvciBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuCi0gICAgNyAgIEFkZCBwYXRjaCBmcm9tIFdhbGwgZm9yIHRoaXMgb25lICggfi9NYWlsL29sZG1haWwvd2FsbC9pbi4wMDAxOSApOgotCSdmbGlwY2FzZScgdmFyaWFibGU6IHVwcGVyL2xvd2VyY2FzZSBwYWlycy4KLQlJbnNlcnQgY29tbWEncyBiZXR3ZWVuIHBhaXJzIGFuZCBhbGxvdyBhIHJhbmdlLCBtYWtlIGl0IGxvb2sgbGlrZQotCSdpc2ZuYW1lJy4gIEUuZy4gIjpzZXQgZmxpcGNhc2U9YS16QS1aLHhYLDIzLTMzOjE0My0xNTMiLiAgVGhlIGNvbG9uIHRvCi0Jc2VwYXJhdGUgdGhlIGZyb20gYW5kIHRvIHBhcnQgaXMgb3B0aW9uYWwuCiAgICAgLSAgIFdpbjMyOiBhZGQgb3B0aW9ucyB0byBwcmludCBkaWFsb2cuICBQYXRjaCBmcm9tIFZpcGluIEFyYXZpbmQuCiAgICAgLSAgIFBhdGNoIHRvIGFkZCBoaWdobGlnaHRpbmcgZm9yIHdoaXRlc3BhY2UuIChUb20gU2NodW1tLCAyMDAzIEp1bCA1KQogCXVzZSB0aGUgcGF0Y2ggdGhhdCBrZWVwcyB1c2luZyBITEZfOCBpZiBITEZfV1MgaGFzIG5vdApAQCAtMTEzLDE5ICsxNTMsNiBAQAogICAgIC0gICBBZGQgcG9zc2liaWxpdHkgdG8gaGlnaGxpZ2h0IHNwZWNpZmljIGNvbHVtbnMgKGZvciBGb3J0cmFuKS4gIE9yIHB1dCBhCiAJbGluZSBpbiBiZXR3ZWVuIGNvbHVtbnMgKGUuZy4gZm9yICd0ZXh0d2lkdGgnKS4KIAlQYXRjaCB0byBhZGQgJ2hsY29sdW1uJyBmcm9tIFZpdCBTdHJhZGFsLCAyMDA0IE1heSAyMC4KLSAgICA5ICAgQWRkIGN1cnNvci1jb2x1bW4gaGlnaGxpZ2h0aW5nLiAgRW5hYmxlIGl0IHdpdGggJ2N1cnNvcmNvbHVtbicgb3B0aW9uLAotCXNldCBoaWdobGlnaHRpbmcgd2l0aCAiQ3Vyc29yQ29sdW1uIiBncm91cC4gIFVzZWZ1bCBmb3IgYWxpZ25pbmcgdGV4dC4KLQlBbHNvIGN1cnNvci1yb3cgaGlnaGxpZ2h0aW5nLiAgUGF0Y2ggZnJvbSBZYXN1aGlybyBNYXRzdW1vdG8gZm9yCi0JdW5kZXJsaW5pbmcgdGhlIGN1cnNvciBsaW5lLCAyMDA0IE1hciAyNC4KLQlBbHRlcm5hdGllOiB3aGVuICdudW1iZXInIGlzIHNldCBoaWdobGlnaHQgdGhlIG51bWJlciBvZiB0aGUgY3VycmVudAotCWxpbmUuCi0gICAgNyAgIEJlIGFibGUgdG8gY2FsbCBhIGZ1bmN0aW9uIHdoaWxlIHBhc3Npbmcgb24gYSB2YXJpYWJsZSBudW1iZXIgb2YKLQlhcmd1bWVudHM6Ci0JICAgIDpmdW5jdGlvbiBGb28oYWJjLCAuLi4pCi0JICAgIDogIGNhbGwgQmFyKGE6YWJjLCBhOiopCi0JQ2hhcmxlcyBDYW1wYmVsbCBoYXMgYSBwYXRjaCBmb3IgdGhpcwotICAgIDggICBBZGQgIjpuIiB0byBmbmFtZW1vZGlmeSgpOiBub3JtYWxpemUgcGF0aCwgcmVtb3ZlICIuLi8iIHdoZW4gcG9zc2libGUuCi0JQXJpYyBCbHVtZXIgaGFzIGEgcGF0Y2ggZm9yIHRoaXMuCiAgICAgOCAgIEFkZCBmdW5jdGlvbnM6CiAJdHIoZXhwciwgZnJvbSwgdG8pCXRyYW5zbGF0ZSBjaGFycyAoUGF0Y2ggZnJvbSBSb24gQWFyb24sIEFwciA4CiAJCQkJMjAwNCkKQEAgLTEzNiw5ICsxNjMsOSBAQAogCQkJCVByZXNzZXIpCiAJCQkJSGUgd2lsbCBzZW5kIGEgbmV3IHBhdGNoLgogCQkJCUlzIHRoaXMgcmVhbGx5IHVzZWZ1bD8KLQktLS0KIAltdWx0aWJ5dGVpZHgoc3RyaW5nLCBpZHgpIEJ5dGUgaW5kZXggaW4gbXVsdGktYnl0ZSBjaGFyYWN0ZXIuCiAJCQkJUGF0Y2ggYnkgSWx5YSBTaGVyLCAyMDA0IEZlYiAyNQorCQkJCVVwZGF0ZSBKdW5lIDE4ICh0aGlyZCBvbmUpLgogCW1lbnVwcm9wKHtuYW1lfSwge2lkeH0sIHt3aGF0fSkKIAkJCQlHZXQgbWVudSBwcm9wZXJ0eSBvZiBtZW51IHtuYW1lfSBpdGVtIHtpZHh9LgogCQkJCW1lbnVwcm9wKCIiLCAxLCAibmFtZSIpIHJldHVybnMgIkZpbGUiLgpAQCAtMTQ4LDkgKzE3NSwxNSBAQAogCW1hcG5hbWUoe2lkeH0sIG1vZGUpCXJldHVybiB0aGUgbmFtZSBvZiB0aGUgaWR4J3RoIG1hcHBpbmcuCiAJCQkJUGF0Y2ggYnkgSWx5YSBTaGVyLCAyMDA0IE1hciA0LgogCW1hdGNoKHtwYXR9LCB7c3RyaW5nfSBbLHN0YXJ0XSBbLGNvdW50XSkgZ2V0IGluZGV4IG9mIGNvdW50J3RoIG1hdGNoCi0JCQkJUGF0Y2ggYnkgSWx5YSBTaGVyLCAyMDA0IE1hciAzMQorCQkJCVBhdGNoIGJ5IElseWEgU2hlciwgMjAwNCBKdW4gMTkKIAlmaW5kKCkJCQlmaW5kIGZpbGUgaW4gJ3BhdGgnIChwYXRjaCBmcm9tIEpvaGFubmVzCiAJCQkJWmVsbG5lciAyMDAxIERlYyAyMCkKKwkJCQlVcGRhdGUgMjAwNCBKdW4gMTYuCisJZ2V0dGV4dCgpCQlUcmFuc2xhdGUgYSBtZXNzYWdlLiAgKFBhdGNoIGZyb20gWWFzdWhpcm8KKwkJCQlNYXRzdW1vdG8pIEhvdyB0byBnZXQgdGhlIG1lc3NhZ2VzIGludG8gdGhlCisJCQkJLnBvIGZpbGVzPworCQkJCVVwZGF0ZSAyMDA0IEp1biAxNworCS0tLQogCXJlYWxuYW1lKCkJCUdldCB1c2VyIG5hbWUgKGZpcnN0LCBsYXN0LCBmdWxsKQogCQkJCXVzZXJfZnVsbG5hbWUoKSBwYXRjaCBieSBOaWtvbGFpIFdlaWJ1bGwsIE5vdgogCQkJCTMgMjAwMikKQEAgLTE3NSwxMCArMjA4LDYgQEAKIAkJCQkoUGF0Y2ggZnJvbSBZZWdhcHBhbiBMYWtzaG1hbmFuKQogCXJhaXNld2luKCkJCXJhaXNlIGd2aW0gd2luZG93IChzZWUgSGllckFzc2lzdCBwYXRjaCBmb3IKIAkJCQlUY2wgaW1wbGVtZW50YXRpb24gfi92aW0vSGllckFzc2lzdC8gKQotCWdldHRleHQoKQkJVHJhbnNsYXRlIGEgbWVzc2FnZS4gIChQYXRjaCBmcm9tIFlhc3VoaXJvCi0JCQkJTWF0c3Vtb3RvKSBIb3cgdG8gZ2V0IHRoZSBtZXNzYWdlcyBpbnRvIHRoZQotCQkJCS5wbyBmaWxlcz8KLSAgICA3ICAgQWRkICJuYnNwIiBpbiAnbGlzdGNoYXJzJz8gIFBhdGNoIGZyb20gRGF2aWQgQmxhbmNoZXQsIDIwMDMgSnVsIDI4LgogICAgIDcgICBBZGQgcGF0Y2ggZnJvbSBCZW5vaXQgQ2VycmluYSB0byBpbnRlZ3JhdGUgVmltIGFuZCBQZXJsIGZ1bmN0aW9ucwogCWJldHRlci4gIE5vdyBhbHNvIHdvcmtzIGZvciBSdWJ5ICgyMDAxIE5vdiAxMCkKICAgICA3ICAgQWRkICd0YWdsaXN0ZmlsZXMnIG9wdGlvbiwgc2hvdyBmaWxlIG5hbWUgYW5kIHR5cGUgd2hlbiBsaXN0aW5nIG1hdGNoaW5nCkBAIC0xODYsMzcgKzIxNSwyMCBAQAogICAgIDcgICBNb3RpZjogdXNlIHRoZSBtZW51IGZvbnQgY29uc2lzdGVudGx5LiAgUGF0Y2ggZnJvbSBNYXJ0aW4gRGFsZWNraSAyMDAyCiAJSmFuIDExLgogICAgIC0gICBNb3RpZjogYWRkIDNEIHNoYWRpbmcgZm9yIHRoZSBtZW51IGVudHJpZXM/ICBQYXRjaCBmcm9tIE1hcnRpbiBEYWxlY2tpLgotICAgIDggICBBZGQgZXhwcmVzc2lvbi1leHBhbnNpb24sIHNvIHRoYXQgdGhlIHVzZXIgY2FuIGRlZmluZSBoaXMgb3duIGtpbmQgb2YKLQljb21wbGV0aW9uLiAgUGF0Y2ggZnJvbSBUYXJvIE11cmFva2EsIDIwMDMgQXVnIDI2LgotICAgIDcgICBDb21wbGV0aW9uIG9mIG5ldHdvcmsgc2hhcmVzLCBwYXRjaCBieSBZYXN1aGlybyBNYXRzdW1vdG8uCiAgICAgOSAgIFdoZW4gJ2F1dG9pbmRlbnQnIGlzIHNldCwgaGl0dGluZyA8Q1I+IHR3aWNlLCB3aGlsZSB0aGVyZSBpcyB0ZXh0IGFmdGVyCiAJdGhlIGN1cnNvciwgZG9lc24ndCBkZWxldGUgdGhlIGF1dG9pbmRlbnQgaW4gdGhlIHJlc3VsdGluZyBibGFuayBsaW5lLgogCShSaWNoIFdhbGVzKSBUaGlzIGlzIFZpIGNvbXBhdGlibGUsIGJ1dCBpdCBsb29rcyBsaWtlIGEgYnVnLiAgUmljaCBoYXMKIAlhIHN1Z2dlc3Rpb24gZm9yIGEgcGF0Y2ggdG8gZml4IHRoaXMuCiAJZS1tYWlsIHRvIFJpY2ggYm91bmNlZC4KLSAgICA3ICAgTWFrZSAiOnN0YXJ0aW5zZXJ0IiBjb21tYW5kIHdvcmsgZGlyZWN0bHkgZm9yIGZ1bmN0aW9ucyBhbmQgc2NyaXB0cz8KLQlBbHNvIG1ha2UgaXQgcG9zc2libGUgdG8gYXBwZW5kIChpdCdzIGRpZmZpY3VsdCBhdCBlbmQgb2YgbGluZSkuCi0JQW5kIGFkZCAiOnN0YXJ0cmVwbGFjZSIgKHBhdGNoIGJ5IENoYXJsZXMgQ2FtcGJlbGwsIDIwMDQgSmFuIDksCi0JaHR0cDovL3d3dy5lcm9scy5jb20vYXN0cm9uYXV0L3ZpbS9pbmRleC5odG1sI1BhdGNoKQotICAgIDggICBUZXh0IG9iamVjdHM6IEFkZCAiYSciIGFuZCAnYSInOiBhIHNpbmdsZSBvciBkb3VibGUgcXVvdGVkIHN0cmluZy4KLQkoVGltIENoYXNlKSBQYXRjaCBmcm9tIFRhcm8gTXVyYW9rYSAoMjAwMyBEZWMgMTYpLgogICAgIDcgICBGb3IgVmlzdWFsIG1vZGU6IENvbW1hbmQgdG8gZG8gYSBzZWFyY2ggZm9yIHRoZSBzdHJpbmcgaW4gdGhlIG1hcmtlZAogCWFyZWEuICBPbmx5IHdoZW4gZmV3ZXIgdGhhbiB0d28gbGluZXMuIFVzZSAiZy8iIGFuZCAiZ2IiLiAgUGF0Y2ggZnJvbQogCVllZ2FwcGFuIExha3NobWFuYW4uCiAgICAgNyAgIFdoZW4gJ3JpZ2h0bGVmdCcgaXMgc2V0LCB0aGUgc2VhcmNoIHBhdHRlcm4gc2hvdWxkIGJlIGRpc3BsYXllZCByaWdodAogCXRvIGxlZnQgYXMgd2VsbD8gIFNlZSBwYXRjaCBvZiBEZWMgMjYuIChOYWRpbSBTaGFpa2xpKQotICAgIDggICBBZGQgcGF0Y2ggZnJvbSBDaGFybGVzIENhbXBiZWxsIHRvIGhhdmUgIjowZmlsZSEiIHJlbW92ZSB0aGUgbmFtZSBvZgotCXRoZSBjdXJyZW50IGJ1ZmZlci4gKDIwMDMgSnVuZSAxNykKLSAgICA4ICAgTWFrZSBpdCBwb3NzaWJsZSB0byBkZWxldGUgbWFya3MuICBDaGFybGVzIENhbXBiZWxsIGhhcyBhIHBhdGNoIHRoYXQKLQlkb2VzIHRoaXMgd2l0aCB0aGUgbWFya2NsZWFyKCkgZnVuY3Rpb24gKDIwMDQgSmFuIDkpLiAgQW5kIHRoZQotCSI6ZGVsbWFyayIgY29tbWFuZCAoMjAwNCBGZWIgOSkKLSAgICA3ICAgV2luMzI6IEFkZCBwYXRjaCBmb3IgNS1idXR0b24gbW91c2UuIChNaWNoYWVsIEdlZGRlcyAyMDAxIE5vdiAyNikKICAgICA4ICAgTG9jayBhbGwgdXNlZCBtZW1vcnkgc28gdGhhdCBpdCBkb2Vzbid0IGdldCBzd2FwcGVkIHRvIGRpc2sgKHVuY3J5cHRlZCkuCiAJUGF0Y2ggYnkgSmFzb24gSG9sdCwgMjAwMyBNYXkgMjMuCiAgICAgNyAgIFN1cHBvcnQgYSBzdHJvbmdlciBlbmNyeXB0aW9uLiAgSmFzb24gSG9sdCBpbXBsZW1lbnRlZCBBRVMgKE1heSA2IDIwMDMpLgogICAgIDcgICBBZGQgISByZWdpc3RlciwgZm9yIHNoZWxsIGNvbW1hbmRzLiAocGF0Y2ggZnJvbSBHcmVuaWUpCi0gICAgNyAgIEFkZCB0aGUgTXpTY2hlbWUgaW50ZXJmYWNlLiAgUGF0Y2ggb24gaHR0cDovL2lhbXBoZXQubm0ucnUvc2NoZW1lLwotCShTZXJnZXkgS2hvcmV2KQogICAgIDggICBNYWtlICdzdGF0dXNsaW5lJyBsb2NhbCwgc28gdGhhdCBlYWNoIHdpbmRvdyBjYW4gaGF2ZSBhIGRpZmZlcmVudAogCXZhbHVlLiAgQnV0IHNob3VsZCBpdCBhbHNvIGJlIGxvY2FsIHRvIGEgYnVmZmVyPyAoWWVnYXBwYW4gTGFrc2htYW5hbgogCWhhcyBhIHBhdGNoLCAyMDAyIGZlYiAxNSkKQEAgLTIzMywyMSArMjQ1LDEwIEBACiAgICAgOCAgIEluY2x1ZGUgYSBjb25uZWN0aW9uIHRvIGFuIGV4dGVybmFsIHByb2dyYW0gdGhyb3VnaCBhIHBpcGU/ICBTZWUKIAlwYXRjaGVzIGZyb20gRmVsYmluZ2VyIGZvciBhIG1hdGhlbWF0aWNhIGludGVyZmFjZS4KIAlPciB1c2UgZW1hY3Mgc2VydmVyIGtpbmQgb2YgdGhpbmc/Ci0gICAgNyAgIEFkZCBhbiBvcHRpb24gdG8gc2V0IHRoZSB3aWR0aCBvZiB0aGUgJ251bWJlcicgY29sdW1uLiAgRWlnaHQKLQlwb3NpdGlvbnMgaXMgb2Z0ZW4gbW9yZSB0aGFuIG5lZWRlZC4gIE9yIGFkanVzdCB0aGUgd2lkdGggdG8gdGhlCi0JbGVuZ3RoIG9mIHRoZSBmaWxlPwotCUFkZCBwYXRjaCB0aGF0IGFkZHMgJ251bWJlcmxlbicgb3B0aW9uLiAoSmFtZXMgSGFydmV5KQotCU90aGVyIHBhdGNoIHdpdGggbWluIGFuZCBtYXggZnJvbSBFbW1hbnVlbCBSZW5pZXJpcyAoMjAwMiBKdWwgMjQpCi0JT3RoZXIgcGF0Y2ggd2l0aG91dCBhbiBvcHRpb24gYnkgR2lsbGVzIFJveSAoMjAwMiBKdWwgMjUpCiAgICAgNyAgIEFkZCAiOmp1c3RpZnkiIGNvbW1hbmQuICBQYXRjaCBmcm9tIFZpdCBTdHJhZGFsIDIwMDIgTm92IDI1LgogICAgIC0gICBmaW5kbWF0Y2goKSBzaG91bGQgYmUgYWRqdXN0ZWQgZm9yIExpc3AuICBTZWUgcmVtYXJrIGF0CiAJZ2V0X2xpc3BfaW5kZW50KCkuICBFc3AuIFwoIGFuZCBcKSBzaG91bGQgYmUgc2tpcHBlZC4gKERvcmFpIFNpdGFyYW0sCiAJaW5jb21wbGV0ZSBwYXRjaCBNYXIgMTgpCi0gICAgOCAgIFNvcnRpbmcgb2YgZmlsZW5hbWVzIGZvciBjb21wbGV0aW9uIGlzIHdyb25nIG9uIHN5c3RlbXMgdGhhdCBpZ25vcmUKLQljYXNlIG9mIGZpbGVuYW1lcy4gIEFkZCAnaWdub3JlZm5jYXNlJyBvcHRpb24uICBXaGVuIHNldCwgY2FzZSBpbgotCWZpbGVuYW1lcyBpcyBpZ25vcmVkIGZvciBzb3J0aW5nIHRoZW0uIFBhdGNoIGJ5IE1pa2UgV2lsbGlhbXM6Ci0Jfi92aW0vcGF0Y2hlcy9pZ25vcmVmbmNhc2UuICBBbHNvIGNoYW5nZSB3aGF0IG1hdGNoZXM/ICBPciB1c2UgYW5vdGhlcgotCW9wdGlvbiBuYW1lLgogLSAgIENoYW5nZSBnYV9yb29tIGludG8gZ2FfbWF4bGVuLCBzbyB0aGF0IGl0IGRvZXNuJ3QgbmVlZCB0byBiZQogICAgIGluY3JlbWVudGVkL2RlY3JlbWVudGVkIGVhY2ggdGltZS4KIC0gICBuZXcgREFUQSBUWVBFUzogbGlzdHMsIGRpY3Rpb25hcmllcyBhbmQgZnVuY3Rpb24gcmVmZXJlbmNlcy4KQEAgLTcxNiw4ICs3MTcsOSBAQAogCiAKIE1hY2ludG9zaDoKLTkgICBNYWM6IFRoZSBtb3Rpb24gdHlwZSBpcyBub3Qgc3RvcmVkIG9uIHRoZSBjbGlwYm9hcmQuICBVc2luZyAiOnNldAotICAgIGNsaXBib2FyZD11bm5hbWVkIiBtYWtlcyAieXlwIiB3b3JrIGNoYXJhY3Rlcndpc2UuIChNaWNoYWVsIERlTW9uZXkpCis3ICAgUGF0Y2ggdG8gYWRkICd0cmFuc3BhcmVuY3knIG9wdGlvbi4gIERpc2FkdmFudGFnZTogaXQncyBzbG93LiAoRWNrZWhhcmQKKyAgICBCZXJucywgMjAwNCBNYXkgOSkgaHR0cDovL2Vja2kudG8vdmltL1RyYW5zQmFjay0yMDA0LTA1LTA5LmRpZmYKKyAgICBOZWVkcyBtb3JlIHdvcmsuICBBZGQgd2hlbiBzb21lb25lIHJlYWxseSB3YW50cyBpdC4KIDcgICBMb2FkaW5nIHRoZSBQZXJsIGxpYnJhcnkgb25seSB3b3JrcyBvbiBPUy9YIDEwLjIgb3IgMTAuMywgbmV2ZXIgb24gYm90aC4KICAgICBMb2FkIHRoZSBQZXJsIGxpYnJhcnkgZHluYW1pY2FsbHkgc2VlIFB5dGhvbiBzb3VyY2VzIGZpbGUgZHlubG9hZF9tYWMKICAgICAoSmFjaykKQEAgLTE3NDUsNyArMTc0Nyw3IEBACiAgICAgYm91bmQgd2luZG93cy4KIC0gICBBZGQgJ3NlYXJjaCcgb3B0aW9uIHRvICdzY3JvbGxvcHQnIHRvIGFsbG93ICdzY3JvbGxiaW5kJyB3aW5kb3dzIHRvCiAgICAgYmUgYm91bmQgYnkgcmVnZXhwIHNlYXJjaGVzCi0tICAgQWRkICJ6PiIgYW5kICJ6PCI6IHNjcm9sbCBzaWRld2F5cyBvbmUgc2NyZWVuZnVsbC4gKENhbXBiZWxsKQorLSAgIEFkZCAiej4iIGFuZCAiejwiOiBzY3JvbGwgc2lkZXdheXMgb25lIHNjcmVlbmZ1bC4gKENhbXBiZWxsKQogLSAgIEFkZCBvcHRpb24gdG8gc2V0IHRoZSBudW1iZXIgb2YgbGluZXMgd2hlbiBub3QgdG8gc2Nyb2xsLCBpbnN0ZWFkIG9mIHRoZQogICAgIGZpeGVkIG51bWJlciB1c2VkIG5vdyAoZm9yIHRlcm1pbmFscyB0aGF0IHNjcm9sbCBzbG93IHdpdGggYSBsYXJnZSBudW1iZXIKICAgICBvZiBsaW5lcyBidXQgbm90IHdpdGggYSBzaW5nbGUgbGluZSkuCkBAIC0yOTcxLDcgKzI5NzMsNyBAQAogRGVidWcgbW9kZToKIDcgICBBZGQgc29tZXRoaW5nIHRvIGVuYWJsZSBkZWJ1Z2dpbmcgd2hlbiBhIHJlbW90ZSBtZXNzYWdlIGlzIHJlY2VpdmVkLgogOCAgIEFkZCBicmVha3BvaW50cyBmb3Igc2V0dGluZyBhbiBvcHRpb24KLTggICBBZGQgYnJlYWtwb2l0cyBmb3IgYXNzaWduaW5nIHRvIGEgdmFyaWFibGUuCis4ICAgQWRkIGJyZWFrcG9pbnRzIGZvciBhc3NpZ25pbmcgdG8gYSB2YXJpYWJsZS4KIDcgICBBZGQgYSB3YXRjaHBvaW50IGluIHRoZSBkZWJ1ZyBtb2RlOiBBbiBleHByZXNzaW9uIHRoYXQgYnJlYWtzIGV4ZWN1dGlvbgogICAgIHdoZW4gZXZhbHVhdGluZyB0byBub24temVyby4KIDcgICBTdG9yZSB0aGUgaGlzdG9yeSBmcm9tIGRlYnVnIG1vZGUgaW4gdmltaW5mby4KQEAgLTMzNjEsNiArMzM2MywxMSBAQAogLSAgIFN1cHBvcnQgbWFwcGluZyBmb3IgcmVwbGFjZSBtb2RlIGFuZCAiciIgY29tbWFuZCAoVmkgZG9lc24ndCBkbyB0aGlzKT8KIDUgICBBZGQgJ2lnbm9yZWZpbGVjYXNlJyBvcHRpb246IElnbm9yZSBjYXNlIHdoZW4gZXhwYW5kaW5nIGZpbGUgbmFtZXMuCiAgICAgIjplIG1hPFRhYj4iIHdvdWxkIGFsc28gZmluZCAiTWFrZWZpbGUiIG9uIFVuaXguCis4ICAgU29ydGluZyBvZiBmaWxlbmFtZXMgZm9yIGNvbXBsZXRpb24gaXMgd3Jvbmcgb24gc3lzdGVtcyB0aGF0IGlnbm9yZQorICAgIGNhc2Ugb2YgZmlsZW5hbWVzLiAgQWRkICdpZ25vcmVmbmNhc2UnIG9wdGlvbi4gIFdoZW4gc2V0LCBjYXNlIGluCisgICAgZmlsZW5hbWVzIGlzIGlnbm9yZWQgZm9yIHNvcnRpbmcgdGhlbS4gUGF0Y2ggYnkgTWlrZSBXaWxsaWFtczoKKyAgICB+L3ZpbS9wYXRjaGVzL2lnbm9yZWZuY2FzZS4gIEFsc28gY2hhbmdlIHdoYXQgbWF0Y2hlcz8gIE9yIHVzZSBhbm90aGVyCisgICAgb3B0aW9uIG5hbWUuCiA4ICAgU2hvdWxkIGJlIGFibGUgdG8gY29tcGlsZSBWaW0gaW4gYW5vdGhlciBkaXJlY3RvcnksIHdpdGggJChzcmNkaXIpIHNldCB0bwogICAgIHdoZXJlIHRoZSBzb3VyY2VzIGFyZS4gQWRkICQoc3JjZGlyKSBpbiB0aGUgTWFrZWZpbGUgaW4gYSBsb3Qgb2YgcGxhY2VzLgogICAgIChOZXRoZXJ0b24pCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy91c3JfMjEudHh0IGIvcnVudGltZS9kb2MvdXNyXzIxLnR4dAppbmRleCBhMjc3YjEzLi4zOWVlNGQyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy91c3JfMjEudHh0CisrKyBiL3J1bnRpbWUvZG9jL3Vzcl8yMS50eHQKQEAgLTEsNCArMSw0IEBACi0qdXNyXzIxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgTWFyIDI5CisqdXNyXzIxLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE2CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCkBAIC02NSw3ICs2NSw3IEBACiAJOncgIXtwcm9ncmFtfQkJZXhlY3V0ZSB7cHJvZ3JhbX0gYW5kIHNlbmQgdGV4dCB0byBpdHMgaW5wdXQKIAk6W3JhbmdlXSF7cHJvZ3JhbX0JZmlsdGVyIHRleHQgdGhyb3VnaCB7cHJvZ3JhbX0KIAotTm90aWNlIHRoYXQgdGhlIHByZWNlbnNlIG9mIGEgcmFuZ2UgYmVmb3JlICIhe3Byb2dyYW19IiBtYWtlcyBhIGJpZworTm90aWNlIHRoYXQgdGhlIHByZXNlbnNlIG9mIGEgcmFuZ2UgYmVmb3JlICIhe3Byb2dyYW19IiBtYWtlcyBhIGJpZwogZGlmZmVyZW5jZS4gIFdpdGhvdXQgaXQgZXhlY3V0ZXMgdGhlIHByb2dyYW0gbm9ybWFsbHksIHdpdGggdGhlIHJhbmdlIGEgbnVtYmVyCiBvZiB0ZXh0IGxpbmVzIGlzIGZpbHRlcmVkIHRocm91Z2ggdGhlIHByb2dyYW0uCiAKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl8yMi50eHQgYi9ydW50aW1lL2RvYy91c3JfMjIudHh0CmluZGV4IGMzNTVjYjMuLmIxOGIwODUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl8yMi50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzIyLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfMjIudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwMyBNYXIgMTcKKyp1c3JfMjIudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTYKIAogCQkgICAgIFZJTSBVU0VSIE1BTlVBTCAtIGJ5IEJyYW0gTW9vbGVuYWFyCiAKQEAgLTk1LDcgKzk1LDcgQEAKIAlzCQlVc2UgdGhlIGZpZWxkIHRoZSBjdXJzb3IgaXMgaW4gdG8gc29ydCBvbi4gIEZpcnN0CiAJCQlkaXNwbGF5IHRoZSBzaXplIGFuZCBkYXRlIHdpdGggaS4gIFRoZW4gTW92ZSB0aGUKIAkJCWN1cnNvciB0byB0aGUgc2l6ZSBvZiBhbnkgZmlsZSBhbmQgcHJlc3Mgcy4gIFRoZSBmaWxlcwotCQkJd2lsbCBub3cgYmUgc29ydGVkIG9uIHNpemUuICBQcmVzcyBzIHdpbGUgdGhlIGN1cnNvcgorCQkJd2lsbCBub3cgYmUgc29ydGVkIG9uIHNpemUuICBQcmVzcyBzIHdoaWxlIHRoZSBjdXJzb3IKIAkJCWlzIG9uIGEgZGF0ZSBhbmQgdGhlIGl0ZW1zIHdpbGwgYmUgc29ydGVkIG9uIGRhdGUuCiAJcgkJcmV2ZXJzZSB0aGUgc29ydGluZyBvcmRlciAoZWl0aGVyIHNpemUgb3IgZGF0ZSkKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmFyaW91cy50eHQgYi9ydW50aW1lL2RvYy92YXJpb3VzLnR4dAppbmRleCA4NzUzYmZhLi41MzdmMTVkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy92YXJpb3VzLnR4dAorKysgYi9ydW50aW1lL2RvYy92YXJpb3VzLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2YXJpb3VzLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTQKKyp2YXJpb3VzLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTgKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTU3MSw5ICs1NzEsMTEgQEAKIAkJCWN1cnJlbnQgZmlsZS4gIFNlZSB8aGVscC10cmFuc2xhdGVkfC4KIAogCQkJCQkJCSo6aGVscGcqICo6aGVscGdyZXAqCi06aGVscGdbcmVwXSB7cGF0dGVybn0KKzpoZWxwZ1tyZXBdIHtwYXR0ZXJufVtAeHhdCiAJCQlTZWFyY2ggYWxsIGhlbHAgdGV4dCBmaWxlcyBhbmQgbWFrZSBhIGxpc3Qgb2YgbGluZXMKIAkJCWluIHdoaWNoIHtwYXR0ZXJufSBtYXRjaGVzLiAgSnVtcHMgdG8gdGhlIGZpcnN0IG1hdGNoLgorCQkJVGhlIG9wdGlvbmFsIFtAeHhdIHNwZWNpZmllcyB0aGF0IG9ubHkgbWF0Y2hlcyBpbiB0aGUKKwkJCSJ4eCIgbGFuZ3VhZ2UgYXJlIHRvIGJlIGZvdW5kLgogCQkJWW91IGNhbiBuYXZpZ2F0ZSB0aHJvdWdoIHRoZSBtYXRjaGVzIHdpdGggdGhlCiAJCQl8cXVpY2tmaXh8IGNvbW1hbmRzLCBlLmcuLCB8OmNuZXh0fCB0byBqdW1wIHRvIHRoZQogCQkJbmV4dCBvbmUuICBPciB1c2UgfDpjd2luZG93fCB0byBnZXQgdGhlIGxpc3Qgb2YKQEAgLTU4NCw2ICs1ODYsOCBAQAogCQkJCTpoZWxwZ3JlcCBVZ2FuZGEKIDwJCQlFeGFtcGxlIGZvciBjYXNlIGlnbm9yaW5nIHNlYXJjaDogPgogCQkJCTpoZWxwZ3JlcCB1Z2FuZGFcYworPAkJCUV4YW1wbGUgZm9yIHNlYXJjaGluZyBpbiBGcmVuY2ggaGVscDogPgorCQkJCTpoZWxwZ3JlcCBiYWNrc3BhY2VAZnIKIDwJCQlDYW5ub3QgYmUgZm9sbG93ZWQgYnkgYW5vdGhlciBjb21tYW5kLCBldmVyeXRoaW5nIGlzCiAJCQl1c2VkIGFzIHBhcnQgb2YgdGhlIHBhdHRlcm4uICBCdXQgeW91IGNhbiB1c2UKIAkJCXw6ZXhlY3V0ZXwgd2hlbiBuZWVkZWQuCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNS50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNS50eHQKaW5kZXggNGY1MzQ2My4uYmMyZjQ1ZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjUudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb241LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNS50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKYW4gMTcKKyp2ZXJzaW9uNS50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdW4gMTYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE1MTcsNyArMTUxNyw3IEBACiAKIENyYXNoIHdoZW4gcGFzdGluZyB3aXRoIHRoZSBtb3VzZSBpbiBpbnNlcnQgbW9kZS4KIAotQ3Jhc2ggd2hpdGggIjp1bm1lbnUgKiIgaW4gLmd2aW1yYyBmb3IgQXRoZW5hLgorQ3Jhc2ggd2l0aCAiOnVubWVudSAqIiBpbiAuZ3ZpbXJjIGZvciBBdGhlbmEuCiAKICI1Pj4iIHNoaWZ0ZWQgNSBsaW5lcyA1IHRpbWVzLCBpbnN0ZWFkIG9mIDEgdGltZS4KIApAQCAtMjAyNiw3ICsyMDI2LDcgQEAKIGVpdGhlciBiZWdpbiBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnksIG9yIHRoYXQgb2YgdGhlIGN1cnJlbnQgYnVmZmVyLiAoTmVncmkKIGFuZCBLYWhuKQogQWRkZWQgdGhlICdicm93c2VkaXInIG9wdGlvbiwgd2l0aCB2YWx1ZSAiY3VycmVudCIsICJsYXN0IiBvciAiYnVmZmVyIi4gIFRlbGxzCi13ZXRoZXIgYSBicm93c2UgZGlhbG9nIHN0YXJ0cyBpbiBsYXN0IHVzZWQgZGlyLCBkaXIgb2YgY3VycmVudCBidWZmZXIsIG9yCit3aGV0aGVyIGEgYnJvd3NlIGRpYWxvZyBzdGFydHMgaW4gbGFzdCB1c2VkIGRpciwgZGlyIG9mIGN1cnJlbnQgYnVmZmVyLCBvcgogY3VycmVudCBkaXIuICAiOmJyb3dzZSB3IiBpcyB1bmFmZmVjdGVkLgogVGhlIGRlZmF1bHQgbWVudXMgaGF2ZSBiZWVuIGNoYW5nZWQgdG8gdXNlIHRoZSAiOmJyb3dzZSIgY29tbWFuZC4KIApAQCAtMzY2Nyw4ICszNjY3LDggQEAKIEluIHRoZSBvdXRwdXQgb2YgIjpjbGlzdCIgdGhlIGN1cnJlbnQgZW50cnkgaXMgaGlnaGxpZ2h0ZWQsIHdpdGggdGhlICdpJwogaGlnaGxpZ2h0aW5nIChzYW1lIGFzIHVzZWQgZm9yICdpbmNzZWFyY2gnKS4KIAotRm9yIHRoZSAiOmNsaXN0IiBjb21tYW5kLCB5b3UgY2FuIHNjcm9sbCBiYWNrd2FyZHMgd2l0aCAiYiIgKG9uZSBzY3JlZW5mdWxsKSwKLSJ1IiAoaGFsZiBhIHNjcmVlbmZ1bGwpIGFuZCAiayIgKG9uZSBsaW5lKS4KK0ZvciB0aGUgIjpjbGlzdCIgY29tbWFuZCwgeW91IGNhbiBzY3JvbGwgYmFja3dhcmRzIHdpdGggImIiIChvbmUgc2NyZWVuZnVsKSwKKyJ1IiAoaGFsZiBhIHNjcmVlbmZ1bCkgYW5kICJrIiAob25lIGxpbmUpLgogCiBNdWx0aS1ieXRlIHN1cHBvcnQ6CiAtIFgtaW5wdXQgbWV0aG9kIGZvciBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuICBBbmQgdmFyaW91cyBmaXhlcyBmb3IgbXVsdGktYnl0ZQpAQCAtNDU4Miw3ICs0NTgyLDcgQEAKIERvcyBhbmQgV2luMzIgY29uc29sZTogU2V0dGluZyB0X21lIGRpZG4ndCB3b3JrIHRvIGdldCBhbm90aGVyIGNvbG9yLiAgTWFkZQogdGhpcyB3b3JrcyBiYWNrd2FyZHMgY29tcGF0aWJsZS4KIAotRm9yIHR1cmtpc2ggKExBTkcgPSAidHIiKSB1cHBlcmNhc2UgJ2knIGlzIG5vdCBhbiAnSScuICBVc2UgQVNDSUkgdXBwZXJjYXNlCitGb3IgVHVya2lzaCAoTEFORyA9ICJ0ciIpIHVwcGVyY2FzZSAnaScgaXMgbm90IGFuICdJJy4gIFVzZSBBU0NJSSB1cHBlcmNhc2UKIHRyYW5zbGF0aW9uIGluIHZpbV9zdHJ1cCgpIHRvIGF2b2lkIGxhbmd1YWdlIHByb2JsZW1zLiAoS29tdXIpCiAKIFVuaXg6IFVzZSB1c2xlZXAoKSBvciBuYW5vc2xlZXAoKSBmb3IgbWNoX2RlbGF5KCkgd2hlbiBhdmFpbGFibGUuICBIb3BlZnVsbHkKQEAgLTc1NzgsNyArNzU3OCw3IEBACiAKIG9wdHdpbi52aW0gZ2F2ZSBhbiBlcnJvciB3aGVuIHVzZWQgaW4gVmkgY29tcGF0aWJsZSBtb2RlICgnY3BvJyBjb250YWlucyAnQycpLgogCi1UY2wgaW50ZXJwcmV0ZXI6ICJidWZmZXIiIGNvbW1hbmQgZGlkbid0IGNoZWNrIGZvciBwcmVjZW5zZSBvZiBhbiBhcmd1bWVudC4KK1RjbCBpbnRlcnByZXRlcjogImJ1ZmZlciIgY29tbWFuZCBkaWRuJ3QgY2hlY2sgZm9yIHByZXNlbnNlIG9mIGFuIGFyZ3VtZW50LgogKERhdmUgQm9kZW5zdGFiKQogCiBkb3NpbnN0LmM6IEFkZGVkIGNoZWNrcyBmb3IgdG9vIGxvbmcgZmlsZSBuYW1lLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmVyc2lvbjYudHh0IGIvcnVudGltZS9kb2MvdmVyc2lvbjYudHh0CmluZGV4IGQ5N2NmOTIuLjYxMWE3ODIgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3ZlcnNpb242LnR4dAorKysgYi9ydW50aW1lL2RvYy92ZXJzaW9uNi50eHQKQEAgLTEsNCArMSw0IEBACi0qdmVyc2lvbjYudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDA3CisqdmVyc2lvbjYudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNzY0LDcgKzE3NjQsNyBAQAogLSBVc2UgWFBNIGJpdG1hcHMgZm9yIHRoZSBpY29uIHdoZW4gcG9zc2libGUuICBVc2UgdGhlIFNvbGFyaXMgWHBtUC5oIGluY2x1ZGUKICAgZmlsZSB3aGVuIGl0J3MgYXZhaWxhYmxlLgogLSBDaGFuZ2UgdGhlIHNoYWRvdyBvZiB0aGUgdG9vbGJhciBpdGVtcyB0byBnZXQgYSB2aXN1YWwgZmVlZGJhY2sgb2YgaXQgYmVpbmcKLSAgcHJlc3NlZCBvbiBub24tTGVzc1RpZmYuCisgIHByZXNzZWQgb24gbm9uLUxlc3NUaWYuCiAtIFVzZSBnYWRnZXRzIGluc3RlYWQgb2Ygd2luZG93cyBmb3Igc29tZSBpdGVtcyBmb3Igc3BlZWQuCiAKIENvbW1hbmQgbGluZSBjb21wbGV0aW9uOgpAQCAtNjY0NSw3ICs2NjQ1LDcgQEAKIEZpbGVzOgkgICAgc3JjL2dldGNoYXIuYwogCiBQYXRjaCA2LjEuMDMxCi1Qcm9ibGVtOiAgICBDeWd3aW46IFh4ZCBjb3VsZCByZWFkIGEgZmlsZSBpbiB0ZXh0IG1vZGUgaW50ZWFkIG9mIGJpbmFyeSBtb2RlLgorUHJvYmxlbTogICAgQ3lnd2luOiBYeGQgY291bGQgcmVhZCBhIGZpbGUgaW4gdGV4dCBtb2RlIGluc3RlYWQgb2YgYmluYXJ5IG1vZGUuCiBTb2x1dGlvbjogICBVc2UgInJiIiBvciAicnQiIHdoZW4gbmVlZGVkLiAoUGF2b2wgSnVoYXMpCiBGaWxlczoJICAgIHNyYy94eGQveHhkLmMKIApAQCAtNjk0Nyw3ICs2OTQ3LDcgQEAKIEZpbGVzOgkgICAgc3JjL2VkaXQuYywgc3JjL2ZlYXR1cmUuaCwgc3JjL2d1aV9tYWMuYywgc3JjL29zX21hYy5jCiAKIFBhdGNoIDYuMS4wNzcKLVByb2JsZW06ICAgIE9uIGEgRGViaWFuIHN5c3RFbSB3aHQgQUNMIGxpbmtpbmcgZmFpbHMuIChMdWJvbWlyIEhvc3QpCitQcm9ibGVtOiAgICBPbiBhIERlYmlhbiBzeXN0ZW0gd2l0aCBBQ0wgbGlua2luZyBmYWlscy4gKEx1Ym9taXIgSG9zdCkKIFNvbHV0aW9uOiAgIFdoZW4gdGhlICJhY2wiIGxpYnJhcnkgaXMgdXNlZCwgY2hlY2sgaWYgdGhlICJhdHRyIiBsaWJyYXJ5IGlzCiAJICAgIHByZXNlbnQgYW5kIHVzZSBpdC4KIEZpbGVzOgkgICAgc3JjL2F1dG8vY29uZmlndXJlLCBzcmMvY29uZmlndXJlLmluLCBzcmMvbGluay5zaApAQCAtNzIyOSw3ICs3MjI5LDcgQEAKIAogUGF0Y2ggNi4xLjEyMSAoZGVwZW5kcyBvbiA2LjEuMDk4KQogUHJvYmxlbTogICAgV2hlbiBzdGFydGluZyBTZWxlY3QgbW9kZSBmcm9tIEluc2VydCBtb2RlLCB0aGVuIHVzaW5nIHRoZSBQYXN0ZQotCSAgICBtZW51IGVudHJ5LCB0aGUgY3Vyc29yIGlzIGxlZnQgYmVmb3JlIHRoZSBsYXN0ZSBwYXN0ZWQgY2hhcmFjdGVyLgorCSAgICBtZW51IGVudHJ5LCB0aGUgY3Vyc29yIGlzIGxlZnQgYmVmb3JlIHRoZSBsYXN0IHBhc3RlZCBjaGFyYWN0ZXIuCiAJICAgIChNYXJpbyBTY2h3ZWlnbGVyKQogU29sdXRpb246ICAgU2V0IHRoZSBjdXJzb3IgZm9yIEluc2VydCBtb2RlIG9uZSBjaGFyYWN0ZXIgdG8gdGhlIHJpZ2h0LgogRmlsZXM6CSAgICBydW50aW1lL21lbnUudmltCkBAIC03OTYzLDcgKzc5NjMsNyBAQAogUHJvYmxlbTogICAgRG91YmxlIGNsaWNraW5nIHdpdGggdGhlIG1vdXNlIHRvIHNlbGVjdCBhIHdvcmQgZG9lcyBub3Qgd29yayBmb3IKIAkgICAgbXVsdGktYnl0ZSBjaGFyYWN0ZXJzLgogU29sdXRpb246ICAgVXNlIHZpbV9pc3dvcmRjKCkgaW5zdGVhZCBvZiB2aW1faXNJRGMoKS4gIFRoaXMgbWVhbnMgJ2lza2V5d29yZCcKLQkgICAgaXMgdXNlZCBpbnRlYWQgb2YgJ2lzaWRlbnQnLiAgQWxzbyBmaXggdGhhdCBtaXhpbmcgQVNDSUkgd2l0aAorCSAgICBpcyB1c2VkIGluc3RlYWQgb2YgJ2lzaWRlbnQnLiAgQWxzbyBmaXggdGhhdCBtaXhpbmcgQVNDSUkgd2l0aAogCSAgICBtdWx0aS1ieXRlIHdvcmQgY2hhcmFjdGVycyBkb2Vzbid0IHdvcmssIHRoZSBtb3VzZSBjbGFzcyBmb3IKIAkgICAgcHVuY3R1YXRpb24gYW5kIHdvcmQgY2hhcmFjdGVycyB3YXMgbWl4ZWQgdXAuCiBGaWxlczoJICAgIHNyYy9ub3JtYWwuYwpAQCAtMTAyNjIsNyArMTAyNjIsNyBAQAogCiBQYXRjaCA2LjIuMDUzCiBQcm9ibGVtOiAgICBQcm90b3R5cGUgZm9yIGJ6ZXJvKCkgZG9lc24ndCBtYXRjaCBtb3N0IHN5c3RlbXMuCi1Tb2x1dGlvbjogICBVc2UgInZvaWQgKiIgaW5zdGVhZCBvZiAiY2hhciAqIiBhbmQgInNpemVfdCIgaW50ZWFkIG9mICJpbnQiLgorU29sdXRpb246ICAgVXNlICJ2b2lkICoiIGluc3RlYWQgb2YgImNoYXIgKiIgYW5kICJzaXplX3QiIGluc3RlYWQgb2YgImludCIuCiBGaWxlczoJICAgIHNyYy9vc2RlZjEuaC5pbgogCiBQYXRjaCA2LjIuMDU0CkBAIC0xMDUzNCw3ICsxMDUzNCw3IEBACiBQYXRjaCA2LjIuMDk2CiBQcm9ibGVtOiAgICBXaW4zMjogIjpsZXQgQCogPSAnJyIgcHV0IGEgbmV3bGluZSBvbiB0aGUgY2xpcGJvYXJkLiAoS2xhdXMKIAkgICAgQm9zYXUpCi1Tb2x1dGlvbjogICBQdXQgemVybyBieXRlcyBvbiB0aGUgY2xpYnBvYXJkIGZvciBhbiBlbXB0eSBzdHJpbmcuCitTb2x1dGlvbjogICBQdXQgemVybyBieXRlcyBvbiB0aGUgY2xpcGJvYXJkIGZvciBhbiBlbXB0eSBzdHJpbmcuCiBGaWxlczoJICAgIHNyYy9vcHMuYwogCiBQYXRjaCA2LjIuMDk3CkBAIC0xMTMzOSw3ICsxMTMzOSw3IEBACiAJICAgIHJ1bnRpbWUvZG9jL25ldGJlYW5zLnR4dCwgcnVudGltZS9kb2MvdGFncwogCiBQYXRjaCA2LjIuMjE2IChhZnRlciA2LjIuMjA2KQotUHJvYmxlbTogICAgTXVsdGktYnl0ZSBjaGFyYWN0ZXJzIHN0aWwgY2Fubm90IGJlIHVzZWQgYXMgaG90a2V5cyBpbiBhIGNvbnNvbGUKK1Byb2JsZW06ICAgIE11bHRpLWJ5dGUgY2hhcmFjdGVycyBzdGlsbCBjYW5ub3QgYmUgdXNlZCBhcyBob3RrZXlzIGluIGEgY29uc29sZQogCSAgICBkaWFsb2cuICAoTWF0dGlhcyBFcmtpc3NvbikKIFNvbHV0aW9uOiAgIE1ha2UgZ2V0X2tleXN0cm9rZSgpIGhhbmRsZSBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuCiBGaWxlczoJICAgIHNyYy9taXNjMS5jCkBAIC0xMTM3Niw3ICsxMTM3Niw3IEBACiBQYXRjaCA2LjIuMjIyCiBQcm9ibGVtOiAgICBVc2luZyAiLS1yZW1vdGUiIHNldmVyYWwgdGltZXMgb24gYSByb3cgb25seSBvcGVucyBzb21lIG9mIHRoZQogCSAgICBmaWxlcy4gKERhbnkgU3QtQW1hbnQpCi1Tb2x1dGlvbjogICBEb24ndCBkZWxldGUgYWxsIHR5cGVoZWFkIHdoZW4gdGhlIHNlcnZlciByZWNlaXZlcyBhIGNvbW1hbmQgZnJvbQorU29sdXRpb246ICAgRG9uJ3QgZGVsZXRlIGFsbCB0eXBlYWhlYWQgd2hlbiB0aGUgc2VydmVyIHJlY2VpdmVzIGEgY29tbWFuZCBmcm9tCiAJICAgIGEgY2xpZW50LCBvbmx5IGRlbGV0ZSB0eXBlZCBjaGFyYWN0ZXJzLgogRmlsZXM6CSAgICBzcmMvbWFpbi5jCiAKQEAgLTExODc0LDcgKzExODc0LDcgQEAKIAkgICAgY2F1c2VzIGEgY3Jhc2guICBFdmFsdWF0aW5nIGFuIGV4cHJlc3Npb24gY2F1c2VzIFZpbSB0byB3YWl0IGZvcgogCSAgICAiY29udCIgdG8gYmUgdHlwZWQsIHdpdGhvdXQgYSBwcm9tcHQuICAoSGFyaSBLcmlzaG5hIERhcmEpCiBTb2x1dGlvbjogICBEaXNhYmxlIGRlYnVnZ2luZyB3aGVuIGV2YWx1YXRpbmcgYW4gZXhwcmVzc2lvbiBmb3IgYSBjbGllbnQuCi0JICAgIChNaWNoYWVsIEdlZGRlcykgIERvbid0IHRyeSByZWFkaW5nIGludG8gdGhlIHR5cGVoZWFkIGJ1ZmZlciB3aGVuCisJICAgIChNaWNoYWVsIEdlZGRlcykgIERvbid0IHRyeSByZWFkaW5nIGludG8gdGhlIHR5cGVhaGVhZCBidWZmZXIgd2hlbgogCSAgICBpdCBtYXkgaGF2ZSBiZWVuIGZpbGxlZCBpbiBhbm90aGVyIHdheS4KIEZpbGVzOgkgICAgc3JjL2V4X2dldGxuLmMsIHNyYy9nZXRjaGFyLmMsIHNyYy9pZl94Y21kc3J2LmMsIHNyYy9tYWluLmMsCiAJICAgIHNyYy9taXNjMS5jLCBzcmMvcHJvdG8vZ2V0Y2hhci5wcm8sIHNyYy9wcm90by9tYWluLnBybywKQEAgLTEyNTU2LDcgKzEyNTU2LDcgQEAKIFByb2JsZW06ICAgIFdpbjMyIGNvbnNvbGU6IG5vIGV4dHJhIGtleSBtb2RpZmllcnMgYXJlIHN1cHBvcnRlZC4KIFNvbHV0aW9uOiAgIEVuY29kZSB0aGUgbW9kaWZpZXJzIGludG8gdGhlIGlucHV0IHN0cmVhbS4gIEFsc28gZml4IHRoYXQgc3BlY2lhbAogCSAgICBrZXlzIGFyZSBjb252ZXJ0ZWQgYW5kIHN0b3Agd29ya2luZyB3aGVuICd0ZW5jJyBpcyBzZXQuICBBbHNvIGZpeAotCSAgICB0aGF0IHdoZW4gJ3RlbmMnIGlzIGludGlhbGl6ZWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgY29udmVyc2lvbiBpcworCSAgICB0aGF0IHdoZW4gJ3RlbmMnIGlzIGluaXRpYWxpemVkIHRoZSBpbnB1dCBhbmQgb3V0cHV0IGNvbnZlcnNpb24gaXMKIAkgICAgbm90IHNldHVwIHByb3Blcmx5IHVudGlsICdlbmMnIG9yICd0ZW5jJyBpcyBzZXQuCiBGaWxlczoJICAgIHNyYy9nZXRjaGFyLmMsIHNyYy9vcHRpb24uYywgc3JjL29zX3dpbjMyLmMKIApAQCAtMTMwODEsNyArMTMwODEsNyBAQAogUHJvYmxlbTogICAgV2hlbiByZWxvYWRpbmcgYSBoaWRkZW4gYnVmZmVyIGNoYW5nZWQgb3V0c2lkZSBvZiBWaW0gYW5kIHRoZQogCSAgICBjdXJyZW50IGJ1ZmZlciBpcyByZWFkLW9ubHksIHRoZSByZWxvYWRlZCBidWZmZXIgYmVjb21lcwogCSAgICByZWFkLW9ubHkuICAoSGFyaSBLcmlzaG5hIERhcmEpCi1Tb2x1dGlvbjogICBTYXZlIHRoZSAncmVhZG9ubHknIGZsYWcgb2YgdGhlIHJlYWxvYWRlZCBidWZmZXIgaW5zdGVhZCBvZiB0aGUKK1NvbHV0aW9uOiAgIFNhdmUgdGhlICdyZWFkb25seScgZmxhZyBvZiB0aGUgcmVsb2FkZWQgYnVmZmVyIGluc3RlYWQgb2YgdGhlCiAJICAgIGN1cnJlbnQgYnVmZmVyLgogRmlsZXM6CSAgICBzcmMvZmlsZWlvLmMKIApkaWZmIC0tZ2l0IGEvcnVudGltZS9pbmRlbnQvdmIudmltIGIvcnVudGltZS9pbmRlbnQvdmIudmltCmluZGV4IDUxNWU0ZGMuLmI1NzBiNTYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvaW5kZW50L3ZiLnZpbQorKysgYi9ydW50aW1lL2luZGVudC92Yi52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBpbmRlbnQgZmlsZQogIiBMYW5ndWFnZToJVmlzdWFsQmFzaWMgKGZ0PXZiKSAvIEJhc2ljIChmdD1iYXNpYykgLyBTYXhCYXNpYyAoZnQ9dmIpCiAiIEF1dGhvcjoJSm9oYW5uZXMgWmVsbG5lciA8am9oYW5uZXNAemVsbG5lci5vcmc+Ci0iIExhc3QgQ2hhbmdlOglUdWUsIDI3IEFwciAyMDA0IDE0OjU0OjU5IENFU1QKKyIgTGFzdCBDaGFuZ2U6CUZyaSwgMTggSnVuIDIwMDQgMDc6MjI6NDIgQ0VTVAogCiBpZiBleGlzdHMoImI6ZGlkX2luZGVudCIpCiAgICAgZmluaXNoCkBAIC0xMCw3ICsxMCw3IEBACiAKIHNldGxvY2FsIGluZGVudGV4cHI9VmJHZXRJbmRlbnQodjpsbnVtKQogc2V0bG9jYWwgaW5kZW50a2V5cyYKLXNldGxvY2FsIGluZGVudGtleXMrPT1+ZWxzZSw9fmVsc2VpZiw9fmVuZCw9fndlbmQsPX5jYXNlLD1+bmV4dCw9fnNlbGVjdCx+PWxvb3AsPDo+CitzZXRsb2NhbCBpbmRlbnRrZXlzKz09fmVsc2UsPX5lbHNlaWYsPX5lbmQsPX53ZW5kLD1+Y2FzZSw9fm5leHQsPX5zZWxlY3QsPX5sb29wLDw6PgogCiAiIE9ubHkgZGVmaW5lIHRoZSBmdW5jdGlvbiBvbmNlLgogaWYgZXhpc3RzKCIqVmJHZXRJbmRlbnQiKQpkaWZmIC0tZ2l0IGEvcnVudGltZS9wbHVnaW4vbmV0cncudmltIGIvcnVudGltZS9wbHVnaW4vbmV0cncudmltCmluZGV4IGQzMDU4YzUuLmZkYjZkMjcgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvcGx1Z2luL25ldHJ3LnZpbQorKysgYi9ydW50aW1lL3BsdWdpbi9uZXRydy52aW0KQEAgLTEsNyArMSw3IEBACiAiIG5ldHJ3LnZpbTogKGdsb2JhbCBwbHVnaW4pIEhhbmRsZXMgZmlsZSB0cmFuc2ZlciBhY3Jvc3MgYSBuZXR3b3JrCi0iIExhc3QgQ2hhbmdlOglKdW4gMDQsIDIwMDQKKyIgTGFzdCBDaGFuZ2U6CUp1biAxOCwgMjAwNAogIiBNYWludGFpbmVyOglDaGFybGVzIEUuIENhbXBiZWxsLCBKci4gUGhEICAgPGRyY2hpcE5PU1BBTSBhdCBjYW1wYmVsbGZhbWlseS5iaXo+Ci0iIFZlcnNpb246CTQ0CisiIFZlcnNpb246CTQ2CiAiIExpY2Vuc2U6CVZpbSBMaWNlbnNlICAoc2VlIHZpbSdzIDpoZWxwIGxpY2Vuc2UpCiAiCiAiICBCdXQgYmUgZG9lcnMgb2YgdGhlIHdvcmQsIGFuZCBub3Qgb25seSBoZWFyZXJzLCBkZWx1ZGluZyB5b3VyIG93biBzZWx2ZXMKQEAgLTEyLDcgKzEyLDcgQEAKIGlmIGV4aXN0cygibG9hZGVkX25ldHJ3IikgfHwgJmNwCiAgIGZpbmlzaAogZW5kaWYKLWxldCBsb2FkZWRfbmV0cncgPSAidjQ0IgorbGV0IGxvYWRlZF9uZXRydyA9ICJ2NDYiCiBsZXQgczpzYXZlX2NwbyAgID0gJmNwbwogc2V0IGNwbyZ2aW0KIApAQCAtNjgsNiArNjgsMjAgQEAKICAgbGV0IGc6bmV0cndfZmV0Y2hfY21kCT0gIiIKICBlbmRpZgogZW5kaWYKK2lmICFleGlzdHMoImc6bmV0cndfbGlzdF9jbWQiKQorIGlmIGV4ZWN1dGFibGUoInNzaCIpCisgIGxldCBnOm5ldHJ3X2xpc3RfY21kPSAic3NoIEhPU1ROQU1FIGxzIC1GYSIKKyBlbHNlCisiICBjYWxsIERlY2hvKCJzc2ggaXMgbm90IGV4ZWN1dGFibGUsIGNhbid0IGRvIG5ldGxpc3QiKQorICBsZXQgZzpuZXRyd19saXN0X2NtZD0gIiIKKyBlbmRpZgorZW5kaWYKK2lmIGV4aXN0cygiZzpuZXRyd19zaWxlbnQiKSAmJiBnOm5ldHJ3X3NpbGVudCAhPSAwCisgbGV0IGc6bmV0cndfc2lsZW50eGZlcj0gInNpbGVudCAiCitlbHNlCisgbGV0IGc6bmV0cndfc2lsZW50eGZlcj0gIiIKK2VuZGlmCisgCiAKIGlmIGhhcygid2luMzIiKQogICBcICYmIGV4aXN0cygiZzpuZXRyd191c2VfbnRfcmNwIikKQEAgLTk3LDcgKzExMSw3IEBACiAgIGVuZGlmCiAgIGF1IEJ1ZlJlYWRDbWQgIGZ0cDovLyoscmNwOi8vKixzY3A6Ly8qLGh0dHA6Ly8qLGRhdjovLyoscnN5bmM6Ly8qLHNmdHA6Ly8qCWV4ZSAiZG9hdSBCdWZSZWFkUHJlICIuZXhwYW5kKCI8YWZpbGU+Iil8ZXhlICJOcmVhZCAwciAiLmV4cGFuZCgiPGFmaWxlPiIpfGV4ZSAiZG9hdSBCdWZSZWFkUG9zdCAiLmV4cGFuZCgiPGFmaWxlPiIpCiAgIGF1IEZpbGVSZWFkQ21kIGZ0cDovLyoscmNwOi8vKixzY3A6Ly8qLGh0dHA6Ly8qLGRhdjovLyoscnN5bmM6Ly8qLHNmdHA6Ly8qCWV4ZSAiZG9hdSBCdWZSZWFkUHJlICIuZXhwYW5kKCI8YWZpbGU+Iil8ZXhlICJOcmVhZCAiICAgLmV4cGFuZCgiPGFmaWxlPiIpfGV4ZSAiZG9hdSBCdWZSZWFkUG9zdCAiLmV4cGFuZCgiPGFmaWxlPiIpCi0gIGF1IEJ1ZldyaXRlQ21kIGZ0cDovLyoscmNwOi8vKixzY3A6Ly8qLGRhdjovLyoscnN5bmM6Ly8qLHNmdHA6Ly8qCQlleGUgIk53cml0ZSAiICAuZXhwYW5kKCI8YWZpbGU+Iil8Y2FsbCA8U0lEPk5ldFJlc3RvcmVQb3NuKCkKKyAgYXUgQnVmV3JpdGVDbWQgZnRwOi8vKixyY3A6Ly8qLHNjcDovLyosZGF2Oi8vKixyc3luYzovLyosc2Z0cDovLyogICAgCQlleGUgIk53cml0ZSAiICAuZXhwYW5kKCI8YWZpbGU+Iil8Y2FsbCA8U0lEPk5ldFJlc3RvcmVQb3NuKCkKICBhdWdyb3VwIEVORAogZW5kaWYKIApAQCAtMTUxLDkgKzE2NSw2IEBACiAgIiBzYXZlIG9wdGlvbnMKICBjYWxsIHM6TmV0T3B0aW9uU2F2ZSgpCiAKLSAiIGdldCBuYW1lIG9mIGEgdGVtcG9yYXJ5IGZpbGUKLSBsZXQgdG1wZmlsZT0gdGVtcG5hbWUoKQotCiAgIiBTcGVjaWFsIEV4Y2VwdGlvbjogaWYgYSBmaWxlIGlzIG5hbWVkICIwciIsIHRoZW4KICAiCQkgICAgICAiMHIiIHdpbGwgYmUgdXNlZCB0byByZWFkIHRoZQogICIJCSAgICAgIGZvbGxvd2luZyBmaWxlcyBpbnN0ZWFkIG9mICJyIgpAQCAtMTY4LDYgKzE3OSwxMCBAQAogICBsZXQgaWNob2ljZSA9IDEKICBlbmRpZgogCisgIiBnZXQgbmFtZSBvZiBhIHRlbXBvcmFyeSBmaWxlCisgbGV0IHRtcGZpbGU9IHRlbXBuYW1lKCkKKworIiBjYWxsIERlY2hvKCJpY2hvaWNlPSIuaWNob2ljZS4iIHJlYWRjbWQ8Ii5yZWFkY21kLiI+IikKICB3aGlsZSBpY2hvaWNlIDw9IGE6MAogCiAgICIgYXR0ZW1wdCB0byByZXBlYXQgd2l0aCBwcmV2aW91cyBob3N0LWZpbGUtZXRjCkBAIC0xNzgsNyArMTkzLDcgQEAKIAogICBlbHNlCiAgICBleGUgImxldCBjaG9pY2U9IGE6IiAuIGljaG9pY2UKLSIgICBjYWxsIERlY2hvKCJOZXRSZWFkMTogY2hvaWNlPCIgLiBjaG9pY2UgLiAiPiIpCisiICAgY2FsbCBEZWNobygibm8gbGFzdGZpbGU6IGNob2ljZTwiIC4gY2hvaWNlIC4gIj4iKQogCiAgICAiIFJlY29uc3RydWN0IENob2ljZSBpZiBjaG9pY2Ugc3RhcnRzIHdpdGggJyInCiAgICBpZiBtYXRjaChjaG9pY2UsIj8iKSA9PSAwCkBAIC0yMTksMTMgKzIzNCwxMyBAQAogICAgIGVuZGlmCiAgICBlbmRpZgogICBlbmRpZgotIiAgY2FsbCBEZWNobygiTmV0UmVhZDI6IGNob2ljZTwiIC4gY2hvaWNlIC4gIj4iKQorIiAgY2FsbCBEZWNobygiY2hvaWNlPCIgLiBjaG9pY2UgLiAiPiIpCiAgIGxldCBpY2hvaWNlPSBpY2hvaWNlICsgMQogCiAgICIgZml4IHVwIHdpbmRvd3MgdXJscwogICBpZiBoYXMoIndpbjMyIikKICAgIGxldCBjaG9pY2UgPSBzdWJzdGl0dXRlKGNob2ljZSwnXFwnLCcvJywnZ2UnKQotIiAgIGNhbGwgRGVjaG8oImZpeGluZyB1cCB3aW5kb3dzIHVybCB0byA8Ii5jaG9pY2UuIj4iKQorIiAgIGNhbGwgRGVjaG8oImZpeGluZyB1cCB3aW5kb3dzIHVybCB0byA8Ii5jaG9pY2UuIj4gdG1wZmlsZTwiLnRtcGZpbGUpCiAgICBleGUgJ2xjZCAnIC4gZm5hbWVtb2RpZnkodG1wZmlsZSwnOmgnKQogICAgbGV0IHRtcGZpbGUgPSBmbmFtZW1vZGlmeSh0bXBmaWxlLCc6dCcpCiAgIGVuZGlmCkBAIC0yMzMsMTIgKzI0OCwyNCBAQAogICAiIERldGVybWluZSBtZXRob2Qgb2YgcmVhZCAoZnRwLCByY3AsIGV0YykKICAgY2FsbCBzOk5ldE1ldGhvZChjaG9pY2UpCiAKKyAgIiBDaGVjayBpZiBOZXRMaXN0KCkgc2hvdWxkIGJlIGhhbmRsaW5nIHRoaXMgcmVxdWVzdAorIiAgY2FsbCBEZWNobygiY2hlY2tpbmcgaWYgbmV0bGlzdDogY2hvaWNlPCIuY2hvaWNlLiI+IG5ldHJ3X2xpc3RfY21kPCIuZzpuZXRyd19saXN0X2NtZC4iPiIpCisgIGlmIGNob2ljZSA9fiAiXi4qLyQiCisgICBpZiBzdHJsZW4oZzpuZXRyd19saXN0X2NtZCkgPiAwCisgICAgY2FsbCBzOk5ldExpc3QoY2hvaWNlKQorIiAgICBjYWxsIERyZXQoIk5ldFJlYWQiKQorICAgZWxzZQorICAgIGVjaG9lcnIgInNvcnJ5LCBjYW4ndCBkbyBhIHJlbW90ZSBsaXN0aW5nOyBzc2ggaXNuJ3QgZXhlY3V0YWJsZSIKKyAgIGVuZGlmCisgICByZXR1cm4KKyAgZW5kaWYKKwogICAiID09PT09PT09PT09PQogICAiIFBlcmZvcm0gUmVhZAogICAiID09PT09PT09PT09PQogCiAgICIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAiIHJjcDogIE1ldGhvZCAjMQorICAiIHJjcDogIE5ldFJlYWQgTWV0aG9kICMxCiAgIGlmICBiOm5ldHJ3X21ldGhvZCA9PSAxICIgcmVhZCB3aXRoIHJjcAogIiAgIGNhbGwgRGVjaG8oInJlYWQgdmlhIHJjcCAobWV0aG9kICMxKSIpCiAgICIgRVI6IG5vdGluZyBkb25lIHdpdGggZzpuZXRyd191aWQgeWV0PwpAQCAtMjYwLDEyICsyODcsMTIgQEAKICAgIGVuZGlmCiAgIGVuZGlmCiAiICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICEiLmc6bmV0cndfcmNwX2NtZC4iICIuczpuZXRyd19yY3Btb2RlLiIgIi51aWRfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi50bXBmaWxlKQotICBleGUgIiEiLmc6bmV0cndfcmNwX2NtZC4iICIuczpuZXRyd19yY3Btb2RlLiIgIi51aWRfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi50bXBmaWxlCi0gIGxldCByZXN1bHQJCT0gczpOZXRHZXRGaWxlKHJlYWRjbWQsIHRtcGZpbGUsIGI6bmV0cndfbWV0aG9kKQorICBleGUgZzpuZXRyd19zaWxlbnR4ZmVyLiIhIi5nOm5ldHJ3X3JjcF9jbWQuIiAiLnM6bmV0cndfcmNwbW9kZS4iICIudWlkX21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKS4iICIudG1wZmlsZQorICBsZXQgcmVzdWx0ICAgICAgICAgICA9IHM6TmV0R2V0RmlsZShyZWFkY21kLCB0bXBmaWxlLCBiOm5ldHJ3X21ldGhvZCkKICAgbGV0IGI6bmV0cndfbGFzdGZpbGUgPSBjaG9pY2UKIAogICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLSAgIiBmdHAgKyA8Lm5ldHJjPjogIE1ldGhvZCAjMgorICAiIGZ0cCArIDwubmV0cmM+OiAgTmV0UmVhZCBNZXRob2QgIzIKICAgZWxzZWlmIGI6bmV0cndfbWV0aG9kICA9PSAyCQkiIHJlYWQgd2l0aCBmdHAgKyA8Lm5ldHJjPgogIiAgIGNhbGwgRGVjaG8oInJlYWQgdmlhIGZ0cCsubmV0cmMgKG1ldGhvZCAjMikiKQogICAgIGxldCBuZXRyd19mbmFtZT0gYjpuZXRyd19mbmFtZQpAQCAtMjc1LDEwICszMDIsMTAgQEAKICAgICBleGUgInB1dCA9J2dldCAiLm5ldHJ3X2ZuYW1lLiIgIi50bXBmaWxlLiInIgogICAgIGlmIGV4aXN0cygiZzpuZXRyd19wb3J0IikgJiYgZzpuZXRyd19wb3J0ICE9ICIiCiAiICAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLmc6bmV0cndfbWFjaGluZS4iICIuZzpuZXRyd19wb3J0KQotICAgICBleGUgIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLmc6bmV0cndfbWFjaGluZS4iICIuZzpuZXRyd19wb3J0CisgICAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLmc6bmV0cndfbWFjaGluZS4iICIuZzpuZXRyd19wb3J0CiAgICAgZWxzZQogIiAgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5nOm5ldHJ3X21hY2hpbmUpCi0gICAgIGV4ZSAiJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuZzpuZXRyd19tYWNoaW5lCisgICAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLmc6bmV0cndfbWFjaGluZQogICAgIGVuZGlmCiAgICAgIiBJZiB0aGUgcmVzdWx0IG9mIHRoZSBmdHAgb3BlcmF0aW9uIGlzbid0IGJsYW5rLCBzaG93IGFuIGVycm9yIG1lc3NhZ2UgKHRueCB0byBEb3VnIENsYWFyKQogICAgIGlmIGdldGxpbmUoMSkgIX4gIl4kIgpAQCAtMjg5LDcgKzMxNiw3IEBACiAgICAgbGV0IGI6bmV0cndfbGFzdGZpbGUgPSBjaG9pY2UKIAogICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLSAgIiBmdHAgKyBtYWNoaW5lLGlkLHBhc3N3ZCxmaWxlbmFtZTogIE1ldGhvZCAjMworICAiIGZ0cCArIG1hY2hpbmUsaWQscGFzc3dkLGZpbGVuYW1lOiAgTmV0UmVhZCBNZXRob2QgIzMKICAgZWxzZWlmIGI6bmV0cndfbWV0aG9kID09IDMJCSIgcmVhZCB3aXRoIGZ0cCArIG1hY2hpbmUsIGlkLCBwYXNzd2QsIGFuZCBmbmFtZQogICAgIiBDb25zdHJ1Y3QgZXhlY3V0aW9uIHN0cmluZyAoZm91ciBsaW5lcykgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdGhyb3VnaCBmaWx0ZXIKICIgIGNhbGwgRGVjaG8oInJlYWQgdmlhIGZ0cCttaXBmIChtZXRob2QgIzMpIikKQEAgLTMyMSw3ICszNDgsNyBAQAogIiAgIGNhbGwgRGVjaG8oJ3BlcmZvcm1pbmcgZnRwIC1pIC1uJykKICAgIG5vcm0gMUdkZAogIiAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIikKLSAgIGV4ZSAiJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIgorICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIgogICAgIiBJZiB0aGUgcmVzdWx0IG9mIHRoZSBmdHAgb3BlcmF0aW9uIGlzbid0IGJsYW5rLCBzaG93IGFuIGVycm9yIG1lc3NhZ2UgKHRueCB0byBEb3VnIENsYWFyKQogICAgaWYgZ2V0bGluZSgxKSAhfiAiXiQiCiAgICAgZWNob2VyciBnZXRsaW5lKDEpCkBAIC0zMzEsNyArMzU4LDcgQEAKICAgIGxldCBiOm5ldHJ3X2xhc3RmaWxlID0gY2hvaWNlCiAKICAgIi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gICIgc2NwOiBNZXRob2QgIzQKKyAgIiBzY3A6IE5ldFJlYWQgTWV0aG9kICM0CiAgIGVsc2VpZiAgICAgYjpuZXRyd19tZXRob2QgID09IDQJIiByZWFkIHdpdGggc2NwCiAiICAgY2FsbCBEZWNobygicmVhZCB2aWEgc2NwIChtZXRob2QgIzQpIikKICAgIGlmIGV4aXN0cygiZzpuZXRyd19wb3J0IikgJiYgZzpuZXRyd19wb3J0ICE9ICIiCkBAIC0zNDIsMTAgKzM2OSwxMCBAQAogICAgaWYgZzpuZXRyd19jeWd3aW4gPT0gMQogICAgIGxldCBjeWd0bXBmaWxlPXN1YnN0aXR1dGUodG1wZmlsZSwnXlwoXGFcKTonLCcvY3lnZHJpdmUvXDEvJywnZScpCiAiICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogISIuZzpuZXRyd19zY3BfY21kLnVzZXBvcnQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi5jeWd0bXBmaWxlKQotICAgIGV4ZSAiISIuZzpuZXRyd19zY3BfY21kLnVzZXBvcnQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi5jeWd0bXBmaWxlCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iISIuZzpuZXRyd19zY3BfY21kLnVzZXBvcnQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi5jeWd0bXBmaWxlCiAgICBlbHNlCiAiICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogISIuZzpuZXRyd19zY3BfY21kLnVzZXBvcnQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi50bXBmaWxlKQotICAgIGV4ZSAiISIuZzpuZXRyd19zY3BfY21kLnVzZXBvcnQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi50bXBmaWxlCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iISIuZzpuZXRyd19zY3BfY21kLnVzZXBvcnQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi50bXBmaWxlCiAgICBlbmRpZgogICAgbGV0IHJlc3VsdAkJPSBzOk5ldEdldEZpbGUocmVhZGNtZCwgdG1wZmlsZSwgYjpuZXRyd19tZXRob2QpCiAgICBsZXQgYjpuZXRyd19sYXN0ZmlsZSA9IGNob2ljZQpAQCAtMzYxLDcgKzM4OCw3IEBACiAgICBpZiBtYXRjaChiOm5ldHJ3X2ZuYW1lLCIjIikgPT0gLTEKICAgICAiIHNpbXBsZSB3Z2V0CiAiICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogISIuZzpuZXRyd19odHRwX2NtZC4iICIudG1wZmlsZS4iIGh0dHA6Ly8iLmc6bmV0cndfbWFjaGluZS5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykpCi0gICAgZXhlICIhIi5nOm5ldHJ3X2h0dHBfY21kLiIgIi50bXBmaWxlLiIgaHR0cDovLyIuZzpuZXRyd19tYWNoaW5lLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKQorICAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiEiLmc6bmV0cndfaHR0cF9jbWQuIiAiLnRtcGZpbGUuIiBodHRwOi8vIi5nOm5ldHJ3X21hY2hpbmUuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpCiAgICAgbGV0IHJlc3VsdCA9IHM6TmV0R2V0RmlsZShyZWFkY21kLCB0bXBmaWxlLCBiOm5ldHJ3X21ldGhvZCkKIAogICAgZWxzZQpAQCAtMzcxLDcgKzM5OCw3IEBACiAiCWNhbGwgRGVjaG8oIm5ldHJ3X2h0bWw8Ii5uZXRyd19odG1sLiI+IikKICIJY2FsbCBEZWNobygibmV0cndfdGFnIDwiLm5ldHJ3X3RhZy4iPiIpCiAiICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogISIuZzpuZXRyd19odHRwX2NtZC4iICIudG1wZmlsZS4iIGh0dHA6Ly8iLmc6bmV0cndfbWFjaGluZS5uZXRyd19odG1sKQotICAgIGV4ZSAiISIuZzpuZXRyd19odHRwX2NtZC4iICIudG1wZmlsZS4iIGh0dHA6Ly8iLmc6bmV0cndfbWFjaGluZS5uZXRyd19odG1sCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iISIuZzpuZXRyd19odHRwX2NtZC4iICIudG1wZmlsZS4iIGh0dHA6Ly8iLmc6bmV0cndfbWFjaGluZS5uZXRyd19odG1sCiAgICAgbGV0IHJlc3VsdCA9IHM6TmV0R2V0RmlsZShyZWFkY21kLCB0bXBmaWxlLCBiOm5ldHJ3X21ldGhvZCkKICIgICAgY2FsbCBEZWNobygnPFxzKmFccypuYW1lPVxzKiInLm5ldHJ3X3RhZy4nIi8nKQogICAgIGV4ZSAnbm9ybSEgMUcvPFxzKmFccypuYW1lPVxzKiInLm5ldHJ3X3RhZy4nIi8nLiJcPENSPiIKQEAgLTM3OSw3ICs0MDYsNyBAQAogICAgbGV0IGI6bmV0cndfbGFzdGZpbGUgPSBjaG9pY2UKIAogICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLSAgIiBjYWRhdmVyOiBNZXRob2QgIzYKKyAgIiBjYWRhdmVyOiBOZXRSZWFkIE1ldGhvZCAjNgogICBlbHNlaWYgICAgIGI6bmV0cndfbWV0aG9kICA9PSA2CSIgcmVhZCB3aXRoIGNhZGF2ZXIKICIgICBjYWxsIERlY2hvKCJyZWFkIHZpYSBjYWRhdmVyIChtZXRob2QgIzYpIikKIApAQCAtNDA0LDI4ICs0MzEsMjggQEAKICAgICIgcGVyZm9ybSBjYWRhdmVyIG9wZXJhdGlvbjoKICAgIG5vcm0gMUdkZAogIiAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLmc6bmV0cndfZGF2X2NtZCkKLSAgIGV4ZSAiJSEiLmc6bmV0cndfZGF2X2NtZAorICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iJSEiLmc6bmV0cndfZGF2X2NtZAogICAgYmQhCiAgICBsZXQgcmVzdWx0CQk9IHM6TmV0R2V0RmlsZShyZWFkY21kLCB0bXBmaWxlLCBiOm5ldHJ3X21ldGhvZCkKICAgIGxldCBiOm5ldHJ3X2xhc3RmaWxlID0gY2hvaWNlCiAKICAgIi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gICIgcnN5bmM6IE1ldGhvZCAjNworICAiIHJzeW5jOiBOZXRSZWFkIE1ldGhvZCAjNwogICBlbHNlaWYgICAgIGI6bmV0cndfbWV0aG9kICA9PSA3CSIgcmVhZCB3aXRoIHJzeW5jCiAiICAgY2FsbCBEZWNobygicmVhZCB2aWEgcnN5bmMgKG1ldGhvZCAjNykiKQogICAgaWYgZzpuZXRyd19jeWd3aW4gPT0gMQogICAgIGxldCBjeWd0bXBmaWxlPXN1YnN0aXR1dGUodG1wZmlsZSwnXlwoXGFcKTonLCcvY3lnZHJpdmUvXDEvJywnZScpCiAiICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogISIuZzpuZXRyd19yc3luY19jbWQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi5jeWd0bXBmaWxlKQotICAgIGV4ZSAiISIuZzpuZXRyd19yc3luY19jbWQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi5jeWd0bXBmaWxlCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iISIuZzpuZXRyd19yc3luY19jbWQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi5jeWd0bXBmaWxlCiAgICBlbHNlCiAiICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogISIuZzpuZXRyd19yc3luY19jbWQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi50bXBmaWxlKQotICAgIGV4ZSAiISIuZzpuZXRyd19yc3luY19jbWQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi50bXBmaWxlCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iISIuZzpuZXRyd19yc3luY19jbWQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi50bXBmaWxlCiAgICBlbmRpZgogICAgbGV0IHJlc3VsdAkJPSBzOk5ldEdldEZpbGUocmVhZGNtZCx0bXBmaWxlLCBiOm5ldHJ3X21ldGhvZCkKICAgIGxldCBiOm5ldHJ3X2xhc3RmaWxlID0gY2hvaWNlCiAKICAgIi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gICIgZmV0Y2g6IE1ldGhvZCAjOAorICAiIGZldGNoOiBOZXRSZWFkIE1ldGhvZCAjOAogICAiICAgIGZldGNoOi8vW3VzZXJAXWhvc3RbOmh0dHBdL3BhdGgKICAgZWxzZWlmICAgICBiOm5ldHJ3X21ldGhvZCAgPT0gOAkiIHJlYWQgd2l0aCBmZXRjaAogICAgaWYgZzpuZXRyd19mZXRjaF9jbWQgPT0gIiIKQEAgLTQ0MSwxNyArNDY4LDE3IEBACiAKICAgIGlmIGV4aXN0cygiZzpuZXRyd191aWQiKSAmJiBnOm5ldHJ3X3VpZCAhPSAiIiAmJiBleGlzdHMoImc6bmV0cndfcGFzc3dkIikgJiYgZzpuZXRyd19wYXNzd2QgIT0gIiIKICIgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAhIi5nOm5ldHJ3X2ZldGNoX2NtZC4iICIudG1wZmlsZS4iICIubmV0cndfb3B0aW9uLiI6Ly8iLmc6bmV0cndfdWlkLic6Jy5nOm5ldHJ3X3Bhc3N3ZC4nQCcuZzpuZXRyd19tYWNoaW5lLiIvIi5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykpCi0gICAgZXhlICIhIi5nOm5ldHJ3X2ZldGNoX2NtZC4iICIudG1wZmlsZS4iICIubmV0cndfb3B0aW9uLiI6Ly8iLmc6bmV0cndfdWlkLic6Jy5nOm5ldHJ3X3Bhc3N3ZC4nQCcuZzpuZXRyd19tYWNoaW5lLiIvIi5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykKKyAgICBleGUgZzpuZXRyd19zaWxlbnR4ZmVyLiIhIi5nOm5ldHJ3X2ZldGNoX2NtZC4iICIudG1wZmlsZS4iICIubmV0cndfb3B0aW9uLiI6Ly8iLmc6bmV0cndfdWlkLic6Jy5nOm5ldHJ3X3Bhc3N3ZC4nQCcuZzpuZXRyd19tYWNoaW5lLiIvIi5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykKICAgIGVsc2UKICIgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAhIi5nOm5ldHJ3X2ZldGNoX2NtZC4iICIudG1wZmlsZS4iICIubmV0cndfb3B0aW9uLiI6Ly8iLmc6bmV0cndfbWFjaGluZS4iLyIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpKQotICAgIGV4ZSAiISIuZzpuZXRyd19mZXRjaF9jbWQuIiAiLnRtcGZpbGUuIiAiLm5ldHJ3X29wdGlvbi4iOi8vIi5nOm5ldHJ3X21hY2hpbmUuIi8iLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKQorICAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiEiLmc6bmV0cndfZmV0Y2hfY21kLiIgIi50bXBmaWxlLiIgIi5uZXRyd19vcHRpb24uIjovLyIuZzpuZXRyd19tYWNoaW5lLiIvIi5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykKICAgIGVuZGlmCiAKICAgIGxldCByZXN1bHQJCT0gczpOZXRHZXRGaWxlKHJlYWRjbWQsdG1wZmlsZSwgYjpuZXRyd19tZXRob2QpCiAgICBsZXQgYjpuZXRyd19sYXN0ZmlsZSA9IGNob2ljZQogCiAgICIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAiIHNmdHA6IE1ldGhvZCAjOQorICAiIHNmdHA6IE5ldFJlYWQgTWV0aG9kICM5CiAgIGVsc2VpZiAgICAgYjpuZXRyd19tZXRob2QgID09IDkJIiByZWFkIHdpdGggc2Z0cAogIiAgIGNhbGwgRGVjaG8oInJlYWQgdmlhIHNmdHAgKG1ldGhvZCAjNCkiKQogICAgaWYgZzpuZXRyd19jeWd3aW4gPT0gMQpAQCAtNDYxLDcgKzQ4OCw3IEBACiAgICAgZXhlICIhIi5nOm5ldHJ3X3NmdHBfY21kLiIgIi5nOm5ldHJ3X21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKS4iICIuY3lndG1wZmlsZQogICAgZWxzZQogIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICEiLmc6bmV0cndfc2Z0cF9jbWQuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpLiIgIi50bXBmaWxlKQotICAgIGV4ZSAiISIuZzpuZXRyd19zZnRwX2NtZC4iICIuZzpuZXRyd19tYWNoaW5lLiI6Ii5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykuIiAiLnRtcGZpbGUKKyAgICBleGUgZzpuZXRyd19zaWxlbnR4ZmVyLiIhIi5nOm5ldHJ3X3NmdHBfY21kLiIgIi5nOm5ldHJ3X21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKS4iICIudG1wZmlsZQogICAgZW5kaWYKICAgIGxldCByZXN1bHQJCT0gczpOZXRHZXRGaWxlKHJlYWRjbWQsIHRtcGZpbGUsIGI6bmV0cndfbWV0aG9kKQogICAgbGV0IGI6bmV0cndfbGFzdGZpbGUgPSBjaG9pY2UKQEAgLTQ4OCw3ICs1MTUsNyBAQAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTmV0R2V0RmlsZTogRnVuY3Rpb24gdG8gcmVhZCBmaWxlICJmbmFtZSIgd2l0aCBjb21tYW5kICJyZWFkY21kIi4ge3t7MQogZnVuISBzOk5ldEdldEZpbGUocmVhZGNtZCwgZm5hbWUsIG1ldGhvZCkKLSIgIGNhbGwgRGZ1bmMoIk5ldEdldEZpbGUocmVhZGNtZDwiLmE6cmVhZGNtZC4iPixmbmFtZTwiLmE6Zm5hbWUuIj4gbWV0aG9kPCIuYTptZXRob2QuIj4pIikKKyIiICBjYWxsIERmdW5jKCJOZXRHZXRGaWxlKHJlYWRjbWQ8Ii5hOnJlYWRjbWQuIj4sZm5hbWU8Ii5hOmZuYW1lLiI+IG1ldGhvZDwiLmE6bWV0aG9kLiI+KSIpCiAKICBpZiBleGlzdHMoIipOZXRSZWFkRml4dXAiKQogICAiIGZvciB0aGUgdXNlIG9mIE5ldFJlYWRGaXh1cCAobm90IG90aGVyd2lzZSB1c2VkIGludGVybmFsbHkpCkBAIC00OTksMTQgKzUyNiwxNCBAQAogIGlmICZ0ZXJtID09ICJ3aW4zMiIKICAgaWYgJnNoZWxsID09ICJiYXNoIgogICAgbGV0IGZuYW1lPWE6Zm5hbWUKLSIgIGNhbGwgRGVjaG8oIih3aW4zMiAmJiBiYXNoKSBmbmFtZTwiLmZuYW1lLiI+IikKKyIiICBjYWxsIERlY2hvKCIod2luMzIgJiYgYmFzaCkgZm5hbWU8Ii5mbmFtZS4iPiIpCiAgIGVsc2UKICAgIGxldCBmbmFtZT1zdWJzdGl0dXRlKGE6Zm5hbWUsJy8nLCdcXFxcJywnZ2UnKQotIiAgY2FsbCBEZWNobygiKHdpbjMyICYmICFiYXNoKSBmbmFtZTwiLmZuYW1lLiI+IikKKyIiICBjYWxsIERlY2hvKCIod2luMzIgJiYgIWJhc2gpIGZuYW1lPCIuZm5hbWUuIj4iKQogICBlbmRpZgogIGVsc2UKICAgbGV0IGZuYW1lPSBhOmZuYW1lCi0iICBjYWxsIERlY2hvKCIoY29waWVkKSBmbmFtZTwiLmZuYW1lLiI+IikKKyIiICBjYWxsIERlY2hvKCIoY29waWVkKSBmbmFtZTwiLmZuYW1lLiI+IikKICBlbmRpZgogCiAgIiBnZXQgdGhlIGZpbGUsIGJ1dCBkaXNhYmxlIHVuZG8gd2hlbiByZWFkaW5nIGEgbmV3IGJ1ZmZlcgpAQCAtNTc2LDIxICs2MDMsMjEgQEAKICAgZWxzZQogICAgbGV0IGxpbmUyPSBsaW5lKCIkIikgLSBsaW5lMgogICBlbmRpZgotIiAgY2FsbCBEZWNobygiY2FsbGluZyBOZXRSZWFkRml4dXAobWV0aG9kPCIuYTptZXRob2QuIj4gbGluZTE9Ii5saW5lMS4iIGxpbmUyPSIubGluZTIuIikiKQorIiIgIGNhbGwgRGVjaG8oImNhbGxpbmcgTmV0UmVhZEZpeHVwKG1ldGhvZDwiLmE6bWV0aG9kLiI+IGxpbmUxPSIubGluZTEuIiBsaW5lMj0iLmxpbmUyLiIpIikKICAgY2FsbCBOZXRSZWFkRml4dXAoYTptZXRob2QsIGxpbmUxLCBsaW5lMikKICBlbmRpZgotIiBjYWxsIERlY2hvKCJyZWFkY21kPCIuYTpyZWFkY21kLiI+IGNtZGFyZzwiLnY6Y21kYXJnLiI+IGZuYW1lPCIuYTpmbmFtZS4iPiByZWFkYWJsZT0iLmZpbGVyZWFkYWJsZShhOmZuYW1lKSkKKyIiIGNhbGwgRGVjaG8oInJlYWRjbWQ8Ii5hOnJlYWRjbWQuIj4gY21kYXJnPCIudjpjbWRhcmcuIj4gZm5hbWU8Ii5hOmZuYW1lLiI+IHJlYWRhYmxlPSIuZmlsZXJlYWRhYmxlKGE6Zm5hbWUpKQogCiAiIGluc3VyZSB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IGZpbGV0eXBlIGFuZCB0aGF0IGl0cyBiZWluZyBkaXNwbGF5ZWQKICBmaWxldHlwZSBkZXRlY3QKICByZWRyYXchCi0iIGNhbGwgRHJldCgiTmV0R2V0RmlsZSIpCisiIiBjYWxsIERyZXQoIk5ldEdldEZpbGUiKQogZW5kZnVuCiAKICIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAiIE5ldFdyaXRlOiByZXNwb25zaWJsZSBmb3Igd3JpdGluZyBhIGZpbGUgb3ZlciB0aGUgbmV0IHt7ezEKIGZ1biEgczpOZXRXcml0ZSguLi4pIHJhbmdlCi0iIGNhbGwgRGZ1bmMoIk5ldFdyaXRlKGE6MD0iLmE6MC4iKSIpCisiIiBjYWxsIERmdW5jKCJOZXRXcml0ZShhOjA9Ii5hOjAuIikiKQogCiAgIiBvcHRpb24gaGFuZGxpbmcKICBsZXQgbW9kPSAwCkBAIC02MTIsNyArNjM5LDcgQEAKIAogICAiIGF0dGVtcHQgdG8gcmVwZWF0IHdpdGggcHJldmlvdXMgaG9zdC1maWxlLWV0YwogICBpZiBleGlzdHMoImI6bmV0cndfbGFzdGZpbGUiKSAmJiBhOjAgPT0gMAotIiAgIGNhbGwgRGVjaG8oInVzaW5nIGI6bmV0cndfbGFzdGZpbGU8IiAuIGI6bmV0cndfbGFzdGZpbGUgLiAiPiIpCisiIiAgIGNhbGwgRGVjaG8oInVzaW5nIGI6bmV0cndfbGFzdGZpbGU8IiAuIGI6bmV0cndfbGFzdGZpbGUgLiAiPiIpCiAgICBsZXQgY2hvaWNlID0gYjpuZXRyd19sYXN0ZmlsZQogICAgbGV0IGljaG9pY2U9IGljaG9pY2UgKyAxCiAgIGVsc2UKQEAgLTY0Nyw3ICs2NzQsNyBAQAogICAgICAgbGV0IGljaG9pY2UgICAgPSBpY2hvaWNlICsgMQogICAgICAgaWYgY2hvaWNlID4gYTowCiAgICAgICAgZWNob2VyciAiVW5iYWxhbmNlZCBzdHJpbmcgaW4gZmlsZW5hbWUgJyIuIHdob2xlY2hvaWNlIC4iJyIKLSIgICAgICAgY2FsbCBEcmV0KCJOZXRXcml0ZSIpCisiIiAgICAgICBjYWxsIERyZXQoIk5ldFdyaXRlIikKICAgICAgICByZXR1cm4KICAgICAgIGVuZGlmCiAgICAgICBsZXQgY2hvaWNlPSBhOntpY2hvaWNlfQpAQCAtNjU2LDcgKzY4Myw3IEBACiAgICAgZW5kaWYKICAgIGVuZGlmCiAgIGVuZGlmCi0iICBjYWxsIERlY2hvKCJjaG9pY2U8IiAuIGNob2ljZSAuICI+IikKKyIiICBjYWxsIERlY2hvKCJjaG9pY2U8IiAuIGNob2ljZSAuICI+IikKICAgbGV0IGljaG9pY2U9IGljaG9pY2UgKyAxCiAKICAgIiBmaXggdXAgd2luZG93cyB1cmxzCkBAIC02NzUsOSArNzAyLDkgQEAKICAgIiA9PT09PT09PT09PT09CiAKICAgIi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCi0gICIgcmNwOiBNZXRob2QgIzEKKyAgIiByY3A6IE5ldFdyaXRlIE1ldGhvZCAjMQogICBpZiAgYjpuZXRyd19tZXRob2QgPT0gMQkiIHdyaXRlIHdpdGggcmNwCi0iCURlY2hvICJ3cml0ZSB2aWEgcmNwIChtZXRob2QgIzEpIgorIiIJRGVjaG8gIndyaXRlIHZpYSByY3AgKG1ldGhvZCAjMSkiCiAgICBpZiBzOm5ldHJ3X2hhc19udF9yY3AgPT0gMQogICAgIGlmIGV4aXN0cygiZzpuZXRyd191aWQiKSAmJiAgKCBnOm5ldHJ3X3VpZCAhPSAiIiApCiAgICAgIGxldCB1aWRfbWFjaGluZSA9IGc6bmV0cndfbWFjaGluZSAuJy4nLiBnOm5ldHJ3X3VpZApAQCAtNjkxLDI2ICs3MTgsMjYgQEAKICAgICAgbGV0IHVpZF9tYWNoaW5lID0gZzpuZXRyd19tYWNoaW5lCiAgICAgZW5kaWYKICAgIGVuZGlmCi0iICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAhIi5nOm5ldHJ3X3JjcF9jbWQuIiAiLnM6bmV0cndfcmNwbW9kZS4iICIudG1wZmlsZS4iICIudWlkX21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKSkKLSAgIGV4ZSAiISIuZzpuZXRyd19yY3BfY21kLiIgIi5zOm5ldHJ3X3JjcG1vZGUuIiAiLnRtcGZpbGUuIiAiLnVpZF9tYWNoaW5lLiI6Ii5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykKKyIiICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAhIi5nOm5ldHJ3X3JjcF9jbWQuIiAiLnM6bmV0cndfcmNwbW9kZS4iICIudG1wZmlsZS4iICIudWlkX21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKSkKKyAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiEiLmc6bmV0cndfcmNwX2NtZC4iICIuczpuZXRyd19yY3Btb2RlLiIgIi50bXBmaWxlLiIgIi51aWRfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpCiAgICBsZXQgYjpuZXRyd19sYXN0ZmlsZSA9IGNob2ljZQogCiAgICIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAiIGZ0cCArIDwubmV0cmM+OiBNZXRob2QgIzIKKyAgIiBmdHAgKyA8Lm5ldHJjPjogTmV0V3JpdGUgTWV0aG9kICMyCiAgIGVsc2VpZiBiOm5ldHJ3X21ldGhvZCA9PSAyCSIgd3JpdGUgd2l0aCBmdHAgKyA8Lm5ldHJjPgogICAgbGV0IG5ldHJ3X2ZuYW1lID0gYjpuZXRyd19mbmFtZQogICAgbmV3CiAgICBzZXQgZmY9dW5peAogICAgZXhlICJwdXQgPSciLmc6bmV0cndfZnRwbW9kZS4iJyIKLSIgICBjYWxsIERlY2hvKCIgTmV0V3JpdGU6IHB1dCA9JyIuZzpuZXRyd19mdHBtb2RlLiInIikKKyIiICAgY2FsbCBEZWNobygiIE5ldFdyaXRlOiBwdXQgPSciLmc6bmV0cndfZnRwbW9kZS4iJyIpCiAgICBleGUgInB1dCA9J3B1dCAiLnRtcGZpbGUuIiAiLm5ldHJ3X2ZuYW1lLiInIgotIiAgIGNhbGwgRGVjaG8oInB1dCA9J3B1dCAiLnRtcGZpbGUuIiAiLm5ldHJ3X2ZuYW1lLiInIikKKyIiICAgY2FsbCBEZWNobygicHV0ID0ncHV0ICIudG1wZmlsZS4iICIubmV0cndfZm5hbWUuIiciKQogICAgaWYgZXhpc3RzKCJnOm5ldHJ3X3BvcnQiKSAmJiBnOm5ldHJ3X3BvcnQgIT0gIiIKLSIgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5nOm5ldHJ3X21hY2hpbmUuIiAiLmc6bmV0cndfcG9ydCkKLSAgICBleGUgIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLmc6bmV0cndfbWFjaGluZS4iICIuZzpuZXRyd19wb3J0CisiIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLmc6bmV0cndfbWFjaGluZS4iICIuZzpuZXRyd19wb3J0KQorICAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLmc6bmV0cndfbWFjaGluZS4iICIuZzpuZXRyd19wb3J0CiAgICBlbHNlCi0iICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuZzpuZXRyd19tYWNoaW5lKQotICAgIGV4ZSAiJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pICIuZzpuZXRyd19tYWNoaW5lCisiIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAiLmc6bmV0cndfbWFjaGluZSkKKyAgICBleGUgZzpuZXRyd19zaWxlbnR4ZmVyLiIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgIi5nOm5ldHJ3X21hY2hpbmUKICAgIGVuZGlmCiAgICAiIElmIHRoZSByZXN1bHQgb2YgdGhlIGZ0cCBvcGVyYXRpb24gaXNuJ3QgYmxhbmssIHNob3cgYW4gZXJyb3IgbWVzc2FnZSAodG54IHRvIERvdWcgQ2xhYXIpCiAgICBpZiBnZXRsaW5lKDEpICF+ICJeJCIKQEAgLTcyMSw3ICs3NDgsNyBAQAogICAgbGV0IGI6bmV0cndfbGFzdGZpbGUgPSBjaG9pY2UKIAogICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLSAgIiBmdHAgKyBtYWNoaW5lLCBpZCwgcGFzc3dkLCBmaWxlbmFtZTogTWV0aG9kICMzCisgICIgZnRwICsgbWFjaGluZSwgaWQsIHBhc3N3ZCwgZmlsZW5hbWU6IE5ldFdyaXRlIE1ldGhvZCAjMwogICBlbHNlaWYgYjpuZXRyd19tZXRob2QgPT0gMwkiIHdyaXRlIHdpdGggZnRwICsgbWFjaGluZSwgaWQsIHBhc3N3ZCwgYW5kIGZuYW1lCiAgICBsZXQgbmV0cndfZm5hbWU9IGI6bmV0cndfZm5hbWUKICAgIG5ldwpAQCAtNzQ1LDEwICs3NzIsMTAgQEAKICAgICIgLWkgICAgICAgOiB0dXJucyBvZmYgaW50ZXJhY3RpdmUgcHJvbXB0aW5nIGZyb20gZnRwCiAgICAiIC1uICB1bml4IDogRE9OJ1QgdXNlIDwubmV0cmM+LCBldmVuIHRob3VnaCBpdCBleGlzdHMKICAgICIgLW4gIHdpbjMyOiBxdWl0IGJlaW5nIG9ibm94aW91cyBhYm91dCBwYXNzd29yZAotIiAgIGNhbGwgRGVjaG8oJ3BlcmZvcm1pbmcgZnRwIC1pIC1uJykKKyIiICAgY2FsbCBEZWNobygncGVyZm9ybWluZyBmdHAgLWkgLW4nKQogICAgbm9ybSAxR2RkCi0iICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgLW4iKQotICAgZXhlICIlISIuZzpuZXRyd19mdHBfY21kLiIgLWkgLW4iCisiIiAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogJSEiLmc6bmV0cndfZnRwX2NtZC4iIC1pIC1uIikKKyAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X2Z0cF9jbWQuIiAtaSAtbiIKICAgICIgSWYgdGhlIHJlc3VsdCBvZiB0aGUgZnRwIG9wZXJhdGlvbiBpc24ndCBibGFuaywgc2hvdyBhbiBlcnJvciBtZXNzYWdlICh0bnggdG8gRG91ZyBDbGFhcikKICAgIGlmIGdldGxpbmUoMSkgIX4gIl4kIgogICAgIGVjaG9lcnIgZ2V0bGluZSgxKQpAQCAtNzU3LDcgKzc4NCw3IEBACiAgICBiZCEKIAogICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLSAgIiBzY3A6IE1ldGhvZCAjNAorICAiIHNjcDogTmV0V3JpdGUgTWV0aG9kICM0CiAgIGVsc2VpZiAgICAgYjpuZXRyd19tZXRob2QgPT0gNAkiIHdyaXRlIHdpdGggc2NwCiAgICBpZiBleGlzdHMoImc6bmV0cndfcG9ydCIpICYmIGc6bmV0cndfcG9ydCAhPSAiIgogICAgIGxldCB1c2Vwb3J0PSAiIC1QICIuZzpuZXRyd19wb3J0CkBAIC03NjYsMjMgKzc5MywyMyBAQAogICAgZW5kaWYKICAgIGlmIGc6bmV0cndfY3lnd2luID09IDEKICAgICBsZXQgY3lndG1wZmlsZT1zdWJzdGl0dXRlKHRtcGZpbGUsJ15cKFxhXCk6JywnL2N5Z2RyaXZlL1wxLycsJ2UnKQotIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICEiLmc6bmV0cndfc2NwX2NtZC51c2Vwb3J0LiIgIi5jeWd0bXBmaWxlLiIgIi5nOm5ldHJ3X21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKSkKLSAgICBleGUgIiEiLmc6bmV0cndfc2NwX2NtZC51c2Vwb3J0LiIgIi5jeWd0bXBmaWxlLiIgIi5nOm5ldHJ3X21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKQorIiIgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAhIi5nOm5ldHJ3X3NjcF9jbWQudXNlcG9ydC4iICIuY3lndG1wZmlsZS4iICIuZzpuZXRyd19tYWNoaW5lLiI6Ii5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykpCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iISIuZzpuZXRyd19zY3BfY21kLnVzZXBvcnQuIiAiLmN5Z3RtcGZpbGUuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpCiAgICBlbHNlCi0iICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogISIuZzpuZXRyd19zY3BfY21kLnVzZXBvcnQuIiAiLnRtcGZpbGUuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpKQotICAgIGV4ZSAiISIuZzpuZXRyd19zY3BfY21kLnVzZXBvcnQuIiAiLnRtcGZpbGUuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpCisiIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICEiLmc6bmV0cndfc2NwX2NtZC51c2Vwb3J0LiIgIi50bXBmaWxlLiIgIi5nOm5ldHJ3X21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKSkKKyAgICBleGUgZzpuZXRyd19zaWxlbnR4ZmVyLiIhIi5nOm5ldHJ3X3NjcF9jbWQudXNlcG9ydC4iICIudG1wZmlsZS4iICIuZzpuZXRyd19tYWNoaW5lLiI6Ii5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykKICAgIGVuZGlmCiAgICBsZXQgYjpuZXRyd19sYXN0ZmlsZSA9IGNob2ljZQogCiAgICIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAiIGh0dHA6IE1ldGhvZCAjNQorICAiIGh0dHA6IE5ldFdyaXRlIE1ldGhvZCAjNQogICBlbHNlaWYgICAgIGI6bmV0cndfbWV0aG9kID09IDUKICAgIGVjaG9lcnIgIioqKndhcm5pbmcqKiogY3VycmVudGx5IDxuZXRydy52aW0+IGRvZXMgbm90IHN1cHBvcnQgd3JpdGluZyB1c2luZyBodHRwOiIKIAogICAiLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KLSAgIiBkYXY6IE1ldGhvZCAjNgorICAiIGRhdjogTmV0V3JpdGUgTWV0aG9kICM2CiAgIGVsc2VpZiAgICAgYjpuZXRyd19tZXRob2QgPT0gNgkiIHdyaXRlIHdpdGggY2FkYXZlcgotIiAgIGNhbGwgRGVjaG8oIndyaXRlIHZpYSBjYWRhdmVyIChtZXRob2QgIzYpIikKKyIiICAgY2FsbCBEZWNobygid3JpdGUgdmlhIGNhZGF2ZXIgKG1ldGhvZCAjNikiKQogCiAgICAiIENvbnN0cnVjdCBleGVjdXRpb24gc3RyaW5nIChmb3VyIGxpbmVzKSB3aGljaCB3aWxsIGJlIHBhc3NlZCB0aHJvdWdoIGZpbHRlcgogICAgbGV0IG5ldHJ3X2ZuYW1lPSBiOm5ldHJ3X2ZuYW1lCkBAIC04MDQsMjYgKzgzMSwyNiBAQAogCiAgICAiIHBlcmZvcm0gY2FkYXZlciBvcGVyYXRpb246CiAgICBub3JtIDFHZGQKLSIgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X2Rhdl9jbWQpCi0gICBleGUgIiUhIi5nOm5ldHJ3X2Rhdl9jbWQKKyIiICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19kYXZfY21kKQorICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iJSEiLmc6bmV0cndfZGF2X2NtZAogICAgYmQhCiAgICBsZXQgYjpuZXRyd19sYXN0ZmlsZSA9IGNob2ljZQogCiAgICIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAiIHJzeW5jOiBNZXRob2QgIzcKKyAgIiByc3luYzogTmV0V3JpdGUgTWV0aG9kICM3CiAgIGVsc2VpZiAgICAgYjpuZXRyd19tZXRob2QgPT0gNwkiIHdyaXRlIHdpdGggcnN5bmMKICAgIGlmIGc6bmV0cndfY3lnd2luID09IDEKICAgICBsZXQgY3lndG1wZmlsZT1zdWJzdGl0dXRlKHRtcGZpbGUsJ15cKFxhXCk6JywnL2N5Z2RyaXZlL1wxLycsJ2UnKQotIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICEiLmc6bmV0cndfcnN5bmNfY21kLiIgIi5jeWd0bXBmaWxlLiIgIi5nOm5ldHJ3X21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKSkKLSAgICBleGUgIiEiLmc6bmV0cndfcnN5bmNfY21kLiIgIi5jeWd0bXBmaWxlLiIgIi5nOm5ldHJ3X21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKQorIiIgICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAhIi5nOm5ldHJ3X3JzeW5jX2NtZC4iICIuY3lndG1wZmlsZS4iICIuZzpuZXRyd19tYWNoaW5lLiI6Ii5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykpCisgICAgZXhlIGc6bmV0cndfc2lsZW50eGZlci4iISIuZzpuZXRyd19yc3luY19jbWQuIiAiLmN5Z3RtcGZpbGUuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpCiAgICBlbHNlCi0iICAgIGNhbGwgRGVjaG8oImV4ZWN1dGluZzogISIuZzpuZXRyd19yc3luY19jbWQuIiAiLnRtcGZpbGUuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpKQotICAgIGV4ZSAiISIuZzpuZXRyd19yc3luY19jbWQuIiAiLnRtcGZpbGUuIiAiLmc6bmV0cndfbWFjaGluZS4iOiIuZXNjYXBlKGI6bmV0cndfZm5hbWUsJyA/JicpCisiIiAgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICEiLmc6bmV0cndfcnN5bmNfY21kLiIgIi50bXBmaWxlLiIgIi5nOm5ldHJ3X21hY2hpbmUuIjoiLmVzY2FwZShiOm5ldHJ3X2ZuYW1lLCcgPyYnKSkKKyAgICBleGUgZzpuZXRyd19zaWxlbnR4ZmVyLiIhIi5nOm5ldHJ3X3JzeW5jX2NtZC4iICIudG1wZmlsZS4iICIuZzpuZXRyd19tYWNoaW5lLiI6Ii5lc2NhcGUoYjpuZXRyd19mbmFtZSwnID8mJykKICAgIGVuZGlmCiAgICBsZXQgYjpuZXRyd19sYXN0ZmlsZSA9IGNob2ljZQogCiAgICIuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgotICAiIHNjcDogTWV0aG9kICM5CisgICIgc2NwOiBOZXRXcml0ZSBNZXRob2QgIzkKICAgZWxzZWlmICAgICBiOm5ldHJ3X21ldGhvZCA9PSA5CSIgd3JpdGUgd2l0aCBzZnRwCiAgICBsZXQgbmV0cndfZm5hbWU9IGI6bmV0cndfZm5hbWUKICAgIGlmIGV4aXN0cygiZzpuZXRyd191aWQiKSAmJiAgKCBnOm5ldHJ3X3VpZCAhPSAiIiApCkBAIC04MzUsOCArODYyLDggQEAKICAgIHNldCBmZj11bml4CiAgICBwdXQgPSdwdXQgJy50bXBmaWxlLicgJy5uZXRyd19mbmFtZQogICAgbm9ybSAxR2RkCi0iICAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiAlISIuZzpuZXRyd19zZnRwX2NtZC4nICcudWlkX21hY2hpbmUpCi0gICBleGUgIiUhIi5nOm5ldHJ3X3NmdHBfY21kLicgJy51aWRfbWFjaGluZQorIiIgICBjYWxsIERlY2hvKCJleGVjdXRpbmc6ICUhIi5nOm5ldHJ3X3NmdHBfY21kLicgJy51aWRfbWFjaGluZSkKKyAgIGV4ZSBnOm5ldHJ3X3NpbGVudHhmZXIuIiUhIi5nOm5ldHJ3X3NmdHBfY21kLicgJy51aWRfbWFjaGluZQogICAgYmQhCiAgICBsZXQgYjpuZXRyd19sYXN0ZmlsZT0gY2hvaWNlCiAKQEAgLTg0Nyw3ICs4NzQsNyBAQAogIGVuZHdoaWxlCiAKICAiIGNsZWFudXAKLSIgY2FsbCBEZWNobygiY2xlYW51cCIpCisiIiBjYWxsIERlY2hvKCJjbGVhbnVwIikKICBsZXQgcmVzdWx0PWRlbGV0ZSh0bXBmaWxlKQogIGNhbGwgczpOZXRPcHRpb25SZXN0b3JlKCkKIApAQCAtODU1LDExICs4ODIsMTQ2IEBACiAgIGxldCAmbW9kPSBtb2QJIiB1c3VhbGx5IGVxdWl2YWxlbnQgdG8gc2V0IG5vbW9kCiAgZW5kaWYKIAotIiBjYWxsIERyZXQoIk5ldFdyaXRlIikKKyIiIGNhbGwgRHJldCgiTmV0V3JpdGUiKQogZW5kZnVuCiAiIGVuZCBvZiBOZXRXcml0ZQogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBOZXRMaXN0OiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGNvbW1hbmQgaW4gZzpuZXRyd19saXN0X2NtZCB0byBnZXQgYSBsaXN0IHt7ezEKKyIgIG9mIHRoZSBjb250ZW50cyBvZiBhIHJlbW90ZSBkaXJlY3RvcnkuICBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlCisiICBnOm5ldHJ3X2xpc3RfY21kIGhhcyBhIHN0cmluZywgSE9TVE5BTUUsIHRoYXQgbmVlZHMgdG8gYmUgc3Vic3RpdHV0ZWQKKyIgIHdpdGggdGhlIHJlcXVlc3RlZCByZW1vdGUgaG9zdG5hbWUgZmlyc3QuCitmdW4hIDxTSUQ+TmV0TGlzdChkaXJuYW1lKQorIiIgIGNhbGwgRGZ1bmMoIk5ldExpc3QoZGlybmFtZTwiLmE6ZGlybmFtZS4iPikiKQorCisgICIgc2FuaXR5IG1haW50ZW5hbmNlCisgIGxldCBkaXJuYW1lPSBhOmRpcm5hbWUKKyAgaWYgZGlybmFtZSAhfiAnLyQnICYmICghZXhpc3RzKCJnOm5ldHJ3X21hY2hpbmUiKSB8fCAhZXhpc3RzKCJiOm5ldGxpc3RfbWV0aG9kIikgfHwgIWV4aXN0cygiYjpuZXRsaXN0X3BhdGgiKSkKKyAgIGxldCBkaXJuYW1lPSBkaXJuYW1lLiIvIgorICBlbmRpZgorICBzZXQgbWEKKworICBpZiBkaXJuYW1lICF+ICcvJCcgJiYgZGlybmFtZSAhfiAnXiInCisgICAiIGxvb2tzIGxpa2UgYSByZWd1bGFyIGZpbGUsIGF0dGVtcHQgdHJhbnNmZXIKKyIiICAgY2FsbCBEZWNobygiYXR0ZW1wdCB0cmFuc2ZlciB3aXRoIHJlZ3VsYXIgZmlsZTwiLmRpcm5hbWUuIj4iKQorIiIgICBjYWxsIERlY2hvKCJuZXRsaXN0IG1ldGhvZDwiLmI6bmV0bGlzdF9tZXRob2QuIj4gY21kPCIuYjpuZXRsaXN0X2NtZC4iPiBwYXRoPCIuYjpuZXRsaXN0X3BhdGguIj4iKQorICAgJWQKKworICAgIiByZW1vdmUgYW55IGZpbGV0eXBlIGluZGljYXRvciBmcm9tIGVuZCBvZiBkaXJuYW1lLCBleGNlcHQgZm9yIHRoZQorICAgIiAidGhpcyBpcyBhIGRpcmVjdG9yeSIgaW5kaWNhdG9yICgvKQorICAgbGV0IGRpcm5hbWU9IHN1YnN0aXR1dGUoZGlybmFtZSwiWyo9QHxdJCIsIiIsImUiKQorIiIgICBjYWxsIERlY2hvKCJtb2RpZmllZCBkaXJuYW1lPCIuZGlybmFtZS4iPiIpCisKKyAgICIgcmVtb3RlLXJlYWQgdGhlIHJlcXVlc3RlZCBmaWxlIGludG8gY3VycmVudCBidWZmZXIKKyAgIGxldCBtYWNoaW5lPSBnOm5ldHJ3X21hY2hpbmUKKyAgIGxldCBtZXRob2QgPSBiOm5ldGxpc3RfbWV0aG9kCisgICBsZXQgcGF0aCAgID0gYjpuZXRsaXN0X3BhdGgKKyAgIGVuZXchCisgICBleGUgImZpbGUgIi5tZXRob2QuIjovLyIubWFjaGluZS4iLyIucGF0aC5kaXJuYW1lCisgICBleGUgImRvYXUgQnVmUmVhZFByZSAiLmRpcm5hbWUKKyAgIHNpbGVudCBjYWxsIHM6TmV0UmVhZChtZXRob2QuIjovLyIubWFjaGluZS4iLyIucGF0aC5kaXJuYW1lKQorICAgZXhlICJkb2F1IEJ1ZlJlYWRQb3N0ICIuZGlybmFtZQorICAgMWQKKyAgIHNldCBub21vZCBub21hCisKKyAgIHNpbGVudCEgdW5sZXQgYjpuZXRsaXN0X21ldGhvZAorICAgc2lsZW50ISB1bmxldCBiOm5ldGxpc3RfY21kCisgICBzaWxlbnQhIHVubGV0IGI6bmV0bGlzdF9wYXRoCisiIiAgIGNhbGwgRHJldCgiTmV0TGlzdCIpCisgICByZXR1cm4KKworICBlbHNlaWYgZGlybmFtZSA9PSAnLi8nCisgICAiIHJlZnJlc2ggdGhlIGRpcmVjdG9yeSBsaXN0CisiIiAgIGNhbGwgRGVjaG8oInJlZnJlc2ggZGlyZWN0b3J5IGxpc3RpbmciKQorIiIgICBjYWxsIERlY2hvKCJuZXRsaXN0IG1ldGhvZDwiLmI6bmV0bGlzdF9tZXRob2QuIj4gY21kPCIuYjpuZXRsaXN0X2NtZC4iPiBwYXRoPCIuYjpuZXRsaXN0X3BhdGguIj4iKQorICAgJWQKKworICBlbHNlaWYgZGlybmFtZSA9PSAnLi4vJworICAgIiBnbyB1cCBvbmUgZGlyZWN0b3J5CisKKyAgIGlmIGI6bmV0bGlzdF9wYXRoICF+ICcvJyAmJiBzdHJsZW4oYjpuZXRsaXN0X3BhdGgpID4gMAorICAgICIgZ28gdG8gdG9wIChybHR2KSBkaXJlY3RvcnkKKyIiICAgIGNhbGwgRGVjaG8oImdvIHVwIG9uZSBkaXJlY3RvcnkgOiAxIHBhdGg8Ii5iOm5ldGxpc3RfcGF0aC4iPiIpCisgICAgbGV0IGI6bmV0bGlzdF9wYXRoPSAiIgorCisgICBlbHNlaWYgYjpuZXRsaXN0X3BhdGggIX4gJ15bLi9dXCskJyAmJiBzdHJsZW4oYjpuZXRsaXN0X3BhdGgpID4gMAorICAgICIgcmVtb3ZlIGEgZGlyZWN0b3J5IGZyb20gdGhlIG5ldGxpc3RfcGF0aAorIiIgICAgY2FsbCBEZWNobygiZ28gdXAgb25lIGRpcmVjdG9yeSA6IDIgcGF0aDwiLmI6bmV0bGlzdF9wYXRoLiI+IikKKyAgICBpZiBiOm5ldGxpc3RfcGF0aCA9fiAnXlteL10qLyQnCisgICAgIGxldCBiOm5ldGxpc3RfcGF0aD0gIiIKKyAgICBlbHNlCisgICAgIGxldCBiOm5ldGxpc3RfcGF0aD0gc3Vic3RpdHV0ZShiOm5ldGxpc3RfcGF0aCwnXlwoLiovXClbXi9dKi8kJywnXDEnLCcnKQorICAgIGVuZGlmCisKKyAgIGVsc2UKKyAgICAiIGFwcGVuZCAuLi8KKyIiICAgIGNhbGwgRGVjaG8oImdvIHVwIG9uZSBkaXJlY3RvcnkgOiAzIHBhdGg8Ii5iOm5ldGxpc3RfcGF0aC4iPiIpCisgICAgbGV0IGI6bmV0bGlzdF9wYXRoPSBiOm5ldGxpc3RfcGF0aC4nLi4vJworICAgZW5kaWYKKyIiICAgY2FsbCBEZWNobygibmV0bGlzdCBtZXRob2Q8Ii5iOm5ldGxpc3RfbWV0aG9kLiI+IGNtZDwiLmI6bmV0bGlzdF9jbWQuIj4gcGF0aDwiLmI6bmV0bGlzdF9wYXRoLiI+IikKKyAgICVkCisKKyAgZWxzZWlmIGRpcm5hbWUgIX4gJ15cd1wrOicgJiYgZGlybmFtZSA9fiAnLyQnCisgICAiIGdvIGRvd24gb25lIGRpcmVjdG9yeQorIiIgICBjYWxsIERlY2hvKCJnbyBkb3duIG9uZSBkaXJlY3Rvcnk8Ii5kaXJuYW1lLiI+IikKKyAgIGxldCBiOm5ldGxpc3RfcGF0aD1iOm5ldGxpc3RfcGF0aC5kaXJuYW1lCisiIiAgIGNhbGwgRGVjaG8oIm5ldGxpc3QgbWV0aG9kPCIuYjpuZXRsaXN0X21ldGhvZC4iPiBjbWQ8Ii5iOm5ldGxpc3RfY21kLiI+IHBhdGg8Ii5iOm5ldGxpc3RfcGF0aC4iPiIpCisgICAlZAorCisgIGVsc2UKKyAgICIgbm9ybWFsIGluaXRpYWwgZGlyZWN0b3J5IGxpc3RpbmcKKyIiICAgY2FsbCBEZWNobygibm9ybWFsIGluaXRpYWwgZGlyZWN0b3J5IGxpc3RpbmciKQorCisgICBsZXQgbGlzdGNtZCA9IHN1YnN0aXR1dGUoZzpuZXRyd19saXN0X2NtZCwnXDxIT1NUTkFNRVw+JyxnOm5ldHJ3X21hY2hpbmUsJycpCisgICBsZXQgbWV0aG9kICA9IHN1YnN0aXR1dGUoZGlybmFtZSwnXlwoXHdcK1wpOi4qJCcsJ1wxJywnJykKKyAgIGxldCBmbmFtZSAgID0gYjpuZXRyd19mbmFtZQorIiIgICBjYWxsIERlY2hvKCJzZXQgdXAgbGlzdGNtZDwiLmxpc3RjbWQuIj4iKQorIiIgICBjYWxsIERlY2hvKCJzZXQgdXAgbWV0aG9kIDwiLm1ldGhvZC4iPiIpCisiIiAgIGNhbGwgRGVjaG8oInNldCB1cCBmbmFtZSAgPCIuZm5hbWUuIj4iKQorCisgICAiIHNldCB1cCB3aW5kb3cKKyAgIGlmICZtb2QgPT0gMQorICAgIHdpbmNtZCBzCisgICBlbmRpZgorICAgZW5ldyEKKyAgIGlmIHY6dmVyc2lvbiA+PSA2MDIKKyAgICBzZXRsb2NhbCBiaD13aXBlCisgICBlbmRpZgorICAgCisgICAiIHNldCB1cCBidWZmZXItbG9jYWwgdmFyaWFibGVzCisgICBsZXQgYjpuZXRsaXN0X21ldGhvZCA9IG1ldGhvZAorICAgbGV0IGI6bmV0bGlzdF9jbWQgICAgPSBsaXN0Y21kCisgICBsZXQgYjpuZXRsaXN0X3BhdGggICA9IGZuYW1lCisKKyAgICIgc2V0IHVwIGJ1ZmZlci1sb2NhbCBtYXAKKyAgIG5ub3JlbWFwIDxidWZmZXI+IDxjcj4JOmNhbGwgPFNJRD5OZXRMaXN0KGV4cGFuZCgiPGNXT1JEPiIpKTxjcj4KKworIiIgICBjYWxsIERlY2hvKCJuZXRsaXN0IG1ldGhvZDwiLmI6bmV0bGlzdF9tZXRob2QuIj4gY21kPCIuYjpuZXRsaXN0X2NtZC4iPiBwYXRoPCIuYjpuZXRsaXN0X3BhdGguIj4iKQorICBlbmRpZgorCisiIiAgY2FsbCBEZWNobygiZXhlY3V0aW5nOiByISAiLmI6bmV0bGlzdF9jbWQuIiAnIi5iOm5ldGxpc3RfcGF0aC4iJyIpCisgIHB1dCA9J1wiID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PScKKyAgcHV0ID0nXCIgTmV0cncgUmVtb3RlIERpcmVjdG9yeSBMaXN0aW5nJworICBwdXQgPSdcIiAgICcuZzpuZXRyd19tYWNoaW5lLic6Jy5iOm5ldGxpc3RfcGF0aAorICBwdXQgPSdcIiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nCisgIGV4ZSAic2lsZW50IHIhICIuYjpuZXRsaXN0X2NtZC4iICciLmI6bmV0bGlzdF9wYXRoLiInIgorICAxZAorICBzZXQgZnQ9bmV0cndsaXN0CisgIHNpbGVudCA1LCRzL15cKC4qXClcLyQvIFwxL2UKKyAgc2lsZW50IDUsJGNhbGwgczpOZXRTb3J0KCkKKyAgc2lsZW50IDUsJHMvXiBcKC4qXCkkL1wxXC8vZQorICA1CisgIGV4ZSAnZmlsZSBbJy5nOm5ldHJ3X21hY2hpbmUuJzonLmI6bmV0bGlzdF9wYXRoLiddJworICBpZiB2OnZlcnNpb24gPj0gNjAyCisgICBzZXRsb2NhbCBub21vZCBiaD13aXBlIGJ0PW5vZmlsZSBub2JsIG5vbWEKKyAgZWxzZQorICAgc2V0bG9jYWwgbm9tb2QKKyAgZW5kaWYKKworIiIgIGNhbGwgRHJldCgiTmV0TGlzdCIpCitlbmRmdW4KKworIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTmV0TWV0aG9kOiAgZGV0ZXJtaW5lIG1ldGhvZCBvZiB0cmFuc2ZlciB7e3sxCiAiICBtZXRob2QgPT0gMTogcmNwCiAiCSAgICAgMjogZnRwICsgPC5uZXRyYz4KQEAgLTg3MSw3ICsxMDMzLDcgQEAKICIJICAgICA4OiBmZXRjaAogIgkgICAgIDk6IHNmdHAKIGZ1biEgczpOZXRNZXRob2QoY2hvaWNlKSAgIiBnbG9iYWxzOiBtZXRob2QgbWFjaGluZSBpZCBwYXNzd2QgZm5hbWUKLSIgY2FsbCBEZnVuYygiTmV0TWV0aG9kKGE6Y2hvaWNlPCIuYTpjaG9pY2UuIj4pIikKKyIiIGNhbGwgRGZ1bmMoIk5ldE1ldGhvZChhOmNob2ljZTwiLmE6Y2hvaWNlLiI+KSIpCiAKICAiIGluaXRpYWxpemF0aW9uCiAgbGV0IGI6bmV0cndfbWV0aG9kICA9IDAKQEAgLTg5MSwyMyArMTA1MywyMyBAQAogICIgcnN5bmN1cm0gOiByc3luYzovL2hvc3RbOnBvcnRdL3BhdGggICAgICAgICAgICAgIFVzZSByc3luYwogICIgZmV0Y2h1cm0gOiBmZXRjaDovL1t1c2VyQF1ob3N0WzpodHRwXS9maWxlbmFtZSAgIFVzZSBmZXRjaCAoZGVmYXVsdHMgdG8gZnRwLCBvdmVycmlkZSBmb3IgaHR0cCkKICAiIHNmdHB1cm0gIDogc2Z0cDovL1t1c2VyQF1ob3N0L2ZpbGVuYW1lICBVc2Ugc2NwCi0gbGV0IG1pcGYgICAgID0gJ1woXFNcK1wpXHNcK1woXFNcK1wpXHNcK1woXFNcK1wpXHNcK1woXFNcK1wpJwotIGxldCBtZiAgICAgICA9ICdcKFxTXCtcKVxzXCtcKFxTXCtcKScKLSBsZXQgZnRwdXJtICAgPSAnZnRwOi8vXChcKFteL0BdXHstfVwpQFwpXD1cKFteLyM6XVx7LX1cKVwoWyM6XVxkXCtcKVw9L1woLipcKSQnCi0gbGV0IHJjcHVybSAgID0gJ3JjcDovL1woXChbXi9AXVx7LX1cKUBcKVw9XChbXi9dXHstfVwpL1woLipcKSQnCi0gbGV0IHJjcGhmICAgID0gJ1woXChbXkBdXHstfVwpQFwpXD1cKFxJXGkqXCk6XChcU1wrXCknCi0gbGV0IHNjcHVybSAgID0gJ3NjcDovL1woW14vXVx7LX1cKVwoWyM6XVxkXCtcKVw9L1woLipcKSQnCi0gbGV0IGh0dHB1cm0gID0gJ2h0dHA6Ly9cKFteL11cey19XClcKC8uKlwpXD0kJwotIGxldCBkYXZ1cm0gICA9ICdkYXY6Ly9cKFteL11cey19XCkvXCguKlwpXD0kJwotIGxldCByc3luY3VybSA9ICdyc3luYzovL1woW14vXVx7LX1cKS9cKC4qXClcPSQnCi0gbGV0IGZldGNodXJtID0gJ2ZldGNoOi8vXChcKFteL0BdXHstfVwpQFwpXD1cKFteLyM6XVx7LX1cKVwoOmh0dHBcKVw9L1woLipcKSQnCi0gbGV0IHNmdHB1cm0gID0gJ3NmdHA6Ly9cKFteL11cey19XCkvXCguKlwpXD0kJworIGxldCBtaXBmICAgICA9ICdeXChcU1wrXClcc1wrXChcU1wrXClcc1wrXChcU1wrXClcc1wrXChcU1wrXCkkJworIGxldCBtZiAgICAgICA9ICdeXChcU1wrXClcc1wrXChcU1wrXCkkJworIGxldCBmdHB1cm0gICA9ICdeZnRwOi8vXChcKFteL0BdXHstfVwpQFwpXD1cKFteLyM6XVx7LX1cKVwoWyM6XVxkXCtcKVw9L1woLipcKSQnCisgbGV0IHJjcHVybSAgID0gJ15yY3A6Ly9cKFwoW14vQF1cey19XClAXClcPVwoW14vXVx7LX1cKS9cKC4qXCkkJworIGxldCByY3BoZiAgICA9ICdeXChcKFxoXHcqXClAXClcPVwoXGhcdypcKTpcKFteQF1cK1wpJCcKKyBsZXQgc2NwdXJtICAgPSAnXnNjcDovL1woW14vXVx7LX1cKVwoWyM6XVxkXCtcKVw9L1woLipcKSQnCisgbGV0IGh0dHB1cm0gID0gJ15odHRwOi8vXChbXi9dXHstfVwpXCgvLipcKVw9JCcKKyBsZXQgZGF2dXJtICAgPSAnXmRhdjovL1woW14vXVx7LX1cKS9cKC4qXClcPSQnCisgbGV0IHJzeW5jdXJtID0gJ15yc3luYzovL1woW14vXVx7LX1cKS9cKC4qXClcPSQnCisgbGV0IGZldGNodXJtID0gJ15mZXRjaDovL1woXChbXi9AXVx7LX1cKUBcKVw9XChbXi8jOl1cey19XClcKDpodHRwXClcPS9cKC4qXCkkJworIGxldCBzZnRwdXJtICA9ICdec2Z0cDovL1woW14vXVx7LX1cKS9cKC4qXClcPSQnCiAKLSIgY2FsbCBEZWNobygiZGV0ZXJtaW5lIG1ldGhvZDoiKQorIiIgY2FsbCBEZWNobygiZGV0ZXJtaW5lIG1ldGhvZDoiKQogICIgRGV0ZXJtaW5lIE1ldGhvZAogICIgcmNwOi8vdXNlckBob3N0bmFtZS8uLi5wYXRoLXRvLWZpbGUKICBpZiBtYXRjaChhOmNob2ljZSxyY3B1cm0pID09IDAKLSIgIGNhbGwgRGVjaG8oInJjcDovLy4uLiIpCisiIiAgY2FsbCBEZWNobygicmNwOi8vLi4uIikKICAgbGV0IGI6bmV0cndfbWV0aG9kID0gMQogICBsZXQgdXNlcmlkCSAgICAgPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHJjcHVybSwnXDInLCIiKQogICBsZXQgZzpuZXRyd19tYWNoaW5lPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHJjcHVybSwnXDMnLCIiKQpAQCAtOTE4LDcgKzEwODAsNyBAQAogCiAgIiBzY3A6Ly91c2VyQGhvc3RuYW1lLy4uLnBhdGgtdG8tZmlsZQogIGVsc2VpZiBtYXRjaChhOmNob2ljZSxzY3B1cm0pID09IDAKLSIgIGNhbGwgRGVjaG8oInNjcDovLy4uLiIpCisiIiAgY2FsbCBEZWNobygic2NwOi8vLi4uIikKICAgbGV0IGI6bmV0cndfbWV0aG9kID0gNAogICBsZXQgZzpuZXRyd19tYWNoaW5lPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHNjcHVybSwnXDEnLCIiKQogICBsZXQgYjpuZXRyd19wb3J0ICAgPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHNjcHVybSwnXDInLCIiKQpAQCAtOTI2LDI4ICsxMDg4LDI4IEBACiAKICAiIGh0dHA6Ly91c2VyQGhvc3RuYW1lLy4uLnBhdGgtdG8tZmlsZQogIGVsc2VpZiBtYXRjaChhOmNob2ljZSxodHRwdXJtKSA9PSAwCi0iICBjYWxsIERlY2hvKCJodHRwOi8vLi4uIikKKyIiICBjYWxsIERlY2hvKCJodHRwOi8vLi4uIikKICAgbGV0IGI6bmV0cndfbWV0aG9kID0gNQogICBsZXQgZzpuZXRyd19tYWNoaW5lPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLGh0dHB1cm0sJ1wxJywiIikKICAgbGV0IGI6bmV0cndfZm5hbWUgID0gc3Vic3RpdHV0ZShhOmNob2ljZSxodHRwdXJtLCdcMicsIiIpCiAKICAiIGRhdjovL2hvc3RuYW1lWzpwb3J0XS8uLnBhdGgtdG8tZmlsZS4uCiAgZWxzZWlmIG1hdGNoKGE6Y2hvaWNlLGRhdnVybSkgPT0gMAotIiAgY2FsbCBEZWNobygiZGF2Oi8vLi4uIikKKyIiICBjYWxsIERlY2hvKCJkYXY6Ly8uLi4iKQogICBsZXQgYjpuZXRyd19tZXRob2Q9IDYKICAgbGV0IGc6bmV0cndfbWFjaGluZT0gc3Vic3RpdHV0ZShhOmNob2ljZSxkYXZ1cm0sJ1wxJywiIikKICAgbGV0IGI6bmV0cndfZm5hbWUgID0gc3Vic3RpdHV0ZShhOmNob2ljZSxkYXZ1cm0sJ1wyJywiIikKIAogICIgcnN5bmM6Ly91c2VyQGhvc3RuYW1lLy4uLnBhdGgtdG8tZmlsZQogIGVsc2VpZiBtYXRjaChhOmNob2ljZSxyc3luY3VybSkgPT0gMAotIiAgY2FsbCBEZWNobygicnN5bmM6Ly8uLi4iKQorIiIgIGNhbGwgRGVjaG8oInJzeW5jOi8vLi4uIikKICAgbGV0IGI6bmV0cndfbWV0aG9kID0gNwogICBsZXQgZzpuZXRyd19tYWNoaW5lPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHJzeW5jdXJtLCdcMScsIiIpCiAgIGxldCBiOm5ldHJ3X2ZuYW1lICA9IHN1YnN0aXR1dGUoYTpjaG9pY2UscnN5bmN1cm0sJ1wyJywiIikKIAogICIgZnRwOi8vW3VzZXJAXWhvc3RuYW1lW1s6I11wb3J0XS8uLi5wYXRoLXRvLWZpbGUKICBlbHNlaWYgbWF0Y2goYTpjaG9pY2UsZnRwdXJtKSA9PSAwCi0iICBjYWxsIERlY2hvKCJmdHA6Ly8uLi4iKQorIiIgIGNhbGwgRGVjaG8oImZ0cDovLy4uLiIpCiAgIGxldCB1c2VyaWQJICAgICA9IHN1YnN0aXR1dGUoYTpjaG9pY2UsZnRwdXJtLCdcMicsIiIpCiAgIGxldCBnOm5ldHJ3X21hY2hpbmU9IHN1YnN0aXR1dGUoYTpjaG9pY2UsZnRwdXJtLCdcMycsIiIpCiAgIGxldCBnOm5ldHJ3X3BvcnQgICA9IHN1YnN0aXR1dGUoYTpjaG9pY2UsZnRwdXJtLCdcNCcsIiIpCkBAIC05NzUsNyArMTEzNyw3IEBACiAgIGVuZGlmCiAKICBlbHNlaWYgbWF0Y2goYTpjaG9pY2UsZmV0Y2h1cm0pID09IDAKLSIgIGNhbGwgRGVjaG8oImZldGNoOi8vLi4uIikKKyIiICBjYWxsIERlY2hvKCJmZXRjaDovLy4uLiIpCiAgIGxldCBiOm5ldHJ3X21ldGhvZCA9IDgKICAgbGV0IGc6bmV0cndfdXNlcmlkID0gc3Vic3RpdHV0ZShhOmNob2ljZSxmZXRjaHVybSwnXDInLCIiKQogICBsZXQgZzpuZXRyd19tYWNoaW5lPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLGZldGNodXJtLCdcMycsIiIpCkBAIC05ODQsNyArMTE0Niw3IEBACiAKICAiIElzc3VlIGFuIGZ0cCA6ICJtYWNoaW5lIGlkIHBhc3N3b3JkIFtwYXRoL11maWxlbmFtZSIKICBlbHNlaWYgbWF0Y2goYTpjaG9pY2UsbWlwZikgPT0gMAotIiAgY2FsbCBEZWNobygiKGZ0cCkgaG9zdCBpZCBwYXNzIGZpbGUiKQorIiIgIGNhbGwgRGVjaG8oIihmdHApIGhvc3QgaWQgcGFzcyBmaWxlIikKICAgbGV0IGI6bmV0cndfbWV0aG9kICA9IDMKICAgbGV0IGc6bmV0cndfbWFjaGluZSA9IHN1YnN0aXR1dGUoYTpjaG9pY2UsbWlwZiwnXDEnLCIiKQogICBsZXQgZzpuZXRyd191aWQgICAgID0gc3Vic3RpdHV0ZShhOmNob2ljZSxtaXBmLCdcMicsIiIpCkBAIC05OTMsNyArMTE1NSw3IEBACiAKICAiIElzc3VlIGFuIGZ0cDogImhvc3RuYW1lIFtwYXRoL11maWxlbmFtZSIKICBlbHNlaWYgbWF0Y2goYTpjaG9pY2UsbWYpID09IDAKLSIgIGNhbGwgRGVjaG8oIihmdHApIGhvc3QgZmlsZSIpCisiIiAgY2FsbCBEZWNobygiKGZ0cCkgaG9zdCBmaWxlIikKICAgaWYgZXhpc3RzKCJnOm5ldHJ3X3VpZCIpICYmIGV4aXN0cygiZzpuZXRyd19wYXNzd2QiKQogICAgbGV0IGI6bmV0cndfbWV0aG9kICA9IDMKICAgIGxldCBnOm5ldHJ3X21hY2hpbmUgPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLG1mLCdcMScsIiIpCkBAIC0xMDA3LDE4ICsxMTY5LDIyIEBACiAKICAiIHNmdHA6Ly91c2VyQGhvc3RuYW1lLy4uLnBhdGgtdG8tZmlsZQogIGVsc2VpZiBtYXRjaChhOmNob2ljZSxzZnRwdXJtKSA9PSAwCi0iICBjYWxsIERlY2hvKCJzZnRwOi8vLi4uIikKKyIiICBjYWxsIERlY2hvKCJzZnRwOi8vLi4uIikKICAgbGV0IGI6bmV0cndfbWV0aG9kID0gOQogICBsZXQgZzpuZXRyd19tYWNoaW5lPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHNmdHB1cm0sJ1wxJywiIikKICAgbGV0IGI6bmV0cndfZm5hbWUgID0gc3Vic3RpdHV0ZShhOmNob2ljZSxzZnRwdXJtLCdcMicsIiIpCiAKICAiIElzc3VlIGFuIHJjcDogaG9zdG5hbWU6ZmlsZW5hbWUiICAodGhpcyBvbmUgc2hvdWxkIGJlIGxhc3QpCiAgZWxzZWlmIG1hdGNoKGE6Y2hvaWNlLHJjcGhmKSA9PSAwCi0iICBjYWxsIERlY2hvKCIocmNwKSBob3N0OmZpbGUpIikKKyIiICBjYWxsIERlY2hvKCIocmNwKSBbdXNlckBdaG9zdDpmaWxlKSByY3BoZjwiLnJjcGhmLiI+IikKICAgbGV0IGI6bmV0cndfbWV0aG9kID0gMQogICBsZXQgdXNlcmlkCSAgICAgPSBzdWJzdGl0dXRlKGE6Y2hvaWNlLHJjcGhmLCdcMicsIiIpCiAgIGxldCBnOm5ldHJ3X21hY2hpbmU9IHN1YnN0aXR1dGUoYTpjaG9pY2UscmNwaGYsJ1wzJywiIikKICAgbGV0IGI6bmV0cndfZm5hbWUgID0gc3Vic3RpdHV0ZShhOmNob2ljZSxyY3BoZiwnXDQnLCIiKQorIiIgIGNhbGwgRGVjaG8oJ1wxPCcuc3Vic3RpdHV0ZShhOmNob2ljZSxyY3BoZiwnXDEnLCIiKS4iPiIpCisiIiAgY2FsbCBEZWNobygnXDI8Jy5zdWJzdGl0dXRlKGE6Y2hvaWNlLHJjcGhmLCdcMicsIiIpLiI+IikKKyIiICBjYWxsIERlY2hvKCdcMzwnLnN1YnN0aXR1dGUoYTpjaG9pY2UscmNwaGYsJ1wzJywiIikuIj4iKQorIiIgIGNhbGwgRGVjaG8oJ1w0PCcuc3Vic3RpdHV0ZShhOmNob2ljZSxyY3BoZiwnXDQnLCIiKS4iPiIpCiAgIGlmIHVzZXJpZCAhPSAiIgogICAgbGV0IGc6bmV0cndfdWlkPSB1c2VyaWQKICAgZW5kaWYKQEAgLTEwMzIsMTggKzExOTgsMTggQEAKICAgbGV0IGI6bmV0cndfbWV0aG9kICA9IC0xCiAgZW5kaWYKIAotIiBjYWxsIERlY2hvKCJhOmNob2ljZSAgICAgICA8Ii5hOmNob2ljZS4iPiIpCi0iIGNhbGwgRGVjaG8oImI6bmV0cndfbWV0aG9kIDwiLmI6bmV0cndfbWV0aG9kLiI+IikKLSIgY2FsbCBEZWNobygiZzpuZXRyd19tYWNoaW5lPCIuZzpuZXRyd19tYWNoaW5lLiI+IikKLSIgY2FsbCBEZWNobygiZzpuZXRyd19wb3J0ICAgPCIuZzpuZXRyd19wb3J0LiI+IikKLSIgaWYgZXhpc3RzKCJnOm5ldHJ3X3VpZCIpCQkiRGVjaG8KLSIgIGNhbGwgRGVjaG8oImc6bmV0cndfdWlkICAgIDwiLmc6bmV0cndfdWlkLiI+IikKLSIgZW5kaWYJCQkJCSJEZWNobwotIiBpZiBleGlzdHMoImc6bmV0cndfcGFzc3dkIikJCSJEZWNobwotIiAgY2FsbCBEZWNobygiZzpuZXRyd19wYXNzd2QgPCIuZzpuZXRyd19wYXNzd2QuIj4iKQotIiBlbmRpZgkJCQkJIkRlY2hvCi0iIGNhbGwgRGVjaG8oImI6bmV0cndfZm5hbWUgIDwiLmI6bmV0cndfZm5hbWUuIj4iKQotIiBjYWxsIERyZXQoIk5ldE1ldGhvZCIpCisiIiBjYWxsIERlY2hvKCJhOmNob2ljZSAgICAgICA8Ii5hOmNob2ljZS4iPiIpCisiIiBjYWxsIERlY2hvKCJiOm5ldHJ3X21ldGhvZCA8Ii5iOm5ldHJ3X21ldGhvZC4iPiIpCisiIiBjYWxsIERlY2hvKCJnOm5ldHJ3X21hY2hpbmU8Ii5nOm5ldHJ3X21hY2hpbmUuIj4iKQorIiIgY2FsbCBEZWNobygiZzpuZXRyd19wb3J0ICAgPCIuZzpuZXRyd19wb3J0LiI+IikKKyIiIGlmIGV4aXN0cygiZzpuZXRyd191aWQiKQkJIkRlY2hvCisiIiAgY2FsbCBEZWNobygiZzpuZXRyd191aWQgICAgPCIuZzpuZXRyd191aWQuIj4iKQorIiIgZW5kaWYJCQkJCSJEZWNobworIiIgaWYgZXhpc3RzKCJnOm5ldHJ3X3Bhc3N3ZCIpCQkiRGVjaG8KKyIiICBjYWxsIERlY2hvKCJnOm5ldHJ3X3Bhc3N3ZCA8Ii5nOm5ldHJ3X3Bhc3N3ZC4iPiIpCisiIiBlbmRpZgkJCQkJIkRlY2hvCisiIiBjYWxsIERlY2hvKCJiOm5ldHJ3X2ZuYW1lICA8Ii5iOm5ldHJ3X2ZuYW1lLiI+IikKKyIiIGNhbGwgRHJldCgiTmV0TWV0aG9kIikKIGVuZGZ1bgogIiBlbmQgb2YgTmV0TWV0aG9kCiAKQEAgLTEwNTYsMzIgKzEyMjIsMzIgQEAKIAogICIgZ2V0L3NldCB1c2VyaWQKICBpZiBhOjAgPT0gMAotIiAgY2FsbCBEZnVuYygiTmV0VXNlclBhc3MoYTowPCIuYTowLiI+KSIpCisiIiAgY2FsbCBEZnVuYygiTmV0VXNlclBhc3MoYTowPCIuYTowLiI+KSIpCiAgIGlmICFleGlzdHMoImc6bmV0cndfdWlkIikgfHwgZzpuZXRyd191aWQgPT0gIiIKICAgICIgdmlhIHByb21wdAogICAgbGV0IGc6bmV0cndfdWlkPSBpbnB1dCgnRW50ZXIgdXNlcm5hbWU6ICcpCiAgIGVuZGlmCiAgZWxzZQkiIGZyb20gY29tbWFuZCBsaW5lCi0iICBjYWxsIERmdW5jKCJOZXRVc2VyUGFzcyhhOjE8Ii5hOjEuIj4pIHsiKQorIiIgIGNhbGwgRGZ1bmMoIk5ldFVzZXJQYXNzKGE6MTwiLmE6MS4iPikgeyIpCiAgIGxldCBnOm5ldHJ3X3VpZD0gYToxCiAgZW5kaWYKIAogICIgZ2V0IHBhc3N3b3JkCiAgaWYgYTowIDw9IDEgIiB2aWEgcHJvbXB0Ci0iICBjYWxsIERlY2hvKCJhOjA9Ii5hOjAuIiBjYXNlIDw9MToiKQorIiIgIGNhbGwgRGVjaG8oImE6MD0iLmE6MC4iIGNhc2UgPD0xOiIpCiAgIGxldCBnOm5ldHJ3X3Bhc3N3ZD0gaW5wdXRzZWNyZXQoIkVudGVyIFBhc3N3b3JkOiAiKQogIGVsc2UgIiBmcm9tIGNvbW1hbmQgbGluZQotIiAgY2FsbCBEZWNobygiYTowPSIuYTowLiIgY2FzZSA+MTogYToyPCIuYToyLiI+IikKKyIiICBjYWxsIERlY2hvKCJhOjA9Ii5hOjAuIiBjYXNlID4xOiBhOjI8Ii5hOjIuIj4iKQogICBsZXQgZzpuZXRyd19wYXNzd2Q9YToyCiAgZW5kaWYKLSIgIGNhbGwgRHJldCgiTmV0VXNlclBhc3MiKQorIiIgIGNhbGwgRHJldCgiTmV0VXNlclBhc3MiKQogZW5kZnVuCiAiIGVuZCBOZXRVc2VyUGFzcwogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRPcHRpb25TYXZlOiBzYXZlIG9wdGlvbnMgYW5kIHNldCB0byAic3RhbmRhcmQiIGZvcm0ge3t7MQogZnVuIXM6TmV0T3B0aW9uU2F2ZSgpCi0iIGNhbGwgRGZ1bmMoIk5ldE9wdGlvblNhdmUoKSIpCisiIiBjYWxsIERmdW5jKCJOZXRPcHRpb25TYXZlKCkiKQogCiAgIiBHZXQgVGVtcG9yYXJ5IEZpbGVuYW1lCiAgbGV0IHM6YWlrZWVwCT0gJmFpCkBAIC0xMTAwLDE2ICsxMjY2LDE2IEBACiAgaWYgaGFzKCJ3aW4zMiIpICYmICFoYXMoIndpbjk1IikKICAgbGV0IHM6c3dma2VlcD0gJnN3ZgogICBzZXQgbm9zd2YKLSIgIGNhbGwgRGVjaG8oInNldHRpbmcgczpzd2ZrZWVwIHRvIDwiLiZzd2YuIj4iKQorIiIgIGNhbGwgRGVjaG8oInNldHRpbmcgczpzd2ZrZWVwIHRvIDwiLiZzd2YuIj4iKQogIGVuZGlmCiAKLSIgY2FsbCBEcmV0KCJOZXRPcHRpb25TYXZlIikKKyIiIGNhbGwgRHJldCgiTmV0T3B0aW9uU2F2ZSIpCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTmV0T3B0aW9uUmVzdG9yZTogcmVzdG9yZSBvcHRpb25zIHt7ezEKIGZ1biEgczpOZXRPcHRpb25SZXN0b3JlKCkKLSIgY2FsbCBEZnVuYygiTmV0T3B0aW9uUmVzdG9yZSgpIikKKyIiIGNhbGwgRGZ1bmMoIk5ldE9wdGlvblJlc3RvcmUoKSIpCiAKICBsZXQgJmFpCT0gczphaWtlZXAKICBsZXQgJmNpbgk9IHM6Y2lua2VlcApAQCAtMTEzMiwyNyArMTI5OCw1NSBAQAogIHVubGV0IHM6dHdrZWVwCiAgdW5sZXQgczpkaXJrZWVwCiAKLSIgY2FsbCBEcmV0KCJOZXRPcHRpb25SZXN0b3JlIikKKyIiIGNhbGwgRHJldCgiTmV0T3B0aW9uUmVzdG9yZSIpCiBlbmRmdW4KIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgTmV0UmVhZEZpeHVwOiB0aGlzIHNvcnQgb2YgZnVuY3Rpb24gaXMgdHlwaWNhbGx5IHdyaXR0ZW4gYnkgdGhlIHVzZXIge3t7MQotIgkJdG8gaGFuZGxlIGV4dHJhIGp1bmsgdGhhdCB0aGVpciBzeXN0ZW0ncyBmdHAgZHVtcHMKLSIJCWludG8gdGhlIHRyYW5zZmVyLiAgVGhpcyBmdW5jdGlvbiBpcyBwcm92aWRlZCBhcyBhbgotIgkJZXhhbXBsZSBhbmQgYXMgYSBmaXggZm9yIGEgV2luZG93cyA5NSBwcm9ibGVtOiBpbiBteQotIgkJZXhwZXJpZW5jZSwgd2luOTUncyBmdHAgYWx3YXlzIGR1bXBlZCBmb3VyIGJsYW5rIGxpbmVzCi0iCQlhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2Zlci4KKyIgICAgICAgICAgICAgICB0byBoYW5kbGUgZXh0cmEganVuayB0aGF0IHRoZWlyIHN5c3RlbSdzIGZ0cCBkdW1wcworIiAgICAgICAgICAgICAgIGludG8gdGhlIHRyYW5zZmVyLiAgVGhpcyBmdW5jdGlvbiBpcyBwcm92aWRlZCBhcyBhbgorIiAgICAgICAgICAgICAgIGV4YW1wbGUgYW5kIGFzIGEgZml4IGZvciBhIFdpbmRvd3MgOTUgcHJvYmxlbTogaW4gbXkKKyIgICAgICAgICAgICAgICBleHBlcmllbmNlLCB3aW45NSdzIGZ0cCBhbHdheXMgZHVtcGVkIGZvdXIgYmxhbmsgbGluZXMKKyIgICAgICAgICAgICAgICBhdCB0aGUgZW5kIG9mIHRoZSB0cmFuc2Zlci4KIGlmIGhhcygid2luOTUiKSAmJiBnOm5ldHJ3X3dpbjk1ZnRwCiAgZnVuISBOZXRSZWFkRml4dXAobWV0aG9kLCBsaW5lMSwgbGluZTIpCi0iICAgY2FsbCBEZnVuYygiTmV0UmVhZEZpeHVwKG1ldGhvZDwiLmE6bWV0aG9kLiI+IGxpbmUxPSIuYTpsaW5lMS4iIGxpbmUyPSIuYTpsaW5lMi4iKSIpCisiIiAgIGNhbGwgRGZ1bmMoIk5ldFJlYWRGaXh1cChtZXRob2Q8Ii5hOm1ldGhvZC4iPiBsaW5lMT0iLmE6bGluZTEuIiBsaW5lMj0iLmE6bGluZTIuIikiKQogICAgaWYgbWV0aG9kID09IDMgICAiIGZ0cCAobm8gPC5uZXRyYz4pCiAgICAgbGV0IGZvdXJibGFua2xpbmVzPSBsaW5lMiAtIDMKICAgICBzaWxlbnQgZm91cmJsYW5rbGluZXMuIiwiLmxpbmUyLiJnL15ccyovZCIKICAgIGVuZGlmCi0iICAgY2FsbCBEcmV0KCJOZXRSZWFkRml4dXAiKQorIiIgICBjYWxsIERyZXQoIk5ldFJlYWRGaXh1cCIpCiAgZW5kZnVuCiBlbmRpZgogCisiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIiBOZXRTb3J0OiBQaWV0IERlbHBvcnQncyBCSVNvcnQyKCkgZnVuY3Rpb24sIG1vZGlmaWVkIHRvIHRha2UgYSByYW5nZQorZnVuISA8U0lEPk5ldFNvcnQoKSByYW5nZQorICBsZXQgaSA9IGE6Zmlyc3RsaW5lICsgMQorICB3aGlsZSBpIDw9IGE6bGFzdGxpbmUKKyAgICAiIGZpbmQgaW5zZXJ0aW9uIHBvaW50IHZpYSBiaW5hcnkgc2VhcmNoCisgICAgbGV0IGlfdmFsID0gZ2V0bGluZShpKQorICAgIGxldCBsbyAgICA9IGE6Zmlyc3RsaW5lCisgICAgbGV0IGhpICAgID0gaQorICAgIHdoaWxlIGxvIDwgaGkKKyAgICAgIGxldCBtaWQgICAgID0gKGxvICsgaGkpIC8gMgorICAgICAgbGV0IG1pZF92YWwgPSBnZXRsaW5lKG1pZCkKKyAgICAgIGlmIGlfdmFsIDwgbWlkX3ZhbAorICAgICAgICBsZXQgaGkgPSBtaWQKKyAgICAgIGVsc2UKKyAgICAgICAgbGV0IGxvID0gbWlkICsgMQorICAgICAgICBpZiBpX3ZhbCA9PSBtaWRfdmFsIHwgYnJlYWsgfCBlbmRpZgorICAgICAgZW5kaWYKKyAgICBlbmR3aGlsZQorICAgICIgZG8gaW5zZXJ0CisgICAgaWYgbG8gPCBpCisgICAgICBleGVjIGkuJ2RfJworICAgICAgY2FsbCBhcHBlbmQobG8gLSAxLCBpX3ZhbCkKKyAgICBlbmRpZgorICAgIGxldCBpID0gaSArIDEKKyAgZW5kd2hpbGUKK2VuZGZ1bgorCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBSZXN0b3JlIHt7ezEKIGxldCAmY3BvPSBzOnNhdmVfY3BvCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9uZXRyd2xpc3QudmltIGIvcnVudGltZS9zeW50YXgvbmV0cndsaXN0LnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTk2N2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9zeW50YXgvbmV0cndsaXN0LnZpbQpAQCAtMCwwICsxLDI5IEBACisiIExhbmd1YWdlICAgOiBOZXRydyBSZW1vdGUtRGlyZWN0b3J5IExpc3RpbmcgU3ludGF4CisiIE1haW50YWluZXIgOiBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4KKyIgTGFzdCBjaGFuZ2U6IEp1biAxMCwgMjAwNAorIiBWZXJzaW9uICAgIDogMQorCisiIFN5bnRheCBDbGVhcmluZzoge3t7MQoraWYgdmVyc2lvbiA8IDYwMAorIHN5bnRheCBjbGVhcgorZWxzZWlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCisgZmluaXNoCitlbmRpZgorCisiIERpcmVjdG9yeSBMaXN0IFN5bnRheCBIaWdobGlnaHRpbmc6IHt7ezEKK3N5biBtYXRjaCBuZXRyd0RpcgkJIl4uKi8kIiBjb250YWlucz1uZXRyd1NwZWNpYWwKK3N5biBtYXRjaCBuZXRyd1NwZWNpYWwJCSJbKj1AfC9dJCIKK3N5biBtYXRjaCBuZXRyd1NsYXNoIGNvbnRhaW5lZAkiLyIKK3N5biBtYXRjaCBuZXRyd0NvbW1lbnQJCSciLiokJworCisiIEhpZ2hsaWdodGluZyBMaW5rczoge3t7MQoraWYgIWV4aXN0cygiZGlkX2RyY2hpcF9kYmdfc3ludGF4IikKKyBsZXQgZGlkX2RyY2hpcF9uZXRyd2xpc3Rfc3ludGF4PSAxCisgaGkgbGluayBuZXRyd0NvbW1lbnQJQ29tbWVudAorIGhpIGxpbmsgbmV0cndEaXIJRGlyZWN0b3J5CisgaGkgbGluayBuZXRyd1NwZWNpYWwJRnVuY3Rpb24KK2VuZGlmCisKKyIgQ3VycmVudCBTeW50YXg6IHt7ezEKK2xldCAgIGI6Y3VycmVudF9zeW50YXggPSAibmV0cndsaXN0IgorIiB2aW06IHRzPTggZmRtPW1hcmtlcgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvcG8udmltIGIvcnVudGltZS9zeW50YXgvcG8udmltCmluZGV4IDZkYTc1ZDYuLjRjMWFhYzEgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L3BvLnZpbQorKysgYi9ydW50aW1lL3N5bnRheC9wby52aW0KQEAgLTE5LDYgKzE5LDggQEAKIHN5biBtYXRjaCAgcG9Gb3JtYXQJIiUlIiBjb250YWluZWQKIHN5biByZWdpb24gcG9TdHJpbmcJc3RhcnQ9KyIrIHNraXA9K1xcXFxcfFxcIisgZW5kPSsiKwogCQkJXCBjb250YWlucz1wb1NwZWNpYWwscG9Gb3JtYXQKK3N5biByZWdpb24gcG9GdXp6eSAgICAgICBzdGFydD0rXiMsXHNmdXp6eSsgZW5kPSteJCsKK3N5biBtYXRjaCAgcG9VbnRyYW5zbGF0ZWQgK15tc2dzdHJccyIiXG5cbisKIAogIiBEZWZpbmUgdGhlIGRlZmF1bHQgaGlnaGxpZ2h0aW5nLgogIiBGb3IgdmVyc2lvbiA1LjcgYW5kIGVhcmxpZXI6IG9ubHkgd2hlbiBub3QgZG9uZSBhbHJlYWR5CkBAIC0zNyw2ICszOSw4IEBACiAgIEhpTGluayBwb1NwZWNpYWwJU3BlY2lhbAogICBIaUxpbmsgcG9Gb3JtYXQJcG9TcGVjaWFsCiAgIEhpTGluayBwb1N0cmluZwlTdHJpbmcKKyAgSGlMaW5rIHBvRnV6enkJVG9kbworICBIaUxpbmsgcG9VbnRyYW5zbGF0ZWQJVG9kbwogCiAgIGRlbGNvbW1hbmQgSGlMaW5rCiBlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCmluZGV4IDQ2YTQwYWQuLmQ1OWYzMmEgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZQorKysgYi9zcmMvTWFrZWZpbGUKQEAgLTQzMiw3ICs0MzIsNyBAQAogI0NPTkZfT1BUX0ZFQVQgPSAtLXdpdGgtZmVhdHVyZXM9c21hbGwKICNDT05GX09QVF9GRUFUID0gLS13aXRoLWZlYXR1cmVzPW5vcm1hbAogI0NPTkZfT1BUX0ZFQVQgPSAtLXdpdGgtZmVhdHVyZXM9YmlnCi1DT05GX09QVF9GRUFUID0gLS13aXRoLWZlYXR1cmVzPWh1Z2UKKyNDT05GX09QVF9GRUFUID0gLS13aXRoLWZlYXR1cmVzPWh1Z2UKIAogIyBDT01QSUxFRCBCWSAtIEZvciBpbmNsdWRpbmcgYSBzcGVjaWZpYyBlLW1haWwgYWRkcmVzcyBmb3IgIjp2ZXJzaW9uIi4KICNDT05GX09QVF9DT01QQlkgPSAiLS13aXRoLWNvbXBpbGVkYnk9Sm9obiBEb2UgPEpvaG5Eb2VAeWFob28uY29tPiIKQEAgLTQ5Myw3ICs0OTMsNyBAQAogCiAjIE9mdGVuIHVzZWQgZm9yIEdDQzogbWl4ZWQgb3B0aW1pemluZywgbG90IG9mIG9wdGltaXppbmcsIGRlYnVnZ2luZwogI0NGTEFHUyA9IC1nIC1PMiAtZm5vLXN0cmVuZ3RoLXJlZHVjZSAtV2FsbCAtV3NoYWRvdyAtV21pc3NpbmctcHJvdG90eXBlcwotQ0ZMQUdTID0gLWcgLU8yIC1mbm8tc3RyZW5ndGgtcmVkdWNlIC1XYWxsIC1XbWlzc2luZy1wcm90b3R5cGVzCisjQ0ZMQUdTID0gLWcgLU8yIC1mbm8tc3RyZW5ndGgtcmVkdWNlIC1XYWxsIC1XbWlzc2luZy1wcm90b3R5cGVzCiAjQ0ZMQUdTID0gLU82IC1mbm8tc3RyZW5ndGgtcmVkdWNlIC1XYWxsIC1Xc2hhZG93IC1XbWlzc2luZy1wcm90b3R5cGVzCiAjQ0ZMQUdTID0gLWcgLURERUJVRyAtV2FsbCAtV3NoYWRvdyAtV21pc3NpbmctcHJvdG90eXBlcwogI0NGTEFHUyA9IC1nIC1PMiAtRFNUQVJUVVBUSU1FPVwidmltc3RhcnR1cFwiIC1mbm8tc3RyZW5ndGgtcmVkdWNlIC1XYWxsIC1XbWlzc2luZy1wcm90b3R5cGVzCmRpZmYgLS1naXQgYS9zcmMvYnVmZmVyLmMgYi9zcmMvYnVmZmVyLmMKaW5kZXggODNiNTcwZi4uMjdmNjRiZCAxMDA2NDQKLS0tIGEvc3JjL2J1ZmZlci5jCisrKyBiL3NyYy9idWZmZXIuYwpAQCAtNDU3OSw3ICs0NTc5LDcgQEAKICAgICB9CiAjZW5kaWYKICAgICBpZiAoYnVmLT5iX2ZuYW1lID09IE5VTEwpCi0JcmV0dXJuIF8oIltObyBGaWxlXSIpOworCXJldHVybiBfKCJbTm8gTmFtZV0iKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2V2YWwuYyBiL3NyYy9ldmFsLmMKaW5kZXggMmUzMzllNi4uNTYxODU3YSAxMDA2NDQKLS0tIGEvc3JjL2V2YWwuYworKysgYi9zcmMvZXZhbC5jCkBAIC01OTksNiArNTk5LDIwIEBACiB9CiAKIC8qCisgKiBTa2lwIG92ZXIgYW4gZXhwcmVzc2lvbiBhdCAiKnBwIi4KKyAqIFJldHVybiBGQUlMIGZvciBhbiBlcnJvciwgT0sgb3RoZXJ3aXNlLgorICovCisgICAgaW50Citza2lwX2V4cHIocHApCisgICAgY2hhcl91CSoqcHA7Cit7CisgICAgdmFyCQlyZXR2YXI7CisKKyAgICAqcHAgPSBza2lwd2hpdGUoKnBwKTsKKyAgICByZXR1cm4gZXZhbDEocHAsICZyZXR2YXIsIEZBTFNFKTsKK30KKworLyoKICAqIFRvcCBsZXZlbCBldmFsdWF0aW9uIGZ1bmN0aW9uLCByZXR1cm5pbmcgYSBzdHJpbmcuCiAgKiBSZXR1cm4gcG9pbnRlciB0byBhbGxvY2F0ZWQgbWVtb3J5LCBvciBOVUxMIGZvciBmYWlsdXJlLgogICovCkBAIC0zMzc1LDYgKzMzODksMjAgQEAKIAkgICAgYnVmID0gYnVmbGlzdF9maW5kbmFtZShuYW1lKTsKIAkgICAgdmltX2ZyZWUobmFtZSk7CiAJfQorCWlmIChidWYgPT0gTlVMTCkKKwl7CisJICAgIC8qIE5vIGZ1bGwgcGF0aCBuYW1lIG1hdGNoLCB0cnkgYSBtYXRjaCB3aXRoIGEgVVJMIG9yIGEgIm5vZmlsZSIKKwkgICAgICogYnVmZmVyLCB0aGVzZSBkb24ndCB1c2UgdGhlIGZ1bGwgcGF0aC4gKi8KKwkgICAgZm9yIChidWYgPSBmaXJzdGJ1ZjsgYnVmICE9IE5VTEw7IGJ1ZiA9IGJ1Zi0+Yl9uZXh0KQorCQlpZiAoYnVmLT5iX2ZuYW1lICE9IE5VTEwKKwkJCSYmIChwYXRoX3dpdGhfdXJsKGJ1Zi0+Yl9mbmFtZSkKKyNpZmRlZiBGRUFUX1FVSUNLRklYCisJCQkgICAgfHwgYnRfbm9maWxlKGJ1ZikKKyNlbmRpZgorCQkJICAgKQorCQkJJiYgU1RSQ01QKGJ1Zi0+Yl9mbmFtZSwgYXZhci0+dmFyX3ZhbC52YXJfc3RyaW5nKSA9PSAwKQorCQkgICAgYnJlYWs7CisJfQogICAgIH0KICAgICByZXR1cm4gYnVmOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2V4X2NtZHMuYyBiL3NyYy9leF9jbWRzLmMKaW5kZXggZTYwMzZjYS4uYWQ2MTJjZCAxMDA2NDQKLS0tIGEvc3JjL2V4X2NtZHMuYworKysgYi9zcmMvZXhfY21kcy5jCkBAIC00NTczLDcgKzQ1NzMsNyBAQAogICAgIGJ1Zl9UCSpidWY7CiAjaWZkZWYgRkVBVF9NVUxUSV9MQU5HCiAgICAgaW50CQlsZW47Ci0gICAgY2hhcl91CSpsYW5nID0gTlVMTDsKKyAgICBjaGFyX3UJKmxhbmc7CiAjZW5kaWYKIAogICAgIGlmIChlYXAgIT0gTlVMTCkKQEAgLTQ2MTMsMTMgKzQ2MTMsNyBAQAogCiAjaWZkZWYgRkVBVF9NVUxUSV9MQU5HCiAgICAgLyogQ2hlY2sgZm9yIGEgc3BlY2lmaWVkIGxhbmd1YWdlICovCi0gICAgbGVuID0gU1RSTEVOKGFyZyk7Ci0gICAgaWYgKGxlbiA+PSAzICYmIGFyZ1tsZW4gLSAzXSA9PSAnQCcgJiYgQVNDSUlfSVNBTFBIQShhcmdbbGVuIC0gMl0pCi0JCQkJCSAgICAgICAmJiBBU0NJSV9JU0FMUEhBKGFyZ1tsZW4gLSAxXSkpCi0gICAgewotCWxhbmcgPSBhcmcgKyBsZW4gLSAyOwotCWxhbmdbLTFdID0gTlVMOwkJLyogcmVtb3ZlIHRoZSAnQCcgKi8KLSAgICB9CisgICAgbGFuZyA9IGNoZWNrX2hlbHBfbGFuZyhhcmcpOwogI2VuZGlmCiAKICAgICAvKiBXaGVuIG5vIGFyZ3VtZW50IGdpdmVuIGdvIHRvIHRoZSBpbmRleC4gKi8KQEAgLTQ3NDgsNiArNDc0MiwyOCBAQAogfQogCiAKKyNpZiBkZWZpbmVkKEZFQVRfTVVMVElfTEFORykgfHwgZGVmaW5lZChQUk9UTykKKy8qCisgKiBJbiBhbiBhcmd1bWVudCBzZWFyY2ggZm9yIGEgbGFuZ3VhZ2Ugc3BlY2lmaWVycyBpbiB0aGUgZm9ybSAiQHh4Ii4KKyAqIENoYW5nZXMgdGhlICJAIiB0byBOVUwgaWYgZm91bmQsIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byAieHgiLgorICogUmV0dXJucyBOVUxMIGlmIG5vdCBmb3VuZC4KKyAqLworICAgIGNoYXJfdSAqCitjaGVja19oZWxwX2xhbmcoYXJnKQorICAgIGNoYXJfdSAqYXJnOworeworICAgIGludCBsZW4gPSBTVFJMRU4oYXJnKTsKKworICAgIGlmIChsZW4gPj0gMyAmJiBhcmdbbGVuIC0gM10gPT0gJ0AnICYmIEFTQ0lJX0lTQUxQSEEoYXJnW2xlbiAtIDJdKQorCQkJCQkgICAgICAgJiYgQVNDSUlfSVNBTFBIQShhcmdbbGVuIC0gMV0pKQorICAgIHsKKwlhcmdbbGVuIC0gM10gPSBOVUw7CQkvKiByZW1vdmUgdGhlICdAJyAqLworCXJldHVybiBhcmcgKyBsZW4gLSAyOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZgorCiAvKgogICogUmV0dXJuIGEgaGV1cmlzdGljIGluZGljYXRpbmcgaG93IHdlbGwgdGhlIGdpdmVuIHN0cmluZyBtYXRjaGVzLiAgVGhlCiAgKiBzbWFsbGVyIHRoZSBudW1iZXIsIHRoZSBiZXR0ZXIgdGhlIG1hdGNoLiAgVGhpcyBpcyB0aGUgb3JkZXIgb2YgcHJpb3JpdGllcywKQEAgLTUxODAsNyArNTE5Niw5IEBACiAgICAgZ2FycmF5X1QJZ2E7CiAgICAgaW50CQlpLCBqOwogICAgIGludAkJbGVuOworI2lmZGVmIEZFQVRfTVVMVElfTEFORwogICAgIGNoYXJfdQlsYW5nWzJdOworI2VuZGlmCiAgICAgY2hhcl91CWV4dFs1XTsKICAgICBjaGFyX3UJZm5hbWVbOF07CiAgICAgaW50CQlmaWxlY291bnQ7CmRpZmYgLS1naXQgYS9zcmMvZXhfZG9jbWQuYyBiL3NyYy9leF9kb2NtZC5jCmluZGV4IGM0YjkwMTIuLmFmOGQzZmMgMTAwNjQ0Ci0tLSBhL3NyYy9leF9kb2NtZC5jCisrKyBiL3NyYy9leF9kb2NtZC5jCkBAIC0yMzE5LDggKzIzMTksOCBAQAogCX0KICAgICB9CiAJCQkJCQkvKiBubyBhcmd1bWVudHMgYWxsb3dlZCAqLwotICAgIGlmICghbmkgJiYgIShlYS5hcmd0ICYgRVhUUkEpICYmICplYS5hcmcgIT0gTlVMICYmCi0JCQkJIHZpbV9zdHJjaHIoKGNoYXJfdSAqKSJ8XCIiLCAqZWEuYXJnKSA9PSBOVUxMKQorICAgIGlmICghbmkgJiYgIShlYS5hcmd0ICYgRVhUUkEpICYmICplYS5hcmcgIT0gTlVMCisJCQkgICAgICAmJiB2aW1fc3RyY2hyKChjaGFyX3UgKikifFwiIiwgKmVhLmFyZykgPT0gTlVMTCkKICAgICB7CiAJZXJyb3Jtc2cgPSAoY2hhcl91ICopXyhlX3RyYWlsaW5nKTsKIAlnb3RvIGRvZW5kOwpAQCAtMzg4NSw2ICszODg1LDE3IEBACiAgICAgaGFzX3dpbGRjYXJkcyA9IG1jaF9oYXNfd2lsZGNhcmQoZWFwLT5hcmcpOwogICAgIGZvciAocCA9IGVhcC0+YXJnOyAqcDsgKQogICAgIHsKKyNpZmRlZiBGRUFUX0VWQUwKKwkvKiBTa2lwIG92ZXIgYD1leHByYCwgd2lsZGNhcmRzIGluIGl0IGFyZSBub3QgZXhwYW5kZWQuICovCisJaWYgKHBbMF0gPT0gJ2AnICYmIHBbMV0gPT0gJz0nKQorCXsKKwkgICAgcCArPSAyOworCSAgICAodm9pZClza2lwX2V4cHIoJnApOworCSAgICBpZiAoKnAgPT0gJ2AnKQorCQkrK3A7CisJICAgIGNvbnRpbnVlOworCX0KKyNlbmRpZgogCS8qCiAJICogUXVpY2sgY2hlY2sgaWYgdGhpcyBjYW5ub3QgYmUgdGhlIHN0YXJ0IG9mIGEgc3BlY2lhbCBzdHJpbmcuCiAJICogQWxzbyByZW1vdmVzIGJhY2tzbGFzaCBiZWZvcmUgJyUnLCAnIycgYW5kICc8Jy4KQEAgLTQxNTcsNiArNDE2OCwxOCBAQAogCSAgICBpZiAoKnAgPT0gTlVMKQkJLyogc3RvcCBhdCBOVUwgYWZ0ZXIgQ1RSTC1WICovCiAJCWJyZWFrOwogCX0KKworI2lmZGVmIEZFQVRfRVZBTAorCS8qIFNraXAgb3ZlciBgPWV4cHJgIHdoZW4gd2lsZGNhcmRzIGFyZSBleHBhbmRlZC4gKi8KKwllbHNlIGlmIChwWzBdID09ICdgJyAmJiBwWzFdID09ICc9JykKKwl7CisJICAgIHAgKz0gMjsKKwkgICAgKHZvaWQpc2tpcF9leHByKCZwKTsKKwkgICAgaWYgKCpwID09ICdgJykKKwkJKytwOworCX0KKyNlbmRpZgorCiAJLyogQ2hlY2sgZm9yICciJzogc3RhcnQgb2YgY29tbWVudCBvciAnfCc6IG5leHQgY29tbWFuZCAqLwogCS8qIDpAIiBhbmQgOioiIGRvIG5vdCBzdGFydCBhIGNvbW1lbnQhCiAJICogOnJlZGlyIEAiIGRvZXNuJ3QgZWl0aGVyLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2ZpbGVpby5jIGIvc3JjL2ZpbGVpby5jCmluZGV4IGU4ZDRlMjcuLmEwOTQ3YWEgMTAwNjQ0Ci0tLSBhL3NyYy9maWxlaW8uYworKysgYi9zcmMvZmlsZWlvLmMKQEAgLTUyOTAsOCArNTI5MCwxMSBAQAogCSAgICB9CiAJICAgIGlmIChwID09IE5VTEwgfHwgYnVmLT5iX2ZuYW1lID09IE5VTEwpCiAJCWJ1Zi0+Yl9mbmFtZSA9IGJ1Zi0+Yl9mZm5hbWU7Ci0JICAgIG1mX2Z1bGxuYW1lKGJ1Zi0+Yl9tbC5tbF9tZnApOwogCX0KKworCS8qIEFsd2F5cyBtYWtlIHRoZSBzd2FwIGZpbGUgbmFtZSBhIGZ1bGwgcGF0aCwgYSAibm9maWxlIiBidWZmZXIgbWF5CisJICogYWxzbyBoYXZlIGEgc3dhcCBmaWxlLiAqLworCW1mX2Z1bGxuYW1lKGJ1Zi0+Yl9tbC5tbF9tZnApOwogICAgIH0KICNpZmRlZiBGRUFUX1dJTkRPV1MKICAgICBzdGF0dXNfcmVkcmF3X2FsbCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2d1aV9tYWMuYyBiL3NyYy9ndWlfbWFjLmMKaW5kZXggMmI3NGM2My4uZTZhODQzMyAxMDA2NDQKLS0tIGEvc3JjL2d1aV9tYWMuYworKysgYi9zcmMvZ3VpX21hYy5jCkBAIC03NCw2ICs3NCw5IEBACiAjIGVuZGlmCiAjZW5kaWYKIAorLyogVmltJ3MgU2NyYXAgZmxhdm9yLiAqLworI2RlZmluZSBWSU1TQ1JBUEZMQVZPUiAnVklNIScKKwogLyogQ0FSQk9OIHZlcnNpb24gb25seSB0ZXN0ZWQgd2l0aCBQcm9qZWN0IEJ1aWxkZXIgdW5kZXIgTWFjT1MgWCAqLwogI3VuZGVmIFVTRV9DQVJCT05JWkVECiAjaWYgKGRlZmluZWQoX19BUFBMRV9DQ19fKSB8fCBkZWZpbmVkKF9fTVJDX18pKSAmJiBkZWZpbmVkKFRBUkdFVF9BUElfTUFDX0NBUkJPTikKQEAgLTMyNiw3ICszMjksNyBAQAogICovCiAKICNpZmRlZiBVU0VfQUVWRU5UCi1PU0VyciBIYW5kbGVVbnVzZWRQYXJtcyAoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50KTsKK09TRXJyIEhhbmRsZVVudXNlZFBhcm1zKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCk7CiAjZW5kaWYKIAogLyoKQEAgLTUxMSw3ICs1MTQsNyBAQAogICAgIGlmICgqZXJyb3IpCiAgICAgewogI2lmZGVmIFVTRV9TSU9VWAotCXByaW50ZiAoImZuYW1lX2Zyb21fQUVEZXNjOiBBRUNvdW50SXRlbXMgZXJyb3I6ICVkXG4iLCBlcnJvcik7CisJcHJpbnRmKCJmbmFtZV9mcm9tX0FFRGVzYzogQUVDb3VudEl0ZW1zIGVycm9yOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCiAJcmV0dXJuKGZuYW1lcyk7CiAgICAgfQpAQCAtNTM1LDEzICs1MzgsMTMgQEAKIAkgICAgLyogQ2FsbGVyIGlzIGFibGUgdG8gY2xlYW4gdXAgKi8KIAkgICAgLyogVE9ETzogU2hvdWxkIGJlIGNsZWFuIHVwIG9yIG5vdD8gRm9yIHNhZmV0eS4gKi8KICNpZmRlZiBVU0VfU0lPVVgKLQkgICAgcHJpbnRmICgiYWV2dF9vZG9jOiBBRUdldE50aFB0ciBlcnJvcjogJWRcbiIsIG5ld0Vycm9yKTsKKwkgICAgcHJpbnRmKCJhZXZ0X29kb2M6IEFFR2V0TnRoUHRyIGVycm9yOiAlZFxuIiwgbmV3RXJyb3IpOwogI2VuZGlmCiAJICAgIHJldHVybihmbmFtZXMpOwogCX0KIAogCS8qIENvbnZlcnQgdGhlIEZTU3BlYyB0byBhIHBhdGhuYW1lICovCi0JZm5hbWVzW2ZpbGVDb3VudCAtIDFdID0gRnVsbFBhdGhGcm9tRlNTcGVjX3NhdmUgKGZpbGVUb09wZW4pOworCWZuYW1lc1tmaWxlQ291bnQgLSAxXSA9IEZ1bGxQYXRoRnJvbUZTU3BlY19zYXZlKGZpbGVUb09wZW4pOwogICAgIH0KIAogICAgIHJldHVybiAoZm5hbWVzKTsKQEAgLTU3NCw3ICs1NzcsNyBAQAogICogV2hlbiB0aGUgZWRpdG9yIHJlY2VpdmVzIHRoaXMgZXZlbnQsIGRldGVybWluZSB3aGV0aGVyIHRoZSBzcGVjaWZpZWQKICAqIGZpbGUgaXMgb3Blbi4gSWYgaXQgaXMsIHJldHVybiB0aGUgbW9kaWZpY2F0aW9uIGRhdGUvdGltZSBmb3IgdGhhdCBmaWxlCiAgKiBpbiB0aGUgYXBwcm9wcmlhdGUgbG9jYXRpb24gc3BlY2lmaWVkIGluIHRoZSBzdHJ1Y3R1cmUuIElmIHRoZSBmaWxlIGlzCi0gKiBub3Qgb3BlbmVkLCBwdXQgdGhlIHZhbHVlIGZuZkVyciAoZmlsZSBub3QgZm91bmQpIGluIHRoYXQgbG9jYXRpb24uCisgKiBub3Qgb3BlbmVkLCBwdXQgdGhlIHZhbHVlIGZuZkVycihmaWxlIG5vdCBmb3VuZCkgaW4gdGhhdCBsb2NhdGlvbi4KICAqCiAgKi8KIApAQCAtNTkxLDcgKzU5NCw4IEBACiAjIHByYWdtYSBvcHRpb25zIGFsaWduPXJlc2V0CiAjZW5kaWYKIAotcGFzY2FsIE9TRXJyIEhhbmRsZV9LQUhMX1NSQ0hfQUUgKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCwgQXBwbGVFdmVudCAqdGhlUmVwbHksIGxvbmcgcmVmQ29uKQorICAgIHBhc2NhbCBPU0VycgorSGFuZGxlX0tBSExfU1JDSF9BRShjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKIHsKICAgICBPU0VycgllcnJvciA9IG5vRXJyOwogICAgIGJ1Zl9UCSpidWY7CkBAIC02MDQsMTYgKzYwOCwxNiBAQAogICAgIGlmIChlcnJvcikKICAgICB7CiAjaWZkZWYgVVNFX1NJT1VYCi0JcHJpbnRmICgiS0FITF9TUkNIOiBBRUdldFBhcmFtUHRyIGVycm9yOiAlZFxuIiwgZXJyb3IpOworCXByaW50ZigiS0FITF9TUkNIOiBBRUdldFBhcmFtUHRyIGVycm9yOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCiAJcmV0dXJuKGVycm9yKTsKICAgICB9CiAKLSAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zICh0aGVBRXZlbnQpOworICAgIGVycm9yID0gSGFuZGxlVW51c2VkUGFybXModGhlQUV2ZW50KTsKICAgICBpZiAoZXJyb3IpCiAgICAgewogI2lmZGVmIFVTRV9TSU9VWAotCXByaW50ZiAoIktBSExfU1JDSDogSGFuZGxlVW51c2VkUGFybXMgZXJyb3I6ICVkXG4iLCBlcnJvcik7CisJcHJpbnRmKCJLQUhMX1NSQ0g6IEhhbmRsZVVudXNlZFBhcm1zIGVycm9yOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCiAJcmV0dXJuKGVycm9yKTsKICAgICB9CkBAIC02MzQsMTAgKzYzOCwxMCBAQAogCSpTZWFyY2hEYXRhLnRoZURhdGUgPSBidWYtPmJfbXRpbWU7CiAKICNpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJLQUhMX1NSQ0g6IGZpbGUgXCIlI3NcIiB7JWR9IiwgU2VhcmNoRGF0YS50aGVGaWxlLm5hbWUsU2VhcmNoRGF0YS50aGVGaWxlLnBhcklEKTsKKyAgICBwcmludGYoIktBSExfU1JDSDogZmlsZSBcIiUjc1wiIHslZH0iLCBTZWFyY2hEYXRhLnRoZUZpbGUubmFtZSxTZWFyY2hEYXRhLnRoZUZpbGUucGFySUQpOwogICAgIGlmIChmb3VuZEZpbGUgPT0gZmFsc2UpCi0JcHJpbnRmICgiIE5PVCIpOwotICAgIHByaW50ZiAoIiBmb3VuZC4gW2RhdGUgJWx4LCAlbHhdXG4iLCAqU2VhcmNoRGF0YS50aGVEYXRlLCBidWYtPmJfbXRpbWVfcmVhZCk7CisJcHJpbnRmKCIgTk9UIik7CisgICAgcHJpbnRmKCIgZm91bmQuIFtkYXRlICVseCwgJWx4XVxuIiwgKlNlYXJjaERhdGEudGhlRGF0ZSwgYnVmLT5iX210aW1lX3JlYWQpOwogI2VuZGlmCiAKICAgICByZXR1cm4gZXJyb3I7CkBAIC02ODQsNyArNjg4LDggQEAKICMgcHJhZ21hIG9wdGlvbnMgYWxpZ249cmVzZXQKICNlbmRpZgogCi1wYXNjYWwgT1NFcnIgSGFuZGxlX0tBSExfTU9EX0FFIChjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKKyAgICBwYXNjYWwgT1NFcnIKK0hhbmRsZV9LQUhMX01PRF9BRShjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKIHsKICAgICBPU0VycgllcnJvciA9IG5vRXJyOwogICAgIEFFRGVzY0xpc3QJcmVwbHlMaXN0OwpAQCAtNjk0LDExICs2OTksMTEgQEAKIAogICAgIHRoZUZpbGUuc2F2ZWQgPSAwOwogCi0gICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyAodGhlQUV2ZW50KTsKKyAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zKHRoZUFFdmVudCk7CiAgICAgaWYgKGVycm9yKQogICAgIHsKICNpZmRlZiBVU0VfU0lPVVgKLQlwcmludGYgKCJLQUhMX01PRDogSGFuZGxlVW51c2VkUGFybXMgZXJyb3I6ICVkXG4iLCBlcnJvcik7CisJcHJpbnRmKCJLQUhMX01PRDogSGFuZGxlVW51c2VkUGFybXMgZXJyb3I6ICVkXG4iLCBlcnJvcik7CiAjZW5kaWYKIAlyZXR1cm4oZXJyb3IpOwogICAgIH0KQEAgLTcxMiw3ICs3MTcsNyBAQAogICAgIGlmIChlcnJvcikKICAgICB7CiAjaWZkZWYgVVNFX1NJT1VYCi0JcHJpbnRmICgiS0FITF9NT0Q6IEFFQ3JlYXRlTGlzdCBlcnJvcjogJWRcbiIsIGVycm9yKTsKKwlwcmludGYoIktBSExfTU9EOiBBRUNyZWF0ZUxpc3QgZXJyb3I6ICVkXG4iLCBlcnJvcik7CiAjZW5kaWYKIAlyZXR1cm4oZXJyb3IpOwogICAgIH0KQEAgLTcyMCwxMiArNzI1LDEyIEBACiAjaWYgMAogICAgIGVycm9yID0gQUVDb3VudEl0ZW1zKCZyZXBseUxpc3QsICZudW1GaWxlcyk7CiAjaWZkZWYgVVNFX1NJT1VYCi0gICAgcHJpbnRmICgiS0FITF9NT0QgUmVwbHlMaXN0OiAleCAleFxuIiwgcmVwbHlMaXN0LmRlc2NyaXB0b3JUeXBlLCByZXBseUxpc3QuZGF0YUhhbmRsZSk7Ci0gICAgcHJpbnRmICgiS0FITF9NT0QgSXRlbUluTGlzdDogJWRcbiIsIG51bUZpbGVzKTsKKyAgICBwcmludGYoIktBSExfTU9EIFJlcGx5TGlzdDogJXggJXhcbiIsIHJlcGx5TGlzdC5kZXNjcmlwdG9yVHlwZSwgcmVwbHlMaXN0LmRhdGFIYW5kbGUpOworICAgIHByaW50ZigiS0FITF9NT0QgSXRlbUluTGlzdDogJWRcbiIsIG51bUZpbGVzKTsKICNlbmRpZgogCi0gICAgLyogQUVQdXRLZXlEZXNjICgmcmVwbHlMaXN0LCBrZXlBRVBuamVjdCwgJmFEZXNjKQotICAgICAqIEFFUHV0S2V5UHRyICAoJnJlcGx5TGlzdCwga2V5QUVQb3NpdGlvbiwgdHlwZUNoYXIsIChQdHIpJnRoZVR5cGUsCisgICAgLyogQUVQdXRLZXlEZXNjKCZyZXBseUxpc3QsIGtleUFFUG5qZWN0LCAmYURlc2MpCisgICAgICogQUVQdXRLZXlQdHIoJnJlcGx5TGlzdCwga2V5QUVQb3NpdGlvbiwgdHlwZUNoYXIsIChQdHIpJnRoZVR5cGUsCiAgICAgICogc2l6ZW9mKERlc2NUeXBlKSkKICAgICAgKi8KIApAQCAtNzM5LDM3ICs3NDQsMzcgQEAKIAkgICAgLyogQWRkIHRoaXMgZmlsZSB0byB0aGUgbGlzdCAqLwogCSAgICB0aGVGaWxlLnRoZUZpbGUgPSBidWYtPmJfRlNTcGVjOwogCSAgICB0aGVGaWxlLnRoZURhdGUgPSBidWYtPmJfbXRpbWU7Ci0vKgkgICAgdGhlRmlsZS50aGVEYXRlID0gdGltZSAoTlVMTCkgJiAodGltZV90KSAweEZGRkZGRkYwOyAqLwotCSAgICBlcnJvciA9IEFFUHV0UHRyICgmcmVwbHlMaXN0LCBudW1GaWxlcywgdHlwZUNoYXIsIChQdHIpICZ0aGVGaWxlLCBzaXplb2YodGhlRmlsZSkpOworLyoJICAgIHRoZUZpbGUudGhlRGF0ZSA9IHRpbWUoTlVMTCkgJiAodGltZV90KSAweEZGRkZGRkYwOyAqLworCSAgICBlcnJvciA9IEFFUHV0UHRyKCZyZXBseUxpc3QsIG51bUZpbGVzLCB0eXBlQ2hhciwgKFB0cikgJnRoZUZpbGUsIHNpemVvZih0aGVGaWxlKSk7CiAjaWZkZWYgVVNFX1NJT1VYCiAJICAgIGlmIChudW1GaWxlcyA9PSAwKQotCQlwcmludGYgKCJLQUhMX01PRDogIik7CisJCXByaW50ZigiS0FITF9NT0Q6ICIpOwogCSAgICBlbHNlCi0JCXByaW50ZiAoIiwgIik7Ci0JICAgIHByaW50ZiAoIlwiJSNzXCIgeyVkfSBbZGF0ZSAlbHgsICVseF0iLCB0aGVGaWxlLnRoZUZpbGUubmFtZSwgdGhlRmlsZS50aGVGaWxlLnBhcklELCB0aGVGaWxlLnRoZURhdGUsIGJ1Zi0+Yl9tdGltZV9yZWFkKTsKKwkJcHJpbnRmKCIsICIpOworCSAgICBwcmludGYoIlwiJSNzXCIgeyVkfSBbZGF0ZSAlbHgsICVseF0iLCB0aGVGaWxlLnRoZUZpbGUubmFtZSwgdGhlRmlsZS50aGVGaWxlLnBhcklELCB0aGVGaWxlLnRoZURhdGUsIGJ1Zi0+Yl9tdGltZV9yZWFkKTsKIAkgICAgaWYgKGVycm9yKQotCQlwcmludGYgKCIgKCVkKSIsIGVycm9yKTsKKwkJcHJpbnRmKCIgKCVkKSIsIGVycm9yKTsKIAkgICAgbnVtRmlsZXMrKzsKICNlbmRpZgogCX07CiAKICNpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJcbiIpOworICAgIHByaW50ZigiXG4iKTsKICNlbmRpZgogCiAjaWYgMAogICAgIGVycm9yID0gQUVDb3VudEl0ZW1zKCZyZXBseUxpc3QsICZudW1GaWxlcyk7CiAjaWZkZWYgVVNFX1NJT1VYCi0gICAgcHJpbnRmICgiS0FITF9NT0QgSXRlbUluTGlzdDogJWRcbiIsIG51bUZpbGVzKTsKKyAgICBwcmludGYoIktBSExfTU9EIEl0ZW1Jbkxpc3Q6ICVkXG4iLCBudW1GaWxlcyk7CiAjZW5kaWYKICNlbmRpZgogCiAgICAgLyogV2UgY2FuIGFkZCBkYXRhIG9ubHkgaWYgc29tZXRoaW5nIHRvIHJlcGx5ICovCi0gICAgZXJyb3IgPSBBRVB1dFBhcmFtRGVzYyAodGhlUmVwbHksIGtleURpcmVjdE9iamVjdCwgJnJlcGx5TGlzdCk7CisgICAgZXJyb3IgPSBBRVB1dFBhcmFtRGVzYyh0aGVSZXBseSwga2V5RGlyZWN0T2JqZWN0LCAmcmVwbHlMaXN0KTsKIAogI2lmZGVmIFVTRV9TSU9VWAogICAgIGlmIChlcnJvcikKLQlwcmludGYgKCJLQUhMX01PRDogQUVQdXRQYXJhbURlc2MgZXJyb3I6ICVkXG4iLCBlcnJvcik7CisJcHJpbnRmKCJLQUhMX01PRDogQUVQdXRQYXJhbURlc2MgZXJyb3I6ICVkXG4iLCBlcnJvcik7CiAjZW5kaWYKIAogICAgIGlmIChyZXBseUxpc3QuZGF0YUhhbmRsZSkKQEAgLTgxOSw3ICs4MjQsOCBAQAogIyBwcmFnbWEgb3B0aW9ucyBhbGlnbj1yZXNldAogI2VuZGlmCiAKLXBhc2NhbCBPU0VyciBIYW5kbGVfS0FITF9HVFRYX0FFIChjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKKyAgICBwYXNjYWwgT1NFcnIKK0hhbmRsZV9LQUhMX0dUVFhfQUUoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCiB7CiAgICAgT1NFcnIJZXJyb3IgPSBub0VycjsKICAgICBidWZfVAkqYnVmOwpAQCAtODM5LDcgKzg0NSw3IEBACiAgICAgaWYgKGVycm9yKQogICAgIHsKICNpZmRlZiBVU0VfU0lPVVgKLQlwcmludGYgKCJLQUhMX0dUVFg6IEFFR2V0UGFyYW1QdHIgZXJyb3I6ICVkXG4iLCBlcnJvcik7CisJcHJpbnRmKCJLQUhMX0dUVFg6IEFFR2V0UGFyYW1QdHIgZXJyb3I6ICVkXG4iLCBlcnJvcik7CiAjZW5kaWYKIAlyZXR1cm4oZXJyb3IpOwogICAgIH0KQEAgLTg1NCw3ICs4NjAsNyBAQAogCiAgICAgaWYgKGZvdW5kRmlsZSkKICAgICB7Ci0JQnVmZmVyU2l6ZSA9IDA7IC8qIEdldEhhbmRsZVNpemUgKEdldFRleHREYXRhLnRoZVRleHQpOyAqLworCUJ1ZmZlclNpemUgPSAwOyAvKiBHZXRIYW5kbGVTaXplKEdldFRleHREYXRhLnRoZVRleHQpOyAqLwogCWZvciAobGluZW5vID0gMDsgbGluZW5vIDw9IGJ1Zi0+Yl9tbC5tbF9saW5lX2NvdW50OyBsaW5lbm8rKykKIAl7CiAJICAgIC8qIE11c3QgdXNlIHRoZSByaWdodCBidWZmZXIgKi8KQEAgLTg2Myw0OCArODY5LDQ4IEBACiAJICAgIGxpbmVTdGFydCA9IEJ1ZmZlclNpemU7CiAJICAgIEJ1ZmZlclNpemUgKz0gbGluZXNpemU7CiAJICAgIC8qIFJlc2l6ZSBoYW5kbGUgdG8gbGluZXNpemUrMSB0byBpbmNsdWRlIHRoZSBsaW5lZmVlZCAqLwotCSAgICBTZXRIYW5kbGVTaXplIChHZXRUZXh0RGF0YS50aGVUZXh0LCBCdWZmZXJTaXplKTsKLQkgICAgaWYgKEdldEhhbmRsZVNpemUgKEdldFRleHREYXRhLnRoZVRleHQpICE9IEJ1ZmZlclNpemUpCisJICAgIFNldEhhbmRsZVNpemUoR2V0VGV4dERhdGEudGhlVGV4dCwgQnVmZmVyU2l6ZSk7CisJICAgIGlmIChHZXRIYW5kbGVTaXplKEdldFRleHREYXRhLnRoZVRleHQpICE9IEJ1ZmZlclNpemUpCiAJICAgIHsKIAkjaWZkZWYgVVNFX1NJT1VYCi0JCXByaW50ZiAoIktBSExfR1RUWDogU2V0SGFuZGxlU2l6ZSBpbmNyZWFzZTogJWQsIHNpemUgJWRcbiIsCisJCXByaW50ZigiS0FITF9HVFRYOiBTZXRIYW5kbGVTaXplIGluY3JlYXNlOiAlZCwgc2l6ZSAlZFxuIiwKIAkJCWxpbmVzaXplLCBCdWZmZXJTaXplKTsKIAkjZW5kaWYKIAkJYnJlYWs7IC8qIFNpbXBsZSBoYW5kbGluZyBmb3Igbm93ICovCiAJICAgIH0KIAkgICAgZWxzZQogCSAgICB7Ci0JCUhMb2NrIChHZXRUZXh0RGF0YS50aGVUZXh0KTsKKwkJSExvY2soR2V0VGV4dERhdGEudGhlVGV4dCk7CiAJCWZ1bGxidWZmZXIgPSAoY2hhcl91ICopICpHZXRUZXh0RGF0YS50aGVUZXh0OwotCQlTVFJDUFkgKChjaGFyX3UgKikgKGZ1bGxidWZmZXIgKyBsaW5lU3RhcnQpLCBsaW5lKTsKKwkJU1RSQ1BZKChjaGFyX3UgKikoZnVsbGJ1ZmZlciArIGxpbmVTdGFydCksIGxpbmUpOwogCQlmdWxsYnVmZmVyW0J1ZmZlclNpemUtMV0gPSAnXHInOwotCQlIVW5sb2NrIChHZXRUZXh0RGF0YS50aGVUZXh0KTsKKwkJSFVubG9jayhHZXRUZXh0RGF0YS50aGVUZXh0KTsKIAkgICAgfQogCX0KIAlpZiAoZnVsbGJ1ZmZlciAhPSBOVUxMKQogCXsKLQkgICAgSExvY2sgKEdldFRleHREYXRhLnRoZVRleHQpOworCSAgICBITG9jayhHZXRUZXh0RGF0YS50aGVUZXh0KTsKIAkgICAgZnVsbGJ1ZmZlcltCdWZmZXJTaXplLTFdID0gMDsKLQkgICAgSFVubG9jayAoR2V0VGV4dERhdGEudGhlVGV4dCk7CisJICAgIEhVbmxvY2soR2V0VGV4dERhdGEudGhlVGV4dCk7CiAJfQogCWlmIChmb3VuZEZpbGUgPT0gZmFsc2UpCiAJICAgICpHZXRUZXh0RGF0YS50aGVEYXRlID0gZm5mRXJyOwogCWVsc2UKLS8qCSAgICAqR2V0VGV4dERhdGEudGhlRGF0ZSA9IHRpbWUgKE5VTEwpICYgKHRpbWVfdCkgMHhGRkZGRkZGMDsqLworLyoJICAgICpHZXRUZXh0RGF0YS50aGVEYXRlID0gdGltZShOVUxMKSAmICh0aW1lX3QpIDB4RkZGRkZGRjA7Ki8KIAkgICAgKkdldFRleHREYXRhLnRoZURhdGUgPSBidWYtPmJfbXRpbWU7CiAgICAgfQogI2lmZGVmIFVTRV9TSU9VWAotICAgIHByaW50ZiAoIktBSExfR1RUWDogZmlsZSBcIiUjc1wiIHslZH0gW2RhdGUgJWx4LCAlbHhdIiwgR2V0VGV4dERhdGEudGhlRmlsZS5uYW1lLCBHZXRUZXh0RGF0YS50aGVGaWxlLnBhcklELCAqR2V0VGV4dERhdGEudGhlRGF0ZSwgYnVmLT5iX210aW1lX3JlYWQpOworICAgIHByaW50ZigiS0FITF9HVFRYOiBmaWxlIFwiJSNzXCIgeyVkfSBbZGF0ZSAlbHgsICVseF0iLCBHZXRUZXh0RGF0YS50aGVGaWxlLm5hbWUsIEdldFRleHREYXRhLnRoZUZpbGUucGFySUQsICpHZXRUZXh0RGF0YS50aGVEYXRlLCBidWYtPmJfbXRpbWVfcmVhZCk7CiAgICAgaWYgKGZvdW5kRmlsZSA9PSBmYWxzZSkKLQlwcmludGYgKCIgTk9UIik7Ci0gICAgcHJpbnRmICgiIGZvdW5kLiAoQnVmZmVyU2l6ZSA9ICVkKVxuIiwgQnVmZmVyU2l6ZSk7CisJcHJpbnRmKCIgTk9UIik7CisgICAgcHJpbnRmKCIgZm91bmQuIChCdWZmZXJTaXplID0gJWQpXG4iLCBCdWZmZXJTaXplKTsKICNlbmRpZgogCi0gICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyAodGhlQUV2ZW50KTsKKyAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zKHRoZUFFdmVudCk7CiAgICAgaWYgKGVycm9yKQogICAgIHsKICNpZmRlZiBVU0VfU0lPVVgKLQlwcmludGYgKCJLQUhMX0dUVFg6IEhhbmRsZVVudXNlZFBhcm1zIGVycm9yOiAlZFxuIiwgZXJyb3IpOworCXByaW50ZigiS0FITF9HVFRYOiBIYW5kbGVVbnVzZWRQYXJtcyBlcnJvcjogJWRcbiIsIGVycm9yKTsKICNlbmRpZgogCXJldHVybihlcnJvcik7CiAgICAgfQpAQCAtOTE3LDQ4ICs5MjMsNDUgQEAKICAqLwogCiAvKiBUYWtlbiBmcm9tIE1vcmVBcHBsZUV2ZW50czpQcm9jZXNzSGVscGVycyovCi1wYXNjYWwJT1NFcnIJRmluZFByb2Nlc3NCeVNpZ25hdHVyZSggY29uc3QgT1NUeXBlIHRhcmdldFR5cGUsCitwYXNjYWwJT1NFcnIJRmluZFByb2Nlc3NCeVNpZ25hdHVyZShjb25zdCBPU1R5cGUgdGFyZ2V0VHlwZSwKIAkJCQkJY29uc3QgT1NUeXBlIHRhcmdldENyZWF0b3IsCi0JCQkJCSAgICAgIFByb2Nlc3NTZXJpYWxOdW1iZXJQdHIgcHNuUHRyICkKKwkJCQkJICAgICAgUHJvY2Vzc1NlcmlhbE51bWJlclB0ciBwc25QdHIpCiB7CiAgICAgT1NFcnIJYW5FcnIgPSBub0VycjsKICAgICBCb29sZWFuCWxvb2tpbmdGb3JQcm9jZXNzID0gdHJ1ZTsKIAogICAgIFByb2Nlc3NJbmZvUmVjICBpbmZvUmVjOwogCi0gICAgaW5mb1JlYy5wcm9jZXNzSW5mb0xlbmd0aCA9IHNpemVvZiggUHJvY2Vzc0luZm9SZWMgKTsKKyAgICBpbmZvUmVjLnByb2Nlc3NJbmZvTGVuZ3RoID0gc2l6ZW9mKFByb2Nlc3NJbmZvUmVjKTsKICAgICBpbmZvUmVjLnByb2Nlc3NOYW1lID0gbmlsOwogICAgIGluZm9SZWMucHJvY2Vzc0FwcFNwZWMgPSBuaWw7CiAKICAgICBwc25QdHItPmxvd0xvbmdPZlBTTiA9IGtOb1Byb2Nlc3M7CiAgICAgcHNuUHRyLT5oaWdoTG9uZ09mUFNOID0ga05vUHJvY2VzczsKIAotICAgIHdoaWxlICggbG9va2luZ0ZvclByb2Nlc3MgKQorICAgIHdoaWxlIChsb29raW5nRm9yUHJvY2VzcykKICAgICB7Ci0JYW5FcnIgPSBHZXROZXh0UHJvY2VzcyggcHNuUHRyICk7Ci0JaWYgKCBhbkVyciAhPSBub0VyciApCi0JeworCWFuRXJyID0gR2V0TmV4dFByb2Nlc3MocHNuUHRyKTsKKwlpZiAoYW5FcnIgIT0gbm9FcnIpCiAJICAgIGxvb2tpbmdGb3JQcm9jZXNzID0gZmFsc2U7Ci0JfQogCWVsc2UKIAl7Ci0JICAgIGFuRXJyID0gR2V0UHJvY2Vzc0luZm9ybWF0aW9uKCBwc25QdHIsICZpbmZvUmVjICk7Ci0JICAgIGlmICggKCBhbkVyciA9PSBub0VyciApCi0JCSAmJiAoIGluZm9SZWMucHJvY2Vzc1R5cGUgPT0gdGFyZ2V0VHlwZSApCi0JCSAmJiAoIGluZm9SZWMucHJvY2Vzc1NpZ25hdHVyZSA9PSB0YXJnZXRDcmVhdG9yICkgKQotCSAgICB7CisJICAgIGFuRXJyID0gR2V0UHJvY2Vzc0luZm9ybWF0aW9uKHBzblB0ciwgJmluZm9SZWMpOworCSAgICBpZiAoKGFuRXJyID09IG5vRXJyKQorCQkgICAgJiYgKGluZm9SZWMucHJvY2Vzc1R5cGUgPT0gdGFyZ2V0VHlwZSkKKwkJICAgICYmIChpbmZvUmVjLnByb2Nlc3NTaWduYXR1cmUgPT0gdGFyZ2V0Q3JlYXRvcikpCiAJCWxvb2tpbmdGb3JQcm9jZXNzID0gZmFsc2U7Ci0JICAgIH0KIAl9CiAgICAgfQogCiAgICAgcmV0dXJuIGFuRXJyOwogfS8vZW5kIEZpbmRQcm9jZXNzQnlTaWduYXR1cmUKIAotdm9pZCBTZW5kX0tBSExfTU9EX0FFIChidWZfVCAqYnVmKQorICAgIHZvaWQKK1NlbmRfS0FITF9NT0RfQUUoYnVmX1QgKmJ1ZikKIHsKLSAgICBPU0VyciAgIGFuRXJyID0gbm9FcnI7Ci0gICAgQUVEZXNjICB0YXJnZXRBcHBEZXNjID0geyB0eXBlTnVsbCwgbmlsIH07CisgICAgT1NFcnIJYW5FcnIgPSBub0VycjsKKyAgICBBRURlc2MJdGFyZ2V0QXBwRGVzYyA9IHsgdHlwZU51bGwsIG5pbCB9OwogICAgIFByb2Nlc3NTZXJpYWxOdW1iZXIJICAgIHBzbiA9IHsga05vUHJvY2Vzcywga05vUHJvY2VzcyB9OwogICAgIEFwcGxlRXZlbnQJdGhlUmVwbHkgPSB7IHR5cGVOdWxsLCBuaWwgfTsKICAgICBBRVNlbmRNb2RlCXNlbmRNb2RlOwpAQCAtOTY3LDQ4ICs5NzAsNDggQEAKICAgICBNb2RpZmljYXRpb25JbmZvIE1vZERhdGE7CiAKIAotICAgIGFuRXJyID0gRmluZFByb2Nlc3NCeVNpZ25hdHVyZSggJ0FQUEwnLCAnQ1dJRScsICZwc24gKTsKKyAgICBhbkVyciA9IEZpbmRQcm9jZXNzQnlTaWduYXR1cmUoJ0FQUEwnLCAnQ1dJRScsICZwc24pOwogI2lmZGVmIFVTRV9TSU9VWAotICAgIHByaW50ZiAoIkNvZGVXYXJyaW9yIGlzIik7CisgICAgcHJpbnRmKCJDb2RlV2FycmlvciBpcyIpOwogICAgIGlmIChhbkVyciAhPSBub0VycikKLQlwcmludGYgKCIgTk9UIik7Ci0gICAgcHJpbnRmICgiIHJ1bm5pbmdcbiIpOworCXByaW50ZigiIE5PVCIpOworICAgIHByaW50ZigiIHJ1bm5pbmdcbiIpOwogI2VuZGlmCi0gICAgaWYgKCBhbkVyciA9PSBub0VyciApCisgICAgaWYgKGFuRXJyID09IG5vRXJyKQogICAgIHsKLQlhbkVyciA9IEFFQ3JlYXRlRGVzYyAodHlwZVByb2Nlc3NTZXJpYWxOdW1iZXIsICZwc24sCi0JCQkgICAgICBzaXplb2YoIFByb2Nlc3NTZXJpYWxOdW1iZXIgKSwgJnRhcmdldEFwcERlc2MpOworCWFuRXJyID0gQUVDcmVhdGVEZXNjKHR5cGVQcm9jZXNzU2VyaWFsTnVtYmVyLCAmcHNuLAorCQkJICAgICAgc2l6ZW9mKFByb2Nlc3NTZXJpYWxOdW1iZXIpLCAmdGFyZ2V0QXBwRGVzYyk7CiAKLQlpZiAoIGFuRXJyID09IG5vRXJyICkKKwlpZiAoYW5FcnIgPT0gbm9FcnIpCiAJewogCSAgICBhbkVyciA9IEFFQ3JlYXRlQXBwbGVFdmVudCggJ0tBSEwnLCAnTU9EICcsICZ0YXJnZXRBcHBEZXNjLAogCQkJCQlrQXV0b0dlbmVyYXRlUmV0dXJuSUQsIGtBbnlUcmFuc2FjdGlvbklELCAmdGhlRXZlbnQpOwogCX0KIAotCUFFRGlzcG9zZURlc2MoICZ0YXJnZXRBcHBEZXNjICk7CisJQUVEaXNwb3NlRGVzYygmdGFyZ2V0QXBwRGVzYyk7CiAKIAkvKiBBZGQgdGhlIHBhcm1zICovCiAJTW9kRGF0YS50aGVGaWxlID0gYnVmLT5iX0ZTU3BlYzsKIAlNb2REYXRhLnRoZURhdGUgPSBidWYtPmJfbXRpbWU7CiAKIAlpZiAoYW5FcnIgPT0gbm9FcnIpCi0JICAgIGFuRXJyID1BRVB1dFBhcmFtUHRyICgmdGhlRXZlbnQsIGtleURpcmVjdE9iamVjdCwgdHlwZUNoYXIsICZNb2REYXRhLCBzaXplb2YoTW9kRGF0YSkpOworCSAgICBhbkVyciA9IEFFUHV0UGFyYW1QdHIoJnRoZUV2ZW50LCBrZXlEaXJlY3RPYmplY3QsIHR5cGVDaGFyLCAmTW9kRGF0YSwgc2l6ZW9mKE1vZERhdGEpKTsKIAotCWlmICggaWRsZVByb2NVUFAgPT0gbmlsICkKKwlpZiAoaWRsZVByb2NVUFAgPT0gbmlsKQogCSAgICBzZW5kTW9kZSA9IGtBRU5vUmVwbHk7CiAJZWxzZQogCSAgICBzZW5kTW9kZSA9IGtBRVdhaXRSZXBseTsKIAotCWlmICggYW5FcnIgPT0gbm9FcnIgKQotCSAgICBhbkVyciA9IEFFU2VuZCggJnRoZUV2ZW50LCAmdGhlUmVwbHksIHNlbmRNb2RlLCBrQUVOb3JtYWxQcmlvcml0eSwga05vVGltZU91dCwgaWRsZVByb2NVUFAsIG5pbCApOwotCWlmICggYW5FcnIgPT0gbm9FcnIgICYmICBzZW5kTW9kZSA9PSBrQUVXYWl0UmVwbHkgKQorCWlmIChhbkVyciA9PSBub0VycikKKwkgICAgYW5FcnIgPSBBRVNlbmQoJnRoZUV2ZW50LCAmdGhlUmVwbHksIHNlbmRNb2RlLCBrQUVOb3JtYWxQcmlvcml0eSwga05vVGltZU91dCwgaWRsZVByb2NVUFAsIG5pbCk7CisJaWYgKGFuRXJyID09IG5vRXJyICAmJiAgc2VuZE1vZGUgPT0ga0FFV2FpdFJlcGx5KQogCXsKICNpZmRlZiBVU0VfU0lPVVgKLQkgICAgcHJpbnRmICgiS0FITF9NT0Q6IFNlbmQgZXJyb3I6ICVkXG4iLCBhbkVycik7CisJICAgIHByaW50ZigiS0FITF9NT0Q6IFNlbmQgZXJyb3I6ICVkXG4iLCBhbkVycik7CiAjZW5kaWYKLS8qCSAgICBhbkVyciA9ICBBRUhHZXRIYW5kbGVyRXJyb3IoICZ0aGVSZXBseSApOyovCisvKgkgICAgYW5FcnIgPSAgQUVIR2V0SGFuZGxlckVycm9yKCZ0aGVSZXBseSk7Ki8KIAl9Ci0JKHZvaWQpIEFFRGlzcG9zZURlc2MoICZ0aGVSZXBseSApOworCSh2b2lkKSBBRURpc3Bvc2VEZXNjKCZ0aGVSZXBseSk7CiAgICAgfQogfQogI2VuZGlmIC8qIEZFQVRfQ1dfRURJVE9SICovCkBAIC0xMDI0LDcgKzEwMjcsOCBAQAogICogSGFuZGxlIHRoZSBVbnVzZWQgcGFybXMgb2YgYW4gQXBwbGVFdmVudAogICovCiAKLU9TRXJyIEhhbmRsZVVudXNlZFBhcm1zIChjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQpCisgICAgT1NFcnIKK0hhbmRsZVVudXNlZFBhcm1zKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCkKIHsKICAgICBPU0VycgllcnJvcjsKICAgICBsb25nCWFjdHVhbFNpemU7CkBAIC0xMDg2LDcgKzEwOTAsOCBAQAogICAgZW5kUmFuZ2UgYXJlIGFsbCBuZWdhdGl2ZSwgdGhlcmUgaXMgbm8gc2VsZWN0aW9uIHJhbmdlIHNwZWNpZmllZC4KICAqLwogCi1wYXNjYWwgT1NFcnIgSGFuZGxlT0RvY0FFIChjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKKyAgICBwYXNjYWwgT1NFcnIKK0hhbmRsZU9Eb2NBRShjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKIHsKICAgICAvKgogICAgICAqIFRPRE86IENsZWFuIHVwIHRoZSBjb2RlIHdpdGggY29udmVydCB0aGUgQXBwbGVFdmVudCBpbnRvCkBAIC0xMTA3LDcgKzExMTIsNyBAQAogICAgIGxvbmcJbG51bTsKIAogI2lmZGVmIFVTRV9TSU9VWAotICAgIHByaW50ZiAoImFldnRfb2RvYzpcbiIpOworICAgIHByaW50ZigiYWV2dF9vZG9jOlxuIik7CiAjZW5kaWYKIAogICAgIC8qIHRoZSBkaXJlY3Qgb2JqZWN0IHBhcmFtZXRlciBpcyB0aGUgbGlzdCBvZiBhbGlhc2VzIHRvIGZpbGVzIChvbmUgb3IgbW9yZSkgKi8KQEAgLTExMTUsNyArMTEyMCw3IEBACiAgICAgaWYgKGVycm9yKQogICAgIHsKICNpZmRlZiBVU0VfU0lPVVgKLQlwcmludGYgKCJhZXZ0X29kb2M6IEFFR2V0UGFyYW1EZXNjIGVycm9yOiAlZFxuIiwgZXJyb3IpOworCXByaW50ZigiYWV2dF9vZG9jOiBBRUdldFBhcmFtRGVzYyBlcnJvcjogJWRcbiIsIGVycm9yKTsKICNlbmRpZgogCXJldHVybihlcnJvcik7CiAgICAgfQpAQCAtMTEyOSwxMyArMTEzNCwxMyBAQAogICAgIGlmIChlcnJvcikKICAgICB7CiAjaWZkZWYgVVNFX1NJT1VYCi0JcHJpbnRmICgiYWV2dF9vZG9jOiBBRUdldFBhcmFtUHRyIGVycm9yOiAlZFxuIiwgZXJyb3IpOworCXByaW50ZigiYWV2dF9vZG9jOiBBRUdldFBhcmFtUHRyIGVycm9yOiAlZFxuIiwgZXJyb3IpOwogI2VuZGlmCiAJcmV0dXJuKGVycm9yKTsKICAgICB9CiAKICNpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJhZXZ0X29kb2M6IGxpbmVOdW06ICVkLCBzdGFydFJhbmdlICVkLCBlbmRSYW5nZSAlZCwgW2RhdGUgJWx4XVxuIiwKKyAgICBwcmludGYoImFldnRfb2RvYzogbGluZU51bTogJWQsIHN0YXJ0UmFuZ2UgJWQsIGVuZFJhbmdlICVkLCBbZGF0ZSAlbHhdXG4iLAogCSAgICB0aGVQb3NpdGlvbi5saW5lTnVtLCB0aGVQb3NpdGlvbi5zdGFydFJhbmdlLCB0aGVQb3NpdGlvbi5lbmRSYW5nZSwKIAkgICAgdGhlUG9zaXRpb24udGhlRGF0ZSk7CiAjZW5kaWYKQEAgLTEyMTYsMTEgKzEyMjEsMTEgQEAKICAgZmluaXNoZWQ6CiAgICAgQUVEaXNwb3NlRGVzYygmdGhlTGlzdCk7IC8qIGRpc3Bvc2Ugd2hhdCB3ZSBhbGxvY2F0ZWQgKi8KIAotICAgIGVycm9yID0gSGFuZGxlVW51c2VkUGFybXMgKHRoZUFFdmVudCk7CisgICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyh0aGVBRXZlbnQpOwogICAgIGlmIChlcnJvcikKICAgICB7CiAjaWZkZWYgVVNFX1NJT1VYCi0JcHJpbnRmICgiYWV2dF9vZG9jOiBIYW5kbGVVbnVzZWRQYXJtcyBlcnJvcjogJWRcbiIsIGVycm9yKTsKKwlwcmludGYoImFldnRfb2RvYzogSGFuZGxlVW51c2VkUGFybXMgZXJyb3I6ICVkXG4iLCBlcnJvcik7CiAjZW5kaWYKIAlyZXR1cm4oZXJyb3IpOwogICAgIH0KQEAgLTEyMzEsMTUgKzEyMzYsMTYgQEAKICAqCiAgKi8KIAotcGFzY2FsIE9TRXJyIEhhbmRsZV9hZXZ0X29hcHBfQUUgKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCwgQXBwbGVFdmVudCAqdGhlUmVwbHksIGxvbmcgcmVmQ29uKQorICAgIHBhc2NhbCBPU0VycgorSGFuZGxlX2FldnRfb2FwcF9BRShjb25zdCBBcHBsZUV2ZW50ICp0aGVBRXZlbnQsIEFwcGxlRXZlbnQgKnRoZVJlcGx5LCBsb25nIHJlZkNvbikKIHsKICAgICBPU0VycgllcnJvciA9IG5vRXJyOwogCiAjaWZkZWYgVVNFX1NJT1VYCi0gICAgcHJpbnRmICgiYWV2dF9vYXBwOlxuIik7CisgICAgcHJpbnRmKCJhZXZ0X29hcHA6XG4iKTsKICNlbmRpZgogCi0gICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyAodGhlQUV2ZW50KTsKKyAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zKHRoZUFFdmVudCk7CiAgICAgaWYgKGVycm9yKQogICAgIHsKIAlyZXR1cm4oZXJyb3IpOwpAQCAtMTI1MiwxNSArMTI1OCwxNiBAQAogICoKICAqLwogCi1wYXNjYWwgT1NFcnIgSGFuZGxlX2FldnRfcXVpdF9BRSAoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCisgICAgcGFzY2FsIE9TRXJyCitIYW5kbGVfYWV2dF9xdWl0X0FFKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCwgQXBwbGVFdmVudCAqdGhlUmVwbHksIGxvbmcgcmVmQ29uKQogewogICAgIE9TRXJyCWVycm9yID0gbm9FcnI7CiAKICNpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJhZXZ0X3F1aXRcbiIpOworICAgIHByaW50ZigiYWV2dF9xdWl0XG4iKTsKICNlbmRpZgogCi0gICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyAodGhlQUV2ZW50KTsKKyAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zKHRoZUFFdmVudCk7CiAgICAgaWYgKGVycm9yKQogICAgIHsKIAlyZXR1cm4oZXJyb3IpOwpAQCAtMTI3NiwxNSArMTI4MywxNiBAQAogICoKICAqLwogCi1wYXNjYWwgT1NFcnIgSGFuZGxlX2FldnRfcGRvY19BRSAoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCisgICAgcGFzY2FsIE9TRXJyCitIYW5kbGVfYWV2dF9wZG9jX0FFKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCwgQXBwbGVFdmVudCAqdGhlUmVwbHksIGxvbmcgcmVmQ29uKQogewogICAgIE9TRXJyCWVycm9yID0gbm9FcnI7CiAKICNpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJhZXZ0X3Bkb2M6XG4iKTsKKyAgICBwcmludGYoImFldnRfcGRvYzpcbiIpOwogI2VuZGlmCiAKLSAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zICh0aGVBRXZlbnQpOworICAgIGVycm9yID0gSGFuZGxlVW51c2VkUGFybXModGhlQUV2ZW50KTsKICAgICBpZiAoZXJyb3IpCiAgICAgewogCXJldHVybihlcnJvcik7CkBAIC0xMjk4LDE1ICsxMzA2LDE2IEBACiAgKgogICogKEp1c3QgZ2V0IHJpZCBvZiBhbGwgdGhlIHBhcm1zKQogICovCi1wYXNjYWwgT1NFcnIgSGFuZGxlX3Vua25vd25fQUUgKGNvbnN0IEFwcGxlRXZlbnQgKnRoZUFFdmVudCwgQXBwbGVFdmVudCAqdGhlUmVwbHksIGxvbmcgcmVmQ29uKQorICAgIHBhc2NhbCBPU0VycgorSGFuZGxlX3Vua25vd25fQUUoY29uc3QgQXBwbGVFdmVudCAqdGhlQUV2ZW50LCBBcHBsZUV2ZW50ICp0aGVSZXBseSwgbG9uZyByZWZDb24pCiB7CiAgICAgT1NFcnIJZXJyb3IgPSBub0VycjsKIAogI2lmZGVmIFVTRV9TSU9VWAotICAgIHByaW50ZiAoIlVua25vd24gRXZlbnQ6ICV4XG4iLCB0aGVBRXZlbnQtPmRlc2NyaXB0b3JUeXBlKTsKKyAgICBwcmludGYoIlVua25vd24gRXZlbnQ6ICV4XG4iLCB0aGVBRXZlbnQtPmRlc2NyaXB0b3JUeXBlKTsKICNlbmRpZgogCi0gICAgZXJyb3IgPSBIYW5kbGVVbnVzZWRQYXJtcyAodGhlQUV2ZW50KTsKKyAgICBlcnJvciA9IEhhbmRsZVVudXNlZFBhcm1zKHRoZUFFdmVudCk7CiAgICAgaWYgKGVycm9yKQogICAgIHsKIAlyZXR1cm4oZXJyb3IpOwpAQCAtMTMyNCw3ICsxMzMzLDggQEAKIC8qCiAgKiBJbnN0YWxsIHRoZSB2YXJpb3VzIEFwcGxlRXZlbnQgSGFuZGxlcnMKICAqLwotT1NFcnIgICBJbnN0YWxsQUVIYW5kbGVycyAodm9pZCkKKyAgICBPU0VycgorSW5zdGFsbEFFSGFuZGxlcnModm9pZCkKIHsKICAgICBPU0VyciAgIGVycm9yOwogCkBAIC0xNDM4LDcgKzE0NDgsNyBAQAogICogIFJldHVybnMgdGhlIGluZGV4IGluc2lkZSB0aGUgbWVudSB3aGVyCiAgKi8KICAgICBzaG9ydCAvKiBTaG91bGRlIHdlIHJldHVybiBNZW51SXRlbUluZGV4PyAqLwotZ3VpX21hY19nZXRfbWVudV9pdGVtX2luZGV4IChwTWVudSkKK2d1aV9tYWNfZ2V0X21lbnVfaXRlbV9pbmRleChwTWVudSkKICAgICB2aW1tZW51X1QgKnBNZW51OwogewogICAgIHNob3J0CWluZGV4OwpAQCAtMTQ3NSw3ICsxNDg1LDcgQEAKIH0KIAogICAgIHN0YXRpYyB2aW1tZW51X1QgKgotZ3VpX21hY19nZXRfdmltX21lbnUgKG1lbnVJRCwgaXRlbUluZGV4LCBwTWVudSkKK2d1aV9tYWNfZ2V0X3ZpbV9tZW51KG1lbnVJRCwgaXRlbUluZGV4LCBwTWVudSkKICAgICBzaG9ydAltZW51SUQ7CiAgICAgc2hvcnQJaXRlbUluZGV4OwogICAgIHZpbW1lbnVfVAkqcE1lbnU7CkBAIC0xNTI5LDcgKzE1MzksNyBAQAogICovCiAgICAgcGFzY2FsCiAgICAgdm9pZAotZ3VpX21hY19kcmFnX3RodW1iIChDb250cm9sSGFuZGxlIHRoZUNvbnRyb2wsIHNob3J0IHBhcnRDb2RlKQorZ3VpX21hY19kcmFnX3RodW1iKENvbnRyb2xIYW5kbGUgdGhlQ29udHJvbCwgc2hvcnQgcGFydENvZGUpCiB7CiAgICAgc2Nyb2xsYmFyX1QJCSpzYjsKICAgICBpbnQJCQl2YWx1ZSwgZHJhZ2dpbmc7CkBAIC0xNTM4LDEzICsxNTQ4LDEzIEBACiAKICAgICB0aGVDb250cm9sVG9Vc2UgPSBkcmFnZ2VkX3NiOwogCi0gICAgc2IgPSBndWlfZmluZF9zY3JvbGxiYXIoKGxvbmcpIEdldENvbnRyb2xSZWZlcmVuY2UgKHRoZUNvbnRyb2xUb1VzZSkpOworICAgIHNiID0gZ3VpX2ZpbmRfc2Nyb2xsYmFyKChsb25nKSBHZXRDb250cm9sUmVmZXJlbmNlKHRoZUNvbnRyb2xUb1VzZSkpOwogCiAgICAgaWYgKHNiID09IE5VTEwpCiAJcmV0dXJuOwogCiAgICAgLyogTmVlZCB0byBmaW5kIHZhbHVlIGJ5IGRpZmYgYmV0d2VlbiBPbGQgUG9zcyBOZXcgUG9zICovCi0gICAgdmFsdWUgPSBHZXRDb250cm9sMzJCaXRWYWx1ZSAodGhlQ29udHJvbFRvVXNlKTsKKyAgICB2YWx1ZSA9IEdldENvbnRyb2wzMkJpdFZhbHVlKHRoZUNvbnRyb2xUb1VzZSk7CiAgICAgZHJhZ2dpbmcgPSAocGFydENvZGUgIT0gMCk7CiAKICAgICAvKiBXaGVuICJhbGxvd19zY3JvbGxiYXIiIGlzIEZBTFNFIHN0aWxsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIG5ldwpAQCAtMTU1Niw3ICsxNTY2LDcgQEAKIAogICAgIHBhc2NhbAogICAgIHZvaWQKLWd1aV9tYWNfc2Nyb2xsX2FjdGlvbiAoQ29udHJvbEhhbmRsZSB0aGVDb250cm9sLCBzaG9ydCBwYXJ0Q29kZSkKK2d1aV9tYWNfc2Nyb2xsX2FjdGlvbihDb250cm9sSGFuZGxlIHRoZUNvbnRyb2wsIHNob3J0IHBhcnRDb2RlKQogewogICAgIC8qIFRPRE86IGhhdmUgbGl2ZSBzdXBwb3J0ICovCiAgICAgc2Nyb2xsYmFyX1QgKnNiLCAqc2JfaW5mbzsKQEAgLTE1NjYsNyArMTU3Niw3IEBACiAgICAgaW50CQlkcmFnZ2luZyA9IEZBTFNFOwogICAgIGludAkJZG9udF9zY3JvbGxfc2F2ZSA9IGRvbnRfc2Nyb2xsOwogCi0gICAgc2IgPSBndWlfZmluZF9zY3JvbGxiYXIoKGxvbmcpIEdldENvbnRyb2xSZWZlcmVuY2UgKHRoZUNvbnRyb2wpKTsKKyAgICBzYiA9IGd1aV9maW5kX3Njcm9sbGJhcigobG9uZylHZXRDb250cm9sUmVmZXJlbmNlKHRoZUNvbnRyb2wpKTsKIAogICAgIGlmIChzYiA9PSBOVUxMKQogCXJldHVybjsKQEAgLTE2NDgsNyArMTY1OCw3IEBACiAgKiBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgcG90ZW50aWFsIFRPT0xCQVIKICAqLwogICAgIHZvaWQKLWd1aV9tYWNfZG9JbkNvbnRlbnRDbGljayAodGhlRXZlbnQsIHdoaWNoV2luZG93KQorZ3VpX21hY19kb0luQ29udGVudENsaWNrKHRoZUV2ZW50LCB3aGljaFdpbmRvdykKICAgICBFdmVudFJlY29yZCAqdGhlRXZlbnQ7CiAgICAgV2luZG93UHRyCSB3aGljaFdpbmRvdzsKIHsKQEAgLTE2NjAsMTAgKzE2NzAsMTAgQEAKICAgICBzaG9ydAkJZGJsQ2xpY2s7CiAKICAgICB0aGVQb2ludCA9IHRoZUV2ZW50LT53aGVyZTsKLSAgICBHbG9iYWxUb0xvY2FsICgmdGhlUG9pbnQpOwotICAgIFNlbGVjdFdpbmRvdyAod2hpY2hXaW5kb3cpOworICAgIEdsb2JhbFRvTG9jYWwoJnRoZVBvaW50KTsKKyAgICBTZWxlY3RXaW5kb3cod2hpY2hXaW5kb3cpOwogCi0gICAgdGhlUG9ydGlvbiA9IEZpbmRDb250cm9sICh0aGVQb2ludCwgd2hpY2hXaW5kb3csICZ0aGVDb250cm9sKTsKKyAgICB0aGVQb3J0aW9uID0gRmluZENvbnRyb2wodGhlUG9pbnQsIHdoaWNoV2luZG93LCAmdGhlQ29udHJvbCk7CiAKICAgICBpZiAodGhlQ29udHJvbCAhPSBOVUwpCiAgICAgewpAQCAtMTY4NSw3ICsxNjk1LDcgQEAKICNlbmRpZgogCSAgICAvKiBwYXNzIDAgYXMgdGhlIHBhcnQgdG8gdGVsbCBndWlfbWFjX2RyYWdfdGh1bWIsIHRoYXQgdGhlIG1vdXNlCiAJICAgICAqIGJ1dHRvbiBoYXMgYmVlbiByZWxlYXNlZCAqLwotCSAgICBndWlfbWFjX2RyYWdfdGh1bWIgKHRoZUNvbnRyb2wsIDApOyAvKiBTaG91bGQgaXQgYmUgdGhlUG9ydGlvbiA/IChEYW55KSAqLworCSAgICBndWlfbWFjX2RyYWdfdGh1bWIodGhlQ29udHJvbCwgMCk7IC8qIFNob3VsZCBpdCBiZSB0aGVQb3J0aW9uID8gKERhbnkpICovCiAJICAgIGRyYWdnZWRfc2IgPSBOVUxMOwogCX0KICAgICB9CkBAIC0xNzMxLDcgKzE3NDEsNyBAQAogI2VuZGlmCiAjZW5kaWYKIAl7Ci0JICAgIFNldFJlY3QgKCZkcmFnUmVjdCwgRklMTF9YKFhfMl9DT0wodGhlUG9pbnQuaCkpLAorCSAgICBTZXRSZWN0KCZkcmFnUmVjdCwgRklMTF9YKFhfMl9DT0wodGhlUG9pbnQuaCkpLAogCQkJCUZJTExfWShZXzJfUk9XKHRoZVBvaW50LnYpKSwKIAkJCQlGSUxMX1goWF8yX0NPTCh0aGVQb2ludC5oKSsxKSwKIAkJCQlGSUxMX1koWV8yX1JPVyh0aGVQb2ludC52KSsxKSk7CkBAIC0xNzQ2LDcgKzE3NTYsNyBAQAogICogSGFuZGxlIHRoZSBjbGljayBpbiB0aGUgdGl0bGViYXIgKHRvIG1vdmUgdGhlIHdpbmRvdykKICAqLwogICAgIHZvaWQKLWd1aV9tYWNfZG9JbkRyYWdDbGljayAod2hlcmUsIHdoaWNoV2luZG93KQorZ3VpX21hY19kb0luRHJhZ0NsaWNrKHdoZXJlLCB3aGljaFdpbmRvdykKICAgICBQb2ludAl3aGVyZTsKICAgICBXaW5kb3dQdHIJd2hpY2hXaW5kb3c7CiB7CkBAIC0xNzU1LDExICsxNzY1LDExIEBACiAKICAgICAvKiBUT0RPOiBtYXkgdHJ5IHRvIHByZXZlbnQgbW92ZSBvdXRzaWRlIHNjcmVlbj8gKi8KICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAotICAgIG1vdmluZ0xpbWl0c1B0ciA9IEdldFJlZ2lvbkJvdW5kcyAoIEdldEdyYXlSZ24oKSwgJm1vdmluZ0xpbWl0cyApOworICAgIG1vdmluZ0xpbWl0c1B0ciA9IEdldFJlZ2lvbkJvdW5kcyhHZXRHcmF5UmduKCksICZtb3ZpbmdMaW1pdHMpOwogI2Vsc2UKICAgICBtb3ZpbmdMaW1pdHNQdHIgPSAmKCpHZXRHcmF5UmduKCkpLT5yZ25CQm94OwogI2VuZGlmCi0gICAgRHJhZ1dpbmRvdyAod2hpY2hXaW5kb3csIHdoZXJlLCBtb3ZpbmdMaW1pdHNQdHIpOworICAgIERyYWdXaW5kb3cod2hpY2hXaW5kb3csIHdoZXJlLCBtb3ZpbmdMaW1pdHNQdHIpOwogfQogCiAvKgpAQCAtMTc3OSw3ICsxNzg5LDcgQEAKICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAogICAgIFJlY3QJICAgIE5ld0NvbnRlbnRSZWN0OwogCi0gICAgcmVzaXplTGltaXRzUHRyID0gR2V0UmVnaW9uQm91bmRzICggR2V0R3JheVJnbigpLCAmcmVzaXplTGltaXRzICk7CisgICAgcmVzaXplTGltaXRzUHRyID0gR2V0UmVnaW9uQm91bmRzKEdldEdyYXlSZ24oKSwgJnJlc2l6ZUxpbWl0cyk7CiAjZWxzZQogICAgIHJlc2l6ZUxpbWl0cyA9IHFkLnNjcmVlbkJpdHMuYm91bmRzOwogI2VuZGlmCkBAIC0xOTE5LDE3ICsxOTI5LDE3IEBACiAgICAgd2hpY2hXaW5kb3cgPSAoV2luZG93UHRyKSBldmVudC0+bWVzc2FnZTsKIAogICAgIC8qIFNhdmUgQ3VycmVudCBQb3J0ICovCi0gICAgR2V0UG9ydCAoJnNhdmVQb3J0KTsKKyAgICBHZXRQb3J0KCZzYXZlUG9ydCk7CiAKICAgICAvKiBTZWxlY3QgdGhlIFdpbmRvdydzIFBvcnQgKi8KICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAotICAgIFNldFBvcnRXaW5kb3dQb3J0ICh3aGljaFdpbmRvdyk7CisgICAgU2V0UG9ydFdpbmRvd1BvcnQod2hpY2hXaW5kb3cpOwogI2Vsc2UKLSAgICBTZXRQb3J0ICh3aGljaFdpbmRvdyk7CisgICAgU2V0UG9ydCh3aGljaFdpbmRvdyk7CiAjZW5kaWYKIAogICAgIC8qIExldCdzIHVwZGF0ZSB0aGUgd2luZG93ICovCi0gICAgICBCZWdpblVwZGF0ZSAod2hpY2hXaW5kb3cpOworICAgICAgQmVnaW5VcGRhdGUod2hpY2hXaW5kb3cpOwogCS8qIFJlZHJhdyB0aGUgYmlnZ2VzdCByZWN0YW5nbGUgY292ZXJpbmcgdGhlIGFyZWEKIAkgKiB0byBiZSB1cGRhdGVkLgogCSAqLwpAQCAtMTk0NSw5ICsxOTU1LDkgQEAKIAl1cGRhdGVSZ24gPSB3aGljaFdpbmRvdy0+dmlzUmduOwogI2VuZGlmCiAJLyogVXNlIHRoZSBITG9jayB1c2VsZXNzIGluIENhcmJvbj8gSXMgaXQgaGFybWZ1bD8qLwotCUhMb2NrICgoSGFuZGxlKSB1cGRhdGVSZ24pOworCUhMb2NrKChIYW5kbGUpIHVwZGF0ZVJnbik7CiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLQkgIHVwZGF0ZVJlY3RQdHIgPSBHZXRSZWdpb25Cb3VuZHMgKCB1cGRhdGVSZ24sICZ1cGRhdGVSZWN0ICk7CisJICB1cGRhdGVSZWN0UHRyID0gR2V0UmVnaW9uQm91bmRzKHVwZGF0ZVJnbiwgJnVwZGF0ZVJlY3QpOwogIyBpZiAwCiAJICAvKiBDb2RlIGZyb20gb3JpZ2luYWwgQ2FyYm9uIFBvcnQgKHVzaW5nIEdldFdpbmRvd1JlZ2lvbi4KIAkgICAqIEkgYmVsaWV2ZSB0aGUgVXBkYXRlUmduIGlzIGFscmVhZHkgaW4gbG9jYWwgKERhbnkpCkBAIC0xOTY2LDMzICsxOTc2LDMzIEBACiAJICBndWlfbWNoX3NldF9iZ19jb2xvcihndWkuYmFja19waXhlbCk7CiAJICBpZiAodXBkYXRlUmVjdFB0ci0+bGVmdCA8IEZJTExfWCgwKSkKIAkgIHsKLQkgICAgU2V0UmVjdCAoJnJjLCAwLCAwLCBGSUxMX1goMCksIEZJTExfWShSb3dzKSk7Ci0JICAgIEVyYXNlUmVjdCAoJnJjKTsKKwkgICAgU2V0UmVjdCgmcmMsIDAsIDAsIEZJTExfWCgwKSwgRklMTF9ZKFJvd3MpKTsKKwkgICAgRXJhc2VSZWN0KCZyYyk7CiAJICB9CiAJICBpZiAodXBkYXRlUmVjdFB0ci0+dG9wIDwgRklMTF9ZKDApKQogCSAgewotCSAgICBTZXRSZWN0ICgmcmMsIDAsIDAsIEZJTExfWChDb2x1bW5zKSwgRklMTF9ZKDApKTsKLQkgICAgRXJhc2VSZWN0ICgmcmMpOworCSAgICBTZXRSZWN0KCZyYywgMCwgMCwgRklMTF9YKENvbHVtbnMpLCBGSUxMX1koMCkpOworCSAgICBFcmFzZVJlY3QoJnJjKTsKIAkgIH0KIAkgIGlmICh1cGRhdGVSZWN0UHRyLT5yaWdodCA+IEZJTExfWChDb2x1bW5zKSkKIAkgIHsKLQkgICAgU2V0UmVjdCAoJnJjLCBGSUxMX1goQ29sdW1ucyksIDAsCisJICAgIFNldFJlY3QoJnJjLCBGSUxMX1goQ29sdW1ucyksIDAsCiAJCQkgICBGSUxMX1goQ29sdW1ucykgKyBndWkuYm9yZGVyX29mZnNldCwgRklMTF9ZKFJvd3MpKTsKLQkgICAgRXJhc2VSZWN0ICgmcmMpOworCSAgICBFcmFzZVJlY3QoJnJjKTsKIAkgIH0KIAkgIGlmICh1cGRhdGVSZWN0UHRyLT5ib3R0b20gPiBGSUxMX1koUm93cykpCiAJICB7Ci0JICAgIFNldFJlY3QgKCZyYywgMCwgRklMTF9ZKFJvd3MpLCBGSUxMX1goQ29sdW1ucykgKyBndWkuYm9yZGVyX29mZnNldCwKKwkgICAgU2V0UmVjdCgmcmMsIDAsIEZJTExfWShSb3dzKSwgRklMTF9YKENvbHVtbnMpICsgZ3VpLmJvcmRlcl9vZmZzZXQsCiAJCQkJCSAgICBGSUxMX1koUm93cykgKyBndWkuYm9yZGVyX29mZnNldCk7Ci0JICAgIEVyYXNlUmVjdCAoJnJjKTsKKwkgICAgRXJhc2VSZWN0KCZyYyk7CiAJICB9Ci0JSFVubG9jayAoKEhhbmRsZSkgdXBkYXRlUmduKTsKKwlIVW5sb2NrKChIYW5kbGUpIHVwZGF0ZVJnbik7CiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLQlEaXNwb3NlUmduICh1cGRhdGVSZ24pOworCURpc3Bvc2VSZ24odXBkYXRlUmduKTsKICNlbmRpZgogCiAJLyogVXBkYXRlIHNjcm9sbGJhcnMgKi8KLQlEcmF3Q29udHJvbHMgKHdoaWNoV2luZG93KTsKKwlEcmF3Q29udHJvbHMod2hpY2hXaW5kb3cpOwogCiAJLyogVXBkYXRlIHRoZSBHcm93Qm94ICovCiAJLyogVGFrZW4gZnJvbSBGQVEgMzMtMjcgKi8KQEAgLTIwMDQsMTUgKzIwMTQsMTUgQEAKIAlncm93UmVjdC50b3AgID0gZ3Jvd1JlY3QuYm90dG9tIC0gMTU7CiAJZ3Jvd1JlY3QubGVmdCA9IGdyb3dSZWN0LnJpZ2h0ICAtIDE1OwogI2VuZGlmCi0JR2V0Q2xpcCAoc2F2ZVJnbik7Ci0JQ2xpcFJlY3QgKCZncm93UmVjdCk7Ci0JRHJhd0dyb3dJY29uICh3aGljaFdpbmRvdyk7Ci0JU2V0Q2xpcCAoc2F2ZVJnbik7Ci0JRGlzcG9zZVJnbiAoc2F2ZVJnbik7Ci0gICAgICBFbmRVcGRhdGUgKHdoaWNoV2luZG93KTsKKwlHZXRDbGlwKHNhdmVSZ24pOworCUNsaXBSZWN0KCZncm93UmVjdCk7CisJRHJhd0dyb3dJY29uKHdoaWNoV2luZG93KTsKKwlTZXRDbGlwKHNhdmVSZ24pOworCURpc3Bvc2VSZ24oc2F2ZVJnbik7CisgICAgICBFbmRVcGRhdGUod2hpY2hXaW5kb3cpOwogCiAgICAgLyogUmVzdG9yZSBvcmlnaW5hbCBQb3J0ICovCi0gICAgU2V0UG9ydCAoc2F2ZVBvcnQpOworICAgIFNldFBvcnQoc2F2ZVBvcnQpOwogfQogCiAvKgpAQCAtMjA0MCw4ICsyMDUwLDggQEAKIAogI2lmIDAJLyogUmVtb3ZlZCBieSBEYW55IGFzIHBlciBhYm92ZSBKdW5lIDIwMDEgKi8KIAlhX2Jvb2wgPSBmYWxzZTsKLQlTZXRQcmVzZXJ2ZUdseXBoIChhX2Jvb2wpOwotCVNldE91dGxpbmVQcmVmZXJyZWQgKGFfYm9vbCk7CisJU2V0UHJlc2VydmVHbHlwaChhX2Jvb2wpOworCVNldE91dGxpbmVQcmVmZXJyZWQoYV9ib29sKTsKICNlbmRpZgogICAgIH0KIH0KQEAgLTIwOTksOCArMjEwOSwyMCBAQAogCiAgICAgLyogSW50ZXJjZXB0IENUUkwtQyAqLwogICAgIGlmICh0aGVFdmVudC0+bW9kaWZpZXJzICYgY29udHJvbEtleSkKKyAgICB7CiAJaWYgKGtleV9jaGFyID09IEN0cmxfQyAmJiBjdHJsX2NfaW50ZXJydXB0cykKIAkgICAgZ290X2ludCA9IFRSVUU7CisJZWxzZSBpZiAoKHRoZUV2ZW50LT5tb2RpZmllcnMgJiB+KGNvbnRyb2xLZXl8c2hpZnRLZXkpKSA9PSAwCisJCSYmIChrZXlfY2hhciA9PSAnMicgfHwga2V5X2NoYXIgPT0gJzYnKSkKKwl7CisJICAgIC8qIENUUkwtXiBhbmQgQ1RSTC1AIGRvbid0IHdvcmsgaW4gdGhlIG5vcm1hbCB3YXkuICovCisJICAgIGlmIChrZXlfY2hhciA9PSAnMicpCisJCWtleV9jaGFyID0gQ3RybF9BVDsKKwkgICAgZWxzZQorCQlrZXlfY2hhciA9IEN0cmxfSEFUOworCSAgICB0aGVFdmVudC0+bW9kaWZpZXJzID0gMDsKKwl9CisgICAgfQogCiAgICAgLyogSW50ZXJjZXB0IENNRC0uICovCiAgICAgaWYgKHRoZUV2ZW50LT5tb2RpZmllcnMgJiBjbWRLZXkpCkBAIC0yMTQzLDggKzIxNjUsOCBAQAogCQkJa2V5X2NoYXIgPSBzcGVjaWFsX2tleXNbaV0udmltX2NvZGUwOwogCQkgICAgZWxzZQogIyBlbmRpZgotCQkJa2V5X2NoYXIgPSBUT19TUEVDSUFMKCBzcGVjaWFsX2tleXNbaV0udmltX2NvZGUwLAotCQkJCQkJc3BlY2lhbF9rZXlzW2ldLnZpbV9jb2RlMSApOworCQkJa2V5X2NoYXIgPSBUT19TUEVDSUFMKHNwZWNpYWxfa2V5c1tpXS52aW1fY29kZTAsCisJCQkJCQlzcGVjaWFsX2tleXNbaV0udmltX2NvZGUxKTsKIAkJICAgIGtleV9jaGFyID0gc2ltcGxpZnlfa2V5KGtleV9jaGFyLCZtb2RpZmllcnMpOwogCQkgICAgYnJlYWs7CiAJCX0KQEAgLTIxNjIsMzYgKzIxODQsMzggQEAKICAgICB7CiAjaWYgMQogICAgIC8qIENsZWFyIG1vZGlmaWVycyB3aGVuIG9ubHkgb25lIG1vZGlmaWVyIGlzIHNldCAqLwotCWlmKCAobW9kaWZpZXJzID09IE1PRF9NQVNLX1NISUZUKSB8fAotCSAgICAobW9kaWZpZXJzID09IE1PRF9NQVNLX0NUUkwpICB8fAotCSAgICAobW9kaWZpZXJzID09IE1PRF9NQVNLX0FMVCkpCisJaWYgKChtb2RpZmllcnMgPT0gTU9EX01BU0tfU0hJRlQpCisJCXx8IChtb2RpZmllcnMgPT0gTU9EX01BU0tfQ1RSTCkKKwkJfHwgKG1vZGlmaWVycyA9PSBNT0RfTUFTS19BTFQpKQogCSAgICBtb2RpZmllcnMgPSAwOwogI2Vsc2UKLQlpZiggbW9kaWZpZXJzICYgTU9EX01BU0tfQ1RSTCkKKwlpZiAobW9kaWZpZXJzICYgTU9EX01BU0tfQ1RSTCkKIAkgICAgbW9kaWZpZXJzID0gbW9kaWZpZXJzICYgfk1PRF9NQVNLX0NUUkw7Ci0JaWYoIG1vZGlmaWVycyAmIE1PRF9NQVNLX0FMVCkKKwlpZiAobW9kaWZpZXJzICYgTU9EX01BU0tfQUxUKQogCSAgICBtb2RpZmllcnMgPSBtb2RpZmllcnMgJiB+TU9EX01BU0tfQUxUOwotCWlmKCBtb2RpZmllcnMgJiBNT0RfTUFTS19TSElGVCkKKwlpZiAobW9kaWZpZXJzICYgTU9EX01BU0tfU0hJRlQpCiAJICAgIG1vZGlmaWVycyA9IG1vZGlmaWVycyAmIH5NT0RfTUFTS19TSElGVDsKICNlbmRpZgogICAgIH0KLQlpZiggbW9kaWZpZXJzICkKKwlpZiAobW9kaWZpZXJzKQogCXsKLQkgICAgc3RyaW5nWyBsZW4rKyBdID0gQ1NJOwotCSAgICBzdHJpbmdbIGxlbisrIF0gPSBLU19NT0RJRklFUjsKLQkgICAgc3RyaW5nWyBsZW4rKyBdID0gbW9kaWZpZXJzOworCSAgICBzdHJpbmdbbGVuKytdID0gQ1NJOworCSAgICBzdHJpbmdbbGVuKytdID0gS1NfTU9ESUZJRVI7CisJICAgIHN0cmluZ1tsZW4rK10gPSBtb2RpZmllcnM7CiAJfQogCi0JaWYoIElTX1NQRUNJQUwoIGtleV9jaGFyICkgKQorCWlmIChJU19TUEVDSUFMKGtleV9jaGFyKSkKIAl7Ci0JICAgIHN0cmluZ1sgbGVuKysgXSA9IENTSTsKLQkgICAgc3RyaW5nWyBsZW4rKyBdID0gS19TRUNPTkQoIGtleV9jaGFyICk7Ci0JICAgIHN0cmluZ1sgbGVuKysgXSA9IEtfVEhJUkQoIGtleV9jaGFyICk7CisJICAgIHN0cmluZ1tsZW4rK10gPSBDU0k7CisJICAgIHN0cmluZ1tsZW4rK10gPSBLX1NFQ09ORChrZXlfY2hhcik7CisJICAgIHN0cmluZ1tsZW4rK10gPSBLX1RISVJEKGtleV9jaGFyKTsKIAl9CiAJZWxzZQogCXsKICNpZmRlZiBGRUFUX01CWVRFCi0JICAgIGlmIChpbnB1dF9jb252LnZjX3R5cGUgIT0gQ09OVl9OT05FKQorCSAgICAvKiBDb252ZXJ0IGNoYXJhY3RlcnMgd2hlbiBuZWVkZWQgKGUuZy4sIGZyb20gTWFjUm9tYW4gdG8gbGF0aW4xKS4KKwkgICAgICogVGhpcyBkb2Vzbid0IHdvcmsgZm9yIHRoZSBOVUwgYnl0ZS4gKi8KKwkgICAgaWYgKGlucHV0X2NvbnYudmNfdHlwZSAhPSBDT05WX05PTkUgJiYga2V5X2NoYXIgPiAwKQogCSAgICB7CiAJCWNoYXJfdQlmcm9tWzJdLCAqdG87CiAJCWludAlsOwpAQCAtMjIzNiwxMyArMjI2MCwxMyBAQAogICogSGFuZGxlIE1vdXNlQ2xpY2sKICAqLwogICAgIHZvaWQKLWd1aV9tYWNfZG9Nb3VzZURvd25FdmVudCAodGhlRXZlbnQpCitndWlfbWFjX2RvTW91c2VEb3duRXZlbnQodGhlRXZlbnQpCiAgICAgRXZlbnRSZWNvcmQgKnRoZUV2ZW50OwogewogICAgIHNob3J0CQl0aGVQYXJ0OwogICAgIFdpbmRvd1B0cgkJd2hpY2hXaW5kb3c7CiAKLSAgICB0aGVQYXJ0ID0gRmluZFdpbmRvdyAodGhlRXZlbnQtPndoZXJlLCAmd2hpY2hXaW5kb3cpOworICAgIHRoZVBhcnQgPSBGaW5kV2luZG93KHRoZUV2ZW50LT53aGVyZSwgJndoaWNoV2luZG93KTsKIAogICAgIHN3aXRjaCAodGhlUGFydCkKICAgICB7CkBAIC0yMjUxLDE5ICsyMjc1LDE5IEBACiAJICAgIGJyZWFrOwogCiAJY2FzZSAoaW5NZW51QmFyKToKLQkgICAgZ3VpX21hY19oYW5kbGVfbWVudShNZW51U2VsZWN0ICh0aGVFdmVudC0+d2hlcmUpKTsKKwkgICAgZ3VpX21hY19oYW5kbGVfbWVudShNZW51U2VsZWN0KHRoZUV2ZW50LT53aGVyZSkpOwogCSAgICBicmVhazsKIAogCWNhc2UgKGluQ29udGVudCk6Ci0JICAgIGd1aV9tYWNfZG9JbkNvbnRlbnRDbGljayAodGhlRXZlbnQsIHdoaWNoV2luZG93KTsKKwkgICAgZ3VpX21hY19kb0luQ29udGVudENsaWNrKHRoZUV2ZW50LCB3aGljaFdpbmRvdyk7CiAJICAgIGJyZWFrOwogCiAJY2FzZSAoaW5EcmFnKToKLQkgICAgZ3VpX21hY19kb0luRHJhZ0NsaWNrICh0aGVFdmVudC0+d2hlcmUsIHdoaWNoV2luZG93KTsKKwkgICAgZ3VpX21hY19kb0luRHJhZ0NsaWNrKHRoZUV2ZW50LT53aGVyZSwgd2hpY2hXaW5kb3cpOwogCSAgICBicmVhazsKIAogCWNhc2UgKGluR3Jvdyk6Ci0JICAgIGd1aV9tYWNfZG9Jbkdyb3dDbGljayAodGhlRXZlbnQtPndoZXJlLCB3aGljaFdpbmRvdyk7CisJICAgIGd1aV9tYWNfZG9Jbkdyb3dDbGljayh0aGVFdmVudC0+d2hlcmUsIHdoaWNoV2luZG93KTsKIAkgICAgYnJlYWs7CiAKIAljYXNlIChpbkdvQXdheSk6CkBAIC0yMjg1LDE4ICsyMzA5LDE4IEBACiAgKiBbdGhpcyBldmVudCBpcyBhIG1vdmluZyBpbiBhbmQgb3V0IG9mIGEgcmVnaW9uXQogICovCiAgICAgdm9pZAotZ3VpX21hY19kb01vdXNlTW92ZWRFdmVudCAoZXZlbnQpCitndWlfbWFjX2RvTW91c2VNb3ZlZEV2ZW50KGV2ZW50KQogICAgIEV2ZW50UmVjb3JkICpldmVudDsKIHsKICAgICBQb2ludCAgIHRoZVBvaW50OwogICAgIGludF91ICAgdmltTW9kaWZpZXJzOwogCiAgICAgdGhlUG9pbnQgPSBldmVudC0+d2hlcmU7Ci0gICAgR2xvYmFsVG9Mb2NhbCAoJnRoZVBvaW50KTsKKyAgICBHbG9iYWxUb0xvY2FsKCZ0aGVQb2ludCk7CiAgICAgdmltTW9kaWZpZXJzID0gRXZlbnRNb2RpZmllcnMyVmltTW91c2VNb2RpZmllcnMoZXZlbnQtPm1vZGlmaWVycyk7CiAKICAgICBpZiAoIUJ1dHRvbigpKQotCWd1aV9tb3VzZV9tb3ZlZCAodGhlUG9pbnQuaCwgdGhlUG9pbnQudik7CisJZ3VpX21vdXNlX21vdmVkKHRoZVBvaW50LmgsIHRoZVBvaW50LnYpOwogICAgIGVsc2UKICNpZmRlZiBVU0VfQ1RSTENMSUNLTUVOVQogCWlmICghY2xpY2tJc1BvcHVwKQpAQCAtMjMwNSw3ICsyMzI5LDcgQEAKIAkJCQkJICAgICB0aGVQb2ludC52LCBGQUxTRSwgdmltTW9kaWZpZXJzKTsKIAogICAgIC8qIFJlc2V0IHRoZSByZWdpb24gZnJvbSB3aGljaCB3ZSBtb3ZlIGluIGFuZCBvdXQgKi8KLSAgICBTZXRSZWN0ICgmZHJhZ1JlY3QsIEZJTExfWChYXzJfQ09MKHRoZVBvaW50LmgpKSwKKyAgICBTZXRSZWN0KCZkcmFnUmVjdCwgRklMTF9YKFhfMl9DT0wodGhlUG9pbnQuaCkpLAogCQkJRklMTF9ZKFlfMl9ST1codGhlUG9pbnQudikpLAogCQkJRklMTF9YKFhfMl9DT0wodGhlUG9pbnQuaCkrMSksCiAJCQlGSUxMX1koWV8yX1JPVyh0aGVQb2ludC52KSsxKSk7CkBAIC0yMzE5LDcgKzIzNDMsNyBAQAogICogSGFuZGxlIHRoZSBtb3VzZSByZWxlYXNlCiAgKi8KICAgICB2b2lkCi1ndWlfbWFjX2RvTW91c2VVcEV2ZW50ICh0aGVFdmVudCkKK2d1aV9tYWNfZG9Nb3VzZVVwRXZlbnQodGhlRXZlbnQpCiAgICAgRXZlbnRSZWNvcmQgKnRoZUV2ZW50OwogewogICAgIFBvaW50ICAgdGhlUG9pbnQ7CkBAIC0yMzMxLDcgKzIzNTUsNyBAQAogICAgIGRyYWdSZWN0RW5ibCA9IEZBTFNFOwogICAgIGRyYWdSZWN0Q29udHJvbCA9IGtDcmVhdGVFbXB0eTsKICAgICB0aGVQb2ludCA9IHRoZUV2ZW50LT53aGVyZTsKLSAgICBHbG9iYWxUb0xvY2FsICgmdGhlUG9pbnQpOworICAgIEdsb2JhbFRvTG9jYWwoJnRoZVBvaW50KTsKIAogICAgIHZpbU1vZGlmaWVycyA9IEV2ZW50TW9kaWZpZXJzMlZpbU1vdXNlTW9kaWZpZXJzKHRoZUV2ZW50LT5tb2RpZmllcnMpOwogI2lmZGVmIFVTRV9DVFJMQ0xJQ0tNRU5VCkBAIC0yMzQxLDggKzIzNjUsNyBAQAogCWNsaWNrSXNQb3B1cCA9IEZBTFNFOwogICAgIH0KICNlbmRpZgotICAgIGd1aV9zZW5kX21vdXNlX2V2ZW50Ci0gICAgICAoTU9VU0VfUkVMRUFTRSwgdGhlUG9pbnQuaCwgdGhlUG9pbnQudiwgRkFMU0UsIHZpbU1vZGlmaWVycyk7CisgICAgZ3VpX3NlbmRfbW91c2VfZXZlbnQoTU9VU0VfUkVMRUFTRSwgdGhlUG9pbnQuaCwgdGhlUG9pbnQudiwgRkFMU0UsIHZpbU1vZGlmaWVycyk7CiB9CiAKICNpZmRlZiBVU0VfTU9VU0VXSEVFTApAQCAtMjQzMSw3ICsyNDU0LDcgQEAKIAkvKiBIYW5kbGUgdGhlIG1lbnUgQ250eE1lbnVJRCwgQ250eE1lbnVJdGVtICovCiAJLyogVGhlIHN1Ym1lbnUgY2FuIGJlIGhhbmRsZSBkaXJlY3RseSBieSBndWlfbWFjX2hhbmRsZV9tZW51ICovCiAJLyogQnV0IHdoYXQgYWJvdXQgdGhlIGN1cnJlbnQgbWVudSwgaXMgdGhlIG1lbnkgY2hhbmdlZCBieSBDb250ZXh0dWFsTWVudVNlbGVjdCAqLwotCWd1aV9tYWNfaGFuZGxlX21lbnUgKChDbnR4TWVudUlEIDw8IDE2KSArIENudHhNZW51SXRlbSk7CisJZ3VpX21hY19oYW5kbGVfbWVudSgoQ250eE1lbnVJRCA8PCAxNikgKyBDbnR4TWVudUl0ZW0pOwogICAgIH0KICAgICBlbHNlIGlmIChDbnR4TWVudUlEID09IGtDTVNob3dIZWxwU2VsZWN0ZWQpCiAgICAgewpAQCAtMjQ2NCw5ICsyNDg3LDkgQEAKIAl7CiAjaWZuZGVmIFVTRV9DQVJCT05JWkVECiAJICAgIC8qIERlc2sgQWNjZXNzb3J5IGRvZXNuJ3QgZXhpc3QgaW4gQ2FyYm9uICovCi0JICAgIGFwcGxlTWVudSA9IEdldE1lbnVIYW5kbGUgKG1lbnUpOwotCSAgICBHZXRNZW51SXRlbVRleHQgKGFwcGxlTWVudSwgaXRlbSwgaXRlbU5hbWUpOwotCSAgICAodm9pZCkgT3BlbkRlc2tBY2MgKGl0ZW1OYW1lKTsKKwkgICAgYXBwbGVNZW51ID0gR2V0TWVudUhhbmRsZShtZW51KTsKKwkgICAgR2V0TWVudUl0ZW1UZXh0KGFwcGxlTWVudSwgaXRlbSwgaXRlbU5hbWUpOworCSAgICAodm9pZCkgT3BlbkRlc2tBY2MoaXRlbU5hbWUpOwogI2VuZGlmCiAJfQogICAgIH0KQEAgLTI0NzcsNyArMjUwMCw3IEBACiAJaWYgKHRoZVZpbU1lbnUpCiAJICAgIGd1aV9tZW51X2NiKHRoZVZpbU1lbnUpOwogICAgIH0KLSAgICBIaWxpdGVNZW51ICgwKTsKKyAgICBIaWxpdGVNZW51KDApOwogfQogCiAvKgpAQCAtMjQ4NSw3ICsyNTA4LDcgQEAKICAqLwogCiAgICAgdm9pZAotZ3VpX21hY19oYW5kbGVfZXZlbnQgKGV2ZW50KQorZ3VpX21hY19oYW5kbGVfZXZlbnQoZXZlbnQpCiAgICAgRXZlbnRSZWNvcmQgKmV2ZW50OwogewogICAgIE9TRXJyCWVycm9yOwpAQCAtMjUwOSw3ICsyNTMyLDcgQEAKICAgICB7CiAJY2FzZSAoa2V5RG93bik6CiAJY2FzZSAoYXV0b0tleSk6Ci0JICAgIGd1aV9tYWNfZG9LZXlFdmVudCAoZXZlbnQpOworCSAgICBndWlfbWFjX2RvS2V5RXZlbnQoZXZlbnQpOwogCSAgICBicmVhazsKIAogCWNhc2UgKGtleVVwKToKQEAgLTI1MjUsNyArMjU0OCw3IEBACiAJICAgIGJyZWFrOwogCiAJY2FzZSAodXBkYXRlRXZ0KToKLQkgICAgZ3VpX21hY19kb1VwZGF0ZUV2ZW50IChldmVudCk7CisJICAgIGd1aV9tYWNfZG9VcGRhdGVFdmVudChldmVudCk7CiAJICAgIGJyZWFrOwogCiAJY2FzZSAoZGlza0V2dCk6CkBAIC0yNTMzLDE3ICsyNTU2LDE3IEBACiAJICAgIGJyZWFrOwogCiAJY2FzZSAoYWN0aXZhdGVFdnQpOgotCSAgICBndWlfbWFjX2RvQWN0aXZhdGVFdmVudCAoZXZlbnQpOworCSAgICBndWlfbWFjX2RvQWN0aXZhdGVFdmVudChldmVudCk7CiAJICAgIGJyZWFrOwogCiAJY2FzZSAob3NFdnQpOgogCSAgICBzd2l0Y2ggKChldmVudC0+bWVzc2FnZSA+PiAyNCkgJiAweEZGKQogCSAgICB7CiAJCWNhc2UgKDB4RkEpOiAvKiBtb3VzZU1vdmVkTWVzc2FnZSAqLwotCQkgICAgZ3VpX21hY19kb01vdXNlTW92ZWRFdmVudCAoZXZlbnQpOworCQkgICAgZ3VpX21hY19kb01vdXNlTW92ZWRFdmVudChldmVudCk7CiAJCSAgICBicmVhazsKIAkJY2FzZSAoMHgwMSk6IC8qIHN1c3BlbmRSZXN1bWVNZXNzYWdlICovCi0JCSAgICBndWlfbWFjX2RvU3VzcGVuZEV2ZW50IChldmVudCk7CisJCSAgICBndWlfbWFjX2RvU3VzcGVuZEV2ZW50KGV2ZW50KTsKIAkJICAgIGJyZWFrOwogCSAgICB9CiAJICAgIGJyZWFrOwpAQCAtMjU2NSw3ICsyNTg4LDcgQEAKIAogCiAgICAgR3VpRm9udAotZ3VpX21hY19maW5kX2ZvbnQgKGZvbnRfbmFtZSkKK2d1aV9tYWNfZmluZF9mb250KGZvbnRfbmFtZSkKICAgICBjaGFyX3UgKmZvbnRfbmFtZTsKIHsKICAgICBjaGFyX3UJYzsKQEAgLTI1OTAsMTIgKzI2MTMsMTIgQEAKICAgICBwRm9udE5hbWVbMF0gPSBTVFJMRU4oZm9udF9uYW1lKTsKICAgICAqcCA9IGM7CiAKLSAgICBHZXRGTnVtIChwRm9udE5hbWUsICZmb250X2lkKTsKKyAgICBHZXRGTnVtKHBGb250TmFtZSwgJmZvbnRfaWQpOwogI2Vsc2UKICAgICAvKiBuYW1lID0gQzJQYXNjYWxfc2F2ZShtZW51LT5kbmFtZSk7ICovCiAgICAgZm9udE5hbWVQdHIgPSBDMlBhc2NhbF9zYXZlX2FuZF9yZW1vdmVfYmFja3NsYXNoKGZvbnRfbmFtZSk7CiAKLSAgICBHZXRGTnVtIChmb250TmFtZVB0ciwgJmZvbnRfaWQpOworICAgIEdldEZOdW0oZm9udE5hbWVQdHIsICZmb250X2lkKTsKICNlbmRpZgogCiAKQEAgLTI2MDMsNyArMjYyNiw3IEBACiAgICAgewogCS8qIE91cHMsIHRoZSBzeXN0ZW0gZm9udCB3YXMgaXQgdGhlIG9uZSB0aGUgdXNlciB3YW50ICovCiAKLQlHZXRGb250TmFtZSAoMCwgc3lzdGVtRm9udG5hbWUpOworCUdldEZvbnROYW1lKDAsIHN5c3RlbUZvbnRuYW1lKTsKIAlpZiAoIUVxdWFsU3RyaW5nKHBGb250TmFtZSwgc3lzdGVtRm9udG5hbWUsIGZhbHNlLCBmYWxzZSkpCiAJICAgIHJldHVybiBOT0ZPTlQ7CiAgICAgfQpAQCAtMjcwOSwzNiArMjczMiwzNiBAQAogICAgIFNJT1VYU2V0dGluZ3Muc2hvd3N0YXR1c2xpbmUgPSB0cnVlOwogICAgIFNJT1VYU2V0dGluZ3MudG9wcGl4ZWwgPSAzMDA7CiAgICAgU0lPVVhTZXR0aW5ncy5sZWZ0cGl4ZWwgPSAxMDsKLSAgICBJbnN0YWxsQ29uc29sZSAoMSk7IC8qIGZpbGVubyhzdGRvdXQpID0gMSwgb24gcGFnZSA0MzAgb2YgTVNMIEMgKi8KLSAgICBwcmludGYgKCJEZWJ1Z2dpbmcgY29uc29sZSBlbmFibGVkXG4iKTsKLSAgICAvKglTSU9VWFNldFRpdGxlICgoY2hhcl91ICopICJWaW0gU3Rkb3V0Iik7ICovCisgICAgSW5zdGFsbENvbnNvbGUoMSk7IC8qIGZpbGVubyhzdGRvdXQpID0gMSwgb24gcGFnZSA0MzAgb2YgTVNMIEMgKi8KKyAgICBwcmludGYoIkRlYnVnZ2luZyBjb25zb2xlIGVuYWJsZWRcbiIpOworICAgIC8qCVNJT1VYU2V0VGl0bGUoKGNoYXJfdSAqKSAiVmltIFN0ZG91dCIpOyAqLwogI2VuZGlmCiAKLSAgICBwb21tZSA9IE5ld01lbnUgKDI1NiwgIlxwXDAyNCIpOyAvKiAweDE0PSA9IEFwcGxlIE1lbnUgKi8KKyAgICBwb21tZSA9IE5ld01lbnUoMjU2LCAiXHBcMDI0Iik7IC8qIDB4MTQ9ID0gQXBwbGUgTWVudSAqLwogCi0gICAgQXBwZW5kTWVudSAocG9tbWUsICJccEFib3V0IFZJTSIpOworICAgIEFwcGVuZE1lbnUocG9tbWUsICJccEFib3V0IFZJTSIpOwogI2lmbmRlZiBVU0VfQ0FSQk9OSVpFRAotICAgIEFwcGVuZE1lbnUgKHBvbW1lLCAiXHAtIik7Ci0gICAgQXBwZW5kUmVzTWVudSAocG9tbWUsICdEUlZSJyk7CisgICAgQXBwZW5kTWVudShwb21tZSwgIlxwLSIpOworICAgIEFwcGVuZFJlc01lbnUocG9tbWUsICdEUlZSJyk7CiAjZW5kaWYKIAotICAgIEluc2VydE1lbnUgKHBvbW1lLCAwKTsKKyAgICBJbnNlcnRNZW51KHBvbW1lLCAwKTsKIAogICAgIERyYXdNZW51QmFyKCk7CiAKIAogI2lmbmRlZiBVU0VfT0ZGU0VURURfV0lORE9XCi0gICAgU2V0UmVjdCAoJndpbmRSZWN0LCAxMCwgNDgsIDEwKzgwKjcgKyAxNiwgNDgrMjQqMTEpOworICAgIFNldFJlY3QoJndpbmRSZWN0LCAxMCwgNDgsIDEwKzgwKjcgKyAxNiwgNDgrMjQqMTEpOwogI2Vsc2UKLSAgICBTZXRSZWN0ICgmd2luZFJlY3QsIDMwMCwgNDAsIDMwMCs4MCo3ICsgMTYsIDQwKzI0KjExKTsKKyAgICBTZXRSZWN0KCZ3aW5kUmVjdCwgMzAwLCA0MCwgMzAwKzgwKjcgKyAxNiwgNDArMjQqMTEpOwogI2VuZGlmCiAKIAogI2lmZGVmIFVTRV9DQVJCT05JWkVECiAgICAgQ3JlYXRlTmV3V2luZG93KGtEb2N1bWVudFdpbmRvd0NsYXNzLAogCQlrV2luZG93UmVzaXphYmxlQXR0cmlidXRlIHwga1dpbmRvd0NvbGxhcHNlQm94QXR0cmlidXRlLAotCQkmd2luZFJlY3QsICZndWkuVmltV2luZG93ICk7Ci0gICAgU2V0UG9ydFdpbmRvd1BvcnQgKCBndWkuVmltV2luZG93ICk7CisJCSZ3aW5kUmVjdCwgJmd1aS5WaW1XaW5kb3cpOworICAgIFNldFBvcnRXaW5kb3dQb3J0KGd1aS5WaW1XaW5kb3cpOwogI2Vsc2UKICAgICBndWkuVmltV2luZG93ID0gTmV3Q1dpbmRvdyhuaWwsICZ3aW5kUmVjdCwgIlxwZ1ZpbSBvbiBNYWNpbnRvc2giLCB0cnVlLCBkb2N1bWVudFByb2MsCiAJCQkoV2luZG93UHRyKSAtMUwsIGZhbHNlLCAwKTsKQEAgLTI3NTMsMTEgKzI3NzYsMTEgQEAKICAgICBndWkuaW5fZm9jdXMgPSBUUlVFOyAvKiBGb3IgdGhlIG1vbWVudCAtPiBzeW4uIG9mIGZyb250IGFwcGxpY2F0aW9uICovCiAKICNpZiBUQVJHRVRfQVBJX01BQ19DQVJCT04KLSAgICBnU2Nyb2xsQWN0aW9uID0gTmV3Q29udHJvbEFjdGlvblVQUCAoZ3VpX21hY19zY3JvbGxfYWN0aW9uKTsKLSAgICBnU2Nyb2xsRHJhZyAgID0gTmV3Q29udHJvbEFjdGlvblVQUCAoZ3VpX21hY19kcmFnX3RodW1iKTsKKyAgICBnU2Nyb2xsQWN0aW9uID0gTmV3Q29udHJvbEFjdGlvblVQUChndWlfbWFjX3Njcm9sbF9hY3Rpb24pOworICAgIGdTY3JvbGxEcmFnICAgPSBOZXdDb250cm9sQWN0aW9uVVBQKGd1aV9tYWNfZHJhZ190aHVtYik7CiAjZWxzZQotICAgIGdTY3JvbGxBY3Rpb24gPSBOZXdDb250cm9sQWN0aW9uUHJvYyAoZ3VpX21hY19zY3JvbGxfYWN0aW9uKTsKLSAgICBnU2Nyb2xsRHJhZyAgID0gTmV3Q29udHJvbEFjdGlvblByb2MgKGd1aV9tYWNfZHJhZ190aHVtYik7CisgICAgZ1Njcm9sbEFjdGlvbiA9IE5ld0NvbnRyb2xBY3Rpb25Qcm9jKGd1aV9tYWNfc2Nyb2xsX2FjdGlvbik7CisgICAgZ1Njcm9sbERyYWcgICA9IE5ld0NvbnRyb2xBY3Rpb25Qcm9jKGd1aV9tYWNfZHJhZ190aHVtYik7CiAjZW5kaWYKIAogICAgIC8qIEdldHRpbmcgYSBoYW5kbGUgdG8gdGhlIEhlbHAgbWVudSAqLwpAQCAtMjc2OSw3ICsyNzkyLDcgQEAKICMgZW5kaWYKIAogICAgIGlmIChndWkuTWFjT1NIZWxwTWVudSAhPSBuaWwpCi0JZ3VpLk1hY09TSGVscEl0ZW1zID0gQ291bnRNZW51SXRlbXMgKGd1aS5NYWNPU0hlbHBNZW51KTsKKwlndWkuTWFjT1NIZWxwSXRlbXMgPSBDb3VudE1lbnVJdGVtcyhndWkuTWFjT1NIZWxwTWVudSk7CiAgICAgZWxzZQogCWd1aS5NYWNPU0hlbHBJdGVtcyA9IDA7CiAjZW5kaWYKQEAgLTI3ODEsMjUgKzI4MDQsMjUgQEAKICNlbmRpZgogI2lmZGVmIFVTRV9FWEVfTkFNRQogIyBpZm5kZWYgVVNFX0ZJTkRfQlVORExFX1BBVEgKLSAgICBIR2V0Vm9sICh2b2xOYW1lLCAmYXBwbFZSZWZOdW0sICZhcHBsRGlySUQpOworICAgIEhHZXRWb2wodm9sTmFtZSwgJmFwcGxWUmVmTnVtLCAmYXBwbERpcklEKTsKICAgICAvKiBUTjIwMTU6IG1lbnRpb24gYSBwb3NzaWJsZSBiYWQgVlJlZk51bSAqLwotICAgIEZTTWFrZUZTU3BlYyAoYXBwbFZSZWZOdW0sIGFwcGxEaXJJRCwgIlxwIiwgJmFwcGxEaXIpOworICAgIEZTTWFrZUZTU3BlYyhhcHBsVlJlZk51bSwgYXBwbERpcklELCAiXHAiLCAmYXBwbERpcik7CiAjIGVsc2UKICAgICAvKiBPU0VyciBHZXRBcHBsaWNhdGlvbkJ1bmRsZUZTU3BlYyhGU1NwZWNQdHIgdGhlRlNTcGVjUHRyKQogICAgICAqIG9mIFROMjAxNQogICAgICAqIFRoaXMgdGVjaG5pYyByZW1vdmUgdGhlIC4uL0NvbnRlbnRzL01hY09TL2V0YyBwYXJ0CiAgICAgICovCi0gICAgKHZvaWQpIEdldEN1cnJlbnRQcm9jZXNzKCZwc24pOworICAgICh2b2lkKUdldEN1cnJlbnRQcm9jZXNzKCZwc24pOwogICAgIC8qIGlmIChlcnIgIT0gbm9FcnIpIHJldHVybiBlcnI7ICovCiAKLSAgICAodm9pZCkgR2V0UHJvY2Vzc0J1bmRsZUxvY2F0aW9uKCZwc24sICZhcHBsRlNSZWYpOworICAgICh2b2lkKUdldFByb2Nlc3NCdW5kbGVMb2NhdGlvbigmcHNuLCAmYXBwbEZTUmVmKTsKICAgICAvKiBpZiAoZXJyICE9IG5vRXJyKSByZXR1cm4gZXJyOyAqLwogCi0gICAgKHZvaWQpIEZTR2V0Q2F0YWxvZ0luZm8oJmFwcGxGU1JlZiwga0ZTQ2F0SW5mb05vbmUsIE5VTEwsIE5VTEwsICZhcHBsRGlyLCBOVUxMKTsKKyAgICAodm9pZClGU0dldENhdGFsb2dJbmZvKCZhcHBsRlNSZWYsIGtGU0NhdEluZm9Ob25lLCBOVUxMLCBOVUxMLCAmYXBwbERpciwgTlVMTCk7CiAKICAgICAvKiBUaGlzIHRlY2huaWMgcmV0dXJuIE5JTCB3aGVuIHdlIGRpc2FsbG93X2d1aSAqLwogIyBlbmRpZgotICAgIGV4ZV9uYW1lID0gRnVsbFBhdGhGcm9tRlNTcGVjX3NhdmUgKGFwcGxEaXIpOworICAgIGV4ZV9uYW1lID0gRnVsbFBhdGhGcm9tRlNTcGVjX3NhdmUoYXBwbERpcik7CiAjZW5kaWYKIAogI2lmZGVmIFVTRV9WSU1fQ1JFQVRPUl9JRApAQCAtMjkyNSwyOCArMjk0OCwyOCBAQAogICAgIFNJT1VYU2V0dGluZ3Muc2hvd3N0YXR1c2xpbmUgPSB0cnVlOwogICAgIFNJT1VYU2V0dGluZ3MudG9wcGl4ZWwgPSAzMDA7CiAgICAgU0lPVVhTZXR0aW5ncy5sZWZ0cGl4ZWwgPSAxMDsKLSAgICBJbnN0YWxsQ29uc29sZSAoMSk7IC8qIGZpbGVubyhzdGRvdXQpID0gMSwgb24gcGFnZSA0MzAgb2YgTVNMIEMgKi8KLSAgICBwcmludGYgKCJEZWJ1Z2dpbmcgY29uc29sZSBlbmFibGVkXG4iKTsKLSAgICAvKglTSU9VWFNldFRpdGxlICgoY2hhcl91ICopICJWaW0gU3Rkb3V0Iik7ICovCisgICAgSW5zdGFsbENvbnNvbGUoMSk7IC8qIGZpbGVubyhzdGRvdXQpID0gMSwgb24gcGFnZSA0MzAgb2YgTVNMIEMgKi8KKyAgICBwcmludGYoIkRlYnVnZ2luZyBjb25zb2xlIGVuYWJsZWRcbiIpOworICAgIC8qCVNJT1VYU2V0VGl0bGUoKGNoYXJfdSAqKSAiVmltIFN0ZG91dCIpOyAqLwogI2VuZGlmCiAKLSAgICBwb21tZSA9IE5ld01lbnUgKDI1NiwgIlxwXDAyNCIpOyAvKiAweDE0PSA9IEFwcGxlIE1lbnUgKi8KKyAgICBwb21tZSA9IE5ld01lbnUoMjU2LCAiXHBcMDI0Iik7IC8qIDB4MTQ9ID0gQXBwbGUgTWVudSAqLwogCi0gICAgQXBwZW5kTWVudSAocG9tbWUsICJccEFib3V0IFZJTSIpOworICAgIEFwcGVuZE1lbnUocG9tbWUsICJccEFib3V0IFZJTSIpOwogI2lmbmRlZiBVU0VfQ0FSQk9OSVpFRAotICAgIEFwcGVuZE1lbnUgKHBvbW1lLCAiXHAtIik7Ci0gICAgQXBwZW5kUmVzTWVudSAocG9tbWUsICdEUlZSJyk7CisgICAgQXBwZW5kTWVudShwb21tZSwgIlxwLSIpOworICAgIEFwcGVuZFJlc01lbnUocG9tbWUsICdEUlZSJyk7CiAjZW5kaWYKIAotICAgIEluc2VydE1lbnUgKHBvbW1lLCAwKTsKKyAgICBJbnNlcnRNZW51KHBvbW1lLCAwKTsKIAogICAgIERyYXdNZW51QmFyKCk7CiAKIAogI2lmbmRlZiBVU0VfT0ZGU0VURURfV0lORE9XCi0gICAgU2V0UmVjdCAoJndpbmRSZWN0LCAxMCwgNDgsIDEwKzgwKjcgKyAxNiwgNDgrMjQqMTEpOworICAgIFNldFJlY3QoJndpbmRSZWN0LCAxMCwgNDgsIDEwKzgwKjcgKyAxNiwgNDgrMjQqMTEpOwogI2Vsc2UKLSAgICBTZXRSZWN0ICgmd2luZFJlY3QsIDMwMCwgNDAsIDMwMCs4MCo3ICsgMTYsIDQwKzI0KjExKTsKKyAgICBTZXRSZWN0KCZ3aW5kUmVjdCwgMzAwLCA0MCwgMzAwKzgwKjcgKyAxNiwgNDArMjQqMTEpOwogI2VuZGlmCiAKICAgICBndWkuVmltV2luZG93ID0gTmV3Q1dpbmRvdyhuaWwsICZ3aW5kUmVjdCwgIlxwZ1ZpbSBvbiBNYWNpbnRvc2giLCB0cnVlLApAQCAtMjk1OSw3ICsyOTgyLDcgQEAKICAgICBJbnN0YWxsUmVjZWl2ZUhhbmRsZXIoKERyYWdSZWNlaXZlSGFuZGxlclVQUClyZWNlaXZlSGFuZGxlciwKIAkgICAgZ3VpLlZpbVdpbmRvdywgTlVMTCk7CiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLSAgICBTZXRQb3J0V2luZG93UG9ydCAoIGd1aS5WaW1XaW5kb3cgKTsKKyAgICBTZXRQb3J0V2luZG93UG9ydChndWkuVmltV2luZG93KTsKICNlbHNlCiAgICAgU2V0UG9ydChndWkuVmltV2luZG93KTsKICNlbmRpZgpAQCAtMjk3MiwxMSArMjk5NSwxMSBAQAogICAgIGd1aS5pbl9mb2N1cyA9IFRSVUU7IC8qIEZvciB0aGUgbW9tZW50IC0+IHN5bi4gb2YgZnJvbnQgYXBwbGljYXRpb24gKi8KIAogI2lmIFRBUkdFVF9BUElfTUFDX0NBUkJPTgotICAgIGdTY3JvbGxBY3Rpb24gPSBOZXdDb250cm9sQWN0aW9uVVBQIChndWlfbWFjX3Njcm9sbF9hY3Rpb24pOwotICAgIGdTY3JvbGxEcmFnICAgPSBOZXdDb250cm9sQWN0aW9uVVBQIChndWlfbWFjX2RyYWdfdGh1bWIpOworICAgIGdTY3JvbGxBY3Rpb24gPSBOZXdDb250cm9sQWN0aW9uVVBQKGd1aV9tYWNfc2Nyb2xsX2FjdGlvbik7CisgICAgZ1Njcm9sbERyYWcgICA9IE5ld0NvbnRyb2xBY3Rpb25VUFAoZ3VpX21hY19kcmFnX3RodW1iKTsKICNlbHNlCi0gICAgZ1Njcm9sbEFjdGlvbiA9IE5ld0NvbnRyb2xBY3Rpb25Qcm9jIChndWlfbWFjX3Njcm9sbF9hY3Rpb24pOwotICAgIGdTY3JvbGxEcmFnICAgPSBOZXdDb250cm9sQWN0aW9uUHJvYyAoZ3VpX21hY19kcmFnX3RodW1iKTsKKyAgICBnU2Nyb2xsQWN0aW9uID0gTmV3Q29udHJvbEFjdGlvblByb2MoZ3VpX21hY19zY3JvbGxfYWN0aW9uKTsKKyAgICBnU2Nyb2xsRHJhZyAgID0gTmV3Q29udHJvbEFjdGlvblByb2MoZ3VpX21hY19kcmFnX3RodW1iKTsKICNlbmRpZgogCiAgICAgLyogR2V0dGluZyBhIGhhbmRsZSB0byB0aGUgSGVscCBtZW51ICovCkBAIC0yOTg4LDcgKzMwMTEsNyBAQAogIyBlbmRpZgogCiAgICAgaWYgKGd1aS5NYWNPU0hlbHBNZW51ICE9IG5pbCkKLQlndWkuTWFjT1NIZWxwSXRlbXMgPSBDb3VudE1lbnVJdGVtcyAoZ3VpLk1hY09TSGVscE1lbnUpOworCWd1aS5NYWNPU0hlbHBJdGVtcyA9IENvdW50TWVudUl0ZW1zKGd1aS5NYWNPU0hlbHBNZW51KTsKICAgICBlbHNlCiAJZ3VpLk1hY09TSGVscEl0ZW1zID0gMDsKICNlbmRpZgpAQCAtMzEyMyw3ICszMTQ2LDcgQEAKICAgICBPU1N0YXR1cwlzdGF0dXM7CiAKICAgICAvKiBDYXJib24gPj0gMS4wLjIsIE1hY09TID49IDguNSAqLwotICAgIHN0YXR1cyA9IEdldFdpbmRvd0JvdW5kcyAoZ3VpLlZpbVdpbmRvdywga1dpbmRvd1N0cnVjdHVyZVJnbiwgJmJvdW5kcyk7CisgICAgc3RhdHVzID0gR2V0V2luZG93Qm91bmRzKGd1aS5WaW1XaW5kb3csIGtXaW5kb3dTdHJ1Y3R1cmVSZ24sICZib3VuZHMpOwogCiAgICAgaWYgKHN0YXR1cyAhPSBub0VycikKIAlyZXR1cm4gRkFJTDsKQEAgLTMxNjQsMTAgKzMxODcsMTAgQEAKICAgICBpZiAoZ3VpLndoaWNoX3Njcm9sbGJhcnNbU0JBUl9MRUZUXSkKICAgICB7CiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLQlWaW1Qb3J0ID0gR2V0V2luZG93UG9ydCAoIGd1aS5WaW1XaW5kb3cgKTsKLQlHZXRQb3J0Qm91bmRzIChWaW1Qb3J0LCAmVmltQm91bmQpOworCVZpbVBvcnQgPSBHZXRXaW5kb3dQb3J0KGd1aS5WaW1XaW5kb3cpOworCUdldFBvcnRCb3VuZHMoVmltUG9ydCwgJlZpbUJvdW5kKTsKIAlWaW1Cb3VuZC5sZWZ0ID0gLWd1aS5zY3JvbGxiYXJfd2lkdGg7IC8qICsgMTsqLwotCVNldFBvcnRCb3VuZHMgKFZpbVBvcnQsICZWaW1Cb3VuZCk7CisJU2V0UG9ydEJvdW5kcyhWaW1Qb3J0LCAmVmltQm91bmQpOwogICAgIC8qCUdldFdpbmRvd0JvdW5kcyhndWkuVmltV2luZG93LCBrV2luZG93R2xvYmFsUG9ydFJnbiwgJndpblBvcnRSZWN0KTsgPz8qLwogI2Vsc2UKIAlndWkuVmltV2luZG93LT5wb3J0UmVjdC5sZWZ0ID0gLWd1aS5zY3JvbGxiYXJfd2lkdGg7IC8qICsgMTsqLwpAQCAtMzE3NywxMCArMzIwMCwxMCBAQAogICAgIGVsc2UKICAgICB7CiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLQlWaW1Qb3J0ID0gR2V0V2luZG93UG9ydCAoIGd1aS5WaW1XaW5kb3cgKTsKLQlHZXRQb3J0Qm91bmRzIChWaW1Qb3J0LCAmVmltQm91bmQpOworCVZpbVBvcnQgPSBHZXRXaW5kb3dQb3J0KGd1aS5WaW1XaW5kb3cpOworCUdldFBvcnRCb3VuZHMoVmltUG9ydCwgJlZpbUJvdW5kKTsKIAlWaW1Cb3VuZC5sZWZ0ID0gMDsKLQlTZXRQb3J0Qm91bmRzIChWaW1Qb3J0LCAmVmltQm91bmQpOworCVNldFBvcnRCb3VuZHMoVmltUG9ydCwgJlZpbUJvdW5kKTsKICNlbHNlCiAJZ3VpLlZpbVdpbmRvdy0+cG9ydFJlY3QubGVmdCA9IDA7CiAjZW5kaWY7CkBAIC0zMjQxLDIwICszMjY0LDIwIEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0JZm9udCA9IGd1aV9tYWNfZmluZF9mb250IChmb250X25hbWUpOworCWZvbnQgPSBndWlfbWFjX2ZpbmRfZm9udChmb250X25hbWUpOwogCiAJaWYgKGZvbnQgPT0gTk9GT05UKQogCSAgICByZXR1cm4gRkFJTDsKICAgICB9CiAgICAgZ3VpLm5vcm1fZm9udCA9IGZvbnQ7CiAKLSAgICBUZXh0U2l6ZSAoZm9udCA+PiAxNik7Ci0gICAgVGV4dEZvbnQgKGZvbnQgJiAweEZGRkYpOworICAgIFRleHRTaXplKGZvbnQgPj4gMTYpOworICAgIFRleHRGb250KGZvbnQgJiAweEZGRkYpOwogCi0gICAgR2V0Rm9udEluZm8gKCZmb250X2luZm8pOworICAgIEdldEZvbnRJbmZvKCZmb250X2luZm8pOwogCiAgICAgZ3VpLmNoYXJfYXNjZW50ID0gZm9udF9pbmZvLmFzY2VudDsKLSAgICBndWkuY2hhcl93aWR0aCAgPSBDaGFyV2lkdGggKCdfJyk7CisgICAgZ3VpLmNoYXJfd2lkdGggID0gQ2hhcldpZHRoKCdfJyk7CiAgICAgZ3VpLmNoYXJfaGVpZ2h0ID0gZm9udF9pbmZvLmFzY2VudCArIGZvbnRfaW5mby5kZXNjZW50ICsgcF9saW5lc3BhY2U7CiAKICAgICByZXR1cm4gT0s7CkBAIC0zMjY2LDcgKzMyODksNyBAQAogewogICAgIEZvbnRJbmZvICAgIGZvbnRfaW5mbzsKIAotICAgIEdldEZvbnRJbmZvICgmZm9udF9pbmZvKTsKKyAgICBHZXRGb250SW5mbygmZm9udF9pbmZvKTsKICAgICBndWkuY2hhcl9oZWlnaHQgPSBmb250X2luZm8uYXNjZW50ICsgZm9udF9pbmZvLmRlc2NlbnQgKyBwX2xpbmVzcGFjZTsKICAgICBndWkuY2hhcl9hc2NlbnQgPSBmb250X2luZm8uYXNjZW50ICsgcF9saW5lc3BhY2UgLyAyOwogICAgIHJldHVybiBPSzsKQEAgLTM0MjUsMTAgKzM0NDgsMTAgQEAKICAgICB9CiAgICAgZWxzZQogICAgIHsKLQlpZiAoU1RSSUNNUCAobmFtZSwgImhpbGl0ZSIpID09IDApCisJaWYgKFNUUklDTVAobmFtZSwgImhpbGl0ZSIpID09IDApCiAJewotCSAgICBMTUdldEhpbGl0ZVJHQiAoJk1hY0NvbG9yKTsKLQkgICAgcmV0dXJuIChSR0IgKE1hY0NvbG9yLnJlZCA+PiA4LCBNYWNDb2xvci5ncmVlbiA+PiA4LCBNYWNDb2xvci5ibHVlID4+IDgpKTsKKwkgICAgTE1HZXRIaWxpdGVSR0IoJk1hY0NvbG9yKTsKKwkgICAgcmV0dXJuIChSR0IoTWFjQ29sb3IucmVkID4+IDgsIE1hY0NvbG9yLmdyZWVuID4+IDgsIE1hY0NvbG9yLmJsdWUgPj4gOCkpOwogCX0KIAkvKiBDaGVjayBpZiB0aGUgbmFtZSBpcyBvbmUgb2YgdGhlIGNvbG9ycyB3ZSBrbm93ICovCiAJZm9yIChpID0gMDsgaSA8IHNpemVvZih0YWJsZSkgLyBzaXplb2YodGFibGVbMF0pOyBpKyspCkBAIC0zNTA0LDcgKzM1MjcsNyBAQAogICAgIFRoZUNvbG9yLmdyZWVuID0gR3JlZW4oY29sb3IpICogMHgwMTAxOwogICAgIFRoZUNvbG9yLmJsdWUgPSBCbHVlKGNvbG9yKSAqIDB4MDEwMTsKIAotICAgIFJHQkZvcmVDb2xvciAoJlRoZUNvbG9yKTsKKyAgICBSR0JGb3JlQ29sb3IoJlRoZUNvbG9yKTsKIH0KIAogLyoKQEAgLTM1MjAsNyArMzU0Myw3IEBACiAgICAgVGhlQ29sb3IuZ3JlZW4gPSBHcmVlbihjb2xvcikgKiAweDAxMDE7CiAgICAgVGhlQ29sb3IuYmx1ZSA9IEJsdWUoY29sb3IpICogMHgwMTAxOwogCi0gICAgUkdCQmFja0NvbG9yICgmVGhlQ29sb3IpOworICAgIFJHQkJhY2tDb2xvcigmVGhlQ29sb3IpOwogfQogCiAgICAgdm9pZApAQCAtMzU5NywzMSArMzYyMCwzMSBAQAogI2VuZGlmCiAgICAgewogCS8qIFVzZSBvbGQtc3R5bGUsIG5vbi1hbnRpYWxpYXNlZCBRdWlja0RyYXcgdGV4dCByZW5kZXJpbmcuICovCi0JVGV4dE1vZGUgKHNyY0NvcHkpOwotCVRleHRGYWNlIChub3JtYWwpOworCVRleHRNb2RlKHNyY0NvcHkpOworCVRleHRGYWNlKG5vcm1hbCk7CiAKICAgICAvKiAgU2VsZWN0Rm9udChoZGMsIGd1aS5jdXJyRm9udCk7ICovCiAKIAlpZiAoZmxhZ3MgJiBEUkFXX1RSQU5TUCkKIAl7Ci0JICAgIFRleHRNb2RlIChzcmNPcik7CisJICAgIFRleHRNb2RlKHNyY09yKTsKIAl9CiAKLQlNb3ZlVG8gKFRFWFRfWChjb2wpLCBURVhUX1kocm93KSk7Ci0JRHJhd1RleHQgKChjaGFyICopcywgMCwgbGVuKTsKKwlNb3ZlVG8oVEVYVF9YKGNvbCksIFRFWFRfWShyb3cpKTsKKwlEcmF3VGV4dCgoY2hhciAqKXMsIDAsIGxlbik7CiAKIAogCWlmIChmbGFncyAmIERSQVdfQk9MRCkKIAl7Ci0JICAgIFRleHRNb2RlIChzcmNPcik7Ci0JICAgIE1vdmVUbyAoVEVYVF9YKGNvbCkgKyAxLCBURVhUX1kocm93KSk7Ci0JICAgIERyYXdUZXh0ICgoY2hhciAqKXMsIDAsIGxlbik7CisJICAgIFRleHRNb2RlKHNyY09yKTsKKwkgICAgTW92ZVRvKFRFWFRfWChjb2wpICsgMSwgVEVYVF9ZKHJvdykpOworCSAgICBEcmF3VGV4dCgoY2hhciAqKXMsIDAsIGxlbik7CiAJfQogCiAJaWYgKGZsYWdzICYgRFJBV19VTkRFUkwpCiAJewotCSAgICBNb3ZlVG8gKEZJTExfWChjb2wpLCBGSUxMX1kocm93ICsgMSkgLSAxKTsKLQkgICAgTGluZVRvIChGSUxMX1goY29sICsgbGVuKSAtIDEsIEZJTExfWShyb3cgKyAxKSAtIDEpOworCSAgICBNb3ZlVG8oRklMTF9YKGNvbCksIEZJTExfWShyb3cgKyAxKSAtIDEpOworCSAgICBMaW5lVG8oRklMTF9YKGNvbCArIGxlbikgLSAxLCBGSUxMX1kocm93ICsgMSkgLSAxKTsKIAl9CiAgICAgfQogCkBAIC0zNjQ5LDcgKzM2NzIsNyBAQAogICAgIHZvaWQKIGd1aV9tY2hfYmVlcCgpCiB7Ci0gICAgU3lzQmVlcCAoMSk7IC8qIFNob3VsZCB0aGlzIGJlIDA/ICg/Pz8/KSAqLworICAgIFN5c0JlZXAoMSk7IC8qIFNob3VsZCB0aGlzIGJlIDA/ICg/Pz8/KSAqLwogfQogCiAgICAgdm9pZApAQCAtMzc0MCw3ICszNzYzLDcgQEAKIAogICAgIGd1aV9tY2hfc2V0X2ZnX2NvbG9yKGNvbG9yKTsKIAotICAgIEZyYW1lUmVjdCAoJnJjKTsKKyAgICBGcmFtZVJlY3QoJnJjKTsKIH0KIAogLyoKQEAgLTM3NjcsNyArMzc5MCw3IEBACiAKICAgICBndWlfbWNoX3NldF9mZ19jb2xvcihjb2xvcik7CiAKLSAgICBQYWludFJlY3QgKCZyYyk7CisgICAgUGFpbnRSZWN0KCZyYyk7CiB9CiAKIApAQCAtMzc5MSw3ICszODE0LDcgQEAKICAgICAgKi8KICAgICBFdmVudFJlY29yZCB0aGVFdmVudDsKIAotICAgIGlmIChFdmVudEF2YWlsIChldmVyeUV2ZW50LCAmdGhlRXZlbnQpKQorICAgIGlmIChFdmVudEF2YWlsKGV2ZXJ5RXZlbnQsICZ0aGVFdmVudCkpCiAJaWYgKHRoZUV2ZW50LndoYXQgIT0gbnVsbEV2ZW50KQogCSAgICBndWlfbWNoX3dhaXRfZm9yX2NoYXJzKDApOwogfQpAQCAtMzgwNiw3ICszODI5LDcgQEAKICNlbmRpZgogICAgIHBhc2NhbAogICAgIEJvb2xlYW4KLVdhaXROZXh0RXZlbnRXcnAgKEV2ZW50TWFzayBldmVudE1hc2ssIEV2ZW50UmVjb3JkICp0aGVFdmVudCwgVUludDMyIHNsZWVwLCBSZ25IYW5kbGUgbW91c2VSZ24pCitXYWl0TmV4dEV2ZW50V3JwKEV2ZW50TWFzayBldmVudE1hc2ssIEV2ZW50UmVjb3JkICp0aGVFdmVudCwgVUludDMyIHNsZWVwLCBSZ25IYW5kbGUgbW91c2VSZ24pCiB7CiAgICAgaWYgKCgobG9uZykgc2xlZXApIDwgLTEpCiAJc2xlZXAgPSAzMjc2NzsKQEAgLTM4NTcsNyArMzg4MCw3IEBACiAJZWxzZSovIGlmIChkcmFnUmVjdENvbnRyb2wgPT0ga0NyZWF0ZVJlY3QpCiAJewogCSAgICBkcmFnUmduID0gY3Vyc29yUmduOwotCSAgICBSZWN0UmduIChkcmFnUmduLCAmZHJhZ1JlY3QpOworCSAgICBSZWN0UmduKGRyYWdSZ24sICZkcmFnUmVjdCk7CiAJICAgIGRyYWdSZWN0Q29udHJvbCA9IGtOb3RoaW5nOwogCX0KIAkvKgpAQCAtMzg3MSwxMiArMzg5NCwxMiBAQAogCSAgICBzbGVlcHB5VGljayA9IDYwKnd0aW1lLzEwMDA7CiAJZWxzZQogCSAgICBzbGVlcHB5VGljayA9IDMyNzY3OwotCWlmIChXYWl0TmV4dEV2ZW50V3JwIChtYXNrLCAmZXZlbnQsIHNsZWVwcHlUaWNrLCBkcmFnUmduKSkKKwlpZiAoV2FpdE5leHRFdmVudFdycChtYXNrLCAmZXZlbnQsIHNsZWVwcHlUaWNrLCBkcmFnUmduKSkKIAl7CiAjaWZkZWYgVVNFX1NJT1VYCiAJICAgIGlmICghU0lPVVhIYW5kbGVPbmVFdmVudCgmZXZlbnQpKQogI2VuZGlmCi0JCWd1aV9tYWNfaGFuZGxlX2V2ZW50ICgmZXZlbnQpOworCQlndWlfbWFjX2hhbmRsZV9ldmVudCgmZXZlbnQpOwogCSAgICBpZiAoaW5wdXRfYXZhaWxhYmxlKCkpCiAJICAgIHsKIAkJYWxsb3dfc2Nyb2xsYmFyID0gRkFMU0U7CkBAIC0zOTI5LDcgKzM5NTIsNyBAQAogICAgIHJjLmJvdHRvbSA9IEZJTExfWShyb3cyICsgMSk7CiAKICAgICBndWlfbWNoX3NldF9iZ19jb2xvcihndWkuYmFja19waXhlbCk7Ci0gICAgRXJhc2VSZWN0ICgmcmMpOworICAgIEVyYXNlUmVjdCgmcmMpOwogfQogCiAvKgpAQCAtMzk3MCw3ICszOTkzLDcgQEAKICAgICByYy5ib3R0b20gPSBGSUxMX1koZ3VpLnNjcm9sbF9yZWdpb25fYm90ICsgMSk7CiAKICAgICBndWlfbWNoX3NldF9iZ19jb2xvcihndWkuYmFja19waXhlbCk7Ci0gICAgU2Nyb2xsUmVjdCAoJnJjLCAwLCAtbnVtX2xpbmVzICogZ3VpLmNoYXJfaGVpZ2h0LCAoUmduSGFuZGxlKSBuaWwpOworICAgIFNjcm9sbFJlY3QoJnJjLCAwLCAtbnVtX2xpbmVzICogZ3VpLmNoYXJfaGVpZ2h0LCAoUmduSGFuZGxlKSBuaWwpOwogCiAgICAgZ3VpX2NsZWFyX2Jsb2NrKGd1aS5zY3JvbGxfcmVnaW9uX2JvdCAtIG51bV9saW5lcyArIDEsCiAJCQkJCQkgICAgICAgZ3VpLnNjcm9sbF9yZWdpb25fbGVmdCwKQEAgLTM5OTUsNyArNDAxOCw3IEBACiAKICAgICBndWlfbWNoX3NldF9iZ19jb2xvcihndWkuYmFja19waXhlbCk7CiAKLSAgICBTY3JvbGxSZWN0ICgmcmMsIDAsIGd1aS5jaGFyX2hlaWdodCAqIG51bV9saW5lcywgKFJnbkhhbmRsZSkgbmlsKTsKKyAgICBTY3JvbGxSZWN0KCZyYywgMCwgZ3VpLmNoYXJfaGVpZ2h0ICogbnVtX2xpbmVzLCAoUmduSGFuZGxlKSBuaWwpOwogCiAgICAgLyogVXBkYXRlIGd1aS5jdXJzb3Jfcm93IGlmIHRoZSBjdXJzb3Igc2Nyb2xsZWQgb3IgY29waWVkIG92ZXIgKi8KICAgICBpZiAoZ3VpLmN1cnNvcl9yb3cgPj0gZ3VpLnJvdwpAQCAtNDAyOCw2ICs0MDUxLDcgQEAKICAgICBTY3JhcEZsYXZvckZsYWdzCXNjcmFwRmxhZ3M7CiAgICAgU2NyYXBSZWYgICAgc2NyYXAgPSBuaWw7CiAgICAgT1NTdGF0dXMJZXJyb3I7CisgICAgaW50CQlmbGF2b3I7CiAjZWxzZQogICAgIGxvbmcJc2NyYXBPZmZzZXQ7CiAgICAgbG9uZwlzY3JhcFNpemU7CkBAIC00MDM4LDE5ICs0MDYyLDMxIEBACiAKIAogI2lmZGVmIFVTRV9DQVJCT05JWkVECi0gICAgZXJyb3IgPSBHZXRDdXJyZW50U2NyYXAgKCZzY3JhcCk7CisgICAgZXJyb3IgPSBHZXRDdXJyZW50U2NyYXAoJnNjcmFwKTsKICAgICBpZiAoZXJyb3IgIT0gbm9FcnIpCiAJcmV0dXJuOwogCi0gICAgZXJyb3IgPSBHZXRTY3JhcEZsYXZvckZsYWdzKHNjcmFwLCBrU2NyYXBGbGF2b3JUeXBlVGV4dCwgJnNjcmFwRmxhZ3MpOwotICAgIGlmIChlcnJvciAhPSBub0VycikKLQlyZXR1cm47CisgICAgZmxhdm9yID0gMDsKKyAgICBlcnJvciA9IEdldFNjcmFwRmxhdm9yRmxhZ3Moc2NyYXAsIFZJTVNDUkFQRkxBVk9SLCAmc2NyYXBGbGFncyk7CisgICAgaWYgKGVycm9yID09IG5vRXJyKQorICAgIHsKKwllcnJvciA9IEdldFNjcmFwRmxhdm9yU2l6ZShzY3JhcCwgVklNU0NSQVBGTEFWT1IsICZzY3JhcFNpemUpOworCWlmIChlcnJvciA9PSBub0VyciAmJiBzY3JhcFNpemUgPiAxKQorCSAgICBmbGF2b3IgPSAxOworICAgIH0KIAotICAgIGVycm9yID0gR2V0U2NyYXBGbGF2b3JTaXplIChzY3JhcCwga1NjcmFwRmxhdm9yVHlwZVRleHQsICZzY3JhcFNpemUpOwotICAgIGlmIChlcnJvciAhPSBub0VycikKLQlyZXR1cm47CisgICAgaWYgKGZsYXZvciA9PSAwKQorICAgIHsKKwllcnJvciA9IEdldFNjcmFwRmxhdm9yRmxhZ3Moc2NyYXAsIGtTY3JhcEZsYXZvclR5cGVUZXh0LCAmc2NyYXBGbGFncyk7CisJaWYgKGVycm9yICE9IG5vRXJyKQorCSAgICByZXR1cm47CiAKLSAgICBSZXNlcnZlTWVtIChzY3JhcFNpemUpOworCWVycm9yID0gR2V0U2NyYXBGbGF2b3JTaXplKHNjcmFwLCBrU2NyYXBGbGF2b3JUeXBlVGV4dCwgJnNjcmFwU2l6ZSk7CisJaWYgKGVycm9yICE9IG5vRXJyKQorCSAgICByZXR1cm47CisgICAgfQorCisgICAgUmVzZXJ2ZU1lbShzY3JhcFNpemUpOwogI2Vsc2UKICAgICAvKiBDYWxsIHRvIExvYWRTY3JhcCBzZWVtIHRvIGF2b2lkIHByb2JsZW0gd2l0aCBjcmFzaCBvbiBmaXJzdCBwYXN0ZSAqLwogICAgIHNjcmFwU2l6ZSA9IExvYWRTY3JhcCgpOwpAQCAtNDA2MSwyMyArNDA5NywyOCBAQAogICAgIHsKICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAogCS8qIEluIENBUkJPTiB3ZSBkb24ndCBuZWVkIGEgSGFuZGxlLCBhIHBvaW50ZXIgaXMgZ29vZCAqLwotCXRleHRPZkNsaXAgPSBOZXdIYW5kbGUgKHNjcmFwU2l6ZSk7CisJdGV4dE9mQ2xpcCA9IE5ld0hhbmRsZShzY3JhcFNpemUpOwogCS8qIHRlbXBjbGlwID0gbGFsbG9jKHNjcmFwU2l6ZSsxLCBUUlVFKTsgKi8KICNlbHNlCiAJdGV4dE9mQ2xpcCA9IE5ld0hhbmRsZSgwKTsKICNlbmRpZgotCUhMb2NrICh0ZXh0T2ZDbGlwKTsKKwlITG9jayh0ZXh0T2ZDbGlwKTsKICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAotCWVycm9yID0gR2V0U2NyYXBGbGF2b3JEYXRhIChzY3JhcCwga1NjcmFwRmxhdm9yVHlwZVRleHQsICZzY3JhcFNpemUsICp0ZXh0T2ZDbGlwKTsKKwllcnJvciA9IEdldFNjcmFwRmxhdm9yRGF0YShzY3JhcCwKKwkJZmxhdm9yID8gVklNU0NSQVBGTEFWT1IgOiBrU2NyYXBGbGF2b3JUeXBlVGV4dCwKKwkJJnNjcmFwU2l6ZSwgKnRleHRPZkNsaXApOwogI2Vsc2UKIAlzY3JhcFNpemUgPSBHZXRTY3JhcCh0ZXh0T2ZDbGlwLCAnVEVYVCcsICZzY3JhcE9mZnNldCk7CiAjZW5kaWYKIAotCXR5cGUgPSAoc3RyY2hyKCp0ZXh0T2ZDbGlwLCAnXHInKSAhPSBOVUxMKSA/IE1MSU5FIDogTUNIQVI7CisJaWYgKGZsYXZvcikKKwkgICAgdHlwZSA9ICoqdGV4dE9mQ2xpcDsKKwllbHNlCisJICAgIHR5cGUgPSAoc3RyY2hyKCp0ZXh0T2ZDbGlwLCAnXHInKSAhPSBOVUxMKSA/IE1MSU5FIDogTUNIQVI7CiAKIAl0ZW1wY2xpcCA9IGxhbGxvYyhzY3JhcFNpemUrMSwgVFJVRSk7Ci0JU1RSTkNQWSh0ZW1wY2xpcCwgKnRleHRPZkNsaXAsIHNjcmFwU2l6ZSk7Ci0JdGVtcGNsaXBbc2NyYXBTaXplXSA9IDA7CisJU1RSTkNQWSh0ZW1wY2xpcCwgKnRleHRPZkNsaXAgKyBmbGF2b3IsIHNjcmFwU2l6ZSAtIGZsYXZvcik7CisJdGVtcGNsaXBbc2NyYXBTaXplIC0gZmxhdm9yXSA9IDA7CiAKIAlzZWFyY2hDUiA9IChjaGFyICopdGVtcGNsaXA7CiAJd2hpbGUgKHNlYXJjaENSICE9IE5VTEwpCkBAIC00MTg0LDE1ICs0MjI1LDIzIEBACiAJWmVyb1NjcmFwKCk7CiAjZW5kaWYKIAorI2lmZGVmIFVTRV9DQVJCT05JWkVECisJdGV4dE9mQ2xpcCA9IE5ld0hhbmRsZShzY3JhcFNpemUgKyAxKTsKKyNlbHNlCiAJdGV4dE9mQ2xpcCA9IE5ld0hhbmRsZShzY3JhcFNpemUpOworI2VuZGlmCiAJSExvY2sodGV4dE9mQ2xpcCk7CiAKLQlTVFJOQ1BZKCp0ZXh0T2ZDbGlwLCBzdHIsIHNjcmFwU2l6ZSk7CiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLQlHZXRDdXJyZW50U2NyYXAgKCZzY3JhcCk7CisJKip0ZXh0T2ZDbGlwID0gdHlwZTsKKwlTVFJOQ1BZKCp0ZXh0T2ZDbGlwICsgMSwgc3RyLCBzY3JhcFNpemUpOworCUdldEN1cnJlbnRTY3JhcCgmc2NyYXApOwogCVB1dFNjcmFwRmxhdm9yKHNjcmFwLCBrU2NyYXBGbGF2b3JUeXBlVGV4dCwga1NjcmFwRmxhdm9yTWFza05vbmUsCi0JCQlzY3JhcFNpemUsICp0ZXh0T2ZDbGlwKTsKKwkJc2NyYXBTaXplLCAqdGV4dE9mQ2xpcCArIDEpOworCVB1dFNjcmFwRmxhdm9yKHNjcmFwLCBWSU1TQ1JBUEZMQVZPUiwga1NjcmFwRmxhdm9yTWFza05vbmUsCisJCXNjcmFwU2l6ZSArIDEsICp0ZXh0T2ZDbGlwKTsKICNlbHNlCisJU1RSTkNQWSgqdGV4dE9mQ2xpcCwgc3RyLCBzY3JhcFNpemUpOwogCVB1dFNjcmFwKHNjcmFwU2l6ZSwgJ1RFWFQnLCAqdGV4dE9mQ2xpcCk7CiAjZW5kaWYKIAlIVW5sb2NrKHRleHRPZkNsaXApOwpAQCAtNDIxMSw3ICs0MjYwLDcgQEAKIHsKICAgICBSZWN0CVZpbUJvdW5kOwogCi0vKiAgSGlkZVdpbmRvdyAoZ3VpLlZpbVdpbmRvdyk7ICovCisvKiAgSGlkZVdpbmRvdyhndWkuVmltV2luZG93KTsgKi8KICNpZmRlZiBVU0VfQ0FSQk9OSVpFRAogICAgIEdldFdpbmRvd0JvdW5kcyhndWkuVmltV2luZG93LCBrV2luZG93R2xvYmFsUG9ydFJnbiwgJlZpbUJvdW5kKTsKICNlbHNlCkBAIC00MjMxLDcgKzQyODAsNyBAQAogICAgIFNldFdpbmRvd0JvdW5kcyhndWkuVmltV2luZG93LCBrV2luZG93R2xvYmFsUG9ydFJnbiwgJlZpbUJvdW5kKTsKICNlbmRpZgogCi0gICAgU2hvd1dpbmRvdyAoZ3VpLlZpbVdpbmRvdyk7CisgICAgU2hvd1dpbmRvdyhndWkuVmltV2luZG93KTsKIH0KIAogLyoKQEAgLTQzMjEsMTEgKzQzNzAsMTEgQEAKICNlbmRpZgogICAgIHsKIAkvKiBDYXJib24gc3VnZ2VzdCB1c2Ugb2YKLQkgKiBPU1N0YXR1cyBDcmVhdGVOZXdNZW51ICggTWVudUlELCBNZW51QXR0cmlidXRlcywgTWVudVJlZiAqKTsKLQkgKiBPU1N0YXR1cyBTZXRNZW51VGl0bGUgKCBNZW51UmVmLCBDb25zdFN0cjI1NVBhcmFtIHRpdGxlICk7CisJICogT1NTdGF0dXMgQ3JlYXRlTmV3TWVudShNZW51SUQsIE1lbnVBdHRyaWJ1dGVzLCBNZW51UmVmICopOworCSAqIE9TU3RhdHVzIFNldE1lbnVUaXRsZShNZW51UmVmLCBDb25zdFN0cjI1NVBhcmFtIHRpdGxlKTsKIAkgKi8KIAltZW51LT5zdWJtZW51X2lkID0gbmV4dF9hdmFpbF9pZDsKLQltZW51LT5zdWJtZW51X2hhbmRsZSA9IE5ld01lbnUgKG1lbnUtPnN1Ym1lbnVfaWQsIG5hbWUpOworCW1lbnUtPnN1Ym1lbnVfaGFuZGxlID0gTmV3TWVudShtZW51LT5zdWJtZW51X2lkLCBuYW1lKTsKIAluZXh0X2F2YWlsX2lkKys7CiAgICAgfQogCkBAIC00MzQxLDcgKzQzOTAsNyBAQAogI2lmZGVmIFVTRV9IRUxQTUVOVQogCWlmIChtZW51LT5zdWJtZW51X2lkICE9IGtITUhlbHBNZW51SUQpCiAjZW5kaWYKLQkgICAgSW5zZXJ0TWVudSAobWVudS0+c3VibWVudV9oYW5kbGUsIG1lbnVfYWZ0ZXJfbWUpOyAvKiBpbnNlcnQgYmVmb3JlICovCisJICAgIEluc2VydE1lbnUobWVudS0+c3VibWVudV9oYW5kbGUsIG1lbnVfYWZ0ZXJfbWUpOyAvKiBpbnNlcnQgYmVmb3JlICovCiAjaWYgMQogCS8qIFZpbSBzaG91bGQgbm9ybWFsbHkgdXBkYXRlIGl0LiBUT0RPOiB2ZXJpZnkgKi8KIAlEcmF3TWVudUJhcigpOwpAQCAtNDM1MSw3ICs0NDAwLDcgQEAKICAgICB7CiAJLyogQWRkaW5nIGFzIGEgc3VibWVudSAqLwogCi0JaW5kZXggPSBndWlfbWFjX2dldF9tZW51X2l0ZW1faW5kZXggKG1lbnUpOworCWluZGV4ID0gZ3VpX21hY19nZXRfbWVudV9pdGVtX2luZGV4KG1lbnUpOwogCiAJLyogQ2FsbCBJbnNlcnRNZW51SXRlbSBmb2xsb3dlZCBieSBTZXRNZW51SXRlbVRleHQKIAkgKiB0byBhdm9pZCBzcGVjaWFsIGNoYXJhY3RlciByZWNvZ25pdGlvbiBieSBJbnNlcnRNZW51SXRlbQpAQCAtNDM2Myw3ICs0NDEyLDcgQEAKIAlJbnNlcnRNZW51KG1lbnUtPnN1Ym1lbnVfaGFuZGxlLCBoaWVyTWVudSk7CiAgICAgfQogCi0gICAgdmltX2ZyZWUgKG5hbWUpOworICAgIHZpbV9mcmVlKG5hbWUpOwogCiAjaWYgMAogICAgIC8qIERvbmUgYnkgVmltIGxhdGVyIG9uICovCkBAIC00NTAyLDcgKzQ1NTEsNyBAQAogZ3VpX21jaF9kZXN0cm95X21lbnUobWVudSkKICAgICB2aW1tZW51X1QJKm1lbnU7CiB7Ci0gICAgc2hvcnQJaW5kZXggPSBndWlfbWFjX2dldF9tZW51X2l0ZW1faW5kZXggKG1lbnUpOworICAgIHNob3J0CWluZGV4ID0gZ3VpX21hY19nZXRfbWVudV9pdGVtX2luZGV4KG1lbnUpOwogCiAgICAgaWYgKGluZGV4ID4gMCkKICAgICB7CkBAIC00NTEzLDIwICs0NTYyLDIwIEBACiAjZW5kaWYKIAl7CiAJICAgIC8qIEZvciBub3cganVzdCBkb24ndCBkZWxldGUgaGVscCBtZW51IGl0ZW1zLiAoSHVoPyBEYW55KSAqLwotCSAgICBEZWxldGVNZW51SXRlbSAobWVudS0+cGFyZW50LT5zdWJtZW51X2hhbmRsZSwgaW5kZXgpOworCSAgICBEZWxldGVNZW51SXRlbShtZW51LT5wYXJlbnQtPnN1Ym1lbnVfaGFuZGxlLCBpbmRleCk7CiAKIAkgICAgLyogRGVsZXRlIHRoZSBNZW51IGlmIGl0IHdhcyBhIGhpZXJhcmNoaWNhbCBNZW51ICovCiAJICAgIGlmIChtZW51LT5zdWJtZW51X2lkICE9IDApCiAJICAgIHsKLQkJRGVsZXRlTWVudSAobWVudS0+c3VibWVudV9pZCk7Ci0JCURpc3Bvc2VNZW51IChtZW51LT5zdWJtZW51X2hhbmRsZSk7CisJCURlbGV0ZU1lbnUobWVudS0+c3VibWVudV9pZCk7CisJCURpc3Bvc2VNZW51KG1lbnUtPnN1Ym1lbnVfaGFuZGxlKTsKIAkgICAgfQogCX0KICNpZmRlZiBVU0VfSEVMUE1FTlUKICMgaWZkZWYgREVCVUdfTUFDX01FTlUKIAllbHNlCiAJewotCSAgICBwcmludGYgKCJnbWRtIDFcbiIpOworCSAgICBwcmludGYoImdtZG0gMVxuIik7CiAJfQogIyBlbmRpZgogI2VuZGlmCkBAIC00NTM0LDcgKzQ1ODMsNyBAQAogI2lmZGVmIERFQlVHX01BQ19NRU5VCiAgICAgICBlbHNlCiAgICAgICB7Ci0JcHJpbnRmICgiZ21kbSAyXG4iKTsKKwlwcmludGYoImdtZG0gMlxuIik7CiAgICAgICB9CiAjZW5kaWYKICAgICB9CkBAIC00NTQ1LDggKzQ1OTQsOCBAQAogCWlmIChtZW51LT5zdWJtZW51X2lkICE9IGtITUhlbHBNZW51SUQpCiAjZW5kaWYKIAl7Ci0JICAgIERlbGV0ZU1lbnUgKG1lbnUtPnN1Ym1lbnVfaWQpOwotCSAgICBEaXNwb3NlTWVudSAobWVudS0+c3VibWVudV9oYW5kbGUpOworCSAgICBEZWxldGVNZW51KG1lbnUtPnN1Ym1lbnVfaWQpOworCSAgICBEaXNwb3NlTWVudShtZW51LT5zdWJtZW51X2hhbmRsZSk7CiAJfQogICAgIH0KICAgICAvKiBTaG91bGRuJ3QgdGhpcyBiZSBhbHJlYWR5IGRvbmUgYnkgVmltLiBUT0RPOiBDaGVjayAqLwpAQCAtNDU2Miw3ICs0NjExLDcgQEAKICAgICBpbnQJCWdyZXk7CiB7CiAgICAgLyogVE9ETzogQ2hlY2sgaWYgbWVudSByZWFsbHkgZXhpc3RzICovCi0gICAgc2hvcnQgaW5kZXggPSBndWlfbWFjX2dldF9tZW51X2l0ZW1faW5kZXggKG1lbnUpOworICAgIHNob3J0IGluZGV4ID0gZ3VpX21hY19nZXRfbWVudV9pdGVtX2luZGV4KG1lbnUpOwogLyoKICAgICBpbmRleCA9IG1lbnUtPmluZGV4OwogKi8KQEAgLTQ1OTMsNyArNDY0Miw3IEBACiAgICAgaW50CQloaWRkZW47CiB7CiAgICAgLyogVGhlcmUncyBubyBoaWRkZW4gbW9kZSBvbiBNYWNPUyAqLwotICAgIGd1aV9tY2hfbWVudV9ncmV5IChtZW51LCBoaWRkZW4pOworICAgIGd1aV9tY2hfbWVudV9ncmV5KG1lbnUsIGhpZGRlbik7CiB9CiAKIApAQCAtNDYyMiw3ICs0NjcxLDcgQEAKIAlIaWRlQ29udHJvbChzYi0+aWQpOwogCiAjaWZkZWYgREVCVUdfTUFDX1NCCi0gICAgcHJpbnRmICgiZW5iX3NiICgleCkgJXhcbiIsc2ItPmlkLCBmbGFnKTsKKyAgICBwcmludGYoImVuYl9zYiAoJXgpICV4XG4iLHNiLT5pZCwgZmxhZyk7CiAjZW5kaWYKIH0KIApAQCAtNDYzNyw3ICs0Njg2LDcgQEAKICAgICBTZXRDb250cm9sMzJCaXRNaW5pbXVtIChzYi0+aWQsIDApOwogICAgIFNldENvbnRyb2wzMkJpdFZhbHVlICAgKHNiLT5pZCwgdmFsKTsKICNpZmRlZiBERUJVR19NQUNfU0IKLSAgICBwcmludGYgKCJ0aHVtYl9zYiAoJXgpICV4LCAleCwleFxuIixzYi0+aWQsIHZhbCwgc2l6ZSwgbWF4KTsKKyAgICBwcmludGYoInRodW1iX3NiICgleCkgJXgsICV4LCV4XG4iLHNiLT5pZCwgdmFsLCBzaXplLCBtYXgpOwogI2VuZGlmCiB9CiAKQEAgLTQ2NTIsMTMgKzQ3MDEsMTMgQEAKICAgICBndWlfbWNoX3NldF9iZ19jb2xvcihndWkuYmFja19waXhlbCk7CiAvKiAgaWYgKGd1aS53aGljaF9zY3JvbGxiYXJzW1NCQVJfTEVGVF0pCiAgICAgewotCU1vdmVDb250cm9sIChzYi0+aWQsIHgtMTYsIHkpOwotCVNpemVDb250cm9sIChzYi0+aWQsIHcgKyAxLCBoKTsKKwlNb3ZlQ29udHJvbChzYi0+aWQsIHgtMTYsIHkpOworCVNpemVDb250cm9sKHNiLT5pZCwgdyArIDEsIGgpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotCU1vdmVDb250cm9sIChzYi0+aWQsIHgsIHkpOwotCVNpemVDb250cm9sIChzYi0+aWQsIHcgKyAxLCBoKTsKKwlNb3ZlQ29udHJvbChzYi0+aWQsIHgsIHkpOworCVNpemVDb250cm9sKHNiLT5pZCwgdyArIDEsIGgpOwogICAgIH0qLwogICAgIGlmIChzYiA9PSAmZ3VpLmJvdHRvbV9zYmFyKQogCWggKz0gMTsKQEAgLTQ2NjgsMTAgKzQ3MTcsMTAgQEAKICAgICBpZiAoZ3VpLndoaWNoX3Njcm9sbGJhcnNbU0JBUl9MRUZUXSkKIAl4IC09IDE1OwogCi0gICAgTW92ZUNvbnRyb2wgKHNiLT5pZCwgeCwgeSk7Ci0gICAgU2l6ZUNvbnRyb2wgKHNiLT5pZCwgdywgaCk7CisgICAgTW92ZUNvbnRyb2woc2ItPmlkLCB4LCB5KTsKKyAgICBTaXplQ29udHJvbChzYi0+aWQsIHcsIGgpOwogI2lmZGVmIERFQlVHX01BQ19TQgotICAgIHByaW50ZiAoInNpemVfc2IgKCV4KSAleCwgJXgsICV4LCAleFxuIixzYi0+aWQsIHgsIHksIHcsIGgpOworICAgIHByaW50Zigic2l6ZV9zYiAoJXgpICV4LCAleCwgJXgsICV4XG4iLHNiLT5pZCwgeCwgeSwgdywgaCk7CiAjZW5kaWYKIH0KIApAQCAtNDY4Nyw3ICs0NzM2LDcgQEAKICAgICBib3VuZHMucmlnaHQgPSAtMTA7CiAgICAgYm91bmRzLmxlZnQgPSAtMTY7CiAKLSAgICBzYi0+aWQgPSBOZXdDb250cm9sIChndWkuVmltV2luZG93LAorICAgIHNiLT5pZCA9IE5ld0NvbnRyb2woZ3VpLlZpbVdpbmRvdywKIAkJCSAmYm91bmRzLAogCQkJICJccFNjcm9sbEJhciIsCiAJCQkgVFJVRSwKQEAgLTQ3MDEsNyArNDc1MCw3IEBACiAjZW5kaWYKIAkJCSAobG9uZykgc2ItPmlkZW50KTsKICNpZmRlZiBERUJVR19NQUNfU0IKLSAgICBwcmludGYgKCJjcmVhdGVfc2IgKCV4KSAleFxuIixzYi0+aWQsIG9yaWVudCk7CisgICAgcHJpbnRmKCJjcmVhdGVfc2IgKCV4KSAleFxuIixzYi0+aWQsIG9yaWVudCk7CiAjZW5kaWYKIH0KIApAQCAtNDcxMCw5ICs0NzU5LDkgQEAKICAgICBzY3JvbGxiYXJfVCAqc2I7CiB7CiAgICAgZ3VpX21jaF9zZXRfYmdfY29sb3IoZ3VpLmJhY2tfcGl4ZWwpOwotICAgIERpc3Bvc2VDb250cm9sIChzYi0+aWQpOworICAgIERpc3Bvc2VDb250cm9sKHNiLT5pZCk7CiAjaWZkZWYgREVCVUdfTUFDX1NCCi0gICAgcHJpbnRmICgiZGVzdF9zYiAoJXgpIFxuIixzYi0+aWQpOworICAgIHByaW50ZigiZGVzdF9zYiAoJXgpIFxuIixzYi0+aWQpOwogI2VuZGlmCiB9CiAKQEAgLTQ4MTgsNyArNDg2Nyw3IEBACiAgICAgT1NFcnIJCWVycm9yOwogCiAgICAgLyogR2V0IE5hdmlnYXRpb24gU2VydmljZSBEZWZhdWx0cyB2YWx1ZSAqLwotICAgIE5hdkdldERlZmF1bHREaWFsb2dPcHRpb25zICgmbmF2T3B0aW9ucyk7CisgICAgTmF2R2V0RGVmYXVsdERpYWxvZ09wdGlvbnMoJm5hdk9wdGlvbnMpOwogCiAKICAgICAvKiBUT0RPOiBJZiB3ZSBnZXQgYSA6YnJvd3NlIGFyZ3MsIHNldCB0aGUgTXVsdGlwbGUgYml0LiAqLwpAQCAtNDgyOCw4ICs0ODc3LDggQEAKIAkJCSAgICAvKgkgfCAga05hdkFsbG93TXVsdGlwbGVGaWxlcyAqLwogCQkJCSB8ICBrTmF2QWxsb3dTdGF0aW9uZXJ5OwogCi0gICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nICh0aXRsZSwgICAmbmF2T3B0aW9ucy5tZXNzYWdlKTsKLSAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcgKGRmbHQsICAgICZuYXZPcHRpb25zLnNhdmVkRmlsZU5hbWUpOworICAgICh2b2lkKSBDMlBhc2NhbFN0cmluZyh0aXRsZSwgICAmbmF2T3B0aW9ucy5tZXNzYWdlKTsKKyAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcoZGZsdCwgICAgJm5hdk9wdGlvbnMuc2F2ZWRGaWxlTmFtZSk7CiAgICAgLyogQ291bGQgc2V0IGNsaWVudE5hbWU/CiAgICAgICoJCSB3aW5kb3dUaXRsZT8gKHRoZXJlJ3Mgbm8gdGl0bGUgYmFyPykKICAgICAgKi8KQEAgLTQ4MzcsNyArNDg4Niw3IEBACiAgICAgaWYgKHNhdmluZykKICAgICB7CiAJLyogQ2hhbmdlIGZpcnN0IHBhcm0gQUVEZXNjICh0eXBlRlNTKSAqZGVmYXVsdExvY2F0aW9uIHRvIG1hdGNoIGRmbHQgKi8KLQlOYXZQdXRGaWxlIChOVUxMLCAmcmVwbHksICZuYXZPcHRpb25zLCBOVUxMLCAnVEVYVCcsICdWSU0hJywgTlVMTCk7CisJTmF2UHV0RmlsZShOVUxMLCAmcmVwbHksICZuYXZPcHRpb25zLCBOVUxMLCAnVEVYVCcsICdWSU0hJywgTlVMTCk7CiAJaWYgKCFyZXBseS52YWxpZFJlY29yZCkKIAkgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNDg1MSw3ICs0OTAwLDcgQEAKIAogICAgIGZuYW1lcyA9IG5ld19mbmFtZXNfZnJvbV9BRURlc2MoJnJlcGx5LnNlbGVjdGlvbiwgJm51bUZpbGVzLCAmZXJyb3IpOwogCi0gICAgTmF2RGlzcG9zZVJlcGx5ICgmcmVwbHkpOworICAgIE5hdkRpc3Bvc2VSZXBseSgmcmVwbHkpOwogCiAgICAgaWYgKGZuYW1lcykKICAgICB7CkBAIC00ODcwLDI2ICs0OTE5LDI2IEBACiAKICAgICAvKiBUT0RPOiBzcGxpdCBkZmx0IGluIHBhdGggYW5kIGZpbGVuYW1lICovCiAKLSAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcgKHRpdGxlLCAgICZQcm9tcHQpOwotICAgICh2b2lkKSBDMlBhc2NhbFN0cmluZyAoZGZsdCwgICAgJkRlZmF1bHROYW1lKTsKLSAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcgKGluaXRkaXIsICZEaXJlY3RvcnkpOworICAgICh2b2lkKSBDMlBhc2NhbFN0cmluZyh0aXRsZSwgICAmUHJvbXB0KTsKKyAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcoZGZsdCwgICAgJkRlZmF1bHROYW1lKTsKKyAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcoaW5pdGRpciwgJkRpcmVjdG9yeSk7CiAKICAgICBpZiAoc2F2aW5nKQogICAgIHsKIAkvKiBVc2UgYSBjdXN0b24gZmlsdGVyIGluc3RlYWQgb2YgbmlsIEZBUSA5LTQgKi8KLQlTdGFuZGFyZFB1dEZpbGUgKFByb21wdCwgRGVmYXVsdE5hbWUsICAmcmVwbHkpOworCVN0YW5kYXJkUHV0RmlsZShQcm9tcHQsIERlZmF1bHROYW1lLCAgJnJlcGx5KTsKIAlpZiAoIXJlcGx5LnNmR29vZCkKIAkgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0JU3RhbmRhcmRHZXRGaWxlIChuaWwsIC0xLCBmaWxlVHlwZXMsICZyZXBseSk7CisJU3RhbmRhcmRHZXRGaWxlKG5pbCwgLTEsIGZpbGVUeXBlcywgJnJlcGx5KTsKIAlpZiAoIXJlcGx5LnNmR29vZCkKIAkgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyogV29yayBmaW5lIGJ1dCBhcHBlbmQgYSA6IGZvciBuZXcgZmlsZSAqLwotICAgIHJldHVybiAoRnVsbFBhdGhGcm9tRlNTcGVjX3NhdmUgKHJlcGx5LnNmRmlsZSkpOworICAgIHJldHVybiAoRnVsbFBhdGhGcm9tRlNTcGVjX3NhdmUocmVwbHkuc2ZGaWxlKSk7CiAKICAgICAvKiBTaG9ydGVuIHRoZSBmaWxlIG5hbWUgaWYgcG9zc2libGUgKi8KIC8qICAgIG1jaF9kaXJuYW1lKElPYnVmZiwgSU9TSVpFKTsKQEAgLTQ5NDMsOSArNDk5Miw5IEBACiB7CiAjaWYgMCAvKiBVU0VfQ0FSQk9OSVpFRCAqLwogICAgIC8qIFVudGVzdGVkICovCi0gICAgTW92ZURpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaXRlbU51bWJlciwgWCwgWSk7CisgICAgTW92ZURpYWxvZ0l0ZW0odGhlRGlhbG9nLCBpdGVtTnVtYmVyLCBYLCBZKTsKICAgICBpZiAoaW5Cb3ggIT0gbmlsKQotCUdldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaXRlbU51bWJlciwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgaW5Cb3gpOworCUdldERpYWxvZ0l0ZW0odGhlRGlhbG9nLCBpdGVtTnVtYmVyLCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCBpbkJveCk7CiAjZWxzZQogICAgIHNob3J0CWl0ZW1UeXBlOwogICAgIEhhbmRsZQlpdGVtSGFuZGxlOwpAQCAtNDk1NSwxNCArNTAwNCwxNCBAQAogICAgIGlmIChpbkJveCAhPSBuaWwpCiAJaXRlbUJveCA9IGluQm94OwogCi0gICAgR2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpdGVtTnVtYmVyLCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCBpdGVtQm94KTsKLSAgICBPZmZzZXRSZWN0IChpdGVtQm94LCAtaXRlbUJveC0+bGVmdCwgLWl0ZW1Cb3gtPnRvcCk7Ci0gICAgT2Zmc2V0UmVjdCAoaXRlbUJveCwgWCwgWSk7CisgICAgR2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsIGl0ZW1Cb3gpOworICAgIE9mZnNldFJlY3QoaXRlbUJveCwgLWl0ZW1Cb3gtPmxlZnQsIC1pdGVtQm94LT50b3ApOworICAgIE9mZnNldFJlY3QoaXRlbUJveCwgWCwgWSk7CiAgICAgLyogVG8gbW92ZSBhIGNvbnRyb2wgKGxpa2UgYSBidXR0b24pIHdlIG5lZWQgdG8gY2FsbCBib3RoCiAgICAgICogTW92ZUNvbnRyb2wgYW5kIFNldERpYWxvZ0l0ZW0uIEZBUSA2LTE4ICovCiAgICAgaWYgKDEpIC8qKGl0ZW1UeXBlICYga0NvbnRyb2xEaWFsb2dJdGVtKSAqLwotCU1vdmVDb250cm9sICgoQ29udHJvbFJlZikgaXRlbUhhbmRsZSwgWCwgWSk7Ci0gICAgU2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpdGVtTnVtYmVyLCBpdGVtVHlwZSwgaXRlbUhhbmRsZSwgaXRlbUJveCk7CisJTW92ZUNvbnRyb2woKENvbnRyb2xSZWYpIGl0ZW1IYW5kbGUsIFgsIFkpOworICAgIFNldERpYWxvZ0l0ZW0odGhlRGlhbG9nLCBpdGVtTnVtYmVyLCBpdGVtVHlwZSwgaXRlbUhhbmRsZSwgaXRlbUJveCk7CiAjZW5kaWYKIH0KIApAQCAtNDk3Nyw3ICs1MDI2LDcgQEAKICAgICBIYW5kbGUJaXRlbUhhbmRsZTsKICAgICBSZWN0CWl0ZW1Cb3g7CiAKLSAgICBHZXREaWFsb2dJdGVtICh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsICZpdGVtQm94KTsKKyAgICBHZXREaWFsb2dJdGVtKHRoZURpYWxvZywgaXRlbU51bWJlciwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJml0ZW1Cb3gpOwogCiAgICAgLyogV2hlbiB3aWR0aCBvciBoZWlnaHQgaXMgemVybyBkbyBub3QgY2hhbmdlIGl0ICovCiAgICAgaWYgKHdpZHRoICA9PSAwKQpAQCAtNDk4Niw3ICs1MDM1LDcgQEAKIAloZWlnaHQgPSBpdGVtQm94LmJvdHRvbSAtIGl0ZW1Cb3gudG9wOwogCiAjaWYgMCAvKiBVU0VfQ0FSQk9OSVpFRCAqLwotICAgIFNpemVEaWFsb2dJdGVtICh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsIHdpZHRoLCBoZWlnaHQpOyAvKiBVbnRlc3RlZCAqLworICAgIFNpemVEaWFsb2dJdGVtKHRoZURpYWxvZywgaXRlbU51bWJlciwgd2lkdGgsIGhlaWdodCk7IC8qIFVudGVzdGVkICovCiAjZWxzZQogICAgIC8qIFJlc2l6ZSB0aGUgYm91bmRpbmcgYm94ICovCiAgICAgaXRlbUJveC5yaWdodCAgPSBpdGVtQm94LmxlZnQgKyB3aWR0aDsKQEAgLTQ5OTUsMTAgKzUwNDQsMTAgQEAKICAgICAvKiBUbyByZXNpemUgYSBjb250cm9sIChsaWtlIGEgYnV0dG9uKSB3ZSBuZWVkIHRvIGNhbGwgYm90aAogICAgICAqIFNpemVDb250cm9sIGFuZCBTZXREaWFsb2dJdGVtLiAoZGVkdWN0ZWQgZnJvbSBGQVEgNi0xOCkgKi8KICAgICBpZiAoaXRlbVR5cGUgJiBrQ29udHJvbERpYWxvZ0l0ZW0pCi0JU2l6ZUNvbnRyb2wgKChDb250cm9sUmVmKSBpdGVtSGFuZGxlLCB3aWR0aCwgaGVpZ2h0KTsKKwlTaXplQ29udHJvbCgoQ29udHJvbFJlZikgaXRlbUhhbmRsZSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICAvKiBDb25maWd1cmUgYmFjayB0aGUgaXRlbSAqLwotICAgIFNldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaXRlbU51bWJlciwgaXRlbVR5cGUsIGl0ZW1IYW5kbGUsICZpdGVtQm94KTsKKyAgICBTZXREaWFsb2dJdGVtKHRoZURpYWxvZywgaXRlbU51bWJlciwgaXRlbVR5cGUsIGl0ZW1IYW5kbGUsICZpdGVtQm94KTsKICNlbmRpZgogfQogCkBAIC01MDEyLDEyICs1MDYxLDEyIEBACiAgICAgSGFuZGxlCWl0ZW1IYW5kbGU7CiAgICAgUmVjdAlpdGVtQm94OwogCi0gICAgR2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpdGVtTnVtYmVyLCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmaXRlbUJveCk7CisgICAgR2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGl0ZW1OdW1iZXIsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsICZpdGVtQm94KTsKIAogICAgIGlmIChpdGVtVHlwZSAmIGtDb250cm9sRGlhbG9nSXRlbSkKLQlTZXRDb250cm9sVGl0bGUgKChDb250cm9sUmVmKSBpdGVtSGFuZGxlLCBpdGVtTmFtZSk7CisJU2V0Q29udHJvbFRpdGxlKChDb250cm9sUmVmKSBpdGVtSGFuZGxlLCBpdGVtTmFtZSk7CiAgICAgZWxzZQotCVNldERpYWxvZ0l0ZW1UZXh0IChpdGVtSGFuZGxlLCBpdGVtTmFtZSk7CisJU2V0RGlhbG9nSXRlbVRleHQoaXRlbUhhbmRsZSwgaXRlbU5hbWUpOwogfQogCiAgICAgaW50CkBAIC01MDcyLDcgKzUxMjEsNyBAQAogICAgIHZlcnRpY2FsID0gKHZpbV9zdHJjaHIocF9nbywgR09fVkVSVElDQUwpICE9IE5VTEwpOwogCiAgICAgLyogQ3JlYXRlIGEgbmV3IERpYWxvZyBCb3ggZnJvbSB0ZW1wbGF0ZS4gKi8KLSAgICB0aGVEaWFsb2cgPSBHZXROZXdEaWFsb2cgKDEyOSwgbmlsLCAoV2luZG93UmVmKSAtMSk7CisgICAgdGhlRGlhbG9nID0gR2V0TmV3RGlhbG9nKDEyOSwgbmlsLCAoV2luZG93UmVmKSAtMSk7CiAKICAgICAvKiBHZXQgdGhlIFdpbmRvd1JlZiAqLwogICAgIHRoZVdpbmRvdyA9IEdldERpYWxvZ1dpbmRvdyh0aGVEaWFsb2cpOwpAQCAtNTA4MywxNSArNTEzMiwxNSBAQAogICAgICAqICAgIHdpdGhpbiBhIHZpc2libGUgd2luZG93LiAobm9uLUNhcmJvbiBNYWNPUyA5KQogICAgICAqIENvdWxkIGJlIGF2b2lkZWQgYnkgY2hhbmdpbmcgdGhlIHJlc291cmNlLgogICAgICAqLwotICAgIEhpZGVXaW5kb3cgKHRoZVdpbmRvdyk7CisgICAgSGlkZVdpbmRvdyh0aGVXaW5kb3cpOwogCiAgICAgLyogQ2hhbmdlIHRoZSBncmFwaGljYWwgcG9ydCB0byB0aGUgZGlhbG9nLAogICAgICAqIHNvIHdlIGNhbiBtZWFzdXJlIHRoZSB0ZXh0IHdpdGggdGhlIHByb3BlciBmb250ICovCi0gICAgR2V0UG9ydCAoJm9sZFBvcnQpOworICAgIEdldFBvcnQoJm9sZFBvcnQpOwogI2lmZGVmIFVTRV9DQVJCT05JWkVECi0gICAgU2V0UG9ydERpYWxvZ1BvcnQgKHRoZURpYWxvZyk7CisgICAgU2V0UG9ydERpYWxvZ1BvcnQodGhlRGlhbG9nKTsKICNlbHNlCi0gICAgU2V0UG9ydCAodGhlRGlhbG9nKTsKKyAgICBTZXRQb3J0KHRoZURpYWxvZyk7CiAjZW5kaWYKIAogICAgIC8qIEdldCB0aGUgaW5mbyBhYm91dCB0aGUgZGVmYXVsdCB0ZXh0LApAQCAtNTEwMiwxMiArNTE1MSwxMiBAQAogICAgIC8qCVNldCB0aGUgZGlhbG9nIHRpdGxlICovCiAgICAgaWYgKHRpdGxlICE9IE5VTEwpCiAgICAgewotCSh2b2lkKSBDMlBhc2NhbFN0cmluZyAodGl0bGUsICZQYXNjYWxUaXRsZSk7Ci0JU2V0V1RpdGxlICh0aGVXaW5kb3csIFBhc2NhbFRpdGxlKTsKKwkodm9pZCkgQzJQYXNjYWxTdHJpbmcodGl0bGUsICZQYXNjYWxUaXRsZSk7CisJU2V0V1RpdGxlKHRoZVdpbmRvdywgUGFzY2FsVGl0bGUpOwogICAgIH0KIAogICAgIC8qIENyZWF0ZXMgdGhlIGJ1dHRvbnMgYW5kIGFkZCB0aGVtIHRvIHRoZSBEaWFsb2cgQm94LiAqLwotICAgIGJ1dHRvbkRJVEwgPSBHZXRSZXNvdXJjZSAoJ0RJVEwnLCAxMzApOworICAgIGJ1dHRvbkRJVEwgPSBHZXRSZXNvdXJjZSgnRElUTCcsIDEzMCk7CiAgICAgYnV0dG9uQ2hhciA9IGJ1dHRvbnM7CiAgICAgYnV0dG9uID0gMDsKIApAQCAtNTEyNiwzMCArNTE3NSwzMCBAQAogCW5hbWVbMF0gPSBsZW47CiAKIAkvKiBBZGQgdGhlIGJ1dHRvbiAqLwotCUFwcGVuZERJVEwgKHRoZURpYWxvZywgYnV0dG9uRElUTCwgb3ZlcmxheURJVEwpOyAvKiBhcHBlbmRESVRMUmlnaHQpOyAqLworCUFwcGVuZERJVEwodGhlRGlhbG9nLCBidXR0b25ESVRMLCBvdmVybGF5RElUTCk7IC8qIGFwcGVuZERJVExSaWdodCk7ICovCiAKIAkvKiBDaGFuZ2UgdGhlIGJ1dHRvbidzIG5hbWUgKi8KLQltYWNTZXREaWFsb2dJdGVtVGV4dCAodGhlRGlhbG9nLCBidXR0b24sIG5hbWUpOworCW1hY1NldERpYWxvZ0l0ZW1UZXh0KHRoZURpYWxvZywgYnV0dG9uLCBuYW1lKTsKIAogCS8qIFJlc2l6ZSB0aGUgYnV0dG9uIHRvIGZpdCBpdHMgbmFtZSAqLwotCXdpZHRoID0gU3RyaW5nV2lkdGggKG5hbWUpICsgMiAqIGRmbHRCdXR0b25FZGdlOworCXdpZHRoID0gU3RyaW5nV2lkdGgobmFtZSkgKyAyICogZGZsdEJ1dHRvbkVkZ2U7CiAJLyogTGltaXRlIHRoZSBzaXplIG9mIGFueSBidXR0b24gdG8gYW4gYWNjZXB0YWJsZSB2YWx1ZS4gKi8KIAkvKiBUT0RPOiBTaG91bGQgYmUgYmFzZWQgb24gdGhlIG1lc3NhZ2Ugd2lkdGggKi8KIAlpZiAod2lkdGggPiBtYXhCdXR0b25XaWR0aCkKIAkgICAgd2lkdGggPSBtYXhCdXR0b25XaWR0aDsKLQltYWNTaXplRGlhbG9nSXRlbSAodGhlRGlhbG9nLCBidXR0b24sIHdpZHRoLCAwKTsKKwltYWNTaXplRGlhbG9nSXRlbSh0aGVEaWFsb2csIGJ1dHRvbiwgd2lkdGgsIDApOwogCiAJdG90YWxCdXR0b25XaWR0aCArPSB3aWR0aDsKIAogCWlmICh3aWR0aCA+IHdpZGVzdEJ1dHRvbikKIAkgICAgd2lkZXN0QnV0dG9uID0gd2lkdGg7CiAgICAgfQotICAgIFJlbGVhc2VSZXNvdXJjZSAoYnV0dG9uRElUTCk7CisgICAgUmVsZWFzZVJlc291cmNlKGJ1dHRvbkRJVEwpOwogICAgIGxhc3RCdXR0b24gPSBidXR0b247CiAKICAgICAvKiBBZGQgdGhlIGljb24gdG8gdGhlIERpYWxvZyBCb3guICovCiAgICAgaWNvbkl0bS5pZHggPSBsYXN0QnV0dG9uICsgMTsKLSAgICBpY29uRElUTCA9IEdldFJlc291cmNlICgnRElUTCcsIDEzMSk7CisgICAgaWNvbkRJVEwgPSBHZXRSZXNvdXJjZSgnRElUTCcsIDEzMSk7CiAgICAgc3dpdGNoICh0eXBlKQogICAgIHsKIAljYXNlIFZJTV9HRU5FUklDOiAgdXNlSWNvbiA9IGtOb3RlSWNvbjsKQEAgLTUxNTksNDEgKzUyMDgsNDEgQEAKIAljYXNlIFZJTV9RVUVTVElPTjogdXNlSWNvbiA9IGtOb3RlSWNvbjsKIAlkZWZhdWx0OiAgICAgIHVzZUljb24gPSBrU3RvcEljb247CiAgICAgfTsKLSAgICBBcHBlbmRESVRMICh0aGVEaWFsb2csIGljb25ESVRMLCBvdmVybGF5RElUTCk7Ci0gICAgUmVsZWFzZVJlc291cmNlIChpY29uRElUTCk7Ci0gICAgR2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpY29uSXRtLmlkeCwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmJveCk7CisgICAgQXBwZW5kRElUTCh0aGVEaWFsb2csIGljb25ESVRMLCBvdmVybGF5RElUTCk7CisgICAgUmVsZWFzZVJlc291cmNlKGljb25ESVRMKTsKKyAgICBHZXREaWFsb2dJdGVtKHRoZURpYWxvZywgaWNvbkl0bS5pZHgsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsICZib3gpOwogICAgIC8qIFRPRE86IFNob3VsZCB0aGUgaXRlbSBiZSBmcmVlZD8gKi8KLSAgICBpY29uSGFuZGxlID0gR2V0SWNvbiAodXNlSWNvbik7Ci0gICAgU2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpY29uSXRtLmlkeCwgaXRlbVR5cGUsIGljb25IYW5kbGUsICZib3gpOworICAgIGljb25IYW5kbGUgPSBHZXRJY29uKHVzZUljb24pOworICAgIFNldERpYWxvZ0l0ZW0odGhlRGlhbG9nLCBpY29uSXRtLmlkeCwgaXRlbVR5cGUsIGljb25IYW5kbGUsICZib3gpOwogCiAgICAgLyogQWRkIHRoZSBtZXNzYWdlIHRvIHRoZSBEaWFsb2cgYm94LiAqLwogICAgIG1lc3NhZ2VJdG0uaWR4ID0gbGFzdEJ1dHRvbiArIDI7Ci0gICAgbWVzc2FnZURJVEwgPSBHZXRSZXNvdXJjZSAoJ0RJVEwnLCAxMzIpOwotICAgIEFwcGVuZERJVEwgKHRoZURpYWxvZywgbWVzc2FnZURJVEwsIG92ZXJsYXlESVRMKTsKLSAgICBSZWxlYXNlUmVzb3VyY2UgKG1lc3NhZ2VESVRMKTsKLSAgICBHZXREaWFsb2dJdGVtICh0aGVEaWFsb2csIG1lc3NhZ2VJdG0uaWR4LCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmYm94KTsKLSAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcgKG1lc3NhZ2UsICZuYW1lKTsKLSAgICBTZXREaWFsb2dJdGVtVGV4dCAoaXRlbUhhbmRsZSwgbmFtZSk7Ci0gICAgbWVzc2FnZUl0bS53aWR0aCA9IFN0cmluZ1dpZHRoIChuYW1lKTsKKyAgICBtZXNzYWdlRElUTCA9IEdldFJlc291cmNlKCdESVRMJywgMTMyKTsKKyAgICBBcHBlbmRESVRMKHRoZURpYWxvZywgbWVzc2FnZURJVEwsIG92ZXJsYXlESVRMKTsKKyAgICBSZWxlYXNlUmVzb3VyY2UobWVzc2FnZURJVEwpOworICAgIEdldERpYWxvZ0l0ZW0odGhlRGlhbG9nLCBtZXNzYWdlSXRtLmlkeCwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmJveCk7CisgICAgKHZvaWQpIEMyUGFzY2FsU3RyaW5nKG1lc3NhZ2UsICZuYW1lKTsKKyAgICBTZXREaWFsb2dJdGVtVGV4dChpdGVtSGFuZGxlLCBuYW1lKTsKKyAgICBtZXNzYWdlSXRtLndpZHRoID0gU3RyaW5nV2lkdGgobmFtZSk7CiAKICAgICAvKiBBZGQgdGhlIGlucHV0IGJveCBpZiBuZWVkZWQgKi8KICAgICBpZiAodGV4dGZpZWxkICE9IE5VTEwpCiAgICAgewogCS8qIENoZWF0IGZvciBub3cgcmV1c2UgdGhlIG1lc3NhZ2UgYW5kIGNvbnZldCB0byB0ZXh0IGVkaXQgKi8KIAlpbnB1dEl0bS5pZHggPSBsYXN0QnV0dG9uICsgMzsKLQlpbnB1dERJVEwgPSBHZXRSZXNvdXJjZSAoJ0RJVEwnLCAxMzIpOwotCUFwcGVuZERJVEwgKHRoZURpYWxvZywgaW5wdXRESVRMLCBvdmVybGF5RElUTCk7Ci0JUmVsZWFzZVJlc291cmNlIChpbnB1dERJVEwpOwotCUdldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmYm94KTsKLS8qCSAgU2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpbnB1dEl0bS5pZHgsIGtFZGl0VGV4dERpYWxvZ0l0ZW0sIGl0ZW1IYW5kbGUsICZib3gpOyovCi0JKHZvaWQpIEMyUGFzY2FsU3RyaW5nICh0ZXh0ZmllbGQsICZuYW1lKTsKLQlTZXREaWFsb2dJdGVtVGV4dCAoaXRlbUhhbmRsZSwgbmFtZSk7Ci0JaW5wdXRJdG0ud2lkdGggPSBTdHJpbmdXaWR0aCAobmFtZSk7CisJaW5wdXRESVRMID0gR2V0UmVzb3VyY2UoJ0RJVEwnLCAxMzIpOworCUFwcGVuZERJVEwodGhlRGlhbG9nLCBpbnB1dERJVEwsIG92ZXJsYXlESVRMKTsKKwlSZWxlYXNlUmVzb3VyY2UoaW5wdXRESVRMKTsKKwlHZXREaWFsb2dJdGVtKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmYm94KTsKKy8qCSAgU2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwga0VkaXRUZXh0RGlhbG9nSXRlbSwgaXRlbUhhbmRsZSwgJmJveCk7Ki8KKwkodm9pZCkgQzJQYXNjYWxTdHJpbmcodGV4dGZpZWxkLCAmbmFtZSk7CisJU2V0RGlhbG9nSXRlbVRleHQoaXRlbUhhbmRsZSwgbmFtZSk7CisJaW5wdXRJdG0ud2lkdGggPSBTdHJpbmdXaWR0aChuYW1lKTsKICAgICB9CiAKICAgICAvKiBTZXQgdGhlIDxFTlRFUj4gYW5kIDxFU0M+IGJ1dHRvbi4gKi8KLSAgICBTZXREaWFsb2dEZWZhdWx0SXRlbSAodGhlRGlhbG9nLCBkZmx0YnV0dG9uKTsKLSAgICBTZXREaWFsb2dDYW5jZWxJdGVtICh0aGVEaWFsb2csIDApOworICAgIFNldERpYWxvZ0RlZmF1bHRJdGVtKHRoZURpYWxvZywgZGZsdGJ1dHRvbik7CisgICAgU2V0RGlhbG9nQ2FuY2VsSXRlbSh0aGVEaWFsb2csIDApOwogCiAgICAgLyogUmVwb3NpdGlvbiBlbGVtZW50ICovCiAKQEAgLTUyMDIsMjYgKzUyNTEsMjYgQEAKIAl2ZXJ0aWNhbCA9IFRSVUU7CiAKICAgICAvKiBQbGFjZSBpY29uICovCi0gICAgbWFjTW92ZURpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaWNvbkl0bS5pZHgsIGRmbHRJY29uU2lkZVNwYWNlLCBkZmx0RWxlbWVudFNwYWNpbmcsICZib3gpOworICAgIG1hY01vdmVEaWFsb2dJdGVtKHRoZURpYWxvZywgaWNvbkl0bS5pZHgsIGRmbHRJY29uU2lkZVNwYWNlLCBkZmx0RWxlbWVudFNwYWNpbmcsICZib3gpOwogICAgIGljb25JdG0uYm94LnJpZ2h0ID0gYm94LnJpZ2h0OwogICAgIGljb25JdG0uYm94LmJvdHRvbSA9IGJveC5ib3R0b207CiAKICAgICAvKiBQbGFjZSBNZXNzYWdlICovCiAgICAgbWVzc2FnZUl0bS5ib3gubGVmdCA9IGljb25JdG0uYm94LnJpZ2h0ICsgZGZsdEljb25TaWRlU3BhY2U7Ci0gICAgbWFjU2l6ZURpYWxvZ0l0ZW0gKHRoZURpYWxvZywgbWVzc2FnZUl0bS5pZHgsIDAsICBtZXNzYWdlTGluZXMgKiAodGV4dEZvbnRJbmZvLmFzY2VudCArIHRleHRGb250SW5mby5kZXNjZW50KSk7Ci0gICAgbWFjTW92ZURpYWxvZ0l0ZW0gKHRoZURpYWxvZywgbWVzc2FnZUl0bS5pZHgsIG1lc3NhZ2VJdG0uYm94LmxlZnQsIGRmbHRFbGVtZW50U3BhY2luZywgJm1lc3NhZ2VJdG0uYm94KTsKKyAgICBtYWNTaXplRGlhbG9nSXRlbSh0aGVEaWFsb2csIG1lc3NhZ2VJdG0uaWR4LCAwLCAgbWVzc2FnZUxpbmVzICogKHRleHRGb250SW5mby5hc2NlbnQgKyB0ZXh0Rm9udEluZm8uZGVzY2VudCkpOworICAgIG1hY01vdmVEaWFsb2dJdGVtKHRoZURpYWxvZywgbWVzc2FnZUl0bS5pZHgsIG1lc3NhZ2VJdG0uYm94LmxlZnQsIGRmbHRFbGVtZW50U3BhY2luZywgJm1lc3NhZ2VJdG0uYm94KTsKIAogICAgIC8qIFBsYWNlIElucHV0ICovCiAgICAgaWYgKHRleHRmaWVsZCAhPSBOVUxMKQogICAgIHsKIAlpbnB1dEl0bS5ib3gubGVmdCA9IG1lc3NhZ2VJdG0uYm94LmxlZnQ7CiAJaW5wdXRJdG0uYm94LnRvcCAgPSBtZXNzYWdlSXRtLmJveC5ib3R0b20gKyBkZmx0RWxlbWVudFNwYWNpbmc7Ci0JbWFjU2l6ZURpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCAwLCB0ZXh0Rm9udEluZm8uYXNjZW50ICsgdGV4dEZvbnRJbmZvLmRlc2NlbnQpOwotCW1hY01vdmVEaWFsb2dJdGVtICh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgaW5wdXRJdG0uYm94LmxlZnQsIGlucHV0SXRtLmJveC50b3AsICZpbnB1dEl0bS5ib3gpOworCW1hY1NpemVEaWFsb2dJdGVtKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCAwLCB0ZXh0Rm9udEluZm8uYXNjZW50ICsgdGV4dEZvbnRJbmZvLmRlc2NlbnQpOworCW1hY01vdmVEaWFsb2dJdGVtKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCBpbnB1dEl0bS5ib3gubGVmdCwgaW5wdXRJdG0uYm94LnRvcCwgJmlucHV0SXRtLmJveCk7CiAJLyogQ29udmVydCB0aGUgc3RhdGljIHRleHQgaW50byBhIHRleHQgZWRpdC4KIAkgKiBGb3Igc29tZSByZWFzb24gdGhpcyBjaGFuZ2UgbmVlZCB0byBiZSBkb25lIGxhc3QgKERhbnkpICovCi0JR2V0RGlhbG9nSXRlbSAodGhlRGlhbG9nLCBpbnB1dEl0bS5pZHgsICZpdGVtVHlwZSwgJml0ZW1IYW5kbGUsICZpbnB1dEl0bS5ib3gpOwotCVNldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCBrRWRpdFRleHREaWFsb2dJdGVtLCBpdGVtSGFuZGxlLCAmaW5wdXRJdG0uYm94KTsKKwlHZXREaWFsb2dJdGVtKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmaW5wdXRJdG0uYm94KTsKKwlTZXREaWFsb2dJdGVtKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCBrRWRpdFRleHREaWFsb2dJdGVtLCBpdGVtSGFuZGxlLCAmaW5wdXRJdG0uYm94KTsKIAlTZWxlY3REaWFsb2dJdGVtVGV4dCh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgMCwgMzI3NjcpOwogICAgIH0KIApAQCAtNTI0MCwxMiArNTI4OSwxMiBAQAogICAgIGZvciAoYnV0dG9uPTE7IGJ1dHRvbiA8PSBsYXN0QnV0dG9uOyBidXR0b24rKykKICAgICB7CiAKLQltYWNNb3ZlRGlhbG9nSXRlbSAodGhlRGlhbG9nLCBidXR0b24sIGJ1dHRvbkl0bS5ib3gubGVmdCwgYnV0dG9uSXRtLmJveC50b3AsICZib3gpOworCW1hY01vdmVEaWFsb2dJdGVtKHRoZURpYWxvZywgYnV0dG9uLCBidXR0b25JdG0uYm94LmxlZnQsIGJ1dHRvbkl0bS5ib3gudG9wLCAmYm94KTsKIAkvKiBXaXRoIHZlcnRpY2FsLCBpdCdzIGJldHRlciB0byBoYXZlIGFsbCBidXR0b24gdGhlIHNhbWUgbGVuZ2h0ICovCiAJaWYgKHZlcnRpY2FsKQogCXsKLQkgICAgbWFjU2l6ZURpYWxvZ0l0ZW0gKHRoZURpYWxvZywgYnV0dG9uLCB3aWRlc3RCdXR0b24sIDApOwotCSAgICBHZXREaWFsb2dJdGVtICh0aGVEaWFsb2csIGJ1dHRvbiwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmJveCk7CisJICAgIG1hY1NpemVEaWFsb2dJdGVtKHRoZURpYWxvZywgYnV0dG9uLCB3aWRlc3RCdXR0b24sIDApOworCSAgICBHZXREaWFsb2dJdGVtKHRoZURpYWxvZywgYnV0dG9uLCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmYm94KTsKIAl9CiAJLyogQ2FsY3VsYXRlIHBvc2l0aW9uIG9mIG5leHQgYnV0dG9uICovCiAJaWYgKHZlcnRpY2FsKQpAQCAtNTI2MCw3ICs1MzA5LDcgQEAKIAogI2lmZGVmIFVTRV9DQVJCT05JWkVECiAgICAgLyogTWFnaWMgcmVzaXplICovCi0gICAgQXV0b1NpemVEaWFsb2cgKHRoZURpYWxvZyk7CisgICAgQXV0b1NpemVEaWFsb2codGhlRGlhbG9nKTsKICAgICAvKiBOZWVkIGEgaG9yaXpvbnRhbCByZXNpemUgYW55d2F5IHNvIG5vdCB0aGF0IHVzZWZ1bCAqLwogI2VuZGlmCiAKQEAgLTUyNjksMjcgKzUzMTgsMjcgQEAKIC8qICBCcmluZ1RvRnJvbnQodGhlV2luZG93KTsgKi8KICAgICBTZWxlY3RXaW5kb3codGhlV2luZG93KTsKIAotLyogIERyYXdEaWFsb2cgKHRoZURpYWxvZyk7ICovCisvKiAgRHJhd0RpYWxvZyh0aGVEaWFsb2cpOyAqLwogI2lmIDAKLSAgICBHZXRQb3J0ICgmb2xkUG9ydCk7CisgICAgR2V0UG9ydCgmb2xkUG9ydCk7CiAjaWZkZWYgVVNFX0NBUkJPTklaRUQKLSAgICBTZXRQb3J0RGlhbG9nUG9ydCAodGhlRGlhbG9nKTsKKyAgICBTZXRQb3J0RGlhbG9nUG9ydCh0aGVEaWFsb2cpOwogI2Vsc2UKLSAgICBTZXRQb3J0ICh0aGVEaWFsb2cpOworICAgIFNldFBvcnQodGhlRGlhbG9nKTsKICNlbmRpZgogI2VuZGlmCiAKICAgICAvKiBIYW5nIHVudGlsIG9uZSBvZiB0aGUgYnV0dG9uIGlzIGhpdCAqLwogICAgIGRvCiAgICAgewotCU1vZGFsRGlhbG9nIChuaWwsICZpdGVtSGl0KTsKKwlNb2RhbERpYWxvZyhuaWwsICZpdGVtSGl0KTsKICAgICB9IHdoaWxlICgoaXRlbUhpdCA8IDEpIHx8IChpdGVtSGl0ID4gbGFzdEJ1dHRvbikpOwogCiAgICAgLyogQ29weSBiYWNrIHRoZSB0ZXh0IGVudGVyZWQgYnkgdGhlIHVzZXIgaW50byB0aGUgcGFyYW0gKi8KICAgICBpZiAodGV4dGZpZWxkICE9IE5VTEwpCiAgICAgewotCUdldERpYWxvZ0l0ZW0gKHRoZURpYWxvZywgaW5wdXRJdG0uaWR4LCAmaXRlbVR5cGUsICZpdGVtSGFuZGxlLCAmYm94KTsKLQlHZXREaWFsb2dJdGVtVGV4dCAoaXRlbUhhbmRsZSwgKGNoYXJfdSAqKSAmbmFtZSk7CisJR2V0RGlhbG9nSXRlbSh0aGVEaWFsb2csIGlucHV0SXRtLmlkeCwgJml0ZW1UeXBlLCAmaXRlbUhhbmRsZSwgJmJveCk7CisJR2V0RGlhbG9nSXRlbVRleHQoaXRlbUhhbmRsZSwgKGNoYXJfdSAqKSAmbmFtZSk7CiAjaWYgSU9TSVpFIDwgMjU2CiAJLyogVHJ1bmNhdGUgdGhlIG5hbWUgdG8gSU9TSVpFIGlmIG5lZWRlZCAqLwogCWlmIChuYW1lWzBdID4gSU9TSVpFKQpAQCAtNTMwMCwxMCArNTM0OSwxMCBAQAogICAgIH0KIAogICAgIC8qIFJlc3RvcmUgdGhlIG9yaWdpbmFsIGdyYXBoaWNhbCBwb3J0ICovCi0gICAgU2V0UG9ydCAob2xkUG9ydCk7CisgICAgU2V0UG9ydChvbGRQb3J0KTsKIAogICAgIC8qIEdldCByaWRlIG9mIHRoIGVkaWFsb2cgKGZyZWUgbWVtb3J5KSAqLwotICAgIERpc3Bvc2VEaWFsb2cgKHRoZURpYWxvZyk7CisgICAgRGlzcG9zZURpYWxvZyh0aGVEaWFsb2cpOwogCiAgICAgcmV0dXJuIGl0ZW1IaXQ7CiAvKgpAQCAtNTMzOSw4ICs1Mzg4LDggQEAKIAkJICAgIHBFcnJvclswXSA9IFNUUkxFTihwKTsKIAogCQlTVFJOQ1BZKCZwRXJyb3JbMV0sIHAsIHBFcnJvclswXSk7Ci0JCVBhcmFtVGV4dCAocEVycm9yLCBuaWwsIG5pbCwgbmlsKTsKLQkJQWxlcnQgKDEyOCwgbmlsKTsKKwkJUGFyYW1UZXh0KHBFcnJvciwgbmlsLCBuaWwsIG5pbCk7CisJCUFsZXJ0KDEyOCwgbmlsKTsKIAkJYnJlYWs7CiAJCS8qIFRPRE86IGhhbmRsZWQgbWVzc2FnZSBsb25nZXIgdGhhbiAyNTYgY2hhcnMKIAkJICoJIHVzZSBhdXRvLXNpemVhYmxlIGFsZXJ0CkBAIC01Mzg4LDggKzU0MzcsOCBAQAogICAgIEN1cnNvckRldmljZVB0ciBteU1vdXNlOwogICAgIFBvaW50CSAgICB3aGVyZTsKIAotICAgIGlmICggICBOR2V0VHJhcEFkZHJlc3MgKF9DdXJzb3JEZXZpY2VEaXNwYXRjaCwgVG9vbFRyYXApCi0JIT0gTkdldFRyYXBBZGRyZXNzIChfVW5pbXBsZW1lbnRlZCwgICBUb29sVHJhcCkgKQorICAgIGlmICggICBOR2V0VHJhcEFkZHJlc3MoX0N1cnNvckRldmljZURpc3BhdGNoLCBUb29sVHJhcCkKKwkhPSBOR2V0VHJhcEFkZHJlc3MoX1VuaW1wbGVtZW50ZWQsICAgVG9vbFRyYXApKQogICAgIHsKIAkvKiBOZXcgd2F5ICovCiAKQEAgLTU0MDcsOSArNTQ1Niw5IEBACiAJICAgIC8qIEdldCB0aGUgbmV4dCBjdXJzb3IgZGV2aWNlICovCiAJICAgIEN1cnNvckRldmljZU5leHREZXZpY2UoJm15TW91c2UpOwogCX0KLQl3aGlsZSAoIChteU1vdXNlICE9IG5pbCkgJiYgKG15TW91c2UtPmNudEJ1dHRvbnMgIT0gMSkgKTsKKwl3aGlsZSAoKG15TW91c2UgIT0gbmlsKSAmJiAobXlNb3VzZS0+Y250QnV0dG9ucyAhPSAxKSk7CiAKLQlDdXJzb3JEZXZpY2VNb3ZlVG8gKG15TW91c2UsIHgsIHkpOworCUN1cnNvckRldmljZU1vdmVUbyhteU1vdXNlLCB4LCB5KTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTU0NDUsMTAgKzU0OTQsMTAgQEAKICAgICBHcmFmUHRyCXNhdmVQb3J0OwogCiAgICAgLyogU2F2ZSBDdXJyZW50IFBvcnQ6IE9uIE1hY09TIFggd2Ugc2VlbSB0byBsb3NlIHRoZSBwb3J0ICovCi0gICAgR2V0UG9ydCAoJnNhdmVQb3J0KTsgLypPU1gqLworICAgIEdldFBvcnQoJnNhdmVQb3J0KTsgLypPU1gqLwogCi0gICAgR2V0TW91c2UgKCZ3aGVyZSk7Ci0gICAgTG9jYWxUb0dsb2JhbCAoJndoZXJlKTsgLypPU1gqLworICAgIEdldE1vdXNlKCZ3aGVyZSk7CisgICAgTG9jYWxUb0dsb2JhbCgmd2hlcmUpOyAvKk9TWCovCiAgICAgQ250eE1lbnUgPSBtZW51LT5zdWJtZW51X2hhbmRsZTsKIAogICAgIC8qIFRPRE86IEdldCB0aGUgdGV4dCBzZWxlY3Rpb24gZnJvbSBWaW0gKi8KQEAgLTU0NjMsNyArNTUxMiw3IEBACiAJICAgIC8qIEhhbmRsZSB0aGUgbWVudSBDbnR4TWVudUlELCBDbnR4TWVudUl0ZW0gKi8KIAkgICAgLyogVGhlIHN1Ym1lbnUgY2FuIGJlIGhhbmRsZSBkaXJlY3RseSBieSBndWlfbWFjX2hhbmRsZV9tZW51ICovCiAJICAgIC8qIEJ1dCB3aGF0IGFib3V0IHRoZSBjdXJyZW50IG1lbnUsIGlzIHRoZSBtZW51IGNoYW5nZWQgYnkgQ29udGV4dHVhbE1lbnVTZWxlY3QgKi8KLQkgICAgZ3VpX21hY19oYW5kbGVfbWVudSAoKENudHhNZW51SUQgPDwgMTYpICsgQ250eE1lbnVJdGVtKTsKKwkgICAgZ3VpX21hY19oYW5kbGVfbWVudSgoQ250eE1lbnVJRCA8PCAxNikgKyBDbnR4TWVudUl0ZW0pOwogCX0KIAllbHNlIGlmIChDbnR4TWVudUlEID09IGtDTVNob3dIZWxwU2VsZWN0ZWQpCiAJewpAQCAtNTQ3Miw3ICs1NTIxLDcgQEAKICAgICB9CiAKICAgICAvKiBSZXN0b3JlIG9yaWdpbmFsIFBvcnQgKi8KLSAgICBTZXRQb3J0IChzYXZlUG9ydCk7IC8qT1NYKi8KKyAgICBTZXRQb3J0KHNhdmVQb3J0KTsgLypPU1gqLwogI2VuZGlmCiB9CiAKQEAgLTU0ODIsMTAgKzU1MzEsMTAgQEAKIG1jaF9wb3N0X2J1ZmZlcl93cml0ZShidWZfVCAqYnVmKQogewogIyBpZmRlZiBVU0VfU0lPVVgKLSAgICBwcmludGYgKCJXcml0aW5nIEJ1Zi4uLlxuIik7CisgICAgcHJpbnRmKCJXcml0aW5nIEJ1Zi4uLlxuIik7CiAjIGVuZGlmCi0gICAgR2V0RlNTcGVjRnJvbVBhdGggKGJ1Zi0+Yl9mZm5hbWUsICZidWYtPmJfRlNTcGVjKTsKLSAgICBTZW5kX0tBSExfTU9EX0FFIChidWYpOworICAgIEdldEZTU3BlY0Zyb21QYXRoKGJ1Zi0+Yl9mZm5hbWUsICZidWYtPmJfRlNTcGVjKTsKKyAgICBTZW5kX0tBSExfTU9EX0FFKGJ1Zik7CiB9CiAjZW5kaWYKIApAQCAtNTUyMSw3ICs1NTcwLDcgQEAKICAqLwogCiAgICAgaW50Ci1DMlBhc2NhbFN0cmluZyAoQ1N0cmluZywgUGFzY2FsU3RyaW5nKQorQzJQYXNjYWxTdHJpbmcoQ1N0cmluZywgUGFzY2FsU3RyaW5nKQogICAgIGNoYXJfdSAgKkNTdHJpbmc7CiAgICAgU3RyMjU1ICAqUGFzY2FsU3RyaW5nOwogewpAQCAtNTU0Niw3ICs1NTk1LDcgQEAKIH0KIAogICAgIGludAotR2V0RlNTcGVjRnJvbVBhdGggKGZpbGUsIGZpbGVGU1NwZWMpCitHZXRGU1NwZWNGcm9tUGF0aChmaWxlLCBmaWxlRlNTcGVjKQogICAgIGNoYXJfdSAqZmlsZTsKICAgICBGU1NwZWMgKmZpbGVGU1NwZWM7CiB7CkBAIC01NTU1LDE3ICs1NjA0LDE3IEBACiAgICAgQ0luZm9QQlJlYwlteUNQQjsKICAgICBPU0VycgllcnI7CiAKLSAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcgKGZpbGUsICZmaWxlUGFzY2FsKTsKKyAgICAodm9pZCkgQzJQYXNjYWxTdHJpbmcoZmlsZSwgJmZpbGVQYXNjYWwpOwogCiAgICAgbXlDUEIuZGlySW5mby5pb05hbWVQdHIgICA9IGZpbGVQYXNjYWw7CiAgICAgbXlDUEIuZGlySW5mby5pb1ZSZWZOdW0gICA9IDA7CiAgICAgbXlDUEIuZGlySW5mby5pb0ZEaXJJbmRleCA9IDA7CiAgICAgbXlDUEIuZGlySW5mby5pb0RyRGlySUQgICA9IDA7CiAKLSAgICBlcnI9IFBCR2V0Q2F0SW5mbyAoJm15Q1BCLCBmYWxzZSk7CisgICAgZXJyPSBQQkdldENhdEluZm8oJm15Q1BCLCBmYWxzZSk7CiAKICAgICAvKiAgICB2UmVmTnVtLCBkaXJJRCwgbmFtZSAqLwotICAgIEZTTWFrZUZTU3BlYyAoMCwgMCwgZmlsZVBhc2NhbCwgZmlsZUZTU3BlYyk7CisgICAgRlNNYWtlRlNTcGVjKDAsIDAsIGZpbGVQYXNjYWwsIGZpbGVGU1NwZWMpOwogCiAgICAgLyogVE9ETzogVXNlIGFuIGVycm9yIGNvZGUgbWVjaGFuaXNtICovCiAgICAgcmV0dXJuIDA7CkBAIC01NTc1LDcgKzU2MjQsNyBAQAogICogQ29udmVydCBhIEZTU3BlYyB0byBhIGZ1aWxsIHBhdGgKICAqLwogCi1jaGFyX3UgKkZ1bGxQYXRoRnJvbUZTU3BlY19zYXZlIChGU1NwZWMgZmlsZSkKK2NoYXJfdSAqRnVsbFBhdGhGcm9tRlNTcGVjX3NhdmUoRlNTcGVjIGZpbGUpCiB7CiAgICAgLyoKICAgICAgKiBUT0RPOiBBZGQgcHJvdGVjdGlvbiBmb3IgMjU2IGNoYXIgbWF4LgpAQCAtNTYwMyw3ICs1NjUyLDcgQEAKICNpZmRlZiBVU0VfVU5JWEZJTEVOQU1FCiAgICAgLyogR2V0IHRoZSBkZWZhdWx0IHZvbHVtZSAqLwogICAgIC8qIFRPRE86IFJlbW92ZSBhcyB0aGlzIG9ubHkgd29yayBpZiBWaW0gaXMgb24gdGhlIEJvb3QgVm9sdW1lKi8KLSAgICBlcnJvcj1IR2V0Vm9sICggTlVMTCwgJmRmbHRWb2xfdlJlZk51bSwgJmRmbHRWb2xfZGlySUQgKTsKKyAgICBlcnJvcj1IR2V0Vm9sKE5VTEwsICZkZmx0Vm9sX3ZSZWZOdW0sICZkZmx0Vm9sX2RpcklEKTsKIAogICAgIGlmIChlcnJvcikKICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTYyMiw3ICs1NjcxLDcgQEAKIAogICAgIC8qIEFzIGlvRkRpckluZGV4ID0gMCwgZ2V0IHRoZSBpbmZvIG9mIGlvTmFtZVB0ciwKICAgICAgICB3aGljaCBpcyByZWxhdGl2ZSB0byBpb1ZyZWZOdW0sIGlvRGlySUQgKi8KLSAgICBlcnJvciA9IFBCR2V0Q2F0SW5mbyAoJnRoZUNQQiwgZmFsc2UpOworICAgIGVycm9yID0gUEJHZXRDYXRJbmZvKCZ0aGVDUEIsIGZhbHNlKTsKIAogICAgIC8qIElmIHdlIGFyZSBjYWxsZWQgZm9yIGEgbmV3IGZpbGUgd2UgZXhwZWN0IGZuZkVyciAqLwogICAgIGlmICgoZXJyb3IpICYmIChlcnJvciAhPSBmbmZFcnIpKQpAQCAtNTY3MSwyMCArNTcyMCwyMCBAQAogICAgIHsKIAkvKiBJZiB0aGUgZmlsZSB0byBiZSBzYXZlZCBhbHJlYWR5IGV4aXN0cywgd2UgY2FuIGdldCBpdHMgZnVsbCBwYXRoCiAJICAgYnkgY29udmVydGluZyBpdHMgRlNTcGVjIGludG8gYW4gRlNSZWYuICovCi0JZXJyb3I9RlNwTWFrZUZTUmVmICgmZmlsZSwgJnJlZkZpbGUpOworCWVycm9yPUZTcE1ha2VGU1JlZigmZmlsZSwgJnJlZkZpbGUpOwogCWlmIChlcnJvcikKIAkgICAgcmV0dXJuIE5VTEw7CiAKLQlzdGF0dXM9RlNSZWZNYWtlUGF0aCAoJnJlZkZpbGUsIChVSW50OCAqKSBwYXRoLCBwYXRoU2l6ZSk7CisJc3RhdHVzPUZTUmVmTWFrZVBhdGgoJnJlZkZpbGUsIChVSW50OCAqKSBwYXRoLCBwYXRoU2l6ZSk7CiAJaWYgKHN0YXR1cykKIAkgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyogQWRkIGEgc2xhc2ggYXQgdGhlIGVuZCBpZiBuZWVkZWQgKi8KICAgICBpZiAoZm9sZGVyKQotCVNUUkNBVCAocGF0aCwgIi8iKTsKKwlTVFJDQVQocGF0aCwgIi8iKTsKIAotICAgIHJldHVybiAodmltX3N0cnNhdmUgKHBhdGgpKTsKKyAgICByZXR1cm4gKHZpbV9zdHJzYXZlKHBhdGgpKTsKICNlbHNlCiAgICAgLyogVE9ETzogR2V0IHJpZCBvZiBhbGwgVVNFX1VOSVhGSUxFTkFNRSBiZWxvdyAqLwogICAgIC8qIFNldCBpb05hbWVQdHIsIGl0J3MgdGhlIHNhbWUgYXJlYSB3aGljaCBpcyBhbHdheXMgcmV1c2VkLiAqLwpAQCAtNTY5NSw3ICs1NzQ0LDcgQEAKICAgICB0aGVDUEIuZGlySW5mby5pb0RyUGFySUQgPSBmaWxlLnBhcklEOwogICAgIHRoZUNQQi5kaXJJbmZvLmlvRHJEaXJJRCA9IGZpbGUucGFySUQ7CiAKLSAgICBpZiAoKFRSVUUpICYmIChmaWxlLnBhcklEICE9IGZzUnREaXJJRCAvKmZzUnRQYXJJRCovICkpCisgICAgaWYgKChUUlVFKSAmJiAoZmlsZS5wYXJJRCAhPSBmc1J0RGlySUQgLypmc1J0UGFySUQqLykpCiAgICAgZG8KICAgICB7CiAJdGhlQ1BCLmRpckluZm8uaW9GRGlySW5kZXggPSAtMTsKQEAgLTU3MDYsNyArNTc1NSw3IEBACiAKIAkvKiBBcyBpb0ZEaXJJbmRleCA9IC0xLCBnZXQgdGhlIGluZm8gb2YgaW9EckRpcklELCAqLwogCS8qICAqaW9OYW1lUHRyWzAgVE8gMzFdIHdpbGwgYmUgdXBkYXRlZAkJICAgKi8KLQllcnJvciA9IFBCR2V0Q2F0SW5mbyAoJnRoZUNQQixmYWxzZSk7CisJZXJyb3IgPSBQQkdldENhdEluZm8oJnRoZUNQQixmYWxzZSk7CiAKIAlpZiAoZXJyb3IpCiAJICByZXR1cm4gTlVMTDsKQEAgLTU3MzQsNyArNTc4Myw3IEBACiAKICAgICAvKiBBcyBpb0ZEaXJJbmRleCA9IC0xLCBnZXQgdGhlIGluZm8gb2YgaW9EckRpcklELCAqLwogICAgIC8qCSppb05hbWVQdHJbMCBUTyAzMV0gd2lsbCBiZSB1cGRhdGVkCSAgICAgICAqLwotICAgIGVycm9yID0gUEJHZXRDYXRJbmZvICgmdGhlQ1BCLGZhbHNlKTsKKyAgICBlcnJvciA9IFBCR2V0Q2F0SW5mbygmdGhlQ1BCLGZhbHNlKTsKIAogICAgIGlmIChlcnJvcikKICAgICAgIHJldHVybiBOVUxMOwpAQCAtNTc2Myw3ICs1ODEyLDcgQEAKIAogICAgIC8qIEFwcGVuZCBmaW5hbCBwYXRoIHNlcGFyYXRvciBpZiBpdCdzIGEgZm9sZGVyICovCiAgICAgaWYgKGZvbGRlcikKLQlTVFJDQVQgKGZuYW1lLCAiOiIpOworCVNUUkNBVChmbmFtZSwgIjoiKTsKIAogICAgIC8qIEFzIHdlIHVzZSBVbml4IEZpbGUgTmFtZSBmb3IgTWFjT1MgWCBjb252ZXJ0IGl0ICovCiAjaWZkZWYgVVNFX1VOSVhGSUxFTkFNRQpAQCAtNTc4MCw3ICs1ODI5LDcgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiAodmltX3N0cnNhdmUgKGZuYW1lKSk7CisgICAgcmV0dXJuICh2aW1fc3Ryc2F2ZShmbmFtZSkpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9ndWlfdzMyLmMgYi9zcmMvZ3VpX3czMi5jCmluZGV4IGRmMDc5NTMuLmEzYTdmZmEgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfdzMyLmMKKysrIGIvc3JjL2d1aV93MzIuYwpAQCAtODE4LDkgKzgxOCwxMSBAQAogICAgIHsKIAlpZiAoc3Ryc3RyKGJ1ZiwgdGl0bGUpICE9IE5VTEwpCiAJewotCSAgICAvKiBGb3VuZCBpdC4gIFN0b3JlIHRoZSB3aW5kb3cgcmVmLiBhbmQgcXVpdCBzZWFyY2hpbmcuICovCisJICAgIC8qIEZvdW5kIGl0LiAgU3RvcmUgdGhlIHdpbmRvdyByZWYuIGFuZCBxdWl0IHNlYXJjaGluZyBpZiBNREkKKwkgICAgICogd29ya3MuICovCiAJICAgIHZpbV9wYXJlbnRfaHduZCA9IEZpbmRXaW5kb3dFeChod25kLCBOVUxMLCAiTURJQ2xpZW50IiwgTlVMTCk7Ci0JICAgIHJldHVybiBGQUxTRTsKKwkgICAgaWYgKHZpbV9wYXJlbnRfaHduZCAhPSBOVUxMKQorCQlyZXR1cm4gRkFMU0U7CiAJfQogICAgIH0KICAgICByZXR1cm4gVFJVRTsJLyogY29udGludWUgc2VhcmNoaW5nICovCmRpZmYgLS1naXQgYS9zcmMvbWVtbGluZS5jIGIvc3JjL21lbWxpbmUuYwppbmRleCA3YzE4NjYzLi43YTAyMTBmIDEwMDY0NAotLS0gYS9zcmMvbWVtbGluZS5jCisrKyBiL3NyYy9tZW1saW5lLmMKQEAgLTE1MTgsNyArMTUxOCw3IEBACiAJICAgIHsKIAkJTVNHX1BVVFMoXygiICAgICAgICAgZmlsZSBuYW1lOiAiKSk7CiAJCWlmIChiMC5iMF9mbmFtZVswXSA9PSBOVUwpCi0JCSAgICBNU0dfUFVUUyhfKCJbTm8gRmlsZV0iKSk7CisJCSAgICBNU0dfUFVUUyhfKCJbTm8gTmFtZV0iKSk7CiAJCWVsc2UKIAkJICAgIG1zZ19vdXR0cmFucyhiMC5iMF9mbmFtZSk7CiAKQEAgLTM3ODEsNyArMzc4MSw3IEBACiAJICogQ2hhbmdlIHRoZSAiLnN3cCIgZXh0ZW5zaW9uIHRvIGZpbmQgYW5vdGhlciBmaWxlIHRoYXQgY2FuIGJlIHVzZWQuCiAJICogRmlyc3QgZGVjcmVtZW50IHRoZSBsYXN0IGNoYXI6ICIuc3dvIiwgIi5zd24iLCBldGMuCiAJICogSWYgdGhhdCBzdGlsbCBpc24ndCBlbm91Z2ggZGVjcmVtZW50IHRoZSBsYXN0IGJ1dCBvbmUgY2hhcjogIi5zdnoiCi0JICogQ2FuIGhhcHBlbiB3aGVuIGVkaXRpbmcgbWFueSAiTm8gRmlsZSIgYnVmZmVycy4KKwkgKiBDYW4gaGFwcGVuIHdoZW4gZWRpdGluZyBtYW55ICJObyBOYW1lIiBidWZmZXJzLgogCSAqLwogCWlmIChmbmFtZVtuIC0gMV0gPT0gJ2EnKQkvKiAiLnM/YSIgKi8KIAl7CmRpZmYgLS1naXQgYS9zcmMvbm9ybWFsLmMgYi9zcmMvbm9ybWFsLmMKaW5kZXggODkxOTZkYS4uMjIyZTQ3NSAxMDA2NDQKLS0tIGEvc3JjL25vcm1hbC5jCisrKyBiL3NyYy9ub3JtYWwuYwpAQCAtNTE4Niw3ICs1MTg2LDIzIEBACiAJaWYgKGNhcC0+Y291bnQxIC0gMSA+PSBjdXJ3aW4tPndfY3Vyc29yLmxudW0pCiAJICAgIGN1cndpbi0+d19jdXJzb3IubG51bSA9IDE7CiAJZWxzZQotCSAgICBjdXJ3aW4tPndfY3Vyc29yLmxudW0gLT0gY2FwLT5jb3VudDEgLSAxOworCXsKKyNpZmRlZiBGRUFUX0ZPTERJTkcKKwkgICAgaWYgKGhhc0FueUZvbGRpbmcoY3Vyd2luKSkKKwkgICAgeworCQkvKiBDb3VudCBhIGZvbGQgZm9yIG9uZSBzY3JlZW4gbGluZS4gKi8KKwkJZm9yIChuID0gY2FwLT5jb3VudDEgLSAxOyBuID4gMAorCQkJICAgICYmIGN1cndpbi0+d19jdXJzb3IubG51bSA+IGN1cndpbi0+d190b3BsaW5lOyAtLW4pCisJCXsKKwkJICAgICh2b2lkKWhhc0ZvbGRpbmcoY3Vyd2luLT53X2N1cnNvci5sbnVtLAorCQkJCQkJJmN1cndpbi0+d19jdXJzb3IubG51bSwgTlVMTCk7CisJCSAgICAtLWN1cndpbi0+d19jdXJzb3IubG51bTsKKwkJfQorCSAgICB9CisJICAgIGVsc2UKKyNlbmRpZgorCQljdXJ3aW4tPndfY3Vyc29yLmxudW0gLT0gY2FwLT5jb3VudDEgLSAxOworCX0KICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAgLTUyMjIsOCArNTIzOCwyMyBAQAogCSAgICBpZiAobiA+IDAgJiYgdXNlZCA+IGN1cndpbi0+d19oZWlnaHQpCiAJCS0tbjsKIAl9Ci0JZWxzZQorCWVsc2UgLyogKGNhcC0+Y21kY2hhciA9PSAnSCcpICovCisJewogCSAgICBuID0gY2FwLT5jb3VudDEgLSAxOworI2lmZGVmIEZFQVRfRk9MRElORworCSAgICBpZiAoaGFzQW55Rm9sZGluZyhjdXJ3aW4pKQorCSAgICB7CisJCS8qIENvdW50IGEgZm9sZCBmb3Igb25lIHNjcmVlbiBsaW5lLiAqLworCQlsbnVtID0gY3Vyd2luLT53X3RvcGxpbmU7CisJCXdoaWxlIChuLS0gPiAwICYmIGxudW0gPCBjdXJ3aW4tPndfYm90bGluZSAtIDEpCisJCXsKKwkJICAgIGhhc0ZvbGRpbmcobG51bSwgTlVMTCwgJmxudW0pOworCQkgICAgKytsbnVtOworCQl9CisJCW4gPSBsbnVtIC0gY3Vyd2luLT53X3RvcGxpbmU7CisJICAgIH0KKyNlbmRpZgorCX0KIAljdXJ3aW4tPndfY3Vyc29yLmxudW0gPSBjdXJ3aW4tPndfdG9wbGluZSArIG47CiAJaWYgKGN1cndpbi0+d19jdXJzb3IubG51bSA+IGN1cmJ1Zi0+Yl9tbC5tbF9saW5lX2NvdW50KQogCSAgICBjdXJ3aW4tPndfY3Vyc29yLmxudW0gPSBjdXJidWYtPmJfbWwubWxfbGluZV9jb3VudDsKZGlmZiAtLWdpdCBhL3NyYy9vc19tYWMuYyBiL3NyYy9vc19tYWMuYwppbmRleCAwZjZhNzZjLi5kMzhmMTJhIDEwMDY0NAotLS0gYS9zcmMvb3NfbWFjLmMKKysrIGIvc3JjL29zX21hYy5jCkBAIC01MjcsNyArNTI3LDcgQEAKICAgICAgKi8KICAgICBFdmVudFJlY29yZCB0aGVFdmVudDsKIAotICAgIGlmIChFdmVudEF2YWlsIChrZXlEb3duTWFzaywgJnRoZUV2ZW50KSkKKyAgICBpZiAoRXZlbnRBdmFpbChrZXlEb3duTWFzaywgJnRoZUV2ZW50KSkKIAlpZiAoKHRoZUV2ZW50Lm1lc3NhZ2UgJiBjaGFyQ29kZU1hc2spID09IEN0cmxfQyAmJiBjdHJsX2NfaW50ZXJydXB0cykKIAkgICAgZ290X2ludCA9IFRSVUU7CiAjaWYgMApkaWZmIC0tZ2l0IGEvc3JjL29zX21zZG9zLmMgYi9zcmMvb3NfbXNkb3MuYwppbmRleCAyZDhiMTI3Li45MmIxNGVhIDEwMDY0NAotLS0gYS9zcmMvb3NfbXNkb3MuYworKysgYi9zcmMvb3NfbXNkb3MuYwpAQCAtMjk4Nyw3ICsyOTg3LDEyIEBACiBtY2hfY2FuX2V4ZShuYW1lKQogICAgIGNoYXJfdQkqbmFtZTsKIHsKLSAgICByZXR1cm4gKHNlYXJjaHBhdGgobmFtZSkgIT0gTlVMTCk7CisgICAgY2hhcgkqcDsKKworICAgIHAgPSBzZWFyY2hwYXRoKG5hbWUpOworICAgIGlmIChwID09IE5VTEwgfHwgbWNoX2lzZGlyKHApKQorCXJldHVybiBGQUxTRTsKKyAgICByZXR1cm4gVFJVRTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9zcmMvb3Nfd2luMzIuYyBiL3NyYy9vc193aW4zMi5jCmluZGV4IDc0Yjg5NjAuLjQzNDM2MmIgMTAwNjQ0Ci0tLSBhL3NyYy9vc193aW4zMi5jCisrKyBiL3NyYy9vc193aW4zMi5jCkBAIC0xNTE5LDI5ICsxNTE5LDQ1IEBACiAjIGluY2x1ZGUgPHNoZWxsYXBpLmg+CS8qIHJlcXVpcmVkIGZvciBGaW5kRXhlY3V0YWJsZSgpICovCiAjZW5kaWYKIAorLyoKKyAqIFJldHVybiBUUlVFIGlmICJuYW1lIiBpcyBpbiAkUEFUSC4KKyAqIFRPRE86IFNob3VsZCBhbHNvIGNoZWNrIGlmIGl0J3MgcmVhbGx5IGV4ZWN1dGFibGUuCisgKi8KICAgICBzdGF0aWMgaW50CiBleGVjdXRhYmxlX2V4aXN0cyhjaGFyICpuYW1lKQogewotICAgIGNoYXIgbG9jYXRpb25bMiAqIF9NQVhfUEFUSCArIDJdOwotICAgIGNoYXIgd2lkZW5hbWVbMiAqIF9NQVhfUEFUSF07CisgICAgY2hhcgkqZHVtOworICAgIGNoYXIJZm5hbWVbX01BWF9QQVRIXTsKIAotICAgIC8qIFRoZXJlIGFwcGVhcnMgdG8gYmUgYSBidWcgaW4gRmluZEV4ZWN1dGFibGVBKCkgb24gV2luZG93cyBOVC4KLSAgICAgKiBVc2UgRmluZEV4ZWN1dGFibGVXKCkgaW5zdGVhZC4uLiAqLwotICAgIGlmIChnX1BsYXRmb3JtSWQgPT0gVkVSX1BMQVRGT1JNX1dJTjMyX05UKQorI2lmZGVmIEZFQVRfTUJZVEUKKyAgICBpZiAoZW5jX2NvZGVwYWdlID49IDAgJiYgKGludClHZXRBQ1AoKSAhPSBlbmNfY29kZXBhZ2UpCiAgICAgewotCU11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfQUNQLCAwLCAoTFBDVFNUUiluYW1lLCAtMSwKLQkJCQkJCSAoTFBXU1RSKXdpZGVuYW1lLCBfTUFYX1BBVEgpOwotCWlmIChGaW5kRXhlY3V0YWJsZVcoKExQQ1dTVFIpd2lkZW5hbWUsIChMUENXU1RSKSIiLAotCQkJCQkgICAgKExQV1NUUilsb2NhdGlvbikgPiAoSElOU1RBTkNFKTMyKQotCSAgICByZXR1cm4gVFJVRTsKKwlXQ0hBUgkqcCA9IGVuY190b191Y3MyKG5hbWUsIE5VTEwpOworCVdDSEFSCWZuYW1ld1tfTUFYX1BBVEhdOworCVdDSEFSCSpkdW13OworCWxvbmcJbjsKKworCWlmIChwICE9IE5VTEwpCisJeworCSAgICBuID0gKGxvbmcpU2VhcmNoUGF0aFcoTlVMTCwgcCwgTlVMTCwgX01BWF9QQVRILCBmbmFtZXcsICZkdW13KTsKKwkgICAgdmltX2ZyZWUocCk7CisJICAgIGlmIChuID4gMCB8fCBHZXRMYXN0RXJyb3IoKSAhPSBFUlJPUl9DQUxMX05PVF9JTVBMRU1FTlRFRCkKKwkgICAgeworCQlpZiAobiA9PSAwKQorCQkgICAgcmV0dXJuIEZBTFNFOworCQlpZiAoR2V0RmlsZUF0dHJpYnV0ZXNXKGZuYW1ldykgJiBGSUxFX0FUVFJJQlVURV9ESVJFQ1RPUlkpCisJCSAgICByZXR1cm4gRkFMU0U7CisJCXJldHVybiBUUlVFOworCSAgICB9CisJICAgIC8qIFJldHJ5IHdpdGggbm9uLXdpZGUgZnVuY3Rpb24gKGZvciBXaW5kb3dzIDk4KS4gKi8KKwl9CiAgICAgfQotICAgIGVsc2UKLSAgICB7Ci0JaWYgKEZpbmRFeGVjdXRhYmxlQSgoTFBDVFNUUiluYW1lLCAoTFBDVFNUUikiIiwKLQkJCQkJICAgIChMUFRTVFIpbG9jYXRpb24pID4gKEhJTlNUQU5DRSkzMikKLQkgICAgcmV0dXJuIFRSVUU7Ci0gICAgfQotICAgIHJldHVybiBGQUxTRTsKKyNlbmRpZgorICAgIGlmIChTZWFyY2hQYXRoKE5VTEwsIG5hbWUsIE5VTEwsIF9NQVhfUEFUSCwgZm5hbWUsICZkdW0pID09IDApCisJcmV0dXJuIEZBTFNFOworICAgIGlmIChtY2hfaXNkaXIoZm5hbWUpKQorCXJldHVybiBGQUxTRTsKKyAgICByZXR1cm4gVFJVRTsKIH0KIAogI2lmZGVmIEZFQVRfR1VJX1czMgpkaWZmIC0tZ2l0IGEvc3JjL3BvL01ha2VmaWxlIGIvc3JjL3BvL01ha2VmaWxlCmluZGV4IGQ1NDkxMzAuLjM2NDIxMGMgMTAwNjQ0Ci0tLSBhL3NyYy9wby9NYWtlZmlsZQorKysgYi9zcmMvcG8vTWFrZWZpbGUKQEAgLTk3LDggKzk3LDggQEAKICMgQ29udmVydCBydS5wbyB0byBjcmVhdGUgcnUuY3AxMjUxLnBvLgogcnUuY3AxMjUxLnBvOiBydS5wbwogCXJtIC1mIHJ1LmNwMTI1MS5wbwotCWljb252IC1mIGtvaTgtciAtdCBjcDEyNTEgcnUucG8gfCBcCi0JCXNlZCAtZSAncy9jaGFyc2V0PWtvaTgtci9jaGFyc2V0PWNwMTI1MS8nIC1lICdzLyMgT3JpZ2luYWwgdHJhbnNsYXRpb25zLyMgR2VuZXJhdGVkIGZyb20gcnUucG8sIERPIE5PVCBFRElULycgPiBydS5jcDEyNTEucG8KKwlpY29udiAtZiB1dGYtOCAtdCBjcDEyNTEgcnUucG8gfCBcCisJCXNlZCAtZSAncy9jaGFyc2V0PXV0Zi04L2NoYXJzZXQ9Y3AxMjUxLycgLWUgJ3MvIyBPcmlnaW5hbCB0cmFuc2xhdGlvbnMvIyBHZW5lcmF0ZWQgZnJvbSBydS5wbywgRE8gTk9UIEVESVQvJyA+IHJ1LmNwMTI1MS5wbwogCiBjaGVjazoKIAlAaWYgdGVzdCAieCIgPSAieCQocHJlZml4KSI7IHRoZW4gXApkaWZmIC0tZ2l0IGEvc3JjL3BvL3J1LmNwMTI1MS5wbyBiL3NyYy9wby9ydS5jcDEyNTEucG8KaW5kZXggZjBiMGFjMi4uODViMWQ2OCAxMDA2NDQKLS0tIGEvc3JjL3BvL3J1LmNwMTI1MS5wbworKysgYi9zcmMvcG8vcnUuY3AxMjUxLnBvCkBAIC05LDEwICs5LDEwIEBACiAjCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBWaW0gNi4zYVxuIgorIlByb2plY3QtSWQtVmVyc2lvbjogVmltIDYuM1xuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBcbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAwNC0wNS0xMCAyMTozNyswNDAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAwNC0wNS0xMCAyMTozNyswNDAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMDQtMDYtMTUgMDk6MzkrMDQwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMDQtMDUtMTkgMDA6MjMrMDQwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogdmFzc2lseSByYWdvc2luIDx2cnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PlxuIgogIkxhbmd1YWdlLVRlYW06IHZhc3NpbHkgcmFnb3NpbiA8dnJyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD5cbiIKICJNSU1FLVZlcnNpb246IDEuMFxuIgpAQCAtMjcsMTcyICsyNywxNzIgQEAKIG1zZ2lkICJFODM6IENhbm5vdCBhbGxvY2F0ZSBidWZmZXIsIHVzaW5nIG90aGVyIG9uZS4uLiIKIG1zZ3N0ciAiRTgzOiDN5eLu5+zu5u3uIOL75OXr6PL8IO/g7P/y/CDk6/8g4fP05fDgLCDo8e/u6/zn8+XsIOTw8+Pu6SDh8/Tl8C4uLiIKIAotIzogYnVmZmVyLmM6ODA1CisjOiBidWZmZXIuYzo4MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTUxNTogTm8gYnVmZmVycyB3ZXJlIHVubG9hZGVkIgogbXNnc3RyICJFNTE1OiDN6CDu5OjtIOHz9OXwIO3lIOH76yDi++Pw8+bl7SDo5yDv4Oz/8ugiCiAKLSM6IGJ1ZmZlci5jOjgwNworIzogYnVmZmVyLmM6ODEwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU1MTY6IE5vIGJ1ZmZlcnMgd2VyZSBkZWxldGVkIgogbXNnc3RyICJFNTE2OiDN6CDu5OjtIOHz9OXwIO3lIOH76yDz5ODruO0iCiAKLSM6IGJ1ZmZlci5jOjgwOQorIzogYnVmZmVyLmM6ODEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU1MTc6IE5vIGJ1ZmZlcnMgd2VyZSB3aXBlZCBvdXQiCiBtc2dzdHIgIkU1MTc6IM3oIO7k6O0g4fP05fAg7eUg4fvrIO736Pnl7SIKIAotIzogYnVmZmVyLmM6ODE3CisjOiBidWZmZXIuYzo4MjAKIG1zZ2lkICIxIGJ1ZmZlciB1bmxvYWRlZCIKIG1zZ3N0ciAizuTo7SDh8/Tl8CDi++Pw8+bl7SDo5yDv4Oz/8ugiCiAKLSM6IGJ1ZmZlci5jOjgxOQorIzogYnVmZmVyLmM6ODIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVkIGJ1ZmZlcnMgdW5sb2FkZWQiCiBtc2dzdHIgIsLx5ePuIOL74/Dz5uXt7iDh8/Tl8O7iIOjnIO/g7P/y6DogJWQiCiAKLSM6IGJ1ZmZlci5jOjgyNAorIzogYnVmZmVyLmM6ODI3CiBtc2dpZCAiMSBidWZmZXIgZGVsZXRlZCIKIG1zZ3N0ciAizuTo7SDh8/Tl8CDz5ODruO0iCiAKLSM6IGJ1ZmZlci5jOjgyNgorIzogYnVmZmVyLmM6ODI5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVkIGJ1ZmZlcnMgZGVsZXRlZCIKIG1zZ3N0ciAiwvHl4+4g8+Tg6+Xt7iDh8/Tl8O7iOiAlZCIKIAotIzogYnVmZmVyLmM6ODMxCisjOiBidWZmZXIuYzo4MzQKIG1zZ2lkICIxIGJ1ZmZlciB3aXBlZCBvdXQiCiBtc2dzdHIgIs7k6O0g4fP05fAg7vfo+eXtIgogCi0jOiBidWZmZXIuYzo4MzMKKyM6IGJ1ZmZlci5jOjgzNgogIywgYy1mb3JtYXQKIG1zZ2lkICIlZCBidWZmZXJzIHdpcGVkIG91dCIKIG1zZ3N0ciAiwvHl4+4g7vfo+eXt7iDh8/Tl8O7iOiAlZCIKIAotIzogYnVmZmVyLmM6ODk0CisjOiBidWZmZXIuYzo4OTcKIG1zZ2lkICJFODQ6IE5vIG1vZGlmaWVkIGJ1ZmZlciBmb3VuZCIKIG1zZ3N0ciAiRTg0OiDI5+zl7bjt7fv1IOHz9OXw7uIg7eUg7uHt4PDz5uXt7iIKIAogIy4gYmFjayB3aGVyZSB3ZSBzdGFydGVkLCBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSM6IGJ1ZmZlci5jOjkzMworIzogYnVmZmVyLmM6OTM2CiBtc2dpZCAiRTg1OiBUaGVyZSBpcyBubyBsaXN0ZWQgYnVmZmVyIgogbXNnc3RyICJFODU6IMHz9OXw+yDiIPHv6PHq5SDu8vHz8vHy4vP+8iIKIAotIzogYnVmZmVyLmM6OTQ1CisjOiBidWZmZXIuYzo5NDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTg2OiBCdWZmZXIgJWxkIGRvZXMgbm90IGV4aXN0IgogbXNnc3RyICJFODY6IMHz9OXwICVsZCDt5SDx8/nl8fLi8+XyIgogCi0jOiBidWZmZXIuYzo5NDgKKyM6IGJ1ZmZlci5jOjk1MQogbXNnaWQgIkU4NzogQ2Fubm90IGdvIGJleW9uZCBsYXN0IGJ1ZmZlciIKIG1zZ3N0ciAiRTg3OiDd8u4g7+7x6+Xk7ejpIOHz9OXwIgogCi0jOiBidWZmZXIuYzo5NTAKKyM6IGJ1ZmZlci5jOjk1MwogbXNnaWQgIkU4ODogQ2Fubm90IGdvIGJlZm9yZSBmaXJzdCBidWZmZXIiCiBtc2dzdHIgIkU4ODog3fLuIO/l8OL76SDh8/Tl8CIKIAotIzogYnVmZmVyLmM6OTg4CisjOiBidWZmZXIuYzo5OTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTg5OiBObyB3cml0ZSBzaW5jZSBsYXN0IGNoYW5nZSBmb3IgYnVmZmVyICVsZCAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJFODk6IMjn7OXt5e3o/yDiIOHz9OXw5SAlbGQg7eUg8e718ODt5e37ICghLCD38u7h+yDu4e7p8ugg7/Du4uXw6vMpIgogCi0jOiBidWZmZXIuYzoxMDA1CisjOiBidWZmZXIuYzoxMDA4CiBtc2dpZCAiRTkwOiBDYW5ub3QgdW5sb2FkIGxhc3QgYnVmZmVyIgogbXNnc3RyICJFOTA6IM3l4u7n7O7m7e4g4vvj8PPn6PL8IOjnIO/g7P/y6CDv7vHr5eTt6Okg4fP05fAiCiAKLSM6IGJ1ZmZlci5jOjE1MzgKKyM6IGJ1ZmZlci5jOjE1NDQKIG1zZ2lkICJXMTQ6IFdhcm5pbmc6IExpc3Qgb2YgZmlsZSBuYW1lcyBvdmVyZmxvdyIKIG1zZ3N0ciAiVzE0OiDP8OXk8+/w5ebk5e3o5Tog7+Xw5e/u6+3l7ejlIPHv6PHq4CDo7LjtIPTg6evu4iIKIAotIzogYnVmZmVyLmM6MTcwOQorIzogYnVmZmVyLmM6MTcxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJFOTI6IEJ1ZmZlciAlbGQgbm90IGZvdW5kIgogbXNnc3RyICJFOTI6IMHz9OXwICVsZCDt5SDt4Onk5e0iCiAKLSM6IGJ1ZmZlci5jOjE5NDAKKyM6IGJ1ZmZlci5jOjE5NDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTkzOiBNb3JlIHRoYW4gb25lIG1hdGNoIGZvciAlcyIKIG1zZ3N0ciAiRTkzOiDN5fHq7uv86u4g8e7u8uLl8vHy4ujpIOTr/yAlcyIKIAotIzogYnVmZmVyLmM6MTk0MgorIzogYnVmZmVyLmM6MTk0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJFOTQ6IE5vIG1hdGNoaW5nIGJ1ZmZlciBmb3IgJXMiCiBtc2dzdHIgIkU5NDogzeXyIPHu7vLi5fLx8uLz/vnl4+4gJXMg4fP05fDgIgogCi0jOiBidWZmZXIuYzoyMzM3CisjOiBidWZmZXIuYzoyMzQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgImxpbmUgJWxkIgogbXNnc3RyICLx8vDu6uAgJWxkIgogCi0jOiBidWZmZXIuYzoyNDIwCisjOiBidWZmZXIuYzoyNDI5CiBtc2dpZCAiRTk1OiBCdWZmZXIgd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMiCiBtc2dzdHIgIkU5NTogwfP05fAg8SDy4Oro7CDo7OXt5ewg8+blIPHz+eXx8uLz5fIiCiAKLSM6IGJ1ZmZlci5jOjI3MTMKKyM6IGJ1ZmZlci5jOjI3MjQKIG1zZ2lkICIgW01vZGlmaWVkXSIKIG1zZ3N0ciAiIFvI5+zl7bjtXSIKIAotIzogYnVmZmVyLmM6MjcxOAorIzogYnVmZmVyLmM6MjcyOQogbXNnaWQgIltOb3QgZWRpdGVkXSIKIG1zZ3N0ciAiW83lIPDl5ODq8ujw7uLg6/H/XSIKIAotIzogYnVmZmVyLmM6MjcyMworIzogYnVmZmVyLmM6MjczNAogbXNnaWQgIltOZXcgZmlsZV0iCiBtc2dzdHIgIlvN7uL76SD04OnrXSIKIAotIzogYnVmZmVyLmM6MjcyNAorIzogYnVmZmVyLmM6MjczNQogbXNnaWQgIltSZWFkIGVycm9yc10iCiBtc2dzdHIgIlvO+Ojh6ugg9/Ll7ej/XSIKIAotIzogYnVmZmVyLmM6MjcyNiBmaWxlaW8uYzoyMTEyCisjOiBidWZmZXIuYzoyNzM3IGZpbGVpby5jOjIxMjQKIG1zZ2lkICJbcmVhZG9ubHldIgogbXNnc3RyICJb8u7r/OruIOTr/yD38uXt6P9dIgogCi0jOiBidWZmZXIuYzoyNzQ3CisjOiBidWZmZXIuYzoyNzU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIjEgbGluZSAtLSVkJSUtLSIKIG1zZ3N0ciAizuTt4CDx8vDu6uAgLS0lZCUlLS0iCiAKLSM6IGJ1ZmZlci5jOjI3NDkKKyM6IGJ1ZmZlci5jOjI3NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWxkIGxpbmVzIC0tJWQlJS0tIgogbXNnc3RyICIlbGQg8fLwLiAtLSVkJSUtLSIKIAotIzogYnVmZmVyLmM6Mjc1NgorIzogYnVmZmVyLmM6Mjc2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJsaW5lICVsZCBvZiAlbGQgLS0lZCUlLS0gY29sICIKIG1zZ3N0ciAi8fLwLiAlbGQg6OcgJWxkIC0tJWQlJS0tIOru6y4gIgogCi0jOiBidWZmZXIuYzoyODY0CisjOiBidWZmZXIuYzoyODc1CiBtc2dpZCAiW05vIGZpbGVdIgogbXNnc3RyICJbzeXyIPTg6evgXSIKIAogIy4gbXVzdCBiZSBhIGhlbHAgYnVmZmVyCi0jOiBidWZmZXIuYzoyOTA0CisjOiBidWZmZXIuYzoyOTE1CiBtc2dpZCAiaGVscCIKIG1zZ3N0ciAi8e/w4OLq4CIKIAotIzogYnVmZmVyLmM6MzQ2MyBzY3JlZW4uYzo1MDc1CisjOiBidWZmZXIuYzozNDc0IHNjcmVlbi5jOjUwNzkKIG1zZ2lkICJbaGVscF0iCiBtc2dzdHIgIlvx7/Dg4urgXSIKIAotIzogYnVmZmVyLmM6MzQ5NSBzY3JlZW4uYzo1MDgxCisjOiBidWZmZXIuYzozNTA2IHNjcmVlbi5jOjUwODUKIG1zZ2lkICJbUHJldmlld10iCiBtc2dzdHIgIlvP8OXk7/Du8ezu8vBdIgogCi0jOiBidWZmZXIuYzozNzc1CisjOiBidWZmZXIuYzozNzg2CiBtc2dpZCAiQWxsIgogbXNnc3RyICLC5fH8IgogCi0jOiBidWZmZXIuYzozNzc1CisjOiBidWZmZXIuYzozNzg2CiBtc2dpZCAiQm90IgogbXNnc3RyICLC7ejn8yIKIAotIzogYnVmZmVyLmM6Mzc3NworIzogYnVmZmVyLmM6Mzc4OAogbXNnaWQgIlRvcCIKIG1zZ3N0ciAizeDi5fD18yIKIAotIzogYnVmZmVyLmM6NDUyMworIzogYnVmZmVyLmM6NDUzNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC0yMDEsMTUgKzIwMSwxNSBAQAogIlxuIgogIiMg0e/o8e7qIOHz9OXw7uI6XG4iCiAKLSM6IGJ1ZmZlci5jOjQ1NTYKKyM6IGJ1ZmZlci5jOjQ1NjkKIG1zZ2lkICJbRXJyb3IgTGlzdF0iCiBtc2dzdHIgIlvR7+jx7uog7vjo4e7qXSIKIAotIzogYnVmZmVyLmM6NDU2OSBtZW1saW5lLmM6MTUyMAorIzogYnVmZmVyLmM6NDU4MiBtZW1saW5lLmM6MTUyMQogbXNnaWQgIltObyBGaWxlXSIKIG1zZ3N0ciAiW83l8iD04Onr4F0iCiAKLSM6IGJ1ZmZlci5jOjQ4ODIKKyM6IGJ1ZmZlci5jOjQ4OTUKIG1zZ2lkICIiCiAiXG4iCiAiLS0tIFNpZ25zIC0tLSIKQEAgLTIxNywxMiArMjE3LDEyIEBACiAiXG4iCiAiLS0tIMft4Pfq6CAtLS0iCiAKLSM6IGJ1ZmZlci5jOjQ5MDEKKyM6IGJ1ZmZlci5jOjQ5MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2lnbnMgZm9yICVzOiIKIG1zZ3N0ciAix+3g9+roIOTr/yAlczoiCiAKLSM6IGJ1ZmZlci5jOjQ5MDcKKyM6IGJ1ZmZlci5jOjQ5MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgIGxpbmU9JWxkICBpZD0lZCAgbmFtZT0lcyIKIG1zZ3N0ciAiICAgIPHy8O7q4D0lbGQgIGlkPSVkICDo7P89JXMiCkBAIC00NzMsNyArNDczLDcgQEAKICMuICogdGhpcyB3YXkgaGFzIHRoZSBjb21wZWxsaW5nIGFkdmFudGFnZSB0aGF0IHRyYW5zbGF0aW9ucyBuZWVkIG5vdCB0bwogIy4gKiBiZSB0b3VjaGVkIGF0IGFsbC4gIFNlZSBiZWxvdyB3aGF0ICdvaycgYW5kICd5bmMnIGFyZSB1c2VkIGZvci4KICMuCi0jOiBldmFsLmM6MzY4NyBndWkuYzo0MzgyIGd1aV9ndGsuYzoyMDU5CisjOiBldmFsLmM6MzY4NyBndWkuYzo0Mzg1IGd1aV9ndGsuYzoyMDU5CiBtc2dpZCAiJk9rIgogbXNnc3RyICImT2siCiAKQEAgLTQ5OCwxMjEgKzQ5OCwxMjEgQEAKIG1zZ2lkICJFNjU1OiBUb28gbWFueSBzeW1ib2xpYyBsaW5rcyAoY3ljbGU/KSIKIG1zZ3N0ciAiRTY1Njog0evo+Oru7CDs7e7j7iDx6Ozi7uvo9+Xx6uj1IPHx++vu6iAo9ujq6z8pIgogCi0jOiBldmFsLmM6NjYwOQorIzogZXZhbC5jOjY2MjYKIG1zZ2lkICJFMjQwOiBObyBjb25uZWN0aW9uIHRvIFZpbSBzZXJ2ZXIiCiBtc2dzdHIgIkUyNDA6IM3l8iDx4v/n6CDxIPHl8OLl8O7sIFZpbSIKIAotIzogZXZhbC5jOjY3MDYKKyM6IGV2YWwuYzo2NzI0CiBtc2dpZCAiRTI3NzogVW5hYmxlIHRvIHJlYWQgYSBzZXJ2ZXIgcmVwbHkiCiBtc2dzdHIgIkUyMjc6INHl8OLl8CDt5SDu8uLl9+Dl8iIKIAotIzogZXZhbC5jOjY3MzQKKyM6IGV2YWwuYzo2NzUyCiBtc2dpZCAiRTI1ODogVW5hYmxlIHRvIHNlbmQgdG8gY2xpZW50IgogbXNnc3RyICJFMjU4OiDN5SDs7uPzIO7y4uXy6PL8IOrr6OXt8vMiCiAKLSM6IGV2YWwuYzo2NzgyCisjOiBldmFsLmM6NjgwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjQxOiBVbmFibGUgdG8gc2VuZCB0byAlcyIKIG1zZ3N0ciAiRTI0MTogzeUg7O7j8yDu8u/w4OLo8vwg8e7u4fnl7ejlIOTr/yAlcyIKIAotIzogZXZhbC5jOjY4ODIKKyM6IGV2YWwuYzo2OTAwCiBtc2dpZCAiKEludmFsaWQpIgogbXNnc3RyICIozeXv8ODi6Ov87e4pIgogCi0jOiBldmFsLmM6ODA2MAorIzogZXZhbC5jOjgwNzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTEyMTogVW5kZWZpbmVkIHZhcmlhYmxlOiAlcyIKIG1zZ3N0ciAiRTEyMTogzeXu7/Dl5OXr5e3t4P8g7+Xw5ezl7e3g/zogJXMiCiAKLSM6IGV2YWwuYzo4NDkyCisjOiBldmFsLmM6ODUxMAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDYxOiBJbGxlZ2FsIHZhcmlhYmxlIG5hbWU6ICVzIgogbXNnc3RyICJFNDYxOiDN5eTu7/Px8ujs7uUg6Oz/IO/l8OXs5e3t7uk6ICVzIgogCi0jOiBldmFsLmM6ODc4NAorIzogZXZhbC5jOjg4MDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTEyMjogRnVuY3Rpb24gJXMgYWxyZWFkeSBleGlzdHMsIGFkZCAhIHRvIHJlcGxhY2UgaXQiCiBtc2dzdHIgIkUxMjI6INTz7er26P8gJXMg8+blIPHz+eXx8uLz5fIuIMTu4eDi/PLlICEsIPfy7uH7IOfg7OXt6PL8IOW4LiIKIAotIzogZXZhbC5jOjg4NTcKKyM6IGV2YWwuYzo4ODc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMjM6IFVuZGVmaW5lZCBmdW5jdGlvbjogJXMiCiBtc2dzdHIgIkUxMjM6IM3l7u/w5eTl6+Xt7eD/IPTz7er26P86ICVzIgogCi0jOiBldmFsLmM6ODg3MAorIzogZXZhbC5jOjg4ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTEyNDogTWlzc2luZyAnKCc6ICVzIgogbXNnc3RyICJFMTI0OiDP8O7v8/nl7eAgJygnOiAlcyIKIAotIzogZXZhbC5jOjg5MDMKKyM6IGV2YWwuYzo4OTIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxMjU6IElsbGVnYWwgYXJndW1lbnQ6ICVzIgogbXNnc3RyICJFMTI1OiDN5eTu7/Px8ujs++kg7+Dw4Ozl8vA6ICVzIgogCi0jOiBldmFsLmM6ODk4MgorIzogZXZhbC5jOjkwMDAKIG1zZ2lkICJFMTI2OiBNaXNzaW5nIDplbmRmdW5jdGlvbiIKIG1zZ3N0ciAiRTEyNjogz/Du7/P55e3gIOru7ODt5OAgOmVuZGZ1bmN0aW9uIgogCi0jOiBldmFsLmM6OTA4OQorIzogZXZhbC5jOjkxMDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTEyNzogQ2Fubm90IHJlZGVmaW5lIGZ1bmN0aW9uICVzOiBJdCBpcyBpbiB1c2UiCiBtc2dzdHIgIkUxMjc6IM3l4u7n7O7m7e4g7+Xw5e7v8OXk5evo8vwg9PPt6vbo/iAlcywg7u3gIOjx7+7r/Ofz5fLx/yIKIAotIzogZXZhbC5jOjkxNTkKKyM6IGV2YWwuYzo5MTc3CiBtc2dpZCAiRTEyOTogRnVuY3Rpb24gbmFtZSByZXF1aXJlZCIKIG1zZ3N0ciAiRTEyOTog0vDl4fPl8vH/IOjs/yD08+3q9ujoIgogCi0jOiBldmFsLmM6OTIxMAorIzogZXZhbC5jOjkyMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTEyODogRnVuY3Rpb24gbmFtZSBtdXN0IHN0YXJ0IHdpdGggYSBjYXBpdGFsOiAlcyIKIG1zZ3N0ciAiRTEyODogyOz/IPTz7er26Ogg5O7r5u3uIO3g9+jt4PL88f8g8SDv8O7v6PHt7ukg4fPq4vs6ICVzIgogCi0jOiBldmFsLmM6OTQwMgorIzogZXZhbC5jOjk0MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTEzMDogVW5kZWZpbmVkIGZ1bmN0aW9uOiAlcyIKIG1zZ3N0ciAiRTEzMDog1PPt6vbo/yAlcyDt5SDu7/Dl5OXr5e3gIgogCi0jOiBldmFsLmM6OTQwNworIzogZXZhbC5jOjk0MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTEzMTogQ2Fubm90IGRlbGV0ZSBmdW5jdGlvbiAlczogSXQgaXMgaW4gdXNlIgogbXNnc3RyICJFMTMxOiDN5eLu5+zu5u3uIPPk4Ovo8vwg9PPt6vbo/iAlcywg7u3gIOjx7+7r/Ofz5fLx/yIKIAotIzogZXZhbC5jOjk0NTUKKyM6IGV2YWwuYzo5NDczCiBtc2dpZCAiRTEzMjogRnVuY3Rpb24gY2FsbCBkZXB0aCBpcyBoaWdoZXIgdGhhbiAnbWF4ZnVuY2RlcHRoJyIKIG1zZ3N0ciAiRTEzMjogw+vz4ejt4CDi++fu4uAg9PPt6vbo6CDh7uv8+OUsIPfl7CDn7eD35e3o5SAnbWF4ZnVuY2RlcHRoJyIKIAogIy4gYWx3YXlzIHNjcm9sbCB1cCwgZG9uJ3Qgb3ZlcndyaXRlCi0jOiBldmFsLmM6OTUwOAorIzogZXZhbC5jOjk1MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2FsbGluZyAlcyIKIG1zZ3N0ciAi4vvn7uIgJXMiCiAKLSM6IGV2YWwuYzo5NTcwCisjOiBldmFsLmM6OTU4OAogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBhYm9ydGVkIgogbXNnc3RyICIlcyDv8OXw4uDt4CIKIAotIzogZXZhbC5jOjk1NzIKKyM6IGV2YWwuYzo5NTkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIHJldHVybmluZyAjJWxkIgogbXNnc3RyICIlcyDi7ufi8OD54OXyICMlbGQiCiAKLSM6IGV2YWwuYzo5NTc5CisjOiBldmFsLmM6OTU5NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZXR1cm5pbmcgXCIlc1wiIgogbXNnc3RyICIlcyDi7ufi8OD54OXyIFwiJXNcIiIKIAogIy4gYWx3YXlzIHNjcm9sbCB1cCwgZG9uJ3Qgb3ZlcndyaXRlCi0jOiBldmFsLmM6OTU5NSBleF9jbWRzMi5jOjIzNjUKKyM6IGV2YWwuYzo5NjEzIGV4X2NtZHMyLmM6MjM3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb250aW51aW5nIGluICVzIgogbXNnc3RyICLv8O7k7uvm5e3o5SDiICVzIgogCi0jOiBldmFsLmM6OTYyMQorIzogZXZhbC5jOjk2MzkKIG1zZ2lkICJFMTMzOiA6cmV0dXJuIG5vdCBpbnNpZGUgYSBmdW5jdGlvbiIKIG1zZ3N0ciAiRTEzMzog6u7s4O3k4CA6cmV0dXJuIOLt5SD08+3q9ujoIgogCi0jOiBldmFsLmM6OTk1MgorIzogZXZhbC5jOjk5NzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtNzI4LDcgKzcyOCw3IEBACiBtc2dpZCAiSWxsZWdhbCBzdGFydGluZyBjaGFyIgogbXNnc3RyICLN5eTu7/Px8ujs++kg7eD34Ov87fvpIPHo7OLu6yIKIAotIzogZXhfY21kcy5jOjIwOTcgZXhfY21kcy5jOjIzNjIgZXhfY21kczIuYzo3NjMKKyM6IGV4X2NtZHMuYzoyMDk3IGV4X2NtZHMyLmM6NzYxCiBtc2dpZCAiU2F2ZSBBcyIKIG1zZ3N0ciAi0e718ODt6PL8IOrg6iIKIApAQCAtNzU2LDExICs3NTYsMTEgQEAKIG1zZ2lkICJFMTQxOiBObyBmaWxlIG5hbWUgZm9yIGJ1ZmZlciAlbGQiCiBtc2dzdHIgIkUxNDE6IMHz9OXwICVsZCDt5SDx4v/n4O0g8SDo7OXt5ewg9ODp6+AiCiAKLSM6IGV4X2NtZHMuYzoyNDA1CisjOiBleF9jbWRzLmM6MjQwNgogbXNnaWQgIkUxNDI6IEZpbGUgbm90IHdyaXR0ZW46IFdyaXRpbmcgaXMgZGlzYWJsZWQgYnkgJ3dyaXRlJyBvcHRpb24iCiBtc2dzdHIgIkUxNDI6INTg6esg7eUg8e718ODtuO06IOfg7+jx/CDu8urr/vfl7eAg7u/26OXpICd3cml0ZSciCiAKLSM6IGV4X2NtZHMuYzoyNDI1CisjOiBleF9jbWRzLmM6MjQyNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJ3JlYWRvbmx5JyBvcHRpb24gaXMgc2V0IGZvciBcIiUuKnNcIi5cbiIKQEAgLTc2OSw2OCArNzY5LDY4IEBACiAixOv/IFwiJS4qc1wiIOLq6/735e3gIO7v9uj/ICdyZWFkb25seScuXG4iCiAix+Dv6PHg8vw/IgogCi0jOiBleF9jbWRzLmM6MjU5NworIzogZXhfY21kcy5jOjI1OTkKIG1zZ2lkICJFZGl0IEZpbGUiCiBtc2dzdHIgItDl5ODq8ujw7uLg7ejlIPTg6evgIgogCi0jOiBleF9jbWRzLmM6MzIwNQorIzogZXhfY21kcy5jOjMyMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE0MzogQXV0b2NvbW1hbmRzIHVuZXhwZWN0ZWRseSBkZWxldGVkIG5ldyBidWZmZXIgJXMiCiBtc2dzdHIgIkUxNDM6IMDi8u7q7uzg7eT7IO3l7ubo5ODt7e4g8+Ho6+gg7e7i++kg4fP05fAgJXMiCiAKLSM6IGV4X2NtZHMuYzozMzM5CisjOiBleF9jbWRzLmM6MzM0MAogbXNnaWQgIkUxNDQ6IG5vbi1udW1lcmljIGFyZ3VtZW50IHRvIDp6IgogbXNnc3RyICJFMTQ0OiDP4PDg7OXy8CDq7uzg7eT7IDp6IOTu6+bl7SDh+/L8IPfo8evu7CIKIAotIzogZXhfY21kcy5jOjM0MjQKKyM6IGV4X2NtZHMuYzozNDI1CiBtc2dpZCAiRTE0NTogU2hlbGwgY29tbWFuZHMgbm90IGFsbG93ZWQgaW4gcnZpbSIKIG1zZ3N0ciAiRTE0NTogyPHv7uv85+7i4O3o5SDq7uzg7eQg7uHu6+736ugg7eUg5O7v8/Hq4OXy8f8g4iBydmltLiIKIAotIzogZXhfY21kcy5jOjM1MzEKKyM6IGV4X2NtZHMuYzozNTMyCiBtc2dpZCAiRTE0NjogUmVndWxhciBleHByZXNzaW9ucyBjYW4ndCBiZSBkZWxpbWl0ZWQgYnkgbGV0dGVycyIKIG1zZ3N0ciAiRTE0Njog0OXj8+v/8O375SDi+/Dg5uXt6P8g7eUg7O7j8/Ig8ODn5OXr//L88f8g4fPq4uDs6CIKIAotIzogZXhfY21kcy5jOjM4NzcKKyM6IGV4X2NtZHMuYzozODc4CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlcGxhY2Ugd2l0aCAlcyAoeS9uL2EvcS9sL15FL15ZKT8iCiBtc2dzdHIgIufg7OXt6PL8IO3gICVzPyAoeS9uL2EvcS9sL15FL15ZKSIKIAotIzogZXhfY21kcy5jOjQyNzAKKyM6IGV4X2NtZHMuYzo0MjcxCiBtc2dpZCAiKEludGVycnVwdGVkKSAiCiBtc2dzdHIgIijP8OXw4uDt7ikiCiAKLSM6IGV4X2NtZHMuYzo0Mjc0CisjOiBleF9jbWRzLmM6NDI3NQogbXNnaWQgIjEgc3Vic3RpdHV0aW9uIgogbXNnc3RyICLO5O3gIOfg7OXt4CIKIAotIzogZXhfY21kcy5jOjQyNzYKKyM6IGV4X2NtZHMuYzo0Mjc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsZCBzdWJzdGl0dXRpb25zIgogbXNnc3RyICIlbGQg5+Ds5e0iCiAKLSM6IGV4X2NtZHMuYzo0Mjc5CisjOiBleF9jbWRzLmM6NDI4MAogbXNnaWQgIiBvbiAxIGxpbmUiCiBtc2dzdHIgIiDiIO7k7e7pIPHy8O7q5SIKIAotIzogZXhfY21kcy5jOjQyODEKKyM6IGV4X2NtZHMuYzo0MjgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiBvbiAlbGQgbGluZXMiCiBtc2dzdHIgIiDiICVsZCDx8vAuIgogCi0jOiBleF9jbWRzLmM6NDMzMgorIzogZXhfY21kcy5jOjQzMzMKIG1zZ2lkICJFMTQ3OiBDYW5ub3QgZG8gOmdsb2JhbCByZWN1cnNpdmUiCiBtc2dzdHIgIkUxNDc6IMru7ODt5OAgOmdsb2JhbCDt5SDs7ubl8iDh+/L8IPDl6vPw8eji7e7pIgogCi0jOiBleF9jbWRzLmM6NDM2NworIzogZXhfY21kcy5jOjQzNjgKIG1zZ2lkICJFMTQ4OiBSZWd1bGFyIGV4cHJlc3Npb24gbWlzc2luZyBmcm9tIGdsb2JhbCIKIG1zZ3N0ciAiRTE0ODogwiDq7uzg7eTlIDpnbG9iYWwg7/Du7/P55e3uIPDl4/Pr//Dt7uUg4vvw4Obl7ejlIgogCi0jOiBleF9jbWRzLmM6NDQxNgorIzogZXhfY21kcy5jOjQ0MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiUGF0dGVybiBmb3VuZCBpbiBldmVyeSBsaW5lOiAlcyIKIG1zZ3N0ciAi0e7u8uLl8vHy4ujlIPjg4evu7fMg7eDp5OXt7iDt4CDq4Obk7ukg8fLw7urlOiAlcyIKIAotIzogZXhfY21kcy5jOjQ0OTcKKyM6IGV4X2NtZHMuYzo0NDk4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTg0MSw5NiArODQxLDk2IEBACiAiIyDP7vHr5eTt//8g8fLw7urgIOTr/yDn4Ozl7fs6XG4iCiAiJCIKIAotIzogZXhfY21kcy5jOjQ1OTgKKyM6IGV4X2NtZHMuYzo0NTk5CiBtc2dpZCAiRTQ3ODogRG9uJ3QgcGFuaWMhIgogbXNnc3RyICJFNDc4OiDR7+7q7unx8uLo5Swg8u7r/OruIPHv7uru6fHy4ujlISIKIAotIzogZXhfY21kcy5jOjQ2NTAKKyM6IGV4X2NtZHMuYzo0NjUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2NjE6IFNvcnJ5LCBubyAnJXMnIGhlbHAgZm9yICVzIgogbXNnc3RyICJFNjYxOiDqIPHu5uDr5e3o/iwg8e/w4OLq4CAnJXMnIOTr/yAlcyDu8vHz8vHy4vPl8iIKIAotIzogZXhfY21kcy5jOjQ2NTMKKyM6IGV4X2NtZHMuYzo0NjU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNDk6IFNvcnJ5LCBubyBoZWxwIGZvciAlcyIKIG1zZ3N0ciAiRTE0OTogyiDx7ubg6+Xt6P4g8e/w4OLq4CDk6/8gJXMg7vLx8/Lx8uLz5fIiCiAKLSM6IGV4X2NtZHMuYzo0Njg3CisjOiBleF9jbWRzLmM6NDY4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJTb3JyeSwgaGVscCBmaWxlIFwiJXNcIiBub3QgZm91bmQiCiBtc2dzdHIgIsjn4ujt6PLlLCD04OnrIPHv8ODi6uggXCIlc1wiIO3lIO3g6eTl7SIKIAotIzogZXhfY21kcy5jOjUxNzAKKyM6IGV4X2NtZHMuYzo1MTkxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNTA6IE5vdCBhIGRpcmVjdG9yeTogJXMiCiBtc2dzdHIgIkUxNTA6ICVzIO3lIP/i6//l8vH/IOrg8uDr7uPu7CIKIAotIzogZXhfY21kcy5jOjUzMDkKKyM6IGV4X2NtZHMuYzo1MzMwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNTI6IENhbm5vdCBvcGVuICVzIGZvciB3cml0aW5nIgogbXNnc3RyICJFMTUyOiDN5eLu5+zu5u3uIO7y6vD78vwgJXMg5Ov/IOfg7+jx6CIKIAotIzogZXhfY21kcy5jOjUzNDUKKyM6IGV4X2NtZHMuYzo1MzY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxNTM6IFVuYWJsZSB0byBvcGVuICVzIGZvciByZWFkaW5nIgogbXNnc3RyICJFMTUzOiDN5eLu5+zu5u3uIO7y6vD78vwgJXMg5Ov/IPfy5e3o/yIKIAotIzogZXhfY21kcy5jOjUzNjcKKyM6IGV4X2NtZHMuYzo1Mzg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2NzA6IE1peCBvZiBoZWxwIGZpbGUgZW5jb2RpbmdzIHdpdGhpbiBhIGxhbmd1YWdlOiAlcyIKIG1zZ3N0ciAiRTY3MDog1ODp6/sg8e/w4OLq6CDo8e/u6/zn8/7yIPDg5+375SDq7uTo8O7i6ugg5Ov/IO7k7e7j7iD/5/vq4DogJXMiCiAKLSM6IGV4X2NtZHMuYzo1NDQ1CisjOiBleF9jbWRzLmM6NTQ2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTU0OiBEdXBsaWNhdGUgdGFnIFwiJXNcIiBpbiBmaWxlICVzIgogbXNnc3RyICJFMTU0OiDP7uLy7vD//vng//H/IOzl8urgIFwiJXNcIiDiIPTg6evlICVzIgogCi0jOiBleF9jbWRzLmM6NTU1NworIzogZXhfY21kcy5jOjU1NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE2MDogVW5rbm93biBzaWduIGNvbW1hbmQ6ICVzIgogbXNnc3RyICJFMTYwOiDN5ejn4uXx8u3g/yDq7uzg7eTgIOft4Pfq4CAlcyIKIAotIzogZXhfY21kcy5jOjU1NzcKKyM6IGV4X2NtZHMuYzo1NTk4CiBtc2dpZCAiRTE1NjogTWlzc2luZyBzaWduIG5hbWUiCiBtc2dzdHIgIkUxNTY6IM/w7u/z+eXt7iDo7P8g5+3g9+rgIgogCi0jOiBleF9jbWRzLmM6NTYyMworIzogZXhfY21kcy5jOjU2NDQKIG1zZ2lkICJFNjEyOiBUb28gbWFueSBzaWducyBkZWZpbmVkIgogbXNnc3RyICJFNjEyOiDO7/Dl5OXr5e3uIPHr6Pjq7uwg7O3u4+4g5+3g9+ru4iIKIAotIzogZXhfY21kcy5jOjU2OTEKKyM6IGV4X2NtZHMuYzo1NzEyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyMzk6IEludmFsaWQgc2lnbiB0ZXh0OiAlcyIKIG1zZ3N0ciAiRTIzOTogzeXv8ODi6Ov87fvpIPLl6vHyIOft4Pfq4DogJXMiCiAKLSM6IGV4X2NtZHMuYzo1NzIyIGV4X2NtZHMuYzo1OTEzCisjOiBleF9jbWRzLmM6NTc0MyBleF9jbWRzLmM6NTkzNAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTU1OiBVbmtub3duIHNpZ246ICVzIgogbXNnc3RyICJFMTU1OiDN5ejn4uXx8u376SDn7eD37uo6ICVzIgogCi0jOiBleF9jbWRzLmM6NTc3MQorIzogZXhfY21kcy5jOjU3OTIKIG1zZ2lkICJFMTU5OiBNaXNzaW5nIHNpZ24gbnVtYmVyIgogbXNnc3RyICJFMTU5OiDP8O7v8/nl7SDt7uzl8CDn7eD36uAiCiAKLSM6IGV4X2NtZHMuYzo1ODUzCisjOiBleF9jbWRzLmM6NTg3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTU4OiBJbnZhbGlkIGJ1ZmZlciBuYW1lOiAlcyIKIG1zZ3N0ciAiRTE1ODogzeXv8ODi6Ov87e7lIOjs/yDh8/Tl8OA6ICVzIgogCi0jOiBleF9jbWRzLmM6NTg5MgorIzogZXhfY21kcy5jOjU5MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE1NzogSW52YWxpZCBzaWduIElEOiAlbGQiCiBtc2dzdHIgIkUxNTc6IM3l7/Dg4ujr/O376SBJRCDn7eD36uA6ICVsZCIKIAotIzogZXhfY21kcy5jOjU5NjIKKyM6IGV4X2NtZHMuYzo1OTgzCiBtc2dpZCAiIChOT1QgRk9VTkQpIgogbXNnc3RyICIgKM3FIM3AycTFzc4pIgogCi0jOiBleF9jbWRzLmM6NTk2NAorIzogZXhfY21kcy5jOjU5ODUKIG1zZ2lkICIgKG5vdCBzdXBwb3J0ZWQpIgogbXNnc3RyICIgKO3lIO/u5OTl8Obo4uDl8vH/KSIKIAotIzogZXhfY21kcy5jOjYwNjMKKyM6IGV4X2NtZHMuYzo2MDg0CiBtc2dpZCAiW0RlbGV0ZWRdIgogbXNnc3RyICJb0+Tg6+Xt7l0iCiAKQEAgLTkzOCw3ICs5MzgsNyBAQAogbXNnaWQgIkVudGVyaW5nIERlYnVnIG1vZGUuICBUeXBlIFwiY29udFwiIHRvIGNvbnRpbnVlLiIKIG1zZ3N0ciAiwurr/ve47SDw5ebo7CDu8uvg5OroLiDE6/8g7/Du5O7r5uXt6P8g7eDh5fDo8uUgXCJjb250XCIiCiAKLSM6IGV4X2NtZHMyLmM6OTYgZXhfZG9jbWQuYzo5NjYKKyM6IGV4X2NtZHMyLmM6OTYgZXhfZG9jbWQuYzo5NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAibGluZSAlbGQ6ICVzIgogbXNnc3RyICLx8vDu6uAgJWxkOiAlcyIKQEAgLTk3Miw3ICs5NzIsNyBAQAogbXNnaWQgIlNhdmUgY2hhbmdlcyB0byBcIiUuKnNcIj8iCiBtc2dzdHIgItHu9fDg7ejy/CDo5+zl7eXt6P8g4iBcIiUuKnNcIj8iCiAKLSM6IGV4X2NtZHMyLmM6Nzg4IGV4X2RvY21kLmM6OTM3OAorIzogZXhfY21kczIuYzo3ODggZXhfZG9jbWQuYzo5Mzk4CiBtc2dpZCAiVW50aXRsZWQiCiBtc2dzdHIgIsHl5yDo7OXt6CIKIApAQCAtMTAwMywxNjggKzEwMDMsMTY4IEBACiBtc2dpZCAiRTY2NjogY29tcGlsZXIgbm90IHN1cHBvcnRlZDogJXMiCiBtc2dzdHIgIkU2NjY6IOru7O/o6//y7vAg7eUg7+7k5OXw5uji4OXy8f86ICVzIgogCi0jOiBleF9jbWRzMi5jOjE4OTcKKyM6IGV4X2NtZHMyLmM6MTkwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJTZWFyY2hpbmcgZm9yIFwiJXNcIiBpbiBcIiVzXCIiCiBtc2dzdHIgIs/u6PHqIFwiJXNcIiDiIFwiJXNcIiIKIAotIzogZXhfY21kczIuYzoxOTE5CisjOiBleF9jbWRzMi5jOjE5MjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2VhcmNoaW5nIGZvciBcIiVzXCIiCiBtc2dzdHIgIs/u6PHqIFwiJXNcIiIKIAotIzogZXhfY21kczIuYzoxOTQwCisjOiBleF9jbWRzMi5jOjE5NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IGZvdW5kIGluICdydW50aW1lcGF0aCc6IFwiJXNcIiIKIG1zZ3N0ciAi7eUg7eDp5OXt7iDiICdydW50aW1lcGF0aCc6IFwiJXNcIiIKIAotIzogZXhfY21kczIuYzoxOTc0CisjOiBleF9jbWRzMi5jOjE5NzkKIG1zZ2lkICJTb3VyY2UgVmltIHNjcmlwdCIKIG1zZ3N0ciAiwvvv7uvt6PL8IPH25e3g8OjpIFZpbSIKIAotIzogZXhfY21kczIuYzoyMTY0CisjOiBleF9jbWRzMi5jOjIxNjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHNvdXJjZSBhIGRpcmVjdG9yeTogXCIlc1wiIgogbXNnc3RyICLN5ev85/8g8ffo8uDy/CDq4PLg6+7jOiBcIiVzXCIiCiAKLSM6IGV4X2NtZHMyLmM6MjIwMgorIzogZXhfY21kczIuYzoyMjA3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBzb3VyY2UgXCIlc1wiIgogbXNnc3RyICLt5eLu5+zu5u3uIPH36PLg8vwgXCIlc1wiIgogCi0jOiBleF9jbWRzMi5jOjIyMDQKKyM6IGV4X2NtZHMyLmM6MjIwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJsaW5lICVsZDogY291bGQgbm90IHNvdXJjZSBcIiVzXCIiCiBtc2dzdHIgIvHy8O7q4CAlbGQ6IO3l4u7n7O7m7e4g8ffo8uDy/CBcIiVzXCIiCiAKLSM6IGV4X2NtZHMyLmM6MjIxOAorIzogZXhfY21kczIuYzoyMjIzCiAjLCBjLWZvcm1hdAogbXNnaWQgInNvdXJjaW5nIFwiJXNcIiIKIG1zZ3N0ciAi8ffo8vvi4O3o5SDx9uXt4PDo/yBcIiVzXCIiCiAKLSM6IGV4X2NtZHMyLmM6MjIyMAorIzogZXhfY21kczIuYzoyMjI1CiAjLCBjLWZvcm1hdAogbXNnaWQgImxpbmUgJWxkOiBzb3VyY2luZyBcIiVzXCIiCiBtc2dzdHIgIvHy8O7q4CAlbGQ6IPH36PL74uDt6OUgXCIlc1wiIgogCi0jOiBleF9jbWRzMi5jOjIzNjMKKyM6IGV4X2NtZHMyLmM6MjM2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJmaW5pc2hlZCBzb3VyY2luZyAlcyIKIG1zZ3N0ciAi8ffo8vvi4O3o5SDx9uXt4PDo/yAlcyDn4OLl8Pjl7e4iCiAKLSM6IGV4X2NtZHMyLmM6MjcwNworIzogZXhfY21kczIuYzoyNzEyCiBtc2dpZCAiVzE1OiBXYXJuaW5nOiBXcm9uZyBsaW5lIHNlcGFyYXRvciwgXk0gbWF5IGJlIG1pc3NpbmciCiBtc2dzdHIgIiIKICJXMTU6IM/w5eTz7/Dl5uTl7ejlOiDt5e/w4OLo6/zt++kg8ODn5OXr6PLl6/wg8fLw7uroLiDC7ufs7ubt7iDv8O7v8/nl7e4gXk0iCiAKLSM6IGV4X2NtZHMyLmM6Mjc1NgorIzogZXhfY21kczIuYzoyNzYxCiBtc2dpZCAiRTE2NzogOnNjcmlwdGVuY29kaW5nIHVzZWQgb3V0c2lkZSBvZiBhIHNvdXJjZWQgZmlsZSIKIG1zZ3N0ciAiRTE2Nzogyu7s4O3k4CA6c2NyaXB0ZW5jb2Rpbmcg6PHv7uv85/Pl8vH/IOLt5SD04Onr4CDx9uXt4PDo/yIKIAotIzogZXhfY21kczIuYzoyNzg5CisjOiBleF9jbWRzMi5jOjI3OTQKIG1zZ2lkICJFMTY4OiA6ZmluaXNoIHVzZWQgb3V0c2lkZSBvZiBhIHNvdXJjZWQgZmlsZSIKIG1zZ3N0ciAiRTE2ODogyu7s4O3k4CA6ZmluaXNoIOjx7+7r/Ofz5fLx/yDi7eUg9ODp6+Ag8fbl7eDw6P8iCiAKLSM6IGV4X2NtZHMyLmM6MzIzOAorIzogZXhfY21kczIuYzozMjQzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlBhZ2UgJWQiCiBtc2dzdHIgItHy8ODt6PbgICVkIgogCi0jOiBleF9jbWRzMi5jOjMzOTQKKyM6IGV4X2NtZHMyLmM6MzM5OQogbXNnaWQgIk5vIHRleHQgdG8gYmUgcHJpbnRlZCIKIG1zZ3N0ciAiz+X34PLg8vwg7eX35ePuIgogCi0jOiBleF9jbWRzMi5jOjM0NzIKKyM6IGV4X2NtZHMyLmM6MzQ3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJQcmludGluZyBwYWdlICVkICglZCUlKSIKIG1zZ3N0ciAiz+X34PL8IPHy8C4gJWQgKCVkJSUpIgogCi0jOiBleF9jbWRzMi5jOjM0ODQKKyM6IGV4X2NtZHMyLmM6MzQ4OQogIywgYy1mb3JtYXQKIG1zZ2lkICIgQ29weSAlZCBvZiAlZCIKIG1zZ3N0ciAiIMru7+j/ICVkIOjnICVkIgogCi0jOiBleF9jbWRzMi5jOjM1NDIKKyM6IGV4X2NtZHMyLmM6MzU0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJQcmludGVkOiAlcyIKIG1zZ3N0ciAizeDv5ffg8uDt7jogJXMiCiAKLSM6IGV4X2NtZHMyLmM6MzU0OQorIzogZXhfY21kczIuYzozNTU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlByaW50aW5nIGFib3J0ZWQiCiBtc2dzdHIgIs/l9+Dy/CDv8OXq8OD55e3gIgogCi0jOiBleF9jbWRzMi5jOjM5MTQKKyM6IGV4X2NtZHMyLmM6MzkxOQogbXNnaWQgIkU0NTU6IEVycm9yIHdyaXRpbmcgdG8gUG9zdFNjcmlwdCBvdXRwdXQgZmlsZSIKIG1zZ3N0ciAiRTQ1NTogzvjo4ergIOfg7+jx6CDiIPTg6esgUG9zdFNjcmlwdCIKIAotIzogZXhfY21kczIuYzo0MTg5CisjOiBleF9jbWRzMi5jOjQxOTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTYyNDogQ2FuJ3Qgb3BlbiBmaWxlIFwiJXNcIiIKIG1zZ3N0ciAiRTYyNDogzeXi7ufs7ubt7iDu8urw+/L8IPTg6esgXCIlc1wiIgogCi0jOiBleF9jbWRzMi5jOjQxOTkgZXhfY21kczIuYzo0ODI0CisjOiBleF9jbWRzMi5jOjQyMDQgZXhfY21kczIuYzo0ODI5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0NTc6IENhbid0IHJlYWQgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIFwiJXNcIiIKIG1zZ3N0ciAiRTQ1NzogzeXi7ufs7ubt7iDv8O736PLg8vwg9ODp6yDw5fHz8PHu4iBQb3N0U2NyaXB0IFwiJXNcIiIKIAotIzogZXhfY21kczIuYzo0MjA3CisjOiBleF9jbWRzMi5jOjQyMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTYxODogZmlsZSBcIiVzXCIgaXMgbm90IGEgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIgogbXNnc3RyICJFNjE4OiD04OnrIFwiJXNcIiDt5SD/4uv/5fLx/yD04Onr7uwg8OXx8/Dx7uIgUG9zdFNjcmlwdCIKIAotIzogZXhfY21kczIuYzo0MjIyIGV4X2NtZHMyLmM6NDI0MiBleF9jbWRzMi5jOjQyNTcgZXhfY21kczIuYzo0Mjc5CisjOiBleF9jbWRzMi5jOjQyMjcgZXhfY21kczIuYzo0MjQ3IGV4X2NtZHMyLmM6NDI2MiBleF9jbWRzMi5jOjQyODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTYxOTogZmlsZSBcIiVzXCIgaXMgbm90IGEgc3VwcG9ydGVkIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSIKIG1zZ3N0ciAiRTYxOTog9ODp6yBcIiVzXCIg7eUg/+Lr/+Xy8f8g5O7v8/Hy6Oz77CD04Onr7uwg8OXx8/Dx7uIgUG9zdFNjcmlwdCIKIAotIzogZXhfY21kczIuYzo0MzA5CisjOiBleF9jbWRzMi5jOjQzMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTYyMTogXCIlc1wiIHJlc291cmNlIGZpbGUgaGFzIHdyb25nIHZlcnNpb24iCiBtc2dzdHIgIkU2MjE6IPTg6esg8OXx8/Dx7uIgXCIlc1wiIO3l6Ofi5fHy7e7pIOLl8PHo6CIKIAotIzogZXhfY21kczIuYzo0Nzc2CisjOiBleF9jbWRzMi5jOjQ3ODEKIG1zZ2lkICJFMzI0OiBDYW4ndCBvcGVuIFBvc3RTY3JpcHQgb3V0cHV0IGZpbGUiCiBtc2dzdHIgIkUzMjQ6IM3l4u7n7O7m7e4g7vLq8Pvy/CD04OnrIFBvc3RTY3JpcHQiCiAKLSM6IGV4X2NtZHMyLmM6NDgwOQorIzogZXhfY21kczIuYzo0ODE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0NTY6IENhbid0IG9wZW4gZmlsZSBcIiVzXCIiCiBtc2dzdHIgIkU0NTY6IM3l4u7n7O7m7e4g7vLq8Pvy/CD04OnrIFwiJXNcIiIKIAotIzogZXhfY21kczIuYzo0OTI4CisjOiBleF9jbWRzMi5jOjQ5MzMKIG1zZ2lkICJFNDU2OiBDYW4ndCBmaW5kIFBvc3RTY3JpcHQgcmVzb3VyY2UgZmlsZSBcInByb2xvZy5wc1wiIgogbXNnc3RyICJFNDU2OiDU4OnrIPDl8fPw8e7iIFBvc3RTY3JpcHQgXCJwcm9sb2cucHNcIiDt5SDt4Onk5e0iCiAKLSM6IGV4X2NtZHMyLmM6NDk1OQorIzogZXhfY21kczIuYzo0OTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0NTY6IENhbid0IGZpbmQgUG9zdFNjcmlwdCByZXNvdXJjZSBmaWxlIFwiJXMucHNcIiIKIG1zZ3N0ciAiRTQ1Njog1ODp6yDw5fHz8PHu4iBQb3N0U2NyaXB0IFwiJXMucHNcIiDt5SDt4Onk5e0iCiAKLSM6IGV4X2NtZHMyLmM6NDk3NworIzogZXhfY21kczIuYzo0OTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2MjA6IFVuYWJsZSB0byBjb252ZXJ0IGZyb20gbXVsdGktYnl0ZSB0byBcIiVzXCIgZW5jb2RpbmciCiBtc2dzdHIgIiIKICJFNjIwOiDP8OXu4fDg5+7i4O3o5SDo5yDs8+v88ujh4Ony7fv1IPHo7OLu6+7iIOIg6u7k6PDu4urzIFwiJXNcIiDt5eLu5+zu5u3uIgogCi0jOiBleF9jbWRzMi5jOjUxMDIKKyM6IGV4X2NtZHMyLmM6NTEwNwogbXNnaWQgIlNlbmRpbmcgdG8gcHJpbnRlci4uLiIKIG1zZ3N0ciAizvLv8ODi6uAg7eAg7+X34PL8Li4uIgogCi0jOiBleF9jbWRzMi5jOjUxMDYKKyM6IGV4X2NtZHMyLmM6NTExMQogbXNnaWQgIkUzNjU6IEZhaWxlZCB0byBwcmludCBQb3N0U2NyaXB0IGZpbGUiCiBtc2dzdHIgIkUzNjU6IM3lIPPk4Ovu8fwg4vvv7uvt6PL8IO/l9+Dy/CD04Onr4CBQb3N0U2NyaXB0IgogCi0jOiBleF9jbWRzMi5jOjUxMDgKKyM6IGV4X2NtZHMyLmM6NTExMwogbXNnaWQgIlByaW50IGpvYiBzZW50LiIKIG1zZ3N0ciAix+Dk4O3o5SDt4CDv5ffg8vwg7vLv8ODi6+Xt7i4iCiAKLSM6IGV4X2NtZHMyLmM6NTYxOAorIzogZXhfY21kczIuYzo1NjIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkN1cnJlbnQgJXNsYW5ndWFnZTogXCIlc1wiIgogbXNnc3RyICLA6vLo4u376SAlc//n++o6IFwiJXNcIiIKIAotIzogZXhfY21kczIuYzo1NjI5CisjOiBleF9jbWRzMi5jOjU2MzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE5NzogQ2Fubm90IHNldCBsYW5ndWFnZSB0byBcIiVzXCIiCiBtc2dzdHIgIkUxOTc6IM3l4u7n7O7m7e4g8ezl7ejy/CD/5/vqIO3gIFwiJXNcIiIKQEAgLTExNzgsNzQgKzExNzgsNzQgQEAKIG1zZ2lkICJFNTAxOiBBdCBlbmQtb2YtZmlsZSIKIG1zZ3N0ciAiRTUwMTogwiDq7u325SD04Onr4CIKIAotIzogZXhfZG9jbWQuYzo2NjkKKyM6IGV4X2RvY21kLmM6NjcwCiBtc2dpZCAiRTE2OTogQ29tbWFuZCB0b28gcmVjdXJzaXZlIgogbXNnc3RyICJFMTY5OiBD6+j46u7sIPDl6vPw8eji7eD/IOru7ODt5OAiCiAKLSM6IGV4X2RvY21kLmM6MTIyOQorIzogZXhfZG9jbWQuYzoxMjMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU2MDU6IEV4Y2VwdGlvbiBub3QgY2F1Z2h0OiAlcyIKIG1zZ3N0ciAiRTYwNTogyPHq6/736PLl6/zt4P8g8ejy8+D26P8g7eUg7uHw4OHu8uDt4DogJXMiCiAKLSM6IGV4X2RvY21kLmM6MTMxNworIzogZXhfZG9jbWQuYzoxMzIwCiBtc2dpZCAiRW5kIG9mIHNvdXJjZWQgZmlsZSIKIG1zZ3N0ciAiyu7t5fYg8ffo8uDt7e7j7iD04Onr4CIKIAotIzogZXhfZG9jbWQuYzoxMzE4CisjOiBleF9kb2NtZC5jOjEzMjEKIG1zZ2lkICJFbmQgb2YgZnVuY3Rpb24iCiBtc2dzdHIgIsru7eX2IPTz7er26OgiCiAKLSM6IGV4X2RvY21kLmM6MTkwNworIzogZXhfZG9jbWQuYzoxOTEwCiBtc2dpZCAiRTQ2NDogQW1iaWd1b3VzIHVzZSBvZiB1c2VyLWRlZmluZWQgY29tbWFuZCIKIG1zZ3N0ciAiRTQ2NDogzeXu5O3u5+3g9+3u5SDo8e/u6/zn7uLg7ejlIOru7ODt5Psg7+7r/Ofu4uDy5ev/IgogCi0jOiBleF9kb2NtZC5jOjE5MjEKKyM6IGV4X2RvY21kLmM6MTkyNAogbXNnaWQgIkU0OTI6IE5vdCBhbiBlZGl0b3IgY29tbWFuZCIKIG1zZ3N0ciAiRTQ5Mjog3fLuIO3lIOru7ODt5OAg8OXk4Ory7vDgIgogCi0jOiBleF9kb2NtZC5jOjIwMjgKKyM6IGV4X2RvY21kLmM6MjAzMQogbXNnaWQgIkU0OTM6IEJhY2t3YXJkcyByYW5nZSBnaXZlbiIKIG1zZ3N0ciAiRTQ5Mzogx+Dk4O0g7uHw4PLt++kg5Ojg7+Dn7u0iCiAKLSM6IGV4X2RvY21kLmM6MjAzNworIzogZXhfZG9jbWQuYzoyMDQwCiBtc2dpZCAiQmFja3dhcmRzIHJhbmdlIGdpdmVuLCBPSyB0byBzd2FwIgogbXNnc3RyICLH4OTg7SDu4fDg8u376SDk6ODv4Ofu7Swg7OXt/+XsIOPw4O3o9vsg7OXx8uDs6CIKIAotIzogZXhfZG9jbWQuYzoyMTYwCisjOiBleF9kb2NtZC5jOjIxNjMKIG1zZ2lkICJFNDk0OiBVc2UgdyBvciB3Pj4iCiBtc2dzdHIgIkU0OTQ6IMjx7+7r/Ofz6fLlIHcg6OvoIHc+PiIKIAotIzogZXhfZG9jbWQuYzozNzg2CisjOiBleF9kb2NtZC5jOjM3ODkKIG1zZ2lkICJFMzE5OiBTb3JyeSwgdGhlIGNvbW1hbmQgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIHZlcnNpb24iCiBtc2dzdHIgIkUzMTk6IMjn4ujt6PLlLCD98uAg6u7s4O3k4CDt5eTu8fLz7+3gIOIg5ODt7e7pIOLl8PHo6CIKIAotIzogZXhfZG9jbWQuYzozOTg5CisjOiBleF9kb2NtZC5jOjM5OTIKIG1zZ2lkICJFMTcyOiBPbmx5IG9uZSBmaWxlIG5hbWUgYWxsb3dlZCIKIG1zZ3N0ciAiRTE3Mjog0ODn8OX45e3uIOjx7+7r/Ofu4uDy/CDy7uv86u4g7uTt7iDo7P8g9ODp6+AiCiAKLSM6IGV4X2RvY21kLmM6NDU2OQorIzogZXhfZG9jbWQuYzo0NTcyCiBtc2dpZCAiMSBtb3JlIGZpbGUgdG8gZWRpdC4gIFF1aXQgYW55d2F5PyIKIG1zZ3N0ciAiMSD04OnrIO7m6OTg5fIg8OXk4Ory6PDu4uDt6P8uIML76fLoPyIKIAotIzogZXhfZG9jbWQuYzo0NTcyCisjOiBleF9kb2NtZC5jOjQ1NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWQgbW9yZSBmaWxlcyB0byBlZGl0LiAgUXVpdCBhbnl3YXk/IgogbXNnc3RyICLF8fL8IO3l7vLw5eTg6vLo8O7i4O3t++Ug9ODp6/sgKCVkKS4gwvvp8ug/IgogCi0jOiBleF9kb2NtZC5jOjQ1NzkKKyM6IGV4X2RvY21kLmM6NDU4MgogbXNnaWQgIkUxNzM6IDEgbW9yZSBmaWxlIHRvIGVkaXQiCiBtc2dzdHIgIkUxNzM6IDEg9ODp6yDu5ujk4OXyIPDl5ODq8ujw7uLg7ej/LiIKIAotIzogZXhfZG9jbWQuYzo0NTgxCisjOiBleF9kb2NtZC5jOjQ1ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE3MzogJWxkIG1vcmUgZmlsZXMgdG8gZWRpdCIKIG1zZ3N0ciAiRTE3MzogxfHy/CDt5e7y8OXk4Ory6PDu4uDt7fvlIPTg6ev7ICglZCkuIgogCi0jOiBleF9kb2NtZC5jOjQ2NzYKKyM6IGV4X2RvY21kLmM6NDY3OQogbXNnaWQgIkUxNzQ6IENvbW1hbmQgYWxyZWFkeSBleGlzdHM6IGFkZCAhIHRvIHJlcGxhY2UgaXQiCiBtc2dzdHIgIkUxNzQ6IMru7ODt5OAg8+blIPHz+eXx8uLz5fIuIMTu4eDi/PLlICEg5Ov/IOfg7OXt+y4iCiAKLSM6IGV4X2RvY21kLmM6NDc4NworIzogZXhfZG9jbWQuYzo0NzkwCiBtc2dpZCAiIgogIlxuIgogIiAgICBOYW1lICAgICAgICBBcmdzIFJhbmdlIENvbXBsZXRlICBEZWZpbml0aW9uIgpAQCAtMTI1MywxNzcgKzEyNTMsMTc3IEBACiAiXG4iCiAiICAgIMjs/yAgICAgIM/g8ODsLiDE6ODvLiDE7u/u6+0uICAgIM7v8OXk5evl7ejlIgogCi0jOiBleF9kb2NtZC5jOjQ4NzYKKyM6IGV4X2RvY21kLmM6NDg3OQogbXNnaWQgIk5vIHVzZXItZGVmaW5lZCBjb21tYW5kcyBmb3VuZCIKIG1zZ3N0ciAiyu7s4O3k+ywg7u/w5eTl67jt7fvlIO/u6/zn7uLg8uXr5ewsIO3lIO7h7eDw8+bl7fsuIgogCi0jOiBleF9kb2NtZC5jOjQ5MDgKKyM6IGV4X2RvY21kLmM6NDkxMQogbXNnaWQgIkUxNzU6IE5vIGF0dHJpYnV0ZSBzcGVjaWZpZWQiCiBtc2dzdHIgIkUxNzU6IO/g8ODs5fLwIO3lIOfg5ODtIgogCi0jOiBleF9kb2NtZC5jOjQ5NjAKKyM6IGV4X2RvY21kLmM6NDk2MwogbXNnaWQgIkUxNzY6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyIKIG1zZ3N0ciAiRTE3NjogzeXv8ODi6Ov87e7lIOru6+j35fHy4u4g7+Dw4Ozl8vDu4iIKIAotIzogZXhfZG9jbWQuYzo0OTc1CisjOiBleF9kb2NtZC5jOjQ5NzgKIG1zZ2lkICJFMTc3OiBDb3VudCBjYW5ub3QgYmUgc3BlY2lmaWVkIHR3aWNlIgogbXNnc3RyICJFMTc3OiDX6PHr7i3v8Ojx8uDi6vMg7eXr/Of/IPPq4Of74uDy/CDk4uDm5PsiCiAKLSM6IGV4X2RvY21kLmM6NDk4NQorIzogZXhfZG9jbWQuYzo0OTg4CiBtc2dpZCAiRTE3ODogSW52YWxpZCBkZWZhdWx0IHZhbHVlIGZvciBjb3VudCIKIG1zZ3N0ciAiRTE3ODogzeXv8ODi6Ov87e7lIOft4Pfl7ejlIPfo8evgLe/w6PHy4OLq6CDv7iDz7O7r9+Dt6P4iCiAKLSM6IGV4X2RvY21kLmM6NTAxNgorIzogZXhfZG9jbWQuYzo1MDE5CiBtc2dpZCAiRTE3OTogYXJndW1lbnQgcmVxdWlyZWQgZm9yIGNvbXBsZXRlIgogbXNnc3RyICJFMTc5OiDk6/8g5+Di5fD45e3o/yDy8OXh8+Xy8f8g8+rg5+Dy/CDv4PDg7OXy8CIKIAotIzogZXhfZG9jbWQuYzo1MDQ4CisjOiBleF9kb2NtZC5jOjUwNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE4MDogSW52YWxpZCBjb21wbGV0ZSB2YWx1ZTogJXMiCiBtc2dzdHIgIkUxODA6IM3l7/Dg4ujr/O3u5SDn7eD35e3o5SDk7u/u6+3l7ej/OiAlcyIKIAotIzogZXhfZG9jbWQuYzo1MDU3CisjOiBleF9kb2NtZC5jOjUwNjAKIG1zZ2lkICJFNDY4OiBDb21wbGV0aW9uIGFyZ3VtZW50IG9ubHkgYWxsb3dlZCBmb3IgY3VzdG9tIGNvbXBsZXRpb24iCiBtc2dzdHIgIiIKICJFNDY4OiDP4PDg7OXy8CDg4vLu5O7v7uvt5e3o/yDs7ubt7iDo8e/u6/zn7uLg8vwg8u7r/OruIPEg7vHu4fvsIOTu7+7r7eXt6OXsIgogCi0jOiBleF9kb2NtZC5jOjUwNjMKKyM6IGV4X2RvY21kLmM6NTA2NgogbXNnaWQgIkU0Njc6IEN1c3RvbSBjb21wbGV0aW9uIHJlcXVpcmVzIGEgZnVuY3Rpb24gYXJndW1lbnQiCiBtc2dzdHIgIkU0Njc6IM7x7uHu5SDk7u/u6+3l7ejlIPLw5eHz5fIg8+rg5+Dt6P8g7+Dw4Ozl8vDgIPTz7er26OgiCiAKLSM6IGV4X2RvY21kLmM6NTA3NAorIzogZXhfZG9jbWQuYzo1MDc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxODE6IEludmFsaWQgYXR0cmlidXRlOiAlcyIKIG1zZ3N0ciAiRTE4MTogzeXv8ODi6Ov87fvpIODy8Ojh8/I6ICVzIgogCi0jOiBleF9kb2NtZC5jOjUxMTcKKyM6IGV4X2RvY21kLmM6NTEyMAogbXNnaWQgIkUxODI6IEludmFsaWQgY29tbWFuZCBuYW1lIgogbXNnc3RyICJFMTgyOiDN5e/w4OLo6/zt7uUg6Oz/IOru7ODt5PsiCiAKLSM6IGV4X2RvY21kLmM6NTEzMgorIzogZXhfZG9jbWQuYzo1MTM1CiBtc2dpZCAiRTE4MzogVXNlciBkZWZpbmVkIGNvbW1hbmRzIG11c3Qgc3RhcnQgd2l0aCBhbiB1cHBlcmNhc2UgbGV0dGVyIgogbXNnc3RyICJFMTgzOiDK7uzg7eTgIO/u6/zn7uLg8uXr/yDk7uvm7eAg7eD36O3g8vzx/yDxIOfg4+vg4u3u6SDh8+ri+yIKIAotIzogZXhfZG9jbWQuYzo1MjAzCisjOiBleF9kb2NtZC5jOjUyMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTE4NDogTm8gc3VjaCB1c2VyLWRlZmluZWQgY29tbWFuZDogJXMiCiBtc2dzdHIgIkUxODQ6IM3l8iDy4Oru6SDq7uzg7eT7IO/u6/zn7uLg8uXr/zogJXMiCiAKLSM6IGV4X2RvY21kLmM6NTY2NAorIzogZXhfZG9jbWQuYzo1NjY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUxODU6IENhbm5vdCBmaW5kIGNvbG9yIHNjaGVtZSAlcyIKIG1zZ3N0ciAiRTE4NTog1uLl8u7i4P8g8fXl7OAgJXMg7eUg7eDp5OXt4CIKIAotIzogZXhfZG9jbWQuYzo1NjcyCisjOiBleF9kb2NtZC5jOjU2NzUKIG1zZ2lkICJHcmVldGluZ3MsIFZpbSB1c2VyISIKIG1zZ3N0ciAiz/Do4uXyLCDv7uv85+7i4PLl6/wgVmltISIKIAotIzogZXhfZG9jbWQuYzo2Mzg5CisjOiBleF9kb2NtZC5jOjYzOTMKIG1zZ2lkICJFZGl0IEZpbGUgaW4gbmV3IHdpbmRvdyIKIG1zZ3N0ciAi0OXk4Ory6PDu4uDy/CD04OnrIOIg7e7i7uwg7urt5SIKIAotIzogZXhfZG9jbWQuYzo2Njg0CisjOiBleF9kb2NtZC5jOjY2ODgKIG1zZ2lkICJObyBzd2FwIGZpbGUiCiBtc2dzdHIgIsHl5yDx4u7vLfTg6evgIgogCi0jOiBleF9kb2NtZC5jOjY3ODgKKyM6IGV4X2RvY21kLmM6Njc5MgogbXNnaWQgIkFwcGVuZCBGaWxlIgogbXNnc3RyICLE7uHg4ujy/CD04OnrIgogCi0jOiBleF9kb2NtZC5jOjY4NTIKKyM6IGV4X2RvY21kLmM6Njg1NgogbXNnaWQgIkUxODY6IE5vIHByZXZpb3VzIGRpcmVjdG9yeSIKIG1zZ3N0ciAiRTE4NjogzeXyIO/w5eT75PP55ePuIOrg8uDr7uPgIgogCi0jOiBleF9kb2NtZC5jOjY5MzQKKyM6IGV4X2RvY21kLmM6NjkzOAogbXNnaWQgIkUxODc6IFVua25vd24iCiBtc2dzdHIgIkUxODc6IM3l6Ofi5fHy7e4iCiAKLSM6IGV4X2RvY21kLmM6NzAxOQorIzogZXhfZG9jbWQuYzo3MDIzCiBtc2dpZCAiRTQ2NTogOndpbnNpemUgcmVxdWlyZXMgdHdvIG51bWJlciBhcmd1bWVudHMiCiBtc2dzdHIgIkU0NjU6IOru7ODt5OAgOndpbnNpemUg8vDl4fPl8iDz6uDn4O3o/yDk4vP1IPfo8evu4vv1IO/g8ODs5fLw7uIiCiAKLSM6IGV4X2RvY21kLmM6NzA3NQorIzogZXhfZG9jbWQuYzo3MDc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIldpbmRvdyBwb3NpdGlvbjogWCAlZCwgWSAlZCIKIG1zZ3N0ciAiz+7r7ubl7ejlIO7q7eA6IFggJWQsIFkgJWQiCiAKLSM6IGV4X2RvY21kLmM6NzA4MAorIzogZXhfZG9jbWQuYzo3MDg0CiBtc2dpZCAiRTE4ODogT2J0YWluaW5nIHdpbmRvdyBwb3NpdGlvbiBub3QgaW1wbGVtZW50ZWQgZm9yIHRoaXMgcGxhdGZvcm0iCiBtc2dzdHIgIkUxODg6IMIg5ODt7e7pIPHo8fLl7OUg7u/w5eTl6+Xt6OUg7+7r7ubl7ej/IO7q7eAg7eUg8ODh7vLg5fIiCiAKLSM6IGV4X2RvY21kLmM6NzA5MAorIzogZXhfZG9jbWQuYzo3MDk0CiBtc2dpZCAiRTQ2NjogOndpbnBvcyByZXF1aXJlcyB0d28gbnVtYmVyIGFyZ3VtZW50cyIKIG1zZ3N0ciAiRTQ2Njog6u7s4O3k4CA6d2lucG9zIPLw5eHz5fIg8+rg5+Dt6P8g5OLz9SD36PHr7uL79SDv4PDg7OXy8O7iIgogCi0jOiBleF9kb2NtZC5jOjczNjgKKyM6IGV4X2RvY21kLmM6NzM3MgogbXNnaWQgIlNhdmUgUmVkaXJlY3Rpb24iCiBtc2dzdHIgIs/l8OXt4O/w4OLr5e3o5SDn4O/o8egiCiAKLSM6IGV4X2RvY21kLmM6NzU1OAorIzogZXhfZG9jbWQuYzo3NTYyCiBtc2dpZCAiU2F2ZSBWaWV3IgogbXNnc3RyICLR7vXw4O3l7ejlIOLo5OAiCiAKLSM6IGV4X2RvY21kLmM6NzU1OQorIzogZXhfZG9jbWQuYzo3NTYzCiBtc2dpZCAiU2F2ZSBTZXNzaW9uIgogbXNnc3RyICLR7vXw4O3l7ejlIPHl4O3x4CIKIAotIzogZXhfZG9jbWQuYzo3NTYxCisjOiBleF9kb2NtZC5jOjc1NjUKIG1zZ2lkICJTYXZlIFNldHVwIgogbXNnc3RyICLR7vXw4O3l7ejlIO3g8fLw7uXqIgogCi0jOiBleF9kb2NtZC5jOjc3MTMKKyM6IGV4X2RvY21kLmM6NzcxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTg5OiBcIiVzXCIgZXhpc3RzIChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIkUxODk6IFwiJXNcIiDx8/nl8fLi8+XyICghLCD38u7h+yDu4e7p8ugg7/Du4uXw6vMpIgogCi0jOiBleF9kb2NtZC5jOjc3MTgKKyM6IGV4X2RvY21kLmM6NzcyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTkwOiBDYW5ub3Qgb3BlbiBcIiVzXCIgZm9yIHdyaXRpbmciCiBtc2dzdHIgIkUxOTA6IM3l4u7n7O7m7e4g7vLq8Pvy/CDk6/8g5+Dv6PHoIFwiJXNcIiIKIAogIy4gc2V0IG1hcmsKLSM6IGV4X2RvY21kLmM6Nzc0MgorIzogZXhfZG9jbWQuYzo3NzQ2CiBtc2dpZCAiRTE5MTogQXJndW1lbnQgbXVzdCBiZSBhIGxldHRlciBvciBmb3J3YXJkL2JhY2t3YXJkIHF1b3RlIgogbXNnc3RyICJFMTkxOiDP4PDg7OXy8CDk7uvm5e0g4fvy/CDv8P/s7ukv7uHw4PLt7ukg6uDi+/fq7ukg6OvoIOHz6uLu6SIKIAotIzogZXhfZG9jbWQuYzo3Nzg0CisjOiBleF9kb2NtZC5jOjc3ODgKIG1zZ2lkICJFMTkyOiBSZWN1cnNpdmUgdXNlIG9mIDpub3JtYWwgdG9vIGRlZXAiCiBtc2dzdHIgIkUxOTI6INHr6Pjq7uwg4+vz4e7q4P8g8OXq8/Dx6P8g7/DoIOjx7+7r/Ofu4uDt6Ogg6u7s4O3k+yA6bm9ybWFsIgogCi0jOiBleF9kb2NtZC5jOjgzMDIKKyM6IGV4X2RvY21kLmM6ODMwNgogbXNnaWQgIkUxOTQ6IE5vIGFsdGVybmF0ZSBmaWxlIG5hbWUgdG8gc3Vic3RpdHV0ZSBmb3IgJyMnIgogbXNnc3RyICJFMTk0OiDN5fIg8e7x5eTt5ePuIOjs5e3oIPTg6evgIOTr/yDn4Ozl7fsgJyMnIgogCi0jOiBleF9kb2NtZC5jOjgzMzMKKyM6IGV4X2RvY21kLmM6ODMzNwogbXNnaWQgIkU0OTU6IG5vIGF1dG9jb21tYW5kIGZpbGUgbmFtZSB0byBzdWJzdGl0dXRlIGZvciBcIjxhZmlsZT5cIiIKIG1zZ3N0ciAiRTQ5NTogzeXyIODi8u7q7uzg7eTt7uPuIOjs5e3oIPTg6evgIOTr/yDn4Ozl7fsgXCI8YWZpbGU+XCIiCiAKLSM6IGV4X2RvY21kLmM6ODM0MQorIzogZXhfZG9jbWQuYzo4MzQ1CiBtc2dpZCAiRTQ5Njogbm8gYXV0b2NvbW1hbmQgYnVmZmVyIG51bWJlciB0byBzdWJzdGl0dXRlIGZvciBcIjxhYnVmPlwiIgogbXNnc3RyICJFNDk2OiDN5fIg4OLy7uru7ODt5O3u4+4g7e7s5fDgIOHz9OXw4CDk6/8g5+Ds5e37IFwiPGFidWY+XCIiCiAKLSM6IGV4X2RvY21kLmM6ODM1MgorIzogZXhfZG9jbWQuYzo4MzU2CiBtc2dpZCAiRTQ5Nzogbm8gYXV0b2NvbW1hbmQgbWF0Y2ggbmFtZSB0byBzdWJzdGl0dXRlIGZvciBcIjxhbWF0Y2g+XCIiCiBtc2dzdHIgIkU0OTc6IM3l8iDg4vLu6u7s4O3k7e7j7iDo7OXt6CDx7u7y4uXy8fLi6P8g5Ov/IOfg7OXt+yBcIjxhbWF0Y2g+XCIiCiAKLSM6IGV4X2RvY21kLmM6ODM2MgorIzogZXhfZG9jbWQuYzo4MzY2CiBtc2dpZCAiRTQ5ODogbm8gOnNvdXJjZSBmaWxlIG5hbWUgdG8gc3Vic3RpdHV0ZSBmb3IgXCI8c2ZpbGU+XCIiCiBtc2dzdHIgIkU0OTg6IO3l8iDo7OXt6CD04Onr4CA6c291cmNlIOTr/yDn4Ozl7fsgXCI8c2ZpbGU+XCIiCiAKLSM6IGV4X2RvY21kLmM6ODQwMworIzogZXhfZG9jbWQuYzo4NDA3CiAjLCBuby1jLWZvcm1hdAogbXNnaWQgIkU0OTk6IEVtcHR5IGZpbGUgbmFtZSBmb3IgJyUnIG9yICcjJywgb25seSB3b3JrcyB3aXRoIFwiOnA6aFwiIgogbXNnc3RyICJFNDk5OiDP8/Hy7uUg6Oz/IPTg6evgIOTr/yAnJScg6OvoICcjJywg4u7n7O7m7e4g8u7r/OruIGMgXCI6cDpoXCIiCiAKLSM6IGV4X2RvY21kLmM6ODQwNQorIzogZXhfZG9jbWQuYzo4NDA5CiBtc2dpZCAiRTUwMDogRXZhbHVhdGVzIHRvIGFuIGVtcHR5IHN0cmluZyIKIG1zZ3N0ciAiRTUwMDog0OXn8+v88uDy7uwg4vvw4Obl7ej/IP/i6//l8vH/IO/z8fLg/yDx8vDu6uAiCiAKLSM6IGV4X2RvY21kLmM6OTM2MAorIzogZXhfZG9jbWQuYzo5MzgwCiBtc2dpZCAiRTE5NTogQ2Fubm90IG9wZW4gdmltaW5mbyBmaWxlIGZvciByZWFkaW5nIgogbXNnc3RyICJFMTk1OiDN5eLu5+zu5u3uIO7y6vD78vwg9ODp6yB2aW1pbmZvIOTr/yD38uXt6P8iCiAKLSM6IGV4X2RvY21kLmM6OTUzMworIzogZXhfZG9jbWQuYzo5NTUzCiBtc2dpZCAiRTE5NjogTm8gZGlncmFwaHMgaW4gdGhpcyB2ZXJzaW9uIgogbXNnc3RyICJFMTk2OiDCIP3y7ukg4uXw8ejoIOTo4/Dg9Psg7eUg8ODh7vLg/vIiCiAKQEAgLTE0ODIsNyArMTQ4Miw3IEBACiBtc2dpZCAiRXJyb3IgYW5kIGludGVycnVwdCIKIG1zZ3N0ciAizvjo4ergIOgg7/Dl8Pvi4O3o5SIKIAotIzogZXhfZXZhbC5jOjc1NCBndWkuYzo0MzgxCisjOiBleF9ldmFsLmM6NzU0IGd1aS5jOjQzODQKIG1zZ2lkICJFcnJvciIKIG1zZ3N0ciAizvjo4ergIgogCkBAIC0xNTU4LDE5ICsxNTU4LDE5IEBACiBtc2dpZCAiRTE5MzogOmVuZGZ1bmN0aW9uIG5vdCBpbnNpZGUgYSBmdW5jdGlvbiIKIG1zZ3N0ciAiRTE5Mzog6u7s4O3k4CA6ZW5kZnVuY3Rpb24g7O7m5fIg6PHv7uv85+7i4PL88f8g8u7r/OruIOLt8/Lw6CD08+3q9ujoIgogCi0jOiBleF9nZXRsbi5jOjMyOTYKKyM6IGV4X2dldGxuLmM6MzI5OQogbXNnaWQgInRhZ25hbWUiCiBtc2dzdHIgIujs/yDs5fLq6CIKIAotIzogZXhfZ2V0bG4uYzozMjk5CisjOiBleF9nZXRsbi5jOjMzMDIKIG1zZ2lkICIga2luZCBmaWxlXG4iCiBtc2dzdHIgIiDy6O8g9ODp6+BcbiIKIAotIzogZXhfZ2V0bG4uYzo0NzUyCisjOiBleF9nZXRsbi5jOjQ3NjgKIG1zZ2lkICInaGlzdG9yeScgb3B0aW9uIGlzIHplcm8iCiBtc2dzdHIgIuft4Pfl7ejlIO7v9ujoICdoaXN0b3J5JyDw4OLt7iDt8+v+IgogCi0jOiBleF9nZXRsbi5jOjUwMjMKKyM6IGV4X2dldGxuLmM6NTAzOQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC0xNTc5LDI1OSArMTU3OSwyNTkgQEAKICJcbiIKICIjICVzLCDo8fLu8Oj/ICjt4Pfo7eD/IO7yIPHi5ebl4+4g6iDx8uDw7uzzKTpcbiIKIAotIzogZXhfZ2V0bG4uYzo1MDI0CisjOiBleF9nZXRsbi5jOjUwNDAKIG1zZ2lkICJDb21tYW5kIExpbmUiCiBtc2dzdHIgIsru7ODt5O3g/yDx8vDu6uAiCiAKLSM6IGV4X2dldGxuLmM6NTAyNQorIzogZXhfZ2V0bG4uYzo1MDQxCiBtc2dpZCAiU2VhcmNoIFN0cmluZyIKIG1zZ3N0ciAi0fLw7urgIO/u6PHq4CIKIAotIzogZXhfZ2V0bG4uYzo1MDI2CisjOiBleF9nZXRsbi5jOjUwNDIKIG1zZ2lkICJFeHByZXNzaW9uIgogbXNnc3RyICLC+/Dg5uXt6OUiCiAKLSM6IGV4X2dldGxuLmM6NTAyNworIzogZXhfZ2V0bG4uYzo1MDQzCiBtc2dpZCAiSW5wdXQgTGluZSIKIG1zZ3N0ciAi0fLw7urgIOLi7uTgIgogCi0jOiBleF9nZXRsbi5jOjUwNjUKKyM6IGV4X2dldGxuLmM6NTA4MQogbXNnaWQgIkUxOTg6IGNtZF9wY2hhciBiZXlvbmQgdGhlIGNvbW1hbmQgbGVuZ3RoIgogbXNnc3RyICJFMTk4OiBjbWRfcGNoYXIg4e7r/PjlIOTr6O37IOru7ODt5PsiCiAKLSM6IGV4X2dldGxuLmM6NTI0MgorIzogZXhfZ2V0bG4uYzo1MjU4CiBtc2dpZCAiRTE5OTogQWN0aXZlIHdpbmRvdyBvciBidWZmZXIgZGVsZXRlZCIKIG1zZ3N0ciAiRTE5OTog0+Tg6+Xt7iDg6vLo4u3u5SDu6u3uIOjr6CDh8/Tl8CIKIAotIzogZmlsZWlvLmM6Mzc3CisjOiBmaWxlaW8uYzozNzgKIG1zZ2lkICJJbGxlZ2FsIGZpbGUgbmFtZSIKIG1zZ3N0ciAizeXk7u/z8fLo7O7lIOjs/yD04Onr4CIKIAotIzogZmlsZWlvLmM6NDAxIGZpbGVpby5jOjUzNSBmaWxlaW8uYzoyOTEzIGZpbGVpby5jOjI5NTQKKyM6IGZpbGVpby5jOjQwMiBmaWxlaW8uYzo1NDAgZmlsZWlvLmM6MjkyNSBmaWxlaW8uYzoyOTY2CiBtc2dpZCAiaXMgYSBkaXJlY3RvcnkiCiBtc2dzdHIgIv/i6//l8vH/IOrg8uDr7uPu7CIKIAotIzogZmlsZWlvLmM6NDAzCisjOiBmaWxlaW8uYzo0MDQKIG1zZ2lkICJpcyBub3QgYSBmaWxlIgogbXNnc3RyICLt5SD/4uv/5fLx/yD04Onr7uwiCiAKLSM6IGZpbGVpby5jOjU1NyBmaWxlaW8uYzo0MTMxCisjOiBmaWxlaW8uYzo1NjIgZmlsZWlvLmM6NDE0MwogbXNnaWQgIltOZXcgRmlsZV0iCiBtc2dzdHIgIlvN7uL76SD04OnrXSIKIAotIzogZmlsZWlvLmM6NTkwCisjOiBmaWxlaW8uYzo1OTUKIG1zZ2lkICJbUGVybWlzc2lvbiBEZW5pZWRdIgogbXNnc3RyICJbxO7x8vPvIOfg7/Dl+bjtXSIKIAotIzogZmlsZWlvLmM6Njk0CisjOiBmaWxlaW8uYzo3MDYKIG1zZ2lkICJFMjAwOiAqUmVhZFByZSBhdXRvY29tbWFuZHMgbWFkZSB0aGUgZmlsZSB1bnJlYWRhYmxlIgogbXNnc3RyICJFMjAwOiDCIPDl5/Pr/PLg8uUg4vvv7uvt5e3o/yDg4vLu6u7s4O3kICpSZWFkUHJlIPTg6esg8fLg6yDt5ffo8uDl7PvsIgogCi0jOiBmaWxlaW8uYzo2OTYKKyM6IGZpbGVpby5jOjcwOAogbXNnaWQgIkUyMDE6ICpSZWFkUHJlIGF1dG9jb21tYW5kcyBtdXN0IG5vdCBjaGFuZ2UgY3VycmVudCBidWZmZXIiCiBtc2dzdHIgIkUyMDE6IODi8u7q7uzg7eT7ICpSZWFkUHJlIO3lIOTu6+bt+yDo5+zl7f/y/CDg6vLo4u376SDh8/Tl8CIKIAotIzogZmlsZWlvLmM6NzE3CisjOiBmaWxlaW8uYzo3MjkKIG1zZ2lkICJWaW06IFJlYWRpbmcgZnJvbSBzdGRpbi4uLlxuIgogbXNnc3RyICJWaW06IOL77+7r7f/l8vH/IPfy5e3o5SDo5yDx8uDt5ODw8u3u4+4g7+7y7urgIOLi7uTgIHN0ZGluLi4uXG4iCiAKLSM6IGZpbGVpby5jOjcyMworIzogZmlsZWlvLmM6NzM1CiBtc2dpZCAiUmVhZGluZyBmcm9tIHN0ZGluLi4uIgogbXNnc3RyICLC++/u6+3/5fLx/yD38uXt6OUg6Ocg8fLg7eTg8PLt7uPuIO/u8u7q4CDi4u7k4CBzdGRpbi4uLiIKIAogIy4gUmUtb3BlbmluZyB0aGUgb3JpZ2luYWwgZmlsZSBmYWlsZWQhCi0jOiBmaWxlaW8uYzoxMDAwCisjOiBmaWxlaW8uYzoxMDEyCiBtc2dpZCAiRTIwMjogQ29udmVyc2lvbiBtYWRlIGZpbGUgdW5yZWFkYWJsZSEiCiBtc2dzdHIgIkUyMDI6IMIg8OXn8+v88uDy5SDv8OXu4fDg5+7i4O3o/yD04OnrIPHy4Osg7eX36PLg5ez77CEiCiAKLSM6IGZpbGVpby5jOjIwOTAKKyM6IGZpbGVpby5jOjIxMDIKIG1zZ2lkICJbZmlmby9zb2NrZXRdIgogbXNnc3RyICJbZmlmby/j7eXn5O5dIgogCi0jOiBmaWxlaW8uYzoyMDk3CisjOiBmaWxlaW8uYzoyMTA5CiBtc2dpZCAiW2ZpZm9dIgogbXNnc3RyICJbZmlmb10iCiAKLSM6IGZpbGVpby5jOjIxMDQKKyM6IGZpbGVpby5jOjIxMTYKIG1zZ2lkICJbc29ja2V0XSIKIG1zZ3N0ciAiW+Pt5efk7l0iCiAKLSM6IGZpbGVpby5jOjIxMTIKKyM6IGZpbGVpby5jOjIxMjQKIG1zZ2lkICJbUk9dIgogbXNnc3RyICJbUk9dIgogCi0jOiBmaWxlaW8uYzoyMTIyCisjOiBmaWxlaW8uYzoyMTM0CiBtc2dpZCAiW0NSIG1pc3NpbmddIgogbXNnc3RyICJb7/Du7/P55e37IPHo7OLu6/sgQ1JdIgogCi0jOiBmaWxlaW8uYzoyMTI3CisjOiBmaWxlaW8uYzoyMTM5CiBtc2dpZCAiW05MIGZvdW5kXSIKIG1zZ3N0ciAiW87h7eDw8+bl7fsg8ejs4u7r+yBOTF0iCiAKLSM6IGZpbGVpby5jOjIxMzIKKyM6IGZpbGVpby5jOjIxNDQKIG1zZ2lkICJbbG9uZyBsaW5lcyBzcGxpdF0iCiBtc2dzdHIgIlvk6+jt7fvlIPHy8O7q6CDw4Ofh6PL7XSIKIAotIzogZmlsZWlvLmM6MjEzOCBmaWxlaW8uYzo0MTE1CisjOiBmaWxlaW8uYzoyMTUwIGZpbGVpby5jOjQxMjcKIG1zZ2lkICJbTk9UIGNvbnZlcnRlZF0iCiBtc2dzdHIgIlvBxccg7/Dl7uHw4Ofu4uDt6OldIgogCi0jOiBmaWxlaW8uYzoyMTQzIGZpbGVpby5jOjQxMjAKKyM6IGZpbGVpby5jOjIxNTUgZmlsZWlvLmM6NDEzMgogbXNnaWQgIltjb252ZXJ0ZWRdIgogbXNnc3RyICJb7+Xw5eru5Ojw7uLg7e5dIgogCi0jOiBmaWxlaW8uYzoyMTUwIGZpbGVpby5jOjQxNDUKKyM6IGZpbGVpby5jOjIxNjIgZmlsZWlvLmM6NDE1NwogbXNnaWQgIltjcnlwdGVkXSIKIG1zZ3N0ciAiW+fg+Oj08O7i4O3uXSIKIAotIzogZmlsZWlvLmM6MjE1NworIzogZmlsZWlvLmM6MjE2OQogbXNnaWQgIltDT05WRVJTSU9OIEVSUk9SXSIKIG1zZ3N0ciAiW87YyMHKwCDP0MXOwdDAx87CwM3I310iCiAKLSM6IGZpbGVpby5jOjIxNjMKKyM6IGZpbGVpby5jOjIxNzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiW0lMTEVHQUwgQllURSBpbiBsaW5lICVsZF0iCiBtc2dzdHIgIlvNxcTOz9PR0sjM28kgwcDJ0iDiIPHy8O7q5SAlbGRdIgogCi0jOiBmaWxlaW8uYzoyMTcwCisjOiBmaWxlaW8uYzoyMTgyCiBtc2dpZCAiW1JFQUQgRVJST1JTXSIKIG1zZ3N0ciAiW87YyMHKyCDX0sXNyN9dIgogCi0jOiBmaWxlaW8uYzoyMzg2CisjOiBmaWxlaW8uYzoyMzk4CiBtc2dpZCAiQ2FuJ3QgZmluZCB0ZW1wIGZpbGUgZm9yIGNvbnZlcnNpb24iCiBtc2dzdHIgIsLw5ezl7e376SD04OnrIOTr/yDv5fDl6u7k6PDu4uDt6P8g7eUg7eDp5OXtIgogCi0jOiBmaWxlaW8uYzoyMzkzCisjOiBmaWxlaW8uYzoyNDA1CiBtc2dpZCAiQ29udmVyc2lvbiB3aXRoICdjaGFyY29udmVydCcgZmFpbGVkIgogbXNnc3RyICLP8OXu4fDg5+7i4O3o5SDxIO/u7O75/P4gJ2NoYXJjb252ZXJ0JyDt5SDi++/u6+3l7e4iCiAKLSM6IGZpbGVpby5jOjIzOTYKKyM6IGZpbGVpby5jOjI0MDgKIG1zZ2lkICJjYW4ndCByZWFkIG91dHB1dCBvZiAnY2hhcmNvbnZlcnQnIgogbXNnc3RyICLt5eLu5+zu5u3uIO/w7vfo8uDy/CDi++Lu5CAnY2hhcmNvbnZlcnQnIgogCi0jOiBmaWxlaW8uYzoyNzk2CisjOiBmaWxlaW8uYzoyODA4CiBtc2dpZCAiRTIwMzogQXV0b2NvbW1hbmRzIGRlbGV0ZWQgb3IgdW5sb2FkZWQgYnVmZmVyIHRvIGJlIHdyaXR0ZW4iCiBtc2dzdHIgIiIKICJFMjAzOiDB8/Tl8Cwg6u7y7vD76SDy8OXh7uLg6+7x/CDn4O/o8eDy/Cwg8+Tg67jtIOjr6CDi++Pw8+bl7SDg4vLu6u7s4O3k7ukiCiAKLSM6IGZpbGVpby5jOjI4MTkKKyM6IGZpbGVpby5jOjI4MzEKIG1zZ2lkICJFMjA0OiBBdXRvY29tbWFuZCBjaGFuZ2VkIG51bWJlciBvZiBsaW5lcyBpbiB1bmV4cGVjdGVkIHdheSIKIG1zZ3N0ciAiRTIwNDogyu7r6Pfl8fLi7iDx8vDu6iDo5+zl7eXt7iDg4vLu6u7s4O3k7ukg7eXu5ujk4O3t++wg7uHw4Ofu7CIKIAotIzogZmlsZWlvLmM6Mjg1NworIzogZmlsZWlvLmM6Mjg2OQogbXNnaWQgIk5ldEJlYW5zIGRpc3NhbGxvd3Mgd3JpdGVzIG9mIHVubW9kaWZpZWQgYnVmZmVycyIKIG1zZ3N0ciAiTmV0QmVhbnMg7eUg7+7n4u7r/+XyIOL77+7r7f/y/CDn4O/o8fwg7eXo5+zl7bjt7fv1IOHz9OXw7uIiCiAKLSM6IGZpbGVpby5jOjI4NjUKKyM6IGZpbGVpby5jOjI4NzcKIG1zZ2lkICJQYXJ0aWFsIHdyaXRlcyBkaXNhbGxvd2VkIGZvciBOZXRCZWFucyBidWZmZXJzIgogbXNnc3RyICLX4PHy6Pft4P8g5+Dv6PH8IOHz9OXw7uIgTmV0QmVhbnMg7eUg5O7v8/Hq4OXy8f8iCiAKLSM6IGZpbGVpby5jOjI5MTkgZmlsZWlvLmM6MjkzNworIzogZmlsZWlvLmM6MjkzMSBmaWxlaW8uYzoyOTQ5CiBtc2dpZCAiaXMgbm90IGEgZmlsZSBvciB3cml0YWJsZSBkZXZpY2UiCiBtc2dzdHIgIu3lIP/i6//l8vH/IPTg6evu7CDo6+gg8/Hy8O7p8fLi7uwsIOTu8fLz7+377CDk6/8g5+Dv6PHoIgogCi0jOiBmaWxlaW8uYzoyOTg5CisjOiBmaWxlaW8uYzozMDAxCiBtc2dpZCAiaXMgcmVhZC1vbmx5IChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIu7y6vD78iDy7uv86u4g5Ov/IPfy5e3o/yAoISwg9/Lu4fsg7uHu6fLoIO/w7uLl8OrzKSIKIAotIzogZmlsZWlvLmM6MzMzNQorIzogZmlsZWlvLmM6MzM0NwogbXNnaWQgIkU1MDY6IENhbid0IHdyaXRlIHRvIGJhY2t1cCBmaWxlIChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIkU1MDY6IMfg7+jx/CDiIPDl5+Xw4u376SD04OnrIO3l4u7n7O7m7eAgKCEsIPfy7uH7IO7h7uny6CDv8O7i5fDq8ykiCiAKLSM6IGZpbGVpby5jOjMzNDcKKyM6IGZpbGVpby5jOjMzNTkKIG1zZ2lkICJFNTA3OiBDbG9zZSBlcnJvciBmb3IgYmFja3VwIGZpbGUgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiRTUwNzogzvjo4ergIOfg6vD78uj/IPDl5+Xw4u3u4+4g9ODp6+AgKCEsIPfy7uH7IO7h7uny6CDv8O7i5fDq8ykiCiAKLSM6IGZpbGVpby5jOjMzNDkKKyM6IGZpbGVpby5jOjMzNjEKIG1zZ2lkICJFNTA4OiBDYW4ndCByZWFkIGZpbGUgZm9yIGJhY2t1cCAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJFNTA4OiDN5eLu5+zu5u3uIO/w7vfo8uDy/CDw5efl8OLt++kg9ODp6yAoISwg9/Lu4fsg7uHu6fLoIO/w7uLl8OrzKSIKIAotIzogZmlsZWlvLmM6MzM2NQorIzogZmlsZWlvLmM6MzM3NwogbXNnaWQgIkU1MDk6IENhbm5vdCBjcmVhdGUgYmFja3VwIGZpbGUgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiRTUwOTogzeXi7ufs7ubt7iDx7ufk4PL8IPDl5+Xw4u376SD04OnrICghLCD38u7h+yDu4e7p8ugg7/Du4uXw6vMpIgogCi0jOiBmaWxlaW8uYzozNDY4CisjOiBmaWxlaW8uYzozNDgwCiBtc2dpZCAiRTUxMDogQ2FuJ3QgbWFrZSBiYWNrdXAgZmlsZSAoYWRkICEgdG8gb3ZlcnJpZGUpIgogbXNnc3RyICJFNTEwOiDN5eLu5+zu5u3uIPHu5+Tg8vwg8OXn5fDi7fvpIPTg6esgKCEsIPfy7uH7IO7h7uny6CDv8O7i5fDq8ykiCiAKLSM6IGZpbGVpby5jOjM1MzAKKyM6IGZpbGVpby5jOjM1NDIKIG1zZ2lkICJFNDYwOiBUaGUgcmVzb3VyY2UgZm9yayB3b3VsZCBiZSBsb3N0IChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIkU0NjA6IMLo6+rgIPDl8fPw8eAg4fPk5fIg7+7y5fD/7eAgKCEsIPfy7uH7IO7h7uny6CDv8O7i5fDq8ykiCiAKLSM6IGZpbGVpby5jOjM2NDAKKyM6IGZpbGVpby5jOjM2NTIKIG1zZ2lkICJFMjE0OiBDYW4ndCBmaW5kIHRlbXAgZmlsZSBmb3Igd3JpdGluZyIKIG1zZ3N0ciAiRTIxNDogwvDl7OXt7fvpIPTg6esg5Ov/IOfg7+jx6CDt5SDt4Onk5e0iCiAKLSM6IGZpbGVpby5jOjM2NTgKKyM6IGZpbGVpby5jOjM2NzAKIG1zZ2lkICJFMjEzOiBDYW5ub3QgY29udmVydCAoYWRkICEgdG8gd3JpdGUgd2l0aG91dCBjb252ZXJzaW9uKSIKIG1zZ3N0ciAiRTIxMzogz+Xw5eru5Ojw7uLq4CDt5eLu5+zu5u3gICghIOTr/yDn4O/o8egg4eXnIO/l8OXq7uTo8O7i6ugpIgogCi0jOiBmaWxlaW8uYzozNjkzCisjOiBmaWxlaW8uYzozNzA1CiBtc2dpZCAiRTE2NjogQ2FuJ3Qgb3BlbiBsaW5rZWQgZmlsZSBmb3Igd3JpdGluZyIKIG1zZ3N0ciAiRTE2NjogzeXi7ufs7ubt7iDu8urw+/L8IPHi/+fg7e376SD04OnrIOTr/yDn4O/o8egiCiAKLSM6IGZpbGVpby5jOjM2OTcKKyM6IGZpbGVpby5jOjM3MDkKIG1zZ2lkICJFMjEyOiBDYW4ndCBvcGVuIGZpbGUgZm9yIHdyaXRpbmciCiBtc2dzdHIgIkUyMTI6IM3l4u7n7O7m7e4g7vLq8Pvy/CD04OnrIOTr/yDn4O/o8egiCiAKLSM6IGZpbGVpby5jOjM5NTkKKyM6IGZpbGVpby5jOjM5NzEKIG1zZ2lkICJFNjY3OiBGc3luYyBmYWlsZWQiCiBtc2dzdHIgIkU2Njc6IM3lIPPk4Ovu8fwg4vvv7uvt6PL8IPTz7er26P4gZnN5bmMoKSIKIAotIzogZmlsZWlvLmM6Mzk2NgorIzogZmlsZWlvLmM6Mzk3OAogbXNnaWQgIkU1MTI6IENsb3NlIGZhaWxlZCIKIG1zZ3N0ciAiRTUxMjogzu/l8OD26P8g5+Dq8Pvy6P8g7eUg8+Tg6+Dx/CIKIAotIzogZmlsZWlvLmM6NDAzNworIzogZmlsZWlvLmM6NDA0OQogbXNnaWQgIkU1MTM6IHdyaXRlIGVycm9yLCBjb252ZXJzaW9uIGZhaWxlZCIKIG1zZ3N0ciAiRTUxMzogzvjo4ergIOfg7+jx6Cwg7/Dl7uHw4Ofu4uDt6OUg7eUg8+Tg6+7x/CIKIAotIzogZmlsZWlvLmM6NDA0MworIzogZmlsZWlvLmM6NDA1NQogbXNnaWQgIkU1MTQ6IHdyaXRlIGVycm9yIChmaWxlIHN5c3RlbSBmdWxsPykiCiBtc2dzdHIgIkU1MTQ6IO746OHq4CDn4O/o8eggKO3l8iDx4u7h7uTt7uPuIOzl8fLgPykiCiAKLSM6IGZpbGVpby5jOjQxMTAKKyM6IGZpbGVpby5jOjQxMjIKIG1zZ2lkICIgQ09OVkVSU0lPTiBFUlJPUiIKIG1zZ3N0ciAiIM7YyMHKwCDP0MXOwdDAx87CwM3I3yIKIAotIzogZmlsZWlvLmM6NDEyNgorIzogZmlsZWlvLmM6NDEzOAogbXNnaWQgIltEZXZpY2VdIgogbXNnc3RyICJb0/Hy8O7p8fLi7l0iCiAKLSM6IGZpbGVpby5jOjQxMzEKKyM6IGZpbGVpby5jOjQxNDMKIG1zZ2lkICJbTmV3XSIKIG1zZ3N0ciAiW83u4vvpXSIKIAotIzogZmlsZWlvLmM6NDE1MworIzogZmlsZWlvLmM6NDE2NQogbXNnaWQgIiBbYV0iCiBtc2dzdHIgIiBbYV0iCiAKLSM6IGZpbGVpby5jOjQxNTMKKyM6IGZpbGVpby5jOjQxNjUKIG1zZ2lkICIgYXBwZW5kZWQiCiBtc2dzdHIgIiDk7uHg4uvl7e4iCiAKLSM6IGZpbGVpby5jOjQxNTUKKyM6IGZpbGVpby5jOjQxNjcKIG1zZ2lkICIgW3ddIgogbXNnc3RyICIgW3ddIgogCi0jOiBmaWxlaW8uYzo0MTU1CisjOiBmaWxlaW8uYzo0MTY3CiBtc2dpZCAiIHdyaXR0ZW4iCiBtc2dzdHIgIiDn4O/o8eDt7iIKIAotIzogZmlsZWlvLmM6NDIwNQorIzogZmlsZWlvLmM6NDIxNwogbXNnaWQgIkUyMDU6IFBhdGNobW9kZTogY2FuJ3Qgc2F2ZSBvcmlnaW5hbCBmaWxlIgogbXNnc3RyICJFMjA1OiDQ5ebo7CDn4O/r4PLq6Dog7eXi7ufs7ubt7iDx7vXw4O3l7ejlIOjx9e7k7e7j7iD04Onr4CIKIAotIzogZmlsZWlvLmM6NDIyNworIzogZmlsZWlvLmM6NDIzOQogbXNnaWQgIkUyMDY6IHBhdGNobW9kZTogY2FuJ3QgdG91Y2ggZW1wdHkgb3JpZ2luYWwgZmlsZSIKIG1zZ3N0ciAiIgogIkUyMDY6INDl5ujsIOfg7+vg8uroOiDt5eLu5+zu5u3uIPHs5e3o8vwg7+Dw4Ozl8vD7IO/z8fLu4+4g6PH17uTt7uPuIPTg6evgIgogCi0jOiBmaWxlaW8uYzo0MjQyCisjOiBmaWxlaW8uYzo0MjU0CiBtc2dpZCAiRTIwNzogQ2FuJ3QgZGVsZXRlIGJhY2t1cCBmaWxlIgogbXNnc3RyICJFMjA3OiDN5eLu5+zu5u3uIPPk4Ovo8vwg8OXn5fDi7fvpIPTg6esiCiAKLSM6IGZpbGVpby5jOjQzMDYKKyM6IGZpbGVpby5jOjQzMTgKIG1zZ2lkICIiCiAiXG4iCiAiV0FSTklORzogT3JpZ2luYWwgZmlsZSBtYXkgYmUgbG9zdCBvciBkYW1hZ2VkXG4iCkBAIC0xODM5LDk2ICsxODM5LDk2IEBACiAiXG4iCiAiz9DFxNPP0MXGxMXNyMU6IMjx9e7k7fvpIPTg6esg7O7m5fIg4fvy/CDz8vDg9+XtIOjr6CDv7uLw5ebkuO1cbiIKIAotIzogZmlsZWlvLmM6NDMwOAorIzogZmlsZWlvLmM6NDMyMAogbXNnaWQgImRvbid0IHF1aXQgdGhlIGVkaXRvciB1bnRpbCB0aGUgZmlsZSBpcyBzdWNjZXNzZnVsbHkgd3JpdHRlbiEiCiBtc2dzdHIgIu3lIOL79e7k6PLlIOjnIPDl5ODq8u7w4Cwg7+7q4CD04OnrIO3lIOHz5OXyIPPx7+X47e4g5+Dv6PHg7SEiCiAKLSM6IGZpbGVpby5jOjQzOTcKKyM6IGZpbGVpby5jOjQ0MDkKIG1zZ2lkICJbZG9zXSIKIG1zZ3N0ciAiW2Rvc10iCiAKLSM6IGZpbGVpby5jOjQzOTcKKyM6IGZpbGVpby5jOjQ0MDkKIG1zZ2lkICJbZG9zIGZvcm1hdF0iCiBtc2dzdHIgIlv07vDs4PIgZG9zXSIKIAotIzogZmlsZWlvLmM6NDQwNAorIzogZmlsZWlvLmM6NDQxNgogbXNnaWQgIlttYWNdIgogbXNnc3RyICJbbWFjXSIKIAotIzogZmlsZWlvLmM6NDQwNAorIzogZmlsZWlvLmM6NDQxNgogbXNnaWQgIlttYWMgZm9ybWF0XSIKIG1zZ3N0ciAiW/Tu8Ozg8iBtYWNdIgogCi0jOiBmaWxlaW8uYzo0NDExCisjOiBmaWxlaW8uYzo0NDIzCiBtc2dpZCAiW3VuaXhdIgogbXNnc3RyICJbdW5peF0iCiAKLSM6IGZpbGVpby5jOjQ0MTEKKyM6IGZpbGVpby5jOjQ0MjMKIG1zZ2lkICJbdW5peCBmb3JtYXRdIgogbXNnc3RyICJb9O7w7ODyIHVuaXhdIgogCi0jOiBmaWxlaW8uYzo0NDM4CisjOiBmaWxlaW8uYzo0NDUwCiBtc2dpZCAiMSBsaW5lLCAiCiBtc2dzdHIgIjEg8fLw7urgLCAiCiAKLSM6IGZpbGVpby5jOjQ0NDAKKyM6IGZpbGVpby5jOjQ0NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWxkIGxpbmVzLCAiCiBtc2dzdHIgIvHy8O7qOiAlbGQsICIKIAotIzogZmlsZWlvLmM6NDQ0MworIzogZmlsZWlvLmM6NDQ1NQogbXNnaWQgIjEgY2hhcmFjdGVyIgogbXNnc3RyICIxIPHo7OLu6yIKIAotIzogZmlsZWlvLmM6NDQ0NQorIzogZmlsZWlvLmM6NDQ1NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlbGQgY2hhcmFjdGVycyIKIG1zZ3N0ciAi8ejs4u7r7uI6ICVsZCIKIAotIzogZmlsZWlvLmM6NDQ1NQorIzogZmlsZWlvLmM6NDQ2NwogbXNnaWQgIltub2VvbF0iCiBtc2dzdHIgIltub2VvbF0iCiAKLSM6IGZpbGVpby5jOjQ0NTUKKyM6IGZpbGVpby5jOjQ0NjcKIG1zZ2lkICJbSW5jb21wbGV0ZSBsYXN0IGxpbmVdIgogbXNnc3RyICJbzeXn4OLl8Pi47e3g/yDv7vHr5eTt//8g8fLw7urgXSIKIAogIy4gZG9uJ3Qgb3ZlcndyaXRlIG1lc3NhZ2VzIGhlcmUKICMuIG11c3QgZ2l2ZSB0aGlzIHByb21wdAogIy4gZG9uJ3QgdXNlIGVtc2coKSBoZXJlLCBkb24ndCB3YW50IHRvIGZsdXNoIHRoZSBidWZmZXJzCi0jOiBmaWxlaW8uYzo0NDc0CisjOiBmaWxlaW8uYzo0NDg2CiBtc2dpZCAiV0FSTklORzogVGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBzaW5jZSByZWFkaW5nIGl0ISEhIgogbXNnc3RyICLP0MXE08/QxcbExc3IxTog1ODp6yDo5+zl7bjtIPEg7O7s5e3y4CD38uXt6P8hISEiCiAKLSM6IGZpbGVpby5jOjQ0NzYKKyM6IGZpbGVpby5jOjQ0ODgKIG1zZ2lkICJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gd3JpdGUgdG8gaXQiCiBtc2dzdHIgItHl8Py45+3uIPXu8ujy5SDn4O/o8eDy/CDiIP3y7vIg9ODp6yIKIAotIzogZmlsZWlvLmM6NTcyNgorIzogZmlsZWlvLmM6NTczOAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjA4OiBFcnJvciB3cml0aW5nIHRvIFwiJXNcIiIKIG1zZ3N0ciAiRTIwODogzvjo4ergIOfg7+jx6CDiIFwiJXNcIiIKIAotIzogZmlsZWlvLmM6NTczMworIzogZmlsZWlvLmM6NTc0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjA5OiBFcnJvciBjbG9zaW5nIFwiJXNcIiIKIG1zZ3N0ciAiRTIwOTogzvjo4ergIOfg6vD78uj/IFwiJXNcIiIKIAotIzogZmlsZWlvLmM6NTczNgorIzogZmlsZWlvLmM6NTc0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjEwOiBFcnJvciByZWFkaW5nIFwiJXNcIiIKIG1zZ3N0ciAiRTIxMDogzvjo4ergIPfy5e3o/yBcIiVzXCIiCiAKLSM6IGZpbGVpby5jOjU5NzAKKyM6IGZpbGVpby5jOjU5ODIKIG1zZ2lkICJFMjQ2OiBGaWxlQ2hhbmdlZFNoZWxsIGF1dG9jb21tYW5kIGRlbGV0ZWQgYnVmZmVyIgogbXNnc3RyICJFMjQ2OiDB8/Tl8CDz5ODruO0g7/DoIOL77+7r7eXt6Ogg4OLy7uru7ODt5PsgRmlsZUNoYW5nZWRTaGVsbCIKIAotIzogZmlsZWlvLmM6NTk3NworIzogZmlsZWlvLmM6NTk4OQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjExOiBXYXJuaW5nOiBGaWxlIFwiJXNcIiBubyBsb25nZXIgYXZhaWxhYmxlIgogbXNnc3RyICJFMjExOiDP8OXk8+/w5ebk5e3o5Tog9ODp6yBcIiVzXCIg4e7r/PjlIO3lIOTu8fLz7+XtIgogCi0jOiBmaWxlaW8uYzo1OTkxCisjOiBmaWxlaW8uYzo2MDAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXMTI6IFdhcm5pbmc6IEZpbGUgXCIlc1wiIGhhcyBjaGFuZ2VkIGFuZCB0aGUgYnVmZmVyIHdhcyBjaGFuZ2VkIGluIFZpbSBhcyAiCkBAIC0xOTM3LDM0ICsxOTM3LDM0IEBACiAiVzEyOiDP8OXk8+/w5ebk5e3o5Tog9ODp6yBcIiVzXCIg6CDh8/Tl8CBWaW0g4fvr6CDo5+zl7eXt+yDt5efg4ujx6OzuIOTw8+MgIgogIu7yIOTw8+PgIgogCi0jOiBmaWxlaW8uYzo1OTk0CisjOiBmaWxlaW8uYzo2MDA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlcxMTogV2FybmluZzogRmlsZSBcIiVzXCIgaGFzIGNoYW5nZWQgc2luY2UgZWRpdGluZyBzdGFydGVkIgogbXNnc3RyICIiCiAiVzExOiDP8OXk8+/w5ebk5e3o5Tog9ODp6yBcIiVzXCIg4fvrIOjn7OXtuO0g7+7x6+Ug7eD34OvgIPDl5ODq8ujw7uLg7ej/IgogCi0jOiBmaWxlaW8uYzo1OTk2CisjOiBmaWxlaW8uYzo2MDA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlcxNjogV2FybmluZzogTW9kZSBvZiBmaWxlIFwiJXNcIiBoYXMgY2hhbmdlZCBzaW5jZSBlZGl0aW5nIHN0YXJ0ZWQiCiBtc2dzdHIgIiIKICJXMTY6IM/w5eTz7/Dl5uTl7ejlOiDw5ebo7CDk7vHy8+/gIOog9ODp6/MgXCIlc1wiIOH76yDo5+zl7bjtIO/u8evlIO3g9+Dr4CAiCiAi8OXk4Ory6PDu4uDt6P8iCiAKLSM6IGZpbGVpby5jOjYwMDYKKyM6IGZpbGVpby5jOjYwMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVzEzOiBXYXJuaW5nOiBGaWxlIFwiJXNcIiBoYXMgYmVlbiBjcmVhdGVkIGFmdGVyIGVkaXRpbmcgc3RhcnRlZCIKIG1zZ3N0ciAiIgogIlcxMzogz/Dl5PPv8OXm5OXt6OU6IPTg6esgXCIlc1wiIOH76yDx7ufk4O0g7+7x6+Ug7eD34OvgIPDl5ODq8ujw7uLg7ej/IgogCi0jOiBmaWxlaW8uYzo2MDE5CisjOiBmaWxlaW8uYzo2MDMxCiBtc2dpZCAiU2VlIFwiOmhlbHAgVzExXCIgZm9yIG1vcmUgaW5mby4iCiBtc2dzdHIgItHsLiDk7u/u6+3o8uXr/O3z/iDo7fTu8Ozg9uj+IOIgXCI6aGVscCBXMTFcIi4iCiAKLSM6IGZpbGVpby5jOjYwMzMKKyM6IGZpbGVpby5jOjYwNDUKIG1zZ2lkICJXYXJuaW5nIgogbXNnc3RyICLP8OXk8+/w5ebk5e3o5SIKIAotIzogZmlsZWlvLmM6NjAzNAorIzogZmlsZWlvLmM6NjA0NgogbXNnaWQgIiIKICImT0tcbiIKICImTG9hZCBGaWxlIgpAQCAtMTk3Miw0MyArMTk3Miw0MyBAQAogIiZPS1xuIgogIibH4OPw8+fo8vwg9ODp6yIKIAotIzogZmlsZWlvLmM6NjE0MAorIzogZmlsZWlvLmM6NjE1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDYyOiBDb3VsZCBub3QgcHJlcGFyZSBmb3IgcmVsb2FkaW5nIFwiJXNcIiIKIG1zZ3N0ciAiRTQ2MjogzeXi7ufs7ubt7iDv7uTj7vLu4ujy/PH/IOog7+Xw5efg4/Dz5+rlIFwiJXNcIiIKIAotIzogZmlsZWlvLmM6NjE1OQorIzogZmlsZWlvLmM6NjE3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzIxOiBDb3VsZCBub3QgcmVsb2FkIFwiJXNcIiIKIG1zZ3N0ciAiRTMyMTogzeXi7ufs7ubt7iDi++/u6+3o8vwg7+Xw5efg4/Dz5+rzIFwiJXNcIiIKIAotIzogZmlsZWlvLmM6Njc0MAorIzogZmlsZWlvLmM6Njc1MgogbXNnaWQgIi0tRGVsZXRlZC0tIgogbXNnc3RyICItLdPk4Ovl7e4tLSIKIAogIy4gdGhlIGdyb3VwIGRvZXNuJ3QgZXhpc3QKLSM6IGZpbGVpby5jOjY5MDAKKyM6IGZpbGVpby5jOjY5MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM2NzogTm8gc3VjaCBncm91cDogXCIlc1wiIgogbXNnc3RyICJFMzY3OiDD8PPv7+AgXCIlc1wiIO3lIPHz+eXx8uLz5fIiCiAKLSM6IGZpbGVpby5jOjcwMjYKKyM6IGZpbGVpby5jOjcwMzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIxNTogSWxsZWdhbCBjaGFyYWN0ZXIgYWZ0ZXIgKjogJXMiCiBtc2dzdHIgIkUyMTU6IM3l5O7v8/Hy6Oz75SDx6Ozi7uv7IO/u8evlICo6ICVzIgogCi0jOiBmaWxlaW8uYzo3MDM4CisjOiBmaWxlaW8uYzo3MDUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyMTY6IE5vIHN1Y2ggZXZlbnQ6ICVzIgogbXNnc3RyICJFMjE2OiDN5fHz+eXx8uLz/vnl5SDx7uH78ujlOiAlcyIKIAotIzogZmlsZWlvLmM6NzA0MAorIzogZmlsZWlvLmM6NzA1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjE2OiBObyBzdWNoIGdyb3VwIG9yIGV2ZW50OiAlcyIKIG1zZ3N0ciAiRTIxNjogzeXx8/nl8fLi8/754P8g4/Dz7+/gIOjr6CDx7uH78ujlOiAlcyIKIAogIy4gSGlnaGxpZ2h0IHRpdGxlCi0jOiBmaWxlaW8uYzo3MTk4CisjOiBmaWxlaW8uYzo3MjEwCiBtc2dpZCAiIgogIlxuIgogIi0tLSBBdXRvLUNvbW1hbmRzIC0tLSIKQEAgLTIwMTYsMzkgKzIwMTYsMzkgQEAKICJcbiIKICItLS0gwOLy7uru7ODt5PsgLS0tIgogCi0jOiBmaWxlaW8uYzo3NDY5CisjOiBmaWxlaW8uYzo3NDgxCiBtc2dpZCAiRTIxNzogQ2FuJ3QgZXhlY3V0ZSBhdXRvY29tbWFuZHMgZm9yIEFMTCBldmVudHMiCiBtc2dzdHIgIkUyMTc6IM3l4u7n7O7m7e4g4vvv7uvt6PL8IODi8u7q7uzg7eT7IOTr/yDC0cXVIPHu4fvy6OkiCiAKLSM6IGZpbGVpby5jOjc0OTIKKyM6IGZpbGVpby5jOjc1MDQKIG1zZ2lkICJObyBtYXRjaGluZyBhdXRvY29tbWFuZHMiCiBtc2dzdHIgIs3l8iDv7uT17uT/+ej1IODi8u7q7uzg7eQiCiAKLSM6IGZpbGVpby5jOjc4MTMKKyM6IGZpbGVpby5jOjc4MjUKIG1zZ2lkICJFMjE4OiBhdXRvY29tbWFuZCBuZXN0aW5nIHRvbyBkZWVwIgogbXNnc3RyICJFMjE4OiDx6+j46u7sIOPr8+Hu6u4g4uvu5uXt7fvlIODi8u7q7uzg7eT7IgogCi0jOiBmaWxlaW8uYzo4MDg4CisjOiBmaWxlaW8uYzo4MTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIEF1dG8gY29tbWFuZHMgZm9yIFwiJXNcIiIKIG1zZ3N0ciAiJXMgwOLy7uru7ODt5Psg5Ov/IFwiJXNcIiIKIAotIzogZmlsZWlvLmM6ODA5NgorIzogZmlsZWlvLmM6ODEwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJFeGVjdXRpbmcgJXMiCiBtc2dzdHIgIsL77+7r7eXt6OUgJXMiCiAKICMuIGFsd2F5cyBzY3JvbGwgdXAsIGRvbid0IG92ZXJ3cml0ZQotIzogZmlsZWlvLmM6ODE2NAorIzogZmlsZWlvLmM6ODE3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJhdXRvY29tbWFuZCAlcyIKIG1zZ3N0ciAi4OLy7uru7ODt5OAgJXMiCiAKLSM6IGZpbGVpby5jOjg3MzEKKyM6IGZpbGVpby5jOjg3NDMKIG1zZ2lkICJFMjE5OiBNaXNzaW5nIHsuIgogbXNnc3RyICJFMjE5OiDP8O7v8/nl7eAgey4iCiAKLSM6IGZpbGVpby5jOjg3MzMKKyM6IGZpbGVpby5jOjg3NDUKIG1zZ2lkICJFMjIwOiBNaXNzaW5nIH0uIgogbXNnc3RyICJFMjIwOiDP8O7v8/nl7eAgfS4iCiAKQEAgLTIwNzAsMzkgKzIwNzAsMzkgQEAKIG1zZ2lkICJFMjIyOiBBZGQgdG8gcmVhZCBidWZmZXIiCiBtc2dzdHIgIkUyMjI6IMTu4eDi6+Xt6OUg4iDh8/Tl8CD38uXt6P8iCiAKLSM6IGdldGNoYXIuYzoyMTk4CisjOiBnZXRjaGFyLmM6MjIwOAogbXNnaWQgIkUyMjM6IHJlY3Vyc2l2ZSBtYXBwaW5nIgogbXNnc3RyICJFMjIzOiDw5erz8PHo4u3g/yDv8Oji/+fq4CIKIAotIzogZ2V0Y2hhci5jOjMwNzcKKyM6IGdldGNoYXIuYzozMDg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyMjQ6IGdsb2JhbCBhYmJyZXZpYXRpb24gYWxyZWFkeSBleGlzdHMgZm9yICVzIgogbXNnc3RyICJFMjI0OiDz5uUg5fHy/CDj6+7h4Ov87e7lIPHu6vDg+eXt6OUg5Ov/ICVzIgogCi0jOiBnZXRjaGFyLmM6MzA4MAorIzogZ2V0Y2hhci5jOjMwOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIyNTogZ2xvYmFsIG1hcHBpbmcgYWxyZWFkeSBleGlzdHMgZm9yICVzIgogbXNnc3RyICJFMjI1OiDz5uUg5fHy/CDj6+7h4Ov87eD/IO/w6OL/5+rgIOTr/yAlcyIKIAotIzogZ2V0Y2hhci5jOjMyMTIKKyM6IGdldGNoYXIuYzozMjIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyMjY6IGFiYnJldmlhdGlvbiBhbHJlYWR5IGV4aXN0cyBmb3IgJXMiCiBtc2dzdHIgIkUyMjY6IPPm5SDl8fL8IPHu6vDg+eXt6OUg5Ov/ICVzIgogCi0jOiBnZXRjaGFyLmM6MzIxNQorIzogZ2V0Y2hhci5jOjMyMjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIyNzogbWFwcGluZyBhbHJlYWR5IGV4aXN0cyBmb3IgJXMiCiBtc2dzdHIgIkUyMjc6IPPm5SDl8fL8IO/w6OL/5+rgIOTr/yAlcyIKIAotIzogZ2V0Y2hhci5jOjMyNzkKKyM6IGdldGNoYXIuYzozMjg5CiBtc2dpZCAiTm8gYWJicmV2aWF0aW9uIGZvdW5kIgogbXNnc3RyICLR7urw4Pnl7ej/IO3lIO3g6eTl7fsiCiAKLSM6IGdldGNoYXIuYzozMjgxCisjOiBnZXRjaGFyLmM6MzI5MQogbXNnaWQgIk5vIG1hcHBpbmcgZm91bmQiCiBtc2dzdHIgIs/w6OL/5+roIO3lIO3g6eTl7fsiCiAKLSM6IGdldGNoYXIuYzo0MTczCisjOiBnZXRjaGFyLmM6NDE4MwogbXNnaWQgIkUyMjg6IG1ha2VtYXA6IElsbGVnYWwgbW9kZSIKIG1zZ3N0ciAiRTIyODogbWFrZW1hcDog7eXk7u/z8fLo7PvpIPDl5ujsIgogCkBAIC0yMTI4LDcgKzIxMjgsNyBAQAogbXNnaWQgIkU1OTk6IFZhbHVlIG9mICdpbWFjdGl2YXRla2V5JyBpcyBpbnZhbGlkIgogbXNnc3RyICJFNTk5OiDt5e/w4OLo6/zt7uUg5+3g9+Xt6OUg7u/26OggJ2ltYWN0aXZhdGVrZXknIgogCi0jOiBndWkuYzo0MDYxCisjOiBndWkuYzo0MDY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyNTQ6IENhbm5vdCBhbGxvY2F0ZSBjb2xvciAlcyIKIG1zZ3N0ciAiRTI1NDogzeXi7ufs7ubt7iDt4Oft4Pfo8vwg9uLl8iAlcyIKQEAgLTIxNzAsNyArMjE3MCw3IEBACiBtc2dpZCAiVmltIGRpYWxvZyIKIG1zZ3N0ciAixOjg6+7j7uLu5SDu6u3uIFZpbSIKIAotIzogZ3VpX2JldmFsLmM6MTAxIGd1aV93MzIuYzozODI5CisjOiBndWlfYmV2YWwuYzoxMDEgZ3VpX3czMi5jOjM5NzgKIG1zZ2lkICJFMjMyOiBDYW5ub3QgY3JlYXRlIEJhbGxvb25FdmFsIHdpdGggYm90aCBtZXNzYWdlIGFuZCBjYWxsYmFjayIKIG1zZ3N0ciAiIgogIkUyMzI6IFwiz/Pn+/D8XCIg5Ov/IOL79+jx6+Xt6OksIOLq6/734P756Okg6CDx7u7h+eXt6OUsIOgg7uHw4PLt++kg4vvn7uIsICIKQEAgLTIxODAsNyArMjE4MCw3IEBACiBtc2dpZCAiVmltIGRpYWxvZy4uLiIKIG1zZ3N0ciAixOjg6+7j7uLu5SDu6u3uIFZpbS4uLiIKIAotIzogZ3VpX2d0ay5jOjIwNjAgbWVzc2FnZS5jOjI5OTMKKyM6IGd1aV9ndGsuYzoyMDYwIG1lc3NhZ2UuYzoyOTk5CiBtc2dpZCAiIgogIiZZZXNcbiIKICImTm9cbiIKQEAgLTIzMDMsMTYgKzIzMDMsMjQgQEAKICJcbiIKICLO8u/w4OLq4CDx7u7h+eXt6P8g5Ov/IPPt6Pfy7ubl7ej/IO/w7vbl8fHgLe/u8u7s6uAuXG4iCiAKLSM6IGd1aV93MzIuYzo4MjkKKyM6IGd1aV93MzIuYzo4MzkKK21zZ2lkICJFNjcxOiBDYW5ub3QgZmluZCB3aW5kb3cgdGl0bGUgXCIlc1wiIgorbXNnc3RyICJFNjcxOiDO6u3uIPEg5+Dj7uvu4uru7CBcIiVzXCIg7eUg7uHt4PDz5uXt7iIKKworIzogZ3VpX3czMi5jOjg0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjQzOiBBcmd1bWVudCBub3Qgc3VwcG9ydGVkOiBcIi0lc1wiOyBVc2UgdGhlIE9MRSB2ZXJzaW9uLiIKIG1zZ3N0ciAiRTI0Mzogz+Dw4Ozl8vAg7eUg7+7k5OXw5uji4OXy8f86IFwiLSVzXCI7IOjx7+7r/Ofz6fLlIOLl8PHo/iBPTEUuIgogCi0jOiBndWlfdzQ4LmM6MjA5MAorIzogZ3VpX3czMi5jOjExMDAKK21zZ2lkICJFNjcyOiBVbmFibGUgdG8gb3BlbiB3aW5kb3cgaW5zaWRlIE1ESSBhcHBsaWNhdGlvbiIKK21zZ3N0ciAiRTY3MjogzeXi7ufs7ubt7iDu8urw+/L8IO7q7e4g4u3z8vDoIO/w6Ovu5uXt6P8gTURJIgorCisjOiBndWlfdzQ4LmM6MjE2MwogbXNnaWQgIkZpbmQgc3RyaW5nICh1c2UgJ1xcXFwnIHRvIGZpbmQgIGEgJ1xcJykiCiBtc2dzdHIgIs/u6PHqIPHy8O7q6CAo6PHv7uv85/Pp8uUgJ1xcXFwnIOTr/yDv7ujx6uAgJ1xcJykiCiAKLSM6IGd1aV93NDguYzoyMTE1CisjOiBndWlfdzQ4LmM6MjE4OAogbXNnaWQgIkZpbmQgJiBSZXBsYWNlICh1c2UgJ1xcXFwnIHRvIGZpbmQgIGEgJ1xcJykiCiBtc2dzdHIgIs/u6PHqIOgg5+Ds5e3gICjo8e/u6/zn8+ny5SAnXFxcXCcg5Ov/IO/u6PHq4CAnXFwnKSIKIApAQCAtMjM1Myw2ICsyMzYxLDcgQEAKIG1zZ3N0ciAiRm9udDE6ICVzXG4iCiAKICM6IGd1aV94MTEuYzoyMTg0CisjLCBjLWZvcm1hdAogbXNnaWQgIkZvbnQlbGQgd2lkdGggaXMgbm90IHR3aWNlIHRoYXQgb2YgZm9udDBcbiIKIG1zZ3N0ciAi2Ojw6O3gIPjw6PTy4CBmb250JWxkIOTu6+bt4CDh+/L8IOLk4u7lIOHu6/z45SD46PDo7fsg+PDo9PLgIGZvbnQwXG4iCiAKQEAgLTI5MzMsNDcgKzI5NDIsNDcgQEAKIG1zZ2lkICJJbnZhbGlkIGFyZ3VtZW50IGZvciIKIG1zZ3N0ciAizeXk7u/z8fLo7PvlIODw4/Ps5e3y+yDk6/8iCiAKLSM6IG1haW4uYzo0NjYKKyM6IG1haW4uYzo0NjkKIG1zZ2lkICJUaGlzIFZpbSB3YXMgbm90IGNvbXBpbGVkIHdpdGggdGhlIGRpZmYgZmVhdHVyZS4iCiBtc2dzdHIgIiIKICLE4O3t++kgVmltIOH76yDx6u7s7+jr6PDu4uDtIPEg4vvq6/735e3t7ukg7vHu4eXt7e7x8vz+IO/w7vHs7vLw4CDu8uvo9+jpIgogCi0jOiBtYWluLmM6OTMyCisjOiBtYWluLmM6OTM1CiBtc2dpZCAiQXR0ZW1wdCB0byBvcGVuIHNjcmlwdCBmaWxlIGFnYWluOiBcIiIKIG1zZ3N0ciAiz+7v+/Lq4CDv7uLy7vDt7uPuIO7y6vD78uj/IPTg6evgIPH25e3g8Oj/OiBcIiIKIAotIzogbWFpbi5jOjk0MQorIzogbWFpbi5jOjk0NAogbXNnaWQgIkNhbm5vdCBvcGVuIGZvciByZWFkaW5nOiBcIiIKIG1zZ3N0ciAizeXi7ufs7ubt7iDu8urw+/L8IOTr/yD38uXt6P86IFwiIgogCi0jOiBtYWluLmM6OTg1CisjOiBtYWluLmM6OTg4CiBtc2dpZCAiQ2Fubm90IG9wZW4gZm9yIHNjcmlwdCBvdXRwdXQ6IFwiIgogbXNnc3RyICLN5eLu5+zu5u3uIO7y6vD78vwg5Ov/IOL74u7k4CDx9uXt4PDo/zogXCIiCiAKLSM6IG1haW4uYzoxMTMyCisjOiBtYWluLmM6MTEzNQogIywgYy1mb3JtYXQKIG1zZ2lkICIlZCBmaWxlcyB0byBlZGl0XG4iCiBtc2dzdHIgItTg6evu4iDk6/8g8OXk4Ory6PDu4uDt6P86ICVkXG4iCiAKLSM6IG1haW4uYzoxMjMzCisjOiBtYWluLmM6MTIzNgogbXNnaWQgIlZpbTogV2FybmluZzogT3V0cHV0IGlzIG5vdCB0byBhIHRlcm1pbmFsXG4iCiBtc2dzdHIgIlZpbTogz/Dl5PPv8OXm5OXt6OU6IML74u7kIO7x8/nl8fLi6//l8vH/IO3lIO3gIPLl8Ozo7eDrXG4iCiAKLSM6IG1haW4uYzoxMjM1CisjOiBtYWluLmM6MTIzOAogbXNnaWQgIlZpbTogV2FybmluZzogSW5wdXQgaXMgbm90IGZyb20gYSB0ZXJtaW5hbFxuIgogbXNnc3RyICJWaW06IM/w5eTz7/Dl5uTl7ejlOiDC4u7kIO/w7ujx9e7k6PIg7eUg8SDy5fDs6O3g6+BcbiIKIAogIy4ganVzdCBpbiBjYXNlLi4KLSM6IG1haW4uYzoxMjk3CisjOiBtYWluLmM6MTMwNgogbXNnaWQgInByZS12aW1yYyBjb21tYW5kIGxpbmUiCiBtc2dzdHIgIuru7ODt5O3g/yDx8vDu6uAg7+Xw5eQg4vvv7uvt5e3o5ewgdmltcmMiCiAKLSM6IG1haW4uYzoxMzM4CisjOiBtYWluLmM6MTM0NwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjgyOiBDYW5ub3QgcmVhZCBmcm9tIFwiJXNcIiIKIG1zZ3N0ciAiRTI4MjogzeXi7ufs7ubt7iDi++/u6+3o8vwg9/Ll7ejlIOjnIFwiJXNcIiIKIAotIzogbWFpbi5jOjI0MTEKKyM6IG1haW4uYzoyNDIwCiBtc2dpZCAiIgogIlxuIgogIk1vcmUgaW5mbyB3aXRoOiBcInZpbSAtaFwiXG4iCkBAIC0yOTgxLDIzICsyOTkwLDIzIEBACiAiXG4iCiAixO7v7uvt6PLl6/zt4P8g6O307vDs4Pbo/zogXCJ2aW0gLWhcIlxuIgogCi0jOiBtYWluLmM6MjQ0NAorIzogbWFpbi5jOjI0NTMKIG1zZ2lkICJbZmlsZSAuLl0gICAgICAgZWRpdCBzcGVjaWZpZWQgZmlsZShzKSIKIG1zZ3N0ciAiW/Tg6esgLi5dIPDl5ODq8ujw7uLg7ejlIPPq4Ofg7e379SD04Onr7uIiCiAKLSM6IG1haW4uYzoyNDQ1CisjOiBtYWluLmM6MjQ1NAogbXNnaWQgIi0gICAgICAgICAgICAgICByZWFkIHRleHQgZnJvbSBzdGRpbiIKIG1zZ3N0ciAiLSAgICAgICAgICAgICAgICD38uXt6OUg8uXq8fLgIOjnIO/u8u7q4CDi4u7k4CBzdGRpbiIKIAotIzogbWFpbi5jOjI0NDYKKyM6IG1haW4uYzoyNDU1CiBtc2dpZCAiLXQgdGFnICAgICAgICAgIGVkaXQgZmlsZSB3aGVyZSB0YWcgaXMgZGVmaW5lZCIKIG1zZ3N0ciAiLXQg7OXy6uAgICAgICAgICDw5eTg6vLo8O7i4O3o5SD04Onr4CDxIPPq4Ofg7e3u6SDs5fLq7ukiCiAKLSM6IG1haW4uYzoyNDQ4CisjOiBtYWluLmM6MjQ1NwogbXNnaWQgIi1xIFtlcnJvcmZpbGVdICBlZGl0IGZpbGUgd2l0aCBmaXJzdCBlcnJvciIKIG1zZ3N0ciAiLXEgW/Tg6esg7vjo4e7qXSDw5eTg6vLo8O7i4O3o5SD04Onr4CDxIO/l8OLu6SDu+Ojh6u7pIgogCi0jOiBtYWluLmM6MjQ1NworIzogbWFpbi5jOjI0NjYKIG1zZ2lkICIiCiAiXG4iCiAiXG4iCkBAIC0zMDA3LDExICszMDE2LDExIEBACiAiXG4iCiAiyPHv7uv85+7i4O3o5ToiCiAKLSM6IG1haW4uYzoyNDYwCisjOiBtYWluLmM6MjQ2OQogbXNnaWQgIiB2aW0gW2FyZ3VtZW50c10gIgogbXNnc3RyICIgdmltIFvg8OPz7OXt8vtdICIKIAotIzogbWFpbi5jOjI0NjQKKyM6IG1haW4uYzoyNDczCiBtc2dpZCAiIgogIlxuIgogIiAgIG9yOiIKQEAgLTMwMTksNyArMzAyOCw3IEBACiAiXG4iCiAiICAg6OvoOiIKIAotIzogbWFpbi5jOjI0NjcKKyM6IG1haW4uYzoyNDc2CiBtc2dpZCAiIgogIlxuIgogIlxuIgpAQCAtMzAyOSwyNDQgKzMwMzgsMjQ0IEBACiAiXG4iCiAiwPDj8+zl7fL7OlxuIgogCi0jOiBtYWluLmM6MjQ2OAorIzogbWFpbi5jOjI0NzcKIG1zZ2lkICItLVx0XHRcdE9ubHkgZmlsZSBuYW1lcyBhZnRlciB0aGlzIgogbXNnc3RyICItLVx0XHRcdMTg6+XlIPPq4Of74uD+8vH/IPLu6/zq7iDo7OXt4CD04Onr7uIiCiAKLSM6IG1haW4uYzoyNDcwCisjOiBtYWluLmM6MjQ3OQogbXNnaWQgIi0tbGl0ZXJhbFx0XHREb24ndCBleHBhbmQgd2lsZGNhcmRzIgogbXNnc3RyICItLWxpdGVyYWxcdFx0zeUg4vvv7uvt//L8IO/u5PHy4O3u4urzIO/uIOzg8erlIgogCi0jOiBtYWluLmM6MjQ3MworIzogbWFpbi5jOjI0ODIKIG1zZ2lkICItcmVnaXN0ZXJcdFx0UmVnaXN0ZXIgdGhpcyBndmltIGZvciBPTEUiCiBtc2dzdHIgIi1yZWdpc3Rlclx0XHTH4PDl4+jx8vDo8O7i4PL8IP3y7vIgZ3ZpbSDk6/8gT0xFIgogCi0jOiBtYWluLmM6MjQ3NAorIzogbWFpbi5jOjI0ODMKIG1zZ2lkICItdW5yZWdpc3Rlclx0XHRVbnJlZ2lzdGVyIGd2aW0gZm9yIE9MRSIKIG1zZ3N0ciAiLXVucmVnaXN0ZXJcdFx0zvLq6/736PL8IPDl4+jx8vDg9uj+IOTg7e3u4+4gZ3ZpbSDk6/8gT0xFIgogCi0jOiBtYWluLmM6MjQ3NworIzogbWFpbi5jOjI0ODYKIG1zZ2lkICItZ1x0XHRcdFJ1biB1c2luZyBHVUkgKGxpa2UgXCJndmltXCIpIgogbXNnc3RyICItZ1x0XHRcdMfg7/Px8ujy/CDxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sICjq4OogXCJndmltXCIpIgogCi0jOiBtYWluLmM6MjQ3OAorIzogbWFpbi5jOjI0ODcKIG1zZ2lkICItZiAgb3IgIC0tbm9mb3JrXHRGb3JlZ3JvdW5kOiBEb24ndCBmb3JrIHdoZW4gc3RhcnRpbmcgR1VJIgogbXNnc3RyICItZiAg6OvoIC0tbm9mb3JrXHTCIODq8uji7e7pIOfg5OD35TogzeUg4vvv7uvt//L8IGZvcmsg7/DoIOfg7/Px6uUgR1VJIgogCi0jOiBtYWluLmM6MjQ4MAorIzogbWFpbi5jOjI0ODkKIG1zZ2lkICItdlx0XHRcdFZpIG1vZGUgKGxpa2UgXCJ2aVwiKSIKIG1zZ3N0ciAiLXZcdFx0XHTQ5ebo7CBWaSAo6uDqIFwidmlcIikiCiAKLSM6IG1haW4uYzoyNDgxCisjOiBtYWluLmM6MjQ5MAogbXNnaWQgIi1lXHRcdFx0RXggbW9kZSAobGlrZSBcImV4XCIpIgogbXNnc3RyICItZVx0XHRcdNDl5ujsIEV4ICjq4OogXCJleFwiKSIKIAotIzogbWFpbi5jOjI0ODIKKyM6IG1haW4uYzoyNDkxCiBtc2dpZCAiLXNcdFx0XHRTaWxlbnQgKGJhdGNoKSBtb2RlIChvbmx5IGZvciBcImV4XCIpIgogbXNnc3RyICItc1x0XHRcdNLo9ejpICjv4Orl8u376Skg8OXm6OwgKPLu6/zq7iDk6/8gXCJleFwiKSIKIAotIzogbWFpbi5jOjI0ODQKKyM6IG1haW4uYzoyNDkzCiBtc2dpZCAiLWRcdFx0XHREaWZmIG1vZGUgKGxpa2UgXCJ2aW1kaWZmXCIpIgogbXNnc3RyICItZFx0XHRcdNDl5ujsIO7y6+j36OkgKOrg6iBcInZpbWRpZmZcIikiCiAKLSM6IG1haW4uYzoyNDg2CisjOiBtYWluLmM6MjQ5NQogbXNnaWQgIi15XHRcdFx0RWFzeSBtb2RlIChsaWtlIFwiZXZpbVwiLCBtb2RlbGVzcykiCiBtc2dzdHIgIi15XHRcdFx0z/Du8fLu6SDw5ebo7CAo6uDqIFwiZXZpbVwiLCDh5efw5ebo7O376SkiCiAKLSM6IG1haW4uYzoyNDg3CisjOiBtYWluLmM6MjQ5NgogbXNnaWQgIi1SXHRcdFx0UmVhZG9ubHkgbW9kZSAobGlrZSBcInZpZXdcIikiCiBtc2dzdHIgIi1SXHRcdFx00u7r/OruIOTr/yD38uXt6P8gKOrg6iBcInZpZXdcIikiCiAKLSM6IG1haW4uYzoyNDg4CisjOiBtYWluLmM6MjQ5NwogbXNnaWQgIi1aXHRcdFx0UmVzdHJpY3RlZCBtb2RlIChsaWtlIFwicnZpbVwiKSIKIG1zZ3N0ciAiLVpcdFx0XHTO4/Dg7ej35e3t++kg8OXm6OwgKOrg6iBcInJ2aW1cIikiCiAKLSM6IG1haW4uYzoyNDg5CisjOiBtYWluLmM6MjQ5OAogbXNnaWQgIi1tXHRcdFx0TW9kaWZpY2F0aW9ucyAod3JpdGluZyBmaWxlcykgbm90IGFsbG93ZWQiCiBtc2dzdHIgIi1tXHRcdFx0weXnIOLu5+zu5u3u8fLoIPHu9fDg7eXt6P8g6Ofs5e3l7ejpICjn4O/o8egg9ODp6+7iKSIKIAotIzogbWFpbi5jOjI0OTAKKyM6IG1haW4uYzoyNDk5CiBtc2dpZCAiLU1cdFx0XHRNb2RpZmljYXRpb25zIGluIHRleHQgbm90IGFsbG93ZWQiCiBtc2dzdHIgIi1NXHRcdFx0weXnIOLu5+zu5u3u8fLoIOLt5fHl7ej/IOjn7OXt5e3o6SDiIPLl6vHyIgogCi0jOiBtYWluLmM6MjQ5MQorIzogbWFpbi5jOjI1MDAKIG1zZ2lkICItYlx0XHRcdEJpbmFyeSBtb2RlIgogbXNnc3RyICItYlx0XHRcdMHo7eDw7fvpIPDl5ujsIgogCi0jOiBtYWluLmM6MjQ5MworIzogbWFpbi5jOjI1MDIKIG1zZ2lkICItbFx0XHRcdExpc3AgbW9kZSIKIG1zZ3N0ciAiLWxcdFx0XHTQ5ebo7CBMaXNwIgogCi0jOiBtYWluLmM6MjQ5NQorIzogbWFpbi5jOjI1MDQKIG1zZ2lkICItQ1x0XHRcdENvbXBhdGlibGUgd2l0aCBWaTogJ2NvbXBhdGlibGUnIgogbXNnc3RyICItQ1x0XHRcdNDl5ujsIPHu4uzl8fLo7O7x8ugg8SBWaTogJ2NvbXBhdGlibGUnIgogCi0jOiBtYWluLmM6MjQ5NgorIzogbWFpbi5jOjI1MDUKIG1zZ2lkICItTlx0XHRcdE5vdCBmdWxseSBWaSBjb21wYXRpYmxlOiAnbm9jb21wYXRpYmxlJyIKIG1zZ3N0ciAiLU5cdFx0XHTQ5ebo7CDt5e/u6+3u6SDx7uLs5fHy6Ozu8fLoIPEgVmk6ICdub2NvbXBhdGlibGUnIgogCi0jOiBtYWluLmM6MjQ5NworIzogbWFpbi5jOjI1MDYKIG1zZ2lkICItVltOXVx0XHRWZXJib3NlIGxldmVsIgogbXNnc3RyICItVltOXVx0XHTT8O7i5e38IO/u5PDu4e3u8fLoIPHu7uH55e3o6SIKIAotIzogbWFpbi5jOjI0OTgKKyM6IG1haW4uYzoyNTA3CiBtc2dpZCAiLURcdFx0XHREZWJ1Z2dpbmcgbW9kZSIKIG1zZ3N0ciAiLURcdFx0XHTQ5ebo7CDu8uvg5OroIgogCi0jOiBtYWluLmM6MjQ5OQorIzogbWFpbi5jOjI1MDgKIG1zZ2lkICItblx0XHRcdE5vIHN3YXAgZmlsZSwgdXNlIG1lbW9yeSBvbmx5IgogbXNnc3RyICItblx0XHRcdMHl5yDx4u7vLfTg6evgLCDo8e/u6/zn8+Xy8f8g8u7r/OruIO/g7P/y/CIKIAotIzogbWFpbi5jOjI1MDAKKyM6IG1haW4uYzoyNTA5CiBtc2dpZCAiLXJcdFx0XHRMaXN0IHN3YXAgZmlsZXMgYW5kIGV4aXQiCiBtc2dzdHIgIi1yXHRcdFx0wvvi5fHy6CDx7+jx7uog8eLu7y304Onr7uIg6CDn4OLl8Pjo8vwg8ODh7vLzIgogCi0jOiBtYWluLmM6MjUwMQorIzogbWFpbi5jOjI1MTAKIG1zZ2lkICItciAod2l0aCBmaWxlIG5hbWUpXHRSZWNvdmVyIGNyYXNoZWQgc2Vzc2lvbiIKIG1zZ3N0ciAiLXIgKPEg6Ozl7eXsIPTg6evgKVx0wu7x8fLg7e7i6PL8IODi4PDo6e3uIOfg4uXw+Ljt7fvpIPHl4O3xIgogCi0jOiBtYWluLmM6MjUwMgorIzogbWFpbi5jOjI1MTEKIG1zZ2lkICItTFx0XHRcdFNhbWUgYXMgLXIiCiBtc2dzdHIgIi1MXHRcdFx00u4g5uUsIPfy7iDoIC1yIgogCi0jOiBtYWluLmM6MjUwNAorIzogbWFpbi5jOjI1MTMKIG1zZ2lkICItZlx0XHRcdERvbid0IHVzZSBuZXdjbGkgdG8gb3BlbiB3aW5kb3ciCiBtc2dzdHIgIi1mXHRcdFx0zeUg6PHv7uv85+7i4PL8IG5ld2NsaSDk6/8g7vLq8Pvy6P8g7urt4CIKIAotIzogbWFpbi5jOjI1MDUKKyM6IG1haW4uYzoyNTE0CiBtc2dpZCAiLWRldiA8ZGV2aWNlPlx0XHRVc2UgPGRldmljZT4gZm9yIEkvTyIKIG1zZ3N0ciAiLWRldiA88/Hy8O7p8fLi7j5cdFx0yPHv7uv85+7i4PL8IOTr/yBJL08g8+rg5+Dt7e7lIDzz8fLw7unx8uLuPiIKIAotIzogbWFpbi5jOjI1MDgKKyM6IG1haW4uYzoyNTE3CiBtc2dpZCAiLUFcdFx0XHRzdGFydCBpbiBBcmFiaWMgbW9kZSIKIG1zZ3N0ciAiLUFcdFx0XHTH4O/z8eog4iDA8ODh8eru7CDw5ebo7OUiCiAKLSM6IG1haW4uYzoyNTExCisjOiBtYWluLmM6MjUyMAogbXNnaWQgIi1IXHRcdFx0U3RhcnQgaW4gSGVicmV3IG1vZGUiCiBtc2dzdHIgIi1IXHRcdFx0x+Dv8/HqIOIg8OXm6OzlIFwiyOLw6PJcIiIKIAotIzogbWFpbi5jOjI1MTQKKyM6IG1haW4uYzoyNTIzCiBtc2dpZCAiLUZcdFx0XHRTdGFydCBpbiBGYXJzaSBtb2RlIgogbXNnc3RyICItRlx0XHRcdMfg7/Px6iDiIPDl5ujs5SBcItTg8PHoXCIiCiAKLSM6IG1haW4uYzoyNTE2CisjOiBtYWluLmM6MjUyNQogbXNnaWQgIi1UIDx0ZXJtaW5hbD5cdFNldCB0ZXJtaW5hbCB0eXBlIHRvIDx0ZXJtaW5hbD4iCiBtc2dzdHIgIi1UIDzy5fDs6O3g6z5cdM3g5+3g9+jy/CDz6uDn4O3t++kg8ujvIDzy5fDs6O3g6+A+IgogCi0jOiBtYWluLmM6MjUxNworIzogbWFpbi5jOjI1MjYKIG1zZ2lkICItdSA8dmltcmM+XHRcdFVzZSA8dmltcmM+IGluc3RlYWQgb2YgYW55IC52aW1yYyIKIG1zZ3N0ciAiLXUgPHZpbXJjPlx0XHTI8e/u6/zn7uLg8vwgPHZpbXJjPiDi7OXx8u4g6/7h+/Ug9ODp6+7iIC52aW1yYyIKIAotIzogbWFpbi5jOjI1MTkKKyM6IG1haW4uYzoyNTI4CiBtc2dpZCAiLVUgPGd2aW1yYz5cdFx0VXNlIDxndmltcmM+IGluc3RlYWQgb2YgYW55IC5ndmltcmMiCiBtc2dzdHIgIi1VIDxndmltcmM+XHRcdMjx7+7r/Ofu4uDy/CA8Z3ZpbXJjPiDi7OXx8u4g6/7h+/Ug9ODp6+7iIC5ndmltcmMiCiAKLSM6IG1haW4uYzoyNTIxCisjOiBtYWluLmM6MjUzMAogbXNnaWQgIi0tbm9wbHVnaW5cdFx0RG9uJ3QgbG9hZCBwbHVnaW4gc2NyaXB0cyIKIG1zZ3N0ciAiLS1ub3BsdWdpblx0XHTN5SDn4OPw8+bg8vwg8fbl7eDw6Ogg7O7k8+vl6SIKIAotIzogbWFpbi5jOjI1MjIKKyM6IG1haW4uYzoyNTMxCiBtc2dpZCAiLW9bTl1cdFx0T3BlbiBOIHdpbmRvd3MgKGRlZmF1bHQ6IG9uZSBmb3IgZWFjaCBmaWxlKSIKIG1zZ3N0ciAiLW9bTl1cdFx0zvLq8Pvy/CBOIO7q7u0gKO/uIPPs7uv34O3o/jog7+4g7uTt7uzzIO3gIOrg5uT76SD04OnrKSIKIAotIzogbWFpbi5jOjI1MjMKKyM6IG1haW4uYzoyNTMyCiBtc2dpZCAiLU9bTl1cdFx0TGlrZSAtbyBidXQgc3BsaXQgdmVydGljYWxseSIKIG1zZ3N0ciAiLU9bTl1cdFx00u4g5uUsIPfy7iDoIC1vLCDt7iDxIOLl8PLo6uDr/O377CDw4Ofk5evl7ejl7CDu6u7tIgogCi0jOiBtYWluLmM6MjUyNAorIzogbWFpbi5jOjI1MzMKIG1zZ2lkICIrXHRcdFx0U3RhcnQgYXQgZW5kIG9mIGZpbGUiCiBtc2dzdHIgIitcdFx0XHTN4Pfg8vwg8OXk4Ory6PDu4uDt6OUg4iDq7u325SD04Onr4CIKIAotIzogbWFpbi5jOjI1MjUKKyM6IG1haW4uYzoyNTM0CiBtc2dpZCAiKzxsbnVtPlx0XHRTdGFydCBhdCBsaW5lIDxsbnVtPiIKIG1zZ3N0ciAiKzxsbnVtPlx0XHTN4Pfg8vwg8OXk4Ory6PDu4uDt6OUg4iDx8vDu6uUg8SDt7uzl8O7sIDxsbnVtPiIKIAotIzogbWFpbi5jOjI1MjcKKyM6IG1haW4uYzoyNTM2CiBtc2dpZCAiLS1jbWQgPGNvbW1hbmQ+XHRFeGVjdXRlIDxjb21tYW5kPiBiZWZvcmUgbG9hZGluZyBhbnkgdmltcmMgZmlsZSIKIG1zZ3N0ciAiLS1jbWQgPOru7ODt5OA+XHTC++/u6+3o8vwgPOru7ODt5PM+IO/l8OXkIOfg4/Dz5+ru6SD04Onr4CB2aW1yYyIKIAotIzogbWFpbi5jOjI1MjkKKyM6IG1haW4uYzoyNTM4CiBtc2dpZCAiLWMgPGNvbW1hbmQ+XHRcdEV4ZWN1dGUgPGNvbW1hbmQ+IGFmdGVyIGxvYWRpbmcgdGhlIGZpcnN0IGZpbGUiCiBtc2dzdHIgIi1jIDzq7uzg7eTgPlx0XHTC++/u6+3o8vwgPOru7ODt5PM+IO/u8evlIOfg4/Dz5+roIO/l8OLu4+4g9ODp6+AiCiAKLSM6IG1haW4uYzoyNTMwCisjOiBtYWluLmM6MjUzOQogbXNnaWQgIi1TIDxzZXNzaW9uPlx0XHRTb3VyY2UgZmlsZSA8c2Vzc2lvbj4gYWZ0ZXIgbG9hZGluZyB0aGUgZmlyc3QgZmlsZSIKIG1zZ3N0ciAiLVMgPPHl4O3xPlx0XHTP8O736PLg8vwg8fbl7eDw6OkgPPHl4O3x4D4g7+7x6+Ug5+Dj8PPn6ugg7+Xw4u7j7iD04Onr4CIKIAotIzogbWFpbi5jOjI1MzEKKyM6IG1haW4uYzoyNTQwCiBtc2dpZCAiLXMgPHNjcmlwdGluPlx0UmVhZCBOb3JtYWwgbW9kZSBjb21tYW5kcyBmcm9tIGZpbGUgPHNjcmlwdGluPiIKIG1zZ3N0ciAiLXMgPPH25e3g8OjpPlx0z/Du9+jy4PL8IOru7ODt5PsgzuH79+3u4+4g8OXm6OzgIOjnIPTg6evgIDzx9uXt4PDo/z4iCiAKLSM6IG1haW4uYzoyNTMyCisjOiBtYWluLmM6MjU0MQogbXNnaWQgIi13IDxzY3JpcHRvdXQ+XHRBcHBlbmQgYWxsIHR5cGVkIGNvbW1hbmRzIHRvIGZpbGUgPHNjcmlwdG91dD4iCiBtc2dzdHIgIi13IDzx9uXt4PDo6T5cdMTu4eDi6//y/CDi8eUg4uLl5Ljt7fvlIOru7ODt5Psg4iD04OnrIDzx9uXt4PDo/z4iCiAKLSM6IG1haW4uYzoyNTMzCisjOiBtYWluLmM6MjU0MgogbXNnaWQgIi1XIDxzY3JpcHRvdXQ+XHRXcml0ZSBhbGwgdHlwZWQgY29tbWFuZHMgdG8gZmlsZSA8c2NyaXB0b3V0PiIKIG1zZ3N0ciAiLVcgPPH25e3g8OjpPlx0x+Dv6PHg8vwg4vHlIOLi5eS47e375SDq7uzg7eT7IOIg9ODp6yA88fbl7eDw6P8+IgogCi0jOiBtYWluLmM6MjUzNQorIzogbWFpbi5jOjI1NDQKIG1zZ2lkICIteFx0XHRcdEVkaXQgZW5jcnlwdGVkIGZpbGVzIgogbXNnc3RyICIteFx0XHRcdNDl5ODq8ujw7uLg7ejlIOfg+Oj08O7i4O3t+/Ug9ODp6+7iIgogCi0jOiBtYWluLmM6MjUzOQorIzogbWFpbi5jOjI1NDgKIG1zZ2lkICItZGlzcGxheSA8ZGlzcGxheT5cdENvbm5lY3QgdmltIHRvIHRoaXMgcGFydGljdWxhciBYLXNlcnZlciIKIG1zZ3N0ciAiLWRpc3BsYXkgPP3q8ODtPlx0z+7k8e7l5Ojt6PL8IHZpbSDqIPPq4Ofg7e3u7PMg8eXw4uXw8yBYIgogCi0jOiBtYWluLmM6MjU0MQorIzogbWFpbi5jOjI1NTAKIG1zZ2lkICItWFx0XHRcdERvIG5vdCBjb25uZWN0IHRvIFggc2VydmVyIgogbXNnc3RyICItWFx0XHRcdM3lIOL77+7r7f/y/CDx7uXk6O3l7ejlIPEg8eXw4uXw7uwgWCIKIAotIzogbWFpbi5jOjI1NDQKKyM6IG1haW4uYzoyNTUzCiBtc2dpZCAiLS1yZW1vdGUgPGZpbGVzPlx0RWRpdCA8ZmlsZXM+IGluIGEgVmltIHNlcnZlciBpZiBwb3NzaWJsZSIKIG1zZ3N0ciAiLS1yZW1vdGUgPPTg6ev7Plx0z+4g4u7n7O7m7e7x8ugg8OXk4Ory6PDu4uDy/CA89ODp6/s+IO3gIPHl8OLl8OUgVmltIgogCi0jOiBtYWluLmM6MjU0NQorIzogbWFpbi5jOjI1NTQKIG1zZ2lkICItLXJlbW90ZS1zaWxlbnQgPGZpbGVzPiAgU2FtZSwgZG9uJ3QgY29tcGxhaW4gaWYgdGhlcmUgaXMgbm8gc2VydmVyIgogbXNnc3RyICItLXJlbW90ZS1zaWxlbnQgPPTg6ev7PiAg0u4g5uUsIO3uIOHl5yDm4Ovu4SDt4CDu8vHz8vHy4ujlIPHl8OLl8OAiCiAKLSM6IG1haW4uYzoyNTQ2CisjOiBtYWluLmM6MjU1NQogbXNnaWQgIiIKICItLXJlbW90ZS13YWl0IDxmaWxlcz4gIEFzIC0tcmVtb3RlIGJ1dCB3YWl0IGZvciBmaWxlcyB0byBoYXZlIGJlZW4gZWRpdGVkIgogbXNnc3RyICIiCiAiLS1yZW1vdGUtd2FpdCA89ODp6/s+ICDS7iDm5Swg9/LuIOggLS1yZW1vdGUsIO3uIPEg7ubo5ODt6OXsIOfg4uXw+OXt6P8iCiAKLSM6IG1haW4uYzoyNTQ3CisjOiBtYWluLmM6MjU1NgogbXNnaWQgIiIKICItLXJlbW90ZS13YWl0LXNpbGVudCA8ZmlsZXM+ICBTYW1lLCBkb24ndCBjb21wbGFpbiBpZiB0aGVyZSBpcyBubyBzZXJ2ZXIiCiBtc2dzdHIgIiIKICItLXJlbW90ZS13YWl0LXNpbGVudCA89ODp6/s+ICDS7iDm5Swg7e4g4eXnIObg6+7hIO3gIO7y8fPy8fLi6OUg8eXw4uXw4CIKIAotIzogbWFpbi5jOjI1NDgKKyM6IG1haW4uYzoyNTU3CiBtc2dpZCAiLS1yZW1vdGUtc2VuZCA8a2V5cz5cdFNlbmQgPGtleXM+IHRvIGEgVmltIHNlcnZlciBhbmQgZXhpdCIKIG1zZ3N0ciAiLS1yZW1vdGUtc2VuZCA86u3u7+roPlx0zvLv8ODi6PL8IDzq7e7v6ug+IO3gIPHl8OLl8CBWaW0g6CDi++ny6CIKIAotIzogbWFpbi5jOjI1NDkKKyM6IG1haW4uYzoyNTU4CiBtc2dpZCAiLS1yZW1vdGUtZXhwciA8ZXhwcj5cdEV2YWx1YXRlIDxleHByPiBpbiBhIFZpbSBzZXJ2ZXIgYW5kIHByaW50IHJlc3VsdCIKIG1zZ3N0ciAiLS1yZW1vdGUtZXhwciA84vvw4OY+XHTC+/fo8evo8vwgPOL78ODmPiDt4CDx5fDi5fDlIFZpbSDoIO3g7+X34PLg8vwiCiAKLSM6IG1haW4uYzoyNTUwCisjOiBtYWluLmM6MjU1OQogbXNnaWQgIi0tc2VydmVybGlzdFx0XHRMaXN0IGF2YWlsYWJsZSBWaW0gc2VydmVyIG5hbWVzIGFuZCBleGl0IgogbXNnc3RyICItLXNlcnZlcmxpc3RcdFx0z+7q4Ofg8vwg8e/o8e7qIOjsuO0g8eXw4uXw7uIgVmltIOgg5+Di5fD46PL8IPDg4e7y8yIKIAotIzogbWFpbi5jOjI1NTEKKyM6IG1haW4uYzoyNTYwCiBtc2dpZCAiLS1zZXJ2ZXJuYW1lIDxuYW1lPlx0U2VuZCB0by9iZWNvbWUgdGhlIFZpbSBzZXJ2ZXIgPG5hbWU+IgogbXNnc3RyICIiCiAiLS1zZXJ2ZXJuYW1lIDzo7P8+XHTO8u/w4OLo8vwg7eAv8fLg8vwg8eXw4uXw7uwgVmltIPEg8+rg5+Dt7fvsIDzo7OXt5ew+IgogCi0jOiBtYWluLmM6MjU1NAorIzogbWFpbi5jOjI1NjMKIG1zZ2lkICItaSA8dmltaW5mbz5cdFx0VXNlIDx2aW1pbmZvPiBpbnN0ZWFkIG9mIC52aW1pbmZvIgogbXNnc3RyICItaSA8dmltaW5mbz5cdFx0yPHv7uv85+7i4PL8IOLs5fHy7iAudmltaW5mbyD04OnrIDx2aW1pbmZvPiIKIAotIzogbWFpbi5jOjI1NTYKKyM6IG1haW4uYzoyNTY1CiBtc2dpZCAiLWggIG9yICAtLWhlbHBcdFByaW50IEhlbHAgKHRoaXMgbWVzc2FnZSkgYW5kIGV4aXQiCiBtc2dzdHIgIi1oIOjr6CAtLWhlbHBcdML74uXx8ugg8e/w4OLq8yAo/fLuIPHu7uH55e3o5Skg6CDn4OLl8Pjo8vwg8ODh7vLzIgogCi0jOiBtYWluLmM6MjU1NworIzogbWFpbi5jOjI1NjYKIG1zZ2lkICItLXZlcnNpb25cdFx0UHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdCIKIG1zZ3N0ciAiLS12ZXJzaW9uXHRcdML74uXx8ugg6O307vDs4Pbo/iDuIOLl8PHo6CBWaW0g6CDn4OLl8Pjo8vwg8ODh7vLzIgogCi0jOiBtYWluLmM6MjU2MQorIzogbWFpbi5jOjI1NzAKIG1zZ2lkICIiCiAiXG4iCiAiQXJndW1lbnRzIHJlY29nbmlzZWQgYnkgZ3ZpbSAoTW90aWYgdmVyc2lvbik6XG4iCkBAIC0zMjc0LDcgKzMyODMsNyBAQAogIlxuIgogIsDw4/Ps5e3y+yDk6/8gZ3ZpbSAo4uXw8ej/IE1vdGlmKTpcbiIKIAotIzogbWFpbi5jOjI1NjUKKyM6IG1haW4uYzoyNTc0CiBtc2dpZCAiIgogIlxuIgogIkFyZ3VtZW50cyByZWNvZ25pc2VkIGJ5IGd2aW0gKG5lWHRhdyB2ZXJzaW9uKTpcbiIKQEAgLTMyODIsNyArMzI5MSw3IEBACiAiXG4iCiAiwPDj8+zl7fL7IOTr/yBndmltICji5fDx6P8gbmVYdGF3KTpcbiIKIAotIzogbWFpbi5jOjI1NjcKKyM6IG1haW4uYzoyNTc2CiBtc2dpZCAiIgogIlxuIgogIkFyZ3VtZW50cyByZWNvZ25pc2VkIGJ5IGd2aW0gKEF0aGVuYSB2ZXJzaW9uKTpcbiIKQEAgLTMyOTAsNzUgKzMyOTksNzUgQEAKICJcbiIKICLA8OPz7OXt8vsg5Ov/IGd2aW0gKOLl8PHo/yBBdGhlbmEpOlxuIgogCi0jOiBtYWluLmM6MjU3MQorIzogbWFpbi5jOjI1ODAKIG1zZ2lkICItZGlzcGxheSA8ZGlzcGxheT5cdFJ1biB2aW0gb24gPGRpc3BsYXk+IgogbXNnc3RyICItZGlzcGxheSA85Ojx7+vl6T5cdMfg7/Px8ujy/CB2aW0g7eAg8+rg5+Dt7e7sIDzk6PHv6+XlPiIKIAotIzogbWFpbi5jOjI1NzIKKyM6IG1haW4uYzoyNTgxCiBtc2dpZCAiLWljb25pY1x0XHRTdGFydCB2aW0gaWNvbmlmaWVkIgogbXNnc3RyICItaWNvbmljXHRcdMfg7/Px8ujy/CB2aW0g4iDx4rjw7fPy7uwg4ujk5SIKIAotIzogbWFpbi5jOjI1NzQKKyM6IG1haW4uYzoyNTgzCiBtc2dpZCAiLW5hbWUgPG5hbWU+XHRcdFVzZSByZXNvdXJjZSBhcyBpZiB2aW0gd2FzIDxuYW1lPiIKIG1zZ3N0ciAiLW5hbWUgPOjs/z5cdFx0yPHv7uv85+7i4PL8IPDl8fPw8Swg6uDqIOXx6+gg4fsgdmltIOH76yA86Ozl7eXsPiIKIAotIzogbWFpbi5jOjI1NzUKKyM6IG1haW4uYzoyNTg0CiBtc2dpZCAiXHRcdFx0ICAoVW5pbXBsZW1lbnRlZClcbiIKIG1zZ3N0ciAiXHRcdFx0ICAozeUg8OXg6+jn7uLg7e4pXG4iCiAKLSM6IG1haW4uYzoyNTc3CisjOiBtYWluLmM6MjU4NgogbXNnaWQgIi1iYWNrZ3JvdW5kIDxjb2xvcj5cdFVzZSA8Y29sb3I+IGZvciB0aGUgYmFja2dyb3VuZCAoYWxzbzogLWJnKSIKIG1zZ3N0ciAiIgogIi1iYWNrZ3JvdW5kIDz24uXyPlx0yPHv7uv85+7i4PL8IPPq4Ofg7e376SA89uLl8j4g5Ov/IPTu7eAgKPLg6ublOiAtYmcpIgogCi0jOiBtYWluLmM6MjU3OAorIzogbWFpbi5jOjI1ODcKIG1zZ2lkICItZm9yZWdyb3VuZCA8Y29sb3I+XHRVc2UgPGNvbG9yPiBmb3Igbm9ybWFsIHRleHQgKGFsc286IC1mZykiCiBtc2dzdHIgIiIKICItZm9yZWdyb3VuZCA89uLl8j5cdMjx7+7r/Ofu4uDy/CA89uLl8j4g5Ov/IO7h+/ft7uPuIPLl6vHy4CAo8uDq5uU6IC1mZykiCiAKLSM6IG1haW4uYzoyNTc5IG1haW4uYzoyNTk5CisjOiBtYWluLmM6MjU4OCBtYWluLmM6MjYwOAogbXNnaWQgIi1mb250IDxmb250Plx0XHRVc2UgPGZvbnQ+IGZvciBub3JtYWwgdGV4dCAoYWxzbzogLWZuKSIKIG1zZ3N0ciAiLWZvbnQgPPjw6PTyPlx0XHTI8e/u6/zn7uLg8vwgPPjw6PTyPiDk6/8g7uH79+3u4+4g8uXq8fLgICjy4Orm5TogLWZuKSIKIAotIzogbWFpbi5jOjI1ODAKKyM6IG1haW4uYzoyNTg5CiBtc2dpZCAiLWJvbGRmb250IDxmb250Plx0VXNlIDxmb250PiBmb3IgYm9sZCB0ZXh0IgogbXNnc3RyICItYm9sZGZvbnQgPPjw6PTyPlx0yPHv7uv85+7i4PL8IDz48Oj08j4g5Ov/IObo8O3u4+4g8uXq8fLgIgogCi0jOiBtYWluLmM6MjU4MQorIzogbWFpbi5jOjI1OTAKIG1zZ2lkICItaXRhbGljZm9udCA8Zm9udD5cdFVzZSA8Zm9udD4gZm9yIGl0YWxpYyB0ZXh0IgogbXNnc3RyICItaXRhbGljZm9udCA8+PDo9PI+XHTI8e/u6/zn7uLg8vwgPPjw6PTyPiDk6/8g7eDq6+7t7e7j7iDy5erx8uAiCiAKLSM6IG1haW4uYzoyNTgyIG1haW4uYzoyNjAwCisjOiBtYWluLmM6MjU5MSBtYWluLmM6MjYwOQogbXNnaWQgIi1nZW9tZXRyeSA8Z2VvbT5cdFVzZSA8Z2VvbT4gZm9yIGluaXRpYWwgZ2VvbWV0cnkgKGFsc286IC1nZW9tKSIKIG1zZ3N0ciAiIgogIi1nZW9tZXRyeSA84+Xu7OXy8Oj/Plx0yPHv7uv85+7i4PL8IO3g9+Dr/O3z/iA84+Xu7OXy8Oj+PiAo8uDq5uU6IC1nZW9tKSIKIAotIzogbWFpbi5jOjI1ODMKKyM6IG1haW4uYzoyNTkyCiBtc2dpZCAiLWJvcmRlcndpZHRoIDx3aWR0aD5cdFVzZSBhIGJvcmRlciB3aWR0aCBvZiA8d2lkdGg+IChhbHNvOiAtYncpIgogbXNnc3RyICItYm9yZGVyd2lkdGggPPjo8Ojt4D5cdMjx7+7r/Ofu4uDy/CA8+Ojw6O3zPiDh7vDk/vDgICjy4Orm5TogLWJ3KSIKIAotIzogbWFpbi5jOjI1ODQKKyM6IG1haW4uYzoyNTkzCiBtc2dpZCAiLXNjcm9sbGJhcndpZHRoIDx3aWR0aD4gIFVzZSBhIHNjcm9sbGJhciB3aWR0aCBvZiA8d2lkdGg+IChhbHNvOiAtc3cpIgogbXNnc3RyICIiCiAiLXNjcm9sbGJhcndpZHRoIDz46PDo7eA+IMjx7+7r/Ofu4uDy/CD46PDo7fMg7+7r7vH7IO/w7urw8/Lq6CAo8uDq5uU6IC1zdykiCiAKLSM6IG1haW4uYzoyNTg2CisjOiBtYWluLmM6MjU5NQogbXNnaWQgIi1tZW51aGVpZ2h0IDxoZWlnaHQ+XHRVc2UgYSBtZW51IGJhciBoZWlnaHQgb2YgPGhlaWdodD4gKGFsc286IC1taCkiCiBtc2dzdHIgIi1tZW51aGVpZ2h0IDzi+/Hu8uA+XHTI8e/u6/zn7uLg8vwgPOL78e7y8z4g7OXt/iAo8uDq5uU6IC1taCkiCiAKLSM6IG1haW4uYzoyNTg4IG1haW4uYzoyNjAxCisjOiBtYWluLmM6MjU5NyBtYWluLmM6MjYxMAogbXNnaWQgIi1yZXZlcnNlXHRcdFVzZSByZXZlcnNlIHZpZGVvIChhbHNvOiAtcnYpIgogbXNnc3RyICItcmV2ZXJzZVx0XHTI8e/u6/zn7uLg8vwg6O3i5fDx7fvpIOLo5OXu8OXm6OwgKPLg6ublOiAtcnYpIgogCi0jOiBtYWluLmM6MjU4OQorIzogbWFpbi5jOjI1OTgKIG1zZ2lkICIrcmV2ZXJzZVx0XHREb24ndCB1c2UgcmV2ZXJzZSB2aWRlbyAoYWxzbzogK3J2KSIKIG1zZ3N0ciAiK3JldmVyc2VcdFx0zeUg6PHv7uv85+7i4PL8IOjt4uXw8e376SDi6OTl7vDl5ujsICjy4Orm5TogK3J2KSIKIAotIzogbWFpbi5jOjI1OTAKKyM6IG1haW4uYzoyNTk5CiBtc2dpZCAiLXhybSA8cmVzb3VyY2U+XHRTZXQgdGhlIHNwZWNpZmllZCByZXNvdXJjZSIKIG1zZ3N0ciAiLXhybSA88OXx8/DxPlx00/Hy4O3u4ujy/CDz6uDn4O3t++kgPPDl8fPw8T4iCiAKLSM6IG1haW4uYzoyNTkzCisjOiBtYWluLmM6MjYwMgogbXNnaWQgIiIKICJcbiIKICJBcmd1bWVudHMgcmVjb2duaXNlZCBieSBndmltIChSSVNDIE9TIHZlcnNpb24pOlxuIgpAQCAtMzM2NiwxNSArMzM3NSwxNSBAQAogIlxuIgogIsDw4/Ps5e3y+yDk6/8gZ3ZpbSAo4uXw8ej/IFJJU0MgT1MpOlxuIgogCi0jOiBtYWluLmM6MjU5NAorIzogbWFpbi5jOjI2MDMKIG1zZ2lkICItLWNvbHVtbnMgPG51bWJlcj5cdEluaXRpYWwgd2lkdGggb2Ygd2luZG93IGluIGNvbHVtbnMiCiBtc2dzdHIgIi0tY29sdW1ucyA89+jx6+4+XHTP5fDi7u3g9+Dr/O3g/yD46PDo7eAg7urt4CDiIOru6+7t6uD1IgogCi0jOiBtYWluLmM6MjU5NQorIzogbWFpbi5jOjI2MDQKIG1zZ2lkICItLXJvd3MgPG51bWJlcj5cdEluaXRpYWwgaGVpZ2h0IG9mIHdpbmRvdyBpbiByb3dzIgogbXNnc3RyICItLXJvd3MgPPfo8evuPlx0z+Xw4u7t4Pfg6/zt4P8g4vvx7vLgIO7q7eAg4iDx8vDu6uD1IgogCi0jOiBtYWluLmM6MjU5OAorIzogbWFpbi5jOjI2MDcKIG1zZ2lkICIiCiAiXG4iCiAiQXJndW1lbnRzIHJlY29nbmlzZWQgYnkgZ3ZpbSAoR1RLKyB2ZXJzaW9uKTpcbiIKQEAgLTMzODIsNDggKzMzOTEsNDggQEAKICJcbiIKICLA8OPz7OXt8vsg5Ov/IGd2aW0gKOLl8PHo/yBHVEsrKTpcbiIKIAotIzogbWFpbi5jOjI2MDIKKyM6IG1haW4uYzoyNjExCiBtc2dpZCAiLWRpc3BsYXkgPGRpc3BsYXk+XHRSdW4gdmltIG9uIDxkaXNwbGF5PiAoYWxzbzogLS1kaXNwbGF5KSIKIG1zZ3N0ciAiIgogIi1kaXNwbGF5IDzk6PHv6+XpPlx0x+Dv8/Hy6PL8IHZpbSDt4CDz6uDn4O3t7uwgPOTo8e/r5eU+ICjy4Orm5TogLS1kaXNwbGF5KSIKIAotIzogbWFpbi5jOjI2MDQKKyM6IG1haW4uYzoyNjEzCiBtc2dpZCAiLS1yb2xlIDxyb2xlPlx0U2V0IGEgdW5pcXVlIHJvbGUgdG8gaWRlbnRpZnkgdGhlIG1haW4gd2luZG93IgogbXNnc3RyICIiCiAiLS1yb2xlIDzw7uv8Plx00/Hy4O3u4ujy/CDz7ejq4Ov87fP+IDzw7uv8PiDk6/8g6OTl7fLo9Ojq4Pbo6CDj6+Di7e7j7iDu6u3gIgogCi0jOiBtYWluLmM6MjYwNgorIzogbWFpbi5jOjI2MTUKIG1zZ2lkICItLXNvY2tldGlkIDx4aWQ+XHRPcGVuIFZpbSBpbnNpZGUgYW5vdGhlciBHVEsgd2lkZ2V0IgogbXNnc3RyICItLXNvY2tldGlkIDx4aWQ+XHTO8urw+/L8IFZpbSDi7fPy8Ogg5PDz4+7j7iDq7uzv7u3l7fLgIEdUSyIKIAotIzogbWFpbi5jOjI2MDkKKyM6IG1haW4uYzoyNjE4CiBtc2dpZCAiLVAgPHBhcmVudCB0aXRsZT5cdE9wZW4gVmltIGluc2lkZSBwYXJlbnQgYXBwbGljYXRpb24iCiBtc2dzdHIgIi1QIDzn4OPu6+7i7uog8O7k6PLl6/8+XHTO8urw+/L8IFZpbSDiIPDu5Ojy5ev88eru7CDv8Ojr7ubl7ejoIgogCi0jOiBtYWluLmM6Mjg0NworIzogbWFpbi5jOjI4NTYKIG1zZ2lkICJObyBkaXNwbGF5IgogbXNnc3RyICLN5fIg5Ojx7+vl/yIKIAogIy4gRmFpbGVkIHRvIHNlbmQsIGFib3J0LgotIzogbWFpbi5jOjI4NjIKKyM6IG1haW4uYzoyODcxCiBtc2dpZCAiOiBTZW5kIGZhaWxlZC5cbiIKIG1zZ3N0ciAiOiDO8u/w4OLq4CDt5SDz5ODr4PH8LlxuIgogCiAjLiBMZXQgdmltIHN0YXJ0IG5vcm1hbGx5LgotIzogbWFpbi5jOjI4NjgKKyM6IG1haW4uYzoyODc3CiBtc2dpZCAiOiBTZW5kIGZhaWxlZC4gVHJ5aW5nIHRvIGV4ZWN1dGUgbG9jYWxseVxuIgogbXNnc3RyICI6IM7y7/Dg4urgIO3lIPPk4Ovg8fwuIM/u7/vy6uAg7OXx8u3u4+4g4vvv7uvt5e3o/1xuIgogCi0jOiBtYWluLmM6MjkwNiBtYWluLmM6MjkyNworIzogbWFpbi5jOjI5MTUgbWFpbi5jOjI5MzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWQgb2YgJWQgZWRpdGVkIgogbXNnc3RyICLu8vDl5ODq8ujw7uLg7e4gJWQg6OcgJWQiCiAKLSM6IG1haW4uYzoyOTQ5CisjOiBtYWluLmM6Mjk1OAogbXNnaWQgIk5vIGRpc3BsYXk6IFNlbmQgZXhwcmVzc2lvbiBmYWlsZWQuXG4iCiBtc2dzdHIgIs3l8iDk6PHv6+X/OiDu8u/w4OLq4CDi+/Dg5uXt6P8g7eUg8+Tg6+Dx/C5cbiIKIAotIzogbWFpbi5jOjI5NjEKKyM6IG1haW4uYzoyOTcwCiBtc2dpZCAiOiBTZW5kIGV4cHJlc3Npb24gZmFpbGVkLlxuIgogbXNnc3RyICI6IM7y7/Dg4urgIOL78ODm5e3o/yDt5SDz5ODr4PH8LlxuIgogCkBAIC0zNTQzLDIzICszNTUyLDIzIEBACiBtc2dpZCAiRTI5MzogYmxvY2sgd2FzIG5vdCBsb2NrZWQiCiBtc2dzdHIgIkUyOTM6IOHr7uog7eUg5+Dh6+7q6PDu4uDtIgogCi0jOiBtZW1maWxlLmM6MTAwNQorIzogbWVtZmlsZS5jOjEwMTAKIG1zZ2lkICJFMjk0OiBTZWVrIGVycm9yIGluIHN3YXAgZmlsZSByZWFkIgogbXNnc3RyICJFMjk0OiDO+Ojh6uAg7+7o8ergIO/w6CD38uXt6Ogg8eLu7y304Onr4CIKIAotIzogbWVtZmlsZS5jOjEwMTAKKyM6IG1lbWZpbGUuYzoxMDE1CiBtc2dpZCAiRTI5NTogUmVhZCBlcnJvciBpbiBzd2FwIGZpbGUiCiBtc2dzdHIgIkUyOTU6IM746OHq4CD38uXt6P8g8eLu7y304Onr4CIKIAotIzogbWVtZmlsZS5jOjEwNjIKKyM6IG1lbWZpbGUuYzoxMDY3CiBtc2dpZCAiRTI5NjogU2VlayBlcnJvciBpbiBzd2FwIGZpbGUgd3JpdGUiCiBtc2dzdHIgIkUyOTY6IM746OHq4CDv7ujx6uAg7/DoIOfg7+jx6CDx4u7vLfTg6evgIgogCi0jOiBtZW1maWxlLmM6MTA4MAorIzogbWVtZmlsZS5jOjEwODUKIG1zZ2lkICJFMjk3OiBXcml0ZSBlcnJvciBpbiBzd2FwIGZpbGUiCiBtc2dzdHIgIkUyOTc6IM746OHq4CDv8Ogg5+Dv6PHoIPHi7u8t9ODp6+AiCiAKLSM6IG1lbWZpbGUuYzoxMjc3CisjOiBtZW1maWxlLmM6MTI4MgogbXNnaWQgIkUzMDA6IFN3YXAgZmlsZSBhbHJlYWR5IGV4aXN0cyAoc3ltbGluayBhdHRhY2s/KSIKIG1zZ3N0ciAiIgogIkUzMDA6INHi7u8t9ODp6yDz5uUg8fP55fHy4vPl8iAo4PLg6uAg8SDo8e/u6/zn7uLg7ejl7CDx6Ozi7uv87e7pIPHx++vq6D8pIgpAQCAtMzU3Nyw0NCArMzU4Niw0NCBAQAogbXNnc3RyICJFMjk4OiDN5SDv7uvz9+XtIOHr7uog7e7s5fAgMj8iCiAKICMuIGNvdWxkIG5vdCAocmUpb3BlbiB0aGUgc3dhcCBmaWxlLCB3aGF0IGNhbiB3ZSBkbz8/Pz8KLSM6IG1lbWxpbmUuYzo0NDMKKyM6IG1lbWxpbmUuYzo0NDQKIG1zZ2lkICJFMzAxOiBPb3BzLCBsb3N0IHRoZSBzd2FwIGZpbGUhISEiCiBtc2dzdHIgIkUzMDE6IM7pLCDv7vLl8P/r8f8g8eLu7y304OnrISEhIgogCi0jOiBtZW1saW5lLmM6NDQ4CisjOiBtZW1saW5lLmM6NDQ5CiBtc2dpZCAiRTMwMjogQ291bGQgbm90IHJlbmFtZSBzd2FwIGZpbGUiCiBtc2dzdHIgIkUzMDI6IM3l4u7n7O7m7e4g7+Xw5ejs5e3u4uDy/CDx4u7vLfTg6esiCiAKLSM6IG1lbWxpbmUuYzo1MTgKKyM6IG1lbWxpbmUuYzo1MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTMwMzogVW5hYmxlIHRvIG9wZW4gc3dhcCBmaWxlIGZvciBcIiVzXCIsIHJlY292ZXJ5IGltcG9zc2libGUiCiBtc2dzdHIgIiIKICJFMzAzOiDN5SDz5ODr7vH8IO7y6vD78vwg8eLu7y304OnrIOTr/yBcIiVzXCIsIOLu8fHy4O3u4uvl7ejlIO3l4u7n7O7m7e4iCiAKLSM6IG1lbWxpbmUuYzo2MTcKKyM6IG1lbWxpbmUuYzo2MTgKIG1zZ2lkICJFMzA0OiBtbF90aW1lc3RhbXA6IERpZG4ndCBnZXQgYmxvY2sgMD8/IgogbXNnc3RyICJFMzA0OiBtbF90aW1lc3RhbXA6IM3lIO/u6/P35e0g4evu6iAwPz8iCiAKLSM6IG1lbWxpbmUuYzo3NTcKKyM6IG1lbWxpbmUuYzo3NTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTMwNTogTm8gc3dhcCBmaWxlIGZvdW5kIGZvciAlcyIKIG1zZ3N0ciAiRTMwNTog0eLu7y304OnrIOTr/yAlcyDt5SDt4Onk5e0iCiAKLSM6IG1lbWxpbmUuYzo3NjcKKyM6IG1lbWxpbmUuYzo3NjgKIG1zZ2lkICJFbnRlciBudW1iZXIgb2Ygc3dhcCBmaWxlIHRvIHVzZSAoMCB0byBxdWl0KTogIgogbXNnc3RyICIiCiAiwuLl5Ojy5SDt7uzl8CDx4u7vLfTg6evgLCDq7vLu8PvpIPHr5eTz5fIg6PHv7uv85+7i4PL8ICgwIOTr/yDi+/Xu5OApOiAiCiAKLSM6IG1lbWxpbmUuYzo4MTIKKyM6IG1lbWxpbmUuYzo4MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTMwNjogQ2Fubm90IG9wZW4gJXMiCiBtc2dzdHIgIkUzMDY6IM3lIOzu4/Mg7vLq8Pvy/CAlcyIKIAotIzogbWVtbGluZS5jOjgzNAorIzogbWVtbGluZS5jOjgzNQogbXNnaWQgIlVuYWJsZSB0byByZWFkIGJsb2NrIDAgZnJvbSAiCiBtc2dzdHIgIs3l4u7n7O7m7e4g7/Du9+jy4PL8IOHr7uogMCDo5yAiCiAKLSM6IG1lbWxpbmUuYzo4MzcKKyM6IG1lbWxpbmUuYzo4MzgKIG1zZ2lkICIiCiAiXG4iCiAiTWF5YmUgbm8gY2hhbmdlcyB3ZXJlIG1hZGUgb3IgVmltIGRpZCBub3QgdXBkYXRlIHRoZSBzd2FwIGZpbGUuIgpAQCAtMzYyMiwyOCArMzYzMSwyOCBAQAogIlxuIgogIs3l8iDo5+zl7eXt6OksIOjr6CBWaW0g7eUg8ezu4yDu4e3u4ujy/CDx4u7vLfTg6esiCiAKLSM6IG1lbWxpbmUuYzo4NDcgbWVtbGluZS5jOjg2NAorIzogbWVtbGluZS5jOjg0OCBtZW1saW5lLmM6ODY1CiBtc2dpZCAiIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhpcyB2ZXJzaW9uIG9mIFZpbS5cbiIKIG1zZ3N0ciAiIO3l6/zn/yDo8e/u6/zn7uLg8vwg4iDk4O3t7ukg4uXw8ejoIFZpbS5cbiIKIAotIzogbWVtbGluZS5jOjg0OQorIzogbWVtbGluZS5jOjg1MAogbXNnaWQgIlVzZSBWaW0gdmVyc2lvbiAzLjAuXG4iCiBtc2dzdHIgIsjx7+7r/Ofz6fLlIFZpbSDi5fDx6OggMy4wLlxuIgogCi0jOiBtZW1saW5lLmM6ODU1CisjOiBtZW1saW5lLmM6ODU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMDc6ICVzIGRvZXMgbm90IGxvb2sgbGlrZSBhIFZpbSBzd2FwIGZpbGUiCiBtc2dzdHIgIkUzMDc6ICVzIO3lIP/i6//l8vH/IPHi7u8t9ODp6+7sIFZpbSIKIAotIzogbWVtbGluZS5jOjg2OAorIzogbWVtbGluZS5jOjg2OQogbXNnaWQgIiBjYW5ub3QgYmUgdXNlZCBvbiB0aGlzIGNvbXB1dGVyLlxuIgogbXNnc3RyICIg7eXr/Of/IOjx7+7r/Ofu4uDy/CDt4CD98u7sIOru7O/8/vLl8OUuXG4iCiAKLSM6IG1lbWxpbmUuYzo4NzAKKyM6IG1lbWxpbmUuYzo4NzEKIG1zZ2lkICJUaGUgZmlsZSB3YXMgY3JlYXRlZCBvbiAiCiBtc2dzdHIgItTg6esg4fvrIPHu5+Tg7SAiCiAKLSM6IG1lbWxpbmUuYzo4NzQKKyM6IG1lbWxpbmUuYzo4NzUKIG1zZ2lkICIiCiAiLFxuIgogIm9yIHRoZSBmaWxlIGhhcyBiZWVuIGRhbWFnZWQuIgpAQCAtMzY1MSw4MiArMzY2MCw4MiBAQAogIixcbiIKICLr6OHuIPTg6esg4fvrIO/u4vDl5uS47S4iCiAKLSM6IG1lbWxpbmUuYzo5MDMKKyM6IG1lbWxpbmUuYzo5MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgc3dhcCBmaWxlIFwiJXNcIiIKIG1zZ3N0ciAiyPHv7uv85/Pl8vH/IPHi7u8t9ODp6yBcIiVzXCIiCiAKLSM6IG1lbWxpbmUuYzo5MDkKKyM6IG1lbWxpbmUuYzo5MTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiT3JpZ2luYWwgZmlsZSBcIiVzXCIiCiBtc2dzdHIgIsjx9e7k7fvpIPTg6esgXCIlc1wiIgogCi0jOiBtZW1saW5lLmM6OTIyCisjOiBtZW1saW5lLmM6OTIzCiBtc2dpZCAiRTMwODogV2FybmluZzogT3JpZ2luYWwgZmlsZSBtYXkgaGF2ZSBiZWVuIGNoYW5nZWQiCiBtc2dzdHIgIkUzMDg6IM/w5eTz7/Dl5uTl7ejlOiDo8fXu5O376SD04OnrIOzu4yDh+/L8IOjn7OXtuO0iCiAKLSM6IG1lbWxpbmUuYzo5NzUKKyM6IG1lbWxpbmUuYzo5NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTMwOTogVW5hYmxlIHRvIHJlYWQgYmxvY2sgMSBmcm9tICVzIgogbXNnc3RyICJFMzA5OiDN5eLu5+zu5u3uIO/w7vfo8uDy/CDh6+7qIDEg6OcgJXMiCiAKLSM6IG1lbWxpbmUuYzo5NzkKKyM6IG1lbWxpbmUuYzo5ODAKIG1zZ2lkICI/Pz9NQU5ZIExJTkVTIE1JU1NJTkciCiBtc2dzdHIgIj8/P87S0dPS0dLC08XSIMzNzsPOINHS0M7KIgogCi0jOiBtZW1saW5lLmM6OTk1CisjOiBtZW1saW5lLmM6OTk2CiBtc2dpZCAiPz8/TElORSBDT1VOVCBXUk9ORyIKIG1zZ3N0ciAiPz8/zcXP0MDCyMvczc7FIMfNwNfFzcjFINHXxdLXyMrAINHS0M7KIgogCi0jOiBtZW1saW5lLmM6MTAwMgorIzogbWVtbGluZS5jOjEwMDMKIG1zZ2lkICI/Pz9FTVBUWSBCTE9DSyIKIG1zZ3N0ciAiPz8/z9PR0s7JIMHLzsoiCiAKLSM6IG1lbWxpbmUuYzoxMDI4CisjOiBtZW1saW5lLmM6MTAyOQogbXNnaWQgIj8/P0xJTkVTIE1JU1NJTkciCiBtc2dzdHIgIj8/P87S0dPS0dLC097SINHS0M7KyCIKIAotIzogbWVtbGluZS5jOjEwNjAKKyM6IG1lbWxpbmUuYzoxMDYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMTA6IEJsb2NrIDEgSUQgd3JvbmcgKCVzIG5vdCBhIC5zd3AgZmlsZT8pIgogbXNnc3RyICJFMzEwOiDt5e/w4OLo6/zt++kg4evu6iAxIElEICglcyDt5SD/4uv/5fLx/yD04Onr7uwgLnN3cD8pIgogCi0jOiBtZW1saW5lLmM6MTA2NQorIzogbWVtbGluZS5jOjEwNjYKIG1zZ2lkICI/Pz9CTE9DSyBNSVNTSU5HIgogbXNnc3RyICI/Pz/P0M7P09nFzSDBy87KIgogCi0jOiBtZW1saW5lLmM6MTA4MQorIzogbWVtbGluZS5jOjEwODIKIG1zZ2lkICI/Pz8gZnJvbSBoZXJlIHVudGlsID8/P0VORCBsaW5lcyBtYXkgYmUgbWVzc2VkIHVwIgogbXNnc3RyICI/Pz/x8vDu6ugg7O7j8/Ig4fvy/CDo8e/u8Pfl7fsg7vLx/uTgIOTuID8/P8rOzdbAIgogCi0jOiBtZW1saW5lLmM6MTA5NworIzogbWVtbGluZS5jOjEwOTgKIG1zZ2lkICI/Pz8gZnJvbSBoZXJlIHVudGlsID8/P0VORCBsaW5lcyBtYXkgaGF2ZSBiZWVuIGluc2VydGVkL2RlbGV0ZWQiCiBtc2dzdHIgIj8/P/Hy8O7q6CDs7uPr6CDh+/L8IOLx8uDi6+Xt+yDo6+gg8+Tg6+Xt+yDu8vH+5OAg5O4gPz8/ys7N1sAiCiAKLSM6IG1lbWxpbmUuYzoxMTE3CisjOiBtZW1saW5lLmM6MTExOAogbXNnaWQgIj8/P0VORCIKIG1zZ3N0ciAiPz8/ys7NxdYiCiAKLSM6IG1lbWxpbmUuYzoxMTQzCisjOiBtZW1saW5lLmM6MTE0NAogbXNnaWQgIkUzMTE6IFJlY292ZXJ5IEludGVycnVwdGVkIgogbXNnc3RyICJFMzExOiDC7vHx8uDt7uLr5e3o5SDv8OXw4uDt7iIKIAotIzogbWVtbGluZS5jOjExNDgKKyM6IG1lbWxpbmUuYzoxMTQ5CiBtc2dpZCAiIgogIkUzMTI6IEVycm9ycyBkZXRlY3RlZCB3aGlsZSByZWNvdmVyaW5nOyBsb29rIGZvciBsaW5lcyBzdGFydGluZyB3aXRoID8/PyIKIG1zZ3N0ciAiIgogIkUzMTI6IMLuIOLw5ez/IOLu8fHy4O3u4uvl7ej/IO7h7eDw8+bl7fsg7vjo4eroOyDx7C4g8fLw7uroLCDt4Pfo7eD++ejl8f8gIgogIvEgPz8/IgogCi0jOiBtZW1saW5lLmM6MTE1MAorIzogbWVtbGluZS5jOjExNTEKIG1zZ2lkICJTZWUgXCI6aGVscCBFMzEyXCIgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgogbXNnc3RyICLR7C4g5O7v7uvt6PLl6/zt8/4g6O307vDs4Pbo/iDiIPHv8ODi7vft6OrlIChcIjpoZWxwIEUzMTJcIikiCiAKLSM6IG1lbWxpbmUuYzoxMTU1CisjOiBtZW1saW5lLmM6MTE1NgogbXNnaWQgIlJlY292ZXJ5IGNvbXBsZXRlZC4gWW91IHNob3VsZCBjaGVjayBpZiBldmVyeXRoaW5nIGlzIE9LLiIKIG1zZ3N0ciAiwu7x8fLg7e7i6+Xt6OUg5+Di5fD45e3uLiDP8O7i5fD88uUsIOLxuCDr6CDiIO/u8P/k6uUuIgogCi0jOiBtZW1saW5lLmM6MTE1NgorIzogbWVtbGluZS5jOjExNTcKIG1zZ2lkICIiCiAiXG4iCiAiKFlvdSBtaWdodCB3YW50IHRvIHdyaXRlIG91dCB0aGlzIGZpbGUgdW5kZXIgYW5vdGhlciBuYW1lXG4iCkBAIC0zNzM0LDExICszNzQzLDExIEBACiAiXG4iCiAiKMzu5uXy5SDn4O/o8eDy/CD04OnrIO/u5CDk8PPj6Owg6Ozl7eXsIOgg8fDg4u3o8vwg5ePuIPEg6PH17uTt++xcbiIKIAotIzogbWVtbGluZS5jOjExNTcKKyM6IG1lbWxpbmUuYzoxMTU4CiBtc2dpZCAiYW5kIHJ1biBkaWZmIHdpdGggdGhlIG9yaWdpbmFsIGZpbGUgdG8gY2hlY2sgZm9yIGNoYW5nZXMpXG4iCiBtc2dzdHIgIvTg6evu7CDv8Ogg7+7s7vnoIO/w7uPw4Ozs+yBkaWZmKS5cbiIKIAotIzogbWVtbGluZS5jOjExNTgKKyM6IG1lbWxpbmUuYzoxMTU5CiBtc2dpZCAiIgogIkRlbGV0ZSB0aGUgLnN3cCBmaWxlIGFmdGVyd2FyZHMuXG4iCiAiXG4iCkBAIC0zNzQ3LDUxICszNzU2LDUxIEBACiAiXG4iCiAKICMuIHVzZSBtc2coKSB0byBzdGFydCB0aGUgc2Nyb2xsaW5nIHByb3Blcmx5Ci0jOiBtZW1saW5lLmM6MTIxNAorIzogbWVtbGluZS5jOjEyMTUKIG1zZ2lkICJTd2FwIGZpbGVzIGZvdW5kOiIKIG1zZ3N0ciAizuHt4PDz5uXt+yDx4u7vLfTg6ev7OiIKIAotIzogbWVtbGluZS5jOjEzOTIKKyM6IG1lbWxpbmUuYzoxMzkzCiBtc2dpZCAiICAgSW4gY3VycmVudCBkaXJlY3Rvcnk6XG4iCiBtc2dzdHIgIiAgIMIg8uXq8/nl7CDq4PLg6+7j5TpcbiIKIAotIzogbWVtbGluZS5jOjEzOTQKKyM6IG1lbWxpbmUuYzoxMzk1CiBtc2dpZCAiICAgVXNpbmcgc3BlY2lmaWVkIG5hbWU6XG4iCiBtc2dzdHIgIiAgINEg8+rg5+Dt7fvsIOjs5e3l7DpcbiIKIAotIzogbWVtbGluZS5jOjEzOTgKKyM6IG1lbWxpbmUuYzoxMzk5CiBtc2dpZCAiICAgSW4gZGlyZWN0b3J5ICIKIG1zZ3N0ciAiICAgwiDq4PLg6+7j5SAgICIKIAotIzogbWVtbGluZS5jOjE0MTYKKyM6IG1lbWxpbmUuYzoxNDE3CiBtc2dpZCAiICAgICAgLS0gbm9uZSAtLVxuIgogbXNnc3RyICIgICAgICAtLSDt5fIgLS1cbiIKIAotIzogbWVtbGluZS5jOjE0ODgKKyM6IG1lbWxpbmUuYzoxNDg5CiBtc2dpZCAiICAgICAgICAgIG93bmVkIGJ5OiAiCiBtc2dzdHIgIiAgICAgICAgICDi6+Dk5evl9jogIgogCi0jOiBtZW1saW5lLmM6MTQ5MAorIzogbWVtbGluZS5jOjE0OTEKIG1zZ2lkICIgICBkYXRlZDogIgogbXNnc3RyICIgICAg5ODy4DogIgogCi0jOiBtZW1saW5lLmM6MTQ5NCBtZW1saW5lLmM6MzY4NAorIzogbWVtbGluZS5jOjE0OTUgbWVtbGluZS5jOjM2ODUKIG1zZ2lkICIgICAgICAgICAgICAgZGF0ZWQ6ICIKIG1zZ3N0ciAiICAgICAgICAgICAgICDk4PLgOiAiCiAKLSM6IG1lbWxpbmUuYzoxNTEwCisjOiBtZW1saW5lLmM6MTUxMQogbXNnaWQgIiAgICAgICAgIFtmcm9tIFZpbSB2ZXJzaW9uIDMuMF0iCiBtc2dzdHIgIiAgICAgICAgIFvu8iBWaW0g4uXw8ejoIDMuMF0iCiAKLSM6IG1lbWxpbmUuYzoxNTE0CisjOiBtZW1saW5lLmM6MTUxNQogbXNnaWQgIiAgICAgICAgIFtkb2VzIG5vdCBsb29rIGxpa2UgYSBWaW0gc3dhcCBmaWxlXSIKIG1zZ3N0ciAiICAgICAgICAgW+3lIP/i6//l8vH/IPHi7u8t9ODp6+7sIFZpbV0iCiAKLSM6IG1lbWxpbmUuYzoxNTE4CisjOiBtZW1saW5lLmM6MTUxOQogbXNnaWQgIiAgICAgICAgIGZpbGUgbmFtZTogIgogbXNnc3RyICIgICAgICAgICDo7P8g9ODp6+A6ICIKIAotIzogbWVtbGluZS5jOjE1MjQKKyM6IG1lbWxpbmUuYzoxNTI1CiBtc2dpZCAiIgogIlxuIgogIiAgICAgICAgICBtb2RpZmllZDogIgpAQCAtMzc5OSwxNSArMzgwOCwxNSBAQAogIlxuIgogIiAgICAgICAgICAg6Ofs5e247TogIgogCi0jOiBtZW1saW5lLmM6MTUyNQorIzogbWVtbGluZS5jOjE1MjYKIG1zZ2lkICJZRVMiCiBtc2dzdHIgIsTAIgogCi0jOiBtZW1saW5lLmM6MTUyNQorIzogbWVtbGluZS5jOjE1MjYKIG1zZ2lkICJubyIKIG1zZ3N0ciAi7eXyIgogCi0jOiBtZW1saW5lLmM6MTUyOQorIzogbWVtbGluZS5jOjE1MzAKIG1zZ2lkICIiCiAiXG4iCiAiICAgICAgICAgdXNlciBuYW1lOiAiCkBAIC0zODE1LDExICszODI0LDExIEBACiAiXG4iCiAiICAgICAg7+7r/Ofu4uDy5ev8OiAiCiAKLSM6IG1lbWxpbmUuYzoxNTM2CisjOiBtZW1saW5lLmM6MTUzNwogbXNnaWQgIiAgIGhvc3QgbmFtZTogIgogbXNnc3RyICIgIOru7O/8/vLl8DogIgogCi0jOiBtZW1saW5lLmM6MTUzOAorIzogbWVtbGluZS5jOjE1MzkKIG1zZ2lkICIiCiAiXG4iCiAiICAgICAgICAgaG9zdCBuYW1lOiAiCkBAIC0zODI3LDcgKzM4MzYsNyBAQAogIlxuIgogIiAgICAgICAgIOru7O/8/vLl8DogIgogCi0jOiBtZW1saW5lLmM6MTU0NAorIzogbWVtbGluZS5jOjE1NDUKIG1zZ2lkICIiCiAiXG4iCiAiICAgICAgICBwcm9jZXNzIElEOiAiCkBAIC0zODM1LDExICszODQ0LDExIEBACiAiXG4iCiAiICAgICAgICAgICDv8O725fHxOiAiCiAKLSM6IG1lbWxpbmUuYzoxNTUwCisjOiBtZW1saW5lLmM6MTU1MQogbXNnaWQgIiAoc3RpbGwgcnVubmluZykiCiBtc2dzdHIgIiAo5fm4IOL77+7r7f/l8vH/KSIKIAotIzogbWVtbGluZS5jOjE1NjIKKyM6IG1lbWxpbmUuYzoxNTYzCiBtc2dpZCAiIgogIlxuIgogIiAgICAgICAgIFtub3QgdXNhYmxlIHdpdGggdGhpcyB2ZXJzaW9uIG9mIFZpbV0iCkBAIC0zODQ3LDcgKzM4NTYsNyBAQAogIlxuIgogIiAgICAgICAgIFvt5SDv8Ojj7uTl7SDk6/8g6PHv7uv85+7i4O3o/yDxIOTg7e3u6SDi5fDx6OXpIFZpbV0iCiAKLSM6IG1lbWxpbmUuYzoxNTY1CisjOiBtZW1saW5lLmM6MTU2NgogbXNnaWQgIiIKICJcbiIKICIgICAgICAgICBbbm90IHVzYWJsZSBvbiB0aGlzIGNvbXB1dGVyXSIKQEAgLTM4NTUsOTIgKzM4NjQsOTIgQEAKICJcbiIKICIgICAgICAgICBb7eUg7/Do4+7k5e0g5Ov/IOjx7+7r/Ofu4uDt6P8g7eAg/fLu7CDq7uzv/P7y5fDlXSIKIAotIzogbWVtbGluZS5jOjE1NzAKKyM6IG1lbWxpbmUuYzoxNTcxCiBtc2dpZCAiICAgICAgICAgW2Nhbm5vdCBiZSByZWFkXSIKIG1zZ3N0ciAiICAgICAgICAgW+3lIPfo8uDl8vH/XSIKIAotIzogbWVtbGluZS5jOjE1NzQKKyM6IG1lbWxpbmUuYzoxNTc1CiBtc2dpZCAiICAgICAgICAgW2Nhbm5vdCBiZSBvcGVuZWRdIgogbXNnc3RyICIgICAgICAgICBb7eUg7vLq8Pvi4OXy8f9dIgogCi0jOiBtZW1saW5lLmM6MTc2NAorIzogbWVtbGluZS5jOjE3NjUKIG1zZ2lkICJFMzEzOiBDYW5ub3QgcHJlc2VydmUsIHRoZXJlIGlzIG5vIHN3YXAgZmlsZSIKIG1zZ3N0ciAiRTMxMzogzeXi7ufs7ubt7iDu4e3u4ujy/CDx4u7vLfTg6essIO/u8eru6/zq8yDu7SDt5SDu4e3g8PPm5e0iCiAKLSM6IG1lbWxpbmUuYzoxODE3CisjOiBtZW1saW5lLmM6MTgxOAogbXNnaWQgIkZpbGUgcHJlc2VydmVkIgogbXNnc3RyICLR4u7vLfTg6esg7uHt7uLruO0iCiAKLSM6IG1lbWxpbmUuYzoxODE5CisjOiBtZW1saW5lLmM6MTgyMAogbXNnaWQgIkUzMTQ6IFByZXNlcnZlIGZhaWxlZCIKIG1zZ3N0ciAiRTMxNDogzeXz5OD37eD/IO/u7/vy6uAg7uHt7uLr5e3o/yDx4u7vLfTg6evgIgogCi0jOiBtZW1saW5lLmM6MTg5MAorIzogbWVtbGluZS5jOjE4OTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTMxNTogbWxfZ2V0OiBpbnZhbGlkIGxudW06ICVsZCIKIG1zZ3N0ciAiRTMxNTogbWxfZ2V0OiDt5e/w4OLo6/zt7uUg5+3g9+Xt6OUgbG51bTogJWxkIgogCi0jOiBtZW1saW5lLmM6MTkxNgorIzogbWVtbGluZS5jOjE5MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTMxNjogbWxfZ2V0OiBjYW5ub3QgZmluZCBsaW5lICVsZCIKIG1zZ3N0ciAiRTMxNjogbWxfZ2V0OiDt5eLu5+zu5u3uIO3g6fLoIPHy8O7q8yAlbGQiCiAKLSM6IG1lbWxpbmUuYzoyMzA2CisjOiBtZW1saW5lLmM6MjMwNwogbXNnaWQgIkUzMTc6IHBvaW50ZXIgYmxvY2sgaWQgd3JvbmcgMyIKIG1zZ3N0ciAi7eXv8ODi6Ov87e7lIOft4Pfl7ejlIPPq4Ofg8uXr/yDh6+7q4CAzIgogCi0jOiBtZW1saW5lLmM6MjM4NgorIzogbWVtbGluZS5jOjIzODcKIG1zZ2lkICJzdGFja19pZHggc2hvdWxkIGJlIDAiCiBtc2dzdHIgIuft4Pfl7ejlIHN0YWNrX2lkeCDk7uvm7e4g4fvy/CDw4OLt7iAwIgogCi0jOiBtZW1saW5lLmM6MjQ0OAorIzogbWVtbGluZS5jOjI0NDkKIG1zZ2lkICJFMzE4OiBVcGRhdGVkIHRvbyBtYW55IGJsb2Nrcz8iCiBtc2dzdHIgIkUzMTg6IM7h7e7i6+Xt7iDx6+j46u7sIOzt7uPuIOHr7uru4j8iCiAKLSM6IG1lbWxpbmUuYzoyNjMwCisjOiBtZW1saW5lLmM6MjYzMQogbXNnaWQgIkUzMTc6IHBvaW50ZXIgYmxvY2sgaWQgd3JvbmcgNCIKIG1zZ3N0ciAiRTMxNzog7eXv8ODi6Ov87e7lIOft4Pfl7ejlIPPq4Ofg8uXr/yDh6+7q4CA0IgogCi0jOiBtZW1saW5lLmM6MjY1NworIzogbWVtbGluZS5jOjI2NTgKIG1zZ2lkICJkZWxldGVkIGJsb2NrIDE/IgogbXNnc3RyICLz5ODruO0g4evu6iAxPyIKIAotIzogbWVtbGluZS5jOjI4NTcKKyM6IG1lbWxpbmUuYzoyODU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUzMjA6IENhbm5vdCBmaW5kIGxpbmUgJWxkIgogbXNnc3RyICJFMzIwOiDR8vDu6uAgJWxkIO3lIO7h7eDw8+bl7eAiCiAKLSM6IG1lbWxpbmUuYzozMTAwCisjOiBtZW1saW5lLmM6MzEwMQogbXNnaWQgIkUzMTc6IHBvaW50ZXIgYmxvY2sgaWQgd3JvbmciCiBtc2dzdHIgIkUzMTc6IO3l7/Dg4ujr/O3u5SDn7eD35e3o5SDz6uDn4PLl6/8g4evu6uAiCiAKLSM6IG1lbWxpbmUuYzozMTE2CisjOiBtZW1saW5lLmM6MzExNwogbXNnaWQgInBlX2xpbmVfY291bnQgaXMgemVybyIKIG1zZ3N0ciAi5+3g9+Xt6OUgcGVfbGluZV9jb3VudCDw4OLt7iDt8+v+IgogCi0jOiBtZW1saW5lLmM6MzE0NQorIzogbWVtbGluZS5jOjMxNDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTMyMjogbGluZSBudW1iZXIgb3V0IG9mIHJhbmdlOiAlbGQgcGFzdCB0aGUgZW5kIgogbXNnc3RyICJFMzIyOiDt7uzl8CDx8vDu6ugg5+Ag7/Dl5OXr4OzoIOTo4O/g5+7t4DogJWxkIgogCi0jOiBtZW1saW5lLmM6MzE0OQorIzogbWVtbGluZS5jOjMxNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTMyMzogbGluZSBjb3VudCB3cm9uZyBpbiBibG9jayAlbGQiCiBtc2dzdHIgIkUzMjM6IO3l7/Dg4ujr/O3u5SDn7eD35e3o5SDx97jy9+jq4CDx8vDu6iDiIOHr7urlICVsZCIKIAotIzogbWVtbGluZS5jOjMxOTgKKyM6IG1lbWxpbmUuYzozMTk5CiBtc2dpZCAiU3RhY2sgc2l6ZSBpbmNyZWFzZXMiCiBtc2dzdHIgItDg5+zl8CDx8uXq4CDz4uXr6Pfl7SIKIAotIzogbWVtbGluZS5jOjMyNDQKKyM6IG1lbWxpbmUuYzozMjQ1CiBtc2dpZCAiRTMxNzogcG9pbnRlciBibG9jayBpZCB3cm9uZyAyIgogbXNnc3RyICJFMzE3OiDt5e/w4OLo6/zt7uUg5+3g9+Xt6OUg8+rg5+Dy5ev/IOHr7urgIDIiCiAKLSM6IG1lbWxpbmUuYzozNjc0CisjOiBtZW1saW5lLmM6MzY3NQogbXNnaWQgIkUzMjU6IEFUVEVOVElPTiIKIG1zZ3N0ciAiRTMyNTogws3IzMDNyMUiCiAKLSM6IG1lbWxpbmUuYzozNjc1CisjOiBtZW1saW5lLmM6MzY3NgogbXNnaWQgIiIKICJcbiIKICJGb3VuZCBhIHN3YXAgZmlsZSBieSB0aGUgbmFtZSBcIiIKQEAgLTM5NDgsMTcgKzM5NTcsMTcgQEAKICJcbiIKICLO4e3g8PPm5e0g8eLu7y304OnrIPEg6Ozl7eXsIFwiIgogCi0jOiBtZW1saW5lLmM6MzY3OQorIzogbWVtbGluZS5jOjM2ODAKIG1zZ2lkICJXaGlsZSBvcGVuaW5nIGZpbGUgXCIiCiBtc2dzdHIgIs/w6CDu8urw+/Lo6CD04Onr4DogXCIiCiAKLSM6IG1lbWxpbmUuYzozNjg4CisjOiBtZW1saW5lLmM6MzY4OQogbXNnaWQgIiAgICAgIE5FV0VSIHRoYW4gc3dhcCBmaWxlIVxuIgogbXNnc3RyICIgICAgICAgICAgICAgICAgICAgIMHu6+XlINHCxcbIySwg9+XsIPHi7u8t9ODp6yFcbiIKIAogIy4gU29tZSBvZiB0aGVzZSBtZXNzYWdlcyBhcmUgbG9uZyB0byBhbGxvdyB0cmFuc2xhdGlvbiB0bwogIy4gKiBvdGhlciBsYW5ndWFnZXMuCi0jOiBtZW1saW5lLmM6MzY5MgorIzogbWVtbGluZS5jOjM2OTMKIG1zZ2lkICIiCiAiXG4iCiAiKDEpIEFub3RoZXIgcHJvZ3JhbSBtYXkgYmUgZWRpdGluZyB0aGUgc2FtZSBmaWxlLlxuIgpAQCAtMzk3MCwxMSArMzk3OSwxMSBAQAogIiAgICDF8evoIP3y7iDy4OosIPLuIOHz5Pzy5SDi7ejs4PLl6/zt+yDv8Ogg4u3l8eXt6Ogg6Ofs5e3l7ejpLFxuIgogIiAgICD38u7h+yDzIOLg8SDt5SDv7v/i6Ovu8fwg5OLgIPDg5+379SDi4PDo4O3y4CDu5O3u4+4g6CDy7uPuIOblIPTg6evgLlxuIgogCi0jOiBtZW1saW5lLmM6MzY5MworIzogbWVtbGluZS5jOjM2OTQKIG1zZ2lkICIgICAgUXVpdCwgb3IgY29udGludWUgd2l0aCBjYXV0aW9uLlxuIgogbXNnc3RyICIgICAgx+Di5fD46PLlIPDg4e7y8yDo6+gg7/Du5O7r5uDp8uUg8SDu8fLu8O7m7e7x8vz+LlxuIgogCi0jOiBtZW1saW5lLmM6MzY5NAorIzogbWVtbGluZS5jOjM2OTUKIG1zZ2lkICIiCiAiXG4iCiAiKDIpIEFuIGVkaXQgc2Vzc2lvbiBmb3IgdGhpcyBmaWxlIGNyYXNoZWQuXG4iCkBAIC0zOTgyLDExICszOTkxLDExIEBACiAiXG4iCiAiKDIpIM/w5eT75PP56Okg8eXg7fEg8OXk4Ory6PDu4uDt6P8g/fLu4+4g9ODp6+Ag5+Di5fD4uO0g4OLg8Ojp7e4uXG4iCiAKLSM6IG1lbWxpbmUuYzozNjk1CisjOiBtZW1saW5lLmM6MzY5NgogbXNnaWQgIiAgICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB1c2UgXCI6cmVjb3ZlclwiIG9yIFwidmltIC1yICIKIG1zZ3N0ciAiICAgIMIg/fLu7CDx6/P34OUsIOjx7+7r/Ofz6fLlIOru7ODt5PMgXCI6cmVjb3ZlclwiIOjr6CBcInZpbSAtciAiCiAKLSM6IG1lbWxpbmUuYzozNjk3CisjOiBtZW1saW5lLmM6MzY5OAogbXNnaWQgIiIKICJcIlxuIgogIiAgICB0byByZWNvdmVyIHRoZSBjaGFuZ2VzIChzZWUgXCI6aGVscCByZWNvdmVyeVwiKS5cbiIKQEAgLTM5OTQsMTEgKzQwMDMsMTEgQEAKICJcIlxuIgogIiAgICDk6/8g4u7x8fLg7e7i6+Xt6P8g6Ofs5e3l7ejpICjx7C4gXCI6aGVscCDi7vHx8uDt7uLr5e3o5VwiKS5cbiIKIAotIzogbWVtbGluZS5jOjM2OTgKKyM6IG1lbWxpbmUuYzozNjk5CiBtc2dpZCAiICAgIElmIHlvdSBkaWQgdGhpcyBhbHJlYWR5LCBkZWxldGUgdGhlIHN3YXAgZmlsZSBcIiIKIG1zZ3N0ciAiICAgIMXx6+gg4vsg8+blIOL77+7r7f/r6CD98vMg7u/l8OD26P4sIPPk4Ovo8uUg8eLu7y304OnrIFwiIgogCi0jOiBtZW1saW5lLmM6MzcwMAorIzogbWVtbGluZS5jOjM3MDEKIG1zZ2lkICIiCiAiXCJcbiIKICIgICAgdG8gYXZvaWQgdGhpcyBtZXNzYWdlLlxuIgpAQCAtNDAwNiwyMyArNDAxNSwyMyBAQAogIlwiXG4iCiAiICAgIPfy7uH7IOjn4eXm4PL8IO/u/+Lr5e3o/yD98u7j7iDx7u7h+eXt6P8g4iDh8+Tz+eXsLlxuIgogCi0jOiBtZW1saW5lLmM6MzcxNCBtZW1saW5lLmM6MzcxOAorIzogbWVtbGluZS5jOjM3MTUgbWVtbGluZS5jOjM3MTkKIG1zZ2lkICJTd2FwIGZpbGUgXCIiCiBtc2dzdHIgItHi7u8t9ODp6yBcIiIKIAotIzogbWVtbGluZS5jOjM3MTUgbWVtbGluZS5jOjM3MjEKKyM6IG1lbWxpbmUuYzozNzE2IG1lbWxpbmUuYzozNzIyCiBtc2dpZCAiXCIgYWxyZWFkeSBleGlzdHMhIgogbXNnc3RyICJcIiDz5uUg8fP55fHy4vPl8iEiCiAKLSM6IG1lbWxpbmUuYzozNzI0CisjOiBtZW1saW5lLmM6MzcyNQogbXNnaWQgIlZJTSAtIEFUVEVOVElPTiIKIG1zZ3N0ciAiVklNIC0gws3IzMDNyMUiCiAKLSM6IG1lbWxpbmUuYzozNzI2CisjOiBtZW1saW5lLmM6MzcyNwogbXNnaWQgIlN3YXAgZmlsZSBhbHJlYWR5IGV4aXN0cyEiCiBtc2dzdHIgItHi7u8t9ODp6yDz5uUg8fP55fHy4vPl8iEiCiAKLSM6IG1lbWxpbmUuYzozNzMwCisjOiBtZW1saW5lLmM6MzczMQogbXNnaWQgIiIKICImT3BlbiBSZWFkLU9ubHlcbiIKICImRWRpdCBhbnl3YXlcbiIKQEAgLTQwMzYsNyArNDA0NSw3IEBACiAiJlEgwvv17uRcbiIKICImQSDP8OXw4uDy/CIKIAotIzogbWVtbGluZS5jOjM3MzIKKyM6IG1lbWxpbmUuYzozNzMzCiBtc2dpZCAiIgogIiZPcGVuIFJlYWQtT25seVxuIgogIiZFZGl0IGFueXdheVxuIgpAQCAtNDA1Miw3ICs0MDYxLDcgQEAKICImQSDP8OXw4uDy/FxuIgogIiZEINPk4Ovo8vwiCiAKLSM6IG1lbWxpbmUuYzozNzg5CisjOiBtZW1saW5lLmM6Mzc5MAogbXNnaWQgIkUzMjY6IFRvbyBtYW55IHN3YXAgZmlsZXMgZm91bmQiCiBtc2dzdHIgIkUzMjY6IM7h7eDw8+bl7e4g8evo+Oru7CDs7e7j7iDx4u7vLfTg6evu4iIKIApAQCAtNDE2MCwxMSArNDE2OSwxMSBAQAogbXNnaWQgIiAoUkVUOiBsaW5lLCBTUEFDRTogcGFnZSwgZDogaGFsZiBwYWdlLCBxOiBxdWl0KSIKIG1zZ3N0ciAiIChSRVQ6IPHy8O7q4CwgU1BBQ0U6IPHy8ODt6PbgLCBkOiDv7uvx8vDg7ej2+ywgcTog4vv17uQpIgogCi0jOiBtZXNzYWdlLmM6Mjk3NiBtZXNzYWdlLmM6Mjk5MQorIzogbWVzc2FnZS5jOjI5ODIgbWVzc2FnZS5jOjI5OTcKIG1zZ2lkICJRdWVzdGlvbiIKIG1zZ3N0ciAiwu7v8O7xIgogCi0jOiBtZXNzYWdlLmM6Mjk3OAorIzogbWVzc2FnZS5jOjI5ODQKIG1zZ2lkICIiCiAiJlllc1xuIgogIiZObyIKQEAgLTQxNzIsNyArNDE4MSw3IEBACiAiJsTgXG4iCiAiJs3l8iIKIAotIzogbWVzc2FnZS5jOjMwMTEKKyM6IG1lc3NhZ2UuYzozMDE3CiBtc2dpZCAiIgogIiZZZXNcbiIKICImTm9cbiIKQEAgLTQxODYsMTYgKzQxOTUsMTYgQEAKICImz+7y5fD/8vwg4vHlXG4iCiAiziby7OXt4CIKIAotIzogbWVzc2FnZS5jOjMwNTIKKyM6IG1lc3NhZ2UuYzozMDU4CiBtc2dpZCAiU2F2ZSBGaWxlIGRpYWxvZyIKIG1zZ3N0ciAi0e718ODt5e3o5SD04Onr4CIKIAotIzogbWVzc2FnZS5jOjMwNTQKKyM6IG1lc3NhZ2UuYzozMDYwCiBtc2dpZCAiT3BlbiBGaWxlIGRpYWxvZyIKIG1zZ3N0ciAizvLq8Pvy6OUg9ODp6+AiCiAKICMuIFRPRE86IG5vbi1HVUkgZmlsZSBzZWxlY3RvciBoZXJlCi0jOiBtZXNzYWdlLmM6MzEyNQorIzogbWVzc2FnZS5jOjMxMzEKIG1zZ2lkICJFMzM4OiBTb3JyeSwgbm8gZmlsZSBicm93c2VyIGluIGNvbnNvbGUgbW9kZSIKIG1zZ3N0ciAiIgogIkUzMzg6IMjn4ujt6PLlLCDt7iDiIOru7fHu6/zt7uwg8OXm6OzlIO3l8iDv8O7i7uTt6OrgIO/uIPTg6evu4u7pIPHo8fLl7OUiCkBAIC00Mzc0LDM2ICs0MzgzLDM2IEBACiBtc2dpZCAiRTY1ODogTmV0QmVhbnMgY29ubmVjdGlvbiBsb3N0IGZvciBidWZmZXIgJWxkIgogbXNnc3RyICJFNjU4OiDP7vLl8P/t7iDx7uXk6O3l7ejlIPEgTmV0QmVhbnMg5Ov/IOHz9OXw4CAlbGQiCiAKLSM6IG5vcm1hbC5jOjI5ODAKKyM6IG5vcm1hbC5jOjI5ODMKIG1zZ2lkICJXYXJuaW5nOiB0ZXJtaW5hbCBjYW5ub3QgaGlnaGxpZ2h0IgogbXNnc3RyICLP8OXk8+/w5ebk5e3o5Tog8uXw7Ojt4Osg7eUg7O7m5fIg4vvv7uvt//L8IO/u5PHi5fLq8yIKIAotIzogbm9ybWFsLmM6MzI3NgorIzogbm9ybWFsLmM6MzI3OQogbXNnaWQgIkUzNDg6IE5vIHN0cmluZyB1bmRlciBjdXJzb3IiCiBtc2dzdHIgIkUzNDg6IM3l8iDx8vDu6ugg4iDv7ufo9ujoIOrz8PHu8OAiCiAKLSM6IG5vcm1hbC5jOjMyNzgKKyM6IG5vcm1hbC5jOjMyODEKIG1zZ2lkICJFMzQ5OiBObyBpZGVudGlmaWVyIHVuZGVyIGN1cnNvciIKIG1zZ3N0ciAiRTM0OTogzeXyIOjs5e3oIOIg7+7n6Pbo6CDq8/Dx7vDgIgogCi0jOiBub3JtYWwuYzo0NTE5CisjOiBub3JtYWwuYzo0NTIyCiBtc2dpZCAiRTM1MjogQ2Fubm90IGVyYXNlIGZvbGRzIHdpdGggY3VycmVudCAnZm9sZG1ldGhvZCciCiBtc2dzdHIgIiIKICJFMzUyOiDN5eLu5+zu5u3uIPHy5fDl8vwg8err4OTq6CDxIPLl6vP56Owg5+3g9+Xt6OXsIO7v9ujoICdmb2xkbWV0aG9kJyIKIAotIzogbm9ybWFsLmM6Njc0MAorIzogbm9ybWFsLmM6Njc0MwogbXNnaWQgIkU2NjQ6IGNoYW5nZWxpc3QgaXMgZW1wdHkiCiBtc2dzdHIgIkU2NjQ6IPHv6PHu6iDo5+zl7eXt6Okg7/Px8u7pIgogCi0jOiBub3JtYWwuYzo2NzQyCisjOiBub3JtYWwuYzo2NzQ1CiBtc2dpZCAiRTY2MjogQXQgc3RhcnQgb2YgY2hhbmdlbGlzdCIKIG1zZ3N0ciAiRTY2MjogwiDt4Pfg6+Ug8e/o8ergIOjn7OXt5e3o6SIKIAotIzogbm9ybWFsLmM6Njc0NAorIzogbm9ybWFsLmM6Njc0NwogbXNnaWQgIkU2NjM6IEF0IGVuZCBvZiBjaGFuZ2VsaXN0IgogbXNnc3RyICJFNjYyOiDCIOru7fblIPHv6PHq4CDo5+zl7eXt6OkiCiAKLSM6IG5vcm1hbC5jOjgwMDUKKyM6IG5vcm1hbC5jOjgwMDkKIG1zZ2lkICJUeXBlICA6cXVpdDxFbnRlcj4gIHRvIGV4aXQgVmltIgogbXNnc3RyICLC4uXk6PLlIDpxdWl0PEVudGVyPiAg5Ov/IOL79e7k4CDo5yBWaW0iCiAKQEAgLTQ0NDIsNDAgKzQ0NTEsNDAgQEAKIG1zZ3N0ciAiyOfs5e3l7fsg7vLx8vPv+yDiIPHy8O7q4PUgKCVsZCkgIgogCiAjLiBtdXN0IGRpc3BsYXkgdGhlIHByb21wdAotIzogb3BzLmM6MTY3NQorIzogb3BzLmM6MTY4OAogbXNnaWQgImNhbm5vdCB5YW5rOyBkZWxldGUgYW55d2F5IgogbXNnc3RyICLx6u7v6PDu4uDy/CDt5SDz5ODr7vH8LCDz5ODr5e3o5SDi++/u6+3l7e4iCiAKLSM6IG9wcy5jOjIyNjEKKyM6IG9wcy5jOjIyNzQKIG1zZ2lkICIxIGxpbmUgY2hhbmdlZCIKIG1zZ3N0ciAi6Ofs5e3l7eAgMSDx8vDu6uAiCiAKLSM6IG9wcy5jOjIyNjMKKyM6IG9wcy5jOjIyNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWxkIGxpbmVzIGNoYW5nZWQiCiBtc2dzdHIgIujn7OXt5e3uIPHy8O7qOiAlbGQiCiAKLSM6IG9wcy5jOjI2NDcKKyM6IG9wcy5jOjI2NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiZnJlZWluZyAlbGQgbGluZXMiCiBtc2dzdHIgIu736Pnl7e4g8fLw7uo6ICVsZCIKIAotIzogb3BzLmM6MjkyOAorIzogb3BzLmM6Mjk0MQogbXNnaWQgIjEgbGluZSB5YW5rZWQiCiBtc2dzdHIgIvHq7u/o8O7i4O3gIO7k7eAg8fLw7urgIgogCi0jOiBvcHMuYzoyOTMwCisjOiBvcHMuYzoyOTQzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVsZCBsaW5lcyB5YW5rZWQiCiBtc2dzdHIgIvHq7u/o8O7i4O3uIPHy8O7qOiAlbGQiCiAKLSM6IG9wcy5jOjMyMTUKKyM6IG9wcy5jOjMyMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM1MzogTm90aGluZyBpbiByZWdpc3RlciAlcyIKIG1zZ3N0ciAiRTM1MzogwiDw5ePo8fLw5SAlcyDt6Pfl4+4g7eXyIgogCiAjLiBIaWdobGlnaHQgdGl0bGUKLSM6IG9wcy5jOjM3NjYKKyM6IG9wcy5jOjM3NzkKIG1zZ2lkICIiCiAiXG4iCiAiLS0tIFJlZ2lzdGVycyAtLS0iCkBAIC00NDgzLDExICs0NDkyLDExIEBACiAiXG4iCiAiLS0tINDl4+jx8vD7IC0tLSIKIAotIzogb3BzLmM6NTA3NQorIzogb3BzLmM6NTA4OAogbXNnaWQgIklsbGVnYWwgcmVnaXN0ZXIgbmFtZSIKIG1zZ3N0ciAizeXk7u/z8fLo7O7lIOjs/yDw5ePo8fLw4CIKIAotIzogb3BzLmM6NTE2MworIzogb3BzLmM6NTE3NgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC00NDk2LDMyICs0NTA1LDMyIEBACiAiXG4iCiAiIyDQ5ePo8fLw+zpcbiIKIAotIzogb3BzLmM6NTIxMworIzogb3BzLmM6NTIyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJFNTc0OiBVbmtub3duIHJlZ2lzdGVyIHR5cGUgJWQiCiBtc2dzdHIgIkU1NzQ6IM3l6Ofi5fHy7fvpIPLo7yDw5ePo8fLw4CAlZCIKIAotIzogb3BzLmM6NTY5OAorIzogb3BzLmM6NTcxMQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzU0OiBJbnZhbGlkIHJlZ2lzdGVyIG5hbWU6ICclcyciCiBtc2dzdHIgIkUzNTQ6IM3l5O7v8/Hy6Ozu5SDo7P8g8OXj6PHy8OA6ICclcyciCiAKLSM6IG9wcy5jOjYwNTgKKyM6IG9wcy5jOjYwNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWxkIENvbHM7ICIKIG1zZ3N0ciAiyu7r7u3u6jogJWxkOyAiCiAKLSM6IG9wcy5jOjYwNjUKKyM6IG9wcy5jOjYwNzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2VsZWN0ZWQgJXMlbGQgb2YgJWxkIExpbmVzOyAlbGQgb2YgJWxkIFdvcmRzOyAlbGQgb2YgJWxkIEJ5dGVzIgogbXNnc3RyICLC++Tl6+Xt7iAlcyVsZCDo5yAlbGQg8fLw7uo7ICVsZCDo5yAlbGQg8evu4jsgJWxkIOjnICVsZCDh4OnyIgogCi0jOiBvcHMuYzo2MDgxCisjOiBvcHMuYzo2MDk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbCAlcyBvZiAlczsgTGluZSAlbGQgb2YgJWxkOyBXb3JkICVsZCBvZiAlbGQ7IEJ5dGUgJWxkIG9mICVsZCIKIG1zZ3N0ciAiyu7rLiAlcyDo5yAlczsgIPHy8C4gJWxkIOjnICVsZDsg8evu4u4gJWxkIOjnICVsZDsg4eDp8iAlbGQg6OcgJWxkIgogCi0jOiBvcHMuYzo2MDkyCisjOiBvcHMuYzo2MTA1CiAjLCBjLWZvcm1hdAogbXNnaWQgIigrJWxkIGZvciBCT00pIgogbXNnc3RyICIoKyVsZCDxIPP3uPLu7CBCT00pIgpAQCAtNDY0OCw0NyArNDY1Nyw0NyBAQAogIkU1Mzc6IMft4Pfl7ejlIO7v9uj/ICdjb21tZW50c3RyaW5nJyDk7uvm7e4g4fvy/CDv8/Hy7ukg8fLw7uru6SDo6+ggIgogIvHu5OXw5uDy/CAlcyIKIAotIzogb3B0aW9uLmM6NTY3OQorIzogb3B0aW9uLmM6NTY4MgogbXNnaWQgIkU1Mzg6IE5vIG1vdXNlIHN1cHBvcnQiCiBtc2dzdHIgIkU1Mzg6IMz7+Pwg7eUg7+7k5OXw5uji4OXy8f8iCiAKLSM6IG9wdGlvbi5jOjU5NDcKKyM6IG9wdGlvbi5jOjU5NTAKIG1zZ2lkICJFNTQwOiBVbmNsb3NlZCBleHByZXNzaW9uIHNlcXVlbmNlIgogbXNnc3RyICJFNTQwOiDN5efg6vD78uD/IO/u8evl5O7i4PLl6/zt7vHy/CDi+/Dg5uXt6P8iCiAKLSM6IG9wdGlvbi5jOjU5NTEKKyM6IG9wdGlvbi5jOjU5NTQKIG1zZ2lkICJFNTQxOiB0b28gbWFueSBpdGVtcyIKIG1zZ3N0ciAiRTU0MTog8evo+Oru7CDs7e7j7iD96+Xs5e3y7uIiCiAKLSM6IG9wdGlvbi5jOjU5NTMKKyM6IG9wdGlvbi5jOjU5NTYKIG1zZ2lkICJFNTQyOiB1bmJhbGFuY2VkIGdyb3VwcyIKIG1zZ3N0ciAiRTU0Mjog7eXx4eDr4O3x6PDu4uDt7fvlIOPw8+/v+yIKIAotIzogb3B0aW9uLmM6NjE5MworIzogb3B0aW9uLmM6NjE5NgogbXNnaWQgIkU1OTA6IEEgcHJldmlldyB3aW5kb3cgYWxyZWFkeSBleGlzdHMiCiBtc2dzdHIgIkU1OTA6IM7q7e4g7/Dl5O/w7vHs7vLw4CDz5uUg5fHy/CIKIAotIzogb3B0aW9uLmM6NjQ1MAorIzogb3B0aW9uLmM6NjQ1MwogbXNnaWQgIlcxNzogQXJhYmljIHJlcXVpcmVzIFVURi04LCBkbyAnOnNldCBlbmNvZGluZz11dGYtOCciCiBtc2dzdHIgIiIKICJXMTc6IMDw4OHx6ujpIPLw5eHz5fIg6PHv7uv85+7i4O3o/yBVVEYtOCwg4uLl5Ojy5SAnOnNldCBlbmNvZGluZz11dGYtOCciCiAKLSM6IG9wdGlvbi5jOjY3ODMKKyM6IG9wdGlvbi5jOjY3ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTU5MzogTmVlZCBhdCBsZWFzdCAlZCBsaW5lcyIKIG1zZ3N0ciAiRTU5MzogzfPm7e4g9e7y/yDh+yAlZCDx8vDu6iIKIAotIzogb3B0aW9uLmM6Njc5MworIzogb3B0aW9uLmM6Njc5NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFNTk0OiBOZWVkIGF0IGxlYXN0ICVkIGNvbHVtbnMiCiBtc2dzdHIgIkU1OTQ6IM3z5u3uIPXu8v8g4fsgJWQg6u7r7u3u6iIKIAotIzogb3B0aW9uLmM6NzEwMAorIzogb3B0aW9uLmM6NzEwMwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzU1OiBVbmtub3duIG9wdGlvbjogJXMiCiBtc2dzdHIgIkUzNTU6IM3l6Ofi5fHy7eD/IO7v9uj/OiAlcyIKIAotIzogb3B0aW9uLmM6NzIyMAorIzogb3B0aW9uLmM6NzIyMwogbXNnaWQgIiIKICJcbiIKICItLS0gVGVybWluYWwgY29kZXMgLS0tIgpAQCAtNDY5Niw3ICs0NzA1LDcgQEAKICJcbiIKICItLS0g0uXw7Ojt4Ov87fvlIOru5PsgLS0tIgogCi0jOiBvcHRpb24uYzo3MjIyCisjOiBvcHRpb24uYzo3MjI1CiBtc2dpZCAiIgogIlxuIgogIi0tLSBHbG9iYWwgb3B0aW9uIHZhbHVlcyAtLS0iCkBAIC00NzA0LDcgKzQ3MTMsNyBAQAogIlxuIgogIi0tLSDD6+7h4Ov87fvlIOft4Pfl7ej/IO7v9ujpIC0tLSIKIAotIzogb3B0aW9uLmM6NzIyNAorIzogb3B0aW9uLmM6NzIyNwogbXNnaWQgIiIKICJcbiIKICItLS0gTG9jYWwgb3B0aW9uIHZhbHVlcyAtLS0iCkBAIC00NzEyLDcgKzQ3MjEsNyBAQAogIlxuIgogIi0tLSDM5fHy7fvlIOft4Pfl7ej/IO7v9ujpIC0tLSIKIAotIzogb3B0aW9uLmM6NzIyNgorIzogb3B0aW9uLmM6NzIyOQogbXNnaWQgIiIKICJcbiIKICItLS0gT3B0aW9ucyAtLS0iCkBAIC00NzIwLDE2ICs0NzI5LDE2IEBACiAiXG4iCiAiLS0tIM7v9ujoIC0tLSIKIAotIzogb3B0aW9uLmM6NzkzMgorIzogb3B0aW9uLmM6NzkzNQogbXNnaWQgIkUzNTY6IGdldF92YXJwIEVSUk9SIgogbXNnc3RyICJFMzU2OiDO2MjBysAgZ2V0X3ZhcnAiCiAKLSM6IG9wdGlvbi5jOjg5MDMKKyM6IG9wdGlvbi5jOjg5MDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM1NzogJ2xhbmdtYXAnOiBNYXRjaGluZyBjaGFyYWN0ZXIgbWlzc2luZyBmb3IgJXMiCiBtc2dzdHIgIkUzNTc6ICdsYW5nbWFwJzogzeXyIPHu7vLi5fLx8uLz/vnl4+4g8ejs4u7r4CDk6/8gJXMiCiAKLSM6IG9wdGlvbi5jOjg5MzcKKyM6IG9wdGlvbi5jOjg5NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM1ODogJ2xhbmdtYXAnOiBFeHRyYSBjaGFyYWN0ZXJzIGFmdGVyIHNlbWljb2xvbjogJXMiCiBtc2dzdHIgIkUzNTg6ICdsYW5nbWFwJzogy+j47ejlIPHo7OLu6/sg7+7x6+Ug8u736ugg8SDn4O//8u7pOiAlcyIKQEAgLTQ3NjQsODEgKzQ3NzMsODEgQEAKIG1zZ2lkICJWaW0gZXhpdGluZyB3aXRoICVkXG4iCiBtc2dzdHIgIs/w5erw4Pnl7ejlIPDg4e7y+yBWaW0g8SDq7uTu7CAlZFxuIgogCi0jOiBvc19hbWlnYS5jOjkzNworIzogb3NfYW1pZ2EuYzo5NDEKIG1zZ2lkICJjYW5ub3QgY2hhbmdlIGNvbnNvbGUgbW9kZSA/IVxuIgogbXNnc3RyICLt5eLu5+zu5u3uIPHs5e3o8vwg8OXm6Owg6u7t8e7r6D8hXG4iCiAKLSM6IG9zX2FtaWdhLmM6MTAwMworIzogb3NfYW1pZ2EuYzoxMDEyCiBtc2dpZCAibWNoX2dldF9zaGVsbHNpemU6IG5vdCBhIGNvbnNvbGU/P1xuIgogbXNnc3RyICJtY2hfZ2V0X3NoZWxsc2l6ZTog7eUg4iDq7u3x7uvoPz9cbiIKIAogIy4gaWYgVmltIG9wZW5lZCBhIHdpbmRvdzogRXhlY3V0aW5nIGEgc2hlbGwgbWF5IGNhdXNlIGNyYXNoZXMKLSM6IG9zX2FtaWdhLmM6MTE1MgorIzogb3NfYW1pZ2EuYzoxMTYxCiBtc2dpZCAiRTM2MDogQ2Fubm90IGV4ZWN1dGUgc2hlbGwgd2l0aCAtZiBvcHRpb24iCiBtc2dzdHIgIkUzNjA6IM3l4u7n7O7m7e4g4vvv7uvt6PL8IO7h7uvu9+rzIPEg4PDj8+zl7fLu7CAtZiIKIAotIzogb3NfYW1pZ2EuYzoxMTkzIG9zX2FtaWdhLmM6MTI4MworIzogb3NfYW1pZ2EuYzoxMjAyIG9zX2FtaWdhLmM6MTI5MgogbXNnaWQgIkNhbm5vdCBleGVjdXRlICIKIG1zZ3N0ciAizeXi7ufs7ubt7iDi++/u6+3o8vwgIgogCi0jOiBvc19hbWlnYS5jOjExOTYgb3NfYW1pZ2EuYzoxMjkzCisjOiBvc19hbWlnYS5jOjEyMDUgb3NfYW1pZ2EuYzoxMzAyCiBtc2dpZCAic2hlbGwgIgogbXNnc3RyICLu4e7r7vfq4CAiCiAKLSM6IG9zX2FtaWdhLmM6MTIxNiBvc19hbWlnYS5jOjEzMTgKKyM6IG9zX2FtaWdhLmM6MTIyNSBvc19hbWlnYS5jOjEzMjcKIG1zZ2lkICIgcmV0dXJuZWRcbiIKIG1zZ3N0ciAiIOfg4uXw+Ojr4CDw4OHu8vNcbiIKIAotIzogb3NfYW1pZ2EuYzoxNDU5CisjOiBvc19hbWlnYS5jOjE0NjgKIG1zZ2lkICJBTkNIT1JfQlVGX1NJWkUgdG9vIHNtYWxsLiIKIG1zZ3N0ciAi8evo+Oru7CDs4Ovg/yDi5evo9+jt4CBBTkNIT1JfQlVGX1NJWkUuIgogCi0jOiBvc19hbWlnYS5jOjE0NjMKKyM6IG9zX2FtaWdhLmM6MTQ3MgogbXNnaWQgIkkvTyBFUlJPUiIKIG1zZ3N0ciAiztjIwcrAIMLCzsTAL8Lbws7EwCIKIAotIzogb3NfbXN3aW4uYzo1MzkKKyM6IG9zX21zd2luLmM6NTQ4CiBtc2dpZCAiLi4uKHRydW5jYXRlZCkiCiBtc2dzdHIgIi4uLiju4fDl5+Dt7ikiCiAKLSM6IG9zX21zd2luLmM6NjQxCisjOiBvc19tc3dpbi5jOjY1MAogbXNnaWQgIidjb2x1bW5zJyBpcyBub3QgODAsIGNhbm5vdCBleGVjdXRlIGV4dGVybmFsIGNvbW1hbmRzIgogbXNnc3RyICLH7eD35e3o5SDu7/bo6CAnY29sdW1ucycg7eUg8ODi7e4gODAsIOLt5fjt6OUg7/Du4/Dg7Oz7IO3lIOL77+7r7f/+8vH/IgogCi0jOiBvc19tc3dpbi5jOjE5NzMKKyM6IG9zX21zd2luLmM6MTk4MgogbXNnaWQgIkUyMzc6IFByaW50ZXIgc2VsZWN0aW9uIGZhaWxlZCIKIG1zZ3N0ciAiRTMyNzogzeXz5OD37e7lIOfg4uXw+OXt6OUg4vvh7vDgIO/w6O3y5fDgIgogCi0jOiBvc19tc3dpbi5jOjIwMTMKKyM6IG9zX21zd2luLmM6MjAyMgogIywgYy1mb3JtYXQKIG1zZ2lkICJ0byAlcyBvbiAlcyIKIG1zZ3N0ciAi4iAlcyDt4CAlcyIKIAotIzogb3NfbXN3aW4uYzoyMDI4CisjOiBvc19tc3dpbi5jOjIwMzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTYxMzogVW5rbm93biBwcmludGVyIGZvbnQ6ICVzIgogbXNnc3RyICJFNjEzOiDN5ejn4uXx8u376SD48Oj08iDv8Ojt8uXw4DogJXMiCiAKLSM6IG9zX21zd2luLmM6MjA3NyBvc19tc3dpbi5jOjIwODcKKyM6IG9zX21zd2luLmM6MjA4NiBvc19tc3dpbi5jOjIwOTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTIzODogUHJpbnQgZXJyb3I6ICVzIgogbXNnc3RyICJFMjM4OiDO+Ojh6uAg7+X34PLoOiAlcyIKIAotIzogb3NfbXN3aW4uYzoyMDg4CisjOiBvc19tc3dpbi5jOjIwOTcKIG1zZ2lkICJVbmtub3duIgogbXNnc3RyICLN5ejn4uXx8u3uIgogCi0jOiBvc19tc3dpbi5jOjIxMTUKKyM6IG9zX21zd2luLmM6MjEyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJQcmludGluZyAnJXMnIgogbXNnc3RyICLP5ffg8vwgJyVzJyIKIAotIzogb3NfbXN3aW4uYzozMjA0CisjOiBvc19tc3dpbi5jOjMyMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTI0NDogSWxsZWdhbCBjaGFyc2V0IG5hbWUgXCIlc1wiIGluIGZvbnQgbmFtZSBcIiVzXCIiCiBtc2dzdHIgIkUyNDQ6IM3l5O7v8/Hy6Ozu5SDo7P8g6u7k6PDu4uroIFwiJXNcIiDiIOjs5e3oIPjw6PTy4CBcIiVzXCIiCiAKLSM6IG9zX21zd2luLmM6MzIxMgorIzogb3NfbXN3aW4uYzozMjIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyNDU6IElsbGVnYWwgY2hhciAnJWMnIGluIGZvbnQgbmFtZSBcIiVzXCIiCiBtc2dzdHIgIkUyNDU6IM3l5O7v8/Hy6Oz76SDx6Ozi7usgJyVjJyDiIOjs5e3oIPjw6PTy4CBcIiVzXCIiCkBAIC00ODc0LDE1ICs0ODgzLDE1IEBACiAiXG4iCiAiVmltOiDO+Ojh6uAgWFxuIgogCi0jOiBvc191bml4LmM6MTMzNAorIzogb3NfdW5peC5jOjEzMzgKIG1zZ2lkICJUZXN0aW5nIHRoZSBYIGRpc3BsYXkgZmFpbGVkIgogbXNnc3RyICLP8O7i5fDq4CDk6PHv6+X/IFgg5+Di5fD45e3gIO3l8+Tg9+3uIgogCi0jOiBvc191bml4LmM6MTQ3MworIzogb3NfdW5peC5jOjE0NzcKIG1zZ2lkICJPcGVuaW5nIHRoZSBYIGRpc3BsYXkgdGltZWQgb3V0IgogbXNnc3RyICLO8urw+/Lo5SDk6PHv6+X/IFgg7eUg4vvv7uvt5e3uIOIg7vLi5eS47e3u5SDi8OXs/yIKIAotIzogb3NfdW5peC5jOjMyMjcgb3NfdW5peC5jOjM5MDcKKyM6IG9zX3VuaXguYzozMjM0IG9zX3VuaXguYzozOTE0CiBtc2dpZCAiIgogIlxuIgogIkNhbm5vdCBleGVjdXRlIHNoZWxsICIKQEAgLTQ4OTAsNyArNDg5OSw3IEBACiAiXG4iCiAizeXi7ufs7ubt7iDn4O/z8fLo8vwg7uHu6+736vMgIgogCi0jOiBvc191bml4LmM6MzI3NQorIzogb3NfdW5peC5jOjMyODIKIG1zZ2lkICIiCiAiXG4iCiAiQ2Fubm90IGV4ZWN1dGUgc2hlbGwgc2hcbiIKQEAgLTQ4OTgsNyArNDkwNyw3IEBACiAiXG4iCiAizeXi7ufs7ubt7iDn4O/z8fLo8vwg7uHu6+736vMgc2hcbiIKIAotIzogb3NfdW5peC5jOjMyNzkgb3NfdW5peC5jOjM5MTMKKyM6IG9zX3VuaXguYzozMjg2IG9zX3VuaXguYzozOTIwCiBtc2dpZCAiIgogIlxuIgogInNoZWxsIHJldHVybmVkICIKQEAgLTQ5MDYsNyArNDkxNSw3IEBACiAiXG4iCiAizuHu6+736uAg5+Di5fD46OvgIPDg4e7y8yAiCiAKLSM6IG9zX3VuaXguYzozNDE0CisjOiBvc191bml4LmM6MzQyMQogbXNnaWQgIiIKICJcbiIKICJDYW5ub3QgY3JlYXRlIHBpcGVzXG4iCkBAIC00OTE0LDcgKzQ5MjMsNyBAQAogIlxuIgogIs3l4u7n7O7m7e4g8e7n5ODy/CDy8PPh+1xuIgogCi0jOiBvc191bml4LmM6MzQyOQorIzogb3NfdW5peC5jOjM0MzYKIG1zZ2lkICIiCiAiXG4iCiAiQ2Fubm90IGZvcmtcbiIKQEAgLTQ5MjIsNyArNDkzMSw3IEBACiAiXG4iCiAizeXi7ufs7ubt7iDi++/u6+3o8vwgZm9yaygpXG4iCiAKLSM6IG9zX3VuaXguYzozOTIwCisjOiBvc191bml4LmM6MzkyNwogbXNnaWQgIiIKICJcbiIKICJDb21tYW5kIHRlcm1pbmF0ZWRcbiIKQEAgLTQ5MzAsMjcgKzQ5MzksMjcgQEAKICJcbiIKICLC++/u6+3l7ejlIOru7ODt5Psg7/Dl8OLg7e5cbiIKIAotIzogb3NfdW5peC5jOjQxODQgb3NfdW5peC5jOjQzMDkgb3NfdW5peC5jOjU5NzUKKyM6IG9zX3VuaXguYzo0MTkxIG9zX3VuaXguYzo0MzE2IG9zX3VuaXguYzo1OTgyCiBtc2dpZCAiWFNNUCBsb3N0IElDRSBjb25uZWN0aW9uIgogbXNnc3RyICJYU01QIPPy5fD/7e4g8e7l5Ojt5e3o5SBJQ0UiCiAKLSM6IG9zX3VuaXguYzo1NTU4CisjOiBvc191bml4LmM6NTU2NQogbXNnaWQgIk9wZW5pbmcgdGhlIFggZGlzcGxheSBmYWlsZWQiCiBtc2dzdHIgIs3l8+Tg9+3u5SDu8urw+/Lo5SDk6PHv6+X/IFgiCiAKLSM6IG9zX3VuaXguYzo1ODgwCisjOiBvc191bml4LmM6NTg4NwogbXNnaWQgIlhTTVAgaGFuZGxpbmcgc2F2ZS15b3Vyc2VsZiByZXF1ZXN0IgogbXNnc3RyICJYU01QIO7h8ODh4PL74uDl8iDn4O/w7vEg8eDs7vHu9fDg7eXt6P8iCiAKLSM6IG9zX3VuaXguYzo1OTk5CisjOiBvc191bml4LmM6NjAwNgogbXNnaWQgIlhTTVAgb3BlbmluZyBjb25uZWN0aW9uIgogbXNnc3RyICJYU01QIO7y6vD74uDl8iDx7uXk6O3l7ejlIgogCi0jOiBvc191bml4LmM6NjAxOAorIzogb3NfdW5peC5jOjYwMjUKIG1zZ2lkICJYU01QIElDRSBjb25uZWN0aW9uIHdhdGNoIGZhaWxlZCIKIG1zZ3N0ciAiWFNNUCDv7vLl8P/t7iDx6+Xm5e3o5SDn4CDx7uXk6O3l7ejl7CBJQ0UiCiAKLSM6IG9zX3VuaXguYzo2MDM4CisjOiBvc191bml4LmM6NjA0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJYU01QIFNtY09wZW5Db25uZWN0aW9uIGZhaWxlZDogJXMiCiBtc2dzdHIgIlhTTVAg7eXz5OD37e4g4vvv7uvt5e3uIFNtY09wZW5Db25uZWN0aW9uOiAlcyIKQEAgLTQ5NzUsMzMgKzQ5ODQsMzMgQEAKIG1zZ2lkICJDb3VsZCBub3QgZml4IHVwIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHRoZSBETEwhIgogbXNnc3RyICLN5eLu5+zu5u3uIOjx7/Dg4ujy/CDz6uDn4PLl6+gg9PPt6vbo6SDk6/8gRExMISIKIAotIzogb3Nfd2luMTYuYzozNDIgb3Nfd2luMzIuYzozMjE2CisjOiBvc193aW4xNi5jOjM0MiBvc193aW4zMi5jOjMyNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAic2hlbGwgcmV0dXJuZWQgJWQiCiBtc2dzdHIgIufg4uXw+OXt6OUg8ODh7vL7IO7h7uvu9+roIPEg6u7k7uwgJWQiCiAKLSM6IG9zX3dpbjMyLmM6MjY3NAorIzogb3Nfd2luMzIuYzoyNzA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlZpbTogQ2F1Z2h0ICVzIGV2ZW50XG4iCiBtc2dzdHIgIlZpbTogz+Xw5fXi4Pfl7e4g8e7h+/Lo5SAlc1xuIgogCi0jOiBvc193aW4zMi5jOjI2NzYKKyM6IG9zX3dpbjMyLmM6MjcwOAogbXNnaWQgImNsb3NlIgogbXNnc3RyICLn4Orw+/Lo5SIKIAotIzogb3Nfd2luMzIuYzoyNjc4CisjOiBvc193aW4zMi5jOjI3MTAKIG1zZ2lkICJsb2dvZmYiCiBtc2dzdHIgIu7y6uv+9+Xt6OUiCiAKLSM6IG9zX3dpbjMyLmM6MjY3OQorIzogb3Nfd2luMzIuYzoyNzExCiBtc2dpZCAic2h1dGRvd24iCiBtc2dzdHIgIufg4uXw+OXt6OUiCiAKLSM6IG9zX3dpbjMyLmM6MzE2OQorIzogb3Nfd2luMzIuYzozMjAxCiBtc2dpZCAiRTM3MTogQ29tbWFuZCBub3QgZm91bmQiCiBtc2dzdHIgIkUzNzE6IMru7ODt5OAg7eUg7eDp5OXt4CIKIAotIzogb3Nfd2luMzIuYzozMTgyCisjOiBvc193aW4zMi5jOjMyMTQKIG1zZ2lkICIiCiAiVklNUlVOLkVYRSBub3QgZm91bmQgaW4geW91ciAkUEFUSC5cbiIKICJFeHRlcm5hbCBjb21tYW5kcyB3aWxsIG5vdCBwYXVzZSBhZnRlciBjb21wbGV0aW9uLlxuIgpAQCAtNTAxMSw3ICs1MDIwLDcgQEAKICLC7eX47ejlIOru7ODt5Psg7eUg4fPk8/Ig7vHy4O3g4uvo4uDy/PH/IO/u8evlIOL77+7r7eXt6P8uXG4iCiAixO7v7uvt6PLl6/zt4P8g6O307vDs4Pbo/yDiIDpoZWxwIHdpbjMyLXZpbXJ1biIKIAotIzogb3Nfd2luMzIuYzozMTg1CisjOiBvc193aW4zMi5jOjMyMTcKIG1zZ2lkICJWaW0gV2FybmluZyIKIG1zZ3N0ciAiz/Dl5PPv8OXm5OXt6OUgVmltIgogCkBAIC01MjE5LDc1ICs1MjI4LDc1IEBACiBtc2dpZCAiKy0tJTNsZCBsaW5lcyBmb2xkZWQgIgogbXNnc3RyICIrLS0lM2xkIPHy8O7qIOIg8err4OTq5SIKIAotIzogc2NyZWVuLmM6Nzk5NgorIzogc2NyZWVuLmM6ODAwMAogbXNnaWQgIiBWUkVQTEFDRSIKIG1zZ3N0ciAiIMLI0NLTwMvczcDfIMfAzMXNwCIKIAotIzogc2NyZWVuLmM6ODAwMAorIzogc2NyZWVuLmM6ODAwNAogbXNnaWQgIiBSRVBMQUNFIgogbXNnc3RyICIgx8DMxc3AIgogCi0jOiBzY3JlZW4uYzo4MDA1CisjOiBzY3JlZW4uYzo4MDA5CiBtc2dpZCAiIFJFVkVSU0UiCiBtc2dzdHIgIiDOwdDA0s3A3yIKIAotIzogc2NyZWVuLmM6ODAwNworIzogc2NyZWVuLmM6ODAxMQogbXNnaWQgIiBJTlNFUlQiCiBtc2dzdHIgIiDC0dLAwsrAIgogCi0jOiBzY3JlZW4uYzo4MDEwCisjOiBzY3JlZW4uYzo4MDE0CiBtc2dpZCAiIChpbnNlcnQpIgogbXNnc3RyICIgKOLx8uDi6uApIgogCi0jOiBzY3JlZW4uYzo4MDEyCisjOiBzY3JlZW4uYzo4MDE2CiBtc2dpZCAiIChyZXBsYWNlKSIKIG1zZ3N0ciAiICjn4Ozl7eApIgogCi0jOiBzY3JlZW4uYzo4MDE0CisjOiBzY3JlZW4uYzo4MDE4CiBtc2dpZCAiICh2cmVwbGFjZSkiCiBtc2dzdHIgIiAo4ujw8vPg6/zt4P8g5+Ds5e3gKSIKIAotIzogc2NyZWVuLmM6ODAxNworIzogc2NyZWVuLmM6ODAyMQogbXNnaWQgIiBIZWJyZXciCiBtc2dzdHIgIiDI4vDo8iIKIAotIzogc2NyZWVuLmM6ODAyOAorIzogc2NyZWVuLmM6ODAzMgogbXNnaWQgIiBBcmFiaWMiCiBtc2dzdHIgIiDA8ODh8ero6SIKIAotIzogc2NyZWVuLmM6ODAzMQorIzogc2NyZWVuLmM6ODAzNQogbXNnaWQgIiAobGFuZykiCiBtc2dzdHIgIiAo/+f76ikiCiAKLSM6IHNjcmVlbi5jOjgwMzUKKyM6IHNjcmVlbi5jOjgwMzkKIG1zZ2lkICIgKHBhc3RlKSIKIG1zZ3N0ciAiICji6uvl6ergKSIKIAotIzogc2NyZWVuLmM6ODA0OAorIzogc2NyZWVuLmM6ODA1MgogbXNnaWQgIiBWSVNVQUwiCiBtc2dzdHIgIiDCyMfTwMvczdvJINDFxsjMIgogCi0jOiBzY3JlZW4uYzo4MDQ5CisjOiBzY3JlZW4uYzo4MDUzCiBtc2dpZCAiIFZJU1VBTCBMSU5FIgogbXNnc3RyICIgwsjH08DL3M3A3yDR0tDOysAiCiAKLSM6IHNjcmVlbi5jOjgwNTAKKyM6IHNjcmVlbi5jOjgwNTQKIG1zZ2lkICIgVklTVUFMIEJMT0NLIgogbXNnc3RyICIgwsjH08DL3M3bySDBy87KIgogCi0jOiBzY3JlZW4uYzo4MDUxCisjOiBzY3JlZW4uYzo4MDU1CiBtc2dpZCAiIFNFTEVDVCIKIG1zZ3N0ciAiIMLbxMXLxc3IxSIKIAotIzogc2NyZWVuLmM6ODA1MgorIzogc2NyZWVuLmM6ODA1NgogbXNnaWQgIiBTRUxFQ1QgTElORSIKIG1zZ3N0ciAiIMLbxMXLxc3IxSDR0tDOysgiCiAKLSM6IHNjcmVlbi5jOjgwNTMKKyM6IHNjcmVlbi5jOjgwNTcKIG1zZ2lkICIgU0VMRUNUIEJMT0NLIgogbXNnc3RyICIgwtvExcvFzcjFIMHLzsrAIgogCi0jOiBzY3JlZW4uYzo4MDY4IHNjcmVlbi5jOjgxMzEKKyM6IHNjcmVlbi5jOjgwNzIgc2NyZWVuLmM6ODEzNQogbXNnaWQgInJlY29yZGluZyIKIG1zZ3N0ciAi5+Dv6PH8IgogCkBAIC01MzE4LDUzICs1MzI3LDUzIEBACiBtc2dpZCAiRTM4NjogRXhwZWN0ZWQgJz8nIG9yICcvJyAgYWZ0ZXIgJzsnIgogbXNnc3RyICJFMzg2OiDP7vHr5SAnOycg7ubo5ODl8vH/IOLi7uQgJz8nIOjr6CAnLyciCiAKLSM6IHNlYXJjaC5jOjM3NTkKKyM6IHNlYXJjaC5jOjM3NjgKIG1zZ2lkICIgKGluY2x1ZGVzIHByZXZpb3VzbHkgbGlzdGVkIG1hdGNoKSIKIG1zZ3N0ciAiICji6uv+9+Dl8iDw4O3t5eUg7+7q4Ofg7e375SDx7u7y4uXy8fLi6P8pIgogCiAjLiBjdXJzb3IgYXQgc3RhdHVzIGxpbmUKLSM6IHNlYXJjaC5jOjM3NzkKKyM6IHNlYXJjaC5jOjM3ODgKIG1zZ2lkICItLS0gSW5jbHVkZWQgZmlsZXMgIgogbXNnc3RyICItLS0gwurr/ve47e375SD04Onr+yAiCiAKLSM6IHNlYXJjaC5jOjM3ODEKKyM6IHNlYXJjaC5jOjM3OTAKIG1zZ2lkICJub3QgZm91bmQgIgogbXNnc3RyICLt5SDt4Onk5e3uICIKIAotIzogc2VhcmNoLmM6Mzc4MgorIzogc2VhcmNoLmM6Mzc5MQogbXNnaWQgImluIHBhdGggLS0tXG4iCiBtc2dzdHIgIu/uIO/z8uggLS0tXG4iCiAKLSM6IHNlYXJjaC5jOjM4MzkKKyM6IHNlYXJjaC5jOjM4NDgKIG1zZ2lkICIgIChBbHJlYWR5IGxpc3RlZCkiCiBtc2dzdHIgIiAo0+blIO/u6uDn4O3uKSIKIAotIzogc2VhcmNoLmM6Mzg0MQorIzogc2VhcmNoLmM6Mzg1MAogbXNnaWQgIiAgTk9UIEZPVU5EIgogbXNnc3RyICIgzcUgzcDJxMXNziIKIAotIzogc2VhcmNoLmM6Mzg5MworIzogc2VhcmNoLmM6MzkwMgogIywgYy1mb3JtYXQKIG1zZ2lkICJTY2FubmluZyBpbmNsdWRlZCBmaWxlOiAlcyIKIG1zZ3N0ciAiz/Du8ezu8vAg4urr/ve47e379SD04Onr7uI6ICVzIgogCi0jOiBzZWFyY2guYzo0MTExCisjOiBzZWFyY2guYzo0MTIwCiBtc2dpZCAiRTM4NzogTWF0Y2ggaXMgb24gY3VycmVudCBsaW5lIgogbXNnc3RyICJFMzg3OiDR7u7y4uXy8fLi6OUg4iDy5erz+eXpIPHy8O7q5SIKIAotIzogc2VhcmNoLmM6NDI1NAorIzogc2VhcmNoLmM6NDI2MwogbXNnaWQgIkFsbCBpbmNsdWRlZCBmaWxlcyB3ZXJlIGZvdW5kIgogbXNnc3RyICLN4Onk5e37IOLx5SDi6uv+97jt7fvlIPTg6ev7IgogCi0jOiBzZWFyY2guYzo0MjU2CisjOiBzZWFyY2guYzo0MjY1CiBtc2dpZCAiTm8gaW5jbHVkZWQgZmlsZXMiCiBtc2dzdHIgIsLq6/73uO3t+/Ug9ODp6+7iIO3l8iIKIAotIzogc2VhcmNoLmM6NDI3MgorIzogc2VhcmNoLmM6NDI4MQogbXNnaWQgIkUzODg6IENvdWxkbid0IGZpbmQgZGVmaW5pdGlvbiIKIG1zZ3N0ciAiRTM4ODogzu/w5eTl6+Xt6OUg7eUg7eDp5OXt7iIKIAotIzogc2VhcmNoLmM6NDI3NAorIzogc2VhcmNoLmM6NDI4MwogbXNnaWQgIkUzODk6IENvdWxkbid0IGZpbmQgcGF0dGVybiIKIG1zZ3N0ciAiRTM4OTog2ODh6+7tIO3lIO3g6eTl7SIKIApAQCAtNTc4OSw3ICs1Nzk4LDcgQEAKIG1zZ3N0ciAiRTQ0MDog7+7y5fD/7eAg8fLw7urgIO7y7OXt+yIKIAogIy4gT25seSBNUyBWQyA0LjEgYW5kIGVhcmxpZXIgY2FuIGRvIFdpbjMycwotIzogdmVyc2lvbi5jOjcyMQorIzogdmVyc2lvbi5jOjcwNwogbXNnaWQgIiIKICJcbiIKICJNUy1XaW5kb3dzIDE2LzMyIGJpdCBHVUkgdmVyc2lvbiIKQEAgLTU3OTcsNyArNTgwNiw3IEBACiAiXG4iCiAiwuXw8ej/IPEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwg5Ov/IE1TLVdpbmRvd3MgMTYvMzIg4ejyIgogCi0jOiB2ZXJzaW9uLmM6NzIzCisjOiB2ZXJzaW9uLmM6NzA5CiBtc2dpZCAiIgogIlxuIgogIk1TLVdpbmRvd3MgMzIgYml0IEdVSSB2ZXJzaW9uIgpAQCAtNTgwNSwxNSArNTgxNCwxNSBAQAogIlxuIgogIsLl8PHo/yDxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIOTr/yBNUy1XaW5kb3dzIDMyIOHo8iIKIAotIzogdmVyc2lvbi5jOjcyNgorIzogdmVyc2lvbi5jOjcxMgogbXNnaWQgIiBpbiBXaW4zMnMgbW9kZSIKIG1zZ3N0ciAiIOIg8OXm6OzlIFdpbjMycyIKIAotIzogdmVyc2lvbi5jOjcyOAorIzogdmVyc2lvbi5jOjcxNAogbXNnaWQgIiB3aXRoIE9MRSBzdXBwb3J0IgogbXNnc3RyICIg8SDv7uTk5fDm6u7pIE9MRSIKIAotIzogdmVyc2lvbi5jOjczMQorIzogdmVyc2lvbi5jOjcxNwogbXNnaWQgIiIKICJcbiIKICJNUy1XaW5kb3dzIDMyIGJpdCBjb25zb2xlIHZlcnNpb24iCkBAIC01ODIxLDcgKzU4MzAsNyBAQAogIlxuIgogIsru7fHu6/zt4P8g4uXw8ej/IOTr/yBNUy1XaW5kb3dzIDMyIOHo8iIKIAotIzogdmVyc2lvbi5jOjczNQorIzogdmVyc2lvbi5jOjcyMQogbXNnaWQgIiIKICJcbiIKICJNUy1XaW5kb3dzIDE2IGJpdCB2ZXJzaW9uIgpAQCAtNTgyOSw3ICs1ODM4LDcgQEAKICJcbiIKICLC5fDx6P8g5Ov/IE1TLVdpbmRvd3MgMTYg4ejyIgogCi0jOiB2ZXJzaW9uLmM6NzM5CisjOiB2ZXJzaW9uLmM6NzI1CiBtc2dpZCAiIgogIlxuIgogIjMyIGJpdCBNUy1ET1MgdmVyc2lvbiIKQEAgLTU4MzcsNyArNTg0Niw3IEBACiAiXG4iCiAiwuXw8ej/IOTr/yBNUy1ET1MgMzIg4ejyIgogCi0jOiB2ZXJzaW9uLmM6NzQxCisjOiB2ZXJzaW9uLmM6NzI3CiBtc2dpZCAiIgogIlxuIgogIjE2IGJpdCBNUy1ET1MgdmVyc2lvbiIKQEAgLTU4NDUsNyArNTg1NCw3IEBACiAiXG4iCiAiwuXw8ej/IOTr/yBNUy1ET1MgMTYg4ejyIgogCi0jOiB2ZXJzaW9uLmM6NzQ3CisjOiB2ZXJzaW9uLmM6NzMzCiBtc2dpZCAiIgogIlxuIgogIk1hY09TIFggKHVuaXgpIHZlcnNpb24iCkBAIC01ODUzLDcgKzU4NjIsNyBAQAogIlxuIgogIsLl8PHo/yDk6/8gTWFjT1MgWCAodW5peCkiCiAKLSM6IHZlcnNpb24uYzo3NDkKKyM6IHZlcnNpb24uYzo3MzUKIG1zZ2lkICIiCiAiXG4iCiAiTWFjT1MgWCB2ZXJzaW9uIgpAQCAtNTg2MSw3ICs1ODcwLDcgQEAKICJcbiIKICLC5fDx6P8g5Ov/IE1hY09TIFgiCiAKLSM6IHZlcnNpb24uYzo3NTIKKyM6IHZlcnNpb24uYzo3MzgKIG1zZ2lkICIiCiAiXG4iCiAiTWFjT1MgdmVyc2lvbiIKQEAgLTU4NjksNyArNTg3OCw3IEBACiAiXG4iCiAiwuXw8ej/IOTr/yBNYWNPUyIKIAotIzogdmVyc2lvbi5jOjc1NworIzogdmVyc2lvbi5jOjc0MwogbXNnaWQgIiIKICJcbiIKICJSSVNDIE9TIHZlcnNpb24iCkBAIC01ODc3LDcgKzU4ODYsNyBAQAogIlxuIgogIsLl8PHo/yDk6/8gUklTQyBPUyIKIAotIzogdmVyc2lvbi5jOjc2NworIzogdmVyc2lvbi5jOjc1MwogbXNnaWQgIiIKICJcbiIKICJJbmNsdWRlZCBwYXRjaGVzOiAiCkBAIC01ODg1LDExICs1ODk0LDExIEBACiAiXG4iCiAix+Dv6+Dy6ug6ICIKIAotIzogdmVyc2lvbi5jOjc5MyB2ZXJzaW9uLmM6MTE2MQorIzogdmVyc2lvbi5jOjc3OSB2ZXJzaW9uLmM6MTE0NwogbXNnaWQgIk1vZGlmaWVkIGJ5ICIKIG1zZ3N0ciAi0SDo5+zl7eXt6P/s6Cwg4u3l8bjt7fvs6CAiCiAKLSM6IHZlcnNpb24uYzo4MDAKKyM6IHZlcnNpb24uYzo3ODYKIG1zZ2lkICIiCiAiXG4iCiAiQ29tcGlsZWQgIgpAQCAtNTg5NywxMSArNTkwNiwxMSBAQAogIlxuIgogItHq7uzv6Ovo8O7i4O0gIgogCi0jOiB2ZXJzaW9uLmM6ODAzCisjOiB2ZXJzaW9uLmM6Nzg5CiBtc2dpZCAiYnkgIgogbXNnc3RyICIgIgogCi0jOiB2ZXJzaW9uLmM6ODE1CisjOiB2ZXJzaW9uLmM6ODAxCiBtc2dpZCAiIgogIlxuIgogIkh1Z2UgdmVyc2lvbiAiCkBAIC01OTA5LDcgKzU5MTgsNyBAQAogIlxuIgogIs7j8O7s7eD/IOLl8PHo/yAiCiAKLSM6IHZlcnNpb24uYzo4MTgKKyM6IHZlcnNpb24uYzo4MDQKIG1zZ2lkICIiCiAiXG4iCiAiQmlnIHZlcnNpb24gIgpAQCAtNTkxNyw3ICs1OTI2LDcgQEAKICJcbiIKICLB7uv8+OD/IOLl8PHo/yAiCiAKLSM6IHZlcnNpb24uYzo4MjEKKyM6IHZlcnNpb24uYzo4MDcKIG1zZ2lkICIiCiAiXG4iCiAiTm9ybWFsIHZlcnNpb24gIgpAQCAtNTkyNSw3ICs1OTM0LDcgQEAKICJcbiIKICLO4fv37eD/IOLl8PHo/yAiCiAKLSM6IHZlcnNpb24uYzo4MjQKKyM6IHZlcnNpb24uYzo4MTAKIG1zZ2lkICIiCiAiXG4iCiAiU21hbGwgdmVyc2lvbiAiCkBAIC01OTMzLDcgKzU5NDIsNyBAQAogIlxuIgogIszg6+D/IOLl8PHo/yAiCiAKLSM6IHZlcnNpb24uYzo4MjYKKyM6IHZlcnNpb24uYzo4MTIKIG1zZ2lkICIiCiAiXG4iCiAiVGlueSB2ZXJzaW9uICIKQEAgLTU5NDEsMjMxICs1OTUwLDIzMSBAQAogIlxuIgogIsLl8PHo/yBcIsrw7vXgXCIgIgogCi0jOiB2ZXJzaW9uLmM6ODMyCisjOiB2ZXJzaW9uLmM6ODE4CiBtc2dpZCAid2l0aG91dCBHVUkuIgogbXNnc3RyICLh5ecg4/Dg9Oj35fHq7uPuIOjt8uXw9OXp8eAuIgogCi0jOiB2ZXJzaW9uLmM6ODM3CisjOiB2ZXJzaW9uLmM6ODIzCiBtc2dpZCAid2l0aCBHVEsyLUdOT01FIEdVSS4iCiBtc2dzdHIgIvEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwgR1RLMi1HTk9NRS4iCiAKLSM6IHZlcnNpb24uYzo4MzkKKyM6IHZlcnNpb24uYzo4MjUKIG1zZ2lkICJ3aXRoIEdUSy1HTk9NRSBHVUkuIgogbXNnc3RyICLxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIEdUSy1HTk9NRS4iCiAKLSM6IHZlcnNpb24uYzo4NDMKKyM6IHZlcnNpb24uYzo4MjkKIG1zZ2lkICJ3aXRoIEdUSzIgR1VJLiIKIG1zZ3N0ciAi8SDj8OD06Pfl8ero7CDo7fLl8PTl6fHu7CBHVEsyLiIKIAotIzogdmVyc2lvbi5jOjg0NQorIzogdmVyc2lvbi5jOjgzMQogbXNnaWQgIndpdGggR1RLIEdVSS4iCiBtc2dzdHIgIvEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwgR1RLLiIKIAotIzogdmVyc2lvbi5jOjg1MAorIzogdmVyc2lvbi5jOjgzNgogbXNnaWQgIndpdGggWDExLU1vdGlmIEdVSS4iCiBtc2dzdHIgIvEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwgWDExLU1vdGlmLiIKIAotIzogdmVyc2lvbi5jOjg1NAorIzogdmVyc2lvbi5jOjg0MAogbXNnaWQgIndpdGggWDExLW5lWHRhdyBHVUkuIgogbXNnc3RyICLxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIFgxMS1uZVh0YXcuIgogCi0jOiB2ZXJzaW9uLmM6ODU2CisjOiB2ZXJzaW9uLmM6ODQyCiBtc2dpZCAid2l0aCBYMTEtQXRoZW5hIEdVSS4iCiBtc2dzdHIgIvEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwgWDExLUF0aGVuYS4iCiAKLSM6IHZlcnNpb24uYzo4NjAKKyM6IHZlcnNpb24uYzo4NDYKIG1zZ2lkICJ3aXRoIEJlT1MgR1VJLiIKIG1zZ3N0ciAi8SDj8OD06Pfl8ero7CDo7fLl8PTl6fHu7CBCZU9TLiIKIAotIzogdmVyc2lvbi5jOjg2MworIzogdmVyc2lvbi5jOjg0OQogbXNnaWQgIndpdGggUGhvdG9uIEdVSS4iCiBtc2dzdHIgIvEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwgUGhvdG9uLiIKIAotIzogdmVyc2lvbi5jOjg2NgorIzogdmVyc2lvbi5jOjg1MgogbXNnaWQgIndpdGggR1VJLiIKIG1zZ3N0ciAi8SDj8OD06Pfl8ero7CDo7fLl8PTl6fHu7C4iCiAKLSM6IHZlcnNpb24uYzo4NjkKKyM6IHZlcnNpb24uYzo4NTUKIG1zZ2lkICJ3aXRoIENhcmJvbiBHVUkuIgogbXNnc3RyICLxIOPw4PTo9+Xx6ujsIOjt8uXw9OXp8e7sIENhcmJvbi4iCiAKLSM6IHZlcnNpb24uYzo4NzIKKyM6IHZlcnNpb24uYzo4NTgKIG1zZ2lkICJ3aXRoIENvY29hIEdVSS4iCiBtc2dzdHIgIvEg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwgQ29jb2EuIgogCi0jOiB2ZXJzaW9uLmM6ODc1CisjOiB2ZXJzaW9uLmM6ODYxCiBtc2dpZCAid2l0aCAoY2xhc3NpYykgR1VJLiIKIG1zZ3N0ciAi8SDq6+Dx8ej35fHq6Owg4/Dg9Oj35fHq6Owg6O3y5fD05enx7uwuIgogCi0jOiB2ZXJzaW9uLmM6ODg2CisjOiB2ZXJzaW9uLmM6ODcyCiBtc2dpZCAiICBGZWF0dXJlcyBpbmNsdWRlZCAoKykgb3Igbm90ICgtKTpcbiIKIG1zZ3N0ciAiICDC6uv+97jt7fvlICgrKSDoIO7y6uv+97jt7fvlICgtKSDu8e7h5e3t7vHy6DpcbiIKIAotIzogdmVyc2lvbi5jOjg5OAorIzogdmVyc2lvbi5jOjg4NAogbXNnaWQgIiAgIHN5c3RlbSB2aW1yYyBmaWxlOiBcIiIKIG1zZ3N0ciAiICAgICAgICAgICAg7uH55fHo8fLl7O376SD04OnrIHZpbXJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjkwMworIzogdmVyc2lvbi5jOjg4OQogbXNnaWQgIiAgICAgdXNlciB2aW1yYyBmaWxlOiBcIiIKIG1zZ3N0ciAiICAgICAgICAg7+7r/Ofu4uDy5ev88ero6SD04OnrIHZpbXJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjkwOAorIzogdmVyc2lvbi5jOjg5NAogbXNnaWQgIiAybmQgdXNlciB2aW1yYyBmaWxlOiBcIiIKIG1zZ3N0ciAiICDi8u7w7ukg7+7r/Ofu4uDy5ev88ero6SD04OnrIHZpbXJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjkxMworIzogdmVyc2lvbi5jOjg5OQogbXNnaWQgIiAzcmQgdXNlciB2aW1yYyBmaWxlOiBcIiIKIG1zZ3N0ciAiICDy8OXy6Okg7+7r/Ofu4uDy5ev88ero6SD04OnrIHZpbXJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjkxOAorIzogdmVyc2lvbi5jOjkwNAogbXNnaWQgIiAgICAgIHVzZXIgZXhyYyBmaWxlOiBcIiIKIG1zZ3N0ciAiICAgICAgICAgIO/u6/zn7uLg8uXr/PHq6Okg9ODp6yBleHJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjkyMworIzogdmVyc2lvbi5jOjkwOQogbXNnaWQgIiAgMm5kIHVzZXIgZXhyYyBmaWxlOiBcIiIKIG1zZ3N0ciAiICAg4vLu8O7pIO/u6/zn7uLg8uXr/PHq6Okg9ODp6yBleHJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjkyOQorIzogdmVyc2lvbi5jOjkxNQogbXNnaWQgIiAgc3lzdGVtIGd2aW1yYyBmaWxlOiBcIiIKIG1zZ3N0ciAiICAgICAgICAgICDu4fnl8ejx8uXs7fvpIPTg6esgZ3ZpbXJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjkzMworIzogdmVyc2lvbi5jOjkxOQogbXNnaWQgIiAgICB1c2VyIGd2aW1yYyBmaWxlOiBcIiIKIG1zZ3N0ciAiICAgICAgICDv7uv85+7i4PLl6/zx6ujpIPTg6esgZ3ZpbXJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjkzNworIzogdmVyc2lvbi5jOjkyMwogbXNnaWQgIjJuZCB1c2VyIGd2aW1yYyBmaWxlOiBcIiIKIG1zZ3N0ciAiIOLy7vDu6SDv7uv85+7i4PLl6/zx6ujpIPTg6esgZ3ZpbXJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjk0MgorIzogdmVyc2lvbi5jOjkyOAogbXNnaWQgIjNyZCB1c2VyIGd2aW1yYyBmaWxlOiBcIiIKIG1zZ3N0ciAiIPLw5fLo6SDv7uv85+7i4PLl6/zx6ujpIPTg6esgZ3ZpbXJjOiBcIiIKIAotIzogdmVyc2lvbi5jOjk0OQorIzogdmVyc2lvbi5jOjkzNQogbXNnaWQgIiAgICBzeXN0ZW0gbWVudSBmaWxlOiBcIiIKIG1zZ3N0ciAiICAgICAgICAgICAgIO7h+eXx6PHy5ezt++kg9ODp6yDs5e3+OiBcIiIKIAotIzogdmVyc2lvbi5jOjk1NworIzogdmVyc2lvbi5jOjk0MwogbXNnaWQgIiAgZmFsbC1iYWNrIGZvciAkVklNOiBcIiIKIG1zZ3N0ciAiICAgICAgICAgIOft4Pfl7ejlICRWSU0g7+4g8+zu6/fg7ej+OiBcIiIKIAotIzogdmVyc2lvbi5jOjk2MworIzogdmVyc2lvbi5jOjk0OQogbXNnaWQgIiBmLWIgZm9yICRWSU1SVU5USU1FOiBcIiIKIG1zZ3N0ciAiICAg5+3g9+Xt6OUgJFZJTVJVTlRJTUUg7+4g8+zu6/fg7ej+OiBcIiIKIAotIzogdmVyc2lvbi5jOjk2NworIzogdmVyc2lvbi5jOjk1MwogbXNnaWQgIkNvbXBpbGF0aW9uOiAiCiBtc2dzdHIgIs/g8ODs5fLw+yDq7uzv6Ov/9ujoOiAiCiAKLSM6IHZlcnNpb24uYzo5NzMKKyM6IHZlcnNpb24uYzo5NTkKIG1zZ2lkICJDb21waWxlcjogIgogbXNnc3RyICLK7uzv6Ov/8u7wOiAiCiAKLSM6IHZlcnNpb24uYzo5NzgKKyM6IHZlcnNpb24uYzo5NjQKIG1zZ2lkICJMaW5raW5nOiAiCiBtc2dzdHIgItHh7vDq4DogIgogCi0jOiB2ZXJzaW9uLmM6OTgzCisjOiB2ZXJzaW9uLmM6OTY5CiBtc2dpZCAiICBERUJVRyBCVUlMRCIKIG1zZ3N0ciAiICDO0svAxM7XzcDfINHBztDKwCIKIAotIzogdmVyc2lvbi5jOjEwMjIKKyM6IHZlcnNpb24uYzoxMDA4CiBtc2dpZCAiVklNIC0gVmkgSU1wcm92ZWQiCiBtc2dzdHIgIlZJTSA6OjogVmkgSU1wcm92ZWQgKNPr8/f45e3t++kgVmkpIDo6OiDQ8/Hx6uD/IOLl8PHo/yIKIAotIzogdmVyc2lvbi5jOjEwMjQKKyM6IHZlcnNpb24uYzoxMDEwCiBtc2dpZCAidmVyc2lvbiAiCiBtc2dzdHIgIuLl8PHo/yAiCiAKLSM6IHZlcnNpb24uYzoxMDI1CisjOiB2ZXJzaW9uLmM6MTAxMQogbXNnaWQgImJ5IEJyYW0gTW9vbGVuYWFyIGV0IGFsLiIKIG1zZ3N0ciAiwfDg7CDM7u7r5e3g4PAg6CDk8PPj6OUiCiAKLSM6IHZlcnNpb24uYzoxMDI5CisjOiB2ZXJzaW9uLmM6MTAxNQogbXNnaWQgIlZpbSBpcyBvcGVuIHNvdXJjZSBhbmQgZnJlZWx5IGRpc3RyaWJ1dGFibGUiCiBtc2dzdHIgIlZpbSD98u4g8eLu4e7k7e4g8ODx7/Du8fLw4O3/5ezg/yDv8O7j8ODs7OAg8SDu8urw+/L77CDq7uTu7CIKIAotIzogdmVyc2lvbi5jOjEwMzEKKyM6IHZlcnNpb24uYzoxMDE3CiBtc2dpZCAiSGVscCBwb29yIGNoaWxkcmVuIGluIFVnYW5kYSEiCiBtc2dzdHIgIsHl5O377CDk5fL/7CDiINPj4O3k5SDt8+bt4CDi4PjgIO/u7O75/CEiCiAKLSM6IHZlcnNpb24uYzoxMDMyCisjOiB2ZXJzaW9uLmM6MTAxOAogbXNnaWQgInR5cGUgIDpoZWxwIGljY2Y8RW50ZXI+ICAgICAgIGZvciBpbmZvcm1hdGlvbiAiCiBtc2dzdHIgIu3g4eXw6PLlIDpoZWxwIGljY2Y8RW50ZXI+ICAgICAgIOTr/yDk7u/u6+3o8uXr/O3u6SDo7fTu8Ozg9ujoIgogCi0jOiB2ZXJzaW9uLmM6MTAzNAorIzogdmVyc2lvbi5jOjEwMjAKIG1zZ2lkICJ0eXBlICA6cTxFbnRlcj4gICAgICAgICAgICAgICB0byBleGl0ICAgICAgICAgIgogbXNnc3RyICLt4OHl8Ojy5SA6cTxFbnRlcj4gICAgICAgICAgICAgICD38u7h+yDi++ny6CDo5yDv8O7j8ODs7PsgICAgICIKIAotIzogdmVyc2lvbi5jOjEwMzUKKyM6IHZlcnNpb24uYzoxMDIxCiBtc2dpZCAidHlwZSAgOmhlbHA8RW50ZXI+ICBvciAgPEYxPiAgZm9yIG9uLWxpbmUgaGVscCIKIG1zZ3N0ciAi7eDh5fDo8uUgOmhlbHA8RW50ZXI+IOjr6CA8RjE+ICAg5Ov/IO/u6/P35e3o/yDx7/Dg4uroICAgICAgICAiCiAKLSM6IHZlcnNpb24uYzoxMDM2CisjOiB2ZXJzaW9uLmM6MTAyMgogbXNnaWQgInR5cGUgIDpoZWxwIHZlcnNpb242PEVudGVyPiAgIGZvciB2ZXJzaW9uIGluZm8iCiBtc2dzdHIgIu3g4eXw6PLlIDpoZWxwIHZlcnNpb242PEVudGVyPiAgIPfy7uH7IPPn7eDy/CDu4SD98u7pIOLl8PHo6CAgIgogCi0jOiB2ZXJzaW9uLmM6MTAzOQorIzogdmVyc2lvbi5jOjEwMjUKIG1zZ2lkICJSdW5uaW5nIGluIFZpIGNvbXBhdGlibGUgbW9kZSIKIG1zZ3N0ciAi0ODh7vLgIOIgVmkt8e7i7OXx8ujs7uwg8OXm6OzlIgogCi0jOiB2ZXJzaW9uLmM6MTA0MAorIzogdmVyc2lvbi5jOjEwMjYKIG1zZ2lkICJ0eXBlICA6c2V0IG5vY3A8RW50ZXI+ICAgICAgICBmb3IgVmltIGRlZmF1bHRzIgogbXNnc3RyICLt4OHl8Ojy5SA6c2V0IG5vY3A8RW50ZXI+ICAgICAgICDk6/8g7+Xw5fXu5OAg4iDw5ebo7CBWaW0gICAgICIKIAotIzogdmVyc2lvbi5jOjEwNDEKKyM6IHZlcnNpb24uYzoxMDI3CiBtc2dpZCAidHlwZSAgOmhlbHAgY3AtZGVmYXVsdDxFbnRlcj4gZm9yIGluZm8gb24gdGhpcyIKIG1zZ3N0ciAi7eDh5fDo8uUgOmhlbHAgY3AtZGVmYXVsdDxFbnRlcj4g5Ov/IOTu7+7r7ejy5ev87e7pIOjt9O7w7OD26OgiCiAKLSM6IHZlcnNpb24uYzoxMDU2CisjOiB2ZXJzaW9uLmM6MTA0MgogbXNnaWQgIm1lbnUgIEhlbHAtPk9ycGhhbnMgICAgICAgICAgIGZvciBpbmZvcm1hdGlvbiAgICAiCiBtc2dzdHIgIuzl7f4g0e/w4OLq4C0+0ejw7vL7ICAgICAgICAgICAgIOTr/yDv7uvz9+Xt6P8g6O307vDs4Pbo6CAgICAgIgogCi0jOiB2ZXJzaW9uLmM6MTA1OAorIzogdmVyc2lvbi5jOjEwNDQKIG1zZ2lkICJSdW5uaW5nIG1vZGVsZXNzLCB0eXBlZCB0ZXh0IGlzIGluc2VydGVkIgogbXNnc3RyICLB5efw5ebo7O3g/yDw4OHu8vssIOLx8uDi6uAg4uLl5Ljt7e7j7iDy5erx8uAiCiAKLSM6IHZlcnNpb24uYzoxMDU5CisjOiB2ZXJzaW9uLmM6MTA0NQogbXNnaWQgIm1lbnUgIEVkaXQtPkdsb2JhbCBTZXR0aW5ncy0+VG9nZ2xlIEluc2VydCBNb2RlICAiCiBtc2dzdHIgIuzl7f4gz/Dg4urgLT7O4fno5SDN4PHy8O7p6ugtPtDl5ujsIMLx8uDi6uggICAgICAgICAgICAgICAgICAgICAiCiAKLSM6IHZlcnNpb24uYzoxMDYwCisjOiB2ZXJzaW9uLmM6MTA0NgogbXNnaWQgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0d28gbW9kZXMgICAgICAiCiBtc2dzdHIgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOTr/yDk4vP1IPDl5ujs7uIgICAgICAgICAgICAgICAiCiAKLSM6IHZlcnNpb24uYzoxMDY0CisjOiB2ZXJzaW9uLmM6MTA1MAogbXNnaWQgIm1lbnUgIEVkaXQtPkdsb2JhbCBTZXR0aW5ncy0+VG9nZ2xlIFZpIENvbXBhdGlibGUiCiBtc2dzdHIgIuzl7f4gz/Dg4urgLT7O4fno5SDN4PHy8O7p6ugtPtHu4uzl8fLo7O7x8vwg8SBWaSAgICAgICAgICAgICAgICAiCiAKLSM6IHZlcnNpb24uYzoxMDY1CisjOiB2ZXJzaW9uLmM6MTA1MQogbXNnaWQgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBWaW0gZGVmYXVsdHMgICAiCiBtc2dzdHIgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOTr/yDv5fDl9e7k4CDiIPDl5ujsIFZpbSAgICAgICAiCiAKLSM6IHZlcnNpb24uYzoxMTEyCisjOiB2ZXJzaW9uLmM6MTA5OAogbXNnaWQgIlNwb25zb3IgVmltIGRldmVsb3BtZW50ISIKIG1zZ3N0ciAiz+7s7uPo8uUg4iDw4Ofw4OHu8urlIFZpbSEiCiAKLSM6IHZlcnNpb24uYzoxMTEzCisjOiB2ZXJzaW9uLmM6MTA5OQogbXNnaWQgIkJlY29tZSBhIHJlZ2lzdGVyZWQgVmltIHVzZXIhIgogbXNnc3RyICLR8uDt/PLlIOfg8OXj6PHy8Ojw7uLg7e377CDv7uv85+7i4PLl6+XsIFZpbSEiCiAKLSM6IHZlcnNpb24uYzoxMTE2CisjOiB2ZXJzaW9uLmM6MTEwMgogbXNnaWQgInR5cGUgIDpoZWxwIHNwb25zb3I8RW50ZXI+ICAgIGZvciBpbmZvcm1hdGlvbiAiCiBtc2dzdHIgIu3g4eXw6PLlIDpoZWxwIHNwb25zb3I8RW50ZXI+ICAgIOTr/yDv7uvz9+Xt6P8g6O307vDs4Pbo6CAgICAgIgogCi0jOiB2ZXJzaW9uLmM6MTExNworIzogdmVyc2lvbi5jOjExMDMKIG1zZ2lkICJ0eXBlICA6aGVscCByZWdpc3RlcjxFbnRlcj4gICBmb3IgaW5mb3JtYXRpb24gIgogbXNnc3RyICLt4OHl8Ojy5SA6aGVscCByZWdpc3RlcjxFbnRlcj4gICDk6/8g7+7r8/fl7ej/IOjt9O7w7OD26OggICAgICIKIAotIzogdmVyc2lvbi5jOjExMTkKKyM6IHZlcnNpb24uYzoxMTA1CiBtc2dpZCAibWVudSAgSGVscC0+U3BvbnNvci9SZWdpc3RlciAgZm9yIGluZm9ybWF0aW9uICAgICIKIG1zZ3N0ciAi7OXt/iDR7/Dg4urgLT7P7uzu+fwv0OXj6PHy8OD26P8g5Ov/IO/u6/P35e3o/yDo7fTu8Ozg9ujoICAgICAgICIKIAotIzogdmVyc2lvbi5jOjExMjkKKyM6IHZlcnNpb24uYzoxMTE1CiBtc2dpZCAiV0FSTklORzogV2luZG93cyA5NS85OC9NRSBkZXRlY3RlZCIKIG1zZ3N0ciAiz9DFxNPP0MXGxMXNyMU6IO7h7eDw8+bl7eAgV2luZG93cyA5NS85OC9NRSIKIAotIzogdmVyc2lvbi5jOjExMzIKKyM6IHZlcnNpb24uYzoxMTE4CiBtc2dpZCAidHlwZSAgOmhlbHAgd2luZG93czk1PEVudGVyPiAgZm9yIGluZm8gb24gdGhpcyIKIG1zZ3N0ciAi7eDh5fDo8uUgOmhlbHAgd2luZG93czk1PEVudGVyPiAg5Ov/IO/u6/P35e3o/yDo7fTu8Ozg9ujoICAgICAiCiAKQEAgLTYyMDIsNyArNjIxMSw3IEBACiBtc2dpZCAiRTQ0NzogQ2FuJ3QgZmluZCBmaWxlIFwiJXNcIiBpbiBwYXRoIgogbXNnc3RyICJFNDQ3OiDU4OnrIFwiJXNcIiDt5SDt4Onk5e0g7+4g6Ofi5fHy7fvsIO/z8v/sIgogCi0jOiBpZl9wZXJsLnhzOjMyNiBnbG9iYWxzLmg6MTIzMgorIzogaWZfcGVybC54czozMjYgZ2xvYmFscy5oOjEyNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTM3MDogQ291bGQgbm90IGxvYWQgbGlicmFyeSAlcyIKIG1zZ3N0ciAiRTM3MDogzeXi7ufs7ubt7iDn4OPw8+fo8vwg4ejh6+ju8uXq8yAlcyIKQEAgLTYyNTQsNyArNjI2Myw3IEBACiBtc2dpZCAiUGF0aCBsZW5ndGggdG9vIGxvbmchIgogbXNnc3RyICLR6+j46u7sIOTr6O3t++kg7/Py/CEiCiAKLSM6IGdsb2JhbHMuaDoxMDIyCisjOiBnbG9iYWxzLmg6MTAzMQogbXNnaWQgIi0tTm8gbGluZXMgaW4gYnVmZmVyLS0iCiBtc2dzdHIgIi0tIM3l8iDx8vDu6iDiIOHz9OXw5SAtLSIKIApAQCAtNjI2MiwzOTcgKzYyNzEsMzk1IEBACiAjLiAqIFRoZSBlcnJvciBtZXNzYWdlcyB0aGF0IGNhbiBiZSBzaGFyZWQgYXJlIGluY2x1ZGVkIGhlcmUuCiAjLiAqIEV4Y2x1ZGVkIGFyZSBlcnJvcnMgdGhhdCBhcmUgb25seSB1c2VkIG9uY2UgYW5kIGRlYnVnZ2luZyBtZXNzYWdlcy4KICMuCi0jOiBnbG9iYWxzLmg6MTE4NQorIzogZ2xvYmFscy5oOjExOTQKIG1zZ2lkICJFNDcwOiBDb21tYW5kIGFib3J0ZWQiCiBtc2dzdHIgIkU0NzA6IML77+7r7eXt6OUg6u7s4O3k+yDv8OXw4uDt7iIKIAotIzogZ2xvYmFscy5oOjExODYKKyM6IGdsb2JhbHMuaDoxMTk1CiBtc2dpZCAiRTQ3MTogQXJndW1lbnQgcmVxdWlyZWQiCiBtc2dzdHIgIkU0NzE6INLw5eHz5fLx/yDz6uDn4PL8IO/g8ODs5fLwIgogCi0jOiBnbG9iYWxzLmg6MTE4NworIzogZ2xvYmFscy5oOjExOTYKIG1zZ2lkICJFMTA6IFxcIHNob3VsZCBiZSBmb2xsb3dlZCBieSAvLCA/IG9yICYiCiBtc2dzdHIgIkUxMDogz+7x6+UgXFwg5O7r5uXtIOjk8ugg8ejs4u7rIC8sID8g6OvoICYiCiAKLSM6IGdsb2JhbHMuaDoxMTg5CisjOiBnbG9iYWxzLmg6MTE5OAogbXNnaWQgIkUxMTogSW52YWxpZCBpbiBjb21tYW5kLWxpbmUgd2luZG93OyA8Q1I+IGV4ZWN1dGVzLCBDVFJMLUMgcXVpdHMiCiBtc2dzdHIgIiIKICJFMTE6IM3l5O7v8/Hy6OzuIOIg7urt5SDq7uzg7eTt7ukg8fLw7uroOyA8Q1I+IOL77+7r7eXt6OUsIENUUkwtQyDi+/Xu5CIKIAotIzogZ2xvYmFscy5oOjExOTEKKyM6IGdsb2JhbHMuaDoxMjAwCiBtc2dpZCAiRTEyOiBDb21tYW5kIG5vdCBhbGxvd2VkIGZyb20gZXhyYy92aW1yYyBpbiBjdXJyZW50IGRpciBvciB0YWcgc2VhcmNoIgogbXNnc3RyICIiCiAiRTEyOiDK7uzg7eTgIO3lIOTu7/Px6uDl8vH/IOIgZXhyYy92aW1yYyDiIPLl6vP55ewg6uDy4Ovu4+Ug6OvoIO/u6PHq5SDs5fLu6iIKIAotIzogZ2xvYmFscy5oOjExOTMKKyM6IGdsb2JhbHMuaDoxMjAyCiBtc2dpZCAiRTE3MTogTWlzc2luZyA6ZW5kaWYiCiBtc2dzdHIgIkUxNzE6IM7y8fPy8fLi8+XyIOru7ODt5OAgOmVuZGlmIgogCi0jOiBnbG9iYWxzLmg6MTE5NAorIzogZ2xvYmFscy5oOjEyMDMKIG1zZ2lkICJFNjAwOiBNaXNzaW5nIDplbmR0cnkiCiBtc2dzdHIgIkU2MDA6IM7y8fPy8fLi8+XyIOru7ODt5OAgOmVuZHRyeSIKIAotIzogZ2xvYmFscy5oOjExOTUKKyM6IGdsb2JhbHMuaDoxMjA0CiBtc2dpZCAiRTE3MDogTWlzc2luZyA6ZW5kd2hpbGUiCiBtc2dzdHIgIkUxNzA6IM7y8fPy8fLi8+XyIOru7ODt5OAgOmVuZHdoaWxlIgogCi0jOiBnbG9iYWxzLmg6MTE5NgorIzogZ2xvYmFscy5oOjEyMDUKIG1zZ2lkICJFNTg4OiA6ZW5kd2hpbGUgd2l0aG91dCA6d2hpbGUiCiBtc2dzdHIgIkU1ODg6IMru7ODt5OAgOmVuZHdoaWxlIOHl5yDv4PDt7ukg6u7s4O3k+yA6d2hpbGUiCiAKLSM6IGdsb2JhbHMuaDoxMTk4CisjOiBnbG9iYWxzLmg6MTIwNwogbXNnaWQgIkUxMzogRmlsZSBleGlzdHMgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiRTEzOiDU4OnrIPHz+eXx8uLz5fIgKOTr/yDv5fDl5+Dv6PHoIOTu4eDi/PLlICEpIgogCi0jOiBnbG9iYWxzLmg6MTE5OQorIzogZ2xvYmFscy5oOjEyMDgKIG1zZ2lkICJFNDcyOiBDb21tYW5kIGZhaWxlZCIKIG1zZ3N0ciAiRTQ3MjogzeUg8+Tg6+7x/CDi++/u6+3o8vwg6u7s4O3k8yIKIAotIzogZ2xvYmFscy5oOjEyMDEKKyM6IGdsb2JhbHMuaDoxMjEwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyMzQ6IFVua25vd24gZm9udHNldDogJXMiCiBtc2dzdHIgIkUyMzQ6IM3l6Ofi5fHy7fvpIPjw6PTy7uLu6SDt4OHu8DogJXMiCiAKLSM6IGdsb2JhbHMuaDoxMjA1CisjOiBnbG9iYWxzLmg6MTIxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjM1OiBVbmtub3duIGZvbnQ6ICVzIgogbXNnc3RyICJFMjM1OiDN5ejn4uXx8u376SD48Oj08jogJXMiCiAKLSM6IGdsb2JhbHMuaDoxMjA4CisjOiBnbG9iYWxzLmg6MTIxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJFMjM2OiBGb250IFwiJXNcIiBpcyBub3QgZml4ZWQtd2lkdGgiCiBtc2dzdHIgIkUyMzY6INjw6PTyIFwiJXNcIiDt5SD/4uv/5fLx/yDs7u3u+Ojw6O3t++wg+PDo9PLu7CIKIAotIzogZ2xvYmFscy5oOjEyMTAKKyM6IGdsb2JhbHMuaDoxMjE5CiBtc2dpZCAiRTQ3MzogSW50ZXJuYWwgZXJyb3IiCiBtc2dzdHIgIkU0NzM6IMLt8/Lw5e3t//8g7vjo4ergIgogCi0jOiBnbG9iYWxzLmg6MTIxMQorIzogZ2xvYmFscy5oOjEyMjAKIG1zZ2lkICJJbnRlcnJ1cHRlZCIKIG1zZ3N0ciAiz/Dl8OLg7e4iCiAKLSM6IGdsb2JhbHMuaDoxMjEyCisjOiBnbG9iYWxzLmg6MTIyMQogbXNnaWQgIkUxNDogSW52YWxpZCBhZGRyZXNzIgogbXNnc3RyICJFMTQ6IM3l5O7v8/Hy6Oz76SDg5PDl8SIKIAotIzogZ2xvYmFscy5oOjEyMTMKKyM6IGdsb2JhbHMuaDoxMjIyCiBtc2dpZCAiRTQ3NDogSW52YWxpZCBhcmd1bWVudCIKIG1zZ3N0ciAiRTQ3NDogzeXk7u/z8fLo7PvpIODw4/Ps5e3yIgogCi0jOiBnbG9iYWxzLmg6MTIxNAorIzogZ2xvYmFscy5oOjEyMjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTQ3NTogSW52YWxpZCBhcmd1bWVudDogJXMiCiBtc2dzdHIgIkU0NzU6IM3l5O7v8/Hy6Oz76SDg8OPz7OXt8jogJXMiCiAKLSM6IGdsb2JhbHMuaDoxMjE2CisjOiBnbG9iYWxzLmg6MTIyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTU6IEludmFsaWQgZXhwcmVzc2lvbjogJXMiCiBtc2dzdHIgIkUxNTogzeXk7u/z8fLo7O7lIOL78ODm5e3o5TogJXMiCiAKLSM6IGdsb2JhbHMuaDoxMjE4CisjOiBnbG9iYWxzLmg6MTIyNwogbXNnaWQgIkUxNjogSW52YWxpZCByYW5nZSIKIG1zZ3N0ciAiRTE2OiDN5eTu7/Px8ujs++kg5Ojg7+Dn7u0iCiAKLSM6IGdsb2JhbHMuaDoxMjE5CisjOiBnbG9iYWxzLmg6MTIyOAogbXNnaWQgIkU0NzY6IEludmFsaWQgY29tbWFuZCIKIG1zZ3N0ciAiRTQ3NjogzeXk7u/z8fLo7OD/IOru7ODt5OAiCiAKLSM6IGdsb2JhbHMuaDoxMjIxCisjOiBnbG9iYWxzLmg6MTIzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJFMTc6IFwiJXNcIiBpcyBhIGRpcmVjdG9yeSIKIG1zZ3N0ciAiRTE3OiBcIiVzXCIg/+Lr/+Xy8f8g6uDy4Ovu4+7sIgogCi0jOiBnbG9iYWxzLmg6MTIyNAorIzogZ2xvYmFscy5oOjEyMzMKIG1zZ2lkICJFMTg6IFVuZXhwZWN0ZWQgY2hhcmFjdGVycyBiZWZvcmUgJz0nIgogbXNnc3RyICJFMTg6IM/l8OXkICc9JyDu4e3g8PPm5e37IO3l7ubo5ODt7fvlIPHo7OLu6/siCiAKLSM6IGdsb2JhbHMuaDoxMjI3CisjOiBnbG9iYWxzLmg6MTIzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJFMzY0OiBMaWJyYXJ5IGNhbGwgZmFpbGVkIGZvciBcIiVzKClcIiIKIG1zZ3N0ciAiRTM2NDogzeXz5OD37fvpIOL75+7iIPTz7er26OggXCIlcygpXCIg6Ocg4ejh6+ju8uXq6CIKIAotIzogZ2xvYmFscy5oOjEyMzMKKyM6IGdsb2JhbHMuaDoxMjQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0NDg6IENvdWxkIG5vdCBsb2FkIGxpYnJhcnkgZnVuY3Rpb24gJXMiCiBtc2dzdHIgIkU0NDg6IM3lIPPk4Ovu8fwg5+Dj8PPn6PL8IPTz7er26P4gJXMg6Ocg4ejh6+ju8uXq6CIKIAotIzogZ2xvYmFscy5oOjEyMzUKKyM6IGdsb2JhbHMuaDoxMjQ0CiBtc2dpZCAiRTE5OiBNYXJrIGhhcyBpbnZhbGlkIGxpbmUgbnVtYmVyIgogbXNnc3RyICJFMTk6IM7y7OXy6uAg8+rg5/vi4OXyIO3gIO3l7/Dg4ujr/O376SDt7uzl8CDx8vDu6ugiCiAKLSM6IGdsb2JhbHMuaDoxMjM2CisjOiBnbG9iYWxzLmg6MTI0NQogbXNnaWQgIkUyMDogTWFyayBub3Qgc2V0IgogbXNnc3RyICLO8uzl8urgIO3lIO7v8OXk5evl7eAiCiAKLSM6IGdsb2JhbHMuaDoxMjM3CisjOiBnbG9iYWxzLmg6MTI0NgogbXNnaWQgIkUyMTogQ2Fubm90IG1ha2UgY2hhbmdlcywgJ21vZGlmaWFibGUnIGlzIG9mZiIKIG1zZ3N0ciAiRTIxOiDI5+zl7eXt6P8g7eXi7ufs7ubt+ywg8uDqIOrg6iDu8urr/vfl7eAg7u/26P8gJ21vZGlmaWFibGUnIgogCi0jOiBnbG9iYWxzLmg6MTIzOAorIzogZ2xvYmFscy5oOjEyNDcKIG1zZ2lkICJFMjI6IFNjcmlwdHMgbmVzdGVkIHRvbyBkZWVwIgogbXNnc3RyICJFMjI6INHr6Pjq7uwg4+vz4e7q7iDi6+7m5e3t++Ug8fbl7eDw6OgiCiAKLSM6IGdsb2JhbHMuaDoxMjM5CisjOiBnbG9iYWxzLmg6MTI0OAogbXNnaWQgIkUyMzogTm8gYWx0ZXJuYXRlIGZpbGUiCiBtc2dzdHIgIkUyMzog0e7x5eTt6Okg9ODp6yDt5SDx8/nl8fLi8+XyIgogCi0jOiBnbG9iYWxzLmg6MTI0MAorIzogZ2xvYmFscy5oOjEyNDkKIG1zZ2lkICJFMjQ6IE5vIHN1Y2ggYWJicmV2aWF0aW9uIgogbXNnc3RyICJFMjQ6IM3l8iDy4Oru4+4g8e7q8OD55e3o/yIKIAotIzogZ2xvYmFscy5oOjEyNDEKKyM6IGdsb2JhbHMuaDoxMjUwCiBtc2dpZCAiRTQ3NzogTm8gISBhbGxvd2VkIgogbXNnc3RyICJFNDc3OiAhIO3lIOTu7/Px6uDl8vH/IgogCi0jOiBnbG9iYWxzLmg6MTI0MworIzogZ2xvYmFscy5oOjEyNTIKIG1zZ2lkICJFMjU6IEdVSSBjYW5ub3QgYmUgdXNlZDogTm90IGVuYWJsZWQgYXQgY29tcGlsZSB0aW1lIgogbXNnc3RyICIiCiAiRTI1OiDC7ufs7ubt7vHy/CDo8e/u6/zn7uLg7ej/IOPw4PTo9+Xx6u7j7iDo7fLl8PTl6fHgIOL76uv+9+Xt4CDv8OggIgogIuru7O/o6//26OgiCiAKLSM6IGdsb2JhbHMuaDoxMjQ2CisjOiBnbG9iYWxzLmg6MTI1NQogbXNnaWQgIkUyNjogSGVicmV3IGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWVcbiIKIG1zZ3N0ciAiRTI2OiDI4vDo8iDi++rr/vfl7SDv8Ogg6u7s7+jr//bo6FxuIgogCi0jOiBnbG9iYWxzLmg6MTI0OQorIzogZ2xvYmFscy5oOjEyNTgKIG1zZ2lkICJFMjc6IEZhcnNpIGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWVcbiIKIG1zZ3N0ciAiRTI3OiDU4PDx6CDi++rr/vfl7e4g7/DoIOru7O/o6//26OhcbiIKIAotIzogZ2xvYmFscy5oOjEyNTIKKyM6IGdsb2JhbHMuaDoxMjYxCiBtc2dpZCAiRTgwMDogQXJhYmljIGNhbm5vdCBiZSB1c2VkOiBOb3QgZW5hYmxlZCBhdCBjb21waWxlIHRpbWVcbiIKIG1zZ3N0ciAiRTgwMDogwPDg4fHq6Okg4vvq6/735e0g7/DoIOru7O/o6//26OhcbiIKIAotIzogZ2xvYmFscy5oOjEyNTUKKyM6IGdsb2JhbHMuaDoxMjY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyODogTm8gc3VjaCBoaWdobGlnaHQgZ3JvdXAgbmFtZTogJXMiCiBtc2dzdHIgIkUyODogw/Dz7+/gIO/u5PHi5fLq6CDx6O3y4Orx6PHgICVzIO3lIPHz+eXx8uLz5fIiCiAKLSM6IGdsb2JhbHMuaDoxMjU3CisjOiBnbG9iYWxzLmg6MTI2NgogbXNnaWQgIkUyOTogTm8gaW5zZXJ0ZWQgdGV4dCB5ZXQiCiBtc2dzdHIgIkUyOTogz+7q4CDt5fIg4vHy4OLr5e3t7uPuIPLl6vHy4CIKIAotIzogZ2xvYmFscy5oOjEyNTgKKyM6IGdsb2JhbHMuaDoxMjY3CiBtc2dpZCAiRTMwOiBObyBwcmV2aW91cyBjb21tYW5kIGxpbmUiCiBtc2dzdHIgIkUzMDogz/Dl5Pvk8/nl6SDq7uzg7eTt7ukg8fLw7uroIO3l8iIKIAotIzogZ2xvYmFscy5oOjEyNTkKKyM6IGdsb2JhbHMuaDoxMjY4CiBtc2dpZCAiRTMxOiBObyBzdWNoIG1hcHBpbmciCiBtc2dzdHIgIkUzMTog0uDq7ukg7/Do4v/n6ugg7eUg8fP55fHy4vPl8iIKIAotIzogZ2xvYmFscy5oOjEyNjAKKyM6IGdsb2JhbHMuaDoxMjY5CiBtc2dpZCAiRTQ3OTogTm8gbWF0Y2giCiBtc2dzdHIgIkU0Nzk6IM3l8iDx7u7y4uXy8fLi6P8iCiAKLSM6IGdsb2JhbHMuaDoxMjYxCisjOiBnbG9iYWxzLmg6MTI3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDgwOiBObyBtYXRjaDogJXMiCiBtc2dzdHIgIkU0ODA6IM3l8iDx7u7y4uXy8fLi6P86ICVzIgogCi0jOiBnbG9iYWxzLmg6MTI2MgorIzogZ2xvYmFscy5oOjEyNzEKIG1zZ2lkICJFMzI6IE5vIGZpbGUgbmFtZSIKIG1zZ3N0ciAiRTMyOiDN5fIg6Ozl7egg9ODp6+AiCiAKLSM6IGdsb2JhbHMuaDoxMjYzCisjOiBnbG9iYWxzLmg6MTI3MgogbXNnaWQgIkUzMzogTm8gcHJldmlvdXMgc3Vic3RpdHV0ZSByZWd1bGFyIGV4cHJlc3Npb24iCiBtc2dzdHIgIkUzMzogzeXyIO/w5eT75PP55ePuIPDl4/Pr//Dt7uPuIOL78ODm5e3o/yDk6/8g5+Ds5e37IgogCi0jOiBnbG9iYWxzLmg6MTI2NAorIzogZ2xvYmFscy5oOjEyNzMKIG1zZ2lkICJFMzQ6IE5vIHByZXZpb3VzIGNvbW1hbmQiCiBtc2dzdHIgIkUzNDogzeXyIO/w5eT75PP55ekg6u7s4O3k+yIKIAotIzogZ2xvYmFscy5oOjEyNjUKKyM6IGdsb2JhbHMuaDoxMjc0CiBtc2dpZCAiRTM1OiBObyBwcmV2aW91cyByZWd1bGFyIGV4cHJlc3Npb24iCiBtc2dzdHIgIkUzNTogzeXyIO/w5eT75PP55ePuIPDl4/Pr//Dt7uPuIOL78ODm5e3o/yIKIAotIzogZ2xvYmFscy5oOjEyNjYKKyM6IGdsb2JhbHMuaDoxMjc1CiBtc2dpZCAiRTQ4MTogTm8gcmFuZ2UgYWxsb3dlZCIKIG1zZ3N0ciAiRTQ4MTogyPHv7uv85+7i4O3o5SDk6ODv4Ofu7eAg7eUg5O7v8/Hq4OXy8f8iCiAKLSM6IGdsb2JhbHMuaDoxMjY4CisjOiBnbG9iYWxzLmg6MTI3NwogbXNnaWQgIkUzNjogTm90IGVub3VnaCByb29tIgogbXNnc3RyICJFMzY6IM3l5O7x8uDy7vft7iDs5fHy4CIKIAotIzogZ2xvYmFscy5oOjEyNzEKKyM6IGdsb2JhbHMuaDoxMjgwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkUyNDc6IG5vIHJlZ2lzdGVyZWQgc2VydmVyIG5hbWVkIFwiJXNcIiIKIG1zZ3N0ciAiRTI0Nzog8eXw4uXwIFwiJXNcIiDt5SDn4PDl4+jx8vDo8O7i4O0iCiAKLSM6IGdsb2JhbHMuaDoxMjczCisjOiBnbG9iYWxzLmg6MTI4MgogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDgyOiBDYW4ndCBjcmVhdGUgZmlsZSAlcyIKIG1zZ3N0ciAiRTQ4MjogzeXi7ufs7ubt7iDx7ufk4PL8IPTg6esgJXMiCiAKLSM6IGdsb2JhbHMuaDoxMjc0CisjOiBnbG9iYWxzLmg6MTI4MwogbXNnaWQgIkU0ODM6IENhbid0IGdldCB0ZW1wIGZpbGUgbmFtZSIKIG1zZ3N0ciAiRTQ4MzogzeXi7ufs7ubt7iDv7uvz9+jy/CDo7P8g4vDl7OXt7e7j7iD04Onr4CIKIAotIzogZ2xvYmFscy5oOjEyNzUKKyM6IGdsb2JhbHMuaDoxMjg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0ODQ6IENhbid0IG9wZW4gZmlsZSAlcyIKIG1zZ3N0ciAiRTQ4NDogzeXi7ufs7ubt7iDu8urw+/L8IPTg6esgJXMiCiAKLSM6IGdsb2JhbHMuaDoxMjc2CisjOiBnbG9iYWxzLmg6MTI4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDg1OiBDYW4ndCByZWFkIGZpbGUgJXMiCiBtc2dzdHIgIkU0ODU6IM3l4u7n7O7m7e4g7/Du9+jy4PL8IPTg6esgJXMiCiAKLSM6IGdsb2JhbHMuaDoxMjc3CisjOiBnbG9iYWxzLmg6MTI4NgogbXNnaWQgIkUzNzogTm8gd3JpdGUgc2luY2UgbGFzdCBjaGFuZ2UgKGFkZCAhIHRvIG92ZXJyaWRlKSIKIG1zZ3N0ciAiRTM3OiDI5+zl7eXt6P8g7eUg8e718ODt5e37ICjk7uHg4vzy5SAhLCD38u7h+yDu4e7p8ugg7/Du4uXw6vMpIgogCi0jOiBnbG9iYWxzLmg6MTI3OAorIzogZ2xvYmFscy5oOjEyODcKIG1zZ2lkICJFMzg6IE51bGwgYXJndW1lbnQiCiBtc2dzdHIgIkUzODogzfPr5eLu6SDg8OPz7OXt8iIKIAotIzogZ2xvYmFscy5oOjEyODAKKyM6IGdsb2JhbHMuaDoxMjg5CiBtc2dpZCAiRTM5OiBOdW1iZXIgZXhwZWN0ZWQiCiBtc2dzdHIgIkUzOTog0vDl4fPl8vH/IPfo8evuIgogCi0jOiBnbG9iYWxzLmg6MTI4MworIzogZ2xvYmFscy5oOjEyOTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRTQwOiBDYW4ndCBvcGVuIGVycm9yZmlsZSAlcyIKIG1zZ3N0ciAiRTQwOiDN5SDz5ODr7vH8IO7y6vD78vwg9ODp6yDu+Ojh7uogJXMiCiAKLSM6IGdsb2JhbHMuaDoxMjg2CisjOiBnbG9iYWxzLmg6MTI5NQogbXNnaWQgIkUyMzM6IGNhbm5vdCBvcGVuIGRpc3BsYXkiCiBtc2dzdHIgIkUyMzM6IO3l4u7n7O7m7e4g7vLq8Pvy/CDk6PHv6+XpIgogCi0jOiBnbG9iYWxzLmg6MTI4OAorIzogZ2xvYmFscy5oOjEyOTcKIG1zZ2lkICJFNDE6IE91dCBvZiBtZW1vcnkhIgogbXNnc3RyICJFNDE6IM3lIPXi4PLg5fIg7+Ds//LoISIKIAotIzogZ2xvYmFscy5oOjEyOTAKKyM6IGdsb2JhbHMuaDoxMjk5CiBtc2dpZCAiUGF0dGVybiBub3QgZm91bmQiCiBtc2dzdHIgItjg4evu7SDt5SDt4Onk5e0iCiAKLSM6IGdsb2JhbHMuaDoxMjkyCisjOiBnbG9iYWxzLmg6MTMwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJFNDg2OiBQYXR0ZXJuIG5vdCBmb3VuZDogJXMiCiBtc2dzdHIgIkU0ODY6INjg4evu7SDt5SDt4Onk5e06ICVzIgogCi0jOiBnbG9iYWxzLmg6MTI5MworIzogZ2xvYmFscy5oOjEzMDIKIG1zZ2lkICJFNDg3OiBBcmd1bWVudCBtdXN0IGJlIHBvc2l0aXZlIgogbXNnc3RyICJFNDg3OiDP4PDg7OXy8CDk7uvm5e0g4fvy/CDv7uvu5ujy5ev87fvsIPfo8evu7CIKIAotIzogZ2xvYmFscy5oOjEyOTUKKyM6IGdsb2JhbHMuaDoxMzA0CiBtc2dpZCAiRTQ1OTogQ2Fubm90IGdvIGJhY2sgdG8gcHJldmlvdXMgZGlyZWN0b3J5IgogbXNnc3RyICJFNDU5OiDC7ufi8ODyIOIg7/Dl5Pvk8/no6SDq4PLg6+7jIO3l4u7n7O7m5e0iCiAKLSM6IGdsb2JhbHMuaDoxMjk5CisjOiBnbG9iYWxzLmg6MTMwOAogbXNnaWQgIkU0MjogTm8gRXJyb3JzIgogbXNnc3RyICJFNDI6IM746OHu6iDt5fIiCiAKLSM6IGdsb2JhbHMuaDoxMzAxCisjOiBnbG9iYWxzLmg6MTMxMAogbXNnaWQgIkU0MzogRGFtYWdlZCBtYXRjaCBzdHJpbmciCiBtc2dzdHIgIkU0Mzogz+7i8OXm5OXt4CDx8vDu6uAg8e7u8uLl8vHy4uj/IgogCi0jOiBnbG9iYWxzLmg6MTMwMgorIzogZ2xvYmFscy5oOjEzMTEKIG1zZ2lkICJFNDQ6IENvcnJ1cHRlZCByZWdleHAgcHJvZ3JhbSIKIG1zZ3N0ciAiRTQ0OiDP8O7j8ODs7OAg7uHw4OHu8uroIPDl4/Pr//Dt+/Ug4vvw4Obl7ejpIO/u4vDl5uTl7eAiCiAKLSM6IGdsb2JhbHMuaDoxMzAzCisjOiBnbG9iYWxzLmg6MTMxMgogbXNnaWQgIkU0NTogJ3JlYWRvbmx5JyBvcHRpb24gaXMgc2V0IChhZGQgISB0byBvdmVycmlkZSkiCiBtc2dzdHIgIiIKICJFNDU6IMLq6/735e3gIO7v9uj/ICdyZWFkb25seScgKOTu4eDi/PLlICEsIPfy7uH7IO3lIO7h8OD54PL8IOLt6Ozg7ej/KSIKIAotIzogZ2xvYmFscy5oOjEzMDUKKyM6IGdsb2JhbHMuaDoxMzE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkU0NjogQ2Fubm90IHNldCByZWFkLW9ubHkgdmFyaWFibGUgXCIlc1wiIgogbXNnc3RyICJFNDY6IM3l4u7n7O7m7e4g6Ofs5e3o8vwg5O7x8vPv7fP+IPLu6/zq7iDk6/8g9/Ll7ej/IO/l8OXs5e3t8/4gXCIlc1wiIgogCi0jOiBnbG9iYWxzLmg6MTMwOAorIzogZ2xvYmFscy5oOjEzMTcKIG1zZ2lkICJFNDc6IEVycm9yIHdoaWxlIHJlYWRpbmcgZXJyb3JmaWxlIgogbXNnc3RyICJFNDc6IM746OHq4CDv8Ogg9/Ll7ejoIPTg6evgIO746OHu6iIKIAotIzogZ2xvYmFscy5oOjEzMTEKKyM6IGdsb2JhbHMuaDoxMzIwCiBtc2dpZCAiRTQ4OiBOb3QgYWxsb3dlZCBpbiBzYW5kYm94IgogbXNnc3RyICJFNDg6IM3lIOTu7/Px6uDl8vH/IOIg7+Xx7vft6PblIgogCi0jOiBnbG9iYWxzLmg6MTMxMworIzogZ2xvYmFscy5oOjEzMjIKIG1zZ2lkICJFNTIzOiBOb3QgYWxsb3dlZCBoZXJlIgogbXNnc3RyICJFNTIzOiDH5OXx/CDt5SDw4Ofw5fjl7e4iCiAKLSM6IGdsb2JhbHMuaDoxMzE2CisjOiBnbG9iYWxzLmg6MTMyNQogbXNnaWQgIkUzNTk6IFNjcmVlbiBtb2RlIHNldHRpbmcgbm90IHN1cHBvcnRlZCIKIG1zZ3N0ciAiRTM1OTogxODt7fvpIPDl5ujsIP3q8ODt4CDt5SDv7uTk5fDm6OLg5fLx/yIKIAotIzogZ2xvYmFscy5oOjEzMTgKKyM6IGdsb2JhbHMuaDoxMzI3CiBtc2dpZCAiRTQ5OiBJbnZhbGlkIHNjcm9sbCBzaXplIgogbXNnc3RyICJFNDk6IM3l5O7v8/Hy6Oz76SDw4Ofs5fAg7/Du6vDz8uroIgogCi0jOiBnbG9iYWxzLmg6MTMxOQorIzogZ2xvYmFscy5oOjEzMjgKIG1zZ2lkICJFOTE6ICdzaGVsbCcgb3B0aW9uIGlzIGVtcHR5IgogbXNnc3RyICJFOTE6IMft4Pfl7ejl7CDu7/bo6CAnc2hlbGwnIP/i6//l8vH/IO/z8fLg/yDx8vDu6uAiCiAKLSM6IGdsb2JhbHMuaDoxMzIxCisjOiBnbG9iYWxzLmg6MTMzMAogbXNnaWQgIkUyNTU6IENvdWxkbid0IHJlYWQgaW4gc2lnbiBkYXRhISIKIG1zZ3N0ciAiRTI1NTogzeXi7ufs7ubt7iDv8O736PLg8vwg5ODt7fvlIO4g5+3g9+rg9SEiCiAKLSM6IGdsb2JhbHMuaDoxMzIzCisjOiBnbG9iYWxzLmg6MTMzMgogbXNnaWQgIkU3MjogQ2xvc2UgZXJyb3Igb24gc3dhcCBmaWxlIgogbXNnc3RyICJFNzI6IM746OHq4CDn4Orw+/Lo/yDx4u7vLfTg6evgIgogCi0jOiBnbG9iYWxzLmg6MTMyNAorIzogZ2xvYmFscy5oOjEzMzMKIG1zZ2lkICJFNzM6IHRhZyBzdGFjayBlbXB0eSIKIG1zZ3N0ciAiRTczOiDR8uXqIOzl8u7qIO/z8fLu6SIKIAotIzogZ2xvYmFscy5oOjEzMjUKKyM6IGdsb2JhbHMuaDoxMzM0CiBtc2dpZCAiRTc0OiBDb21tYW5kIHRvbyBjb21wbGV4IgogbXNnc3RyICJFNzQ6INHr6Pjq7uwg8evu5u3g/yDq7uzg7eTgIgogCi0jOiBnbG9iYWxzLmg6MTMyNgorIzogZ2xvYmFscy5oOjEzMzUKIG1zZ2lkICJFNzU6IE5hbWUgdG9vIGxvbmciCiBtc2dzdHIgIkU3NTog0evo+Oru7CDk6+jt7e7lIOjs/yIKIAotIzogZ2xvYmFscy5oOjEzMjcKKyM6IGdsb2JhbHMuaDoxMzM2CiBtc2dpZCAiRTc2OiBUb28gbWFueSBbIgogbXNnc3RyICJFNzY6INHr6Pjq7uwg7O3u4+4g8ejs4u7r7uIgWyIKIAotIzogZ2xvYmFscy5oOjEzMjgKKyM6IGdsb2JhbHMuaDoxMzM3CiBtc2dpZCAiRTc3OiBUb28gbWFueSBmaWxlIG5hbWVzIgogbXNnc3RyICJFNzc6INHr6Pjq7uwg7O3u4+4g6Oy47SD04Onr7uIiCiAKLSM6IGdsb2JhbHMuaDoxMzI5CisjOiBnbG9iYWxzLmg6MTMzOAogbXNnaWQgIkU0ODg6IFRyYWlsaW5nIGNoYXJhY3RlcnMiCiBtc2dzdHIgIkU0ODg6IMvo+O3o5SDx6Ozi7uv7IO3gIPXi7vHy5SIKIAotIzogZ2xvYmFscy5oOjEzMzAKKyM6IGdsb2JhbHMuaDoxMzM5CiBtc2dpZCAiRTc4OiBVbmtub3duIG1hcmsiCiBtc2dzdHIgIkU3ODogzeXo5+Ll8fLt4P8g7vLs5fLq4CIKIAotIzogZ2xvYmFscy5oOjEzMzEKKyM6IGdsb2JhbHMuaDoxMzQwCiBtc2dpZCAiRTc5OiBDYW5ub3QgZXhwYW5kIHdpbGRjYXJkcyIKIG1zZ3N0ciAiRTc5OiDN5eLu5+zu5u3uIOL77+7r7ejy/CDv7uTx8uDt7uLq8yDv7iDs4PHq5SIKIAotIzogZ2xvYmFscy5oOjEzMzMKKyM6IGdsb2JhbHMuaDoxMzQyCiBtc2dpZCAiRTU5MTogJ3dpbmhlaWdodCcgY2Fubm90IGJlIHNtYWxsZXIgdGhhbiAnd2lubWluaGVpZ2h0JyIKIG1zZ3N0ciAiIgogIkU1OTE6IMft4Pfl7ejlIO7v9ujoICd3aW5oZWlnaHQnIO3lIOzu5uXyIOH78vwg7OXt/PjlIOft4Pfl7ej/ICd3aW5taW5oZWlnaHQnIgogCi0jOiBnbG9iYWxzLmg6MTMzNQorIzogZ2xvYmFscy5oOjEzNDQKIG1zZ2lkICJFNTkyOiAnd2lud2lkdGgnIGNhbm5vdCBiZSBzbWFsbGVyIHRoYW4gJ3dpbm1pbndpZHRoJyIKIG1zZ3N0ciAiIgogIkU1OTI6IMft4Pfl7ejlIO7v9ujoICd3aW53aWR0aCcg7eUg7O7m5fIg4fvy/CDs5e38+OUg5+3g9+Xt6P8gJ3dpbm1pbndpZHRoJyIKIAotIzogZ2xvYmFscy5oOjEzMzgKKyM6IGdsb2JhbHMuaDoxMzQ3CiBtc2dpZCAiRTgwOiBFcnJvciB3aGlsZSB3cml0aW5nIgogbXNnc3RyICJFODA6IM746OHq4CDv8Ogg5+Dv6PHoIgogCi0jOiBnbG9iYWxzLmg6MTMzOQorIzogZ2xvYmFscy5oOjEzNDgKIG1zZ2lkICJaZXJvIGNvdW50IgogbXNnc3RyICLN8+vl4u7lIOft4Pfl7ejlIPH3uPL36OrgIgogCi0jOiBnbG9iYWxzLmg6MTM0MQorIzogZ2xvYmFscy5oOjEzNTAKIG1zZ2lkICJFODE6IFVzaW5nIDxTSUQ+IG5vdCBpbiBhIHNjcmlwdCBjb250ZXh0IgogbXNnc3RyICJFODE6IMjx7+7r/Ofu4uDt6OUgPFNJRD4g4u3lIOru7fLl6vHy4CDx9uXt4PDo/yIKIAotIzogZ2xvYmFscy5oOjEzNDQKKyM6IGdsb2JhbHMuaDoxMzUzCiBtc2dpZCAiRTQ0OTogSW52YWxpZCBleHByZXNzaW9uIHJlY2VpdmVkIgogbXNnc3RyICJFNDQ5OiDP7uvz9+Xt7iDt5eTu7/Px8ujs7uUg4vvw4Obl7ejlIgogCi0jOiBnbG9iYWxzLmg6MTM0NworIzogZ2xvYmFscy5oOjEzNTYKIG1zZ2lkICJFNDYzOiBSZWdpb24gaXMgZ3VhcmRlZCwgY2Fubm90IG1vZGlmeSIKIG1zZ3N0ciAiRTQ2MzogzeXi7ufs7ubt7iDo5+zl7ejy/CDu9fDg7f/l7PP+IO7h6+Dx8vwiCiAKLSN+IG1zZ2lkICJcIlxuIgotI34gbXNnc3RyICJcIlxuIgpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2V2YWwucHJvIGIvc3JjL3Byb3RvL2V2YWwucHJvCmluZGV4IGMxZGZiYjguLjgzZTEwYWIgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9ldmFsLnBybworKysgYi9zcmMvcHJvdG8vZXZhbC5wcm8KQEAgLTExLDYgKzExLDcgQEAKIHZvaWQgZXZhbF9wYXRjaCBfX0FSR1MoKGNoYXJfdSAqb3JpZ2ZpbGUsIGNoYXJfdSAqZGlmZmZpbGUsIGNoYXJfdSAqb3V0ZmlsZSkpOwogaW50IGV2YWxfdG9fYm9vbCBfX0FSR1MoKGNoYXJfdSAqYXJnLCBpbnQgKmVycm9yLCBjaGFyX3UgKipuZXh0Y21kLCBpbnQgc2tpcCkpOwogY2hhcl91ICpldmFsX3RvX3N0cmluZ19za2lwIF9fQVJHUygoY2hhcl91ICphcmcsIGNoYXJfdSAqKm5leHRjbWQsIGludCBza2lwKSk7CitpbnQgc2tpcF9leHByIF9fQVJHUygoY2hhcl91ICoqcHApKTsKIGNoYXJfdSAqZXZhbF90b19zdHJpbmcgX19BUkdTKChjaGFyX3UgKmFyZywgY2hhcl91ICoqbmV4dGNtZCkpOwogY2hhcl91ICpldmFsX3RvX3N0cmluZ19zYWZlIF9fQVJHUygoY2hhcl91ICphcmcsIGNoYXJfdSAqKm5leHRjbWQpKTsKIGludCBldmFsX3RvX251bWJlciBfX0FSR1MoKGNoYXJfdSAqZXhwcikpOwpkaWZmIC0tZ2l0IGEvc3JjL3Byb3RvL2V4X2NtZHMucHJvIGIvc3JjL3Byb3RvL2V4X2NtZHMucHJvCmluZGV4IDMzZjEwNWEuLmY2M2ZjZGEgMTAwNjQ0Ci0tLSBhL3NyYy9wcm90by9leF9jbWRzLnBybworKysgYi9zcmMvcHJvdG8vZXhfY21kcy5wcm8KQEAgLTM4LDYgKzM4LDcgQEAKIHZvaWQgd3JpdGVfdmltaW5mb19zdWJfc3RyaW5nIF9fQVJHUygoRklMRSAqZnApKTsKIHZvaWQgcHJlcGFyZV90YWdwcmV2aWV3IF9fQVJHUygodm9pZCkpOwogdm9pZCBleF9oZWxwIF9fQVJHUygoZXhhcmdfVCAqZWFwKSk7CitjaGFyX3UgKmNoZWNrX2hlbHBfbGFuZyBfX0FSR1MoKGNoYXJfdSAqYXJnKSk7CiBpbnQgaGVscF9oZXVyaXN0aWMgX19BUkdTKChjaGFyX3UgKm1hdGNoZWRfc3RyaW5nLCBpbnQgb2Zmc2V0LCBpbnQgd3JvbmdfY2FzZSkpOwogaW50IGZpbmRfaGVscF90YWdzIF9fQVJHUygoY2hhcl91ICphcmcsIGludCAqbnVtX21hdGNoZXMsIGNoYXJfdSAqKiptYXRjaGVzLCBpbnQga2VlcF9sYW5nKSk7CiB2b2lkIGZpeF9oZWxwX2J1ZmZlciBfX0FSR1MoKHZvaWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9xdWlja2ZpeC5jIGIvc3JjL3F1aWNrZml4LmMKaW5kZXggNWRiYmMxYi4uYzI1YTBiZSAxMDA2NDQKLS0tIGEvc3JjL3F1aWNrZml4LmMKKysrIGIvc3JjL3F1aWNrZml4LmMKQEAgLTEwMDYsNiArMTAwNiw3IEBACiAjaWZkZWYgRkVBVF9GT0xESU5HCiAgICAgaW50CQkJb2xkX0tleVR5cGVkID0gS2V5VHlwZWQ7IC8qIGdldHRpbmcgZmlsZSBtYXkgcmVzZXQgaXQgKi8KICNlbmRpZgorICAgIGludAkJCW9rID0gT0s7CiAKICAgICBpZiAocWZfY3VybGlzdCA+PSBxZl9saXN0Y291bnQgfHwgcWZfbGlzdHNbcWZfY3VybGlzdF0ucWZfY291bnQgPT0gMCkKICAgICB7CkBAIC0xMDk3LDYgKzEwOTgsNDIgQEAKIAlwcmludF9tZXNzYWdlID0gRkFMU0U7CiAKICAgICAvKgorICAgICAqIEZvciAiOmhlbHBncmVwIiBmaW5kIGEgaGVscCB3aW5kb3cgb3Igb3BlbiBvbmUuCisgICAgICovCisgICAgaWYgKHFmX3B0ci0+cWZfdHlwZSA9PSAxICYmICFjdXJ3aW4tPndfYnVmZmVyLT5iX2hlbHApCisgICAgeworCXdpbl9UCSp3cDsKKwlpbnQJbjsKKworCWZvciAod3AgPSBmaXJzdHdpbjsgd3AgIT0gTlVMTDsgd3AgPSB3cC0+d19uZXh0KQorCSAgICBpZiAod3AtPndfYnVmZmVyICE9IE5VTEwgJiYgd3AtPndfYnVmZmVyLT5iX2hlbHApCisJCWJyZWFrOworCWlmICh3cCAhPSBOVUxMICYmIHdwLT53X2J1ZmZlci0+Yl9ud2luZG93cyA+IDApCisJICAgIHdpbl9lbnRlcih3cCwgVFJVRSk7CisJZWxzZQorCXsKKwkgICAgLyoKKwkgICAgICogU3BsaXQgb2ZmIGhlbHAgd2luZG93OyBwdXQgaXQgYXQgZmFyIHRvcCBpZiBubyBwb3NpdGlvbgorCSAgICAgKiBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IHdpbmRvdyBpcyB2ZXJ0aWNhbGx5IHNwbGl0IGFuZCBuYXJyb3cuCisJICAgICAqLworCSAgICBuID0gV1NQX0hFTFA7CisjIGlmZGVmIEZFQVRfVkVSVFNQTElUCisJICAgIGlmIChjbWRtb2Quc3BsaXQgPT0gMCAmJiBjdXJ3aW4tPndfd2lkdGggIT0gQ29sdW1ucworCQkJCQkJICAgICAgJiYgY3Vyd2luLT53X3dpZHRoIDwgODApCisJCW4gfD0gV1NQX1RPUDsKKyMgZW5kaWYKKwkgICAgaWYgKHdpbl9zcGxpdCgwLCBuKSA9PSBGQUlMKQorCQlnb3RvIHRoZWVuZDsKKworCSAgICBpZiAoY3Vyd2luLT53X2hlaWdodCA8IHBfaGgpCisJCXdpbl9zZXRoZWlnaHQoKGludClwX2hoKTsKKwl9CisKKwlpZiAoIXBfaW0pCisJICAgIHJlc3RhcnRfZWRpdCA9IDA7CSAgICAvKiBkb24ndCB3YW50IGluc2VydCBtb2RlIGluIGhlbHAgZmlsZSAqLworICAgIH0KKworICAgIC8qCiAgICAgICogSWYgY3VycmVudGx5IGluIHRoZSBxdWlja2ZpeCB3aW5kb3csIGZpbmQgYW5vdGhlciB3aW5kb3cgdG8gc2hvdyB0aGUKICAgICAgKiBmaWxlIGluLgogICAgICAqLwpAQCAtMTE3MCw4ICsxMjA3LDI4IEBACiAgICAgICovCiAgICAgb2xkX2N1cmJ1ZiA9IGN1cmJ1ZjsKICAgICBvbGRfbG51bSA9IGN1cndpbi0+d19jdXJzb3IubG51bTsKLSAgICBpZiAocWZfcHRyLT5xZl9mbnVtID09IDAgfHwgYnVmbGlzdF9nZXRmaWxlKHFmX3B0ci0+cWZfZm51bSwKLQkJICAgIChsaW5lbnJfVCkxLCBHRVRGX1NFVE1BUksgfCBHRVRGX1NXSVRDSCwgZm9yY2VpdCkgPT0gT0spCisKKyAgICBpZiAocWZfcHRyLT5xZl9mbnVtICE9IDApCisgICAgeworCWlmIChxZl9wdHItPnFmX3R5cGUgPT0gMSkKKwl7CisJICAgIC8qIE9wZW4gaGVscCBmaWxlIChkb19lY21kKCkgd2lsbCBzZXQgYl9oZWxwIGZsYWcsIHJlYWRmaWxlKCkgd2lsbAorCSAgICAgKiBzZXQgYl9wX3JvIGZsYWcpLiAqLworCSAgICBpZiAoIWNhbl9hYmFuZG9uKGN1cmJ1ZiwgZm9yY2VpdCkpCisJICAgIHsKKwkJRU1TRyhfKGVfbm93cnRtc2cpKTsKKwkJb2sgPSBGQUxTRTsKKwkgICAgfQorCSAgICBlbHNlCisJCW9rID0gZG9fZWNtZChxZl9wdHItPnFmX2ZudW0sIE5VTEwsIE5VTEwsIE5VTEwsIChsaW5lbnJfVCkxLAorCQkJCQkJICAgRUNNRF9ISURFICsgRUNNRF9TRVRfSEVMUCk7CisJfQorCWVsc2UKKwkgICAgb2sgPSBidWZsaXN0X2dldGZpbGUocWZfcHRyLT5xZl9mbnVtLAorCQkJICAgIChsaW5lbnJfVCkxLCBHRVRGX1NFVE1BUksgfCBHRVRGX1NXSVRDSCwgZm9yY2VpdCk7CisgICAgfQorCisgICAgaWYgKG9rID09IE9LKQogICAgIHsKIAkvKiBXaGVuIG5vdCBzd2l0Y2hlZCB0byBhbm90aGVyIGJ1ZmZlciwgc3RpbGwgbmVlZCB0byBzZXQgcGMgbWFyayAqLwogCWlmIChjdXJidWYgPT0gb2xkX2N1cmJ1ZikKQEAgLTIxNDUsMTEgKzIyMDIsMTkgQEAKICAgICBpbnQJCWZpOwogICAgIHN0cnVjdCBxZl9saW5lICpwcmV2cCA9IE5VTEw7CiAgICAgbG9uZwlsbnVtOworI2lmZGVmIEZFQVRfTVVMVElfTEFORworICAgIGNoYXJfdQkqbGFuZzsKKyNlbmRpZgogCiAgICAgLyogTWFrZSAnY3BvcHRpb25zJyBlbXB0eSwgdGhlICdsJyBmbGFnIHNob3VsZCBub3QgYmUgdXNlZCBoZXJlLiAqLwogICAgIHNhdmVfY3BvID0gcF9jcG87CiAgICAgcF9jcG8gPSAoY2hhcl91ICopIiI7CiAKKyNpZmRlZiBGRUFUX01VTFRJX0xBTkcKKyAgICAvKiBDaGVjayBmb3IgYSBzcGVjaWZpZWQgbGFuZ3VhZ2UgKi8KKyAgICBsYW5nID0gY2hlY2tfaGVscF9sYW5nKGVhcC0+YXJnKTsKKyNlbmRpZgorCiAgICAgcmVnbWF0Y2gucmVncHJvZyA9IHZpbV9yZWdjb21wKGVhcC0+YXJnLCBSRV9NQUdJQyArIFJFX1NUUklORyk7CiAgICAgcmVnbWF0Y2gucm1faWMgPSBGQUxTRTsKICAgICBpZiAocmVnbWF0Y2gucmVncHJvZyAhPSBOVUxMKQpAQCAtMjE3Miw2ICsyMjM3LDE2IEBACiAJICAgIHsKIAkJZm9yIChmaSA9IDA7IGZpIDwgZmNvdW50ICYmICFnb3RfaW50OyArK2ZpKQogCQl7CisjaWZkZWYgRkVBVF9NVUxUSV9MQU5HCisJCSAgICAvKiBTa2lwIGZpbGVzIGZvciBhIGRpZmZlcmVudCBsYW5ndWFnZS4gKi8KKwkJICAgIGlmIChsYW5nICE9IE5VTEwKKwkJCSAgICAmJiBTVFJOSUNNUChsYW5nLCBmbmFtZXNbZmldCisJCQkJCSAgICArIFNUUkxFTihmbmFtZXNbZmldKSAtIDMsIDIpICE9IDAKKwkJCSAgICAmJiAhKFNUUk5JQ01QKGxhbmcsICJlbiIsIDIpID09IDAKKwkJCQkmJiBTVFJOSUNNUCgidHh0IiwgZm5hbWVzW2ZpXQorCQkJCQkgICArIFNUUkxFTihmbmFtZXNbZmldKSAtIDMsIDMpID09IDApKQorCQkJICAgIGNvbnRpbnVlOworI2VuZGlmCiAJCSAgICBmZCA9IGZvcGVuKChjaGFyICopZm5hbWVzW2ZpXSwgInIiKTsKIAkJICAgIGlmIChmZCAhPSBOVUxMKQogCQkgICAgewpAQCAtMjIyNyw2ICsyMzAyLDggQEAKICAgICAvKiBKdW1wIHRvIGZpcnN0IG1hdGNoLiAqLwogICAgIGlmIChxZl9saXN0c1txZl9jdXJsaXN0XS5xZl9jb3VudCA+IDApCiAJcWZfanVtcCgwLCAwLCBGQUxTRSk7CisgICAgZWxzZQorCUVNU0cyKF8oZV9ub21hdGNoMiksIGVhcC0+YXJnKTsKIH0KIAogI2VuZGlmIC8qIEZFQVRfUVVJQ0tGSVggKi8KZGlmZiAtLWdpdCBhL3NyYy9zZWFyY2guYyBiL3NyYy9zZWFyY2guYwppbmRleCA5YzZjYzZkLi5hY2U4ZmE4IDEwMDY0NAotLS0gYS9zcmMvc2VhcmNoLmMKKysrIGIvc3JjL3NlYXJjaC5jCkBAIC0zMDUyLDEzICszMDUyLDE2IEBACiAJLS1jb3VudDsKICAgICB9CiAKLSAgICBpZiAoaW5jbHVkZV93aGl0ZSAmJiBjbHMoKSAhPSAwKQorICAgIGlmIChpbmNsdWRlX3doaXRlICYmIChjbHMoKSAhPSAwCisJCSB8fCAoY3Vyd2luLT53X2N1cnNvci5jb2wgPT0gMCAmJiAhaW5jbHVzaXZlKSkpCiAgICAgewogCS8qCiAJICogSWYgd2UgZG9uJ3QgaW5jbHVkZSB3aGl0ZSBzcGFjZSBhdCB0aGUgZW5kLCBtb3ZlIHRoZSBzdGFydAogCSAqIHRvIGluY2x1ZGUgc29tZSB3aGl0ZSBzcGFjZSB0aGVyZS4gVGhpcyBtYWtlcyAiZGF3IiB3b3JrCiAJICogYmV0dGVyIG9uIHRoZSBsYXN0IHdvcmQgaW4gYSBzZW50ZW5jZSAoYW5kICIyZGF3IiBvbiBsYXN0LWJ1dC1vbmUKLQkgKiB3b3JkKS4gIEJ1dCBkb24ndCBkZWxldGUgd2hpdGUgc3BhY2UgYXQgc3RhcnQgb2YgbGluZSAoaW5kZW50KS4KKwkgKiB3b3JkKS4gIEFsc28gd2hlbiAiMmRhdyIgZGVsZXRlcyAid29yZC4iIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUKKwkgKiAoY3Vyc29yIGlzIGF0IHN0YXJ0IG9mIG5leHQgbGluZSkuCisJICogQnV0IGRvbid0IGRlbGV0ZSB3aGl0ZSBzcGFjZSBhdCBzdGFydCBvZiBsaW5lIChpbmRlbnQpLgogCSAqLwogCXBvcyA9IGN1cndpbi0+d19jdXJzb3I7CS8qIHNhdmUgY3Vyc29yIHBvc2l0aW9uICovCiAJY3Vyd2luLT53X2N1cnNvciA9IHN0YXJ0X3BvczsK