A/MNCmL5IVRjAAAAAAAAAAAJAAAAQAAAAHPOAwAAZAAAWgAAZAEAWgEAZAIAWgIAZAMAZAQAbAMAWgMAZAMAZAQAbAQAWgQAZAMAZAQAbAUAWgUAZAMAZAQAbAYAWgYAZAMAZAQAbAcAWgcAZAMAZAQAbAgAWggAZAMAZAQAbAkAWgkAZAMAZAQAbAoAWgoAZAMAZAQAbAsAWgsAZAMAZAUAbAwAbQ0AWg0AAWQDAGQGAGwOAG0PAFoPAAFkXgBcBABaEABaEQBaEgBaEwBkXwBcAwBaFABaFQBaFgBkYABaFwBkDwCEAABaGABkEACEAABaGQBkEQCEAABaGgBkEgCEAABaGwBkEwCEAABaHABlHQBlBQBkFACDAgByDQFkFQCEAABaHgBuCQBkFgCEAABaHgBlHQBlBQBkFwCDAgByMQFkGACEAABaHwBuCQBkGQCEAABaHwBkGgCEAABaIABkGwCEAABaIQBkHACEAABaIgBkHQCEAABaIwBkHgCEAABaJABkHwCEAABaJQBkIACEAABaJgBkIQCEAABaJwBkIgCEAABaKABkBABkIwCEAQBaKgBlDwBkJABkJQCDAgBaKwBkJgCEAABaLABkJwCEAABaLQBkKACEAABaLgBkKQCEAABaLwBkKgCEAABaMABkKwCEAABaMQBkLACEAABaMgBlDwBkLQBkLgCDAgBaMwBkLwCEAABaNABkMACEAABaNQBkMQCEAABaNgBkBABkMgCEAQBaNwBpAABaOABpAABaOQBkBABkMwCEAQBaOgBkNACEAABaOwBkNQCEAABaPABkNgBlPQBmAQBkNwCEAACDAABZWj4AZDgAZGEAZDkAhAAAgwAAWVo/AGQ6AIQAAFpAAGQ7AIQAAFpBAGQ8AIQAAFpCAGQ9AIQAAFpDAGQ+AGQ/AIQBAFpEAGUPAGRAAGRBAIMCAFpFAGRCAIQAAFpGAGUPAGRDAGREAIMCAFpHAGRFAIQAAFpIAGUPAGRGAGRHAIMCAFpJAGRIAIQAAFpKAGRJAIQAAFpLAGVLAGRKAIQBAFpMAGQEAGQEAGQEAGVNAGRLAIQAAGRMAIQAAGRNAIQAAGVLAGROAIQIAFpOAGVNAGRPAIQAAGRQAIQAAGRRAIQAAGVLAGRSAIQFAFpPAGRTAIQAAFpQAGUPAGRUAGRVAIMCAFpRAGQHAGRWAIQBAFpSAGRXAIQAAFpTAGQHAGRYAIQBAFpUAGQHAGRZAIQBAFpVAGUdAGUDAGRaAIMCAHKmA2UDAGpWAFpXAG4MAGQEAGRbAIQBAFpXAGQHAGRcAIQBAFpYAGQHAGRdAIQBAFpZAGQEAFMoYgAAAHOyBAAAR2V0IHVzZWZ1bCBpbmZvcm1hdGlvbiBmcm9tIGxpdmUgUHl0aG9uIG9iamVjdHMuCgpUaGlzIG1vZHVsZSBlbmNhcHN1bGF0ZXMgdGhlIGludGVyZmFjZSBwcm92aWRlZCBieSB0aGUgaW50ZXJuYWwgc3BlY2lhbAphdHRyaWJ1dGVzIChmdW5jXyosIGNvXyosIGltXyosIHRiXyosIGV0Yy4pIGluIGEgZnJpZW5kbGllciBmYXNoaW9uLgpJdCBhbHNvIHByb3ZpZGVzIHNvbWUgaGVscCBmb3IgZXhhbWluaW5nIHNvdXJjZSBjb2RlIGFuZCBjbGFzcyBsYXlvdXQuCgpIZXJlIGFyZSBzb21lIG9mIHRoZSB1c2VmdWwgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoaXMgbW9kdWxlOgoKICAgIGlzbW9kdWxlKCksIGlzY2xhc3MoKSwgaXNtZXRob2QoKSwgaXNmdW5jdGlvbigpLCBpc2dlbmVyYXRvcmZ1bmN0aW9uKCksCiAgICAgICAgaXNnZW5lcmF0b3IoKSwgaXN0cmFjZWJhY2soKSwgaXNmcmFtZSgpLCBpc2NvZGUoKSwgaXNidWlsdGluKCksCiAgICAgICAgaXNyb3V0aW5lKCkgLSBjaGVjayBvYmplY3QgdHlwZXMKICAgIGdldG1lbWJlcnMoKSAtIGdldCBtZW1iZXJzIG9mIGFuIG9iamVjdCB0aGF0IHNhdGlzZnkgYSBnaXZlbiBjb25kaXRpb24KCiAgICBnZXRmaWxlKCksIGdldHNvdXJjZWZpbGUoKSwgZ2V0c291cmNlKCkgLSBmaW5kIGFuIG9iamVjdCdzIHNvdXJjZSBjb2RlCiAgICBnZXRkb2MoKSwgZ2V0Y29tbWVudHMoKSAtIGdldCBkb2N1bWVudGF0aW9uIG9uIGFuIG9iamVjdAogICAgZ2V0bW9kdWxlKCkgLSBkZXRlcm1pbmUgdGhlIG1vZHVsZSB0aGF0IGFuIG9iamVjdCBjYW1lIGZyb20KICAgIGdldGNsYXNzdHJlZSgpIC0gYXJyYW5nZSBjbGFzc2VzIHNvIGFzIHRvIHJlcHJlc2VudCB0aGVpciBoaWVyYXJjaHkKCiAgICBnZXRhcmdzcGVjKCksIGdldGFyZ3ZhbHVlcygpLCBnZXRjYWxsYXJncygpIC0gZ2V0IGluZm8gYWJvdXQgZnVuY3Rpb24gYXJndW1lbnRzCiAgICBmb3JtYXRhcmdzcGVjKCksIGZvcm1hdGFyZ3ZhbHVlcygpIC0gZm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMKICAgIGdldG91dGVyZnJhbWVzKCksIGdldGlubmVyZnJhbWVzKCkgLSBnZXQgaW5mbyBhYm91dCBmcmFtZXMKICAgIGN1cnJlbnRmcmFtZSgpIC0gZ2V0IHRoZSBjdXJyZW50IHN0YWNrIGZyYW1lCiAgICBzdGFjaygpLCB0cmFjZSgpIC0gZ2V0IGluZm8gYWJvdXQgZnJhbWVzIG9uIHRoZSBzdGFjayBvciBpbiBhIHRyYWNlYmFjawpzGgAAAEthLVBpbmcgWWVlIDxwaW5nQGxmdy5vcmc+cwoAAAAxIEphbiAyMDAxaf////9OKAEAAAB0CgAAAGF0dHJnZXR0ZXIoAQAAAHQKAAAAbmFtZWR0dXBsZWkBAAAAaQIAAABpBAAAAGkIAAAAaRAAAABpIAAAAGlAAAAAaRQAAABjAQAAAAEAAAADAAAAQwAAAHMQAAAAdAAAfAAAdAEAagIAgwIAUygBAAAAc8EAAABSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgbW9kdWxlLgoKICAgIE1vZHVsZSBvYmplY3RzIHByb3ZpZGUgdGhlc2UgYXR0cmlidXRlczoKICAgICAgICBfX2RvY19fICAgICAgICAgZG9jdW1lbnRhdGlvbiBzdHJpbmcKICAgICAgICBfX2ZpbGVfXyAgICAgICAgZmlsZW5hbWUgKG1pc3NpbmcgZm9yIGJ1aWx0LWluIG1vZHVsZXMpKAMAAAB0CgAAAGlzaW5zdGFuY2V0BQAAAHR5cGVzdAoAAABNb2R1bGVUeXBlKAEAAAB0BgAAAG9iamVjdCgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQIAAAAaXNtb2R1bGUzAAAAcwIAAAAABmMBAAAAAQAAAAQAAABDAAAAcxYAAAB0AAB8AAB0AQB0AgBqAwBmAgCDAgBTKAEAAABzxgAAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBjbGFzcy4KCiAgICBDbGFzcyBvYmplY3RzIHByb3ZpZGUgdGhlc2UgYXR0cmlidXRlczoKICAgICAgICBfX2RvY19fICAgICAgICAgZG9jdW1lbnRhdGlvbiBzdHJpbmcKICAgICAgICBfX21vZHVsZV9fICAgICAgbmFtZSBvZiBtb2R1bGUgaW4gd2hpY2ggdGhpcyBjbGFzcyB3YXMgZGVmaW5lZCgEAAAAUgIAAAB0BAAAAHR5cGVSAwAAAHQJAAAAQ2xhc3NUeXBlKAEAAABSBQAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQHAAAAaXNjbGFzczsAAABzAgAAAAAGYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHOqAQAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBtZXRob2QuCgogICAgSW5zdGFuY2UgbWV0aG9kIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIF9fZG9jX18gICAgICAgICBkb2N1bWVudGF0aW9uIHN0cmluZwogICAgICAgIF9fbmFtZV9fICAgICAgICBuYW1lIHdpdGggd2hpY2ggdGhpcyBtZXRob2Qgd2FzIGRlZmluZWQKICAgICAgICBpbV9jbGFzcyAgICAgICAgY2xhc3Mgb2JqZWN0IGluIHdoaWNoIHRoaXMgbWV0aG9kIGJlbG9uZ3MKICAgICAgICBpbV9mdW5jICAgICAgICAgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5pbmcgaW1wbGVtZW50YXRpb24gb2YgbWV0aG9kCiAgICAgICAgaW1fc2VsZiAgICAgICAgIGluc3RhbmNlIHRvIHdoaWNoIHRoaXMgbWV0aG9kIGlzIGJvdW5kLCBvciBOb25lKAMAAABSAgAAAFIDAAAAdAoAAABNZXRob2RUeXBlKAEAAABSBQAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQIAAAAaXNtZXRob2RDAAAAcwIAAAAACWMBAAAAAQAAAAYAAABDAAAAc0QAAAB0AAB8AABkAQCDAgBvQwB0AAB8AABkAgCDAgAMb0MAdAEAfAAAgwEADG9DAHQCAHwAAIMBAAxvQwB0AwB8AACDAQAMUygDAAAAc5UCAABSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgbWV0aG9kIGRlc2NyaXB0b3IuCgogICAgQnV0IG5vdCBpZiBpc21ldGhvZCgpIG9yIGlzY2xhc3MoKSBvciBpc2Z1bmN0aW9uKCkgYXJlIHRydWUuCgogICAgVGhpcyBpcyBuZXcgaW4gUHl0aG9uIDIuMiwgYW5kLCBmb3IgZXhhbXBsZSwgaXMgdHJ1ZSBvZiBpbnQuX19hZGRfXy4KICAgIEFuIG9iamVjdCBwYXNzaW5nIHRoaXMgdGVzdCBoYXMgYSBfX2dldF9fIGF0dHJpYnV0ZSBidXQgbm90IGEgX19zZXRfXwogICAgYXR0cmlidXRlLCBidXQgYmV5b25kIHRoYXQgdGhlIHNldCBvZiBhdHRyaWJ1dGVzIHZhcmllcy4gIF9fbmFtZV9fIGlzCiAgICB1c3VhbGx5IHNlbnNpYmxlLCBhbmQgX19kb2NfXyBvZnRlbiBpcy4KCiAgICBNZXRob2RzIGltcGxlbWVudGVkIHZpYSBkZXNjcmlwdG9ycyB0aGF0IGFsc28gcGFzcyBvbmUgb2YgdGhlIG90aGVyCiAgICB0ZXN0cyByZXR1cm4gZmFsc2UgZnJvbSB0aGUgaXNtZXRob2RkZXNjcmlwdG9yKCkgdGVzdCwgc2ltcGx5IGJlY2F1c2UKICAgIHRoZSBvdGhlciB0ZXN0cyBwcm9taXNlIG1vcmUgLS0geW91IGNhbiwgZS5nLiwgY291bnQgb24gaGF2aW5nIHRoZQogICAgaW1fZnVuYyBhdHRyaWJ1dGUgKGV0Yykgd2hlbiBhbiBvYmplY3QgcGFzc2VzIGlzbWV0aG9kKCkudAcAAABfX2dldF9fdAcAAABfX3NldF9fKAQAAAB0BwAAAGhhc2F0dHJSCwAAAHQKAAAAaXNmdW5jdGlvblIJAAAAKAEAAABSBQAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQSAAAAaXNtZXRob2RkZXNjcmlwdG9yTgAAAHMKAAAAAA4PARABDQENAWMBAAAAAQAAAAQAAABDAAAAcxwAAAB0AAB8AABkAQCDAgBvGwB0AAB8AABkAgCDAgBTKAMAAABzgAEAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBkYXRhIGRlc2NyaXB0b3IuCgogICAgRGF0YSBkZXNjcmlwdG9ycyBoYXZlIGJvdGggYSBfX2dldF9fIGFuZCBhIF9fc2V0X18gYXR0cmlidXRlLiAgRXhhbXBsZXMgYXJlCiAgICBwcm9wZXJ0aWVzIChkZWZpbmVkIGluIFB5dGhvbikgYW5kIGdldHNldHMgYW5kIG1lbWJlcnMgKGRlZmluZWQgaW4gQykuCiAgICBUeXBpY2FsbHksIGRhdGEgZGVzY3JpcHRvcnMgd2lsbCBhbHNvIGhhdmUgX19uYW1lX18gYW5kIF9fZG9jX18gYXR0cmlidXRlcwogICAgKHByb3BlcnRpZXMsIGdldHNldHMsIGFuZCBtZW1iZXJzIGhhdmUgYm90aCBvZiB0aGVzZSBhdHRyaWJ1dGVzKSwgYnV0IHRoaXMKICAgIGlzIG5vdCBndWFyYW50ZWVkLlINAAAAUgwAAAAoAQAAAFIOAAAAKAEAAABSBQAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQQAAAAaXNkYXRhZGVzY3JpcHRvcmIAAABzAgAAAAAIdBQAAABNZW1iZXJEZXNjcmlwdG9yVHlwZWMBAAAAAQAAAAMAAABDAAAAcxAAAAB0AAB8AAB0AQBqAgCDAgBTKAEAAABzjwAAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBtZW1iZXIgZGVzY3JpcHRvci4KCiAgICAgICAgTWVtYmVyIGRlc2NyaXB0b3JzIGFyZSBzcGVjaWFsaXplZCBkZXNjcmlwdG9ycyBkZWZpbmVkIGluIGV4dGVuc2lvbgogICAgICAgIG1vZHVsZXMuKAMAAABSAgAAAFIDAAAAUhIAAAAoAQAAAFIFAAAAKAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dBIAAABpc21lbWJlcmRlc2NyaXB0b3JuAAAAcwIAAAAABWMBAAAAAQAAAAEAAABDAAAAcwQAAAB0AABTKAEAAABzjwAAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBtZW1iZXIgZGVzY3JpcHRvci4KCiAgICAgICAgTWVtYmVyIGRlc2NyaXB0b3JzIGFyZSBzcGVjaWFsaXplZCBkZXNjcmlwdG9ycyBkZWZpbmVkIGluIGV4dGVuc2lvbgogICAgICAgIG1vZHVsZXMuKAEAAAB0BQAAAEZhbHNlKAEAAABSBQAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weVITAAAAdgAAAHMCAAAAAAV0FAAAAEdldFNldERlc2NyaXB0b3JUeXBlYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHOPAAAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdldHNldCBkZXNjcmlwdG9yLgoKICAgICAgICBnZXRzZXQgZGVzY3JpcHRvcnMgYXJlIHNwZWNpYWxpemVkIGRlc2NyaXB0b3JzIGRlZmluZWQgaW4gZXh0ZW5zaW9uCiAgICAgICAgbW9kdWxlcy4oAwAAAFICAAAAUgMAAABSFQAAACgBAAAAUgUAAAAoAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0EgAAAGlzZ2V0c2V0ZGVzY3JpcHRvcn8AAABzAgAAAAAFYwEAAAABAAAAAQAAAEMAAABzBAAAAHQAAFMoAQAAAHOPAAAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdldHNldCBkZXNjcmlwdG9yLgoKICAgICAgICBnZXRzZXQgZGVzY3JpcHRvcnMgYXJlIHNwZWNpYWxpemVkIGRlc2NyaXB0b3JzIGRlZmluZWQgaW4gZXh0ZW5zaW9uCiAgICAgICAgbW9kdWxlcy4oAQAAAFIUAAAAKAEAAABSBQAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weVIWAAAAhwAAAHMCAAAAAAVjAQAAAAEAAAADAAAAQwAAAHMQAAAAdAAAfAAAdAEAagIAgwIAUygBAAAAcwECAABSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uLgoKICAgIEZ1bmN0aW9uIG9iamVjdHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIF9fZG9jX18gICAgICAgICBkb2N1bWVudGF0aW9uIHN0cmluZwogICAgICAgIF9fbmFtZV9fICAgICAgICBuYW1lIHdpdGggd2hpY2ggdGhpcyBmdW5jdGlvbiB3YXMgZGVmaW5lZAogICAgICAgIGZ1bmNfY29kZSAgICAgICBjb2RlIG9iamVjdCBjb250YWluaW5nIGNvbXBpbGVkIGZ1bmN0aW9uIGJ5dGVjb2RlCiAgICAgICAgZnVuY19kZWZhdWx0cyAgIHR1cGxlIG9mIGFueSBkZWZhdWx0IHZhbHVlcyBmb3IgYXJndW1lbnRzCiAgICAgICAgZnVuY19kb2MgICAgICAgIChzYW1lIGFzIF9fZG9jX18pCiAgICAgICAgZnVuY19nbG9iYWxzICAgIGdsb2JhbCBuYW1lc3BhY2UgaW4gd2hpY2ggdGhpcyBmdW5jdGlvbiB3YXMgZGVmaW5lZAogICAgICAgIGZ1bmNfbmFtZSAgICAgICAoc2FtZSBhcyBfX25hbWVfXykoAwAAAFICAAAAUgMAAAB0DAAAAEZ1bmN0aW9uVHlwZSgBAAAAUgUAAAAoAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2luc3BlY3QucHlSDwAAAI4AAABzAgAAAAALYwEAAAABAAAABQAAAEMAAABzLAAAAHQAAHQBAHwAAIMBAHMbAHQCAHwAAIMBAG8oAHwAAGoDAGoEAHQFAECDAQBTKAEAAABzuAAAAFJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSB1c2VyLWRlZmluZWQgZ2VuZXJhdG9yIGZ1bmN0aW9uLgoKICAgIEdlbmVyYXRvciBmdW5jdGlvbiBvYmplY3RzIHByb3ZpZGVzIHNhbWUgYXR0cmlidXRlcyBhcyBmdW5jdGlvbnMuCgogICAgU2VlIGhlbHAoaXNmdW5jdGlvbikgZm9yIGF0dHJpYnV0ZXMgbGlzdGluZy4oBgAAAHQEAAAAYm9vbFIPAAAAUgsAAAB0CQAAAGZ1bmNfY29kZXQIAAAAY29fZmxhZ3N0DAAAAENPX0dFTkVSQVRPUigBAAAAUgUAAAAoAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0EwAAAGlzZ2VuZXJhdG9yZnVuY3Rpb26bAAAAcwQAAAAABhsBYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHMfAwAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGdlbmVyYXRvci4KCiAgICBHZW5lcmF0b3Igb2JqZWN0cyBwcm92aWRlIHRoZXNlIGF0dHJpYnV0ZXM6CiAgICAgICAgX19pdGVyX18gICAgICAgIGRlZmluZWQgdG8gc3VwcG9ydCBpdGVyYXRpb24gb3ZlciBjb250YWluZXIKICAgICAgICBjbG9zZSAgICAgICAgICAgcmFpc2VzIGEgbmV3IEdlbmVyYXRvckV4aXQgZXhjZXB0aW9uIGluc2lkZSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yIHRvIHRlcm1pbmF0ZSB0aGUgaXRlcmF0aW9uCiAgICAgICAgZ2lfY29kZSAgICAgICAgIGNvZGUgb2JqZWN0CiAgICAgICAgZ2lfZnJhbWUgICAgICAgIGZyYW1lIG9iamVjdCBvciBwb3NzaWJseSBOb25lIG9uY2UgdGhlIGdlbmVyYXRvciBoYXMKICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBleGhhdXN0ZWQKICAgICAgICBnaV9ydW5uaW5nICAgICAgc2V0IHRvIDEgd2hlbiBnZW5lcmF0b3IgaXMgZXhlY3V0aW5nLCAwIG90aGVyd2lzZQogICAgICAgIG5leHQgICAgICAgICAgICByZXR1cm4gdGhlIG5leHQgaXRlbSBmcm9tIHRoZSBjb250YWluZXIKICAgICAgICBzZW5kICAgICAgICAgICAgcmVzdW1lcyB0aGUgZ2VuZXJhdG9yIGFuZCAic2VuZHMiIGEgdmFsdWUgdGhhdCBiZWNvbWVzCiAgICAgICAgICAgICAgICAgICAgICAgIHRoZSByZXN1bHQgb2YgdGhlIGN1cnJlbnQgeWllbGQtZXhwcmVzc2lvbgogICAgICAgIHRocm93ICAgICAgICAgICB1c2VkIHRvIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbnNpZGUgdGhlIGdlbmVyYXRvcigDAAAAUgIAAABSAwAAAHQNAAAAR2VuZXJhdG9yVHlwZSgBAAAAUgUAAAAoAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0CwAAAGlzZ2VuZXJhdG9ypAAAAHMCAAAAAA9jAQAAAAEAAAADAAAAQwAAAHMQAAAAdAAAfAAAdAEAagIAgwIAUygBAAAAc2IBAABSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGEgdHJhY2ViYWNrLgoKICAgIFRyYWNlYmFjayBvYmplY3RzIHByb3ZpZGUgdGhlc2UgYXR0cmlidXRlczoKICAgICAgICB0Yl9mcmFtZSAgICAgICAgZnJhbWUgb2JqZWN0IGF0IHRoaXMgbGV2ZWwKICAgICAgICB0Yl9sYXN0aSAgICAgICAgaW5kZXggb2YgbGFzdCBhdHRlbXB0ZWQgaW5zdHJ1Y3Rpb24gaW4gYnl0ZWNvZGUKICAgICAgICB0Yl9saW5lbm8gICAgICAgY3VycmVudCBsaW5lIG51bWJlciBpbiBQeXRob24gc291cmNlIGNvZGUKICAgICAgICB0Yl9uZXh0ICAgICAgICAgbmV4dCBpbm5lciB0cmFjZWJhY2sgb2JqZWN0IChjYWxsZWQgYnkgdGhpcyBsZXZlbCkoAwAAAFICAAAAUgMAAAB0DQAAAFRyYWNlYmFja1R5cGUoAQAAAFIFAAAAKAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dAsAAABpc3RyYWNlYmFja7UAAABzAgAAAAAIYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHN8AwAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGZyYW1lIG9iamVjdC4KCiAgICBGcmFtZSBvYmplY3RzIHByb3ZpZGUgdGhlc2UgYXR0cmlidXRlczoKICAgICAgICBmX2JhY2sgICAgICAgICAgbmV4dCBvdXRlciBmcmFtZSBvYmplY3QgKHRoaXMgZnJhbWUncyBjYWxsZXIpCiAgICAgICAgZl9idWlsdGlucyAgICAgIGJ1aWx0LWluIG5hbWVzcGFjZSBzZWVuIGJ5IHRoaXMgZnJhbWUKICAgICAgICBmX2NvZGUgICAgICAgICAgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gdGhpcyBmcmFtZQogICAgICAgIGZfZXhjX3RyYWNlYmFjayB0cmFjZWJhY2sgaWYgcmFpc2VkIGluIHRoaXMgZnJhbWUsIG9yIE5vbmUKICAgICAgICBmX2V4Y190eXBlICAgICAgZXhjZXB0aW9uIHR5cGUgaWYgcmFpc2VkIGluIHRoaXMgZnJhbWUsIG9yIE5vbmUKICAgICAgICBmX2V4Y192YWx1ZSAgICAgZXhjZXB0aW9uIHZhbHVlIGlmIHJhaXNlZCBpbiB0aGlzIGZyYW1lLCBvciBOb25lCiAgICAgICAgZl9nbG9iYWxzICAgICAgIGdsb2JhbCBuYW1lc3BhY2Ugc2VlbiBieSB0aGlzIGZyYW1lCiAgICAgICAgZl9sYXN0aSAgICAgICAgIGluZGV4IG9mIGxhc3QgYXR0ZW1wdGVkIGluc3RydWN0aW9uIGluIGJ5dGVjb2RlCiAgICAgICAgZl9saW5lbm8gICAgICAgIGN1cnJlbnQgbGluZSBudW1iZXIgaW4gUHl0aG9uIHNvdXJjZSBjb2RlCiAgICAgICAgZl9sb2NhbHMgICAgICAgIGxvY2FsIG5hbWVzcGFjZSBzZWVuIGJ5IHRoaXMgZnJhbWUKICAgICAgICBmX3Jlc3RyaWN0ZWQgICAgMCBvciAxIGlmIGZyYW1lIGlzIGluIHJlc3RyaWN0ZWQgZXhlY3V0aW9uIG1vZGUKICAgICAgICBmX3RyYWNlICAgICAgICAgdHJhY2luZyBmdW5jdGlvbiBmb3IgdGhpcyBmcmFtZSwgb3IgTm9uZSgDAAAAUgIAAABSAwAAAHQJAAAARnJhbWVUeXBlKAEAAABSBQAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQHAAAAaXNmcmFtZb8AAABzAgAAAAAQYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHN1AwAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGNvZGUgb2JqZWN0LgoKICAgIENvZGUgb2JqZWN0cyBwcm92aWRlIHRoZXNlIGF0dHJpYnV0ZXM6CiAgICAgICAgY29fYXJnY291bnQgICAgIG51bWJlciBvZiBhcmd1bWVudHMgKG5vdCBpbmNsdWRpbmcgKiBvciAqKiBhcmdzKQogICAgICAgIGNvX2NvZGUgICAgICAgICBzdHJpbmcgb2YgcmF3IGNvbXBpbGVkIGJ5dGVjb2RlCiAgICAgICAgY29fY29uc3RzICAgICAgIHR1cGxlIG9mIGNvbnN0YW50cyB1c2VkIGluIHRoZSBieXRlY29kZQogICAgICAgIGNvX2ZpbGVuYW1lICAgICBuYW1lIG9mIGZpbGUgaW4gd2hpY2ggdGhpcyBjb2RlIG9iamVjdCB3YXMgY3JlYXRlZAogICAgICAgIGNvX2ZpcnN0bGluZW5vICBudW1iZXIgb2YgZmlyc3QgbGluZSBpbiBQeXRob24gc291cmNlIGNvZGUKICAgICAgICBjb19mbGFncyAgICAgICAgYml0bWFwOiAxPW9wdGltaXplZCB8IDI9bmV3bG9jYWxzIHwgND0qYXJnIHwgOD0qKmFyZwogICAgICAgIGNvX2xub3RhYiAgICAgICBlbmNvZGVkIG1hcHBpbmcgb2YgbGluZSBudW1iZXJzIHRvIGJ5dGVjb2RlIGluZGljZXMKICAgICAgICBjb19uYW1lICAgICAgICAgbmFtZSB3aXRoIHdoaWNoIHRoaXMgY29kZSBvYmplY3Qgd2FzIGRlZmluZWQKICAgICAgICBjb19uYW1lcyAgICAgICAgdHVwbGUgb2YgbmFtZXMgb2YgbG9jYWwgdmFyaWFibGVzCiAgICAgICAgY29fbmxvY2FscyAgICAgIG51bWJlciBvZiBsb2NhbCB2YXJpYWJsZXMKICAgICAgICBjb19zdGFja3NpemUgICAgdmlydHVhbCBtYWNoaW5lIHN0YWNrIHNwYWNlIHJlcXVpcmVkCiAgICAgICAgY29fdmFybmFtZXMgICAgIHR1cGxlIG9mIG5hbWVzIG9mIGFyZ3VtZW50cyBhbmQgbG9jYWwgdmFyaWFibGVzKAMAAABSAgAAAFIDAAAAdAgAAABDb2RlVHlwZSgBAAAAUgUAAAAoAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0BgAAAGlzY29kZdEAAABzAgAAAAAQYwEAAAABAAAAAwAAAEMAAABzEAAAAHQAAHwAAHQBAGoCAIMCAFMoAQAAAHMsAQAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZC4KCiAgICBCdWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgcHJvdmlkZSB0aGVzZSBhdHRyaWJ1dGVzOgogICAgICAgIF9fZG9jX18gICAgICAgICBkb2N1bWVudGF0aW9uIHN0cmluZwogICAgICAgIF9fbmFtZV9fICAgICAgICBvcmlnaW5hbCBuYW1lIG9mIHRoaXMgZnVuY3Rpb24gb3IgbWV0aG9kCiAgICAgICAgX19zZWxmX18gICAgICAgIGluc3RhbmNlIHRvIHdoaWNoIGEgbWV0aG9kIGlzIGJvdW5kLCBvciBOb25lKAMAAABSAgAAAFIDAAAAdBMAAABCdWlsdGluRnVuY3Rpb25UeXBlKAEAAABSBQAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQJAAAAaXNidWlsdGlu4wAAAHMCAAAAAAdjAQAAAAEAAAAFAAAAQwAAAHMuAAAAdAAAfAAAgwEAcC0AdAEAfAAAgwEAcC0AdAIAfAAAgwEAcC0AdAMAfAAAgwEAUygBAAAAczwAAABSZXR1cm4gdHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFueSBraW5kIG9mIGZ1bmN0aW9uIG9yIG1ldGhvZC4oBAAAAFImAAAAUg8AAABSCwAAAFIQAAAAKAEAAABSBQAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQJAAAAaXNyb3V0aW5l7AAAAHMIAAAAAAIMAQwBDAFjAQAAAAEAAAAEAAAAQwAAAHMgAAAAdAAAdAEAfAAAdAIAgwIAbxwAfAAAagMAdAQAQIMBAFMoAQAAAHM6AAAAUmV0dXJuIHRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhYnN0cmFjdCBiYXNlIGNsYXNzIChBQkMpLigFAAAAUhgAAABSAgAAAFIHAAAAdAkAAABfX2ZsYWdzX190EwAAAFRQRkxBR1NfSVNfQUJTVFJBQ1QoAQAAAFIFAAAAKAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dAoAAABpc2Fic3RyYWN08wAAAHMCAAAAAAJjAgAAAAUAAAAGAAAAQwAAAHN+AAAAZwAAfQIAeGcAdAAAfAAAgwEARF1ZAH0DAHkTAHQBAHwAAHwDAIMCAH0EAFduFAAEdAIAawoAckIAAQEBcRMAbgEAWHwBAAxzVgB8AQB8BACDAQByEwB8AgBqAwB8AwB8BABmAgCDAQABcRMAcRMAV3wCAGoEAIMAAAF8AgBTKAEAAABzigAAAFJldHVybiBhbGwgbWVtYmVycyBvZiBhbiBvYmplY3QgYXMgKG5hbWUsIHZhbHVlKSBwYWlycyBzb3J0ZWQgYnkgbmFtZS4KICAgIE9wdGlvbmFsbHksIG9ubHkgcmV0dXJuIG1lbWJlcnMgdGhhdCBzYXRpc2Z5IGEgZ2l2ZW4gcHJlZGljYXRlLigFAAAAdAMAAABkaXJ0BwAAAGdldGF0dHJ0DgAAAEF0dHJpYnV0ZUVycm9ydAYAAABhcHBlbmR0BAAAAHNvcnQoBQAAAFIFAAAAdAkAAABwcmVkaWNhdGV0BwAAAHJlc3VsdHN0AwAAAGtleXQFAAAAdmFsdWUoAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0CgAAAGdldG1lbWJlcnP3AAAAcxQAAAAAAwYBEwEDARMBDQEHARMBGgEKAXQJAAAAQXR0cmlidXRlcx8AAABuYW1lIGtpbmQgZGVmaW5pbmdfY2xhc3Mgb2JqZWN0YwEAAAAKAAAACAAAAEMAAABzYgEAAHQAAHwAAIMBAH0BAHQBAHwAAIMBAH0CAGcAAH0DAHg9AXwCAERdNQF9BABkBwB9BQB4XAB8AABmAQB8AQAXRF0sAH0GAHwEAHwGAGoDAGsGAHI/AHwGAGoDAHwEABl9BwB8BgB9BQBQcT8AcT8AV3QEAHwAAHwEAIMCAH0HAHQEAHwHAGQBAHwFAIMDAH0FAHQFAHwHAHQGAIMCAHKoAGQCAH0IAG6WAHQFAHwHAHQHAIMCAHLAAGQDAH0IAG5+AHQFAHwHAHQIAIMCAHLYAGQEAH0IAG5mAHQJAHwHAIMBAHLtAGQFAH0IAG5RAHQKAHwHAIMBAHICAWQGAH0IAG48AHQEAHwAAHwEAIMCAH0JAHQLAHwJAIMBAHMpAXQJAHwJAIMBAHIyAWQFAH0IAG4GAGQGAH0IAHwJAH0HAHwDAGoMAHQNAHwEAHwIAHwFAHwHAIMEAIMBAAFxJQBXfAMAUygIAAAAc4EDAABSZXR1cm4gbGlzdCBvZiBhdHRyaWJ1dGUtZGVzY3JpcHRvciB0dXBsZXMuCgogICAgRm9yIGVhY2ggbmFtZSBpbiBkaXIoY2xzKSwgdGhlIHJldHVybiBsaXN0IGNvbnRhaW5zIGEgNC10dXBsZQogICAgd2l0aCB0aGVzZSBlbGVtZW50czoKCiAgICAgICAgMC4gVGhlIG5hbWUgKGEgc3RyaW5nKS4KCiAgICAgICAgMS4gVGhlIGtpbmQgb2YgYXR0cmlidXRlIHRoaXMgaXMsIG9uZSBvZiB0aGVzZSBzdHJpbmdzOgogICAgICAgICAgICAgICAnY2xhc3MgbWV0aG9kJyAgICBjcmVhdGVkIHZpYSBjbGFzc21ldGhvZCgpCiAgICAgICAgICAgICAgICdzdGF0aWMgbWV0aG9kJyAgIGNyZWF0ZWQgdmlhIHN0YXRpY21ldGhvZCgpCiAgICAgICAgICAgICAgICdwcm9wZXJ0eScgICAgICAgIGNyZWF0ZWQgdmlhIHByb3BlcnR5KCkKICAgICAgICAgICAgICAgJ21ldGhvZCcgICAgICAgICAgYW55IG90aGVyIGZsYXZvciBvZiBtZXRob2QKICAgICAgICAgICAgICAgJ2RhdGEnICAgICAgICAgICAgbm90IGEgbWV0aG9kCgogICAgICAgIDIuIFRoZSBjbGFzcyB3aGljaCBkZWZpbmVkIHRoaXMgYXR0cmlidXRlIChhIGNsYXNzKS4KCiAgICAgICAgMy4gVGhlIG9iamVjdCBhcyBvYnRhaW5lZCBkaXJlY3RseSBmcm9tIHRoZSBkZWZpbmluZyBjbGFzcydzCiAgICAgICAgICAgX19kaWN0X18sIG5vdCB2aWEgZ2V0YXR0ci4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yCiAgICAgICAgICAgZGF0YSBhdHRyaWJ1dGVzOiAgQy5kYXRhIGlzIGp1c3QgYSBkYXRhIG9iamVjdCwgYnV0CiAgICAgICAgICAgQy5fX2RpY3RfX1snZGF0YSddIG1heSBiZSBhIGRhdGEgZGVzY3JpcHRvciB3aXRoIGFkZGl0aW9uYWwKICAgICAgICAgICBpbmZvLCBsaWtlIGEgX19kb2NfXyBzdHJpbmcuCiAgICB0DAAAAF9fb2JqY2xhc3NfX3MNAAAAc3RhdGljIG1ldGhvZHMMAAAAY2xhc3MgbWV0aG9kdAgAAABwcm9wZXJ0eXQGAAAAbWV0aG9kdAQAAABkYXRhTigOAAAAdAYAAABnZXRtcm9SKwAAAHQEAAAATm9uZXQIAAAAX19kaWN0X19SLAAAAFICAAAAdAwAAABzdGF0aWNtZXRob2R0CwAAAGNsYXNzbWV0aG9kUjcAAABSEAAAAFIRAAAAUgsAAABSLgAAAFI1AAAAKAoAAAB0AwAAAGNsc3QDAAAAbXJvdAUAAABuYW1lc3QGAAAAcmVzdWx0dAQAAABuYW1ldAcAAABob21lY2xzdAQAAABiYXNldAMAAABvYmp0BAAAAGtpbmR0DwAAAG9ial92aWFfZ2V0YXR0cigAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQUAAAAY2xhc3NpZnlfY2xhc3NfYXR0cnMHAQAAczwAAAAAGAwBDAEGAQ0HBgEUAQ8BDQEGAQgCDwESAw8BCQEPAQkBDwEJAQwBCQEMAQkCDwEMAQwBCQIGAQYCIAJjAgAAAAMAAAAEAAAAQwAAAHNCAAAAfAAAfAEAawYAchAAZAAAU3wBAGoAAHwAAIMBAAF4HgB8AABqAQBEXRMAfQIAdAIAfAIAfAEAgwIAAXEnAFdkAABTKAEAAABOKAMAAABSLgAAAHQJAAAAX19iYXNlc19fdAwAAABfc2VhcmNoYmFzZXMoAwAAAFI/AAAAdAUAAABhY2N1bVJFAAAAKAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5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biBsaXN0IG9mIGxpbmVzLigIAAAAUrUAAABSwAAAAHQEAAAAaXRlcnQEAAAAbmV4dFLNAAAAUrQAAAB0EAAAAEluZGVudGF0aW9uRXJyb3JSuQAAACgCAAAAUmMAAAB0CwAAAGJsb2NrZmluZGVyKAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dAgAAABnZXRibG9ja6ECAABzDAAAAAACCQEDASABEwEEAWMBAAAAAwAAAAMAAABDAAAAc0QAAAB0AAB8AACDAQBcAgB9AQB9AgB0AQB8AACDAQByKAB8AQBkAQBmAgBTdAIAfAEAfAIAH4MBAHwCAGQCABdmAgBTZAMAUygEAAAAc6MBAABSZXR1cm4gYSBsaXN0IG9mIHNvdXJjZSBsaW5lcyBhbmQgc3RhcnRpbmcgbGluZSBudW1iZXIgZm9yIGFuIG9iamVjdC4KCiAgICBUaGUgYXJndW1lbnQgbWF5IGJlIGEgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCBmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwKICAgIG9yIGNvZGUgb2JqZWN0LiAgVGhlIHNvdXJjZSBjb2RlIGlzIHJldHVybmVkIGFzIGEgbGlzdCBvZiB0aGUgbGluZXMKICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG9iamVjdCBhbmQgdGhlIGxpbmUgbnVtYmVyIGluZGljYXRlcyB3aGVyZSBpbiB0aGUKICAgIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoZSBmaXJzdCBsaW5lIG9mIGNvZGUgd2FzIGZvdW5kLiAgQW4gSU9FcnJvciBpcwogICAgcmFpc2VkIGlmIHRoZSBzb3VyY2UgY29kZSBjYW5ub3QgYmUgcmV0cmlldmVkLmkAAAAAaQEAAABOKAMAAABSqwAAAFIGAAAAUtIAAAAoAwAAAFIFAAAAUmMAAABSqgAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNo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dWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dAoAAABnZXRhcmdzcGVjJAMAAHMMAAAAAAkMAQwBDAEYARgBdAcAAABBcmdJbmZvcxwAAABhcmdzIHZhcmFyZ3Mga2V5d29yZHMgbG9jYWxzYwEAAAAEAAAABQAAAEMAAABzLgAAAHQAAHwAAGoBAIMBAFwDAH0BAH0CAH0DAHQCAHwBAHwCAHwDAHwAAGoDAIMEAFMoAQAAAHNXAQAAR2V0IGluZm9ybWF0aW9uIGFib3V0IGFyZ3VtZW50cyBwYXNzZWQgaW50byBhIHBhcnRpY3VsYXIgZnJhbWUuCgogICAgQSB0dXBsZSBvZiBmb3VyIHRoaW5ncyBpcyByZXR1cm5lZDogKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBsb2NhbHMpLgogICAgJ2FyZ3MnIGlzIGEgbGlzdCBvZiB0aGUgYXJndW1lbnQgbmFtZXMgKGl0IG1heSBjb250YWluIG5lc3RlZCBsaXN0cykuCiAgICAndmFyYXJncycgYW5kICd2YXJrdycgYXJlIHRoZSBuYW1lcyBvZiB0aGUgKiBhbmQgKiogYXJndW1lbnRzIG9yIE5vbmUuCiAgICAnbG9jYWxzJyBpcyB0aGUgbG9jYWxzIGRpY3Rpb25hcnkgb2YgdGhlIGdpdmVuIGZyYW1lLigEAAAAUvYAAABScAAAAFL7AAAAdAgAAABmX2xvY2FscygEAAAAdAUAAABmcmFtZVLtAAAAUvQAAABS9QAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQMAAAAZ2V0YXJndmFsdWVzNgMAAHMEAAAAAAcYAWMBAAAAAQAAAAQAAABDAAAAcz4AAAB0AAB8AACDAQBkAQBrAgByIgBkAgB8AABkAwAZF2QEABdTZAIAdAEAagIAfAAAZAUAgwIAF2QGABdT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Z3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cykuICBUaGUKICAgIG90aGVyIGZvdXIgYXJndW1lbnRzIGFyZSB0aGUgY29ycmVzcG9uZGluZyBvcHRpb25hbCBmb3JtYXR0aW5nIGZ1bmN0aW9ucwogICAgdGhhdCBhcmUgY2FsbGVkIHRvIHR1cm4gbmFtZXMgYW5kIHZhbHVlcyBpbnRvIHN0cmluZ3MuICBUaGUgbmludGgKICAgIGFyZ3VtZW50IGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRvIGZvcm1hdCB0aGUgc2VxdWVuY2Ugb2YgYXJndW1lbnRzLlL/AAAAcwIAAAAsIFIAAQAATigHAAAAUlEAAAB0CQAAAGVudW1lcmF0ZVIDAQAAUi4AAABSOwAAAFJPAAAAUmIAAAAoDgAAAFLtAAAAUvQAAABS9QAAAHQIAAAAZGVmYXVsdHN0CQAAAGZvcm1hdGFyZ3QNAAAAZm9ybWF0dmFyYXJnc3QLAAAAZm9ybWF0dmFya3d0CwAAAGZvcm1hdHZhbHVlUmIAAAB0BQAAAHNwZWNzdAwAAABmaXJzdGRlZmF1bHRSZwAAAHQDAAAAYXJndAQAAABzcGVjKAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dA0AAABmb3JtYXRhcmdzcGVjTQMAAHMaAAAAAAwGAQYBGQEZARIBEgEbAREBDAEWAQwBFgFjAQAAAAEAAAACAAAAQwAAAHMIAAAAZAEAfAAAF1MoAgAAAE5SBwEAACgAAAAAKAEAAABSQwAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weVJ1AAAAaQMAAHMAAAAAYwEAAAABAAAAAgAAAEMAAABzCAAAAGQBAHwAABdTKAIAAABOcwIAAAAqKigA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AFKLAAAAUnIAAABSqwAAAFKhAAAAUjsAAAB0AwAAAG1heFJfAAAAUlEAAABSNQEAAFJwAAAAdAcAAABjb19uYW1lKAgAAABS/QAAAHQHAAAAY29udGV4dHQGAAAAbGluZW5vUnwAAABSrwAAAFJjAAAAUqoAAAB0BQAAAGluZGV4KAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9pbnNwZWN0LnB5dAwAAABnZXRmcmFtZWluZm/cAwAAcyYAAAAACAwBCQEMAgkBDAEYAhgBDAESAQMBFgENAQ4CDwEiAREBEQIKAmMBAAAAAQAAAAEAAABDAAAAcwcAAAB8AABqAABTKAEAAABzQwAAAEdldCB0aGUgbGluZSBudW1iZXIgZnJvbSBhIGZyYW1lIG9iamVjdCwgYWxsb3dpbmcgZm9yIG9wdGltaXphdGlvbi4oAQAAAFI3AQAAKAEAAABS/QAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQJAAAAZ2V0bGluZW5v/QMAAHMCAAAAAANjAgAAAAMAAAAFAAAAQwAAAHM9AAAAZwAAfQIAeDAAfAAAcjgAfAIAagAAfAAAZgEAdAEAfAAAfAEAgwIAF4MBAAF8AABqAgB9AABxCQBXfAIAUygBAAAAc9AAAABHZXQgYSBsaXN0IG9mIHJlY29yZHMgZm9yIGEgZnJhbWUgYW5kIGFsbCBoaWdoZXIgKGNhbGxpbmcpIGZyYW1lcy4KCiAgICBFYWNoIHJlY29yZCBjb250YWlucyBhIGZyYW1lIG9iamVjdCwgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBmdW5jdGlvbgogICAgbmFtZSwgYSBsaXN0IG9mIGxpbmVzIG9mIGNvbnRleHQsIGFuZCBpbmRleCB3aXRoaW4gdGhlIGNvbnRleHQuKAMAAABSLgAAAFI9AQAAdAYAAABmX2JhY2soAwAAAFL9AAAAUjoBAAB0CQAAAGZyYW1lbGlzdCgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvaW5zcGVjdC5weXQOAAAAZ2V0b3V0ZXJmcmFtZXMCBAAAcwoAAAAABQYBCQEdAQ0BYwIAAAADAAAABQAAAEMAAABzQAAAAGcAAH0CAHgzAHwAAHI7AHwCAGoAAHwAAGoBAGYBAHQCAHwAAHwBAIMCABeDAQABfAAAagMAfQAAcQkAV3wCAFMoAQAAAHPRAAAAR2V0IGEgbGlzdCBvZiByZWNvcmRzIGZvciBhIHRyYWNlYmFjaydzIGZyYW1lIGFuZCBhbGwgbG93ZXIgZnJhbWVzLgoKICAgIEVhY2ggcmVjb3JkIGNvbnRhaW5zIGEgZnJhbWUgb2JqZWN0LCBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGZ1bmN0aW9uCiAgICBuYW1lLCBhIGxpc3Qgb2YgbGluZXMgb2YgY29udGV4dCwgYW5kIGluZGV4IHdpdGhpbiB0aGUgY29udGV4dC4oBAAAAFIuAAAAUm8AAABSPQEAAHQHAAAAdGJfbmV4dCgDAAAAdAIAAAB0YlI6AQAAUkABAAAoAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L2luc3BlY3QucHl0DgAAAGdldGlubmVyZnJhbWVzDQQAAHMKAAAAAAUGAQkBIAENAXQJAAAAX2dldGZyYW1lYwEAAAABAAAAAQAAAEMAAABzBAAAAGQAAFMoAQAAAE4oAQAAAFI7AAAAKAEAAAB0AQAAAF8oAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2Mt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