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WgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3RocmVhZGluZy5weXQDAAAAcnVuJwAAAHMmAAAAAAEQAQYBAwEWAgoBCgENAQYBFQElAg0BBgETAgoBDQEfAQYBAwEoBAAAAFIMAAAAUg0AAABSCAAAAFIcAAAAKAAAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF90aHJlYWRpbmcucHlSDgAAAB8AAABzBAAAAAYBCQd0DAAAAEJhc2VUZXN0Q2FzZWMAAAAAAAAAAAEAAABCAAAAcxoAAABlAABaAQBkAACEAABaAgBkAQCEAABaAwBSUygCAAAAYwEAAAABAAAAAgAAAEMAAABzFgAAAHQAAGoBAGoCAIMAAHwAAF8DAGQAAFMoAQAAAE4oBAAAAHQEAAAAdGVzdHQMAAAAdGVzdF9zdXBwb3J0dA8AAAB0aHJlYWRpbmdfc2V0dXB0CAAAAF90aHJlYWRzKAEAAABSBwAAACgAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3RocmVhZGluZy5weXQFAAAAc2V0VXBAAAAAcwIAAAAAAWMBAAAAAQAAAAIAAABDAAAAcyQAAAB0AABqAQBqAgB8AABqAwCMAAABdAAAagEAagQAgwAAAWQAAFMoAQAAAE4oBQAAAFIeAAAAUh8AAAB0EQAAAHRocmVhZGluZ19jbGVhbnVwUiEAAAB0DQAAAHJlYXBfY2hpbGRyZW4oAQAAAFIHAAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dAgAAAB0ZWFyRG93bkMAAABzBAAAAAABEwEoBAAAAFIMAAAAUg0AAABSIgAAAFIlAAAAKAAAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF90aHJlYWRpbmcucHlSHQAAAD8AAABzBAAAAAYBCQN0CwAAAFRocmVhZFRlc3RzYwAAAAAAAAAABAAAAEIAAABzmAAAAGUAAFoBAGQAAIQAAFoCAGQBAIQAAFoDAGQCAIQAAFoEAGQDAIQAAFoFAGQEAIQAAFoGAGQFAIQAAFoHAGQGAIQAAFoIAGQHAIQAAFoJAGQIAIQAAFoKAGQJAIQAAFoLAGQKAIQAAFoMAGQLAIQAAFoNAGUOAGoPAGUQAGURAGQMAIMCAGQNAIMCAGQOAIQAAIMBAFoSAFJTKA8AAABjAQAAAAgAAAAHAAAAQwAAAHNfAQAAZAEAfQEAdAAAagEAZAIAZAMAgwABfQIAdAAAagIAgwAAfQMAdAMAgwAAfQQAZwAAfQUAeHkAdAQAfAEAgwEARF1rAH0GAHQFAGQEAHwGABZ8AAB8AgB8AwB8BACDBQB9BwB8BQBqBgB8BwCDAQABfAAAagcAfAcAaggAZAAAgwIAAXwAAGoKAHQLAGoMAGQFAHQNAHwHAIMBAIMCAIMBAAF8BwBqDgCDAAABcUAAV3QPAHK9AGQGAEdIbgAAeHcAfAUARF1vAH0HAHwHAGoQAHwBAIMBAAF8AABqCgB8BwBqEQCDAAAMgwEAAXwAAGoSAHwHAGoIAGQHAIMCAAF8AABqEwB8BwBqCABkAABrCACDAQABfAAAagoAdAsAagwAZAgAdA0AfAcAgwEAgwIAgwEAAXHEAFd0DwByRQFkCQBHSG4AAHwAAGoHAHwEAGoUAIMAAGQHAIMCAAFkAABTKAoAAABOaQoAAABSBgAAAGkDAAAAcwsAAAA8dGhyZWFkICVkPnMbAAAAPFRlc3RUaHJlYWRcKC4qLCBpbml0aWFsXCk+cyEAAAB3YWl0aW5nIGZvciBhbGwgdGFza3MgdG8gY29tcGxldGVpAAAAAHMdAAAAPFRlc3RUaHJlYWRcKC4qLCBcdysgLT9cZCtcKT5zDgAAAGFsbCB0YXNrcyBkb25lKBUAAABSAwAAAHQQAAAAQm91bmRlZFNlbWFwaG9yZXQFAAAAUkxvY2tSBQAAAHQFAAAAcmFuZ2VSDgAAAHQGAAAAYXBwZW5kdAsAAABhc3NlcnRFcXVhbHQFAAAAaWRlbnR0BAAAAE5vbmVSGAAAAHQCAAAAcmV0BQAAAG1hdGNodAQAAAByZXBydAUAAABzdGFydFIAAAAAdAQAAABqb2ludAgAAABpc19hbGl2ZXQOAAAAYXNzZXJ0Tm90RXF1YWx0CwAAAGFzc2VydEZhbHNlUgsAAAAoCAAAAFIHAAAAdAgAAABOVU1UQVNLU1ISAAAAUhMAAAB0CgAAAG51bXJ1bm5pbmd0BwAAAHRocmVhZHN0AQAAAGl0AQAAAHQoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF90aHJlYWRpbmcucHl0EAAAAHRlc3RfdmFyaW91c19vcHNMAAAAcywAAAAAAwYDEgEMAQkCBgITARwBDQETAR8BDgIGAQgBDQENARQBEwEWASMBBgEIAWMBAAAAAgAAAAMAAAADAAAAc4MAAAB8AABqAAB0AQBqAgCDAABqAwBkAABrCACDAQABhwAAhwEAZgIAZAEAhgAAfQEAdAEAagUAgwAAiQAAZwAAiQEAdAYAagcAfAEAZAMAgwIAAYgAAGoIAIMAAAF8AABqAACIAQBkAgAZZAAAawgAgwEAAXQBAGoJAIgBAGQCABk9ZAAAUygEAAAATmMAAAAAAAAAAAIAAAATAAAAcyQAAACIAQBqAAB0AQBqAgCDAABqAwCDAQABiAAAagQAgwAAAWQAAFMoAQAAAE4oBQAAAFIqAAAAUgMAAAB0DQAAAGN1cnJlbnRUaHJlYWRSLAAAAHQDAAAAc2V0KAAAAAAoAgAAAFIWAAAAUiwAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dAEAAABmbgAAAHMEAAAAAAEWAWkAAAAAKAAAAAAoCgAAAFI1AAAAUgMAAABSPAAAAFIsAAAAUi0AAAB0BQAAAEV2ZW50UgIAAAB0EAAAAHN0YXJ0X25ld190aHJlYWR0BAAAAHdhaXR0BwAAAF9hY3RpdmUoAgAAAFIHAAAAUj4AAAAoAAAAACgCAAAAUhYAAABSLAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dCIAAAB0ZXN0X2lkZW50X29mX25vX3RocmVhZGluZ190aHJlYWRzawAAAHMQAAAAAAIcARIDDAEGARABCgEXAmMBAAAAAQAAAAUAAABDAAAAc2AAAAB0AAByDgBkAQBHSG4AAHkRAHQBAGoCAGQCAIMBAAFXbiMABHQDAGoEAGsKAHJEAAEBAXQAAHJAAGQDAEdIbgAAZAAAU1h8AABqBQCDAAABdAEAagIAZAQAgwEAAWQAAFMoBQAAAE5zHwAAAHdpdGggMjU2a0IgdGhyZWFkIHN0YWNrIHNpemUuLi5pAAAEAHM0AAAAcGxhdGZvcm0gZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2luZyB0aHJlYWQgc3RhY2sgc2l6ZWkAAAAAKAYAAABSAAAAAFIDAAAAdAoAAABzdGFja19zaXplUgIAAAB0BQAAAGVycm9yUjsAAAAoAQAAAFIHAAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dBwAAAB0ZXN0X3ZhcmlvdXNfb3BzX3NtYWxsX3N0YWNregAAAHMUAAAAAAEGAQgBAwERARABBgEIAQUBCgFjAQAAAAEAAAAFAAAAQwAAAHNgAAAAdAAAcg4AZAEAR0huAAB5EQB0AQBqAgBkAgCDAQABV24jAAR0AwBqBABrCgByRAABAQF0AAByQABkAwBHSG4AAGQAAFNYfAAAagUAgwAAAXQBAGoCAGQEAIMBAAFkAABTKAUAAABOcx0AAAB3aXRoIDFNQiB0aHJlYWQgc3RhY2sgc2l6ZS4uLmkAABAAczQAAABwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IGNoYW5naW5nIHRocmVhZCBzdGFjayBzaXplaQAAAAAoBgAAAFIAAAAAUgMAAABSRAAAAFICAAAAUkUAAABSOwAAACgBAAAAUgcAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF90aHJlYWRpbmcucHl0HAAAAHRlc3RfdmFyaW91c19vcHNfbGFyZ2Vfc3RhY2uHAAAAcxQAAAAAAQYBCAEDAREBEAEGAQgBBQEKAWMBAAAABAAAAAMAAABDAAAAc3kAAABkAQCEAAB9AQB0AABqAQCDAAB9AgB8AgBqAgCDAAABdAMAagQAfAEAfAIAZgEAgwIAfQMAfAIAagIAgwAAAXwAAGoFAHwDAHQAAGoGAIMCAAF8AABqBwB0AABqBgB8AwAZdAAAaggAgwIAAXQAAGoGAHwDAD1kAABTKAIAAABOYwEAAAABAAAAAQAAAFMAAABzGAAAAHQAAGoBAIMAAAF8AABqAgCDAAABZAAAUygBAAAATigDAAAAUgMAAAB0DgAAAGN1cnJlbnRfdGhyZWFkdAcAAAByZWxlYXNlKAEAAABSEwAAACgAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3RocmVhZGluZy5weVI+AAAAlQAAAHMEAAAAAAMKASgJAAAAUgMAAAB0BAAAAExvY2t0BwAAAGFjcXVpcmVSAgAAAFJAAAAAdAgAAABhc3NlcnRJblJCAAAAdBAAAABhc3NlcnRJc0luc3RhbmNldAwAAABfRHVtbXlUaHJlYWQoBAAAAFIHAAAAUj4AAABSEwAAAHQDAAAAdGlkKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dBMAAAB0ZXN0X2ZvcmVpZ25fdGhyZWFkkwAAAHMQAAAAAAIJBgwBCgEVAgoBEwEaAWMBAAAACQAAAAUAAAADAAAAc1QCAAB5EABkAQBkAABsAAB9AQBXbiAABHQBAGsKAHIyAAEBAXQCAHIuAGQCAEdIbgAAZAAAU1h8AQBqAwBqBAB9AgBkAwB0BQBmAQBkBACEAACDAABZiQAAfAEAagYAiAAAgwEAfQMAdAcAaggAgwAAfQQAeSkAfAIAfAEAagkAfAQAgwEAfAMAgwIAfQUAeAoAdAoAcpcAcY4AV1duEQAEiAAAawoAcqwAAQEBbg4AWHwAAGoLAGQFAIMBAAF5FAB8AABqDAB8BQBkBgCDAgABV24RAAR0DQBrCgBy4QABAQFuAQBYdA4Aag8AgwAAiQIAdA4Aag8AgwAAiQEAZAcAdA4AahAAZgEAhwAAhwEAhwIAZgMAZAgAhgAAgwAAWX0GAHwGAIMAAH0HAHQKAHwHAF8RAHwHAGoSAIMAAAF0AgBySQFkCQBHSG4AAHQCAHJXAWQKAEdIbgAAfAIAfAEAagkAZAEAgwEAfAMAgwIAfQUAfAAAagwAfAUAZAsAgwIAAXQCAHKNAWQMAEdIbgAAiAIAahMAgwAAfQgAfAAAahQAfAgAgwEAAXQCAHK0AWQNAEdIbgAAfAAAahQAfAcAahUADIMBAAF0AgBy0wFkDgBHSG4AAHwCAHwBAGoJAHwHAGoWAIMBAHwDAIMCAH0FAHwAAGoMAHwFAGQGAIMCAAF0AgByDAJkDwBHSG4AAIgBAGoTAGQQAGQRAIMAAQF8AABqFAB8BwBqFQCDAQABdAIAcjoCZBIAR0huAAB8BwBqFQByUAJ8BwBqFwCDAAABbgAAZAAAUygTAAAATmn/////czIAAAB0ZXN0X1B5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMgY2FuJ3QgaW1wb3J0IGN0eXBlc3QIAAAAQXN5bmNFeGNjAAAAAAAAAAABAAAAQgAAAHMIAAAAZQAAWgEAUlMoAAAAACgCAAAAUgwAAABSDQAAACgAAAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5UlEAAACwAAAAcwIAAAAGAXMTAAAAQXN5bmNFeGMgbm90IHJhaXNlZGkBAAAAdAYAAABXb3JrZXJjAAAAAAAAAAADAAAAAgAAAHMdAAAAZQAAWgEAhwAAhwEAhwIAZgMAZAAAhgAAWgIAUlMoAQAAAGMBAAAAAQAAAAUAAAATAAAAc2sAAAB0AABqAQCDAAB8AABfAgB0AwB8AABfBAB5KAB4IQB0BQByPgCIAgBqBgCDAAABdAcAaggAZAEAgwEAAXEeAFdXbiQABIgAAGsKAHJmAAEBAXQFAHwAAF8EAIgBAGoGAIMAAAFuAQBYZAAAUygCAAAATmeamZmZmZm5PygJAAAAUgIAAAB0CQAAAGdldF9pZGVudHQCAAAAaWR0BQAAAEZhbHNldAgAAABmaW5pc2hlZHQEAAAAVHJ1ZVI9AAAAUhkAAABSGgAAACgBAAAAUgcAAAAoAwAAAFJRAAAAdBQAAAB3b3JrZXJfc2F3X2V4Y2VwdGlvbnQOAAAAd29ya2VyX3N0YXJ0ZWQoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5UhwAAADSAAAAcxIAAAAAAQ8BCQIDAQkBCgEVAQ0BCQEoAwAAAFIMAAAAUg0AAABSHAAAACgAAAAAKAMAAABSUQAAAFJYAAAAUlkAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5UlIAAADRAAAAcwIAAAAGAXMZAAAAICAgIHN0YXJ0ZWQgd29ya2VyIHRocmVhZHMgAAAAICAgIHRyeWluZyBub25zZW5zaWNhbCB0aHJlYWQgaWRpAAAAAHMsAAAAICAgIHdhaXRpbmcgZm9yIHdvcmtlciB0aHJlYWQgdG8gZ2V0IHN0YXJ0ZWRzIgAAACAgICB2ZXJpZnlpbmcgd29ya2VyIGhhc24ndCBleGl0ZWRzMgAAACAgICBhdHRlbXB0aW5nIHRvIHJhaXNlIGFzeW5jaCBleGNlcHRpb24gaW4gd29ya2VyczUAAAAgICAgd2FpdGluZyBmb3Igd29ya2VyIHRvIHNheSBpdCBjYXVnaHQgdGhlIGV4Y2VwdGlvbnQHAAAAdGltZW91dGkKAAAAcxwAAAAgICAgYWxsIE9LIC0tIGpvaW5pbmcgd29ya2VyKBgAAAB0BgAAAGN0eXBlc3QLAAAASW1wb3J0RXJyb3JSAAAAAHQJAAAAcHl0aG9uYXBpdBkAAABQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjdAkAAABFeGNlcHRpb250CQAAAHB5X29iamVjdFICAAAAUlMAAAB0BgAAAGNfbG9uZ1JXAAAAdAQAAABmYWlsUisAAAB0EQAAAFVuYm91bmRMb2NhbEVycm9yUgMAAABSPwAAAFIQAAAAdAYAAABkYWVtb25SMQAAAFJBAAAAUhgAAABSVgAAAFJUAAAAUjIAAAAoCQAAAFIHAAAAUlsAAAB0DQAAAHNldF9hc3luY19leGN0CQAAAGV4Y2VwdGlvblJPAAAAdAYAAAByZXN1bHRSUgAAAFI6AAAAdAMAAAByZXQoAAAAACgDAAAAUlEAAABSWAAAAFJZAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF90aHJlYWRpbmcucHl0HgAAAHRlc3RfUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Y6YAAABzaAAAAAABAwEQAQ0BBgEIAQUCDAIWAw8DDAIDARgDCQEIAQ0BBAQNAQMBFAENAgQGDAEMAiUNCQEJAQoBBgEIAwYBCAEYARADBgEIAQwBDQEGAQgBEQEGAQgBGwEQAQYBCAEQARABBgEIAQkBYwEAAAAEAAAABQAAAEMAAABzdAAAAGQBAIQAAH0BAHQAAGoBAH0CAHwBAHQAAF8BAHpIAHQAAGoCAGQCAGQDAIQAAIMAAX0DAHwAAGoDAHQEAGoFAHwDAGoGAIMCAAF8AABqBwB8AwB0AABqCABrBgBkBACDAgABV2QAAHwCAHQAAF8BAFhkAABTKAUAAABOYwAAAAABAAAAAQAAAFcAAABzEAAAAHQAAGoBAIMAAIIBAGQAAFMoAQAAAE4oAgAAAFICAAAAUkUAAAAoAQAAAHQEAAAAYXJncygAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3RocmVhZGluZy5weXQPAAAAZmFpbF9uZXdfdGhyZWFkAgEAAHMCAAAAAAF0BgAAAHRhcmdldGMAAAAAAAAAAAEAAABTAAAAcwQAAABkAABTKAEAAABOKAEAAABSLQAAACgAAAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dAgAAAA8bGFtYmRhPgcBAABzAAAAAHM6AAAARmFpbGVkIHRvIGNsZWFudXAgX2xpbWJvIG1hcCBvbiBmYWlsdXJlIG9mIFRocmVhZC5zdGFydCgpLigJAAAAUgMAAAB0EQAAAF9zdGFydF9uZXdfdGhyZWFkUhAAAAB0DAAAAGFzc2VydFJhaXNlc1ICAAAAUkUAAABSMQAAAFI1AAAAdAYAAABfbGltYm8oBAAAAFIHAAAAUmsAAABSbgAAAFI6AAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dBIAAAB0ZXN0X2xpbWJvX2NsZWFudXAAAQAAcxQAAAAAAgkCCQEJAQMBFQEWAQYBDAELAmMBAAAAAwAAAAUAAABDAAAAc2IAAAB5EABkAQBkAABsAAB9AQBXbiAABHQBAGsKAHIyAAEBAXQCAHIuAGQCAEdIbgAAZAAAU1h0AwBqBAB0BQBqBgBkAwBkBABnAwCDAQB9AgB8AABqBwB8AgBkBQCDAgABZAAAUygGAAAATmn/////czYAAAB0ZXN0X2ZpbmFsaXplX3dpdGhfcnVubm5pbmdfdGhyZWFkIGNhbid0IGltcG9ydCBjdHlwZXNzAgAAAC1jc0sDAABpZiAxOgogICAgICAgICAgICBpbXBvcnQgY3R5cGVzLCBzeXMsIHRpbWUsIHRocmVhZAoKICAgICAgICAgICAgIyBUaGlzIGxvY2sgaXMgdXNlZCBhcyBhIHNpbXBsZSBldmVudCB2YXJpYWJsZS4KICAgICAgICAgICAgcmVhZHkgPSB0aHJlYWQuYWxsb2NhdGVfbG9jaygpCiAgICAgICAgICAgIHJlYWR5LmFjcXVpcmUoKQoKICAgICAgICAgICAgIyBNb2R1bGUgZ2xvYmFscyBhcmUgY2xlYXJlZCBiZWZvcmUgX19kZWxfXyBpcyBydW4KICAgICAgICAgICAgIyBTbyB3ZSBzYXZlIHRoZSBmdW5jdGlvbnMgaW4gY2xhc3MgZGljdAogICAgICAgICAgICBjbGFzcyBDOgogICAgICAgICAgICAgICAgZW5zdXJlID0gY3R5cGVzLnB5dGhvbmFwaS5QeUdJTFN0YXRlX0Vuc3VyZQogICAgICAgICAgICAgICAgcmVsZWFzZSA9IGN0eXBlcy5weXRob25hcGkuUHlHSUxTdGF0ZV9SZWxlYXNlCiAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IHNlbGYuZW5zdXJlKCkKICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbGVhc2Uoc3RhdGUpCgogICAgICAgICAgICBkZWYgd2FpdGluZ1RocmVhZCgpOgogICAgICAgICAgICAgICAgeCA9IEMoKQogICAgICAgICAgICAgICAgcmVhZHkucmVsZWFzZSgpCiAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEwMCkKCiAgICAgICAgICAgIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKHdhaXRpbmdUaHJlYWQsICgpKQogICAgICAgICAgICByZWFkeS5hY3F1aXJlKCkgICMgQmUgc3VyZSB0aGUgb3RoZXIgdGhyZWFkIGlzIHdhaXRpbmcuCiAgICAgICAgICAgIHN5cy5leGl0KDQyKQogICAgICAgICAgICBpKgAAACgIAAAAUlsAAABSXAAAAFIAAAAAdAoAAABzdWJwcm9jZXNzdAQAAABjYWxsdAMAAABzeXN0CgAAAGV4ZWN1dGFibGVSKwAAACgDAAAAUgcAAABSWwAAAHQCAAAAcmMoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF90aHJlYWRpbmcucHl0HQAAAHRlc3RfZmluYWxpemVfcnVubm5pbmdfdGhyZWFkDwEAAHMSAAAAAAQDARABDQEGAQgBBQIPGAwBYwEAAAAFAAAABgAAAEMAAABzqAAAAHQAAGoBAHQCAGoDAGQBAGQCAGcDAGQDAHQAAGoEAGQEAHQAAGoEAIMBAn0BAHwAAGoFAHwBAGoGAGoHAIMBAAF8AABqBQB8AQBqCABqBwCDAQABfAEAagkAgwAAXAIAfQIAfQMAfAEAagoAfQQAfAAAagsAfAQAZAUAawIAZAYAgwIAAXwAAGoMAHwEAGQHAGsCAGQIAHQNAHwDAIMBABeDAgABZAAAUygJAAAATnMCAAAALWNzTwIAAGlmIDE6CiAgICAgICAgICAgIGltcG9ydCBzeXMsIHRocmVhZGluZwoKICAgICAgICAgICAgIyBBIGRlYWRsb2NrLWtpbGxlciwgdG8gcHJldmVudCB0aGUKICAgICAgICAgICAgIyB0ZXN0c3VpdGUgdG8gaGFuZyBmb3JldmVyCiAgICAgICAgICAgIGRlZiBraWxsZXIoKToKICAgICAgICAgICAgICAgIGltcG9ydCBvcywgdGltZQogICAgICAgICAgICAgICAgdGltZS5zbGVlcCgyKQogICAgICAgICAgICAgICAgcHJpbnQgJ3Byb2dyYW0gYmxvY2tlZDsgYWJvcnRpbmcnCiAgICAgICAgICAgICAgICBvcy5fZXhpdCgyKQogICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9a2lsbGVyKQogICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKICAgICAgICAgICAgdC5zdGFydCgpCgogICAgICAgICAgICAjIFRoaXMgaXMgdGhlIHRyYWNlIGZ1bmN0aW9uCiAgICAgICAgICAgIGRlZiBmdW5jKGZyYW1lLCBldmVudCwgYXJnKToKICAgICAgICAgICAgICAgIHRocmVhZGluZy5jdXJyZW50X3RocmVhZCgpCiAgICAgICAgICAgICAgICByZXR1cm4gZnVuYwoKICAgICAgICAgICAgc3lzLnNldHRyYWNlKGZ1bmMpCiAgICAgICAgICAgIHQGAAAAc3Rkb3V0dAYAAABzdGRlcnJpAgAAAHMXAAAAaW50ZXJwcmV0ZWQgd2FzIGJsb2NrZWRpAAAAAHMSAAAAVW5leHBlY3RlZCBlcnJvcjogKA4AAABScgAAAHQFAAAAUG9wZW5SdAAAAFJ1AAAAdAQAAABQSVBFdAoAAABhZGRDbGVhbnVwUngAAAB0BQAAAGNsb3NlUnkAAAB0CwAAAGNvbW11bmljYXRldAoAAAByZXR1cm5jb2RlUjUAAABSGAAAAFIwAAAAKAUAAABSBwAAAHQBAAAAcFJ4AAAAUnkAAABSdgAAACgAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3RocmVhZGluZy5weXQYAAAAdGVzdF9maW5hbGl6ZV93aXRoX3RyYWNlNQEAAHMWAAAAAAMPFAkBCQEMARMBEwESAQkBFgEPAWMBAAAABAAAAAYAAABDAAAAc7AAAAB0AABqAQB0AgBqAwBkAQBkAgBnAwBkAwB0AABqBABkBAB0AABqBACDAQJ9AQB8AABqBQB8AQBqBgBqBwCDAQABfAAAagUAfAEAaggAagcAgwEAAXwBAGoJAIMAAFwCAH0CAH0DAHwAAGoKAHwCAGoLAIMAAGQFAIMCAAF0DABqDQBkBgBkBwB8AwB0DABqDgCDBABqCwCDAAB9AwB8AABqCgB8AwBkBwCDAgABZAAAUygIAAAATnMCAAAALWNzpgEAAGlmIDE6CiAgICAgICAgICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCiAgICAgICAgICAgICAgICBmcm9tIHRpbWUgaW1wb3J0IHNsZWVwCgogICAgICAgICAgICAgICAgZGVmIGNoaWxkKCk6CiAgICAgICAgICAgICAgICAgICAgc2xlZXAoMSkKICAgICAgICAgICAgICAgICAgICAjIEFzIGEgbm9uLWRhZW1vbiB0aHJlYWQgd2UgU0hPVUxEIHdha2UgdXAgYW5kIG5vdGhpbmcKICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBiZSB0b3JuIGRvd24geWV0CiAgICAgICAgICAgICAgICAgICAgcHJpbnQgIldva2UgdXAsIHNsZWVwIGZ1bmN0aW9uIGlzOiIsIHNsZWVwCgogICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9Y2hpbGQpLnN0YXJ0KCkKICAgICAgICAgICAgICAgIHJhaXNlIFN5c3RlbUV4aXQKICAgICAgICAgICAgUngAAABSeQAAAHM1AAAAV29rZSB1cCwgc2xlZXAgZnVuY3Rpb24gaXM6IDxidWlsdC1pbiBmdW5jdGlvbiBzbGVlcD5zDQAAAF5cW1xkKyByZWZzXF10AAAAACgPAAAAUnIAAABSegAAAFJ0AAAAUnUAAABSewAAAFJ8AAAAUngAAABSfQAAAFJ5AAAAUn4AAABSKwAAAHQFAAAAc3RyaXBSLgAAAHQDAAAAc3VidAkAAABNVUxUSUxJTkUoBAAAAFIHAAAAUoAAAABSeAAAAFJ5AAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dB8AAAB0ZXN0X2pvaW5fbm9uZGFlbW9uX29uX3NodXRkb3duVwEAAHMWAAAAAAMPDAkBCQEMARMBEwESAQ8BBwEhAWMBAAAABgAAAAcAAABDAAAAc6gAAAB0AABqAQB9AQB0AgBqAwCDAAB9AgB6fgB4dwB0BABkAQBkAgCDAgBEXWYAfQMAdAIAagUAfAMAZAMAGoMBAAF0AABqBgBkBABkBQCEAACDAAF9BAB8BABqBwCDAAABfAQAaggAgwAAAXwBAIMAAH0FAHwAAGoJAHwEAHwFAGQGAHwDAHwFAGYCABaDAwABcSgAV1dkAAB0AgBqBQB8AgCDAQABWGQAAFMoBwAAAE5pAQAAAGlkAAAAaQUAAABSbAAAAGMAAAAAAAAAAAEAAABTAAAAcwQAAABkAABTKAEAAABOKAEAAABSLQAAACgAAAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5Um0AAAB7AQAAcwAAAABzJgAAACMxNzAzNDQ4IHRyaWdnZXJlZCBhZnRlciAlZCB0cmlhbHM6ICVzKAoAAABSAwAAAHQJAAAAZW51bWVyYXRlUnQAAAB0EAAAAGdldGNoZWNraW50ZXJ2YWx0BgAAAHhyYW5nZXQQAAAAc2V0Y2hlY2tpbnRlcnZhbFIQAAAAUjEAAABSMgAAAHQLAAAAYXNzZXJ0Tm90SW4oBgAAAFIHAAAAdAQAAABlbnVtdAwAAABvbGRfaW50ZXJ2YWxSOQAAAFI6AAAAdAEAAABsKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dBkAAAB0ZXN0X2VudW1lcmF0ZV9hZnRlcl9qb2lucQEAAHMYAAAAAAMJAQwBAwEWAxEBFQEKAQoBCQEMARkCYwEAAAAGAAAABwAAAEMAAABzyAAAAGQBAHQAAGYBAGQCAIQAAIMAAFl9AQB8AQBkAwB0AQCDAAF9AgB0AgBqAwB8AgCDAQB9AwB8AgBqBABqBQCDAAABfgIAfAAAagYAZAAAfAMAgwAAZAQAZAUAdAgAagkAfAMAgwAAgwEAFoMCAQF8AQBkAwB0CgCDAAF9BAB0AgBqAwB8BACDAQB9BQB8BABqBABqBQCDAAABfgQAfAAAagYAZAAAfAUAgwAAZAQAZAUAdAgAagkAfAUAgwAAgwEAFoMCAQFkAABTKAYAAABOdA8AAABSdW5TZWxmRnVuY3Rpb25jAAAAAAAAAAABAAAAQgAAAHMaAAAAZQAAWgEAZAAAhAAAWgIAZAEAhAAAWgMAUlMoAgAAAGMCAAAAAgAAAAkAAABTAAAAc0gAAAB8AQB8AABfAAB0AQBqAgBkAQB8AABqAwBkAgB8AABmAQBkAwBpAQB8AABkBAA2gwADfAAAXwQAfAAAagQAagUAgwAAAWQAAFMoBQAAAE5SbAAAAFJqAAAAdAYAAABrd2FyZ3N0CwAAAHlldF9hbm90aGVyKAYAAAB0DAAAAHNob3VsZF9yYWlzZVIDAAAAUhAAAAB0BAAAAF9ydW5SAgAAAFIxAAAAKAIAAABSBwAAAFKTAAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5UggAAACGAQAAcwoAAAAAAwkBEgEJARMBYwMAAAADAAAAAQAAAFMAAABzFgAAAHwAAGoAAHISAHQBAIIBAG4AAGQAAFMoAQAAAE4oAgAAAFKTAAAAdAoAAABTeXN0ZW1FeGl0KAMAAABSBwAAAHQJAAAAb3RoZXJfcmVmUpIAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF90aHJlYWRpbmcucHlSlAAAAI8BAABzBAAAAAABCQEoBAAAAFIMAAAAUg0AAABSCAAAAFKUAAAAKAAAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF90aHJlYWRpbmcucHlSkAAAAIUBAABzBAAAAAYBCQlSkwAAAHQDAAAAbXNncxoAAAAlZCByZWZlcmVuY2VzIHN0aWxsIGFyb3VuZCgLAAAAdAYAAABvYmplY3RSVQAAAHQHAAAAd2Vha3JlZnQDAAAAcmVmUgIAAABSMgAAAFIrAAAAUi0AAABSdAAAAHQLAAAAZ2V0cmVmY291bnRSVwAAACgGAAAAUgcAAABSkAAAAHQNAAAAY3ljbGljX29iamVjdHQSAAAAd2Vha19jeWNsaWNfb2JqZWN0dBUAAAByYWlzaW5nX2N5Y2xpY19vYmplY3R0GgAAAHdlYWtfcmFpc2luZ19jeWNsaWNfb2JqZWN0KAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dB8AAAB0ZXN0X25vX3JlZmN5Y2xlX3Rocm91Z2hfdGFyZ2V0hAEAAHMeAAAAAAEWDg8BDwENAQMBEgEDARQCDwEPAQ0BAwESAQMBdAQAAABmb3JrcxEAAAB0ZXN0IG5lZWRzIGZvcmsoKWMBAAAABQAAAAMAAABDAAAAc0IAAABkAQB9AQB0AABkAgB8AQCDAgBcAwB9AgB9AwB9BAB8AABqAQB8AwBkAwCDAgABfAAAagEAfAQAZAMAgwIAAWQAAFMoBAAAAE5ziAIAAGlmIDE6CiAgICAgICAgICAgIGltcG9ydCB0aHJlYWQsIHRocmVhZGluZywgb3MsIHRpbWUKCiAgICAgICAgICAgIGRlZiBiYWNrZ3JvdW5kX3RocmVhZChldnQpOgogICAgICAgICAgICAgICAgIyBDcmVhdGVzIGFuZCByZWdpc3RlcnMgdGhlIF9EdW1teVRocmVhZCBpbnN0YW5jZQogICAgICAgICAgICAgICAgdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkKICAgICAgICAgICAgICAgIGV2dC5zZXQoKQogICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxMCkKCiAgICAgICAgICAgIGV2dCA9IHRocmVhZGluZy5FdmVudCgpCiAgICAgICAgICAgIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKGJhY2tncm91bmRfdGhyZWFkLCAoZXZ0LCkpCiAgICAgICAgICAgIGV2dC53YWl0KCkKICAgICAgICAgICAgYXNzZXJ0IHRocmVhZGluZy5hY3RpdmVfY291bnQoKSA9PSAyLCB0aHJlYWRpbmcuYWN0aXZlX2NvdW50KCkKICAgICAgICAgICAgaWYgb3MuZm9yaygpID09IDA6CiAgICAgICAgICAgICAgICBhc3NlcnQgdGhyZWFkaW5nLmFjdGl2ZV9jb3VudCgpID09IDEsIHRocmVhZGluZy5hY3RpdmVfY291bnQoKQogICAgICAgICAgICAgICAgb3MuX2V4aXQoMCkKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIG9zLndhaXQoKQogICAgICAgIHMCAAAALWNSggAAACgCAAAAUgEAAABSKwAAACgFAAAAUgcAAAB0BAAAAGNvZGV0AQAAAF90AwAAAG91dHQDAAAAZXJyKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9i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Zy5UaHJlYWQodGFyZ2V0PWpvaW5pbmdmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPSh0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSwpKQogICAgICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAgICAgICAgICAgIHByaW50ICdlbmQgb2YgbWFpbicKICAgICAgICAgICAgKAEAAABStQAAACgCAAAAUgcAAABSswAAACgAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3RocmVhZGluZy5weXQXAAAAdGVzdF8xX2pvaW5fb25fc2h1dGRvd27aAQAAcwQAAAAACQYBUqEAAABzDwAAAG5lZWRzIG9zLmZvcmsoKXMTAAAAZHVlIHRvIGtub3duIE9TIGJ1Z2MBAAAAAgAAAAIAAABDAAAAcxcAAABkAQB9AQB8AABqAAB8AQCDAQABZAAAUygCAAAATnNGAQAAaWYgMToKICAgICAgICAgICAgY2hpbGRwaWQgPSBvcy5mb3JrKCkKICAgICAgICAgICAgaWYgY2hpbGRwaWQgIT0gMDoKICAgICAgICAgICAgICAgIG9zLndhaXRwaWQoY2hpbGRwaWQsIDApCiAgICAgICAgICAgICAgICBzeXMuZXhpdCgwKQoKICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWpvaW5pbmdmdW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPSh0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKSwpKQogICAgICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgICAgcHJpbnQgJ2VuZCBvZiBtYWluJwogICAgICAgICAgICAoAQAAAFK1AAAAKAIAAABSBwAAAFKzAAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dB0AAAB0ZXN0XzJfam9pbl9pbl9mb3JrZWRfcHJvY2Vzc+cBAABzBAAAAAAOBgFjAQAAAAIAAAACAAAAQwAAAHMXAAAAZAEAfQEAfAAAagAAfAEAgwEAAWQAAFMoAgAAAE5zOQIAAGlmIDE6CiAgICAgICAgICAgIG1haW5fdGhyZWFkID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkKICAgICAgICAgICAgZGVmIHdvcmtlcigpOgogICAgICAgICAgICAgICAgY2hpbGRwaWQgPSBvcy5mb3JrKCkKICAgICAgICAgICAgICAgIGlmIGNoaWxkcGlkICE9IDA6CiAgICAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZChjaGlsZHBpZCwgMCkKICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgwKQoKICAgICAgICAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1qb2luaW5nZnVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KG1haW5fdGhyZWFkLCkpCiAgICAgICAgICAgICAgICBwcmludCAnZW5kIG9mIG1haW4nCiAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgICAgICAgIHQuam9pbigpICMgU2hvdWxkIG5vdCBibG9jazogbWFpbl90aHJlYWQgaXMgYWxyZWFkeSBzdG9wcGVkCgogICAgICAgICAgICB3ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9d29ya2VyKQogICAgICAgICAgICB3LnN0YXJ0KCkKICAgICAgICAgICAgKAEAAABStQAAACgCAAAAUgcAAABSswAAACgAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvdGVzdC90ZXN0X3RocmVhZGluZy5weXQhAAAAdGVzdF8zX2pvaW5faW5fZm9ya2VkX2Zyb21fdGhyZWFk+AEAAHMEAAAAABUGAWMDAAAABgAAAAQAAABDAAAAc3gAAAB0AABqAQB0AgBqAwBkAQB8AQBnAwBkAgB0AABqBACDAQF9AwB8AwBqBQCDAAB9BAB8AwBqBgBqBwCDAABqCACDAABqCQBkAwBkBACDAgB9BQB8AABqCgB8BABkBQBkBgCDAwABfAAAagoAfAUAfAIAgwIAAWQAAFMoBwAAAE5zAgAAAC1jUngAAABzAQAAAA1SggAAAGkAAAAAcxAAAABVbmV4cGVjdGVkIGVycm9yKAsAAABScgAAAFJ6AAAAUnQAAABSdQAAAFJ7AAAAUkEAAABSeAAAAFKxAAAAdAYAAABkZWNvZGVSsgAAAFIrAAAAKAYAAABSBwAAAFKzAAAAdA8AAABleHBlY3RlZF9vdXRwdXRSgAAAAFJ2AAAAUrQAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L3Rlc3QvdGVzdF90aHJlYWRpbmcucHl0FQAAAGFzc2VydFNjcmlwdEhhc091dHB1dBACAABzDAAAAAABGAEMAQwBIQETAWMBAAAAAgAAAAMAAABDAAAAcxoAAABkAQB9AQB8AABqAAB8AQBkAgCDAgABZAAAUygDAAAATnNEBwAAaWYgMToKICAgICAgICAgICAgaW1wb3J0IG9zLCB0aW1lLCB0aHJlYWRpbmcKCiAgICAgICAgICAgIGZpbmlzaF9qb2luID0gRmFsc2UKICAgICAgICAgICAgc3RhcnRfZm9yayA9IEZhbHNlCgogICAgICAgICAgICBkZWYgd29ya2VyKCk6CiAgICAgICAgICAgICAgICAjIFdhaXQgdW50aWwgdGhpcyB0aHJlYWQncyBsb2NrIGlzIGFjcXVpcmVkIGJlZm9yZSBmb3JraW5nIHRvCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgZGVhZGxvY2suCiAgICAgICAgICAgICAgICBnbG9iYWwgZmluaXNoX2pvaW4KICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzdGFydF9mb3JrOgogICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkKICAgICAgICAgICAgICAgICMgTE9DSyBIRUxEOiBNYWluIHRocmVhZCBob2xkcyBsb2NrIGFjcm9zcyB0aGlzIGNhbGwuCiAgICAgICAgICAgICAgICBjaGlsZHBpZCA9IG9zLmZvcmsoKQogICAgICAgICAgICAgICAgZmluaXNoX2pvaW4gPSBUcnVlCiAgICAgICAgICAgICAgICBpZiBjaGlsZHBpZCAhPSAwOgogICAgICAgICAgICAgICAgICAgICMgUGFyZW50IHByb2Nlc3MganVzdCB3YWl0cyBmb3IgY2hpbGQuCiAgICAgICAgICAgICAgICAgICAgb3Mud2FpdHBpZChjaGlsZHBpZCwgMCkKICAgICAgICAgICAgICAgICMgQ2hpbGQgcHJvY2VzcyBzaG91bGQganVzdCByZXR1cm4uCgogICAgICAgICAgICB3ID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9d29ya2VyKQoKICAgICAgICAgICAgIyBTdHViIG91dCB0aGUgcHJpdmF0ZSBjb25kaXRpb24gdmFyaWFibGUncyBsb2NrIGFjcXVpcmUgbWV0aG9kLgogICAgICAgICAgICAjIFRoaXMgYWNxdWlyZXMgdGhlIGxvY2sgYW5kIHRoZW4gd2FpdHMgdW50aWwgdGhlIGNoaWxkIGhhcyBmb3JrZWQKICAgICAgICAgICAgIyBiZWZvcmUgcmV0dXJuaW5nLCB3aGljaCB3aWxsIHJlbGVhc2UgdGhlIGxvY2sgc29vbiBhZnRlci4gIElmCiAgICAgICAgICAgICMgc29tZW9uZSBlbHNlIHRyaWVzIHRvIGZpeCB0aGlzIHRlc3QgY2FzZSBieSBhY3F1aXJpbmcgdGhpcyBsb2NrCiAgICAgICAgICAgICMgYmVmb3JlIGZvcmtpbmcgaW5zdGVhZCBvZiByZXNldHRpbmcgaXQsIHRoZSB0ZXN0IGNhc2Ugd2lsbAogICAgICAgICAgICAjIGRlYWRsb2NrIHdoZW4gaXQgc2hvdWxkbid0LgogICAgICAgICAgICBjb25kaXRpb24gPSB3Ll9ibG9jawogICAgICAgICAgICBvcmlnX2FjcXVpcmUgPSBjb25kaXRpb24uYWNxdWlyZQogICAgICAgICAgICBjYWxsX2NvdW50X2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCiAgICAgICAgICAgIGNhbGxfY291bnQgPSAwCiAgICAgICAgICAgIGRlZiBteV9hY3F1aXJlKCk6CiAgICAgICAgICAgICAgICBnbG9iYWwgY2FsbF9jb3VudAogICAgICAgICAgICAgICAgZ2xvYmFsIHN0YXJ0X2ZvcmsKICAgICAgICAgICAgICAgIG9yaWdfYWNxdWlyZSgpICAjIExPQ0sgQUNRVUlSRUQgSEVSRQogICAgICAgICAgICAgICAgc3RhcnRfZm9yayA9IFRydWUKICAgICAgICAgICAgICAgIGlmIGNhbGxfY291bnQgPT0gMDoKICAgICAgICAgICAgICAgICAgICB3aGlsZSBub3QgZmluaXNoX2pvaW46CiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMSkgICMgV09SS0VSIFRIUkVBRCBGT1JLUyBIRVJFCiAgICAgICAgICAgICAgICB3aXRoIGNhbGxfY291bnRfbG9jazoKICAgICAgICAgICAgICAgICAgICBjYWxsX2NvdW50ICs9IDEKICAgICAgICAgICAgY29uZGl0aW9uLmFjcXVpcmUgPSBteV9hY3F1aXJlCgogICAgICAgICAgICB3LnN0YXJ0KCkKICAgICAgICAgICAgdy5qb2luKCkKICAgICAgICAgICAgcHJpbnQoJ2VuZCBvZiBtYWluJykKICAgICAgICAgICAgcwwAAABlbmQgb2YgbWFpbgooAQAAAFK7AAAAKAIAAABSBwAAAFKzAAAAKAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dCsAAAB0ZXN0XzRfam9pbmluZ19hY3Jvc3NfZm9ya19pbl93b3JrZXJfdGhyZWFkGAIAAHMEAAAAAEYGAWMBAAAAAwAAAAMAAABDAAAAcyAAAABkAQB9AQBkAgB9AgB8AABqAAB8AQB8AgCDAgABZAAAUygDAAAATnMSBgAAaWYgVHJ1ZToKICAgICAgICAgICAgaW1wb3J0IG9zLCB0aW1lLCB0aHJlYWRpbmcKCiAgICAgICAgICAgIHN0YXJ0X2ZvcmsgPSBGYWxzZQoKICAgICAgICAgICAgZGVmIHdvcmtlcigpOgogICAgICAgICAgICAgICAgIyBXYWl0IHVudGlsIHRoZSBtYWluIHRocmVhZCBoYXMgYXR0ZW1wdGVkIHRvIGpvaW4gdGhpcyB0aHJlYWQKICAgICAgICAgICAgICAgICMgYmVmb3JlIGNvbnRpbnVpbmcuCiAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc3RhcnRfZm9yazoKICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCiAgICAgICAgICAgICAgICBjaGlsZHBpZCA9IG9zLmZvcmsoKQogICAgICAgICAgICAgICAgaWYgY2hpbGRwaWQgIT0gMDoKICAgICAgICAgICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzIGp1c3Qgd2FpdHMgZm9yIGNoaWxkLgogICAgICAgICAgICAgICAgICAgIChjcGlkLCByYykgPSBvcy53YWl0cGlkKGNoaWxkcGlkLCAwKQogICAgICAgICAgICAgICAgICAgIGFzc2VydCBjcGlkID09IGNoaWxkcGlkCiAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHJjID09IDAKICAgICAgICAgICAgICAgICAgICBwcmludCgnZW5kIG9mIHdvcmtlciB0aHJlYWQnKQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAjIENoaWxkIHByb2Nlc3Mgc2hvdWxkIGp1c3QgcmV0dXJuLgogICAgICAgICAgICAgICAgICAgIHBhc3MKCiAgICAgICAgICAgIHcgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD13b3JrZXIpCgogICAgICAgICAgICAjIFN0dWIgb3V0IHRoZSBwcml2YXRlIGNvbmRpdGlvbiB2YXJpYWJsZSdzIF9yZWxlYXNlX3NhdmUgbWV0aG9kLgogICAgICAgICAgICAjIFRoaXMgcmVsZWFzZXMgdGhlIGNvbmRpdGlvbidzIGxvY2sgYW5kIGZsaXBzIHRoZSBnbG9iYWwgdGhhdAogICAgICAgICAgICAjIGNhdXNlcyB0aGUgd29ya2VyIHRvIGZvcmsuICBBdCB0aGlzIHBvaW50LCB0aGUgcHJvYmxlbWF0aWMgd2FpdGVyCiAgICAgICAgICAgICMgbG9jayBoYXMgYmVlbiBhY3F1aXJlZCBvbmNlIGJ5IHRoZSB3YWl0ZXIgYW5kIGhhcyBiZWVuIHB1dCBvbnRvCiAgICAgICAgICAgICMgdGhlIHdhaXRlcnMgbGlzdC4KICAgICAgICAgICAgY29uZGl0aW9uID0gdy5fYmxvY2sKICAgICAgICAgICAgb3JpZ19yZWxlYXNlX3NhdmUgPSBjb25kaXRpb24uX3JlbGVhc2Vfc2F2ZQogICAgICAgICAgICBkZWYgbXlfcmVsZWFzZV9zYXZlKCk6CiAgICAgICAgICAgICAgICBnbG9iYWwgc3RhcnRfZm9yawogICAgICAgICAgICAgICAgb3JpZ19yZWxlYXNlX3NhdmUoKQogICAgICAgICAgICAgICAgIyBXYWl0ZXIgbG9jayBoZWxkIGhlcmUsIGNvbmRpdGlvbiBsb2NrIHJlbGVhc2VkLgogICAgICAgICAgICAgICAgc3RhcnRfZm9yayA9IFRydWUKICAgICAgICAgICAgY29uZGl0aW9uLl9yZWxlYXNlX3NhdmUgPSBteV9yZWxlYXNlX3NhdmUKCiAgICAgICAgICAgIHcuc3RhcnQoKQogICAgICAgICAgICB3LmpvaW4oKQogICAgICAgICAgICBwcmludCgnZW5kIG9mIG1haW4gdGhyZWFkJykKICAgICAgICAgICAgcygAAABlbmQgb2Ygd29ya2VyIHRocmVhZAplbmQgb2YgbWFpbiB0aHJlYWQKKAEAAABSuwAAACgDAAAAUgcAAABSswAAAHQGAAAAb3V0cHV0KAAAAAAoAAAAAHNaAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5dCgAAAB0ZXN0XzVfY2xlYXJfd2FpdGVyX2xvY2tzX3RvX2F2b2lkX2NyYXNoYQIAAHMGAAAAADYGAQYBYwEAAAAFAAAABAAAAEMAAABzbgAAAGQBAIQAAH0BAGcAAH0CAHg9AHQAAGQCAIMBAERdLwB9AwB0AQBqAgBkAwB8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