gASVAAABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIwjbW9kdWxlLWV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWOUYYwHY2xhc3Nlc5RdlIwFbmFtZXOUXZSMCGR1cG5hbWVzlF2UjAhiYWNrcmVmc5RdlIwFaXNtb2SUiHWMB3RhZ25hbWWUaAmMBnNvdXJjZZSMZC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3SUjARsaW5llEsBjAZwYXJlbnSUaAOMCV9kb2N1bWVudJRoA3VijA9zcGhpbnguYWRkbm9kZXOUjAVpbmRleJSTlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlCiMBHBhaXKUjCRtb2R1bGU7IGV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWOUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgAjAdzZWN0aW9ulJOUKYGUfZQoaAVoBmgHXZQoaACMBXRpdGxllJOUKYGUfZQoaAWMFkV0aGVyZXVtIFNwZWNpZmljYXRpb26UaAddlGgAjARUZXh0lJOUjBZFdGhlcmV1bSBTcGVjaWZpY2F0aW9ulIWUgZR9lChoBWgGaCBoOmghaANoHYxcL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy8udG94L2RvY3Mvc3RhZ2UwX291dC9hdXRvYXBpLyA9PiBkb2MvZGlmZnOUaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0sEaCBoNWghaAN1YmgAjAV0b3BpY5STlCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMEVRhYmxlIG9mIENvbnRlbnRzlGgHXZRoP4wRVGFibGUgb2YgQ29udGVudHOUhZSBlH2UKGgFaAZoIGhQaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfSwhoIGhNdWJoAIwLYnVsbGV0X2xpc3SUk5QpgZR9lChoBWgGaAddlChoAIwJbGlzdF9pdGVtlJOUKYGUfZQoaAVoBmgHXZRoAIwJcGFyYWdyYXBolJOUKYGUfZQoaAVoBmgHXZRoAIwJcmVmZXJlbmNllJOUKYGUfZQoaAVoBmgHXZRoP4wMSW50cm9kdWN0aW9ulIWUgZR9lChoBWgGaCBob2ghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwDaWQxlGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMDGludHJvZHVjdGlvbpR1aBxobWgdTmgfTmggaGp1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGhldWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBoYHViaGQpgZR9lChoBWgGaAddlChoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jA9Nb2R1bGUgQ29udGVudHOUhZSBlH2UKGgFaAZoIGiRaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjANpZDKUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwPbW9kdWxlLWNvbnRlbnRzlHVoHGhtaB1OaB9OaCBojnViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaIt1YmhfKYGUfZQoaAVoBmgHXZQoaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MB0NsYXNzZXOUhZSBlH2UKGgFaAZoIGiwaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjANpZDOUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwHY2xhc3Nlc5R1aBxobWgdTmgfTmggaK11YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGiqdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBop3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MCUZ1bmN0aW9uc5SFlIGUfZQoaAVoBmggaNJoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMA2lkNJRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjAlmdW5jdGlvbnOUdWgcaG1oHU5oH05oIGjPdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBozHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggaKd1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jApBdHRyaWJ1dGVzlIWUgZR9lChoBWgGaCBo9GghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwDaWQ1lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMCmF0dHJpYnV0ZXOUdWgcaG1oHU5oH05oIGjxdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBo7nViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggaKd1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaF5oHU5oH05oIGiLdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBoYHViaGQpgZR9lChoBWgGaAddlChoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jA5Nb2R1bGUgRGV0YWlsc5SFlIGUfZQoaAVoBmggaiIBAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMA2lkNpRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjA5tb2R1bGUtZGV0YWlsc5R1aBxobWgdTmgfTmggah8BAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGocAQAAdWJoXymBlH2UKGgFaAZoB12UKGhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jAxCTE9DS19SRVdBUkSUhZSBlH2UKGgFaAZoIGpBAQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjANpZDeUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwMYmxvY2stcmV3YXJklHVoHGhtaB1OaB9OaCBqPgEAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggajsBAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGo4AQAAdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wbR0FTX0xJTUlUX0FESlVTVE1FTlRfRkFDVE9SlIWUgZR9lChoBWgGaCBqYwEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwDaWQ4lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMG2dhcy1saW1pdC1hZGp1c3RtZW50LWZhY3RvcpR1aBxobWgdTmgfTmggamABAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpdAQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MEUdBU19MSU1JVF9NSU5JTVVNlIWUgZR9lChoBWgGaCBqhQEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwDaWQ5lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMEWdhcy1saW1pdC1taW5pbXVtlHVoHGhtaB1OaB9OaCBqggEAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggan8BAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGo4AQAAdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wSTUlOSU1VTV9ESUZGSUNVTFRZlIWUgZR9lChoBWgGaCBqpwEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxMJRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBJtaW5pbXVtLWRpZmZpY3VsdHmUdWgcaG1oHU5oH05oIGqkAQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqoQEAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggajgBAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jA9NQVhfT01NRVJfREVQVEiUhZSBlH2UKGgFaAZoIGrJAQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDExlGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMD21heC1vbW1lci1kZXB0aJR1aBxobWgdTmgfTmggasYBAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGrDAQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MEUJPTUJfREVMQVlfQkxPQ0tTlIWUgZR9lChoBWgGaCBq6wEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxMpRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBFib21iLWRlbGF5LWJsb2Nrc5R1aBxobWgdTmgfTmggaugBAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGrlAQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MEEVNUFRZX09NTUVSX0hBU0iUhZSBlH2UKGgFaAZoIGoNAgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDEzlGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMEGVtcHR5LW9tbWVyLWhhc2iUdWgcaG1oHU5oH05oIGoKAgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqBwIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggajgBAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jApCbG9ja0NoYWlulIWUgZR9lChoBWgGaCBqLwIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxNJRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjApibG9ja2NoYWlulHVoHGhtaB1OaB9OaCBqLAIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaikCAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGo4AQAAdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wKYXBwbHlfZm9ya5SFlIGUfZQoaAVoBmggalECAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMTWUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwKYXBwbHktZm9ya5R1aBxobWgdTmgfTmggak4CAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpLAgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MGWdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXOUhZSBlH2UKGgFaAZoIGpzAgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDE2lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMGWdldC1sYXN0LTI1Ni1ibG9jay1oYXNoZXOUdWgcaG1oHU5oH05oIGpwAgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqbQIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggajgBAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBBzdGF0ZV90cmFuc2l0aW9ulIWUgZR9lChoBWgGaCBqlQIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxN5RhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBBzdGF0ZS10cmFuc2l0aW9ulHVoHGhtaB1OaB9OaCBqkgIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggao8CAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGo4AQAAdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wPdmFsaWRhdGVfaGVhZGVylIWUgZR9lChoBWgGaCBqtwIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxOJRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjA92YWxpZGF0ZS1oZWFkZXKUdWgcaG1oHU5oH05oIGq0AgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqsQIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggajgBAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBxnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lIWUgZR9lChoBWgGaCBq2QIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxOZRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBxnZW5lcmF0ZS1oZWFkZXItaGFzaC1mb3ItcG93lHVoHGhtaB1OaB9OaCBq1gIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggatMCAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGo4AQAAdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wWdmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5SFlIGUfZQoaAVoBmggavsCAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMjCUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwWdmFsaWRhdGUtcHJvb2Ytb2Ytd29ya5R1aBxobWgdTmgfTmggavgCAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGr1AgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MCmFwcGx5X2JvZHmUhZSBlH2UKGgFaAZoIGodAwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDIxlGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMCmFwcGx5LWJvZHmUdWgcaG1oHU5oH05oIGoaAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqFwMAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggajgBAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jA92YWxpZGF0ZV9vbW1lcnOUhZSBlH2UKGgFaAZoIGo/AwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDIylGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMD3ZhbGlkYXRlLW9tbWVyc5R1aBxobWgdTmgfTmggajwDAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGo5AwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MC3BheV9yZXdhcmRzlIWUgZR9lChoBWgGaCBqYQMAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQyM5RhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjAtwYXktcmV3YXJkc5R1aBxobWgdTmgfTmggal4DAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpbAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+ME3Byb2Nlc3NfdHJhbnNhY3Rpb26UhZSBlH2UKGgFaAZoIGqDAwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDI0lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSME3Byb2Nlc3MtdHJhbnNhY3Rpb26UdWgcaG1oHU5oH05oIGqAAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqfQMAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggajgBAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBR2YWxpZGF0ZV90cmFuc2FjdGlvbpSFlIGUfZQoaAVoBmggaqUDAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMjWUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwUdmFsaWRhdGUtdHJhbnNhY3Rpb26UdWgcaG1oHU5oH05oIGqiAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqnwMAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggajgBAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBhjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUhZSBlH2UKGgFaAZoIGrHAwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDI2lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMGGNhbGN1bGF0ZS1pbnRyaW5zaWMtY29zdJR1aBxobWgdTmgfTmggasQDAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGrBAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MDnJlY292ZXJfc2VuZGVylIWUgZR9lChoBWgGaCBq6QMAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQyN5RhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjA5yZWNvdmVyLXNlbmRlcpR1aBxobWgdTmgfTmggauYDAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGrjAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+ME3NpZ25pbmdfaGFzaF9wcmUxNTWUhZSBlH2UKGgFaAZoIGoLBAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDI4lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSME3NpZ25pbmctaGFzaC1wcmUxNTWUdWgcaG1oHU5oH05oIGoIBAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqBQQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggajgBAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBBzaWduaW5nX2hhc2hfMTU1lIWUgZR9lChoBWgGaCBqLQQAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQyOZRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBBzaWduaW5nLWhhc2gtMTU1lHVoHGhtaB1OaB9OaCBqKgQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaicEAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGo4AQAAdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wTY29tcHV0ZV9oZWFkZXJfaGFzaJSFlIGUfZQoaAVoBmggak8EAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMzCUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwTY29tcHV0ZS1oZWFkZXItaGFzaJR1aBxobWgdTmgfTmggakwEAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpJBAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBqOAEAAHViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MD2NoZWNrX2dhc19saW1pdJSFlIGUfZQoaAVoBmgganEEAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMzGUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwPY2hlY2stZ2FzLWxpbWl0lHVoHGhtaB1OaB9OaCBqbgQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggamsEAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGo4AQAAdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4waY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHmUhZSBlH2UKGgFaAZoIGqTBAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDMylGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMGmNhbGN1bGF0ZS1ibG9jay1kaWZmaWN1bHR5lHVoHGhtaB1OaB9OaCBqkAQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggao0EAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGo4AQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGheaB1OaB9OaCBqHAEAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggaGB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaF5oHU5oH05oIGhNdWJlaA59lChoEF2UjBF0YWJsZS1vZi1jb250ZW50c5RhaBNdlCiMCGNvbnRlbnRzlIwFbG9jYWyUZWgVXZSMEXRhYmxlIG9mIGNvbnRlbnRzlGFoF12UaBldlHVoHGhLaB1oHmgfSwhoIGg1aCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjAxJbnRyb2R1Y3Rpb26UaAddlGg/jAxJbnRyb2R1Y3Rpb26UhZSBlH2UKGgFaAZoIGrOBAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfSwtoIGrLBAAAdWJoaSmBlH2UKGgFjCtFbnRyeSBwb2ludCBmb3IgdGhlIEV0aGVyZXVtIHNwZWNpZmljYXRpb24ulGgHXZRoP4wrRW50cnkgcG9pbnQgZm9yIHRoZSBFdGhlcmV1bSBzcGVjaWZpY2F0aW9uLpSFlIGUfZQoaAVoBmggatwEAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9LDWggassEAAB1YmgAjAdjb21tZW50lJOUKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUjAhwcmVzZXJ2ZZR1aBxq6gQAAGgdTmgfTmggassEAAB1YmVoDn2UKGgQXZRofmFoE12UaBVdlIwMaW50cm9kdWN0aW9ulGFoF12UaBldlHVoHGgzaB1oHmgfSwtoIGg1aCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjA9Nb2R1bGUgQ29udGVudHOUaAddlGg/jA9Nb2R1bGUgQ29udGVudHOUhZSBlH2UKGgFaAZoIGoBBQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfSxNoIGr+BAAAdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMB0NsYXNzZXOUaAddlGg/jAdDbGFzc2VzlIWUgZR9lChoBWgGaCBqEgUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0sWaCBqDwUAAHViaCKMEHRhYnVsYXJfY29sX3NwZWOUk5QpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBHNwZWOUjBBcWHsxfXsyfVxYezF9ezJ9lHVoHGogBQAAaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6Mjk6PGF1dG9zdW1tYXJ5PpRoH05oIGoPBQAAdWKMFnNwaGlueC5leHQuYXV0b3N1bW1hcnmUjBFhdXRvc3VtbWFyeV90YWJsZZSTlCmBlH2UKGgFjD0KCgoKQmxvY2tDaGFpbgoKSGlzdG9yeSBhbmQgY3VycmVudCBzdGF0ZSBvZiB0aGUgYmxvY2sgY2hhaW4ulGgHXZRoAIwFdGFibGWUk5QpgZR9lChoBWgGaAddlGgAjAZ0Z3JvdXCUk5QpgZR9lChoBWgGaAddlChoAIwHY29sc3BlY5STlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIY29sd2lkdGiUSwp1aBxqPwUAAGgdTmgfTmggajwFAAB1YmpABQAAKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhjb2x3aWR0aJRLWnVoHGo/BQAAaB1OaB9OaCBqPAUAAHViaACMBXRib2R5lJOUKYGUfZQoaAVoBmgHXZRoAIwDcm93lJOUKYGUfZQoaAVoBmgHXZQoaACMBWVudHJ5lJOUKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDw6b2JqOmBCbG9ja0NoYWluIDxldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLkJsb2NrQ2hhaW4+YFyUaAddlChobimBlH2UKGgFaAZoB12UaACMB2xpdGVyYWyUk5QpgZR9lChoBYw7Om9iajpgQmxvY2tDaGFpbiA8ZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy5CbG9ja0NoYWluPmCUaAddlGg/jApCbG9ja0NoYWlulIWUgZR9lChoBWgGaCBqbQUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQojAR4cmVmlIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGprBQAAaB1OaB9OaCBqaAUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwnZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy5CbG9ja0NoYWlulIwIcmVmdGl0bGWUjCdldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLkJsb2NrQ2hhaW6UdWgcaG1oHU5oH05oIGpkBQAAdWJoP2gGhZSBlH2UKGgFaAZoIGpkBQAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6Mjk6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqYQUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggalwFAAB1YmpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjC1IaXN0b3J5IGFuZCBjdXJyZW50IHN0YXRlIG9mIHRoZSBibG9jayBjaGFpbi6UaAddlGg/jC1IaXN0b3J5IGFuZCBjdXJyZW50IHN0YXRlIG9mIHRoZSBibG9jayBjaGFpbi6UhZSBlH2UKGgFaAZoIGqcBQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1qLQUAAGgfSwFoIGqZBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpfBQAAaB1OaB9OaCBqXAUAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWgUAAGgdTmgfTmggalcFAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalUFAABoHU5oH05oIGo8BQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwEY29sc5RLAnVoHGo6BQAAaB1OaB9OaCBqNwUAAHViYWgOfZQoaBBdlGgTXZSMCWxvbmd0YWJsZZRhaBVdlGgXXZRoGV2UdWgcajUFAABoHU5oH05oIGoxBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGr2BAAAdWgcai8FAABoHWotBQAAaB9OaCBqDwUAAHViZWgOfZQoaBBdlGi/YWgTXZRoFV2UjAdjbGFzc2VzlGFoF12UaBldlHVoHGgzaB1oHmgfSxZoIGr+BAAAdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMCUZ1bmN0aW9uc5RoB12UaD+MCUZ1bmN0aW9uc5SFlIGUfZQoaAVoBmggatsFAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9LH2ggatgFAAB1YmohBQAAKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjARzcGVjlGosBQAAdWgcaiAFAABoHYx1L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfTmggatgFAAB1YmowBQAAKYGUfZQoaAVYFQUAAAoKCgphcHBseV9mb3JrCgpUcmFuc2Zvcm1zIHRoZSBzdGF0ZSBmcm9tIHRoZSBwcmV2aW91cyBoYXJkIGZvcmsgKG9sZCkgaW50byB0aGUgYmxvY2sKCmdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMKCk9idGFpbiB0aGUgbGlzdCBvZiBoYXNoZXMgb2YgdGhlIHByZXZpb3VzIDI1NiBibG9ja3MgaW4gb3JkZXIgb2YKCnN0YXRlX3RyYW5zaXRpb24KCkF0dGVtcHRzIHRvIGFwcGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4uCgp2YWxpZGF0ZV9oZWFkZXIKClZlcmlmaWVzIGEgYmxvY2sgaGVhZGVyLgoKZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdwoKR2VuZXJhdGUgcmxwIGhhc2ggb2YgdGhlIGhlYWRlciB3aGljaCBpcyB0byBiZSB1c2VkIGZvciBQcm9vZi1vZi1Xb3JrCgp2YWxpZGF0ZV9wcm9vZl9vZl93b3JrCgpWYWxpZGF0ZXMgdGhlIFByb29mIG9mIFdvcmsgY29uc3RyYWludHMuCgphcHBseV9ib2R5CgpFeGVjdXRlcyBhIGJsb2NrLgoKdmFsaWRhdGVfb21tZXJzCgpWYWxpZGF0ZXMgdGhlIG9tbWVycyBtZW50aW9uZWQgaW4gdGhlIGJsb2NrLgoKcGF5X3Jld2FyZHMKClBheSByZXdhcmRzIHRvIHRoZSBibG9jayBtaW5lciBhcyB3ZWxsIGFzIHRoZSBvbW1lcnMgbWluZXJzLgoKcHJvY2Vzc190cmFuc2FjdGlvbgoKRXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGVudmlyb25tZW50LgoKdmFsaWRhdGVfdHJhbnNhY3Rpb24KClZlcmlmaWVzIGEgdHJhbnNhY3Rpb24uCgpjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QKCkNhbGN1bGF0ZXMgdGhlIGdhcyB0aGF0IGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBpcyBzdGFydGVkLgoKcmVjb3Zlcl9zZW5kZXIKCkV4dHJhY3RzIHRoZSBzZW5kZXIgYWRkcmVzcyBmcm9tIGEgdHJhbnNhY3Rpb24uCgpzaWduaW5nX2hhc2hfcHJlMTU1CgpDb21wdXRlIHRoZSBoYXNoIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCBpbiBhIGxlZ2FjeSAocHJlIEVJUCAxNTUpIHNpZ25hdHVyZS4KCnNpZ25pbmdfaGFzaF8xNTUKCkNvbXB1dGUgdGhlIGhhc2ggb2YgYSB0cmFuc2FjdGlvbiB1c2VkIGluIGEgRUlQIDE1NSBzaWduYXR1cmUuCgpjb21wdXRlX2hlYWRlcl9oYXNoCgpDb21wdXRlcyB0aGUgaGFzaCBvZiBhIGJsb2NrIGhlYWRlci4KCmNoZWNrX2dhc19saW1pdAoKVmFsaWRhdGVzIHRoZSBnYXMgbGltaXQgZm9yIGEgYmxvY2suCgpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0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lChoBWgGaCBqiAYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoangFAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqawUAAGgdTmgfTmggaoUGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMNmV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMuZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlc5SMCHJlZnRpdGxllIw2ZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy5nZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzlHVoHGhtaB1OaB9OaCBqgQYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2NvbnN0YW50aW5vcGxlL3NwZWMvaW5kZXgucnN0OjU2OjxhdXRvc3VtbWFyeT6UaB9LAWggan4GAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal8FAABoHU5oH05oIGp7BgAAdWJqYAUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxAT2J0YWluIHRoZSBsaXN0IG9mIGhhc2hlcyBvZiB0aGUgcHJldmlvdXMgMjU2IGJsb2NrcyBpbiBvcmRlciBvZpRoB12UaD+MQE9idGFpbiB0aGUgbGlzdCBvZiBoYXNoZXMgb2YgdGhlIHByZXZpb3VzIDI1NiBibG9ja3MgaW4gb3JkZXIgb2aUhZSBlH2UKGgFaAZoIGqyBgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6NTY6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqrwYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggansGAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaloFAABoHU5oH05oIGoSBgAAdWJqWwUAACmBlH2UKGgFaAZoB12UKGpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEc6b2JqOmBzdGF0ZV90cmFuc2l0aW9uIDxldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLnN0YXRlX3RyYW5zaXRpb24+YJRoB12UaG4pgZR9lChoBWgGaAddlGpsBQAAKYGUfZQoaAVq1QYAAGgHXZRoP4wQc3RhdGVfdHJhbnNpdGlvbpSFlIGUfZQoaAVoBmggatoGAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp4BQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcamsFAABoHU5oH05oIGrXBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjC1ldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLnN0YXRlX3RyYW5zaXRpb26UjAhyZWZ0aXRsZZSMLWV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMuc3RhdGVfdHJhbnNpdGlvbpR1aBxobWgdTmgfTmggatMGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx1L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGrQBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpfBQAAaB1OaB9OaCBqzQYAAHViamAFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMNUF0dGVtcHRzIHRvIGFwcGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4ulGgHXZRoP4w1QXR0ZW1wdHMgdG8gYXBwbHkgYSBibG9jayB0byBhbiBleGlzdGluZyBibG9jayBjaGFpbi6UhZSBlH2UKGgFaAZoIGoEBwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6NTY6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqAQcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggas0GAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaloFAABoHU5oH05oIGoSBgAAdWJqWwUAACmBlH2UKGgFaAZoB12UKGpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEU6b2JqOmB2YWxpZGF0ZV9oZWFkZXIgPGV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMudmFsaWRhdGVfaGVhZGVyPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqbAUAACmBlH2UKGgFaicHAABoB12UaD+MD3ZhbGlkYXRlX2hlYWRlcpSFlIGUfZQoaAVoBmggaiwHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp4BQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcamsFAABoHU5oH05oIGopBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjCxldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLnZhbGlkYXRlX2hlYWRlcpSMCHJlZnRpdGxllIwsZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy52YWxpZGF0ZV9oZWFkZXKUdWgcaG1oHU5oH05oIGolBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6NTY6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqIgcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggah8HAAB1YmpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjBhWZXJpZmllcyBhIGJsb2NrIGhlYWRlci6UaAddlGg/jBhWZXJpZmllcyBhIGJsb2NrIGhlYWRlci6UhZSBlH2UKGgFaAZoIGpWBwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6NTY6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqUwcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggah8HAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaloFAABoHU5oH05oIGoSBgAAdWJqWwUAACmBlH2UKGgFaAZoB12UKGpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjF86b2JqOmBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93IDxldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3c+YJRoB12UaG4pgZR9lChoBWgGaAddlGpsBQAAKYGUfZQoaAVqeQcAAGgHXZRoP4wcZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3Bvd5SFlIGUfZQoaAVoBmggan4HAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp4BQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcamsFAABoHU5oH05oIGp7BwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDlldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUjAhyZWZ0aXRsZZSMOWV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMuZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3Bvd5R1aBxobWgdTmgfTmggancHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx1L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGp0BwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpfBQAAaB1OaB9OaCBqcQcAAHViamAFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMRUdlbmVyYXRlIHJscCBoYXNoIG9mIHRoZSBoZWFkZXIgd2hpY2ggaXMgdG8gYmUgdXNlZCBmb3IgUHJvb2Ytb2YtV29ya5RoB12UaD+MRUdlbmVyYXRlIHJscCBoYXNoIG9mIHRoZSBoZWFkZXIgd2hpY2ggaXMgdG8gYmUgdXNlZCBmb3IgUHJvb2Ytb2YtV29ya5SFlIGUfZQoaAVoBmggaqgHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx1L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGqlBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpfBQAAaB1OaB9OaCBqcQcAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWgUAAGgdTmgfTmggahIGAAB1YmpbBQAAKYGUfZQoaAVoBmgHXZQoamAFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMUzpvYmo6YHZhbGlkYXRlX3Byb29mX29mX3dvcmsgPGV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMudmFsaWRhdGVfcHJvb2Zfb2Zfd29yaz5glGgHXZRobimBlH2UKGgFaAZoB12UamwFAAApgZR9lChoBWrLBwAAaAddlGg/jBZ2YWxpZGF0ZV9wcm9vZl9vZl93b3JrlIWUgZR9lChoBWgGaCBq0AcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoangFAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqawUAAGgdTmgfTmggas0HAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMM2V0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMudmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5SMCHJlZnRpdGxllIwzZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy52YWxpZGF0ZV9wcm9vZl9vZl93b3JrlHVoHGhtaB1OaB9OaCBqyQcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2NvbnN0YW50aW5vcGxlL3NwZWMvaW5kZXgucnN0OjU2OjxhdXRvc3VtbWFyeT6UaB9LAWggasYHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal8FAABoHU5oH05oIGrDBwAAdWJqYAUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwoVmFsaWRhdGVzIHRoZSBQcm9vZiBvZiBXb3JrIGNvbnN0cmFpbnRzLpRoB12UaD+MKFZhbGlkYXRlcyB0aGUgUHJvb2Ygb2YgV29yayBjb25zdHJhaW50cy6UhZSBlH2UKGgFaAZoIGr6BwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6NTY6PGF1dG9zdW1tYXJ5PpRoH0sBaCBq9wcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggasMHAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaloFAABoHU5oH05oIGoSBgAAdWJqWwUAACmBlH2UKGgFaAZoB12UKGpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDs6b2JqOmBhcHBseV9ib2R5IDxldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLmFwcGx5X2JvZHk+YJRoB12UaG4pgZR9lChoBWgGaAddlGpsBQAAKYGUfZQoaAVqHQgAAGgHXZRoP4wKYXBwbHlfYm9keZSFlIGUfZQoaAVoBmggaiIIAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp4BQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcamsFAABoHU5oH05oIGofCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjCdldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLmFwcGx5X2JvZHmUjAhyZWZ0aXRsZZSMJ2V0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMuYXBwbHlfYm9keZR1aBxobWgdTmgfTmggahsIAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx1L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGoYCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpfBQAAaB1OaB9OaCBqFQgAAHViamAFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMEUV4ZWN1dGVzIGEgYmxvY2sulGgHXZRoP4wRRXhlY3V0ZXMgYSBibG9jay6UhZSBlH2UKGgFaAZoIGpMCAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6NTY6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqSQgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggahUIAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaloFAABoHU5oH05oIGoSBgAAdWJqWwUAACmBlH2UKGgFaAZoB12UKGpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEU6b2JqOmB2YWxpZGF0ZV9vbW1lcnMgPGV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMudmFsaWRhdGVfb21tZXJzPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqbAUAACmBlH2UKGgFam8IAABoB12UaD+MD3ZhbGlkYXRlX29tbWVyc5SFlIGUfZQoaAVoBmgganQIAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp4BQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcamsFAABoHU5oH05oIGpxCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjCxldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLnZhbGlkYXRlX29tbWVyc5SMCHJlZnRpdGxllIwsZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy52YWxpZGF0ZV9vbW1lcnOUdWgcaG1oHU5oH05oIGptCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6NTY6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqaggAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggamcIAAB1YmpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjCxWYWxpZGF0ZXMgdGhlIG9tbWVycyBtZW50aW9uZWQgaW4gdGhlIGJsb2NrLpRoB12UaD+MLFZhbGlkYXRlcyB0aGUgb21tZXJzIG1lbnRpb25lZCBpbiB0aGUgYmxvY2sulIWUgZR9lChoBWgGaCBqnggAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2NvbnN0YW50aW5vcGxlL3NwZWMvaW5kZXgucnN0OjU2OjxhdXRvc3VtbWFyeT6UaB9LAWggapsIAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal8FAABoHU5oH05oIGpnCAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpaBQAAaB1OaB9OaCBqEgYAAHVialsFAAApgZR9lChoBWgGaAddlChqYAUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw9Om9iajpgcGF5X3Jld2FyZHMgPGV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMucGF5X3Jld2FyZHM+YJRoB12UaG4pgZR9lChoBWgGaAddlGpsBQAAKYGUfZQoaAVqwQgAAGgHXZRoP4wLcGF5X3Jld2FyZHOUhZSBlH2UKGgFaAZoIGrGCAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqeAUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGprBQAAaB1OaB9OaCBqwwgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwoZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy5wYXlfcmV3YXJkc5SMCHJlZnRpdGxllIwoZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy5wYXlfcmV3YXJkc5R1aBxobWgdTmgfTmggar8IAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx1L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGq8CAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpfBQAAaB1OaB9OaCBquQgAAHViamAFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMPFBheSByZXdhcmRzIHRvIHRoZSBibG9jayBtaW5lciBhcyB3ZWxsIGFzIHRoZSBvbW1lcnMgbWluZXJzLpRoB12UaD+MPFBheSByZXdhcmRzIHRvIHRoZSBibG9jayBtaW5lciBhcyB3ZWxsIGFzIHRoZSBvbW1lcnMgbWluZXJzLpSFlIGUfZQoaAVoBmggavAIAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx1L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGrtCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpfBQAAaB1OaB9OaCBquQgAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqWgUAAGgdTmgfTmggahIGAAB1YmpbBQAAKYGUfZQoaAVoBmgHXZQoamAFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMTTpvYmo6YHByb2Nlc3NfdHJhbnNhY3Rpb24gPGV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMucHJvY2Vzc190cmFuc2FjdGlvbj5glGgHXZRobimBlH2UKGgFaAZoB12UamwFAAApgZR9lChoBWoTCQAAaAddlGg/jBNwcm9jZXNzX3RyYW5zYWN0aW9ulIWUgZR9lChoBWgGaCBqGAkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoangFAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqawUAAGgdTmgfTmggahUJAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMMGV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMucHJvY2Vzc190cmFuc2FjdGlvbpSMCHJlZnRpdGxllIwwZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy5wcm9jZXNzX3RyYW5zYWN0aW9ulHVoHGhtaB1OaB9OaCBqEQkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2NvbnN0YW50aW5vcGxlL3NwZWMvaW5kZXgucnN0OjU2OjxhdXRvc3VtbWFyeT6UaB9LAWggag4JAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal8FAABoHU5oH05oIGoLCQAAdWJqYAUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw3RXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGVudmlyb25tZW50LpRoB12UaD+MN0V4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBlbnZpcm9ubWVudC6UhZSBlH2UKGgFaAZoIGpCCQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6NTY6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqPwkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggagsJAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaloFAABoHU5oH05oIGoSBgAAdWJqWwUAACmBlH2UKGgFaAZoB12UKGpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjE86b2JqOmB2YWxpZGF0ZV90cmFuc2FjdGlvbiA8ZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy52YWxpZGF0ZV90cmFuc2FjdGlvbj5glGgHXZRobimBlH2UKGgFaAZoB12UamwFAAApgZR9lChoBWplCQAAaAddlGg/jBR2YWxpZGF0ZV90cmFuc2FjdGlvbpSFlIGUfZQoaAVoBmggamoJAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp4BQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcamsFAABoHU5oH05oIGpnCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDFldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLnZhbGlkYXRlX3RyYW5zYWN0aW9ulIwIcmVmdGl0bGWUjDFldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLnZhbGlkYXRlX3RyYW5zYWN0aW9ulHVoHGhtaB1OaB9OaCBqYwkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2NvbnN0YW50aW5vcGxlL3NwZWMvaW5kZXgucnN0OjU2OjxhdXRvc3VtbWFyeT6UaB9LAWggamAJAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcal8FAABoHU5oH05oIGpdCQAAdWJqYAUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwXVmVyaWZpZXMgYSB0cmFuc2FjdGlvbi6UaAddlGg/jBdWZXJpZmllcyBhIHRyYW5zYWN0aW9uLpSFlIGUfZQoaAVoBmggapQJAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx1L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1h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dWgcaloFAABoHU5oH05oIGpHDAAAdWJqWwUAACmBlH2UKGgFaAZoB12UKGpgBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjF46b2JqOmBHQVNfTElNSVRfQURKVVNUTUVOVF9GQUNUT1IgPGV0aGVyZXVtLmNvbnN0YW50aW5vcGxlLnNwZWMuR0FTX0xJTUlUX0FESlVTVE1FTlRfRkFDVE9SPmBclGgHXZQoaG4pgZR9lChoBWgGaAddlGpsBQAAKYGUfZQoaAWMXTpvYmo6YEdBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUiA8ZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy5HQVNfTElNSVRfQURKVVNUTUVOVF9GQUNUT1I+YJRoB12UaD+MG0dBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUpSFlIGUfZQoaAVoBmggaqcMAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp4BQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcamsFAABoHU5oH05oIGqkDAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDhldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLkdBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUpSMCHJlZnRpdGxllIw4ZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy5HQVNfTElNSVRfQURKVVNUTUVOVF9GQUNUT1KUdWgcaG1oHU5oH05oIGqgDAAAdWJoP2gGhZSBlH2UKGgFaAZoIGqgDAAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MdS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy9pbmRleC5yc3Q6NzA6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqnQwAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXwUAAGgdTmgfTmggapoMAAB1YmpgBQAAKYGUfZQoaAVoBmgH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AGgdTmgfTmggaooVAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagEPAABoHWgeaB9OaCBqRhUAAHViZWgOfZQoaBBdlGgTXZQoaoMVAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqgxUAAIwHb2JqdHlwZZRqjhYAAIwIZGVzY3R5cGWUao4WAACMB25vaW5kZXiUiXVoHGrTDgAAaB1OaB9OaCBqKhUAAHViahgPAAApgZR9lChoBVjfAgAAZGVmIGdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMoY2hhaW46IEJsb2NrQ2hhaW4pIC0+IExpc3RbSGFzaDMyXToKICAgIHJlY2VudF9ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLTI1NTpdCiAgICAjIFRPRE86IFRoaXMgZnVuY3Rpb24gaGFzIG5vdCBiZWVuIHRlc3RlZCByaWdvcm91c2x5CiAgICBpZiBsZW4ocmVjZW50X2Jsb2NrcykgPT0gMDoKICAgICAgICByZXR1cm4gW10KCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzID0gW10KCiAgICBmb3IgYmxvY2sgaW4gcmVjZW50X2Jsb2NrczoKICAgICAgICBwcmV2X2Jsb2NrX2hhc2ggPSBibG9jay5oZWFkZXIucGFyZW50X2hhc2gKICAgICAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChwcmV2X2Jsb2NrX2hhc2gpCgogICAgIyBXZSBhcmUgY29tcHV0aW5nIHRoZSBoYXNoIG9ubHkgZm9yIHRoZSBtb3N0IHJlY2VudCBibG9jayBhbmQgbm90IGZvcgogICAgIyB0aGUgcmVzdCBvZiB0aGUgYmxvY2tzIGFzIHRoZXkgaGF2ZSBzdWNjZXNzb3JzIHdoaWNoIGhhdmUgdGhlIGhhc2ggb2YKICAgICMgdGhlIGN1cnJlbnQgYmxvY2sgYXMgcGFyZW50IGhhc2guCiAgICBtb3N0X3JlY2VudF9ibG9ja19oYXNoID0ga2VjY2FrMjU2KHJscC5lbmNvZGUocmVjZW50X2Jsb2Nrc1stMV0uaGVhZGVyKSkKICAgIHJlY2VudF9ibG9ja19oYXNoZXMuYXBwZW5kKG1vc3RfcmVjZW50X2Jsb2NrX2hhc2gpCgogICAgcmV0dXJuIHJlY2VudF9ibG9ja19oYXNoZXMKlGgHXZRoP1jfAgAAZGVmIGdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMoY2hhaW46IEJsb2NrQ2hhaW4pIC0+IExpc3RbSGFzaDMyXToKICAgIHJlY2VudF9ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLTI1NTpdCiAgICAjIFRPRE86IFRoaXMgZnVuY3Rpb24gaGFzIG5vdCBiZWVuIHRlc3RlZCByaWdvcm91c2x5CiAgICBpZiBsZW4ocmVjZW50X2Jsb2NrcykgPT0gMDoKICAgICAgICByZXR1cm4gW10KCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzID0gW10KCiAgICBmb3IgYmxvY2sgaW4gcmVjZW50X2Jsb2NrczoKICAgICAgICBwcmV2X2Jsb2NrX2hhc2ggPSBibG9jay5oZWFkZXIucGFyZW50X2hhc2gKICAgICAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChwcmV2X2Jsb2NrX2hhc2gpCgogICAgIyBXZSBhcmUgY29tcHV0aW5nIHRoZSBoYXNoIG9ubHkgZm9yIHRoZSBtb3N0IHJlY2VudCBibG9jayBhbmQgbm90IGZvcgogICAgIyB0aGUgcmVzdCBvZiB0aGUgYmxvY2tzIGFzIHRoZXkgaGF2ZSBzdWNjZXNzb3JzIHdoaWNoIGhhdmUgdGhlIGhhc2ggb2YKICAgICMgdGhlIGN1cnJlbnQgYmxvY2sgYXMgcGFyZW50IGhhc2guCiAgICBtb3N0X3JlY2VudF9ibG9ja19oYXNoID0ga2VjY2FrMjU2KHJscC5lbmNvZGUocmVjZW50X2Jsb2Nrc1stMV0uaGVhZGVyKSkKICAgIHJlY2VudF9ibG9ja19oYXNoZXMuYXBwZW5kKG1vc3RfcmVjZW50X2Jsb2NrX2hhc2gpCgogICAgcmV0dXJuIHJlY2VudF9ibG9ja19oYXNoZXMKlIWUgZR9lChoBWgGaCBqlhYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRp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Y2FsIHNlbnNlIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBwYXJlbnQgYmxvY2suIFRoZQppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sncyBoZWFkZXIgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UaAddlGg/WDUBAABBbGwgcGFydHMgb2YgdGhlIGJsb2Nr4oCZcyBjb250ZW50cyBuZWVkIHRvIGJlIHZlcmlmaWVkIGJlZm9yZSBiZWluZyBhZGRlZAp0byB0aGUgY2hhaW4uIEJsb2NrcyBhcmUgdmVyaWZpZWQgYnkgZW5zdXJpbmcgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlCmJsb2NrIG1ha2UgbG9naWNhbCBzZW5zZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IGJsb2NrLiBUaGUKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2Nr4oCZcyBoZWFkZXIgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UhZSBlH2UKGgFaAZoIGo9FwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTQoBaCBqLBcAAHViaGkpgZR9lChoBYz8VG8gaW1wbGVtZW50IEV0aGVyZXVtLCBpbiB0aGVvcnkgY2xpZW50cyBhcmUgb25seSByZXF1aXJlZCB0byBzdG9yZSB0aGUKbW9zdCByZWNlbnQgMjU1IGJsb2NrcyBvZiB0aGUgY2hhaW4gc2luY2UgYXMgZmFyIGFzIGV4ZWN1dGlvbiBpcwpjb25jZXJuZWQsIG9ubHkgdGhvc2UgYmxvY2tzIGFyZSBhY2Nlc3NlZC4gUHJhY3RpY2FsbHksIGhvd2V2ZXIsIGNsaWVudHMKc2hvdWxkIHN0b3JlIG1vcmUgYmxvY2tzIHRvIGhhbmRsZSByZW9yZ3MulGgHXZRoP4z8VG8gaW1wbGVtZW50IEV0aGVyZXVtLCBpbiB0aGVvcnkgY2xpZW50cyBhcmUgb25seSByZXF1aXJlZCB0byBzdG9yZSB0aGUKbW9zdCBy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Q2hhaW4sIGJsb2NrOiBCbG9jaykgLT4gTm9uZToKICAgIHBhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbLTFdLmhlYWRlcgogICAgdmFsaWRhdGVfaGVhZGVyKGJsb2NrLmhlYWRlciwgcGFyZW50X2hlYWRlcikKICAgIHZhbGlkYXRlX29tbWVycyhibG9jay5vbW1lcnMsIGJsb2NrLmhlYWRlciwgY2hhaW4pCiAgICAoCiAgICAgICAgZ2FzX3VzZWQsCiAgICAgICAgdHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgcmVjZWlwdF9yb290LAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApID0gYXBwbHlfYm9keSgKICAgICAgICBjaGFpbi5zdGF0ZSwKICAgICAgICBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluKSwKICAgICAgICBibG9jay5oZWFkZXIuY29pbmJhc2UsCiAgICAgICAgYmxvY2suaGVhZGVyLm51bWJlciwKICAgICAgICBibG9jay5oZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGJsb2NrLmhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgYmxvY2suaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgYmxvY2sudHJhbnNhY3Rpb25zLAogICAgICAgIGJsb2NrLm9tbWVycywKICAgICAgICBjaGFpbi5jaGFpbl9pZCwKICAgICkKICAgIGVuc3VyZShnYXNfdXNlZCA9PSBibG9jay5oZWFkZXIuZ2FzX3VzZWQsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSh0cmFuc2FjdGlvbnNfcm9vdCA9PSBibG9jay5oZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzdGF0ZV9yb290KHN0YXRlKSA9PSBibG9jay5oZWFkZXIuc3RhdGVfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHJlY2VpcHRfcm9vdCA9PSBibG9jay5oZWFkZXIucmVjZWlwdF9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoYmxvY2tfbG9nc19ibG9vbSA9PSBibG9jay5oZWFkZXIuYmxvb20sIEludmFsaWRCbG9jaykKCiAgICBjaGFpbi5ibG9ja3MuYXBwZW5kKGJsb2NrKQogICAgaWYgbGVuKGNoYWluLmJsb2NrcykgPiAyNTU6CiAgICAgICAgIyBSZWFsIGNsaWVudHMgaGF2ZSB0byBzdG9yZSBtb3JlIGJsb2NrcyB0byBkZWFsIHdpdGggcmVvcmdzLCBidXQgdGhlCiAgICAgICAgIyBwcm90b2NvbCBvbmx5IHJlcXVpcmVzIHRoZSBsYXN0IDI1NQogICAgICAgIGNoYWluLmJsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KlGgHXZRoP1jCBAAAZGVmIHN0YXRlX3RyYW5zaXRpb24oY2hhaW46IEJsb2NrQ2hhaW4sIGJsb2NrOiBCbG9jaykgLT4gTm9uZToKICAgIHBhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbLTFdLmhlYWRlcgogICAgdmFsaWRhdGVfaGVhZGVyKGJsb2NrLmhlYWRlciwgcGFyZW50X2hlYWRlcikKICAgIHZhbGlkYXRlX29tbWVycyhibG9jay5vbW1lcnMsIGJsb2NrLmhlYWRlciwgY2hhaW4pCiAgICAoCiAgICAgICAgZ2FzX3VzZWQsCiAgICAgICAgdHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgcmVjZWlwdF9yb290LAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApID0gYXBwbHlfYm9keSgKICAgICAgICBjaGFpbi5zdGF0ZSwKICAgICAgICBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluKSwKICAgICAgICBibG9jay5oZWFkZXIuY29pbmJhc2UsCiAgICAgICAgYmxvY2suaGVhZGVyLm51bWJlciwKICAgICAgICBibG9jay5oZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGJsb2NrLmhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgYmxvY2suaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgYmxvY2sudHJhbnNhY3Rpb25zLAogICAgICAgIGJsb2NrLm9tbWVycywKICAgICAgICBjaGFpbi5jaGFpbl9pZCwKICAgICkKICAgIGVuc3VyZShnYXNfdXNlZCA9PSBibG9jay5oZWFkZXIuZ2FzX3VzZWQsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSh0cmFuc2FjdGlvbnNfcm9vdCA9PSBibG9jay5oZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzdGF0ZV9yb290KHN0YXRlKSA9PSBibG9jay5oZWFkZXIuc3RhdGVfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHJlY2VpcHRfcm9vdCA9PSBibG9jay5oZWFkZXIucmVjZWlwdF9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoYmxvY2tfbG9nc19ibG9vbSA9PSBibG9jay5oZWFkZXIuYmxvb20sIEludmFsaWRCbG9jaykKCiAgICBjaGFpbi5ibG9ja3MuYXBwZW5kKGJsb2NrKQogICAgaWYgbGVuKGNoYWluLmJsb2NrcykgPiAyNTU6CiAgICAgICAgIyBSZWFsIGNsaWVudHMgaGF2ZSB0byBzdG9yZSBtb3JlIGJsb2NrcyB0byBkZWFsIHdpdGggcmVvcmdzLCBidXQgdGhlCiAgICAgICAgIyBwcm90b2NvbCBvbmx5IHJlcXVpcmVzIHRoZSBsYXN0IDI1NQogICAgICAgIGNoYWluLmJsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KlIWUgZR9lChoBWgGaCBq/hcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2NvbnN0YW50aW5vcGxlL3NwZWMucHmUjAl4bWw6c3BhY2WUavYEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqLw8AAEsBc4wHbGluZW5vc5SJdWgcahcPAABoHWgeaB9NGwFoIGq0FgAAdWJlaA59lChoEF2UaqQCAABhaBNd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IHBhcmVudF9oZWFkZXIudGltZXN0YW1wLAogICAgICAgIHBhcmVudF9oZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBwYXJlbnRfaGFzX29tbWVycywKICAgICkKICAgIGVuc3VyZShoZWFkZXIuZGlmZmljdWx0eSA9PSBibG9ja19kaWZmaWN1bHR5LCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfcGFyZW50X2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShwYXJlbnRfaGVhZGVyKSkKICAgIGVuc3VyZShoZWFkZXIucGFyZW50X2hhc2ggPT0gYmxvY2tfcGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKCiAgICB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcikKlGgHXZRoP1hjAwAAZGVmIHZhbGlkYXRlX2hlYWRlcihoZWFkZXI6IEhlYWRlciwgcGFyZW50X2hlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgcGFyZW50X2hhc19vbW1lcnMgPSBwYXJlbnRfaGVhZGVyLm9tbWVyc19oYXNoICE9IEVNUFRZX09NTUVSX0hBU0gKICAgIGVuc3VyZShoZWFkZXIudGltZXN0YW1wID4gcGFyZW50X2hlYWRlci50aW1lc3RhbXAsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShoZWFkZXIubnVtYmVyID09IHBhcmVudF9oZWFkZXIubnVtYmVyICsgMSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIGNoZWNrX2dhc19saW1pdChoZWFkZXIuZ2FzX2xpbWl0LCBwYXJlbnRfaGVhZGVyLmdhc19saW1pdCksCiAgICAgICAgSW52YWxpZEJsb2NrLAogICAgKQogICAgZW5zdXJlKGxlbihoZWFkZXIuZXh0cmFfZGF0YSkgPD0gMzIsIEludmFsaWRCbG9jaykKCiAgICBibG9ja19kaWZmaWN1bHR5ID0gY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkoCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIudGltZXN0YW1wLAogICAgICAgIHBhcmVudF9oZWFkZXIudGltZXN0YW1wLAogICAgICAgIHBhcmVudF9oZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBwYXJlbnRfaGFzX29tbWVycywKICAgICkKICAgIGVuc3VyZShoZWFkZXIuZGlmZmljdWx0eSA9PSBibG9ja19kaWZmaWN1bHR5LCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfcGFyZW50X2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShwYXJlbnRfaGVhZGVyKSkKICAgIGVuc3VyZShoZWFkZXIucGFyZW50X2hhc2ggPT0gYmxvY2tfcGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKCiAgICB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcikKlIWUgZR9lChoBWgGaCBqWhkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2NvbnN0YW50aW5vcGxlL3NwZWMucHmUjAl4bWw6c3BhY2WUavYEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqLw8AAEsBc4wHbGluZW5vc5SJdWgcahcPAABoHWgeaB9NNQFoIGocGAAAdWJlaA59lChoEF2UasYCAABhaBNdlGgVXZSMD3ZhbGlkYXRlX2hlYWRlcpRhaBddlGgZXZR1aBxoM2gdaB5oH00gAWggaqIOAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMHGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUaAddlGg/jBxnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lIWUgZR9lChoBWgGaCBqexkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH006AWggangZAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGp4GQAAdWJq1A4AACmB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YWRlcjogSGVhZGVyKSAtPiBIYXNoMzI6CiAgICBoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMgPSBbCiAgICAgICAgaGVhZGVyLnBhcmVudF9oYXNoLAogICAgICAgIGhlYWRlci5vbW1lcnNfaGFzaCwKICAgICAgICBoZWFkZXIuY29pbmJhc2UsCiAgICAgICAgaGVhZGVyLnN0YXRlX3Jvb3QsCiAgICAgICAgaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LAogICAgICAgIGhlYWRlci5yZWNlaXB0X3Jvb3QsCiAgICAgICAgaGVhZGVyLmJsb29tLAogICAgICAgIGhlYWRlci5kaWZmaWN1bHR5LAogICAgICAgIGhlYWRlci5udW1iZXIsCiAgICAgICAgaGVhZGVyLmdhc19saW1pdCwKICAgICAgICBoZWFkZXIuZ2FzX3VzZWQsCiAgICAgICAgaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBoZWFkZXIuZXh0cmFfZGF0YSwKICAgIF0KCiAgICByZXR1cm4gcmxwLnJscF9oYXNoKGhlYWRlcl9kYXRhX3dpdGhvdXRfcG93X2FydGVmYWN0cykKlGgHXZRoP1gDAgAAZGVmIGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3coaGVhZGVyOiBIZWFkZXIpIC0+IEhhc2gzMjoKICAgIGhlYWRlcl9kYXRhX3dpdGhvdXRfcG93X2FydGVmYWN0cyA9IFsKICAgICAgICBoZWFkZXIucGFyZW50X2hhc2gsCiAgICAgICAgaGVhZGVyLm9tbWVyc19oYXNoLAogICAgICAgIGhlYWRlci5jb2luYmFzZSwKICAgICAgICBoZWFkZXIuc3RhdGVfcm9vdCwKICAgICAgICBoZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgaGVhZGVyLnJlY2VpcHRfcm9vdCwKICAgICAgICBoZWFkZXIuYmxvb20sCiAgICAgICAgaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGhlYWRlci5nYXNfdXNlZCwKICAgICAgICBoZWFk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FV2UaBddlGgZXZR1aBxqAQ8AAGgdaB5oH05oIGpUGwAAdWJlaA59lChoEF2UaBNdlChqkRsAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGqRGwAAjAdvYmp0eXBllGo+HAAAjAhkZXNjdHlwZZRqPhwAAIwHbm9pbmRleJSJdWgcatMOAABoHU5oH05oIGo4GwAAdWJqGA8AACmBlH2UKGgFWDYCAABkZWYgdmFsaWRhdGVfcHJvb2Zfb2Zfd29yayhoZWFkZXI6IEhlYWRlcikgLT4gTm9uZToKICAgIGhlYWRlcl9oYXNoID0gZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdyhoZWFkZXIpCiAgICAjIFRPRE86IE1lbW9pemUgdGhpcyBzb21ld2hlcmUgYW5kIHJlYWQgZnJvbSB0aGF0IGRhdGEgaW5zdGVhZCBvZgogICAgIyBjYWxjdWxhdGluZyBjYWNoZSBmb3IgZXZlcnkgYmxvY2sgdmFsaWRhdGlvbi4KICAgIGNhY2hlID0gZ2VuZXJhdGVfY2FjaGUoaGVhZGVyLm51bWJlcikKICAgIG1peF9kaWdlc3QsIHJlc3VsdCA9IGhhc2hpbW90b19saWdodCgKICAgICAgICBoZWFkZXJfaGFzaCwgaGVhZGVyLm5vbmNlLCBjYWNoZSwgZGF0YXNldF9zaXplKGhlYWRlci5udW1iZXIpCiAgICApCgogICAgZW5zdXJlKG1peF9kaWdlc3QgPT0gaGVhZGVyLm1peF9kaWdlc3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgKICAgICAgICBVaW50LmZyb21fYmVfYnl0ZXMocmVzdWx0KSA8PSAoVTI1Nl9DRUlMX1ZBTFVFIC8vIGhlYWRlci5kaWZmaWN1bHR5KSwKICAgICAgICBJbnZhbGlkQmxvY2ssCiAgICApCpRoB12UaD9YNgIAAGRlZiB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgaGVhZGVyX2hhc2ggPSBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcikKICAgICMgVE9ETzogTWVtb2l6ZSB0aGlzIHNvbWV3aGVyZSBhbmQgcmVhZCBmcm9tIHRoYXQgZGF0YSBpbnN0ZWFkIG9mCiAgICAjIGNhbGN1bGF0aW5nIGNhY2hlIGZvciBldmVyeSBibG9jayB2YWxpZGF0aW9uLgogICAgY2FjaGUgPSBnZW5lcmF0ZV9jYWNoZShoZWFkZXIubnVtYmVyKQogICAgbWl4X2RpZ2VzdCwgcmVzdWx0ID0gaGFzaGltb3RvX2xpZ2h0KAogICAgICAgIGhlYWRlcl9oYXNoLCBoZWFkZXIubm9uY2UsIGNhY2hlLCBkYXRhc2V0X3NpemUoaGVhZGVyLm51bWJlcikKICAgICkKCiAgICBlbnN1cmUobWl4X2RpZ2VzdCA9PSBoZWFkZXIubWl4X2RpZ2VzdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIFVpbnQuZnJvbV9iZV9ieXRlcyhyZXN1bHQpIDw9IChVMjU2X0NFSUxfVkFMVUUgLy8gaGVhZGVyLmRpZmZpY3VsdHkpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKlIWUgZR9lChoBWgGaCBqRhwAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2NvbnN0YW50aW5vcGxlL3NwZWMucHmUjAl4bWw6c3BhY2WUavYEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqLw8AAEsBc4wHbGluZW5vc5SJdWgcahcPAABoHWgeaB9NawFoIGo4GwAAdWJlaA59lChoEF2UagoDAABhaBNdlGgVXZSMFnZhbGlkYXRlX3Byb29mX29mX3dvcmuUYWgXXZRoGV2UdWgcaDNoHWgeaB9NWAFoIGqiDgAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjAphcHBseV9ib2R5lGgHXZRoP4wKYXBwbHlfYm9keZSFlIGUfZQoaAVoBmggamccAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9N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AABoHWgeaB9LAGggancfAAB1YmpOFAAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFWNgBAABnYXNfYXZhaWxhYmxlIChldGhlcmV1bS5iYXNlX3R5cGVzLlVpbnQpIC0tIFJlbWFpbmluZyBnYXMgYWZ0ZXIgYWxsIHRyYW5zYWN0aW9ucyBoYXZlIGJlZW4gZXhlY3V0ZWQuCgp0cmFuc2FjdGlvbnNfcm9vdCAoZXRoZXJldW0uZXRoX3R5cGVzLlJvb3QpIC0tIFRyaWUgcm9vdCBvZiBhbGwgdGhlIHRyYW5zYWN0aW9ucyBpbiB0aGUgYmxvY2suCgpyZWNlaXB0X3Jvb3QgKGV0aGVyZXVtLmV0aF90eXBlcy5Sb290KSAtLSBUcmllIHJvb3Qgb2YgYWxsIHRoZSByZWNlaXB0cyBpbiB0aGUgYmxvY2suCgpibG9ja19sb2dzX2Jsb29tIChCbG9vbSkgLS0gTG9ncyBibG9vbSBvZiBhbGwgdGhlIGxvZ3MgaW5jbHVkZWQgaW4gYWxsIHRoZSB0cmFuc2FjdGlvbnMgb2YgdGhlCmJsb2NrLgoKc3RhdGUgKGV0aGVyZXVtLmV0aF90eXBlcy5TdGF0ZSkgLS0gU3RhdGUgYWZ0ZXIgYWxsIHRyYW5zYWN0aW9ucyBoYXZlIGJlZW4gZXhlY3V0ZWQulGgHXZRoXymBlH2UKGgFaAZoB12UKGhkKYGUfZQoaAWMaioqZ2FzX2F2YWlsYWJsZSoqIChgZXRoZXJldW0uYmFzZV90eXBlcy5VaW50YCkgLS0gUmVtYWluaW5nIGdhcyBhZnRlciBhbGwgdHJhbnNhY3Rpb25zIGhhdmUgYmVlbiBleGVjdXRlZC6UaAddlGhpKYGUfZQoaAVqlB8AAGgHXZQoapgUAAApgZR9lChoBYwRKipnYXNfYXZhaWxhYmxlKiqUaAddlGg/jA1nYXNfYXZhaWxhYmxllIWUgZR9lChoBWgGaCBqmR8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqlxQAAGgdTmgfTmggapYfAAB1Ymg/jAIgKJSFlIGUfZQoaAVoBmggapYfAABoIWgDaB1oRGgfSwB1YmpVBgAAKYGUfZQoaAWMGmBldGhlcmV1bS5iYXNlX3R5cGVz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aW1lOiBVMjU2LAogICAgYmxvY2tfZGlmZmljdWx0eTogVWludCwKICAgIHRyYW5zYWN0aW9uczogVHVwbGVbVHJhbnNhY3Rpb24sIC4uLl0sCiAgICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwKICAgIGNoYWluX2lkOiBVaW50NjQsCikgLT4gVHVwbGVbVWludCwgUm9vdCwgUm9vdCwgQmxvb20sIFN0YXRlXToKICAgIGdhc19hdmFpbGFibGUgPSBibG9ja19nYXNfbGltaXQKICAgIHRyYW5zYWN0aW9uc190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtUcmFuc2FjdGlvbl1dID0gVHJpZSgKICAgICAgICBzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUKICAgICkKICAgIHJlY2VpcHRzX3RyaWU6IFRyaWVbQnl0ZXMsIE9wdGlvbmFsW1JlY2VpcHRdXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICBibG9ja19sb2dzOiBUdXBsZVtMb2csIC4uLl0gPSAoKQoKICAgIGZvciBpLCB0eCBpbiBlbnVtZXJhdGUodHJhbnNhY3Rpb25zKToKICAgICAgICB0cmllX3NldCh0cmFuc2FjdGlvbnNfdHJpZSwgcmxwLmVuY29kZShVaW50KGkpKSwgdHgpCgogICAgICAgIGVuc3VyZSh0eC5nYXMgPD0gZ2FzX2F2YWlsYWJsZSwgSW52YWxpZEJsb2NrKQogICAgICAgIHNlbmRlcl9hZGRyZXNzID0gcmVjb3Zlcl9zZW5kZXIoY2hhaW5faWQsIHR4KQoKICAgICAgICBlbnYgPSB2bS5FbnZpcm9ubWVudCgKICAgICAgICAgICAgY2FsbGVyPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBvcmlnaW49c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIGJsb2NrX2hhc2hlcz1ibG9ja19oYXNoZXMsCiAgICAgICAgICAgIGNvaW5iYXNlPWNvaW5iYXNlLAogICAgICAgICAgICBudW1iZXI9YmxvY2tfbnVtYmVyLAogICAgICAgICAgICBnYXNfbGltaXQ9YmxvY2tfZ2FzX2xpbWl0LAogICAgICAgICAgICBnYXNfcHJpY2U9dHguZ2FzX3ByaWNlLAogICAgICAgICAgICB0aW1lPWJsb2NrX3RpbWUsCiAgICAgICAgICAgIGRpZmZpY3VsdHk9YmxvY2tfZGlmZmljdWx0eSwKICAgICAgICAgICAgc3RhdGU9c3RhdGUsCiAgICAgICAgKQoKICAgICAgICBnYXNfdXNlZCwgbG9ncywgaGFzX2VycmVkID0gcHJvY2Vzc190cmFuc2FjdGlvbihlbnYsIHR4KQogICAgICAgIGdhc19hdmFpbGFibGUgLT0gZ2FzX3VzZWQKCiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHJlY2VpcHRzX3RyaWUsCiAgICAgICAgICAgIHJscC5lbmNvZGUoVWludChpKSksCiAgICAgICAgICAgIFJlY2VpcHQoCiAgICAgICAgICAgICAgICBzdWNjZWVkZWQ9bm90IGhhc19lcnJlZCwKICAgICAgICAgICAgICAgIGN1bXVsYXRpdmVfZ2FzX3VzZWQ9KGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUpLAogICAgICAgICAgICAgICAgYmxvb209bG9nc19ibG9vbShsb2dzKSwKICAgICAgICAgICAgICAgIGxvZ3M9bG9ncywKICAgICAgICAgICAgKSwKICAgICAgICApCiAgICAgICAgYmxvY2tfbG9ncyArPSBsb2dzCgogICAgcGF5X3Jld2FyZHMoc3RhdGUsIGJsb2NrX251bWJlciwgY29pbmJhc2UsIG9tbWVycykKCiAgICBnYXNfcmVtYWluaW5nID0gYmxvY2tfZ2FzX2xpbWl0IC0gZ2FzX2F2YWlsYWJsZQoKICAgIGJsb2NrX2xvZ3NfYmxvb20gPSBsb2dzX2Jsb29tKGJsb2NrX2xvZ3MpCgogICAgcmV0dXJuICgKICAgICAgICBnYXNfcmVtYWluaW5nLAogICAgICAgIHJvb3QodHJhbnNhY3Rpb25zX3RyaWUpLAogICAgICAgIHJvb3QocmVjZWlwdHNfdHJpZSksCiAgICAgICAgYmxvY2tfbG9nc19ibG9vbSwKICAgICAgICBzdGF0ZSwKICAgICkKlGgHXZQoaD9YtwQAAGRlZiBhcHBseV9ib2R5KAogICAgc3RhdGU6IFN0YXRlLAogICAgYmxvY2tfaGFzaGVzOiBMaXN0W0hhc2gzMl0sCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIGJsb2NrX251bWJlcjogVWludCwKICAgIGJsb2NrX2dhc19saW1pdDogVWludCwKICAgIGJsb2NrX3RpbWU6IFUyNTYsCiAgICBibG9ja19kaWZmaWN1bHR5OiBVaW50LAogICAgdHJhbnNhY3Rpb25zOiBUdXBsZVtUcmFuc2FjdGlvbiwgLi4uXSwKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAogICAgY2hhaW5faWQ6IFVpbnQ2NCwKKSAtPiBUdXBsZVtVaW50LCBSb290LCBSb290LCBCbG9vbSwgU3RhdGVdOgogICAgZ2FzX2F2YWlsYWJsZSA9IGJsb2NrX2dhc19saW1pdAogICAgdHJhbnNhY3Rpb25zX3RyaWU6IFRyaWVbQnl0ZXMsIE9wdGlvbmFsW1RyYW5zYWN0aW9uXV0gPSBUcmllKAogICAgICAgIHNlY3VyZWQ9RmFsc2UsIGRlZmF1bHQ9Tm9uZQogICAgKQogICAgcmVjZWlwdHNfdHJpZTogVHJpZVtCeXRlcywgT3B0aW9uYWxbUmVjZWlwdF1dID0gVHJpZSgKICAgICAgICBzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUKICAgICkKICAgIGJsb2NrX2xvZ3M6IFR1cGxlW0xvZywgLi4uXSA9ICgpCgogICAgZm9yIGksIHR4IGluIGVudW1lcmF0ZSh0cmFuc2FjdGlvbnMpOgogICAgICAgIHRyaWVfc2V0KHRyYW5zYWN0aW9uc190cmllLCBybHAuZW5jb2RlKFVpbnQoaSkpLCB0eCkKCiAgICAgICAgZW5zdXJlKHR4LmdhcyA8PSBnYXNfYXZhaWxhYmxlLCBJbnZhbGlkQmxvY2spCiAgICAgICAgc2VuZGVyX2FkZHJlc3MgPSByZWNvdmVyX3NlbmRlcihjaGFpbl9pZCwgdHgpCgogICAgICAgIGVudiA9IHZtLkVudmlyb25tZW50KAogICAgICAgICAgICBjYWxsZXI9c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIG9yaWdpbj1zZW5kZXJfYWRkcmVzcywKICAgICAgICAgICAgYmxvY2tfaGFzaGVzPWJsb2NrX2hhc2hlcywKICAgICAgICAgICAgY29pbmJhc2U9Y29pbmJhc2UsCiAgICAgICAgICAgIG51bWJlcj1ibG9ja19udW1iZXIsCiAgICAgICAgICAgIGdhc19saW1pdD1ibG9ja19nYXNfbGltaXQsCiAgICAgICAgICAgIGdhc19wcmljZT10eC5nYXNfcHJpY2UsCiAgICAgICAgICAgIHRpbWU9YmxvY2tfdGltZSwKICAgICAgICAgICAgZGlmZmljdWx0eT1ibG9ja19kaWZmaWN1bHR5LAogICAgICAgICAgICBzdGF0ZT1zdGF0ZSwKICAgICAgICCUhZSBlH2UKGgFaAZoIGrXIAAAaCFoA2gdaERoH0sAdWJqZBIAACmBlH2UKGgFaAZoB12UaD+MG2NoYWluX2lkPWNoYWluX2lkLAogICAgICAgIJSFlIGUfZQoaAVoBmggat8gAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjAxjaGFuZ2UtYWRkZWSUYWgVXZRoF12UaBldlHVoHGpjEgAAaCBq1yAAAGghaANoHWhEaB9LAHViaD9Y3wIAACkKCiAgICAgICAgZ2FzX3VzZWQsIGxvZ3MsIGhhc19lcnJlZCA9IHByb2Nlc3NfdHJhbnNhY3Rpb24oZW52LCB0eCkKICAgICAgICBnYXNfYXZhaWxhYmxlIC09IGdhc191c2VkCgogICAgICAgIHRyaWVfc2V0KAogICAgICAgICAgICByZWNlaXB0c190cmllLAogICAgICAgICAgICBybHAuZW5jb2RlKFVpbnQoaSkpLAogICAgICAgICAgICBSZWNlaXB0KAogICAgICAgICAgICAgICAgc3VjY2VlZGVkPW5vdCBoYXNfZXJyZWQsCiAgICAgICAgICAgICAgICBjdW11bGF0aXZlX2dhc191c2VkPShibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlKSwKICAgICAgICAgICAgICAgIGJsb29tPWxvZ3NfYmxvb20obG9ncyksCiAgICAgICAgICAgICAgICBsb2dzPWxvZ3MsCiAgICAgICAgICAgICksCiAgICAgICAgKQogICAgICAgIGJsb2NrX2xvZ3MgKz0gbG9ncwoKICAgIHBheV9yZXdhcmRzKHN0YXRlLCBibG9ja19udW1iZXIsIGNvaW5iYXNlLCBvbW1lcnMpCgogICAgZ2FzX3JlbWFpbmluZyA9IGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUKCiAgICBibG9ja19sb2dzX2Jsb29tID0gbG9nc19ibG9vbShibG9ja19sb2dzKQoKICAgIHJldHVybiAoCiAgICAgICAgZ2FzX3JlbWFpbmluZywKICAgICAgICByb290KHRyYW5zYWN0aW9uc190cmllKSwKICAgICAgICByb290KHJlY2VpcHRzX3RyaWUpLAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApCpSFlIGUfZQoaAVoBmggatcgAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjLnB5lIwJeG1sOnNwYWNllGr2BAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2Uai8PAABLAXOMB2xpbmVub3OUiXVoHGoXDwAAaB1oHmgfTZYBaCBqZBwAAGghaAN1YmVoDn2UKGgQXZRqLAMAAGFoE12UaBVdlIwKYXBwbHlfYm9keZRhaBddlGgZXZR1aBxoM2gdaB5oH01wAWggaqIOAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMD3ZhbGlkYXRlX29tbWVyc5RoB12UaD+MD3ZhbGlkYXRlX29tbWVyc5SFlIGUfZQoaAVoBmggagohAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9NmwFoIGoHIQAAdWJoJCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlHVoHGgjaB1OaB9OaCBqByEAAHViatQOAAApgZR9lChoBWgGaAddlChq2Q4AACmBlH2UKGgFjCx2YWxpZGF0ZV9vbW1lcnMob21tZXJzLCBibG9ja19oZWFkZXIsIGNoYWluKZRoB12UKGrfDgAAKYGUfZQoaAWMD3ZhbGlkYXRlX29tbWVyc5RoB12UaD+MD3ZhbGlkYXRlX29tbWVyc5SFlIGUfZQoaAVoBmggaiohAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGrqDgAAausOAABq7A4AAGrtDgAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGr2BAAAdWgcat4OAABoHWgeaB9OaCBqJiEAAHViarATAAApgZR9lChoBYwbb21tZXJzLCBibG9ja19oZWFkZXIsIGNoYWlulGgHXZQoarYTAAApgZR9lChoBYwGb21tZXJzlGgHXZRqZBIAACmBlH2UKGgFaAZoB12UaD+MBm9tbWVyc5SFlIGUfZQoaAVoBmggakEhAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UasUTAABhaBVdlGgXXZRoGV2UdWgcamMSAABoHU5oH05oIGo9IQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGr2BAAAdWgcarUTAABoHU5oH05oIGo5IQAAdWJqthMAACmBlH2UKGgFjAxibG9ja19oZWFkZXKUaAddlGpkEgAAKYGUfZQoaAVoBmgHXZRoP4wMYmxvY2tfaGVhZGVylIWUgZR9lChoBWgGaCBqWSEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqxRMAAGFoFV2UaBddlGgZXZR1aBxqYxIAAGgdTmgfTmggalUhAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUavYEAAB1aBxqtRMAAGgdTmgfTmggajkhAAB1Ymq2EwAAKYGUfZQoaAWMBWNoYWlulGgHXZRqZBIAACmBlH2UKGgFaAZoB12UaD+MBWNoYWlulIWUgZR9lChoBWgGaCBqcSEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqxRMAAGFoFV2UaBddlGgZXZR1aBxqYxIAAGgdTmgfTmggam0hAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUavYEAAB1aBxqtRMAAGgdTmgfTmggajkhAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUavYEAAB1aBxqrxMAAGgdaB5oH05oIGomIQAAdWJlaA59lChoEF2UjCxldGhlcmV1bS5jb25zdGFudGlub3BsZS5zcGVjLnZhbGlkYXRlX29tbWVyc5RhaBNdlChq9Q4AAGr2DgAAjAJweZRq+A4AAGr5DgAAZWgVXZRoF12UaBldlIwGbW9kdWxllGr+DgAAjAVjbGFzc5RoBowIZnVsbG5hbWWUaiwhAAB1aBxq2A4AAGgdaB5oH02eAWggaiMhAAB1YmoCDwAAKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBYwsVmFsaWRhdGVzIHRoZSBvbW1lcnMgbWVudGlvbmVkIGluIHRoZSBibG9jay6UaAddlGg/jCxWYWxpZGF0ZXMgdGhlIG9tbWVycyBtZW50aW9uZWQgaW4gdGhlIGJsb2NrLpSFlIGUfZQoaAVoBmggapohAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NoQFoIGqXIQAAdWJoaSmBlH2UKGgFjKRBbiBvbW1lciBibG9jayBpcyBhIGJsb2NrIHRoYXQgd2Fzbid0IGNhbm9uaWNhbGx5IGFkZGVkIHRvIHRoZQpibG9ja2NoYWluIGJlY2F1c2UgaXQgd2Fzbid0IHZhbGlkYXRlZCBhcyBmYXN0IGFzIHRoZSBjYW5vbmljYWwgYmxvY2sKYnV0IHdhcyBtaW5lZCBhdCB0aGUgc2FtZSB0aW1lLpRoB12UaD+MqEFuIG9tbWVyIGJsb2NrIGlzIGEgYmxvY2sgdGhhdCB3YXNu4oCZdCBjYW5vbmljYWxseSBhZGRlZCB0byB0aGUKYmxvY2tjaGFpbiBiZWNhdXNlIGl0IHdhc27igJl0IHZhbGlkYXRlZCBhcyBmYXN0IGFzIHRoZSBjYW5vbmljYWwgYmxvY2sKYnV0IHdhcyBtaW5lZCBhdCB0aGUgc2FtZSB0aW1lLpSFlIGUfZQoaAVoBmggaqghAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NowFoIGqXIQAAdWJoaSmBlH2UKGgFWBIBAABUbyBiZSBjb25zaWRlcmVkIHZhbGlkLCB0aGUgb21tZXJzIG11c3QgYWRoZXJlIHRvIHRoZSBydWxlcyBkZWZpbmVkIGluCnRoZSBFdGhlcmV1bSBwcm90b2NvbC4gVGhlIG1heGltdW0gYW1vdW50IG9mIG9tbWVycyBpcyAyIHBlciBibG9jayBhbmQKdGhlcmUgY2Fubm90IGJlIGR1cGxpY2F0ZSBvbW1lcnMgaW4gYSBibG9jay4gTWFueSBvZiB0aGUgb3RoZXIgb21tZXIKY29udHJhaW50cyBhcmUgbGlzdGVkIGluIHRoZSBpbi1saW5lIGNvbW1lbnRzIG9mIHRoaXMgZnVuY3Rpb24ulGgHXZRoP1gSAQAAVG8gYmUgY29uc2lkZXJlZCB2YWxpZCwgdGhlIG9tbWVycyBtdXN0IGFkaGVyZSB0byB0aGUgcnVsZXMgZGVmaW5lZCBpbgp0aGUgRXRoZXJldW0gcHJvdG9jb2wuIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBvbW1lcnMgaXMgMiBwZXIgYmxvY2sgYW5kCnRoZXJlIGNhbm5vdCBiZSBkdXBsaWNhdGUgb21tZXJzIGluIGEgYmxvY2suIE1hbnkgb2YgdGhlIG90aGVyIG9tbWVyCmNvbnRyYWludHMgYXJlIGxpc3RlZCBpbiB0aGUgaW4tbGluZSBjb21tZW50cyBvZiB0aGlzIGZ1bmN0aW9uLpSFlIGUfZQoaAVoBmggarYhAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NpwFoIGqXIQAAdWJqNBQAACmBlH2UKGgFaAZoB12UajkUAAApgZR9lChoBWgGaAddlChqPhQAACmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoP4wKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmggasohAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaj0UAABoHWgeaB9LAGggaschAAB1YmpOFAAAKYGUfZQoaAVoBmgHXZRoXymBlH2UKGgFaAZoB12UKGhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDhvbW1lcnMgLS0gTGlzdCBvZiBvbW1lcnMgbWVudGlvbmVkIGluIHRoZSBjdXJyZW50IGJsb2NrLpRoB12UKGpXFAAAKYGUfZQoaAWMBm9tbWVyc5RoB12UaD+MBm9tbWVyc5SFlIGUfZQoaAVoBmggauUhAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAtyZWZzcGVjaWZpY5SIjAlweTptb2R1bGWUav4OAACMCHB5OmNsYXNzlE51aBxqVhQAAGgdTmgfTmggauEhAAB1Ymg/jDMg4oCTIExpc3Qgb2Ygb21tZXJzIG1lbnRpb25lZCBpbiB0aGUgY3VycmVudCBibG9jay6UhZSBlH2UKGgFaAZoIGrhIQAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBq3iEAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggatshAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjCxibG9ja19oZWFkZXIgLS0gVGhlIGhlYWRlciBvZiBjdXJyZW50IGJsb2NrLpRoB12UKGpXFAAAKYGUfZQoaAWMDGJsb2NrX2hlYWRlcpRoB12UaD+MDGJsb2NrX2hlYWRlcpSFlIGUfZQoaAVoBmggag0iAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAtyZWZzcGVjaWZpY5SIjAlweTptb2R1bGWUav4OAACMCHB5OmNsYXNzlE51aBxqVhQAAGgdTmgfTmggagkiAAB1Ymg/jCEg4oCTIFRoZSBoZWFkZXIgb2YgY3VycmVudCBibG9jay6UhZSBlH2UKGgFaAZoIGoJIgAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqBiIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggatshAAB1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjCNjaGFpbiAtLSBIaXN0b3J5IGFuZCBjdXJyZW50IHN0YXRlLpRoB12UKGpXFAAAKYGUfZQoaAWMBWNoYWlulGgHXZRoP4wFY2hhaW6UhZSBlH2UKGgFaAZoIGo1IgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGr+DgAAjAhweTpjbGFzc5ROdWgcalYUAABoHU5oH05oIGoxIgAAdWJoP4wfIOKAkyBIaXN0b3J5IGFuZCBjdXJyZW50IHN0YXRlLpSFlIGUfZQoaAVoBmggajEiAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGouIgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1OaB9OaCBq2yEAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoXmgdTmgfTmggatghAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcak0UAABoHU5oH05oIGrHIQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo4FAAAaB1OaB9OaCBqxCEAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqMxQAAGgdTmgfTmggapchAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagEPAABoHWgeaB9OaCBqIyEAAHViZWgOfZQoaBBdlGgTXZQoapAhAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqkCEAAIwHb2JqdHlwZZRqdyIAAIwIZGVzY3R5cGWUanciAACMB25vaW5kZXiUiXVoHGrTDgAAaB1OaB9OaCBqByEAAHViahgPAAApgZR9lChoBVgBCQAAZGVmIHZhbGlkYXRlX29tbWVycygKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLCBibG9ja19oZWFkZXI6IEhlYWRlciwgY2hhaW46IEJsb2NrQ2hhaW4KKSAtPiBOb25lOgogICAgYmxvY2tfaGFzaCA9IHJscC5ybHBfaGFzaChibG9ja19oZWFkZXIpCgogICAgZW5zdXJlKHJscC5ybHBfaGFzaChvbW1lcnMpID09IGJsb2NrX2hlYWRlci5vbW1lcnNfaGFzaCwgSW52YWxpZEJsb2NrKQoKICAgIGlmIGxlbihvbW1lcnMpID09IDA6CiAgICAgICAgIyBOb3RoaW5nIHRvIHZhbGlkYXRlCiAgICAgICAgcmV0dXJuCgogICAgIyBDaGVjayB0aGF0IGVhY2ggb21tZXIgc2F0aXNmaWVzIHRoZSBjb25zdHJhaW50cyBvZiBhIGhlYWRlcgogICAgZm9yIG9tbWVyIGluIG9tbWVyczoKICAgICAgICBlbnN1cmUoMSA8PSBvbW1lci5udW1iZXIgPCBibG9ja19oZWFkZXIubnVtYmVyLCBJbnZhbGlkQmxvY2spCiAgICAgICAgb21tZXJfcGFyZW50X2hlYWRlciA9IGNoYWluLmJsb2Nrc1sKICAgICAgICAgICAgLShibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyKSAtIDEKICAgICAgICBdLmhlYWRlcgogICAgICAgIHZhbGlkYXRlX2hlYWRlcihvbW1lciwgb21tZXJfcGFyZW50X2hlYWRlcikKCiAgICAjIENoZWNrIHRoYXQgdGhlcmUgY2FuIGJlIG9ubHkgYXQgbW9zdCAyIG9tbWVycyBmb3IgYSBibG9jay4KICAgIGVuc3VyZShsZW4ob21tZXJzKSA8PSAyLCBJbnZhbGlkQmxvY2spCgogICAgb21tZXJzX2hhc2hlcyA9IFtybHAucmxwX2hhc2gob21tZXIpIGZvciBvbW1lciBpbiBvbW1lcnNdCiAgICAjIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZXMgaW4gdGhlIG9tbWVycyBvZiBjdXJyZW50IGJsb2NrCiAgICBlbnN1cmUobGVuKG9tbWVyc19oYXNoZXMpID09IGxlbihzZXQob21tZXJzX2hhc2hlcykpLCBJbnZhbGlkQmxvY2spCgogICAgcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLShNQVhfT01NRVJfREVQVEggKyAxKSA6XQogICAgcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMgPSB7CiAgICAgICAgcmxwLnJscF9oYXNoKGJsb2NrLmhlYWRlcikgZm9yIGJsb2NrIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzCiAgICB9CiAgICByZWNlbnRfb21tZXJzX2hhc2hlczogU2V0W0hhc2gzMl0gPSBzZXQoKQogICAgZm9yIGJsb2NrIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzOgogICAgICAgIHJlY2VudF9vbW1lcnNfaGFzaGVzID0gcmVjZW50X29tbWVyc19oYXNoZXMudW5pb24oCiAgICAgICAgICAgIHtybHAucmxwX2hhc2gob21tZXIpIGZvciBvbW1lciBpbiBibG9jay5vbW1lcnN9CiAgICAgICAgKQoKICAgIGZvciBvbW1lcl9pbmRleCwgb21tZXIgaW4gZW51bWVyYXRlKG9tbWVycyk6CiAgICAgICAgb21tZXJfaGFzaCA9IG9tbWVyc19oYXNoZXNbb21tZXJfaW5kZXhdCiAgICAgICAgIyBUaGUgY3VycmVudCBibG9jayBzaG91bGRuJ3QgYmUgdGhlIG9tbWVyCiAgICAgICAgZW5zdXJlKG9tbWVyX2hhc2ggIT0gYmxvY2tfaGFzaCwgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHJlY2VudCBjYW5vbmljYWwgYmxvY2tzCiAgICAgICAgZW5zdXJlKG9tbWVyX2hhc2ggbm90IGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgc2hvdWxkbid0IGJlIG9uZSBvZiB0aGUgdW5jbGVzIG1lbnRpb25lZCBpbiB0aGUgcmVjZW50CiAgICAgICAgIyBjYW5vbmljYWwgYmxvY2tzCiAgICAgICAgZW5zdXJlKG9tbWVyX2hhc2ggbm90IGluIHJlY2VudF9vbW1lcnNfaGFzaGVzLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgYWdlIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBibG9jay4gRm9yIGV4YW1wbGUsIGFuIGFnZSBvZgogICAgICAgICMgMSBpbmRpY2F0ZXMgdGhhdCB0aGUgb21tZXIgaXMgYSBzaWJsaW5nIG9mIHByZXZpb3VzIGJsb2NrLgogICAgICAgIG9tbWVyX2FnZSA9IGJsb2NrX2hlYWRlci5udW1iZXIgLSBvbW1lci5udW1iZXIKICAgICAgICBlbnN1cmUoMSA8PSBvbW1lcl9hZ2UgPD0gTUFYX09NTUVSX0RFUFRILCBJbnZhbGlkQmxvY2spCgogICAgICAgIGVuc3VyZSgKICAgICAgICAgICAgb21tZXIucGFyZW50X2hhc2ggaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMsIEludmFsaWRCbG9jawogICAgICAgICkKICAgICAgICBlbnN1cmUob21tZXIucGFyZW50X2hhc2ggIT0gYmxvY2tfaGVhZGVyLnBhcmVudF9oYXNoLCBJbnZhbGlkQmxvY2spCpRoB12UaD9YAQkAAGRlZiB2YWxpZGF0ZV9vbW1lcnMoCiAgICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwgYmxvY2tfaGVhZGVyOiBIZWFkZXIsIGNoYWluOiBCbG9ja0NoYWluCikgLT4gTm9uZToKICAgIGJsb2NrX2hhc2ggPSBybHAucmxwX2hhc2goYmxvY2tfaGVhZGVyKQoKICAgIGVuc3VyZShybHAucmxwX2hhc2gob21tZXJzKSA9PSBibG9ja19oZWFkZXIub21tZXJzX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICBpZiBsZW4ob21tZXJzKSA9PSAwOgogICAgICAgICMgTm90aGluZyB0byB2YWxpZGF0ZQogICAgICAgIHJldHVybgoKICAgICMgQ2hlY2sgdGhhdCBlYWNoIG9tbWVyIHNhdGlzZmllcyB0aGUgY29uc3RyYWludHMgb2YgYSBoZWFkZXIKICAgIGZvciBvbW1lciBpbiBvbW1lcnM6CiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXIubnVtYmVyIDwgYmxvY2tfaGVhZGVyLm51bWJlciwgSW52YWxpZEJsb2NrKQogICAgICAgIG9tbWVyX3BhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbCiAgICAgICAgICAgIC0oYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcikgLSAxCiAgICAgICAgXS5oZWFkZXIKICAgICAgICB2YWxpZGF0ZV9oZWFkZXIob21tZXIsIG9tbWVyX3BhcmVudF9oZWFkZXIpCgogICAgIyBDaGVjayB0aGF0IHRoZXJlIGNhbiBiZSBvbmx5IGF0IG1vc3QgMiBvbW1lcnMgZm9yIGEgYmxvY2suCiAgICBlbnN1cmUobGVuKG9tbWVycykgPD0gMiwgSW52YWxpZEJsb2NrKQoKICAgIG9tbWVyc19oYXNoZXMgPSBbcmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gb21tZXJzXQogICAgIyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzIGluIHRoZSBvbW1lcnMgb2YgY3VycmVudCBibG9jawogICAgZW5zdXJlKGxlbihvbW1lcnNfaGFzaGVzKSA9PSBsZW4oc2V0KG9tbWVyc19oYXNoZXMpKSwgSW52YWxpZEJsb2NrKQoKICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0oTUFYX09NTUVSX0RFUFRIICsgMSkgOl0KICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzID0gewogICAgICAgIHJscC5ybHBfaGFzaChibG9jay5oZWFkZXIpIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcwogICAgfQogICAgcmVjZW50X29tbWVyc19oYXNoZXM6IFNldFtIYXNoMzJdID0gc2V0KCkKICAgIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrczoKICAgICAgICByZWNlbnRfb21tZXJzX2hhc2hlcyA9IHJlY2VudF9vbW1lcnNfaGFzaGVzLnVuaW9uKAogICAgICAgICAgICB7cmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gYmxvY2sub21tZXJzfQogICAgICAgICkKCiAgICBmb3Igb21tZXJfaW5kZXgsIG9tbWVyIGluIGVudW1lcmF0ZShvbW1lcnMpOgogICAgICAgIG9tbWVyX2hhc2ggPSBvbW1lcnNfaGFzaGVzW29tbWVyX2luZGV4XQogICAgICAgICMgVGhlIGN1cnJlbnQgYmxvY2sgc2hvdWxkbid0IGJlIHRoZSBvbW1lcgogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoICE9IGJsb2NrX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSByZWNlbnQgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHVuY2xlcyBtZW50aW9uZWQgaW4gdGhlIHJlY2VudAogICAgICAgICMgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfb21tZXJzX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suIEZvciBleGFtcGxlLCBhbiBhZ2Ugb2YKICAgICAgICAjIDEgaW5kaWNhdGVzIHRoYXQgdGhlIG9tbWVyIGlzIGEgc2libGluZyBvZiBwcmV2aW91cyBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyCiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXJfYWdlIDw9IE1BWF9PTU1FUl9ERVBUSCwgSW52YWxpZEJsb2NrKQoKICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgIG9tbWVyLnBhcmVudF9oYXNoIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2sKICAgICAgICApCiAgICAgICAgZW5zdXJlKG9tbWVyLnBhcmVudF9oYXNoICE9IGJsb2NrX2hlYWRlci5wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQqUhZSBlH2UKGgFaAZoIGp/IgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNl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YW4gb21tZXIgcmV3YXJkIGFuZCBpcwpjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBvbW1lciBibG9jayB0aGF0IHRoZXkKbWluZWQulGgHXZQoaD+MUlRoZSBtaW5lciBvZiB0aGUgY2Fub25pY2FsIGJsb2NrIGlzIHJld2FyZGVkIHdpdGggdGhlIHByZWRldGVybWluZWQKYmxvY2sgcmV3YXJkLCCUhZSBlH2UKGgFaAZoIGpWIwAAaCFoA2gdaERoH0sAdWJqbAUAACmBlH2UKGgFjBBgYEJMT0NLX1JFV0FSRGBglGgHXZRoP4wMQkxPQ0tfUkVXQVJElIWUgZR9lChoBWgGaCBqXiMAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqawUAAGgdTmgfTmggalYjAAB1Ymg/WDMCAAAsIHBsdXMgYSB2YXJpYWJsZSBhd2FyZCBiYXNlZCBvZmYgb2YgdGhlCm51bWJlciBvZiBvbW1lciBibG9ja3MgdGhhdCB3ZXJlIG1pbmVkIGFyb3VuZCB0aGUgc2FtZSB0aW1lLCBhbmQgaW5jbHVkZWQKaW4gdGhlIGNhbm9uaWNhbCBibG9ja+KAmXMgaGVhZGVyLiBBbiBvbW1lciBibG9jayBpcyBhIGJsb2NrIHRoYXQgd2FzbuKAmXQKYWRkZWQgdG8gdGhlIGNhbm9uaWNhbCBibG9ja2NoYWluIGJlY2F1c2UgaXQgd2FzbuKAmXQgdmFsaWRhdGVkIGFzIGZhc3QgYXMKdGhlIGFjY2VwdGVkIGJsb2NrIGJ1dCB3YXMgbWluZWQgYXQgdGhlIHNhbWUgdGltZS4gQWx0aG91Z2ggbm90IGFsbCBibG9ja3MKdGhhdCBhcmUgbWluZWQgYXJlIGFkZGVkIHRvIHRoZSBjYW5vbmljYWwgY2hhaW4sIG1pbmVycyBhcmUgc3RpbGwgcGFpZCBhCnJld2FyZCBmb3IgdGhlaXIgZWZmb3J0cy4gVGhpcyByZXdhcmQgaXMgY2FsbGVkIGFuIG9tbWVyIHJld2FyZCBhbmQgaXMKY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0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CiAgICAgICAgIyBPbW1lciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLgogICAgICAgIG9tbWVyX2FnZSA9IFUyNTYoYmxvY2tfbnVtYmVyIC0gb21tZXIubnVtYmVyKQogICAgICAgIG9tbWVyX21pbmVyX3Jld2FyZCA9ICgoOCAtIG9tbWVyX2FnZSkgKiBCTE9DS19SRVdBUkQpIC8vIDgKICAgICAgICBjcmVhdGVfZXRoZXIoc3RhdGUsIG9tbWVyLmNvaW5iYXNlLCBvbW1lcl9taW5lcl9yZXdhcmQpCpRoB12UaD9Y/gEAAGRlZiBwYXlfcmV3YXJkcygKICAgIHN0YXRlOiBTdGF0ZSwKICAgIGJsb2NrX251bWJlcjogVWludCwKICAgIGNvaW5iYXNlOiBBZGRyZXNzLAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sCikgLT4gTm9uZToKICAgIG1pbmVyX3Jld2FyZCA9IEJMT0NLX1JFV0FSRCArIChsZW4ob21tZXJzKSAqIChCTE9DS19SRVdBUkQgLy8gMzIpKQogICAgY3JlYXRlX2V0aGVyKHN0YXRlLCBjb2luYmFzZSwgbWluZXJfcmV3YXJkKQoKICAgIGZvciBvbW1lciBpbiBvbW1lcnM6CiAgICAgICAgIyBPbW1lciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLgogICAgICAgIG9tbWVyX2FnZSA9IFUyNTYoYmxvY2tfbnVtYmVyIC0gb21tZXIubnVtYmVyKQogICAgICAgIG9tbWVyX21pbmVyX3Jld2FyZCA9ICgoOCAtIG9tbWVyX2FnZSkgKiBCTE9DS19SRVdBUkQpIC8vIDgKICAgICAgICBjcmVhdGVfZXRoZXIoc3RhdGUsIG9tbWVyLmNvaW5iYXNlLCBvbW1lcl9taW5lcl9yZXdhcmQpCpSFlIGUfZQoaAVoBmggalkkAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9jb25z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b250cmFjdHMsCmRlcGxveWluZyBjb2RlLCBhbmQgaW5jcmVtZW50aW5nIG5vbmNlcyBhcmUgYWxsIGV4YW1wbGVzIG9mIGFjdGlvbnMgdGhhdApoYXBwZW4gd2l0aGluIHRoaXMgZnVuY3Rpb24gb3IgZnJvbSBhIGNhbGwgbWFkZSB3aXRoaW4gdGhpcyBmdW5jdGlvbi6UaAddlGg/WF0BAABUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyB0aGUgYWN0aW9ucyBuZWVkZWQgdG8gZXhlY3V0ZSBhIHRyYW5zYWN0aW9uLgpJdCBkZWNyZW1lbnRzIHRoZSBzZW5kZXLigJlzIGFjY291bnQgYWZ0ZXIgY2FsY3VsYXRpbmcgdGhlIGdhcyBmZWUgYW5kCnJlZnVuZHMgdGhlbSB0aGUgcHJvcGVyIGFtb3VudCBhZnRlciBleGVjdXRpb24uIENhbGxpbmcgY29udHJhY3RzLApkZXBsb3lpbmcgY29kZSwgYW5kIGluY3JlbWVudGluZyBub25jZXMgYXJlIGFsbCBleGFtcGxlcyBvZiBhY3Rpb25zIHRoYXQKaGFwcGVuIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIG9yIGZyb20gYSBjYWxsIG1hZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24ulIWUgZR9lChoBWgGaCBqACUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03gAWggau8kAAB1YmhpKYGUfZQoaAWMUkFjY291bnRzIHRoYXQgYXJlIG1hcmtlZCBmb3IgZGVsZXRpb24gYXJlIHByb2Nlc3NlZCBhbmQgZGVzdHJveWVkIGFmdGVyCmV4ZWN1dGlvbi6UaAddlGg/jFJBY2NvdW50cyB0aGF0IGFyZSBtYXJrZWQgZm9yIGRlbGV0aW9uIGFyZSBwcm9jZXNzZWQgYW5kIGRlc3Ryb3llZCBhZnRlcgpleGVjdXRpb24ulIWUgZR9lChoBWgGaCBqDiUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03mAWggau8kAAB1Ymo0FAAAKYGUfZQoaAVoBmgHXZQoajkUAAApgZR9lChoBWgGaAdd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IHR4LmdhcyAtIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eCkKICAgIGluY3JlbWVudF9ub25jZShlbnYuc3RhdGUsIHNlbmRlcikKICAgIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUgPSBzZW5kZXJfYWNjb3VudC5iYWxhbmNlIC0gZ2FzX2ZlZQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSkKCiAgICBtZXNzYWdlID0gcHJlcGFyZV9tZXNzYWdlKAogICAgICAgIHNlbmRlciwKICAgICAgICB0eC50bywKICAgICAgICB0eC52YWx1ZSwKICAgICAgICB0eC5kYXRhLAogICAgICAgIGdhcywKICAgICAgICBlbnYsCiAgICApCgogICAgb3V0cHV0ID0gcHJvY2Vzc19tZXNzYWdlX2NhbGwobWVzc2FnZSwgZW52KQoKICAgIGdhc191c2VkID0gdHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0CiAgICBnYXNfcmVmdW5kID0gbWluKGdhc191c2VkIC8vIDIsIG91dHB1dC5yZWZ1bmRfY291bnRlcikKICAgIGdhc19yZWZ1bmRfYW1vdW50ID0gKG91dHB1dC5nYXNfbGVmdCArIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0cmFuc2FjdGlvbl9mZWUgPSAodHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0IC0gZ2FzX3JlZnVuZCkgKiB0eC5nYXNfcHJpY2UKICAgIHRvdGFsX2dhc191c2VkID0gZ2FzX3VzZWQgLSBnYXNfcmVmdW5kCgogICAgIyByZWZ1bmQgZ2FzCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9yZWZ1bmQgPSAoCiAgICAgICAgZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpLmJhbGFuY2UgKyBnYXNfcmVmdW5kX2Ftb3VudAogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kKQoKICAgICMgdHJhbnNmZXIgbWluZXIgZmVlcwogICAgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKS5iYWxhbmNlICsgdHJhbnNhY3Rpb25fZmVlCiAgICApCiAgICBpZiBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUgIT0gMDoKICAgICAgICBzZXRfYWNjb3VudF9iYWxhbmNlKAogICAgICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICAgICAgKQogICAgZWxpZiBhY2NvdW50X2V4aXN0c19hbmRfaXNfZW1wdHkoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpOgogICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkKCiAgICBmb3IgYWRkcmVzcyBpbiBvdXRwdXQuYWNjb3VudHNfdG9fZGVsZXRlOgogICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGFkZHJlc3MpCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LnRvdWNoZWRfYWNjb3VudHM6CiAgICAgICAgaWYgYWNjb3VudF9leGlzdHNfYW5kX2lzX2VtcHR5KGVudi5zdGF0ZSwgYWRkcmVzcyk6CiAgICAgICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGFkZHJlc3MpCgogICAgcmV0dXJuIHRvdGFsX2dhc191c2VkLCBvdXRwdXQubG9ncywgb3V0cHV0Lmhhc19lcnJlZAqUaAddlGg/WBwIAABkZWYgcHJvY2Vzc190cmFuc2FjdGlvbigKICAgIGVudjogdm0uRW52aXJvbm1lbnQsIHR4OiBUcmFuc2FjdGlvbgopIC0+IFR1cGxlW1UyNTYsIFR1cGxlW0xvZywgLi4uXSwgYm9vbF06CiAgICBlbnN1cmUodmFsaWRhdGVfdHJhbnNhY3Rpb24odHgpLCBJbnZhbGlkQmxvY2spCgogICAgc2VuZGVyID0gZW52Lm9yaWdpbgogICAgc2VuZGVyX2FjY291bnQgPSBnZXRfYWNjb3VudChlbnYuc3RhdGUsIHNlbmRlcikKICAgIGdhc19mZWUgPSB0eC5nYXMgKiB0eC5nYXNfcHJpY2UKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5ub25jZSA9PSB0eC5ub25jZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmJhbGFuY2UgPj0gZ2FzX2ZlZSArIHR4LnZhbHVlLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQuY29kZSA9PSBieXRlYXJyYXkoKSwgSW52YWxpZEJsb2NrKQoKICAgIGdhcyA9IHR4LmdhcyAtIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eCkKICAgIGluY3JlbWVudF9ub25jZShlbnYuc3RhdGUsIHNlbmRlcikKICAgIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUgPSBzZW5kZXJfYWNjb3VudC5iYWxhbmNlIC0gZ2FzX2ZlZQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSkKCiAgICBtZXNzYWdlID0gcHJlcGFyZV9tZXNzYWdlKAogICAgICAgIHNlbmRlciwKICAgICAgICB0eC50bywKICAgICAgICB0eC52YWx1ZSwKICAgICAgICB0eC5kYXRhLAogICAgICAgIGdhcywKICAgICAgICBlbnYsCiAgICApCgogICAgb3V0cHV0ID0gcHJvY2Vzc19tZXNzYWdlX2NhbGwobWVzc2FnZSwgZW52KQoKICAgIGdhc191c2VkID0gdHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0CiAgICBnYXNfcmVmdW5kID0gbWluKGdhc191c2VkIC8vIDIsIG91dHB1dC5yZWZ1bmRfY291bnRlcikKICAgIGdhc19yZWZ1bmRfYW1vdW50ID0gKG91dHB1dC5nYXNfbGVmdCArIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0cmFuc2FjdGlvbl9mZWUgPSAodHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0IC0gZ2FzX3JlZnVuZCkgKiB0eC5nYXNfcHJpY2UKICAgIHRvdGFsX2dhc191c2VkID0gZ2FzX3VzZWQgLSBnYXNfcmVmdW5kCgogICAgIyByZWZ1bmQgZ2FzCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9yZWZ1bmQgPSAoCiAgICAgICAgZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpLmJhbGFuY2UgKyBnYXNfcmVmdW5kX2Ftb3VudAogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kKQoKICAgICMgdHJhbnNmZXIgbWluZXIgZmVlcwogICAgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKS5iYWxhbmNlICsgdHJhbnNhY3Rpb25fZmVlCiAgICApCiAgICBpZiBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUgIT0gMDoKICAgICAgICBzZXRfYWNjb3VudF9iYWxhbmNlKAogICAgICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICAgICAgKQogICAgZWxpZiBhY2NvdW50X2V4aXN0c19hbmRfaXNfZW1wdHkoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpOgogICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkKCiAgICBmb3IgYWRkcmVzcyBpbiBvdXRwdXQuYWNjb3VudHNfdG9fZGVsZXRlOgogICAgICAgIGRlc3Ryb3lfYWNjb3VudChlbnYuc3RhdGUsIGFkZHJlc3MpCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LnRvdWNoZWRfYWNjb3VudHM6CiAgICAgICAgaWYgYWNjb3VudF9leGlzdHNfYW5kX2lzX2VtcHR5KGVudi5zdGF0ZSwgYWRkcmVzcyk6CiAgICAgICAgICAgIGRl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YWN0aW9uIGdldHMgdXNlZCB0byBwYXkgZm9yIHRoZSBpbnRyaW5zaWMgY29zdCBvZgpvcGVyYXRpb25zLCB0aGVyZWZvcmUgaWYgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGdhcyB0aGVuIGl0IHdvdWxkIG5vdApiZSBwb3NzaWJsZSB0byBleGVjdXRlIGEgdHJhbnNhY3Rpb24gYW5kIGl0IHdpbGwgYmUgZGVjbGFyZWQgaW52YWxpZC6UhZSBlH2UKGgFaAZoIGrgJgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTf8BaCBqzyYAAHViaGkpgZR9lChoBVihAQAAQWRkaXRpb25hbGx5LCB0aGUgbm9uY2Ugb2YgYSB0cmFuc2FjdGlvbiBtdXN0IG5vdCBlcXVhbCBvciBleGNlZWQgdGhlCmxpbWl0IGRlZmluZWQgaW4gYEVJUC0yNjgxIDxodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTI2ODE+YF8uCkluIHByYWN0aWNlLCBkZWZpbmluZyB0aGUgbGltaXQgYXMgYGAyKio2NC0xYGAgaGFzIG5vIGltcGFjdCBiZWNhdXNlCnNlbmRpbmcgYGAyKio2NC0xYGAgdHJhbnNhY3Rpb25zIGlzIGltcHJvYmFibGUuIEl0J3Mgbm90IHN0cmljdGx5CmltcG9zc2libGUgdGhvdWdoLCBgYDIqKjY0LTFgYCB0cmFuc2FjdGlvbnMgaXMgdGhlIGVudGlyZSBjYXBhY2l0eSBvZiB0aGUKRXRoZXJldW0gYmxvY2tjaGFpbiBhdCAyMDIyIGdhcyBsaW1pdHMgZm9yIGEgbGl0dGxlIG92ZXIgMjIgeWVhcnMulGgHXZQoaD+MV0FkZGl0aW9uYWxseSwgdGhlIG5vbmNlIG9mIGEgdHJhbnNhY3Rpb24gbXVzdCBub3QgZXF1YWwgb3IgZXhjZWVkIHRoZQpsaW1pdCBkZWZpbmVkIGluIJSFlIGUfZQoaAVoBmggau4mAABoIWgDaB1oRGgfSwB1YmhuKYGUfZQoaAWMNWBFSVAtMjY4MSA8aHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxPmBflGgH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E12UKGr1DgAAavYOAACMAnB5lGr4DgAAavkOAABlaBVdlGgXXZRoGV2UjAZtb2R1bGWUav4OAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRqZSgAAHVoHGrYDgAAaB1oHmgfTRoCaCBqXCgAAHViagIPAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UaAddlGg/jD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UhZSBlH2UKGgFaAZoIGqjKAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTR0CaCBqoCgAAHViaGkpgZR9lChoBVgRAgAAVGhlIGludHJpbnNpYyBjb3N0IG9mIHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaGFzCmJlZ3VuLiBGdW5jdGlvbnMvb3BlcmF0aW9ucyBpbiB0aGUgRVZNIGNvc3QgbW9uZXkgdG8gZXhlY3V0ZSBzbyB0aGlzCmludHJpbnNpYyBjb3N0IGlzIGZvciB0aGUgb3BlcmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgcGFpZCBmb3IgYXMgcGFydCBvZgp0aGUgdHJhbnNhY3Rpb24uIERhdGEgdHJhbnNmZXIsIGZvciBleGFtcGxlLCBpcyBwYXJ0IG9mIHRoaXMgaW50cmluc2ljCmNvc3QuIEl0IGNvc3RzIGV0aGVyIHRvIHNlbmQgZGF0YSBvdmVyIHRoZSB3aXJlIGFuZCB0aGF0IGV0aGVyIGlzCmFjY291bnRlZCBmb3IgaW4gdGhlIGludHJpbnNpYyBjb3N0IGNhbGN1bGF0ZWQgaW4gdGhpcyBmdW5jdGlvbi4gVGhpcwppbnRyaW5zaWMgY29zdCBtdXN0IGJlIGNhbGN1bGF0ZWQgYW5kIHBhaWQgZm9yIGJlZm9yZSBleGVjdXRpb24gaW4gb3JkZXIKZm9yIGFsbCBvcGVyYXRpb25zIHRvIGJlIGltcGxlbWVudGVk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IGlmIGJ5dGUgPT0gMDoKICAgICAgICAgICAgZGF0YV9jb3N0ICs9IFRYX0RBVEFfQ09TVF9QRVJfWkVSTwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRhdGFfY29zdCArPSBUWF9EQVRBX0NPU1RfUEVSX05PTl9aRVJPCgogICAgaWYgdHgudG8gPT0gQnl0ZXMwKGIiIik6CiAgICAgICAgY3JlYXRlX2Nvc3QgPSBUWF9DUkVBVEVfQ09TVAogICAgZWxzZToKICAgICAgICBjcmVhdGVfY29zdCA9IDAKCiAgICByZXR1cm4gVWludChUWF9CQVNFX0NPU1QgKyBkYXRhX2Nvc3QgKyBjcmVhdGVfY29zdCkKlGgHXZRoP1iHAQAAZGVmIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eDogVHJhbnNhY3Rpb24pIC0+IFVpbnQ6CiAgICBkYXRhX2Nvc3QgPSAwCgogICAgZm9yIGJ5dGUgaW4gdHguZGF0YToKICAgICAgICBpZiBieXRlID09IDA6CiAgICAgICAgICAgIGRhdGFfY29zdCArPSBUWF9EQVRBX0NPU1RfUEVSX1pFUk8KICAgICAgICBlbHNlOgogICAgICAgICAgICBkYXRhX2Nvc3QgKz0gVFhfREFUQV9DT1NUX1BFUl9OT05fWkVSTwoKICAgIGlmIHR4LnRvID09IEJ5dGVzMChiIiIpOgogICAgICAgIGNyZWF0ZV9jb3N0ID0gVFhfQ1JFQVRFX0NPU1QKICAgIGVsc2U6CiAgICAgICAgY3JlYXRlX2Nvc3QgPSAwCgogICAgcmV0dXJuIFVpbnQoVFhfQkFTRV9DT1NUICsgZGF0YV9jb3N0ICsgY3JlYXRlX2Nvc3QpCpSFlIGUfZQoaAVoBmggaowpAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjLnB5lIwJeG1sOnNwYWNllGr2BAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2Uai8PAABLAXOMB2xpbmVub3OUiXVoHGoXDwAAaB1oHmgfTTACaCBqQCgAAHViZWgOfZQoaBBdlGrWAwAAYWgTXZRoFV2UjBhjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUYWgXXZRoGV2UdWgcaDNoHWgeaB9NFwJoIGqiDgAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjA5yZWNvdmVyX3NlbmRlcpRoB12UaD+MDnJlY292ZXJfc2VuZGVylIWUgZR9lChoBWgGaCBqrSkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH001AmggaqopAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGqqKQAAdWJq1A4AACmBlH2UKGgFaAZoB12UKGrZDgAAKYGUfZQoaAWMHHJlY292ZXJfc2VuZGVyKGNoYWluX2lkLCB0eCmUaAddlChq3w4AACmBlH2UKGgFjA5yZWNvdmVyX3NlbmRlcpRoB12UaD+MDnJlY292ZXJfc2VuZGVylIWUgZR9lChoBWgGaCBqzSkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoauoOAABq6w4AAGrsDgAAau0OAABlaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUavYEAAB1aBxq3g4AAGgdaB5oH05oIGrJKQAAdWJqsBMAACmBlH2UKGgFjAxjaGFpbl9pZCwgdHiUaAddlChqthMAACmBlH2UKGgFjAhjaGFpbl9pZJRoB12UamQSAAApgZR9lChoBWgGaAddlGg/jAhjaGFpbl9pZJSFlIGUfZQoaAVoBmggauQpAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UasUTAABhaBVdlGgXXZRoGV2UdWgcamMSAABoHU5oH05oIGrgKQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGr2BAAAdWgcarUTAABoHU5oH05oIGrcKQAAdWJqthMAACmBlH2UKGgFjAJ0eJRoB12UamQSAAApgZR9lChoBWgGaAddlGg/jAJ0eJSFlIGUfZQoaAVoBmggavwpAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UasUTAABhaBVdlGgXXZRoGV2UdWgcamMSAABoHU5oH05oIGr4KQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGr2BAAAdWgcarUTAABoHU5oH05oIGrcKQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGr2BAAAdWgcaq8TAABoHWgeaB9OaCBqySkAAHViZWgOfZQoaBBdlIwrZXRoZXJldW0uY29uc3RhbnRpbm9wbGUuc3BlYy5yZWNvdmVyX3NlbmRlcpRhaBNdlChq9Q4AAGr2DgAAjAJweZRq+A4AAGr5DgAAZWgVXZRoF12UaBldlIwGbW9kdWxllGr+DgAAjAVjbGFzc5RoBowIZnVsbG5hbWWUas8pAAB1aBxq2A4AAGgdaB5oH004AmggasYpAAB1YmoCDwAAKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBYwvRXh0cmFjdHMgdGhlIHNlbmRlciBhZGRyZXNzIGZyb20gYSB0cmFuc2FjdGlvbi6UaAddlGg/jC9FeHRyYWN0cyB0aGUgc2VuZGVyIGFkZHJlc3MgZnJvbSBhIHRyYW5zYWN0aW9uLpSFlIGUfZQoaAVoBmggaiUqAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NOwJoIGoiKgAAdWJoaSmBlH2UKGgFWGcBAABUaGUgdiwgciwgYW5kIHMgdmFsdWVzIGFyZSB0aGUgdGhyZWUgcGFydHMgdGhhdCBtYWtlIHVwIHRoZSBzaWduYXR1cmUKb2YgYSB0cmFuc2FjdGlvbi4gSW4gb3JkZXIgdG8gcmVjb3ZlciB0aGUgc2VuZGVyIG9mIGEgdHJhbnNhY3Rpb24gdGhlIHR3bwpjb21wb25lbnRzIG5lZWRlZCBhcmUgdGhlIHNpZ25hdHVyZSAoYGB2YGAsIGBgcmBgLCBhbmQgYGBzYGApIGFuZCB0aGUKc2lnbmluZyBoYXNoIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHNlbmRlcidzIHB1YmxpYyBrZXkgY2FuIGJlIG9idGFpbmVkCndpdGggdGhlc2UgdHdvIHZhbHVlcyBhbmQgdGhlcmVmb3JlIHRoZSBzZW5kZXIgYWRkcmVzcyBjYW4gYmUgcmV0cmlldmVkLpRoB12UKGg/jLVUaGUgdiwgciwgYW5kIHMgdmFsdWVzIGFyZSB0aGUgdGhyZWUgcGFydHMgdGhhdCBtYWtlIHVwIHRoZSBzaWduYXR1cmUKb2YgYSB0cmFuc2FjdGlvbi4gSW4gb3JkZXIgdG8gcmVjb3ZlciB0aGUgc2VuZGVyIG9mIGEgdHJhbnNhY3Rpb24gdGhlIHR3bwpjb21wb25lbnRzIG5lZWRlZCBhcmUgdGhlIHNpZ25hdHVyZSAolIWUgZR9lChoBWgGaCBqMyoAAGghaANoHWhEaB9LAHViamwFAAApgZR9lChoBYwFYGB2YGCUaAddlGg/jAF2lIWUgZR9lChoBWgGaCBqOyoAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqawUAAGgdTmgfTmggajMqAAB1Ymg/jAIsIJSFlIGUfZQoaAVoBmggajMqAABoIWgDaB1oRGgfSwB1YmpsBQAAKYGUfZQoaAWMBWBgcmBglGgHXZRoP4wBcpSFlIGUfZQoaAVoBmggak0qAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcamsFAABoHU5oH05oIGozKgAAdWJoP4wGLCBhbmQglIWUgZR9lChoBWgGaCBqMyoAAGghaANoHWhEaB9LAHViamwFAAApgZR9lChoBYwFYGBzYGCUaAddlGg/jAFzlIWUgZR9lChoBWgGaCBqXyoAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqawUAAGgdTmgfTmggajMqAAB1Ymg/jJ0pIGFuZCB0aGUKc2lnbmluZyBoYXNoIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHNlbmRlcuKAmXMgcHVibGljIGtleSBjYW4gYmUgb2J0YWluZWQKd2l0aCB0aGVzZSB0d28gdmFsdWVzIGFuZCB0aGVyZWZvcmUgdGhlIHNlbmRlciBhZGRyZXNzIGNhbiBiZSByZXRyaWV2ZWQulIWUgZR9lChoBWgGaCBqMyoAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH009AmggaiIqAAB1Ymo0FAAAKYGUfZQoaAVoBmgHXZQoajkUAAApgZR9lChoBWgGaAddlChqPhQAACmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoP4wKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmggan0qAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaj0UAABoHWgeaB9LAGgganoqAAB1YmpOFAAAKYGUfZQoaAVoBmgHXZRoXymBlH2UKGgFaAZoB12UKGhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjB50eCAtLSBUcmFuc2FjdGlvbiBvZiBpbnRlcmVzdC6UaAddlChqVxQAACmBlH2UKGgFjAJ0eJRoB12UaD+MAnR4lIWUgZR9lChoBWgGaCBqmCoAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMC3JlZnNwZWNpZmljlIiMCXB5Om1vZHVsZZRq/g4AAIwIcHk6Y2xhc3OUTnVoHGpWFAAAaB1OaB9OaCBqlCoAAHViaD+MHSDigJMgVHJhbnNhY3Rpb24gb2YgaW50ZXJlc3QulIWUgZR9lChoBWgGaCBqlCoAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggapEqAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGqOKgAAdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwmY2hhaW5faWQgLS0gSUQgb2YgdGhlIGV4ZWN1dGluZyBjaGFpbi6UaAddlChqVxQAACmBlH2UKGgFjAhjaGFpbl9pZJRoB12UaD+MCGNoYWluX2lklIWUgZR9lChoBWgGaCBqwCoAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMC3JlZnNwZWNpZmljlIiMCXB5Om1vZHVsZZRq/g4AAIwIcHk6Y2xhc3OUTnVoHGpWFAAAaB1OaB9OaCBqvCoAAHViaD+MHyDigJMgSUQgb2YgdGhlIGV4ZWN1dGluZyBjaGFpbi6UhZSBlH2UKGgFaAZoIGq8KgAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBquSoAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggao4qAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaF5oHU5oH05oIGqLKgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpNFAAAaB1OaB9OaCBqeioAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqOBQAAGgdTmgfTmggancqAAB1Ymo5FAAAKYGUfZQoaAVoBmgHXZQoaj4UAAApgZR9lChoBYwHUmV0dXJuc5RoB12UaD+MB1JldHVybnOUhZSBlH2UKGgFaAZoIGr2KgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo9FAAAaB1oHmgfSwBoIGrzKgAAdWJqThQAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxBc2VuZGVyIC0tIFRoZSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IHRoYXQgc2lnbmVkIHRoZSB0cmFuc2FjdGlvbi6UaAddlChqmBQAACmBlH2UKGgFjAoqKnNlbmRlcioqlGgHXZRoP4wGc2VuZGVylIWUgZR9lChoBWgGaCBqCysAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqlxQAAGgdTmgfTmggagcrAAB1Ymg/jDwg4oCTIFRoZSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IHRoYXQgc2lnbmVkIHRoZSB0cmFuc2FjdGlvbi6UhZSBlH2UKGgFaAZoIGoHKwAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqBCsAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqTRQAAGgdTmgfTmggavMqAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajgUAABoHU5oH05oIGp3KgAAdWJqORQAACmBlH2UKGgFaAZoB12UKGo+FAAAKYGUfZQoaAWMC1JldHVybiB0eXBllGgHXZRoP4wLUmV0dXJuIHR5cGWUhZSBlH2UKGgFaAZoIGoyKwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo9FAAAaB1oHmgfSwBoIGovKwAAdWJqThQAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwaZXRoZXJldW0uZXRoX3R5cGVzLkFkZHJlc3OUaAddlGpVBgAAKYGUfZQoaAWMHGBldGhlcmV1bS5ldGhfdHlwZXMuQWRkcmVzc2CUaAddlGg/jBpldGhlcmV1bS5ldGhfdHlwZXMuQWRkcmVzc5SFlIGUfZQoaAVoBmggakcrAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalQGAABoHU5oH05oIGpDKwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqQCsAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqTRQAAGgdTmgfTmggai8rAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajgUAABoHU5oH05oIGp3KgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGozFAAAaB1OaB9OaCBqIioAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqAQ8AAGgdaB5oH05oIGrGKQAAdWJlaA59lChoEF2UaBNdlChqGyoAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGobKgAAjAdvYmp0eXBllGp2KwAAjAhkZXNjdHlwZZRqdisAAIwHbm9pbmRleJSJdWgcatMOAABoHU5oH05oIGqqKQAAdWJqGA8AACmBlH2UKGgFWDICAABkZWYgcmVjb3Zlcl9zZW5kZXIoY2hhaW5faWQ6IFVpbnQ2NCwgdHg6IFRyYW5zYWN0aW9uKSAtPiBBZGRyZXNzOgogICAgdiwgciwgcyA9IHR4LnYsIHR4LnIsIHR4LnMKCiAgICBlbnN1cmUoMCA8IHIgYW5kIHIgPCBTRUNQMjU2SzFOLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoMCA8IHMgYW5kIHMgPD0gU0VDUDI1NksxTiAvLyAyLCBJbnZhbGlkQmxvY2spCgogICAgaWYgdiA9PSAyNyBvciB2ID09IDI4OgogICAgICAgIHB1YmxpY19rZXkgPSBzZWNwMjU2azFfcmVjb3ZlcihyLCBzLCB2IC0gMjcsIHNpZ25pbmdfaGFzaF9wcmUxNTUodHgpKQogICAgZWxzZToKICAgICAgICBlbnN1cmUodiA9PSAzNSArIGNoYWluX2lkICogMiBvciB2ID09IDM2ICsgY2hhaW5faWQgKiAyLCBJbnZhbGlkQmxvY2spCiAgICAgICAgcHVibGljX2tleSA9IHNlY3AyNTZrMV9yZWNvdmVyKAogICAgICAgICAgICByLCBzLCB2IC0gMzUgLSBjaGFpbl9pZCAqIDIsIHNpZ25pbmdfaGFzaF8xNTUodHgpCiAgICAgICAgKQogICAgcmV0dXJuIEFkZHJlc3Moa2VjY2FrMjU2KHB1YmxpY19rZXkpWzEyOjMyXSkKlGgHXZRoP1gyAgAAZGVmIHJlY292ZXJfc2VuZGVyKGNoYWluX2lkOiBVaW50NjQsIHR4OiBUcmFuc2FjdGlvbikgLT4gQWRkcmVzczoKICAgIHYsIHIsIHMgPSB0eC52LCB0eC5yLCB0eC5zCgogICAgZW5zdXJlKDAgPCByIGFuZCByIDwgU0VDUDI1NksxTiwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKDAgPCBzIGFuZCBzIDw9IFNFQ1AyNTZLMU4gLy8gMiwgSW52YWxpZEJsb2NrKQoKICAgIGlmIHYgPT0gMjcgb3IgdiA9PSAyODoKICAgICAgICBwdWJsaWNfa2V5ID0gc2VjcDI1NmsxX3JlY292ZXIociwgcywgdiAtIDI3LCBzaWduaW5nX2hhc2hfcHJlMTU1KHR4KSkKICAgIGVsc2U6CiAgICAgICAgZW5zdXJlKHYgPT0gMzUgKyBjaGFpbl9pZCAqIDIgb3IgdiA9PSAzNiArIGNoYWluX2lkICogMiwgSW52YWxpZEJsb2NrKQogICAgICAgIHB1YmxpY19rZXkgPSBzZWNwMjU2azFfcmVjb3ZlcigKICAgICAgICAgICAgciwgcywgdiAtIDM1IC0gY2hhaW5faWQgKiAy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NigKICAgICAgICBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICApCiAgICAgICAgKQogICAgKQqUaAddlGg/WCQBAABkZWYgc2lnbmluZ19oYXNoX3ByZTE1NSh0eDogVHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlIWUgZR9lChoBWgGaCBq2iwAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVS9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2NvbnN0YW50aW5vcGxlL3NwZWMucHmUjAl4bWw6c3BhY2WUavYEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqLw8AAEsBc4wHbGluZW5vc5SJdWgcahcPAABoHWgeaB9NYQJoIGqcKwAAdWJlaA59lChoEF2UahoEAABhaBNdlGgVXZSME3NpZ25pbmdfaGFzaF9wcmUxNTWUYWgXXZRoGV2UdWgcaDNoHWgeaB9NUQJoIGqiDgAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgF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KGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcak0UAABoHU5oH05oIGrnLQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo4FAAAaB1OaB9OaCBqaS0AAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqMxQAAGgdTmgfTmggalgtAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcagEPAABoHWgeaB9OaCBqFC0AAHViZWgOfZQoaBBdlGgTXZQoalEtAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqUS0AAIwHb2JqdHlwZZRqLi4AAIwIZGVzY3R5cGWUai4uAACMB25vaW5kZXiUiXVoHGrTDgAAaB1OaB9OaCBq+CwAAHViahgPAAApgZR9lChoBVhsAQAAZGVmIHNpZ25pbmdfaGFzaF8xNTUodHg6IFRyYW5zYWN0aW9uKSAtPiBIYXNoMzI6CiAgICByZXR1cm4ga2VjY2FrMjU2KAogICAgICAgIHJscC5lbmNvZGUoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICAgICBVaW50KDEpLAogICAgICAgICAgICAgICAgVWludCgwKSwKICAgICAgICAgICAgICAgIFVpbnQoMCksCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpRoB12UaD9YbAEAAGRlZiBzaWduaW5nX2hhc2hfMTU1KHR4OiBUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAg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IHNpbmdsZSBpbnB1dC4KU28gYW4gaW5wdXQgY29ycmVzcG9uZHMgdG8gb25lIHVuaXF1ZSBoYXNoIHRoYXQgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkKdGhlIGlucHV0IGV4YWN0bHkulIWUgZR9lChoBWgGaCBq0y4AAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH02GAmggarQuAAB1YmhpKYGUfZQoaAVYKAIAAFByaW9yIHRvIHVzaW5nIHRoZSBgYGtlY2NhazI1NmBgIGhhc2ggZnVuY3Rpb24sIHRoZSBoZWFkZXIgbXVzdCBiZQplbmNvZGVkIHVzaW5nIHRoZSBSZWN1cnNpdmUtTGVuZ3RoIFByZWZpeC4gU2VlIDpyZWY6YHJscGAuClJMUCBlbmNvZGluZyB0aGUgaGVhZGVyIGNvbnZlcnRzIGl0IGludG8gYSBzcGFjZS1lZmZpY2llbnQgZm9ybWF0IHRoYXQKYWxsb3dzIGZvciBlYXN5IHRyYW5zZmVyIG9mIGRhdGEgYmV0d2VlbiBub2Rlcy4gVGhlIHB1cnBvc2Ugb2YgUkxQIGlzIHRvCmVuY29kZSBhcmJpdHJhcmlseSBuZXN0ZWQgYXJyYXlzIG9mIGJpbmFyeSBkYXRhLCBhbmQgUkxQIGlzIHRoZSBwcmltYXJ5CmVuY29kaW5nIG1ldGhvZCB1c2VkIHRvIHNlcmlhbGl6ZSBvYmplY3RzIGluIEV0aGVyZXVtJ3MgZXhlY3V0aW9uIGxheWVyLgpUaGUgb25seSBwdXJwb3NlIG9mIFJMUCBpcyB0byBlbmNvZGUgc3RydWN0dXJlOyBlbmNvZGluZyBzcGVjaWZpYyBkYXRhCnR5cGVzIChlLmcuIHN0cmluZ3MsIGZsb2F0cykgaXMgbGVmdCB1cCB0byBoaWdoZXItb3JkZXIgcHJvdG9jb2xzLpRoB12UKGg/jBNQcmlvciB0byB1c2luZyB0aGUglIWUgZR9lChoBWgGaCBq7y4AAGghaANoHWhEaB9LAHViamwFAAApgZR9lChoBYwNYGBrZWNjYWsyNTZgYJRoB12UaD+MCWtlY2NhazI1NpSFlIGUfZQoaAVoBmggavcuAABoIWgDaB1oRGgfSwB1YmFoDn2U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Z2FzX2xpbWl0IDw9IHBhcmVudF9nYXNfbGltaXQgLSBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8IEdBU19MSU1JVF9NSU5JTVVNOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIHJldHVybiBUcnVlCpRoB12UaD9YgQEAAGRlZiBjaGVja19nYXNfbGltaXQoZ2FzX2xpbWl0OiBVaW50LCBwYXJlbnRfZ2FzX2xpbWl0OiBVaW50KSAtPiBib29sOgogICAgbWF4X2FkanVzdG1lbnRfZGVsdGEgPSBwYXJlbnRfZ2FzX2xpbWl0IC8vIEdBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUgogICAgaWYgZ2FzX2xpbWl0ID49IHBhcmVudF9nYXNfbGltaXQgKyBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8PSBwYXJlbnRfZ2FzX2xpbWl0IC0gbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPCBHQVNfTElNSVRfTUlOSU1VTToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICByZXR1cm4gVHJ1ZQqUhZSBlH2UKGgFaAZoIGojMgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxVL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vY29uc3RhbnRpbm9wbGUvc3BlYy5weZSMCXhtbDpzcGFjZZRq9gQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGovDwAASwFzjAdsaW5lbm9zlIl1aBxqFw8AAGgdaB5oH02+AmggahkwAAB1YmVoDn2UKGgQXZRqgAQAAGFoE12UaBVdlIwPY2hlY2tfZ2FzX2xpbWl0lGFoF12UaBldlHVoHGgzaB1oHmgfTaICaCBqog4AAGghaAN1Ymg0KYGUfZQo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Z28tZXRoZXJldW0vcHVsbC8xNTg4CiAgICBudW1fYm9tYl9wZXJpb2RzID0gKChpbnQoYmxvY2tfbnVtYmVyKSAtIEJPTUJfREVMQVlfQkxPQ0tTKSAvLyAxMDAwMDApIC0gMgogICAgaWYgbnVtX2JvbWJfcGVyaW9kcyA+PSAwOgogICAgICAgIGRpZmZpY3VsdHkgKz0gMioqbnVtX2JvbWJfcGVyaW9kcwoKICAgICMgU29tZSBjbGllbnRzIHJhaXNlIHRoZSBkaWZmaWN1bHR5IHRvIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIHByaW9yIHRvIGFkZGluZwogICAgIyB0aGUgYm9tYi4gVGhpcyBidWcgZG9lcyBub3QgbWF0dGVyIGJlY2F1c2UgdGhlIGRpZmZpY3VsdHkgaXMgYWx3YXlzIG11Y2gKICAgICMgZ3JlYXRlciB0aGFuIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIG9uIE1haW5uZXQuCiAgICByZXR1cm4gVWludChtYXgoZGlmZmljdWx0eSwgTUlOSU1VTV9ESUZGSUNVTFRZKSkKlGgHXZRoP1iNBAAAZGVmIGNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5KAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgYmxvY2tfdGltZXN0YW1wOiBVMjU2LAogICAgcGFyZW50X3RpbWVzdGFtcDogVTI1NiwKICAgIHBhcmVudF9kaWZmaWN1bHR5OiBVaW50LAogICAgcGFyZW50X2hhc19vbW1lcnM6IGJvb2wsCikgLT4gVWludDoKICAgIG9mZnNldCA9ICgKICAgICAgICBpbnQocGFyZW50X2RpZmZpY3VsdHkpCiAgICAgICAgLy8gMjA0OAogICAgICAgICogbWF4KAogICAgICAgICAgICAoMiBpZiBwYXJlbnRfaGFzX29tbWVycyBlbHNlIDEpCiAgICAgICAgICAgIC0gaW50KGJsb2NrX3RpbWVzdGFtcCAtIHBhcmVudF90aW1lc3RhbXApIC8vIDksCiAgICAgICAgICAgIC05OSwKICAgICAgICApCiAgICApCiAgICBkaWZmaWN1bHR5ID0gaW50KHBhcmVudF9kaWZmaWN1bHR5KSArIG9mZnNldAogICAgIyBIaXN0b3JpY2FsIE5vdGU6IFRoZSBkaWZmaWN1bHR5IGJvbWIgd2FzIG5vdCBwcmVzZW50IGluIEV0aGVyZXVtIGF0IHRoZQogICAgIyBzdGFydCBvZiBGcm9udGllciwgYnV0IHdhcyBhZGRlZCBzaG9ydGx5IGFmdGVyIGxhdW5jaC4gSG93ZXZlciBzaW5jZSB0aGUKICAgICMgYm9tYiBoYXMgbm8gZWZmZWN0IHByaW9yIHRvIGJsb2NrIDIwMDAwMCB3ZSBwcmV0ZW5kIGl0IGV4aXN0ZWQgZnJvbQogICAgIyBnZW5lc2lzLgogICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2dvLWV0aGVyZXVtL3B1bGwvMTU4OAogICAgbnVtX2JvbWJfcGVyaW9kcyA9ICgoaW50KGJsb2NrX251bWJlcikgLSBCT01CX0RFTEFZX0JMT0NLUykgLy8gMTAwMDAwKSAtIDIKICAgIGlmIG51bV9ib21iX3BlcmlvZHMgPj0gMDoKICAgICAgICBkaWZmaWN1bHR5ICs9IDIqKm51bV9ib21iX3BlcmlvZHMKCiAgICAjIFNvbWUgY2xpZW50cyByYWlzZSB0aGUgZGlmZmljdWx0eSB0byBgTUlOSU1VTV9ESUZGSUNVTFRZYCBwcmlvciB0byBhZGRpbmcKICAgICMgdGhlIGJvbWIuIFRoaXMgYnVnIGRvZXMgbm90IG1hdHRlciBiZWNhdXNlIHRoZSBkaWZmaWN1bHR5IGlzIGFsd2F5cyBtdWNoCiAgICAjIGdyZWF0ZXIgdGhhbiBgTUlOSU1VTV9ESUZGSUNVTFRZYCBvbiBNYWlubmV0LgogICAgcmV0dXJuIFVpbnQobWF4KGRpZmZpY3VsdHksIE1JTklNVU1fRElGRklDVUxUWSkpCpSFlIGUfZQoaAVoBmggahk1AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9jb25zdGFudGlub3BsZS9zcGVjLnB5lIwJeG1sOnNwYWNllGr2BAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2Uai8PAABLAXOMB2xpbmVub3OUiXVoHGoXDwAAaB1oHmgfTegCaCBqQTIAAHViZWgOfZQoaBBdlGqiBAAAYWgTXZRoFV2UjBpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eZRhaBddlGgZXZR1aBxoM2gdaB5oH03DAmggaqIOAABoIWgDdWJlaA59lChoEF2UajEBAABhaBNdlGgVXZSMDm1vZHVsZSBkZXRhaWxzlGFoF12UaBldlHVoHGgzaB1oHmgfS0hoIGg1aCFoA3ViZWgOfZQoaBBdlIwWZXRoZXJldW0tc3BlY2lmaWNhdGlvbpRhaBNdlGgVXZSMFmV0aGVyZXVtIHNwZWNpZmljYXRpb26UYWgXXZRoGV2UdWgcaDNoHWgeaB9LBGggaANoIWgDdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllGhEdWgcaAGMDmN1cnJlbnRfc291cmNllGhEjAxjdXJyZW50X2xpbmWUSwCMCHNldHRpbmdzlIwRZG9jdXRpbHMuZnJvbnRlbmSUjAZWYWx1ZXOUk5QpgZR9lCiMDHJlcG9ydF9sZXZlbJRLAowKaGFsdF9sZXZlbJRLBIwRZXhpdF9zdGF0dXNfbGV2ZWyUSwWMBWRlYnVnlE6MDndhcm5pbmdfc3RyZWFtlE6MCXRyYWNlYmFja5ROjA9vdXRwdXRfZW5jb2RpbmeUjAV1dGYtOJSMHW91dHB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwReG1sY2hhcnJlZnJlcGxhY2WUjA5lcnJvcl9lbmNvZGluZ5SMBXV0Zi04lIwcZXJyb3JfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcpSMEGJhY2tzbGFzaHJlcGxhY2WUjBNyZWNvcmRfZGVwZW5kZW5jaWVzlIwOZG9jdXRpbHMudXRpbHOUjA5EZXBlbmRlbmN5TGlzdJSTlCmBlH2UKIwEbGlzdJRdlIwEZmlsZZROdWKMBmNvbmZpZ5ROjA1kdW1wX3NldHRpbmdzlE6MDmR1bXBfaW50ZXJuYWxzlE6MD2R1bXBfdHJhbnNmb3Jtc5ROjA9kdW1wX3BzZXVkb194bWyUTowQZXhwb3NlX2ludGVybmFsc5ROjA5zdHJpY3RfdmlzaXRvcpROjA9fZGlzYWJsZV9jb25maWeUTowHX3NvdXJjZZROjAxfZGVzdGluYXRpb26UjDVkb2MvZGlmZnMvY29uc3RhbnRpbm9wbGVfaXN0YW5idWwvc3BlYy9pbmRleC5waWNrbGU2NJSMDV9jb25maWdfZmlsZXOUXZSMEWxpbmVfbGVuZ3RoX2xpbWl0lE0QJ4wJdGFiX3dpZHRolEsIjBBzeW50YXhfaGlnaGxpZ2h0lIwEbG9uZ5SMDHNtYXJ0X3F1b3Rlc5SJjBNzbWFydHF1b3Rlc19sb2NhbGVzlE6MHWNoYXJhY3Rlcl9sZXZlbF9pbmxpbmVfbWFya3VwlImMBndyaXRlcpSMA3htbJSMGWNvbXBhcmVfc2VjdGlvbnNfYnlfbmFtZXOUSwGMDGR1bXBfcnN0ZGlmZpROjAVfYm90aJR9lChoOE6MCWdlbmVyYXRvcpROjAlkYXRlc3RhbXCUTowLc291cmNlX2xpbmuUTowKc291cmNlX3VybJROjA10b2NfYmFja2xpbmtzlGpfBQAAjBJmb290bm90ZV9iYWNrbGlua3OUSwGMDXNlY3RudW1feGZvcm2USwGMDmRvY3RpdGxlX3hmb3JtlEsBjA1kb2NpbmZvX3hmb3JtlEsBjBJzZWN0c3VidGl0bGVfeGZvcm2USwCMDnN0cmlwX2NvbW1lbnRzlE6MDmlucHV0X2VuY29kaW5nlE6MHGlucHV0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXKUjAZzdHJpY3SUjA1sYW5ndWFnZV9jb2RllIwCZW6UjA5wZXBfcmVmZXJlbmNlc5ROjAxwZXBfYmFzZV91cmyUjB9odHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvlIwVcGVwX2ZpbGVfdXJsX3RlbXBsYXRllIwIcGVwLSUwNGSUjA5yZmNfcmVmZXJlbmNlc5ROjAxyZmNfYmFzZV91cmyUjBtodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC+UjB10cmltX2Zvb3Rub3RlX3JlZmVyZW5jZV9zcGFjZZROjBZmaWxlX2luc2VydGlvbl9lbmFibGVklEsBjAtyYXdfZW5hYmxlZJRLAYwOYXV0b19pZF9wcmVmaXiUjAJpZJSMCWlkX3ByZWZpeJRoBowbc3RyaXBfZWxlbWVudHNfd2l0aF9jbGFzc2VzlE6MDXN0cmlwX2NsYXNzZXOUTnWMBGJvdGiUfZSMCl9vcHRpb25zVG+UjAVfYm90aJSMC19vbGRfc291cmNllIxPL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy8udG94L2RvY3Mvc3RhZ2UwX291dC9hdXRvYXBpL5SMC19uZXdfc291cmNllIwJZG9jL2RpZmZzlGqUNQAAapU1AACMFmlnbm9yZV9pbl9zZWN0aW9uX25hbWWUXZQojA5jb25zdGFudGlub3BsZZSMCGlzdGFuYnVslGV1YowIcmVwb3J0ZXKUTowQaW5kaXJlY3RfdGFyZ2V0c5RdlIwRc3Vic3RpdHV0aW9uX2RlZnOUfZSMEnN1YnN0aXR1dGlvbl9uYW1lc5R9lIwIcmVmbmFtZXOUfZSMBnJlZmlkc5R9lIwHbmFtZWlkc5R9lIwJbmFtZXR5cGVzlH2UaBB9lIwNZm9vdG5vdGVfcmVmc5R9lIwNY2l0YXRpb25fcmVmc5R9lIwNYXV0b2Zvb3Rub3Rlc5RdlIwRYXV0b2Zvb3Rub3RlX3JlZnOUXZSMEHN5bWJvbF9mb290bm90ZXOUXZSMFHN5bWJvbF9mb290bm90ZV9yZWZzlF2UjAlmb290bm90ZXOUXZSMCWNpdGF0aW9uc5RdlIwSYXV0b2Zvb3Rub3RlX3N0YXJ0lEsBjBVzeW1ib2xfZm9vdG5vdGVfc3RhcnSUSwCMCmlkX2NvdW50ZXKUjAtjb2xsZWN0aW9uc5SMB0NvdW50ZXKUk5R9lIWUUpSMDnBhcnNlX21lc3NhZ2VzlF2UjBJ0cmFuc2Zvcm1fbWVzc2FnZXOUXZSMC3RyYW5zZm9ybWVylE6MC2luY2x1ZGVfbG9nlF2UjApkZWNvcmF0aW9ulE5oIWgDdWIu