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dF9pZGVudHQHAAAAX2FjdGl2ZXQEAAAAbmFtZXQIAAAAS2V5RXJyb3J0BAAAAF9zeXN0BgAAAHN0ZGVycnQFAAAAd3JpdGUoBQAAAFIeAAAAdAYAAABmb3JtYXR0BAAAAGFyZ3N0BQAAAGlkZW50UiMAAAAoAAAAACgAAAAAc1EAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHl0BQAAAF9ub3RlPwAAAHMSAAAAAAEJAQoDCQEDAREBDQEOARABTigFAAAAdAgAAABfX25hbWVfX3QKAAAAX19tb2R1bGVfX1IbAAAAUiAAAABSKwAAACgAAAAAKAAAAAAoAAAAAHNRAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5nLnB5UhoAAAA4AAAAcwQAAAAGAgwFYwEAAAABAAAAAQAAAEMAAABzCgAAAHwAAGEAAGQBAFMoAgAAAHO4AAAAU2V0IGEgcHJvZmlsZSBmdW5jdGlvbiBmb3IgYWxsIHRocmVhZHMgc3RhcnRlZCBmcm9tIHRoZSB0aHJlYWRpbmcgbW9kdWxlLgoKICAgIFRoZSBmdW5jIHdpbGwgYmUgcGFzc2VkIHRvIHN5cy5zZXRwcm9maWxlKCkgZm9yIGVhY2ggdGhyZWFkLCBiZWZvcmUgaXRzCiAgICBydW4oKSBtZXRob2QgaXMgY2FsbGVkLgoKICAgIE4oAQAAAHQNAAAAX3Byb2ZpbGVfaG9vaygBAAAAdAQAAABmdW5jKAAAAAAoAAAAAHNRAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5nLnB5UhEAAABZAAAAcwIAAAAACGMBAAAAAQAAAAEAAABDAAAAcwoAAAB8AABhAABkAQBTKAIAAABztAAAAFNldCBhIHRyYWNlIGZ1bmN0aW9uIGZvciBhbGwgdGhyZWFkcyBzdGFydGVkIGZyb20gdGhlIHRocmVhZGluZyBt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dGhyZWFkKSwgYW5kIGlmIGFueSBvdGhlciB0aHJlYWRzIGFyZSBibG9ja2VkIHdhaXRpbmcgZm9yIHRoZQogICAgICAgIGxvY2sgdG8gYmVjb21lIHVubG9ja2VkLCBhbGxvdyBleGFjdGx5IG9uZSBvZiB0aGVtIHRvIHByb2NlZWQuIElmIGFmdGVyCiAgICAgICAgdGhlIGRlY3JlbWVudCB0aGUgcmVjdXJzaW9uIGxldmVsIGlzIHN0aWxsIG5vbnplcm8sIHRoZSBsb2NrIHJlbWFpbnMKICAgICAgICBsb2NrZWQgYW5kIG93bmVkIGJ5IHRoZSBjYWxsaW5nIHRocmVhZC4KCiAgICAgICAgT25seSBjYWxsIHRoaXMgbWV0aG9kIHdoZW4gdGhlIGNhbGxpbmcgdGhyZWFkIG93bnMgdGhlIGxvY2suIEEKICAgICAgICBSdW50aW1lRXJyb3IgaXMgcmFpc2VkIGlmIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBsb2NrIGlzCiAgICAgICAgdW5sb2NrZWQuCgogICAgICAgIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4KCiAgICAgICAgcx8AAABjYW5ub3QgcmVsZWFzZSB1bi1hY3F1aXJlZCBsb2NraQEAAABzGwAAACVzLnJlbGVhc2UoKTogZmluYWwgcmVsZWFzZXMfAAAAJXMucmVsZWFzZSgpOiBub24tZmluYWwgcmVsZWFzZU4oCAAAAFI1AAAAUiEAAAB0DAAAAFJ1bnRpbWVFcnJvclI2AAAAUhsAAABSNAAAAHQHAAAAcmVsZWFzZVIrAAAAKAIAAABSHgAAAHQFAAAAY291bnQoAAAAACgAAAAAc1EAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHlSPwAAALoAAABzEAAAAAAQEgEPARQBBgEJAQ0CEwNjBAAAAAQAAAABAAAAQwAAAHMOAAAAfAAAagAAgwAAAWQAAFMoAQAAAE4oAQAAAFI/AAAAKAQAAABSHgAAAHQBAAAAdHQBAAAAdnQCAAAAdGIoAAAAACgAAAAAc1EAAAAvdG1wL25kay1V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dCwgaXQgcmUtYWNxdWlyZXMgdGhlIGxvY2sgYW5kIHJldHVybnMuCgogICAgICAgIFdoZW4gdGhlIHRpbWVvdXQgYXJndW1lbnQgaXMgcHJlc2VudCBhbmQgbm90IE5vbmUsIGl0IHNob3VsZCBiZSBhCiAgICAgICAgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHNwZWNpZnlpbmcgYSB0aW1lb3V0IGZvciB0aGUgb3BlcmF0aW9uIGluIHNlY29uZHMKICAgICAgICAob3IgZnJhY3Rpb25zIHRoZXJlb2YpLgoKICAgICAgICBXaGVuIHRoZSB1bmRlcmx5aW5nIGxvY2sgaXMgYW4gUkxvY2ssIGl0IGlzIG5vdCByZWxlYXNlZCB1c2luZyBpdHMKICAgICAgICByZWxlYXNlKCkgbWV0aG9kLCBzaW5jZSB0aGlzIG1heSBub3QgYWN0dWFsbHkgdW5sb2NrIHRoZSBsb2NrIHdoZW4gaXQKICAgICAgICB3YXMgYWNxdWlyZWQgbXVsdGlwbGUgdGltZXMgcmVjdXJzaXZlbHkuIEluc3RlYWQsIGFuIGludGVybmFsIGludGVyZmFjZQogICAgICAgIG9mIHRoZSBSTG9jayBjbGFzcyBpcyB1c2VkLCB3aGljaCByZWFsbHkgdW5sb2NrcyBpdCBldmVuIHdoZW4gaXQgaGFzCiAgICAgICAgYmVlbiByZWN1cnNpdmVseSBhY3F1aXJlZCBzZXZlcmFsIHRpbWVzLiBBbm90aGVyIGludGVybmFsIGludGVyZmFjZSBpcwogICAgICAgIHRoZW4gdXNlZCB0byByZXN0b3JlIHRoZSByZWN1cnNpb24gbGV2ZWwgd2hlbiB0aGUgbG9jayBpcyByZWFjcXVpcmVkLgoKICAgICAgICBzHwAAAGNhbm5vdCB3YWl0IG9uIHVuLWFjcXVpcmVkIGxvY2tzEQAAACVzLndhaXQoKTogZ290IGl0Z/yp8dJNYkA/aQAAAABpAgAAAGeamZmZmZmpP3MWAAAAJXMud2FpdCglcyk6IHRpbWVkIG91dHMTAAAAJXMud2FpdCglcyk6IGdvdCBpdE4oEAAAAFJIAAAAUj4AAABSMwAAAFI6AAAAUk4AAAB0BgAAAGFwcGVuZFJHAAAAUhsAAABSKwAAAHQF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eVJLAAAA/gAAAHMYAAAABgMGAg8ZCQMJAwkDCQMJAwkJDEAMGwkJYwAAAAACAAAAAwAAAE8AAABzDQAAAHQAAHwAAHwBAI4AAFMoAQAAAHNPAQAAQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBzZW1hcGhvcmUuCgogICAgU2VtYXBob3JlcyBtYW5hZ2UgYSBjb3VudGVyIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyIG9mIHJlbGVhc2UoKSBjYWxscyBtaW51cwogICAgdGhlIG51bWJlciBvZiBhY3F1aXJlKCkgY2FsbHMsIHBsdXMgYW4gaW5pdGlhbCB2YWx1ZS4gVGhlIGFjcXVpcmUoKSBtZXRob2QKICAgIGJsb2NrcyBpZiBuZWNlc3NhcnkgdW50aWwgaXQgY2FuIHJldHVybiB3aXRob3V0IG1ha2luZyB0aGUgY291bnRlcgogICAgbmVnYXRpdmUuIElmIG5vdCBnaXZlbiwgdmFsdWUgZGVmYXVsdHMgdG8gMS4KCiAgICAoAQAAAHQKAAAAX1NlbWFwaG9yZSgCAAAAUikAAABSMgAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVINAAAAmwEAAHMCAAAAAAlSaQAAAGMAAAAAAAAAAAMAAABCAAAAc0EAAABlAABaAQBkAABaAgBkAQBkBgBkAgCEAgBaBABkAQBkAwCEAQBaBQBlBQBaBgBkBACEAABaBwBkBQCEAABaCABSUygHAAAAcyIBAABTZW1hcGhvcmVzIG1hbmFnZSBhIGNvdW50ZXIgcmVwcmVzZW50aW5nIHRoZSBudW1iZXIgb2YgcmVsZWFzZSgpIGNhbGxzCiAgICAgICBtaW51cyB0aGUgbnVtYmVyIG9mIGFjcXVpcmUoKSBjYWxscywgcGx1cyBhbiBpbml0aWFsIHZhbHVlLiBUaGUgYWNxdWlyZSgpCiAgICAgICBtZXRob2QgYmxvY2tzIGlmIG5lY2Vzc2FyeSB1bnRpbCBpdCBjYW4gcmV0dXJuIHdpdGhvdXQgbWFraW5nIHRoZSBjb3VudGVyCiAgICAgICBuZWdhdGl2ZS4gSWYgbm90IGdpdmVuLCB2YWx1ZSBkZWZhdWx0cyB0byAxLgoKICAgIGkBAAAAYwMAAAADAAAAAwAAAEMAAABzSgAAAHwBAGQBAGsAAHIbAHQAAGQCAIMBAIIBAG4AAHQBAGoCAHwAAHwCAIMCAAF0AwB0BACDAACDAQB8AABfBQB8AQB8AABfBgBkAABTKAMAAABOaQAAAABzJAAAAHNlbWFwaG9yZSBpbml0aWFsIHZhbHVlIG11c3QgYmUgPj0gMCgHAAAAUlkAAABSGgAAAFIgAAAAUgYAAABSCwAAAHQQAAAAX1NlbWFwaG9yZV9fY29uZHQRAAAAX1NlbWFwaG9yZV9fdmFsdWUoAwAAAFIeAAAAdAUAAAB2YWx1ZVIfAAAAKAAAAAAoAAAAAHNRAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5nLnB5UiAAAACwAQAAcwoAAAAAAQwBDwEQARIBYwIAAAADAAAACQAAAEMAAABzjAAAAHQAAH0CAHwAAGoBAI93AAF4bwB8AABqAgBkAQBrAgByVQB8AQBzLABQbgAAfAAAagMAZAIAfAAAfAEAfAAAagIAgwQAAXwAAGoBAGoEAIMAAAFxEwBXfAAAagIAZAMAGHwAAF8CAHwAAGoDAGQEAHwAAHwAAGoCAIMDAAF0BQB9AgBXZAUAUVh8AgBTKAYAAABzAAQAAEFjcXVpcmUgYSBzZW1hcGhvcmUsIGRlY3JlbWVudGluZyB0aGUgaW50ZXJuYWwgY291bnRlciBieSBvbmUuCgogICAgICAgIFdoZW4gaW52b2tlZCB3aXRob3V0IGFyZ3VtZW50czogaWYgdGhlIGludGVybmFsIGNvdW50ZXIgaXMgbGFyZ2VyIHRoYW4KICAgICAgICB6ZXJvIG9uIGVudHJ5LCBkZWNyZW1lbnQgaXQgYnkgb25lIGFuZCByZXR1cm4gaW1tZWRpYXRlbHkuIElmIGl0IGlzIHplcm8KICAgICAgICBvbiBlbnRyeSwgYmxvY2ssIHdhaXRpbmcgdW50aWwgc29tZSBvdGhlciB0aHJlYWQgaGFzIGNhbGxlZCByZWxlYXNlKCkgdG8KICAgICAgICBtYWtlIGl0IGxhcmdlciB0aGFuIHplcm8uIFRoaXMgaXMgZG9uZSB3aXRoIHByb3BlciBpbnRlcmxvY2tpbmcgc28gdGhhdAogICAgICAgIGlmIG11bHRpcGxlIGFjcXVpcmUoKSBjYWxscyBhcmUgYmxvY2tlZCwgcmVsZWFzZSgpIHdpbGwgd2FrZSBleGFjdGx5IG9uZQogICAgICAgIG9mIHRoZW0gdXAuIFRoZSBpbXBsZW1lbnRhdGlvbiBtYXkgcGljayBvbmUgYXQgcmFuZG9tLCBzbyB0aGUgb3JkZXIgaW4KICAgICAgICB3aGljaCBibG9ja2VkIHRocmVhZHMgYXJlIGF3YWtlbmVkIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uLiBUaGVyZSBpcyBubwogICAgICAgIHJldHVybiB2YWx1ZSBpbiB0aGlzIGNhc2UuCgogICAgICAgIFdoZW4gaW52b2tlZCB3aXRoIGJsb2NraW5nIHNldCB0byB0cnVlLCBkbyB0aGUgc2FtZSB0aGluZyBhcyB3aGVuIGNhbGxlZAogICAgICAgIHdpdGhvdXQgYXJndW1lbnRzLCBhbmQgcmV0dXJuIHRydWUuCgogICAgICAgIFdoZW4gaW52b2tlZCB3aXRoIGJsb2NraW5nIHNldCB0byBmYWxzZSwgZG8gbm90IGJsb2NrLiBJZiBhIGNhbGwgd2l0aG91dAogICAgICAgIGFuIGFyZ3VtZW50IHdvdWxkIGJsb2NrLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHk7IG90aGVyd2lzZSwgZG8gdGhlCiAgICAgICAgc2FtZSB0aGluZyBhcyB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgYW5kIHJldHVybiB0cnVlLgoKICAgICAgICBpAAAAAHMpAAAAJXMuYWNxdWlyZSglcyk6IGJsb2NrZWQgd2FpdGluZywgdmFsdWU9JXNpAQAAAHMdAAAAJXMuYWNxdWlyZTogc3VjY2VzcywgdmFsdWU9JXNOKAYAAABSUgAAAFJqAAAAUmsAAABSKwAAAFJhAAAAUlMAAAAoAwAAAFIeAAAAUjsAAABSPQAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVI6AAAAtwEAAHMaAAAAABQGAQoBEgEGAQQCCQEQARECEAIJAQ0BDAFjAQAAAAEAAAAIAAAAQwAAAHNHAAAAfAAAagAAjzgAAXwAAGoBAGQBABd8AABfAQB8AABqAgBkAgB8AAB8AABqAQCDAwABfAAAagAAagMAgwAAAVdkAwBRWGQDAFMoBAAAAHPXAAAAUmVsZWFzZSBhIHNlbWFwaG9yZSwgaW5jcmVtZW50aW5nIHRoZSBpbnRlcm5hbCBjb3VudGVyIGJ5IG9uZS4KCiAgICAgICAgV2hlbiB0aGUgY291bnRlciBpcyB6ZXJvIG9uIGVudHJ5IGFuZCBhbm90aGVyIHRocmVhZCBpcyB3YWl0aW5nIGZvciBpdAogICAgICAgIHRvIGJlY29tZSBsYXJnZXIgdGhhbiB6ZXJvIGFnYWluLCB3YWtlIHVwIHRoYXQgdGhyZWFkLgoKICAgICAgICBpAQAAAHMdAAAAJXMucmVsZWFzZTogc3VjY2VzcywgdmFsdWU9JXNOKAQAAABSagAAAFJrAAAAUisAAABSZgAAACgBAAAAUh4AAAAoAAAAACgAAAAAc1EAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHlSPwAAAN4BAABzCgAAAAAHCgEQAgkBDQFjBAAAAAQAAAABAAAAQwAAAHMOAAAAfAAAagAAgwAAAWQAAFMoAQAAAE4oAQAAAFI/AAAAKAQAAABSHgAAAFJBAAAAUkIAAABSQwAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVJEAAAA7AEAAHMCAAAAAAFOKAkAAABSLAAAAFItAAAAUkkAAABSGwAAAFIgAAAAUjoAAABSSgAAAFI/AAAAUkQAAAAoAAAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVJpAAAApgEAAHMMAAAABgYGBA8HDCUGAgkOYwAAAAACAAAAAwAAAE8AAABzDQAAAHQAAHwAAHwBAI4AAFMoAQAAAHPCAgAAQSBmYWN0b3J5IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIG5ldyBib3VuZGVkIHNlbWFwaG9yZS4KCiAgICBBIGJvdW5kZWQgc2VtYXBob3JlIGNoZWNrcyB0byBtYWtlIHN1cmUgaXRzIGN1cnJlbnQgdmFsdWUgZG9lc24ndCBleGNlZWQgaXRzCiAgICBpbml0aWFsIHZhbHVlLiBJZiBpdCBkb2VzLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gSW4gbW9zdCBzaXR1YXRpb25zCiAgICBzZW1hcGhvcmVzIGFyZSB1c2VkIHRvIGd1YXJkIHJlc291cmNlcyB3aXRoIGxpbWl0ZWQgY2FwYWNpdHkuCgogICAgSWYgdGhlIHNlbWFwaG9yZSBpcyByZWxlYXNlZCB0b28gbWFueSB0aW1lcyBpdCdzIGEgc2lnbiBvZiBhIGJ1Zy4gSWYgbm90CiAgICBnaXZlbiwgdmFsdWUgZGVmYXVsdHMgdG8gMS4KCiAgICBMaWtlIHJlZ3VsYXIgc2VtYXBob3JlcywgYm91bmRlZCBzZW1hcGhvcmVzIG1hbmFnZSBhIGNvdW50ZXIgcmVwcmVzZW50aW5nCiAgICB0aGUgbnVtYmVyIG9mIHJlbGVhc2UoKSBjYWxscyBtaW51cyB0aGUgbnVtYmVyIG9mIGFjcXVpcmUoKSBjYWxscywgcGx1cyBhbgogICAgaW5pdGlhbCB2YWx1ZS4gVGhlIGFjcXVpcmUoKSBtZXRob2QgYmxvY2tzIGlmIG5lY2Vzc2FyeSB1bnRpbCBpdCBjYW4gcmV0dXJuCiAgICB3aXRob3V0IG1ha2luZyB0aGUgY291bnRlciBuZWdhdGl2ZS4gSWYgbm90IGdpdmVuLCB2YWx1ZSBkZWZhdWx0cyB0byAxLgoKICAgICgBAAAAdBEAAABfQm91bmRlZFNlbWFwaG9yZSgCAAAAUikAAABSMgAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVIOAAAA8AEAAHMCAAAAABBSbQAAAGMAAAAAAAAAAAMAAABCAAAAcyYAAABlAABaAQBkAABaAgBkAQBkBABkAgCEAgBaBABkAwCEAABaBQBSUygFAAAAc+EAAABBIGJvdW5kZWQgc2VtYXBob3JlIGNoZWNrcyB0byBtYWtlIHN1cmUgaXRzIGN1cnJlbnQgdmFsdWUgZG9lc24ndCBleGNlZWQKICAgICAgIGl0cyBpbml0aWFsIHZhbHVlLiBJZiBpdCBkb2VzLCBWYWx1ZUVycm9yIGlzIHJhaXNlZC4gSW4gbW9zdCBzaXR1YXRpb25zCiAgICAgICBzZW1hcGhvcmVzIGFyZSB1c2VkIHRvIGd1YXJkIHJlc291cmNlcyB3aXRoIGxpbWl0ZWQgY2FwYWNpdHkuCiAgICBpAQAAAGMDAAAAAwAAAAQAAABDAAAAcyAAAAB0AABqAQB8AAB8AQB8AgCDAwABfAEAfAAAXwIAZAAAUygBAAAATigDAAAAUmkAAABSIAAAAHQOAAAAX2luaXRpYWxfdmFsdWUoAwAAAFIeAAAAUmwAAABSHwAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVIgAAAACAIAAHMEAAAAAAETAWMBAAAAAQAAAAIAAABDAAAAcy4AAAB8AABqAAB8AABqAQBrBQByIQB0AgBkAQCDAQCCAQBuAAB0AwBqBAB8AACDAQBTKAIAAABzNgEAAFJlbGVhc2UgYSBzZW1hcGhvcmUsIGluY3JlbWVudGluZyB0aGUgaW50ZXJuYWwgY291bnRlciBieSBvbmUuCgogICAgICAgIFdoZW4gdGhlIGNvdW50ZXIgaXMgemVybyBvbiBlbnRyeSBhbmQgYW5vdGhlciB0aHJlYWQgaXMgd2FpdGluZyBmb3IgaXQKICAgICAgICB0byBiZWNvbWUgbGFyZ2VyIHRoYW4gemVybyBhZ2Fpbiwgd2FrZSB1cCB0aGF0IHRocmVhZC4KCiAgICAgICAgSWYgdGhlIG51bWJlciBvZiByZWxlYXNlcyBleGNlZWRzIHRoZSBudW1iZXIgb2YgYWNxdWlyZXMsCiAgICAgICAgcmFpc2UgYSBWYWx1ZUVycm9yLgoKICAgICAgICBzIQAAAFNlbWFwaG9yZSByZWxlYXNlZCB0b28gbWFueSB0aW1lcygFAAAAUmsAAABSbgAAAFJZAAAAUmkAAABSPwAAACgBAAAAUh4AAAAoAAAAACgAAAAAc1EAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHlSPwAAAAwCAABzBgAAAAAKEgEPAU4oBgAAAFIsAAAAUi0AAABSSQAAAFIbAAAAUiAAAABSPwAAACgAAAAAKAAAAAAoAAAAAHNRAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5nLnB5Um0AAAACAgAAcwYAAAAGBAYCDwRjAAAAAAIAAAADAAAATwAAAHMNAAAAdAAAfAAAfAEAjgAAUygBAAAAc98AAABBIGZhY3RvcnkgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGEgbmV3IGV2ZW50LgoKICAgIEV2ZW50cyBtYW5hZ2UgYSBmbGFnIHRoYXQgY2FuIGJlIHNldCB0byB0cnVlIHdpdGggdGhlIHNldCgpIG1ldGhvZCBhbmQgcmVzZXQKICAgIHRvIGZhbHNlIHdpdGggdGhlIGNsZWFyKCkgbWV0aG9kLiBUaGUgd2FpdCgpIG1ldGhvZCBibG9ja3MgdW50aWwgdGhlIGZsYWcgaXMKICAgIHRydWUuCgogICAgKAEAAAB0BgAAAF9FdmVudCgCAAAAUikAAABSMgAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVIKAAAAGwIAAHMCAAAAAAhSbwAAAGMAAAAAAAAAAAIAAABCAAAAc1AA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bGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weXQFAAAAY2xlYXJLAgAAcwgAAAAABw0BAwENAmMCAAAAAgAAAAQAAABDAAAAc0kAAAB8AABqAABqAQCDAAABeicAfAAAagIAcywAfAAAagAAagMAfAEAgwEAAW4AAHwAAGoCAFNXZAEAfAAAagAAagQAgwAAAVhkAQBTKAIAAABzSAIAAEJsb2NrIHVudGlsIHRoZSBpbnRlcm5hbCBmbGFnIGlzIHRydWUuCgogICAgICAgIElmIHRoZSBpbnRlcm5hbCBmbGFnIGlzIHRydWUgb24gZW50cnksIHJldHVybiBpbW1lZGlhdGVseS4gT3RoZXJ3aXNlLAogICAgICAgIGJsb2NrIHVudGlsIGFub3RoZXIgdGhyZWFkIGNhbGxzIHNldCgpIHRvIHNldCB0aGUgZmxhZyB0byB0cnVlLCBvciB1bnRpbAogICAgICAgIHRoZSBvcHRpb25hbCB0aW1lb3V0IG9jY3Vycy4KCiAgICAgICAgV2hlbiB0aGUgdGltZW91dCBhcmd1bWVudCBpcyBwcmVzZW50IGFuZCBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEKICAgICAgICBmbG9hdGluZyBwb2ludCBudW1iZXIgc3BlY2lmeWluZyBhIHRpbWVvdXQgZm9yIHRoZSBvcGVyYXRpb24gaW4gc2Vjb25kcwogICAgICAgIChvciBmcmFjdGlvbnMgdGhlcmVvZikuCgogICAgICAgIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGludGVybmFsIGZsYWcgb24gZXhpdCwgc28gaXQgd2lsbCBhbHdheXMgcmV0dXJuCiAgICAgICAgVHJ1ZSBleGNlcHQgaWYgYSB0aW1lb3V0IGlzIGdpdmVuIGFuZCB0aGUgb3BlcmF0aW9uIHRpbWVzIG91dC4KCiAgICAgICAgTigFAAAAUnAAAABSOgAAAFJxAAAAUmEAAABSPwAAACgCAAAAUh4AAABSWgAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIv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RGVmYXVsdHMgdG8ge30uCgogICAgICAgIElmIGEgc3ViY2xhc3Mgb3ZlcnJpZGVzIHRoZSBjb25zdHJ1Y3RvciwgaXQgbXVzdCBtYWtlIHN1cmUgdG8gaW52b2tlCiAgICAgICAgdGhlIGJhc2UgY2xhc3MgY29uc3RydWN0b3IgKFRocmVhZC5fX2luaXRfXygpKSBiZWZvcmUgZG9pbmcgYW55dGhpbmcKICAgICAgICBlbHNlIHRvIHRoZSB0aHJlYWQuCgpzIwAAAGdyb3VwIGFyZ3VtZW50IG11c3QgYmUgTm9uZSBmb3Igbm93TigZAAAAUhsAAAB0DgAAAEFzc2VydGlvbkVycm9yUhoAAABSIAAAAHQPAAAAX1RocmVhZF9fdGFyZ2V0dAMAAABzdHJSeQAAAHQNAAAAX1RocmVhZF9fbmFtZXQNAAAAX1RocmVhZF9fYXJnc3QPAAAAX1RocmVhZF9fa3dhcmdzdAsAAABfc2V0X2RhZW1vbnQRAAAAX1RocmVhZF9fZGFlbW9uaWN0DgAAAF9UaHJlYWRfX2lkZW50UgoAAAB0EAAAAF9UaHJlYWRfX3N0YXJ0ZWRSUgAAAHQQAAAAX1RocmVhZF9fc3RvcHBlZFIGAAAAUgsAAAB0DgAAAF9UaHJlYWRfX2Jsb2NrUlMAAAB0FAAAAF9UaHJlYWRfX2luaXRpYWxpemVkUiUAAABSJgAAAHQPAAAAX1RocmVhZF9fc3RkZXJyKAcAAABSHgAAAHQFAAAAZ3JvdXB0BgAAAHRhcmdldFIjAAAAUikAAABSMgAAAFIfAAAAKAAAAAAoAAAAAHNRAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5nLnB5UiAAAACOAgAAcx4AAAAAFxgBEAEMAQkBCQEYAQkBCQEPAQkBDAEJARIBCQNjAQAAAAEAAAADAAAAQwAAAHMwAAAAdAAAfAAAZAEAgwIAch8AfAAAagEAagIAgwAAAW4AAHwAAGoDAGoEAIMAAAFkAABTKAIAAABOUoUAAAAoBQAAAHQHAAAAaGFzYXR0clKFAAAAUiAAAABSgwAAAFJyAAAAKAEAAABSHgAAACgAAAAAKAAAAABzUQAA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AGoGAGQFAHwAAIMCAAFXZAgAfAAAagcAagwAgwAAAVhkCABTKAkAAABzEQQAAFdhaXQgdW50aWwgdGhlIHRocmVhZCB0ZXJtaW5hdGVzLgoKICAgICAgICBUaGlzIGJsb2NrcyB0aGUgY2FsbGluZyB0aHJlYWQgdW50aWwgdGhlIHRocmVhZCB3aG9zZSBqb2luKCkgbWV0aG9kIGlzCiAgICAgICAgY2FsbGVkIHRlcm1pbmF0ZXMgLS0gZWl0aGVyIG5vcm1hbGx5IG9yIHRocm91Z2ggYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbgogICAgICAgIG9yIHVudGlsIHRoZSBvcHRpb25hbCB0aW1lb3V0IG9jY3Vycy4KCiAgICAgICAgV2hlbiB0aGUgdGltZW91dCBhcmd1bWVudCBpcyBwcmVzZW50IGFuZCBub3QgTm9uZSwgaXQgc2hvdWxkIGJlIGEKICAgICAgICBmbG9hdGluZyBwb2ludCBudW1iZXIgc3BlY2lmeWluZyBhIHRpbWVvdXQgZm9yIHRoZSBvcGVyYXRpb24gaW4gc2Vjb25kcwogICAgICAgIChvciBmcmFjdGlvbnMgdGhlcmVvZikuIEFzIGpvaW4oKSBhbHdheXMgcmV0dXJucyBOb25lLCB5b3UgbXVzdCBjYWxsCiAgICAgICAgaXNBbGl2ZSgpIGFmdGVyIGpvaW4oKSB0byBkZWNpZGUgd2hldGhlciBhIHRpbWVvdXQgaGFwcGVuZWQgLS0gaWYgdGhlCiAgICAgICAgdGhyZWFkIGlzIHN0aWxsIGFsaXZlLCB0aGUgam9pbigpIGNhbGwgdGltZWQgb3V0LgoKICAgICAgICBXaGVuIHRoZSB0aW1lb3V0IGFyZ3VtZW50IGlzIG5vdCBwcmVzZW50IG9yIE5vbmUsIHRoZSBvcGVyYXRpb24gd2lsbAogICAgICAgIGJsb2NrIHVudGlsIHRoZSB0aHJlYWQgdGVybWluYXRlcy4KCiAgICAgICAgQSB0aHJlYWQgY2FuIGJlIGpvaW4oKWVkIG1hbnkgdGltZXMuCgogICAgICAgIGpvaW4oKSByYWlzZXMgYSBSdW50aW1lRXJyb3IgaWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGpvaW4gdGhlIGN1cnJlbnQK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c2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy90aHJlYWRpbmcucHlSKgAAANUDAABzBAAAAAAJFQFjAQAAAAEAAAACAAAAQwAAAHMsAAAAfAAAagAAcxUAdAEAZAEAgwEAggEAfAAAagIAagMAgwAAbysAfAAAagQADFMoAgAAAHP2AAAAUmV0dXJuIHdoZXRoZXIgdGhlIHRocmVhZCBpcyBhbGl2ZS4KCiAgICAgICAgVGhpcyBtZXRob2QgcmV0dXJucyBUcnVlIGp1c3QgYmVmb3JlIHRoZSBydW4oKSBtZXRob2Qgc3RhcnRzIHVudGlsIGp1c3QKICAgICAgICBhZnRlciB0aGUgcnVuKCkgbWV0aG9kIHRlcm1pbmF0ZXMuIFRoZSBtb2R1bGUgZnVuY3Rpb24gZW51bWVyYXRlKCkKICAgICAgICByZXR1cm5zIGEgbGlzdCBvZiBhbGwgYWxpdmUgdGhyZWFkcy4KCiAgICAgICAgcxwAAABUaHJlYWQuX19pbml0X18oKSBub3QgY2FsbGVkKAUAAABShgAAAFJ6AAAAUoMAAABSdgAAAFKEAAAAKAEAAABSHgAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weXQHAAAAaXNBbGl2ZeEDAABzBAAAAAAIFQFjAQAAAAEAAAACAAAAQwAAAHMcAAAAfAAAagAAcxUAdAEAZAEAgwEAggEAfAAAagIAUygCAAAAc9wBAABBIGJvb2xlYW4gdmFsdWUgaW5kaWNhdGluZyB3aGV0aGVyIHRoaXMgdGhyZWFkIGlzIGEgZGFlbW9uIHRocmVhZCAoVHJ1ZSkgb3Igbm90IChGYWxzZSkuCgogICAgICAgIFRoaXMgbXVzdCBiZSBzZXQgYmVmb3JlIHN0YXJ0KCkgaXMgY2FsbGVkLCBvdGhlcndpc2UgUnVudGltZUVycm9yIGlzCiAgICAgICAgcmFpc2VkLiBJdHMgaW5pdGlhbCB2YWx1ZSBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgY3JlYXRpbmcgdGhy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dWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5nLnB5UoAAAAB1BAAAcwIAAAAAAWMCAAAAAgAAAAIAAABDAAAAcxYAAAB0AABzEgB0AQBkAQCDAQCCAQBkAABTKAIAAABOcxoAAABjYW5ub3Qgam9pbiBhIGR1bW15IHRocmVhZCgCAAAAUlIAAABSegAAACgCAAAAUh4AAABSWgAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVKvAAAAeAQAAHMCAAAAAAFOKAYAAABSLAAAAFItAAAAUiAAAABSgAAAAFIbAAAAUq8AAAAoAAAAACgAAAAAKAAAAABzUQAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3RocmVhZGluZy5weVLFAAAAZgQAAHMGAAAABgIJDQkDYwAAAAAAAAAABQAAAEMAAABzKwAAAHkPAHQAAHQBAIMAABlTV24VAAR0AgBrCgByJgABAQF0AwCDAABTWGQBAFMoAgAAAHPvAAAAUmV0dXJuIHRoZSBjdXJyZW50IFRocmVhZCBvYmplY3QsIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNhbGxlcidzIHRocmVhZCBvZiBjb250cm9sLgoKICAgIElmIHRoZSBjYWxsZXIncyB0aHJlYWQgb2YgY29udHJvbCB3YXMgbm90IGNyZWF0ZWQgdGhyb3VnaCB0aGUgdGhyZWFkaW5nCiAgICBtb2R1bGUsIGEgZHVtbXkgdGhyZWFkIG9iamVjdCB3aXRoIGxpbWl0ZWQgZnVuY3Rpb25hbGl0eSBpcyByZXR1cm5lZC4KCiAgICBOKAQAAABSIgAAAFIhAAAAUiQAAABSxQAAACgAAAAAKAAAAAAoAAAAAHNRAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvdGhyZWFkaW5n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