ZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpLy5jdnNpZ25vcmUgYi8uY3ZzaWdub3JlCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS8uY3ZzaWdub3JlCnJlbmFtZSB0byAuY3ZzaWdub3JlCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9SRUFETUUudHh0IGIvUkVBRE1FLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvUkVBRE1FLnR4dApyZW5hbWUgdG8gUkVBRE1FLnR4dApkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvZG9jcy9tYW5pZmVzdC9tYW5pZmVzdC5tZiBiL2RvY3MvbWFuaWZlc3QvbWFuaWZlc3QubWYKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL2RvY3MvbWFuaWZlc3QvbWFuaWZlc3QubWYKcmVuYW1lIHRvIGRvY3MvbWFuaWZlc3QvbWFuaWZlc3QubWYKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3BvbS54bWwgYi9wb20ueG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9wb20ueG1sCnJlbmFtZSB0byBwb20ueG1sCmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL2Fubm90YXRpb25zLnRleCBiL3NwZWMvY2hhcHRlcnMvYW5ub3RhdGlvbnMudGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTQ3ZTc1Li4wMDAwMDAwCi0tLSBhL3NwZWMvY2hhcHRlcnMvYW5ub3RhdGlvbnMudGV4CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotXGNoYXB0ZXJ7U3VtbWFyeSBvZiBBbm5vdGF0aW9uc30KLSVcYmVnaW57Y2VudGVyfQotXGJlZ2lue2xvbmd0YWJsZX17fGx8cHsxLjJpbn18cHszLjVpbn18fQotXGhsaW5lCi1cYmZzZXJpZXMgQW5ub3RhdGlvbiAmIFxiZnNlcmllcyBUYXJnZXQgJiBcYmZzZXJpZXMgRGVzY3JpcHRpb24gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmVcaGxpbmVcZW5kaGVhZAotXGNvZGV7Q29uc3VtZXN9ICYgXHJhZ2dlZHJpZ2h0IFR5cGUgb3IgbWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyBhIGxpc3Qgb2YgbWVkaWEgdHlwZXMgdGhhdCBjYW4gYmUgY29uc3VtZWQuIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtQcm9kdWNlc30gJiBccmFnZ2VkcmlnaHQgVHlwZSBvciBtZXRob2QgJiBccmFnZ2VkcmlnaHQgU3BlY2lmaWVzIGEgbGlzdCBvZiBtZWRpYSB0eXBlcyB0aGF0IGNhbiBiZSBwcm9kdWNlZC4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0dFVH0gJiBccmFnZ2VkcmlnaHQgTWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyB0aGF0IHRoZSBhbm5vdGF0ZWQgbWV0aG9kIGhhbmRsZXMgSFRUUCBHRVQgcmVxdWVzdHMuICBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7UE9TVH0gJiBccmFnZ2VkcmlnaHQgTWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyB0aGF0IHRoZSBhbm5vdGF0ZWQgbWV0aG9kIGhhbmRsZXMgSFRUUCBQT1NUIHJlcXVlc3RzLiAgXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle1BVVH0gJiBccmFnZ2VkcmlnaHQgTWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyB0aGF0IHRoZSBhbm5vdGF0ZWQgbWV0aG9kIGhhbmRsZXMgSFRUUCBQVVQgcmVxdWVzdHMuICBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7REVMRVRFfSAmIFxyYWdnZWRyaWdodCBNZXRob2QgJiBccmFnZ2VkcmlnaHQgU3BlY2lmaWVzIHRoYXQgdGhlIGFubm90YXRlZCBtZXRob2QgaGFuZGxlcyBIVFRQIERFTEVURSByZXF1ZXN0cy4gIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtIRUFEfSAmIFxyYWdnZWRyaWdodCBNZXRob2QgJiBccmFnZ2VkcmlnaHQgU3BlY2lmaWVzIHRoYXQgdGhlIGFubm90YXRlZCBtZXRob2QgaGFuZGxlcyBIVFRQIEhFQUQgcmVxdWVzdHMuIE5vdGUgdGhhdCBIRUFEIG1heSBiZSBhdXRvbWF0aWNhbGx5IGhhbmRsZWQsIHNlZSBzZWN0aW9uIFxyZWZ7aGVhZF9hbmRfb3B0aW9uc30uIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtBcHBsaWNhdGlvblBhdGh9ICYgXHJhZ2dlZHJpZ2h0IFR5cGUgJiBccmFnZ2VkcmlnaHQgU3BlY2lmaWVzIHRoZSByZXNvdXJjZS13aWRlIGFwcGxpY2F0aW9uIHBhdGggdGhhdCBmb3JtcyB0aGUgYmFzZSBVUkkgb2YgYWxsIHJvb3QgcmVzb3VyY2UgY2xhc3Nlcy4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle1BhdGh9ICYgXHJhZ2dlZHJpZ2h0IFR5cGUgb3IgbWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyBhIHJlbGF0aXZlIHBhdGggZm9yIGEgcmVzb3VyY2UuIFdoZW4gdXNlZCBvbiBhIGNsYXNzIHRoaXMgYW5ub3RhdGlvbiBpZGVudGlmaWVzIHRoYXQgY2xhc3MgYXMgYSByb290IHJlc291cmNlLiBXaGVuIHVzZWQgb24gYSBtZXRob2QgdGhpcyBhbm5vdGF0aW9uIGlkZW50aWZpZXMgYSBzdWItcmVzb3VyY2UgbWV0aG9kIG9yIGxvY2F0b3IuIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtQYXRoUGFyYW19ICYgXHJhZ2dlZHJpZ2h0IFBhcmFtZXRlciwgZmllbGQgb3IgbWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiBhIG1ldGhvZCBwYXJhbWV0ZXIsIGNsYXNzIGZpZWxkLCBvciBiZWFuIHByb3BlcnR5IGlzIHRvIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSByZXF1ZXN0IFVSSSBwYXRoLiBUaGUgdmFsdWUgb2YgdGhlIGFubm90YXRpb24gaWRlbnRpZmllcyB0aGUgbmFtZSBvZiBhIFVSSSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle1F1ZXJ5UGFyYW19ICYgXHJhZ2dlZHJpZ2h0IFBhcmFtZXRlciwgZmllbGQgb3IgbWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiBhIG1ldGhvZCBwYXJhbWV0ZXIsIGNsYXNzIGZpZWxkLCBvciBiZWFuIHByb3BlcnR5IGlzIHRvIGJlIGV4dHJhY3RlZCBmcm9tIGEgVVJJIHF1ZXJ5IHBhcmFtZXRlci4gVGhlIHZhbHVlIG9mIHRoZSBhbm5vdGF0aW9uIGlkZW50aWZpZXMgdGhlIG5hbWUgb2YgYSBxdWVyeSBwYXJhbWV0ZXIuIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtGb3JtUGFyYW19ICYgXHJhZ2dlZHJpZ2h0IFBhcmFtZXRlciwgZmllbGQgb3IgbWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiBhIG1ldGhvZCBwYXJhbWV0ZXIgaXMgdG8gYmUgZXh0cmFjdGVkIGZyb20gYSBmb3JtIHBhcmFtZXRlciBpbiBhIHJlcXVlc3QgZW50aXR5IGJvZHkuIFRoZSB2YWx1ZSBvZiB0aGUgYW5ub3RhdGlvbiBpZGVudGlmaWVzIHRoZSBuYW1lIG9mIGEgZm9ybSBwYXJhbWV0ZXIuIE5vdGUgdGhhdCB3aGlsc3QgdGhlIGFubm90YXRpb24gdGFyZ2V0IGFsbG93cyB1c2Ugb24gZmllbGRzIGFuZCBtZXRob2RzLCB0aGUgc3BlY2lmaWNhdGlvbiBvbmx5IHJlcXVpcmVzIHN1cHBvcnQgZm9yIHVzZSBvbiByZXNvdXJjZSBtZXRob2QgcGFyYW1ldGVycy5cdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7TWF0cml4UGFyYW19ICYgXHJhZ2dlZHJpZ2h0IFBhcmFtZXRlciwgZmllbGQgb3IgbWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyB0aGF0IHRoZSB2YWx1ZSBvZiBhIG1ldGhvZCBwYXJhbWV0ZXIsIGNsYXNzIGZpZWxkLCBvciBiZWFuIHByb3BlcnR5IGlzIHRvIGJlIGV4dHJhY3RlZCBmcm9tIGEgVVJJIG1hdHJpeCBwYXJhbWV0ZXIuIFRoZSB2YWx1ZSBvZiB0aGUgYW5ub3RhdGlvbiBpZGVudGlmaWVzIHRoZSBuYW1lIG9mIGEgbWF0cml4IHBhcmFtZXRlci4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0Nvb2tpZVBhcmFtfSAmIFxyYWdnZWRyaWdodCBQYXJhbWV0ZXIsIGZpZWxkIG9yIG1ldGhvZCAmIFxyYWdnZWRyaWdodCBTcGVjaWZpZXMgdGhhdCB0aGUgdmFsdWUgb2YgYSBtZXRob2QgcGFyYW1ldGVyLCBjbGFzcyBmaWVsZCwgb3IgYmVhbiBwcm9wZXJ0eSBpcyB0byBiZSBleHRyYWN0ZWQgZnJvbSBhIEhUVFAgY29va2llLiBUaGUgdmFsdWUgb2YgdGhlIGFubm90YXRpb24gaWRlbnRpZmllcyB0aGUgbmFtZSBvZiBhIHRoZSBjb29raWUuIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtIZWFkZXJQYXJhbX0gJiBccmFnZ2VkcmlnaHQgUGFyYW1ldGVyLCBmaWVsZCBvciBtZXRob2QgJiBccmFnZ2VkcmlnaHQgU3BlY2lmaWVzIHRoYXQgdGhlIHZhbHVlIG9mIGEgbWV0aG9kIHBhcmFtZXRlciwgY2xhc3MgZmllbGQsIG9yIGJlYW4gcHJvcGVydHkgaXMgdG8gYmUgZXh0cmFjdGVkIGZyb20gYSBIVFRQIGhlYWRlci4gVGhlIHZhbHVlIG9mIHRoZSBhbm5vdGF0aW9uIGlkZW50aWZpZXMgdGhlIG5hbWUgb2YgYSBIVFRQIGhlYWRlci4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0VuY29kZWR9ICYgXHJhZ2dlZHJpZ2h0IFR5cGUsIGNvbnN0cnVjdG9yLCBtZXRob2QsIGZpZWxkIG9yIHBhcmFtZXRlciAmIFxyYWdnZWRyaWdodCBEaXNhYmxlcyBhdXRvbWF0aWMgVVJJIGRlY29kaW5nIGZvciBwYXRoLCBxdWVyeSwgZm9ybSBhbmQgbWF0cml4IHBhcmFtZXRlcnMuIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtEZWZhdWx0VmFsdWV9ICYgXHJhZ2dlZHJpZ2h0IFBhcmFtZXRlciwgZmllbGQgb3IgbWV0aG9kICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyBhIGRlZmF1bHQgdmFsdWUgZm9yIGEgZmllbGQsIHByb3BlcnR5IG9yIG1ldGhvZCBwYXJhbWV0ZXIgYW5ub3RhdGVkIHdpdGggXFF1ZXJ5UGFyYW0sIFxNYXRyaXhQYXJhbSwgXENvb2tpZVBhcmFtLCBcRm9ybVBhcmFtXCBvciBcSGVhZGVyUGFyYW0uIFRoZSBzcGVjaWZpZWQgdmFsdWUgd2lsbCBiZSB1c2VkIGlmIHRoZSBjb3JyZXNwb25kaW5nIHF1ZXJ5IG9yIG1hdHJpeCBwYXJhbWV0ZXIgaXMgbm90IHByZXNlbnQgaW4gdGhlIHJlcXVlc3QgVVJJLCBpZiB0aGUgY29ycmVzcG9uZGluZyBmb3JtIHBhcmFtZXRlciBpcyBub3QgaW4gdGhlIHJlcXVlc3QgZW50aXR5IGJvZHksIG9yIGlmIHRoZSBjb3JyZXNwb25kaW5nIEhUVFAgaGVhZGVyIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVxdWVzdC5cdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7Q29udGV4dH0gJiBccmFnZ2VkcmlnaHQgRmllbGQsIG1ldGhvZCBvciBwYXJhbWV0ZXIgJiBccmFnZ2VkcmlnaHQgSWRlbnRpZmllcyBhbiBpbmplY3Rpb24gdGFyZ2V0IGZvciBvbmUgb2YgdGhlIHR5cGVzIGxpc3RlZCBpbiBzZWN0aW9uIFxyZWZ7Y29udGV4dHR5cGVzfSBvciB0aGUgYXBwbGljYWJsZSBzZWN0aW9uIG9mIGNoYXB0ZXIgXHJlZntlbnZpcm9ubWVudH0uIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtIdHRwTWV0aG9kfSAmIFxyYWdnZWRyaWdodCBBbm5vdGF0aW9uICYgXHJhZ2dlZHJpZ2h0IFNwZWNpZmllcyB0aGUgSFRUUCBtZXRob2QgZm9yIGEgcmVxdWVzdCBtZXRob2QgZGVzaWduYXRvciBhbm5vdGF0aW9uLiBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7UHJvdmlkZXJ9ICYgXHJhZ2dlZHJpZ2h0IFR5cGUgJiBccmFnZ2VkcmlnaHQgU3BlY2lmaWVzIHRoYXQgdGhlIGFubm90YXRlZCBjbGFzcyBpbXBsZW1lbnRzIGEgXGpheHJzXCBleHRlbnNpb24gaW50ZXJmYWNlLiBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGVuZHtsb25ndGFibGV9Ci0lXGVuZHtjZW50ZXJ9CmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL2FwcGxpY2F0aW9ucy50ZXggYi9zcGVjL2NoYXB0ZXJzL2FwcGxpY2F0aW9ucy50ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhMWMyOTAuLjAwMDAwMDAKLS0tIGEvc3BlYy9jaGFwdGVycy9hcHBsaWNhdGlvbnMudGV4CisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotXGNoYXB0ZXJ7QXBwbGljYXRpb25zfQotXGxhYmVse2FwcGxpY2F0aW9uc30KLQotQSBcamF4cnNcIGFwcGxpY2F0aW9uIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIHJlc291cmNlcyAoc2VlIGNoYXB0ZXIgXHJlZntyZXNvdXJjZXN9KSBhbmQgemVybyBvciBtb3JlIHByb3ZpZGVycyAoc2VlIGNoYXB0ZXIgXHJlZntwcm92aWRlcnN9KS4gVGhpcyBjaGFwdGVyIGRlc2NyaWJlcyBhc3BlY3RzIG9mIFxqYXhyc1wgdGhhdCBhcHBseSB0byBhbiBhcHBsaWNhdGlvbiBhcyBhIHdob2xlLCBzdWJzZXF1ZW50IGNoYXB0ZXJzIGRlc2NyaWJlIHBhcnRpY3VsYXIgYXNwZWN0cyBvZiBhIFxqYXhyc1wgYXBwbGljYXRpb24gYW5kIHJlcXVpcmVtZW50cyBvbiBcamF4cnNcIGltcGxlbWVudGF0aW9ucy4KLQotXHNlY3Rpb257Q29uZmlndXJhdGlvbn0KLVxsYWJlbHtjb25maWd9Ci0KLVRoZSByZXNvdXJjZXMgYW5kIHByb3ZpZGVycyB0aGF0IG1ha2UgdXAgYSBcamF4cnNcIGFwcGxpY2F0aW9uIGFyZSBjb25maWd1cmVkIHZpYSBhbiBhcHBsaWNhdGlvbi1zdXBwbGllZCBzdWJjbGFzcyBvZiBcY29kZXtBcHBsaWNhdGlvbn0uIEFuIGltcGxlbWVudGF0aW9uIE1BWSBwcm92aWRlIGFsdGVybmF0ZSBtZWNoYW5pc21zIGZvciBsb2NhdGluZyByZXNvdXJjZSBjbGFzc2VzIGFuZCBwcm92aWRlcnMgKGUuZy4gcnVudGltZSBjbGFzcyBzY2FubmluZykgYnV0IHVzZSBvZiBcY29kZXtBcHBsaWNhdGlvbn0gaXMgdGhlIG9ubHkgcG9ydGFibGUgbWVhbnMgb2YgY29uZmlndXJhdGlvbi4KLQotXHNlY3Rpb257VmFsaWRhdGlvbn0KLQotU3BlY2lmaWMgdmFsaWRhdGlvbiByZXF1aXJlbWVudHMgYXJlIGRldGFpbGVkIHRocm91Z2hvdXQgdGhpcyBzcGVjaWZpY2F0aW9uIGFuZCB0aGUgXGpheHJzXCBKYXZhZG9jcy4gSW1wbGVtZW50YXRpb25zIE1BWSBwZXJmb3JtIGFkZGl0aW9uYWwgdmFsaWRhdGlvbiB3aGVyZSBmZWFzaWJsZSBhbmQgU0hPVUxEIHJlcG9ydCBhbnkgaXNzdWVzIGFyaXNpbmcgZnJvbSBzdWNoIHZhbGlkYXRpb24gdG8gdGhlIHVzZXIuCi0KLVxzZWN0aW9ue1B1YmxpY2F0aW9ufQotCi1BcHBsaWNhdGlvbnMgYXJlIHB1Ymxpc2hlZCBpbiBkaWZmZXJlbnQgd2F5cyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXBwbGljYXRpb24gaXMgcnVuIGluIGEgSmF2YSBTRSBlbnZpcm9ubWVudCBvciB3aXRoaW4gYSBjb250YWluZXIuIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIGFsdGVybmF0ZSBtZWFucyBvZiBwdWJsaWNhdGlvbi4KLQotXHN1YnNlY3Rpb257SmF2YSBTRX0KLQotSW4gYSBKYXZhIFNFIGVudmlyb25tZW50IGEgY29uZmlndXJlZCBpbnN0YW5jZSBvZiBhbiBlbmRwb2ludCBjbGFzcyBjYW4gYmUgb2J0YWluZWQgdXNpbmcgdGhlIFxjb2Rle2NyZWF0ZVwtRW5kcG9pbnR9IG1ldGhvZCBvZiBccmQuIFRoZSBhcHBsaWNhdGlvbiBzdXBwbGllcyBhbiBpbnN0YW5jZSBvZiBcY29kZXtBcHBsaWNhdGlvbn0gYW5kIHRoZSB0eXBlIG9mIGVuZHBvaW50IHJlcXVpcmVkLiBBbiBpbXBsZW1lbnRhdGlvbiBNQVkgc3VwcG9ydCB6ZXJvIG9yIG1vcmUgZW5kcG9pbnQgdHlwZXMgb2YgYW55IGRlc2lyZWQgdHlwZS4KLQotSG93IHRoZSByZXN1bHRpbmcgZW5kcG9pbnQgY2xhc3MgaW5zdGFuY2UgaXMgdXNlZCB0byBwdWJsaXNoIHRoZSBhcHBsaWNhdGlvbiBpcyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIHNwZWNpZmljYXRpb24uCi0KLVxzdWJzdWJzZWN0aW9ue0pBWC1XU30KLQotQW4gaW1wbGVtZW50YXRpb24gdGhhdCBzdXBwb3J0cyBwdWJsaWNhdGlvbiB2aWEgSkFYLVdTIE1VU1Qgc3VwcG9ydCBcY29kZXtjcmVhdGVcLUVuZHBvaW50fSB3aXRoIGFuIGVuZHBvaW50IHR5cGUgb2YgXGNvZGV7amF2YXhcLS54bWxcLS53c1wtLlByb3ZpZGVyfS4gSkFYLVdTIGRlc2NyaWJlcyBob3cgYSBcY29kZXtQcm92aWRlcn0gYmFzZWQgZW5kcG9pbnQgY2FuIGJlIHB1Ymxpc2hlZCBpbiBhbiBTRSBlbnZpcm9ubWVudC4KLQotXHN1YnNlY3Rpb257U2VydmxldH0KLVxsYWJlbHtzZXJ2bGV0fQotCi1BIFxqYXhyc1wgYXBwbGljYXRpb24gaXMgcGFja2FnZWQgYXMgYSBXZWIgYXBwbGljYXRpb24gaW4gYSBcY29kZXsud2FyfSBmaWxlLiBUaGUgYXBwbGljYXRpb24gY2xhc3NlcyBhcmUgcGFja2FnZWQgaW4gXGNvZGV7V0VCLUlORi9jbGFzc2VzfSBvciBcY29kZXtXRUItSU5GL2xpYn0gYW5kIHJlcXVpcmVkIGxpYnJhcmllcyBhcmUgcGFja2FnZWQgaW4gXGNvZGV7V0VCLUlORi9saWJ9LiBTZWUgdGhlIFNlcnZsZXQgc3BlY2lmaWNhdGlvbiBmb3IgZnVsbCBkZXRhaWxzIG9uIHBhY2thZ2luZyBvZiB3ZWIgYXBwbGljYXRpb25zLgotCi1JdCBpcyBSRUNPTU1FTkRFRCB0aGF0IGltcGxlbWVudGF0aW9ucyBzdXBwb3J0IHRoZSBTZXJ2bGV0IDMgZnJhbWV3b3JrIHBsdWdnYWJpbGl0eSBtZWNoYW5pc20gdG8gZW5hYmxlIHBvcnRhYmlsaXR5IGJldHdlZW4gY29udGFpbmVycyBhbmQgdG8gYXZhaWwgdGhlbXNlbHZlcyBvZiBjb250YWluZXItc3VwcGxpZWQgY2xhc3Mgc2Nhbm5pbmcgZmFjaWxpdGllcy4gV2hlbiB1c2luZyB0aGUgcGx1Z2dhYmlsaXR5IG1lY2hhbmlzbSB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgTVVTVCBiZSBtZXQ6Ci0KLVxiZWdpbntpdGVtaXplfQotXGl0ZW0gSWYgbm8gXGNvZGV7QXBwbGljYXRpb259IHN1YmNsYXNzIGlzIHByZXNlbnQgdGhlIGFkZGVkIHNlcnZsZXQgTVVTVCBiZSBuYW1lZDoKLVxiZWdpbntxdW90ZX1cY29kZXtqYXZheC5cLXdzLlwtcnMuXC1jb3JlLlwtQXBwbGljYXRpb259XGVuZHtxdW90ZX0gYW5kIGFsbCByb290IHJlc291cmNlIGNsYXNzZXMgYW5kIHByb3ZpZGVycyBwYWNrYWdlZCBpbiB0aGUgd2ViIGFwcGxpY2F0aW9uIE1VU1QgYmUgaW5jbHVkZWQgaW4gdGhlIHB1Ymxpc2hlZCBcamF4cnNcIGFwcGxpY2F0aW9uLiBUaGUgYXBwbGljYXRpb24gTVVTVCBiZSBwYWNrYWdlZCB3aXRoIGEgXGNvZGV7d2ViLnhtbH0gdGhhdCBzcGVjaWZpZXMgYSBzZXJ2bGV0IG1hcHBpbmcgZm9yIHRoZSBhZGRlZCBzZXJ2bGV0LgotCi1caXRlbSBJZiBhbiBcY29kZXtBcHBsaWNhdGlvbn0gc3ViY2xhc3MgaXMgcHJlc2VudCBhbmQgdGhlcmUgaXMgYWxyZWFkeSBhIHNlcnZsZXQgZGVmaW5lZCB0aGF0IGhhcyBhIHNlcnZsZXQgaW5pdGlhbGl6YXRpb24gcGFyYW1ldGVyIG5hbWVkOiBcYmVnaW57cXVvdGV9XGNvZGV7amF2YXgud3MucnMuQXBwbGljYXRpb259XGVuZHtxdW90ZX0gd2hvc2UgdmFsdWUgaXMgdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIHRoZSBcY29kZXtBcHBsaWNhdGlvbn0gc3ViY2xhc3MgdGhlbiBubyBuZXcgc2VydmxldCBzaG91bGQgYmUgYWRkZWQgYnkgdGhlIFxqYXhyc1wgaW1wbGVtZW50YXRpb24ncyBcY29kZXtDb250YWluZXJJbml0aWFsaXplcn0gc2luY2UgdGhlIGFwcGxpY2F0aW9uIGlzIGFscmVhZHkgYmVpbmcgaGFuZGxlZCBieSBhbiBleGlzdGluZyBzZXJ2bGV0LgotCi1caXRlbSBJZiBhbiBcY29kZXtBcHBsaWNhdGlvbn0gc3ViY2xhc3MgaXMgcHJlc2VudCB0aGF0IGlzIG5vdCBiZWluZyBoYW5kbGVkIGJ5IGFuIGV4aXN0aW5nIHNlcnZsZXQgdGhlbiB0aGUgc2VydmxldCBhZGRlZCBieSB0aGUgXGNvZGV7Q29udGFpbmVySW5pdGlhbGl6ZXJ9IE1VU1QgYmUgbmFtZWQgd2l0aCB0aGUgZnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIFxjb2Rle0FwcGxpY2F0aW9ufSBzdWJjbGFzcy4gSWYgdGhlIFxjb2Rle0FwcGxpY2F0aW9ufSBzdWJjbGFzcyBpcyBhbm5vdGF0ZWQgd2l0aCBcY29kZXtAQXBwbGljYXRpb25QYXRofSBhbmQgbm8gc2VydmxldC1tYXBwaW5nIGV4aXN0cyBmb3IgdGhlIGFkZGVkIHNlcnZsZXQgdGhlbiBhIG5ldyBzZXJ2bGV0IG1hcHBpbmcgaXMgYWRkZWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIFxjb2Rle0BBcHBsaWNhdGlvblBhdGh9IGFubm90YXRpb24gd2l0aCAiLyoiIGFwcGVuZGVkIG90aGVyd2lzZSB0aGUgZXhpc3RpbmcgbWFwcGluZyBpcyB1c2VkLiBJZiB0aGUgXGNvZGV7QXBwbGljYXRpb24gfXN1YmNsYXNzIGlzIG5vdCBhbm5vdGF0ZWQgd2l0aCBcY29kZXtAQXBwbGljYXRpb25QYXRofVwgdGhlbiB0aGUgYXBwbGljYXRpb24gTVVTVCBiZSBwYWNrYWdlZCB3aXRoIGEgXGNvZGV7d2ViLnhtbH0gdGhhdCBzcGVjaWZpZXMgYSBzZXJ2bGV0IG1hcHBpbmcgZm9yIHRoZSBhZGRlZCBzZXJ2bGV0LiBJdCBpcyBhbiBlcnJvciBmb3IgbW9yZSB0aGFuIG9uZSBhcHBsaWNhdGlvbiB0byBiZSBkZXBsb3llZCBhdCB0aGUgc2FtZSBlZmZlY3RpdmUgc2VydmxldCBtYXBwaW5nCi1cZW5ke2l0ZW1pemV9Ci0KLUluIGVpdGhlciBvZiB0aGUgbGF0dGVyIHR3byBjYXNlcywgaWYgYm90aCBcY29kZXtBcHBsaWNhdGlvbi5nZXRDbGFzc2VzfSBhbmQgXGNvZGV7QXBwbGljYXRpb24uZ2V0U2luZ2xldG9uc30gcmV0dXJuIGFuIGVtcHR5IGxpc3QgdGhlbiBhbGwgcm9vdCByZXNvdXJjZSBjbGFzc2VzIGFuZCBwcm92aWRlcnMgcGFja2FnZWQgaW4gdGhlIHdlYiBhcHBsaWNhdGlvbiBNVVNUIGJlIGluY2x1ZGVkIGluIHRoZSBwdWJsaXNoZWQgXGpheHJzXCBhcHBsaWNhdGlvbi4gSWYgZWl0aGVyIFxjb2Rle2dldENsYXNzZXN9IG9yIFxjb2Rle2dldFNpbmdsZXRvbnN9IHJldHVybiBhIG5vbi1lbXB0eSBsaXN0IHRoZW4gb25seSB0aG9zZSBjbGFzc2VzIG9yIHNpbmdsZXRvbnMgcmV0dXJuZWQgTVVTVCBiZSBpbmNsdWRlZCBpbiB0aGUgcHVibGlzaGVkIFxqYXhyc1wgYXBwbGljYXRpb24uCi0KLUlmIG5vdCB1c2luZyB0aGUgU2VydmxldCAzIGZyYW1ld29yayBwbHVnZ2FiaWxpdHkgbWVjaGFuaXNtIChlLmcuIGluIGEgcHJlLVNlcnZldCAzLjAgY29udGFpbmVyKSwgdGhlIFxjb2Rle3NlcnZsZXQtY2xhc3N9IG9yIFxjb2Rle2ZpbHRlci1jbGFzc30gZWxlbWVudCBvZiB0aGUgXGNvZGV7d2ViLnhtbH0gZGVzY3JpcHRvciBTSE9VTEQgbmFtZSB0aGUgXGpheHJzXCBpbXBsZW1lbnRhdGlvbi1zdXBwbGllZCBzZXJ2bGV0IG9yIGZpbHRlciBjbGFzcyByZXNwZWN0aXZlbHkuIFRoZSBcY29kZXtBcHBsaWNhdGlvbn0gc3ViY2xhc3MgU0hPVUxEIGJlIGlkZW50aWZpZWQgdXNpbmcgYW4gXGNvZGV7aW5pdC1wYXJhbX0gd2l0aCBhIFxjb2Rle3BhcmFtLW5hbWV9IG9mIFxjb2Rle2phdmF4Llwtd3MuXC1ycy5cLUFwcGxpY2F0aW9ufS4KLQotCi1cc3Vic2VjdGlvbntPdGhlciBDb250YWluZXJ9Ci0KLUFuIGltcGxlbWVudGF0aW9uIE1BWSBwcm92aWRlIGZhY2lsaXRpZXMgdG8gaG9zdCBhIFxqYXhyc1wgYXBwbGljYXRpb24gaW4gb3RoZXIgdHlwZXMgb2YgY29udGFpbmVyLCBzdWNoIGZhY2lsaXRpZXMgYXJlIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgc3BlY2lmaWNhdGlvbi4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL2NoYW5nZXMudGV4IGIvc3BlYy9jaGFwdGVycy9jaGFuZ2VzLnRleApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVkMzE2ZS4uMDAwMDAwMAotLS0gYS9zcGVjL2NoYXB0ZXJzL2NoYW5nZXMudGV4CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotXGNoYXB0ZXJ7Q2hhbmdlIExvZ30KLQotXHNlY3Rpb257Q2hhbmdlcyBTaW5jZSAxLjAgUmVsZWFzZX0KLQotXGJlZ2lue2l0ZW1pemV9Ci1caXRlbSBTZWN0aW9uIFxyZWZ7c2VydmxldH06IG5ldyByZXF1aXJlbWVudHMgZm9yIFNlcnZsZXQgMyBjb250YWluZXJzLgotXGl0ZW0gU2VjdGlvbiBccmVme2phdmFlZX06IHJlcXVpcmVtZW50cyBmb3IgSmF2YSBFRSA2IGNvbnRhaW5lcnMuCi1caXRlbSBTZWN0aW9uIFxyZWZ7c3RhbmRhcmRfZW50aXR5X3Byb3ZpZGVyc306IHJlcXVpcmVtZW50cyBvbiBzdGFuZGFyZCBlbnRpdHkgcHJvdmlkZXJzIHdoZW4gcHJlc2VudGVkIHdpdGggYW4gZW1wdHkgcmVxdWVzdCBlbnRpdHkuCi1caXRlbSBTZWN0aW9uIFxyZWZ7bWVzc2FnZV9ib2R5X3dyaXRlcn06IGFkZCBjbG9zZW5lc3Mgb2YgZ2VuZXJpYyB0eXBlIGFzIHNlY29uZGFyeSBzb3J0IGtleS4KLVxpdGVtIFNlY3Rpb24gXHJlZnttZXNzYWdlX2JvZHlfcmVhZGVyfTogZGVmYXVsdCB0byBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0gaWYgYSByZXF1ZXN0IGRvZXMgbm90IGNvbnRhaW4gYSBjb250ZW50LXR5cGUgaGVhZGVyLgotXGl0ZW0gU2VjdGlvbiBccmVme3Jlc291cmNlX2ZpZWxkfTogYWRkIHN1cHBvcnQgZm9yIHN0YXRpYyBmcm9tU3RyaW5nIG1ldGhvZC4KLVxpdGVtIFNlY3Rpb24gXHJlZnthbm5vdGF0aW9uaW5oZXJpdGFuY2V9OiBjbGFyaWZ5IGFubm90YXRpb24gaW5oZXJpdGFuY2UuCi1caXRlbSBTZWN0aW9uIFxyZWZ7c2VjdXJpdHlfY29udGV4dH06IGZpeCB0eXBvLgotXGl0ZW0gU2VjdGlvbiBccmVme3NlcnZsZXRfY29udGFpbmVyfTogYWRkaXRpb25hbCBjb25zaWRlcmF0aW9ucyByZWxhdGVkIHRvIGZpbHRlcnMgY29uc3VtaW5nIHJlcXVlc3QgYm9kaWVzLgotXGVuZHtpdGVtaXplfQotCi1cc2VjdGlvbntDaGFuZ2VzIFNpbmNlIFByb3Bvc2VkIEZpbmFsIERyYWZ0fQotCi1cYmVnaW57aXRlbWl6ZX0KLVxpdGVtIFNlY3Rpb24gXHJlZntyZXF1ZXN0X21hdGNoaW5nfTogQWRkaXRpb25hbCBzb3J0IGNyaXRlcmlhIHNvIHRoYXQgdGVtcGxhdGVzIHdpdGggZXhwbGljaXQgcmVnZXhzIGFyZSBzb3J0ZWQgYWhlYWQgb2YgdGhvc2Ugd2l0aCB0aGUgZGVmYXVsdC4KLVxpdGVtIFNlY3Rpb25zIFxyZWZ7cmVxdWVzdF9tYXRjaGluZ30sIFxyZWZ7ZGV0ZXJtaW5lX3Jlc3BvbnNlX3R5cGV9LCBccmVme2RlY2xhcmluZ19wcm92aWRlcl9jYXBhYmlsaXRpZXN9IGFuZCBccmVme2NvbnRleHRfbWVkaWFfdHlwZX06IFEtdmFsdWVzIG5vdCB1c2VkIGluIFxDb25zdW1lc1wgb3IgXFByb2R1Y2VzLgotXGl0ZW0gU2VjdGlvbiBccmVme21lc3NhZ2VfYm9keV93cml0ZXJ9OiBGaXhlZCBhbGdvcml0aG0gdG8gcmVmZXIgdG8gc2VjdGlvbiBccmVme2RldGVybWluZV9yZXNwb25zZV90eXBlfSBpbnN0ZWFkIG9mIHJlc3RhdGluZyBpdC4gRml4ZWQgc3RhdHVzIGNvZGUgcmV0dXJuZWQgd2hlbiB0aGUgbWVkaWEgdHlwZSBoYXMgYmVlbiBkZXRlcm1pbmVkIGJ1dCBhbiBhcHByb3ByaWF0ZSBtZXNzYWdlIGJvZHkgd3JpdGVyIGNhbm5vdCBiZSBsb2NhdGVkLgotXGl0ZW0gQ2hhcHRlciBccmVme3J1bnRpbWVkZWxlZ2F0ZX06IENsYXJpZnkgdGhhdCBhbiBpbXBsZW1lbnRhdGlvbiBjYW4gc3VwcGx5IGFuIGFsdGVybmF0ZSBccmRcIEFQSSBjbGFzcy4KLVxlbmR7aXRlbWl6ZX0KLQotXHNlY3Rpb257Q2hhbmdlcyBTaW5jZSBQdWJsaWMgUmV2aWV3IERyYWZ0fQotCi1cYmVnaW57aXRlbWl6ZX0KLVxpdGVtIENoYXB0ZXIgXHJlZnthcHBsaWNhdGlvbnN9OiBSZW5hbWVkIEFwcGxpY2F0aW9uQ29uZmlnIGNsYXNzIHRvIEFwcGxpY2F0aW9uLgotXGl0ZW0gQ2hhcHRlciBccmVme3Jlc291cmNlc306IFVyaUJ1aWxkZXIgcmV3b3JrZWQgdG8gYWx3YXlzIGVuY29kZSBjb21wb25lbnRzLgotXGl0ZW0gU2VjdGlvbnMgXHJlZntyZXNvdXJjZV9jbGFzc19jb25zdHJ1Y3Rvcn0gYW5kIFxyZWZ7cHJvdmlkZXJfY2xhc3NfY29uc3RydWN0b3J9OiBBZGRlZCByZXF1aXJlbWVudCB0byB3YXJuIHdoZW4gY2hvaWNlIG9mIGNvbnN0cnVjdG9yIGlzIGFtYmlndW91cy4KLVxpdGVtIFNlY3Rpb24gXHJlZntyZXNvdXJjZV9maWVsZH06IFxjb2Rle0Zvcm1QYXJhbX0gbm8gbG9uZ2VyIHJlcXVpcmVkIHRvIGJlIHN1cHBvcnRlZCBvbiBmaWVsZHMgb3IgcHJvcGVydGllcy4KLVxpdGVtIFNlY3Rpb24gXHJlZntyZXNvdXJjZV9tZXRob2RfcmV0dXJufTogQWRkZWQgdGV4dCBkZXNjcmliaW5nIGhvdyB0byBkZXRlcm1pbmUgcmF3IGFuZCBnZW5lcmljIHR5cGVzIGZyb20gbWV0aG9kIHJldHVybiB0eXBlIGFuZCByZXR1cm5lZCBpbnN0YW5jZS4KLVxpdGVtIFNlY3Rpb24gXHJlZnt1cml0ZW1wbGF0ZXN9OiBUZW1wbGF0ZSBwYXJhbWV0ZXJzIGNhbiBzcGVjaWZ5IHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBmb3JtcyB0aGVpciBjYXB0dXJpbmcgZ3JvdXAuCi1caXRlbSBTZWN0aW9uIFxyZWZ7cmVxcHJlcHJvY306IE1ha2UgcHJlLXByb2Nlc3NlZCBVUklzIGF2YWlsYWJsZSByYXRoZXIgdGhhbiBvcmlnaW5hbCByZXF1ZXN0IFVSSS4gQWRkZWQgVVJJIG5vcm1hbGl6YXRpb24uCi1caXRlbSBTZWN0aW9uIFxyZWZ7cmVxcHJlcHJvY306IFJlbW92ZWQgVVJJLWJhc2VkIGNvbnRlbnQgbmVnb3RpYXRpb24uCi1caXRlbSBTZWN0aW9uIFxyZWZ7cmVxdWVzdF9tYXRjaGluZ306IFJlb3JnYW5pemVkIHRoZSByZXF1ZXN0IG1hdGNoaW5nIGFsZ29yaXRobSB0byByZW1vdmUgcmVkdW5kYW5jeSBhbmQgaW1wcm92ZSByZWFkYWJpbGl0eSwgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCi1caXRlbSBTZWN0aW9uIFxyZWZ7dGVtcGxhdGVfdG9fcmVnZXh9OiBDaGFuZ2VzIHRvIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gZWxpbWluYXRlIGVkZ2UgY2FzZXMuCi1caXRlbSBTZWN0aW9uIFxyZWZ7ZW50aXR5X3Byb3ZpZGVyc306IEFkZGVkIHJlcXVpcmVtZW50IHRvIHVzZSBKYXZhQmVhbiBBY3RpdmF0aW9uIEZyYW1ld29yayB3aGVuIG5vIGVudGl0eSBwcm92aWRlciBjYW4gYmUgZm91bmQuCi1caXRlbSBTZWN0aW9uIFxyZWZ7c3RhbmRhcmRfZW50aXR5X3Byb3ZpZGVyc306IFJlcXVpcmUgc3RhbmRhcmQgSkFYQiBlbnRpdHkgcHJvdmlkZXJzIHRvIHVzZSBhcHBsaWNhdGlvbi1zdXBwbGllZCBKQVhCIGNvbnRleHRzIGluIHByZWZlcmVuY2UgdG8gdGhlaXIgb3duLgotXGl0ZW0gU2VjdGlvbiBccmVme2NvbnRleHRwcm92aWRlcn06IEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgbWVkaWEgdHlwZSBjYXBhYmlsaXRpZXMgb2YgY29udGV4dCBwcm92aWRlcnMuCi1caXRlbSBTZWN0aW9uIFxyZWZ7Y29udGV4dHR5cGVzfTogUmVtb3ZlZCBcY29kZXtDb250ZXh0UmVzb2x2ZXJ9IGZyb20gbGlzdCBvZiBpbmplY3RhYmxlIHJlc291cmNlcy4KLVxpdGVtIFNlY3Rpb24gXHJlZntwcm92aWRlcmNvbnRleHR9OiBDaGFuZ2VkIG5hbWUgdG8gUHJvdmlkZXJzLCByZW1vdmVkIGVudGl0eSBwcm92aWRlci1zcGVjaWZpYyB0ZXh0IHRvIHJlZmxlY3QgbW9yZSBnZW5lcmljIGNhcGFiaWxpdGllcy4KLVxpdGVtIENoYXB0ZXIgXHJlZntoZWFkZXJzdXBwb3J0fTogTmV3IGFwcGVuZGl4IGRlc2NyaWJpbmcgd2hlcmUgcGFydGljdWxhciBIVFRQIGhlYWRlcnMgYXJlIHN1cHBvcnRlZC4KLVxlbmR7aXRlbWl6ZX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL2NvbnRleHQudGV4IGIvc3BlYy9jaGFwdGVycy9jb250ZXh0LnRleApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBjNmM1NS4uMDAwMDAwMAotLS0gYS9zcGVjL2NoYXB0ZXJzL2NvbnRleHQudGV4CisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotXGNoYXB0ZXJ7Q29udGV4dH0KLVxsYWJlbHtjb250ZXh0fQotCi1camF4cnNcIHByb3ZpZGVzIGZhY2lsaXRpZXMgZm9yIG9idGFpbmluZyBhbmQgcHJvY2Vzc2luZyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXBwbGljYXRpb24gZGVwbG95bWVudCBjb250ZXh0IGFuZCB0aGUgY29udGV4dCBvZiBpbmRpdmlkdWFsIHJlcXVlc3RzLiBTdWNoIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSB0byBcY29kZXtBcHBsaWNhdGlvbn0gc3ViY2xhc3NlcyAoc2VlIHNlY3Rpb24gXHJlZntjb25maWd9KSwgcm9vdCByZXNvdXJjZSBjbGFzc2VzIChzZWUgY2hhcHRlciBccmVme3Jlc291cmNlc30pLCBhbmQgcHJvdmlkZXJzIChzZWUgY2hhcHRlciBccmVme3Byb3ZpZGVyc30pLiBUaGlzIGNoYXB0ZXIgZGVzY3JpYmVzIHRoZXNlIGZhY2lsaXRpZXMuCi0KLVxzZWN0aW9ue0NvbmN1cnJlbmN5fQotCi1Db250ZXh0IGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciByZXF1ZXN0IGJ1dCBpbnN0YW5jZXMgb2YgY2VydGFpbiBcamF4cnNcIGNvbXBvbmVudHMgKHByb3ZpZGVycyBhbmQgcmVzb3VyY2UgY2xhc3NlcyB3aXRoIGEgbGlmZWN5Y2xlIG90aGVyIHRoYW4gcGVyLXJlcXVlc3QpIG1heSBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUgY29uY3VycmVudCByZXF1ZXN0cy4gV2hlbiBpbmplY3RpbmcgYW4gaW5zdGFuY2Ugb2Ygb25lIG9mIHRoZSB0eXBlcyBsaXN0ZWQgaW4gc2VjdGlvbiBccmVme2NvbnRleHR0eXBlc30sIHRoZSBpbnN0YW5jZSBzdXBwbGllZCBNVVNUIGJlIGNhcGFibGUgb2Ygc2VsZWN0aW5nIHRoZSBjb3JyZWN0IGNvbnRleHQgZm9yIGEgcGFydGljdWxhciByZXF1ZXN0LiBVc2Ugb2YgYSB0aHJlYWQtbG9jYWwgcHJveHkgaXMgYSBjb21tb24gd2F5IHRvIGFjaGlldmUgdGhpcy4KLQotXHNlY3Rpb257Q29udGV4dCBUeXBlc30KLVxsYWJlbHtjb250ZXh0dHlwZXN9Ci0KLVRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHR5cGVzIG9mIGNvbnRleHQgYXZhaWxhYmxlIHRvIHJlc291cmNlIGNsYXNzZXMsIHByb3ZpZGVycyBhbmQgXGNvZGV7QXBwbGljYXRpb259IHN1YmNsYXNzZXMuCi0KLVxzdWJzZWN0aW9ue0FwcGxpY2F0aW9ufQotCi1UaGUgaW5zdGFuY2Ugb2YgdGhlIGFwcGxpY2F0aW9uLXN1cHBsaWVkIFxjb2Rle0FwcGxpY2F0aW9ufSBzdWJjbGFzcyBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGNsYXNzIGZpZWxkIG9yIG1ldGhvZCBwYXJhbWV0ZXIgdXNpbmcgdGhlIFxDb250ZXh0XCBhbm5vdGF0aW9uLiBBY2Nlc3MgdG8gdGhlIFxjb2Rle0FwcGxpY2F0aW9ufSBzdWJjbGFzcyBpbnN0YW5jZSBhbGxvd3MgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiB0byBiZSBjZW50cmFsaXplZCBpbiB0aGF0IGNsYXNzLiBOb3RlIHRoYXQgdGhpcyBjYW5ub3QgYmUgaW5qZWN0ZWQgaW50byB0aGUgXGNvZGV7QXBwbGljYXRpb259IHN1YmNsYXNzIGl0c2VsZiBzaW5jZSB0aGlzIHdvdWxkIGNyZWF0ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kuCi0KLVxzdWJzZWN0aW9ue1VSSXMgYW5kIFVSSSBUZW1wbGF0ZXN9Ci0KLUFuIGluc3RhbmNlIG9mIFxVcmlJbmZvXCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGNsYXNzIGZpZWxkIG9yIG1ldGhvZCBwYXJhbWV0ZXIgdXNpbmcgdGhlIFxDb250ZXh0XCBhbm5vdGF0aW9uLiBcVXJpSW5mb1wgcHJvdmlkZXMgYm90aCBzdGF0aWMgYW5kIGR5bmFtaWMsIHBlci1yZXF1ZXN0IGluZm9ybWF0aW9uLCBhYm91dCB0aGUgY29tcG9uZW50cyBvZiBhIHJlcXVlc3QgVVJJLiBFLmcuIHRoZSBmb2xsb3dpbmcgd291bGQgcmV0dXJuIHRoZSBuYW1lcyBvZiBhbnkgcXVlcnkgcGFyYW1ldGVycyBpbiBhIHJlcXVlc3Q6Ci0KLVxiZWdpbntsaXN0aW5nfXsxfQotQEdFVAotQFByb2R1Y2VzeyJ0ZXh0L3BsYWluIn0KLXB1YmxpYyBTdHJpbmcgbGlzdFF1ZXJ5UGFyYW1OYW1lcyhAQ29udGV4dCBVcmlJbmZvIGluZm8pIHsKLSAgU3RyaW5nQnVpbGRlciBidWYgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwotICBmb3IgKFN0cmluZyBwYXJhbTogaW5mby5nZXRRdWVyeVBhcmFtZXRlcnMoKS5rZXlTZXQoKSkgewotICAgIGJ1Zi5hcHBlbmQocGFyYW0pOwotICAgIGJ1Zi5hcHBlbmQoIlxuIik7Ci0gIH0KLSAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOwotfQotXGVuZHtsaXN0aW5nfQotCi1Ob3RlIHRoYXQgdGhlIG1ldGhvZHMgb2YgXFVyaUluZm9cIHByb3ZpZGUgYWNjZXNzIHRvIHJlcXVlc3QgVVJJIGluZm9ybWF0aW9uIGZvbGxvd2luZyB0aGUgcHJlLXByb2Nlc3NpbmcgZGVzY3JpYmVkIGluIHNlY3Rpb24gXHJlZntyZXFwcmVwcm9jfS4KLQotXHN1YnNlY3Rpb257SGVhZGVyc30KLVxsYWJlbHtodHRwaGVhZGVyc30KLQotQW4gaW5zdGFuY2Ugb2YgXEh0dHBIZWFkZXJzXCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGNsYXNzIGZpZWxkIG9yIG1ldGhvZCBwYXJhbWV0ZXIgdXNpbmcgdGhlIFxDb250ZXh0XCBhbm5vdGF0aW9uLiBcSHR0cEhlYWRlcnNcIHByb3ZpZGVzIGFjY2VzcyB0byByZXF1ZXN0IGhlYWRlciBpbmZvcm1hdGlvbiBlaXRoZXIgaW4gbWFwIGZvcm0gb3IgdmlhIHN0cm9uZ2x5IHR5cGVkIGNvbnZlbmllbmNlIG1ldGhvZHMuIEUuZy4gdGhlIGZvbGxvd2luZyB3b3VsZCByZXR1cm4gdGhlIG5hbWVzIG9mIGFsbCB0aGUgaGVhZGVycyBpbiBhIHJlcXVlc3Q6Ci0KLVxiZWdpbntsaXN0aW5nfXsxfQotQEdFVAotQFByb2R1Y2VzeyJ0ZXh0L3BsYWluIn0KLXB1YmxpYyBTdHJpbmcgbGlzdEhlYWRlck5hbWVzKEBDb250ZXh0IEh0dHBIZWFkZXJzIGhlYWRlcnMpIHsKLSAgU3RyaW5nQnVpbGRlciBidWYgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwotICBmb3IgKFN0cmluZyBoZWFkZXI6IGhlYWRlcnMuZ2V0UmVxdWVzdEhlYWRlcnMoKS5rZXlTZXQoKSkgewotICAgIGJ1Zi5hcHBlbmQoaGVhZGVyKTsKLSAgICBidWYuYXBwZW5kKCJcbiIpOwotICB9Ci0gIHJldHVybiBidWYudG9TdHJpbmcoKTsKLX0KLVxlbmR7bGlzdGluZ30KLQotTm90ZSB0aGF0IHRoZSBtZXRob2RzIG9mIFxIdHRwSGVhZGVyc1wgcHJvdmlkZSBhY2Nlc3MgdG8gcmVxdWVzdCBpbmZvcm1hdGlvbiBmb2xsb3dpbmcgdGhlIHByZS1wcm9jZXNzaW5nIGRlc2NyaWJlZCBpbiBzZWN0aW9uIFxyZWZ7cmVxcHJlcHJvY30uCi0KLVJlc3BvbnNlIGhlYWRlcnMgbWF5IGJlIHByb3ZpZGVkIHVzaW5nIHRoZSBcUmVzcG9uc2VcIGNsYXNzLCBzZWUgXHJlZntyZXNvdXJjZV9tZXRob2RfcmV0dXJufSBmb3IgbW9yZSBkZXRhaWxzLgotCi1cc3Vic2VjdGlvbntDb250ZW50IE5lZ290aWF0aW9uIGFuZCBQcmVjb25kaXRpb25zfQotXGxhYmVse2Nvbm5lZ19hbmRfcHJlY29uZGl0aW9uc30KLQotXGpheHJzXCBzaW1wbGlmaWVzIHN1cHBvcnQgZm9yIGNvbnRlbnQgbmVnb3RpYXRpb24gYW5kIHByZWNvbmRpdGlvbnMgdXNpbmcgdGhlIFxSZXF1ZXN0XCBpbnRlcmZhY2UuIEFuIGluc3RhbmNlIG9mIFxSZXF1ZXN0XCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGNsYXNzIGZpZWxkIG9yIG1ldGhvZCBwYXJhbWV0ZXIgdXNpbmcgdGhlIFxDb250ZXh0XCBhbm5vdGF0aW9uLiBUaGUgbWV0aG9kcyBvZiBcUmVxdWVzdFwgYWxsb3cgYSBjYWxsZXIgdG8gZGV0ZXJtaW5lIHRoZSBiZXN0IG1hdGNoaW5nIHJlcHJlc2VudGF0aW9uIHZhcmlhbnQgYW5kIHRvIGV2YWx1YXRlIHdoZXRoZXIgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHJlc291cmNlIG1hdGNoZXMgYW55IHByZWNvbmRpdGlvbnMgaW4gdGhlIHJlcXVlc3QuIFByZWNvbmRpdGlvbiBzdXBwb3J0IG1ldGhvZHMgcmV0dXJuIGEgXFJlc3BvbnNlQnVpbGRlclwgdGhhdCBjYW4gYmUgcmV0dXJuZWQgdG8gdGhlIGNsaWVudCB0byBpbmZvcm0gaXQgdGhhdCB0aGUgcmVxdWVzdCBwcmVjb25kaXRpb25zIHdlcmUgbm90IG1ldC4gRS5nLiB0aGUgZm9sbG93aW5nIGNoZWNrcyBpZiB0aGUgY3VycmVudCBlbnRpdHkgdGFnIG1hdGNoZXMgYW55IHByZWNvbmRpdGlvbnMgaW4gdGhlIHJlcXVlc3QgYmVmb3JlIHVwZGF0aW5nIHRoZSByZXNvdXJjZToKLQotXGJlZ2lue2xpc3Rpbmd9ezF9Ci1AUFVUCi1wdWJsaWMgUmVzcG9uc2UgdXBkYXRlRm9vKEBDb250ZXh0IFJlcXVlc3QgcmVxdWVzdCwgRm9vIGZvbykgewotCUVudGl0eVRhZyB0YWcgPSBnZXRDdXJyZW50VGFnKCk7Ci0JUmVzcG9uc2VCdWlsZGVyIHJlc3BvbnNlQnVpbGRlciA9IHJlcXVlc3QuZXZhbHVhdGVQcmVjb25kaXRpb25zKHRhZyk7Ci0JaWYgKHJlc3BvbnNlQnVpbGRlciAhPSBudWxsKQotCSAgcmV0dXJuIHJlc3BvbnNlQnVpbGRlci5idWlsZCgpOwotCWVsc2UKLQkgIHJldHVybiBkb1VwZGF0ZShmb28pOwotfQotXGVuZHtsaXN0aW5nfQotCi0KLVRoZSBhcHBsaWNhdGlvbiBjb3VsZCBhbHNvIHNldCB0aGUgY29udGVudCBsb2NhdGlvbiwgZXhwaXJ5IGRhdGUgYW5kIGNhY2hlIGNvbnRyb2wgaW5mb3JtYXRpb24gaW50byB0aGUgcmV0dXJuZWQgXGNvZGV7UmVzcG9uc2VCdWlsZGVyfSBiZWZvcmUgYnVpbGRpbmcgdGhlIHJlc3BvbnNlLgotCi1cc3Vic2VjdGlvbntTZWN1cml0eSBDb250ZXh0fQotXGxhYmVse3NlY3VyaXR5X2NvbnRleHR9Ci0KLVRoZSBcU2VjdXJpdHlDb250ZXh0XCBpbnRlcmZhY2UgcHJvdmlkZXMgYWNjZXNzIHRvIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzZWN1cml0eSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHJlcXVlc3QuIEFuIGluc3RhbmNlIG9mIFxTZWN1cml0eUNvbnRleHRcIGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgY2xhc3MgZmllbGQgb3IgbWV0aG9kIHBhcmFtZXRlciB1c2luZyB0aGUgXENvbnRleHRcIGFubm90YXRpb24uIFRoZSBtZXRob2RzIG9mIFxTZWN1cml0eUNvbnRleHRcIHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBjdXJyZW50IHVzZXIgcHJpbmNpcGFsLCBpbmZvcm1hdGlvbiBhYm91dCByb2xlcyBhc3N1bWVkIGJ5IHRoZSByZXF1ZXN0ZXIsIHdoZXRoZXIgdGhlIHJlcXVlc3QgYXJyaXZlZCBvdmVyIGEgc2VjdXJlIGNoYW5uZWwgYW5kIHRoZSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgdXNlZC4KLQotXHN1YnNlY3Rpb257UHJvdmlkZXJzfQotXGxhYmVse3Byb3ZpZGVyY29udGV4dH0KLQotVGhlIFxjb2Rle1Byb3ZpZGVyc30gaW50ZXJmYWNlIGFsbG93cyBmb3IgbG9va3VwIG9mIHByb3ZpZGVyIGluc3RhbmNlcyBiYXNlZCBvbiBhIHNldCBvZiBzZWFyY2ggY3JpdGVyaWEuIEFuIGluc3RhbmNlIG9mIFxjb2Rle1Byb3ZpZGVyc30gY2FuIGJlIGluamVjdGVkIGludG8gYSBjbGFzcyBmaWVsZCBvciBtZXRob2QgcGFyYW1ldGVyIHVzaW5nIHRoZSBcQ29udGV4dFwgYW5ub3RhdGlvbi4KLQotVGhpcyBpbnRlcmZhY2UgaXMgZXhwZWN0ZWQgdG8gYmUgcHJpbWFyaWx5IG9mIGludGVyZXN0IHRvIHByb3ZpZGVyIGF1dGhvcnMgd2lzaGluZyB0byB1c2Ugb3RoZXIgcHJvdmlkZXJzIGZ1bmN0aW9uYWxpdHkuCmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL2RlbGVnYXRlLnRleCBiL3NwZWMvY2hhcHRlcnMvZGVsZWdhdGUudGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTllOTMwLi4wMDAwMDAwCi0tLSBhL3NwZWMvY2hhcHRlcnMvZGVsZWdhdGUudGV4CisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotXGNoYXB0ZXJ7UnVudGltZSBEZWxlZ2F0ZX0KLVxsYWJlbHtydW50aW1lZGVsZWdhdGV9Ci0KLVxyZFwgaXMgYW4gYWJzdHJhY3QgZmFjdG9yeSBjbGFzcyB0aGF0IHByb3ZpZGVzIHZhcmlvdXMgbWV0aG9kcyBmb3IgdGhlIGNyZWF0aW9uIG9mIG9iamVjdHMgdGhhdCBpbXBsZW1lbnQgXGpheHJzXCBBUElzLiBUaGVzZSBtZXRob2RzIGFyZSBkZXNpZ25lZCBmb3IgdXNlIGJ5IG90aGVyIFxqYXhyc1wgQVBJIGNsYXNzZXMgYW5kIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5IGJ5IGFwcGxpY2F0aW9ucy4gXHJkXCBhbGxvd3MgdGhlIHN0YW5kYXJkIFxqYXhyc1wgQVBJIGNsYXNzZXMgdG8gdXNlIGRpZmZlcmVudCBcamF4cnNcIGltcGxlbWVudGF0aW9ucyB3aXRob3V0IGFueSBjb2RlIGNoYW5nZXMuCi0KLUFuIGltcGxlbWVudGF0aW9uIG9mIFxqYXhyc1wgTVVTVCBwcm92aWRlIGEgY29uY3JldGUgc3ViY2xhc3Mgb2YgXHJkLiBVc2luZyB0aGUgc3VwcGxpZWQgXHJkXCB0aGlzIGNhbiBiZSBwcm92aWRlZCB0byBcamF4cnNcIGluIG9uZSBvZiB0d28gd2F5czoKLQotXGJlZ2lue2VudW1lcmF0ZX0KLVxpdGVtIEFuIGluc3RhbmNlIG9mIFxyZFwgY2FuIGJlIGluc3RhbnRpYXRlZCBhbmQgaW5qZWN0ZWQgdXNpbmcgaXRzIHN0YXRpYyBtZXRob2QgXGNvZGV7c2V0XC1JbnN0YW5jZX0uIEluIHRoaXMgY2FzZSB0aGUgaW1wbGVtZW50YXRpb24gaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSBpbnN0YW5jZTsgdGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIGltcGxlbWVudGF0aW9ucyBiYXNlZCBvbiBJb0MgZnJhbWV3b3Jrcy4KLVxpdGVtIFRoZSBjbGFzcyB0byBiZSB1c2VkIGNhbiBiZSBjb25maWd1cmVkLCBzZWUgc2VjdGlvbiBccmVme3JkY29uZmlnfS4gSW4gdGhpcyBjYXNlIFxqYXhyc1wgaXMgcmVzcG9uc2libGUgZm9yIGluc3RhbnRpYXRpbmcgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGFuZCB0aGUgY29uZmlndXJlZCBjbGFzcyBNVVNUIGhhdmUgYSBwdWJsaWMgY29uc3RydWN0b3Igd2hpY2ggdGFrZXMgbm8gYXJndW1lbnRzLgotXGVuZHtlbnVtZXJhdGV9Ci0KLU5vdGUgdGhhdCBhbiBpbXBsZW1lbnRhdGlvbiBNQVkgc3VwcGx5IGFuIGFsdGVybmF0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgXHJkXCBBUEkgY2xhc3MgKHByb3ZpZGVkIGl0IHBhc3NlcyB0aGUgVENLIHNpZ25hdHVyZSB0ZXN0IGFuZCBiZWhhdmVzIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWNhdGlvbikgdGhhdCBzdXBwb3J0cyBhbHRlcm5hdGUgbWVhbnMgb2YgbG9jYXRpbmcgYSBjb25jcmV0ZSBzdWJjbGFzcy4KLQotQSBcamF4cnNcIGltcGxlbWVudGF0aW9uIG1heSByZWx5IG9uIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBvZiBccmRcIGJlaW5nIHVzZWQgLS0gYXBwbGljYXRpb25zIFNIT1VMRCBOT1Qgb3ZlcnJpZGUgdGhlIHN1cHBsaWVkIFxyZFwgaW5zdGFuY2Ugd2l0aCBhbiBhcHBsaWNhdGlvbi1zdXBwbGllZCBhbHRlcm5hdGl2ZSBhbmQgZG9pbmcgc28gbWF5IGNhdXNlIHVuZXhwZWN0ZWQgcHJvYmxlbXMuIAotCi1cc2VjdGlvbntDb25maWd1cmF0aW9ufVxsYWJlbHtyZGNvbmZpZ30KLQotSWYgbm90IHN1cHBsaWVkIGJ5IGluamVjdGlvbiwgdGhlIHN1cHBsaWVkIFxyZFwgQVBJIGNsYXNzIG9idGFpbnMgdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIGNsYXNzIHVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtLiBUaGUgc3RlcHMgbGlzdGVkIGJlbG93IAotYXJlIHBlcmZvcm1lZCBpbiBzZXF1ZW5jZSBhbmQsIGF0IGVhY2ggc3RlcCwgYXQgbW9zdCBvbmUgY2FuZGlkYXRlIGltcGxlbWVudGF0aW9uIGNsYXNzIG5hbWUgd2lsbCBiZSBwcm9kdWNlZC4gVGhlIGltcGxlbWVudGF0aW9uIHdpbGwgdGhlbiBhdHRlbXB0IHRvIGxvYWQgdGhlIGNsYXNzIHdpdGggdGhlIGdpdmVuIGNsYXNzIG5hbWUgdXNpbmcgdGhlIGN1cnJlbnQgY29udGV4dCBjbGFzcyBsb2FkZXIgb3IsIG1pc3Npbmcgb25lLCB0aGUgamF2YS5sYW5nLkNsYXNzLmZvck5hbWUoU3RyaW5nKSBtZXRob2QuIEFzIHNvb24gYXMgYSBzdGVwIHJlc3VsdHMgaW4gYW4gaW1wbGVtZW50YXRpb24gY2xhc3MgYmVpbmcgc3VjY2Vzc2Z1bGx5IGxvYWRlZCwgdGhlIGFsZ29yaXRobSB0ZXJtaW5hdGVzLgotXGJlZ2lue2VudW1lcmF0ZX0KLVxpdGVtIElmIGEgcmVzb3VyY2Ugd2l0aCB0aGUgbmFtZSBvZiBcY29kZXtNRVRBLUlORi9zZXJ2aWNlcy9qYXZheC53cy5ycy5leHQuUnVudGltZURlbGVnYXRlfSBleGlzdHMsIHRoZW4gaXRzIGZpcnN0IGxpbmUsIGlmIHByZXNlbnQsIGlzIHVzZWQgYXMgdGhlIFVURi04IGVuY29kZWQgbmFtZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3MuIAotXGl0ZW0gSWYgdGhlIFxjb2Rle1wkXHtqYXZhLmhvbWVcfS9saWIvamF4cnMucHJvcGVydGllc30gZmlsZSBleGlzdHMgYW5kIGl0IGlzIHJlYWRhYmxlIGJ5IHRoZSBcY29kZXtqYXZhXC0udXRpbFwtLlByb3BlcnRpZXNcLS5sb2FkKFwtSW5wdXRTdHJlYW0pfSBtZXRob2QgYW5kIGl0IGNvbnRhaW5zIGFuIGVudHJ5IHdob3NlIGtleSBpcyBcY29kZXtqYXZheFwtLndzXC0ucnNcLS5leHRcLS5SdW50aW1lXC1EZWxlZ2F0ZX0sIHRoZW4gdGhlIHZhbHVlIG9mIHRoYXQgZW50cnkgaXMgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3MuIAotXGl0ZW0gSWYgYSBzeXN0ZW0gcHJvcGVydHkgd2l0aCB0aGUgbmFtZSBcY29kZXtqYXZheFwtLndzXC0ucnNcLS5leHRcLS5SdW50aW1lXC1EZWxlZ2F0ZX0gaXMgZGVmaW5lZCwgdGhlbiBpdHMgdmFsdWUgaXMgdXNlZCBhcyB0aGUgbmFtZSBvZiB0aGUgaW1wbGVtZW50YXRpb24gY2xhc3MuIAotXGl0ZW0gRmluYWxseSwgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGNsYXNzIG5hbWUgaXMgdXNlZC4gCi1cZW5ke2VudW1lcmF0ZX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL2Vudmlyb25tZW50LnRleCBiL3NwZWMvY2hhcHRlcnMvZW52aXJvbm1lbnQudGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGM2OTc3Li4wMDAwMDAwCi0tLSBhL3NwZWMvY2hhcHRlcnMvZW52aXJvbm1lbnQudGV4CisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotXGNoYXB0ZXJ7RW52aXJvbm1lbnR9Ci1cbGFiZWx7ZW52aXJvbm1lbnR9Ci0KLVRoZSBjb250YWluZXItbWFuYWdlZCByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGEgXGpheHJzXCByb290IHJlc291cmNlIGNsYXNzIG9yIHByb3ZpZGVyIGRlcGVuZCBvbiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggaXQgaXMgZGVwbG95ZWQuIFNlY3Rpb24gXHJlZntjb250ZXh0dHlwZXN9IGRlc2NyaWJlcyB0aGUgdHlwZXMgb2YgY29udGV4dCBhdmFpbGFibGUgcmVnYXJkbGVzcyBvZiBjb250YWluZXIuIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgdGhlIGFkZGl0aW9uYWwgY29udGFpbmVyLW1hbmFnZWQgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBhIFxqYXhyc1wgcm9vdCByZXNvdXJjZSBjbGFzcyBvciBwcm92aWRlciBkZXBsb3llZCBpbiBhIHZhcmlldHkgb2YgZW52aXJvbm1lbnRzLgotCi1cc2VjdGlvbntTZXJ2bGV0IENvbnRhaW5lcn0KLVxsYWJlbHtzZXJ2bGV0X2NvbnRhaW5lcn0KLQotVGhlIFxDb250ZXh0XCBhbm5vdGF0aW9uIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIGEgZGVwZW5kZW5jeSBvbiBhIFNlcnZsZXQtZGVmaW5lZCByZXNvdXJjZS4gQSBTZXJ2bGV0LWJhc2VkIGltcGxlbWVudGF0aW9uIE1VU1Qgc3VwcG9ydCBpbmplY3Rpb24gb2YgdGhlIGZvbGxvd2luZyBTZXJ2bGV0LWRlZmluZWQgdHlwZXM6IFxjb2Rle1NlcnZsZXRcLUNvbmZpZ30sIFxjb2Rle1NlcnZsZXRcLUNvbnRleHR9LCBcY29kZXtIdHRwXC1TZXJ2bGV0XC1SZXF1ZXN0fSBhbmQgXGNvZGV7SHR0cFwtU2VydmxldFwtUmVzcG9uc2V9LgotCi1BbiBpbmplY3RlZCBcY29kZXtIdHRwXC1TZXJ2bGV0XC1SZXF1ZXN0fSBhbGxvd3MgYSByZXNvdXJjZSBtZXRob2QgdG8gc3RyZWFtIHRoZSBjb250ZW50cyBvZiBhIHJlcXVlc3QgZW50aXR5LiBJZiB0aGUgcmVzb3VyY2UgbWV0aG9kIGhhcyBhIHBhcmFtZXRlciB3aG9zZSB2YWx1ZSBpcyBkZXJpdmVkIGZyb20gdGhlIHJlcXVlc3QgZW50aXR5IHRoZW4gdGhlIHN0cmVhbSB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIGNvbnN1bWVkIGFuZCBhbiBhdHRlbXB0IHRvIGFjY2VzcyBpdCBNQVkgcmVzdWx0IGluIGFuIGV4Y2VwdGlvbi4KLQotQW4gaW5qZWN0ZWQgXGNvZGV7SHR0cFwtU2VydmxldFwtUmVzcG9uc2V9IGFsbG93cyBhIHJlc291cmNlIG1ldGhvZCB0byBjb21taXQgdGhlIEhUVFAgcmVzcG9uc2UgcHJpb3IgdG8gcmV0dXJuaW5nLiBBbiBpbXBsZW1lbnRhdGlvbiBNVVNUIGNoZWNrIHRoZSBjb21taXR0ZWQgc3RhdHVzIGFuZCBvbmx5IHByb2Nlc3MgdGhlIHJldHVybiB2YWx1ZSBpZiB0aGUgcmVzcG9uc2UgaXMgbm90IHlldCBjb21taXR0ZWQuCi0KLVNlcnZsZXQgZmlsdGVycyBtYXkgdHJpZ2dlciBjb25zdW1wdGlvbiBvZiBhIHJlcXVlc3QgYm9keSBieSBhY2Nlc3NpbmcgcmVxdWVzdCBwYXJhbWV0ZXJzLiBJbiBhIHNlcnZsZXQgY29udGFpbmVyIHRoZSBARm9ybVBhcmFtIGFubm90YXRpb24gYW5kIHRoZSBzdGFuZGFyZCBlbnRpdHkgcHJvdmlkZXIgZm9yIFxjb2Rle2FwcGxpY2F0aW9uXC0veC1cLXd3dy1cLWZvcm0tXC11cmxlbmNvZGVkfSBNVVNUIG9idGFpbiB0aGVpciB2YWx1ZXMgZnJvbSB0aGUgc2VydmxldCByZXF1ZXN0IHBhcmFtZXRlcnMgaWYgdGhlIHJlcXVlc3QgYm9keSBoYXMgYWxyZWFkeSBiZWVuIGNvbnN1bWVkLiBTZXJ2bGV0IEFQSXMgZG8gbm90IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBwYXJhbWV0ZXJzIGluIHRoZSBVUkkgYW5kIGJvZHkgb2YgYSByZXF1ZXN0IHNvIFVSSS1iYXNlZCBxdWVyeSBwYXJhbWV0ZXJzIG1heSBiZSBpbmNsdWRlZCBpbiB0aGUgZW50aXR5IHBhcmFtZXRlci4KLQotXHNlY3Rpb257SmF2YSBFRSBDb250YWluZXJ9Ci1cbGFiZWx7amF2YWVlfQotCi1UaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHRoZSBhZGRpdGlvbmFsIHJlcXVpcmVtZW50cyB0aGF0IGFwcGx5IHRvIGEgXGpheHJzXCBpbXBsZW1lbnRhdGlvbiB3aGVuIGNvbWJpbmVkIGluIGEgcHJvZHVjdCB0aGF0IHN1cHBvcnRzIHRoZXNlIG90aGVyIEphdmEgc3BlY2lmaWNhdGlvbnM6Ci0KLVxiZWdpbntpdGVtaXplfQotXGl0ZW0gSW4gYSBwcm9kdWN0IHRoYXQgYWxzbyBzdXBwb3J0cyB0aGUgU2VydmxldCBzcGVjaWZpY2F0aW9uLCBpbXBsZW1lbnRhdGlvbnMgTVVTVCBzdXBwb3J0IFxqYXhyc1wgYXBwbGljYXRpb25zIHRoYXQgYXJlIHBhY2thZ2VkIGFzIGEgd2ViIGFwcGxpY2F0aW9uLiBJbXBsZW1lbnRhdGlvbnMgTVVTVCBiZWhhdmUgYXMgaWYgYnVpbHQgdXNpbmcgdGhlIFNlcnZsZXQgMyBwbHVnZ2FiaWxpdHkgbWVjaGFuaXNtLCBzZWUgc2VjdGlvbiBccmVme3NlcnZsZXR9LgotXGl0ZW0gSW4gYSBwcm9kdWN0IHRoYXQgYWxzbyBzdXBwb3J0cyBNYW5hZ2VkIEJlYW5zLCBpbXBsZW1lbnRhdGlvbnMgTVVTVCBzdXBwb3J0IHVzZSBvZiBNYW5hZ2VkIEJlYW5zIGFzIHJvb3QgcmVzb3VyY2UgY2xhc3NlcywgcHJvdmlkZXJzIGFuZCBcY29kZXtBcHBsaWNhdGlvbn0gc3ViY2xhc3Nlcy4gSW4gYSBwcm9kdWN0IHRoYXQgYWxzbyBzdXBwb3J0cyBKU1IgMjk5LCBpbXBsZW1lbnRhdGlvbnMgTVVTVCBzaW1pbGFybHkgc3VwcG9ydCB1c2Ugb2YgSlNSMjk5LXN0eWxlIG1hbmFnZWQgYmVhbnMuIFByb3ZpZGVycyBhbmQgXGNvZGV7QXBwbGljYXRpb259IHN1YmNsYXNzZXMgTVVTVCBiZSBzaW5nbGV0b25zIG9yIHVzZSBhcHBsaWNhdGlvbiBzY29wZS4KLVxpdGVtIEluIGEgcHJvZHVjdCB0aGF0IGFsc28gc3VwcG9ydHMgRUpCLCBhbiBpbXBsZW1lbnRhdGlvbiBNVVNUIHN1cHBvcnQgdXNlIG9mIHN0YXRlbGVzcyBhbmQgc2luZ2xldG9uIHNlc3Npb24gYmVhbnMgYXMgcm9vdCByZXNvdXJjZSBjbGFzc2VzLCBwcm92aWRlcnMgYW5kIFxjb2Rle0FwcGxpY2F0aW9ufSBzdWJjbGFzc2VzLiBcamF4cnNcIGFubm90YXRpb25zIE1BWSBiZSBhcHBsaWVkIHRvIGEgYmVhbidzIGxvY2FsIGludGVyZmFjZSBvciBkaXJlY3RseSB0byBhIG5vLWludGVyZmFjZSBiZWFuLiBJZiBhbiBcY29kZXtFeGNlcHRpb25cLU1hcHBlcn0gZm9yIGEgXGNvZGV7RUpCRXhjZXB0aW9ufSBvciBzdWJjbGFzcyBpcyBub3QgaW5jbHVkZWQgd2l0aCBhbiBhcHBsaWNhdGlvbiB0aGVuIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IGFuIEVKQiByZXNvdXJjZSBjbGFzcyBvciBwcm92aWRlciBtZXRob2QgTVVTVCBiZSB0cmVhdGVkIGFzIEVKQiBhcHBsaWNhdGlvbiBleGNlcHRpb25zOiB0aGUgZW1iZWRkZWQgY2F1c2Ugb2YgdGhlIFxjb2Rle0VKQkV4Y2VwdGlvbn0gTVVTVCBiZSB1bndyYXBwZWQgYW5kIHByb2Nlc3NlZCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiBccmVme21ldGhvZF9leGN9LgotXGVuZHtpdGVtaXplfQotCi1UaGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgcmVxdWlyZW1lbnRzIGFwcGx5IHdoZW4gdXNpbmcgTWFuYWdlZCBCZWFucywgSlNSMjk5LXN0eWxlIE1hbmFnZWQgQmVhbnMgb3IgRUpCcyBhcyByZXNvdXJjZSBjbGFzc2VzLCBwcm92aWRlcnMgb3IgXGNvZGV7QXBwbGljYXRpb259IHN1YmNsYXNzZXM6Ci0KLVxiZWdpbntpdGVtaXplfQotXGl0ZW0gRmllbGQgYW5kIHByb3BlcnR5IGluamVjdGlvbiBvZiBcamF4cnNcIHJlc291cmNlcyBNVVNUIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgY29udGFpbmVyIGludm9raW5nIGFueSBcY29kZXtAUG9zdENvbnN0cnVjdH0gYW5ub3RhdGVkIG1ldGhvZC4KLVxpdGVtIFN1cHBvcnQgZm9yIGNvbnN0cnVjdG9yIGluamVjdGlvbiBvZiBcamF4cnNcIHJlc291cmNlcyBpcyBPUFRJT05BTC4gUG9ydGFibGUgYXBwbGljYXRpb25zIE1VU1QgaW5zdGVhZCB1c2UgZmllbGRzIG9yIGJlYW4gcHJvcGVydGllcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgXGNvZGV7QFBvc3RDb25zdHJ1Y3R9IGFubm90YXRlZCBtZXRob2QuIEltcGxlbWVudGF0aW9ucyBTSE9VTEQgd2FybiB1c2VycyBhYm91dCB1c2Ugb2Ygbm9uLXBvcnRhYmxlIGNvbnN0cnVjdG9yIGluamVjdGlvbi4KLVxpdGVtIEltcGxlbWVudGF0aW9ucyBNVVNUIE5PVCByZXF1aXJlIHVzZSBvZiBcY29kZXtASW5qZWN0fSBvciBcY29kZXtAUmVzb3VyY2V9IHRvIHRyaWdnZXIgaW5qZWN0aW9uIG9mIFxqYXhyc1wgYW5ub3RhdGVkIGZpZWxkcyBvciBwcm9wZXJ0aWVzLiBJbXBsZW1lbnRhdGlvbnMgTUFZIHN1cHBvcnQgc3VjaCB1c2FnZSBidXQgU0hPVUxEIHdhcm4gdXNlcnMgYWJvdXQgbm9uLXBvcnRhYmlsaXR5LgotXGVuZHtpdGVtaXplfQotCi1cc2VjdGlvbntPdGhlcn0KLQotT3RoZXIgY29udGFpbmVyIHRlY2hub2xvZ2llcyBNQVkgc3BlY2lmeSB0aGVpciBvd24gc2V0IG9mIGluamVjdGFibGUgcmVzb3VyY2VzIGJ1dCBNVVNULCBhdCBhIG1pbmltdW0sIHN1cHBvcnQgYWNjZXNzIHRvIHRoZSB0eXBlcyBvZiBjb250ZXh0IGxpc3RlZCBpbiBzZWN0aW9uIFxyZWZ7Y29udGV4dHR5cGVzfS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL2hlYWRlcnMudGV4IGIvc3BlYy9jaGFwdGVycy9oZWFkZXJzLnRleApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM0YjVkMi4uMDAwMDAwMAotLS0gYS9zcGVjL2NoYXB0ZXJzL2hlYWRlcnMudGV4CisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotXGNoYXB0ZXJ7SFRUUCBIZWFkZXIgU3VwcG9ydH0KLVxsYWJlbHtoZWFkZXJzdXBwb3J0fQotCi1UaGUgZm9sbG93aW5nIHRhYmxlIGxpc3RzIEhUVFAgaGVhZGVycyB0aGF0IGFyZSBkaXJlY3RseSBzdXBwb3J0ZWQsIGVpdGhlciBhdXRvbWF0aWNhbGx5IGJ5IGEgXGpheHJzXCBpbXBsZW1lbnRhdGlvbiBydW50aW1lIG9yIGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBcamF4cnNcIEFQSS4gQW55IHJlcXVlc3QgaGVhZGVyIG1heSBiZSBvYnRhaW5lZCB1c2luZyBcSHR0cEhlYWRlcnMsIHNlZSBzZWN0aW9uIFxyZWZ7aHR0cGhlYWRlcnN9OyByZXNwb25zZSBoZWFkZXJzIG5vdCBsaXN0ZWQgaGVyZSBtYXkgc2V0IHVzaW5nIHRoZSBcUmVzcG9uc2VCdWlsZGVyXC1cY29kZXsuaGVhZGVyfSBtZXRob2QuCi0KLSVcYmVnaW57Y2VudGVyfQotXGJlZ2lue2xvbmd0YWJsZX17fGx8cHs0LjVpbn18fQotXGhsaW5lCi1cYmZzZXJpZXMgSGVhZGVyICYgXGJmc2VyaWVzIERlc2NyaXB0aW9uIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lXGhsaW5lXGVuZGhlYWQKLVxjb2Rle0FjY2VwdH0gJiBccmFnZ2VkcmlnaHQgVXNlZCBieSBydW50aW1lIHdoZW4gc2VsZWN0aW5nIGEgcmVzb3VyY2UgbWV0aG9kLCBjb21wYXJlZCB0byB2YWx1ZSBvZiBcUHJvZHVjZXNcIGFubm90YXRpb24sIHNlZSBzZWN0aW9uIFxyZWZ7ZGVjbGFyaW5nX21ldGhvZF9jYXBhYmlsaXRpZXN9LiBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7QWNjZXB0LUNoYXJzZXR9ICYgXHJhZ2dlZHJpZ2h0IFByb2Nlc3NlZCBieSBydW50aW1lIGlmIGFwcGxpY2F0aW9uIHVzZXMgXFJlcXVlc3RcY29kZXsuc2VsZWN0VmFyaWFudH0gbWV0aG9kLCBzZWUgc2VjdGlvbiBccmVme2Nvbm5lZ19hbmRfcHJlY29uZGl0aW9uc30uIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtBY2NlcHQtRW5jb2Rpbmd9ICYgXHJhZ2dlZHJpZ2h0IFByb2Nlc3NlZCBieSBydW50aW1lIGlmIGFwcGxpY2F0aW9uIHVzZXMgXFJlcXVlc3RcY29kZXsuc2VsZWN0VmFyaWFudH0gbWV0aG9kLCBzZWUgc2VjdGlvbiBccmVme2Nvbm5lZ19hbmRfcHJlY29uZGl0aW9uc30uIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtBY2NlcHQtTGFuZ3VhZ2V9ICYgXHJhZ2dlZHJpZ2h0IFByb2Nlc3NlZCBieSBydW50aW1lIGlmIGFwcGxpY2F0aW9uIHVzZXMgXFJlcXVlc3RcY29kZXsuc2VsZWN0VmFyaWFudH0gbWV0aG9kLCBzZWUgc2VjdGlvbiBccmVme2Nvbm5lZ19hbmRfcHJlY29uZGl0aW9uc30uIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtBbGxvd30gJiBccmFnZ2VkcmlnaHQgSW5jbHVkZWQgaW4gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgNDA1IGVycm9yIHJlc3BvbnNlcyAoc2VlIHNlY3Rpb24gXHJlZntyZXF1ZXN0X21hdGNoaW5nfSkgYW5kIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIHJlc3BvbnNlcyB0byBPUFRJT05TIHJlcXVlc3RzIChzZWUgc2VjdGlvbiBccmVme2hlYWRfYW5kX29wdGlvbnN9KS5cdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7QXV0aG9yaXphdGlvbn0gJiBccmFnZ2VkcmlnaHQgRGVwZW5kcyBvbiBjb250YWluZXIsIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB2aWEgXFNlY3VyaXR5Q29udGV4dCwgc2VlIHNlY3Rpb24gXHJlZntzZWN1cml0eV9jb250ZXh0fS4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0NhY2hlLUNvbnRyb2x9ICYgXHJhZ2dlZHJpZ2h0IFNlZSBcY29kZXtDYWNoZUNvbnRyb2x9IGNsYXNzIGFuZCBcUmVzcG9uc2VCdWlsZGVyXGNvZGV7LmNhY2hlQ29udHJvbH0gbWV0aG9kLiBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7Q29udGVudC1FbmNvZGluZ30gJiBccmFnZ2VkcmlnaHQgUmVzcG9uc2UgaGVhZGVyIHNldCBieSBhcHBsaWNhdGlvbiB1c2luZyAgXFJlc3BvbnNlXGNvZGV7Lm9rfSBvciBcUmVzcG9uc2VCdWlsZGVyXGNvZGV7LnZhcmlhbnR9LiBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7Q29udGVudC1MYW5ndWFnZX0gJiBccmFnZ2VkcmlnaHQgUmVzcG9uc2UgaGVhZGVyIHNldCBieSBhcHBsaWNhdGlvbiB1c2luZyBcUmVzcG9uc2VcY29kZXsub2t9LCBcUmVzcG9uc2VCdWlsZGVyXGNvZGV7Lmxhbmd1YWdlfSwgb3IgXFJlc3BvbnNlQnVpbGRlclxjb2Rley52YXJpYW50fS4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0NvbnRlbnQtTGVuZ3RofSAmIFxyYWdnZWRyaWdodCBQcm9jZXNzZWQgYXV0b21hdGljYWxseSBmb3IgcmVxdWVzdHMsIHNldCBhdXRvbWF0aWNhbGx5IGluIHJlc3BvbnNlcyBpZiB2YWx1ZSBpcyBwcm92aWRlZCBieSB0aGUgXE1zZ1dyaXRlXCB1c2VkIHRvIHNlcmlhbGl6ZSB0aGUgcmVzcG9uc2UgZW50aXR5LiBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7Q29udGVudC1UeXBlfSAmIFxyYWdnZWRyaWdodCBSZXF1ZXN0IGhlYWRlciB1c2VkIGJ5IHJ1bnRpbWUgd2hlbiBzZWxlY3RpbmcgYSByZXNvdXJjZSBtZXRob2QsIGNvbXBhcmVkIHRvIHZhbHVlIG9mIFxDb25zdW1lc1wgYW5ub3RhdGlvbiwgc2VlIHNlY3Rpb24gXHJlZntkZWNsYXJpbmdfbWV0aG9kX2NhcGFiaWxpdGllc30uIFJlc3BvbnNlIGhlYWRlciBlaXRoZXIgc2V0IGJ5IGFwcGxpY2F0aW9uIHVzaW5nIFxSZXNwb25zZVxjb2Rley5va30sIFxSZXNwb25zZUJ1aWxkZXJcY29kZXsudHlwZX0sIG9yIFxSZXNwb25zZUJ1aWxkZXJcY29kZXsudmFyaWFudH0sIG9yIHNldCBhdXRvbWF0aWNhbGx5IGJ5IHJ1bnRpbWUgKHNlZSBzZWN0aW9uIFxyZWZ7ZGV0ZXJtaW5lX3Jlc3BvbnNlX3R5cGV9KS5cdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7Q29va2llfSAmIFxyYWdnZWRyaWdodCBTZWUgXGNvZGV7Q29va2llfSBjbGFzcyBhbmQgXEh0dHBIZWFkZXJzXGNvZGV7LmdldENvb2tpZXN9IG1ldGhvZC4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0RhdGV9ICYgXHJhZ2dlZHJpZ2h0IEluY2x1ZGVkIGluIHJlc3BvbnNlcyBhdXRvbWF0aWNhbGx5IGFzIHBlciBIVFRQLzEuMS4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0VUYWd9ICYgXHJhZ2dlZHJpZ2h0IFNlZSBcY29kZXtFbnRpdHlUYWd9IGNsYXNzLCAgXFJlc3BvbnNlXGNvZGV7Lm5vdE1vZGlmaWVkfSBtZXRob2QgYW5kIFxSZXNwb25zZUJ1aWxkZXJcY29kZXsudGFnfSBtZXRob2QuIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtFeHBlY3R9ICYgXHJhZ2dlZHJpZ2h0IERlcGVuZHMgb24gdW5kZXJseWluZyBjb250YWluZXIuIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtFeHBpcmVzfSAmIFxyYWdnZWRyaWdodCBTZXQgYnkgYXBwbGljYXRpb24gdXNpbmcgIHRoZSBcUmVzcG9uc2VCdWlsZGVyXGNvZGV7LmV4cGlyZXN9IG1ldGhvZC4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0lmLU1hdGNofSAmIFxyYWdnZWRyaWdodCBQcm9jZXNzZWQgYnkgcnVudGltZSBpZiBhcHBsaWNhdGlvbiB1c2VzIGNvcnJlc3BvbmRpbmcgXFJlcXVlc3RcY29kZXsuZXZhbHVhdGVQcmVjb25kaXRpb25zfSBtZXRob2QsIHNlZSBzZWN0aW9uIFxyZWZ7Y29ubmVnX2FuZF9wcmVjb25kaXRpb25zfS4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0lmLU1vZGlmaWVkLVNpbmNlfSAmIFxyYWdnZWRyaWdodCBQcm9jZXNzZWQgYnkgcnVudGltZSBpZiBhcHBsaWNhdGlvbiB1c2VzIGNvcnJlc3BvbmRpbmcgXFJlcXVlc3RcY29kZXsuZXZhbHVhdGVQcmVjb25kaXRpb25zfSBtZXRob2QsIHNlZSBzZWN0aW9uIFxyZWZ7Y29ubmVnX2FuZF9wcmVjb25kaXRpb25zfS4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle0lmLU5vbmUtTWF0Y2h9ICYgXHJhZ2dlZHJpZ2h0IFByb2Nlc3NlZCBieSBydW50aW1lIGlmIGFwcGxpY2F0aW9uIHVzZXMgY29ycmVzcG9uZGluZyBcUmVxdWVzdFxjb2Rley5ldmFsdWF0ZVByZWNvbmRpdGlvbnN9IG1ldGhvZCwgc2VlIHNlY3Rpb24gXHJlZntjb25uZWdfYW5kX3ByZWNvbmRpdGlvbnN9LiBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7SWYtVW5tb2RpZmllZC1TaW5jZX0gJiBccmFnZ2VkcmlnaHQgUHJvY2Vzc2VkIGJ5IHJ1bnRpbWUgaWYgYXBwbGljYXRpb24gdXNlcyBjb3JyZXNwb25kaW5nIFxSZXF1ZXN0XGNvZGV7LmV2YWx1YXRlUHJlY29uZGl0aW9uc30gbWV0aG9kLCBzZWUgc2VjdGlvbiBccmVme2Nvbm5lZ19hbmRfcHJlY29uZGl0aW9uc30uIFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtMYXN0LU1vZGlmaWVkfSAmIFxyYWdnZWRyaWdodCBTZXQgYnkgYXBwbGljYXRpb24gdXNpbmcgIHRoZSBcUmVzcG9uc2VCdWlsZGVyXGNvZGV7Lmxhc3RNb2RpZmllZH0gbWV0aG9kLiBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7TG9jYXRpb259ICYgXHJhZ2dlZHJpZ2h0IFNldCBieSBhcHBsaWNhdGlvbiB1c2luZyB0aGUgYXBwbGljYWJsZSBcUmVzcG9uc2VcIG1ldGhvZCBvciBkaXJlY3RseSB1c2luZyB0aGUgXFJlc3BvbnNlQnVpbGRlclxjb2Rley5sb2NhdGlvbn0gbWV0aG9kLlx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtTZXQtQ29va2llfSAmIFxyYWdnZWRyaWdodCBTZWUgXGNvZGV7TmV3Q29va2llfSBjbGFzcyBhbmQgXFJlc3BvbnNlQnVpbGRlclxjb2Rley5jb29raWV9IG1ldGhvZC4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle1RyYW5zZmVyLUVuY29kaW5nfSAmIFxyYWdnZWRyaWdodCBTZWUgc2VjdGlvbiBccmVme3RyYW5zZmVyX2VuY29kaW5nfS4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle1Zhcnl9ICYgXHJhZ2dlZHJpZ2h0IFNldCBieSBhcHBsaWNhdGlvbiB1c2luZyBcUmVzcG9uc2VcY29kZXsubm90QWNjZXB0YWJsZX0gbWV0aG9kIG9yIFxSZXNwb25zZUJ1aWxkZXJcY29kZXsudmFyaWFudHN9IG1ldGhvZC4gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle1dXVy1BdXRoZW50aWNhdGV9ICYgXHJhZ2dlZHJpZ2h0IERlcGVuZHMgb24gY29udGFpbmVyLiBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGVuZHtsb25ndGFibGV9Ci0lXGVuZHtjZW50ZXJ9CmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL2ludHJvLnRleCBiL3NwZWMvY2hhcHRlcnMvaW50cm8udGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzUxM2MwLi4wMDAwMDAwCi0tLSBhL3NwZWMvY2hhcHRlcnMvaW50cm8udGV4CisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLVxjaGFwdGVye0ludHJvZHVjdGlvbn0KLQotVGhpcyBzcGVjaWZpY2F0aW9uIGRlZmluZXMgYSBzZXQgb2YgSmF2YSBBUElzIGZvciB0aGUgZGV2ZWxvcG1lbnQgb2YgV2ViIHNlcnZpY2VzIGJ1aWx0IGFjY29yZGluZyB0byB0aGUgUmVwcmVzZW50YXRpb25hbCBTdGF0ZSBUcmFuc2ZlclxjaXRle3Jlc3R9IChSRVNUKSBhcmNoaXRlY3R1cmFsIHN0eWxlLiBSZWFkZXJzIGFyZSBhc3N1bWVkIHRvIGJlIGZhbWlsaWFyIHdpdGggCi1SRVNUOyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgUkVTVCBhcmNoaXRlY3R1cmFsIHN0eWxlIGFuZCBSRVNUZnVsIFdlYiBzZXJ2aWNlcywgc2VlOgotCi1cYmVnaW57aXRlbWl6ZX0KLVxpdGVtIEFyY2hpdGVjdHVyYWwgU3R5bGVzIGFuZCB0aGUgRGVzaWduIG9mIE5ldHdvcmstYmFzZWQgU29mdHdhcmUgQXJjaGl0ZWN0dXJlc1xjaXRle3Jlc3R9Ci1caXRlbSBUaGUgUkVTVCBXaWtpXGNpdGV7cmVzdHdpa2l9Ci1caXRlbSBSZXByZXNlbnRhdGlvbmFsIFN0YXRlIFRyYW5zZmVyIG9uIFdpa2lwZWRpYVxjaXRle3Jlc3R3aWtpcGVkaWF9Ci1cZW5ke2l0ZW1pemV9Ci0KLVxzZWN0aW9ue1N0YXR1c30KLQotVGhpcyBpcyBhbiBlZGl0b3JzIGRyYWZ0OyB0aGlzIHNwZWNpZmljYXRpb24gaXMgbm90IHlldCBjb21wbGV0ZS4gQSBsaXN0IG9mIG9wZW4gaXNzdWVzIGNhbiBiZSBmb3VuZCBhdDoKLSVUaGlzIGlzIGEgSkNQIHB1YmxpYyByZXZpZXcgZHJhZnQ7IHRoaXMgc3BlY2lmaWNhdGlvbiBpcyBub3QgeWV0IGZpbmFsLiBBIGxpc3Qgb2Ygb3BlbiBpc3N1ZXMgY2FuIGJlIGZvdW5kIGF0OgotJVRoaXMgaXMgYSBKQ1AgZmluYWwgc3BlY2lmaWNhdGlvbi4gQSBsaXN0IG9mIG9wZW4gaXNzdWVzIGNhbiBiZSBmb3VuZCBhdDoKLQotXGJlZ2lue3F1b3RlfQotaHR0cHM6Ly9qc3IzMTEuZGV2LmphdmEubmV0L3NlcnZsZXRzL1Byb2plY3RJc3N1ZXMKLVxlbmR7cXVvdGV9Ci0KLVRoZSBjb3JyZXNwb25kaW5nIEphdmFkb2NzIGNhbiBiZSBmb3VuZCBvbmxpbmUgYXQ6Ci0KLVxiZWdpbntxdW90ZX0KLSVodHRwczovL2pzcjMxMS5kZXYuamF2YS5uZXQvbm9uYXYvamF2YWRvYy9pbmRleC5odG1sCi1odHRwczovL2pzcjMxMS5kZXYuamF2YS5uZXQvbm9uYXYvcmVsZWFzZXMvMS4xL2luZGV4Lmh0bWwKLVxlbmR7cXVvdGV9Ci0KLVRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gY2FuIGJlIG9idGFpbmVkIGZyb206Ci0KLVxiZWdpbntxdW90ZX0KLWh0dHBzOi8vamVyc2V5LmRldi5qYXZhLm5ldC8KLVxlbmR7cXVvdGV9Ci0KLVRoZSBleHBlcnQgZ3JvdXAgc2Vla3MgZmVlZGJhY2sgZnJvbSB0aGUgY29tbXVuaXR5IG9uIGFueSBhc3BlY3Qgb2YgdGhpcyBzcGVjaWZpY2F0aW9uLCBwbGVhc2Ugc2VuZCBjb21tZW50cyB0bzoKLQotXGJlZ2lue3F1b3RlfQotdXNlcnNAanNyMzExLmRldi5qYXZhLm5ldAotXGVuZHtxdW90ZX0KLQotXHNlY3Rpb257R29hbHN9Ci0KLVRoZSBmb2xsb3dpbmcgYXJlIHRoZSBnb2FscyBvZiB0aGUgQVBJOgotCi1cYmVnaW57ZGVzY3JpcHRpb259Ci0KLVxpdGVtW1BPSk8tYmFzZWRdIFRoZSBBUEkgd2lsbCBwcm92aWRlIGEgc2V0IG9mIGFubm90YXRpb25zIGFuZCBhc3NvY2lhdGVkIGNsYXNzZXMvaW50ZXJmYWNlcyB0aGF0IG1heSBiZSB1c2VkIHdpdGggUE9KT3MgaW4gb3JkZXIgdG8gZXhwb3NlIHRoZW0gYXMgV2ViIHJlc291cmNlcy4gVGhlIHNwZWNpZmljYXRpb24gd2lsbCBkZWZpbmUgb2JqZWN0IGxpZmVjeWNsZSBhbmQgc2NvcGUuCi0KLVxpdGVtW0hUVFAtY2VudHJpY10gVGhlIHNwZWNpZmljYXRpb24gd2lsbCBhc3N1bWUgSFRUUFxjaXRle2h0dHAxMX0gaXMgdGhlIHVuZGVybHlpbmcgbmV0d29yayBwcm90b2NvbCBhbmQgd2lsbCBwcm92aWRlIGEgY2xlYXIgbWFwcGluZyBiZXR3ZWVuIEhUVFAgYW5kIFVSSVxjaXRle3VyaX0gZWxlbWVudHMgYW5kIHRoZSBjb3JyZXNwb25kaW5nIEFQSSBjbGFzc2VzIGFuZCBhbm5vdGF0aW9ucy4gVGhlIEFQSSB3aWxsIHByb3ZpZGUgaGlnaCBsZXZlbCBzdXBwb3J0IGZvciBjb21tb24gSFRUUCB1c2FnZSBwYXR0ZXJucyBhbmQgd2lsbCBiZSBzdWZmaWNpZW50bHkgZmxleGlibGUgdG8gc3VwcG9ydCBhIHZhcmlldHkgb2YgSFRUUCBhcHBsaWNhdGlvbnMgaW5jbHVkaW5nIFdlYkRBVlxjaXRle3dlYmRhdn0gYW5kIHRoZSBBdG9tIFB1Ymxpc2hpbmcgUHJvdG9jb2xcY2l0ZXthdG9tcHVifS4KLQotXGl0ZW1bRm9ybWF0IGluZGVwZW5kZW5jZV0gVGhlIEFQSSB3aWxsIGJlIGFwcGxpY2FibGUgdG8gYSB3aWRlIHZhcmlldHkgb2YgSFRUUCBlbnRpdHkgYm9keSBjb250ZW50IHR5cGVzLiBJdCB3aWxsIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBwbHVnZ2FiaWxpdHkgdG8gYWxsb3cgYWRkaXRpb25hbCB0eXBlcyB0byBiZSBhZGRlZCBieSBhbiBhcHBsaWNhdGlvbiBpbiBhIHN0YW5kYXJkIG1hbm5lci4KLQotXGl0ZW1bQ29udGFpbmVyIGluZGVwZW5kZW5jZV0gQXJ0aWZhY3RzIHVzaW5nIHRoZSBBUEkgd2lsbCBiZSBkZXBsb3lhYmxlIGluIGEgdmFyaWV0eSBvZiBXZWItdGllciBjb250YWluZXJzLiBUaGUgc3BlY2lmaWNhdGlvbiB3aWxsIGRlZmluZSBob3cgYXJ0aWZhY3RzIGFyZSBkZXBsb3llZCBpbiBhIFNlcnZsZXRcY2l0ZXtzZXJ2bGV0fSBjb250YWluZXIgYW5kIGFzIGEgSkFYLVdTXGNpdGV7anNyMjI0fSBQcm92aWRlci4KLQotXGl0ZW1bSW5jbHVzaW9uIGluIEphdmEgRUVdIFRoZSBzcGVjaWZpY2F0aW9uIHdpbGwgZGVmaW5lIHRoZSBlbnZpcm9ubWVudCBmb3IgYSBXZWIgcmVzb3VyY2UgY2xhc3MgaG9zdGVkIGluIGEgSmF2YSBFRSBjb250YWluZXIgYW5kIHdpbGwgc3BlY2lmeSBob3cgdG8gdXNlIEphdmEgRUUgZmVhdHVyZXMgYW5kIGNvbXBvbmVudHMgd2l0aGluIGEgV2ViIHJlc291cmNlIGNsYXNzLgotCi1cZW5ke2Rlc2NyaXB0aW9ufQotCi1cc2VjdGlvbntOb24tR29hbHN9Ci0KLVRoZSBmb2xsb3dpbmcgYXJlIG5vbi1nb2FsczoKLQotXGJlZ2lue2Rlc2NyaXB0aW9ufQotCi1caXRlbVtTdXBwb3J0IGZvciBKYXZhIHZlcnNpb25zIHByaW9yIHRvIEoyU0UgNS4wXSBUaGUgQVBJIHdpbGwgbWFrZSBleHRlbnNpdmUgdXNlIG9mIGFubm90YXRpb25zIGFuZCB3aWxsIHJlcXVpcmUgSjJTRSA1LjAgb3IgbGF0ZXIuCi0KLVxpdGVtW0Rlc2NyaXB0aW9uLCByZWdpc3RyYXRpb24gYW5kIGRpc2NvdmVyeV0gVGhlIHNwZWNpZmljYXRpb24gd2lsbCBuZWl0aGVyIGRlZmluZSBub3IgcmVxdWlyZSBhbnkgc2VydmljZSBkZXNjcmlwdGlvbiwgcmVnaXN0cmF0aW9uIG9yIGRpc2NvdmVyeSBjYXBhYmlsaXR5LgotCi1caXRlbVtDbGllbnQgQVBJc10gVGhlIHNwZWNpZmljYXRpb24gd2lsbCBub3QgZGVmaW5lIGNsaWVudC1zaWRlIEFQSXMuIE90aGVyIHNwZWNpZmljYXRpb25zIGFyZSBleHBlY3RlZCB0byBwcm92aWRlIHN1Y2ggZnVuY3Rpb25hbGl0eS4KLQotXGl0ZW1bSFRUUCBTdGFja10gVGhlIHNwZWNpZmljYXRpb24gd2lsbCBub3QgZGVmaW5lIGEgbmV3IEhUVFAgc3RhY2suIEhUVFAgcHJvdG9jb2wgc3VwcG9ydCBpcyBwcm92aWRlZCBieSBhIGNvbnRhaW5lciB0aGF0IGhvc3RzIGFydGlmYWN0cyBkZXZlbG9wZWQgdXNpbmcgdGhlIEFQSS4KLQotXGl0ZW1bRGF0YSBtb2RlbC9mb3JtYXQgY2xhc3Nlc10gVGhlIEFQSSB3aWxsIG5vdCBkZWZpbmUgY2xhc3NlcyB0aGF0IHN1cHBvcnQgbWFuaXB1bGF0aW9uIG9mIGVudGl0eSBib2R5IGNvbnRlbnQsIHJhdGhlciBpdCB3aWxsIHByb3ZpZGUgcGx1Z2dhYmlsaXR5IHRvIGFsbG93IHN1Y2ggY2xhc3NlcyB0byBiZSB1c2VkIGJ5IGFydGlmYWN0cyBkZXZlbG9wZWQgdXNpbmcgdGhlIEFQSS4KLQotXGVuZHtkZXNjcmlwdGlvbn0KLQotXHNlY3Rpb257Q29udmVudGlvbnN9Ci0KLVRoZSBrZXl3b3JkcyBgTVVTVCcsIGBNVVNUIE5PVCcsIGBSRVFVSVJFRCcsIGBTSEFMTCcsIGBTSEFMTCBOT1QnLCBgU0hPVUxEJywgYFNIT1VMRCBOT1QnLCBgUkVDT01NRU5ERUQnLCBgTUFZJywgYW5kIGBPUFRJT05BTCcgaW4gdGhpcyBkb2N1bWVudCBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgZGVzY3JpYmVkIGluIFJGQyAyMTE5XGNpdGV7cmZjMjExOX0uIAotCi1KYXZhIGNvZGUgYW5kIHNhbXBsZSBkYXRhIGZyYWdtZW50cyBhcmUgZm9ybWF0dGVkIGFzIHNob3duIGluIGZpZ3VyZSBccmVme2V4MX06Ci0KLVxiZWdpbntmaWd1cmV9W2hidHBdCi1cY2FwdGlvbntFeGFtcGxlIEphdmEgQ29kZX0KLVxsYWJlbHtleDF9Ci1cYmVnaW57bGlzdGluZ317MX0KLXBhY2thZ2UgY29tLmV4YW1wbGUuaGVsbG87Ci0KLXB1YmxpYyBjbGFzcyBIZWxsbyB7Ci0gICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgewotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhlbGxvIFdvcmxkIik7Ci0gICAgfQotfVxlbmR7bGlzdGluZ30KLVxlbmR7ZmlndXJlfQotCi1VUklzIG9mIHRoZSBnZW5lcmFsIGZvcm0gYGh0dHA6Ly9leGFtcGxlLm9yZy8uLi4nIGFuZCBgaHR0cDovL2V4YW1wbGUuY29tLy4uLicgcmVwcmVzZW50IGFwcGxpY2F0aW9uIG9yIGNvbnRleHQtZGVwZW5kZW50IFVSSXMuCi0KLUFsbCBwYXJ0cyBvZiB0aGlzIHNwZWNpZmljYXRpb24gYXJlIG5vcm1hdGl2ZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGV4YW1wbGVzLCBub3RlcyBhbmQgc2VjdGlvbnMgZXhwbGljaXRseSBtYXJrZWQgYXMgYE5vbi1Ob3JtYXRpdmUnLiBOb24tbm9ybWF0aXZlIG5vdGVzIGFyZSBmb3JtYXR0ZWQgYXMgc2hvd24gYmVsb3cuCi0KLVxiZWdpbntubm5vdGUqfQotVGhpcyBpcyBhIG5vdGUuCi1cZW5ke25ubm90ZSp9Ci0KLVxzZWN0aW9ue1Rlcm1pbm9sb2d5fQotCi1cYmVnaW57ZGVzY3JpcHRpb259Ci1caXRlbVtSZXNvdXJjZSBjbGFzc10gQSBKYXZhIGNsYXNzIHRoYXQgdXNlcyBcamF4cnNcIGFubm90YXRpb25zIHRvIGltcGxlbWVudCBhIGNvcnJlc3BvbmRpbmcgV2ViIHJlc291cmNlLCBzZWUgY2hhcHRlciBccmVme3Jlc291cmNlc30uCi1caXRlbVtSb290IHJlc291cmNlIGNsYXNzXSBBIHtcZW0gcmVzb3VyY2UgY2xhc3N9IGFubm90YXRlZCB3aXRoIFxQYXRoLiBSb290IHJlc291cmNlIGNsYXNzZXMgcHJvdmlkZSB0aGUgcm9vdHMgb2YgdGhlIHJlc291cmNlIGNsYXNzIHRyZWUgYW5kIHByb3ZpZGUgYWNjZXNzIHRvIHN1Yi1yZXNvdXJjZXMsIHNlZSBjaGFwdGVyIFxyZWZ7cmVzb3VyY2VzfS4KLVxpdGVtW1JlcXVlc3QgbWV0aG9kIGRlc2lnbmF0b3JdIEEgcnVudGltZSBhbm5vdGF0aW9uIGFubm90YXRlZCB3aXRoIFxIdHRwTWV0aG9kLiBVc2VkIHRvIGlkZW50aWZ5IHRoZSBIVFRQIHJlcXVlc3QgbWV0aG9kIHRvIGJlIGhhbmRsZWQgYnkgYSB7XGVtIHJlc291cmNlIG1ldGhvZH0uCi1caXRlbVtSZXNvdXJjZSBtZXRob2RdIEEgbWV0aG9kIG9mIGEge1xlbSByZXNvdXJjZSBjbGFzc30gYW5ub3RhdGVkIHdpdGggYSB7XGVtIHJlcXVlc3QgbWV0aG9kIGRlc2lnbmF0b3J9IHRoYXQgaXMgdXNlZCB0byBoYW5kbGUgcmVxdWVzdHMgb24gdGhlIGNvcnJlc3BvbmRpbmcgcmVzb3VyY2UsIHNlZSBzZWN0aW9uIFxyZWZ7cmVzb3VyY2VfbWV0aG9kfS4KLVxpdGVtW1N1Yi1yZXNvdXJjZSBsb2NhdG9yXSBBIG1ldGhvZCBvZiBhIHtcZW0gcmVzb3VyY2UgY2xhc3N9IHRoYXQgaXMgdXNlZCB0byBsb2NhdGUgc3ViLXJlc291cmNlcyBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNvdXJjZSwgc2VlIHNlY3Rpb24gXHJlZntzdWJfcmVzb3VyY2VzfS4KLVxpdGVtW1N1Yi1yZXNvdXJjZSBtZXRob2RdIEEgbWV0aG9kIG9mIGEge1xlbSByZXNvdXJjZSBjbGFzc30gdGhhdCBpcyB1c2VkIHRvIGhhbmRsZSByZXF1ZXN0cyBvbiBhIHN1Yi1yZXNvdXJjZSBvZiB0aGUgY29ycmVzcG9uZGluZyByZXNvdXJjZSwgc2VlIHNlY3Rpb24gXHJlZntzdWJfcmVzb3VyY2VzfS4KLVxpdGVtW1Byb3ZpZGVyXSBBbiBpbXBsZW1lbnRhdGlvbiBvZiBhIFxqYXhyc1wgZXh0ZW5zaW9uIGludGVyZmFjZS4gUHJvdmlkZXJzIGV4dGVuZCB0aGUgY2FwYWJpbGl0aWVzIG9mIGEgXGpheHJzXCBydW50aW1lIGFuZCBhcmUgZGVzY3JpYmVkIGluIGNoYXB0ZXIgXHJlZntwcm92aWRlcnN9LgotXGVuZHtkZXNjcmlwdGlvbn0KLQotXHNlY3Rpb257RXhwZXJ0IEdyb3VwIE1lbWJlcnN9IAotCi1UaGlzIHNwZWNpZmljYXRpb24gaXMgYmVpbmcgZGV2ZWxvcGVkIGFzIHBhcnQgb2YgSlNSIDMxMSB1bmRlciB0aGUgSmF2YSBDb21tdW5pdHkgUHJvY2Vzcy4gVGhpcyBzcGVjaWZpY2F0aW9uIGlzIHRoZSByZXN1bHQgb2YgdGhlIGNvbGxhYm9yYXRpdmUgd29yayBvZiB0aGUgbWVtYmVycyBvZiB0aGUgSlNSIDMxMSBFeHBlcnQgR3JvdXAuIFRoZSBmb2xsb3dpbmcgYXJlIHRoZSBwcmVzZW50IGFuZCBmb3JtZXIgZXhwZXJ0IGdyb3VwIG1lbWJlcnM6Ci0KLUphbiBBbGdlcm1pc3NlbiAoSW5kaXZpZHVhbCBNZW1iZXIpIFxcCi1IZWlrbyBCcmF1biAoUmVkIEhhdCBNaWRkbGV3YXJlIExMQykgXFwKLUJpbGwgQnVya2UgKFJlZCBIYXQgTWlkZGxld2FyZSBMTEMpIFxcCi1MYXJyeSBDYWJsZSAoQkVBIFN5c3RlbXMpIFxcCi1CaWxsIERlIEhvcmEgKEluZGl2aWR1YWwgTWVtYmVyKSBcXCAKLVJveSBGaWVsZGluZyAoRGF5IFNvZnR3YXJlLCBJbmMuKSBcXAotSGFycHJlZXQgR2Vla2VlIChOb3J0ZWwpIFxcCi1OaWNrb2xhcyBHcmFib3ZhcyAoSW5kaXZpZHVhbCBNZW1iZXIpIFxcCi1NYXJrIEhhbnNlbiAoSW5kaXZpZHVhbCBNZW1iZXIpIFxcCi1Kb2huIEhhcmJ5IChJbmRpdmlkdWFsIE1lbWJlcikgXFwKLUhhbyBIZSAoSW5kaXZpZHVhbCBNZW1iZXIpIFxcCi1SeWFuIEhlYXRvbiAoSW5kaXZpZHVhbCBNZW1iZXIpIFxcCi1EYXZpZCBIZW5zbGV5IChJbmRpdmlkdWFsIE1lbWJlcikgXFwKLVN0ZXBoYW4gS29vcHMgKEluZGl2aWR1YWwgTWVtYmVyKSBcXAotQ2hhbmdzaGluIExlZSAoTkNzb2Z0IENvcnBvcmF0aW9uKSBcXAotRnJhbmNvaXMgTGV5Z3VlcyAoQWxjYXRlbC1MdWNlbnQpIFxcCi1KZXJvbWUgTG91dmVsIChJbmRpdmlkdWFsIE1lbWJlcikgXFwKLUhhbWlkIEJlbiBNYWxlayAoRnVqaXRzdSBMaW1pdGVkKSBcXAotUnlhbiBKLiBNY0Rvbm91Z2ggKEluZGl2aWR1YWwgTWVtYmVyKSBcXAotRmVsaXggTWVzY2hiZXJnZXIgKERheSBTb2Z0d2FyZSwgSW5jLikgXFwKLURhdmlkIE9yY2hhcmQgKEJFQSBTeXN0ZW1zKSBcXAotRGhhbmppIFIuIFByYXNhbm5hIChJbmRpdmlkdWFsIE1lbWJlcikgXFwKLUp1bGlhbiBSZXNjaGtlIChJbmRpdmlkdWFsIE1lbWJlcikgXFwKLUphbiBTY2h1bHotSG9mZW4gKEluZGl2aWR1YWwgTWVtYmVyKSBcXAotSm9lbCBTbWl0aCAoSUJNKSBcXAotU3RlZmFuIFRpbGtvdiAoaW5ub1EgRGV1dHNjaGxhbmQgR21iSCkKLQotXHNlY3Rpb257QWNrbm93bGVkZ2VtZW50c30KLQotRHVyaW5nIHRoZSBjb3Vyc2Ugb2YgdGhlIEpTUiB3ZSByZWNlaXZlZCBtYW55IGV4Y2VsbGVudCBzdWdnZXN0aW9ucyBvbiB0aGUgSlNSIGFuZCBKZXJzZXkgKFJJKSBtYWlsaW5nIGxpc3RzLCB0aGFua3MgaW4gcGFydGljdWxhciB0byBKYW1lcyBNYW5nZXIgKFRlbHN0cmEpIGFuZCBSZXRvIEJhY2htYW5uLUdtXCJ7dX1yIChUcmlhbG94KSBmb3IgdGhlaXIgY29udHJpYnV0aW9ucy4gCi0KLVRoZSBcY29kZXtHZW5lcmljRW50aXR5fSBjbGFzcyB3YXMgaW5zcGlyZWQgYnkgdGhlIEdvb2dsZSBHdWljZSBcY29kZXtUeXBlXC1MaXRlcmFsfSBjbGFzcy4gT3VyIHRoYW5rcyB0byBCb2IgTGVlIGFuZCBHb29nbGUgZm9yIGRvbmF0aW5nIHRoaXMgY2xhc3MgdG8gXGpheHJzLgotCi1UaGUgZm9sbG93aW5nIGluZGl2aWR1YWxzIChhbGwgU3VuIE1pY3Jvc3lzdGVtcykgaGF2ZSBhbHNvIG1hZGUgaW52YWx1YWJsZSB0ZWNobmljYWwgY29udHJpYnV0aW9uczogUm9iZXJ0byBDaGlubmljaSwgRGlhbm5lIEppYW8gKFRDSyksIFJvbiBNb256aWxsbywgUmFqaXYgTW9yZGFuaSwgRWR1YXJkbyBQZWxlZ3JpLUxsb3BhcnQsIEpha3ViIFBvZGxlc2FrIChSSSkgYW5kIEJpbGwgU2hhbm5vbi4KZGlmZiAtLWdpdCBhL3NwZWMvY2hhcHRlcnMvbGljZW5zZS50ZXggYi9zcGVjL2NoYXB0ZXJzL2xpY2Vuc2UudGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2U5ODRhLi4wMDAwMDAwCi0tLSBhL3NwZWMvY2hhcHRlcnMvbGljZW5zZS50ZXgKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1cYmVnaW57Zmx1c2hsZWZ0fQotCi17XGJmc2VyaWVzIFNwZWNpZmljYXRpb246IEpBWC1SUyAtIEphdmFcdGV4dHRyYWRlbWFya1wgQVBJIGZvciBSRVNUZnVsIFdlYiBTZXJ2aWNlcyAoXGxxXGxxIFNwZWNpZmljYXRpb25ccnFccnEpXFwKLVZlcnNpb246IDEuMS1lZGl0b3JzLWRyYWZ0XFwKLVN0YXR1czogUHJlLUZDUyBQdWJsaWMgUmVsZWFzZVxcCi1SZWxlYXNlOiBcdG9kYXlcXAotQ29weXJpZ2h0IDIwMDcgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLlxcCi00MTUwIE5ldHdvcmsgQ2lyY2xlLCBTYW50YSBDbGFyYSwgQ2FsaWZvcm5pYSA5NTA1NCwgVS5TLkFcXAotMTgwLCBBdmVudWUgZGUgTCdFdXJvcGUsIDM4MzMwIE1vbnRib25ub3QgU2FpbnQgTWFydGluLCBGcmFuY2VcXAotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLX0KLQote1xiZnNlcmllcyBOT1RJQ0V9Ci0KLVRoZSBTcGVjaWZpY2F0aW9uIGlzIHByb3RlY3RlZCBieSBjb3B5cmlnaHQgYW5kIHRoZSBpbmZvcm1hdGlvbiBkZXNjcmliZWQgdGhlcmVpbiBtYXkgYmUgcHJvdGVjdGVkIGJ5IG9uZSBvciBtb3JlIFUuUy4gcGF0ZW50cywgZm9yZWlnbiBwYXRlbnRzLCBvciBwZW5kaW5nIGFwcGxpY2F0aW9ucy4gIEV4Y2VwdCBhcyBwcm92aWRlZCB1bmRlciB0aGUgZm9sbG93aW5nIGxpY2Vuc2UsIG5vIHBhcnQgb2YgdGhlIFNwZWNpZmljYXRpb24gbWF5IGJlIHJlcHJvZHVjZWQgaW4gYW55IGZvcm0gYnkgYW55IG1lYW5zIHdpdGhvdXQgdGhlIHByaW9yIHdyaXR0ZW4gYXV0aG9yaXphdGlvbiBvZiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIChcbHFcbHEgU3VuXHJxXHJxKSBhbmQgaXRzIGxpY2Vuc29ycywgaWYgYW55LiAgQW55IHVzZSBvZiB0aGUgU3BlY2lmaWNhdGlvbiBhbmQgdGhlIGluZm9ybWF0aW9uIGRlc2NyaWJlZCB0aGVyZWluIHdpbGwgYmUgZ292ZXJuZWQgYnkgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50LiAKLQotU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBsaWNlbnNlLCBpbmNsdWRpbmcgeW91ciBjb21wbGlhbmNlIHdpdGggUGFyYWdyYXBocyAxIGFuZCAyIGJlbG93LCBTdW4gaGVyZWJ5IGdyYW50cyB5b3UgYSBmdWxseS1wYWlkLCBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlLCBsaW1pdGVkIGxpY2Vuc2UgKHdpdGhvdXQgdGhlIHJpZ2h0IHRvIHN1YmxpY2Vuc2UpIHVuZGVyIFN1bidzIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgdG86Ci0KLVxiZWdpbntlbnVtZXJhdGV9Ci1caXRlbSBSZXZpZXcgdGhlIFNwZWNpZmljYXRpb24gZm9yIHRoZSBwdXJwb3NlcyBvZiBldmFsdWF0aW9uLiBUaGlzIGluY2x1ZGVzOiAKLShpKSBkZXZlbG9waW5nIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgU3BlY2lmaWNhdGlvbiBmb3IgeW91ciBpbnRlcm5hbCwgbm9uLWNvbW1lcmNpYWwgdXNlOwotKGlpKSBkaXNjdXNzaW5nIHRoZSBTcGVjaWZpY2F0aW9uIHdpdGggYW55IHRoaXJkIHBhcnR5OyBhbmQgCi0oaWlpKSBleGNlcnB0aW5nIGJyaWVmIHBvcnRpb25zIG9mIHRoZSBTcGVjaWZpY2F0aW9uIGluIG9yYWwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9ucyB3aGljaCBkaXNjdXNzIHRoZSBTcGVjaWZpY2F0aW9uIHByb3ZpZGVkIHRoYXQgc3VjaCBleGNlcnB0cyBkbyBub3QgaW4gdGhlIGFnZ3JlZ2F0ZSBjb25zdGl0dXRlIGEgc2lnbmlmaWNhbnQgcG9ydGlvbiBvZiB0aGUgVGVjaG5vbG9neS4KLQotXGl0ZW0gRGlzdHJpYnV0ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFNwZWNpZmljYXRpb24gdG8gdGhpcmQgcGFydGllcyBmb3IgdGhlaXIgdGVzdGluZyBhbmQgZXZhbHVhdGlvbiB1c2UsIHByb3ZpZGVkIHRoYXQgYW55IHN1Y2ggaW1wbGVtZW50YXRpb246Ci0oaSkgZG9lcyBub3QgbW9kaWZ5LCBzdWJzZXQsIHN1cGVyc2V0IG9yIG90aGVyd2lzZSBleHRlbmQgdGhlIExpY2Vuc29yIE5hbWUgU3BhY2UsIG9yIGluY2x1ZGUgYW55IHB1YmxpYyBvciBwcm90ZWN0ZWQgcGFja2FnZXMsIGNsYXNzZXMsIEphdmEgaW50ZXJmYWNlcywgZmllbGRzIG9yIG1ldGhvZHMgd2l0aGluIHRoZSBMaWNlbnNvciBOYW1lIFNwYWNlIG90aGVyIHRoYW4gdGhvc2UgcmVxdWlyZWQvYXV0aG9yaXplZCBieSB0aGUgU3BlY2lmaWNhdGlvbiBvciBTcGVjaWZpY2F0aW9ucyBiZWluZyBpbXBsZW1lbnRlZDsKLShpaSkgaXMgY2xlYXJseSBhbmQgcHJvbWluZW50bHkgbWFya2VkIHdpdGggdGhlIHdvcmQgXGxxXGxxIFVOVEVTVEVEXHJxXHJxXCBvciBcbHFcbHEgRUFSTFkgQUNDRVNTXHJxXHJxXCBvciBcbHFcbHEgSU5DT01QQVRJQkxFXHJxXHJxXCAgb3IgXGxxXGxxIFVOU1RBQkxFXHJxXHJxXCBvciBcbHFcbHEgQkVUQVxycVxycVwgaW4gYW55IGxpc3Qgb2YgYXZhaWxhYmxlIGJ1aWxkcyBhbmQgaW4gcHJveGltaXR5IHRvIGV2ZXJ5IGxpbmsgaW5pdGlhdGluZyBpdHMgZG93bmxvYWQsIHdoZXJlIHRoZSBsaXN0IG9yIGxpbmsgaXMgdW5kZXIgTGljZW5zZWXVcyBjb250cm9sOyBhbmQKLShpaWkpIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgbm90aWNlOgotXGxxXGxxIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgYW4gZWFybHktZHJhZnQgc3BlY2lmaWNhdGlvbiBkZXZlbG9wZWQgdW5kZXIgdGhlIEphdmEgQ29tbXVuaXR5IFByb2Nlc3MgKEpDUCkgYW5kIGlzIG1hZGUgYXZhaWxhYmxlIGZvciB0ZXN0aW5nIGFuZCBldmFsdWF0aW9uIHB1cnBvc2VzIG9ubHkuIFRoZSBjb2RlIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYW55IHNwZWNpZmljYXRpb24gb2YgdGhlIEpDUC5ccnFccnFcCi1cZW5ke2VudW1lcmF0ZX0KLQotVGhlIGdyYW50IHNldCBmb3J0aCBhYm92ZSBjb25jZXJuaW5nIHlvdXIgZGlzdHJpYnV0aW9uIG9mIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgc3BlY2lmaWNhdGlvbiBpcyBjb250aW5nZW50IHVwb24geW91ciBhZ3JlZW1lbnQgdG8gdGVybWluYXRlIGRldmVsb3BtZW50IGFuZCBkaXN0cmlidXRpb24gb2YgeW91ciDSZWFybHkgZHJhZnTTIGltcGxlbWVudGF0aW9uIGFzIHNvb24gYXMgZmVhc2libGUgZm9sbG93aW5nIGZpbmFsIGNvbXBsZXRpb24gb2YgdGhlIHNwZWNpZmljYXRpb24uICBJZiB5b3UgZmFpbCB0byBkbyBzbywgdGhlIGZvcmVnb2luZyBncmFudCBzaGFsbCBiZSBjb25zaWRlcmVkIG51bGwgYW5kIHZvaWQuIAotIAotTm8gcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IHNoYWxsIGJlIHVuZGVyc3Rvb2QgdG8gcmVzdHJpY3QgeW91ciBhYmlsaXR5IHRvIG1ha2UgYW5kIGRpc3RyaWJ1dGUgdG8gdGhpcmQgcGFydGllcyBhcHBsaWNhdGlvbnMgd3JpdHRlbiB0byB0aGUgU3BlY2lmaWNhdGlvbi4KLU90aGVyIHRoYW4gdGhpcyBsaW1pdGVkIGxpY2Vuc2UsIHlvdSBhY3F1aXJlIG5vIHJpZ2h0LCB0aXRsZSBvciBpbnRlcmVzdCBpbiBvciB0byB0aGUgU3BlY2lmaWNhdGlvbiBvciBhbnkgb3RoZXIgU3VuIGludGVsbGVjdHVhbCBwcm9wZXJ0eSwgYW5kIHRoZSBTcGVjaWZpY2F0aW9uIG1heSBvbmx5IGJlIHVzZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBsaWNlbnNlIHRlcm1zIHNldCBmb3J0aCBoZXJlaW4uIFRoaXMgbGljZW5zZSB3aWxsIGV4cGlyZSBvbiB0aGUgZWFybGllciBvZjogKGEpIHR3byAoMikgeWVhcnMgZnJvbSB0aGUgZGF0ZSBvZiBSZWxlYXNlIGxpc3RlZCBhYm92ZTsgKGIpIHRoZSBkYXRlIG9uIHdoaWNoIHRoZSBmaW5hbCB2ZXJzaW9uIG9mIHRoZSBTcGVjaWZpY2F0aW9uIGlzIHB1YmxpY2x5IHJlbGVhc2VkOyBvciAoYykgdGhlIGRhdGUgb24gd2hpY2ggdGhlIEphdmEgU3BlY2lmaWNhdGlvbiBSZXF1ZXN0IChKU1IpIHRvIHdoaWNoIHRoZSBTcGVjaWZpY2F0aW9uIGNvcnJlc3BvbmRzIGlzIHdpdGhkcmF3bi4gIEluIGFkZGl0aW9uLCB0aGlzIGxpY2Vuc2Ugd2lsbCB0ZXJtaW5hdGUgaW1tZWRpYXRlbHkgd2l0aG91dCBub3RpY2UgZnJvbSBTdW4gaWYgeW91IGZhaWwgdG8gY29tcGx5IHdpdGggYW55IHByb3Zpc2lvbiBvZiB0aGlzIGxpY2Vuc2UuICBVcG9uIHRlcm1pbmF0aW9uLCB5b3UgbXVzdCBjZWFzZSB1c2Ugb2Ygb3IgZGVzdHJveSB0aGUgU3BlY2lmaWNhdGlvbi4KLSAKLVxscVxscSBMaWNlbnNvciBOYW1lIFNwYWNlXHJxXHJxXCBtZWFucyB0aGUgcHVibGljIGNsYXNzIG9yIGludGVyZmFjZSBkZWNsYXJhdGlvbnMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aCBcbHFcbHEgamF2YVxycVxycVwgLCBcbHFcbHEgamF2YXhccnFccnFcICwgXGxxXGxxIGNvbS5zdW5ccnFccnFcICBvciB0aGVpciBlcXVpdmFsZW50cyBpbiBhbnkgc3Vic2VxdWVudCBuYW1pbmcgY29udmVudGlvbiBhZG9wdGVkIGJ5IFN1biB0aHJvdWdoIHRoZSBKYXZhIENvbW11bml0eSBQcm9jZXNzLCBvciBhbnkgcmVjb2duaXplZCBzdWNjZXNzb3JzIG9yIHJlcGxhY2VtZW50cyB0aGVyZW9mCi0KLQote1xiZnNlcmllcyBUUkFERU1BUktTfQotCi1ObyByaWdodCwgdGl0bGUsIG9yIGludGVyZXN0IGluIG9yIHRvIGFueSB0cmFkZW1hcmtzLCBzZXJ2aWNlIG1hcmtzLCBvciB0cmFkZSBuYW1lcyBvZiBTdW4gb3IgU3VuJ3MgbGljZW5zb3JzIGlzIGdyYW50ZWQgaGVyZXVuZGVyLiAgU3VuLCBTdW4gTWljcm9zeXN0ZW1zLCB0aGUgU3VuIGxvZ28sIEphdmEsICBhcmUgdHJhZGVtYXJrcyBvciByZWdpc3RlcmVkIHRyYWRlbWFya3Mgb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpbiB0aGUKLVUuUy4gYW5kIG90aGVyIGNvdW50cmllcy4KLQote1xiZnNlcmllcyBESVNDTEFJTUVSIE9GIFdBUlJBTlRJRVN9Ci0KLVRIRSBTUEVDSUZJQ0FUSU9OIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIElTIEVYUEVSSU1FTlRBTCBBTkQgTUFZIENPTlRBSU4gREVGRUNUUyBPUiBERUZJQ0lFTkNJRVMgV0hJQ0ggQ0FOTk9UIE9SIFdJTEwgTk9UIEJFIENPUlJFQ1RFRCBCWSBTVU4uICBTVU4gTUFLRVMgTk8gUkVQUkVTRU5UQVRJT05TIE9SIFdBUlJBTlRJRVMsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8sIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgT1IgTk9OLUlORlJJTkdFTUVOVCBUSEFUIFRIRSBDT05URU5UUyBPRiBUSEUgU1BFQ0lGSUNBVElPTiBBUkUKLVNVSVRBQkxFIEZPUiBBTlkgUFVSUE9TRSBPUiBUSEFUIEFOWSBQUkFDVElDRSBPUiBJTVBMRU1FTlRBVElPTiBPRiBTVUNIIENPTlRFTlRTIFdJTEwgTk9UIElORlJJTkdFIEFOWSBUSElSRCBQQVJUWSBQQVRFTlRTLCBDT1BZUklHSFRTLCBUUkFERSBTRUNSRVRTIE9SIE9USEVSIFJJR0hUUy4gIFRoaXMgZG9jdW1lbnQgZG9lcyBub3QgcmVwcmVzZW50IGFueSBjb21taXRtZW50IHRvIHJlbGVhc2Ugb3IgaW1wbGVtZW50IGFueSBwb3J0aW9uIG9mIHRoZSBTcGVjaWZpY2F0aW9uIGluIGFueSBwcm9kdWN0LgotCi1USEUgU1BFQ0lGSUNBVElPTiBDT1VMRCBJTkNMVURFIFRFQ0hOSUNBTCBJTkFDQ1VSQUNJRVMgT1IgVFlQT0dSQVBISUNBTCBFUlJPUlMuICBDSEFOR0VTIEFSRSBQRVJJT0RJQ0FMTFkgQURERUQgVE8gVEhFIElORk9STUFUSU9OIFRIRVJFSU47IFRIRVNFIENIQU5HRVMgV0lMTCBCRSBJTkNPUlBPUkFURUQgSU5UTyBORVcgVkVSU0lPTlMgT0YgVEhFIFNQRUNJRklDQVRJT04sIElGIEFOWS4gIFNVTiBNQVkgTUFLRSBJTVBST1ZFTUVOVFMgQU5EL09SIENIQU5HRVMgVE8gVEhFIFBST0RVQ1QoUykgQU5EL09SIFRIRSBQUk9HUkFNKFMpIERFU0NSSUJFRCBJTiBUSEUgU1BFQ0lGSUNBVElPTiBBVCBBTlkgVElNRS4gIEFueSB1c2Ugb2Ygc3VjaCBjaGFuZ2VzIGluIHRoZSBTcGVjaWZpY2F0aW9uIHdpbGwgYmUgZ292ZXJuZWQgYnkgdGhlIHRoZW4tY3VycmVudCBsaWNlbnNlIGZvciB0aGUgYXBwbGljYWJsZSB2ZXJzaW9uIG9mIHRoZSBTcGVjaWZpY2F0aW9uLgotCi17XGJmc2VyaWVzIExJTUlUQVRJT04gT0YgTElBQklMSVRZfQotCi1UTyBUSEUgRVhURU5UIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgSU4gTk8gRVZFTlQgV0lMTCBTVU4gT1IgSVRTIExJQ0VOU09SUyBCRSBMSUFCTEUgRk9SIEFOWSBEQU1BR0VTLCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OLCBMT1NUIFJFVkVOVUUsIFBST0ZJVFMgT1IgREFUQSwgT1IgRk9SIFNQRUNJQUwsIElORElSRUNULCBDT05TRVFVRU5USUFMLCBJTkNJREVOVEFMIE9SIFBVTklUSVZFIERBTUFHRVMsIEhPV0VWRVIgQ0FVU0VEIEFORCBSRUdBUkRMRVNTIE9GIFRIRSBUSEVPUlkgT0YgTElBQklMSVRZLCBBUklTSU5HIE9VVCBPRiBPUiBSRUxBVEVEIFRPIEFOWSBGVVJOSVNISU5HLCBQUkFDVElDSU5HLCBNT0RJRllJTkcgT1IgQU5ZIFVTRSBPRiBUSEUgU1BFQ0lGSUNBVElPTiwgRVZFTiBJRiBTVU4gQU5EL09SIElUUyBMSUNFTlNPUlMgSEFWRSBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KLQotWW91IHdpbGwgaG9sZCBTdW4gKGFuZCBpdHMgbGljZW5zb3JzKSBoYXJtbGVzcyBmcm9tIGFueSBjbGFpbXMgYmFzZWQgb24geW91ciB1c2Ugb2YgdGhlIFNwZWNpZmljYXRpb24gZm9yIGFueSBwdXJwb3NlcyBvdGhlciB0aGFuIHRoZSBsaW1pdGVkIHJpZ2h0IG9mIGV2YWx1YXRpb24gYXMgZGVzY3JpYmVkIGFib3ZlLCBhbmQgZnJvbSBhbnkgY2xhaW1zIHRoYXQgbGF0ZXIgdmVyc2lvbnMgb3IgcmVsZWFzZXMgb2YgYW55IFNwZWNpZmljYXRpb24gZnVybmlzaGVkIHRvIHlvdSBhcmUgaW5jb21wYXRpYmxlIHdpdGggdGhlIFNwZWNpZmljYXRpb24gcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoaXMgbGljZW5zZS4KLQote1xiZnNlcmllcyBSRVNUUklDVEVEIFJJR0hUUyBMRUdFTkR9Ci0KLUlmIHRoaXMgU29mdHdhcmUgaXMgYmVpbmcgYWNxdWlyZWQgYnkgb3Igb24gYmVoYWxmIG9mIHRoZSBVLlMuIEdvdmVybm1lbnQgb3IgYnkgYSBVLlMuIEdvdmVybm1lbnQgcHJpbWUgY29udHJhY3RvciBvciBzdWJjb250cmFjdG9yIChhdCBhbnkgdGllciksIHRoZW4gdGhlIEdvdmVybm1lbnQncyByaWdodHMgaW4gdGhlIFNvZnR3YXJlIGFuZCBhY2NvbXBhbnlpbmcgZG9jdW1lbnRhdGlvbiBzaGFsbCBiZSBvbmx5IGFzIHNldCBmb3J0aCBpbiB0aGlzIGxpY2Vuc2U7IHRoaXMgaXMgaW4gYWNjb3JkYW5jZSB3aXRoIDQ4IEMuRi5SLiAyMjcuNzIwMSB0aHJvdWdoIDIyNy43MjAyLTQgKGZvciBEZXBhcnRtZW50IG9mIERlZmVuc2UgKERvRCkgYWNxdWlzaXRpb25zKSBhbmQgd2l0aCA0OCBDLkYuUi4gMi4xMDEgYW5kIDEyLjIxMiAoZm9yIG5vbi1Eb0QgYWNxdWlzaXRpb25zKS4KLQote1xiZnNlcmllcyBSRVBPUlR9Ci0KLVlvdSBtYXkgd2lzaCB0byByZXBvcnQgYW55IGFtYmlndWl0aWVzLCBpbmNvbnNpc3RlbmNpZXMgb3IgaW5hY2N1cmFjaWVzIHlvdSBtYXkgZmluZCBpbiBjb25uZWN0aW9uIHdpdGggeW91ciBldmFsdWF0aW9uIG9mIHRoZSBTcGVjaWZpY2F0aW9uIChcbHFcbHEgRmVlZGJhY2tccnFccnEpLiAgVG8gdGhlIGV4dGVudCB0aGF0IHlvdSBwcm92aWRlIFN1biB3aXRoIGFueSBGZWVkYmFjaywgeW91IGhlcmVieTogKGkpIGFncmVlIHRoYXQgc3VjaCBGZWVkYmFjayBpcyBwcm92aWRlZCBvbiBhIG5vbi1wcm9wcmlldGFyeSBhbmQgbm9uLWNvbmZpZGVudGlhbCBiYXNpcywgYW5kIChpaSkgZ3JhbnQgU3VuIGEgcGVycGV0dWFsLCBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIGZ1bGx5IHBhaWQtdXAsIGlycmV2b2NhYmxlIGxpY2Vuc2UsIHdpdGggdGhlIHJpZ2h0IHRvIHN1YmxpY2Vuc2UgdGhyb3VnaCBtdWx0aXBsZSBsZXZlbHMgb2Ygc3VibGljZW5zZWVzLCB0byBpbmNvcnBvcmF0ZSwgZGlzY2xvc2UsIGFuZCB1c2Ugd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBGZWVkYmFjayBmb3IgYW55IHB1cnBvc2UgcmVsYXRlZCB0byB0aGUgU3BlY2lmaWNhdGlvbiBhbmQgZnV0dXJlIHZlcnNpb25zLCBpbXBsZW1lbnRhdGlvbnMsIGFuZCB0ZXN0IHN1aXRlcyB0aGVyZW9mLgotCi17XGJmc2VyaWVzIEdFTkVSQUwgVEVSTVN9Ci0KLUFueSBhY3Rpb24gcmVsYXRlZCB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJlIGdvdmVybmVkIGJ5IENhbGlmb3JuaWEgbGF3IGFuZCBjb250cm9sbGluZyBVLlMuIGZlZGVyYWwgbGF3LiBUaGUgVS5OLiBDb252ZW50aW9uIGZvciB0aGUgSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzIGFuZCB0aGUgY2hvaWNlIG9mIGxhdyBydWxlcyBvZiBhbnkganVyaXNkaWN0aW9uIHdpbGwgbm90IGFwcGx5LgotCi1UaGUgU3BlY2lmaWNhdGlvbiBpcyBzdWJqZWN0IHRvIFUuUy4gZXhwb3J0IGNvbnRyb2wgbGF3cyBhbmQgbWF5IGJlIHN1YmplY3QgdG8gZXhwb3J0IG9yIGltcG9ydCByZWd1bGF0aW9ucyBpbiBvdGhlciBjb3VudHJpZXMuIExpY2Vuc2VlIGFncmVlcyB0byBjb21wbHkgc3RyaWN0bHkgd2l0aCBhbGwgc3VjaCBsYXdzIGFuZCByZWd1bGF0aW9ucyBhbmQgYWNrbm93bGVkZ2VzIHRoYXQgaXQgaGFzIHRoZSByZXNwb25zaWJpbGl0eSB0byBvYnRhaW4gc3VjaCBsaWNlbnNlcyB0byBleHBvcnQsIHJlLWV4cG9ydCBvciBpbXBvcnQgYXMgbWF5IGJlIHJlcXVpcmVkIGFmdGVyIGRlbGl2ZXJ5IHRvIExpY2Vuc2VlLgotCi1UaGlzIEFncmVlbWVudCBpcyB0aGUgcGFydGllcycgZW50aXJlIGFncmVlbWVudCByZWxhdGluZyB0byBpdHMgc3ViamVjdCBtYXR0ZXIuIEl0IHN1cGVyc2VkZXMgYWxsIHByaW9yIG9yIGNvbnRlbXBvcmFuZW91cyBvcmFsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbnMsIHByb3Bvc2FscywgY29uZGl0aW9ucywgcmVwcmVzZW50YXRpb25zIGFuZCB3YXJyYW50aWVzIGFuZCBwcmV2YWlscyBvdmVyIGFueSBjb25mbGljdGluZyBvciBhZGRpdGlvbmFsIHRlcm1zIG9mIGFueSBxdW90ZSwgb3JkZXIsIGFja25vd2xlZGdtZW50LCBvciBvdGhlciBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHBhcnRpZXMgcmVsYXRpbmcgdG8gaXRzIHN1YmplY3QgbWF0dGVyIGR1cmluZyB0aGUgdGVybSBvZiB0aGlzIEFncmVlbWVudC4gTm8gbW9kaWZpY2F0aW9uIHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYmUgYmluZGluZywgdW5sZXNzIGluIHdyaXRpbmcgYW5kIHNpZ25lZCBieSBhbiBhdXRob3JpemVkIHJlcHJlc2VudGF0aXZlIG9mIGVhY2ggcGFydHkuCi1cZW5ke2ZsdXNobGVmdH0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL2xpY2Vuc2VfZmluYWwudGV4IGIvc3BlYy9jaGFwdGVycy9saWNlbnNlX2ZpbmFsLnRleApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ1ZGMxZS4uMDAwMDAwMAotLS0gYS9zcGVjL2NoYXB0ZXJzL2xpY2Vuc2VfZmluYWwudGV4CisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotXGJlZ2lue2ZsdXNobGVmdH0KLQote1xiZnNlcmllcyBTcGVjaWZpY2F0aW9uOiBKU1ItMDAwMzExIC0gSmF2YVx0ZXh0dHJhZGVtYXJrXCBBUEkgZm9yIFJFU1RmdWwgV2ViIFNlcnZpY2VzIChcbHFcbHEgU3BlY2lmaWNhdGlvblxycVxycSlcXAotVmVyc2lvbjogMS4xXFwKLVN0YXR1czogRmluYWwgUmVsZWFzZVxcCi1SZWxlYXNlOiBcdG9kYXlcXAotQ29weXJpZ2h0IDIwMDcgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLlxcCi00MTUwIE5ldHdvcmsgQ2lyY2xlLCBTYW50YSBDbGFyYSwgQ2FsaWZvcm5pYSA5NTA1NCwgVS5TLkFcXAotMTgwLCBBdmVudWUgZGUgTCdFdXJvcGUsIDM4MzMwIE1vbnRib25ub3QgU2FpbnQgTWFydGluLCBGcmFuY2VcXAotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLX0KLQote1xiZnNlcmllcyBMSU1JVEVEIExJQ0VOU0UgR1JBTlRTfQotCi1cYmVnaW57ZW51bWVyYXRlfQotXGl0ZW0gTGljZW5zZSBmb3IgRXZhbHVhdGlvbiBQdXJwb3Nlcy4gU3VuIGhlcmVieSBncmFudHMgeW91IGEgZnVsbHktcGFpZCwgbm9uLWV4Y2x1c2l2ZSwgbm9uLXRyYW5zZmVyYWJsZSwgd29ybGR3aWRlLCBsaW1pdGVkIGxpY2Vuc2UgKHdpdGhvdXQgdGhlIHJpZ2h0IHRvIHN1YmxpY2Vuc2UpLCB1bmRlciBTdW4ncyDKYXBwbGljYWJsZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIHRvIHZpZXcsIGRvd25sb2FkLCB1c2UgYW5kIHJlcHJvZHVjZSB0aGUgU3BlY2lmaWNhdGlvbiBvbmx5IGZvciB0aGUgcHVycG9zZSBvZiBpbnRlcm5hbCBldmFsdWF0aW9uLiDKVGhpcyBpbmNsdWRlcyAoaSkgZGV2ZWxvcGluZyBhcHBsaWNhdGlvbnMgaW50ZW5kZWQgdG8gcnVuIG9uIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTcGVjaWZpY2F0aW9uLCBwcm92aWRlZCB0aGF0IHN1Y2ggYXBwbGljYXRpb25zIGRvIG5vdCB0aGVtc2VsdmVzIGltcGxlbWVudCBhbnkgcG9ydGlvbihzKSBvZiB0aGUgU3BlY2lmaWNhdGlvbiwgYW5kIChpaSkgZGlzY3Vzc2luZyB0aGUgU3BlY2lmaWNhdGlvbiB3aXRoIGFueSB0aGlyZCBwYXJ0eTsgYW5kIChpaWkpIGV4Y2VycHRpbmcgYnJpZWYgcG9ydGlvbnMgb2YgdGhlIFNwZWNpZmljYXRpb24gaW4gb3JhbCBvciB3cml0dGVuIGNvbW11bmljYXRpb25zIHdoaWNoIGRpc2N1c3MgdGhlIFNwZWNpZmljYXRpb24gcHJvdmlkZWQgdGhhdCBzdWNoIGV4Y2VycHRzIGRvIG5vdCBpbiB0aGUgYWdncmVnYXRlIGNvbnN0aXR1dGUgYSBzaWduaWZpY2FudCBwb3J0aW9uIG9mIHRoZSBTcGVjaWZpY2F0aW9uLgotCi1caXRlbSBMaWNlbnNlIGZvciB0aGUgRGlzdHJpYnV0aW9uIG9mIENvbXBsaWFudCBJbXBsZW1lbnRhdGlvbnMuIFN1biDKYWxzbyBncmFudHMgeW91IGEgcGVycGV0dWFsLCBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlLCB3b3JsZHdpZGUsIGZ1bGx5IHBhaWQtdXAsIHJveWFsdHkgZnJlZSwgbGltaXRlZCBsaWNlbnNlICh3aXRob3V0IHRoZSByaWdodCB0byBzdWJsaWNlbnNlKSB1bmRlciBhbnkgYXBwbGljYWJsZSBjb3B5cmlnaHRzIG9yLCBzdWJqZWN0IHRvIHRoZSBwcm92aXNpb25zIG9mIHN1YnNlY3Rpb24gNCBiZWxvdywgcGF0ZW50IHJpZ2h0cyBpdCBtYXkgaGF2ZSBjb3ZlcmluZyB0aGUgU3BlY2lmaWNhdGlvbiB0byBjcmVhdGUgYW5kL29yIGRpc3RyaWJ1dGUgYW4gSW5kZXBlbmRlbnQgSW1wbGVtZW50YXRpb24gb2YgdGhlIFNwZWNpZmljYXRpb24gdGhhdDogKGEpIGZ1bGx5IGltcGxlbWVudHMgdGhlIFNwZWNpZmljYXRpb24gaW5jbHVkaW5nIGFsbCBpdHMgcmVxdWlyZWQgaW50ZXJmYWNlcyBhbmQgZnVuY3Rpb25hbGl0eTsgKGIpIGRvZXMgbm90IG1vZGlmeSwgc3Vic2V0LCBzdXBlcnNldCBvciBvdGhlcndpc2UgZXh0ZW5kIHRoZSBMaWNlbnNvciBOYW1lIFNwYWNlLCBvciBpbmNsdWRlIGFueSBwdWJsaWMgb3IgcHJvdGVjdGVkIHBhY2thZ2VzLCBjbGFzc2VzLCBKYXZhIGludGVyZmFjZXMsIGZpZWxkcyBvciBtZXRob2RzIHdpdGhpbiB0aGUgTGljZW5zb3IgTmFtZSBTcGFjZSBvdGhlciB0aGFuIHRob3NlIHJlcXVpcmVkL2F1dGhvcml6ZWQgYnkgdGhlIFNwZWNpZmljYXRpb24gb3IgU3BlY2lmaWNhdGlvbnMgYmVpbmcgaW1wbGVtZW50ZWQ7IGFuZCAoYykgcGFzc2VzIHRoZSBUZWNobm9sb2d5IENvbXBhdGliaWxpdHkgS2l0IChpbmNsdWRpbmcgc2F0aXNmeWluZyB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBhcHBsaWNhYmxlIFRDSyBVc2VycyBHdWlkZSkgZm9yIHN1Y2ggU3BlY2lmaWNhdGlvbiAoXGxxXGxxIENvbXBsaWFudCBJbXBsZW1lbnRhdGlvblxycVxycSkuIMpJbiBhZGRpdGlvbiwgdGhlIGZvcmVnb2luZyBsaWNlbnNlIGlzIGV4cHJlc3NseSBjb25kaXRpb25lZCBvbiB5b3VyIG5vdCBhY3Rpbmcgb3V0c2lkZSBpdHMgc2NvcGUuIMpObyBsaWNlbnNlIGlzIGdyYW50ZWQgaGVyZXVuZGVyIGZvciBhbnkgb3RoZXIgcHVycG9zZSAoaW5jbHVkaW5nLCBmb3IgZXhhbXBsZSwgbW9kaWZ5aW5nIHRoZSBTcGVjaWZpY2F0aW9uLCBvdGhlciB0aGFuIHRvIHRoZSBleHRlbnQgb2YgeW91ciBmYWlyIHVzZSByaWdodHMsIG9yIGRpc3RyaWJ1dGluZyB0aGUgU3BlY2lmaWNhdGlvbiB0byB0aGlyZCBwYXJ0aWVzKS4gykFsc28sIG5vIHJpZ2h0LCB0aXRsZSwgb3IgaW50ZXJlc3QgaW4gb3IgdG8gYW55IHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHRyYWRlIG5hbWVzIG9mIFN1biBvciBTdW4ncyBsaWNlbnNvcnMgaXMgZ3JhbnRlZCBoZXJldW5kZXIuIMpKYXZhLCBhbmQgSmF2YS1yZWxhdGVkIGxvZ29zLCBtYXJrcyBhbmQgbmFtZXMgYXJlIHRyYWRlbWFya3Mgb3IgcmVnaXN0ZXJlZCB0cmFkZW1hcmtzIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaW4gdGhlIFUuUy4gYW5kIG90aGVyIGNvdW50cmllcy4KLQotXGl0ZW0gUGFzcy10aHJvdWdoIENvbmRpdGlvbnMuIFlvdSBuZWVkIG5vdCBpbmNsdWRlIGxpbWl0YXRpb25zIChhKS0oYykgZnJvbSB0aGUgcHJldmlvdXMgcGFyYWdyYXBoIG9yIGFueSBvdGhlciBwYXJ0aWN1bGFyIFxscVxscSBwYXNzIHRocm91Z2hccnFccnFcIHJlcXVpcmVtZW50cyBpbiBhbnkgbGljZW5zZSBZb3UgZ3JhbnQgY29uY2VybmluZyB0aGUgdXNlIG9mIHlvdXIgSW5kZXBlbmRlbnQgSW1wbGVtZW50YXRpb24gb3IgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIGl0LiDKSG93ZXZlciwgZXhjZXB0IHdpdGggcmVzcGVjdCB0byBJbmRlcGVuZGVudCBJbXBsZW1lbnRhdGlvbnMgKGFuZCBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhlbSkgdGhhdCBzYXRpc2Z5IGxpbWl0YXRpb25zIChhKS0oYykgZnJvbSB0aGUgcHJldmlvdXMgcGFyYWdyYXBoLCBZb3UgbWF5IG5laXRoZXI6IMooYSkgZ3JhbnQgb3Igb3RoZXJ3aXNlIHBhc3MgdGhyb3VnaCB0byB5b3VyIGxpY2Vuc2VlcyBhbnkgbGljZW5zZXMgdW5kZXIgU3VuJ3MgymFwcGxpY2FibGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0czsgbm9yIChiKSBhdXRob3JpemUgeW91ciBsaWNlbnNlZXMgdG8gbWFrZSBhbnkgY2xhaW1zIGNvbmNlcm5pbmcgdGhlaXIgaW1wbGVtZW50YXRpb24ncyBjb21wbGlhbmNlIHdpdGggdGhlIFNwZWNpZmljYXRpb24gaW4gcXVlc3Rpb24uCi0KLVxpdGVtIFJlY2lwcm9jaXR5IENvbmNlcm5pbmcgUGF0ZW50IExpY2Vuc2VzLiDKCi1cYmVnaW57ZW51bWVyYXRlfQotXGl0ZW3KV2l0aCByZXNwZWN0IHRvIGFueSBwYXRlbnQgY2xhaW1zIGNvdmVyZWQgYnkgdGhlIGxpY2Vuc2UgZ3JhbnRlZCB1bmRlciBzdWJwYXJhZ3JhcGggMiBhYm92ZSB0aGF0IHdvdWxkIGJlIGluZnJpbmdlZCBieSBhbGwgdGVjaG5pY2FsbHkgZmVhc2libGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBTcGVjaWZpY2F0aW9uLCBzdWNoIGxpY2Vuc2UgaXMgY29uZGl0aW9uZWQgdXBvbiB5b3VyIG9mZmVyaW5nIG9uIGZhaXIsIHJlYXNvbmFibGUgYW5kIG5vbi1kaXNjcmltaW5hdG9yeSB0ZXJtcywgdG8gYW55IHBhcnR5IHNlZWtpbmcgaXQgZnJvbSBZb3UsIGEgcGVycGV0dWFsLCBub24tZXhjbHVzaXZlLCBub24tdHJhbnNmZXJhYmxlLCB3b3JsZHdpZGUgbGljZW5zZSB1bmRlciBZb3VyIHBhdGVudCByaWdodHMgd2hpY2ggYXJlIG9yIHdvdWxkIGJlIGluZnJpbmdlZCBieSBhbGwgdGVjaG5pY2FsbHkgZmVhc2libGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBTcGVjaWZpY2F0aW9uIHRvIGRldmVsb3AsIGRpc3RyaWJ1dGUgYW5kIHVzZSBhIENvbXBsaWFudCBJbXBsZW1lbnRhdGlvbi4KLQotXGl0ZW3KV2l0aCByZXNwZWN0IHRvIGFueSBwYXRlbnQgY2xhaW1zIG93bmVkIGJ5IFN1biBhbmQgY292ZXJlZCBieSB0aGUgbGljZW5zZSBncmFudGVkIHVuZGVyIHN1YnBhcmFncmFwaCAyLCB3aGV0aGVyIG9yIG5vdCB0aGVpciBpbmZyaW5nZW1lbnQgY2FuIGJlIGF2b2lkZWQgaW4gYSB0ZWNobmljYWxseSBmZWFzaWJsZSBtYW5uZXIgd2hlbiBpbXBsZW1lbnRpbmcgdGhlIFNwZWNpZmljYXRpb24sIHN1Y2ggbGljZW5zZSBzaGFsbCB0ZXJtaW5hdGUgd2l0aCByZXNwZWN0IHRvIHN1Y2ggY2xhaW1zIGlmIFlvdSBpbml0aWF0ZSBhIGNsYWltIGFnYWluc3QgU3VuIHRoYXQgaXQgaGFzLCBpbiB0aGUgY291cnNlIG9mIHBlcmZvcm1pbmcgaXRzIHJlc3BvbnNpYmlsaXRpZXMgYXMgdGhlIFNwZWNpZmljYXRpb24gTGVhZCwgaW5kdWNlZCBhbnkgb3RoZXIgZW50aXR5IHRvIGluZnJpbmdlIFlvdXIgcGF0ZW50IHJpZ2h0cy4KLQotXGl0ZW3KQWxzbyB3aXRoIHJlc3BlY3QgdG8gYW55IHBhdGVudCBjbGFpbXMgb3duZWQgYnkgU3VuIGFuZCBjb3ZlcmVkIGJ5IHRoZSBsaWNlbnNlIGdyYW50ZWQgdW5kZXIgc3VicGFyYWdyYXBoIDIgYWJvdmUsIHdoZXJlIHRoZSBpbmZyaW5nZW1lbnQgb2Ygc3VjaCBjbGFpbXMgY2FuIGJlIGF2b2lkZWQgaW4gYSB0ZWNobmljYWxseSBmZWFzaWJsZSBtYW5uZXIgd2hlbiBpbXBsZW1lbnRpbmcgdGhlIFNwZWNpZmljYXRpb24gc3VjaCBsaWNlbnNlLCB3aXRoIHJlc3BlY3QgdG8gc3VjaCBjbGFpbXMsIHNoYWxsIHRlcm1pbmF0ZSBpZiBZb3UgaW5pdGlhdGUgYSBjbGFpbSBhZ2FpbnN0IFN1biDKdGhhdCBpdHMgbWFraW5nLCBoYXZpbmcgbWFkZSwgdXNpbmcsIG9mZmVyaW5nIHRvIHNlbGwsIHNlbGxpbmcgb3IgaW1wb3J0aW5nIGEgQ29tcGxpYW50IEltcGxlbWVudGF0aW9uIGluZnJpbmdlcyBZb3VyIHBhdGVudCByaWdodHMuCi1cZW5ke2VudW1lcmF0ZX0KLQotXGl0ZW0gRGVmaW5pdGlvbnMuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBBZ3JlZW1lbnQ6IMpcbHFcbHEgSW5kZXBlbmRlbnQgCi1JbXBsZW1lbnRhdGlvblxycVxycVwgc2hhbGwgbWVhbiBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3BlY2lmaWNhdGlvbiB0aGF0IAotbmVpdGhlciBkZXJpdmVzIGZyb20gYW55IG9mIFN1bidzIMpzb3VyY2UgY29kZSBvciBiaW5hcnkgY29kZSBtYXRlcmlhbHMgbm9yLCAKLWV4Y2VwdCB3aXRoIGFuIGFwcHJvcHJpYXRlIGFuZCBzZXBhcmF0ZSBsaWNlbnNlIGZyb20gU3VuLCBpbmNsdWRlcyBhbnkgb2YgU3VuJ3MgCi1zb3VyY2UgY29kZSBvciBiaW5hcnkgY29kZSBtYXRlcmlhbHM7IFxscVxscSBMaWNlbnNvciBOYW1lIFNwYWNlXHJxXHJxXCBzaGFsbCAKLW1lYW4gdGhlIHB1YmxpYyBjbGFzcyBvciBpbnRlcmZhY2UgZGVjbGFyYXRpb25zIHdob3NlIG5hbWVzIGJlZ2luIHdpdGggXGxxXGxxIAotamF2YVxycVxycSwgXGxxXGxxIGphdmF4XHJxXHJxLCBcbHFcbHEgY29tLnN1blxycVxycVwgb3IgdGhlaXIgZXF1aXZhbGVudHMgaW4gCi1hbnkgc3Vic2VxdWVudCBuYW1pbmcgY29udmVudGlvbiBhZG9wdGVkIGJ5IFN1biDKdGhyb3VnaCB0aGUgSmF2YSBDb21tdW5pdHkgCi1Qcm9jZXNzLCBvciBhbnkgcmVjb2duaXplZCBzdWNjZXNzb3JzIG9yIHJlcGxhY2VtZW50cyB0aGVyZW9mOyBhbmQgXGxxXGxxIAotVGVjaG5vbG9neSBDb21wYXRpYmlsaXR5IEtpdFxycVxycVwgb3IgXGxxXGxxIFRDS1xycVxycVwgc2hhbGwgbWVhbiB0aGUgdGVzdCAKLXN1aXRlIGFuZCBhY2NvbXBhbnlpbmcgVENLIFVzZXIncyBHdWlkZSBwcm92aWRlZCBieSBTdW4gyndoaWNoIGNvcnJlc3BvbmRzIHRvIAotdGhlIFNwZWNpZmljYXRpb24gYW5kIHRoYXQgd2FzIGF2YWlsYWJsZSBlaXRoZXIgKGkpIGZyb20gU3VuJ3MgMTIwIGRheXMgYmVmb3JlIAotdGhlIGZpcnN0IHJlbGVhc2Ugb2YgWW91ciBJbmRlcGVuZGVudCBJbXBsZW1lbnRhdGlvbiB0aGF0IGFsbG93cyBpdHMgdXNlIGZvciAKLWNvbW1lcmNpYWwgcHVycG9zZXMsIG9yIChpaSkgbW9yZSByZWNlbnRseSB0aGFuIDEyMCBkYXlzIGZyb20gc3VjaCByZWxlYXNlIGJ1dCAKLWFnYWluc3Qgd2hpY2ggWW91IGVsZWN0IHRvIHRlc3QgWW91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3BlY2lmaWNhdGlvbi4KLVxlbmR7ZW51bWVyYXRlfQotCi1UaGlzIEFncmVlbWVudCB3aWxsIHRlcm1pbmF0ZSBpbW1lZGlhdGVseSB3aXRob3V0IG5vdGljZSBmcm9tIFN1biBpZiB5b3UgYnJlYWNoIHRoZSBBZ3JlZW1lbnQgb3IgYWN0IG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBsaWNlbnNlcyBncmFudGVkIGFib3ZlLgotCi17XGJmc2VyaWVzIFRSQURFTUFSS1N9Ci0KLU5vIHJpZ2h0LCB0aXRsZSwgb3IgaW50ZXJlc3QgaW4gb3IgdG8gYW55IHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHRyYWRlIG5hbWVzIG9mIFN1biBvciBTdW4ncyBsaWNlbnNvcnMgaXMgZ3JhbnRlZCBoZXJldW5kZXIuICBTdW4sIFN1biBNaWNyb3N5c3RlbXMsIHRoZSBTdW4gbG9nbywgSmF2YSwgIGFyZSB0cmFkZW1hcmtzIG9yIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcyBvZiBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIGluIHRoZQotVS5TLiBhbmQgb3RoZXIgY291bnRyaWVzLgotCi17XGJmc2VyaWVzIERJU0NMQUlNRVIgT0YgV0FSUkFOVElFU30KLQotVEhFIFNQRUNJRklDQVRJT04gSVMgUFJPVklERUQgXGxxXGxxIEFTIElTXHJxXHJxLiBTVU4gTUFLRVMgTk8gUkVQUkVTRU5UQVRJT05TIE9SIFdBUlJBTlRJRVMsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8sIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSwgTk9OLUlORlJJTkdFTUVOVCAoSU5DTFVESU5HIEFTIEEgQ09OU0VRVUVOQ0UgT0YgQU5ZIFBSQUNUSUNFIE9SIElNUExFTUVOVEFUSU9OIE9GIFRIRSBTUEVDSUZJQ0FUSU9OKSwgT1IgVEhBVCBUSEUgQ09OVEVOVFMgT0YgVEhFIFNQRUNJRklDQVRJT04gQVJFIFNVSVRBQkxFIEZPUiBBTlkgUFVSUE9TRS4gylRoaXMgZG9jdW1lbnQgZG9lcyBub3QgcmVwcmVzZW50IGFueSBjb21taXRtZW50IHRvIHJlbGVhc2Ugb3IgaW1wbGVtZW50IGFueSBwb3J0aW9uIG9mIHRoZSBTcGVjaWZpY2F0aW9uIGluIGFueSBwcm9kdWN0LiBJbiBhZGRpdGlvbiwgdGhlIFNwZWNpZmljYXRpb24gY291bGQgaW5jbHVkZSB0ZWNobmljYWwgaW5hY2N1cmFjaWVzIG9yIHR5cG9ncmFwaGljYWwgZXJyb3JzLgotCi17XGJmc2VyaWVzIExJTUlUQVRJT04gT0YgTElBQklMSVRZfQotCi1UTyBUSEUgRVhURU5UIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgSU4gTk8gRVZFTlQgV0lMTCBTVU4gT1IgSVRTIExJQ0VOU09SUyBCRSBMSUFCTEUgRk9SIEFOWSBEQU1BR0VTLCBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OLCBMT1NUIFJFVkVOVUUsIFBST0ZJVFMgT1IgREFUQSwgT1IgRk9SIFNQRUNJQUwsIElORElSRUNULCBDT05TRVFVRU5USUFMLCBJTkNJREVOVEFMIE9SIFBVTklUSVZFIERBTUFHRVMsIEhPV0VWRVIgQ0FVU0VEIEFORCBSRUdBUkRMRVNTIE9GIFRIRSBUSEVPUlkgT0YgTElBQklMSVRZLCBBUklTSU5HIE9VVCBPRiBPUiBSRUxBVEVEIElOIEFOWSBXQVkgVE8gWU9VUiBIQVZJTkcsIElNUEVMRU1FTlRJTkcgT1IgT1RIRVJXSVNFIFVTSU5HIFVTSU5HIMpUSEUgU1BFQ0lGSUNBVElPTiwgRVZFTiBJRiBTVU4gQU5EL09SIElUUyBMSUNFTlNPUlMgSEFWRSBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KLQotWW91IHdpbGwgaW5kZW1uaWZ5LCBob2xkIGhhcm1sZXNzLCBhbmQgZGVmZW5kIFN1biBhbmQgaXRzIGxpY2Vuc29ycyBmcm9tIGFueSBjbGFpbXMgYXJpc2luZyBvciByZXN1bHRpbmcgZnJvbTogKGkpIHlvdXIgdXNlIG9mIHRoZSBTcGVjaWZpY2F0aW9uOyAoaWkpIHRoZSB1c2Ugb3IgZGlzdHJpYnV0aW9uIG9mIHlvdXIgSmF2YSBhcHBsaWNhdGlvbiwgYXBwbGV0IGFuZC9vciBpbXBsZW1lbnRhdGlvbjsgYW5kL29yIChpaWkpIGFueSBjbGFpbXMgdGhhdCBsYXRlciB2ZXJzaW9ucyBvciByZWxlYXNlcyBvZiBhbnkgU3BlY2lmaWNhdGlvbiBmdXJuaXNoZWQgdG8geW91IGFyZSBpbmNvbXBhdGlibGUgd2l0aCB0aGUgU3BlY2lmaWNhdGlvbiBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhpcyBsaWNlbnNlLiAKLQote1xiZnNlcmllcyBSRVNUUklDVEVEIFJJR0hUUyBMRUdFTkR9Ci0KLVUuUy4gR292ZXJubWVudDogSWYgdGhpcyBTcGVjaWZpY2F0aW9uIGlzIGJlaW5nIGFjcXVpcmVkIGJ5IG9yIG9uIGJlaGFsZiBvZiB0aGUgVS5TLiBHb3Zlcm5tZW50IG9yIGJ5IGEgVS5TLiBHb3Zlcm5tZW50IHByaW1lIGNvbnRyYWN0b3Igb3Igc3ViY29udHJhY3RvciAoYXQgYW55IHRpZXIpLCB0aGVuIHRoZSBHb3Zlcm5tZW50J3MgcmlnaHRzIGluIHRoZSBTb2Z0d2FyZSBhbmQgYWNjb21wYW55aW5nIGRvY3VtZW50YXRpb24gc2hhbGwgYmUgb25seSBhcyBzZXQgZm9ydGggaW4gdGhpcyBsaWNlbnNlOyB0aGlzIGlzIGluIGFjY29yZGFuY2Ugd2l0aCA0OCBDLkYuUi4gMjI3LjcyMDEgdGhyb3VnaCAyMjcuNzIwMi00IChmb3IgRGVwYXJ0bWVudCBvZiBEZWZlbnNlIChEb0QpIGFjcXVpc2l0aW9ucykgYW5kIHdpdGggNDggQy5GLlIuIDIuMTAxIGFuZCAxMi4yMTIgKGZvciBub24tRG9EIGFjcXVpc2l0aW9ucykuCi0KLXtcYmZzZXJpZXMgUkVQT1JUfQotCi1JZiB5b3UgcHJvdmlkZSBTdW4gd2l0aCBhbnkgY29tbWVudHMgb3Igc3VnZ2VzdGlvbnMgY29uY2VybmluZyB0aGUgU3BlY2lmaWNhdGlvbiAoXGxxXGxxIEZlZWRiYWNrXHJxXHJxKSwgeW91IGhlcmVieTogKGkpIGFncmVlIHRoYXQgc3VjaCBGZWVkYmFjayBpcyBwcm92aWRlZCBvbiBhIG5vbi1wcm9wcmlldGFyeSBhbmQgbm9uLWNvbmZpZGVudGlhbCBiYXNpcywgYW5kIChpaSkgZ3JhbnQgU3VuIGEgcGVycGV0dWFsLCBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIGZ1bGx5IHBhaWQtdXAsIGlycmV2b2NhYmxlIGxpY2Vuc2UsIHdpdGggdGhlIHJpZ2h0IHRvIHN1YmxpY2Vuc2UgdGhyb3VnaCBtdWx0aXBsZSBsZXZlbHMgb2Ygc3VibGljZW5zZWVzLCB0byBpbmNvcnBvcmF0ZSwgZGlzY2xvc2UsIGFuZCB1c2Ugd2l0aG91dCBsaW1pdGF0aW9uIHRoZSBGZWVkYmFjayBmb3IgYW55IHB1cnBvc2UuCi0KLXtcYmZzZXJpZXMgR0VORVJBTCBURVJNU30KLQotQW55IGFjdGlvbiByZWxhdGVkIHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYmUgZ292ZXJuZWQgYnkgQ2FsaWZvcm5pYSBsYXcgYW5kIGNvbnRyb2xsaW5nIFUuUy4gZmVkZXJhbCBsYXcuIFRoZSBVLk4uIENvbnZlbnRpb24gZm9yIHRoZSBJbnRlcm5hdGlvbmFsIFNhbGUgb2YgR29vZHMgYW5kIHRoZSBjaG9pY2Ugb2YgbGF3IHJ1bGVzIG9mIGFueSBqdXJpc2RpY3Rpb24gd2lsbCBub3QgYXBwbHkuCi0KLVRoZSBTcGVjaWZpY2F0aW9uIGlzIHN1YmplY3QgdG8gVS5TLiBleHBvcnQgY29udHJvbCBsYXdzIGFuZCBtYXkgYmUgc3ViamVjdCB0byBleHBvcnQgb3IgaW1wb3J0IHJlZ3VsYXRpb25zIGluIG90aGVyIGNvdW50cmllcy4gTGljZW5zZWUgYWdyZWVzIHRvIGNvbXBseSBzdHJpY3RseSB3aXRoIGFsbCBzdWNoIGxhd3MgYW5kIHJlZ3VsYXRpb25zIGFuZCBhY2tub3dsZWRnZXMgdGhhdCBpdCBoYXMgdGhlIHJlc3BvbnNpYmlsaXR5IHRvIG9idGFpbiBzdWNoIGxpY2Vuc2VzIHRvIGV4cG9ydCwgcmUtZXhwb3J0IG9yIGltcG9ydCBhcyBtYXkgYmUgcmVxdWlyZWQgYWZ0ZXIgZGVsaXZlcnkgdG8gTGljZW5zZWUuCi0KLVRoaXMgQWdyZWVtZW50IGlzIHRoZSBwYXJ0aWVzJyBlbnRpcmUgYWdyZWVtZW50IHJlbGF0aW5nIHRvIGl0cyBzdWJqZWN0IG1hdHRlci4gSXQgc3VwZXJzZWRlcyBhbGwgcHJpb3Igb3IgY29udGVtcG9yYW5lb3VzIG9yYWwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9ucywgcHJvcG9zYWxzLCBjb25kaXRpb25zLCByZXByZXNlbnRhdGlvbnMgYW5kIHdhcnJhbnRpZXMgYW5kIHByZXZhaWxzIG92ZXIgYW55IGNvbmZsaWN0aW5nIG9yIGFkZGl0aW9uYWwgdGVybXMgb2YgYW55IHF1b3RlLCBvcmRlciwgymFja25vd2xlZGdtZW50LCBvciBvdGhlciBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHBhcnRpZXMgcmVsYXRpbmcgdG8gaXRzIHN1YmplY3QgbWF0dGVyIGR1cmluZyB0aGUgdGVybSBvZiB0aGlzIEFncmVlbWVudC4gTm8gbW9kaWZpY2F0aW9uIHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYmUgYmluZGluZywgdW5sZXNzIGluIHdyaXRpbmcgYW5kIHNpZ25lZCBieSBhbiBhdXRob3JpemVkIHJlcHJlc2VudGF0aXZlIG9mIGVhY2ggcGFydHkuCi0KLVJldi4gQXByaWwsIDIwMDYKLVxlbmR7Zmx1c2hsZWZ0fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NwZWMvY2hhcHRlcnMvcHJvdmlkZXJzLnRleCBiL3NwZWMvY2hhcHRlcnMvcHJvdmlkZXJzLnRleApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UzYTViNS4uMDAwMDAwMAotLS0gYS9zcGVjL2NoYXB0ZXJzL3Byb3ZpZGVycy50ZXgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotXGNoYXB0ZXJ7UHJvdmlkZXJzfQotXGxhYmVse3Byb3ZpZGVyc30KLQotVGhlIFxqYXhyc1wgcnVudGltZSBpcyBleHRlbmRlZCB1c2luZyBhcHBsaWNhdGlvbi1zdXBwbGllZCBwcm92aWRlciBjbGFzc2VzLiBBIHByb3ZpZGVyIGlzIGFubm90YXRlZCB3aXRoIFxQcm92aWRlclwgYW5kIGltcGxlbWVudHMgb25lIG9yIG1vcmUgaW50ZXJmYWNlcyBkZWZpbmVkIGJ5IFxqYXhycy4KLQotXHNlY3Rpb257TGlmZWN5Y2xlIGFuZCBFbnZpcm9ubWVudH0KLQotQnkgZGVmYXVsdCBhIHNpbmdsZSBpbnN0YW5jZSBvZiBlYWNoIHByb3ZpZGVyIGNsYXNzIGlzIGluc3RhbnRpYXRlZCBmb3IgZWFjaCBcamF4cnNcIGFwcGxpY2F0aW9uLiBGaXJzdCB0aGUgY29uc3RydWN0b3IgKHNlZSBzZWN0aW9uIFxyZWZ7cHJvdmlkZXJfY2xhc3NfY29uc3RydWN0b3J9KSBpcyBjYWxsZWQsIHRoZW4gYW55IHJlcXVlc3RlZCBkZXBlbmRlbmNpZXMgYXJlIGluamVjdGVkIChzZWUgY2hhcHRlciBccmVme2NvbnRleHR9KSwgdGhlbiB0aGUgYXBwcm9wcmlhdGUgcHJvdmlkZXIgbWV0aG9kcyBtYXkgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIChzaW11bHRhbmVvdXNseSksIGFuZCBmaW5hbGx5IHRoZSBvYmplY3QgaXMgbWFkZSBhdmFpbGFibGUgZm9yIGdhcmJhZ2UgY29sbGVjdGlvbi4gU2VjdGlvbiBccmVme3Byb3ZpZGVyY29udGV4dH0gZGVzY3JpYmVzIGhvdyBhIHByb3ZpZGVyIG9idGFpbnMgYWNjZXNzIHRvIG90aGVyIHByb3ZpZGVycyB2aWEgZGVwZW5kZW5jeSBpbmplY3Rpb24uCi0KLUFuIGltcGxlbWVudGF0aW9uIE1BWSBvZmZlciBvdGhlciBwcm92aWRlciBsaWZlY3ljbGVzLCBtZWNoYW5pc21zIGZvciBzcGVjaWZ5aW5nIHRoZXNlIGFyZSBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIHNwZWNpZmljYXRpb24uIEUuZy4gYW4gaW1wbGVtZW50YXRpb24gYmFzZWQgb24gYW4gaW52ZXJzaW9uLW9mLWNvbnRyb2wgZnJhbWV3b3JrIG1heSBzdXBwb3J0IGFsbCBvZiB0aGUgbGlmZWN5Y2xlIG9wdGlvbnMgcHJvdmlkZWQgYnkgdGhhdCBmcmFtZXdvcmsuCi0KLVxzdWJzZWN0aW9ue0NvbnN0cnVjdG9yc30KLVxsYWJlbHtwcm92aWRlcl9jbGFzc19jb25zdHJ1Y3Rvcn0KLQotUHJvdmlkZXIgY2xhc3NlcyBhcmUgaW5zdGFudGlhdGVkIGJ5IHRoZSBcamF4cnNcIHJ1bnRpbWUgYW5kIE1VU1QgaGF2ZSBhIHB1YmxpYyBjb25zdHJ1Y3RvciBmb3Igd2hpY2ggdGhlIFxqYXhyc1wgcnVudGltZSBjYW4gcHJvdmlkZSBhbGwgcGFyYW1ldGVyIHZhbHVlcy4gTm90ZSB0aGF0IGEgemVybyBhcmd1bWVudCBjb25zdHJ1Y3RvciBpcyBwZXJtaXNzaWJsZSB1bmRlciB0aGlzIHJ1bGUuCi0KLUEgcHVibGljIGNvbnN0cnVjdG9yIE1BWSBpbmNsdWRlIHBhcmFtZXRlcnMgYW5ub3RhdGVkIHdpdGggXENvbnRleHQgLSBjaGFwdGVyIFxyZWZ7Y29udGV4dH0gZGVmaW5lcyB0aGUgcGFyYW1ldGVyIHR5cGVzIHBlcm1pdHRlZCBmb3IgdGhpcyBhbm5vdGF0aW9uLiBTaW5jZSBwcm92aWRlcnMgbWF5IGJlIGNyZWF0ZWQgb3V0c2lkZSB0aGUgc2NvcGUgb2YgYSBwYXJ0aWN1bGFyIHJlcXVlc3QsIG9ubHkgZGVwbG95bWVudC1zcGVjaWZpYyBwcm9wZXJ0aWVzIG1heSBiZSBhdmFpbGFibGUgZnJvbSBpbmplY3RlZCBpbnRlcmZhY2VzIGF0IGNvbnN0cnVjdGlvbiB0aW1lIC0gcmVxdWVzdC1zcGVjaWZpYyBwcm9wZXJ0aWVzIGFyZSBhdmFpbGFibGUgd2hlbiBhIHByb3ZpZGVyIG1ldGhvZCBpcyBjYWxsZWQuIElmIG1vcmUgdGhhbiBvbmUgcHVibGljIGNvbnN0cnVjdG9yIGNhbiBiZSB1c2VkIHRoZW4gYW4gaW1wbGVtZW50YXRpb24gTVVTVCB1c2UgdGhlIG9uZSB3aXRoIHRoZSBtb3N0IHBhcmFtZXRlcnMuIENob29zaW5nIGFtb25nc3QgY29uc3RydWN0b3JzIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgaXMgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMsIGltcGxlbWVudGF0aW9ucyBTSE9VTEQgZ2VuZXJhdGUgYSB3YXJuaW5nIGFib3V0IHN1Y2ggYW1iaWd1aXR5LgotCi1cc2VjdGlvbntFbnRpdHkgUHJvdmlkZXJzfQotXGxhYmVse2VudGl0eV9wcm92aWRlcnN9Ci0KLUVudGl0eSBwcm92aWRlcnMgc3VwcGx5IG1hcHBpbmcgc2VydmljZXMgYmV0d2VlbiByZXByZXNlbnRhdGlvbnMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgSmF2YSB0eXBlcy4gRW50aXR5IHByb3ZpZGVycyBjb21lIGluIHR3byBmbGF2b3JzOiBcTXNnUmVhZFwgYW5kIFxNc2dXcml0ZVwgZGVzY3JpYmVkIGJlbG93LiBJbiB0aGUgYWJzZW5jZSBvZiBhIHN1aXRhYmxlIGVudGl0eSBwcm92aWRlciwgXGpheHJzXCBpbXBsZW1lbnRhdGlvbnMgYXJlIFJFUVVJUkVEIHRvIHVzZSB0byB0aGUgSmF2YUJlYW5zIEFjdGl2YXRpb24gRnJhbWV3b3JrXGNpdGV7amFmfSB0byB0cnkgdG8gb2J0YWluIGEgc3VpdGFibGUgZGF0YSBoYW5kbGVyIHRvIHBlcmZvcm0gdGhlIG1hcHBpbmcgaW5zdGVhZC4KLQotXHN1YnNlY3Rpb257TWVzc2FnZSBCb2R5IFJlYWRlcn0KLVxsYWJlbHttZXNzYWdlX2JvZHlfcmVhZGVyfQotCi1UaGUgXE1zZ1JlYWRcIGludGVyZmFjZSBkZWZpbmVzIHRoZSBjb250cmFjdCBiZXR3ZWVuIHRoZSBcamF4cnNcIHJ1bnRpbWUgYW5kIGNvbXBvbmVudHMgdGhhdCBwcm92aWRlIG1hcHBpbmcgc2VydmljZXMgZnJvbSByZXByZXNlbnRhdGlvbnMgdG8gYSBjb3JyZXNwb25kaW5nIEphdmEgdHlwZS4gQSBjbGFzcyB3aXNoaW5nIHRvIHByb3ZpZGUgc3VjaCBhIHNlcnZpY2UgaW1wbGVtZW50cyB0aGUgXE1zZ1JlYWRcIGludGVyZmFjZSBhbmQgaXMgYW5ub3RhdGVkIHdpdGggXFByb3ZpZGVyLgotCi1UaGUgZm9sbG93aW5nIGRlc2NyaWJlcyB0aGUgbG9naWNhbFxmb290bm90ZXtJbXBsZW1lbnRhdGlvbnMgYXJlIGZyZWUgdG8gb3B0aW1pemUgdGhlaXIgcHJvY2Vzc2luZyBwcm92aWRlZCB0aGUgcmVzdWx0cyBhcmUgZXF1aXZhbGVudCB0byB0aG9zZSB0aGF0IHdvdWxkIGJlIG9idGFpbmVkIGlmIHRoZXNlIHN0ZXBzIGFyZSBmb2xsb3dlZC59IHN0ZXBzIHRha2VuIGJ5IGEgXGpheHJzXCBpbXBsZW1lbnRhdGlvbiB3aGVuIG1hcHBpbmcgYSByZXF1ZXN0IGVudGl0eSBib2R5IHRvIGEgSmF2YSBtZXRob2QgcGFyYW1ldGVyOgotCi1cYmVnaW57ZW51bWVyYXRlfQotXGl0ZW0gT2J0YWluIHRoZSBtZWRpYSB0eXBlIG9mIHRoZSByZXF1ZXN0LiBJZiB0aGUgcmVxdWVzdCBkb2VzIG5vdCBjb250YWluIGEgXGNvZGV7Q29udGVudC1UeXBlfSBoZWFkZXIgdGhlbiB1c2UgXGNvZGV7YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtfS4KLVxpdGVtIElkZW50aWZ5IHRoZSBKYXZhIHR5cGUgb2YgdGhlIHBhcmFtZXRlciB3aG9zZSB2YWx1ZSB3aWxsIGJlIG1hcHBlZCBmcm9tIHRoZSBlbnRpdHkgYm9keS4gU2VjdGlvbiBccmVme21hcHBpbmdfcmVxdWVzdHNfdG9famF2YV9tZXRob2RzfSBkZXNjcmliZXMgaG93IHRoZSBKYXZhIG1ldGhvZCBpcyBjaG9zZW4uCi1caXRlbSBTZWxlY3QgdGhlIHNldCBvZiBcTXNnUmVhZFwgY2xhc3NlcyB0aGF0IHN1cHBvcnQgdGhlIG1lZGlhIHR5cGUgb2YgdGhlIHJlcXVlc3QsIHNlZSBzZWN0aW9uIFxyZWZ7ZGVjbGFyaW5nX3Byb3ZpZGVyX2NhcGFiaWxpdGllc30uCi1caXRlbVxsYWJlbHtmaW5kcmVhZGVyfSBJdGVyYXRlIHRocm91Z2ggdGhlIHNlbGVjdGVkIFxNc2dSZWFkXCBjbGFzc2VzIGFuZCwgdXRpbGl6aW5nIHRoZSBcY29kZXtpc1JlYWRhYmxlfSBtZXRob2Qgb2YgZWFjaCwgY2hvb3NlIGEgXE1zZ1JlYWRcIHByb3ZpZGVyIHRoYXQgc3VwcG9ydHMgdGhlIGRlc2lyZWQgSmF2YSB0eXBlLgotXGl0ZW0gSWYgc3RlcCBccmVme2ZpbmRyZWFkZXJ9IGxvY2F0ZXMgYSBzdWl0YWJsZSBcTXNnUmVhZFwgdGhlbiB1c2UgaXRzIFxjb2Rle3JlYWRGcm9tfSBtZXRob2QgdG8gbWFwIHRoZSBlbnRpdHkgYm9keSB0byB0aGUgZGVzaXJlZCBKYXZhIHR5cGUuCi1caXRlbSBFbHNlIGlmIGEgc3VpdGFibGUgZGF0YSBoYW5kbGVyIGNhbiBiZSBmb3VuZCB1c2luZyB0aGUgSmF2YUJlYW5zIEFjdGl2YXRpb24gRnJhbWV3b3JrXGNpdGV7amFmfSB0aGVuIHVzZSBpdCB0byBtYXAgdGhlIGVudGl0eSBib2R5IHRvIHRoZSBkZXNpcmVkIEphdmEgdHlwZS4KLVxpdGVtIEVsc2UgZ2VuZXJhdGUgYSBcV2ViQXBwRXhjXCB0aGF0IGNvbnRhaW5zIGFuIHVuc3VwcG9ydGVkIG1lZGlhIHR5cGUgcmVzcG9uc2UgKEhUVFAgNDE1IHN0YXR1cykgYW5kIG5vIGVudGl0eS4gVGhlIGV4Y2VwdGlvbiBNVVNUIGJlIHByb2Nlc3NlZCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiBccmVme21ldGhvZF9leGN9LgotXGVuZHtlbnVtZXJhdGV9Ci0KLUEgXE1zZ1JlYWRcY29kZXsucmVhZEZyb219IG1ldGhvZCBNQVkgdGhyb3cgXFdlYkFwcEV4Yy4gSWYgdGhyb3duLCB0aGUgcmVzb3VyY2UgbWV0aG9kIGlzIG5vdCBpbnZva2VkIGFuZCB0aGUgZXhjZXB0aW9uIGlzIHRyZWF0ZWQgYXMgaWYgaXQgb3JpZ2luYXRlZCBmcm9tIGEgcmVzb3VyY2UgbWV0aG9kLCBzZWUgc2VjdGlvbiBccmVme21ldGhvZF9leGN9LgotCi1cc3Vic2VjdGlvbntNZXNzYWdlIEJvZHkgV3JpdGVyfQotXGxhYmVse21lc3NhZ2VfYm9keV93cml0ZXJ9Ci0KLVRoZSBcTXNnV3JpdGVcIGludGVyZmFjZSBkZWZpbmVzIHRoZSBjb250cmFjdCBiZXR3ZWVuIHRoZSBcamF4cnNcIHJ1bnRpbWUgYW5kIGNvbXBvbmVudHMgdGhhdCBwcm92aWRlIG1hcHBpbmcgc2VydmljZXMgZnJvbSBhIEphdmEgdHlwZSB0byBhIHJlcHJlc2VudGF0aW9uLiBBIGNsYXNzIHdpc2hpbmcgdG8gcHJvdmlkZSBzdWNoIGEgc2VydmljZSBpbXBsZW1lbnRzIHRoZSBcTXNnV3JpdGVcIGludGVyZmFjZSBhbmQgaXMgYW5ub3RhdGVkIHdpdGggXFByb3ZpZGVyLgotCi1UaGUgZm9sbG93aW5nIGRlc2NyaWJlcyB0aGUgbG9naWNhbCBzdGVwcyB0YWtlbiBieSBhIFxqYXhyc1wgaW1wbGVtZW50YXRpb24gd2hlbiBtYXBwaW5nIGEgcmV0dXJuIHZhbHVlIHRvIGEgcmVzcG9uc2UgZW50aXR5IGJvZHk6Ci0KLVxiZWdpbntlbnVtZXJhdGV9Ci1caXRlbSBPYnRhaW4gdGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgbWFwcGVkIHRvIHRoZSByZXNwb25zZSBlbnRpdHkgYm9keS4gRm9yIGEgcmV0dXJuIHR5cGUgb2YgXFJlc3BvbnNlXCBvciBzdWJjbGFzc2VzIHRoZSBvYmplY3QgaXMgdGhlIHZhbHVlIG9mIHRoZSBcY29kZXtlbnRpdHl9IHByb3BlcnR5LCBmb3Igb3RoZXIgcmV0dXJuIHR5cGVzIGl0IGlzIHRoZSByZXR1cm5lZCBvYmplY3QuCi1caXRlbSBEZXRlcm1pbmUgdGhlIG1lZGlhIHR5cGUgb2YgdGhlIHJlc3BvbnNlLCBzZWUgc2VjdGlvbiBccmVme2RldGVybWluZV9yZXNwb25zZV90eXBlfS4KLVxpdGVtIFNlbGVjdCB0aGUgc2V0IG9mIFxNc2dXcml0ZVwgcHJvdmlkZXJzIHRoYXQgc3VwcG9ydCAoc2VlIHNlY3Rpb24gXHJlZntkZWNsYXJpbmdfcHJvdmlkZXJfY2FwYWJpbGl0aWVzfSkgdGhlIG9iamVjdCBhbmQgbWVkaWEgdHlwZSBvZiB0aGUgcmVzcG9uc2UgZW50aXR5IGJvZHkuCi1caXRlbSBTb3J0IHRoZSBzZWxlY3RlZCBcTXNnV3JpdGVcIHByb3ZpZGVycyB3aXRoIGEgcHJpbWFyeSBrZXkgb2YgbWVkaWEgdHlwZSAoc2VlIHNlY3Rpb24gXHJlZntkZWNsYXJpbmdfcHJvdmlkZXJfY2FwYWJpbGl0aWVzfSkgYW5kIGEgc2Vjb25kYXJ5IGtleSBvZiBnZW5lcmljIHR5cGUgd2hlcmUgcHJvdmlkZXJzIHdob3NlIGdlbmVyaWMgdHlwZSBpcyB0aGUgbmVhcmVzdCBzdXBlcmNsYXNzIG9mIHRoZSBvYmplY3QgY2xhc3MgYXJlIHNvcnRlZCBmaXJzdC4KLVxpdGVtXGxhYmVse2ZpbmR3cml0ZXJ9IEl0ZXJhdGUgdGhyb3VnaCB0aGUgc29ydGVkIFxNc2dXcml0ZVwgcHJvdmlkZXJzIGFuZCwgdXRpbGl6aW5nIHRoZSBcY29kZXtpc1dyaXRlYWJsZX0gbWV0aG9kIG9mIGVhY2gsIGNob29zZSBhbiBcTXNnV3JpdGVcIHRoYXQgc3VwcG9ydHMgdGhlIG9iamVjdCB0aGF0IHdpbGwgYmUgbWFwcGVkIHRvIHRoZSBlbnRpdHkgYm9keS4KLVxpdGVtIElmIHN0ZXAgXHJlZntmaW5kd3JpdGVyfSBsb2NhdGVzIGEgc3VpdGFibGUgXE1zZ1dyaXRlXCB0aGVuIHVzZSBpdHMgXGNvZGV7d3JpdGVUb30gbWV0aG9kIHRvIG1hcCB0aGUgb2JqZWN0IHRvIHRoZSBlbnRpdHkgYm9keS4KLVxpdGVtIEVsc2UgaWYgYSBzdWl0YWJsZSBkYXRhIGhhbmRsZXIgY2FuIGJlIGZvdW5kIHVzaW5nIHRoZSBKYXZhQmVhbnMgQWN0aXZhdGlvbiBGcmFtZXdvcmtcY2l0ZXtqYWZ9IHRoZW4gdXNlIGl0IHRvIG1hcCB0aGUgb2JqZWN0IHRvIHRoZSBlbnRpdHkgYm9keS4KLVxpdGVtIEVsc2UgZ2VuZXJhdGUgYSBcV2ViQXBwRXhjXCB3aXRoIGFuIGludGVybmFsIHNlcnZlciBlcnJvciByZXNwb25zZSAoSFRUUCA1MDAgc3RhdHVzKSBhbmQgbm8gZW50aXR5LiBUaGUgZXhjZXB0aW9uIE1VU1QgYmUgcHJvY2Vzc2VkIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIFxyZWZ7bWV0aG9kX2V4Y30uCi1cZW5ke2VudW1lcmF0ZX0KLQotQSBcTXNnV3JpdGVcY29kZXsud3JpdGV9IG1ldGhvZCBNQVkgdGhyb3cgXFdlYkFwcEV4Yy4gSWYgdGhyb3duIGJlZm9yZSB0aGUgcmVzcG9uc2UgaXMgY29tbWl0dGVkLCB0aGUgZXhjZXB0aW9uIGlzIHRyZWF0ZWQgYXMgaWYgaXQgb3JpZ2luYXRlZCBmcm9tIGEgcmVzb3VyY2UgbWV0aG9kLCBzZWUgc2VjdGlvbiBccmVme21ldGhvZF9leGN9LiBUbyBhdm9pZCBhbiBpbmZpbml0ZSBsb29wLCBpbXBsZW1lbnRhdGlvbnMgU0hPVUxEIE5PVCBhdHRlbXB0IHRvIG1hcCBleGNlcHRpb25zIHRocm93biBkdXJpbmcgc2VyaWFsaXphdGlvbiBvZiBhbiByZXNwb25zZSBwcmV2aW91c2x5IG1hcHBlZCBmcm9tIGFuIGV4Y2VwdGlvbiBhbmQgU0hPVUxEIGluc3RlYWQgc2ltcGx5IHJldHVybiBhIHNlcnZlciBlcnJvciAoc3RhdHVzIGNvZGUgNTAwKSByZXNwb25zZS4KLQotXHN1YnNlY3Rpb257RGVjbGFyaW5nIE1lZGlhIFR5cGUgQ2FwYWJpbGl0aWVzfQotXGxhYmVse2RlY2xhcmluZ19wcm92aWRlcl9jYXBhYmlsaXRpZXN9Ci0KLU1lc3NhZ2UgYm9keSByZWFkZXJzIGFuZCB3cml0ZXJzIE1BWSByZXN0cmljdCB0aGUgbWVkaWEgdHlwZXMgdGhleSBzdXBwb3J0IHVzaW5nIHRoZSBcQ29uc3VtZXNcIGFuZCBcUHJvZHVjZXNcIGFubm90YXRpb25zIHJlc3BlY3RpdmVseS4gVGhlIGFic2VuY2Ugb2YgdGhlc2UgYW5ub3RhdGlvbnMgaXMgZXF1aXZhbGVudCB0byB0aGVpciBpbmNsdXNpb24gd2l0aCBtZWRpYSB0eXBlIChcbHFcbHEqLypccnFccnEpLCBpLmUuIGFic2VuY2UgaW1wbGllcyB0aGF0IGFueSBtZWRpYSB0eXBlIGlzIHN1cHBvcnRlZC4gQW4gaW1wbGVtZW50YXRpb24gTVVTVCBOT1QgdXNlIGFuIGVudGl0eSBwcm92aWRlciBmb3IgYSBtZWRpYSB0eXBlIHRoYXQgaXMgbm90IHN1cHBvcnRlZCBieSB0aGF0IHByb3ZpZGVyLgotCi1XaGVuIGNob29zaW5nIGFuIGVudGl0eSBwcm92aWRlciBhbiBpbXBsZW1lbnRhdGlvbiBzb3J0cyB0aGUgYXZhaWxhYmxlIHByb3ZpZGVycyBhY2NvcmRpbmcgdG8gdGhlIG1lZGlhIHR5cGVzIHRoZXkgZGVjbGFyZSBzdXBwb3J0IGZvci4gU29ydGluZyBvZiBtZWRpYSB0eXBlcyBmb2xsb3dzIHRoZSBnZW5lcmFsIHJ1bGU6IHgveSAkPCQgeC8qICQ8JCAqLyosIGkuZS4gYSBwcm92aWRlciB0aGF0IGV4cGxpY2l0bHkgbGlzdHMgYSBtZWRpYSB0eXBlcyBpcyBzb3J0ZWQgYmVmb3JlIGEgcHJvdmlkZXIgdGhhdCBsaXN0cyAqLyouCi0KLVxzdWJzZWN0aW9ue1N0YW5kYXJkIEVudGl0eSBQcm92aWRlcnN9Ci1cbGFiZWx7c3RhbmRhcmRfZW50aXR5X3Byb3ZpZGVyc30KLQotQW4gaW1wbGVtZW50YXRpb24gTVVTVCBpbmNsdWRlIHByZS1wYWNrYWdlZCBcTXNnUmVhZFwgYW5kIFxNc2dXcml0ZVwgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgZm9sbG93aW5nIEphdmEgYW5kIG1lZGlhIHR5cGUgY29tYmluYXRpb25zOgotCi1cYmVnaW57ZGVzY3JpcHRpb259Ci1caXRlbVtcY29kZXtieXRlW119XSBBbGwgbWVkaWEgdHlwZXMgKFxjb2RleyovKn0pLgotXGl0ZW1bXGNvZGV7amF2YS5sYW5nLlN0cmluZ31dIEFsbCBtZWRpYSB0eXBlcyAoXGNvZGV7Ki8qfSkuCi1caXRlbVtcY29kZXtqYXZhLmlvLklucHV0U3RyZWFtfV0gQWxsIG1lZGlhIHR5cGVzIChcY29kZXsqLyp9KS4KLVxpdGVtW1xjb2Rle2phdmEuaW8uUmVhZGVyfV0gQWxsIG1lZGlhIHR5cGVzIChcY29kZXsqLyp9KS4KLVxpdGVtW1xjb2Rle2phdmEuaW8uRmlsZX1dIEFsbCBtZWRpYSB0eXBlcyAoXGNvZGV7Ki8qfSkuCi1caXRlbVtcY29kZXtqYXZheC5hY3RpdmF0aW9uLkRhdGFTb3VyY2V9XSBBbGwgbWVkaWEgdHlwZXMgKFxjb2RleyovKn0pLgotXGl0ZW1bXGNvZGV7amF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2V9XSBYTUwgdHlwZXMgKFxjb2Rle3RleHQveG1sfSwgXGNvZGV7YXBwbGljYXRpb25cLS9cLXhtbH0gYW5kIFxjb2Rle2FwcGxpY2F0aW9uXC0vXC0qK3htbH0pLgotXGl0ZW1bXGNvZGV7amF2YXgueG1sLmJpbmQuSkFYQkVsZW1lbnR9IGFuZCBhcHBsaWNhdGlvbi1zdXBwbGllZCBKQVhCIGNsYXNzZXNdIFhNTCBtZWRpYSB0eXBlcyAoXGNvZGV7dGV4dFwtL1wteG1sfSwgXGNvZGV7YXBwbGljYXRpb24veG1sfSBhbmQgXGNvZGV7YXBwbGljYXRpb24vKit4bWx9KS4KLVxpdGVtW1xjb2Rle011bHRpdmFsdWVkTWFwPFN0cmluZyxTdHJpbmc+fV0gRm9ybSBjb250ZW50IChcY29kZXthcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWR9KS4KLVxpdGVtW1xjb2Rle1N0cmVhbWluZ091dHB1dH1dIEFsbCBtZWRpYSB0eXBlcyAoXGNvZGV7Ki8qfSksIFxNc2dXcml0ZVwgb25seS4KLVxlbmR7ZGVzY3JpcHRpb259Ci0KLVdoZW4gcmVhZGluZyB6ZXJvLWxlbmd0aCByZXF1ZXN0IGVudGl0aWVzLCBhbGwgaW1wbGVtZW50YXRpb24tc3VwcGxpZWQgXE1zZ1JlYWRcIGltcGxlbWVudGF0aW9ucyBleGNlcHQgdGhlIEpBWEItcmVsYXRlZCBvbmUgTVVTVCBjcmVhdGUgYSBjb3JyZXNwb25kaW5nIEphdmEgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB6ZXJvLWxlbmd0aCBkYXRhOyB0aGV5IE1VU1QgTk9UIHJldHVybiBudWxsLiBUaGUgaW1wbGVtZW50YXRpb24tc3VwcGxpZWQgSkFYQiBcTXNnUmVhZFwgaW1wbGVtZW50YXRpb24gTVVTVCB0aHJvdyBhIFxXZWJBcHBFeGNcIHdpdGggYSBjbGllbnQgZXJyb3IgcmVzcG9uc2UgKEhUVFAgNDAwKSBmb3IgemVyby1sZW5ndGggcmVxdWVzdCBlbnRpdGllcy4KLQotVGhlIGltcGxlbWVudGF0aW9uLXN1cHBsaWVkIGVudGl0eSBwcm92aWRlcihzKSBmb3IgXGNvZGV7amF2YXhcLS54bWxcLS5iaW5kXC0uSkFYQkVsZW1lbnR9IGFuZCBhcHBsaWNhdGlvbi1zdXBwbGllZCBKQVhCIGNsYXNzZXMgTVVTVCB1c2UgXGNvZGV7SkFYQkNvbnRleHR9IGluc3RhbmNlcyBwcm92aWRlZCBieSBhcHBsaWNhdGlvbi1zdXBwbGllZCBjb250ZXh0IHJlc29sdmVycywgc2VlIHNlY3Rpb24gXHJlZntjb250ZXh0cHJvdmlkZXJ9LiBJZiBhbiBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgYSBcY29kZXtKQVhCQ29udGV4dH0gZm9yIGEgcGFydGljdWxhciB0eXBlLCB0aGUgaW1wbGVtZW50YXRpb24tc3VwcGxpZWQgZW50aXR5IHByb3ZpZGVyIE1VU1QgdXNlIGl0cyBvd24gZGVmYXVsdCBjb250ZXh0IGluc3RlYWQuCi0KLVdoZW4gd3JpdGluZyByZXNwb25zZXMsIGltcGxlbWVudGF0aW9ucyBTSE9VTEQgcmVzcGVjdCBhcHBsaWNhdGlvbi1zdXBwbGllZCBjaGFyYWN0ZXIgc2V0IG1ldGFkYXRhIGFuZCBTSE9VTEQgdXNlIFVURi04IGlmIGEgY2hhcmFjdGVyIHNldCBpcyBub3Qgc3BlY2lmaWVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBvciBpZiB0aGUgYXBwbGljYXRpb24gc3BlY2lmaWVzIGEgY2hhcmFjdGVyIHNldCB0aGF0IGlzIHVuc3VwcG9ydGVkLgotCi1BbiBpbXBsZW1lbnRhdGlvbiBNVVNUIHN1cHBvcnQgYXBwbGljYXRpb24tcHJvdmlkZWQgZW50aXR5IHByb3ZpZGVycyBhbmQgTVVTVCB1c2UgdGhvc2UgaW4gcHJlZmVyZW5jZSB0byBpdHMgb3duIHByZS1wYWNrYWdlZCBwcm92aWRlcnMgd2hlbiBlaXRoZXIgY291bGQgaGFuZGxlIHRoZSBzYW1lIHJlcXVlc3QuCi0KLVxzdWJzZWN0aW9ue1RyYW5zZmVyIEVuY29kaW5nfQotXGxhYmVse3RyYW5zZmVyX2VuY29kaW5nfQotCi1UcmFuc2ZlciBlbmNvZGluZyBmb3IgaW5ib3VuZCBkYXRhIGlzIGhhbmRsZWQgYnkgYSBjb21wb25lbnQgb2YgdGhlIGNvbnRhaW5lciBvciB0aGUgXGpheHJzXCBydW50aW1lLiBcTXNnUmVhZFwgcHJvdmlkZXJzIGFsd2F5cyBvcGVyYXRlIG9uIHRoZSBkZWNvZGVkIEhUVFAgZW50aXR5IGJvZHkgcmF0aGVyIHRoYW4gZGlyZWN0bHkgb24gdGhlIEhUVFAgbWVzc2FnZSBib2R5LgotCi1BIEpBWC1SUyBydW50aW1lIG9yIGNvbnRhaW5lciBNQVkgdHJhbnNmZXIgZW5jb2RlIG91dGJvdW5kIGRhdGEgb3IgdGhpcyBNQVkgYmUgZG9uZSBieSBhcHBsaWNhdGlvbiBjb2RlLgotCi1cc3Vic2VjdGlvbntDb250ZW50IEVuY29kaW5nfQotCi1Db250ZW50IGVuY29kaW5nIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgYXBwbGljYXRpb24uIEFwcGxpY2F0aW9uLXN1cHBsaWVkIGVudGl0eSBwcm92aWRlcnMgTUFZIHBlcmZvcm0gc3VjaCBlbmNvZGluZyBhbmQgbWFuaXB1bGF0ZSB0aGUgSFRUUCBoZWFkZXJzIGFjY29yZGluZ2x5LgotCi1cc2VjdGlvbntDb250ZXh0IFByb3ZpZGVyc30KLVxsYWJlbHtjb250ZXh0cHJvdmlkZXJ9Ci0KLUNvbnRleHQgcHJvdmlkZXJzIHN1cHBseSBjb250ZXh0IHRvIHJlc291cmNlIGNsYXNzZXMgYW5kIG90aGVyIHByb3ZpZGVycy4gQSBjb250ZXh0IHByb3ZpZGVyIGNsYXNzIGltcGxlbWVudHMgdGhlIFxjb2Rle0NvbnRleHRSZXNvbHZlcjxUPn0gaW50ZXJmYWNlIGFuZCBpcyBhbm5vdGF0ZWQgd2l0aCBcUHJvdmlkZXIuIEUuZy4gYW4gYXBwbGljYXRpb24gd2lzaGluZyB0byBwcm92aWRlIGEgY3VzdG9taXplZCBcY29kZXtKQVhCQ29udGV4dH0gdG8gdGhlIGRlZmF1bHQgSkFYQiBlbnRpdHkgcHJvdmlkZXJzIHdvdWxkIHN1cHBseSBhIGNsYXNzIGltcGxlbWVudGluZyBcY29kZXtDb250ZXh0UmVzb2x2ZXI8SkFYQkNvbnRleHQ+fS4KLQotQ29udGV4dCBwcm92aWRlcnMgTUFZIHJldHVybiBcY29kZXtudWxsfSBmcm9tIHRoZSBcY29kZXtnZXRDb250ZXh0fSBtZXRob2QgaWYgdGhleSBkbyBub3Qgd2lzaCB0byBwcm92aWRlIHRoZWlyIGNvbnRleHQgZm9yIGEgcGFydGljdWxhciBKYXZhIHR5cGUuIEUuZy4gYSBKQVhCIGNvbnRleHQgcHJvdmlkZXIgbWF5IHdpc2ggdG8gb25seSBwcm92aWRlIHRoZSBjb250ZXh0IGZvciBjZXJ0YWluIEpBWEIgY2xhc3Nlcy4gQ29udGV4dCBwcm92aWRlcnMgTUFZIGFsc28gbWFuYWdlIG11bHRpcGxlIGNvbnRleHRzIG9mIHRoZSBzYW1lIHR5cGUga2V5ZWQgdG8gZGlmZmVyZW50IEphdmEgdHlwZXMuCi0KLVxzdWJzZWN0aW9ue0RlY2xhcmluZyBNZWRpYSBUeXBlIENhcGFiaWxpdGllc30KLVxsYWJlbHtjb250ZXh0X21lZGlhX3R5cGV9Ci0KLUNvbnRleHQgcHJvdmlkZXIgaW1wbGVtZW50YXRpb25zIE1BWSByZXN0cmljdCB0aGUgbWVkaWEgdHlwZXMgdGhleSBzdXBwb3J0IHVzaW5nIHRoZSBcUHJvZHVjZXNcIGFubm90YXRpb24uIFRoZSBhYnNlbmNlIG9mIHRoaXMgYW5ub3RhdGlvbiBpcyBlcXVpdmFsZW50IHRvIGl0cyBpbmNsdXNpb24gd2l0aCBtZWRpYSB0eXBlIChcbHFcbHEqLypccnFccnEpLCBpLmUuIGFic2VuY2UgaW1wbGllcyB0aGF0IGFueSBtZWRpYSB0eXBlIGlzIHN1cHBvcnRlZC4KLQotV2hlbiBjaG9vc2luZyBhIGNvbnRleHQgcHJvdmlkZXIgYW4gaW1wbGVtZW50YXRpb24gc29ydHMgdGhlIGF2YWlsYWJsZSBwcm92aWRlcnMgYWNjb3JkaW5nIHRvIHRoZSBtZWRpYSB0eXBlcyB0aGV5IGRlY2xhcmUgc3VwcG9ydCBmb3IuIFNvcnRpbmcgb2YgbWVkaWEgdHlwZXMgZm9sbG93cyB0aGUgZ2VuZXJhbCBydWxlOiB4L3kgJDwkIHgvKiAkPCQgKi8qLCBpLmUuIGEgcHJvdmlkZXIgdGhhdCBleHBsaWNpdGx5IGxpc3RzIGEgbWVkaWEgdHlwZSBpcyBzb3J0ZWQgYmVmb3JlIGEgcHJvdmlkZXIgdGhhdCBsaXN0cyAqLyouCi0KLVxzZWN0aW9ue0V4Y2VwdGlvbiBNYXBwaW5nIFByb3ZpZGVyc30KLVxsYWJlbHtleGNlcHRpb25tYXBwZXJ9Ci0KLVdoZW4gYSByZXNvdXJjZSBjbGFzcyBvciBwcm92aWRlciBtZXRob2QgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdGhlIFxqYXhyc1wgcnVudGltZSB3aWxsIGF0dGVtcHQgdG8gbWFwIHRoZSBleGNlcHRpb24gdG8gYSBzdWl0YWJsZSBIVFRQIHJlc3BvbnNlIC0gc2VlIHNlY3Rpb24gXHJlZnttZXRob2RfZXhjfS4gQW4gYXBwbGljYXRpb24gY2FuIHN1cHBseSBleGNlcHRpb24gbWFwcGluZyBwcm92aWRlcnMgdG8gY3VzdG9taXplIHRoaXMgbWFwcGluZy4KLQotRXhjZXB0aW9uIG1hcHBpbmcgcHJvdmlkZXJzIG1hcCBhIGNoZWNrZWQgb3IgcnVudGltZSBleGNlcHRpb24gdG8gYW4gaW5zdGFuY2Ugb2YgXFJlc3BvbnNlLiBBbiBleGNlcHRpb24gbWFwcGluZyBwcm92aWRlciBpbXBsZW1lbnRzIHRoZSBcY29kZXtFeGNlcHRpb25NYXBwZXI8VD59IGludGVyZmFjZSBhbmQgaXMgYW5ub3RhdGVkIHdpdGggXFByb3ZpZGVyLiBXaGVuIGEgcmVzb3VyY2UgbWV0aG9kIHRocm93cyBhbiBleGNlcHRpb24gZm9yIHdoaWNoIHRoZXJlIGlzIGFuIGV4Y2VwdGlvbiBtYXBwaW5nIHByb3ZpZGVyLCB0aGUgbWF0Y2hpbmcgcHJvdmlkZXIgaXMgdXNlZCB0byBvYnRhaW4gYSBcUmVzcG9uc2VcIGluc3RhbmNlLiBUaGUgcmVzdWx0aW5nIFxSZXNwb25zZVwgaXMgcHJvY2Vzc2VkIGFzIGlmIHRoZSBtZXRob2QgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBoYWQgaW5zdGVhZCByZXR1cm5lZCB0aGUgXFJlc3BvbnNlLCBzZWUgc2VjdGlvbiBccmVme3Jlc291cmNlX21ldGhvZF9yZXR1cm59LgotCi1XaGVuIGNob29zaW5nIGFuIGV4Y2VwdGlvbiBtYXBwaW5nIHByb3ZpZGVyIHRvIG1hcCBhbiBleGNlcHRpb24sIGFuIGltcGxlbWVudGF0aW9uIE1VU1QgdXNlIHRoZSBwcm92aWRlciB3aG9zZSBnZW5lcmljIHR5cGUgaXMgdGhlIG5lYXJlc3Qgc3VwZXJjbGFzcyBvZiB0aGUgZXhjZXB0aW9uLgpkaWZmIC0tZ2l0IGEvc3BlYy9jaGFwdGVycy9yZWZzLnRleCBiL3NwZWMvY2hhcHRlcnMvcmVmcy50ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MDU0YTguLjAwMDAwMDAKLS0tIGEvc3BlYy9jaGFwdGVycy9yZWZzLnRleAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotXHJhZ2dlZHJpZ2h0Ci1cYmlibGlvZ3JhcGh5c3R5bGV7dW5zcnR9Ci1cYWRkY29udGVudHNsaW5le3RvY317Y2hhcHRlcn17QmlibGlvZ3JhcGh5fQotXGJpYmxpb2dyYXBoeXtyZWZlcmVuY2VzfQotCmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL3Jlc291cmNlcy50ZXggYi9zcGVjL2NoYXB0ZXJzL3Jlc291cmNlcy50ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyNWQyZGIuLjAwMDAwMDAKLS0tIGEvc3BlYy9jaGFwdGVycy9yZXNvdXJjZXMudGV4CisrKyAvZGV2L251bGwKQEAgLTEsNDYwICswLDAgQEAKLVxjaGFwdGVye1Jlc291cmNlc30KLVxsYWJlbHtyZXNvdXJjZXN9Ci0KLVVzaW5nIFxqYXhyc1wsIGEgV2ViIHJlc291cmNlIGlzIGltcGxlbWVudGVkIGFzIGEgcmVzb3VyY2UgY2xhc3MgYW5kIHJlcXVlc3RzIGFyZSBoYW5kbGVkIGJ5IHJlc291cmNlIG1ldGhvZHMuIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgcmVzb3VyY2UgY2xhc3NlcyBhbmQgcmVzb3VyY2UgbWV0aG9kcyBpbiBkZXRhaWwuCi0KLVxzZWN0aW9ue1Jlc291cmNlIENsYXNzZXN9Ci0KLUEgcmVzb3VyY2UgY2xhc3MgaXMgYSBKYXZhIGNsYXNzIHRoYXQgdXNlcyBcamF4cnNcIGFubm90YXRpb25zIHRvIGltcGxlbWVudCBhIGNvcnJlc3BvbmRpbmcgV2ViIHJlc291cmNlLiBSZXNvdXJjZSBjbGFzc2VzIGFyZSBQT0pPcyB0aGF0IGhhdmUgYXQgbGVhc3Qgb25lIG1ldGhvZCBhbm5vdGF0ZWQgd2l0aCBcUGF0aFwgb3IgYSByZXF1ZXN0IG1ldGhvZCBkZXNpZ25hdG9yLgotCi1cc3Vic2VjdGlvbntMaWZlY3ljbGUgYW5kIEVudmlyb25tZW50fQotCi1CeSBkZWZhdWx0IGEgbmV3IHJlc291cmNlIGNsYXNzIGluc3RhbmNlIGlzIGNyZWF0ZWQgZm9yIGVhY2ggcmVxdWVzdCB0byB0aGF0IHJlc291cmNlLiBGaXJzdCB0aGUgY29uc3RydWN0b3IgKHNlZSBzZWN0aW9uIFxyZWZ7cmVzb3VyY2VfY2xhc3NfY29uc3RydWN0b3J9KSBpcyBjYWxsZWQsIHRoZW4gYW55IHJlcXVlc3RlZCBkZXBlbmRlbmNpZXMgYXJlIGluamVjdGVkIChzZWUgc2VjdGlvbiBccmVme3Jlc291cmNlX2ZpZWxkfSksIHRoZW4gdGhlIGFwcHJvcHJpYXRlIG1ldGhvZCAoc2VlIHNlY3Rpb24gXHJlZntyZXNvdXJjZV9tZXRob2R9KSBpcyBpbnZva2VkIGFuZCBmaW5hbGx5IHRoZSBvYmplY3QgaXMgbWFkZSBhdmFpbGFibGUgZm9yIGdhcmJhZ2UgY29sbGVjdGlvbi4KLQotQW4gaW1wbGVtZW50YXRpb24gTUFZIG9mZmVyIG90aGVyIHJlc291cmNlIGNsYXNzIGxpZmVjeWNsZXMsIG1lY2hhbmlzbXMgZm9yIHNwZWNpZnlpbmcgdGhlc2UgYXJlIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgc3BlY2lmaWNhdGlvbi4gRS5nLiBhbiBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBhbiBpbnZlcnNpb24tb2YtY29udHJvbCBmcmFtZXdvcmsgbWF5IHN1cHBvcnQgYWxsIG9mIHRoZSBsaWZlY3ljbGUgb3B0aW9ucyBwcm92aWRlZCBieSB0aGF0IGZyYW1ld29yay4KLQotXHN1YnNlY3Rpb257Q29uc3RydWN0b3JzfQotXGxhYmVse3Jlc291cmNlX2NsYXNzX2NvbnN0cnVjdG9yfQotCi1Sb290IHJlc291cmNlIGNsYXNzZXMgYXJlIGluc3RhbnRpYXRlZCBieSB0aGUgXGpheHJzXCBydW50aW1lIGFuZCBNVVNUIGhhdmUgYSBwdWJsaWMgY29uc3RydWN0b3IgZm9yIHdoaWNoIHRoZSBcamF4cnNcIHJ1bnRpbWUgY2FuIHByb3ZpZGUgYWxsIHBhcmFtZXRlciB2YWx1ZXMuIE5vdGUgdGhhdCBhIHplcm8gYXJndW1lbnQgY29uc3RydWN0b3IgaXMgcGVybWlzc2libGUgdW5kZXIgdGhpcyBydWxlLgotCi1BIHB1YmxpYyBjb25zdHJ1Y3RvciBNQVkgaW5jbHVkZSBwYXJhbWV0ZXJzIGFubm90YXRlZCB3aXRoIG9uZSBvZiB0aGUgZm9sbG93aW5nOiBcQ29udGV4dCwgXEhlYWRlclBhcmFtLCBcQ29va2llUGFyYW0sIFxNYXRyaXhQYXJhbSwgXFF1ZXJ5UGFyYW1cIG9yIFxQYXRoUGFyYW0uIEhvd2V2ZXIsIGRlcGVuZGluZyBvbiB0aGUgcmVzb3VyY2UgY2xhc3MgbGlmZWN5Y2xlIGFuZCBjb25jdXJyZW5jeSwgcGVyLXJlcXVlc3QgaW5mb3JtYXRpb24gbWF5IG5vdCBtYWtlIHNlbnNlIGluIGEgY29uc3RydWN0b3IuIElmIG1vcmUgdGhhbiBvbmUgcHVibGljIGNvbnN0cnVjdG9yIGlzIHN1aXRhYmxlIHRoZW4gYW4gaW1wbGVtZW50YXRpb24gTVVTVCB1c2UgdGhlIG9uZSB3aXRoIHRoZSBtb3N0IHBhcmFtZXRlcnMuIENob29zaW5nIGFtb25nc3Qgc3VpdGFibGUgY29uc3RydWN0b3JzIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mIHBhcmFtZXRlcnMgaXMgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMsIGltcGxlbWVudGF0aW9ucyBTSE9VTEQgZ2VuZXJhdGUgYSB3YXJuaW5nIGFib3V0IHN1Y2ggYW1iaWd1aXR5LgotCi1Ob24tcm9vdCByZXNvdXJjZSBjbGFzc2VzIGFyZSBpbnN0YW50aWF0ZWQgYnkgYW4gYXBwbGljYXRpb24gYW5kIGRvIG5vdCByZXF1aXJlIHRoZSBhYm92ZS1kZXNjcmliZWQgcHVibGljIGNvbnN0cnVjdG9yLgotCi1cc2VjdGlvbntGaWVsZHMgYW5kIEJlYW4gUHJvcGVydGllc30KLVxsYWJlbHtyZXNvdXJjZV9maWVsZH0KLQotV2hlbiBhIHJlc291cmNlIGNsYXNzIGlzIGluc3RhbnRpYXRlZCwgdGhlIHZhbHVlcyBvZiBmaWVsZHMgYW5kIGJlYW4gcHJvcGVydGllcyBhbm5vdGF0ZWQgd2l0aCBvbmUgdGhlIGZvbGxvd2luZyBhbm5vdGF0aW9ucyBhcmUgc2V0IGFjY29yZGluZyB0byB0aGUgc2VtYW50aWNzIG9mIHRoZSBhbm5vdGF0aW9uOgotCi1cYmVnaW57ZGVzY3JpcHRpb259Ci1caXRlbVtcTWF0cml4UGFyYW1dIEV4dHJhY3RzIHRoZSB2YWx1ZSBvZiBhIFVSSSBtYXRyaXggcGFyYW1ldGVyLgotXGl0ZW1bXFF1ZXJ5UGFyYW1dIEV4dHJhY3RzIHRoZSB2YWx1ZSBvZiBhIFVSSSBxdWVyeSBwYXJhbWV0ZXIuCi1caXRlbVtcUGF0aFBhcmFtXSBFeHRyYWN0cyB0aGUgdmFsdWUgb2YgYSBVUkkgdGVtcGxhdGUgcGFyYW1ldGVyLgotXGl0ZW1bXENvb2tpZVBhcmFtXSBFeHRyYWN0cyB0aGUgdmFsdWUgb2YgYSBjb29raWUuCi1caXRlbVtcSGVhZGVyUGFyYW1dIEV4dHJhY3RzIHRoZSB2YWx1ZSBvZiBhIGhlYWRlci4KLVxpdGVtW1xDb250ZXh0XSBJbmplY3RzIGFuIGluc3RhbmNlIG9mIGEgc3VwcG9ydGVkIHJlc291cmNlLCBzZWUgY2hhcHRlcnMgXHJlZntjb250ZXh0fSBhbmQgXHJlZntlbnZpcm9ubWVudH0gZm9yIG1vcmUgZGV0YWlscy4KLVxlbmR7ZGVzY3JpcHRpb259Ci0KLUJlY2F1c2UgaW5qZWN0aW9uIG9jY3VycyBhdCBvYmplY3QgY3JlYXRpb24gdGltZSwgdXNlIG9mIHRoZXNlIGFubm90YXRpb25zICh3aXRoIHRoZSBleGNlcHRpb24gb2YgXENvbnRleHQpIG9uIHJlc291cmNlIGNsYXNzIGZpZWxkcyBhbmQgYmVhbiBwcm9wZXJ0aWVzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciB0aGUgZGVmYXVsdCBwZXItcmVxdWVzdCByZXNvdXJjZSBjbGFzcyBsaWZlY3ljbGUuIEFuIGltcGxlbWVudGF0aW9uIFNIT1VMRCB3YXJuIGlmIHJlc291cmNlIGNsYXNzZXMgd2l0aCBvdGhlciBsaWZlY3ljbGVzIHVzZSB0aGVzZSBhbm5vdGF0aW9ucyBvbiByZXNvdXJjZSBjbGFzcyBmaWVsZHMgb3IgYmVhbiBwcm9wZXJ0aWVzLgotCi1BbiBpbXBsZW1lbnRhdGlvbiBpcyBvbmx5IHJlcXVpcmVkIHRvIHNldCB0aGUgYW5ub3RhdGVkIGZpZWxkIGFuZCBiZWFuIHByb3BlcnR5IHZhbHVlcyBvZiBpbnN0YW5jZXMgY3JlYXRlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gcnVudGltZS4gT2JqZWN0cyByZXR1cm5lZCBieSBzdWItcmVzb3VyY2UgbG9jYXRvcnMgKHNlZSBzZWN0aW9uIFxyZWZ7c3ViX3Jlc291cmNlc30pIGFyZSBleHBlY3RlZCB0byBiZSBpbml0aWFsaXplZCBieSB0aGVpciBjcmVhdG9yIGFuZCBmaWVsZCBhbmQgYmVhbiBwcm9wZXJ0aWVzIGFyZSBub3QgbW9kaWZpZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIHJ1bnRpbWUuCi0KLVZhbGlkIHBhcmFtZXRlciB0eXBlcyBmb3IgZWFjaCBvZiB0aGUgYWJvdmUgYW5ub3RhdGlvbnMgYXJlIGxpc3RlZCBpbiB0aGUgY29ycmVzcG9uZGluZyBKYXZhZG9jLCBob3dldmVyIGluIGdlbmVyYWwgKGV4Y2x1ZGluZyBcQ29udGV4dCkgdGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgc3VwcG9ydGVkOgotCi1cYmVnaW57ZW51bWVyYXRlfQotXGl0ZW0gUHJpbWl0aXZlIHR5cGVzLgotXGl0ZW1cbGFiZWx7c3RyaW5nY3Rvcn0gVHlwZXMgdGhhdCBoYXZlIGEgY29uc3RydWN0b3IgdGhhdCBhY2NlcHRzIGEgc2luZ2xlIFxjb2Rle1N0cmluZ30gYXJndW1lbnQuCi1caXRlbVxsYWJlbHt2YWx1ZW9mbWV0aG9kfSBUeXBlcyB0aGF0IGhhdmUgYSBzdGF0aWMgbWV0aG9kIG5hbWVkIFxjb2Rle3ZhbHVlT2Z9IG9yIFxjb2Rle2Zyb21TdHJpbmd9IHdpdGggYSBzaW5nbGUgXGNvZGV7U3RyaW5nfSBhcmd1bWVudCB0aGF0IHJldHVybiBhbiBpbnN0YW5jZSBvZiB0aGUgdHlwZS4gSWYgYm90aCBtZXRob2RzIGFyZSBwcmVzZW50IHRoZW4gXGNvZGV7dmFsdWVPZn0gTVVTVCBiZSB1c2VkIHVubGVzcyB0aGUgdHlwZSBpcyBhbiBlbnVtIGluIHdoaWNoIGNhc2UgXGNvZGV7ZnJvbVN0cmluZ30gTVVTVCBiZSB1c2VkLgotXGl0ZW0gXGNvZGV7TGlzdDx7XGVtIFR9Pn0sIFxjb2Rle1NldDx7XGVtIFR9Pn0sIG9yIFxjb2Rle1NvcnRlZFNldDx7XGVtIFR9Pn0sIHdoZXJlIFxjb2Rle3tcZW0gVH19IHNhdGlzZmllcyBccmVme3N0cmluZ2N0b3J9IG9yIFxyZWZ7dmFsdWVvZm1ldGhvZH0gYWJvdmUuCi1cZW5ke2VudW1lcmF0ZX0KLQotVGhlIFxjb2Rle0RlZmF1bHRcLVZhbHVlfSBhbm5vdGF0aW9uIG1heSBiZSB1c2VkIHRvIHN1cHBseSBhIGRlZmF1bHQgdmFsdWUgZm9yIHNvbWUgb2YgdGhlIGFib3ZlLCBzZWUgdGhlIEphdmFkb2MgZm9yIFxjb2Rle0RlZmF1bHRcLVZhbHVlfSBmb3IgdXNhZ2UgZGV0YWlscyBhbmQgcnVsZXMgZm9yIGdlbmVyYXRpbmcgYSB2YWx1ZSBpbiB0aGUgYWJzZW5jZSBvZiB0aGlzIGFubm90YXRpb24gYW5kIHRoZSByZXF1ZXN0ZWQgZGF0YS4gVGhlIFxjb2Rle0VuY29kZWR9IGFubm90YXRpb24gbWF5IGJlIHVzZWQgdG8gZGlzYWJsZSBhdXRvbWF0aWMgVVJJIGRlY29kaW5nIGZvciBcTWF0cml4UGFyYW0sIFxRdWVyeVBhcmFtLCBhbmQgXFBhdGhQYXJhbVwgYW5ub3RhdGVkIGZpZWxkcyBhbmQgcHJvcGVydGllcy4KLQotQSBcV2ViQXBwRXhjXCB0aHJvd24gZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiBmaWVsZCBvciBwcm9wZXJ0eSB2YWx1ZXMgdXNpbmcgXHJlZntzdHJpbmdjdG9yfSBvciBccmVme3ZhbHVlb2ZtZXRob2R9IGFib3ZlIGlzIHByb2Nlc3NlZCBkaXJlY3RseSBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiBccmVme21ldGhvZF9leGN9LiBPdGhlciBleGNlcHRpb25zIHRocm93biBkdXJpbmcgY29uc3RydWN0aW9uIG9mIGZpZWxkIG9yIHByb3BlcnR5IHZhbHVlcyB1c2luZyBccmVme3N0cmluZ2N0b3J9IG9yIFxyZWZ7dmFsdWVvZm1ldGhvZH0gYWJvdmUgYXJlIHRyZWF0ZWQgYXMgY2xpZW50IGVycm9yczogaWYgdGhlIGZpZWxkIG9yIHByb3BlcnR5IGlzIGFubm90YXRlZCB3aXRoIFxNYXRyaXhQYXJhbSwgXFF1ZXJ5UGFyYW1cIG9yIFxQYXRoUGFyYW1cIHRoZW4gYW4gaW1wbGVtZW50YXRpb24gTVVTVCBnZW5lcmF0ZSBhIFxXZWJBcHBFeGNcIHRoYXQgd3JhcHMgdGhlIHRocm93biBleGNlcHRpb24gd2l0aCBhIG5vdCBmb3VuZCByZXNwb25zZSAoNDA0IHN0YXR1cykgYW5kIG5vIGVudGl0eTsgaWYgdGhlIGZpZWxkIG9yIHByb3BlcnR5IGlzIGFubm90YXRlZCB3aXRoIFxIZWFkZXJQYXJhbVwgb3IgXENvb2tpZVBhcmFtXCB0aGVuIGFuIGltcGxlbWVudGF0aW9uIE1VU1QgZ2VuZXJhdGUgYSBcV2ViQXBwRXhjXCB0aGF0IHdyYXBzIHRoZSB0aHJvd24gZXhjZXB0aW9uIHdpdGggIGEgY2xpZW50IGVycm9yIHJlc3BvbnNlICg0MDAgc3RhdHVzKSBhbmQgbm8gZW50aXR5LiBUaGUgXFdlYkFwcEV4Y1wgTVVTVCBiZSB0aGVuIGJlIHByb2Nlc3NlZCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiBccmVme21ldGhvZF9leGN9LgotCi1cc2VjdGlvbntSZXNvdXJjZSBNZXRob2RzfQotXGxhYmVse3Jlc291cmNlX21ldGhvZH0KLQotUmVzb3VyY2UgbWV0aG9kcyBhcmUgbWV0aG9kcyBvZiBhIHJlc291cmNlIGNsYXNzIGFubm90YXRlZCB3aXRoIGEgcmVxdWVzdCBtZXRob2QgZGVzaWduYXRvci4gVGhleSBhcmUgdXNlZCB0byBoYW5kbGUgcmVxdWVzdHMgYW5kIE1VU1QgY29uZm9ybSB0byBjZXJ0YWluIHJlc3RyaWN0aW9ucyBkZXNjcmliZWQgaW4gdGhpcyBzZWN0aW9uLgotCi1BIHJlcXVlc3QgbWV0aG9kIGRlc2lnbmF0b3IgaXMgYSBydW50aW1lIGFubm90YXRpb24gdGhhdCBpcyBhbm5vdGF0ZWQgd2l0aCB0aGUgXEh0dHBNZXRob2RcIGFubm90YXRpb24uIFxqYXhyc1wgZGVmaW5lcyBhIHNldCBvZiByZXF1ZXN0IG1ldGhvZCBkZXNpZ25hdG9ycyBmb3IgdGhlIGNvbW1vbiBIVFRQIG1ldGhvZHM6IFxjb2Rle0BHRVR9LCBcY29kZXtAUE9TVH0sIFxjb2Rle0BQVVR9LCBcY29kZXtAREVMRVRFfSwgXGNvZGV7QEhFQUR9LiBVc2VycyBtYXkgZGVmaW5lIHRoZWlyIG93biBjdXN0b20gcmVxdWVzdCBtZXRob2QgZGVzaWduYXRvcnMgaW5jbHVkaW5nIGFsdGVybmF0ZSBkZXNpZ25hdG9ycyBmb3IgdGhlIGNvbW1vbiBIVFRQIG1ldGhvZHMuCi0KLVxzdWJzZWN0aW9ue1Zpc2liaWxpdHl9Ci0KLU9ubHkgXGNvZGV7cHVibGljfSBtZXRob2RzIG1heSBiZSBleHBvc2VkIGFzIHJlc291cmNlIG1ldGhvZHMuIEFuIGltcGxlbWVudGF0aW9uIFNIT1VMRCB3YXJuIHVzZXJzIGlmIGEgbm9uLVxjb2Rle3B1YmxpY30gbWV0aG9kIGNhcnJpZXMgYSBtZXRob2QgZGVzaWduYXRvciBvciBcUGF0aFwgYW5ub3RhdGlvbi4KLQotXHN1YnNlY3Rpb257UGFyYW1ldGVyc30KLVxsYWJlbHtyZXNvdXJjZV9tZXRob2RfcGFyYW1zfQotCi1XaGVuIGEgcmVzb3VyY2UgbWV0aG9kIGlzIGludm9rZWQsIHBhcmFtZXRlcnMgYW5ub3RhdGVkIHdpdGggXEZvcm1QYXJhbVwgb3Igb25lIG9mIHRoZSAgYW5ub3RhdGlvbnMgbGlzdGVkIGluIHNlY3Rpb24gXHJlZntyZXNvdXJjZV9maWVsZH0gYXJlIG1hcHBlZCBmcm9tIHRoZSByZXF1ZXN0IGFjY29yZGluZyB0byB0aGUgc2VtYW50aWNzIG9mIHRoZSBhbm5vdGF0aW9uLiBTaW1pbGFyIHRvIGZpZWxkcyBhbmQgYmVhbiBwcm9wZXJ0aWVzOgotXGJlZ2lue2l0ZW1pemV9Ci1caXRlbSBUaGUgXGNvZGV7RGVmYXVsdFwtVmFsdWV9IGFubm90YXRpb24gbWF5IGJlIHVzZWQgdG8gc3VwcGx5IGEgZGVmYXVsdCB2YWx1ZSBmb3IgcGFyYW1ldGVycwotXGl0ZW0gVGhlIFxjb2Rle0VuY29kZWR9IGFubm90YXRpb24gbWF5IGJlIHVzZWQgdG8gZGlzYWJsZSBhdXRvbWF0aWMgVVJJIGRlY29kaW5nIG9mIHBhcmFtZXRlciB2YWx1ZXMKLVxpdGVtIEV4Y2VwdGlvbnMgdGhyb3duIGR1cmluZyBjb25zdHJ1Y3Rpb24gb2YgcGFyYW1ldGVyIHZhbHVlcyBhcmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBleGNlcHRpb25zIHRocm93biBkdXJpbmcgY29uc3RydWN0aW9uIG9mIGZpZWxkIG9yIGJlYW4gcHJvcGVydHkgdmFsdWVzLCBzZWUgc2VjdGlvbiBccmVme3Jlc291cmNlX2ZpZWxkfS4gRXhjZXB0aW9ucyB0aHJvd24gZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiBcRm9ybVBhcmFtXCBhbm5vdGF0ZWQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBpZiB0aGUgcGFyYW1ldGVyIHdlcmUgYW5ub3RhdGVkIHdpdGggXEhlYWRlclBhcmFtLgotXGVuZHtpdGVtaXplfQotCi1cc3Vic3Vic2VjdGlvbntFbnRpdHkgUGFyYW1ldGVyc30KLQotVGhlIHZhbHVlIG9mIGEgbm9uLWFubm90YXRlZCBwYXJhbWV0ZXIsIGNhbGxlZCB0aGUgZW50aXR5IHBhcmFtZXRlciwgaXMgbWFwcGVkIGZyb20gdGhlIHJlcXVlc3QgZW50aXR5IGJvZHkuIENvbnZlcnNpb24gYmV0d2VlbiBhbiBlbnRpdHkgYm9keSBhbmQgYSBKYXZhIHR5cGUgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGFuIGVudGl0eSBwcm92aWRlciwgc2VlIHNlY3Rpb24gXHJlZntlbnRpdHlfcHJvdmlkZXJzfS4KLQotUmVzb3VyY2UgbWV0aG9kcyBNVVNUIE5PVCBoYXZlIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVyIHRoYXQgaXMgbm90IGFubm90YXRlZCB3aXRoIG9uZSBvZiB0aGUgYWJvdmUtbGlzdGVkIGFubm90YXRpb25zLgotCi1cc3Vic2VjdGlvbntSZXR1cm4gVHlwZX0KLVxsYWJlbHtyZXNvdXJjZV9tZXRob2RfcmV0dXJufQotCi1SZXNvdXJjZSBtZXRob2RzIE1BWSByZXR1cm4gXGNvZGV7dm9pZH0sIFxSZXNwb25zZSwgXGNvZGV7R2VuZXJpY1wtRW50aXR5fSwgb3IgYW5vdGhlciBKYXZhIHR5cGUsIHRoZXNlIHJldHVybiB0eXBlcyBhcmUgbWFwcGVkIHRvIGEgcmVzcG9uc2UgZW50aXR5IGJvZHkgYXMgZm9sbG93czoKLQotXGJlZ2lue2Rlc2NyaXB0aW9ufQotXGl0ZW1bXGNvZGV7dm9pZH1dIFJlc3VsdHMgaW4gYW4gZW1wdHkgZW50aXR5IGJvZHkgd2l0aCBhIDIwNCBzdGF0dXMgY29kZS4KLVxpdGVtW1xSZXNwb25zZV0gUmVzdWx0cyBpbiBhbiBlbnRpdHkgYm9keSBtYXBwZWQgZnJvbSB0aGUgZW50aXR5IHByb3BlcnR5IG9mIHRoZSBcUmVzcG9uc2VcIHdpdGggdGhlIHN0YXR1cyBjb2RlIHNwZWNpZmllZCBieSB0aGUgc3RhdHVzIHByb3BlcnR5IG9mIHRoZSBcUmVzcG9uc2UuIEEgXGNvZGV7bnVsbH0gcmV0dXJuIHZhbHVlIHJlc3VsdHMgaW4gYSAyMDQgc3RhdHVzIGNvZGUuIElmIHRoZSBzdGF0dXMgcHJvcGVydHkgb2YgdGhlIFxSZXNwb25zZVwgaXMgbm90IHNldDogYSAyMDAgc3RhdHVzIGNvZGUgaXMgdXNlZCBmb3IgYSBub24tXGNvZGV7bnVsbH0gZW50aXR5IHByb3BlcnR5IGFuZCBhIDIwNCBzdGF0dXMgY29kZSBpcyB1c2VkIGlmIHRoZSBlbnRpdHkgcHJvcGVydHkgaXMgXGNvZGV7bnVsbH0uCi1caXRlbVtcY29kZXtHZW5lcmljXC1FbnRpdHl9XSBSZXN1bHRzIGluIGFuIGVudGl0eSBib2R5IG1hcHBlZCBmcm9tIHRoZSBcY29kZXtFbnRpdHl9IHByb3BlcnR5IG9mIHRoZSBcY29kZXtHZW5lcmljXC1FbnRpdHl9LiBJZiB0aGUgcmV0dXJuIHZhbHVlIGlzIG5vdCBcY29kZXtudWxsfSBhIDIwMCBzdGF0dXMgY29kZSBpcyB1c2VkLCBhIFxjb2Rle251bGx9IHJldHVybiB2YWx1ZSByZXN1bHRzIGluIGEgMjA0IHN0YXR1cyBjb2RlLgotXGl0ZW1bT3RoZXJdIFJlc3VsdHMgaW4gYW4gZW50aXR5IGJvZHkgbWFwcGVkIGZyb20gdGhlIGNsYXNzIG9mIHRoZSByZXR1cm5lZCBpbnN0YW5jZS4gSWYgdGhlIHJldHVybiB2YWx1ZSBpcyBub3QgXGNvZGV7bnVsbH0gYSAyMDAgc3RhdHVzIGNvZGUgaXMgdXNlZCwgYSBcY29kZXtudWxsfSByZXR1cm4gdmFsdWUgcmVzdWx0cyBpbiBhIDIwNCBzdGF0dXMgY29kZS4KLVxlbmR7ZGVzY3JpcHRpb259Ci0KLU1ldGhvZHMgdGhhdCBuZWVkIHRvIHByb3ZpZGUgYWRkaXRpb25hbCBtZXRhZGF0YSB3aXRoIGEgcmVzcG9uc2Ugc2hvdWxkIHJldHVybiBhbiBpbnN0YW5jZSBvZiBcUmVzcG9uc2UsIHRoZSBcUmVzcG9uc2VcY29kZXtCdWlsZGVyfSBjbGFzcyBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IHRvIGNyZWF0ZSBhIFxSZXNwb25zZVwgaW5zdGFuY2UgdXNpbmcgYSBidWlsZGVyIHBhdHRlcm4uCi0KLUNvbnZlcnNpb24gYmV0d2VlbiBhIEphdmEgb2JqZWN0IGFuZCBhbiBlbnRpdHkgYm9keSBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgYW4gZW50aXR5IHByb3ZpZGVyLCBzZWUgc2VjdGlvbiBccmVme2VudGl0eV9wcm92aWRlcnN9LiBUaGUgcmV0dXJuIHR5cGUgb2YgYSByZXNvdXJjZSBtZXRob2QgYW5kIHRoZSB0eXBlIG9mIHRoZSByZXR1cm5lZCBpbnN0YW5jZSBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHJhdyB0eXBlIGFuZCBnZW5lcmljIHR5cGUgc3VwcGxpZWQgdG8gdGhlIFxjb2Rle2lzV3JpdGFibGV9IG1ldGhvZCBvZiBcTXNnV3JpdGUgYXMgZm9sbG93czoKLQotXGJlZ2lue2xvbmd0YWJsZX17fGx8bHxsfGx8fQotXGhsaW5lCi1cYmZzZXJpZXMgUmV0dXJuIFR5cGUgJiBcYmZzZXJpZXMgUmV0dXJuZWQgSW5zdGFuY2VcZm9vdG5vdGVtYXJrICYgXGJmc2VyaWVzIFJhdyBUeXBlICAmIFxiZnNlcmllcyBHZW5lcmljIFR5cGUgCi1cdGFidWxhcm5ld2xpbmUKLVxobGluZVxobGluZVxlbmRoZWFkCi1cY29kZXtHZW5lcmljRW50aXR5fSAmIFxjb2Rle0dlbmVyaWNFbnRpdHl9IG9yIHN1YmNsYXNzICYgXGNvZGV7UmF3VHlwZX0gcHJvcGVydHkgJiBcY29kZXtUeXBlfSBwcm9wZXJ0eSBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7UmVzcG9uc2V9ICYgXGNvZGV7R2VuZXJpY0VudGl0eX0gb3Igc3ViY2xhc3MgJiBcY29kZXtSYXdUeXBlfSBwcm9wZXJ0eSAmIFxjb2Rle1R5cGV9IHByb3BlcnR5IFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtSZXNwb25zZX0gJiBcY29kZXtPYmplY3R9IG9yIHN1YmNsYXNzICYgQ2xhc3Mgb2YgaW5zdGFuY2UgJiBDbGFzcyBvZiBpbnN0YW5jZSBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNvZGV7T3RoZXJ9ICYgUmV0dXJuIHR5cGUgb3Igc3ViY2xhc3MgJiBDbGFzcyBvZiBpbnN0YW5jZSAmIEdlbmVyaWMgdHlwZSBvZiByZXR1cm4gdHlwZSBcdGFidWxhcm5ld2xpbmUKLVxobGluZQotXGNhcHRpb257RGV0ZXJtaW5pbmcgcmF3IGFuZCBnZW5lcmljIHR5cGVzIG9mIHJldHVybiB2YWx1ZXN9Ci1cZW5ke2xvbmd0YWJsZX0KLVxmb290bm90ZXRleHR7T3IgXGNvZGV7RW50aXR5fSBwcm9wZXJ0eSBvZiByZXR1cm5lZCBpbnN0YW5jZSBpZiByZXR1cm4gdHlwZSBpcyBcUmVzcG9uc2VcIG9yIGEgc3ViY2xhc3MgdGhlcmVvZi59Ci0KLVRvIGlsbHVzdHJhdGUgdGhlIGFib3ZlIGNvbnNpZGVyIGEgbWV0aG9kIHRoYXQgYWx3YXlzIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgXGNvZGV7QXJyYXlMaXN0PFN0cmluZz59IGVpdGhlciBkaXJlY3RseSBvciB3cmFwcGVkIGluIHNvbWUgY29tYmluYXRpb24gb2YgXFJlc3BvbnNlXCBhbmQgXGNvZGV7R2VuZXJpY0VudGl0eX0uIFRoZSByZXN1bHRpbmcgcmF3IGFuZCBnZW5lcmljIHR5cGVzIGFyZSBzaG93biBiZWxvdy4KLQotXGJlZ2lue2xvbmd0YWJsZX17fGx8bHxsfGx8fQotXGhsaW5lCi1cYmZzZXJpZXMgUmV0dXJuIFR5cGUgJiBcYmZzZXJpZXMgUmV0dXJuZWQgSW5zdGFuY2UgJiBcYmZzZXJpZXMgUmF3IFR5cGUgICYgXGJmc2VyaWVzIEdlbmVyaWMgVHlwZSAKLVx0YWJ1bGFybmV3bGluZQotXGhsaW5lXGhsaW5lXGVuZGhlYWQKLVxjb2Rle0dlbmVyaWNFbnRpdHl9ICYgXGNvZGV7R2VuZXJpY0VudGl0eTxMaXN0PFN0cmluZz4+fSAmIFxjb2Rle0FycmF5TGlzdDw/Pn0gJiBcY29kZXtMaXN0PFN0cmluZz59IFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtSZXNwb25zZX0gJiBcY29kZXtHZW5lcmljRW50aXR5PExpc3Q8U3RyaW5nPj59ICYgXGNvZGV7QXJyYXlMaXN0PD8+fSAmIFxjb2Rle0xpc3Q8U3RyaW5nPn0gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjb2Rle1Jlc3BvbnNlfSAmIFxjb2Rle0FycmF5TGlzdDxTdHJpbmc+fSAmIFxjb2Rle0FycmF5TGlzdDw/Pn0gJiBcY29kZXtBcnJheUxpc3Q8Pz59IFx0YWJ1bGFybmV3bGluZQotXGhsaW5lCi1cY29kZXtMaXN0PFN0cmluZz59ICYgXGNvZGV7QXJyYXlMaXN0PFN0cmluZz59ICYgXGNvZGV7QXJyYXlMaXN0PD8+fSAmIFxjb2Rle0xpc3Q8U3RyaW5nPn0gXHRhYnVsYXJuZXdsaW5lCi1caGxpbmUKLVxjYXB0aW9ue0V4YW1wbGUgcmF3IGFuZCBnZW5lcmljIHR5cGVzIG9mIHJldHVybiB2YWx1ZXN9Ci1cZW5ke2xvbmd0YWJsZX0KLQotXHN1YnNlY3Rpb257RXhjZXB0aW9uc30KLVxsYWJlbHttZXRob2RfZXhjfQotCi1BIHJlc291cmNlIG1ldGhvZCwgc3ViLXJlc291cmNlIG1ldGhvZCBvciBzdWItcmVzb3VyY2UgbG9jYXRvciBtYXkgdGhyb3cgYW55IGNoZWNrZWQgb3IgdW5jaGVja2VkIGV4Y2VwdGlvbi4gQW4gaW1wbGVtZW50YXRpb24gTVVTVCBjYXRjaCBhbGwgZXhjZXB0aW9ucyBhbmQgcHJvY2VzcyB0aGVtIGFzIGZvbGxvd3M6Ci0KLVxiZWdpbntlbnVtZXJhdGV9Ci1caXRlbSBJbnN0YW5jZXMgb2YgXFdlYkFwcEV4Y1wgTVVTVCBiZSBtYXBwZWQgdG8gYSByZXNwb25zZSBhcyBmb2xsb3dzLiBJZiB0aGUgXGNvZGV7cmVzcG9uc2V9IHByb3BlcnR5IG9mIHRoZSBleGNlcHRpb24gZG9lcyBub3QgY29udGFpbiBhbiBlbnRpdHkgYW5kIGFuIGV4Y2VwdGlvbiBtYXBwaW5nIHByb3ZpZGVyIChzZWUgc2VjdGlvbiBccmVme2V4Y2VwdGlvbm1hcHBlcn0pIGlzIGF2YWlsYWJsZSBmb3IgXFdlYkFwcEV4Y1wsIGFuIGltcGxlbWVudGF0aW9uIE1VU1QgdXNlIHRoZSBwcm92aWRlciB0byBjcmVhdGUgYSBuZXcgXFJlc3BvbnNlXCBpbnN0YW5jZSwgb3RoZXJ3aXNlIHRoZSBcY29kZXtyZXNwb25zZX0gcHJvcGVydHkgaXMgdXNlZCBkaXJlY3RseS4gVGhlIHJlc3VsdGluZyBcUmVzcG9uc2VcIGluc3RhbmNlIGlzIHRoZW4gcHJvY2Vzc2VkIGFjY29yZGluZyB0byBzZWN0aW9uIFxyZWZ7cmVzb3VyY2VfbWV0aG9kX3JldHVybn0uCi1caXRlbSBJZiBhbiBleGNlcHRpb24gbWFwcGluZyBwcm92aWRlciAoc2VlIHNlY3Rpb24gXHJlZntleGNlcHRpb25tYXBwZXJ9KSBpcyBhdmFpbGFibGUgZm9yIHRoZSBleGNlcHRpb24gb3Igb25lIG9mIGl0cyBzdXBlcmNsYXNzZXMsIGFuIGltcGxlbWVudGF0aW9uIE1VU1QgdXNlIHRoZSBwcm92aWRlciB3aG9zZSBnZW5lcmljIHR5cGUgaXMgdGhlIG5lYXJlc3Qgc3VwZXJjbGFzcyBvZiB0aGUgZXhjZXB0aW9uIHRvIGNyZWF0ZSBhIFxSZXNwb25zZVwgaW5zdGFuY2UgdGhhdCBpcyB0aGVuIHByb2Nlc3NlZCBhY2NvcmRpbmcgdG8gc2VjdGlvbiBccmVme3Jlc291cmNlX21ldGhvZF9yZXR1cm59LiBJZiB0aGUgZXhjZXB0aW9uIG1hcHBpbmcgcHJvdmlkZXIgdGhyb3dzIGFuIGV4Y2VwdGlvbiB3aGlsZSBjcmVhdGluZyBhIFxSZXNwb25zZVwgdGhlbiByZXR1cm4gYSBzZXJ2ZXIgZXJyb3IgKHN0YXR1cyBjb2RlIDUwMCkgcmVzcG9uc2UgdG8gdGhlIGNsaWVudC4KLVxpdGVtXGxhYmVse3J1bnRpbWVleGN9IFVuY2hlY2tlZCBleGNlcHRpb25zIGFuZCBlcnJvcnMgTVVTVCBiZSByZS10aHJvd24gYW5kIGFsbG93ZWQgdG8gcHJvcGFnYXRlIHRvIHRoZSB1bmRlcmx5aW5nIGNvbnRhaW5lci4KLVxpdGVtXGxhYmVse2NoZWNrZWRleGN9IENoZWNrZWQgZXhjZXB0aW9ucyBhbmQgdGhyb3dhYmxlcyB0aGF0IGNhbm5vdCBiZSB0aHJvd24gZGlyZWN0bHkgTVVTVCBiZSB3cmFwcGVkIGluIGEgY29udGFpbmVyLXNwZWNpZmljIGV4Y2VwdGlvbiB0aGF0IGlzIHRoZW4gdGhyb3duIGFuZCBhbGxvd2VkIHRvIHByb3BhZ2F0ZSB0byB0aGUgdW5kZXJseWluZyBjb250YWluZXIuIFNlcnZsZXQtYmFzZWQgaW1wbGVtZW50YXRpb25zIE1VU1QgdXNlIFxjb2Rle1NlcnZsZXRcLUV4Y2VwdGlvbn0gYXMgdGhlIHdyYXBwZXIuIEpBWC1XUyBcY29kZXtQcm92aWRlcn0tYmFzZWQgaW1wbGVtZW50YXRpb25zIE1VU1QgdXNlIFxjb2Rle1dlYlwtU2VydmljZVwtRXhjZXB0aW9ufSBhcyB0aGUgd3JhcHBlci4KLVxlbmR7ZW51bWVyYXRlfQotCi1cYmVnaW57bm5ub3RlfUl0ZW1zIFxyZWZ7cnVudGltZWV4Y30gYW5kIFxyZWZ7Y2hlY2tlZGV4Y30gYWxsb3cgZXhpc3RpbmcgY29udGFpbmVyIGZhY2lsaXRpZXMgKGUuZy4gYSBTZXJ2bGV0IGZpbHRlciBvciBlcnJvciBwYWdlcykgdG8gYmUgdXNlZCB0byBoYW5kbGUgdGhlIGVycm9yIGlmIGRlc2lyZWQuXGVuZHtubm5vdGV9Ci0KLVxzdWJzZWN0aW9ue0hFQUQgYW5kIE9QVElPTlN9Ci1cbGFiZWx7aGVhZF9hbmRfb3B0aW9uc30KLQotXGNvZGV7SEVBRH0gYW5kIFxjb2Rle09QVElPTlN9IHJlcXVlc3RzIHJlY2VpdmUgYWRkaXRpb25hbCBhdXRvbWF0ZWQgc3VwcG9ydC4gT24gcmVjZWlwdCBvZiBhIFxjb2Rle0hFQUR9IHJlcXVlc3QgYW4gaW1wbGVtZW50YXRpb24gTVVTVCBlaXRoZXI6Ci0KLVxiZWdpbntlbnVtZXJhdGV9Ci1caXRlbSBDYWxsIGEgbWV0aG9kIGFubm90YXRlZCB3aXRoIGEgcmVxdWVzdCBtZXRob2QgZGVzaWduYXRvciBmb3IgXGNvZGV7SEVBRH0gb3IsIGlmIG5vbmUgcHJlc2VudCwKLVxpdGVtXGxhYmVse2dldF9ub3RfaGVhZH0gQ2FsbCBhIG1ldGhvZCBhbm5vdGF0ZWQgd2l0aCBhIHJlcXVlc3QgbWV0aG9kIGRlc2lnbmF0b3IgZm9yIFxjb2Rle0dFVH0gYW5kIGRpc2NhcmQgYW55IHJldHVybmVkIGVudGl0eS4KLVxlbmR7ZW51bWVyYXRlfQotCi1Ob3RlIHRoYXQgb3B0aW9uIFxyZWZ7Z2V0X25vdF9oZWFkfSBtYXkgcmVzdWx0IGluIHJlZHVjZWQgcGVyZm9ybWFuY2Ugd2hlcmUgZW50aXR5IGNyZWF0aW9uIGlzIHNpZ25pZmljYW50LgotCi1PbiByZWNlaXB0IG9mIGFuIFxjb2Rle09QVElPTlN9IHJlcXVlc3QgYW4gaW1wbGVtZW50YXRpb24gTVVTVCBlaXRoZXI6Ci0KLVxiZWdpbntlbnVtZXJhdGV9Ci1caXRlbSBDYWxsIGEgbWV0aG9kIGFubm90YXRlZCB3aXRoIGEgcmVxdWVzdCBtZXRob2QgZGVzaWduYXRvciBmb3IgXGNvZGV7T1BUSU9OU30gb3IsIGlmIG5vbmUgcHJlc2VudCwKLVxpdGVtIEdlbmVyYXRlIGFuIGF1dG9tYXRpYyByZXNwb25zZSB1c2luZyB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgdGhlIFxqYXhyc1wgYW5ub3RhdGlvbnMgb24gdGhlIG1hdGNoaW5nIGNsYXNzIGFuZCBpdHMgbWV0aG9kcy4KLVxlbmR7ZW51bWVyYXRlfQotCi1cc2VjdGlvbntVUkkgVGVtcGxhdGVzfQotXGxhYmVse3VyaXRlbXBsYXRlc30KLQotQSByb290IHJlc291cmNlIGNsYXNzIGlzIGFuY2hvcmVkIGluIFVSSSBzcGFjZSB1c2luZyB0aGUgXFBhdGhcIGFubm90YXRpb24uIFRoZSB2YWx1ZSBvZiB0aGUgYW5ub3RhdGlvbiBpcyBhIHJlbGF0aXZlIFVSSSBwYXRoIHRlbXBsYXRlIHdob3NlIGJhc2UgVVJJIGlzIHByb3ZpZGVkIGJ5IHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgZGVwbG95bWVudCBjb250ZXh0IGFuZCB0aGUgYXBwbGljYXRpb24gcGF0aCAoc2VlIHRoZSBcY29kZXtAQXBwbGljYXRpb25cLVBhdGh9IGFubm90YXRpb24pLgotCi1BIFVSSSBwYXRoIHRlbXBsYXRlIGlzIGEgc3RyaW5nIHdpdGggemVybyBvciBtb3JlIGVtYmVkZGVkIHBhcmFtZXRlcnMgdGhhdCwgd2hlbiB2YWx1ZXMgYXJlIHN1YnN0aXR1dGVkIGZvciBhbGwgdGhlIHBhcmFtZXRlcnMsIGlzIGEgdmFsaWQgVVJJXGNpdGV7dXJpfSBwYXRoLiBUaGUgSmF2YWRvYyBmb3IgdGhlIFxQYXRoXCBhbm5vdGF0aW9uIGRlc2NyaWJlcyB0aGVpciBzeW50YXguIEUuZy46Ci0KLVxiZWdpbntsaXN0aW5nfXsxfQotQFBhdGgoIndpZGdldHMve2lkfSIpCi1wdWJsaWMgY2xhc3MgV2lkZ2V0IHsKLSAgLi4uCi19XGVuZHtsaXN0aW5nfQotCi1JbiB0aGUgYWJvdmUgZXhhbXBsZSB0aGUgXGNvZGV7V2lkZ2V0fSByZXNvdXJjZSBjbGFzcyBpcyBpZGVudGlmaWVkIGJ5IHRoZSByZWxhdGl2ZSBVUkkgcGF0aCBcY29kZXt3aWRnZXRzL3tcZW0geHh4fX0gd2hlcmUgXGNvZGV7XGVtIHh4eH0gaXMgdGhlIHZhbHVlIG9mIHRoZSBcY29kZXtpZH0gcGFyYW1ldGVyLgotCi1cYmVnaW57bm5ub3RlfUJlY2F1c2UgXGxxXHtccnEgYW5kIFxscVx9XHJxXCBhcmUgbm90IHBhcnQgb2YgZWl0aGVyIHRoZSByZXNlcnZlZCBvciB1bnJlc2VydmVkIHByb2R1Y3Rpb25zIG9mIFVSSVxjaXRle3VyaX0gdGhleSB3aWxsIG5vdCBhcHBlYXIgaW4gYSB2YWxpZCBVUkkuXGVuZHtubm5vdGV9Ci0KLVRoZSB2YWx1ZSBvZiB0aGUgYW5ub3RhdGlvbiBpcyBhdXRvbWF0aWNhbGx5IGVuY29kZWQsIGUuZy4gdGhlIGZvbGxvd2luZyB0d28gbGluZXMgYXJlIGVxdWl2YWxlbnQ6Ci0KLVxiZWdpbntsaXN0aW5nfXsxfQotQFBhdGgoIndpZGdldCBsaXN0L3tpZH0iKQotQFBhdGgoIndpZGdldCUyMGxpc3Qve2lkfSIpCi1cZW5ke2xpc3Rpbmd9Ci0KLVRlbXBsYXRlIHBhcmFtZXRlcnMgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSB0aGUgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gbWF0Y2ggdGhlaXIgdmFsdWVzLiBUaGUgZGVmYXVsdCB2YWx1ZSBtYXRjaGVzIGFueSB0ZXh0IGFuZCB0ZXJtaW5hdGVzIGF0IHRoZSBlbmQgb2YgYSBwYXRoIHNlZ21lbnQgYnV0IG90aGVyIHZhbHVlcyBjYW4gYmUgdXNlZCB0byBhbHRlciB0aGlzIGJlaGF2aW9yLCBlLmcuOgotCi1cYmVnaW57bGlzdGluZ317MX0KLUBQYXRoKCJ3aWRnZXRzL3twYXRoOi4rfSIpCi1wdWJsaWMgY2xhc3MgV2lkZ2V0IHsKLSAgLi4uCi19XGVuZHtsaXN0aW5nfQotCi1JbiB0aGUgYWJvdmUgZXhhbXBsZSB0aGUgXGNvZGV7V2lkZ2V0fSByZXNvdXJjZSBjbGFzcyB3aWxsIGJlIG1hdGNoZWQgZm9yIGFueSByZXF1ZXN0IHdob3NlIHBhdGggc3RhcnRzIHdpdGggXGNvZGV7d2lkZ2V0c30gYW5kIGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBtb3JlIHBhdGggc2VnbWVudDsgdGhlIHZhbHVlIG9mIHRoZSBcY29kZXtwYXRofSBwYXJhbWV0ZXIgd2lsbCBiZSB0aGUgcmVxdWVzdCBwYXRoIGZvbGxvd2luZyBcY29kZXt3aWRnZXRzfS4gRS5nLiBnaXZlbiB0aGUgcmVxdWVzdCBwYXRoIFxjb2Rle3dpZGdldHMvc21hbGwvYX0gdGhlIHZhbHVlIG9mIFxjb2Rle3BhdGh9IHdvdWxkIGJlIFxjb2Rle3NtYWxsL2F9LgotCi1cc3Vic2VjdGlvbntTdWIgUmVzb3VyY2VzfQotXGxhYmVse3N1Yl9yZXNvdXJjZXN9Ci0KLU1ldGhvZHMgb2YgYSByZXNvdXJjZSBjbGFzcyB0aGF0IGFyZSBhbm5vdGF0ZWQgd2l0aCBcUGF0aFwgYXJlIGVpdGhlciBzdWItcmVzb3VyY2UgbWV0aG9kcyBvciBzdWItcmVzb3VyY2UgbG9jYXRvcnMuIFN1Yi1yZXNvdXJjZSBtZXRob2RzIGhhbmRsZSBhIEhUVFAgcmVxdWVzdCBkaXJlY3RseSB3aGlsc3Qgc3ViLXJlc291cmNlIGxvY2F0b3JzIHJldHVybiBhbiBvYmplY3QgdGhhdCB3aWxsIGhhbmRsZSBhIEhUVFAgcmVxdWVzdC4gVGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgYSByZXF1ZXN0IG1ldGhvZCBkZXNpZ25hdG9yIChlLmcuIEBHRVQpIGRpZmZlcmVudGlhdGVzIGJldHdlZW4gdGhlIHR3bzoKLQotXGJlZ2lue2Rlc2NyaXB0aW9ufQotXGl0ZW1bUHJlc2VudF0gU3VjaCBtZXRob2RzLCBrbm93biBhcyB7XGVtIHN1Yi1yZXNvdXJjZSBtZXRob2RzfSwgYXJlIHRyZWF0ZWQgbGlrZSBhIG5vcm1hbCByZXNvdXJjZSBtZXRob2QgKHNlZSBzZWN0aW9uIFxyZWZ7cmVzb3VyY2VfbWV0aG9kfSkgZXhjZXB0IHRoZSBtZXRob2QgaXMgb25seSBpbnZva2VkIGZvciByZXF1ZXN0IFVSSXMgdGhhdCBtYXRjaCBhIFVSSSB0ZW1wbGF0ZSBjcmVhdGVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIFVSSSB0ZW1wbGF0ZSBvZiB0aGUgcmVzb3VyY2UgY2xhc3Mgd2l0aCB0aGUgVVJJIHRlbXBsYXRlIG9mIHRoZSBtZXRob2RcZm9vdG5vdGV7SWYgdGhlIHJlc291cmNlIGNsYXNzIFVSSSB0ZW1wbGF0ZSBkb2VzIG5vdCBlbmQgd2l0aCBhIFxscS9ccnFcIGNoYXJhY3RlciB0aGVuIG9uZSBpcyBhZGRlZCBkdXJpbmcgdGhlIGNvbmNhdGVuYXRpb24ufS4KLVxpdGVtW0Fic2VudF0gU3VjaCBtZXRob2RzLCBrbm93biBhcyB7XGVtIHN1Yi1yZXNvdXJjZSBsb2NhdG9yc30sIGFyZSB1c2VkIHRvIGR5bmFtaWNhbGx5IHJlc29sdmUgdGhlIG9iamVjdCB0aGF0IHdpbGwgaGFuZGxlIHRoZSByZXF1ZXN0LiBBbnkgcmV0dXJuZWQgb2JqZWN0IGlzIHRyZWF0ZWQgYXMgYSByZXNvdXJjZSBjbGFzcyBpbnN0YW5jZSBhbmQgdXNlZCB0byBlaXRoZXIgaGFuZGxlIHRoZSByZXF1ZXN0IG9yIHRvIGZ1cnRoZXIgcmVzb2x2ZSB0aGUgb2JqZWN0IHRoYXQgd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QsIHNlZSBccmVme21hcHBpbmdfcmVxdWVzdHNfdG9famF2YV9tZXRob2RzfSBmb3IgZnVydGhlciBkZXRhaWxzLiBBbiBpbXBsZW1lbnRhdGlvbiBNVVNUIGR5bmFtaWNhbGx5IGRldGVybWluZSB0aGUgY2xhc3Mgb2Ygb2JqZWN0IHJldHVybmVkIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIHN0YXRpYyBzdWItcmVzb3VyY2UgbG9jYXRvciByZXR1cm4gdHlwZSBzaW5jZSB0aGUgcmV0dXJuZWQgaW5zdGFuY2UgbWF5IGJlIGEgc3ViY2xhc3Mgb2YgdGhlIGRlY2xhcmVkIHR5cGUgd2l0aCBwb3RlbnRpYWxseSBkaWZmZXJlbnQgYW5ub3RhdGlvbnMsIHNlZSBzZWN0aW9uIFxyZWZ7YW5ub3RhdGlvbmluaGVyaXRhbmNlfSBmb3IgcnVsZXMgb24gYW5ub3RhdGlvbiBpbmhlcml0YW5jZS4gU3ViLXJlc291cmNlIGxvY2F0b3JzIG1heSBoYXZlIGFsbCB0aGUgc2FtZSBwYXJhbWV0ZXJzIGFzIGEgbm9ybWFsIHJlc291cmNlIG1ldGhvZCAoc2VlIHNlY3Rpb24gXHJlZntyZXNvdXJjZV9tZXRob2R9KSBleGNlcHQgdGhhdCB0aGV5IE1VU1QgTk9UIGhhdmUgYW4gZW50aXR5IHBhcmFtZXRlci4gCi1cZW5ke2Rlc2NyaXB0aW9ufQotCi1UaGUgZm9sbG93aW5nIGV4YW1wbGUgaWxsdXN0cmF0ZXMgdGhlIGRpZmZlcmVuY2U6Ci0KLVxiZWdpbntsaXN0aW5nfXsxfQotQFBhdGgoIndpZGdldHMiKQotcHVibGljIGNsYXNzIFdpZGdldHNSZXNvdXJjZSB7Ci0gIEBHRVQKLSAgQFBhdGgoIm9mZmVycyIpCi0gIHB1YmxpYyBXaWRnZXRMaXN0IGdldERpc2NvdW50ZWQoKSB7Li4ufQotICAKLSAgQFBhdGgoIntpZH0iKQotICBwdWJsaWMgV2lkZ2V0UmVzb3VyY2UgZmluZFdpZGdldChAUGF0aFBhcmFtKCJpZCIpIFN0cmluZyBpZCkgewotICAgIHJldHVybiBuZXcgV2lkZ2V0UmVzb3VyY2UoaWQpOwotICB9Ci19Ci0KLXB1YmxpYyBjbGFzcyBXaWRnZXRSZXNvdXJjZSB7Ci0gIHB1YmxpYyBXaWRnZXRSZXNvdXJjZShTdHJpbmcgaWQpIHsuLi59Ci0KLSAgQEdFVAotICBwdWJsaWMgV2lkZ2V0IGdldERldGFpbHMoKSB7Li4ufQotfVxlbmR7bGlzdGluZ30KLQotSW4gdGhlIGFib3ZlIGEgXGNvZGV7R0VUfSByZXF1ZXN0IGZvciB0aGUgXGNvZGV7d2lkZ2V0cy9vZmZlcnN9IHJlc291cmNlIGlzIGhhbmRsZWQgZGlyZWN0bHkgYnkgdGhlIFxjb2Rle2dldFwtRGlzY291bnRlZH0gc3ViLXJlc291cmNlIG1ldGhvZCBvZiB0aGUgcmVzb3VyY2UgY2xhc3MgXGNvZGV7V2lkZ2V0c1wtUmVzb3VyY2V9IHdoZXJlYXMgYSBcY29kZXtHRVR9IHJlcXVlc3QgZm9yIFxjb2Rle3dpZGdldHMve1xlbSB4eHh9fSBpcyBoYW5kbGVkIGJ5IHRoZSBcY29kZXtnZXRcLURldGFpbHN9IG1ldGhvZCBvZiB0aGUgXGNvZGV7V2lkZ2V0XC1SZXNvdXJjZX0gcmVzb3VyY2UgY2xhc3MuCi0KLVxiZWdpbntubm5vdGV9QSBzZXQgb2Ygc3ViLXJlc291cmNlIG1ldGhvZHMgYW5ub3RhdGVkIHdpdGggdGhlIHNhbWUgVVJJIHRlbXBsYXRlIHZhbHVlIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBhIHNpbWlsYXJseSBhbm5vdGF0ZWQgc3ViLXJlc291cmNlIGxvY2F0b3IgdGhhdCByZXR1cm5zIGFuIGluc3RhbmNlIG9mIGEgcmVzb3VyY2UgY2xhc3Mgd2l0aCB0aGUgc2FtZSBzZXQgb2YgcmVzb3VyY2UgbWV0aG9kcy5cZW5ke25ubm90ZX0KLQotXHNlY3Rpb257RGVjbGFyaW5nIE1lZGlhIFR5cGUgQ2FwYWJpbGl0aWVzfQotXGxhYmVse2RlY2xhcmluZ19tZXRob2RfY2FwYWJpbGl0aWVzfQotCi1BcHBsaWNhdGlvbiBjbGFzc2VzIGNhbiBkZWNsYXJlIHRoZSBzdXBwb3J0ZWQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgbWVkaWEgdHlwZXMgdXNpbmcgdGhlIFxDb25zdW1lc1wgYW5kIFxQcm9kdWNlc1wgYW5ub3RhdGlvbnMgcmVzcGVjdGl2ZWx5LiBUaGVzZSBhbm5vdGF0aW9ucyBNQVkgYmUgYXBwbGllZCB0byBhIHJlc291cmNlIG1ldGhvZCwgYSByZXNvdXJjZSBjbGFzcywgb3IgdG8gYW4gZW50aXR5IHByb3ZpZGVyIChzZWUgc2VjdGlvbiBccmVme2RlY2xhcmluZ19wcm92aWRlcl9jYXBhYmlsaXRpZXN9KS4gVXNlIG9mIHRoZXNlIGFubm90YXRpb25zIG9uIGEgcmVzb3VyY2UgbWV0aG9kIG92ZXJyaWRlcyBhbnkgb24gdGhlIHJlc291cmNlIGNsYXNzIG9yIG9uIGFuIGVudGl0eSBwcm92aWRlciBmb3IgYSBtZXRob2QgYXJndW1lbnQgb3IgcmV0dXJuIHR5cGUuIEluIHRoZSBhYnNlbmNlIG9mIGVpdGhlciBvZiB0aGVzZSBhbm5vdGF0aW9ucywgc3VwcG9ydCBmb3IgYW55IG1lZGlhIHR5cGUgKFxscVxscSovKlxycVxycSkgaXMgYXNzdW1lZC4KLQotVGhlIGZvbGxvd2luZyBleGFtcGxlIGlsbHVzdHJhdGVzIHRoZSB1c2Ugb2YgdGhlc2UgYW5ub3RhdGlvbnM6Ci0KLVxiZWdpbntsaXN0aW5nfXsxfQotQFBhdGgoIndpZGdldHMiKQotQFByb2R1Y2VzKCJhcHBsaWNhdGlvbi93aWRnZXRzK3htbCIpCi1wdWJsaWMgY2xhc3MgV2lkZ2V0c1Jlc291cmNlIHsKLSAgCi0gIEBHRVQKLSAgcHVibGljIFdpZGdldHMgZ2V0QXNYTUwoKSB7Li4ufQotICAKLSAgQEdFVAotICBAUHJvZHVjZXMoInRleHQvaHRtbCIpCi0gIHB1YmxpYyBTdHJpbmcgZ2V0QXNIdG1sKCkgey4uLn0KLSAgCi0gIEBQT1NUCi0gIEBDb25zdW1lcygiYXBwbGljYXRpb24vd2lkZ2V0cyt4bWwiKQotICBwdWJsaWMgdm9pZCBhZGRXaWRnZXQoV2lkZ2V0IHdpZGdldCkgey4uLn0KLX0KLQotQFByb3ZpZGVyCi1AUHJvZHVjZXMoImFwcGxpY2F0aW9uL3dpZGdldHMreG1sIikKLXB1YmxpYyBjbGFzcyBXaWRnZXRzUHJvdmlkZXIgaW1wbGVtZW50cyBNZXNzYWdlQm9keVdyaXRlcjxXaWRnZXRzPiB7Li4ufQotCi1AUHJvdmlkZXIKLUBDb25zdW1lcygiYXBwbGljYXRpb24vd2lkZ2V0cyt4bWwiKQotcHVibGljIGNsYXNzIFdpZGdldFByb3ZpZGVyIGltcGxlbWVudHMgTWVzc2FnZUJvZHlSZWFkZXI8V2lkZ2V0PiB7Li4ufQotXGVuZHtsaXN0aW5nfQotCi1JbiB0aGUgYWJvdmU6Ci1cYmVnaW57aXRlbWl6ZX0KLVxpdGVtIFRoZSBcY29kZXtnZXRBc1hNTH0gcmVzb3VyY2UgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGZvciBcY29kZXtHRVR9IHJlcXVlc3RzIHRoYXQgc3BlY2lmeSBhIHJlc3BvbnNlIG1lZGlhIHR5cGUgb2YgXGNvZGV7YXBwbGljYXRpb24vd2lkZ2V0cyt4bWx9LiBJdCByZXR1cm5zIGEgXGNvZGV7V2lkZ2V0c30gaW5zdGFuY2UgdGhhdCB3aWxsIGJlIG1hcHBlZCB0byB0aGF0IGZvcm1hdCB1c2luZyB0aGUgXGNvZGV7V2lkZ2V0c1Byb3ZpZGVyfSBjbGFzcyAoc2VlIHNlY3Rpb24gXHJlZntlbnRpdHlfcHJvdmlkZXJzfSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBcTXNnV3JpdGUpLgotXGl0ZW0gVGhlIFxjb2Rle2dldEFzSHRtbH0gcmVzb3VyY2UgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGZvciBcY29kZXtHRVR9IHJlcXVlc3RzIHRoYXQgc3BlY2lmeSBhIHJlc3BvbnNlIG1lZGlhIHR5cGUgb2YgXGNvZGV7dGV4dC9odG1sfS4gSXQgcmV0dXJucyBhIFxjb2Rle1N0cmluZ30gY29udGFpbmluZyBcY29kZXt0ZXh0L2h0bWx9IHRoYXQgd2lsbCBiZSB3cml0dGVuIHVzaW5nIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIFxjb2Rle01lc3NhZ2VCb2R5V3JpdGVyPFN0cmluZz59LgotXGl0ZW0gVGhlIFxjb2Rle2FkZFdpZGdldH0gcmVzb3VyY2UgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGZvciBcY29kZXtQT1NUfSByZXF1ZXN0cyB0aGF0IGNvbnRhaW4gYW4gZW50aXR5IG9mIHRoZSBtZWRpYSB0eXBlIFxjb2Rle2FwcGxpY2F0aW9uL3dpZGdldHMreG1sfS4gVGhlIHZhbHVlIG9mIHRoZSBcY29kZXt3aWRnZXR9IHBhcmFtZXRlciB3aWxsIGJlIG1hcHBlZCBmcm9tIHRoZSByZXF1ZXN0IGVudGl0eSB1c2luZyB0aGUgXGNvZGV7V2lkZ2V0UHJvdmlkZXJ9IGNsYXNzIChzZWUgc2VjdGlvbiBccmVme2VudGl0eV9wcm92aWRlcnN9IGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIFxNc2dSZWFkKS4KLVxlbmR7aXRlbWl6ZX0KLQotQW4gaW1wbGVtZW50YXRpb24gTVVTVCBOT1QgaW52b2tlIGEgbWV0aG9kIHdob3NlIGVmZmVjdGl2ZSB2YWx1ZSBvZiBcUHJvZHVjZXNcIGRvZXMgbm90IG1hdGNoIHRoZSByZXF1ZXN0IFxjb2Rle0FjY2VwdH0gaGVhZGVyLiBBbiBpbXBsZW1lbnRhdGlvbiBNVVNUIE5PVCBpbnZva2UgYSBtZXRob2Qgd2hvc2UgZWZmZWN0aXZlIHZhbHVlIG9mIFxDb25zdW1lc1wgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVlc3QgXGNvZGV7Q29udGVudC1UeXBlfSBoZWFkZXIuCi0KLVxzZWN0aW9ue0Fubm90YXRpb24gSW5oZXJpdGFuY2V9Ci1cbGFiZWx7YW5ub3RhdGlvbmluaGVyaXRhbmNlfQotCi1camF4cnNcIGFubm90YXRpb25zIE1BWSBiZSB1c2VkIG9uIHRoZSBtZXRob2RzIGFuZCBtZXRob2QgcGFyYW1ldGVycyBvZiBhIHN1cGVyLWNsYXNzIG9yIGFuIGltcGxlbWVudGVkIGludGVyZmFjZS4gU3VjaCBhbm5vdGF0aW9ucyBhcmUgaW5oZXJpdGVkIGJ5IGEgY29ycmVzcG9uZGluZyBzdWItY2xhc3Mgb3IgaW1wbGVtZW50YXRpb24gY2xhc3MgbWV0aG9kIHByb3ZpZGVkIHRoYXQgbWV0aG9kIGFuZCBpdHMgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBhbnkgXGpheHJzXCBhbm5vdGF0aW9ucyBvZiBpdHMgb3duLiBBbm5vdGF0aW9ucyBvbiBhIHN1cGVyLWNsYXNzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRob3NlIG9uIGFuIGltcGxlbWVudGVkIGludGVyZmFjZS4gSWYgYSBzdWJjbGFzcyBvciBpbXBsZW1lbnRhdGlvbiBtZXRob2QgaGFzIGFueSBcamF4cnNcIGFubm90YXRpb25zIHRoZW4ge1xlbSBhbGx9IG9mIHRoZSBhbm5vdGF0aW9ucyBvbiB0aGUgc3VwZXIgY2xhc3Mgb3IgaW50ZXJmYWNlIG1ldGhvZCBhcmUgaWdub3JlZC4gRS5nLjoKLQotXGJlZ2lue2xpc3Rpbmd9ezF9Ci1wdWJsaWMgaW50ZXJmYWNlIFJlYWRPbmx5QXRvbUZlZWQgewotICBAR0VUIEBQcm9kdWNlcygiYXBwbGljYXRpb24vYXRvbSt4bWwiKQotICBGZWVkIGdldEZlZWQoKTsKLX0KLQotQFBhdGgoImZlZWQiKQotcHVibGljIGNsYXNzIEFjdGl2aXR5TG9nIGltcGxlbWVudHMgUmVhZE9ubHlBdG9tRmVlZCB7Ci0gIHB1YmxpYyBGZWVkIGdldEZlZWQoKSB7Li4ufQotfQotXGVuZHtsaXN0aW5nfQotCi1JbiB0aGUgYWJvdmUsIFxjb2Rle0FjdGl2aXR5TG9nLmdldEZlZWR9IGluaGVyaXRzIHRoZSBcY29kZXtAR0VUfSBhbmQgXFByb2R1Y2VzXCBhbm5vdGF0aW9ucyBmcm9tIHRoZSBpbnRlcmZhY2UuIENvbnZlcnNlbHk6Ci0KLVxiZWdpbntsaXN0aW5nfXsxfQotQFBhdGgoImZlZWQiKQotcHVibGljIGNsYXNzIEFjdGl2aXR5TG9nIGltcGxlbWVudHMgUmVhZE9ubHlBdG9tRmVlZCB7Ci0gIEBQcm9kdWNlcygiYXBwbGljYXRpb24vYXRvbSt4bWwiKQotICBwdWJsaWMgRmVlZCBnZXRGZWVkKCkgey4uLn0KLX0KLVxlbmR7bGlzdGluZ30KLQotSW4gdGhlIGFib3ZlLCB0aGUgXGNvZGV7QEdFVH0gYW5ub3RhdGlvbiBvbiBcY29kZXtSZWFkT25seUF0b21GZWVkLmdldEZlZWR9IGlzIG5vdCBpbmhlcml0ZWQgYnkgXGNvZGV7QWN0aXZpdHktTG9nXC0uZ2V0XC1GZWVkfSBhbmQgaXQgd291bGQgcmVxdWlyZSBpdHMgb3duIHJlcXVlc3QgbWV0aG9kIGRlc2lnbmF0b3Igc2luY2UgaXQgcmVkZWZpbmVzIHRoZSBcUHJvZHVjZXNcIGFubm90YXRpb24uCi0KLVxzZWN0aW9ue01hdGNoaW5nIFJlcXVlc3RzIHRvIFJlc291cmNlIE1ldGhvZHN9Ci1cbGFiZWx7bWFwcGluZ19yZXF1ZXN0c190b19qYXZhX21ldGhvZHN9Ci0KLVRoaXMgc2VjdGlvbiBkZXNjcmliZXMgaG93IGEgcmVxdWVzdCBpcyBtYXRjaGVkIHRvIGEgcmVzb3VyY2UgY2xhc3MgYW5kIG1ldGhvZC4gSW1wbGVtZW50YXRpb25zIGFyZSBub3QgcmVxdWlyZWQgdG8gdXNlIHRoZSBhbGdvcml0aG0gYXMgd3JpdHRlbiBidXQgTVVTVCBwcm9kdWNlIHJlc3VsdHMgZXF1aXZhbGVudCB0byB0aG9zZSBwcm9kdWNlZCBieSB0aGUgYWxnb3JpdGhtLgotCi1cc3Vic2VjdGlvbntSZXF1ZXN0IFByZXByb2Nlc3Npbmd9Ci1cbGFiZWx7cmVxcHJlcHJvY30KLQotUHJpb3IgdG8gbWF0Y2hpbmcsIHJlcXVlc3QgVVJJcyBhcmUgbm9ybWFsaXplZFxmb290bm90ZXtOb3RlOiBzb21lIGNvbnRhaW5lcnMgbWlnaHQgcGVyZm9ybSB0aGlzIGZ1bmN0aW9uYWxpdHkgcHJpb3IgdG8gcGFzc2luZyB0aGUgcmVxdWVzdCB0byBhbiBpbXBsZW1lbnRhdGlvbi59IGJ5IGZvbGxvd2luZyB0aGUgcnVsZXMgZm9yIGNhc2UsIHBhdGggc2VnbWVudCwgYW5kIHBlcmNlbnQgZW5jb2Rpbmcgbm9ybWFsaXphdGlvbiBkZXNjcmliZWQgaW4gc2VjdGlvbiA2LjIuMiBvZiBSRkMgMzk4NlxjaXRle3VyaX0uIFRoZSBub3JtYWxpemVkIHJlcXVlc3QgVVJJIE1VU1QgYmUgcmVmbGVjdGVkIGluIHRoZSBVUklzIG9idGFpbmVkIGZyb20gYW4gaW5qZWN0ZWQgXGNvZGV7VXJpSW5mb30uCi0KLVxzdWJzZWN0aW9ue1JlcXVlc3QgTWF0Y2hpbmd9Ci1cbGFiZWx7cmVxdWVzdF9tYXRjaGluZ30KLQotQSByZXF1ZXN0IGlzIG1hdGNoZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgcmVzb3VyY2UgbWV0aG9kIG9yIHN1Yi1yZXNvdXJjZSBtZXRob2QgYnkgY29tcGFyaW5nIHRoZSBub3JtYWxpemVkIHJlcXVlc3QgVVJJIChzZWUgc2VjdGlvbiBccmVme3JlcXByZXByb2N9KSwgdGhlIG1lZGlhIHR5cGUgb2YgYW55IHJlcXVlc3QgZW50aXR5LCBhbmQgdGhlIHJlcXVlc3RlZCByZXNwb25zZSBlbnRpdHkgZm9ybWF0IHRvIHRoZSBtZXRhZGF0YSBhbm5vdGF0aW9ucyBvbiB0aGUgcmVzb3VyY2UgY2xhc3NlcyBhbmQgdGhlaXIgbWV0aG9kcy4gSWYgbm8gbWF0Y2hpbmcgcmVzb3VyY2UgbWV0aG9kIG9yIHN1Yi1yZXNvdXJjZSBtZXRob2QgY2FuIGJlIGZvdW5kIHRoZW4gYW4gYXBwcm9wcmlhdGUgZXJyb3IgcmVzcG9uc2UgaXMgcmV0dXJuZWQuIE1hdGNoaW5nIG9mIHJlcXVlc3RzIHRvIHJlc291cmNlIG1ldGhvZHMgcHJvY2VlZHMgaW4gdGhyZWUgc3RhZ2VzIGFzIGZvbGxvd3M6Ci0KLVxiZWdpbntlbnVtZXJhdGV9Ci1caXRlbSBJZGVudGlmeSB0aGUgcm9vdCByZXNvdXJjZSBjbGFzczoKLQotXGJlZ2lue2VudW1lcmF0ZX0KLVxpdGVtIFNldCAkVT1cbWJveHtyZXF1ZXN0IFVSSSBwYXRofSwgQz1ce1xtYm94e3Jvb3QgcmVzb3VyY2UgY2xhc3Nlc31cfSwgRT1ce1x9JAotCi1caXRlbSBGb3IgZWFjaCBjbGFzcyBpbiAkQyQgYWRkIGEgcmVndWxhciBleHByZXNzaW9uIChjb21wdXRlZCB1c2luZyB0aGUgZnVuY3Rpb24gJFIoQSkkIGRlc2NyaWJlZCBpbiBzZWN0aW9uIFxyZWZ7dGVtcGxhdGVfdG9fcmVnZXh9KSB0byAkRSQgYXMgZm9sbG93czoKLVxiZWdpbntpdGVtaXplfQotXGl0ZW0gQWRkICRSKFRfe1xtYm94e2NsYXNzfX0pJCB3aGVyZSAkVF97XG1ib3h7Y2xhc3N9fSQgaXMgdGhlIFVSSSBwYXRoIHRlbXBsYXRlIHNwZWNpZmllZCBmb3IgdGhlIGNsYXNzLgotXGVuZHtpdGVtaXplfQotCi1caXRlbSBGaWx0ZXIgJEUkIGJ5IG1hdGNoaW5nIGVhY2ggbWVtYmVyIGFnYWluc3QgJFUkIGFzIGZvbGxvd3M6Ci1cYmVnaW57aXRlbWl6ZX0KLVxpdGVtIFJlbW92ZSBtZW1iZXJzIHRoYXQgZG8gbm90IG1hdGNoICRVJC4KLVxpdGVtIFJlbW92ZSBtZW1iZXJzIGZvciB3aGljaCB0aGUgZmluYWwgcmVndWxhciBleHByZXNzaW9uIGNhcHR1cmluZyBncm91cCAoaGVuY2Vmb3J0aCBzaW1wbHkgcmVmZXJyZWQgdG8gYXMgYSBjYXB0dXJpbmcgZ3JvdXApIHZhbHVlIGlzIG5laXRoZXIgZW1wdHkgbm9yIFxscS9ccnFcIGFuZCB0aGUgY2xhc3MgYXNzb2NpYXRlZCB3aXRoICRSKFRfe1xtYm94e2NsYXNzfX0pJCBoYWQgbm8gc3ViLXJlc291cmNlIG1ldGhvZHMgb3IgbG9jYXRvcnMuCi1cZW5ke2l0ZW1pemV9Ci0KLVxpdGVtIElmICRFJCBpcyBlbXB0eSB0aGVuIG5vIG1hdGNoaW5nIHJlc291cmNlIGNhbiBiZSBmb3VuZCwgdGhlIGFsZ29yaXRobSB0ZXJtaW5hdGVzIGFuZCBhbiBpbXBsZW1lbnRhdGlvbiBNVVNUIGdlbmVyYXRlIGEgXFdlYkFwcEV4Y1wgd2l0aCBhIG5vdCBmb3VuZCByZXNwb25zZSAoSFRUUCA0MDQgc3RhdHVzKSBhbmQgbm8gZW50aXR5LiBUaGUgZXhjZXB0aW9uIE1VU1QgYmUgcHJvY2Vzc2VkIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIFxyZWZ7bWV0aG9kX2V4Y30uCi0KLVxpdGVtIFNvcnQgJEUkIHVzaW5nIHRoZSBudW1iZXIgb2YgbGl0ZXJhbCBjaGFyYWN0ZXJzXGZvb3Rub3Rle0hlcmUsIGxpdGVyYWwgY2hhcmFjdGVycyBtZWFucyB0aG9zZSBub3QgcmVzdWx0aW5nIGZyb20gdGVtcGxhdGUgdmFyaWFibGUgc3Vic3RpdHV0aW9uLn0gaW4gZWFjaCBtZW1iZXIgYXMgdGhlIHByaW1hcnkga2V5IChkZXNjZW5kaW5nIG9yZGVyKSwgdGhlIG51bWJlciBvZiBjYXB0dXJpbmcgZ3JvdXBzIGFzIGEgc2Vjb25kYXJ5IGtleSAoZGVzY2VuZGluZyBvcmRlcikgYW5kIHRoZSBudW1iZXIgb2YgY2FwdHVyaW5nIGdyb3VwcyB3aXRoIG5vbi1kZWZhdWx0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGkuZS4gbm90IFxscShbXF57IH0vXSs/KVxycSkgYXMgdGhlIHRlcnRpYXJ5IGtleSAoZGVzY2VuZGluZyBvcmRlcikuCi0KLVxpdGVtIFNldCAkUl97XG1ib3h7bWF0Y2h9fSQgdG8gYmUgdGhlIGZpcnN0IG1lbWJlciBvZiAkRSQsIHNldCAkVSQgdG8gYmUgdGhlIHZhbHVlIG9mIHRoZSBmaW5hbCBjYXB0dXJpbmcgZ3JvdXAgb2YgJFJfe1xtYm94e21hdGNofX0kIHdoZW4gbWF0Y2hlZCBhZ2FpbnN0ICRVJCwgYW5kIGluc3RhbnRpYXRlIGFuIG9iamVjdCAkTyQgb2YgdGhlIGFzc29jaWF0ZWQgY2xhc3MuCi0KLVxlbmR7ZW51bWVyYXRlfQotCi1caXRlbSBcbGFiZWx7ZmluZF9vYmplY3R9IE9idGFpbiB0aGUgb2JqZWN0IHRoYXQgd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3QgYW5kIGEgc2V0IG9mIGNhbmRpZGF0ZSBtZXRob2RzOgotCi1cYmVnaW57ZW51bWVyYXRlfQotXGl0ZW0gXGxhYmVse2NoZWNrX251bGx9IElmICRVJCBpcyBudWxsIG9yIFxscS9ccnEsIHNldAotJCRNID0gXHtcbWJveHtyZXNvdXJjZSBtZXRob2RzIG9mIH0gTyBcbWJveHsgKGV4Y2x1ZGluZyBzdWIgcmVzb3VyY2UgbWV0aG9kcyl9XH0kJAotYW5kIGdvIHRvIHN0ZXAgXHJlZntmaW5kX21ldGhvZH0KLQotXGl0ZW0gU2V0ICRDPVxtYm94e2NsYXNzIG9mIH0gTywgRT1ce1x9JAotCi1caXRlbSBGb3IgY2xhc3MgJEMkIGFkZCByZWd1bGFyIGV4cHJlc3Npb25zIHRvICRFJCBmb3IgZWFjaCBzdWItcmVzb3VyY2UgbWV0aG9kIGFuZCBsb2NhdG9yIGFzIGZvbGxvd3M6Ci1cYmVnaW57ZW51bWVyYXRlfQotXGl0ZW0gXGxhYmVse3RfbWV0aG9kX2l0ZW1zfSBGb3IgZWFjaCBzdWItcmVzb3VyY2UgbWV0aG9kLCBhZGQgJFIoVF97XG1ib3h7bWV0aG9kfX0pJCB3aGVyZSAkVF97XG1ib3h7bWV0aG9kfX0kIGlzIHRoZSBVUkkgcGF0aCB0ZW1wbGF0ZSBvZiB0aGUgc3ViLXJlc291cmNlIG1ldGhvZC4KLVxpdGVtIEZvciBlYWNoIHN1Yi1yZXNvdXJjZSBsb2NhdG9yLCBhZGQgJFIoVF97XG1ib3h7bG9jYXRvcn19KSQgd2hlcmUgJFRfe1xtYm94e2xvY2F0b3J9fSQgaXMgdGhlICBVUkkgcGF0aCB0ZW1wbGF0ZSBvZiB0aGUgc3ViLXJlc291cmNlIGxvY2F0b3IuCi1cZW5ke2VudW1lcmF0ZX0KLQotXGl0ZW0gRmlsdGVyICRFJCBieSBtYXRjaGluZyBlYWNoIG1lbWJlciBhZ2FpbnN0ICRVJCBhcyBmb2xsb3dzOgotXGJlZ2lue2l0ZW1pemV9Ci1caXRlbSBSZW1vdmUgbWVtYmVycyB0aGF0IGRvIG5vdCBtYXRjaCAkVSQuCi1caXRlbSBSZW1vdmUgbWVtYmVycyBkZXJpdmVkIGZyb20gJFRfe1xtYm94e21ldGhvZH19JCAodGhvc2UgYWRkZWQgaW4gc3RlcCBccmVme3RfbWV0aG9kX2l0ZW1zfSkgZm9yIHdoaWNoIHRoZSBmaW5hbCBjYXB0dXJpbmcgZ3JvdXAgdmFsdWUgaXMgbmVpdGhlciBlbXB0eSBub3IgXGxxL1xycS4KLVxlbmR7aXRlbWl6ZX0KLQotXGl0ZW0gSWYgJEUkIGlzIGVtcHR5IHRoZW4gbm8gbWF0Y2hpbmcgcmVzb3VyY2UgY2FuIGJlIGZvdW5kLCB0aGUgYWxnb3JpdGhtIHRlcm1pbmF0ZXMgYW5kIGFuIGltcGxlbWVudGF0aW9uIE1VU1QgZ2VuZXJhdGUgYSBcV2ViQXBwRXhjXCB3aXRoIGEgbm90IGZvdW5kIHJlc3BvbnNlIChIVFRQIDQwNCBzdGF0dXMpIGFuZCBubyBlbnRpdHkuIFRoZSBleGNlcHRpb24gTVVTVCBiZSBwcm9jZXNzZWQgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gXHJlZnttZXRob2RfZXhjfS4KLQotXGl0ZW0gU29ydCAkRSQgdXNpbmcgdGhlIG51bWJlciBvZiBsaXRlcmFsIGNoYXJhY3RlcnMgaW4gZWFjaCBtZW1iZXIgYXMgdGhlIHByaW1hcnkga2V5IChkZXNjZW5kaW5nIG9yZGVyKSwgdGhlIG51bWJlciBvZiBjYXB0dXJpbmcgZ3JvdXBzIGFzIGEgc2Vjb25kYXJ5IGtleSAoZGVzY2VuZGluZyBvcmRlciksIHRoZSBudW1iZXIgb2YgY2FwdHVyaW5nIGdyb3VwcyB3aXRoIG5vbi1kZWZhdWx0IHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGkuZS4gbm90IFxscShbXF57IH0vXSs/KVxycSkgYXMgdGhlIHRlcnRpYXJ5IGtleSAoZGVzY2VuZGluZyBvcmRlciksIGFuZCB0aGUgc291cmNlIG9mIGVhY2ggbWVtYmVyIGFzIHF1YXRlcm5hcnkga2V5IHNvcnRpbmcgdGhvc2UgZGVyaXZlZCBmcm9tICRUX3tcbWJveHttZXRob2R9fSQgYWhlYWQgb2YgdGhvc2UgZGVyaXZlZCBmcm9tICRUX3tcbWJveHtsb2NhdG9yfX0kLgotCi1caXRlbSBTZXQgJFJfe1xtYm94e21hdGNofX0kIHRvIGJlIHRoZSBmaXJzdCBtZW1iZXIgb2YgJEUkCi0KLVxpdGVtIElmICRSX3tcbWJveHttYXRjaH19JCB3YXMgZGVyaXZlZCBmcm9tICRUX3tcbWJveHttZXRob2R9fSQsIHRoZW4gc2V0IAotJCRNID0gXHtcbWJveHtzdWJyZXNvdXJjZSBtZXRob2RzIG9mIH1PIFxtYm94eyB3aGVyZSB9IFIoVF97XG1ib3h7bWV0aG9kfX0pID0gUl97XG1ib3h7bWF0Y2h9fVx9JCQgYW5kIGdvIHRvIHN0ZXAgXHJlZntmaW5kX21ldGhvZH0uCi0KLVxpdGVtIFNldCAkVSQgdG8gYmUgdGhlIHZhbHVlIG9mIHRoZSBmaW5hbCBjYXB0dXJpbmcgZ3JvdXAgb2YgJFIoVF97XG1ib3h7bWF0Y2h9fSkkIHdoZW4gbWF0Y2hlZCBhZ2FpbnN0ICRVJCwgIGludm9rZSB0aGUgc3ViLXJlc291cmNlIGxvY2F0b3IgbWV0aG9kIG9mICRPJCBhbmQgc2V0ICRPJCB0byB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB0aGF0IG1ldGhvZC4KLQotXGl0ZW0gR28gdG8gc3RlcCBccmVme2NoZWNrX251bGx9LgotCi1cZW5ke2VudW1lcmF0ZX0KLQotXGl0ZW0gXGxhYmVse2ZpbmRfbWV0aG9kfSBJZGVudGlmeSB0aGUgbWV0aG9kIHRoYXQgd2lsbCBoYW5kbGUgdGhlIHJlcXVlc3Q6Ci0KLVxiZWdpbntlbnVtZXJhdGV9Ci1caXRlbSBcbGFiZWx7ZmlsdGVyX21ldGhvZHN9IEZpbHRlciAkTSQgYnkgcmVtb3ZpbmcgbWVtYmVycyB0aGF0IGRvIG5vdCBtZWV0IHRoZSBmb2xsb3dpbmcgY3JpdGVyaWE6Ci1cYmVnaW57aXRlbWl6ZX0KLVxpdGVtIFRoZSByZXF1ZXN0IG1ldGhvZCBpcyBzdXBwb3J0ZWQuIElmIG5vIG1ldGhvZHMgc3VwcG9ydCB0aGUgcmVxdWVzdCBtZXRob2QgYW4gaW1wbGVtZW50YXRpb24gTVVTVCBnZW5lcmF0ZSBhIFxXZWJBcHBFeGNcIHdpdGggYSBtZXRob2Qgbm90IGFsbG93ZWQgcmVzcG9uc2UgKEhUVFAgNDA1IHN0YXR1cykgYW5kIG5vIGVudGl0eS4gVGhlIGV4Y2VwdGlvbiBNVVNUIGJlIHByb2Nlc3NlZCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiBccmVme21ldGhvZF9leGN9LiBOb3RlIHRoZSBhZGRpdGlvbmFsIHN1cHBvcnQgZm9yIFxjb2Rle0hFQUR9IGFuZCBcY29kZXtPUFRJT05TfSBkZXNjcmliZWQgaW4gc2VjdGlvbiBccmVme2hlYWRfYW5kX29wdGlvbnN9LgotXGl0ZW0gVGhlIG1lZGlhIHR5cGUgb2YgdGhlIHJlcXVlc3QgZW50aXR5IGJvZHkgKGlmIGFueSkgaXMgYSBzdXBwb3J0ZWQgaW5wdXQgZGF0YSBmb3JtYXQgKHNlZSBzZWN0aW9uIFxyZWZ7ZGVjbGFyaW5nX21ldGhvZF9jYXBhYmlsaXRpZXN9KS4gSWYgbm8gbWV0aG9kcyBzdXBwb3J0IHRoZSBtZWRpYSB0eXBlIG9mIHRoZSByZXF1ZXN0IGVudGl0eSBib2R5IGFuIGltcGxlbWVudGF0aW9uIE1VU1QgZ2VuZXJhdGUgYSBcV2ViQXBwRXhjXCB3aXRoIGFuIHVuc3VwcG9ydGVkIG1lZGlhIHR5cGUgcmVzcG9uc2UgKEhUVFAgNDE1IHN0YXR1cykgYW5kIG5vIGVudGl0eS4gVGhlIGV4Y2VwdGlvbiBNVVNUIGJlIHByb2Nlc3NlZCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiBccmVme21ldGhvZF9leGN9LgotXGl0ZW0gQXQgbGVhc3Qgb25lIG9mIHRoZSBhY2NlcHRhYmxlIHJlc3BvbnNlIGVudGl0eSBib2R5IG1lZGlhIHR5cGVzIGlzIGEgc3VwcG9ydGVkIG91dHB1dCBkYXRhIGZvcm1hdCAoc2VlIHNlY3Rpb24gXHJlZntkZWNsYXJpbmdfbWV0aG9kX2NhcGFiaWxpdGllc30pLiBJZiBubyBtZXRob2RzIHN1cHBvcnQgb25lIG9mIHRoZSBhY2NlcHRhYmxlIHJlc3BvbnNlIGVudGl0eSBib2R5IG1lZGlhIHR5cGVzIGFuIGltcGxlbWVudGF0aW9uIE1VU1QgZ2VuZXJhdGUgYSBcV2ViQXBwRXhjXCB3aXRoIGEgbm90IGFjY2VwdGFibGUgcmVzcG9uc2UgKEhUVFAgNDA2IHN0YXR1cykgYW5kIG5vIGVudGl0eS4gVGhlIGV4Y2VwdGlvbiBNVVNUIGJlIHByb2Nlc3NlZCBhcyBkZXNjcmliZWQgaW4gc2VjdGlvbiBccmVme21ldGhvZF9leGN9LgotXGVuZHtpdGVtaXplfSAKLVxpdGVtIFNvcnQgJE0kIGluIGRlc2NlbmRpbmcgb3JkZXIgYXMgZm9sbG93czoKLVxiZWdpbntpdGVtaXplfQotXGl0ZW0gVGhlIHByaW1hcnkga2V5IGlzIHRoZSBtZWRpYSB0eXBlIG9mIGlucHV0IGRhdGEuIE1ldGhvZHMgd2hvc2UgXENvbnN1bWVzXCB2YWx1ZSBpcyB0aGUgYmVzdCBtYXRjaCBmb3IgdGhlIG1lZGlhIHR5cGUgb2YgdGhlIHJlcXVlc3QgYXJlIHNvcnRlZCBmaXJzdC4KLVxpdGVtIFRoZSBzZWNvbmRhcnkga2V5IGlzIHRoZSBcUHJvZHVjZXNcIHZhbHVlLiBNZXRob2RzIHdob3NlIHZhbHVlIG9mIFxQcm9kdWNlc1wgYmVzdCBtYXRjaGVzIHRoZSB2YWx1ZSBvZiB0aGUgcmVxdWVzdCBhY2NlcHQgaGVhZGVyIGFyZSBzb3J0ZWQgZmlyc3QuCi1cZW5ke2l0ZW1pemV9Ci0KLURldGVybWluaW5nIHRoZSBiZXN0IG1hdGNoaW5nIG1lZGlhIHR5cGVzIGZvbGxvd3MgdGhlIGdlbmVyYWwgcnVsZTogJFxtYm94e24vbX0gPiBcbWJveHtuLyp9ID4gXG1ib3h7Ki8qfSQsIGkuZS4gYSBtZXRob2QgdGhhdCBleHBsaWNpdGx5IGNvbnN1bWVzIHRoZSByZXF1ZXN0IG1lZGlhIHR5cGUgb3IgcHJvZHVjZXMgb25lIG9mIHRoZSByZXF1ZXN0ZWQgbWVkaWEgdHlwZXMgaXMgc29ydGVkIGJlZm9yZSBhIG1ldGhvZCB0aGF0IGNvbnN1bWVzIG9yIHByb2R1Y2VzICovKi4gUXVhbGl0eSBwYXJhbWV0ZXIgdmFsdWVzIGluIHRoZSBhY2NlcHQgaGVhZGVyIGFyZSBhbHNvIGNvbnNpZGVyZWQgc3VjaCB0aGF0IG1ldGhvZHMgdGhhdCBwcm9kdWNlIG1lZGlhIHR5cGVzIHdpdGggYSBoaWdoZXIgYWNjZXB0YWJsZSBxLXZhbHVlIGFyZSBzb3J0ZWQgYWhlYWQgb2YgdGhvc2Ugd2l0aCBhIGxvd2VyIGFjY2VwdGFibGUgcS12YWx1ZSAoaS5lLiBuL207cT0xLjAgJD4kIG4vbTtxPTAuNykgLSBzZWUgc2VjdGlvbiAxNC4xIG9mIFxjaXRle2h0dHAxMX0gZm9yIG1vcmUgZGV0YWlscy4KLQotXGl0ZW0gXGxhYmVse2Rpc3BhdGNoX21ldGhvZH0gVGhlIHJlcXVlc3QgaXMgZGlzcGF0Y2hlZCB0byB0aGUgZmlyc3QgSmF2YSBtZXRob2QgaW4gdGhlIHNldFxmb290bm90ZXtTdGVwIFxyZWZ7ZmlsdGVyX21ldGhvZHN9IGVuc3VyZXMgdGhlIHNldCBjb250YWlucyBhdCBsZWFzdCBvbmUgbWVtYmVyLn0uCi1cZW5ke2VudW1lcmF0ZX0KLQotXGVuZHtlbnVtZXJhdGV9Ci0KLVxzdWJzZWN0aW9ue0NvbnZlcnRpbmcgVVJJIFRlbXBsYXRlcyB0byBSZWd1bGFyIEV4cHJlc3Npb25zfQotXGxhYmVse3RlbXBsYXRlX3RvX3JlZ2V4fQotCi1UaGUgZnVuY3Rpb24gJFIoQSkkIGNvbnZlcnRzIGEgVVJJIHBhdGggdGVtcGxhdGUgYW5ub3RhdGlvbiAkQSQgaW50byBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBhcyBmb2xsb3dzOgotXGJlZ2lue2VudW1lcmF0ZX0KLVxpdGVtIFVSSSBlbmNvZGUgdGhlIHRlbXBsYXRlLCBpZ25vcmluZyBVUkkgdGVtcGxhdGUgdmFyaWFibGUgc3BlY2lmaWNhdGlvbnMuCi1caXRlbSBFc2NhcGUgYW55IHJlZ3VsYXIgZXhwcmVzc2lvbiBjaGFyYWN0ZXJzIGluIHRoZSBVUkkgdGVtcGxhdGUsIGFnYWluIGlnbm9yaW5nIFVSSSB0ZW1wbGF0ZSB2YXJpYWJsZSBzcGVjaWZpY2F0aW9ucy4KLVxpdGVtIFJlcGxhY2UgZWFjaCBVUkkgdGVtcGxhdGUgdmFyaWFibGUgd2l0aCBhIGNhcHR1cmluZyBncm91cCBjb250YWluaW5nIHRoZSBzcGVjaWZpZWQgcmVndWxhciBleHByZXNzaW9uIG9yIFxscShbXF57IH0vXSs/KVxycVwgaWYgbm8gcmVndWxhciBleHByZXNzaW9uIGlzIHNwZWNpZmllZC4KLVxpdGVtIElmIHRoZSByZXN1bHRpbmcgc3RyaW5nIGVuZHMgd2l0aCBcbHEvXHJxXCB0aGVuIHJlbW92ZSB0aGUgZmluYWwgY2hhcmFjdGVyLgotXGl0ZW0gQXBwZW5kIFxscSgvLiopP1xycVwgdG8gdGhlIHJlc3VsdC4KLVxlbmR7ZW51bWVyYXRlfQotCi1Ob3RlIHRoYXQgdGhlIGFib3ZlIHJlbmRlcnMgdGhlIG5hbWUgb2YgdGVtcGxhdGUgdmFyaWFibGVzIGlycmVsZXZhbnQgZm9yIHRlbXBsYXRlIG1hdGNoaW5nIHB1cnBvc2VzLiBIb3dldmVyLCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBuZWVkIHRvIHJldGFpbiB0ZW1wbGF0ZSB2YXJpYWJsZSBuYW1lcyBpbiBvcmRlciB0byBmYWNpbGl0YXRlIHRoZSBleHRyYWN0aW9uIG9mIHRlbXBsYXRlIHZhcmlhYmxlIHZhbHVlcyB2aWEgXFBhdGhQYXJhbVwgb3IgXFVyaUluZm9cY29kZXsuZ2V0UGF0aFBhcmFtZXRlcnN9LgotCi1cc2VjdGlvbntEZXRlcm1pbmluZyB0aGUgTWVkaWFUeXBlIG9mIFJlc3BvbnNlc30KLVxsYWJlbHtkZXRlcm1pbmVfcmVzcG9uc2VfdHlwZX0KLQotSW4gbWFueSBjYXNlcyBpdCBpcyBub3QgcG9zc2libGUgdG8gc3RhdGljYWxseSBkZXRlcm1pbmUgdGhlIG1lZGlhIHR5cGUgb2YgYSByZXNwb25zZS4gVGhlIGZvbGxvd2luZyBhbGdvcml0aG0gaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHJlc3BvbnNlIG1lZGlhIHR5cGUsICRNX3tcbWJveHtzZWxlY3RlZH19JCwgYXQgcnVuIHRpbWU6Ci0KLVxiZWdpbntlbnVtZXJhdGV9Ci1caXRlbSBJZiB0aGUgbWV0aG9kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgXFJlc3BvbnNlXCB3aG9zZSBtZXRhZGF0YSBpbmNsdWRlcyB0aGUgcmVzcG9uc2UgbWVkaWEgdHlwZSAoJE1fe1xtYm94e3NwZWNpZmllZH19JCkgdGhlbiBzZXQgJE1fe1xtYm94e3NlbGVjdGVkfX0gPSBNX3tcbWJveHtzcGVjaWZpZWR9fSQsIGZpbmlzaC4KLVxpdGVtIEdhdGhlciB0aGUgc2V0IG9mIHByb2R1Y2libGUgbWVkaWEgdHlwZXMgJFAkOgotXGJlZ2lue2l0ZW1pemV9Ci1caXRlbSBJZiB0aGUgbWV0aG9kIGlzIGFubm90YXRlZCB3aXRoIFxQcm9kdWNlcywgc2V0ICRQID0gXHsgVihcbWJveHttZXRob2R9KSBcfSQgd2hlcmUgJFYodCkkIHJlcHJlc2VudHMgdGhlIHZhbHVlcyBvZiBcUHJvZHVjZXNcIG9uIHRoZSBzcGVjaWZpZWQgdGFyZ2V0ICR0JC4KLVxpdGVtIEVsc2UgaWYgdGhlIGNsYXNzIGlzIGFubm90YXRlZCB3aXRoIFxQcm9kdWNlcywgc2V0ICRQID0gXHsgVihcbWJveHtjbGFzc30pIFx9JC4KLVxpdGVtIEVsc2Ugc2V0ICRQID0gXHsgVihcbWJveHt3cml0ZXJzfSkgXH0kIHdoZXJlIFxscSB3cml0ZXJzXHJxXCBpcyB0aGUgc2V0IG9mIFxNc2dXcml0ZVwgdGhhdCBzdXBwb3J0IHRoZSBjbGFzcyBvZiB0aGUgcmV0dXJuZWQgZW50aXR5IG9iamVjdC4KLVxlbmR7aXRlbWl6ZX0KLQotXGl0ZW0gSWYgJFAgPSBce1x9JCwgc2V0ICRQID0gXHtcbWJveHtcbHEqLypccnF9XH0kCi0KLVxpdGVtIE9idGFpbiB0aGUgYWNjZXB0YWJsZSBtZWRpYSB0eXBlcyAkQSQuIElmICRBID0gXHtcfSQsIHNldCAkQSA9IFx7XG1ib3h7XGxxKi8qXHJxfVx9JAotCi1caXRlbSBTZXQgJE09XHtcfSQuIEZvciBlYWNoIG1lbWJlciBvZiAkQSwgYSQ6Ci1cYmVnaW57aXRlbWl6ZX0KLVxpdGVtIEZvciBlYWNoIG1lbWJlciBvZiAkUCwgcCQ6Ci1cYmVnaW57aXRlbWl6ZX0KLVxpdGVtIElmICRhJCBpcyBjb21wYXRpYmxlIHdpdGggJHAkLCBhZGQgJFMoYSxwKSQgdG8gJE0kLCB3aGVyZSB0aGUgZnVuY3Rpb24gJFMkIHJldHVybnMgdGhlIG1vc3Qgc3BlY2lmaWMgbWVkaWEgdHlwZSBvZiB0aGUgcGFpciB3aXRoIHRoZSBxLXZhbHVlIG9mICRhJC4KLVxlbmR7aXRlbWl6ZX0KLVxlbmR7aXRlbWl6ZX0KLQotXGl0ZW0gSWYgJE0gPSBce1x9JCB0aGVuIGdlbmVyYXRlIGEgXFdlYkFwcEV4Y1wgd2l0aCBhIG5vdCBhY2NlcHRhYmxlIHJlc3BvbnNlIChIVFRQIDQwNiBzdGF0dXMpIGFuZCBubyBlbnRpdHkuIFRoZSBleGNlcHRpb24gTVVTVCBiZSBwcm9jZXNzZWQgYXMgZGVzY3JpYmVkIGluIHNlY3Rpb24gXHJlZnttZXRob2RfZXhjfS4gRmluaXNoLgotCi1caXRlbSBTb3J0ICRNJCBpbiBkZXNjZW5kaW5nIG9yZGVyLCB3aXRoIGEgcHJpbWFyeSBrZXkgb2Ygc3BlY2lmaWNpdHkgKCRcbWJveHtuL219ID4gXG1ib3h7bi8qfSA+IFxtYm94eyovKn0kKSAgYW5kIHNlY29uZGFyeSBrZXkgb2YgcS12YWx1ZS4KLQotXGl0ZW0gRm9yIGVhY2ggbWVtYmVyIG9mICRNLCBtJDoKLVxiZWdpbntpdGVtaXplfQotXGl0ZW0gSWYgJG0kIGlzIGEgY29uY3JldGUgdHlwZSwgc2V0ICRNX3tcbWJveHtzZWxlY3RlZH19ID0gbSQsIGZpbmlzaC4KLVxlbmR7aXRlbWl6ZX0KLQotXGl0ZW0gSWYgJE0kIGNvbnRhaW5zIFxscSovKlxycVwgb3IgXGxxIGFwcGxpY2F0aW9uLypccnEsIHNldCAkTV97XG1ib3h7c2VsZWN0ZWR9fSA9IFxtYm94e1xscSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1ccnF9JCwgZmluaXNoLgotCi1caXRlbSBHZW5lcmF0ZSBhIFxXZWJBcHBFeGNcIHdpdGggYSBub3QgYWNjZXB0YWJsZSByZXNwb25zZSAoSFRUUCA0MDYgc3RhdHVzKSBhbmQgbm8gZW50aXR5LiBUaGUgZXhjZXB0aW9uIE1VU1QgYmUgcHJvY2Vzc2VkIGFzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIFxyZWZ7bWV0aG9kX2V4Y30uIEZpbmlzaC4KLVxlbmR7ZW51bWVyYXRlfQotCi1Ob3RlIHRoYXQgdGhlIGFib3ZlIHJlbmRlcnMgYSByZXNwb25zZSB3aXRoIGEgZGVmYXVsdCBtZWRpYSB0eXBlIG9mIFxscSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1ccnFcIHdoZW4gYSBjb25jcmV0ZSB0eXBlIGNhbm5vdCBiZSBkZXRlcm1pbmVkLiBJdCBpcyBSRUNPTU1FTkRFRCB0aGF0IFxNc2dXcml0ZVwgaW1wbGVtZW50YXRpb25zIHNwZWNpZnkgYXQgbGVhc3Qgb25lIGNvbmNyZXRlIHR5cGUgdmlhIFxQcm9kdWNlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGVjL2NoYXB0ZXJzL3RpdGxlcGFnZS50ZXggYi9zcGVjL2NoYXB0ZXJzL3RpdGxlcGFnZS50ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzNjBjZDUuLjAwMDAwMDAKLS0tIGEvc3BlYy9jaGFwdGVycy90aXRsZXBhZ2UudGV4CisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotXGJlZ2lue3RpdGxlcGFnZX0KLVxyYWdnZWRsZWZ0Ci0KLVx2c3BhY2UqezYwcHR9Ci0KLXtcSHVnZQotXHRleHRzZntKQVgtUlM6IEphdmFcdGV4dHRyYWRlbWFya1wgQVBJIGZvciBSRVNUZnVsXFxcdnNwYWNlezEwcHR9Ci0gV2ViIFNlcnZpY2VzfX0KLQotXHZzcGFjZXsyMHB0fQotCi17Ci0lXExhcmdlXHRleHRpdHtWZXJzaW9uIDEuMVxcCi1cTGFyZ2VcdGV4dGl0e1ZlcnNpb24gMS4xIERyYWZ0XFwKLVx0b2RheX0KLX0KLQotXHZzcGFjZXs0MHB0fQotCi17XGxhcmdlIEVkaXRvcnM6XFwKLU1hcmNcIEhhZGxleVxcCi1QYXVsXCBTYW5kb3pcXAotXHZzcGFjZXsxMHB0fUNvbW1lbnRzIHRvOiB1c2Vyc0Bqc3IzMTEuZGV2LmphdmEubmV0Ci19Ci0KLVx2c3BhY2V7ODBwdH0KLQote1xzbWFsbFx0ZXh0aXR7U3VuIE1pY3Jvc3lzdGVtcywgSW5jLlxcCi00MTUwIE5ldHdvcmsgQ2lyY2xlLCBTYW50YSBDbGFyYSwgQ0EgOTUwNTQgVVNBLlxcCi0xODAsIEF2ZW51ZSBkZSBMJ0V1cm9wZSwgMzgzMzAgTW9udGJvbm5vdCBTYWludCBNYXJ0aW4sIEZyYW5jZX0KLX0KLVxlbmR7dGl0bGVwYWdlfSAKZGlmZiAtLWdpdCBhL3NwZWMvcmVmZXJlbmNlcy5iaWIgYi9zcGVjL3JlZmVyZW5jZXMuYmliCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDI1NzAzLi4wMDAwMDAwCi0tLSBhL3NwZWMvcmVmZXJlbmNlcy5iaWIKKysrIC9kZXYvbnVsbApAQCAtMSwzOTAgKzAsMCBAQAotJSUgVGhpcyBCaWJUZVggYmlibGlvZ3JhcGh5IGZpbGUgd2FzIGNyZWF0ZWQgdXNpbmcgQmliRGVzay4KLSUlIGh0dHA6Ly9iaWJkZXNrLnNvdXJjZWZvcmdlLm5ldC8KLQotCi0lJSBDcmVhdGVkIGZvciBNYXJjIEhhZGxleSBhdCAyMDA4LTEyLTA4IDE2OjM3OjE0IC0wNTAwIAotCi0KLSUlIFNhdmVkIHdpdGggc3RyaW5nIGVuY29kaW5nIFVuaWNvZGUgKFVURi04KSAKLQotCi0KLUB0ZWNocmVwb3J0e3htbDEwLAotCUF1dGhvciA9IHtUaW0gQnJheSBhbmQgSmVhbiBQYW9saSBhbmQgQy4gTS4gU3BlcmJlcmctTWNRdWVlbiBhbmQgRXZlIE1hbGVyfSwKLQlJbnN0aXR1dGlvbiA9IHtXM0N9LAotCU1vbnRoID0ge09jdG9iZXJ9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLXhtbC0yMDAwMTAwNn0sCi0JVGl0bGUgPSB7RXh0ZW5zaWJsZSB7TWFya3VwfSB7TGFuZ3VhZ2V9ICh7WE1MfSkgMS4wICh7U2Vjb25kfSB7RWRpdGlvbn0pfSwKLQlUeXBlID0ge3tSZWNvbW1lbmRhdGlvbn19LAotCVllYXIgPSAyMDAwfQotCi1AdGVjaHJlcG9ydHtzb2FwMTEsCi0JQXV0aG9yID0ge0RvbiBCb3ggYW5kIERhdmlkIEVobmVidXNrZSBhbmQgR29wYWwgS2FraXZheWEgYW5kIEFuZHJldyBMYXltYW4gYW5kIE5vYWggTWVuZGVsc29obiBhbmQgSGVucmlrIE5pZWxzZW4gYW5kIFNhdGlzaCBUaGF0dGUgYW5kIERhdmUgV2luZXJ9LAotCUluc3RpdHV0aW9uID0ge1czQ30sCi0JTW9udGggPSB7TWF5fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9TT0FQL30sCi0JVGl0bGUgPSB7U2ltcGxlIHtPYmplY3R9IHtBY2Nlc3N9IHtQcm90b2NvbH0gKHtTT0FQfSkgMS4xfSwKLQlUeXBlID0ge3tOb3RlfX0sCi0JWWVhciA9IDIwMDB9Ci0KLUB0ZWNocmVwb3J0e3NvYXAxMnAxLAotCUF1dGhvciA9IHtNYXJ0aW4gR3VkZ2luIGFuZCBNYXJjIEhhZGxleSBhbmQgTm9haCBNZW5kZWxzb2huIGFuZCBKZWFuLUphY3F1ZXMgTW9yZWF1IGFuZCBIZW5yaWsge0ZyeXN0eWsgTmllbHNlbn19LAotCUluc3RpdHV0aW9uID0ge1czQ30sCi0JTW9udGggPSB7SnVuZX0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMy9SRUMtc29hcDEyLXBhcnQxLTIwMDMwNjI0fSwKLQlUaXRsZSA9IHt7U09BUH0ge1ZlcnNpb259IDEuMiB7UGFydH0gMToge01lc3NhZ2luZ30ge0ZyYW1ld29ya319LAotCVR5cGUgPSB7e1JlY29tbWVuZGF0aW9ufX0sCi0JWWVhciA9IDIwMDN9Ci0KLUB0ZWNocmVwb3J0e3NvYXAxMnAyLAotCUF1dGhvciA9IHtNYXJ0aW4gR3VkZ2luIGFuZCBNYXJjIEhhZGxleSBhbmQgTm9haCBNZW5kZWxzb2huIGFuZCBKZWFuLUphY3F1ZXMgTW9yZWF1IGFuZCBIZW5yaWsge0ZyeXN0eWsgTmllbHNlbn19LAotCUluc3RpdHV0aW9uID0ge1czQ30sCi0JTW9udGggPSB7SnVuZX0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMy9SRUMtc29hcDEyLXBhcnQyLTIwMDMwNjI0fSwKLQlUaXRsZSA9IHt7U09BUH0ge1ZlcnNpb259IDEuMiB7UGFydH0gMjoge0FkanVuY3RzfX0sCi0JVHlwZSA9IHt7UmVjb21tZW5kYXRpb259fSwKLQlZZWFyID0gMjAwM30KLQotQHRlY2hyZXBvcnR7d3NkbDExLAotCUF1dGhvciA9IHtFcmlrIENocmlzdGVuc2VuIGFuZCBGcmFuY2lzY28gQ3VyYmVyYSBhbmQgR3JlZyBNZXJlZGl0aCBhbmQgU2Fuaml2YSBXZWVyYXdhcmFuYX0sCi0JSW5zdGl0dXRpb24gPSB7VzNDfSwKLQlNb250aCA9IHtNYXJjaH0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9OT1RFLXdzZGwtMjAwMTAzMTV9LAotCVRpdGxlID0ge1dlYiB7U2VydmljZXN9IHtEZXNjcmlwdGlvbn0ge0xhbmd1YWdlfSAoe1dTREx9KSAxLjF9LAotCVR5cGUgPSB7e05vdGV9fSwKLQlZZWFyID0gMjAwMX0KLQotQHRlY2hyZXBvcnR7amF4cnBjMTAsCi0JQXV0aG9yID0ge1JhaHVsIFNoYXJtYX0sCi0JSW5zdGl0dXRpb24gPSB7SkNQfSwKLQlNb250aCA9IHtKdW5lfSwKLQlOb3RlID0ge1NlZSBodHRwOi8vamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTEwMX0sCi0JVGl0bGUgPSB7VGhlIHtKYXZhfSB7QVBJfSBmb3Ige1hNTH0ge0Jhc2VkfSB7UlBDfSAoe0pBWC1SUEN9KSAxLjB9LAotCVR5cGUgPSB7e0pTUn19LAotCVllYXIgPSAyMDAyfQotCi1AdGVjaHJlcG9ydHtqYXhycGMxMSwKLQlBdXRob3IgPSB7Um9iZXJ0byBDaGlubmljaX0sCi0JSW5zdGl0dXRpb24gPSB7SkNQfSwKLQlNb250aCA9IHtBdWd1c3R9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MTAxfSwKLQlUaXRsZSA9IHtUaGUge0phdmF9IHtBUEl9IGZvciB7WE1MfSB7QmFzZWR9IHtSUEN9ICh7SkFYLVJQQ30pIDEuMX0sCi0JVHlwZSA9IHt7TWFpbnRlbmFuY2UgSlNSfX0sCi0JWWVhciA9IDIwMDN9Ci0KLUB0ZWNocmVwb3J0e2pheGIxMCwKLQlBdXRob3IgPSB7Sm9zZXBoIEZpYWxsaSBhbmQgU2VraGFyIFZhampoYWxhfSwKLQlJbnN0aXR1dGlvbiA9IHtKQ1B9LAotCU1vbnRoID0ge0phbnVhcnl9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MzF9LAotCVRpdGxlID0ge1RoZSB7SmF2YX0ge0FyY2hpdGVjdHVyZX0gZm9yIHtYTUx9IHtCaW5kaW5nfSAoe0pBWEJ9KX0sCi0JVHlwZSA9IHt7SlNSfX0sCi0JWWVhciA9IDIwMDN9Ci0KLUB0ZWNocmVwb3J0e2pheGIyMCwKLQlBdXRob3IgPSB7Sm9zZXBoIEZpYWxsaSBhbmQgU2VraGFyIFZhampoYWxhfSwKLQlJbnN0aXR1dGlvbiA9IHtKQ1B9LAotCU1vbnRoID0ge0F1Z3VzdH0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0yMjJ9LAotCVRpdGxlID0ge1RoZSB7SmF2YX0ge0FyY2hpdGVjdHVyZX0gZm9yIHtYTUx9IHtCaW5kaW5nfSAoe0pBWEJ9KSAyLjB9LAotCVR5cGUgPSB7e0pTUn19LAotCVllYXIgPSAyMDAzfQotCi1AdGVjaHJlcG9ydHt3c2RsMjBwMSwKLQlBdXRob3IgPSB7Um9iZXJ0byBDaGlubmljaSBhbmQgTWFydGluIEd1ZGdpbiBhbmQgSmVhbi1KYWNxdWVzIE1vcmVhdSBhbmQgSmVmZnJleSBTY2hsaW1tZXIgYW5kIFNhbmppdmEgV2VlcmF3YXJhbmF9LAotCUluc3RpdHV0aW9uID0ge1czQ30sCi0JTW9udGggPSB7QXVndXN0fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1dELXdzZGwyMC0yMDA0MDgwM30sCi0JVGl0bGUgPSB7V2ViIHtTZXJ2aWNlc30ge0Rlc2NyaXB0aW9ufSB7TGFuZ3VhZ2V9ICh7V1NETH0pIHtWZXJzaW9ufSAyLjAge1BhcnR9IDE6IHtDb3JlfSB7TGFuZ3VhZ2V9IH0sCi0JVHlwZSA9IHt7V29ya2luZyBEcmFmdH19LAotCVllYXIgPSAyMDA0fQotCi1AdGVjaHJlcG9ydHt3c2RsMjBwMiwKLQlBdXRob3IgPSB7TWFydGluIEd1ZGdpbiBhbmQgQW15IExld2lzIGFuZCBKZWZmcmV5IFNjaGxpbW1lcn0sCi0JSW5zdGl0dXRpb24gPSB7VzNDfSwKLQlNb250aCA9IHtBdWd1c3R9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDQvV0Qtd3NkbDIwLWV4dGVuc2lvbnMtMjAwNDA4MDN9LAotCVRpdGxlID0ge1dlYiB7U2VydmljZXN9IHtEZXNjcmlwdGlvbn0ge0xhbmd1YWdlfSAoe1dTREx9KSB7VmVyc2lvbn0gMi4wIHtQYXJ0fSAyOiB7UHJlZGVmaW5lZH0ge0V4dGVuc2lvbnN9fSwKLQlUeXBlID0ge3tXb3JraW5nIERyYWZ0fX0sCi0JWWVhciA9IDIwMDR9Ci0KLUB0ZWNocmVwb3J0e3dzZGwyMHAzLAotCUF1dGhvciA9IHtIdWdvIEhhYXMgYW5kIFBoaWxpcHBlIExlIEhcJ2VnYXJldCBhbmQgSmVhbi1KYWNxdWVzIE1vcmVhdSBhbmQgRGF2aWQgT3JjaGFyZCBhbmQgSmVmZnJleSBTY2hsaW1tZXIgYW5kIFNhbmppdmEgV2VlcmF3YXJhbmF9LAotCUluc3RpdHV0aW9uID0ge1czQ30sCi0JTW9udGggPSB7QXVndXN0fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA0L1dELXdzZGwyMC1iaW5kaW5ncy0yMDA0MDgwM30sCi0JVGl0bGUgPSB7V2ViIHtTZXJ2aWNlc30ge0Rlc2NyaXB0aW9ufSB7TGFuZ3VhZ2V9ICh7V1NETH0pIHtWZXJzaW9ufSAyLjAge1BhcnR9IDM6IHtCaW5kaW5nc30gfSwKLQlUeXBlID0ge3tXb3JraW5nIERyYWZ0fX0sCi0JWWVhciA9IDIwMDR9Ci0KLUB0ZWNocmVwb3J0e3N0YXgsCi0JQXV0aG9yID0ge0NocmlzdG9waGVyIEZyeX0sCi0JSW5zdGl0dXRpb24gPSB7SkNQfSwKLQlNb250aCA9IHtNYXJjaH0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xNzN9LAotCVRpdGxlID0ge1N0cmVhbWluZyB7QVBJfSBmb3Ige1hNTH0gKFN0QVgpfSwKLQlUeXBlID0ge3tKU1J9fSwKLQlZZWFyID0gMjAwM30KLQotQHRlY2hyZXBvcnR7d3NpYnAxMCwKLQlBdXRob3IgPSB7S2VpdGggQmFsbGluZ2VyIGFuZCBEYXZpZCBFaG5lYnVza2UgYW5kIE1hcnRpbiBHdWRnaW4gYW5kIE1hcmsgTm90dGluZ2hhbSBhbmQgUHJhc2FkIFllbmRsdXJpfSwKLQlJbnN0aXR1dGlvbiA9IHtXUy1JfSwKLQlNb250aCA9IHtBcHJpbH0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL3d3dy53cy1pLm9yZy9Qcm9maWxlcy9CYXNpY1Byb2ZpbGUtMS4wLTIwMDQtMDQtMTYuaHRtbH0sCi0JVGl0bGUgPSB7QmFzaWMge1Byb2ZpbGV9IHtWZXJzaW9ufSAxLjB9LAotCVR5cGUgPSB7e0ZpbmFsIE1hdGVyaWFsfX0sCi0JWWVhciA9IDIwMDR9Ci0KLUB0ZWNocmVwb3J0e3dzaWJwMTEsCi0JQXV0aG9yID0ge0tlaXRoIEJhbGxpbmdlciBhbmQgRGF2aWQgRWhuZWJ1c2tlIGFuZCBDaHJpcyBGZXJyaXMgYW5kIE1hcnRpbiBHdWRnaW4gYW5kIENhbnlhbmcgS2V2aW4gTGl1IGFuZCBNYXJrIE5vdHRpbmdoYW0gYW5kIEpvcmdlbiBUaGVsaW4gYW5kIFByYXNhZCBZZW5kbHVyaX0sCi0JSW5zdGl0dXRpb24gPSB7V1MtSX0sCi0JTW9udGggPSB7QXVndXN0fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3LndzLWkub3JnL1Byb2ZpbGVzL0Jhc2ljUHJvZmlsZS0xLjEtMjAwNC0wOC0yNC5odG1sfSwKLQlUaXRsZSA9IHtCYXNpYyB7UHJvZmlsZX0ge1ZlcnNpb259IDEuMX0sCi0JVHlwZSA9IHt7RmluYWwgTWF0ZXJpYWx9fSwKLQlZZWFyID0gMjAwNH0KLQotQHRlY2hyZXBvcnR7d3NpYXAxMCwKLQlBdXRob3IgPSB7Q2hyaXMgRmVycmlzIGFuZCBBbmlzaCBLYXJtYXJrYXIgYW5kIENhbnlhbmcgS2V2aW4gTGl1fSwKLQlJbnN0aXR1dGlvbiA9IHtXUy1JfSwKLQlNb250aCA9IHtBdWd1c3R9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly93d3cud3MtaS5vcmcvUHJvZmlsZXMvQXR0YWNobWVudHNQcm9maWxlLTEuMC0yMDA0LTA4LTI0Lmh0bWx9LAotCVRpdGxlID0ge0F0dGFjaG1lbnRzIHtQcm9maWxlfSB7VmVyc2lvbn0gMS4wfSwKLQlUeXBlID0ge3tGaW5hbCBNYXRlcmlhbH19LAotCVllYXIgPSAyMDA0fQotCi1AdGVjaHJlcG9ydHtzd2EsCi0JQXV0aG9yID0ge0pvaG4gQmFydG9uIGFuZCBTYXRpc2ggVGhhdHRlIGFuZCBIZW5yaWsgRnJ5c3R5ayBOaWVsc2VufSwKLQlJbnN0aXR1dGlvbiA9IHtXM0N9LAotCU1vbnRoID0ge0RlY2VtYmVyfSwKLQlOb3RlID0ge2h0dHA6Ly93d3cudzMub3JnL1RSL1NPQVAtYXR0YWNobWVudHN9LAotCVRpdGxlID0ge3tTT0FQfSB7TWVzc2FnZXN9IHtXaXRofSB7QXR0YWNobWVudHN9fSwKLQlUeXBlID0ge05vdGV9LAotCVllYXIgPSAyMDAwfQotCi1AdGVjaHJlcG9ydHttdG9tLAotCUF1dGhvciA9IHtNYXJ0aW4gR3VkZ2luIGFuZCBOb2FoIE1lbmRlbHNvaG4gYW5kIE1hcmsgTm90dGluZ2hhbSBhbmQgSGVydmUgUnVlbGxhbn0sCi0JSW5zdGl0dXRpb24gPSB7VzNDfSwKLQlNb250aCA9IHtKYW51YXJ5fSwKLQlOb3RlID0ge2h0dHA6Ly93d3cudzMub3JnL1RSL3NvYXAxMi1tdG9tL30sCi0JVGl0bGUgPSB7e1NPQVB9IHtNZXNzYWdlfSB7VHJhbnNtaXNzaW9ufSB7T3B0aW1pemF0aW9ufSB7TWVjaGFuaXNtfX0sCi0JVHlwZSA9IHtSZWNvbW1lbmRhdGlvbn0sCi0JWWVhciA9IDIwMDV9Ci0KLUB0ZWNocmVwb3J0e3hvcCwKLQlBdXRob3IgPSB7TWFydGluIEd1ZGdpbiBhbmQgTm9haCBNZW5kZWxzb2huIGFuZCBNYXJrIE5vdHRpbmdoYW0gYW5kIEhlcnZlIFJ1ZWxsYW59LAotCUluc3RpdHV0aW9uID0ge1czQ30sCi0JTW9udGggPSB7SmFudWFyeX0sCi0JTm90ZSA9IHtodHRwOi8vd3d3LnczLm9yZy9UUi94b3AxMC99LAotCVRpdGxlID0ge3tYTUwtYmluYXJ5fSB7T3B0aW1pemVkfSB7UGFja2FnaW5nfX0sCi0JVHlwZSA9IHtSZWNvbW1lbmRhdGlvbn0sCi0JWWVhciA9IDIwMDV9Ci0KLUB0ZWNocmVwb3J0e3dzaXNzYnAxMCwKLQlBdXRob3IgPSB7TWFyayBOb3R0aW5naGFtfSwKLQlJbnN0aXR1dGlvbiA9IHtXUy1JfSwKLQlNb250aCA9IHtBdWd1c3R9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly93d3cud3MtaS5vcmcvUHJvZmlsZXMvU2ltcGxlU29hcEJpbmRpbmdQcm9maWxlLTEuMC0yMDA0LTA4LTI0Lmh0bWx9LAotCVRpdGxlID0ge1NpbXBsZSB7U09BUH0ge0JpbmRpbmd9IHtQcm9maWxlfSB7VmVyc2lvbn0gMS4wfSwKLQlUeXBlID0ge3tXb3JraW5nIEdyb3VwIERyYWZ0fX0sCi0JWWVhciA9IDIwMDR9Ci0KLUB0ZWNocmVwb3J0e2pheHIsCi0JQXV0aG9yID0ge0ZhcnJ1a2ggTmFqbWl9LAotCUluc3RpdHV0aW9uID0ge0pDUH0sCi0JTW9udGggPSB7SnVuZX0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL3d3dy5qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9OTN9LAotCVRpdGxlID0ge0phdmEge0FQSX0gZm9yIHtYTUx9IHtSZWdpc3RyaWVzfSAxLjAgKHtKQVhSfSkgfSwKLQlUeXBlID0ge3tKU1J9fSwKLQlZZWFyID0gMjAwMn0KLQotQHRlY2hyZXBvcnR7eG1saW5mb3NldCwKLQlBdXRob3IgPSB7Sm9obiBDb3dhbiBhbmQgUmljaGFyZCBUb2Jpbn0sCi0JSW5zdGl0dXRpb24gPSB7VzNDfSwKLQlNb250aCA9IHtPY3RvYmVyfSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtaW5mb3NldC0yMDAxMTAyNC99LAotCVRpdGxlID0ge3tYTUx9IHtJbmZvcm1hdGlvbn0ge1NldH19LAotCVR5cGUgPSB7e1JlY29tbWVuZGF0aW9ufX0sCi0JWWVhciA9IDIwMDF9Ci0KLUB0ZWNocmVwb3J0e3JmYzIxMTksCi0JQXV0aG9yID0ge1MuIEJyYWRuZXJ9LAotCUluc3RpdHV0aW9uID0ge0lFVEZ9LAotCU1vbnRoID0ge01hcmNofSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyMTE5LnR4dH0sCi0JVGl0bGUgPSB7e1JGQ30gMjExOToge0tleXdvcmRzfSBmb3IgdXNlIGluIHtSRkNzfSB0byB7SW5kaWNhdGV9IHtSZXF1aXJlbWVudH0ge0xldmVsc319LAotCVR5cGUgPSB7e1JGQ319LAotCVllYXIgPSAxOTk3fQotCi1AdGVjaHJlcG9ydHt4c2RwMSwKLQlBdXRob3IgPSB7SGVucnkgUy4gVGhvbXBzb24gYW5kIERhdmlkIEJlZWNoIGFuZCBNdXJyYXkgTWFsb25leSBhbmQgTm9haCBNZW5kZWxzb2hufSwKLQlJbnN0aXR1dGlvbiA9IHtXM0N9LAotCU1vbnRoID0ge01heX0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sc2NoZW1hLTEtMjAwMTA1MDIvfSwKLQlUaXRsZSA9IHt7WE1MfSB7U2NoZW1hfSB7UGFydH0gMToge1N0cnVjdHVyZXN9fSwKLQlUeXBlID0ge3tSZWNvbW1lbmRhdGlvbn19LAotCVllYXIgPSAyMDAxfQotCi1AdGVjaHJlcG9ydHt4c2RwMiwKLQlBdXRob3IgPSB7UGF1bCBWLiBCaXJvbiBhbmQgQXNob2sgTWFsaG90cmF9LAotCUluc3RpdHV0aW9uID0ge1czQ30sCi0JTW9udGggPSB7TWF5fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWxzY2hlbWEtMi0yMDAxMDUwMi99LAotCVRpdGxlID0ge3tYTUx9IHtTY2hlbWF9IHtQYXJ0fSAyOiB7RGF0YXR5cGVzfX0sCi0JVHlwZSA9IHt7UmVjb21tZW5kYXRpb259fSwKLQlZZWFyID0gMjAwMX0KLQotQHRlY2hyZXBvcnR7dXJpLAotCUF1dGhvciA9IHtULiBCZXJuZXJzLUxlZSBhbmQgUi4gRmllbGRpbmcgYW5kIEwuIE1hc2ludGVyfSwKLQlJbnN0aXR1dGlvbiA9IHtJRVRGfSwKLQlNb250aCA9IHtKYW51YXJ5fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMzOTg2LnR4dH0sCi0JVGl0bGUgPSB7e1JGQ30gMzk4Njoge1VuaWZvcm19IHtSZXNvdXJjZX0ge0lkZW50aWZpZXJ9ICh7VVJJfSk6IHtHZW5lcmljfSB7U3ludGF4fX0sCi0JVHlwZSA9IHt7UkZDfX0sCi0JWWVhciA9IDIwMDV9Ci0KLUB0ZWNocmVwb3J0e2pzcjEwOSwKLQlBdXRob3IgPSB7SmltIEtudXRzb24gYW5kIEhlYXRoZXIgS3JlZ2VyfSwKLQlJbnN0aXR1dGlvbiA9IHtKQ1B9LAotCU1vbnRoID0ge1NlcHRlbWJlcn0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xMDl9LAotCVRpdGxlID0ge1dlYiB7U2VydmljZXN9IGZvciB7SjJFRX19LAotCVR5cGUgPSB7e0pTUn19LAotCVllYXIgPSAyMDAyfQotCi1AdGVjaHJlcG9ydHtqYWYsCi0JQXV0aG9yID0ge0JpbGwgU2hhbm5vbn0sCi0JSW5zdGl0dXRpb24gPSB7SkNQfSwKLQlNb250aCA9IHtNYXl9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9OTI1fSwKLQlUaXRsZSA9IHt7SmF2YUJlYW5zfSB7QWN0aXZhdGlvbn0ge0ZyYW1ld29ya319LAotCVR5cGUgPSB7e0pTUn19LAotCVllYXIgPSAyMDA2fQotCi1AdGVjaHJlcG9ydHtqc3IxNzUsCi0JQXV0aG9yID0ge0pvc2h1YSBCbG9jaH0sCi0JRGF0ZS1Nb2RpZmllZCA9IHsyMDA4LTEyLTA4IDE2OjM3OjAwIC0wNTAwfSwKLQlJbnN0aXR1dGlvbiA9IHtKQ1B9LAotCUtleXdvcmRzID0ge2phdmF9LAotCU1vbnRoID0ge0F1Z3VzdH0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xNzV9LAotCVRpdGxlID0ge0Ege01ldGFkYXRhfSB7RmFjaWxpdHl9IGZvciB0aGUge0phdmF9IHtQcm9ncmFtbWluZ30ge0xhbmd1YWdlfX0sCi0JVHlwZSA9IHt7SlNSfX0sCi0JWWVhciA9IDIwMDN9Ci0KLUB0ZWNocmVwb3J0e2pzcjE4MSwKLQlBdXRob3IgPSB7SmltIFRyZXp6b30sCi0JSW5zdGl0dXRpb24gPSB7SkNQfSwKLQlNb250aCA9IHtBdWd1c3R9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MTgxfSwKLQlUaXRsZSA9IHtXZWIge1NlcnZpY2VzfSB7TWV0YWRhdGF9IGZvciB0aGUge0phdmF9IHtQbGF0Zm9ybX19LAotCVR5cGUgPSB7e0pTUn19LAotCVllYXIgPSAyMDAzfQotCi1AdGVjaHJlcG9ydHtqc3IxODMsCi0JQXV0aG9yID0ge05hdGFyYWogTmFnYXJhdG5hbX0sCi0JSW5zdGl0dXRpb24gPSB7SkNQfSwKLQlNb250aCA9IHtBcHJpbH0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL2pjcC5vcmcvZW4vanNyL2RldGFpbD9pZD0xODN9LAotCVRpdGxlID0ge1dlYiB7U2VydmljZXN9IHtNZXNzYWdlfSB7U2VjdXJpdHl9IHtBUElzfSB9LAotCVR5cGUgPSB7e0pTUn19LAotCVllYXIgPSAyMDAyfQotCi1AdGVjaHJlcG9ydHtqYXZhbGFuZywKLQlBdXRob3IgPSB7SmFtZXMgR29zbGluZyBhbmQgQmlsbCBKb3kgYW5kIEd1eSBTdGVlbGUgYW5kIEdpbGFkIEJyYWNoYX0sCi0JSW5zdGl0dXRpb24gPSB7U3VuIE1pY3Jvc3lzdGVtcywgSW5jfSwKLQlOb3RlID0ge2h0dHA6Ly9qYXZhLnN1bi5jb20vZG9jcy9ib29rcy9qbHMvc2Vjb25kXF9lZGl0aW9uL2h0bWwvai50aXRsZS5kb2MuaHRtbH0sCi0JVGl0bGUgPSB7VGhlIHtKYXZhfSB7TGFuZ3VhZ2V9IHtTcGVjaWZpY2F0aW9ufSAtIFNlY29uZCBFZGl0aW9ufSwKLQlUeXBlID0ge3tCb29rfX0sCi0JWWVhciA9IDIwMDB9Ci0KLUB0ZWNocmVwb3J0e3NlcnZsZXQsCi0JQXV0aG9yID0ge0cuIE11cnJheX0sCi0JSW5zdGl0dXRpb24gPSB7SkNQfSwKLQlNb250aCA9IHtPY3RvYmVyfSwKLQlOb3RlID0ge1NlZSBodHRwOi8vamF2YS5zdW4uY29tL3Byb2R1Y3RzL3NlcnZsZXR9LAotCVRpdGxlID0ge0phdmEge1NlcnZsZXR9IHtTcGVjaWZpY2F0aW9ufSB7VmVyc2lvbn0gezIuNX0gfSwKLQlUeXBlID0ge3tKU1J9fSwKLQlZZWFyID0gMjAwNn0KLQotQHRlY2hyZXBvcnR7anNyMjQ0LAotCUF1dGhvciA9IHtCaWxsIFNoYW5ub259LAotCUluc3RpdHV0aW9uID0ge0pDUH0sCi0JTW9udGggPSB7QXVndXN0fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTI0NH0sCi0JVGl0bGUgPSB7e0phdmF9IHtQbGF0Zm9ybX0ge0VudGVycHJpc2V9IHtFZGl0aW9ufSA1IHtTcGVjaWZpY2F0aW9ufX0sCi0JVHlwZSA9IHt7SlNSfX0sCi0JWWVhciA9IDIwMDV9Ci0KLUB0ZWNocmVwb3J0e2pzcjIyNCwKLQlBdXRob3IgPSB7Ui4gQ2hpbm5pY2kgYW5kIE0uIEhhZGxleSBhbmQgUi4gTW9yZGFuaX0sCi0JSW5zdGl0dXRpb24gPSB7SkNQfSwKLQlNb250aCA9IHtBdWd1c3R9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly9qY3Aub3JnL2VuL2pzci9kZXRhaWw/aWQ9MjI0fSwKLQlUaXRsZSA9IHt7SmF2YX0ge0FQSX0ge2Zvcn0ge1hNTH0ge1dlYn0ge1NlcnZpY2VzfX0sCi0JVHlwZSA9IHt7SlNSfX0sCi0JWWVhciA9IDIwMDV9Ci0KLUB0ZWNocmVwb3J0e2pzcjI1MCwKLQlBdXRob3IgPSB7UmFqaXYgTW9yZGFuaX0sCi0JSW5zdGl0dXRpb24gPSB7SkNQfSwKLQlNb250aCA9IHtKdWx5fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vamNwLm9yZy9lbi9qc3IvZGV0YWlsP2lkPTI1MH0sCi0JVGl0bGUgPSB7e0NvbW1vbn0ge0Fubm90YXRpb25zfSBmb3IgdGhlIHtKYXZhfSB7UGxhdGZvcm19fSwKLQlUeXBlID0ge3tKU1J9fSwKLQlZZWFyID0gMjAwNX0KLQotQHRlY2hyZXBvcnR7eG1sY2F0YWxvZ3MsCi0JQXV0aG9yID0ge05vcm0gV2Fsc2h9LAotCUluc3RpdHV0aW9uID0ge09BU0lTfSwKLQlNb250aCA9IHtKdWx5fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3Lm9hc2lzLW9wZW4ub3JnL2NvbW1pdHRlZXMvZG93bmxvYWQucGhwLzE0MDQxL3htbC1jYXRhbG9ncy5odG1sfSwKLQlUaXRsZSA9IHt7WE1MfSB7Q2F0YWxvZ3N9IDEuMX0sCi0JVHlwZSA9IHt7T0FTSVMgQ29tbWl0dGVlIFNwZWNpZmljYXRpb259fSwKLQlZZWFyID0gMjAwNX0KLQotQHRlY2hyZXBvcnR7YXRvbXB1YiwKLQlBdXRob3IgPSB7Si5DLiBHcmVnb3JpbyBhbmQgQi4gZGUgaE9yYX0sCi0JSW5zdGl0dXRpb24gPSB7SUVURn0sCi0JTW9udGggPSB7TWFyY2h9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly9iaXR3b3JraW5nLm9yZy9wcm9qZWN0cy9hdG9tL2RyYWZ0LWlldGYtYXRvbXB1Yi1wcm90b2NvbC0xNC5odG1sfSwKLQlUaXRsZSA9IHt7VGhlfSB7QXRvbX0ge1B1Ymxpc2hpbmd9IHtQcm90b2NvbH19LAotCVR5cGUgPSB7e0ludGVybmV0IERyYWZ0fX0sCi0JWWVhciA9IDIwMDd9Ci0KLUB0ZWNocmVwb3J0e2h0dHAxMSwKLQlBdXRob3IgPSB7Ui4gRmllbGRpbmcgYW5kIEouIEdldHR5cyBhbmQgSi4gQy4gTW9ndWwgYW5kIEguIEZyeXN0eWsgYW5kIFQuIEJlcm5lcnMtTGVlfSwKLQlJbnN0aXR1dGlvbiA9IHtJRVRGfSwKLQlNb250aCA9IHtKYW51YXJ5fSwKLQlOb3RlID0ge1NlZSBodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyNjE2LnR4dH0sCi0JVGl0bGUgPSB7e1JGQ30gMjYxNjoge0h5cGVydGV4dH0ge1RyYW5zZmVyfSB7UHJvdG9jb2x9IC0tIHtIVFRQLzEuMX19LAotCVR5cGUgPSB7e1JGQ319LAotCVllYXIgPSAxOTk3fQotCi1AdGVjaHJlcG9ydHtyZXN0LAotCUF1dGhvciA9IHtSLiBGaWVsZGluZ30sCi0JSW5zdGl0dXRpb24gPSB7VW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhLCBJcnZpbmV9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly9yb3kuZ2Jpdi5jb20vcHVicy9kaXNzZXJ0YXRpb24vdG9wLmh0bX0sCi0JVGl0bGUgPSB7e0FyY2hpdGVjdHVyYWx9IHtTdHlsZXN9IGFuZCB0aGUge0Rlc2lnbn0gb2Yge05ldHdvcmstYmFzZWR9IHtTb2Z0d2FyZX0ge0FyY2hpdGVjdHVyZXN9fSwKLQlUeXBlID0ge1BoLkQgRGlzc2VydGF0aW9ufSwKLQlZZWFyID0gMjAwMH0KLQotQHRlY2hyZXBvcnR7d2ViZGF2LAotCUF1dGhvciA9IHtMLiBEdXNzZWF1bHR9LAotCUluc3RpdHV0aW9uID0ge0lFVEZ9LAotCU1vbnRoID0ge0p1bmV9LAotCU5vdGUgPSB7U2VlIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzQ5MTgudHh0fSwKLQlUaXRsZSA9IHt7UkZDfSA0OTE4OiB7SFRUUH0ge0V4dGVuc2lvbnN9IGZvciB7V2VifSB7RGlzdHJpYnV0ZWR9IHtBdXRob3Jpbmd9IGFuZCB7VmVyc2lvbmluZ30gKHtXZWJEQVZ9KX0sCi0JVHlwZSA9IHt7UkZDfX0sCi0JWWVhciA9IDIwMDd9Ci0KLUB0ZWNocmVwb3J0e3Jlc3R3aWtpLAotCU5vdGUgPSB7U2VlIGh0dHA6Ly9yZXN0LmJsdWVveGVuLm5ldC9jZ2ktYmluL3dpa2kucGx9LAotCVRpdGxlID0ge3tSRVNUfSB7V2lraX19LAotCVR5cGUgPSB7V2ViIFNpdGV9fQotCi1AdGVjaHJlcG9ydHtyZXN0d2lraXBlZGlhLAotCUluc3RpdHV0aW9uID0ge1dpa2lwZWRpYX0sCi0JTm90ZSA9IHtTZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9SZXByZXNlbnRhdGlvbmFsXF9TdGF0ZVxfVHJhbnNmZXJ9LAotCVRpdGxlID0ge3tSZXByZXNlbnRhdGlvbmFsfSB7U3RhdGV9IHtUcmFuc2Zlcn19LAotCVR5cGUgPSB7V2ViIFNpdGV9fQpkaWZmIC0tZ2l0IGEvc3BlYy9zcGVjLnRleCBiL3NwZWMvc3BlYy50ZXgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MzZhODYuLjAwMDAwMDAKLS0tIGEvc3BlYy9zcGVjLnRleAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1cZG9jdW1lbnRjbGFzc1sxMXB0LCBkdmlwc117Ym9va30KLVx1c2VwYWNrYWdlW2h5cGVycmVmLCB0aG1tYXJrc117c3R5bGVzL250aGVvcmVtfQotXHVzZXBhY2thZ2V7ZnJhbWVkfQotXHVzZXBhY2thZ2V7dGltZXN9Ci1cdXNlcGFja2FnZXt0ZXh0Y29tcH0KLVx1c2VwYWNrYWdle3RhYnVsYXJ4fQotXHVzZXBhY2thZ2V7bW9yZXZlcmJ9Ci1cdXNlcGFja2FnZVtkdmlwc117Z3JhcGhpY3h9Ci1cdXNlcGFja2FnZVtkdmlwcywKLSAgcGRmdGl0bGU9e0pBWC1SUzogSmF2YSBBUEkgZm9yIFJFU1RmdWwgV2ViIFNlcnZpY2VzfSwKLSAgcGRmYXV0aG9yPXtNYXJjIEhhZGxleSBhbmQgUGF1bCBTYW5kb3osIFN1biBNaWNyb3N5c3RlbXMgSW5jLn0sCi0gIHBkZnN1YmplY3Q9e0pBWC1SUzogSmF2YSBBUEkgZm9yIFJFU1RmdWwgV2ViIFNlcnZpY2VzfSwKLSAgcGRma2V5d29yZHM9e0phdmEgWE1MIFdlYiBTZXJ2aWNlcyBBUEkgUkVTVCBSRVNUZnVsfSwKLSAgcGRmdGV4LAotICBjb2xvcmxpbmtzPXRydWUsCi0gIGxpbmtjb2xvcj1ibGFjaywKLSAgY2l0ZWNvbG9yPWJsYWNrLAotICBwZGZzdGFydHZpZXc9Rml0SCwKLSAgbGV0dGVycGFwZXI9dHJ1ZSwKLSAgYm9va21hcmtzbnVtYmVyZWQ9dHJ1ZQotXXtoeXBlcnJlZn0KLQotJSBzZXQgdXAgcGFnZSBkaW1lbnNpb25zCi1cdGV4dHdpZHRoID0gNi41IGluCi1cdGV4dGhlaWdodCA9IDkuMzMgaW4KLVxvZGRzaWRlbWFyZ2luID0gMC4wIGluCi1cZXZlbnNpZGVtYXJnaW4gPSAwLjAgaW4KLVx0b3BtYXJnaW4gPSAtMC43NSBpbgotXGhlYWRoZWlnaHQgPSAxNXB0Ci1caGVhZHNlcCA9IDAuMzMgaW4KLVxwYXJza2lwID0gNnB0Ci1ccGFyaW5kZW50ID0gMC4waW4KLVxmb290c2tpcD0wLjVpbgotCi1cdXNlcGFja2FnZXtmYW5jeWhkcn0KLVxwYWdlc3R5bGV7ZmFuY3l9Ci1cdXNlcGFja2FnZXtzdHlsZXMvanNyfQotXHRoZW9yZW1zdHlsZXtwbGFpbn0KLSVcc2V0bGVuZ3Roe1x0aGVvcmVtcG9zdHNraXBhbW91bnR9ezBwdH0KLVxuZXd0aGVvcmVte2Vkbm90ZX17RWRpdG9ycyBOb3RlfVtjaGFwdGVyXQotCi1cdGhlb3JlbXN0eWxle25vbnVtYmVycGxhaW59Ci1cdGhlb3JlbWluZGVudDBjbQotXHRoZW9yZW1zZXBhcmF0b3J7On0KLVxuZXd0aGVvcmVte25ubm90ZX17Tm90ZX1bY2hhcHRlcl0KLQotJVx1c2VwYWNrYWdlW3BhZ2V3aXNlLCByaWdodF17c3R5bGVzL2xpbmVub30KLSVcdXNlcGFja2FnZVtkdmlwc117Y2hhbmdlYmFyfQotXHVzZXBhY2thZ2V7bG9uZ3RhYmxlfQotCi0lXHJlbmV3Y29tbWFuZHtcdG9kYXl9e1NlcHRlbWJlciA4LCAyMDA4fQotCi1cYmVnaW57ZG9jdW1lbnR9Ci0KLVxmcm9udG1hdHRlcgotXGluY2x1ZGV7c3R5bGVzL21hY3Jvc30KLVxpbmNsdWRle3N0eWxlcy9qc3Jmcm9udHN0eWxlfQotCi1caW5jbHVkZXtjaGFwdGVycy90aXRsZXBhZ2V9Ci0KLVxjbGVhcmRvdWJsZXBhZ2UKLXsKLVxzbWFsbAotXGluY2x1ZGV7Y2hhcHRlcnMvbGljZW5zZX0KLSVcaW5jbHVkZXtjaGFwdGVycy9saWNlbnNlX2ZpbmFsfQotfQotCi1ccGRmYm9va21hcmtbMF17Q29udGVudHN9e3RvY30KLVx0YWJsZW9mY29udGVudHMKLQotXG1haW5tYXR0ZXIKLVxpbmNsdWRle3N0eWxlcy9qc3JtYWluc3R5bGV9Ci0KLSVcbGluZW51bWJlcnMKLSVcbm9jaGFuZ2ViYXJzCi0KLVxzZXRjb3VudGVye3NlY251bWRlcHRofXs0fQotCi1caW5jbHVkZXtjaGFwdGVycy9pbnRyb30KLVxpbmNsdWRle2NoYXB0ZXJzL2FwcGxpY2F0aW9uc30KLVxpbmNsdWRle2NoYXB0ZXJzL3Jlc291cmNlc30KLVxpbmNsdWRle2NoYXB0ZXJzL3Byb3ZpZGVyc30KLVxpbmNsdWRle2NoYXB0ZXJzL2NvbnRleHR9Ci1caW5jbHVkZXtjaGFwdGVycy9lbnZpcm9ubWVudH0KLVxpbmNsdWRle2NoYXB0ZXJzL2RlbGVnYXRlfQotCi1cYXBwZW5kaXgKLVxyZW5ld2NvbW1hbmR7XGNoYXB0ZXJtYXJrfVsxXXsKLSAgXG1hcmtib3Roe1xhcHBlbmRpeG5hbWUKLSAgXCBcdGhlY2hhcHRlci5cICMxfXt9fQotCi1caW5jbHVkZXtjaGFwdGVycy9hbm5vdGF0aW9uc30KLVxpbmNsdWRle2NoYXB0ZXJzL2hlYWRlcnN9Ci1caW5jbHVkZXtjaGFwdGVycy9jaGFuZ2VzfQotCi1cYmFja21hdHRlcgotCi1caW5jbHVkZXtjaGFwdGVycy9yZWZzfQotCi1cZW5ke2RvY3VtZW50fQpkaWZmIC0tZ2l0IGEvc3BlYy9zdHlsZXMvanNyLnN0eSBiL3NwZWMvc3R5bGVzL2pzci5zdHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOTQwOTIuLjAwMDAwMDAKLS0tIGEvc3BlYy9zdHlsZXMvanNyLnN0eQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLVxOZWVkc1RlWEZvcm1hdHtMYVRlWDJlfVsxOTk2LzA2LzAxXQotXFByb3ZpZGVzUGFja2FnZXtzdHlsZXMvanNyfVsyMDAzLzA0LzI5IHYxLjAgKE1KSCldCi0KLVxkZWZcQGNoYXB0ZXJbIzFdIzJ7XGlmbnVtIFxjQHNlY251bWRlcHRoID5cbUBuZQotICAgICAgICAgICAgICAgICAgICAgICBcaWZAbWFpbm1hdHRlcgotICAgICAgICAgICAgICAgICAgICAgICAgIFxyZWZzdGVwY291bnRlcntjaGFwdGVyfSUKLSAgICAgICAgICAgICAgICAgICAgICAgICBcdHlwZW91dHtcQGNoYXBhcHBcc3BhY2VcdGhlY2hhcHRlci59JQotICAgICAgICAgICAgICAgICAgICAgICAgIFxhZGRjb250ZW50c2xpbmV7dG9jfXtjaGFwdGVyfSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xwcm90ZWN0XG51bWJlcmxpbmV7XHRoZWNoYXB0ZXJ9IzF9JQotICAgICAgICAgICAgICAgICAgICAgICBcZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgIFxhZGRjb250ZW50c2xpbmV7dG9jfXtjaGFwdGVyfXsjMX0lCi0gICAgICAgICAgICAgICAgICAgICAgIFxmaQotICAgICAgICAgICAgICAgICAgICBcZWxzZQotICAgICAgICAgICAgICAgICAgICAgIFxhZGRjb250ZW50c2xpbmV7dG9jfXtjaGFwdGVyfXsjMX0lCi0gICAgICAgICAgICAgICAgICAgIFxmaQotICAgICAgICAgICAgICAgICAgICBcY2hhcHRlcm1hcmt7IzF9JQotICAgICAgICAgICAgICAgICAgICBcYWRkdG9jb250ZW50c3tsb2Z9e1xwcm90ZWN0XGFkZHZzcGFjZXsxMFxwQH19JQotICAgICAgICAgICAgICAgICAgICBcYWRkdG9jb250ZW50c3tsb3R9e1xwcm90ZWN0XGFkZHZzcGFjZXsxMFxwQH19JQotICAgICAgICAgICAgICAgICAgICBcaWZAdHdvY29sdW1uCi0gICAgICAgICAgICAgICAgICAgICAgXEB0b3BuZXdwYWdlW1xAbWFrZWNoYXB0ZXJoZWFkeyMyfV0lCi0gICAgICAgICAgICAgICAgICAgIFxlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgXEBtYWtlY2hhcHRlcmhlYWR7IzJ9JQotICAgICAgICAgICAgICAgICAgICAgIFxAYWZ0ZXJoZWFkaW5nCi0gICAgICAgICAgICAgICAgICAgIFxmaX0KLVxkZWZcQG1ha2VjaGFwdGVyaGVhZCMxeyUKLSAgXHZzcGFjZSp7NTBccEB9JQotICB7XHBhcmluZGVudCBcekAgXHJhZ2dlZGxlZnQgXHNmZmFtaWx5Ci0gICAgXGlmbnVtIFxjQHNlY251bWRlcHRoID5cbUBuZQotICAgICAgXGlmQG1haW5tYXR0ZXIKLSAgICAgICAgXGh1Z2VcYmZzZXJpZXMgXEBjaGFwYXBwXHNwYWNlIFx0aGVjaGFwdGVyCi0gICAgICAgIFxwYXJcbm9icmVhawotICAgICAgICBcdnNraXAgMjBccEAKLSAgICAgIFxmaQotICAgIFxmaQotICAgIFxpbnRlcmxpbmVwZW5hbHR5XEBNCi0gICAgXEh1Z2UgXGJmc2VyaWVzICMxXHBhclxub2JyZWFrCi0gICAgXHZza2lwIDQwXHBACi0gIH19Ci1cZGVmXEBzY2hhcHRlciMxe1xpZkB0d29jb2x1bW4KLSAgICAgICAgICAgICAgICAgICBcQHRvcG5ld3BhZ2VbXEBtYWtlc2NoYXB0ZXJoZWFkeyMxfV0lCi0gICAgICAgICAgICAgICAgIFxlbHNlCi0gICAgICAgICAgICAgICAgICAgXEBtYWtlc2NoYXB0ZXJoZWFkeyMxfSUKLSAgICAgICAgICAgICAgICAgICBcQGFmdGVyaGVhZGluZwotICAgICAgICAgICAgICAgICBcZml9Ci1cZGVmXEBtYWtlc2NoYXB0ZXJoZWFkIzF7JQotICBcdnNwYWNlKns1MFxwQH0lCi0gIHtccGFyaW5kZW50IFx6QCBccmFnZ2VkbGVmdAotICAgIFxzZmZhbWlseQotICAgIFxpbnRlcmxpbmVwZW5hbHR5XEBNCi0gICAgXEh1Z2UgXGJmc2VyaWVzICAjMVxwYXJcbm9icmVhawotICAgIFx2c2tpcCA0MFxwQAotICB9fSAgCi0KLVxkZWZcdmVyYmF0aW1AZm9udHtcc21hbGxcdHRmYW1pbHl9Ci0KLVxyZW5ld2NvbW1hbmR7XGNoYXB0ZXJ9e1xpZkBvcGVucmlnaHRcY2xlYXJkb3VibGVwYWdlXGVsc2VcY2xlYXJwYWdlXGZpCi0gICAgICAgICAgICAgICAgICAgIFx0aGlzcGFnZXN0eWxle3BsYWlufSUKLSAgICAgICAgICAgICAgICAgICAgXGdsb2JhbFxAdG9wbnVtXHpACi0gICAgICAgICAgICAgICAgICAgIFxAYWZ0ZXJpbmRlbnRmYWxzZQotICAgICAgICAgICAgICAgICAgICBcc2VjZGVmXEBjaGFwdGVyXEBzY2hhcHRlcn0KLVxyZW5ld2NvbW1hbmR7XHNlY3Rpb259e1xAc3RhcnRzZWN0aW9uIHtzZWN0aW9ufXsxfXswcHR9JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LTMuNWV4IFxAcGx1cyAtMWV4IFxAbWludXMgLS4yZXh9JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Mi4zZXggXEBwbHVzLjJleH0lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcc2ZmYW1pbHlcTGFyZ2VcYmZzZXJpZXN9fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLVxyZW5ld2NvbW1hbmR7XHN1YnNlY3Rpb259e1xAc3RhcnRzZWN0aW9ue3N1YnNlY3Rpb259ezJ9ezBwdH0lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgey0zLjI1ZXhcQHBsdXMgLTFleCBcQG1pbnVzIC0uMmV4fSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MS41ZXggXEBwbHVzIC4yZXh9JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcc2ZmYW1pbHlcbGFyZ2VcYmZzZXJpZXN9fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotXHJlbmV3Y29tbWFuZHtcc3Vic3Vic2VjdGlvbn17XEBzdGFydHNlY3Rpb257c3Vic3Vic2VjdGlvbn17M317MHB0fSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7LTMuMjVleFxAcGx1cyAtMWV4IFxAbWludXMgLS4yZXh9JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsxLjVleCBcQHBsdXMgLjJleH0lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xzZmZhbWlseVxub3JtYWxzaXplXGJmc2VyaWVzfX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcGVjL3N0eWxlcy9qc3Jmcm9udHN0eWxlLnRleCBiL3NwZWMvc3R5bGVzL2pzcmZyb250c3R5bGUudGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGE3YWJjLi4wMDAwMDAwCi0tLSBhL3NwZWMvc3R5bGVzL2pzcmZyb250c3R5bGUudGV4CisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotJSBzZXQgdXAgcGFnZSBzdHlsZXMgZm9yIGZyb250bWF0dGVyLCBubyBwYWdlIGhlYWRlcnMsIG5vcm1hbCBmb290ZXIKLVxmYW5jeWhme30KLVxmYW5jeWZvb3RbQ08sQ0Vde0pBWC1SU30KLVxmYW5jeWZvb3RbTEUsUk9de1x0aGVwYWdlfQotXGZhbmN5Zm9vdFtSRSxMT117XHRvZGF5fSAKLVxmYW5jeXBhZ2VzdHlsZXtwbGFpbn17Ci0gIFxmYW5jeWhme30KLSAgXGZhbmN5Zm9vdFtDTyxDRV17SkFYLVJTfQotICBcZmFuY3lmb290W0xFLFJPXXtcdGhlcGFnZX0KLSAgXGZhbmN5Zm9vdFtSRSxMT117XHRvZGF5fSAKLSAgXHJlbmV3Y29tbWFuZHtcZm9vdHJ1bGV3aWR0aH17MHB0fQotICBccmVuZXdjb21tYW5ke1xoZWFkcnVsZXdpZHRofXswcHR9Ci19Ci1ccmVuZXdjb21tYW5ke1xoZWFkcnVsZXdpZHRofXswcHR9CmRpZmYgLS1naXQgYS9zcGVjL3N0eWxlcy9qc3JtYWluc3R5bGUudGV4IGIvc3BlYy9zdHlsZXMvanNybWFpbnN0eWxlLnRleApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYyODE5ZC4uMDAwMDAwMAotLS0gYS9zcGVjL3N0eWxlcy9qc3JtYWluc3R5bGUudGV4CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotJSBzZXQgdXAgcGFnZSBzdHlsZXMgZm9yIG1haW5tYXR0ZXIsIHBhZ2UgaGVhZGVycyBhbmQgbm9ybWFsIGZvb3RlcgotXHJlbmV3Y29tbWFuZHtcY2hhcHRlcm1hcmt9WzFdewotICBcbWFya2JvdGh7XGNoYXB0ZXJuYW1lCi0gIFwgXHRoZWNoYXB0ZXIuXCAjMX17fX0KLVxyZW5ld2NvbW1hbmR7XHNlY3Rpb25tYXJrfVsxXXsKLSAgXG1hcmtyaWdodHtcdGhlc2VjdGlvbi5cICMxfXt9fQotXGZhbmN5aGZ7fQotXGZhbmN5aGVhZFtST117XHNsc2hhcGUgXHJpZ2h0bWFya30KLVxmYW5jeWhlYWRbTEVde1xzbHNoYXBlIFxsZWZ0bWFya30KLVxmYW5jeWZvb3RbQ08sQ0Vde0pBWC1SU30KLVxmYW5jeWZvb3RbTEUsUk9de1x0aGVwYWdlfQotXGZhbmN5Zm9vdFtSRSxMT117XHRvZGF5fSAKLVxmYW5jeXBhZ2VzdHlsZXtwbGFpbn17Ci0gIFxmYW5jeWhme30KLSAgXGZhbmN5Zm9vdFtDTyxDRV17SkFYLVJTfQotICBcZmFuY3lmb290W0xFLFJPXXtcdGhlcGFnZX0KLSAgXGZhbmN5Zm9vdFtSRSxMT117XHRvZGF5fSAKLSAgXHJlbmV3Y29tbWFuZHtcZm9vdHJ1bGV3aWR0aH17MHB0fQotICBccmVuZXdjb21tYW5ke1xoZWFkcnVsZXdpZHRofXswcHR9Ci19Ci1ccmVuZXdjb21tYW5ke1xoZWFkcnVsZXdpZHRofXswLjRwdH0KZGlmZiAtLWdpdCBhL3NwZWMvc3R5bGVzL2xpbmVuby5zdHkgYi9zcGVjL3N0eWxlcy9saW5lbm8uc3R5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTA4OTZiLi4wMDAwMDAwCi0tLSBhL3NwZWMvc3R5bGVzL2xpbmVuby5zdHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNTMxICswLDAgQEAKLVxpZmZhbHNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2sgJy9TW0hdRUxMLycgbGluZW5vLnN0eXxzaDtleGl0O1xmaQotJSUlICAgICAgICAgICAgICAgICAgICAgICAgVG8gcHJldHR5LXByaW50IHRoaXMgZmlsZSwgZmVlZCBpdCB0byBhIHVuaXggc2hlbGwhCi0lJSUKLSUlJSAkSWQ6IGxpbmVuby5zdHksdiAxLjEuMS4xIDIwMDUvMDUvMTMgMTY6MDM6MTYgbWgxMjQwNzkgRXhwICQKLSUlJQotJSUlIENvcHlyaWdodCAxOTk1LS0yMDAzIFN0ZXBoYW4gSS4gQiJvdHRjaGVyIDxib2V0dGNoZXJAcGh5c2lrLnVuaS1raWVsLmRlPgotJSUlCi0lJSUgVGhpcyBwcm9ncmFtIGNhbiBiZSByZWRpc3RyaWJ1dGVkIGFuZC9vciBtb2RpZmllZCB1bmRlciB0aGUgdGVybXMKLSUlJSBvZiB0aGUgTGFUZVggUHJvamVjdCBQdWJsaWMgTGljZW5zZSBEaXN0cmlidXRlZCBmcm9tIENUQU4KLSUlJSBhcmNoaXZlcyBpbiBkaXJlY3RvcnkgbWFjcm9zL2xhdGV4L2Jhc2UvbHBwbC50eHQ7IGVpdGhlcgotJSUlIHZlcnNpb24gMSBvZiB0aGUgTGljZW5zZSwgb3IgYW55IGxhdGVyIHZlcnNpb24uCi0lJSUKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxkb2N1bWVudGNsYXNzW2E0cGFwZXIsMTJwdF17YXJ0aWNsZX0lRAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHVzZXBhY2thZ2V7bGluZW5vfSVECi0lCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0aXRsZXsKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHRleHR0dHtcaXRzaGFwZQotJSAgICAgICAgIGxpbmVuby5zdHkgXCB2My4xMGEgMjAwMy8xMS8xMgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcIFxcCi0lICAgICAgICAgIEEgXExhVGVYXCBwYWNrYWdlICB0byBhdHRhY2ggICAgICAgICAgICAgICAgICAKLSUgXFwgICAgICAgIExpbmUgbnVtYmVycyB0byBwYXJhZ3JhcGhzCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XGF1dGhvcnsKLSUgICAgICAgICAgICAgIFN0ZXBoYW4gSS4gQlwib3R0Y2hlciAgICAgICAgICAgICAgICAgICAgCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cZGF0ZXsKLSUgICAgICAgICAgICBib2V0dGNoZXJAcGh5c2lrLnVuaS1raWVsLmRlCi0lJSBcXCAgICAgICAgc3RlcGhhbkBuZXZpcy5jb2x1bWJpYS5lZHUKLSUlIFxcICAgICAgICBTdGVwaGFuLkJvZXR0Y2hlckBjZXJuLmNoICAgICAgICAgICAgICAgICAgICAgCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXH0KLSUKLSUKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGRlZn57XHZlcmJ+fQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcY2F0Y29kZWBcPFxjYXRjb2RlYFx+Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcZGVmPCMxPnskXGxhbmdsZSR7XGl0c2hhcGUjMX1cLyRccmFuZ2xlJH0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGNhdGNvZGVgXHxcY2F0Y29kZWBcfgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxkZWZ8IzF7e1x0dGZhbWlseVxzdHJpbmcjMX19Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV3ZW52aXJvbm1lbnR7Y29kZX0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtccGFyXHJ1bm5pbmdsaW5lbnVtYmVycwotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG1vZHVsb2xpbmVudW1iZXJzWzFdCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbGluZW51bWJlcnNlcC4zZW0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGZvb3Rub3Rlc2l6ZQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcZGVmXGxpbmVudW1iZXJmb250Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG5vcm1hbGZvbnRcdGlueVxpdHNoYXBlfX0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fQotJQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGJlZ2lue2RvY3VtZW50fSVECi0lJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXERvY0lucHV0e2xpbmVuby5kb2N9JUQKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBccGFnZXdpc2VsaW5lbnVtYmVycwotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbWFrZXRpdGxlCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0YWJsZW9mY29udGVudHMKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHNsb3BweQotJQotJQotJQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHNlY3Rpb257Ci0lICAgICAgICAgICAgICAgICAgICBJbnRyb2R1Y3Rpb24KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotJSBUaGlzIHBhY2thZ2UgcHJvdmlkZXMgbGluZSBudW1iZXJzIG9uIHBhcmFncmFwaHMuCi0lIEFmdGVyIFxUZVhcIGhhcyBicm9rZW4gYSBwYXJhZ3JhcGggaW50byBsaW5lcyB0aGVyZSB3aWxsCi0lIGJlIGxpbmUgbnVtYmVycyBhdHRhY2hlZCB0byB0aGVtLCB3aXRoIHRoZSBwb3NzaWJpbGl0eSB0bwotJSBtYWtlIHJlZmVyZW5jZXMgIHRocm91Z2ggdGhlIFxMYVRlWFwgflxyZWZ+LCB+XHBhZ2VyZWZ+Ci0lIGNyb3NzIHJlZmVyZW5jZSBtZWNoYW5pc20uICBUaGlzIGluY2x1ZGVzIGZvdXIgaXNzdWVzOgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGJlZ2lue2l0ZW1pemV9Ci0lIFxpdGVtICAgYXR0YWNoIGEgbGluZSBudW1iZXIgb24gZWFjaCBsaW5lLAotJSBcaXRlbSAgIGNyZWF0ZSByZWZlcmVuY2VzIHRvIGEgbGluZSBudW1iZXIsCi0lIFxpdGVtICAgY29udHJvbCBsaW5lIG51bWJlcmluZyBtb2RlLAotJSBcaXRlbSAgIGNvdW50IHRoZSBsaW5lcyBhbmQgcHJpbnQgdGhlIG51bWJlcnMuCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxlbmR7aXRlbWl6ZX0KLSUgVGhlIGZpcnN0IHR3byBwb2ludHMgYXJlIGltcGxlbWVudGVkIHRocm91Z2ggcGF0Y2hlcyB0bwotJSB0aGUgb3V0cHV0IHJvdXRpbmUuICBUaGUgdGhpcmQgYnkgcmVkZWZpbmluZyB+XHBhcn4sIH5cQHBhcn4KLSUgYW5kIH5cQEBwYXJ+LiAgVGhlIGNvdW50aW5nIGlzIGVhc3ksIGFzIGxvbmcgYXMgeW91IHdhbnQKLSUgdGhlIGxpbmUgbnVtYmVycyBydW4gdGhyb3VnaCB0aGUgdGV4dC4gIElmIHRoZXkgc2hhbGwKLSUgc3RhcnQgb3ZlciBhdCB0aGUgdG9wIG9mIGVhY2ggcGFnZSwgdGhlIGF1eC1maWxlIGFzIHdlbGwKLSUgYXMgXFRlWCBzIG1lbW9yeSBoYXZlIHRvIGNhcnJ5IGEgbG9hZCBmb3IgZWFjaCBjb3VudGVkIGxpbmUuCi0lCi0lIEkgd3JvdGUgdGhpcyBwYWNrYWdlIGZvciBteSB3aWZlIFBldHJhLCB3aG8gbmVlZHMgaXQgZm9yCi0lIHRyYW5zY3JpcHRpb25zIG9mIGludGVydmlld3MuICBUaGlzIGFsbG93cyBoZXIgdG8KLSUgcHJlY2lzZWx5IHJlZmVyIHRvIHBhc3NhZ2VzIGluIHRoZSB0ZXh0LiAgSXQgd29ya3Mgd2VsbAotJSB0b2dldGhlciB3aXRoIH5cbWFyZ2lucGFyfnMsIGJ1dCBub3QgdG8gd2VsbCB3aXRoIGRpc3BsYXltYXRoLiAKLSUgflxmb290bm90ZX5zIGFyZSBhIHByb2JsZW0sIGVzcGVjaWFsbHkgd2hlbiB0aGV5Ci0lIGFyZSBzcGxpdCwgYnV0IHdlIG1heSBnZXQgdGhlcmUuIAotJQotJSBsaW5lbm8uc3R5IHdvcmtzCi0lIHN1cnByaXNpbmdseSB3ZWxsIHdpdGggb3RoZXIgcGFja2FnZXMsIGZvcgotJSBleGFtcGxlLCB+d3JhcGZpZy5zdHl+LiAgU28gcGxlYXNlIHRyeSBpZiBpdAotJSB3b3JrcyB3aXRoIHdoYXRldmVyIHlvdSBuZWVkLCBhbmQgaWYgaXQgZG9lcywKLSUgcGxlYXNlIHRlbGwgbWUsIGFuZCBpZiBpdCBkb2VzIG5vdCwgdGVsbCBtZSBhcwotJSB3ZWxsLCBzbyBJIGNhbiB0cnkgdG8gZml4IGl0LgotJQotJSBUaGlzIHN0eWxlIG9wdGlvbiBpcyB3cml0dGVuIGZvciBcTGFUZVhlLCBsYXRlciB0aGFuIE5vdmVtYmVyIDE5OTQsCi0lIHNpbmNlIHdlIG5lZWQgdGhlIH5ccHJvdGVjdGVkQHdyaXRlfiBtYWNyby4KLQotXE5lZWRzVGVYRm9ybWF0e0xhVGVYMmV9WzE5OTQvMTEvMDRdCi1cUHJvdmlkZXNQYWNrYWdle3N0eWxlcy9saW5lbm99Ci0gIFsyMDAzLzExLzEyIGxpbmUgbnVtYmVycyBvbiBwYXJhZ3JhcGhzIHYzLjEwYV0KLQotJSUgdjEuMDAgMTk5NS8wMy8zMSAgU0lCOiBmaXJzdCByZWxlYXNlIGZvciBQZXRyYXMgaW50ZXJ2aWV3IHRyYW5zY3JpcHRpb25zCi0lJSB2MS4wMSAxOTk1LzEwLzI4ICBTSUI6IGFkZGVkIH5wYWdld2lzZX4gbW9kZQotJSUgdjEuMDIgMTk5NS8xMS8xNSAgU0lCOiBhZGRlZCB+bW9kdWxvfiBvcHRpb24gIAotJSUgdjEuMDMgMTk5NS8xMi8wNSAgU0lCOiBwYWdld2lzZTogdHJ5IHRvIHJlZHVjZSB0aGUgaGFzaC1zaXplIHJlcXVpcmVtZW50cwotJSUgdjIuMDAgMTk5NS8xMi8wNiAgU0lCOiAgIC4uIGl0IHdvcmtzLCBuZXcgdXNlciBpbnRlcmZhY2UKLSUlIHYyLjAxIDE5OTYvMDkvMTcgIFNJQjogcHV0IGludG8gQ1ZTCi0lJSB2Mi4wMiAxOTk3LzAzLzE3ICBTSUI6IGFkZDogXEByZWluc2VydHMsIGZvciBmb290bm90ZXMKLSUlIHYyLjA0IDE5OTgvMDMvMDkgIFNJQjogYWRkOiBsaW5lbm9tYXRoIGVudmlyb25tZW50Ci0lJSB2Mi4wNSAxOTk4LzA0LzI2ICBTSUI6IGFkZDogcHJldmdyYWYgdGVzdAotJSUgdjIuMDYgMTk5OS8wMy8wMiAgU0lCOiBMUFBMIGFkZGVkCi0lJSB2My4wMCAxOTk5LzA2LzExICBTaUI6IGluY2x1ZGUgdGhlIGV4dGVuc2lvbiBpbiB0aGUgbWFpbiBmaWxlCi0lJSB2My4wMSAxOTk5LzA4LzI4ICBTaUI6IFxAcmVpbnNlcnRzIC0+IFxob2xkaW5naW5zZXJ0cwotJSUgdjMuMDIgMjAwMC8wMy8xMCAgU2lCOiBcQExOQG91dHB1dAotJSUgdjMuMDMgMjAwMC8wNy8wMSAgU2lCOiBcQExOQEV4dHJhTGFiZWxJdGVtcywgaHlwZXJyZWYKLSUlIHYzLjA0IDIwMDAvMTIvMTcgIFNpQjogbG9uZ3RhYmxlIGNvbXBhdGliaWxpdHkuCi0lJSB2My4wNSAyMDAxLzAxLzAyICBTaUI6IFtmbGVxbl0gZGV0ZWN0aW9uLiAKLSUlIHYzLjA1YSAyMDAxLzAxLzA0IFNpQjogW2ZsZXFuXSBkZXRlY3Rpb24gcmV2ZXJ0ZWQgZm9yIGVxbmFycmF5LiAKLSUlIHYzLjA2IDIwMDEvMDEvMTcgIFNpQjogW3R3b2NvbHVtbl0gbW9kZSBzdXBwb3J0LgotJSUgdjMuMDcgMjAwMS8wNy8zMCAgU2lCOiBbaHlwZXJyZWZdIG9wdGlvbiBvYnNvbGV0ZWQuCi0lJSB2My4wOCAyMDAxLzA4LzAyICBTaUI6IGxpbmVub21hdGggd3JhcHBpbmcgZm9yIFxbIFxdCi0lJSB2My4wOGEgMjAwMS8wOC8wNCAgU2lCOiBsaW5lbm9tYXRoIHdyYXBwaW5nIGZvciBcWyBcXSBmaXhlZAotJSUgdjMuMDhiIDIwMDIvMDEvMjcgIFNpQjogZW5xdW90YXRpb24gdHlwbyBmaXgKLSUlIHYzLjA5IDIwMDMvMDEvMTQgIFNJQjogaHlwZXJyZWYgZGV0ZWN0aW9uIGZpeAotJSUgdjMuMTAgMjAwMy8wNC8xNSAgRk1pOiBcTWFrZUxpbmVObyBmaXggZm9yIGRlZXAgYm94ZXMKLSUlIHYzLjEwYSAyMDAzLzExLzEyICBVd2UgTPxjazogXGxpbmVyZWYgdHlwbyBmaXgKLSUlCi0lJSBBY2tub3dsZWRnZW1lbnRzOgotJSUgdjMuMDY6ICBEb25hbGQgQXJzZW5lYXUsIHBvaW50ZWQgdG8gbXBhcmhhY2suc3R5LgotJSUgdjMuMDcrOiBGcmFuayBNaXR0ZWxiYWNoLCBwb2ludHMgb3V0IGluY29uc2lzdGVuY2llcyBpbiB0aGUKLSUlICAgICAgICAgdXNlciBpbnRlcmZhY2UuCi0lJSB2My4xMDogRnJhbmsgTWl0dGVsYmFjaCBcTWFrZUxpbmVObyBmaXggZm9yIGRlZXAgYm94ZXMKLSUKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzZWN0aW9uewotJSAgICAgICAgICBQdXQgdGhlIGxpbmUgbnVtYmVycyB0byB0aGUgbGluZXMKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotJSBUaGUgbGluZSBudW1iZXJzIGhhdmUgdG8gYmUgYXR0YWNoZWQgYnkgdGhlIG91dHB1dAotJSByb3V0aW5lLiAgV2Ugc2ltcGx5IHNldCB0aGUgflxpbnRlcmxpbmVwZW5hbHR5fiB0byAtMTAwMDAwLgotJSBUaGUgb3V0cHV0IHJvdXRpbmUgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgZWFjaCBsaW5lIGluIHRoZQotJSBwYXJhZ3JhcGgsICBleGNlcHQgdGhlIGxhc3QsICB3aGVyZSB3ZSB0cmlnZ2VyIGJ5IH5ccGFyfi4KLSUgVGhlIH5cbGluZW5vcGVuYWx0eX4gaXMgc21hbGwgZW5vdWdoIHRvIGNvbXBlbnNhdGUgYSBidW5jaCBvZgotJSBwZW5hbHRpZXMgKGUuZy4sIHdpdGggflxzYW1lcGFnZX4pLgotJQotJSAoTmV3IHYzLjA0KSAgICAgICAgICAgIExvbmd0YWJsZSB1c2VzIAotJSB+XHBlbmFseX4tMzAwMDAuICBUaGUgbGluZW5vIHBlbmFsdHkgcmFuZ2Ugd2FzIAotJSBzaHJ1bmsgdG8gJC0xODgwMDAgXGRvdHMgLTMyMDAwJC4gICgvTmV3IHYzLjA0KQotCi1cbmV3Y291bnRcbGluZW5vcGVuYWx0eVxsaW5lbm9wZW5hbHR5PS0xMDAwMDAKLVxtYXRoY2hhcmRlZlxsaW5lbm9wZW5hbHR5cGFyPTMyMDAwCi0KLSUgU28gbGV0J3MgbWFrZSBhIGhvb2sgdG8gflxvdXRwdXR+LCAgdGhlIGRpcmVjdCB3YXkuIFRoZSBcTGFUZVhcIAotJSBtYWNybyB+XEByZWluc2VydHN+IHB1dHMgdGhlIGZvb3Rub3RlcyBiYWNrIG9uIHRoZSBwYWdlLgotJQotJSAoTmV3IHYzLjAxKSAgICAgICAgICAgICAgICB+XEByZWluc2VydHN+IGJhZGx5Ci0lIHNjcmV3cyB1cCBzcGxpdCBmb290bm90ZXMuICBUaGUgYm90dG9tIHBhcnQgaXMKLSUgc3RpbGwgb24gdGhlIHJlY2VudCBjb250cmlidXRpb25zIGxpc3QsIGFuZCB0aGUKLSUgdG9wIHBhcnQgd2lsbCBiZSBwdXQgYmFjayB0aGVyZSBhZnRlciB0aGUgYm90dG9tCi0lIHBhcnQuIFRodXMsIHNpbmNlIGxpbmVuby5zdHkgZG9lcyBub3QgcGxheSB3ZWxsCi0lIHdpdGggflxpbnNlcnRzfiBhbnl3YXksIHdlIGNhbiBzYWZlbHkgZXhwZXJpbWVudAotJSB3aXRoIH5caG9sZGluZ2luc2VydHN+LCB3aXRob3V0IG1ha2luZyB0aGluZ3MKLSUgbXVjaCB3b3JzZS4gICAgCi0lCi0lIE9yIHRoYXQncyB3aGF0IEkgdGhvdWdodCwgYnV0OiAgSnVzdCBhY3RpdmF0aW5nCi0lIH5caG9sZGluZ2luc2VydHN+IHdoaWxlIGRvaW5nIHRoZSB+XHBhcn4gd2lsbAotJSBub3QgZG8gdGhlIHRyaWNrOiAgVGhlIH5cb3V0cHV0fiByb3V0aW5lIG1heSBiZQotJSBjYWxsZWQgZm9yIGEgcmVhbCBwYWdlIGJyZWFrIGJlZm9yZSBhbGwgbGluZQotJSBudW1iZXJzIGFyZSBkb25lLCBhbmQgaG93IGNhbiB3ZSBnZXQgY29udHJvbAotJSBvdmVyIH5caG9sZGluZ2luc2VydHN+IGF0IHRoYXQgcG9pbnQ/Ci0lCi0lIExldCdzIHRyeSB0aGlzOiAgV2hlbiB0aGUgflxvdXRwdXR+IHJvdXRpbmUgaXMKLSUgcnVuIHdpdGggflxob2xkaW5naW5zZXJ0cz0zfiBmb3IgYSByZWFsIHBhZ2UKLSUgYnJlYWssIHRoZW4gd2UgcmVzZXQgflxob2xkaW5naW5zZXJ0c34gYW5kCi0lIHJlc3RhcnQgflxvdXRwdXR+LgotJQotJSBUaGVuLCBhZ2FpbiwgaG93IGRvIHdlIGtlZXAgdGhlIHJlbWFpbmluZwotJSB+XGluc2VydHN+IHdoaWxlIGRvaW5nIGZ1cnRoZXIgbGluZSBudW1iZXJzPyAKLSUKLSUgSWYgd2UgZmluZCB+XGhvbGRpbmdpbnNlcnRzfj0tMyB3ZSBhY3RpdmF0ZSBpdCBhZ2FpbiAKLSUgYWZ0ZXIgZG9pbmcgflxvdXRwdXR+LiAgICAgICAgICAgICAoL05ldyB2My4wMSkKLSUKLSUgKE5ldyB2My4wMikgICAgICAgICAgICAgICAgICAgIFRvIHdvcmsgd2l0aAotJSBtdWx0aWNvbC5zdHksIHRoZSBvcmlnaW5hbCBvdXRwdXQgcm91dGluZSBpcyBub3cKLSUgY2FsbGVkIGluZGlyZWN0bHksIGluc3RlYWQgb2YgYmVpbmcgcmVwbGFjZWQuCi0lIFdoZW4gbXVsdGljb2wuc3R5IGNoYW5nZXMgflxvdXRwdXR+LCBpdCBpcyBhCi0lIHRva3MgcmVnaXN0ZXIsIG5vdCB0aGUgcmVhbCB0aGluZy4gKC9OZXcgdjMuMDIpCi0KLVxsZXRcQExOQG91dHB1dFxvdXRwdXQKLVxuZXd0b2tzXG91dHB1dAotXG91dHB1dD1cZXhwYW5kYWZ0ZXJ7XHRoZVxATE5Ab3V0cHV0fQotXEBMTkBvdXRwdXQ9eyUKLSAgICAgICAgICAgIFxMaW5lTm9UZXN0Ci0gICAgICAgICAgICBcaWZAdGVtcHN3YQotICAgICAgICAgICAgICBcTGluZU5vSG9sZEluc2VydHNUZXN0Ci0gICAgICAgICAgICAgIFxpZkB0ZW1wc3dhCi0gICAgICAgICAgICAgICAgIFxpZkB0d29jb2x1bW5cbGV0XEBtYWtlY29sXEBMTkBtYWtlY29sXGZpCi0gICAgICAgICAgICAgICAgIFx0aGVcb3V0cHV0Ci0gICAgICAgICAgICAgICAgIFxpZm51bVxob2xkaW5naW5zZXJ0cz0tMwotICAgICAgICAgICAgICAgICAgIFxnbG9iYWxcaG9sZGluZ2luc2VydHMgMwotICAgICAgICAgICAgICAgICBcZmkKLSAgICAgICAgICAgICAgXGVsc2UKLSAgICAgICAgICAgICAgICAgXGdsb2JhbFxob2xkaW5naW5zZXJ0cy0zCi0gICAgICAgICAgICAgICAgIFx1bnZib3hcQGNjbHYKLSAgICAgICAgICAgICAgICAgXGlmbnVtXG91dHB1dHBlbmFsdHk9MTAwMDBcZWxzZQotICAgICAgICAgICAgICAgICAgIFxwZW5hbHR5XG91dHB1dHBlbmFsdHkKLSAgICAgICAgICAgICAgICAgXGZpCi0gICAgICAgICAgICAgIFxmaQotICAgICAgICAgICAgXGVsc2UgIAotICAgICAgICAgICAgICBcTWFrZUxpbmVObwotICAgICAgICAgICAgXGZpCi0gICAgICAgICAgICB9Ci0KLSUgVGhlIGZsb2F0IG1lY2hhbmlzbSBpbnNlcnRzIH5caW50ZXJsaW5lcGVuYWx0eX5zIGR1cmluZwotJSB+XG91dHB1dH4uICBTbyBjYXJlZnVsbHkgcmVzZXQgaXQgYmVmb3JlIGdvaW5nIG9uLiAgRWxzZQotJSB3ZSBnZXQgZG91YmxlZCBsaW5lIG51bWJlcnMgb24gZXZlcnkgZmxvYXQgcGxhY2VkIGluCi0lIGhvcml6b250YWwgbW9kZSwgZS5nLCBmcm9tIH5cbGluZWxhYmVsfi4gIAotJQotJSBTb3JyeSwgbmVpdGhlciBhIH5cbGluZWxhYmVsfiBub3IgYSB+XG1hcmdpbnBhcn4gc2hvdWxkCi0lIGluc2VydCBhIHBlbmFsdHksIGVsc2UgdGhlIGZvbGxvd2luZyBsaW5lbnVtYmVyCi0lIGNvdWxkIGdvIHRvIHRoZSBuZXh0IHBhZ2UuIE5vciBzaG91bGQgYW55IG90aGVyCi0lIGZsb2F0LiAgU28gbGV0IHVzIHN1cHByZXNzIHRoZSB+XGludGVybGluZXBlbmFsdHl+IAotJSBhbHRvZ2V0aGVyIHdpdGggdGhlIH5cQG5vYnJlYWt+IHN3aXRjaC4KLSUKLSUgU2luY2UgKGx0c3BhY2UuZHR4LCB2MS4ycClbMTk5Ni8wNy8yNl0sIHRoZSB+XEBub2JyZWFrdHJ1ZX4gZG9lcwotJSBpdCdzIGpvYiBnbG9iYWxseS4gIFdlIG5lZWQgdG8gZG8gaXQgbG9jYWxseSBoZXJlLgotCi1cZGVmXExpbmVOb1Rlc3R7JQotICBcbGV0XEBAcGFyXEBAQHBhcgotICBcaWZudW1caW50ZXJsaW5lcGVuYWx0eTwtXGxpbmVub3BlbmFsdHlwYXIKLSAgICAgXGFkdmFuY2VcaW50ZXJsaW5lcGVuYWx0eS1cbGluZW5vcGVuYWx0eQotICAgICBcbXlAbm9icmVha3RydWUKLSAgICAgXGZpCi0gIFxAdGVtcHN3YXRydWUKLSAgXGlmbnVtXG91dHB1dHBlbmFsdHk+LVxsaW5lbm9wZW5hbHR5cGFyXGVsc2UKLSAgICAgXGlmbnVtXG91dHB1dHBlbmFsdHk+LTE4ODAwMFxyZWxheAotICAgICAgIFxAdGVtcHN3YWZhbHNlCi0gICAgICAgXGZpCi0gICAgIFxmaQotICB9Ci0KLVxkZWZcbXlAbm9icmVha3RydWV7XGxldFxpZkBub2JyZWFrXGlmdHJ1ZX0KLQotXGRlZlxMaW5lTm9Ib2xkSW5zZXJ0c1Rlc3R7JQotICBcaWZudW1caG9sZGluZ2luc2VydHM9M1xyZWxheAotICAgIFxAdGVtcHN3YWZhbHNlCi0gIFxmaQotICB9Ci0gICAgIAotJSBXZSBoYXZlIHRvIHJldHVybiBhbGwgdGhlIHBhZ2UgdG8gdGhlIGN1cnJlbnQgcGFnZSwgYW5kCi0lIGFkZCBhIGJveCB3aXRoIHRoZSBsaW5lIG51bWJlciwgd2l0aG91dCBhZGRpbmcKLSUgYnJlYWtwb2ludHMsIGdsdWUgb3Igc3BhY2UuICBUaGUgZGVwdGggb2Ygb3VyIGxpbmUgbnVtYmVyCi0lIHNob3VsZCBiZSBlcXVhbCB0byB0aGUgcHJldmlvdXMgZGVwdGggb2YgdGhlIHBhZ2UsIGluCi0lIGNhc2UgdGhlIHBhZ2UgYnJlYWtzIGhlcmUsICBhbmQgdGhlIGJveCBoYXMgdG8gYmUgbW92ZWQgdXAKLSUgYnkgdGhhdCBkZXB0aC4gIAotJQotJSBUaGUgflxpbnRlcmxpbmVwZW5hbHR5fiBjb21lcyBhZnRlciB0aGUgflx2YWRqdXN0fiBmcm9tIGEKLSUgflxsaW5lbGFiZWx+LCAgc28gd2UgaW5jcmVtZW50IHRoZSBsaW5lIG51bWJlciBcZW1waHthZnRlcn0KLSUgcHJpbnRpbmcgaXQuIFRoZSBtYWNybyB+XG1ha2VMaW5lTnVtYmVyfiBwcm9kdWNlcyB0aGUKLSUgdGV4dCBvZiB0aGUgbGluZSBudW1iZXIsIHNlZSBzZWN0aW9uIFxyZWZ7YXBwZWFyYW5jZX0uCi0lCi0lIEZpbmFsbHkgd2UgcHV0IGluIHRoZSBuYXR1cmFsIH5caW50ZXJsaW5lcGVuYWx0eX4sIGV4Y2VwdAotJSBhZnRlciB0aGUgbGFzdCBsaW5lLiAKLSUKLSUgKE5ldyB2My4xMCkgRnJhbmsgTWl0dGVsYmFjaCBwb2ludHMgb3V0IHRoYXQgYm94MjU1IG1heSBiZSAKLSUgbGVzcyBkZWVwIHRoYW4gdGhlIGxhc3QgYm94IGluc2lkZSwgc28gaGUgcHJvcG9zZXMgdG8gCi0lIG1lYXN1cmUgdGhlIHBhZ2UgZGVwdGggd2l0aCB+XGJveG1heGRlcHRoPVxtYXhkaW1lbn4uCi0lICgvTmV3IHYzLjEwKQotCi1cZGVmXE1ha2VMaW5lTm97JQotICAgXGJveG1heGRlcHRoXG1heGRpbWVuXHNldGJveFx6QFx2Ym94e1x1bnZib3hcQGNjbHZ9JQotICAgXEB0ZW1wZGltYVxkcFx6QCBcdW52Ym94XHpACi0gICBcc2JveFxAdGVtcGJveGF7XGhib3ggdG9cekB7XG1ha2VMaW5lTnVtYmVyfX0lCi0gICBcc3RlcGNvdW50ZXJ7bGluZW51bWJlcn0lCi0gICBcZHBcQHRlbXBib3hhPVxAdGVtcGRpbWFcaHRcQHRlbXBib3hhPVx6QAotICAgXG5vaW50ZXJsaW5lc2tpcFxrZXJuLVxAdGVtcGRpbWFcYm94XEB0ZW1wYm94YQotICAgXGlmbnVtXG91dHB1dHBlbmFsdHk9LVxsaW5lbm9wZW5hbHR5cGFyXGVsc2UKLSAgICAgICBcQHRlbXBjbnRhXG91dHB1dHBlbmFsdHkKLSAgICAgICBcYWR2YW5jZVxAdGVtcGNudGEgLVxsaW5lbm9wZW5hbHR5Ci0gICAgICAgXHBlbmFsdHlcQHRlbXBjbnRhCi0gICBcZmkKLSAgIH0KLQotJQotJQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHNlY3Rpb257Ci0lICAgICAgICAgICAgICAgQ29udHJvbCBsaW5lIG51bWJlcmluZwotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0lIFRoZSBsaW5lIG51bWJlcmluZyBpcyBjb250cm9sbGVkIHZpYSB+XHBhcn4uICBcTGFUZVhcCi0lIHNhdmVkIHRoZSBcVGVYLXByaW1pdGl2ZSB+XHBhcn4gaW4gflxAQHBhcn4uICBXZSBwdXNoIGl0Ci0lIG9uZSBsZXZlbCBmdXJ0aGVyIG91dCwgYW5kIHJlZGVmaW5lIH5cQEBwYXJ+IHRvIGluc2VydAotJSB0aGUgflxpbnRlcmxpbmVwZW5hbHR5fiBuZWVkZWQgdG8gdHJpZ2dlciB0aGUKLSUgbGluZSBudW1iZXJpbmcuIEFuZCB3ZSBuZWVkIHRvIGFsbG93IHBhZ2VicmVha3MgYWZ0ZXIgYQotJSBwYXJhZ3JhcGguIAotJSAKLSUgTmV3ICgyLjA1YmV0YSk6IHRoZSBwcmV2Z3JhZiB0ZXN0LiAgQSBwYXJhZ3JhcGggdGhhdCBlbmRzIHdpdGggYQotJSBkaXNwbGF5ZWQgZXF1YXRpb24sIGEgflxub2luZGVudFxwYXJ+IG9yIH53cmFwZmlnLnN0eX4gcHJvZHVjZSBlbXB0eQotJSBwYXJhZ3JhcGhzLiBUaGVzZSBzaG91bGQgbm90IGdldCBhIHNwdXJpb3VzIGxpbmUgbnVtYmVyIHZpYQotJSB+XGxpbmVub3BlbmFsdHlwYXJ+LiAKLQotXGxldFxAQEBwYXJcQEBwYXIKLVxuZXdjb3VudFxsaW5lbm9wcmV2Z3JhZgotCi1cZGVmXGxpbmVudW1iZXJwYXJ7XGlmdm1vZGVcQEBAcGFyXGVsc2VcaWZpbm5lclxAQEBwYXJcZWxzZQotICAgICBcYWR2YW5jZVxpbnRlcmxpbmVwZW5hbHR5IFxsaW5lbm9wZW5hbHR5Ci0gICAgICAgIFxsaW5lbm9wcmV2Z3JhZlxwcmV2Z3JhZgotICAgICAgICBcZ2xvYmFsXGhvbGRpbmdpbnNlcnRzMyUKLSAgICAgICAgXEBAQHBhcgotICAgICAgICBcaWZudW1ccHJldmdyYWY+XGxpbmVub3ByZXZncmFmCi0gICAgICAgICAgIFxwZW5hbHR5LVxsaW5lbm9wZW5hbHR5cGFyCi0gICAgICAgICAgIFxmaQotICAgICAgICBca2Vyblx6QAotICAgICAgICBcZ2xvYmFsXGhvbGRpbmdpbnNlcnRzMCUKLSAgICAgXGFkdmFuY2VcaW50ZXJsaW5lcGVuYWx0eSAtXGxpbmVub3BlbmFsdHkKLSAgICAgXGZpXGZpCi0gICAgIH0KLQotJSBUaGUgYmFzaWMgY29tbWFuZHMgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIGxpbmUgbnVtYmVycy4KLSUgflxAcGFyfiBhbmQgflxwYXJ+IGFyZSBvbmx5IHRvdWNoZWQsIHdoZW4gdGhleSBhcmUgflxsZXR+IAotJSB0byB+XEBAQHBhcn4vflxsaW5lbnVtYmVycGFyfi4gIFRoZSBsaW5lIG51bWJlciBtYXkgYmUKLSUgcmVzZXQgdG8gMSB3aXRoIHRoZSBzdGFyLWZvcm0sIG9yIHNldCBieSBhbiBvcHRpb25hbAotJSBhcmd1bWVudCB+W348bnVtYmVyPn5dfi4gCi0KLVxkZWZcbGluZW51bWJlcnN7XGxldFxAQHBhclxsaW5lbnVtYmVycGFyCi0gICAgIFxpZnhcQHBhclxAQEBwYXJcbGV0XEBwYXJcbGluZW51bWJlcnBhclxmaQotICAgICBcaWZ4XHBhclxAQEBwYXJcbGV0XHBhclxsaW5lbnVtYmVycGFyXGZpCi0gICAgIFxAaWZuZXh0Y2hhclt7XHJlc2V0bGluZW51bWJlcn0lXQotICAgICAgICAgICAgICAgICB7XEBpZnN0YXJ7XHJlc2V0bGluZW51bWJlcn17fX0lCi0gICAgIH0KLQotXGRlZlxub2xpbmVudW1iZXJze1xsZXRcQEBwYXJcQEBAcGFyCi0gIFxpZnhcQHBhclxsaW5lbnVtYmVycGFyXGxldFxAcGFyXEBAQHBhclxmaQotICBcaWZ4XHBhclxsaW5lbnVtYmVycGFyXGxldFxwYXJcQEBAcGFyXGZpCi0gIH0KLQotJSBXaGF0IGhhcHBlbnMgd2l0aCBhIGRpc3BsYXkgbWF0aD8gIFNpbmNlIH5ccGFyfiBpcyBub3QgZXhlY3V0ZWQsCi0lIHdoZW4gYnJlYWtpbmcgdGhlIGxpbmVzIGJlZm9yZSBhIGRpc3BsYXksIHRoZXkgd2lsbCBub3QgZ2V0Ci0lIGxpbmUgbnVtYmVycy4gIFNvcnJ5LCBidXQgSSBkbyBub3QgZGFyZSB0byBjaGFuZ2UKLSUgflxpbnRlcmxpbmVwZW5hbHR5fiBnbG9iYWxseSwgbm9yIGRvIEkgd2FudCB0byByZWRlZmluZQotJSB0aGUgZGlzcGxheSBtYXRoIGVudmlyb25tZW50cyBoZXJlLgotJSAgIFxiZWdpbntkaXNwbGF5bWF0aH0KLSUgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgXCBtYXRoCi0lICAgXGVuZHtkaXNwbGF5bWF0aH0KLSUgU2VlIHRoZSBzdWJzZWN0aW9uIGJlbG93LCBmb3IgYSB3cmFwcGVyIGVudmlyb21lbnQgdG8gbWFrZQotJSBpdCB3b3JrLiAgQnV0IHRoYXQgcmVxdWlyZXMgdG8gd3JhcCBlYWNoIGFuZCBldmVyeSBkaXNwbGF5Ci0lIGluIHlvdXIgTGFUZVggc291cmNlLgotJQotJSBUaGUgbmV4dCB0d28gY29tbWFuZHMgYXJlIHByb3ZpZGVkIHRvIHR1cm4gb24gbGluZQotJSBudW1iZXJpbmcgaW4gYSBzcGVjaWZpYyBtb2RlLiBQbGVhc2Ugbm90ZSB0aGUgZGlmZmVyZW5jZToKLSUgZm9yIHBhZ2V3aXNlIG51bWJlcmluZywgflxsaW5lbnVtYmVyc34gY29tZXMgZmlyc3QgdG8KLSUgaW5oaWJpdCBpdCBmcm9tIHNlZWluZyBvcHRpb25hbCBhcmd1bWVudHMsIHNpbmNlCi0lIHJlLS9wcmVzZXR0aW5nIHRoZSBjb3VudGVyIGlzIHVzZWxlc3MuIAotCi1cZGVmXHBhZ2V3aXNlbGluZW51bWJlcnN7XGxpbmVudW1iZXJzXHNldHBhZ2V3aXNlbGluZW51bWJlcnN9Ci1cZGVmXHJ1bm5pbmdsaW5lbnVtYmVyc3tcc2V0cnVubmluZ2xpbmVudW1iZXJzXGxpbmVudW1iZXJzfQotCi0lIEZpbmFsbHksIGl0IGlzIGEgXExhVGVYXCBzdHlsZSwgc28gd2UgcHJvdmlkZSBmb3IgdGhlIHVzZQotJSBvZiBlbnZpcm9ubWVudHMsIGluY2x1ZGluZyB0aGUgc3VwcHJlc3Npb24gb2YgdGhlCi0lIGZvbGxvd2luZyBwYXJhZ3JhcGgncyBpbmRlbnRhdGlvbi4KLQotJSUlIFRPIERPOiBhZGQgXHBhciB0byBcbGluZW51bWJlcnMsIGlmIGNhbGxlZCBmcm9tIGFuIGVudmlyb25tZW50LgotJSUlIFRvIERPOiBhZGQgYW4gXEBlbmRwZSBoYWNrIGlmIFxsaW5lbnVtYmVycyBhcmUgdHVybmVkIG9uCi0lJSUgICAgICAgIGluIGhvcml6b250YWwgbW9kZS4ge1xwYXJccGFyc2tpcFx6QFxub2luZGVudH0gb3IKLSUlJSAgICAgICAgc29tZXRoaW5nLgotCi1cQG5hbWVkZWZ7bGluZW51bWJlcnMqfXtccGFyXGxpbmVudW1iZXJzKn0KLVxAbmFtZWRlZntydW5uaW5nbGluZW51bWJlcnMqfXtccGFyXHJ1bm5pbmdsaW5lbnVtYmVycyp9Ci0KLVxkZWZcZW5kbGluZW51bWJlcnN7XHBhclxAZW5kcGV0cnVlfQotXGxldFxlbmRydW5uaW5nbGluZW51bWJlcnNcZW5kbGluZW51bWJlcnMKLVxsZXRcZW5kcGFnZXdpc2VsaW5lbnVtYmVyc1xlbmRsaW5lbnVtYmVycwotXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgZW5kbGluZW51bWJlcnMqXGVuZGNzbmFtZVxlbmRsaW5lbnVtYmVycwotXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgZW5kcnVubmluZ2xpbmVudW1iZXJzKlxlbmRjc25hbWVcZW5kbGluZW51bWJlcnMKLVxsZXRcZW5kbm9saW5lbnVtYmVyc1xlbmRsaW5lbnVtYmVycwotCi0lCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc3Vic2VjdGlvbnsKLSUgICAgICAgICAgICAgICAgICBEaXNwbGF5IG1hdGgKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotJQotJSBOb3cgd2UgdGFja2xlIHRoZSBwcm9ibGVtIHRvIGdldCBkaXNwbGF5IG1hdGggd29ya2luZy4gIAotJSBUaGVyZSBhcmUgZGlmZmVyZW50IG9wdGlvbnMuCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGJlZ2lue2VudW1lcmF0ZX1caXRlbVsKLSUgMS5dICBQcmVjZWRlIGV2ZXJ5IGRpc3BsYXkgbWF0aCB3aXRoIGEgflxwYXJ+LiAgCi0lICAgICAgTm90IHRvbyBnb29kLgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGl0ZW1bCi0lIDIuXSAgQ2hhbmdlIH5caW50ZXJsaW5lcGVuYWx0eX4gYW5kIGFzc29jaWF0ZXMgZ2xvYmFsbHkuICAKLSUgICAgICBVbnN0YWJsZS4KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtWwotJSAzLl0gIFdyYXAgZWFjaCBkaXNwbGF5IG1hdGggd2l0aCBhIH57bGluZW5vbWF0aH1+ICAKLSUgICAgICBlbnZpcm9ubWVudC4gCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcZW5ke2VudW1lcmF0ZX0KLSUgV2UnbGwgZ28gZm9yIG9wdGlvbiAzLiAgU2VlIGlmIGl0IHdvcmtzOiAgCi0lIFxiZWdpbntsaW5lbm9tYXRofQotJSAgIFxiZWdpbntlcXVhdGlvbn0KLSUgICAgICBkaXNwbGF5IFwgbWF0aAotJSAgIFxlbmR7ZXF1YXRpb259Ci0lIFxlbmR7bGluZW5vbWF0aH0KLSUgVGhlIHN0YXIgZm9ybSB+e2xpbmVub21hdGgqfX4gc2hvdWxkIGFsc28gbnVtYmVyIHRoZSBsaW5lcwotJSBvZiB0aGUgZGlzcGxheSBpdHNlbGYsCi0lIFxiZWdpbntsaW5lbm9tYXRoKn0KLSUgICBcYmVnaW57ZXFuYXJyYXl9Ci0lICAgICBtdWx0aSAgICYmIGxpbmUgXFwKLSUgICAgIGRpc3BsYXkgJiYgbWF0aCBcXAotJSAgICAgJiAKLSUgICAgIFxiZWdpbnthcnJheX17Y30KLSUgICAgICAgd2l0aCBcXAotJSAgICAgICBhcnJheQotJSAgICAgXGVuZHthcnJheX0KLSUgICAgICYKLSUgICBcZW5ke2VxbmFycmF5fQotJSBcZW5ke2xpbmVub21hdGgqfQotJSBpbmNsdWRpbmcgbXVsdGxpbmUgZGlzcGxheXMuCi0lIAotJSBGaXJzdCwgaGVyZSBhcmUgdHdvIG1hY3JvcyB0byB0dXJuCi0lIG9uIGxpbmVudW1iZXJpbmcgb24gcGFyYWdyYXBocyBwcmVjZWVkaW5nIGRpc3BsYXlzLCB3aXRoCi0lIG51bWJlcmluZyB0aGUgbGluZXMgb2YgdGhlIGRpc3BsYXkgaXRzZWxmLCBvciB3aXRob3V0LgotJSBUaGUgflxpZnguLn4gdGVzdHMgaWYgbGluZSBudW1iZXJpbmcgaXMgdHVybmVkIG9uLiAgSXQKLSUgZG9lcyBub3QgaGFybSB0byBhZGQgdGhlc2Ugd3JhcHBlcnMgaW4gc2VjdGlvbnMgdGhhdCBhcmUKLSUgbm90IG51bWJlcmVkLiAgTm9yIGRvZXMgaXQgaGFybSB0byB3cmFwIGEgZGlzcGxheQotJSB0d2ljZSwgZS5xLCBpbiBjYXNlIHlvdSBoYXZlIHNvbWUgfntlcXVhdGlvbn1+cyB3cmFwcGVkCi0lIGV4cGxpY2l0ZWx5LCBhbmQgbGF0ZXIgeW91IHJlZGVmaW5lIH5cZXF1YXRpb25+IHRvIGRvIGl0Ci0lIGF1dG9tYXRpY2FsbHkuIAotCi1cbmV3Y29tbWFuZFxsaW5lbm9tYXRoTm9udW1iZXJzeyUKLSAgXGlmeFxAQHBhclxAQEBwYXJcZWxzZSAgCi0gICAgXGlmbnVtXGludGVybGluZXBlbmFsdHk+LVxsaW5lbm9wZW5hbHR5cGFyCi0gICAgICBcZ2xvYmFsXGhvbGRpbmdpbnNlcnRzMyUKLSAgICAgIFxhZHZhbmNlXGludGVybGluZXBlbmFsdHkgXGxpbmVub3BlbmFsdHkKLSAgICAgIFxhZHZhbmNlXHByZWRpc3BsYXlwZW5hbHR5IFxsaW5lbm9wZW5hbHR5Ci0gICAgXGZpCi0gIFxmaQotICBcaWdub3Jlc3BhY2VzCi0gIH0KLQotXG5ld2NvbW1hbmRcbGluZW5vbWF0aFdpdGhudW1iZXJzeyUKLSAgXGlmeFxAQHBhclxAQEBwYXJcZWxzZQotICAgIFxpZm51bVxpbnRlcmxpbmVwZW5hbHR5Pi1cbGluZW5vcGVuYWx0eXBhcgotICAgICAgXGdsb2JhbFxob2xkaW5naW5zZXJ0czMlCi0gICAgICBcYWR2YW5jZVxpbnRlcmxpbmVwZW5hbHR5IFxsaW5lbm9wZW5hbHR5Ci0gICAgICBcYWR2YW5jZVxwcmVkaXNwbGF5cGVuYWx0eSBcbGluZW5vcGVuYWx0eQotICAgICAgXGFkdmFuY2VccG9zdGRpc3BsYXlwZW5hbHR5IFxsaW5lbm9wZW5hbHR5Ci0gICAgICBcYWR2YW5jZVxpbnRlcmRpc3BsYXlsaW5lcGVuYWx0eSBcbGluZW5vcGVuYWx0eQotICAgIFxmaQotICBcZmkKLSAgXGlnbm9yZXNwYWNlcwotICB9Ci0KLSUgVGhlIH57bGluZW5vbWF0aH1+IGVudmlyb25tZW50IGhhcyB0d28gZm9ybXMsIHdpdGggYW5kCi0lIHdpdGhvdXQgYSBzdGFyLiAgVGhlIGZvbGxvd2luZyB0d28gbWFjcm9zIGRlZmluZSB0aGUKLSUgZW52aXJvbm1lbnQsIHdoZXJlIHRoZSBzdGFyZWQvbm9uLXN0YXJlZCBmb3JtIGRvZXMvZG9lc24ndCBudW1iZXIgdGhlCi0lIGxpbmVzIG9mIHRoZSBkaXNwbGF5IG9yIHZpY2UgdmVyc2EuCi0KLVxuZXdjb21tYW5kXGxpbmVudW1iZXJkaXNwbGF5bWF0aHslCi0gIFxkZWZcbGluZW5vbWF0aHtcbGluZW5vbWF0aFdpdGhudW1iZXJzfSUKLSAgXEBuYW1lZGVme2xpbmVub21hdGgqfXtcbGluZW5vbWF0aE5vbnVtYmVyc30lCi0gIH0KLQotXG5ld2NvbW1hbmRcbm9saW5lbnVtYmVyZGlzcGxheW1hdGh7JQotICBcZGVmXGxpbmVub21hdGh7XGxpbmVub21hdGhOb251bWJlcnN9JQotICBcQG5hbWVkZWZ7bGluZW5vbWF0aCp9e1xsaW5lbm9tYXRoV2l0aG51bWJlcnN9JQotICB9Ci0KLVxkZWZcZW5kbGluZW5vbWF0aHslCi0gICBcZ2xvYmFsXGhvbGRpbmdpbnNlcnRzMAotICAgXEBpZ25vcmV0cnVlCi19Ci1cZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBlbmRsaW5lbm9tYXRoKlxlbmRjc25hbWVcZW5kbGluZW5vbWF0aAotCi0lIFRoZSBkZWZhdWx0IGlzIG5vdCB0byBudW1iZXIgdGhlIGxpbmVzIG9mIGEgZGlzcGxheS4gIEJ1dAotJSB0aGUgcGFja2FnZSBvcHRpb24gfm1hdGhsaW5lc34gbWF5IGJlIHVzZWQgdG8gc3dpdGNoCi0lIHRoYXQgYmVoYXZpb3IuCi0KLVxub2xpbmVudW1iZXJkaXNwbGF5bWF0aAotCi0lCi0lCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc2VjdGlvbnsKLSUgICAgICAgICAgICAgICBMaW5lIG51bWJlciByZWZlcmVuY2VzCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSUgVGhlIG9ubHkgd2F5IHRvIGdldCBhIGxhYmVsIHRvIGEgbGluZSBudW1iZXIgaW4gYQotJSBwYXJhZ3JhcGggaXMgdG8gYXNrIHRoZSBvdXRwdXQgcm91dGluZSB0byBtYXJrIGl0LgotJQotJSBXZSB1c2UgdGhlIG1hcmdpbnBhciBtZWNoYW5pc20gdG8gaG9vayB0byB+XG91dHB1dH4gZm9yIGEKLSUgc2Vjb25kIHRpbWUuICBNYXJnaW5wYXJzIGFyZSBmbG9hdHMgd2l0aCBudW1iZXIgJC0xJCwgd2UKLSUgZmFrZSBtYXJnaW5wYXJzIHdpdGggTm8gJC0yJC4gT3JpZ2luYWxseSwgZXZlcnkgbmVnYXRpdmUKLSUgbnVtYmVyZWQgZmxvYXQgd2FzIGNvbnNpZGVyZWQgdG8gYmUgYSBtYXJnaW5wYXIuCi0lCi0lIFRoZSBmbG9hdCBib3ggbnVtYmVyIH5cQGN1cnJib3h+IGlzIHVzZWQgdG8gdHJhbnNmZXIgdGhlCi0lIGxhYmVsIG5hbWUgaW4gYSBtYWNybyBjYWxsZWQgflxATE5MQH48Ym94LW51bWJlcj4uCi0lCi0lIEEgflxuZXdsYWJlbH4gaXMgd3JpdHRlbiB0byB0aGUgYXV4LWZpbGUuICBUaGUgcmVmZXJlbmNlCi0lIGlzIHRvIH5cdGhlTGluZU51bWJlcn4sIFxlbXBoe25vdH0gflx0aGVsaW5lbnVtYmVyfi4KLSUgVGhpcyBhbGxvd3MgdG8gaG9vayBpbiwgYXMgZG9uZSBiZWxvdyBmb3IgcGFnZXdpc2UgbGluZQotJSBudW1iZXJpbmcuIAotJQotJSAoTmV3IHYzLjAzKSBUaGUgflxATE5ARXh0cmFMYWJlbEl0ZW1zfiBhcmUgYWRkZWQgZm9yIGEgaG9vawotJSB0byBrZWVwIHBhY2thZ2VzIGxpa2UgfntoeXBlcnJlZn1+IGhhcHB5LiAgICAgICgvTmV3IHYzLjAzKQotCi1cbGV0XEBMTkBhZGRtYXJnaW5wYXJcQGFkZG1hcmdpbnBhcgotXGRlZlxAYWRkbWFyZ2lucGFyeyUKLSAgIFxpZm51bVxjb3VudFxAY3VycmJveD4tMlxyZWxheAotICAgICBcZXhwYW5kYWZ0ZXJcQExOQGFkZG1hcmdpbnBhcgotICAgXGVsc2UKLSAgICAgXEBjb25zXEBmcmVlbGlzdFxAY3VycmJveAotICAgICBccHJvdGVjdGVkQHdyaXRlXEBhdXhvdXR7fXslCi0gICAgICAgICBcc3RyaW5nXG5ld2xhYmVsCi0gICAgICAgICAgICB7XGNzbmFtZSBATE5MQFx0aGVcQGN1cnJib3hcZW5kY3NuYW1lfSUKLSAgICAgICAgICAgIHt7XHRoZUxpbmVOdW1iZXJ9e1x0aGVwYWdlfVxATE5ARXh0cmFMYWJlbEl0ZW1zfX0lCi0gICBcZml9Ci0KLVxsZXRcQExOQEV4dHJhTGFiZWxJdGVtc1xAZW1wdHkKLQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHN1YnNlY3Rpb257Ci0lICAgICAgIFRoZSBsaW5lbGFiZWwgY29tbWFuZAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0lIFRvIHJlZmVyIHRvIGEgcGxhY2UgaW4gbGluZSB+XHJlZnt+PGZvbz5+fX4gYXQgcGFnZQotJSB+XHBhZ2VyZWZ7fjxmb28+fn1+IHlvdSBwbGFjZSBhIH5cbGluZWxhYmVse348Zm9vPn59fiBhdAotJSB0aGF0IHBsYWNlLgotJQotJSAgICAgICAgICAgICAgICAgICBcbGluZWxhYmVse2RlbW99Ci0lICAgICAgICAgICAgICAgICAgIFxtYXJnaW5wYXJ7XHRpbnlccmFnZ2VkcmlnaHQKLSUgICAgICAgICAgICAgICAgICAgICAgIFNlZSBpZiBpdCB3b3JrczogVGhpcyBwYXJhZ3JhcGgKLSUgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0cyBvbiBwYWdlIFxwYWdlcmVme2RlbW99LCBsaW5lCi0lICAgICAgICAgICAgICAgICAgICAgICBccmVme2RlbW99LiAgCi0lICAgICAgICAgICAgICAgICAgICAgICB9JQotJSBJZiB5b3UgdXNlIHRoaXMgY29tbWFuZCBvdXRzaWRlIGEgflxsaW5lbnVtYmVyc34KLSUgcGFyYWdyYXBoLCB5b3Ugd2lsbCBnZXQgcmVmZXJlbmNlcyB0byBzb21lIGJvZ3VzCi0lIGxpbmUgbnVtYmVycywgc29ycnkuICBCdXQgd2UgZG9uJ3QgZGlzYWJsZSB0aGUgY29tbWFuZCwKLSUgYmVjYXVzZSBvbmx5IHRoZSB+XHBhcn4gYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFwaCAgbWF5Ci0lIGRlY2lkZXMgd2hldGhlciB0byBwcmludCBsaW5lIG51bWJlcnMgb24gdGhpcyBwYXJhZ3JhcGgKLSUgb3Igbm90LiAgQSB+XGxpbmVsYWJlbH4gbWF5IGxlZ2FsbHkgYXBwZWFyIGVhcmxpZXIgdGhhbgotJSB+XGxpbmVudW1iZXJzfi4KLSUKLSUgflxsaW5lbGFiZWx+LCB2aWEgYSBmYWtlIGZsb2F0IG51bWJlciAkLTIkLCBwdXRzIGEKLSUgflxwZW5hbHR5fiBpbnRvIGEgflx2YWRqdXN0fiwgd2hpY2ggdHJpZ2dlcnMgdGhlCi0lIHBhZ2VidWlsZGVyIGFmdGVyIHB1dHRpbmcgdGhlIGN1cnJlbnQgbGluZSB0byB0aGUgbWFpbgotJSB2ZXJ0aWNhbCBsaXN0LiAgQSB+XHdyaXRlfiBpcyBwbGFjZWQgb24gdGhlIG1haW4gdmVydGljYWwKLSUgbGlzdCwgd2hpY2ggcHJpbnRzIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9mCi0lIH5cdGhlbGluZW51bWJlcn4gYW5kIH5cdGhlcGFnZX4gYXQgdGhlIHRpbWUgb2YgdGhlCi0lIH5cc2hpcG91dH4uCi0lCi0lIEEgflxsaW5lbGFiZWx+IGlzIGFsbG93ZWQgb25seSBpbiBvdXRlciBob3Jpem9udGFsIG1vZGUuCi0lIEluIG91dGVyIHZlcnRpY2FsIG1vZGUgd2Ugc3RhcnQgYSBwYXJhZ3JhcGgsIGFuZCBpZ25vcmUKLSUgdHJhaWxpbmcgc3BhY2VzIChieSBmb29saW5nIH5cQGVzcGhhY2t+KS4KLSUKLSUgVGhlIGFyZ3VtZW50IG9mIH5cbGluZWxhYmVsfiBpcyBwdXQgaW50byBhIG1hY3JvIHdpdGggYQotJSBuYW1lIGRlcml2ZWQgZnJvbSB0aGUgbnVtYmVyIG9mIHRoZSBhbGxvY2F0ZWQgZmxvYXQgYm94LgotJSBNdWNoIG9mIHRoZSByZXN0IGlzIGR1bW15IGZsb2F0IHNldHVwLgotCi1cZGVmXGxpbmVsYWJlbCMxeyUKLSAgIFxpZnZtb2RlCi0gICAgICAgXGlmaW5uZXIgXGVsc2UgCi0gICAgICAgICAgXGxlYXZldm1vZGUgXEBic3BoYWNrIFxAc2F2c2tccEAKLSAgICAgICBcZmkKLSAgIFxlbHNlCi0gICAgICAgXEBic3BoYWNrCi0gICBcZmkKLSAgIFxpZmhtb2RlCi0gICAgIFxpZmlubmVyCi0gICAgICAgXEBwYXJtb2RlcnIKLSAgICAgXGVsc2UKLSAgICAgICBcQGZsb2F0cGVuYWx0eSAtXEBNaWkKLSAgICAgICBcQG5leHRcQGN1cnJib3hcQGZyZWVsaXN0Ci0gICAgICAgICAgIHtcZ2xvYmFsXGNvdW50XEBjdXJyYm94LTIlCi0gICAgICAgICAgICBcZXhwYW5kYWZ0ZXJcZ2RlZlxjc25hbWUgQExOTEBcdGhlXEBjdXJyYm94XGVuZGNzbmFtZXsjMX19JQotICAgICAgICAgICB7XEBmbG9hdHBlbmFsdHlcekAgXEBmbHRvdmYgXGRlZlxAY3VycmJveHtcQHRlbXBib3hhfX0lCi0gICAgICAgXGJlZ2luZ3JvdXAKLSAgICAgICAgICAgXHNldGJveFxAY3VycmJveCBcY29sb3JAdmJveCBcdmJveCBcYmdyb3VwIFxlbmRAZmxvYXQKLSAgICAgICBcZW5kZ3JvdXAKLSAgICAgICBcQGlnbm9yZWZhbHNlIFxAZXNwaGFjawotICAgICBcZmkKLSAgIFxlbHNlCi0gICAgIFxAcGFybW9kZXJyCi0gICBcZmkKLSAgIH0KLQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG1vZHVsb2xpbmVudW1iZXJzWzNdCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc2VjdGlvbnsKLSUgICAgICAgICAgICAgICBUaGUgYXBwZWFyYW5jZSBvZiB0aGUgbGluZSBudW1iZXJzCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbGFiZWx7YXBwZWFyYW5jZX0KLSUgVGhlIGxpbmUgbnVtYmVycyBhcmUgc2V0IGFzIH5cdGlueVxzZmZhbWlseVxhcmFiaWN7bGluZW51bWJlcn1+LAotJSAkMTBwdCQgbGVmdCBvZiB0aGUgdGV4dC4gIFdpdGggb3B0aW9ucyB0byBwbGFjZSBpdAotJSByaWdodCBvZiB0aGUgdGV4dCwgb3IgLiAuIC4KLSUKLSUgICAgICAuIC4gLiBoZXJlIGFyZSB0aGUgaG9va3M6Ci0KLVxkZWZcbWFrZUxpbmVOdW1iZXJMZWZ0e1xoc3NcbGluZW51bWJlcmZvbnRcTGluZU51bWJlclxoc2tpcFxsaW5lbnVtYmVyc2VwfQotCi1cZGVmXG1ha2VMaW5lTnVtYmVyUmlnaHR7XGxpbmVudW1iZXJmb250XGhza2lwXGxpbmVudW1iZXJzZXBcaHNraXBcY29sdW1ud2lkdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICBcaGJveCB0b1xsaW5lbnVtYmVyd2lkdGh7XGhzc1xMaW5lTnVtYmVyfVxoc3N9Ci0KLVxkZWZcbGluZW51bWJlcmZvbnR7XG5vcm1hbGZvbnRcdGlueVxzZmZhbWlseX0KLQotXG5ld2RpbWVuXGxpbmVudW1iZXJzZXAKLVxuZXdkaW1lblxsaW5lbnVtYmVyd2lkdGgKLQotXGxpbmVudW1iZXJ3aWR0aD0xMHB0Ci1cbGluZW51bWJlcnNlcD0xMHB0Ci0KLSUgTWFyZ2luIHN3aXRjaGluZyByZXF1aXJlcyB+cGFnZXdpc2V+IG51bWJlcmluZyBtb2RlLCBidXQKLSUgY2hvb3NpbmcgdGhlIGxlZnQgb3IgcmlnaHQgbWFyZ2luIGZvciB0aGUgbnVtYmVycyBhbHdheXMKLSUgd29ya3MuIAotCi1cZGVmXHN3aXRjaGxpbmVudW1iZXJze1xAaWZzdGFyCi0gICAge1xsZXRcbWFrZUxpbmVOdW1iZXJPZGRcbWFrZUxpbmVOdW1iZXJSaWdodAotICAgICBcbGV0XG1ha2VMaW5lTnVtYmVyRXZlblxtYWtlTGluZU51bWJlckxlZnR9JQotICAgIHtcbGV0XG1ha2VMaW5lTnVtYmVyT2RkXG1ha2VMaW5lTnVtYmVyTGVmdAotICAgICBcbGV0XG1ha2VMaW5lTnVtYmVyRXZlblxtYWtlTGluZU51bWJlclJpZ2h0fSUKLSAgICB9Ci0KLVxkZWZcc2V0bWFrZWxpbmVudW1iZXJzIzF7XEBpZnN0YXIKLSAge1xsZXRcbWFrZUxpbmVOdW1iZXJSdW5uaW5nIzElCi0gICBcbGV0XG1ha2VMaW5lTnVtYmVyT2RkIzElCi0gICBcbGV0XG1ha2VMaW5lTnVtYmVyRXZlbiMxfSUKLSAge1xpZnhcY0BsaW5lbnVtYmVyXGNAcnVubmluZ2xpbmVudW1iZXIKLSAgICAgIFxsZXRcbWFrZUxpbmVOdW1iZXJSdW5uaW5nIzElCi0gICBcZWxzZQotICAgICAgXGxldFxtYWtlTGluZU51bWJlck9kZCMxJQotICAgICAgXGxldFxtYWtlTGluZU51bWJlckV2ZW4jMSUKLSAgIFxmaX0lCi0gIH0KLQotXGRlZlxsZWZ0bGluZW51bWJlcnN7XHNldG1ha2VsaW5lbnVtYmVyc1xtYWtlTGluZU51bWJlckxlZnR9Ci1cZGVmXHJpZ2h0bGluZW51bWJlcnN7XHNldG1ha2VsaW5lbnVtYmVyc1xtYWtlTGluZU51bWJlclJpZ2h0fQotCi1cbGVmdGxpbmVudW1iZXJzKgotCi0lIH5cTGluZU51bWJlcn4gaXMgYSBob29rIHdoaWNoIGlzIHVzZWQgZm9yIHRoZSBtb2R1bG8gc3R1ZmYuCi0lIEl0IGlzIHRoZSBjb21tYW5kIHRvIHVzZSBmb3IgdGhlIGxpbmUgbnVtYmVyLCB3aGVuIHlvdQotJSBjdXN0b21pemVzIH5cbWFrZUxpbmVOdW1iZXJ+LiAgVXNlIH5cdGhlbGluZW51bWJlcn4gdG8KLSUgY2hhbmdlIHRoZSBvdXRmaXQgb2YgdGhlIGRpZ2l0cy4KLSUKLSUKLSUgV2Ugd2lsbCBpbXBsZW1lbnQgdHdvIG1vZGVzIG9mIG9wZXJhdGlvbjoKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxiZWdpbntpdGVtaXplfQotJSBcaXRlbSAgbnVtYmVycyB+cnVubmluZ34gdGhyb3VnaCAocGFydHMgb2YpIHRoZSB0ZXh0Ci0lIFxpdGVtICB+cGFnZXdpc2V+IG51bWJlcnMgc3RhcnRpbmcgb3ZlciB3aXRoIG9uZSBvbiB0b3Agb2YKLSUgICAgICAgIGVhY2ggcGFnZS4KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVuZHtpdGVtaXplfQotJSBCb3RoIG1vZGVzIGhhdmUgdGhlaXIgb3duIGNvdW50IHJlZ2lzdGVyLCBidXQgb25seSBvbmUgaXMKLSUgYWxsb2NhdGVkIGFzIGEgXExhVGVYXCBjb3VudGVyLCB3aXRoIHRoZSBhdHRhY2hlZAotJSBmYWNpbGl0aWVzIHNlcnZpbmcgYm90aC4KLQotXG5ld2NvdW50ZXJ7bGluZW51bWJlcn0KLVxuZXdjb3VudFxjQHBhZ2V3aXNlbGluZW51bWJlcgotXGxldFxjQHJ1bm5pbmdsaW5lbnVtYmVyXGNAbGluZW51bWJlcgotCi0lIE9ubHkgdGhlIHJ1bm5pbmcgbW9kZSBjb3VudGVyIG1heSBiZSByZXNldCwgb3IgcHJlc2V0LAotJSBmb3IgaW5kaXZpZHVhbCBwYXJhZ3JhcGhzLiAgVGhlIHBhZ2V3aXNlIGNvdW50ZXIgbXVzdAotJSBnaXZlIGEgdW5pcXVlIGFub255bW91cyBudW1iZXIgZm9yIGVhY2ggbGluZS4KLQotXG5ld2NvbW1hbmRccmVzZXRsaW5lbnVtYmVyWzFdWzFde1xjQHJ1bm5pbmdsaW5lbnVtYmVyIzF9Ci0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzdWJzZWN0aW9uewotJSAgICAgICAgICAgICAgIFJ1bm5pbmcgbGluZSBudW1iZXJzCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSUgUnVubmluZyBtb2RlIGlzIGVhc3ksICB+XExpbmVOdW1iZXJ+IGFuZCB+XHRoZUxpbmVOdW1iZXJ+Ci0lIHByb2R1Y2Ugflx0aGVsaW5lbnVtYmVyfiwgd2hpY2ggZGVmYXVsdHMgdG8KLSUgflxhcmFiaWN7bGluZW51bWJlcn1+LCB1c2luZyB0aGUgflxjQHJ1bm5pbmdsaW5lbnVtYmVyfgotJSBjb3VudGVyLiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBtb2RlIG9mIG9wZXJhdGlvbi4KLQotXGRlZlxtYWtlUnVubmluZ0xpbmVOdW1iZXJ7XG1ha2VMaW5lTnVtYmVyUnVubmluZ30KLQotXGRlZlxzZXRydW5uaW5nbGluZW51bWJlcnN7JQotICAgXGRlZlx0aGVMaW5lTnVtYmVye1x0aGVsaW5lbnVtYmVyfSUKLSAgIFxsZXRcY0BsaW5lbnVtYmVyXGNAcnVubmluZ2xpbmVudW1iZXIKLSAgIFxsZXRcbWFrZUxpbmVOdW1iZXJcbWFrZVJ1bm5pbmdMaW5lTnVtYmVyCi0gICB9Ci0KLVxzZXRydW5uaW5nbGluZW51bWJlcnNccmVzZXRsaW5lbnVtYmVyCi0KLSUKLSUKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzdWJzZWN0aW9uewotJSAgICAgICAgICAgICAgIFBhZ2V3aXNlIGxpbmUgbnVtYmVycwotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0lIERpZmZpY3VsdCwgaWYgeW91IHRoaW5rIGFib3V0IGl0LiAgVGhlIG51bWJlciBoYXMgdG8gYmUKLSUgcHJpbnRlZCB3aGVuIHRoZXJlIGlzIG5vIG1lYW5zIHRvIGtub3cgb24gd2hpY2ggcGFnZSBpdAotJSB3aWxsIGVuZCB1cCwgIGV4Y2VwdCB0aHJvdWdoIHRoZSBhdXgtZmlsZS4gIE15IHNvbHV0aW9uICAKLSUgaXMgcmVhbGx5IGV4cGVuc2l2ZSwgYnV0IHF1aXRlIHJvYnVzdC4gIAotJQotJSBXaXRoIHZlcnNpb24gfnYyLjAwfiB0aGUgaGFzaHNpemUgcmVxdWlyZW1lbnRzIGFyZQotJSByZWR1Y2VkLCBiZWNhdXNlIHdlIGRvIG5vdCBuZWVkIG9uZSBjb250cm9sc2VxdWVuY2UgZm9yCi0lIGVhY2ggbGluZSBhbnkgbW9yZS4gIEJ1dCB0aGlzIGNvc3RzIHNvbWUgY29tcHV0YXRpb24gdGltZQotJSB0byBmaW5kIG91dCBvbiB3aGljaCBwYWdlIHdlIGFyZS4KLSUKLSUgflxtYWtlTGluZU51bWJlcn4gZ2V0cyBhIGhvb2sgdG8gbG9nIHRoZSBsaW5lIGFuZCBwYWdlCi0lIG51bWJlciB0byB0aGUgYXV4LWZpbGUuICBBbm90aGVyIGhvb2sgdHJpZXMgdG8gZmluZCBvdXQKLSUgd2hhdCB0aGUgcGFnZSBvZmZzZXQgaXMsIGFuZCBzdWJ0cmFjdHMgaXQgZnJvbSB0aGUgY291bnRlcgotJSB+XGNAbGluZW51bWJlcn4uICBBZGRpdGlvbmFsbHksIHRoZSBzd2l0Y2gKLSUgflxpZm9kZE51bWJlcmVkUGFnZX4gaXMgc2V0IHRydWUgZm9yIG9kZCBudW1iZXJlZCBwYWdlcywKLSUgZmFsc2Ugb3RoZXJ3aXNlLgotCi1cZGVmXHNldHBhZ2V3aXNlbGluZW51bWJlcnN7JQotICAgXGxldFx0aGVMaW5lTnVtYmVyXHRoZVBhZ2V3aXNlTGluZU51bWJlcgotICAgXGxldFxjQGxpbmVudW1iZXJcY0BwYWdld2lzZWxpbmVudW1iZXIKLSAgIFxsZXRcbWFrZUxpbmVOdW1iZXJcbWFrZVBhZ2V3aXNlTGluZU51bWJlcgotICAgfQotCi1cZGVmXG1ha2VQYWdld2lzZUxpbmVOdW1iZXJ7XGxvZ3RoZUxpbmVOdW1iZXJcZ2V0TGluZU51bWJlcgotICBcaWZvZGROdW1iZXJlZFBhZ2UKLSAgICAgXG1ha2VMaW5lTnVtYmVyT2RkCi0gIFxlbHNlCi0gICAgIFxtYWtlTGluZU51bWJlckV2ZW4KLSAgXGZpCi0gIH0KLQotJSBFYWNoIG51bWJlcmVkIGxpbmUgZ2l2ZXMgYSBsaW5lIHRvIHRoZSBhdXggZmlsZQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcYmVnaW57dmVyc2V9Ci0lICAgICB+XEBMTnt+PGxpbmU+fn17fjxwYWdlPn59fgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxlbmR7dmVyc2V9Ci0lIHZlcnkgc2ltaWxhciB0byB0aGUgflxuZXdsYWJlbH4gYnVzaW5lc3MsIGV4Y2VwdCB0aGF0IHdlIG5lZWQKLSUgYW4gYXJhYmljIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBwYWdlIG51bWJlciwgbm90IHdoYXQKLSUgdGhlcmUgbWlnaHQgZWxzZSBiZSBpbiB+XHRoZXBhZ2V+LgotCi1cZGVmXGxvZ3RoZUxpbmVOdW1iZXJ7XHByb3RlY3RlZEB3cml0ZVxAYXV4b3V0e317JQotICAgXHN0cmluZ1xATE57XHRoZVxjQGxpbmVudW1iZXJ9e1xub2V4cGFuZFx0aGVcY0BwYWdlfX19Ci0KLSUgRnJvbSB0aGUgYXV4LWZpbGUgd2UgZ2V0IG9uZSBtYWNybyB+XExOQFB+PHBhZ2U+IGZvciBlYWNoCi0lIHBhZ2Ugd2l0aCBsaW5lIG51bWJlcnMgb24gaXQuICBUaGlzIG1hY3JvIGNhbGxzIGZvdXIgb3RoZXIKLSUgbWFjcm9zIHdpdGggb25lIGFyZ3VtZW50IGVhY2guICBUaGVzZSBtYWNyb3MgYXJlCi0lIGR5bmFtaWNhbGx5IGRlZmluZWQgdG8gZG8gdGVzdHMgYW5kIGFjdGlvbnMsIHRvIGZpbmQgb3V0Ci0lIG9uIHdoaWNoIHBhZ2UgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgaXMgbG9jYXRlZC4KLSUKLSUgV2UgbmVlZCBzb3J0IG9mIGEgcG9pbnRlciB0byB0aGUgZmlyc3QgcGFnZSB3aXRoIGxpbmUKLSUgbnVtYmVycywgaW5pdGlhbGxpemVkIHRvIHBvaW50IHRvIG5vdGhpbmc6Ci0KLVxkZWZcTGFzdE51bWJlcmVkUGFnZXtmaXJzdH0gCi1cZGVmXExOQFBmaXJzdHtcbmV4dExOXHJlbGF4fQotCi0lIFRoZSBmb3VyIGR5bmFtaWMgbWFjcm9zIGFyZSBpbml0aWFsbGl6ZWQgdG8gcmVwcm9kdWNlCi0lIHRoZW1zZWx2ZXMgaW4gYW4gflx4ZGVmfgotCi1cbGV0XGxhc3RMTlxyZWxheCAgJSBjb21wYXJlIHRvIGxhc3QgbGluZSBvbiB0aGlzIHBhZ2UKLVxsZXRcZmlyc3RMTlxyZWxheCAlIGNvbXBhcmUgdG8gZmlyc3QgbGluZSBvbiB0aGlzIHBhZ2UKLVxsZXRccGFnZUxOXHJlbGF4ICAlIGdldCB0aGUgcGFnZSBudW1iZXIsIGNvbXB1dGUgdGhlIGxpbmVudW1iZXIKLVxsZXRcbmV4dExOXHJlbGF4ICAlIG1vdmUgdG8gdGhlIG5leHQgcGFnZQotCi0lIER1cmluZyB0aGUgZW5kLWRvY3VtZW50IHJ1biB0aHJvdWdoIHRoZSBhdXgtZmlsZXMsIHdlCi0lIGRpc2FibGUgflxATE5+LiAgSSBtYXkgcHV0IGluIGEgY2hlY2sgaGVyZSBsYXRlciwgdG8gZ2l2ZQotJSBhIHJlcnVuIHJlY29tbWVuZGF0aW9uLiAgCi0KLVxBdEVuZERvY3VtZW50e1xsZXRcQExOXEBnb2JibGV0d299Ci0KLSUgTm93LCB0aGlzIGlzIHRoZSB0cmlja3kgcGFydC4gIEZpcnN0IG9mIGFsbCwgdGhlIHdob2xlCi0lIGRlZmluaXRpb24gb2YgflxATE5+IGlzIGdyb3VwZWQsIHRvIGF2b2lkIGFjY3VtdWxhdGlvbgotJSBvbiB0aGUgc2F2ZSBzdGFjay4gU29tZWhvdyB+XGNzbmFtZX48Y3M+flxlbmRjc25hbWV+IHB1c2hlcwotJSBhbiBlbnRyeSwgd2hpY2ggc3RheXMgYWZ0ZXIgYW4gflx4ZGVmfiB0byB0aGF0IDxjcz4uCi0lCi0lIElmIH5cTE5AUH48cGFnZT4gaXMgdW5kZWZpbmVkLCBpbml0aWFsaXplIGl0IHdpdGggdGhlCi0lIGN1cnJlbnQgcGFnZSBhbmQgbGluZSBudW1iZXIsIHdpdGggdGhlCi0lIFxlbXBoe3BvaW50ZXItdG8tdGhlLW5leHQtcGFnZX0gcG9pbnRpbmcgdG8gbm90aGluZy4gIEFuZAotJSB0aGUgbWFjcm8gZm9yIHRoZSBwcmV2aW91cyBwYWdlIHdpbGwgYmUgcmVkZWZpbmVkIHRvIHBvaW50Ci0lIHRvIHRoZSBjdXJyZW50IG9uZS4gCi0lCi0lIElmIHRoZSBtYWNybyBmb3IgdGhlIGN1cnJlbnQgcGFnZSBhbHJlYWR5IGV4aXN0cywganVzdAotJSByZWRlZmluZSB0aGUgXGVtcGh7bGFzdC1saW5lLW51bWJlcn0gZW50cnkuCi0lCi0lIEZpbmFsbHksIHNhdmUgdGhlIGN1cnJlbnQgcGFnZSBudW1iZXIsIHRvIGdldCB0aGUgcG9pbnRlciB0byB0aGUKLSUgZm9sbG93aW5nIHBhZ2UgbGF0ZXIuCi0KLVxkZWZcQExOIzEjMnt7XGV4cGFuZGFmdGVyXEBATE4KLSAgICAgICAgICAgICAgICAgXGNzbmFtZSBMTkBQIzJDXEBMTkBjb2x1bW5cZXhwYW5kYWZ0ZXJcZW5kY3NuYW1lCi0gICAgICAgICAgICAgICAgIFxjc25hbWUgTE5AUE8jMlxlbmRjc25hbWUKLSAgICAgICAgICAgICAgICAgeyMxfXsjMn19fQotCi1cZGVmXEBATE4jMSMyIzMjNHtcaWZ4IzFccmVsYXgKLSAgICBcaWZ4IzJccmVsYXhcZ2RlZiMyeyMzfVxmaQotICAgIFxleHBhbmRhZnRlclxAQEBMTlxjc25hbWUgTE5AUFxMYXN0TnVtYmVyZWRQYWdlXGVuZGNzbmFtZSMxCi0gICAgXHhkZWYjMXtcbGFzdExOeyMzfVxmaXJzdExOeyMzfVxwYWdlTE57IzR9e1xATE5AY29sdW1ufXsjMn1cbmV4dExOXHJlbGF4fSUKLSAgXGVsc2UKLSAgICBcZGVmXGxhc3RMTiMjMXtcbm9leHBhbmRcbGFzdExOeyMzfX0lCi0gICAgXHhkZWYjMXsjMX0lCi0gIFxmaQotICBceGRlZlxMYXN0TnVtYmVyZWRQYWdleyM0Q1xATE5AY29sdW1ufX0KLQotJSBUaGUgcHJldmlvdXMgcGFnZSBtYWNybyBnZXRzIGl0cyBwb2ludGVyIHRvIHRoZQotJSBjdXJyZW50IG9uZSwgcmVwbGFjaW5nIHRoZSB+XHJlbGF4fiB3aXRoIHRoZSBjcy10b2tlbgotJSB+XExOQFB+PHBhZ2U+LiAgCi0KLVxkZWZcQEBATE4jMSMye3tcZGVmXG5leHRMTiMjMXtcbm9leHBhbmRcbmV4dExOXG5vZXhwYW5kIzJ9JQotICAgICAgICAgICAgICAgIFx4ZGVmIzF7IzF9fX0KLQotJSBOb3csIHRvIHByaW50IGEgbGluZSBudW1iZXIsIHdlIG5lZWQgdG8gZmluZCB0aGUgcGFnZSwKLSUgd2hlcmUgaXQgcmVzaWRlcy4gIFRoaXMgd2lsbCBtb3N0IHByb2JhYmx5IGJlIHRoZSBwYWdlIHdoZXJlCi0lIHRoZSBsYXN0IG9uZSBjYW1lIGZyb20sIG9yIG1heWJlIHRoZSBuZXh0IHBhZ2UuICBIb3dldmVyLCBpdCBjYW4KLSUgYmUgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCBvbmUuICBXZSBtYWludGFpbiBhIGNhY2hlLAotJSB3aGljaCBpcyB+XGxldH4gdG8gdGhlIGxhc3QgcGFnZSdzIG1hY3JvLiAgQnV0IGZvciBub3cKLSUgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gZXhwYW5kIH5cTE5AZmlyc3R+LCB3aGVyZSB0aGUgcG9pbmVyCi0lIHRvIHRoZSBmaXJzdCBudW1iZXJlZCBwYWdlIGhhcyBiZWVuIHN0b3JlZCBpbi4gCi0KLVxkZWZcTnVtYmVyZWRQYWdlQ2FjaGV7XExOQFBmaXJzdH0KLQotJSBUbyBmaW5kIG91dCBvbiB3aGljaCBwYWdlIHRoZSBjdXJyZW50IH5cY0BsaW5lbnVtYmVyfiBpcywgCi0lIHdlIGRlZmluZSB0aGUgZm91ciBkeW5hbWljIG1hY3JvcyB0byBkbyBzb21ldGhpbmcgdXNlZnVsbAotJSBhbmQgZXhlY3V0ZSB0aGUgY3VycmVudCBjYWNoZSBtYWNyby4gIH5cbGFzdExOfiBpcyBydW4KLSUgZmlyc3QsIHRlc3RpbmcgaWYgdGhlIGxpbmUgbnVtYmVyIGluIHF1ZXN0aW9uIG1heSBiZSBvbiBhCi0lIGxhdGVyIHBhZ2UuICBJZiBzbywgZGlzYWJsZSB+XGZpcnN0TE5+LCBhbmQgZ28gb24gdG8gdGhlCi0lIG5leHQgcGFnZSB2aWEgflxuZXh0TE5+LgotCi1cZGVmXHRlc3RMYXN0TnVtYmVyZWRQYWdlIzF7XGlmbnVtIzE8XGNAbGluZW51bWJlcgotICAgICAgXGxldFxmaXJzdExOXEBnb2JibGUKLSAgXGZpfQotCi0lIEVsc2UsIGlmIH5cZmlyc3RMTn4gZmluZHMgb3V0IHRoYXQgd2UgbmVlZCBhbiBlYXJsaWVyCi0lIHBhZ2UsICB3ZSBzdGFydCBvdmVyIGZyb20gdGhlIGJlZ2lubmluZy4gRWxzZSwgflxuZXh0TE5+Ci0lIHdpbGwgYmUgZGlzYWJsZWQsIGFuZCB+XHBhZ2VMTn4gd2lsbCBydW4KLSUgflxnb3ROdW1iZXJlZFBhZ2V+IHdpdGggZm91ciBhcmd1bWVudHM6IHRoZSBmaXJzdCBsaW5lCi0lIG51bWJlciBvbiB0aGlzIGNvbHVtbiwgdGhlIHBhZ2UgbnVtYmVyLCB0aGUgY29sdW1uIAotJSBudW1iZXIsIGFuZCB0aGUgZmlyc3QgbGluZSBvbiB0aGUgcGFnZS4KLQotXGRlZlx0ZXN0Rmlyc3ROdW1iZXJlZFBhZ2UjMXtcaWZudW0jMT5cY0BsaW5lbnVtYmVyCi0gICAgIFxkZWZcbmV4dExOIyMxe1x0ZXN0TmV4dE51bWJlcmVkUGFnZVxMTkBQZmlyc3R9JQotICBcZWxzZQotICAgICAgXGxldFxuZXh0TE5cQGdvYmJsZQotICAgICAgXGRlZlxwYWdlTE57XGdvdE51bWJlcmVkUGFnZXsjMX19JQotICBcZml9Ci0KLSUgV2Ugc3RhcnQgd2l0aCB+XHBhZ2VMTn4gZGlzYWJsZWQgYW5kIH5cbmV4dExOfiBkZWZpbmVkIHRvCi0lIGNvbnRpbnVlIHRoZSBzZWFyY2ggd2l0aCB0aGUgbmV4dCBwYWdlLgotCi1cbG9uZ1xkZWYgXEBnb2JibGV0aHJlZSAjMSMyIzN7fQotCi1cZGVmXHRlc3ROdW1iZXJlZFBhZ2V7JQotICBcbGV0XGxhc3RMTlx0ZXN0TGFzdE51bWJlcmVkUGFnZQotICBcbGV0XGZpcnN0TE5cdGVzdEZpcnN0TnVtYmVyZWRQYWdlCi0gIFxsZXRccGFnZUxOXEBnb2JibGV0aHJlZQotICBcbGV0XG5leHRMTlx0ZXN0TmV4dE51bWJlcmVkUGFnZQotICBcTnVtYmVyZWRQYWdlQ2FjaGUKLSAgfQotCi0lIFdoZW4gd2Ugc3dpdGNoIHRvIGFub3RoZXIgcGFnZSwgd2UgZmlyc3QgaGF2ZSB0byBtYWtlCi0lIHN1cmUgdGhhdCBpdCBpcyB0aGVyZS4gIElmIHdlIGFyZSBkb25lIHdpdGggdGhlIGxhc3QgCi0lIHBhZ2UsIHdlIHByb2JhYmx5IG5lZWQgdG8gcnVuIFxUZVhcIGFnYWluLCBidXQgZm9yIHRoZQotJSByZXN0IG9mIHRoaXMgcnVuLCB0aGUgY2FjaGUgbWFjcm8gd2lsbCBqdXN0IHJldHVybiBmb3VyCi0lIHplcm9zLiBUaGlzIHNhdmVzIGEgbG90IG9mIHRpbWUsIGZvciBleGFtcGxlIGlmIHlvdSBoYXZlCi0lIGhhbGYgb2YgYW4gYXV4LWZpbGUgZnJvbSBhbiBhYm9ydGVkIHJ1biwgIGluIHRoZSBuZXh0IHJ1bgotJSB0aGUgd2hvbGUgcGFnZS1saXN0IHdvdWxkIGJlIHNlYXJjaGVkIGluIHZhaW4gYWdhaW4gYW5kCi0lIGFnYWluIGZvciB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIGRvY3VtZW50LgotJQotJSBJZiB0aGVyZSBpcyBhbm90aGVyIHBhZ2UsIHdlIGl0ZXJhdGUgdGhlIHNlYXJjaC4gCi0KLVxkZWZcdGVzdE5leHROdW1iZXJlZFBhZ2UjMXtcaWZ4IzFccmVsYXgKLSAgICAgXGdsb2JhbFxkZWZcTnVtYmVyZWRQYWdlQ2FjaGV7XGdvdE51bWJlcmVkUGFnZTAwMDB9JQotICAgICBcUGFja2FnZVdhcm5pbmdOb0xpbmV7bGluZW5vfSUKLSAgICAgICAgICAgICAgICAgICAge0xpbmVudW1iZXIgcmVmZXJlbmNlIGZhaWxlZCwKLSAgICAgIFxNZXNzYWdlQnJlYWsgIHJlcnVuIHRvIGdldCBpdCByaWdodH0lCi0gICBcZWxzZQotICAgICBcZ2xvYmFsXGxldFxOdW1iZXJlZFBhZ2VDYWNoZSMxJQotICAgXGZpCi0gICBcdGVzdE51bWJlcmVkUGFnZQotICAgfQotCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbGluZWxhYmVse2RlbW8yfQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG1hcmdpbnBhcntcdGlueVxyYWdnZWRyaWdodAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExldCdzIHNlZSBpZiBpdCBmaW5kcyB0aGUgbGFiZWwKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBwYWdlIFxwYWdlcmVme2RlbW99LCAKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lIFxyZWZ7ZGVtb30sIGFuZCBiYWNrIGhlcmUKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBwYWdlIFxwYWdlcmVme2RlbW8yfSwgbGluZQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyZWZ7ZGVtbzJ9LiAKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9JQotJSBUbyBzZXBhcmF0ZSB0aGUgb2ZmaWNpYWwgaG9va3MgZnJvbSB0aGUgaW50ZXJuYWxzIHRoZXJlIGlzCi0lIHRoaXMgZXF1aXZhbGVuY2UsIHRvIGhvb2sgaW4gbGF0ZXIgZm9yIHdoYXRldmVyIHB1cnBvc2U6Ci0KLVxsZXRcZ2V0TGluZU51bWJlclx0ZXN0TnVtYmVyZWRQYWdlCi0KLSUgU28sIG5vdyB3ZSBnb3QgdGhlIHBhZ2Ugd2hlcmUgdGhlIG51bWJlciBpcyBvbi4gIFdlCi0lIGVzdGFibGlzaCBpZiB3ZSBhcmUgb24gYW4gb2RkIG9yIGV2ZW4gcGFnZSwgYW5kIGNhbGN1bGF0ZQotJSB0aGUgZmluYWwgbGluZSBudW1iZXIgdG8gYmUgcHJpbnRlZC4KLQotXG5ld2lmXGlmb2RkTnVtYmVyZWRQYWdlCi1cbmV3aWZcaWZjb2x1bW53aXNlbGluZW51bWJlcnMKLVxjb2x1bW53aXNlbGluZW51bWJlcnNmYWxzZQotCi1cZGVmXGdvdE51bWJlcmVkUGFnZSMxIzIjMyM0e1xvZGROdW1iZXJlZFBhZ2VmYWxzZQotICBcaWZvZGQgXGlmQHR3b2NvbHVtbiAjM1xlbHNlICMyXGZpXHJlbGF4XG9kZE51bWJlcmVkUGFnZXRydWVcZmkKLSAgXGFkdmFuY2VcY0BsaW5lbnVtYmVyIDFccmVsYXgKLSAgXGlmY29sdW1ud2lzZWxpbmVudW1iZXJzCi0gICAgIFxzdWJ0cmFjdGxpbmVudW1iZXJvZmZzZXR7IzF9JQotICBcZWxzZQotICAgICBcc3VidHJhY3RsaW5lbnVtYmVyb2Zmc2V0eyM0fSUKLSAgXGZpCi0gIH0KLQotJSBZb3UgbWlnaHQgd2FudCB0byBydW4gdGhlIHBhZ2V3aXNlIG1vZGUgd2l0aCBydW5uaW5nIGxpbmUKLSUgbnVtYmVycywgb3IgeW91IG1pZ2h0IG5vdC4gIEl0J3MgeW91ciBjaG9pY2U6Ci0KLVxkZWZccnVubmluZ3BhZ2V3aXNlbGluZW51bWJlcnN7JQotICBcbGV0XHN1YnRyYWN0bGluZW51bWJlcm9mZnNldFxAZ29iYmxlCi0gIH0KLQotXGRlZlxyZWFscGFnZXdpc2VsaW5lbnVtYmVyc3slCi0gIFxkZWZcc3VidHJhY3RsaW5lbnVtYmVyb2Zmc2V0IyMxe1xhZHZhbmNlXGNAbGluZW51bWJlci0jIzFccmVsYXh9JQotICB9Ci0KLVxyZWFscGFnZXdpc2VsaW5lbnVtYmVycwotCi0lIEZvciBsaW5lIG51bWJlciByZWZlcmVuY2VzLCB3ZSBuZWVkIGEgcHJvdGVjdGVkIGNhbGwgdG8KLSUgdGhlIHdob2xlIHByb2NlZHVyZSwgd2l0aCB0aGUgcmVxdWVzdGVkIGxpbmUgbnVtYmVyIHN0b3JlZAotJSBpbiB0aGUgflxjQGxpbmVudW1iZXJ+IGNvdW50ZXIuICBUaGlzIGlzIHdoYXQgZ2V0cyBwcmludGVkCi0lIHRvIHRoZSBhdXgtZmlsZSB0byBtYWtlIGEgbGFiZWw6Ci0KLVxkZWZcdGhlUGFnZXdpc2VMaW5lTnVtYmVye1xwcm90ZWN0Ci0gICAgICAgXGdldHBhZ2V3aXNlbGluZW51bWJlcntcdGhlXGNAbGluZW51bWJlcn19JQotCi0lIEFuZCBoZXJlIGlzIHdoYXQgaGFwcGVucyB3aGVuIHRoZSBsYWJlbCBpcyByZWZlcmVkIHRvOgotCi1cZGVmXGdldHBhZ2V3aXNlbGluZW51bWJlciMxe3slCi0gIFxjQGxpbmVudW1iZXIgIzFccmVsYXhcdGVzdE51bWJlcmVkUGFnZQotICBcdGhlbGluZW51bWJlcgotICB9fQotCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUKLSUgQSBzdW1tYXJ5IG9mIGFsbCBwZXIgbGluZSBleHBlbnNlczoKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxiZWdpbntkZXNjcmlwdGlvbn1caXRlbQotJSBbQ1BVOl0gIFRoZSB+XG91dHB1dH4gcm91dGluZSBpcyBjYWxsZWQgZm9yIGVhY2ggbGluZSwKLSUgICAgICAgICBhbmQgdGhlIHBhZ2Utc2VhcmNoIGlzIGRvbmUuCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGl0ZW0KLSUgW0RJU0s6XSBPbmUgbGluZSBvZiBvdXRwdXQgdG8gdGhlIGF1eC1maWxlIGZvciBlYWNoCi0lICAgICAgICAgbnVtYmVyZWQgbGluZQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFtNRU06XSAgT25lIG1hY3JvIHBlciBwYWdlLiBHcmVhdCBpbXByb3ZlbWVudCBvdmVyIHYxLjAyLAotJSAgICAgICAgIHdoaWNoIGhhZCBvbmUgY29udHJvbCBzZXF1ZW5jZSBwZXIgbGluZSBpbgotJSAgICAgICAgIGFkZGl0aW9uLiAgSXQgYmxldyB0aGUgaGFzaCB0YWJsZSBhZnRlciBzb21lIGZpdmUKLSUgICAgICAgICB0aG91c2FuZCBsaW5lcy4gCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVuZHtkZXNjcmlwdGlvbn0KLSUKLSUKLSUKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzdWJzZWN0aW9uewotJSAgICAgICAgICAgICAgICAgIFR3b2NvbHVtbiBtb2RlIChOZXcgdjMuMDYpCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSUKLSUgVHdvY29sdW1uIG1vZGUgcmVxdWlyZXMgYW5vdGhlciBwYXRjaCB0byB0aGUgflxvdXRwdXR+IAotJSByb3V0aW5lLCBpbiBvcmRlciB0byBwcmludCBhIGNvbHVtbiB0YWcgdG8gdGhlIC5hdXggCi0lIGZpbGUuCi0KLVxsZXRcQExOQG9yaWdAbWFrZWNvbFxAbWFrZWNvbAotXGRlZlxATE5AbWFrZWNvbHslCi0gICBcQExOQG9yaWdAbWFrZWNvbAotICAgXHNldGJveFxAb3V0cHV0Ym94IFx2Ym94eyUKLSAgICAgIFxib3htYXhkZXB0aCBcQG1heGRlcHRoCi0gICAgICBccHJvdGVjdGVkQHdyaXRlXEBhdXhvdXR7fXslCi0gICAgICAgICAgXHN0cmluZ1xATE5AY29se1xpZkBmaXJzdGNvbHVtbjFcZWxzZTJcZml9JQotICAgICAgfSUKLSAgICAgIFxib3hcQG91dHB1dGJveAotICAgfSUgXHZib3gKLX0KLQotXGRlZlxATE5AY29sIzF7XGRlZlxATE5AY29sdW1ueyMxfX0KLVxATE5AY29sezF9Ci0KLSUKLSUKLSUKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzdWJzZWN0aW9uewotJSAgICAgICAgICAgICAgICAgIE51bWJlcmluZyBtb2R1bG8gNQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0lIE1vc3QgdXNlcnMgd2FudCB0byBoYXZlIG9ubHkgb25lIGluIGZpdmUgbGluZXMgbnVtYmVyZWQuCi0lIH5cTGluZU51bWJlcn4gaXMgc3VwcG9zZWQgdG8gcHJvZHVjZSB0aGUgb3V0Zml0IG9mIHRoZQotJSBsaW5lIG51bWJlciBhdHRhY2hlZCB0byB0aGUgbGluZSwgIHdoaWxlIH5cdGhlbGluZW51bWJlcn4KLSUgaXMgdXNlZCBhbHNvIGZvciByZWZlcmVuY2VzLCB3aGljaCBzaG91bGQgYXBwZWFyIGV2ZW4gaWYKLSUgdGhleSBhcmUgbm90IG11bHRpcGxlcyBvZiBmaXZlLiAgIAotCi1cbmV3Y291bnRcY0BsaW5lbnVtYmVybW9kdWxvCi0KLVxkZWZcdGhlbW9kdWxvbGluZW51bWJlcnt7XEB0ZW1wY250YVxjQGxpbmVudW1iZXIKLSAgXGRpdmlkZVxAdGVtcGNudGFcY0BsaW5lbnVtYmVybW9kdWxvCi0gIFxtdWx0aXBseVxAdGVtcGNudGFcY0BsaW5lbnVtYmVybW9kdWxvCi0gIFxpZm51bVxAdGVtcGNudGE9XGNAbGluZW51bWJlclx0aGVsaW5lbnVtYmVyXGZpCi0gIH19Ci0KLSUgVGhlIHVzZXIgY29tbWFuZCB0byBzZXQgdGhlIG1vZHVsbyBjb3VudGVyOgotCi1cbmV3Y29tbWFuZFxtb2R1bG9saW5lbnVtYmVyc1sxXVswXXslCi0gXGxldFxMaW5lTnVtYmVyXHRoZW1vZHVsb2xpbmVudW1iZXIKLSBcaWZudW0jMT4xXHJlbGF4Ci0gICBcY0BsaW5lbnVtYmVybW9kdWxvIzFccmVsYXgKLSBcZWxzZVxpZm51bSMxPTFccmVsYXgKLSAgIFxkZWZcTGluZU51bWJlcntcdGhlbGluZW51bWJlcn0lCi0gXGZpXGZpCi0gfQotCi1cc2V0Y291bnRlcntsaW5lbnVtYmVybW9kdWxvfXs1fQotXG1vZHVsb2xpbmVudW1iZXJzWzFdCi0KLSUKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzd2l0Y2hsaW5lbnVtYmVycwotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG1vZHVsb2xpbmVudW1iZXJzWzFdCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc2VjdGlvbnsKLSUgICAgICAgICAgICAgICAgICAgUGFja2FnZSBvcHRpb25zCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSUgVGhlcmUgaXMgYSBidW5jaCBvZiBwYWNrYWdlIG9wdGlvbnMsIGFsbCBvZiB0aGVtCi0lIGV4ZWN1dGluZyBvbmx5IHVzZXIgY29tbWFuZHMgKHNlZSBiZWxvdykuCi0lCi0lIE9wdGlvbnMgfmxlZnR+ICh+cmlnaHR+KSBwdXQgdGhlIGxpbmUgbnVtYmVycyBvbiB0aGUgbGVmdAotJSAocmlnaHQpIG1hcmdpbi4gIFRoaXMgd29ya3MgaW4gYWxsIG1vZGVzLiAgfmxlZnR+IGlzIHRoZQotJSBkZWZhdWx0LgotCi1cRGVjbGFyZU9wdGlvbntsZWZ0fXtcbGVmdGxpbmVudW1iZXJzKn0KLQotXERlY2xhcmVPcHRpb257cmlnaHR9e1xyaWdodGxpbmVudW1iZXJzKn0KLQotJSBPcHRpb24gfnN3aXRjaH4gKH5zd2l0Y2gqfikgcHV0cyB0aGUgbGluZSBudW1iZXJzIG9uIHRoZQotJSBvdXRlciAoaW5uZXIpIG1hcmdpbiBvZiB0aGUgdGV4dC4gICBUaGlzIHJlcXVpcmVzIHJ1bm5pbmcKLSUgdGhlIHBhZ2V3aXNlIG1vZGUsICBidXQgd2UgdHVybiBvZmYgdGhlIHBhZ2Ugb2Zmc2V0Ci0lIHN1YnRyYWN0aW9uLCBnZXR0aW5nIHNvcnQgb2YgcnVubmluZyBudW1iZXJzIGFnYWluLiAgVGhlCi0lIH5wYWdld2lzZX4gb3B0aW9uIG1heSByZXN0b3JlIHRydWUgcGFnZXdpc2UgbW9kZSBsYXRlci4KLQotXERlY2xhcmVPcHRpb257c3dpdGNofXtcc2V0cGFnZXdpc2VsaW5lbnVtYmVycwotICAgICAgICAgICAgICAgICAgICAgICBcc3dpdGNobGluZW51bWJlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgXHJ1bm5pbmdwYWdld2lzZWxpbmVudW1iZXJzfQotCi1cRGVjbGFyZU9wdGlvbntzd2l0Y2gqfXtcc2V0cGFnZXdpc2VsaW5lbnVtYmVycwotICAgICAgICAgICAgICAgICAgICAgICAgXHN3aXRjaGxpbmVudW1iZXJzKiUKLSAgICAgICAgICAgICAgICAgICAgICAgIFxydW5uaW5ncGFnZXdpc2VsaW5lbnVtYmVyc30KLQotJSBJbiB0d29jb2x1bW4gbW9kZSwgd2UgY2FuIHN3aXRjaCB0aGUgbGluZSBudW1iZXJzIHRvIAotJSB0aGUgb3V0ZXIgbWFyZ2luLCBhbmQvb3Igc3RhcnQgd2l0aCBudW1iZXIgMSBpbiBlYWNoCi0lIGNvbHVtbi4gIE1hcmdpbiBzd2l0Y2hpbmcgaXMgY292ZXJlZCBieSB0aGUgfnN3aXRjaH4gCi0lIG9wdGlvbnMuCi0KLVxEZWNsYXJlT3B0aW9ue2NvbHVtbndpc2V9e1xzZXRwYWdld2lzZWxpbmVudW1iZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBcY29sdW1ud2lzZWxpbmVudW1iZXJzdHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgXHJlYWxwYWdld2lzZWxpbmVudW1iZXJzfQotCi0lIFRoZSBvcHRpb25zIH5wYWdld2lzZX4gYW5kIH5ydW5uaW5nfiBzZWxlY3QgdGhlIG1ham9yCi0lIGxpbmVudW1iZXIgbWVjaGFuaXNtLiAgfnJ1bm5pbmd+IGxpbmUgbnVtYmVycyByZWZlciB0byBhIHJlYWwKLSUgY291bnRlciB2YWx1ZSwgd2hpY2ggY2FuIGJlIHJlc2V0IGZvciBhbnkgcGFyYWdyYXBoLAotJSBldmVuIGdldHRpbmcgIG11bHRpcGxlIHBhcmFncmFwaHMgb24gb25lIHBhZ2Ugc3RhcnRpbmcKLSUgd2l0aCBsaW5lIG51bWJlciBvbmUuICB+cGFnZXdpc2V+IGxpbmUgbnVtYmVycyBnZXQgYQotJSB1bmlxdWUgaGlkZGVuIG51bWJlciB3aXRoaW4gdGhlIGRvY3VtZW50LCAgYnV0IHdpdGggdGhlCi0lIG9wcG9ydHVuaXR5IHRvIGVzdGFibGlzaCB0aGUgcGFnZSBvbiB3aGljaCB0aGV5IGZpbmFsbHkKLSUgY29tZSB0byByZXN0LiAgVGhpcyBhbGxvd3MgdGhlIHN1YnRyYWN0aW9uIG9mIHRoZSBwYWdlCi0lIG9mZnNldCwgZ2V0dGluZyB0aGUgbnVtYmVycyBzdGFydGluZyB3aXRoIDEgb24gdG9wIG9mIGVhY2gKLSUgcGFnZSwgYW5kIG1hcmdpbiBzd2l0Y2hpbmcgaW4gdHdvc2lkZSBmb3JtYXRzIGJlY29tZXMKLSUgcG9zc2libGUuICBUaGUgZGVmYXVsdCBtb2RlIGlzIH5ydW5uaW5nfi4gIAotJQotJSBUaGUgb3JkZXIgb2YgZGVjbGFyYXRpb24gb2YgdGhlIG9wdGlvbnMgaXMgaW1wb3J0YW50IGhlcmUKLSUgfnBhZ2V3aXNlfiBtdXN0IGNvbWUgYWZ0ZXIgfnN3aXRjaH4sIHRvIG92ZXJpZGUgcnVubmluZwotJSBwYWdld2lzZSBtb2RlLiB+cnVubmluZ34gY29tZXMgbGFzdCwgdG8gcmVzZXQgdGhlIHJ1bm5pbmcKLSUgbGluZSBudW1iZXIgbW9kZSwgZS5nLCBhZnRlciBzZWxlY3RpbmcgbWFyZ2luIHN3aXRjaCBtb2RlCi0lIGZvciB+cGFnZXdpc2V+IHJ1bm5pbmcuICBPbmNlIG1vcmUsIGlmIHlvdSBzcGVjaWZ5IGFsbAotJSB0aHJlZSBvZiB0aGUgb3B0aW9ucyB+W3N3aXRjaCxwYWdld2lzZSxydW5uaW5nXX4sIHRoZQotJSByZXN1bHQgaXMgYWxtb3N0IG5vdGhpbmcsIGJ1dCBpZiB5b3UgbGF0ZXIgc2F5Ci0lIH5ccGFnZXdpc2VsaW5lbnVtYmVyc34sICB5b3UgZ2V0IG1hcmdpbiBzd2l0Y2hpbmcsIHdpdGgKLSUgcmVhbCBwYWdld2lzZSBsaW5lIG51bWJlcnMuCi0lCi1cRGVjbGFyZU9wdGlvbntwYWdld2lzZX17XHNldHBhZ2V3aXNlbGluZW51bWJlcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICBccmVhbHBhZ2V3aXNlbGluZW51bWJlcnN9Ci0KLVxEZWNsYXJlT3B0aW9ue3J1bm5pbmd9e1xzZXRydW5uaW5nbGluZW51bWJlcnN9Ci0KLSUgVGhlIG9wdGlvbiB+bW9kdWxvfiBjYXVzZXMgb25seSB0aG9zZSBsaW5lbnVtYmVycyB0byBiZQotJSBwcmludGVkIHdoaWNoIGFyZSBtdWx0aXBsZXMgb2YgZml2ZS4gCi0KLVxEZWNsYXJlT3B0aW9ue21vZHVsb317XG1vZHVsb2xpbmVudW1iZXJzXHJlbGF4fQotCi0lIFRoZSBwYWNrYWdlIG9wdGlvbiB+bWF0aGxpbmVzfiBzd2l0Y2hlcyB0aGUgYmVoYXZpb3Igb2YKLSUgdGhlIH57bGluZW5vbWF0aH1+IGVudmlyb25tZW50IHdpdGggaXRzIHN0YXItZm9ybS4KLSUgV2l0aG91dCB0aGlzIG9wdGlvbiwgdGhlIH57bGluZW5vbWF0aH1+IGVudmlyb25tZW50IGRvZXMKLSUgbm90IG51bWJlciB0aGUgbGluZXMgb2YgdGhlIGRpc3BsYXksIHdoaWxlIHRoZSBzdGFyLWZvcm0KLSUgZG9lcy4gIFdpdGggdGhpcyBvcHRpb24sIGl0cyBqdXN0IHRoZSBvcHBvc2l0ZS4KLSUKLSUlJSAxOTk5LTA2LTEwOiByZW5hbWVkIH5kaXNwbGF5bWF0aH4gdG8gfm1hdGhsaW5lc34uCi0KLVxEZWNsYXJlT3B0aW9ue21hdGhsaW5lc317XGxpbmVudW1iZXJkaXNwbGF5bWF0aH0KLQotJSB+ZGlzcGxheW1hdGh+IG5vdyBjYWxscyBmb3Igd3JhcHBlcnMgb2YgdGhlIHN0YW5kYXJkIAotJSBMYVRlWCBkaXNwbGF5IG1hdGggZW52aXJvbm1lbnQuICBUaGlzIHdhcyBwcmV2aW91c2x5IAotJSBkb25lIGJ5IH5tbGluZW5vLnN0eX4uCi0KLVxsZXRcZG9AbWxpbmVub1xyZWxheAotXERlY2xhcmVPcHRpb257ZGlzcGxheW1hdGh9e1xsZXRcZG9AbWxpbmVub1xAZW1wdHl9Ci0KLSUgVGhlIH5oeXBlcnJlZn4gcGFja2FnZSwgdmlhIH5uYW1lcmVmfiwgcmVxdWlyZXMgdGhyZWUgbW9yZSAKLSUgZ3JvdXBzIGluIHRoZSBzZWNvbmQgYXJnbWVudCBvZiBhIH5cbmV3bGFiZWx+LiAgV2VsbCwgd2h5IAotJSBzaG91bGRuJ3QgaXQgZ2V0IHRoZW0/ICAoTmV3IHYzLjA3KSBUaGUgcHJlc2VuY3Mgb2YgdGhlCi0lIH5uYW1lcmVmfiBwYWNrYWdlIGlzIG5vdyBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5Ci0lIH5cQXRCZWdpbkRvY3VtZW50fi4gKC9OZXcgdjMuMDcpIChGaXhlZCBpbiB2My4wOSkgIFdlIHRyeQotJSB0byBiZSBzbWFydCwgYW5kIHRlc3QgflxBdEJlZ2luRG9jdW1lbnR+IGlmIHRoZSB+bmFtZXJlZn4KLSUgcGFja2FnZSBpcyBsb2FkZWQsIGJ1dCB+aHlwZXJyZWZ+IHBvc3Rwb25lcyB0aGUgbG9hZGluZyBvZgotJSB+bmFtZXJlZn4gdG9vLCBzbyB0aGlzIGlzIGFsbCBpbiB2YWluLgotCi1cRGVjbGFyZU9wdGlvbntoeXBlcnJlZn17XFBhY2thZ2VXYXJuaW5nTm9MaW5le2xpbmVub317JQotICAgICAgICAgICAgICAgIE9wdGlvbiBbaHlwZXJyZWZdIGlzIG9ic29sZXRlLiAKLSAgXE1lc3NhZ2VCcmVhayBUaGUgaHlwZXJyZWYgcGFja2FnZSBpcyBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5Ln19Ci0KLVxBdEJlZ2luRG9jdW1lbnR7JQotICBcQGlmcGFja2FnZWxvYWRlZHtuYW1lcmVmfXslCi0gICAgXGRlZlxATE5ARXh0cmFMYWJlbEl0ZW1ze3t9e317fX19e319Ci0KLVxQcm9jZXNzT3B0aW9ucwotCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc3Vic2VjdGlvbnsKLSUgICAgICAgICAgICAgIFBhY2thZ2UgRXh0ZW5zaW9ucwotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0lCi0lICBUaGUgZXh0ZW5zaW9ucyBpbiB0aGlzIHNlY3Rpb24gd2VyZSBwcmV2aW91c2x5IHN1cHBsaWVkIAotJSAgaW4gc2VwZXJhdGUgfi5zdHl+IGZpbGVzLgotJQotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHN1YnN1YnNlY3Rpb257Ci0lICAgICAgICAgICAgICAkZGlzcGxheSBtYXRoJAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0lCi0lICBUaGUgc3RhbmRhcmQgXExhVGVYXCBkaXNwbGF5IG1hdGggZW52aXJvbm1lbnRzIGFyZQotJSAgd3JhcHBlZCBpbiBhIH57bGluZW5vbWF0aH1+IGVudmlyb25tZW50LgotJQotJSAoTmV3IDMuMDUpICBUaGUgfltmbGVxbl1+IG9wdGlvbiBvZiB0aGUgc3RhbmRhcmQKLSUgXExhVGVYXCBjbGFzc2VzIGRlZmluZXMgdGhlIGRpc3BsYXkgbWF0aAotJSBlbnZpcm9ubWVudHMgc3VjaCB0aGF0IGxpbmUgbnVtYmVycyBhcHBlYXIganVzdAotJSBmaW5lLiAgVGh1cywgd2UgbmVlZCBub3QgZG8gYW55IHRyaWNrcyB3aGVuCi0lIH5bZmxlcW5dfiBpcyBsb2FkZWQsIGFzIGluZGljYXRlZCBieSBwcmVzZW50cyBvZgotJSB0aGUgflxtYXRoaW5kZW50fiByZWdpc3Rlci4gICAgICAgICAgICgvTmV3IDMuMDUpCi0lCi0lIChOZXcgMy4wNWEpICBmb3IgfntlcW5hcnJheX1+cyB3ZSByYXRoZXIga2VlcCB0aGUKLSUgb2xkIHRyaWNrLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoL05ldyAzLjA1YSkKLSUKLSUgKE5ldyAzLjA4KSBXcmFwIH5cW34gYW5kIH5cXX4gaW50byB+e2xpbmVub21hdGh9fiwgCi0lIGluc3RlYWQgb2YgfntkaXNwbGF5bWF0aH1+LiAgQWxzbyBzYXZlIHRoZSBkZWZpbml0aW9uCi0lIG9mIH5cZXF1YXRpb25+LCBpbnN0ZWFkIG9mIHJlcGxpY2F0aW5nIHRoZSBjdXJyZW50IAotJSBcTGFUZVhcIGRlZmluaXRpb24uICAgICAgICAgICAgICAgICAgICAoL05ldyAzLjA4KQotCi1caWZ4XGRvQG1saW5lbm9cQGVtcHR5Ci0gXEBpZnVuZGVmaW5lZHttYXRoaW5kZW50fXsKLQotICBcbGV0XExOQGRpc3BsYXltYXRoXFsKLSAgXGxldFxMTkBlbmRkaXNwbGF5bWF0aFxdCi0gIFxyZW5ld2NvbW1hbmRcW3tcYmVnaW57bGluZW5vbWF0aH1cTE5AZGlzcGxheW1hdGh9Ci0gIFxyZW5ld2NvbW1hbmRcXXtcTE5AZW5kZGlzcGxheW1hdGhcZW5ke2xpbmVub21hdGh9fQotCi0gIFxsZXRcTE5AZXF1YXRpb25cZXF1YXRpb24KLSAgXGxldFxMTkBlbmRlcXVhdGlvblxlbmRlcXVhdGlvbgotICBccmVuZXdlbnZpcm9ubWVudHtlcXVhdGlvbn0KLSAgICAge1xsaW5lbm9tYXRoXExOQGVxdWF0aW9ufQotICAgICB7XExOQGVuZGVxdWF0aW9uXGVuZGxpbmVub21hdGh9Ci0KLSAgfSUgXEBpZnVuZGVmaW5lZHttYXRoaW5kZW50fQotCi0gIFxsZXRcTE5AZXFuYXJyYXlcZXFuYXJyYXkKLSAgXGxldFxMTkBlbmRlcW5hcnJheVxlbmRlcW5hcnJheQotICBccmVuZXdlbnZpcm9ubWVudHtlcW5hcnJheX0KLSAgICAge1xsaW5lbm9tYXRoXExOQGVxbmFycmF5fQotICAgICB7XExOQGVuZGVxbmFycmF5XGVuZGxpbmVub21hdGh9Ci0gIAotXGZpCi0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzdWJzdWJzZWN0aW9uewotJSAgICAgIExpbmUgbnVtYmVycyBpbiBpbnRlcm5hbCB2ZXJ0aWNhbCBtb2RlCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSUKLSUgVGhlIGNvbW1hbmQgflxpbnRlcm5hbGxpbmVudW1iZXJzfiBhZGRzIGxpbmUgbnVtYmVycyBpbiAKLSUgaW50ZXJuYWwgdmVydGljYWwgbW9kZSwgYnV0IHdpdGggbGltaXRhdGlvbnM6IHdlIGFzc3VtZQotJSBmaXhlZCBiYXNlbGluZSBza2lwLgotCi1cZGVmXGludGVybmFsbGluZW51bWJlcnN7XHNldHJ1bm5pbmdsaW5lbnVtYmVycyAKLSAgICAgXGxldFxAQHBhclxpbnRlcm5hbGxpbmVudW1iZXJwYXIKLSAgICAgXGlmeFxAcGFyXEBAQHBhclxsZXRcQHBhclxpbnRlcm5hbGxpbmVudW1iZXJwYXJcZmkKLSAgICAgXGlmeFxwYXJcQEBAcGFyXGxldFxwYXJcaW50ZXJuYWxsaW5lbnVtYmVycGFyXGZpCi0gICAgIFxpZnhcQHBhclxsaW5lbnVtYmVycGFyXGxldFxAcGFyXGludGVybmFsbGluZW51bWJlcnBhclxmaQotICAgICBcaWZ4XHBhclxsaW5lbnVtYmVycGFyXGxldFxwYXJcaW50ZXJuYWxsaW5lbnVtYmVycGFyXGZpCi0gICAgIFxAaWZuZXh0Y2hhclt7XHJlc2V0bGluZW51bWJlcn0lXQotICAgICAgICAgICAgICAgICB7XEBpZnN0YXJ7XGxldFxjQGxpbmVudW1iZXJcY0BpbnRlcm5hbGxpbmVudW1iZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFxjQGxpbmVudW1iZXJcQG5lfXt9fSUKLSAgICAgfQotCi1cbGV0XGVuZGludGVybmFsbGluZW51bWJlcnNcZW5kbGluZW51bWJlcnMKLVxAbmFtZWRlZntpbnRlcm5hbGxpbmVudW1iZXJzKn17XGludGVybmFsbGluZW51bWJlcnMqfQotXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgZW5kaW50ZXJuYWxsaW5lbnVtYmVycypcZW5kY3NuYW1lXGVuZGxpbmVudW1iZXJzCi0KLVxuZXdjb3VudFxjQGludGVybmFsbGluZW51bWJlcgotXG5ld2NvdW50XGNAaW50ZXJuYWxsaW5lbnVtYmVycwotCi1cZGVmXGludGVybmFsbGluZW51bWJlcnBhcntcaWZ2bW9kZVxAQEBwYXJcZWxzZVxpZmlubmVyXEBAQHBhclxlbHNlXEBAQHBhcgotICAgICBcYmVnaW5ncm91cAotICAgICAgICBcY0BpbnRlcm5hbGxpbmVudW1iZXJzXHByZXZncmFmCi0gICAgICAgIFxzZXRib3hcQHRlbXBib3hhXGhib3h7XHZib3h7XG1ha2VpbnRlcm5hbExpbmVudW1iZXJzfX0lCi0gICAgICAgIFxkcFxAdGVtcGJveGFccHJldmRlcHRoCi0gICAgICAgIFxodFxAdGVtcGJveGFcekAKLSAgICAgICAgXG5vYnJlYWtcdnNraXAtXHByZXZkZXB0aAotICAgICAgICBcbm9pbnRlcmxpbmVza2lwXGJveFxAdGVtcGJveGEKLSAgICAgXGVuZGdyb3VwIAotICAgICBcZmlcZmkKLSAgICAgfQotCi1cZGVmXG1ha2VpbnRlcm5hbExpbmVudW1iZXJze1xpZm51bVxjQGludGVybmFsbGluZW51bWJlcnM+MFxyZWxheAotICAgXGhib3ggdG9cekB7XG1ha2VMaW5lTnVtYmVyfVxnbG9iYWxcYWR2YW5jZVxjQGxpbmVudW1iZXJcQG5lCi0gICBcYWR2YW5jZVxjQGludGVybmFsbGluZW51bWJlcnNcbUBuZQotICAgXGV4cGFuZGFmdGVyXG1ha2VpbnRlcm5hbExpbmVudW1iZXJzXGZpCi0gICB9Ci0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzdWJzdWJzZWN0aW9uewotJSAgICAgIExpbmUgbnVtYmVyIHJlZmVyZW5jZXMgd2l0aCBvZmZzZXQKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotJQotJSBUaGlzIGV4dGVuc2lvbiBkZWZpbmVzIG1hY3JvcyB0byByZWZlciB0byBsaW5lCi0lIG51bWJlcnMgd2l0aCBhbiBvZmZzZXQsIGUuZy4sIHRvIHJlZmVyIHRvIGEgbGluZQotJSB3aGljaCBjYW5ub3QgYmUgbGFiZWxlZCBkaXJlY3RseSAoZGlzcGxheSBtYXRoKS4KLSUgVGhpcyB3YXMgZm9ybWVybHkga25vd3MgYXMgfnJsaW5lbm8uc3R5fi4KLSUKLSUgVG8gcmVmZXIgdG8gYSBwYWdld2lzZSBsaW5lIG51bWJlciB3aXRoIG9mZnNldDoKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGJlZ2lue3F1b3RlfQotJSAgIH5cbGluZXJlZnBbfjxPRkZTRVQ+fl17fjxMQUJFTD5+fX4KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcZW5ke3F1b3RlfQotJSBUbyByZWZlciB0byBhIHJ1bm5pbmcgbGluZSBudW1iZXIgd2l0aCBvZmZzZXQ6Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxiZWdpbntxdW90ZX0KLSUgICB+XGxpbmVyZWZyW348T0ZGU0VUPn5de348TEFCRUw+fn1+Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVuZHtxdW90ZX0KLSUgVG8gcmVmZXIgdG8gYSBsaW5lIG51bWJlciBsYWJlbGVkIGluIHRoZSBzYW1lIG1vZGUgYXMgY3VycmVudGx5Ci0lIHNlbGVjdGVkOgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcYmVnaW57cXVvdGV9Ci0lICAgflxsaW5lcmVmW348T0ZGU0VUPn5de348TEFCRUw+fn1+Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVuZHtxdW90ZX0KLQotXG5ld2NvbW1hbmRcbGluZXJlZnslCi0gIFxpZnhcY0BsaW5lbnVtYmVyXGNAcnVubmluZ2xpbmVudW1iZXIKLSAgICAgXGV4cGFuZGFmdGVyXGxpbmVyZWZyCi0gIFxlbHNlCi0gICAgIFxleHBhbmRhZnRlclxsaW5lcmVmcAotICBcZmkKLX0KLQotXG5ld2NvbW1hbmRcbGluZXJlZnBbMl1bXHpAXXt7JQotICAgXGxldFxAdGhlbGluZW51bWJlclx0aGVsaW5lbnVtYmVyCi0gICBcZWRlZlx0aGVsaW5lbnVtYmVye1xhZHZhbmNlXGNAbGluZW51bWJlciMxXHJlbGF4XG5vZXhwYW5kXEB0aGVsaW5lbnVtYmVyfSUKLSAgIFxyZWZ7IzJ9JQotfX0KLQotJSBUaGlzIGdvZXMgZGVlcCBpbnRvIFxMYVRlWCBzIGludGVybmFscy4KLQotXG5ld2NvbW1hbmRcbGluZXJlZnJbMl1bXHpAXXt7JQotICAgXGRlZlxAQGxpbmVyZWZhZGR7XGFkdmFuY2VcY0BsaW5lbnVtYmVyIzF9JQotICAgXGV4cGFuZGFmdGVyXEBzZXRyZWZcY3NuYW1lIHJAIzJcZW5kY3NuYW1lCi0gICBcQGxpbmVyZWZhZGR7IzJ9JQotfX0KLQotXG5ld2NvbW1hbmRcQGxpbmVyZWZhZGRbMl17XGNAbGluZW51bWJlcj0jMVxAQGxpbmVyZWZhZGRccmVsYXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFx0aGVsaW5lbnVtYmVyfQotCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc3Vic3Vic2VjdGlvbnsKLSUgICAgICBOdW1iZXJlZCBxdW90YXRpb24gZW52aXJvbm1lbnRzCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSUKLSUgVGhlIH57bnVtcXVvdGV9fiBhbmQgfntudW1xdW90YXRpb259fgotJSBlbnZpcm9ubWVudHMgYXJlIGxpa2UgfntxdW90ZX1+IGFuZAotJSB+e3F1b3RhdGlvbn1+LCBleGNlcHQgdGhlcmUgd2lsbCBiZSBsaW5lCi0lIG51bWJlcnMuICAKLSUgCi0lIEFuIG9wdGlvbmFsIGFyZ3VtZW50IGdpdmVzIHRoZSBudW1iZXIgdG8gY291bnQKLSUgZnJvbS4gIEEgc3RhciB+Kn4gKGluc2lkZSBvciBvdXRzaWRlIHRoZSBjbG9zaW5nCi0lIH59fikgcHJldmVudCB0aGUgcmVzZXQgb2YgdGhlIGxpbmUgbnVtYmVycy4KLSUgRGVmYXVsdCBpcyB0byBjb3VudCBmcm9tIG9uZS4KLQotXG5ld2NvbW1hbmRccXVvdGVsaW5lbnVtYmVycwotICAge1xAaWZzdGFyXGxpbmVudW1iZXJze1xAaWZuZXh0Y2hhcltcbGluZW51bWJlcnN7XGxpbmVudW1iZXJzKn19fQotCi1cbmV3ZGltZW5ccXVvdGVsaW5lbnVtYmVyc2VwCi1ccXVvdGVsaW5lbnVtYmVyc2VwPVxsaW5lbnVtYmVyc2VwCi1cbGV0XHF1b3RlbGluZW51bWJlcmZvbnRcbGluZW51bWJlcmZvbnQKLQotXG5ld2NvbW1hbmRcbnVtcXVvdGVsaXN0Ci0gICB7XGxlZnRsaW5lbnVtYmVycwotICAgIFxsaW5lbnVtYmVyc2VwXHF1b3RlbGluZW51bWJlcnNlcAotICAgIFxsZXRcbGluZW51bWJlcmZvbnRccXVvdGVsaW5lbnVtYmVyZm9udAotICAgIFxhZGR0b2xlbmd0aHtcbGluZW51bWJlcnNlcH17LVxAdG90YWxsZWZ0bWFyZ2lufSUKLSAgICBccXVvdGVsaW5lbnVtYmVycwotICAgfQotCi1cbmV3ZW52aXJvbm1lbnR7bnVtcXVvdGV9ICAgICB7XHF1b3RlXG51bXF1b3RlbGlzdH17XGVuZHF1b3RlfQotXG5ld2Vudmlyb25tZW50e251bXF1b3RhdGlvbn0ge1xxdW90YXRpb25cbnVtcXVvdGVsaXN0fXtcZW5kcXVvdGF0aW9ufQotXG5ld2Vudmlyb25tZW50e251bXF1b3RlKn0gICAge1xxdW90ZVxudW1xdW90ZWxpc3QqfXtcZW5kcXVvdGV9Ci1cbmV3ZW52aXJvbm1lbnR7bnVtcXVvdGF0aW9uKn17XHF1b3RhdGlvblxudW1xdW90ZWxpc3QqfXtcZW5kcXVvdGF0aW9ufQotCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc3Vic3Vic2VjdGlvbnsKLSUgICAgICBGcmFtZSBhcm91bmQgYSBwYXJhZ3JhcGgKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotJQotJSBUaGUgfntiZnJhbWV9fiBlbnZpcm9ubWVudCBkcmF3cyBhIGZyYW1lIGFyb3VuZAotJSBzb21lIHRleHQsIGFjcm9zcyBwYWdlIGJyZWFrcywgaWYgbmVjZXNzYXJ5LgotJQotJSBUaGlzIHdvcmtzIG9ubHkgZm9yIHBsYWluIHRleHQgcGFyYWdyYXBocywKLSUgd2l0aG91dCBzcGVjaWFsIGhlaWdodCBsaW5lcy4gQWxsIGxpbmVzIG11c3QgYmUKLSUgflxiYXNlbGluZXNraXB+IGFwYXJ0LCBubyBkaXNwbGF5IG1hdGguCi0KLVxuZXdlbnZpcm9ubWVudHtiZnJhbWV9Ci0gIHtccGFyCi0gICBcQHRlbXBkaW1hXHRleHR3aWR0aAotICAgXGFkdmFuY2VcQHRlbXBkaW1hIDJcYmZyYW1lc2VwCi0gICBcc2V0Ym94XGJmcmFtZWJveFxoYm94IHRvXHRleHR3aWR0aHslCi0gICAgICBcaHNraXAtXGJmcmFtZXNlcAotICAgICAgXHZydWxlXEB3aWR0aFxiZnJhbWVydWxlXEBoZWlnaHRcYmFzZWxpbmVza2lwXEBkZXB0aFxiZnJhbWVzZXAKLSAgICAgIFxhZHZhbmNlXEB0ZW1wZGltYS0yXGJmcmFtZXJ1bGUKLSAgICAgIFxoc2tpcFxAdGVtcGRpbWEKLSAgICAgIFx2cnVsZVxAd2lkdGhcYmZyYW1lcnVsZVxAaGVpZ2h0XGJhc2VsaW5lc2tpcFxAZGVwdGhcYmZyYW1lc2VwCi0gICAgICBcaHNraXAtXGJmcmFtZXNlcAotICAgfSUKLSAgIFxoYm94e1xoc2tpcC1cYmZyYW1lc2VwCi0gICAgICAgICBcdnJ1bGVcQHdpZHRoXEB0ZW1wZGltYVxAaGVpZ2h0XGJmcmFtZXJ1bGVcQGRlcHRoXHpAfSUKLSAgIFxub2ludGVybGluZXNraXAKLSAgIFxjb3B5XGJmcmFtZWJveAotICAgXG5vYnJlYWsKLSAgIFxrZXJuLVxiYXNlbGluZXNraXAKLSAgIFxydW5uaW5nbGluZW51bWJlcnMKLSAgIFxkZWZcbWFrZUxpbmVOdW1iZXJ7XGNvcHlcYmZyYW1lYm94XGhzc30lCi0gIH0KLSAge1xwYXIKLSAgIFxrZXJuLVxwcmV2ZGVwdGgKLSAgIFxrZXJuXGJmcmFtZXNlcAotICAgXG5vaW50ZXJsaW5lc2tpcAotICAgXEB0ZW1wZGltYVx0ZXh0d2lkdGgKLSAgIFxhZHZhbmNlXEB0ZW1wZGltYSAyXGJmcmFtZXNlcAotICAgXGhib3h7XGhza2lwLVxiZnJhbWVzZXAKLSAgICAgICAgIFx2cnVsZVxAd2lkdGhcQHRlbXBkaW1hXEBoZWlnaHRcYmZyYW1lcnVsZVxAZGVwdGhcekB9JQotICB9Ci0KLVxuZXdkaW1lblxiZnJhbWVydWxlCi1cYmZyYW1lcnVsZT1cZmJveHJ1bGUKLQotXG5ld2RpbWVuXGJmcmFtZXNlcAotXGJmcmFtZXNlcD1cZmJveHNlcAotCi1cbmV3Ym94XGJmcmFtZWJveAotCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc2VjdGlvbnsKLSUgICAgICAgICAgICAgICAgICAgVGhlIGZpbmFsIHRvdWNoCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSUgVGhlcmUgaXMgb25lIGRlYWRjeWNsZSBmb3IgZWFjaCBsaW5lIG51bWJlci4KLQotXGFkdmFuY2VcbWF4ZGVhZGN5Y2xlcyAxMDAKLQotXGVuZGlucHV0Ci0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxzZWN0aW9uewotJSAgICAgICAgICAgICAgVGhlIHVzZXIgY29tbWFuZHMKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotJSBUaGUgdXNlciBjb21tYW5kIHRvIHR1cm4gb24gYW5kIG9mZiBsaW5lIG51bWJlcmluZyAKLSUgYXJlIAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGJlZ2lue2Rlc2NyaXB0aW9ufVxpdGVtCi0lIFt8XGxpbmVudW1iZXJzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIFR1cm4gb24gbGluZSBudW1iZXJpbmcgaW4gdGhlIGN1cnJlbnQgbW9kZS4KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcaXRlbQotJSBbfFxsaW5lbnVtYmVycypdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgXHBhciRccXF1YWQkCi0lICAgICAgICBhbmQgcmVzZXQgdGhlIGxpbmUgbnVtYmVyIHRvIDEuCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGRlZlxOTHs8bnVtYmVyPl19XGl0ZW0KLSUgW3xcbGluZW51bWJlcnNbXE5MXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIkXHFxdWFkJAotJSAgICAgICAgYW5kIHN0YXJ0IHdpdGggPG51bWJlcj4uICAKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcaXRlbQotJSBbfFxub2xpbmVudW1iZXJzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBccGFyCi0lICAgICBUdXJuIG9mZiBsaW5lIG51bWJlcmluZy4KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcaXRlbQotJSBbfFxydW5uaW5nbGluZW51bWJlcnMqW1xOTF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBccGFyCi0lICAgICBUdXJuIG9uIH5ydW5uaW5nfiBsaW5lIG51bWJlcnMsIHdpdGggdGhlIHNhbWUgb3B0aW9uYWwKLSUgICAgIGFyZ3VtZW50cyBhcyB+XGxpbmVudW1iZXJzfi4gIFRoZSBudW1iZXJzIGFyZSBydW5uaW5nCi0lICAgICB0aHJvdWdoIHRoZSB0ZXh0IG92ZXIgcGFnZWJyZWFrcy4gIFdoZW4geW91IHR1cm4KLSUgICAgIG51bWJlcmluZyBvZmYgYW5kIG9uIGFnYWluLCB0aGUgbnVtYmVycyB3aWxsIGNvbnRpbnVlLAotJSAgICAgZXhjZXB0LCBvZiBjYXVzZSwgaWYgeW91IGFzayB0byByZXNldCBvciBwcmVzZXQgdGhlCi0lICAgICBjb3VudGVyLgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFt8XHBhZ2V3aXNlbGluZW51bWJlcnNdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIFR1cm4gb24gfnBhZ2V3aXNlfiBsaW5lIG51bWJlcnMuICBUaGUgbGluZXMgb24gZWFjaAotJSAgICAgcGFnZSBhcmUgbnVtYmVyZWQgYmVnaW5uaW5nIHdpdGggb25lIGF0IHRoZSBmaXJzdAotJSAgICAgfnBhZ2V3aXNlfiBudW1iZXJlZCBsaW5lLgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFt8XHJlc2V0bGluZW51bWJlcltcTkxdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIFJlc2V0IH5bflNldH5dfiB0aGUgbGluZSBudW1iZXIgdG8gMQotJSAgICAgflt+PG51bWJlcj5+XX4uCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGl0ZW0KLSUgW3xcc2V0cnVubmluZ2xpbmVudW1iZXJzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgXHBhcgotJSAgICAgU3dpdGNoIHRvIH5ydW5uaW5nfiBsaW5lIG51bWJlciBtb2RlLiBEbyBcZW1waHtub3R9Ci0lICAgICB0dXJuIGl0IG9uIG9yIG9mZi4KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcaXRlbQotJSBbfFxzZXRwYWdld2lzZWxpbmVudW1iZXJzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBccGFyCi0lICAgICBTd2l0Y2ggdG8gfnBhZ2V3aXNlfiBsaW5lIG51bWJlciBtb2RlLiBEbyBcZW1waHtub3R9Ci0lICAgICB0dXJuIGl0IG9uIG9yIG9mZi4KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcaXRlbQotJSBbfFxzd2l0Y2hsaW5lbnVtYmVycypdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBccGFyCi0lICAgICBDYXVzZXMgbWFyZ2luIHN3aXRjaGluZyBpbiBwYWdld2lzZSBtb2Rlcy4gV2l0aCB0aGUKLSUgICAgIHN0YXIsICBwdXQgdGhlIGxpbmUgbnVtYmVycyBvbiB0aGUgaW5uZXIgbWFyZ2luLgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFt8XGxlZnRsaW5lbnVtYmVycypdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcaXRlbQotJSBbfFxyaWdodGxpbmVudW1iZXJzKl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBccGFyCi0lICAgICBTZXQgdGhlIGxpbmUgbnVtYmVycyBpbiB0aGUgbGVmdC9yaWdodCBtYXJnaW4uIFdpdGggdGhlCi0lICAgICBzdGFyIHRoaXMgd29ya3MgZm9yIGJvdGggbW9kZXMgb2Ygb3BlcmF0aW9uLCB3aXRob3V0Ci0lICAgICB0aGUgc3RhciBvbmx5IGZvciB0aGUgY3VycmVudGx5IHNlbGVjdGVkIG1vZGUuIAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFt8XHJ1bm5pbmdwYWdld2lzZWxpbmVudW1iZXJzXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIFdoZW4gdXNpbmcgdGhlIHBhZ2V3aXNlIGxpbmUgbnVtYmVyIG1vZGUsICBkbyBub3QKLSUgICAgIHN1YnRyYWN0IHRoZSBwYWdlIG9mZnNldC4gIFRoaXMgcmVzdWx0cyBpbiBydW5uaW5nCi0lICAgICBsaW5lIG51bWJlcnMgYWdhaW4sICBidXQgd2l0aCB0aGUgcG9zc2liaWxpdHkgdG8gc3dpdGNoCi0lICAgICBtYXJnaW5zLiAgQmUgY2FyZWZ1bCB3aGVuIGRvaW5nIGxpbmUgbnVtYmVyCi0lICAgICByZWZlcmVuY2luZywgIHRoaXMgbW9kZSBzdGF0dXMgbXVzdCBiZSB0aGUgc2FtZSB3aGlsZQotJSAgICAgc2V0dGluZyB0aGUgcGFyYWdyYXBoIGFuZCBkdXJpbmcgcmVmZXJlbmNlcy4KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcaXRlbQotJSBbfFxyZWFscGFnZXdpc2VsaW5lbnVtYmVyc10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBccGFyCi0lICAgICBSZXZlcnNlcyB0aGUgZWZmZWN0IG9mIH5ccnVubmluZ3BhZ2V3aXNlbGluZW51bWJlcnN+LgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFt8XG1vZHVsb2xpbmVudW1iZXJzW1xOTF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIEdpdmUgYSBudW1iZXIgb25seSB0byBsaW5lcyB3aGljaCBhcmUgbXVsdGlwbGVzIG9mCi0lICAgICB+W348bnVtYmVyPn5dfi4gIElmIDxudW1iZXI+IGlzIG5vdCBzcGVjaWZpZWQsIHRoZQotJSAgICAgY3VycmVudCB2YWx1ZSBpbiB0aGUgY291bnRlciB+bGluZW51bWJlcm1vZHVsb34gaXMKLSUgICAgIHJldGFpbmVkLiAgPG51bWJlcj49MSB0dXJucyB0aGlzIG9mZiB3aXRob3V0IGNoYW5naW5nCi0lICAgICB+bGluZW51bWJlcm1vZHVsb34uICBUaGUgY291bnRlciBpcyBpbml0aWFsaXplZCB0byA1LgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFt8XGxpbmVudW1iZXJkaXNwbGF5bWF0aF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIE51bWJlciB0aGUgbGluZXMgb2YgYSBkaXNwbGF5IG1hdGggaW4gYSB+e2xpbmVub21hdGh9fgotJSAgICAgZW52aXJvbm1lbnQsIGJ1dCBkbyBub3QgaW4gYSB+e2xpbmVub21hdGgqfX4KLSUgICAgIGVudmlyb25tZW50LiAgVGhpcyBpcyB1c2VkIGJ5IHRoZSBwYWNrYWdlIG9wdGlvbgotJSAgICAgflttYXRobGluZXNdfi4gCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGl0ZW0KLSUgW3xcbm9saW5lbnVtYmVyZGlzcGxheW1hdGhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgXHBhcgotJSAgICAgRG8gbm90IE51bWJlciB0aGUgbGluZXMgb2YgYSBkaXNwbGF5IG1hdGggaW4gYQotJSAgICAgfntsaW5lbm9tYXRofX4gZW52aXJvbm1lbnQsIGJ1dCBkbyBpbiBhCi0lICAgICB+e2xpbmVub21hdGgqfX4gZW52aXJvbm1lbnQuICBUaGlzIGlzIHRoZSBkZWZhdWx0LgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFt8XGxpbmVsYWJlbF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIFNldCBhIH5cbGluZWxhYmVse348Zm9vPn59fiB0byB0aGUgbGluZSBudW1iZXIgd2hlcmUKLSUgICAgIHRoaXMgY29tbWFuZHMgaXMgaW4uICBSZWZlciB0byBpdCB3aXRoIHRoZSBcTGFUZVhcCi0lICAgICByZWZlcmVuY2luZyBjb21tYW5kcyB+XHJlZnt+PGZvbz5+fX4gYW5kCi0lICAgICB+XHBhZ2VyZWZ7fjxmb28+fn1+LgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxlbmR7ZGVzY3JpcHRpb259Ci0lIFRoZSBjb21tYW5kcyBjYW4gYmUgdXNlZCBnbG9iYWxseSwgbG9jYWxseSB3aXRoaW4gZ3JvdXBzCi0lIG9yIGFzIGVudmlyb25tZW50cy4gIEl0IGlzIGltcG9ydGFudCB0byBrbm93IHRoYXQgdGhleSAKLSUgdGFrZSBhY3Rpb24gb25seSB3aGVuIHRoZSB+XHBhcn4gaXMgZXhlY3V0ZWQuICBUaGUKLSUgflxlbmR7fjxtb2RlPn5saW5lbnVtYmVyc31+IGNvbW1hbmRzIHByb3ZpZGUgYSB+XHBhcn4uCi0lIEV4YW1wbGVzOgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcYmVnaW57dmVyc2V9Ci0lICAgfntcbGluZW51bWJlcnN+ICA8dGV4dD4gflxwYXJ9fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFwKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBcXAotJSAgIH5cYmVnaW57bGluZW51bWJlcnN9fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcCi0lICAgICAgIDx0ZXh0PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFwKLSUgICB+XGVuZHtsaW5lbnVtYmVyc31+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxcCi0lICAgPHBhcmFncmFwaD4gfntcbGluZW51bWJlcnNccGFyfX4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFwKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBcXAotJSAgIH5cbGluZW51bWJlcnN+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcCi0lICAgICA8dGV4dD4gflxwYXJ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFwKLSUgICB+XG5vbGluZW51bWJlcnN+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxcCi0lICAgflxsaW5lbnVtYmVyc34gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFwKLSUgICA8cGFyYWdyYXBoPiB+e1xub2xpbmVudW1iZXJzXHBhcn1+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxlbmR7dmVyc2V9Ci0lCi0lCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc3Vic2VjdGlvbnsKLSUgICAgICAgICAgICAgICAgIEN1c3RvbWl6YXRpb24gaG9va3MKLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotJSBUaGVyZSBhcmUgc2V2ZXJhbCBob29rcyB0byBjdXN0b21pemUgdGhlIGFwcGVhcmFuY2Ugb2YgdGhlCi0lIGxpbmUgbnVtYmVycywgYW5kIHNvbWUgbG93IGxldmVsIGhvb2tzIGZvciBzcGVjaWFsCi0lIGVmZmVjdHMuIAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGJlZ2lue2Rlc2NyaXB0aW9ufVxpdGVtCi0lIFt8XHRoZWxpbmVudW1iZXJdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIFRoaXMgbWFjcm8gc2hvdWxkIGdpdmUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBsaW5lCi0lICAgICBudW1iZXIgaW4gdGhlIFxMYVRlWC1jb3VudGVyIH5saW5lbnVtYmVyfi4gIFRoZQotJSAgICAgZGVmYXVsdCBpcyBwcm92aWRlZCBieSBcTGFUZVg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHBhciRccXF1YWQkCi0lICAgICAgICAgflxhcmFiaWN7bGluZW51bWJlcn1+Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGl0ZW0KLSUgW3xcbWFrZUxpbmVOdW1iZXJMZWZ0XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgXHBhcgotJSAgICAgVGhpcyBtYWNybyBpcyB1c2VkIHRvIGF0dGFjaCBhIGxpbmUgbnVtYmVyIHRvIHRoZSBsZWZ0Ci0lICAgICBvZiB0aGUgdGV4dCBwYWdlLiAgVGhpcyBtYWNybyBzaG91bGQgZmlsbCBhbiB+XGhib3ggdG8gMHB0fiAKLSUgICAgIHdoaWNoIHdpbGwgYmUgcGxhY2VkIGF0IHRoZSBsZWZ0IG1hcmdpbiBvZiB0aGUKLSUgICAgIHBhZ2UsIHdpdGggdGhlIHJlZmVyZW5jZSBwb2ludCBhbGlnbmVkIHRvIHRoZSBsaW5lIHRvCi0lICAgICB3aGljaCBpdCBzaG91bGQgZ2l2ZSBhIG51bWJlci4gIFBsZWFzZSB1c2UgdGhlIG1hY3JvCi0lICAgICB+XExpbmVOdW1iZXJ+IHRvIHJlZmVyIHRvIHRoZSBsaW5lIG51bWJlci4gCi0lCi0lICAgICBUaGUgZGVmYXVsdCBkZWZpbml0aW9uIGlzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBccGFyJFxxcXVhZCQKLSUgICAgICAgICB+XGhzc1xsaW5lbnVtYmVyZm9udFxMaW5lTnVtYmVyXGhza2lwXGxpbmVudW1iZXJzZXB+Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGl0ZW0KLSUgW3xcbWFrZUxpbmVOdW1iZXJSaWdodF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgXHBhcgotJSAgICAgTGlrZSB+XG1ha2VMaW5lTnVtYmVyTGVmdH4sIGJ1dCBmb3IgbGluZSBudW1iZXJzIG9uCi0lICAgICB0aGUgcmlnaHQgbWFyZ2luLgotJQotJSAgICAgVGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBpcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHBhciRccXF1YWQkCi0lICAgICAgICB+XGxpbmVudW1iZXJmb250XGhza2lwXGxpbmVudW1iZXJzZXBcaHNraXBcdGV4dHdpZHRofiAgICBccGFyJFxxcXVhZCQKLSUgICAgICAgIH5caGJveCB0b1xsaW5lbnVtYmVyd2lkdGh7XGhzc1xMaW5lTnVtYmVyfVxoc3N+Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGl0ZW0KLSUgW3xcbGluZW51bWJlcmZvbnRdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgXHBhcgotJSAgICAgVGhpcyBtYWNybyBpcyBpbml0aWFsaXplZCB0byAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHBhciRccXF1YWQkCi0lICAgICAgICAgflxub3JtYWxmb250XHRpbnlcc2ZmYW1pbHl+Ci0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGl0ZW0KLSUgW3xcbGluZW51bWJlcnNlcF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgXHBhcgotJSAgICAgVGhpcyBkaW1lbnNpb24gcmVnaXN0ZXIgc2V0cyB0aGUgc2VwYXJhdGlvbiBvZiB0aGUKLSUgICAgIGxpbmVudW1iZXIgdG8gdGhlIHRleHQuIERlZmF1bHQgdmFsdWUgaXMgfjEwcHR+LgotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFt8XGxpbmVudW1iZXJ3aWR0aF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIFRoaXMgZGltZW5zaW9uIHJlZ2lzdGVyIHNldHMgdGhlIHdpZHRoIG9mIHRoZSBsaW5lCi0lICAgICBudW1iZXIgYm94IG9uIHRoZSByaWdodCBtYXJnaW4uICBUaGUgZGlzdGFuY2Ugb2YgdGhlCi0lICAgICByaWdodCBlZGdlIG9mIHRoZSB0ZXh0IHRvIHRoZSByaWdodCBlZGdlIG9mIHRoZSBsaW5lCi0lICAgICBudW1iZXIgaXMgflxsaW5lbnVtYmVyc2VwfiArIH5cbGluZW51bWJlcndpZHRofi4gVGhlCi0lICAgICBkZWZhdWx0IHZhbHVlIGlzIH4xMHB0fi4gIAotJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxpdGVtCi0lIFt8XHRoZUxpbmVOdW1iZXJdIChmb3Igd2l6YXJkcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIFxwYXIKLSUgICAgIFRoaXMgbWFjcm8gaXMgY2FsbGVkIGZvciBwcmludGluZyBhIH5cbmV3bGFiZWx+IGVudHJ5Ci0lICAgICB0byB0aGUgYXV4LWZpbGUuICBJdHMgZGVmaW5pdGlvbiBkZXBlbmRzIG9uIHRoZSBtb2RlLgotJSAgICAgRm9yIHJ1bm5pbmcgbGluZSBudW1iZXJzIGl0J3MganVzdCB+XHRoZWxpbmVudW1iZXJ+LAotJSAgICAgd2hpbGUgaW4gcGFnZXdpc2UgbW9kZSwgdGhlIHBhZ2Ugb2Zmc2V0IHN1YnRyYWN0aW9uCi0lICAgICBpcyBkb25lIGluIGhlcmUuCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGl0ZW0KLSUgW3xcbWFrZUxpbmVOdW1iZXJdIChmb3Igd2l6YXJkcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwgXHBhcgotJSAgICAgVGhpcyBtYWNybyBwcm9kdWNlcyB0aGUgbGluZSBudW1iZXJzLiAgVGhlIGRlZmluaXRpb24KLSUgICAgIGRlcGVuZHMgb24gdGhlIG1vZGUuICBJbiB0aGUgcnVubmluZyBsaW5lIG51bWJlcnMKLSUgICAgIG1vZGUgaXQganVzdCBleHBhbmRzIH5cbWFrZUxpbmVOdW1iZXJMZWZ0fi4KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcaXRlbQotJSBbfFxMaW5lTnVtYmVyXSAoZm9yIHdpemFyZHMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCBccGFyCi0lICAgICBUaGlzIG1hY3JvIGlzIGNhbGxlZCBieSB+XG1ha2VMaW5lTnVtYmVyfiB0byB0eXBlc2V0Ci0lICAgICB0aGUgbGluZSBudW1iZXIuICBUaGlzIGhvb2sgaXMgY2hhbmdlZCBieSB0aGUgbW9kdWxvCi0lICAgICBtZWNoYW5pc20uCi0lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVuZHtkZXNjcmlwdGlvbn0KLSUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGVuZHtkb2N1bWVudH0lRAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWVjaG8gImV4cGVjdCBlcnJvcnMgZm9yIHVua25vd24gY29tbWFuZHMgJ2lmZmFsc2UnIGFuZCAnZmknIjsjIFNIRUxMCi1hd2sgJy9BW1ddSy8nIGxpbmVuby5zdHkgfCBhd2sgLWYgLSBsaW5lbm8uc3R5ID5saW5lbm8udGV4OyAgIyBTSEVMTAotbGF0ZXggbGluZW5vOyBsYXRleCBsaW5lbm87IGxhdGV4IGxpbmVubzsgbGF0ZXggbGluZW5vOyAgICAgICMgU0hFTEwKLQotYXdrICcvRE9DIEEgW1ddIEsvJyBsaW5lbm8uc3R5IHwgYXdrIC1mIC0gbGluZW5vLnN0eSA+bGluZW5vLmRvYzsgIyBET0MgU0gKLQotQkVHSU57RE9DPS0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFXSyBET0MgQSBXIEsKLSBCRUdJTkNPREUgPSAiXFxiZWdpbntjb2RlfVxcYmVnaW57dmVyYmF0aW19IjsgICAgIyBBV0sKLSBFTkRDT0RFICAgPSAiXFxlbmR7dmVyYmF0aW19XG5cXGVuZHtjb2RlfSI7ICAgfSAgIyBBV0sKLSBCRUdJTkNPREUgPSAiJSAgICBcXGJlZ2lue21hY3JvY29kZX0iOyAgICAgICAgICAgIyAgICAgRE9DIEEgVyBLCi0gRU5EQ09ERSAgID0gIiUgICAgXFxlbmR7bWFjcm9jb2RlfSI7ICAgICAgICAgIH0gICMgICAgIERPQyBBIFcgSwotL15bIFx0XSokLyB7IEVDTlQrKzsgbmV4dDsgfSAgICAgICAgICAgICAgICAgICAgICAjIEFXSyBET0MgQSBXIEsKLS9cXGRvY3VtZW50Y2xhc3MveyBzdWIoImFydGljbGUiLCJsdHhkb2MiKSB9ICAgICAgIyAgICAgRE9DIEEgVyBLCi0vJUQkLyAgICAgIHsgc3ViKCJeJSogKiIsIiIpOyBzdWIoIiVEJCIsIiIpOyAgICAgICMgICAgIERPQyBBIFcgSwotICAgICAgICAgICAgIHByaW50ID4gImxpbmVuby5kcnYiOyBuZXh0ICAgICAgICB9ICAjICAgICBET0MgQSBXIEsKLS9eJSUvICAgICAgeyBuZXh0OyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBBV0sgRE9DIEEgVyBLCi0vXiUvICAgICAgIHsgaWYgKCFET0MpIHsgcHJpbnQgRU5EQ09ERTsgfSAgICAgICAgICMgQVdLIERPQyBBIFcgSwotICAgICAgICAgICAgIERPQz0xOyBFQ05UPTA7ICAgICAgICAgICAgICAgICAgICAgICAjIEFXSyBET0MgQSBXIEsKLSAgICAgICAgICAgICBzdWIoIl4lICoiLCIiKTsgICAgICAgICAgICAgICAgICAgICAgIyBBV0sKLSAgICAgICAgICAgICBzdWIoIl4lICoiLCIlICIpOyAgICAgICAgICAgICAgICAgICAgIyAgICAgRE9DIEEgVyBLCi0gICAgICAgICAgICAgcHJpbnQ7IG5leHQ7ICAgICAgICAgICAgICAgICAgICAgIH0gICMgQVdLIERPQyBBIFcgSwotRE9DPDAgICAgICB7IG5leHQgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFXSyBET0MgQSBXIEsKLS9eLSstJC8gICAgeyBpZiAoIURPQykgcHJpbnQgRU5EQ09ERTsgZXhpdCB9ICAgICAgIyBBV0sgRE9DIEEgVyBLCi17IGlmIChET0MpIHsgRUNOVD1ET0M9MDsgcHJpbnQgQkVHSU5DT0RFOyB9ICAgICAgICMgQVdLIERPQyBBIFcgSwotICB3aGlsZSAoRUNOVD4wKSB7IHByaW50ICIgIjsgRUNOVC0tOyB9ICAgICAgICAgICAjIEFXSyBET0MgQSBXIEsKLSAgcHJpbnQgJDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgIyBBV0sgRE9DIEEgVyBLCi0KZGlmZiAtLWdpdCBhL3NwZWMvc3R5bGVzL21hY3Jvcy50ZXggYi9zcGVjL3N0eWxlcy9tYWNyb3MudGV4CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGU1YzM2Li4wMDAwMDAwCi0tLSBhL3NwZWMvc3R5bGVzL21hY3Jvcy50ZXgKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1cbmV3dGhlb3JlbXtub3RlfXtOb3RlfVtjaGFwdGVyXQotXG5ld2NvbW1hbmR7XGNvZGV9WzFde1x0ZXh0dHR7XHNtYWxsICMxfX0KLVxyZW5ld2NvbW1hbmRcdmVyYmF0aW10YWJzaXplezRccmVsYXh9Ci1cbmV3Y29tbWFuZHtcamF4cnN9e0pBWC1SU30KLQotXG5ld2NvbW1hbmR7XENvbnN1bWVzfXtcY29kZXtAQ29uc3VtZXN9fQotXG5ld2NvbW1hbmR7XEVuY29kZWR9e1xjb2Rle0BFbmNvZGVkfX0KLVxuZXdjb21tYW5ke1xIZWFkZXJQYXJhbX17XGNvZGV7QEhlYWRlclwtUGFyYW19fQotXG5ld2NvbW1hbmR7XENvbnRleHR9e1xjb2Rle0BDb250ZXh0fX0KLVxuZXdjb21tYW5ke1xTZWN1cml0eUNvbnRleHR9e1xjb2Rle1NlY3VyaXR5XC1Db250ZXh0fX0KLVxuZXdjb21tYW5ke1xIdHRwSGVhZGVyc317XGNvZGV7SHR0cFwtSGVhZGVyc319Ci1cbmV3Y29tbWFuZHtcSHR0cE1ldGhvZH17XGNvZGV7QEh0dHBcLU1ldGhvZH19Ci1cbmV3Y29tbWFuZHtcTWF0cml4UGFyYW19e1xjb2Rle0BNYXRyaXhcLVBhcmFtfX0KLVxuZXdjb21tYW5ke1xNc2dSZWFkfXtcY29kZXtNZXNzYWdlXC1Cb2R5XC1SZWFkZXJ9fQotXG5ld2NvbW1hbmR7XE1zZ1dyaXRlfXtcY29kZXtNZXNzYWdlXC1Cb2R5XC1Xcml0ZXJ9fQotXG5ld2NvbW1hbmR7XFBhdGh9e1xjb2Rle0BQYXRofX0KLVxuZXdjb21tYW5ke1xQYXRoUGFyYW19e1xjb2Rle0BQYXRoXC1QYXJhbX19Ci1cbmV3Y29tbWFuZHtcUHJvZHVjZXN9e1xjb2Rle0BQcm9kdWNlc319Ci1cbmV3Y29tbWFuZHtcUHJvdmlkZXJ9e1xjb2Rle0BQcm92aWRlcn19Ci1cbmV3Y29tbWFuZHtcUXVlcnlQYXJhbX17XGNvZGV7QFF1ZXJ5XC1QYXJhbX19Ci1cbmV3Y29tbWFuZHtcRm9ybVBhcmFtfXtcY29kZXtARm9ybVwtUGFyYW19fQotXG5ld2NvbW1hbmR7XENvb2tpZVBhcmFtfXtcY29kZXtAQ29va2llXC1QYXJhbX19Ci1cbmV3Y29tbWFuZHtcUmVxdWVzdH17XGNvZGV7UmVxdWVzdH19Ci1cbmV3Y29tbWFuZHtcUmVzcG9uc2V9e1xjb2Rle1Jlc3BvbnNlfX0KLVxuZXdjb21tYW5ke1xSZXNwb25zZUJ1aWxkZXJ9e1xjb2Rle1Jlc3BvbnNlXC1CdWlsZGVyfX0KLVxuZXdjb21tYW5ke1xyZH17XGNvZGV7UnVudGltZVwtRGVsZWdhdGV9fQotXG5ld2NvbW1hbmR7XFVyaUluZm99e1xjb2Rle1VyaVwtSW5mb319Ci1cbmV3Y29tbWFuZHtcV2ViQXBwRXhjfXtcY29kZXtXZWJcLUFwcGxpY2F0aW9uXC1FeGNlcHRpb259fQotXG5ld2NvbW1hbmR7XFJlc291cmNlfXtcY29kZXtqYXZheC5cLWFubm90YXRpb24uXC1SZXNvdXJjZX19CmRpZmYgLS1naXQgYS9zcGVjL3N0eWxlcy9udGhlb3JlbS5zdHkgYi9zcGVjL3N0eWxlcy9udGhlb3JlbS5zdHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzYzZiMjcuLjAwMDAwMDAKLS0tIGEvc3BlYy9zdHlsZXMvbnRoZW9yZW0uc3R5CisrKyAvZGV2L251bGwKQEAgLTEsMTAzNiArMCwwIEBACi0lJQotJSUgVGhpcyBpcyBmaWxlIGBudGhlb3JlbS5zdHknLAotJSUgZ2VuZXJhdGVkIHdpdGggdGhlIGRvY3N0cmlwIHV0aWxpdHkuCi0lJQotJSUgVGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcyB3ZXJlOgotJSUKLSUlIG50aGVvcmVtLmR0eCAgKHdpdGggb3B0aW9uczogYHBhY2thZ2UnKQotJSUgCi0lJSBJTVBPUlRBTlQgTk9USUNFOgotJSUgCi0lJSBGb3IgdGhlIGNvcHlyaWdodCBzZWUgdGhlIHNvdXJjZSBmaWxlLgotJSUgCi0lJSBBbnkgbW9kaWZpZWQgdmVyc2lvbnMgb2YgdGhpcyBmaWxlIG11c3QgYmUgcmVuYW1lZAotJSUgd2l0aCBuZXcgZmlsZW5hbWVzIGRpc3RpbmN0IGZyb20gbnRoZW9yZW0uc3R5LgotJSUgCi0lJSBGb3IgZGlzdHJpYnV0aW9uIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2Ugc2VlIHRoZSB0ZXJtcwotJSUgZm9yIGNvcHlpbmcgYW5kIG1vZGlmaWNhdGlvbiBpbiB0aGUgZmlsZSBudGhlb3JlbS5kdHguCi0lJSAKLSUlIFRoaXMgZ2VuZXJhdGVkIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIGxvbmcgYXMgdGhlCi0lJSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMsIGFzIGxpc3RlZCBhYm92ZSwgYXJlIHBhcnQgb2YgdGhlCi0lJSBzYW1lIGRpc3RyaWJ1dGlvbi4gKFRoZSBzb3VyY2VzIG5lZWQgbm90IG5lY2Vzc2FyaWx5IGJlCi0lJSBpbiB0aGUgc2FtZSBhcmNoaXZlIG9yIGRpcmVjdG9yeS4pCi1cZGVmXGZpbGVkYXRlezIwMDMvMDYvMjV9Ci1cZGVmXGRvY2RhdGV7MjAwMy8wNi8yNX0KLVxkZWZcZmlsZXZlcnNpb257MS4yMn0KLVxkZWZcYmFzZW5hbWV7bnRoZW9yZW19Ci0lJSBUaGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFuZC9vciBtb2RpZmllZCB1bmRlciB0aGUKLSUlIGNvbmRpdGlvbnMgb2YgdGhlIExhVGVYIFByb2plY3QgUHVibGljIExpY2Vuc2UsIGVpdGhlciB2ZXJzaW9uIDEuMgotJSUgb2YgdGhpcyBsaWNlbnNlIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0lJSBUaGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBsaWNlbnNlIGlzIGluCi0lJSAgICBodHRwOi8vd3d3LmxhdGV4LXByb2plY3Qub3JnL2xwcGwudHh0Ci0lJSBhbmQgdmVyc2lvbiAxLjIgb3IgbGF0ZXIgaXMgcGFydCBvZiBhbGwgZGlzdHJpYnV0aW9ucyBvZiBMYVRlWAotJSUgdmVyc2lvbiAxOTk5LzEyLzAxIG9yIGxhdGVyLgotJSUgXENoYXJhY3RlclRhYmxlCi0lJSAge1VwcGVyLWNhc2UgICAgXEFcQlxDXERcRVxGXEdcSFxJXEpcS1xMXE1cTlxPXFBcUVxSXFNcVFxVXFZcV1xYXFlcWgotJSUgICBMb3dlci1jYXNlICAgIFxhXGJcY1xkXGVcZlxnXGhcaVxqXGtcbFxtXG5cb1xwXHFcclxzXHRcdVx2XHdceFx5XHoKLSUlICAgRGlnaXRzICAgICAgICBcMFwxXDJcM1w0XDVcNlw3XDhcOQotJSUgICBFeGNsYW1hdGlvbiAgIFwhICAgICBEb3VibGUgcXVvdGUgIFwiICAgICBIYXNoIChudW1iZXIpIFwjCi0lJSAgIERvbGxhciAgICAgICAgXCQgICAgIFBlcmNlbnQgICAgICAgXCUgICAgIEFtcGVyc2FuZCAgICAgXCYKLSUlICAgQWN1dGUgYWNjZW50ICBcJyAgICAgTGVmdCBwYXJlbiAgICBcKCAgICAgUmlnaHQgcGFyZW4gICBcKQotJSUgICBBc3RlcmlzayAgICAgIFwqICAgICBQbHVzICAgICAgICAgIFwrICAgICBDb21tYSAgICAgICAgIFwsCi0lJSAgIE1pbnVzICAgICAgICAgXC0gICAgIFBvaW50ICAgICAgICAgXC4gICAgIFNvbGlkdXMgICAgICAgXC8KLSUlICAgQ29sb24gICAgICAgICBcOiAgICAgU2VtaWNvbG9uICAgICBcOyAgICAgTGVzcyB0aGFuICAgICBcPAotJSUgICBFcXVhbHMgICAgICAgIFw9ICAgICBHcmVhdGVyIHRoYW4gIFw+ICAgICBRdWVzdGlvbiBtYXJrIFw/Ci0lJSAgIENvbW1lcmNpYWwgYXQgXEAgICAgIExlZnQgYnJhY2tldCAgXFsgICAgIEJhY2tzbGFzaCAgICAgXFwKLSUlICAgUmlnaHQgYnJhY2tldCBcXSAgICAgQ2lyY3VtZmxleCAgICBcXiAgICAgVW5kZXJzY29yZSAgICBcXwotJSUgICBHcmF2ZSBhY2NlbnQgIFxgICAgICBMZWZ0IGJyYWNlICAgIFx7ICAgICBWZXJ0aWNhbCBiYXIgIFx8Ci0lJSAgIFJpZ2h0IGJyYWNlICAgXH0gICAgIFRpbGRlICAgICAgICAgXH59Ci1cdHlwZW91dHtTdHlsZSBgXGJhc2VuYW1lJywgVmVyc2lvbiBcZmlsZXZlcnNpb25cc3BhY2UgPFxmaWxlZGF0ZT59Ci1cUHJvdmlkZXNQYWNrYWdle3N0eWxlcy9udGhlb3JlbX1bXGZpbGVkYXRlIFxzcGFjZVxmaWxldmVyc2lvbl0KLVxuZXdpZlxpZkB0aG1tYXJrc1xAdGhtbWFya3NmYWxzZQotXG5ld2lmXGlmQHRocmVmXEB0aHJlZmZhbHNlCi1cbmV3aWZcaWZ0aG1AdGVtcGlmCi1cRGVjbGFyZU9wdGlvbnt0aG1tYXJrc317JSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotXFBhY2thZ2VJbmZve1xiYXNlbmFtZX17T3B0aW9uIGB0aG1tYXJrcycgbG9hZGVkfSUKLVxAdGhtbWFya3N0cnVlCi1cbmV3Y291bnRlcntlbmROb25lY3RyfQotXG5ld2NvdW50ZXJ7Y3Vyck5vbmVjdHJ9Ci1cbmV3aWZcaWZzZXRlbmRtYXJrXHNldGVuZG1hcmt0cnVlCi1cZ2RlZlxlbmR0cml2bGlzdHslCi0gIFxAZW5kdHJpdmxpc3R7XFBvdEVuZE1hcmt7XHVuc2tpcFxub2JyZWFrXGhmaWxsXG5vYnJlYWt9fX0KLVxnZGVmXEBlbmR0cml2bGlzdCMxeyUgICUgZnJvbSBcZW5kdHJpdmxpc3QKLSAgXGlmQGlubGFiZWwgXGluZGVudFxmaQotICBcaWZAbmV3bGlzdCBcQG5vaXRlbWVyclxmaQotICBcaWZobW9kZQotICAgICBcaWZkaW1cbGFzdHNraXAgPlx6QCAjMVx1bnNraXAgXHBhciAgJTw8PDw8PDw8PDw8PDw8PDw8PDw8PDwKLSAgICAgICAgICAgXGVsc2UgXHVuc2tpcCBccGFyIFxmaQotICAgICBcZmkKLSAgXGlmQG5vcGFybGlzdCBcZWxzZQotICAgIFxpZmRpbVxsYXN0c2tpcCA+XHpACi0gICAgICAgXEB0ZW1wc2tpcGFcbGFzdHNraXAgXHZza2lwIC1cbGFzdHNraXAKLSAgICAgIFxhZHZhbmNlXEB0ZW1wc2tpcGFccGFyc2tpcCBcYWR2YW5jZVxAdGVtcHNraXBhIC1cQG91dGVycGFyc2tpcAotICAgICAgXHZza2lwXEB0ZW1wc2tpcGEKLSAgICBcZmkKLSAgICBcQGVuZHBhcmVudgotICBcZml9Ci1cZ2RlZlxTZXRNYXJrQGVuZGVxbntccXVhZH0lICBhcyBkZWZhdWx0LCBjZi4gb3B0aW9uIGxlcW5vCi1cZ2RlZlxlbmRlcXVhdGlvbntcZXFubyBcaGJveHtcQGVxbm51bSBcUG90RW5kTWFya3tcU2V0TWFya0BlbmRlcW59fSUKLSAgICAkJFxnbG9iYWxcQGlnbm9yZXRydWV9Ci1cZ2RlZlxbeyUKLSAgIFxyZWxheFxpZm1tb2RlCi0gICAgICBcQGJhZG1hdGgKLSAgIFxlbHNlCi0gICAgICBcaWZ2bW9kZQotICAgICAgICAgXG5vaW50ZXJsaW5lc2tpcAotICAgICAgICAgXG1ha2Vib3hbLjZcbGluZXdpZHRoXSUKLSAgICAgIFxmaQotICAgICAgJCRcc3RlcGNvdW50ZXJ7ZW5kXEluVGhlb1R5cGUgY3RyfSUKLSAgICAgICAgXEBpZnVuZGVmaW5lZHttYXJrXHJvbWFue2N1cnJcSW5UaGVvVHlwZSBjdHJ9JQotICAgICAgICAgICAgICAgICAgICAgIFxJblRoZW9UeXBlXHJvbWFue2VuZFxJblRoZW9UeXBlIGN0cn19e1xyZWxheH0lCi0gICAgICAgICAge1xpZnhcY3NuYW1lXEluVGhlb1R5cGUgU3ltYm9sXGVuZGNzbmFtZVxAZW1wdHlcZWxzZQotICAgICAgICAgICAgIFxib3htYXhkZXB0aD0uNWV4XGJlZ2lue2FycmF5fVtiXXtsfSUKLSAgICAgICAgICAgICBcYm94bWF4ZGVwdGg9XG1heGRpbWVuXGRpc3BsYXlzdHlsZVxmaX0lCi0gICAgICAgIFxhZGR0b2NvdW50ZXJ7ZW5kXEluVGhlb1R5cGUgY3RyfXstMX0lCi0gICAgICAgICUlJCQgQlJBQ0UgTUFUQ0ggSEFDSwotICAgXGZpfQotXGdkZWZcXXslCi0gICAgICBcc3RlcGNvdW50ZXJ7ZW5kXEluVGhlb1R5cGUgY3RyfSUKLSAgICAgICAgXEBpZnVuZGVmaW5lZHttYXJrXHJvbWFue2N1cnJcSW5UaGVvVHlwZSBjdHJ9JQotICAgICAgICAgICAgICAgICAgICAgIFxJblRoZW9UeXBlXHJvbWFue2VuZFxJblRoZW9UeXBlIGN0cn19e1xyZWxheH0lCi0gICAgICAgICAge1xpZnhcY3NuYW1lXEluVGhlb1R5cGUgU3ltYm9sXGVuZGNzbmFtZVxAZW1wdHlcZWxzZQotICAgICAgICAgICAgICBcZW5ke2FycmF5fVxmaX0lCi0gICAgICAgIFxhZGR0b2NvdW50ZXJ7ZW5kXEluVGhlb1R5cGUgY3RyfXstMX0lCi0gICBccmVsYXhcaWZtbW9kZQotICAgICAgXGlmaW5uZXIKLSAgICAgICAgIFxAYmFkbWF0aAotICAgICAgXGVsc2UKLSAgICAgICAgICBcUG90RW5kTWFya3tcZXFub31cZ2xvYmFsXEBpZ25vcmV0cnVlJCQlJSQkIEJSQUNFIE1BVENIIEhBQ0sKLSAgICAgIFxmaQotICAgXGVsc2UKLSAgICAgIFxAYmFkbWF0aAotICAgXGZpCi0gICBcaWdub3Jlc3BhY2VzfQotXGdkZWZcU2V0TWFya0BlbmRlcW5hcnJheSMxe1xsbGFwe1xyYWlzZWJveHstMS4zZW19eyMxfX19Ci1cZ2RlZlxlbmRlcW5hcnJheXslCi0gICAgICBcZ2xvYmFsXGxldFxPbGRlcW5udW09XEBlcW5udW0KLSAgICAgIFxnZGVmXEBlcW5udW17XE9sZGVxbm51bVxQb3RFbmRNYXJre1xTZXRNYXJrQGVuZGVxbmFycmF5fX0lCi0gICAgICBcQEBlcW5jcgotICAgICAgXGVncm91cAotICAgICAgXGdsb2JhbFxhZHZhbmNlXGNAZXF1YXRpb25cbUBuZQotICAgJCRcZ2xvYmFsXEBpZ25vcmV0cnVlCi0gICAgICBcZ2xvYmFsXGxldFxAZXFubnVtXE9sZGVxbm51bX0KLVxAbmFtZWRlZntlbmRlcW5hcnJheSp9eyUKLSAgICAgJSAgICBmcm9tIFxAQGVxbmNyOgotICAgIFxsZXRccmVzZXJ2ZWRAYVxyZWxheAotICAgIFxpZmNhc2VcQGVxY250IFxkZWZccmVzZXJ2ZWRAYXsmICYgJn1cb3IgXGRlZlxyZXNlcnZlZEBheyYgJn0lCi0gICAgIFxvciBcZGVmXHJlc2VydmVkQGF7Jn1cZWxzZQotICAgICAgIFxsZXRccmVzZXJ2ZWRAYVxAZW1wdHkKLSAgICAgICBcQGxhdGV4QGVycm9ye1RvbyBtYW55IGNvbHVtbnMgaW4gZXFuYXJyYXkgZW52aXJvbm1lbnR9XEBlaGNcZmkKLSAgICAgXHJlc2VydmVkQGEge1xub3JtYWxmb250IFxub3JtYWxjb2xvciBcUG90RW5kTWFya3t9fSUKLSAgICAgXGdsb2JhbFxAZXFuc3d0cnVlXGdsb2JhbFxAZXFjbnRcekBcY3IKLSAgICAgJQotICAgICAgXGVncm91cAotICAgICAgXGdsb2JhbFxhZHZhbmNlXGNAZXF1YXRpb25cbUBuZQotICAgJCRcZ2xvYmFsXEBpZ25vcmV0cnVlfQotXGdkZWZcZW5kdGFiYmluZ3slCi0gIFxQb3RFbmRNYXJre1xgfVxAc3RvcGxpbmVcaWZudW1cQHRhYnB1c2ggPlx6QCBcQGJhZHBvcHRhYnMKLSAgXGZpXGVuZHRyaXZsaXN0fQotXGdkZWZcZW5kY2VudGVyeyUKLSAgXEBlbmR0cml2bGlzdAotICAgIHtcUG90RW5kTWFya3tccmlnaHRza2lwMHB0JQotICAgICAgICAgXHNldHRvd2lkdGh7XGxlZnRza2lwfSUKLSAgICAgICAgICB7IFxjc25hbWUgbWFya1xyb21hbntjdXJyXEluVGhlb1R5cGUgY3RyfVxJblRoZW9UeXBlCi0gICAgICAgICAgICAgICAgICAgXHJvbWFue2VuZFxJblRoZW9UeXBlIGN0cn1cZW5kY3NuYW1lfSUKLSAgICAgICAgIFxhZHZhbmNlXGxlZnRza2lwXEBmbHVzaGdsdWVcaHNraXBcQGZsdXNoZ2x1ZX19fQotXGdkZWZcQGVtcHR5e30KLVxnZGVmXEBlbmR0aGVvcmVteyUKLSAgXGV4cGFuZGFmdGVyCi0gIFxpZnhcY3NuYW1lXEluVGhlb1R5cGUgU3ltYm9sXGVuZGNzbmFtZVxAZW1wdHlcc2V0ZW5kbWFya2ZhbHNlXGZpCi0gIFxAZW5kdHJpdmxpc3QKLSAgICB7XGlmc2V0ZW5kbWFyawotICAgICBcdW5za2lwXG5vYnJlYWtcaGZpbGxcbm9icmVha1xjc25hbWVcSW5UaGVvVHlwZSBTeW1ib2xcZW5kY3NuYW1lCi0gICAgIFxzZXRlbmRtYXJrZmFsc2UgXGZpfSUKLSAgXGlmc2V0ZW5kbWFya1xPcmdhbml6ZVRoZW9yZW1TeW1ib2xcZWxzZVxnbG9iYWxcc2V0ZW5kbWFya3RydWVcZmkKLSAgXGNzbmFtZVxJblRoZW9UeXBlIEBwb3N0d29ya1xlbmRjc25hbWUKLSAgfQotXGdkZWZcTm9FbmRNYXJre1xnbG9iYWxcc2V0ZW5kbWFya2ZhbHNlfQotXGdkZWZccWVke1xleHBhbmRhZnRlclxkZWZcY3NuYW1lIFxJblRoZW9UeXBlIFN5bWJvbFxlbmRjc25hbWUKLSAgICAgICAgICB7XHRoZVxxZWRzeW1ib2x9fSUKLVxnZGVmXFBvdEVuZE1hcmsjMXtcU2V0RW5kTWFya3tcSW5UaGVvVHlwZX17IzF9fSUKLVxnZGVmXFNldEVuZE1hcmsjMSMyeyUKLSAgIFxzdGVwY291bnRlcntlbmQjMWN0cn0lCi0gICBcQGlmdW5kZWZpbmVke21hcmtccm9tYW57Y3VyciMxY3RyfSMxXHJvbWFue2VuZCMxY3RyfX0lCi0gICB7XHJlbGF4fSUKLSAgIHsjMntcY3NuYW1lIG1hcmtccm9tYW57Y3VyciMxY3RyfSMxXHJvbWFue2VuZCMxY3RyfVxlbmRjc25hbWUKLSAgICAgICBcaWZkaW1ccmlnaHRtYXJnaW4+XHpAXGhza2lwLVxyaWdodG1hcmdpblxmaQotICAgICAgIFxoYm94IHRvIDBjbXt9fX19JQotXG5ld3NraXBcbXlzYXZza2lwCi1cZ2RlZlxAYmJzcGhhY2t7JQotICAgIFxpZnZtb2RlXGVsc2VcbXlzYXZza2lwXGxhc3Rza2lwCi0gICAgXHVuc2tpcFxmaX0KLVxnZGVmXEBlZXNwaGFja3slCi0gICAgXGlmZGltXG15c2F2c2tpcD5cekAKLSAgICBcdnNraXBcbXlzYXZza2lwIFxlbHNlXGZpfQotXGdkZWZcT3JnYW5pemVUaGVvcmVtU3ltYm9seyUKLSAgXEBiYnNwaGFjawotICBcZWRlZlx0aG1AdG1we1xleHBhbmRhZnRlclxleHBhbmRhZnRlclxleHBhbmRhZnRlclx0aG1AbWVhbmluZwotICAgICAgICAgXGV4cGFuZGFmdGVyXG1lYW5pbmdcY3NuYW1lXEluVGhlb1R5cGUgU3ltYm9sXGVuZGNzbmFtZVxyZWxheH0lCi0gIFxwcm90ZWN0ZWRAd3JpdGVcQGF1eG91dHt9JQotICAgICB7XHN0cmluZ1xnbG9iYWxcc3RyaW5nXGRlZlxzdHJpbmdcbWFyayUKLSAgICAgIFxyb21hbntjdXJyXEluVGhlb1R5cGUgY3RyfVxJblRoZW9UeXBlIFxyb21hbntlbmRcSW5UaGVvVHlwZSBjdHJ9JQotICAgICAge1x0aG1AdG1wfX0lCi0gIFxAZWVzcGhhY2t9Ci19ICUgZW5kIG9mIG9wdGlvbiBbdGhtbWFya3NdCi1cRGVjbGFyZU9wdGlvbntsZXFub317JSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgXGlmQHRobW1hcmtzCi0gIFxQYWNrYWdlSW5mb3tcYmFzZW5hbWV9e09wdGlvbiBgbGVxbm8nIGxvYWRlZH0lCi0gICBcZ2RlZlxTZXRNYXJrQGVuZGVxbiMxe1xoc3NcbGxhcHsjMX19Ci0gICBcZ2RlZlxTZXRNYXJrQGVuZGVxbmFycmF5IzF7XGhzc1xsbGFweyMxfX0KLSAgXGZpfSUKLVxEZWNsYXJlT3B0aW9ue2ZsZXFufXslICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotXGlmQHRobW1hcmtzCi0gXFBhY2thZ2VJbmZve1xiYXNlbmFtZX17T3B0aW9uIGBmbGVxbicgbG9hZGVkfSUKLSBccmVuZXdjb21tYW5kXFt7XHJlbGF4Ci0gICAgXGlmbW1vZGVcQGJhZG1hdGgKLSAgICBcZWxzZQotICAgICBcYmVnaW57dHJpdmxpc3R9JQotICAgICAgICBcQGJlZ2lucGFycGVuYWx0eVxwcmVkaXNwbGF5cGVuYWx0eQotICAgICAgICBcQGVuZHBhcnBlbmFsdHlccG9zdGRpc3BsYXlwZW5hbHR5Ci0gICAgICAgIFxpdGVtW11cbGVhdmV2bW9kZQotICAgICAgICBcaGJAeHRAXGxpbmV3aWR0aFxiZ3JvdXAgJFxtQHRoXGRpc3BsYXlzdHlsZSAlJAotICAgICAgICBcaHNraXBcbWF0aGluZGVudFxiZ3JvdXAKLSAgICAgICAgICBcc3RlcGNvdW50ZXJ7ZW5kXEluVGhlb1R5cGUgY3RyfSUKLSAgICAgICAgICBcQGlmdW5kZWZpbmVke21hcmtccm9tYW57Y3VyclxJblRoZW9UeXBlIGN0cn0lCi0gICAgICAgICAgICAgICAgICAgICAgICBcSW5UaGVvVHlwZVxyb21hbntlbmRcSW5UaGVvVHlwZSBjdHJ9fXtccmVsYXh9JQotICAgICAgICAgICAge1xpZnhcY3NuYW1lXEluVGhlb1R5cGUgU3ltYm9sXGVuZGNzbmFtZVxAZW1wdHlcZWxzZQotICAgICAgICAgICAgICBcYm94bWF4ZGVwdGg9LjVleFxiZWdpbnthcnJheX1bYl17bH0lCi0gICAgICAgICAgICAgIFxib3htYXhkZXB0aD1cbWF4ZGltZW5cZGlzcGxheXN0eWxlXGZpfSUKLSAgICAgICAgICBcYWRkdG9jb3VudGVye2VuZFxJblRoZW9UeXBlIGN0cn17LTF9JQotICAgIFxmaX0KLSBccmVuZXdjb21tYW5kXF17JQotICAgIFxzdGVwY291bnRlcntlbmRcSW5UaGVvVHlwZSBjdHJ9JQotICAgIFxAaWZ1bmRlZmluZWR7bWFya1xyb21hbntjdXJyXEluVGhlb1R5cGUgY3RyfSUKLSAgICAgICAgICAgICAgICAgIFxJblRoZW9UeXBlXHJvbWFue2VuZFxJblRoZW9UeXBlIGN0cn19e1xyZWxheH0lCi0gICAgICB7XGlmeFxjc25hbWVcSW5UaGVvVHlwZSBTeW1ib2xcZW5kY3NuYW1lXEBlbXB0eVxlbHNlCi0gICAgICAgICAgXGVuZHthcnJheX1cZml9JQotICAgIFxhZGR0b2NvdW50ZXJ7ZW5kXEluVGhlb1R5cGUgY3RyfXstMX0lCi0gICAgXHJlbGF4XGlmbW1vZGUKLSAgICAgICAgICAgICAgICAgIFxlZ3JvdXAgJFxoZmlsXFBvdEVuZE1hcmt7fSUgJAotICAgICAgICAgICAgICAgIFxlZ3JvdXAKLSAgICAgICAgICAgICAgXGVuZHt0cml2bGlzdH0lCi0gICAgICAgICAgICBcZWxzZSBcQGJhZG1hdGgKLSAgICAgICAgICAgIFxmaX0KLVxnZGVmXGVuZGVxdWF0aW9ueyUKLSAgICAgJFxoZmlsICUgJAotICAgICAgICAgXGRpc3BsYXl3aWR0aFxsaW5ld2lkdGhcaGJveHtcQGVxbm51bSBcUG90RW5kTWFya3tcU2V0TWFya0BlbmRlcW59fSUKLSAgICAgICBcZWdyb3VwCi0gICAgICBcZW5kdHJpdmxpc3R9Ci1cZ2RlZlxlbmRlcW5hcnJheXslCi0gICAgXGdsb2JhbFxsZXRcT2xkZXFubnVtPVxAZXFubnVtCi0gICAgXGdkZWZcQGVxbm51bXtcT2xkZXFubnVtXFBvdEVuZE1hcmt7XFNldE1hcmtAZW5kZXFuYXJyYXl9fSUKLSAgICBcQEBlcW5jcgotICAgIFxlZ3JvdXAKLSAgICBcZ2xvYmFsXGFkdmFuY2VcY0BlcXVhdGlvblxtQG5lJCQlICQkCi0gICAgXGdsb2JhbFxAaWdub3JldHJ1ZQotICAgIFxnbG9iYWxcbGV0XEBlcW5udW1cT2xkZXFubnVtfQotXGZpfSUgZW5kIG9mIG9wdGlvbiBmbGVxbgotXERlY2xhcmVPcHRpb257dGhyZWZ9eyUqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gIFxQYWNrYWdlSW5mb3tcYmFzZW5hbWV9e09wdGlvbiBgdGhyZWYnIGxvYWRlZH0lCi1cQHRocmVmdHJ1ZQotXG5ld3NraXBcbXlzYXZza2lwCi1cZ2RlZlxAYmJzcGhhY2t7JQotICAgIFxpZnZtb2RlXGVsc2VcbXlzYXZza2lwXGxhc3Rza2lwCi0gICAgXHVuc2tpcFxmaX0KLVxnZGVmXEBlZXNwaGFja3slCi0gICAgXGlmZGltXG15c2F2c2tpcD5cekAKLSAgICBcdnNraXBcbXlzYXZza2lwIFxlbHNlXGZpfQotXGRlZlxsYWJlbCMxeyUKLSAgXEBpZm5leHRjaGFyWyVdCi0gICAgIHtcbGFiZWxAb3B0YXJneyMxfX0lCi0gICAgIHtcdGhtQG1ha2VsYWJlbHsjMX19fQotXGRlZlx0aG1AbWFrZWxhYmVsIzF7JQotICBcQGJic3BoYWNrCi0gIFxlZGVmXHRobUB0bXB7XGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyXGV4cGFuZGFmdGVyXHRobUBtZWFuaW5nCi0gICAgICAgICBcZXhwYW5kYWZ0ZXJcbWVhbmluZ1xjc25hbWVcSW5UaGVvVHlwZSBLZXl3b3JkXGVuZGNzbmFtZVxyZWxheH0lCi0gIFxwcm90ZWN0ZWRAd3JpdGVcQGF1eG91dHt9JQotICAgICB7XHN0cmluZ1xuZXdsYWJlbHsjMX17e1xAY3VycmVudGxhYmVsfXtcdGhlcGFnZX19W1x0aG1AdG1wXX0lCi0gIFxAZWVzcGhhY2t9Ci1cZGVmXGxhYmVsQG9wdGFyZyMxWyMyXXslCi0gIFxAYnNwaGFjawotICBccHJvdGVjdGVkQHdyaXRlXEBhdXhvdXR7fSUKLSAgICAge1xzdHJpbmdcbmV3bGFiZWx7IzF9e3tcQGN1cnJlbnRsYWJlbH17XHRoZXBhZ2V9fVsjMl19JQotICBcQGVzcGhhY2t9Ci1cZGVmXEBuZXdsQGJlbCMxIzIjM3slCi0gIFxAaWZwYWNrYWdlbG9hZGVke2JhYmVsfXtcQHNhZmVAYWN0aXZlc3RydWV9XHJlbGF4JQotICBcQGlmdW5kZWZpbmVkeyMxQCMyfSUKLSAgICBccmVsYXgKLSAgICB7XGdkZWYgXEBtdWx0aXBsZWxhYmVscyB7JQotICAgICAgIFxAbGF0ZXhAd2FybmluZ0Bub0BsaW5le1RoZXJlIHdlcmUgbXVsdGlwbHktZGVmaW5lZCBsYWJlbHN9fSUKLSAgICAgXEBsYXRleEB3YXJuaW5nQG5vQGxpbmV7TGFiZWwgYCMyJyBtdWx0aXBseSBkZWZpbmVkfX0lCi0gIFxnbG9iYWxcQG5hbWVkZWZ7IzFAIzJ9eyMzfSUKLSAgXEBpZm5leHRjaGFyW3tcc2V0QGxhYmVsQHR5cGV7IzF9eyMyfX0lXQotICAgICAgICAgICAgICAgXHJlbGF4fSUKLVxkZWZcc2V0QGxhYmVsQHR5cGUjMSMyWyMzXXslCi0gIFxnbG9iYWxcQG5hbWVkZWZ7IzFAIzJAdHlwZX17IzN9fQotCi1cbmV3Y29tbWFuZFxvcmdAdGVzdGRlZnt9Ci1cbGV0XG9yZ0B0ZXN0ZGVmXEB0ZXN0ZGVmCi1cZGVmXEB0ZXN0ZGVmIzEjMiMzeyUKLSAgXG9yZ0B0ZXN0ZGVmeyMxfXsjMn17IzN9JQotICBcQGlmbmV4dGNoYXJbe1xAZ29iYmxlb3B0fXt9JQotfQotXG5ld2NvbW1hbmRcQGdvYmJsZW9wdHt9Ci1cbG9uZ1xkZWZcQGdvYmJsZW9wdFsjMV17fQotXGRlZlx0aHJlZiMxeyUKLSAgIFxleHBhbmRhZnRlclxpZnhcY3NuYW1lIHJAIzFAdHlwZVxlbmRjc25hbWVcTm9uZQotICAgICBcUGFja2FnZVdhcm5pbmd7XGJhc2VuYW1lfXt0aHJlZjogUmVmZXJlbmNlIFR5cGUgb2YgYCMxJyBvbiBwYWdlCi0gICAgICBcdGhlcGFnZSBcc3BhY2UgdW5kZWZpbmVkfVxHQHJlZnVuZGVmaW5lZHRydWUKLSAgICAgXGVsc2VcY3NuYW1lIHJAIzFAdHlwZVxlbmRjc25hbWV+XGZpJQotICAgXGV4cGFuZGFmdGVyXEBzZXRyZWZcY3NuYW1lIHJAIzFcZW5kY3NuYW1lXEBmaXJzdG9mdHdveyMxfX0KLX0lIGVuZCBvZiBvcHRpb24gdGhyZWYgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1cRGVjbGFyZU9wdGlvbnthbXNtYXRofXslICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotXGlmQHRocmVmCi0gXFBhY2thZ2VJbmZve1xiYXNlbmFtZX17b3B0aW9uIGBhbXNtYXRoJyBoYW5kbGluZyBmb3IgYHRocmVmJyBsb2FkZWR9JQotXGxldFxsdHhAbGFiZWxcbGFiZWwKLVxnbG9iYWxcbGV0XHRobUBkZkBsYWJlbEBvcHRhcmdcQGVtcHR5Ci1cZGVmXGxhYmVsQGluQGRpc3BsYXkjMXslCi0gICAgXGlmeFxkZkBsYWJlbFxAZW1wdHlcZWxzZQotICAgICAgICBcQGFtc21hdGhAZXJye011bHRpcGxlIFxzdHJpbmdcbGFiZWwnczoKLSAgICAgICAgICAgIGxhYmVsICdcZGZAbGFiZWwnIHdpbGwgYmUgbG9zdH1cQGVoYQotICAgIFxmaQotICAgIFxnZGVmXGRmQGxhYmVseyMxfSUKLSAgICBcQGlmbmV4dGNoYXJbe1x0aG1AbGFiZWxAaW5AZGlzcGxheUBvcHRhcmd9e1x0aG1AbGFiZWxAaW5AZGlzcGxheUBub2FyZ30lXQotfQotXGRlZlx0aG1AbGFiZWxAaW5AZGlzcGxheUBub2FyZ3slCi0gICAgXGdsb2JhbFxsZXRcdGhtQGRmQGxhYmVsQG9wdGFyZ1xAZW1wdHkKLX0KLVxkZWZcdGhtQGxhYmVsQGluQGRpc3BsYXlAb3B0YXJnWyMxXXslCi0gICAgXGdkZWZcdGhtQGRmQGxhYmVsQG9wdGFyZ3sjMX0lCi19Ci1cZGVmXGVuZG1hdGhkaXNwbGF5QGF7JQotICBcaWZAZXFuc3cgXGdkZWZcZGZAdGFne1x0YWdmb3JtQFx0aGVlcXVhdGlvbn1cZmkKLSAgXGlmQGZsZXFuIFxAeHBcZW5kbWF0aGRpc3BsYXlAZmxlcW4KLSAgXGVsc2UgXGlmeFxkZkB0YWdcQGVtcHR5IFxlbHNlIFx2ZXFubyBcYWx0QHRhZyBcZGZAdGFnIFxmaQotICAgIFxpZnhcZGZAbGFiZWxcQGVtcHR5IFxlbHNlCi0gICAgICBcaWZ4XHRobUBkZkBsYWJlbEBvcHRhcmdcQGVtcHR5IFxAeHBcbHR4QGxhYmVsXEB4cHtcZGZAbGFiZWx9Ci0gICAgICAgICAgICAgICAgXGVsc2UgXEB4cFxsdHhAbGFiZWxcQHhwe1xkZkBsYWJlbH1bXHRobUBkZkBsYWJlbEBvcHRhcmddXGZpCi0gICAgICAgXGZpCi0gIFxmaQotICBcaWZudW1cZHNwYnJrQGx2bD5cbUBuZQotICAgIFxwb3N0ZGlzcGxheXBlbmFsdHkgLVxAZ2V0cGVuXGRzcGJya0BsdmwKLSAgICBcZ2xvYmFsXGRzcGJya0BsdmxcbUBuZQotICBcZmkKLX0KLVxkZWZcbWFrZUBkaXNwbGF5QHRhZ3slCi0gICAgXGlmQGVxbnN3Ci0gICAgICAgIFxyZWZzdGVwY291bnRlcntlcXVhdGlvbn0lCi0gICAgICAgIFx0YWdmb3JtQFx0aGVlcXVhdGlvbgotICAgIFxlbHNlCi0gICAgICAgIFxpZnRhZ0AKLSAgICAgICAgICAgIFxkZkB0YWcKLSAgICAgICAgICAgIFxnbG9iYWxcbGV0XGRmQHRhZ1xAZW1wdHkKLSAgICAgICAgXGZpCi0gICAgXGZpCi0gICAgXGlmbWVhc3VyaW5nQAotICAgIFxlbHNlCi0gICAgICBcaWZ4XGRmQGxhYmVsXEBlbXB0eVxlbHNlCi0gICAgICAgIFxpZnhcdGhtQGRmQGxhYmVsQG9wdGFyZ1xAZW1wdHkgXEB4cFxsdHhAbGFiZWxcQHhwe1xkZkBsYWJlbH0KLSAgICAgICAgICAgICAgICBcZWxzZSBcQHhwXGx0eEBsYWJlbFxAeHB7XGRmQGxhYmVsfVtcdGhtQGRmQGxhYmVsQG9wdGFyZ11cZmkKLSAgICAgICAgXGdsb2JhbFxsZXRcZGZAbGFiZWxcQGVtcHR5Ci0gICAgICBcZmkKLSAgICBcZmkKLX0KLVxkZWZcZW5kbWF0aGRpc3BsYXlAZmxlcW57JQotICAkXGhmaWxcaHNraXBcQG1hdGhtYXJnaW5cZWdyb3VwCi0gIFxpZm51bVxiYWRuZXNzPFxpbmZAYmFkIFxsZXRcdG9vQHdpZGVcQG5lIFxlbHNlIFxsZXRcdG9vQHdpZGVcekAgXGZpCi0gIFxpZnhcQGVtcHR5XGRmQHRhZwotICBcZWxzZQotICAgIFxzZXRib3g0XGhib3h7XGRmQHRhZwotICAgICAgICBcaWZ4XHRobUBkZkBsYWJlbEBvcHRhcmdcQGVtcHR5IFxAeHBcbHR4QGxhYmVsXEB4cHtcZGZAbGFiZWx9Ci0gICAgICAgICAgICAgICAgXGVsc2UgXEB4cFxsdHhAbGFiZWxcQHhwe1xkZkBsYWJlbH1bXHRobUBkZkBsYWJlbEBvcHRhcmddXGZpCi0gICAgfSUKLSAgXGZpCi0gIFxjc25hbWUgZW1kZkAlCi0gICAgXGlmeFxkZkB0YWdcQGVtcHR5IFVcZWxzZSBcaWZ0YWdzbGVmdEAgTFxlbHNlIFJcZmlcZmkKLSAgXGVuZGNzbmFtZQotfQotXGZpCi1caWZAdGhtbWFya3MKLSBcUGFja2FnZUluZm97XGJhc2VuYW1lfXtvcHRpb24gYGFtc21hdGgnIGhhbmRsaW5nIGZvciBgdGhtbWFya3MnIGxvYWRlZH0lCi1cbmV3ZGltZW5cdGhtQGFtc3RtcGRlcHRoCi1cZ2RlZlxUYWdzUGx1c0VuZG1hcmtzeyUKLSAgICAgIFxnbG9iYWxcbGV0XE9sZEBtYWtldGFnQEBAPVxtYWtldGFnQEBACi0gICAgICBcZ2xvYmFsXGxldFxPbGRAZGZAdGFnPVxkZkB0YWcKLSAgICAgIFxpZkBlcW5zd1xTZXRUYWdQbHVzRW5kTWFyawotICAgICAgICBcZWxzZQotICAgICAgICAgIFxpZnRhZ0BcU2V0VGFnUGx1c0VuZE1hcmsKLSAgICAgICAgICAgIFxlbHNlXFNldE9ubHlFbmRNYXJrCi0gICAgICAgICAgXGZpCi0gICAgICBcZml9Ci1cZ2RlZlxTZXRPbmx5RW5kTWFya3slCi0gICAgICBcZ2xvYmFsXHRhZ0B0cnVlCi0gICAgICAgIFxpZnRhZ3NsZWZ0QAotICAgICAgICAgICBcZ2RlZlxkZkB0YWd7XGhib3gKLSAgICAgICAgICAgICAgICAgICAgICAgdG8gXGRpc3BsYXl3aWR0aHtcaHNzXFBvdEVuZE1hcmt7XG1ha2V0YWdAQEB9fX0lCi0gICAgICAgIFxlbHNlCi0gICAgICAgICAgICBcZ2RlZlxkZkB0YWd7XFBvdEVuZE1hcmt7XG1ha2V0YWdAQEB9fSUKLSAgICAgICAgXGZpfQotXGdkZWZcU2V0VGFnUGx1c0VuZE1hcmt7JQotICAgICAgICBcaWZ0YWdzbGVmdEAKLSAgICAgICAgICBcZ2RlZlxtYWtldGFnQEBAIyMxeyUKLSAgICAgICAgICAgICAgIFxoYm94IHRvIFxkaXNwbGF5d2lkdGh7XG1AdGhcbm9ybWFsZm9udCMjMSUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXGhzc1xQb3RFbmRNYXJre1xoc3N9fX0lCi0gICAgICAgIFxlbHNlCi0gICAgICAgICAgXGdkZWZcbWFrZXRhZ0BAQCMjMXtcaGJveHtcbUB0aFxub3JtYWxmb250IyMxJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgXGxsYXB7XGhzc1xQb3RFbmRNYXJre1xyYWlzZWJveHstMS4zZW19fX19fSUKLSAgICAgICAgXGZpfQotXGdkZWZcUmVzdG9yZVRhZ3N7JQotICAgIFxnbG9iYWxcbGV0XG1ha2V0YWdAQEA9XE9sZEBtYWtldGFnQEBACi0gICAgXGdsb2JhbFxsZXRcZGZAdGFnPVxPbGRAZGZAdGFnfQotXGdkZWZcZW5kZ2F0aGVyeyUKLSAgICAgIFxUYWdzUGx1c0VuZG1hcmtzICUgPDw8PDw8PDw8Ci0gICAgICBcbWF0aEBjcgotICAgICAgXGJsYWNrQFx0b3R3aWR0aEAKLSAgICBcZWdyb3VwCi0gICAgJCQlCi0gICAgXFJlc3RvcmVUYWdzICAgICAgICAlIDw8PDw8PDw8PAotICAgIFxpZ25vcmVzcGFjZXNhZnRlcmVuZH0KLVxleHBhbmRhZnRlclxsZXRcY3NuYW1lIGVuZGdhdGhlcipcZW5kY3NuYW1lXGVuZGdhdGhlcgotXGRlZlxlbmRhbGlnbnslCi0gICAgICAgIFxpZmluZ2F0aGVyQFxlbHNlICAgICAgICUgPDw8PDw8PDw8Ci0gICAgICAgICAgIFxUYWdzUGx1c0VuZG1hcmtzXGZpICUgPDw8PDw8PDw8Ci0gICAgICAgIFxtYXRoQGNyCi0gICAgICAgIFxibGFja0BcdG90d2lkdGhACi0gICAgXGVncm91cAotICAgIFxpZmluZ2F0aGVyQAotICAgICAgICBccmVzdG9yZWFsaWduc3RhdGVACi0gICAgICAgIFxlZ3JvdXAKLSAgICAgICAgXG5vbnVtYmVyCi0gICAgICAgIFxpZm51bTA9YHtcZmlcaWZmYWxzZX1cZmkKLSAgICBcZWxzZQotICAgICAgICAkJCUKLSAgICAgICAgXFJlc3RvcmVUYWdzICAgICAgICAgICAgJSA8PDw8PDw8PDwKLSAgICBcZmkKLSAgICBcaWdub3Jlc3BhY2VzYWZ0ZXJlbmR9Ci1cZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBlbmRhbGlnbipcZW5kY3NuYW1lXGVuZGFsaWduCi1cbGV0XGVuZHhhbGlnbmF0XGVuZGFsaWduCi1cZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBlbmR4YWxpZ25hdCpcZW5kY3NuYW1lXGVuZGFsaWduCi1cbGV0XGVuZHh4YWxpZ25hdFxlbmRhbGlnbgotXGxldFxlbmRhbGlnbmF0XGVuZGFsaWduCi1cZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSBlbmRhbGlnbmF0KlxlbmRjc25hbWVcZW5kYWxpZ24KLVxsZXRcZW5kZmxhbGlnblxlbmRhbGlnbgotXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgZW5kZmxhbGlnbipcZW5kY3NuYW1lXGVuZGFsaWduCi1cZGVmXGxlbmRtdWx0bGluZUB7JQotICAgICAgICBcZ2xvYmFsXEBlcW5zd2ZhbHNlXHRhZ0BmYWxzZVx0YWdzbGVmdEBmYWxzZQotICAgICAgICBccmVuZG11bHRsaW5lQH0KLVxkZWZccmVuZG11bHRsaW5lQHslCi0gICAgXFRhZ3NQbHVzRW5kbWFya3MgICAgICAgICAgICUgPDw8PDw8PDw8Ci0gICAgXGlmdGFnQAotICAgICAgICAkXGxldFxlbmRtdWx0bGluZUBtYXRoXHJlbGF4Ci0gICAgICAgICAgICBcaWZzaGlmdHRhZ0AKLSAgICAgICAgICAgICAgICBcaHNraXBcbXVsdGxpbmVnYXAKLSAgICAgICAgICAgICAgICBcbGxhcHtcdnRvcHslCi0gICAgICAgICAgICAgICAgICAgIFxyYWlzZUB0YWcKLSAgICAgICAgICAgICAgICAgICAgXG5vcm1hbGJhc2VsaW5lcwotICAgICAgICAgICAgICAgICAgICBcc2V0Ym94XEBuZVxudWxsCi0gICAgICAgICAgICAgICAgICAgIFxkcFxAbmVcbGluZWh0QAotICAgICAgICAgICAgICAgICAgICBcYm94XEBuZQotICAgICAgICAgICAgICAgICAgICBcaGJveHtcc3RydXRAXG1ha2VAZGlzcGxheUB0YWd9JQotICAgICAgICAgICAgICAgIH19JQotICAgICAgICAgICAgXGVsc2UKLSAgICAgICAgICAgICAgICBcaHNraXBcbXVsdGxpbmV0YWdnYXAKLSAgICAgICAgICAgICAgICBcbWFrZUBkaXNwbGF5QHRhZwotICAgICAgICAgICAgXGZpCi0gICAgXGVsc2UKLSAgICAgICAgXGhza2lwXG11bHRsaW5lZ2FwCi0gICAgXGZpCi0gICAgXGhmaWxuZWcKLSAgICAgICAgXG1hdGhAY3IKLSAgICBcZWdyb3VwJCQlCi0gICAgXFJlc3RvcmVUYWdzfSAgICAgICAgICAgICAgICAlIDw8PDw8PDw8PAotXGRlZlxlbmRtYXRoZGlzcGxheSMxeyUKLSAgICAgXGlmbW1vZGUgXGVsc2UgXEBiYWRtYXRoIFxmaQotICAgICBcVGFnc1BsdXNFbmRtYXJrcyAlIDw8PDw8PDw8PAotICAgICBcZW5kbWF0aGRpc3BsYXlAYQotICAgICAkJCUKLSAgICAgXFJlc3RvcmVUYWdzICAgICAgICAlIDw8PDw8PDw8PAotICAgICBcZ2xvYmFsXGxldFxkZkBsYWJlbFxAZW1wdHkgXGdsb2JhbFxsZXRcZGZAdGFnXEBlbXB0eQotICAgICBcZ2xvYmFsXHRhZ0BmYWxzZSBcZ2xvYmFsXGxldFxhbHRAdGFnXEBlbXB0eQotICAgICBcZ2xvYmFsXEBlcW5zd2ZhbHNlCi19Ci1ccmVuZXdlbnZpcm9ubWVudHtlcXVhdGlvbn17JQotICBcZWRlZlxyZXNldEBlcXVhdGlvbnslCi0gICAgXEBueFxzZXRjb3VudGVye2VxdWF0aW9ufXtcbnVtYmVyXGNAZXF1YXRpb259fSUKLSAgXHJlZnN0ZXBjb3VudGVye2VxdWF0aW9ufSUKLSAgXHN0QHJyZWRmYWxzZSBcZ2xvYmFsXEBlcW5zd3RydWUKLSAgXG1hdGhkaXNwbGF5e2VxdWF0aW9ufSUKLX17JQotICBcZW5kbWF0aGRpc3BsYXl7ZXF1YXRpb259JQotICBcaWdub3Jlc3BhY2VzYWZ0ZXJlbmQKLX0KLVxyZW5ld2Vudmlyb25tZW50e2VxdWF0aW9uKn17JQotICBcc3RAcnJlZHRydWUgXGdsb2JhbFxAZXFuc3dmYWxzZQotICBcbWF0aGRpc3BsYXl7ZXF1YXRpb24qfSUKLX17JQotICBcZW5kbWF0aGRpc3BsYXl7ZXF1YXRpb24qfSUKLSAgXGlnbm9yZXNwYWNlc2FmdGVyZW5kCi19Ci1cZmkKLX0lIGVuZCBvZiBvcHRpb24gYW1zbWF0aC90aG1tYXJrcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotXGxldFx0aG1AdXNlc3RkXEB1bmRlZmluZWQKLVxEZWNsYXJlT3B0aW9ue3N0YW5kYXJkfXtcbGV0XHRobUB1c2VzdGRccmVsYXh9Ci1cbGV0XHRobUBub2NvbmZpZ1xAdW5kZWZpbmVkCi1cRGVjbGFyZU9wdGlvbntub2NvbmZpZ317XGxldFx0aG1Abm9jb25maWdccmVsYXh9Ci1cZ2RlZlxJblRoZW9UeXBle05vbmV9Ci1cZ2RlZlxOb25lS2V5d29yZHtOb25lfQotXGdkZWZcTm9uZVN5bWJvbHtOb25lfQotXGdkZWZcTm9uZXtOb25lfQotXGdkZWZcbmV3dGhlb3JlbXN0eWxlIzEjMiMzeyUKLSAgXGV4cGFuZGFmdGVyXEBpZnVuZGVmaW5lZHt0aEAjMX0lCi0gICB7XGV4cGFuZGFmdGVyXGdkZWZcY3NuYW1lIHRoQCMxXGVuZGNzbmFtZXslCi0gICAgXGRlZlxAYmVnaW50aGVvcmVtIyMjIzEjIyMjMnsjMn0lCi0gICAgXGRlZlxAb3BhcmdiZWdpbnRoZW9yZW0jIyMjMSMjIyMyIyMjIzN7IzN9fX0lCi0gICB7XFBhY2thZ2VFcnJvcntcYmFzZW5hbWV9e1RoZW9yZW0gc3R5bGUgIzEgYWxyZWFkeSBkZWZpbmVkfVxAZWhhfX0KLVxnZGVmXHJlbmV3dGhlb3JlbXN0eWxlIzEjMiMzeyUKLSAgXGV4cGFuZGFmdGVyXEBpZnVuZGVmaW5lZHt0aEAjMX0lCi0gICB7XFBhY2thZ2VFcnJvcntcYmFzZW5hbWV9e1RoZW9yZW0gc3R5bGUgIzEgdW5kZWZpbmVkfVxAZWhjfSUKLSAgICAge30lCi0gIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIHRoQCMxXGVuZGNzbmFtZVxyZWxheAotICBcbmV3dGhlb3JlbXN0eWxleyMxfXsjMn17IzN9fQotXG5ld3RoZW9yZW1zdHlsZXtwbGFpbn0lCi0gIHtcaXRlbVtcaHNraXBcbGFiZWxzZXAgXHRoZW9yZW1AaGVhZGVyZm9udCAjIzFcICMjMlx0aGVvcmVtQHNlcGFyYXRvcl19JQotICB7XGl0ZW1bXGhza2lwXGxhYmVsc2VwIFx0aGVvcmVtQGhlYWRlcmZvbnQgIyMxXCAjIzJcICgjIzMpXHRoZW9yZW1Ac2VwYXJhdG9yXX0KLVxuZXd0aGVvcmVtc3R5bGV7YnJlYWt9JQotICB7XGl0ZW1bXHJsYXB7XHZib3h7XGhib3h7XGhza2lwXGxhYmVsc2VwIFx0aGVvcmVtQGhlYWRlcmZvbnQKLSAgICAgICAgICAjIzFcICMjMlx0aGVvcmVtQHNlcGFyYXRvcn1caGJveHtcc3RydXR9fX1dfSUKLSAge1xpdGVtW1xybGFwe1x2Ym94e1xoYm94e1xoc2tpcFxsYWJlbHNlcCBcdGhlb3JlbUBoZWFkZXJmb250Ci0gICAgICAgICAgIyMxXCAjIzJcICgjIzMpXHRoZW9yZW1Ac2VwYXJhdG9yfVxoYm94e1xzdHJ1dH19fV19Ci1cbmV3dGhlb3JlbXN0eWxle2NoYW5nZX0lCi0gIHtcaXRlbVtcaHNraXBcbGFiZWxzZXAgXHRoZW9yZW1AaGVhZGVyZm9udCAjIzJcICMjMVx0aGVvcmVtQHNlcGFyYXRvcl19JQotICB7XGl0ZW1bXGhza2lwXGxhYmVsc2VwIFx0aGVvcmVtQGhlYWRlcmZvbnQgIyMyXCAjIzFcICgjIzMpXHRoZW9yZW1Ac2VwYXJhdG9yXX0KLVxuZXd0aGVvcmVtc3R5bGV7Y2hhbmdlYnJlYWt9JQotICB7XGl0ZW1bXHJsYXB7XHZib3h7XGhib3h7XGhza2lwXGxhYmVsc2VwIFx0aGVvcmVtQGhlYWRlcmZvbnQKLSAgICAgICAgICAjIzJcICMjMVx0aGVvcmVtQHNlcGFyYXRvcn1caGJveHtcc3RydXR9fX1dfSUKLSAge1xpdGVtW1xybGFwe1x2Ym94e1xoYm94e1xoc2tpcFxsYWJlbHNlcCBcdGhlb3JlbUBoZWFkZXJmb250Ci0gICAgICAgICAgIyMyXCAjIzFcICgjIzMpXHRoZW9yZW1Ac2VwYXJhdG9yfVxoYm94e1xzdHJ1dH19fV19Ci1cbmV3dGhlb3JlbXN0eWxle21hcmdpbn0lCi0gIHtcaXRlbVtcdGhlb3JlbUBoZWFkZXJmb250IFxsbGFweyMjMn1caHNraXBcbGFiZWxzZXAgIyMxXHRoZW9yZW1Ac2VwYXJhdG9yXX0lCi0gIHtcaXRlbVtcdGhlb3JlbUBoZWFkZXJmb250IFxsbGFweyMjMn1caHNraXBcbGFiZWxzZXAgIyMxXCAoIyMzKVx0aGVvcmVtQHNlcGFyYXRvcl19Ci1cbmV3dGhlb3JlbXN0eWxle21hcmdpbmJyZWFrfSUKLSAge1xpdGVtW1xybGFwe1x2Ym94e1xoYm94e1x0aGVvcmVtQGhlYWRlcmZvbnQKLSAgICBcbGxhcHsjIzJ9XGhza2lwXGxhYmVsc2VwXHJlbGF4ICMjMVx0aGVvcmVtQHNlcGFyYXRvcn1caGJveHtcc3RydXR9fX1dfQotICB7XGl0ZW1bXHJsYXB7XHZib3h7XGhib3h7XHRoZW9yZW1AaGVhZGVyZm9udAotICAgIFxsbGFweyMjMn1caHNraXBcbGFiZWxzZXBccmVsYXggIyMxXAotICAgICgjIzMpXHRoZW9yZW1Ac2VwYXJhdG9yfVxoYm94e1xzdHJ1dH19fV19Ci1cbmV3dGhlb3JlbXN0eWxle25vbnVtYmVycGxhaW59JQotICB7XGl0ZW1bXHRoZW9yZW1AaGVhZGVyZm9udFxoc2tpcFxsYWJlbHNlcCAjIzFcdGhlb3JlbUBzZXBhcmF0b3JdfSUKLSAge1xpdGVtW1x0aGVvcmVtQGhlYWRlcmZvbnRcaHNraXAgXGxhYmVsc2VwICMjMVwgKCMjMylcdGhlb3JlbUBzZXBhcmF0b3JdfQotXG5ld3RoZW9yZW1zdHlsZXtub251bWJlcmJyZWFrfSUKLSAge1xpdGVtW1xybGFwe1x2Ym94e1xoYm94e1xoc2tpcFxsYWJlbHNlcCBcdGhlb3JlbUBoZWFkZXJmb250Ci0gICAgICAgICAgIyMxXHRoZW9yZW1Ac2VwYXJhdG9yfVxoYm94e1xzdHJ1dH19fV19JQotICB7XGl0ZW1bXHJsYXB7XHZib3h7XGhib3h7XGhza2lwXGxhYmVsc2VwIFx0aGVvcmVtQGhlYWRlcmZvbnQKLSAgICAgICAgICAjIzFcICgjIzMpXHRoZW9yZW1Ac2VwYXJhdG9yfVxoYm94e1xzdHJ1dH19fV19Ci1cbmV3dGhlb3JlbXN0eWxle2VtcHR5fSUKLSAge1xpdGVtW119JQotICB7XGl0ZW1bXHRoZW9yZW1AaGVhZGVyZm9udCBcaHNraXBcbGFiZWxzZXBccmVsYXggIyMzXX0KLVxuZXd0aGVvcmVtc3R5bGV7ZW1wdHlicmVha30lCi0gIHtcaXRlbVtdfSUKLSAge1xpdGVtW1xybGFwe1x2Ym94e1xoYm94e1xoc2tpcFxsYWJlbHNlcFxyZWxheCBcdGhlb3JlbUBoZWFkZXJmb250Ci0gICAgICAgICAgIyMzXHRoZW9yZW1Ac2VwYXJhdG9yfVxoYm94e1xzdHJ1dH19fV19Ci1cQG5hbWVkZWZ7dGhAbm9udW1iZXJtYXJnaW59e1x0aEBub251bWJlcnBsYWlufQotXEBuYW1lZGVme3RoQG5vbnVtYmVyY2hhbmdlfXtcdGhAbm9udW1iZXJwbGFpbn0KLVxAbmFtZWRlZnt0aEBub251bWJlcm1hcmdpbmJyZWFrfXtcdGhAbm9udW1iZXJicmVha30KLVxAbmFtZWRlZnt0aEBub251bWJlcmNoYW5nZWJyZWFrfXtcdGhAbm9udW1iZXJicmVha30KLVxAbmFtZWRlZnt0aEBwbGFpbk5vfXtcdGhAbm9udW1iZXJwbGFpbn0KLVxAbmFtZWRlZnt0aEBicmVha05vfXtcdGhAbm9udW1iZXJwbGFpbn0KLVxAbmFtZWRlZnt0aEBtYXJnaW5Ob317XHRoQG5vbnVtYmVycGxhaW59Ci1cQG5hbWVkZWZ7dGhAY2hhbmdlTm99e1x0aEBub251bWJlcnBsYWlufQotXEBuYW1lZGVme3RoQG1hcmdpbmJyZWFrTm99e1x0aEBub251bWJlcmJyZWFrfQotXEBuYW1lZGVme3RoQGNoYW5nZWJyZWFrTm99e1x0aEBub251bWJlcmJyZWFrfQotXGdkZWZcdGhlb3JlbXN0eWxlIzF7JQotICAgXEBpZnVuZGVmaW5lZHt0aEAjMX17XEB3YXJuaW5nCi0gICAgICAgICAge1Vua25vd24gdGhlb3JlbXN0eWxlIGAjMScuIFVzaW5nIGBwbGFpbid9JQotICAgICAgICAgIFx0aGVvcmVtQHN0eWxle3BsYWlufX0lCi0gICAgICB7XHRoZW9yZW1Ac3R5bGV7IzF9fX0KLVxuZXd0b2tzXHRoZW9yZW1Ac3R5bGUKLVxuZXd0b2tzXHRoZW9yZW1AQHN0eWxlCi1cZ2xvYmFsXHRoZW9yZW1Ac3R5bGV7cGxhaW59Ci1cbmV3dG9rc1x0aGVvcmVtYm9keWZvbnQKLVxnbG9iYWxcdGhlb3JlbWJvZHlmb250e1xpdHNoYXBlfQotXG5ld3Rva3NcdGhlb3JlbW51bWJlcmluZwotXGdsb2JhbFx0aGVvcmVtbnVtYmVyaW5ne2FyYWJpY30KLVxuZXdza2lwXHRoZW9yZW1wcmVza2lwYW1vdW50Ci1cbmV3c2tpcFx0aGVvcmVtcG9zdHNraXBhbW91bnQKLVxnbG9iYWxcdGhlb3JlbXByZXNraXBhbW91bnRcdG9wc2VwCi1cZ2xvYmFsXHRoZW9yZW1wb3N0c2tpcGFtb3VudFx0b3BzZXAKLVxuZXdkaW1lblx0aGVvcmVtaW5kZW50Ci1cZ2xvYmFsXHRoZW9yZW1pbmRlbnQwY20KLVxuZXdkaW1lblx0aGVvcmVtQGluZGVudAotXG5ld3Rva3NcdGhlb3JlbWhlYWRlcmZvbnQKLVxnbG9iYWxcdGhlb3JlbWhlYWRlcmZvbnR7XG5vcm1hbGZvbnRcYmZzZXJpZXN9Ci1cZGVmXHRoZW9yZW1AaGVhZGVyZm9udHtcbm9ybWFsZm9udFxiZnNlcmllc30KLVxuZXd0b2tzXHRoZW9yZW1zZXBhcmF0b3IKLVxnbG9iYWxcdGhlb3JlbXNlcGFyYXRvcnt9Ci1cZGVmXHRoZW9yZW1Ac2VwYXJhdG9ye30KLVxuZXd0b2tzXHRoZW9yZW1wcmV3b3JrCi1cZ2xvYmFsXHRoZW9yZW1wcmV3b3Jre1xyZWxheH0KLVxuZXd0b2tzXHRoZW9yZW1wb3N0d29yawotXGdsb2JhbFx0aGVvcmVtcG9zdHdvcmt7XHJlbGF4fQotXGRlZlx0aGVvcmVtQHByZXdvcmt7fQotXG5ld3Rva3NcdGhlb3JlbXN5bWJvbAotXGdsb2JhbFx0aGVvcmVtc3ltYm9se30KLVxuZXd0b2tzXHFlZHN5bWJvbAotXGdsb2JhbFxxZWRzeW1ib2x7fQotXG5ld3Rva3NcdGhlb3JlbWtleXdvcmQKLVxnbG9iYWxcdGhlb3JlbWtleXdvcmR7Tm9uZX0KLVxnZGVmXHRoZW9yZW1jbGFzcyMxeyUKLSAgICAgXGNzbmFtZSB0aEBjbGFzc0AjMVxlbmRjc25hbWV9Ci1cZ2RlZlx0aEBjbGFzc0BMYVRlWHslCi0gICAgIFx0aGVvcmVtc3R5bGV7cGxhaW59Ci0gICAgIFx0aGVvcmVtaGVhZGVyZm9udHtcbm9ybWFsZm9udFxiZnNlcmllc30KLSAgICAgXHRoZW9yZW1ib2R5Zm9udHtcaXRzaGFwZX0KLSAgICAgXHRoZW9yZW1zZXBhcmF0b3J7fQotICAgICBcdGhlb3JlbXByZXdvcmt7XHJlbGF4fQotICAgICBcdGhlb3JlbXBvc3R3b3Jre1xyZWxheH0KLSAgICAgXHRoZW9yZW1pbmRlbnQwY20KLSAgICAgXHRoZW9yZW1udW1iZXJpbmd7YXJhYmljfQotICAgICBcdGhlb3JlbXN5bWJvbHt9fQotXG5ld3Rva3NccWVkc3ltYm9sCi1cZ2xvYmFsXHFlZHN5bWJvbHt9Ci1cRGVjbGFyZU9wdGlvbnthbXN0aG19eyUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gIFxQYWNrYWdlSW5mb3tcYmFzZW5hbWV9e09wdGlvbiBgYW1zdGhtJyBsb2FkZWR9JQotXGRlZlxzd2FwbnVtYmVyc3tcUGFja2FnZUVycm9ye1xiYXNlbmFtZX17c3dhcG51bWJlcnMgbm90IGltcGxlbWVudGVkLgotICBVc2UgdGhlb3JlbXN0eWxlIGNoYW5nZSBpbnN0ZWFkLn1cQGVoYX0KLQotXGdkZWZcdGhAcGxhaW57JQotICBcZGVmXHRoZW9yZW1AaGVhZGVyZm9udHtcbm9ybWFsZm9udFxiZnNlcmllc31caXRzaGFwZSUKLSAgXGRlZlxAYmVnaW50aGVvcmVtIyMxIyMyeyUKLSAgICAgIFxpdGVtW1xoc2tpcFxsYWJlbHNlcCBcdGhlb3JlbUBoZWFkZXJmb250ICMjMVwgIyMyLl19JQotICBcZGVmXEBvcGFyZ2JlZ2ludGhlb3JlbSMjMSMjMiMjM3slCi0gICAgIFxpdGVtW1xoc2tpcFxsYWJlbHNlcCBcdGhlb3JlbUBoZWFkZXJmb250ICMjMVwgIyMyXCAoIyMzKS5dfX0KLVxnZGVmXHRoQG5vbnVtYmVycGxhaW57JQotICBcZGVmXHRoZW9yZW1AaGVhZGVyZm9udHtcbm9ybWFsZm9udFxiZnNlcmllc31caXRzaGFwZSUKLSAgXGRlZlxAYmVnaW50aGVvcmVtIyMxIyMyeyUKLSAgICAgIFxpdGVtW1xoc2tpcFxsYWJlbHNlcCBcdGhlb3JlbUBoZWFkZXJmb250ICMjMS5dfSUKLSAgXGRlZlxAb3BhcmdiZWdpbnRoZW9yZW0jIzEjIzIjIzN7JQotICAgICBcaXRlbVtcaHNraXBcbGFiZWxzZXAgXHRoZW9yZW1AaGVhZGVyZm9udCAjIzFcICgjIzMpLl19fQotXGdkZWZcdGhAZGVmaW5pdGlvbnslCi0gIFx0aEBwbGFpblxkZWZcdGhlb3JlbUBoZWFkZXJmb250e1xub3JtYWxmb250XGJmc2VyaWVzfVxpdHNoYXBlfQotXGdkZWZcdGhAbm9udW1iZXJkZWZpbml0aW9ueyUKLSAgXHRoQG5vbnVtYmVycGxhaW5cZGVmXHRoZW9yZW1AaGVhZGVyZm9udHtcbm9ybWFsZm9udFxiZnNlcmllc31caXRzaGFwZX0KLVxnZGVmXHRoQHJlbWFya3slCi0gIFx0aEBwbGFpblxkZWZcdGhlb3JlbUBoZWFkZXJmb250e1xpdHNoYXBlfVxub3JtYWxmb250fQotXGdkZWZcdGhAbm9udW1iZXJyZW1hcmt7JQotICBcdGhAbm9udW1iZXJwbGFpblxkZWZcdGhlb3JlbUBoZWFkZXJmb250e1xpdHNoYXBlfVxub3JtYWxmb250fQotXG5ld2NvdW50ZXJ7cHJvb2Z9JQotXGlmQHRobW1hcmtzCi0gXG5ld2NvdW50ZXJ7Y3VycnByb29mY3RyfSUKLSBcbmV3Y291bnRlcntlbmRwcm9vZmN0cn0lCi1cZmkKLVxuZXdjb21tYW5ke1xvcGVuYm94fXtcbGVhdmV2bW9kZQotICBcaGJveCB0by43Nzc3OGVteyUKLSAgXGhmaWxcdnJ1bGUKLSAgXHZib3ggdG8uNjc1ZW17XGhydWxlIHdpZHRoLjZlbVx2ZmlsXGhydWxlfSUKLSAgXHZydWxlXGhmaWx9fQotXGdkZWZccHJvb2ZTeW1ib2x7XG9wZW5ib3h9Ci1cbmV3Y29tbWFuZHtccHJvb2ZuYW1lfXtQcm9vZn0KLVxuZXdlbnZpcm9ubWVudHtwcm9vZn1bMV1bXHByb29mbmFtZV17Ci0gIFx0aEBub251bWJlcnBsYWluCi0gIFxkZWZcdGhlb3JlbUBoZWFkZXJmb250e1xpdHNoYXBlfSUKLSAgXG5vcm1hbGZvbnQKLSAgXHRoZW9yZW1zeW1ib2x7XGVuc3VyZW1hdGh7X1xibGFja3NxdWFyZX19Ci0gIFxAdGhte3Byb29mfXtwcm9vZn17IzF9fSUKLSAge1xAZW5kdGhlb3JlbX0KLX0lIGVuZCBvZiBvcHRpb24gYW1zdGhtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVxuZXdza2lwXHRobUB0b3BzZXBhZGQKLVxnZGVmXG5ld3RoZW9yZW17JQotICAgXEBpZnN0YXIKLSAgICAge1xleHBhbmRhZnRlclxAaWZ1bmRlZmluZWR7dGhAbm9udW1iZXJcdGhlXHRoZW9yZW1Ac3R5bGV9JQotICAge1xQYWNrYWdlRXJyb3J7XGJhc2VuYW1lfXtUaGVvcmVtIHN0eWxlIHtub251bWJlclx0aGVcdGhlb3JlbUBzdHlsZX0KLSAgICAgICAgICAgIHVuZGVmaW5lZCAoeW91IG5lZWQgaXQgaGVyZSBmb3IgbmV3dGhlb3JlbSopIH1cQGVoY30lCi0gICAgIHt9JQotICAgICBcZWRlZlxAdGVtcGF7e25vbnVtYmVyXHRoZVx0aGVvcmVtQHN0eWxlfX0lCi0gICAgICBcZXhwYW5kYWZ0ZXJcdGhlb3JlbUBAc3R5bGVcQHRlbXBhXEBuZXd0aGVvcmVtfSUKLSAgICAge1xlZGVmXEB0ZW1wYXt7XHRoZVx0aGVvcmVtQHN0eWxlfX0lCi0gICAgICBcZXhwYW5kYWZ0ZXJcdGhlb3JlbUBAc3R5bGVcQHRlbXBhXEBuZXd0aGVvcmVtfX0KLQotXGdkZWZccmVuZXd0aGVvcmVteyUKLSAgIFxAaWZzdGFyCi0gICAgIHtcZXhwYW5kYWZ0ZXJcQGlmdW5kZWZpbmVke3RoQG5vbnVtYmVyXHRoZVx0aGVvcmVtQHN0eWxlfSUKLSAgIHtcUGFja2FnZUVycm9ye1xiYXNlbmFtZX17VGhlb3JlbSBzdHlsZSB7bm9udW1iZXJcdGhlXHRoZW9yZW1Ac3R5bGV9Ci0gICAgICAgICAgICB1bmRlZmluZWQgKHlvdSBuZWVkIGl0IGhlcmUgZm9yIG5ld3RoZW9yZW0qKSB9XEBlaGN9JQotICAgICB7fSUKLSAgICAgXGVkZWZcQHRlbXBhe3tub251bWJlclx0aGVcdGhlb3JlbUBzdHlsZX19JQotICAgICAgXGV4cGFuZGFmdGVyXHRoZW9yZW1AQHN0eWxlXEB0ZW1wYVxAcmVuZXd0aGVvcmVtfSUKLSAgICAge1xlZGVmXEB0ZW1wYXt7XHRoZVx0aGVvcmVtQHN0eWxlfX0lCi0gICAgICBcZXhwYW5kYWZ0ZXJcdGhlb3JlbUBAc3R5bGVcQHRlbXBhXEByZW5ld3RoZW9yZW19fQotXGdkZWZcQG5ld3RoZW9yZW0jMXslCi0gIFx0aG1AdGVtcGlmZmFsc2UKLSAgXGV4cGFuZGFmdGVyXEBpZmRlZmluYWJsZVxjc25hbWUgIzFcZW5kY3NuYW1lCi0gIHtcZXhwYW5kYWZ0ZXJcQGlmZGVmaW5hYmxlXGNzbmFtZSAjMSpcZW5kY3NuYW1lCi0gICB7XHRobUB0ZW1waWZ0cnVlCi0gICAgXHRobUBkZWZpbmVsdGhteyMxfSUgZm9yIGxpc3RzCi0gICAgXGlmQHRobW1hcmtzCi0gICAgICBcZXhwYW5kYWZ0ZXJcQGlmdW5kZWZpbmVke2NAY3VyciMxY3RyfSUKLSAgICAgICAge1xuZXdjb3VudGVye2N1cnIjMWN0cn19e30lCi0gICAgICBcZXhwYW5kYWZ0ZXJcQGlmdW5kZWZpbmVke2NAZW5kIzFjdHJ9JQotICAgICAgICB7XG5ld2NvdW50ZXJ7ZW5kIzFjdHJ9fXt9JQotICAgIFxmaQotICAgIFxleHBhbmRhZnRlclxwcm90ZWN0ZWRAeGRlZlxjc25hbWUgIzFTeW1ib2xcZW5kY3NuYW1le1x0aGVcdGhlb3JlbXN5bWJvbH0lCi0gICAgXGV4cGFuZGFmdGVyXHByb3RlY3RlZEB4ZGVmXGNzbmFtZSAjMUBwb3N0d29ya1xlbmRjc25hbWV7JQotICAgICAgIFx0aGVcdGhlb3JlbXBvc3R3b3JrfSUKLSAgICBcZXhwYW5kYWZ0ZXJcZ2RlZlxjc25hbWUjMVxlbmRjc25hbWV7JQotICAgICAgIFxsZXRcdGhtQHN0YXJyZWRlbnZcQHVuZGVmaW5lZAotICAgICAgIFxjc25hbWUgbWtoZWFkZXJAIzFcZW5kY3NuYW1lfSUKLSAgICBcZXhwYW5kYWZ0ZXJcZ2RlZlxjc25hbWUjMSpcZW5kY3NuYW1leyUKLSAgICAgICBcbGV0XHRobUBzdGFycmVkZW52XHJlbGF4Ci0gICAgICAgXGNzbmFtZSBta2hlYWRlckAjMVxlbmRjc25hbWV9JQotICAgIFxkZWZcQHRlbXBhe1xleHBhbmRhZnRlclxub2V4cGFuZFxjc25hbWUgZW5kIzFcZW5kY3NuYW1lfSUKLSAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUgZW5kIzEqXGVuZGNzbmFtZXtcQHRlbXBhfSUKLSAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUgc2V0cGFybXNAIzFcZW5kY3NuYW1lCi0gICAgIHtcbm9leHBhbmQgXGRlZiBcbm9leHBhbmQgXHRoZW9yZW1AaGVhZGVyZm9udAotICAgICAgICB7XHRoZVx0aGVvcmVtaGVhZGVyZm9udFxub2V4cGFuZFx0aGVvcmVtQGNoZWNrYm9sZH0lCi0gICAgICBcbm9leHBhbmQgXGRlZiBcbm9leHBhbmQgXHRoZW9yZW1Ac2VwYXJhdG9yCi0gICAgICAgIHtcdGhlXHRoZW9yZW1zZXBhcmF0b3J9JQotICAgICAgXG5vZXhwYW5kIFxkZWYgXG5vZXhwYW5kIFx0aGVvcmVtQHByZXdvcmsKLSAgICAgICAge1x0aGVcdGhlb3JlbXByZXdvcmt9JQotICAgICAgXG5vZXhwYW5kIFxkZWYgXG5vZXhwYW5kIFx0aGVvcmVtQGluZGVudAotICAgICAgICB7XHRoZVx0aGVvcmVtaW5kZW50fSUKLSAgICAgIFx0aGUgXHRoZW9yZW1ib2R5Zm9udAotICAgICAgXG5vZXhwYW5kXGNzbmFtZSB0aEBcdGhlIFx0aGVvcmVtQEBzdHlsZSBcZW5kY3NuYW1lfSUKLSAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUgdGhAY2xhc3NAIzFcZW5kY3NuYW1lCi0gICAgIHtcbm9leHBhbmRcdGhlb3JlbXN0eWxle1x0aGVcdGhlb3JlbUBzdHlsZX0lCi0gICAgICBcbm9leHBhbmRcdGhlb3JlbWhlYWRlcmZvbnR7XHRoZVx0aGVvcmVtaGVhZGVyZm9udH0lCi0gICAgICBcbm9leHBhbmRcdGhlb3JlbWJvZHlmb250e1x0aGUgXHRoZW9yZW1ib2R5Zm9udH0lCi0gICAgICBcbm9leHBhbmRcdGhlb3JlbXNlcGFyYXRvcntcdGhlXHRoZW9yZW1zZXBhcmF0b3J9JQotICAgICAgXG5vZXhwYW5kXHRoZW9yZW1wcmV3b3Jre1x0aGVcdGhlb3JlbXByZXdvcmt9JQotICAgICAgXG5vZXhwYW5kXHRoZW9yZW1wb3N0d29ya3tcdGhlXHRoZW9yZW1wb3N0d29ya30lCi0gICAgICBcbm9leHBhbmRcdGhlb3JlbWluZGVudFx0aGVcdGhlb3JlbWluZGVudCUKLSAgICAgIFxub2V4cGFuZFx0aGVvcmVtbnVtYmVyaW5ne1x0aGVcdGhlb3JlbW51bWJlcmluZ30lCi0gICAgICBcbm9leHBhbmRcdGhlb3JlbXN5bWJvbHtcdGhlXHRoZW9yZW1zeW1ib2x9fSUKLSAgICB9fSUKLSAgXEBpZm5leHRjaGFyW3tcQG90aG17IzF9fXtcQG50aG17IzF9fX0lIE1VU1QgTk9UIEJFIElOIEFOWSBJRiAhISEKLVxnZGVmXEByZW5ld3RoZW9yZW0jMXslCi0gIFxleHBhbmRhZnRlclxAaWZ1bmRlZmluZWR7IzF9JQotICAge1xQYWNrYWdlRXJyb3J7XGJhc2VuYW1lfXtUaGVvcmVtIHN0eWxlICMxIHVuZGVmaW5lZH1cQGVoY30lCi0gICAgIHt9JQotICBcZXhwYW5kYWZ0ZXJcbGV0XGNzbmFtZSAjMVxlbmRjc25hbWVccmVsYXgKLSAgXGV4cGFuZGFmdGVyXGxldFxjc25hbWUgIzEqXGVuZGNzbmFtZVxyZWxheAotICBcQG5ld3RoZW9yZW17IzF9fQotXGdkZWZcQG50aG0jMSMyeyUKLSAgXGV4cGFuZGFmdGVyXHByb3RlY3RlZEB4ZGVmXGNzbmFtZSBudW1AYWRkdGhlb3JlbWxpbmUjMVxlbmRjc25hbWV7JQotICAgICAgICAgICAgICBcbm9leHBhbmRcQG51bUBhZGR0aGVvcmVtbGluZXsjMX17IzJ9fSUKLSAgXGV4cGFuZGFmdGVyXHByb3RlY3RlZEB4ZGVmXGNzbmFtZSBub251bUBhZGR0aGVvcmVtbGluZSMxXGVuZGNzbmFtZXslCi0gICAgICAgICAgICAgIFxub2V4cGFuZFxAbm9udW1AYWRkdGhlb3JlbWxpbmV7IzF9eyMyfX0lCi0gIFx0aGVvcmVta2V5d29yZHsjMn0lCi0gIFxleHBhbmRhZnRlclxwcm90ZWN0ZWRAeGRlZlxjc25hbWUgIzFLZXl3b3JkXGVuZGNzbmFtZQotICAgICAgICAgICAgICB7XHRoZVx0aGVvcmVta2V5d29yZH0lCi0gIFxAaWZuZXh0Y2hhclt7XEB4bnRobXsjMX17IzJ9fXtcQHludGhteyMxfXsjMn19fQotXGdkZWZcQG90aG0jMVsjMl0jM3slCi0gIFxAaWZ1bmRlZmluZWR7Y0AjMn17XEBub2NvdW50ZXJyeyMyfX0lCi0gICB7XGlmdGhtQHRlbXBpZgotICAgICBcZ2xvYmFsXEBuYW1lZGVme3RoZSMxfXtcQG5hbWV1c2V7dGhlIzJ9fSUKLSAgICAgXGV4cGFuZGFmdGVyXHByb3RlY3RlZEB4ZGVmXGNzbmFtZSBudW1AYWRkdGhlb3JlbWxpbmUjMVxlbmRjc25hbWV7JQotICAgICAgICAgICAgICBcbm9leHBhbmRcQG51bUBhZGR0aGVvcmVtbGluZXsjMX17IzN9fSUKLSAgICAgXGV4cGFuZGFmdGVyXHByb3RlY3RlZEB4ZGVmXGNzbmFtZSBub251bUBhZGR0aGVvcmVtbGluZSMxXGVuZGNzbmFtZXslCi0gICAgICAgICAgICAgIFxub2V4cGFuZFxAbm9udW1AYWRkdGhlb3JlbWxpbmV7IzF9eyMzfX0lCi0gICAgXHRoZW9yZW1rZXl3b3JkeyMzfSUKLSAgICBcZXhwYW5kYWZ0ZXJccHJvdGVjdGVkQHhkZWZcY3NuYW1lICMxS2V5d29yZFxlbmRjc25hbWUKLSAgICAgICAgICAgICB7XHRoZVx0aGVvcmVta2V5d29yZH0lCi0gICAgIFxleHBhbmRhZnRlclxnZGVmXGNzbmFtZSBta2hlYWRlckAjMVxlbmRjc25hbWUKLSAgICAgICB7XGNzbmFtZSBzZXRwYXJtc0AjMVxlbmRjc25hbWUKLSAgICAgICAgICAgICAgICBcQHRobXsjMX17IzJ9eyMzfX0lCi0gICAgIFxnbG9iYWxcQG5hbWVkZWZ7ZW5kIzF9e1xAZW5kdGhlb3JlbX1cZml9fQotXGdkZWZcQHhudGhtIzEjMlsjM117JQotICBcaWZ0aG1AdGVtcGlmCi0gICAgIFxleHBhbmRhZnRlclxAaWZ1bmRlZmluZWR7Y0AjMX0lCi0gICAgICAgIHtcQGRlZmluZWNvdW50ZXJ7IzF9fXt9JQotICAgICBcQG5ld2N0cnsjMX1bIzNdJQotICAgICBcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUgdGhlIzFcZW5kY3NuYW1leyUKLSAgICAgICBcZXhwYW5kYWZ0ZXJcbm9leHBhbmRcY3NuYW1lIHRoZSMzXGVuZGNzbmFtZSBcQHRobWNvdW50ZXJzZXAKLSAgICAgICAgICB7XG5vZXhwYW5kXGNzbmFtZVx0aGVcdGhlb3JlbW51bWJlcmluZ1xlbmRjc25hbWV7IzF9fX0lCi0gICAgIFxleHBhbmRhZnRlclxnZGVmXGNzbmFtZSBta2hlYWRlckAjMVxlbmRjc25hbWUKLSAgICAgICB7XGNzbmFtZSBzZXRwYXJtc0AjMVxlbmRjc25hbWUKLSAgICAgICAgXEB0aG17IzF9eyMxfXsjMn19JQotICAgICBcZ2xvYmFsXEBuYW1lZGVme2VuZCMxfXtcQGVuZHRoZW9yZW19XGZpfQotXGdkZWZcQHludGhtIzEjMnslCi0gIFxpZnRobUB0ZW1waWYKLSAgICAgXGV4cGFuZGFmdGVyXEBpZnVuZGVmaW5lZHtjQCMxfSUKLSAgICAgICAge1xAZGVmaW5lY291bnRlcnsjMX19e30lCi0gICAgIFxleHBhbmRhZnRlclx4ZGVmXGNzbmFtZSB0aGUjMVxlbmRjc25hbWUKLSAgICAgICAge1xub2V4cGFuZFxjc25hbWVcdGhlXHRoZW9yZW1udW1iZXJpbmdcZW5kY3NuYW1leyMxfX0lCi0gICAgIFxleHBhbmRhZnRlclxnZGVmXGNzbmFtZSBta2hlYWRlckAjMVxlbmRjc25hbWUKLSAgICAgICB7XGNzbmFtZSBzZXRwYXJtc0AjMVxlbmRjc25hbWUKLSAgICAgICAgXEB0aG17IzF9eyMxfXsjMn19JQotICAgICBcZ2xvYmFsXEBuYW1lZGVme2VuZCMxfXtcQGVuZHRoZW9yZW19XGZpfQotXGdkZWZcQHRobSMxIzIjM3slCi0gICBcaWZAdGhtbWFya3MKLSAgICAgXHN0ZXBjb3VudGVye2VuZFxJblRoZW9UeXBlIGN0cn0lCi0gICBcZmkKLSAgIFxyZW5ld2NvbW1hbmR7XEluVGhlb1R5cGV9eyMxfSUKLSAgIFxpZkB0aG1tYXJrcwotICAgICBcc3RlcGNvdW50ZXJ7Y3VyciMxY3RyfSUKLSAgICAgXHNldGNvdW50ZXJ7ZW5kIzFjdHJ9ezB9JQotICAgXGZpCi0gICBccmVmc3RlcGNvdW50ZXJ7IzJ9JQotICAgXHRoZW9yZW1AcHJld29yawotICAgXHRobUB0b3BzZXBhZGQgXHRoZW9yZW1wb3N0c2tpcGFtb3VudCAgICUgY2YuIGxhdGV4Lmx0eDogXEB0cml2bGlzdAotICAgXGlmdm1vZGUgXGFkdmFuY2VcdGhtQHRvcHNlcGFkZFxwYXJ0b3BzZXBcZmkKLSAgIFx0cml2bGlzdAotICAgXEB0b3BzZXAgXHRoZW9yZW1wcmVza2lwYW1vdW50Ci0gICBcQHRvcHNlcGFkZCBcdGhtQHRvcHNlcGFkZCAgICAgICAgJSB1c2VkIGJ5IFxAZW5kcGFyZW52Ci0gICBcYWR2YW5jZVxsaW5ld2lkdGggLVx0aGVvcmVtQGluZGVudAotICAgXGFkdmFuY2VcQHRvdGFsbGVmdG1hcmdpbiBcdGhlb3JlbUBpbmRlbnQKLSAgIFxwYXJzaGFwZSBcQG5lIFxAdG90YWxsZWZ0bWFyZ2luIFxsaW5ld2lkdGgKLSAgIFxAaWZuZXh0Y2hhclt7XEB5dGhteyMxfXsjMn17IzN9fXtcQHh0aG17IzF9eyMyfXsjM319fQotXGRlZlxAeHRobSMxIzIjM3slCi0gIFxAYmVnaW50aGVvcmVteyMzfXtcY3NuYW1lIHRoZSMyXGVuZGNzbmFtZX0lCi0gIFxpZnhcdGhtQHN0YXJyZWRlbnZcQHVuZGVmaW5lZAotICAgIFx0aG1AdGhtY2FwdGlvbnsjMX17eyMzfXtcY3NuYW1lIHRoZSMyXGVuZGNzbmFtZX17fX1cZmkKLSAgXGlnbm9yZXNwYWNlc30KLVxkZWZcQHl0aG0jMSMyIzNbIzRdeyUKLSAgXGV4cGFuZGFmdGVyXGdsb2JhbFxleHBhbmRhZnRlclxkZWZcY3NuYW1lIzFuYW1lXGVuZGNzbmFtZXsjNH0lCi0gIFxAb3BhcmdiZWdpbnRoZW9yZW17IzN9e1xjc25hbWUgdGhlIzJcZW5kY3NuYW1lfXsjNH0lCi0gIFxpZnhcdGhtQHN0YXJyZWRlbnZcQHVuZGVmaW5lZAotICAgIFx0aG1AdGhtY2FwdGlvbnsjMX17eyMzfXtcY3NuYW1lIHRoZSMyXGVuZGNzbmFtZX17IzR9fVxmaSUKLSAgXGlnbm9yZXNwYWNlc30KLVxnZGVmXEBlbmR0aGVvcmVteyUKLSAgXGVuZHRyaXZsaXN0Ci0gIFxjc25hbWVcSW5UaGVvVHlwZSBAcG9zdHdvcmtcZW5kY3NuYW1lCi0gIH0KLVxEZWNsYXJlT3B0aW9ue2ZyYW1lZH17JSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotXG5ld3Rva3Ncc2hhZGVjb2xvcgotXHNoYWRlY29sb3J7Z3JheX0KLVxsZXRcdGhlb3JlbWZyYW1lY29tbWFuZFxyZWxheAotXGRlZlxuZXdzaGFkZWR0aGVvcmVtIzF7JQotICBcZXhwYW5kYWZ0ZXJcZ2xvYmFsXGV4cGFuZGFmdGVyXHhkZWZcY3NuYW1lIzFAc2hhZGVjb2xvclxlbmRjc25hbWV7JQotICAgIFx0aGVcc2hhZGVjb2xvcn0lCi0gIFxpZnhcdGhlb3JlbWZyYW1lY29tbWFuZFxyZWxheAotICAgIFxleHBhbmRhZnRlclxnbG9iYWxcZXhwYW5kYWZ0ZXJceGRlZlxjc25hbWUjMUBmcmFtZWNvbW1hbmRcZW5kY3NuYW1leyUKLSAgICAgIFxub2V4cGFuZFxwc2ZyYW1lYm94W2ZpbGxzdHlsZT1zb2xpZCwKLSAgICAgICAgICAgICAgICAgICAgZmlsbGNvbG9yPVxjc25hbWUjMUBzaGFkZWNvbG9yXGVuZGNzbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgbGluZWNvbG9yPVxjc25hbWUjMUBzaGFkZWNvbG9yXGVuZGNzbmFtZV19JQotICBcZWxzZQotICAgXGV4cGFuZGFmdGVyXGdsb2JhbFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIzFAZnJhbWVjb21tYW5kXGVuZGNzbmFtZSUKLSAgICAgXHRoZW9yZW1mcmFtZWNvbW1hbmQlCi0gIFxmaQotICBcdGhlb3JlbXByZXdvcmt7JQotICAgIFxkZWZcRnJhbWVDb21tYW5ke1xjc25hbWUjMUBmcmFtZWNvbW1hbmRcZW5kY3NuYW1lfVxmcmFtZWR9JQotICBcdGhlb3JlbXBvc3R3b3Jre1xlbmRmcmFtZWR9JQotICBcbmV3dGhlb3JlbXsjMX0lCi0gIH0KLVxkZWZcbmV3ZnJhbWVkdGhlb3JlbSMxeyUKLSAgXHRoZW9yZW1wcmV3b3Jre1xmcmFtZWR9JQotICBcdGhlb3JlbXBvc3R3b3Jre1xlbmRmcmFtZWR9JQotICBcbmV3dGhlb3JlbXsjMX0lCi0gIH0KLX0lIGVuZCBvZiBvcHRpb24gYW1zdGhtICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLVxkZWZcdGhtQHRobWNhcHRpb24jMSMye1x0aG1AQHRobWNhcHRpb257IzF9IzJ9Ci1cZGVmXHRobUBAdGhtY2FwdGlvbiMxIzIjMyM0eyUKLSAgICBcdGhtQHBhcnNlZm9yd3JpdGluZ3sjMn0lCi0gICAgXGxldFx0aG1AdG1waWlcdGhtQHRtcCUKLSAgICBcdGhtQHBhcnNlZm9yd3JpdGluZ3sjNH0lCi0gICAgXGVkZWZcdGhtQHR7e1x0aG1AdG1waWl9eyMzfXtcdGhtQHRtcH19JQotICAgIFxhZGRjb250ZW50c2xpbmV7dGhtfXsjMX17XHRobUB0fX0KLVxkZWZcdGhtQEB0aG1saW5lQG5vbmFtZSMxIzIjMyM0eyUKLSAgICAgICAgICAgIFxAZG90dGVkdG9jbGluZXstMn17MGVtfXsyLjNlbX0lCi0gICAgICAgICAgICAgICAgICAge1xwcm90ZWN0XG51bWJlcmxpbmV7IzJ9IzN9JQotICAgICAgICAgICAgICAgICAgIHsjNH19Ci1cZGVmXHRobUBAdGhtbGluZUBuYW1lIzEjMiMzIzR7JQotICAgICAgICBcQGRvdHRlZHRvY2xpbmV7LTJ9ezBlbX17Mi4zZW19JQotICAgICAgICAgICAgICAgICAgIHsjMSBccHJvdGVjdFxudW1iZXJsaW5leyMyfSMzfSUKLSAgICAgICAgICAgICAgICAgICB7IzR9fQotXGRlZlx0aG1AdGhtbGluZSMxIzJ7XHRobUBAdGhtbGluZSMxeyMyfX0KLVxsb25nXGRlZlx0aG1AbGdvYmJsZSMxIzJ7XGlnbm9yZXNwYWNlc30KLVxkZWZcdGhlb3JlbWxpc3RhbGx7JQotICAgIFxsZXRcdGhtQEB0aG1sc3RhcnQ9XHJlbGF4Ci0gICAgXGxldFx0aG1AQHRobWxlbmQ9XHJlbGF4Ci0gICAgXGxldFx0aG1AQHRobWxpbmU9XHRobUBAdGhtbGluZUBub25hbWV9Ci1cZGVmXHRoZW9yZW1saXN0YWxsbmFtZXslCi0gICAgXGxldFx0aG1AQHRobWxzdGFydD1ccmVsYXgKLSAgICBcbGV0XHRobUBAdGhtbGVuZD1ccmVsYXgKLSAgICBcbGV0XHRobUBAdGhtbGluZT1cdGhtQEB0aG1saW5lQG5hbWV9Ci1cZGVmXHRoZW9yZW1saXN0b3B0aW9uYWx7JQotICAgIFxsZXRcdGhtQEB0aG1sc3RhcnQ9XHJlbGF4Ci0gICAgXGxldFx0aG1AQHRobWxlbmQ9XHJlbGF4Ci0gICAgXGRlZlx0aG1AQHRobWxpbmUjIzEjIzIjIzMjIzR7JQotICAgICAgICAgXGlmeFxlbXB0eSAjIzMlCi0gICAgICAgICBcZWxzZQotICAgICAgICAgICAgXHRobUBAdGhtbGluZUBub25hbWV7IyMxfXsjIzJ9eyMjM317IyM0fSUKLSAgICAgICAgIFxmaX19Ci1cZGVmXHRoZW9yZW1saXN0b3B0bmFtZXslCi0gICAgXGxldFx0aG1AQHRobWxzdGFydD1ccmVsYXgKLSAgICBcbGV0XHRobUBAdGhtbGVuZD1ccmVsYXgKLSAgICBcZGVmXHRobUBAdGhtbGluZSMjMSMjMiMjMyMjNHslCi0gICAgICAgICBcaWZ4XGVtcHR5ICMjMyUKLSAgICAgICAgIFxlbHNlJQotICAgICAgICAgICAgXHRobUBAdGhtbGluZUBuYW1leyMjMX17IyMyfXsjIzN9eyMjNH0lCi0gICAgICAgICBcZml9fQotXERlY2xhcmVPcHRpb257aHlwZXJyZWZ9eyUgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgIFxkZWZcdGhtQEB0aG1saW5lQG5vbmFtZSMxIzIjMyM0IzV7JQotICAgICAgICBcaWZ4XFwjNVxcJQotICAgICAgICAgICAgXEBkb3R0ZWR0b2NsaW5ley0yfXswZW19ezIuM2VtfSUKLSAgICAgICAgICAgICAgICB7XHByb3RlY3RcbnVtYmVybGluZXsjMn0jM30lCi0gICAgICAgICAgICAgICAgeyM0fSUKLSAgICAgICAgXGVsc2UKLSAgICAgICAgICAgIFxpZkh5QGxpbmt0b2NwYWdlXHJlbGF4XHJlbGF4Ci0gICAgICAgICAgICAgICAgXEBkb3R0ZWR0b2NsaW5ley0yfXswZW19ezIuM2VtfSUKLSAgICAgICAgICAgICAgICAgICAge1xwcm90ZWN0XG51bWJlcmxpbmV7IzJ9IzN9JQotICAgICAgICAgICAgICAgICAgICB7XGh5cGVyQGxpbmtzdGFydHtsaW5rfXsjNX17IzR9XGh5cGVyQGxpbmtlbmR9Ci0gICAgICAgICAgICBcZWxzZQotICAgICAgICAgICAgICAgIFxAZG90dGVkdG9jbGluZXstMn17MGVtfXsyLjNlbX0lCi0gICAgICAgICAgICAgICAgICAgIHtcaHlwZXJAbGlua3N0YXJ0e2xpbmt9eyM1fXtccHJvdGVjdFxudW1iZXJsaW5leyMyfSMzfSUKLSAgICAgICAgICAgICAgICAgICAgICBcaHlwZXJAbGlua2VuZH0lCi0gICAgICAgICAgICAgICAgICAgIHsjNH0lCi0gICAgICAgICAgICBcZmkKLSAgICAgICAgXGZpfSUKLSAgICBcZGVmXHRobUBAdGhtbGluZUBuYW1lIzEjMiMzIzQjNXslCi0gICAgICAgIFxpZnhcXCM1XFwlCi0gICAgICAgICAgICBcQGRvdHRlZHRvY2xpbmV7LTJ9ezBlbX17Mi4zZW19JQotICAgICAgICAgICAgICAgIHsjMSBccHJvdGVjdFxudW1iZXJsaW5leyMyfSMzfSUKLSAgICAgICAgICAgICAgICB7IzR9Ci0gICAgICAgIFxlbHNlCi0gICAgICAgICAgICBcaWZIeUBsaW5rdG9jcGFnZVxyZWxheFxyZWxheAotICAgICAgICAgICAgICAgIFxAZG90dGVkdG9jbGluZXstMn17MGVtfXsyLjNlbX0lCi0gICAgICAgICAgICAgICAgICAgIHsjMSBccHJvdGVjdFxudW1iZXJsaW5leyMyfSMzfSUKLSAgICAgICAgICAgICAgICAgICAge1xoeXBlckBsaW5rc3RhcnR7bGlua317IzV9eyM0fVxoeXBlckBsaW5rZW5kfSUKLSAgICAgICAgICAgIFxlbHNlCi0gICAgICAgICAgICAgICAgXEBkb3R0ZWR0b2NsaW5ley0yfXswZW19ezIuM2VtfSUKLSAgICAgICAgICAgICAgICAgICAge1xoeXBlckBsaW5rc3RhcnR7bGlua317IzV9JQotICAgICAgICAgICAgICAgICAgICAgIHsjMSBccHJvdGVjdFxudW1iZXJsaW5leyMyfSMzfVxoeXBlckBsaW5rZW5kfSUKLSAgICAgICAgICAgICAgICAgICAgeyM0fSUKLSAgICAgICAgICAgIFxmaQotICAgICAgICBcZml9Ci0gICAgXGRlZlx0aG1AdGhtbGluZSMxIzIjM3tcdGhtQEB0aG1saW5lIzF7IzJ9eyMzfX0KLSAgICBcbG9uZ1xkZWZcdGhtQGxnb2JibGUjMSMyIzN7XGlnbm9yZXNwYWNlc30KLSAgICBcZGVmXHRoZW9yZW1saXN0b3B0aW9uYWx7JQotICAgICAgICBcbGV0XHRobUBAdGhtbHN0YXJ0PVxyZWxheAotICAgICAgICBcbGV0XHRobUBAdGhtbGVuZD1ccmVsYXgKLSAgICAgICAgXGRlZlx0aG1AQHRobWxpbmUjIzEjIzIjIzMjIzQjIzV7JQotICAgICAgICAgICAgIFxpZnhcZW1wdHkgIyMzJQotICAgICAgICAgICAgIFxlbHNlJQotICAgICAgICAgICAgICAgIFx0aG1AQHRobWxpbmVAbm9uYW1leyMjMX17IyMyfXsjIzN9eyMjNH17IyM1fSUKLSAgICAgICAgICAgICBcZml9fQotICAgIFxkZWZcdGhlb3JlbWxpc3RvcHRuYW1leyUKLSAgICAgICAgXGxldFx0aG1AQHRobWxzdGFydD1ccmVsYXgKLSAgICAgICAgXGxldFx0aG1AQHRobWxlbmQ9XHJlbGF4Ci0gICAgICAgIFxkZWZcdGhtQEB0aG1saW5lIyMxIyMyIyMzIyM0IyM1eyUKLSAgICAgICAgICAgICBcaWZ4XGVtcHR5ICMjMyUKLSAgICAgICAgICAgICBcZWxzZSUKLSAgICAgICAgICAgICAgICBcdGhtQEB0aG1saW5lQG5hbWV7IyMxfXsjIzJ9eyMjM317IyM0fXsjIzV9JQotICAgICAgICAgICAgIFxmaX19Ci19JSBlbmQgb2Ygb3B0aW9uIGh5cGVycmVmICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotXGRlZlx0aGVvcmVtbGlzdHR5cGUjMXslCi0gICAgXEBpZnVuZGVmaW5lZHt0aG1AdGhtbEAjMX0lCi0gICAgICAge1xQYWNrYWdlRXJyb3J7XGJhc2VuYW1lfXtMaXN0dHlwZSAjMSBub3QgZGVmaW5lZH1cQGVoYX0lCi0gICAgICAge1xjc25hbWUgdGhtQHRobWxAIzFcZW5kY3NuYW1lfX0KLVxkZWZcdGhtQHRobWxAYWxse1x0aGVvcmVtbGlzdGFsbH0KLVxkZWZcdGhtQHRobWxAb3B0e1x0aGVvcmVtbGlzdG9wdGlvbmFsfQotXGRlZlx0aG1AdGhtbEBvcHRuYW1le1x0aGVvcmVtbGlzdG9wdG5hbWV9Ci1cZGVmXHRobUB0aG1sQGFsbG5hbWV7XHRoZW9yZW1saXN0YWxsbmFtZX0KLVxkZWZcbmV3dGhlb3JlbWxpc3R0eXBlIzEjMiMzIzR7JQotICBcQGlmdW5kZWZpbmVke3RobUB0aG1sQCMxfSUKLSAge1xleHBhbmRhZnRlclxnZGVmXGNzbmFtZSB0aG1AdGhtbEAjMVxlbmRjc25hbWV7JQotICAgIFxkZWZcdGhtQEB0aG1sc3RhcnR7IzJ9JQotICAgIFxkZWZcdGhtQEB0aG1saW5lIyMjIzEjIyMjMiMjIyMzIyMjIzR7IzN9JQotICAgIFxkZWZcdGhtQEB0aG1sZW5keyM0fX0lCi0gIH17XFBhY2thZ2VFcnJvcntcYmFzZW5hbWV9e2xpc3QgdHlwZSAjMSBhbHJlYWR5IGRlZmluZWR9XEBlaGF9fQotXGRlZlxyZW5ld3RoZW9yZW1saXN0dHlwZSMxIzIjMyM0eyUKLSAgXEBpZnVuZGVmaW5lZHt0aG1AdGhtbEAjMX0lCi0gICAge1xQYWNrYWdlRXJyb3J7XGJhc2VuYW1lfXtMaXN0IHR5cGUgIzEgbm90IGRlZmluZWR9XEBlaGN9e30lCi0gIFxleHBhbmRhZnRlclxsZXRcY3NuYW1lIHRobUB0aG1sQCMxXGVuZGNzbmFtZVxyZWxheAotICBcbmV3dGhlb3JlbWxpc3R0eXBleyMxfXsjMn17IzN9eyM0fX0KLVxkZWZcdGhtQGRlZmluZWx0aG0jMXslCi0gXGV4cGFuZGFmdGVyXGdkZWZcY3NuYW1lIGxAIzFcZW5kY3NuYW1le1x0aG1AbGdvYmJsZX0lCi0gXGV4cGFuZGFmdGVyXGdkZWZcY3NuYW1lIHRobUBsaXN0ZG8jMVxlbmRjc25hbWV7XHRobUBsZ29iYmxlfX0KLVxsb25nXGRlZlx0aG1AaW5saXN0ZG8jMSMyeyMyfSUKLVxkZWZcbGlzdHRoZW9yZW1zIzF7XGJlZ2luZ3JvdXAKLSAgXGNAdG9jZGVwdGg9LTIlCi0gIFxkZWZcdGhtQGxpc3R7IzF9XHRobUBwcm9jZXNzbGlzdAotICBcZW5kZ3JvdXB9Ci1cZGVmXHRobUBwcm9jZXNzbGlzdHslCi0gXGJlZ2luZ3JvdXAKLSBcdHlwZW91dHsqKiBHZW5lcmF0aW5nIHRhYmxlIG9mIFx0aG1AbGlzdH0lCi0gXGRlZlxjb250ZW50c2xpbmUjIzF7JQotICAgICAgXGV4cGFuZGFmdGVyXEBpZnVuZGVmaW5lZHtsQCMjMX17XHRobUBsZ29iYmxlfXtcY3NuYW1lIGxAIyMxXGVuZGNzbmFtZX19JQotIFx0aG1AQHRobWxzdGFydAotIFxAZm9yXHRobUBjdXJyZW50bGlzdDo9XHRobUBsaXN0XGRveyUKLSAgXGlmeFx0aG1AY3VycmVudGxpc3RcQGVtcHR5XGVsc2UKLSAgIFxleHBhbmRhZnRlclxnZGVmXGNzbmFtZSBsQFx0aG1AY3VycmVudGxpc3RcZW5kY3NuYW1le1x0aG1AdGhtbGluZX0lCi0gICBcZXhwYW5kYWZ0ZXJcZ2RlZlxjc25hbWUgdGhtQGxpc3Rkb1x0aG1AY3VycmVudGxpc3RcZW5kY3NuYW1le1x0aG1AaW5saXN0ZG99JQotICBcZmkKLSB9JQotIFxAaW5wdXR7XGpvYm5hbWUgLnRobX0lCi0gXHRobUBAdGhtbGVuZAotIFxAZm9yXHRobUBjdXJyZW50bGlzdDo9XHRobUBsaXN0XGRveyUKLSAgXGlmeFx0aG1AY3VycmVudGxpc3RcQGVtcHR5XGVsc2UKLSAgIFxleHBhbmRhZnRlclxnZGVmXGNzbmFtZSBsQFx0aG1AY3VycmVudGxpc3RcZW5kY3NuYW1le1x0aG1AbGdvYmJsZX0lCi0gICBcZXhwYW5kYWZ0ZXJcZ2RlZlxjc25hbWUgdGhtQGxpc3Rkb1x0aG1AY3VycmVudGxpc3RcZW5kY3NuYW1le1x0aG1AbGdvYmJsZX0lCi0gIFxmaQotIH0lCi0gXGVuZGdyb3VwfQotXGRlZlx0aG1AZW5hYmxlbGlzdG9mdGhlb3JlbXN7JQotICBcYmVnaW5ncm91cAotICAgIFxtYWtlYXRsZXR0ZXIKLSAgICBcaWZAZmlsZXN3Ci0gICAgICBcZXhwYW5kYWZ0ZXJcbmV3d3JpdGVcY3NuYW1lIHRmQHRobVxlbmRjc25hbWUlCi0gICAgICBcaW1tZWRpYXRlXG9wZW5vdXQgXGNzbmFtZSB0ZkB0aG1cZW5kY3NuYW1lIFxqb2JuYW1lLnRobVxyZWxheCUKLSAgICBcZmkKLSAgICBcQG5vYnJlYWtmYWxzZQotICBcZW5kZ3JvdXB9Ci1cZGVmXGFkZHRoZW9yZW1saW5le1xAaWZzdGFye1xub251bUBhZGR0aGVvcmVtbGluZX17XG51bUBhZGR0aGVvcmVtbGluZX19Ci1cZGVmXG5vbnVtQGFkZHRoZW9yZW1saW5lIzF7XGNzbmFtZSBub251bUBhZGR0aGVvcmVtbGluZSMxXGVuZGNzbmFtZX0lCi1cZGVmXG51bUBhZGR0aGVvcmVtbGluZSMxe1xjc25hbWUgbnVtQGFkZHRoZW9yZW1saW5lIzFcZW5kY3NuYW1lfSUKLVxkZWZcQG5vbnVtQGFkZHRoZW9yZW1saW5lIzEjMiMzeyUKLSAgICBcdGhtQHBhcnNlZm9yd3JpdGluZ3sjM30lCi0gICAgXGVkZWZcdGhtQHR7eyMyfXt9e1x0aG1AdG1wfX0lCi0gICAgXGFkZGNvbnRlbnRzbGluZXt0aG19eyMxfXtcdGhtQHR9fQotXGRlZlxAbnVtQGFkZHRoZW9yZW1saW5lIzEjMiMzeyUKLSAgIFx0aG1AcGFyc2Vmb3J3cml0aW5neyMzfSUKLSAgICBcZWRlZlx0aG1AdHt7IzJ9e1xjc25hbWUgdGhlIzFcZW5kY3NuYW1lfXtcdGhtQHRtcH19JQotICAgIFxhZGRjb250ZW50c2xpbmV7dGhtfXsjMX17XHRobUB0fX0lCi1cbG9uZ1xkZWZcYWRkdG90aGVvcmVtZmlsZXslCi0gIFxAaWZuZXh0Y2hhclt7XEBAYWRkdG90aGVvcmVtZmlsZX17XEBhZGR0b3RoZW9yZW1maWxlfX0KLVxsb25nXGRlZlxAYWRkdG90aGVvcmVtZmlsZSMxeyUKLSAgIFx0aG1AcGFyc2Vmb3J3cml0aW5neyMxfSUKLSAgIFxwcm90ZWN0ZWRAd3JpdGVcQGF1eG91dCUKLSAgICAgIHt9e1xzdHJpbmdcQHdyaXRlZmlsZXt0aG19e1x0aG1AdG1wfX19Ci1cbG9uZ1xkZWZcQEBhZGR0b3RoZW9yZW1maWxlWyMxXSMyeyUKLSAgIFx0aG1AcGFyc2Vmb3J3cml0aW5neyMyfSUKLSAgIFxwcm90ZWN0ZWRAd3JpdGVcQGF1eG91dCUKLSAgICAgIHt9e1xzdHJpbmdcQHdyaXRlZmlsZXt0aG19e1xzdHJpbmdcdGhlb3JlbWxpc3Rkb3sjMX17XHRobUB0bXB9fX19Ci1cbG9uZ1xkZWZcdGhlb3JlbWxpc3RkbyMxIzJ7XGV4cGFuZGFmdGVyXEBpZnVuZGVmaW5lZHt0aG1AbGlzdGRvIzF9JQotICAgICBccmVsYXh7XGNzbmFtZSB0aG1AbGlzdGRvIzFcZW5kY3NuYW1leyMxfXsjMn19fQotXEF0RW5kRG9jdW1lbnR7XHRobUBlbmFibGVsaXN0b2Z0aGVvcmVtc30KLVxkZWZcdGhtQG1lYW5pbmcjMS0+IzJccmVsYXh7IzJ9JSByZW1vdmUgIm1hY3JvOiAtPiIKLVxsb25nXGRlZlx0aG1AcGFyc2Vmb3J3cml0aW5nIzF7JQotICAgIFxkZWZcdGhtQHRtcHsjMX0lCi0gICAgXGVkZWZcdGhtQHRtcHtcZXhwYW5kYWZ0ZXJcdGhtQG1lYW5pbmdcbWVhbmluZ1x0aG1AdG1wXHJlbGF4fX0KLVxkZWZcdGhlb3JlbUBjaGVja2JvbGR7XGlmIGJcZXhwYW5kYWZ0ZXJcQGNhclxmQHNlcmllc1xAbmlsXGJvbGRtYXRoXGZpfQotXGRlZlxAZ3JlZWsjMXtcdGhlb3JlbUBjaGVja2JvbGQlCi0gXGlmY2FzZSMxXG9yJFxhbHBoYSRcb3IkXGJldGEkXG9yJFxnYW1tYSRcb3IkXGRlbHRhJFxvciRcdmFyZXBzaWxvbiQlCi0gIFxvciRcemV0YSRcb3IkXGV0YSRcb3IkXHZhcnRoZXRhJFxvciRcaW90YSRcb3IkXGthcHBhJFxvciRcbGFtYmRhJFxvciQlCi0gIFxtdSRcb3IkXG51JFxvciRceGkkXG9yJCBvJFxvciRcdmFycGkkXG9yJFx2YXJyaG8kXG9yJFx2YXJzaWdtYSRcb3IkXHRhdSQlCi0gIFxvciRcdXBzaWxvbiRcb3IkXHZhcnBoaSRcb3IkXGNoaSRcb3IkXHBzaSRcb3IkXG9tZWdhJFxlbHNlXEBjdHJlcnJcZml9Ci1cZGVmXEBHcmVlayMxe1x0aGVvcmVtQGNoZWNrYm9sZCUKLSBcaWZjYXNlIzFcb3IgQVxvciBCXG9yJFxHYW1tYSRcb3IkXERlbHRhJFxvciBFJQotICBcb3IgWlxvciBIXG9yJFxUaGV0YSRcb3IgSVxvciBLXG9yJFxMYW1iZGEkXG9yIE0lCi0gIFxvciBOXG9yJFxYaSRcb3IgT1xvciRcUGkkXG9yIFBcb3IkXFNpZ21hJFxvciBUJQotICBcb3IkXFVwc2lsb24kXG9yJFxQaGkkXG9yIFhcb3IkXFBzaSRcb3IkXE9tZWdhJFxlbHNlXEBjdHJlcnJcZml9Ci1cZGVmXGdyZWVrIzF7XEBncmVla3tcY3NuYW1lIGNAIzFcZW5kY3NuYW1lfX0KLVxkZWZcR3JlZWsjMXtcQEdyZWVre1xjc25hbWUgY0AjMVxlbmRjc25hbWV9fQotXFByb2Nlc3NPcHRpb25zXHJlbGF4Ci1cdGhlb3JlbWxpc3RhbGwKLVxpZnhcdGhtQG5vY29uZmlnXEB1bmRlZmluZWQKLVxJbnB1dElmRmlsZUV4aXN0c3tudGhlb3JlbS5jZmd9JQotICB7XFBhY2thZ2VJbmZve1xiYXNlbmFtZX17TG9jYWwgY29uZmlnIGZpbGUgbnRoZW9yZW0uY2ZnIHVzZWR9fSUKLSAge1xpZnhcdGhtQHVzZXN0ZFxAdW5kZWZpbmVkJQotICAgXGVsc2UlCi0gICAgIFxJbnB1dElmRmlsZUV4aXN0c3tudGhlb3JlbS5zdGR9JQotICAgICAge1xQYWNrYWdlSW5mb3tcYmFzZW5hbWV9e1N0YW5kYXJkIGNvbmZpZyBmaWxlIG50aGVvcmVtLnN0ZCB1c2VkfX17fQotICAgXGZpfQotXGZpCi1cZW5kaW5wdXQKLSUlCi0lJSBFbmQgb2YgZmlsZSBgbnRoZW9yZW0uc3R5Jy4KZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9BcHBsaWNhdGlvblBhdGguamF2YSBiL3NyYy9qYXZheC93cy9ycy9BcHBsaWNhdGlvblBhdGguamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL0FwcGxpY2F0aW9uUGF0aC5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvQXBwbGljYXRpb25QYXRoLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9Db25zdW1lcy5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL0NvbnN1bWVzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9Db25zdW1lcy5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvQ29uc3VtZXMuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL0Nvb2tpZVBhcmFtLmphdmEgYi9zcmMvamF2YXgvd3MvcnMvQ29va2llUGFyYW0uamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL0Nvb2tpZVBhcmFtLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9Db29raWVQYXJhbS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvREVMRVRFLmphdmEgYi9zcmMvamF2YXgvd3MvcnMvREVMRVRFLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9ERUxFVEUuamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL0RFTEVURS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvRGVmYXVsdFZhbHVlLmphdmEgYi9zcmMvamF2YXgvd3MvcnMvRGVmYXVsdFZhbHVlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9EZWZhdWx0VmFsdWUuamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL0RlZmF1bHRWYWx1ZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvRW5jb2RlZC5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL0VuY29kZWQuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL0VuY29kZWQuamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL0VuY29kZWQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL0Zvcm1QYXJhbS5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL0Zvcm1QYXJhbS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvRm9ybVBhcmFtLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9Gb3JtUGFyYW0uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL0dFVC5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL0dFVC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvR0VULmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9HRVQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL0hFQUQuamF2YSBiL3NyYy9qYXZheC93cy9ycy9IRUFELmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9IRUFELmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9IRUFELmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9IZWFkZXJQYXJhbS5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL0hlYWRlclBhcmFtLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9IZWFkZXJQYXJhbS5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvSGVhZGVyUGFyYW0uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL0h0dHBNZXRob2QuamF2YSBiL3NyYy9qYXZheC93cy9ycy9IdHRwTWV0aG9kLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9IdHRwTWV0aG9kLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9IdHRwTWV0aG9kLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9NYXRyaXhQYXJhbS5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL01hdHJpeFBhcmFtLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9NYXRyaXhQYXJhbS5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvTWF0cml4UGFyYW0uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL09QVElPTlMuamF2YSBiL3NyYy9qYXZheC93cy9ycy9PUFRJT05TLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9PUFRJT05TLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9PUFRJT05TLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9QT1NULmphdmEgYi9zcmMvamF2YXgvd3MvcnMvUE9TVC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvUE9TVC5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvUE9TVC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvUFVULmphdmEgYi9zcmMvamF2YXgvd3MvcnMvUFVULmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9QVVQuamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL1BVVC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvUGF0aC5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL1BhdGguamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL1BhdGguamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL1BhdGguamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL1BhdGhQYXJhbS5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL1BhdGhQYXJhbS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvUGF0aFBhcmFtLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9QYXRoUGFyYW0uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL1Byb2R1Y2VzLmphdmEgYi9zcmMvamF2YXgvd3MvcnMvUHJvZHVjZXMuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL1Byb2R1Y2VzLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9Qcm9kdWNlcy5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvUXVlcnlQYXJhbS5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL1F1ZXJ5UGFyYW0uamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL1F1ZXJ5UGFyYW0uamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL1F1ZXJ5UGFyYW0uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL1dlYkFwcGxpY2F0aW9uRXhjZXB0aW9uLmphdmEgYi9zcmMvamF2YXgvd3MvcnMvV2ViQXBwbGljYXRpb25FeGNlcHRpb24uamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL1dlYkFwcGxpY2F0aW9uRXhjZXB0aW9uLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9XZWJBcHBsaWNhdGlvbkV4Y2VwdGlvbi5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9BcHBsaWNhdGlvbi5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvQXBwbGljYXRpb24uamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvQXBwbGljYXRpb24uamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL2NvcmUvQXBwbGljYXRpb24uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvQ2FjaGVDb250cm9sLmphdmEgYi9zcmMvamF2YXgvd3MvcnMvY29yZS9DYWNoZUNvbnRyb2wuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvQ2FjaGVDb250cm9sLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL0NhY2hlQ29udHJvbC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9Db250ZXh0LmphdmEgYi9zcmMvamF2YXgvd3MvcnMvY29yZS9Db250ZXh0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL0NvbnRleHQuamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL2NvcmUvQ29udGV4dC5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9Db29raWUuamF2YSBiL3NyYy9qYXZheC93cy9ycy9jb3JlL0Nvb2tpZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9Db29raWUuamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL2NvcmUvQ29va2llLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL0VudGl0eVRhZy5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvRW50aXR5VGFnLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL0VudGl0eVRhZy5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvY29yZS9FbnRpdHlUYWcuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvR2VuZXJpY0VudGl0eS5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvR2VuZXJpY0VudGl0eS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9HZW5lcmljRW50aXR5LmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL0dlbmVyaWNFbnRpdHkuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvSHR0cEhlYWRlcnMuamF2YSBiL3NyYy9qYXZheC93cy9ycy9jb3JlL0h0dHBIZWFkZXJzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL0h0dHBIZWFkZXJzLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL0h0dHBIZWFkZXJzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL01lZGlhVHlwZS5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvTWVkaWFUeXBlLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL01lZGlhVHlwZS5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvY29yZS9NZWRpYVR5cGUuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvTXVsdGl2YWx1ZWRNYXAuamF2YSBiL3NyYy9qYXZheC93cy9ycy9jb3JlL011bHRpdmFsdWVkTWFwLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL011bHRpdmFsdWVkTWFwLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL011bHRpdmFsdWVkTWFwLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL05ld0Nvb2tpZS5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvTmV3Q29va2llLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL05ld0Nvb2tpZS5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvY29yZS9OZXdDb29raWUuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvUGF0aFNlZ21lbnQuamF2YSBiL3NyYy9qYXZheC93cy9ycy9jb3JlL1BhdGhTZWdtZW50LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL1BhdGhTZWdtZW50LmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL1BhdGhTZWdtZW50LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL1JlcXVlc3QuamF2YSBiL3NyYy9qYXZheC93cy9ycy9jb3JlL1JlcXVlc3QuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvUmVxdWVzdC5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvY29yZS9SZXF1ZXN0LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL1Jlc3BvbnNlLmphdmEgYi9zcmMvamF2YXgvd3MvcnMvY29yZS9SZXNwb25zZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9SZXNwb25zZS5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvY29yZS9SZXNwb25zZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9TZWN1cml0eUNvbnRleHQuamF2YSBiL3NyYy9qYXZheC93cy9ycy9jb3JlL1NlY3VyaXR5Q29udGV4dC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9TZWN1cml0eUNvbnRleHQuamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL2NvcmUvU2VjdXJpdHlDb250ZXh0LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL1N0cmVhbWluZ091dHB1dC5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvU3RyZWFtaW5nT3V0cHV0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9jb3JlL1N0cmVhbWluZ091dHB1dC5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvY29yZS9TdHJlYW1pbmdPdXRwdXQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvVXJpQnVpbGRlci5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvVXJpQnVpbGRlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9VcmlCdWlsZGVyLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL1VyaUJ1aWxkZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvVXJpQnVpbGRlckV4Y2VwdGlvbi5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvVXJpQnVpbGRlckV4Y2VwdGlvbi5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9VcmlCdWlsZGVyRXhjZXB0aW9uLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL1VyaUJ1aWxkZXJFeGNlcHRpb24uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvVXJpSW5mby5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvVXJpSW5mby5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9VcmlJbmZvLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL1VyaUluZm8uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvVmFyaWFudC5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2NvcmUvVmFyaWFudC5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvY29yZS9WYXJpYW50LmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL1ZhcmlhbnQuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvcGFja2FnZS1pbmZvLmphdmEgYi9zcmMvamF2YXgvd3MvcnMvY29yZS9wYWNrYWdlLWluZm8uamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2NvcmUvcGFja2FnZS1pbmZvLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9jb3JlL3BhY2thZ2UtaW5mby5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvZXh0L0NvbnRleHRSZXNvbHZlci5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2V4dC9Db250ZXh0UmVzb2x2ZXIuamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2V4dC9Db250ZXh0UmVzb2x2ZXIuamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL2V4dC9Db250ZXh0UmVzb2x2ZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2V4dC9FeGNlcHRpb25NYXBwZXIuamF2YSBiL3NyYy9qYXZheC93cy9ycy9leHQvRXhjZXB0aW9uTWFwcGVyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9leHQvRXhjZXB0aW9uTWFwcGVyLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9leHQvRXhjZXB0aW9uTWFwcGVyLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9leHQvRmFjdG9yeUZpbmRlci5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2V4dC9GYWN0b3J5RmluZGVyLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9leHQvRmFjdG9yeUZpbmRlci5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvZXh0L0ZhY3RvcnlGaW5kZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2V4dC9NZXNzYWdlQm9keVJlYWRlci5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2V4dC9NZXNzYWdlQm9keVJlYWRlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvZXh0L01lc3NhZ2VCb2R5UmVhZGVyLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9leHQvTWVzc2FnZUJvZHlSZWFkZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2V4dC9NZXNzYWdlQm9keVdyaXRlci5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2V4dC9NZXNzYWdlQm9keVdyaXRlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvZXh0L01lc3NhZ2VCb2R5V3JpdGVyLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9leHQvTWVzc2FnZUJvZHlXcml0ZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2V4dC9Qcm92aWRlci5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2V4dC9Qcm92aWRlci5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvZXh0L1Byb3ZpZGVyLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9leHQvUHJvdmlkZXIuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2V4dC9Qcm92aWRlcnMuamF2YSBiL3NyYy9qYXZheC93cy9ycy9leHQvUHJvdmlkZXJzLmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9leHQvUHJvdmlkZXJzLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9leHQvUHJvdmlkZXJzLmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3NyYy9qYXZheC93cy9ycy9leHQvUnVudGltZURlbGVnYXRlLmphdmEgYi9zcmMvamF2YXgvd3MvcnMvZXh0L1J1bnRpbWVEZWxlZ2F0ZS5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvZXh0L1J1bnRpbWVEZWxlZ2F0ZS5qYXZhCnJlbmFtZSB0byBzcmMvamF2YXgvd3MvcnMvZXh0L1J1bnRpbWVEZWxlZ2F0ZS5qYXZhCmRpZmYgLS1naXQgYS9zcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvZXh0L3BhY2thZ2UtaW5mby5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL2V4dC9wYWNrYWdlLWluZm8uamF2YQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL2V4dC9wYWNrYWdlLWluZm8uamF2YQpyZW5hbWUgdG8gc3JjL2phdmF4L3dzL3JzL2V4dC9wYWNrYWdlLWluZm8uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvc3JjL2phdmF4L3dzL3JzL3BhY2thZ2UtaW5mby5qYXZhIGIvc3JjL2phdmF4L3dzL3JzL3BhY2thZ2UtaW5mby5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS9zcmMvamF2YXgvd3MvcnMvcGFja2FnZS1pbmZvLmphdmEKcmVuYW1lIHRvIHNyYy9qYXZheC93cy9ycy9wYWNrYWdlLWluZm8uamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvdGVzdC9qYXZheC93cy9ycy9jb3JlL0Nvb2tpZVRlc3QuamF2YSBiL3Rlc3QvamF2YXgvd3MvcnMvY29yZS9Db29raWVUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3Rlc3QvamF2YXgvd3MvcnMvY29yZS9Db29raWVUZXN0LmphdmEKcmVuYW1lIHRvIHRlc3QvamF2YXgvd3MvcnMvY29yZS9Db29raWVUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3Rlc3QvamF2YXgvd3MvcnMvY29yZS9HZW5lcmljRW50aXR5VGVzdC5qYXZhIGIvdGVzdC9qYXZheC93cy9ycy9jb3JlL0dlbmVyaWNFbnRpdHlUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3Rlc3QvamF2YXgvd3MvcnMvY29yZS9HZW5lcmljRW50aXR5VGVzdC5qYXZhCnJlbmFtZSB0byB0ZXN0L2phdmF4L3dzL3JzL2NvcmUvR2VuZXJpY0VudGl0eVRlc3QuamF2YQpkaWZmIC0tZ2l0IGEvc3JjL2pzcjMxMS1hcGkvdGVzdC9qYXZheC93cy9ycy9jb3JlL05ld0Nvb2tpZVRlc3QuamF2YSBiL3Rlc3QvamF2YXgvd3MvcnMvY29yZS9OZXdDb29raWVUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHNyYy9qc3IzMTEtYXBpL3Rlc3QvamF2YXgvd3MvcnMvY29yZS9OZXdDb29raWVUZXN0LmphdmEKcmVuYW1lIHRvIHRlc3QvamF2YXgvd3MvcnMvY29yZS9OZXdDb29raWVUZXN0LmphdmEKZGlmZiAtLWdpdCBhL3NyYy9qc3IzMTEtYXBpL3Rlc3QvamF2YXgvd3MvcnMvY29yZS9SdW50aW1lRGVsZWdhdGVTdHViLmphdmEgYi90ZXN0L2phdmF4L3dzL3JzL2NvcmUvUnVudGltZURlbGVnYXRlU3R1Yi5qYXZhCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzcmMvanNyMzExLWFwaS90ZXN0L2phdmF4L3dzL3JzL2NvcmUvUnVudGltZURlbGVnYXRlU3R1Yi5qYXZhCnJlbmFtZSB0byB0ZXN0L2phdmF4L3dzL3JzL2NvcmUvUnVudGltZURlbGVnYXRlU3R1Yi5qYXZhCg==