gASVAgABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIwmbW9kdWxlLWV0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWOUYYwHY2xhc3Nlc5RdlIwFbmFtZXOUXZSMCGR1cG5hbWVzlF2UjAhiYWNrcmVmc5RdlIwFaXNtb2SUiHWMB3RhZ25hbWWUaAmMBnNvdXJjZZSMZy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy9pbmRleC5yc3SUjARsaW5llEsBjAZwYXJlbnSUaAOMCV9kb2N1bWVudJRoA3VijA9zcGhpbnguYWRkbm9kZXOUjAVpbmRleJSTlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlCiMBHBhaXKUjCdtb2R1bGU7IGV0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWOUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgAjAdzZWN0aW9ulJOUKYGUfZQoaAVoBmgHXZQoaACMBXRpdGxllJOUKYGUfZQoaAWMFkV0aGVyZXVtIFNwZWNpZmljYXRpb26UaAddlGgAjARUZXh0lJOUjBZFdGhlcmV1bSBTcGVjaWZpY2F0aW9ulIWUgZR9lChoBWgGaCBoOmghaANoHYxcL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy8udG94L2RvY3Mvc3RhZ2UwX291dC9hdXRvYXBpLyA9PiBkb2MvZGlmZnOUaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0sEaCBoNWghaAN1YmgAjAV0b3BpY5STlCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMEVRhYmxlIG9mIENvbnRlbnRzlGgHXZRoP4wR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b3cKCkdlbmVyYXRlIHJscCBoYXNoIG9mIHRoZSBoZWFkZXIgd2hpY2ggaXMgdG8gYmUgdXNlZCBmb3IgUHJvb2Ytb2YtV29yawoKdmFsaWRhdGVfcHJvb2Zfb2Zfd29yawoKVmFsaWRhdGVzIHRoZSBQcm9vZiBvZiBXb3JrIGNvbnN0cmFpbnRzLgoKYXBwbHlfYm9keQoKRXhlY3V0ZXMgYSBibG9jay4KCnZhbGlkYXRlX29tbWVycwoKVmFsaWRhdGVzIHRoZSBvbW1lcnMgbWVudGlvbmVkIGluIHRoZSBibG9jay4KCnBheV9yZXdhcmRzCgpQYXkgcmV3YXJkcyB0byB0aGUgYmxvY2sgbWluZXIgYXMgd2VsbCBhcyB0aGUgb21tZXJzIG1pbmVycy4KCnByb2Nlc3NfdHJhbnNhY3Rpb24KCkV4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBlbnZpcm9ubWVudC4KCnZhbGlkYXRlX3RyYW5zYWN0aW9uCgpWZXJpZmllcyBhIHRyYW5zYWN0aW9uLgoKY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0CgpDYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC4KCnJlY292ZXJfc2VuZGVyCgpFeHRyYWN0cyB0aGUgc2VuZGVyIGFkZHJlc3MgZnJvbSBhIHRyYW5zYWN0aW9uLgoKc2lnbmluZ19oYXNoCgpDb21wdXRlIHRoZSBoYXNoIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCBpbiB0aGUgc2lnbmF0dXJlLgoKY29tcHV0ZV9oZWFkZXJfaGFzaAoKQ29tcHV0ZXMgdGhlIGhhc2ggb2YgYSBibG9jayBoZWFkZXIuCgpjaGVja19nYXNfbGltaXQKClZhbGlkYXRlcyB0aGUgZ2FzIGxpbWl0IGZvciBhIGJsb2NrLgoKY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkKCkNvbXB1dGVzIGRpZmZpY3VsdHkgb2YgYSBibG9jayB1c2luZyBpdHMgaGVhZGVyIGFuZCBwYXJlbnQgaGVhZGVyLpRoB12UahcFAAApgZR9lChoBWgGaAddlGocBQAA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aBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGpmBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDlldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLmdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXOUjAhyZWZ0aXRsZZSMOWV0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWMuZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlc5R1aBxobWgdTmgfTmggamIGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx4L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS90YW5nZXJpbmVfd2hpc3RsZS9zcGVjL2luZGV4LnJzdDo1NTo8YXV0b3N1bW1hcnk+lGgfSwFoIGpfBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpABQAAaB1OaB9OaCBqXAYAAHViakEFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMQE9idGFpbiB0aGUgbGlzdCBvZiBoYXNoZXMgb2YgdGhlIHByZXZpb3VzIDI1NiBibG9ja3MgaW4gb3JkZXIgb2aUaAddlGg/jEBPYnRhaW4gdGhlIGxpc3Qgb2YgaGFzaGVzIG9mIHRoZSBwcmV2aW91cyAyNTYgYmxvY2tzIGluIG9yZGVyIG9mlIWUgZR9lChoBWgGaCBqkwYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggapAGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakAFAABoHU5oH05oIGpcBgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo7BQAAaB1oRGgfSwBoIGrzBQAAaCFoA3ViajwFAAApgZR9lChoBWgGaAddlChqQQUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxKOm9iajpgc3RhdGVfdHJhbnNpdGlvbiA8ZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5zdGF0ZV90cmFuc2l0aW9uPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqTQUAACmBlH2UKGgFarYGAABoB12UaD+MEHN0YXRlX3RyYW5zaXRpb26UhZSBlH2UKGgFaAZoIGq7BgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqWQUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGpMBQAAaB1OaB9OaCBquAYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwwZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5zdGF0ZV90cmFuc2l0aW9ulIwIcmVmdGl0bGWUjDBldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLnN0YXRlX3RyYW5zaXRpb26UdWgcaG1oHU5oH05oIGq0BgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MeC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy9pbmRleC5yc3Q6NTU6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqsQYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqQAUAAGgdTmgfTmggaq4GAAB1YmpBBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDVBdHRlbXB0cyB0byBhcHBseSBhIGJsb2NrIHRvIGFuIGV4aXN0aW5nIGJsb2NrIGNoYWluLpRoB12UaD+MNUF0dGVtcHRzIHRvIGFwcGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4ulIWUgZR9lChoBWgGaCBq5QYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggauIGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakAFAABoHU5oH05oIGquBgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo7BQAAaB1oRGgfSwBoIGrzBQAAaCFoA3ViajwFAAApgZR9lChoBWgGaAddlChqQQUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxIOm9iajpgdmFsaWRhdGVfaGVhZGVyIDxldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLnZhbGlkYXRlX2hlYWRlcj5glGgHXZRobimBlH2UKGgFaAZoB12Uak0FAAApgZR9lChoBWoIBwAAaAddlGg/jA92YWxpZGF0ZV9oZWFkZXKUhZSBlH2UKGgFaAZoIGoNBwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqWQUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGpMBQAAaB1OaB9OaCBqCgcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwvZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy52YWxpZGF0ZV9oZWFkZXKUjAhyZWZ0aXRsZZSML2V0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWMudmFsaWRhdGVfaGVhZGVylHVoHGhtaB1OaB9OaCBqBgcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggagMHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakAFAABoHU5oH05oIGoABwAAdWJqQQUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwYVmVyaWZpZXMgYSBibG9jayBoZWFkZXIulGgHXZRoP4wYVmVyaWZpZXMgYSBibG9jayBoZWFkZXIulIWUgZR9lChoBWgGaCBqNwcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggajQHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakAFAABoHU5oH05oIGoABwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo7BQAAaB1oRGgfSwBoIGrzBQAAaCFoA3ViajwFAAApgZR9lChoBWgGaAddlChqQQUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxiOm9iajpgZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdyA8ZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5nZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93PmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqTQUAACmBlH2UKGgFaloHAABoB12UaD+MHGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUhZSBlH2UKGgFaAZoIGpfBwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqWQUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGpMBQAAaB1OaB9OaCBqXAcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIw8ZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5nZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lIwIcmVmdGl0bGWUjDxldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUdWgcaG1oHU5oH05oIGpYBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MeC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy9pbmRleC5yc3Q6NTU6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqVQcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqQAUAAGgdTmgfTmggalIHAAB1YmpBBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEVHZW5lcmF0ZSBybHAgaGFzaCBvZiB0aGUgaGVhZGVyIHdoaWNoIGlzIHRvIGJlIHVzZWQgZm9yIFByb29mLW9mLVdvcmuUaAddlGg/jEVHZW5lcmF0ZSBybHAgaGFzaCBvZiB0aGUgaGVhZGVyIHdoaWNoIGlzIHRvIGJlIHVzZWQgZm9yIFByb29mLW9mLVdvcmuUhZSBlH2UKGgFaAZoIGqJBwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MeC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy9pbmRleC5yc3Q6NTU6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqhgcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqQAUAAGgdTmgfTmggalIHAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajsFAABoHWhEaB9LAGggavMFAABoIWgDdWJqPAUAACmBlH2UKGgFaAZoB12UKGpBBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjFY6b2JqOmB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrIDxldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLnZhbGlkYXRlX3Byb29mX29mX3dvcms+YJRoB12UaG4pgZR9lChoBWgGaAddlGpNBQAAKYGUfZQoaAVqrAcAAGgHXZRoP4wWdmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5SFlIGUfZQoaAVoBmggarEHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGpZBQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGquBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDZldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLnZhbGlkYXRlX3Byb29mX29mX3dvcmuUjAhyZWZ0aXRsZZSMNmV0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWMudmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5R1aBxobWgdTmgfTmggaqoHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx4L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS90YW5nZXJpbmVfd2hpc3RsZS9zcGVjL2luZGV4LnJzdDo1NTo8YXV0b3N1bW1hcnk+lGgfSwFoIGqnBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpABQAAaB1OaB9OaCBqpAcAAHViakEFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMKFZhbGlkYXRlcyB0aGUgUHJvb2Ygb2YgV29yayBjb25zdHJhaW50cy6UaAddlGg/jChWYWxpZGF0ZXMgdGhlIFByb29mIG9mIFdvcmsgY29uc3RyYWludHMulIWUgZR9lChoBWgGaCBq2wcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggatgHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakAFAABoHU5oH05oIGqkBwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo7BQAAaB1oRGgfSwBoIGrzBQAAaCFoA3ViajwFAAApgZR9lChoBWgGaAddlChqQQUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw+Om9iajpgYXBwbHlfYm9keSA8ZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5hcHBseV9ib2R5PmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqTQUAACmBlH2UKGgFav4HAABoB12UaD+MCmFwcGx5X2JvZHmUhZSBlH2UKGgFaAZoIGoDCAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqWQUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGpMBQAAaB1OaB9OaCBqAAgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwqZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5hcHBseV9ib2R5lIwIcmVmdGl0bGWUjCpldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLmFwcGx5X2JvZHmUdWgcaG1oHU5oH05oIGr8BwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MeC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy9pbmRleC5yc3Q6NTU6PGF1dG9zdW1tYXJ5PpRoH0sBaCBq+QcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqQAUAAGgdTmgfTmggavYHAAB1YmpBBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjBFFeGVjdXRlcyBhIGJsb2NrLpRoB12UaD+MEUV4ZWN1dGVzIGEgYmxvY2sulIWUgZR9lChoBWgGaCBqLQgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggaioIAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakAFAABoHU5oH05oIGr2BwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo7BQAAaB1oRGgfSwBoIGrzBQAAaCFoA3ViajwFAAApgZR9lChoBWgGaAddlChqQQUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxIOm9iajpgdmFsaWRhdGVfb21tZXJzIDxldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLnZhbGlkYXRlX29tbWVycz5glGgHXZRobimBlH2UKGgFaAZoB12Uak0FAAApgZR9lChoBWpQCAAAaAddlGg/jA92YWxpZGF0ZV9vbW1lcnOUhZSBlH2UKGgFaAZoIGpVCAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqWQUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGpMBQAAaB1OaB9OaCBqUggAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwvZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy52YWxpZGF0ZV9vbW1lcnOUjAhyZWZ0aXRsZZSML2V0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWMudmFsaWRhdGVfb21tZXJzlHVoHGhtaB1OaB9OaCBqTggAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggaksIAAB1YmFoDn2UKGgQXZRo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lIGUfZQoaAVoBmggavkIAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGpZBQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGr2CAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDNldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLnByb2Nlc3NfdHJhbnNhY3Rpb26UjAhyZWZ0aXRsZZSMM2V0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWMucHJvY2Vzc190cmFuc2FjdGlvbpR1aBxobWgdTmgfTmggavIIAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx4L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS90YW5nZXJpbmVfd2hpc3RsZS9zcGVjL2luZGV4LnJzdDo1NTo8YXV0b3N1bW1hcnk+lGgfSwFoIGrvCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpABQAAaB1OaB9OaCBq7AgAAHViakEFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMN0V4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBlbnZpcm9ubWVudC6UaAddlGg/jDdFeGVjdXRlIGEgdHJhbnNhY3Rpb24gYWdhaW5zdCB0aGUgcHJvdmlkZWQgZW52aXJvbm1lbnQulIWUgZR9lChoBWgGaCBqIwkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggaiAJAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakAFAABoHU5oH05oIGrsCAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo7BQAAaB1oRGgfSwBoIGrzBQAAaCFoA3ViajwFAAApgZR9lChoBWgGaAddlChqQQUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxSOm9iajpgdmFsaWRhdGVfdHJhbnNhY3Rpb24gPGV0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWMudmFsaWRhdGVfdHJhbnNhY3Rpb24+YJRoB12UaG4pgZR9lChoBWgGaAddlGpNBQAAKYGUfZQoaAVqRgkAAGgHXZRoP4wUdmFsaWRhdGVfdHJhbnNhY3Rpb26UhZSBlH2UKGgFaAZoIGpLCQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqWQUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGpMBQAAaB1OaB9OaCBqSAkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIw0ZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy52YWxpZGF0ZV90cmFuc2FjdGlvbpSMCHJlZnRpdGxllIw0ZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy52YWxpZGF0ZV90cmFuc2FjdGlvbpR1aBxobWgdTmgfTmggakQJAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx4L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS90YW5nZXJpbmVfd2hpc3RsZS9zcGVjL2luZGV4LnJzdDo1NTo8YXV0b3N1bW1hcnk+lGgfSwFoIGpBCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpABQAAaB1OaB9OaCBqPgkAAHViakEFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMF1ZlcmlmaWVzIGEgdHJhbnNhY3Rpb24ulGgHXZRoP4wXVmVyaWZpZXMgYSB0cmFuc2FjdGlvbi6UhZSBlH2UKGgFaAZoIGp1CQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MeC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy9pbmRleC5yc3Q6NTU6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqcgkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqQAUAAGgdTmgfTmggaj4JAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajsFAABoHWhEaB9LAGggavMFAABoIWgDdWJqPAUAACmBlH2UKGgFaAZoB12UKGpBBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjFo6b2JqOmBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QgPGV0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWMuY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0PmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqTQUAACmBlH2UKGgFapgJAABoB12UaD+MGGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJSFlIGUfZQoaAVoBmggap0JAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGpZBQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGqaCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDhldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLmNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJSMCHJlZnRpdGxllIw4ZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5jYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUdWgcaG1oHU5oH05oIGqWCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MeC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy9pbmRleC5yc3Q6NTU6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqkwkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqQAUAAGgdTmgfTmggapAJAAB1YmpBBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UaAddlGg/jD9DYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC6UhZSBlH2UKGgFaAZoIGrHCQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2MeC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy9pbmRleC5yc3Q6NTU6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqxAkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqQAUAAGgdTmgfTmggapAJAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajsFAABoHWhEaB9LAGggavMFAABoIWgDdWJqPAUAACmBlH2UKGgFaAZoB12UKGpBBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEY6b2JqOmByZWNvdmVyX3NlbmRlciA8ZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5yZWNvdmVyX3NlbmRlcj5glGgHXZRobimBlH2UKGgFaAZoB12Uak0FAAApgZR9lChoBWrqCQAAaAddlGg/jA5yZWNvdmVyX3NlbmRlcpSFlIGUfZQoaAVoBmggau8JAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGpZBQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGrsCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjC5ldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLnJlY292ZXJfc2VuZGVylIwIcmVmdGl0bGWUjC5ldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLnJlY292ZXJfc2VuZGVylHVoHGhtaB1OaB9OaCBq6AkAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggauUJAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakAFAABoHU5oH05oIGriCQAAdWJqQQUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwvRXh0cmFjdHMgdGhlIHNlbmRlciBhZGRyZXNzIGZyb20gYSB0cmFuc2FjdGlvbi6UaAddlGg/jC9FeHRyYWN0cyB0aGUgc2VuZGVyIGFkZHJlc3MgZnJvbSBhIHRyYW5zYWN0aW9uLpSFlIGUfZQoaAVoBmggahkKAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx4L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS90YW5nZXJpbmVfd2hpc3RsZS9zcGVjL2luZGV4LnJzdDo1NTo8YXV0b3N1bW1hcnk+lGgfSwFoIGoWCgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpABQAAaB1OaB9OaCBq4gkAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqOwUAAGgdaERoH0sAaCBq8wUAAGghaAN1Ymo8BQAAKYGUfZQoaAVoBmgHXZQoakEFAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjEI6b2JqOmBzaWduaW5nX2hhc2ggPGV0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWMuc2lnbmluZ19oYXNoPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqTQUAACmBlH2UKGgFajwKAABoB12UaD+MDHNpZ25pbmdfaGFzaJSFlIGUfZQoaAVoBmggakEKAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGpZBQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGo+CgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjCxldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLnNpZ25pbmdfaGFzaJSMCHJlZnRpdGxllIwsZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5zaWduaW5nX2hhc2iUdWgcaG1oHU5oH05oIGo6CgAAdWJhaA59lChoEF2UaBNdlIwPY2hhbmdlLXJlcGxhY2VklGFoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggajcKAABoIWgDdWJoaSmBlH2UKGgFjE46b2JqOmBzaWduaW5nX2hhc2hfcHJlMTU1IDxldGhlcmV1bS5zcHVyaW91c19kcmFnb24uc3BlYy5zaWduaW5nX2hhc2hfcHJlMTU1PmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqTQUAACmBlH2UKGgFamUKAABoB12UaD+ME3NpZ25pbmdfaGFzaF9wcmUxNTWUhZSBlH2UKGgFaAZoIGpqCgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlCiMBHhyZWaUjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGpnCgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDFldGhlcmV1bS5zcHVyaW91c19kcmFnb24uc3BlYy5zaWduaW5nX2hhc2hfcHJlMTU1lIwIcmVmdGl0bGWUjDFldGhlcmV1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ACmBlH2UKGgFaAZoB12UKGpBBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjF46b2JqOmBjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eSA8ZXRoZXJldW0udGFuZ2VyaW5lX3doaXN0bGUuc3BlYy5jYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eT5glGgHXZRobimBlH2UKGgFaAZoB12Uak0FAAApgZR9lChoBWrSCwAAaAddlGg/jBpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eZSFlIGUfZQoaAVoBmggatcLAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGpZBQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGrUCwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDpldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5lIwIcmVmdGl0bGWUjDpldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5lHVoHGhtaB1OaB9OaCBq0AsAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggas0LAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakAFAABoHU5oH05oIGrKCwAAdWJqQQUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxCQ29tcHV0ZXMgZGlmZmljdWx0eSBvZiBhIGJsb2NrIHVzaW5nIGl0cyBoZWFkZXIgYW5kIHBhcmVudCBoZWFkZXIulGgHXZRoP4xCQ29tcHV0ZXMgZGlmZmljdWx0eSBvZiBhIGJsb2NrIHVzaW5nIGl0cyBoZWFkZXIgYW5kIHBhcmVudCBo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ZXZfYmxvY2tfaGFzaCA9IGJsb2NrLmhlYWRlci5wYXJlbnRfaGFzaAogICAgICAgIHJlY2VudF9ibG9ja19oYXNoZXMuYXBwZW5kKHByZXZfYmxvY2tfaGFzaCkKCiAgICAjIFdlIGFyZSBjb21wdXRpbmcgdGhlIGhhc2ggb25seSBmb3IgdGhlIG1vc3QgcmVjZW50IGJsb2NrIGFuZCBub3QgZm9yCiAgICAjIHRoZSByZXN0IG9mIHRoZSBibG9ja3MgYXMgdGhleSBoYXZlIHN1Y2Nlc3NvcnMgd2hpY2ggaGF2ZSB0aGUgaGFzaCBvZgogICAgIyB0aGUgY3VycmVudCBibG9jayBhcyBwYXJlbnQgaGFzaC4KICAgIG1vc3RfcmVjZW50X2Jsb2NrX2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShyZWNlbnRfYmxvY2tzWy0xXS5oZWFkZXIpKQogICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQobW9zdF9yZWNlbnRfYmxvY2tfaGFzaCkKCiAgICByZXR1cm4gcmVjZW50X2Jsb2NrX2hhc2hlcwqUaAddlGg/WN8CAABkZWYgZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlcyhjaGFpbjogQmxvY2tDaGFpbikgLT4gTGlzdFtIYXNoMzJdOgogICAgcmVjZW50X2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KICAgICMgVE9ETzogVGhpcyBmdW5jdGlvbiBoYXMgbm90IGJlZW4gdGVzdGVkIHJpZ29yb3VzbHkKICAgIGlmIGxlbihyZWNlbnRfYmxvY2tzKSA9PSAwOgogICAgICAgIHJldHVybiBbXQoKICAgIHJlY2VudF9ibG9ja19oYXNoZXMgPSBbXQoKICAgIGZvciBibG9jayBpbiByZWNlbnRfYmxvY2tzOgogICAgICAgIHByZXZfYmxvY2tfaGFzaCA9IGJsb2NrLmhlYWRlci5wYXJlbnRfaGFzaAogICAgICAgIHJlY2VudF9ibG9ja19oYXNoZXMuYXBwZW5kKHByZXZfYmxvY2tfaGFzaCkKCiAgICAjIFdlIGFyZSBjb21wdXRpbmcgdGhlIGhhc2ggb25seSBmb3IgdGhlIG1vc3QgcmVjZW50IGJs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AAB1aBxqZw4AAGgdaB5oH0vmaCBqfRUAAHViapEOAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjDVBdHRlbXB0cyB0byBhcHBseSBhIGJsb2NrIHRvIGFuIGV4aXN0aW5nIGJsb2NrIGNoYWluLpRoB12UaD+MNUF0dGVtcHRzIHRvIGFwcGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4ulIWUgZR9lChoBWgGaCBq3BUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH0vpaCBq2RUAAHViaGkpgZR9lChoBVgxAQAAQWxsIHBhcnRzIG9mIHRoZSBibG9jaydzIGNvbnRlbnRzIG5lZWQgdG8gYmUgdmVyaWZpZWQgYmVmb3JlIGJlaW5nIGFkZGVkCnRvIHRoZSBjaGFpbi4gQmxvY2tzIGFyZSB2ZXJpZmllZCBieSBlbnN1cmluZyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUKYmxvY2sgbWFrZSBsb2dpY2FsIHNlbnNlIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBwYXJlbnQgYmxvY2suIFRoZQppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sncyBoZWFkZXIgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UaAddlGg/WDUBAABBbGwgcGFydHMgb2YgdGhlIGJsb2Nr4oCZcyBjb250ZW50cyBuZWVkIHRvIGJlIHZlcmlmaWVkIGJlZm9yZSBiZWluZyBhZGRlZAp0byB0aGUgY2hhaW4uIEJsb2NrcyBhcmUgdmVyaWZpZWQgYnkgZW5zdXJpbmcgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlCmJsb2NrIG1ha2UgbG9naWNhbCBzZW5zZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IGJsb2NrLiBUaGUKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2Nr4oCZcyBoZWFkZXIgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UhZSB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ICAgICAgICBibG9jay5oZWFkZXIudGltZXN0YW1wLAogICAgICAgIGJsb2NrLmhlYWRlci5kaWZmaWN1bHR5LAogICAgICAgIGJsb2NrLnRyYW5zYWN0aW9ucywKICAgICAgICBibG9jay5vbW1lcnMsCiAgICApCiAgICBlbnN1cmUoZ2FzX3VzZWQgPT0gYmxvY2suaGVhZGVyLmdhc191c2VkLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUodHJhbnNhY3Rpb25zX3Jvb3QgPT0gYmxvY2suaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc3RhdGVfcm9vdChzdGF0ZSkgPT0gYmxvY2suaGVhZGVyLnN0YXRlX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShyZWNlaXB0X3Jvb3QgPT0gYmxvY2suaGVhZGVyLnJlY2VpcHRfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGJsb2NrX2xvZ3NfYmxvb20gPT0gYmxvY2suaGVhZGVyLmJsb29tLCBJbnZhbGlkQmxvY2spCgogICAgY2hhaW4uYmxvY2tzLmFwcGVuZChibG9jaykKICAgIGlmIGxlbihjaGFpbi5ibG9ja3MpID4gMjU1OgogICAgICAgICMgUmVhbCBjbGllbnRzIGhhdmUgdG8gc3RvcmUgbW9yZSBibG9ja3MgdG8gZGVhbCB3aXRoIHJlb3JncywgYnV0IHRoZQogICAgICAgICMgcHJvdG9jb2wgb25seSByZXF1aXJlcyB0aGUgbGFzdCAyNTUKICAgICAgICBjaGFpbi5ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLTI1NTpdCpRoB12UKGg/WGsCAABkZWYgc3RhdGVfdHJhbnNpdGlvbihjaGFpbjogQmxvY2tDaGFpbiwgYmxvY2s6IEJsb2NrKSAtPiBOb25lOgogICAgcGFyZW50X2hlYWRlciA9IGNoYWluLmJsb2Nrc1stMV0uaGVhZGVyCiAgICB2YWxpZGF0ZV9oZWFkZXIoYmxvY2suaGVhZGVyLCBwYXJlbnRfaGVhZGVyKQogICAgdmFsaWRhdGVfb21tZXJzKGJsb2NrLm9tbWVycywgYmxvY2suaGVhZGVyLCBjaGFpbikKICAgICgKICAgICAgICBnYXNfdXNlZCwKICAgICAgICB0cmFuc2FjdGlvbnNfcm9vdCwKICAgICAgICByZWNlaXB0X3Jvb3QsCiAgICAgICAgYmxvY2tfbG9nc19ibG9vbSwKICAgICAgICBzdGF0ZSwKICAgICkgPSBhcHBseV9ib2R5KAogICAgICAgIGNoYWluLnN0YXRlLAogICAgICAgIGdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMoY2hhaW4pLAogICAgICAgIGJsb2NrLmhlYWRlci5jb2luYmFzZSwKICAgICAgICBibG9jay5oZWFkZXIubnVtYmVyLAogICAgICAgIGJsb2NrLmhlYWRlci5nYXNfbGltaXQsCiAgICAgICAgYmxvY2suaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBibG9jay5oZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBibG9jay50cmFuc2FjdGlvbnMsCiAgICAgICAgYmxvY2sub21tZXJzLAogICAglIWUgZR9lChoBWgGaCBqqxYAAGghaANoHWhEaB9LAHViap8KAAApgZR9lChoBWgGaAddlGg/jBRjaGFpbi5jaGFpbl9pZCwKICAgIJSFlIGUfZQoaAVoBmggarMWAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjAxjaGFuZ2UtYWRkZWSUYWgVXZRoF12UaBldlHVoHGqeCgAAaCBqqxYAAGghaANoHWhEaB9LAHViaD9YPwIAACkKICAgIGVuc3VyZShnYXNfdXNlZCA9PSBibG9jay5oZWFkZXIuZ2FzX3VzZWQsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSh0cmFuc2FjdGlvbnNfcm9vdCA9PSBibG9jay5oZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzdGF0ZV9yb290KHN0YXRlKSA9PSBibG9jay5oZWFkZXIuc3RhdGVfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHJlY2VpcHRfcm9vdCA9PSBibG9jay5oZWFkZXIucmVjZWlwdF9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1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AHVoHGpnDgAAaB1oHmgfTQQBaCBq9xYAAHViapEOAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjBhWZXJpZmllcyBhIGJsb2NrIGhlYWRlci6UaAddlGg/jBhWZXJpZmllcyBhIGJsb2NrIGhlYWRlci6UhZSBlH2UKGgFaAZoIGpWFwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTQcBaCBqUxcAAHViaGkpgZR9lChoBViUAQAASW4gb3JkZXIgdG8gY29uc2lkZXIgYSBibG9jaydzIGhlYWRlciB2YWxpZCwgdGhlIGxvZ2ljIGZvciB0aGUKcXVhbnRpdGllcyBpbiB0aGUgaGVhZGVyIHNob3VsZCBtYXRjaCB0aGUgbG9naWMgZm9yIHRoZSBibG9jayBpdHNlbGYuCkZvciBleGFtcGxlIHRoZSBoZWFkZXIgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIGJsb2NrJ3MgcGFyZW50CnRpbWVzdGFtcCBiZWNhdXNlIHRoZSBibG9jayB3YXMgY3JlYXRlZCAqYWZ0ZXIqIHRoZSBwYXJlbnQgYmxvY2suCkFkZGl0aW9uYWxseSwgdGhlIGJsb2NrJ3MgbnVtYmVyIHNob3VsZCBiZSBkaXJlY3RseSBmb2xvd2luZyB0aGUgcGFyZW50CmJsb2NrJ3MgbnVtYmVyIHNpbmNlIGl0IGlzIHRoZSBuZXh0IGJsb2NrIGluIHRoZSBzZXF1ZW5jZS6UaAddlChoP4z8SW4gb3JkZXIgdG8gY29uc2lkZXIgYSBibG9ja+KAmXMgaGVhZGVyIHZhbGlkLCB0aGUgbG9naWMgZm9yIHRoZQpxdWFudGl0aWVzIGluIHRoZSBoZWFkZXIgc2hvdWxkIG1hdGNoIHRoZSBsb2dpYyBmb3IgdGhlIGJsb2NrIGl0c2VsZi4KRm9yIGV4YW1wbGUgdGhlIGhlYWRlciB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgYmxvY2vigJlzIHBhcmVudAp0aW1lc3RhbXAgYmVjYXVzZSB0aGUgYmxvY2sgd2FzIGNyZWF0ZWQglIWUgZR9lChoBWgGaCBqZBcAAGgh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AABoHU5oH05oIGrbFgAAdWJqpw4AACmBlH2UKGgFWAIDAABkZWYgdmFsaWRhdGVfaGVhZGVyKGhlYWRlcjogSGVhZGVyLCBwYXJlbnRfaGVhZGVyOiBIZWFkZXIpIC0+IE5vbmU6CiAgICBlbnN1cmUoaGVhZGVyLnRpbWVzdGFtcCA+IHBhcmVudF9oZWFkZXIudGltZXN0YW1wLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoaGVhZGVyLm51bWJlciA9PSBwYXJlbnRfaGVhZGVyLm51bWJlciArIDEsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgKICAgICAgICBjaGVja19nYXNfbGltaXQoaGVhZGVyLmdhc19saW1pdCwgcGFyZW50X2hlYWRlci5nYXNfbGltaXQpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKICAgIGVuc3VyZShsZW4oaGVhZGVyLmV4dHJhX2RhdGEpIDw9IDMyLCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfZGlmZmljdWx0eSA9IGNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5KAogICAgICAgIGhlYWRlci5udW1iZXIsCiAgICAgICAgaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBwYXJlbnRfaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBwYXJlbnRfaGVhZGVyLmRpZmZpY3VsdHksCiAgICApCiAgICBlbnN1cmUoaGVhZGVyLmRpZmZpY3VsdHkgPT0gYmxvY2tfZGlmZmljdWx0eSwgSW52YWxpZEJsb2NrKQoKICAgIGJsb2NrX3BhcmVudF9oYXNoID0ga2VjY2FrMjU2KHJscC5lbmNvZGUocGFyZW50X2hlYWRlcikpCiAgICBlbnN1cmUoaGVhZGVyLnBhcmVudF9oYXNoID09IGJsb2NrX3BhcmVudF9oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgdmFsaWRhdGVfcHJvb2Zfb2Zfd29yayhoZWFkZXIpCpRoB12UaD9YAgMAAGRlZiB2YWxpZGF0ZV9oZWFkZXIoaGVhZGVyOiBIZWFkZXIsIHBhcmVudF9oZWFkZXI6IEhlYWRlcikgLT4gTm9uZToKICAgIGVuc3VyZShoZWFkZXIudGltZXN0YW1wID4gcGFyZW50X2hlYWRlci50aW1lc3RhbXAsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShoZWFkZXIubnVtYmVyID09IHBhcmVudF9oZWFkZXIubnVtYmVyICsgMSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIGNoZWNrX2dhc19saW1pdChoZWFkZXIuZ2FzX2xpbWl0LCBwYXJlbnRfaGVhZGVyLmdhc19saW1pdCksCiAgICAgICAgSW52YWxpZEJsb2NrLAogICAgKQogICAgZW5zdXJlKGxlbihoZWFkZXIuZXh0cmFfZGF0YSkgPD0gMzIsIEludmFsaWRCbG9jaykKCiAgICBibG9ja19kaWZmaWN1bHR5ID0gY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkoCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIudGltZXN0YW1wLAogICAgICAgIHBhcmVudF9oZWFkZXIudGltZXN0YW1wLAogICAgICAgIHBhcmVudF9oZWFkZXIuZGlmZmljdWx0eSwKICAgICkKICAgIGVuc3VyZShoZWFkZXIuZGlmZmljdWx0eSA9PSBibG9ja19kaWZmaWN1bHR5LCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfcGFyZW50X2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShwYXJlbnRfaGVhZGVyKSkKICAgIGVuc3VyZShoZWFkZXIucGFyZW50X2hhc2ggPT0gYmxvY2tfcGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKCiAgICB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcikKlIWUgZR9lChoBWgGaCBqGRgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMWC9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL3RhbmdlcmluZV93aGlzdGxlL3NwZWMucHmUjAl4bWw6c3BhY2WUatcEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqvg4AAEsBc4wHbGluZW5vc5SJdWgcaqYOAABoHWgeaB9NFgFoIGrbFgAAdWJlaA59lChoEF2UaoICAABhaBNdlGgVXZSMD3ZhbGlkYXRlX2hlYWRlcpRhaBddlGgZXZR1aBxoM2gdaB5oH00BAWggajEOAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMHGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUaAddlGg/jBxnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lIWUgZR9lChoBWgGaCBqOhgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH00bAWggajcYAAB1YmgkKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UdWgcaCNoHU5oH05oIGo3GAAAdWJqYw4AACmBlH2UKGgFaAZoB12UKGpoDgAAKYGUfZQoaAWMJGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3coaGVhZGVyKZRoB12UKGpuDgAAKYGUfZQoaAWMHGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUaAddlGg/jBxnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lIWUgZR9lChoBWgGaCBqWhgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoankOAABqeg4AAGp7DgAAanwOAABlaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUatcEAAB1aBxqbQ4AAGgdaB5oH05oIGpWGAAAdWJqXRIAACmBlH2UKGgFjAZoZWFkZXKUaAddlGpjEgAAKYGUfZQoaAWMBmhlYWRlcpRoB12Uap8KAAApgZR9lChoBWgGaAddlGg/jAZoZWFkZXKUhZSBlH2UKGgFaAZoIGpxGAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGpyEgAAYWgVXZRoF12UaBldlHVoHGqeCgAAaB1OaB9OaCBqbRgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRq1wQAAHVoHGpiEgAAaB1OaB9OaCBqaRgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRq1wQAAHVoHGpcEgAAaB1oHmgfTmggalYYAAB1YmVoDn2UKGgQXZSMPGV0aGVyZXVtLnRhbmdlcmluZV93aGlzdGxlLnNwZWMuZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3Bvd5RhaBNdlChqhA4AAGqFDgAAjAJweZRqhw4AAGqIDgAAZWgVXZRoF12UaBldlIwGbW9kdWxllGqNDgAAjAVjbGFzc5RoBowIZnVsbG5hbWWUalwYAAB1aBxqZw4AAGgdaB5oH00eAWggalMYAAB1YmqRDgAAKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBYxTR2VuZXJhdGUgcmxwIGhhc2ggb2YgdGhlIGhlYWRlciB3aGljaCBpcyB0byBiZSB1c2VkIGZvciBQcm9vZi1vZi1Xb3JrCnZlcmlmaWNhdGlvbi6UaAddlGg/jFNHZW5lcmF0ZSBybHAgaGFzaCBvZiB0aGUgaGVhZGVyIHdoaWNoIGlzIHRvIGJlIHVzZWQgZm9yIFByb29mLW9mLVdvcmsKdmVyaWZpY2F0aW9uLpSFlIGUfZQoaAVoBmggapoYAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NIQFoIGqXGAAAdWJoaSmBlH2UKGgFjGNJbiBvdGhlciB3b3JkcywgdGhlIFBvVyBhcnRlZmFjdHMgYG1peF9kaWdlc3RgIGFuZCBgbm9uY2VgIGFyZSBpZ25vcmVkCndoaWxlIGNhbGN1bGF0aW5nIHRoaXMgaGFzaC6UaAddlChoP4wiSW4gb3RoZXIgd29yZHMsIHRoZSBQb1cgYXJ0ZWZhY3RzIJSFlIGUfZQoaAVoBmggaqgYAABoIWgDaB1oRGgfSwB1Ymo2BgAAKYGUfZQoaAWMDGBtaXhfZGlnZXN0YJRoB12UaD+MCm1peF9kaWdlc3SUhZSBlH2UKGgFaAZoIGqwGAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo1BgAAaB1OaB9OaCBqqBgAAHViaD+MBSBhbmQglIWUgZR9lChoBWgGaCBqqBgAAGghaANoHWhEaB9LAHViajYGAAApgZR9lChoBYwHYG5vbmNlYJRoB12UaD+MBW5vbmNllIWUgZR9lChoBWgGaCBqwhgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqNQYAAGgdTmgfTmggaqgYAAB1Ymg/jCkgYXJlIGlnbm9yZWQKd2hpbGUgY2FsY3VsYXRpbmcgdGhpcyBoYXNoLpSFlIGUfZQoaAVoBmggaqgYAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NJAFoIGqXGAAAdWJoaSmBlH2UKGgFjOVBIHBhcnRpY3VsYXIgUG9XIGlzIHZhbGlkIGZvciBhIHNpbmdsZSBoYXNoLCB0aGF0IGhhc2ggaXMgY29tcHV0ZWQgYnkKdGhpcyBmdW5jdGlvbi4gVGhlIGBub25jZWAgYW5kIGBtaXhfZGlnZXN0YCBhcmUgb21pdHRlZCBmcm9tIHRoaXMgaGFzaApiZWNhdXNlIHRoZXkgYXJlIGJlaW5nIGNoYW5nZWQgYnkgbWluZXJzIGluIHRoZWlyIHNlYXJjaCBmb3IgYSBzdWZmaWNpZW50CnByb29mLW9mLXdvcmsulGgHXZQoaD+MWUEgcGFydGljdWxhciBQb1cgaXMgdmFsaWQgZm9yIGEgc2luZ2xlIGhhc2gsIHRoYXQgaGFzaCBpcyBjb21wdXRlZCBieQp0aGlzIGZ1bmN0aW9uLiBUaGUglIWUgZR9lChoBWgGaCBq2hgAAGghaANoHWhEaB9LAHViajYGAAApgZR9lChoBYwHYG5vbmNlYJRoB12UaD+MBW5vbmNllIWUgZR9lChoBWgGaCBq4hgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqNQYAAGgdTmgfTmggatoYAAB1Ymg/jAUgYW5kIJSFlIGUfZQoaAVoBmggatoYAABoIWgDaB1oRGgfSwB1Ymo2BgAAKYGUfZQoaAWMDGBtaXhfZGlnZXN0YJRoB12UaD+MCm1peF9kaWdlc3SUhZSBlH2UKGgFaAZoIGr0GAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo1BgAAaB1OaB9OaCBq2hgAAHViaD+MdCBhcmUgb21pdHRlZCBmcm9tIHRoaXMgaGFzaApiZWNhdXNlIHRoZXkgYXJlIGJlaW5nIGNoYW5nZWQgYnkgbWluZXJzIGluIHRoZWlyIHNlYXJjaCBmb3IgYSBzdWZmaWNpZW50CnByb29mLW9mLXdvcmsulIWUgZR9lChoBWgGaCBq2hgAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH00nAWggapcYAAB1YmrhEgAAKYGUfZQoaAVoBmgHXZQoauYSAAApgZR9lChoBWgGaAddlChq6xIAACmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoP4wKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmggahIZAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauoSAABoHWgeaB9LAGggag8ZAAB1Ymr7EgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEJoZWFkZXIgLS0gVGhlIGhlYWRlciBvYmplY3QgZm9yIHdoaWNoIHRoZSBoYXNoIGlzIHRvIGJlIGdlbmVyYXRlZC6UaAddlChqBBMAACmBlH2UKGgFjAZoZWFkZXKUaAddlGg/jAZoZWFkZXKUhZSBlH2UKGgFaAZoIGonGQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwLcmVmc3BlY2lmaWOUiIwJcHk6bW9kdWxllGqNDgAAjAhweTpjbGFzc5ROdWgcagMTAABoHU5oH05oIGojGQAAdWJoP4w9IOKAkyBUaGUgaGVhZGVyIG9iamVjdCBmb3Igd2hpY2ggdGhlIGhhc2ggaXMgdG8gYmUgZ2VuZXJhdGVkLpSFlIGUfZQoaAVoBmggaiMZAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGogGQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGr6EgAAaB1OaB9OaCBqDxkAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq5RIAAGgdTmgfTmggagwZAAB1YmrmEgAAKYGUfZQoaAVoBmgHXZQoausSAAApgZR9lChoBYwHUmV0dXJuc5RoB12UaD+MB1JldHVybnOUhZSBlH2UKGgFaAZoIGpRGQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrqEgAAaB1oHmgfSwBoIGpOGQAAdWJq+xIAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw3aGFzaCAtLSBUaGUgUG9XIHZhbGlkIHJscCBoYXNoIG9mIHRoZSBwYXNzZWQgaW4gaGVhZGVyLpRoB12UKGpFEwAAKYGUfZQoaAWMCCoqaGFzaCoqlGgHXZRoP4wEaGFzaJSFlIGUfZQoaAVoBmggamYZAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakQTAABoHU5oH05oIGpiGQAAdWJoP4w0IOKAkyBUaGUgUG9XIHZhbGlkIHJscCBoYXNoIG9mIHRoZSBwYXNzZWQgaW4gaGVhZGVyLpSFlIGUfZQoaAVoBmggamIZAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpfGQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGr6EgAAaB1OaB9OaCBqThkAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq5RIAAGgdTmgfTmggagwZAAB1YmrmEgAAKYGUfZQoaAVoBmgHXZQoausSAAApgZR9lChoBYwLUmV0dXJuIHR5cGWUaAddlGg/jAtSZXR1cm4gdHlwZZSFlIGUfZQoaAVoBmggao0ZAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauoSAABoHWgeaB9LAGggaooZAAB1Ymr7EgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjAZIYXNoMzKUaAddlGo2BgAAKYGUfZQoaAWMCGBIYXNoMzJglGgHXZRoP4wGSGFzaDMylIWUgZR9lChoBWgGaCBqohkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqNQYAAGgdTmgfTmggap4ZAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGqbGQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGr6EgAAaB1OaB9OaCBqihkAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq5RIAAGgdTmgfTmggagwZAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauASAABoHU5oH05oIGqXGAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGqQDgAAaB1oHmgfTmggalMYAAB1YmVoDn2UKGgQXZRoE12UKGqQGAAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UapAYAACMB29ianR5cGWUatEZAACMCGRlc2N0eXBllGrRGQAAjAdub2luZGV4lIl1aBxqYg4AAGgdTmgfTmggajcYAAB1YmqnDgAAKYGUfZQoaAVYAwIAAGRlZiBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcjogSGVhZGVyKSAtPiBIYXNoMzI6CiAgICBoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMgPSBbCiAgICAgICAgaGVhZGVyLnBhcmVudF9oYXNoLAogICAgICAgIGhlYWRlci5vbW1lcnNfaGFzaCwKICAgICAgICBoZWFkZXIuY29pbmJhc2UsCiAgICAgICAgaGVhZGVyLnN0YXRlX3Jvb3QsCiAgICAgICAgaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LAogICAgICAgIGhlYWRlci5yZWNlaXB0X3Jvb3QsCiAgICAgICAgaGVhZGVyLmJsb29tLAogICAgICAgIGhlYWRlci5kaWZmaWN1bHR5LAogICAgICAgIGhlYWRlci5udW1iZXIsCiAgICAgICAgaGVhZGVyLmdhc19saW1pdCwKICAgICAgICBoZWFkZXIuZ2FzX3VzZWQsCiAgICAgICAgaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBoZWFkZXIuZXh0cmFfZGF0YSwKICAgIF0KCiAgICByZXR1cm4gcmxwLnJscF9oYXNoKGhlYWRlcl9kYXRhX3dpdGhvdXRfcG93X2FydGVmYWN0cykKlGgHXZRoP1gDAgAAZGVmIGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3coaGVhZGVyOiBIZWFkZXIpIC0+IEhhc2gzMjoKICAgIGhlYWRlcl9kYXRhX3dpdGhvdXRfcG93X2FydGVmYWN0cyA9IFsKICAgICAgICBoZWFkZXIucGFyZW50X2hhc2gsCiAgICAgICAgaGVhZGVyLm9tbWVyc19oYXNoLAogICAgICAgIGhlYWRlci5jb2luYmFzZSwKICAgICAgICBoZWFkZXIuc3RhdGVfcm9vdCwKICAgICAgICBoZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgaGVhZGVyLnJlY2VpcHRfcm9vdCwKICAgICAgICBoZWFkZXIuYmxvb20sCiAgICAgICAgaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGhlYWRlci5nYXNfdXNlZCwKICAgICAgICBoZWFkZXIudGltZXN0YW1wLAogICAgICAgIGhlYWRlci5leHRyYV9kYXRhLAogICAgXQoKICAgIHJldHVybiBybHAucmxwX2hhc2goaGVhZGVyX2RhdGFfd2l0aG91dF9wb3dfYXJ0ZWZhY3RzKQqUhZSBlH2UKGgFaAZoIGrZGQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxYL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy5weZSMCXhtbDpzcGFjZZRq1wQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGq+DgAASwFzjAdsaW5lbm9zlIl1aBxqpg4AAGgdaB5oH000AWggajcYAAB1YmVoDn2UKGgQXZRqpAIAAGFoE12UaBVdlIwcZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3Bvd5RhaBddlGgZXZR1aBxoM2gdaB5oH00bAWggajEOAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMFnZhbGlkYXRlX3By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ZXJfaGFzaCwgaGVhZGVyLm5vbmNlLCBjYWNoZSwgZGF0YXNldF9zaXplKGhlYWRlci5udW1iZXIpCiAgICApCgogICAgZW5zdXJlKG1peF9kaWdlc3QgPT0gaGVhZGVyLm1peF9kaWdlc3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgKICAgICAgICBVaW50LmZyb21fYmVfYnl0ZXMocmVzdWx0KSA8PSAoVTI1Nl9DRUlMX1ZBTFVFIC8vIGhlYWRlci5kaWZmaWN1bHR5KSwKICAgICAgICBJbnZhbGlkQmxvY2ssCiAgICApCpRoB12UaD9YNgIAAGRlZiB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgaGVhZGVyX2hhc2ggPSBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcikKICAgICMgVE9ETzogTWVtb2l6ZSB0aGlzIHNvbWV3aGVyZSBhbmQgcmVhZCBmcm9tIHRoYXQgZGF0YSBpbnN0ZWFkIG9mCiAgICAjIGNhbGN1bGF0aW5nIGNhY2hlIGZvciBldmVyeSBibG9jayB2YWxpZGF0aW9uLgogICAgY2FjaGUgPSBnZW5lcmF0ZV9jYWNoZShoZWFkZXIubnVtYmVyKQogICAgbWl4X2RpZ2VzdCwgcmVzdWx0ID0gaGFzaGltb3RvX2xpZ2h0KAogICAgICAgIGhlYWRlcl9oYXNoLCBoZWFkZXIubm9uY2UsIGNhY2hlLCBkYXRhc2V0X3NpemUoaGVhZGVyLm51bWJlcikKICAgICkKCiAgICBlbnN1cmUobWl4X2RpZ2VzdCA9PSBoZWFkZXIubWl4X2RpZ2VzdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIFVpbnQuZnJvbV9iZV9ieXRlcyhyZXN1bHQpIDw9IChVMjU2X0NFSUxfVkFMVUUgLy8gaGVhZGVyLmRpZmZpY3VsdHkpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKlIWUgZR9lChoBWgGaCBqBRsAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMWC9ob21lL3J1bm5l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HWgeaB9NVwFoIGpcHAAAaCFoA3ViaGkpgZR9lChoBVh6AQAATWFueSBvZiB0aGUgY29udGVudHMgb2YgYSBibG9jayBhcmUgc3RvcmVkIGluIGRhdGEgc3RydWN0dXJlcyBjYWxsZWQKdHJpZXMuIFRoZXJlIGlzIGEgdHJhbnNhY3Rpb25zIHRyaWUgd2hpY2ggaXMgc2ltaWxhciB0byBhIGxlZGdlciBvZiB0aGUKdHJhbnNhY3Rpb25zIHN0b3JlZCBpbiB0aGUgY3VycmVudCBibG9jay4gVGhlcmUgaXMgYWxzbyBhIHJlY2VpcHRzIHRyaWUKd2hpY2ggc3RvcmVzIHRoZSByZXN1bHRzIG9mIGV4ZWN1dGluZyBhIHRyYW5zYWN0aW9uLCBsaWtlIHRoZSBwb3N0IHN0YXRlCmFuZCBnYXMgdXNlZC4gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGFuZCBleGVjdXRlcyB0aGUgYmxvY2sgdGhhdCBpcyB0byBiZQphZGRlZCB0byB0aGUgY2hhaW4ulGgHXZRoP1h6AQAATWFueSBvZiB0aGUgY29udGVudHMgb2YgYSBibG9jayBhcmUgc3RvcmVkIGluIGRhdGEgc3RydWN0dXJlcyBjYWxsZWQKdHJpZXMuIFRoZXJlIGlzIGEgdHJhbnNhY3Rpb25zIHRyaWUgd2hpY2ggaXMgc2ltaWxhciB0byBhIGxlZGdlciBvZiB0aGUKdHJhbnNhY3Rpb25zIHN0b3JlZCBpbiB0aGUgY3VycmVudCBibG9jay4gVGhlcmUgaXMgYWxzbyBhIHJlY2VpcHRzIHRyaWUKd2hpY2ggc3RvcmVzIHRoZSByZXN1bHRzIG9mIGV4ZWN1dGluZyBhIHRyYW5zYWN0aW9uLCBsaWtlIHRoZSBwb3N0IHN0YXRlCmFuZCBnYXMgdXNlZC4gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGFuZCBleGVjdXRlcyB0aGUgYmxvY2sgdGhhdCBpcyB0byBiZQphZGRlZCB0byB0aGUgY2hhaW4ulIWUgZR9lChoBWgGaCBqbRwAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH01ZAWggalwcAABoIWgDdWJq4RIAACmBlH2U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PUZhbHNlLCBkZWZhdWx0PU5vbmUKICAgICkKICAgIHJlY2VpcHRzX3RyaWU6IFRyaWVbQnl0ZXMsIE9wdGlvbmFsW1JlY2VpcHRdXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICBibG9ja19sb2dzOiBUdXBsZVtMb2csIC4uLl0gPSAoKQoKICAgIGZvciBpLCB0eCBpbiBlbnVtZXJhdGUodHJhbnNhY3Rpb25zKToKICAgICAgICB0cmllX3NldCh0cmFuc2FjdGlvbnNfdHJpZSwgcmxwLmVuY29kZShVaW50KGkpKSwgdHgpCgogICAgICAgIGVuc3VyZSh0eC5nYXMgPD0gZ2FzX2F2YWlsYWJsZSwgSW52YWxpZEJsb2NrKQogICAgICAgIHNlbmRlcl9hZGRyZXNzID0gcmVjb3Zlcl9zZW5kZXIodHgpCgogICAgICAgIGVudiA9IHZtLkVudmlyb25tZW50KAogICAgICAgICAgICBjYWxsZXI9c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIG9yaWdpbj1zZW5kZXJfYWRkcmVzcywKICAgICAgICAgICAgYmxvY2tfaGFzaGVzPWJsb2NrX2hhc2hlcywKICAgICAgICAgICAgY29pbmJhc2U9Y29pbmJhc2UsCiAgICAgICAgICAgIG51bWJlcj1ibG9ja19udW1iZXIsCiAgICAgICAgICAgIGdhc19saW1pdD1ibG9ja19nYXNfbGltaXQsCiAgICAgICAgICAgIGdhc19wcmljZT10eC5nYXNfcHJpY2UsCiAgICAgICAgICAgIHRpbWU9YmxvY2tfdGltZSwKICAgICAgICAgICAgZGlmZmljdWx0eT1ibG9ja19kaWZmaWN1bHR5LAogICAgICAgICAgICBzdGF0ZT1zdGF0ZSwKICAgICAgICApCgogICAgICAgIGdhc191c2VkLCBsb2dzID0gcHJvY2Vzc190cmFuc2FjdGlvbihlbnYsIHR4KQogICAgICAgIGdhc19hdmFpbGFibGUgLT0gZ2FzX3VzZWQKCiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHJlY2VpcHRzX3RyaWUsCiAgICAgICAgICAgIHJscC5lbmNvZGUoVWludChpKSksCiAgICAgICAgICAgIFJlY2VpcHQoCiAgICAgICAgICAgICAgICBwb3N0X3N0YXRlPXN0YXRlX3Jvb3Qoc3RhdGUpLAogICAgICAgICAgICAgICAgY3VtdWxhdGl2ZV9nYXNfdXNlZD0oYmxvY2tfZ2FzX2xpbWl0IC0gZ2FzX2F2YWlsYWJsZSksCiAgICAgICAgICAgICAgICBibG9vbT1sb2dzX2Jsb29tKGxvZ3MpLAogICAgICAgICAgICAgICAgbG9ncz1sb2dzLAogICAgICAgICAgICApLAogICAgICAgICkKICAgICAgICBibG9ja19sb2dzICs9IGxvZ3MKCiAgICBwYXlfcmV3YXJkcyhzdGF0ZSwgYmxvY2tfbnVtYmVyLCBjb2luYmFzZSwgb21tZXJzKQoKICAgIGdhc19yZW1haW5pbmcgPSBibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlCgogICAgYmxvY2tfbG9nc19ibG9vbSA9IGxvZ3NfYmxvb20oYmxvY2tfbG9ncykKCiAgICByZXR1cm4gKAogICAgICAgIGdhc19yZW1haW5pbmcsCiAgICAgICAgcm9vdCh0cmFuc2FjdGlvbnNfdHJpZSksCiAgICAgICAgcm9vdChyZWNlaXB0c190cmllKSwKICAgICAgICBibG9ja19sb2dzX2Jsb29tLAogICAgICAgIHN0YXRlLAogICAgKQqUaAddlChoP1gJAQAAZGVmIGFwcGx5X2JvZHkoCiAgICBzdGF0ZTogU3RhdGUsCiAgICBibG9ja19oYXNoZXM6IExpc3RbSGFzaDMyXSwKICAgIGNvaW5iYXNlOiBBZGRyZXNzLAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgYmxvY2tfZ2FzX2xpbWl0OiBVaW50LAogICAgYmxvY2tfdGltZTogVTI1NiwKICAgIGJsb2NrX2RpZmZpY3VsdHk6IFVpbnQsCiAgICB0cmFuc2FjdGlvbnM6IFR1cGxlW1RyYW5zYWN0aW9uLCAuLi5dLAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sCpSFlIGUfZQoaAVoBmggapkfAABoIWgDaB1oRGgfSwB1YmqfCgAAKYGUfZQoaAVoBmgHXZRoP4wSY2hhaW5faWQ6IFVpbnQ2NCwKlIWUgZR9lChoBWgGaCBqoR8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMDGNoYW5nZS1hZGRlZJRhaBVdlGgXXZRoGV2UdWgcap4KAABoIGqZHwAAaCFoA2gdaERoH0sAdWJoP1j9AQAAKSAtPiBUdXBsZVtVaW50LCBSb290LCBSb290LCBCbG9vbSwgU3RhdGVdOgogICAgZ2FzX2F2YWlsYWJsZSA9IGJsb2NrX2dhc19saW1pdAogICAgdHJhbnNhY3Rpb25zX3RyaWU6IFRyaWVbQnl0ZXMsIE9wdGlvbmFsW1RyYW5zYWN0aW9uXV0gPSBUcmllKAogICAgICAgIHNlY3VyZWQ9RmFsc2UsIGRlZmF1bHQ9Tm9uZQogICAgKQogICAgcmVjZWlwdHNfdHJpZTogVHJpZVtCeXRlcywgT3B0aW9uYWxbUmVjZWlwdF1dID0gVHJpZSgKICAgICAgICBzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUKICAgICkKICAgIGJsb2NrX2xvZ3M6IFR1cGxlW0xvZywgLi4uXSA9ICgpCgogICAgZm9yIGksIHR4IGluIGVudW1lcmF0ZSh0cmFuc2FjdGlvbnMpOgogICAgICAgIHRyaWVfc2V0KHRyYW5zYWN0aW9uc190cmllLCBybHAuZW5jb2RlKFVpbnQoaSkpLCB0eCkKCiAgICAgICAgZW5zdXJlKHR4LmdhcyA8PSBnYXNfYXZhaWxhYmxlLCBJbnZhbGlkQmxvY2spCiAgICAgICAgc2VuZGVyX2FkZHJlc3MgPSCUhZSBlH2UKGgFaAZoIGqZHwAAaCFoA2gdaERoH0sAdWJqnwoAACmBlH2UKGgFaAZoB12UaD+MEnJlY292ZXJfc2VuZGVyKHR4KZSFlIGUfZQoaAVoBmggarMfAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjA9jaGFuZ2UtcmVwbGFjZWSUYWgVXZRoF12UaBldlHVoHGqeCgAAaCBqmR8AAGghaANoHWhEaB9LAHViap8KAAApgZR9lChoBWgGaAddlGg/jBxyZWNvdmVyX3NlbmRlcihjaGFpbl9pZCwgdHgplIWUgZR9lChoBWgGaCBqwR8AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMEmNoYW5nZS1yZXBsYWNlbWVudJRhaBVdlGgXXZRoGV2UdWgcap4KAABoIGqZHwAAaCFoA2gdaERoH0sAdWJoP1hYBAAACgogICAgICAgIGVudiA9IHZtLkVudmlyb25tZW50KAogICAgICAgICAgICBjYWxsZXI9c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIG9yaWdpbj1zZW5kZXJfYWRkcmVzcywKICAgICAgICAgICAgYmxvY2tfaGFzaGVzPWJsb2NrX2hhc2hlcywKICAgICAgICAgICAgY29pbmJhc2U9Y29pbmJhc2UsCiAgICAgICAgICAgIG51bWJlcj1ibG9ja19udW1iZXIsCiAgICAgICAgICAgIGdhc19saW1pdD1ibG9ja19nYXNfbGltaXQsCiAgICAgICAgICAgIGdhc19wcmljZT10eC5nYXNfcHJpY2UsCiAgICAgICAgICAgIHRpbWU9YmxvY2tfdGltZSwKICAgICAgICAgICAgZGlmZmljdWx0eT1ibG9ja19kaWZmaWN1bHR5LAogICAgICAgICAgICBzdGF0ZT1zdGF0ZSwKICAgICAgICApCgogICAgICAgIGdhc191c2VkLCBsb2dzID0gcHJvY2Vzc190cmFuc2FjdGlvbihlbnYsIHR4KQogICAgICAgIGdhc19hdmFpbGFibGUgLT0gZ2FzX3VzZWQKCiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHJlY2VpcHRzX3RyaWUsCiAgICAgICAgICAgIHJscC5lbmNvZGUoVWludChpKSksCiAgICAgICAgICAgIFJlY2VpcHQoCiAgICAgICAgICAgICAgICBwb3N0X3N0YXRlPXN0YXRlX3Jvb3Qoc3RhdGUpLAogICAgICAgICAgICAgICAgY3VtdWxhdGl2ZV9nYXNfdXNlZD0oYmxvY2tfZ2FzX2xpbWl0IC0gZ2FzX2F2YWlsYWJsZSksCiAgICAgICAgICAgICAgICBibG9vbT1sb2dzX2Jsb29tKGxvZ3MpLAogICAgICAgICAgICAgICAgbG9ncz1sb2dzLAogICAgICAgICAgICApLAogICAgICAgICkKICAgICAgICBibG9ja19sb2dz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dmFsaWRCbG9jaykKCiAgICBpZiBsZW4ob21tZXJzKSA9PSAwOgogICAgICAgICMgTm90aGluZyB0byB2YWxpZGF0ZQogICAgICAgIHJldHVybgoKICAgICMgQ2hlY2sgdGhhdCBlYWNoIG9tbWVyIHNhdGlzZmllcyB0aGUgY29uc3RyYWludHMgb2YgYSBoZWFkZXIKICAgIGZvciBvbW1lciBpbiBvbW1lcnM6CiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXIubnVtYmVyIDwgYmxvY2tfaGVhZGVyLm51bWJlciwgSW52YWxpZEJsb2NrKQogICAgICAgIG9tbWVyX3BhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbCiAgICAgICAgICAgIC0oYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcikgLSAxCiAgICAgICAgXS5oZWFkZXIKICAgICAgICB2YWxpZGF0ZV9oZWFkZXIob21tZXIsIG9tbWVyX3BhcmVudF9oZWFkZXIpCgogICAgIyBDaGVjayB0aGF0IHRoZXJlIGNhbiBiZSBvbmx5IGF0IG1vc3QgMiBvbW1lcnMgZm9yIGEgYmxvY2suCiAgICBlbnN1cmUobGVuKG9tbWVycykgPD0gMiwgSW52YWxpZEJsb2NrKQoKICAgIG9tbWVyc19oYXNoZXMgPSBbcmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gb21tZXJzXQogICAgIyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzIGluIHRoZSBvbW1lcnMgb2YgY3VycmVudCBibG9jawogICAgZW5zdXJlKGxlbihvbW1lcnNfaGFzaGVzKSA9PSBsZW4oc2V0KG9tbWVyc19oYXNoZXMpKSwgSW52YWxpZEJsb2NrKQoKICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0oTUFYX09NTUVSX0RFUFRIICsgMSkgOl0KICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzID0gewogICAgICAgIHJscC5ybHBfaGFzaChibG9jay5oZWFkZXIpIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcwogICAgfQogICAgcmVjZW50X29tbWVyc19oYXNoZXM6IFNldFtIYXNoMzJdID0gc2V0KCkKICAgIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrczoKICAgICAgICByZWNlbnRfb21tZXJzX2hhc2hlcyA9IHJlY2VudF9vbW1lcnNfaGFzaGVzLnVuaW9uKAogICAgICAgICAgICB7cmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gYmxvY2sub21tZXJzfQogICAgICAgICkKCiAgICBmb3Igb21tZXJfaW5kZXgsIG9tbWVyIGluIGVudW1lcmF0ZShvbW1lcnMpOgogICAgICAgIG9tbWVyX2hhc2ggPSBvbW1lcnNfaGFzaGVzW29tbWVyX2luZGV4XQogICAgICAgICMgVGhlIGN1cnJlbnQgYmxvY2sgc2hvdWxkbid0IGJlIHRoZSBvbW1lcgogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoICE9IGJsb2NrX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSByZWNlbnQgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHVuY2xlcyBtZW50aW9uZWQgaW4gdGhlIHJlY2VudAogICAgICAgICMgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfb21tZXJzX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suIEZvciBleGFtcGxlLCBhbiBhZ2Ugb2YKICAgICAgICAjIDEgaW5kaWNhdGVzIHRoYXQgdGhlIG9tbWVyIGlzIGEgc2libGluZyBvZiBwcmV2aW91cyBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyCiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXJfYWdlIDw9IE1BWF9PTU1FUl9ERVBUSCwgSW52YWxpZEJsb2NrKQoKICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgIG9tbWVyLnBhcmVudF9oYXNoIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2sKICAgICAgICApCiAgICAgICAgZW5zdXJlKG9tbWVyLnBhcmVudF9oYXNoICE9IGJsb2NrX2hlYWRlci5wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQqUaAddlGg/WAEJAABkZWYgdmFsaWRhdGVfb21tZXJzKAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sIGJsb2NrX2hlYWRlcjogSGVhZGVyLCBjaGFpbjogQmxvY2tDaGFpbgopIC0+IE5vbmU6CiAgICBibG9ja19oYXNoID0gcmxwLnJscF9oYXNoKGJsb2NrX2hlYWRlcikKCiAgICBlbnN1cmUocmxwLnJscF9oYXNoKG9tbWVycykgPT0gYmxvY2tfaGVhZGVyLm9tbWVyc19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgaWYgbGVuKG9tbWVycykgPT0gMDoKICAgICAgICAjIE5vdGhpbmcgdG8gdmFsaWRhdGUKICAgICAgICByZXR1cm4KCiAgICAjIENoZWNrIHRoYXQgZWFjaCBvbW1lciBzYXRpc2ZpZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgaGVhZGVyCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyLm51bWJlciA8IGJsb2NrX2hlYWRlci5udW1iZXIsIEludmFsaWRCbG9jaykKICAgICAgICBvbW1lcl9wYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWwogICAgICAgICAgICAtKGJsb2NrX2hlYWRlci5udW1iZXIgLSBvbW1lci5udW1iZXIpIC0gMQogICAgICAgIF0uaGVhZGVyCiAgICAgICAgdmFsaWRhdGVfaGVhZGVyKG9tbWVyLCBvbW1lcl9wYXJlbnRfaGVhZGVyKQoKICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBjYW4gYmUgb25seSBhdCBtb3N0IDIgb21tZXJzIGZvciBhIGJsb2NrLgogICAgZW5zdXJlKGxlbihvbW1lcnMpIDw9IDIsIEludmFsaWRCbG9jaykKCiAgICBvbW1lcnNfaGFzaGVzID0gW3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIG9tbWVyc10KICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gZHVwbGljYXRlcyBpbiB0aGUgb21tZXJzIG9mIGN1cnJlbnQgYmxvY2sKICAgIGVuc3VyZShsZW4ob21tZXJzX2hhc2hlcykgPT0gbGVuKHNldChvbW1lcnNfaGFzaGVzKSksIEludmFsaWRCbG9jaykKCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stKE1BWF9PTU1FUl9ERVBUSCArIDEpIDpdCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcyA9IHsKICAgICAgICBybHAucmxwX2hhc2goYmxvY2suaGVhZGVyKSBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3MKICAgIH0KICAgIHJlY2VudF9vbW1lcnNfaGFzaGVzOiBTZXRbSGFzaDMyXSA9IHNldCgpCiAgICBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3M6CiAgICAgICAgcmVjZW50X29tbWVyc19oYXNoZXMgPSByZWNlbnRfb21tZXJzX2hhc2hlcy51bmlvbigKICAgICAgICAgICAge3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIGJsb2NrLm9tbWVyc30KICAgICAgICApCgogICAgZm9yIG9tbWVyX2luZGV4LCBvbW1lciBpbiBlbnVtZXJhdGUob21tZXJzKToKICAgICAgICBvbW1lcl9oYXNoID0gb21tZXJzX2hhc2hlc1tvbW1lcl9pbmRleF0KICAgICAgICAjIFRoZSBjdXJyZW50IGJsb2NrIHNob3VsZG4ndCBiZSB0aGUgb21tZXIKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCAhPSBibG9ja19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgc2hvdWxkbid0IGJlIG9uZSBvZiB0aGUgcmVjZW50IGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSB1bmNsZXMgbWVudGlvbmVkIGluIHRoZSByZWNlbnQKICAgICAgICAjIGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X29tbWVyc19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLiBGb3IgZXhhbXBsZSwgYW4gYWdlIG9mCiAgICAgICAgIyAxIGluZGljYXRlcyB0aGF0IHRoZSBvbW1lciBpcyBhIHNpYmxpbmcgb2YgcHJldmlvdXMgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyX2FnZSA8PSBNQVhfT01NRVJfREVQVEgsIEludmFsaWRCbG9jaykKCiAgICAgICAgZW5zdXJlKAogICAgICAgICAgICBvbW1lci5wYXJlbnRfaGFzaCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrCiAgICAgICAgKQogICAgICAgIGVuc3VyZShvbW1lci5wYXJlbnRfaGFzaCAhPSBibG9ja19oZWFkZXIucGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKlIWUgZR9lChoBWgGaCBqYSEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMWC9ob21lL3J1bm5lci93b3JrL2V4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XZRoGV2UjAZtb2R1bGWUao0OAACMBWNsYXNzlGgGjAhmdWxsbmFtZZRqpCEAAHVoHGpnDgAAaB1oHmgfTZsBaCBqmyEAAHViapEOAAApgZR9lChoBWgGaAddlChoaSmBlH2UKGgFjDxQYXkgcmV3YXJkcyB0byB0aGUgYmxvY2sgbWluZXIgYXMgd2VsbCBhcyB0aGUgb21tZXJzIG1pbmVycy6UaAddlGg/jDxQYXkgcmV3YXJkcyB0byB0aGUgYmxvY2sgbWluZXIgYXMgd2VsbCBhcyB0aGUgb21tZXJzIG1pbmVycy6UhZSBlH2UKGgFaAZoIGoqIgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTZ4BaCBqJyIAAHViaGkpgZR9lChoBViPAgAAVGhlIG1pbmVyIG9mIHRoZSBjYW5vbmljYWwgYmxvY2sgaXMgcmV3YXJkZWQgd2l0aCB0aGUgcHJlZGV0ZXJtaW5lZApibG9jayByZXdhcmQsIGBgQkxPQ0tfUkVXQVJEYGAsIHBsdXMgYSB2YXJpYWJsZSBhd2FyZCBiYXNlZCBvZmYgb2YgdGhlCm51bWJlciBvZiBvbW1lciBibG9ja3MgdGhhdCB3ZXJlIG1pbmVkIGFyb3VuZCB0aGUgc2FtZSB0aW1lLCBhbmQgaW5jbHVkZWQKaW4gdGhlIGNhbm9uaWNhbCBibG9jaydzIGhlYWRlci4gQW4gb21tZXIgYmxvY2sgaXMgYSBibG9jayB0aGF0IHdhc24ndAphZGRlZCB0byB0aGUgY2Fub25pY2FsIGJsb2NrY2hhaW4gYmVjYXVzZSBpdCB3YXNuJ3QgdmFsaWRhdGVkIGFzIGZhc3QgYXMKdGhlIGFjY2VwdGVkIGJsb2NrIGJ1dCB3YXMgbWluZWQgYXQgdGhlIHNhbWUgdGltZS4gQWx0aG91Z2ggbm90IGFsbCBibG9ja3MKdGhhdCBhcmUgbWluZWQgYXJlIGFkZGVkIHRvIHRoZSBjYW5vbmljYWwgY2hhaW4sIG1pbmVycyBhcmUgc3RpbGwgcGFpZCBhCnJld2FyZCBmb3IgdGhlaXIgZWZmb3J0cy4gVGhpcyByZXdhcmQgaXMgY2FsbGVkIGFuIG9tbWVyIHJld2FyZCBhbmQgaXMKY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgb21tZXIgYmxvY2sgdGhhdCB0aGV5Cm1pbmVkLpRoB12UKGg/jFJUaGUgbWluZXIgb2YgdGhlIGNhbm9uaWNhbCBibG9jayBpcyByZXdhcmRlZCB3aXRoIHRoZSBwcmVkZXRlcm1pbmVkCmJsb2NrIHJld2FyZCwglIWUgZR9lChoBWgGaCBqOCIAAGghaANoHWhEaB9LAHViak0FAAApgZR9lChoBYwQYGBCTE9DS19SRVdBUkRgYJRoB12UaD+MDEJMT0NLX1JFV0FSRJSFlIGUfZQoaAVoBmggakAiAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGo4IgAAdWJoP1gzAgAALCBwbHVzIGEgdmFyaWFibGUgYXdhcmQgYmFzZWQgb2ZmIG9mIHRoZQpudW1iZXIgb2Ygb21tZXIgYmxvY2tzIHRoYXQgd2VyZSBtaW5lZCBhcm91bmQgdGhlIHNhbWUgdGltZSwgYW5kIGluY2x1ZGVkCmluIHRoZSBjYW5vbmljYWwgYmxvY2vigJlzIGhlYWRlci4gQW4gb21tZXIgYmxvY2sgaXMgYSBibG9jayB0aGF0IHdhc27igJl0CmFkZGVkIHRvIHRoZSBjYW5vbmljYWwgYmxvY2tjaGFpbiBiZWNhdXNlIGl0IHdhc27igJl0IHZhbGlkYXRlZCBhcyBmYXN0IGFzCnRoZSBhY2NlcHRlZCBibG9jayBidXQgd2FzIG1pbmVkIGF0IHRoZSBzYW1lIHRpbWUuIEFsdGhvdWdoIG5vdCBhbGwgYmxvY2tzCnRoYXQgYXJlIG1pbmVkIGFyZSBhZGRlZCB0byB0aGUgY2Fub25pY2FsIGNoYWluLCBtaW5lcnMgYXJlIHN0aWxsIHBhaWQgYQpyZXdhcmQgZm9yIHRoZWlyIGVmZm9ydHMuIFRoaXMgcmV3YXJkIGlzIGNhbGxlZCBhbiBvbW1lciByZXdhcmQgYW5kIGlzCmNhbGN1bGF0ZWQgYmFzZWQgb24gdGhlIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIG9tbWVyIGJsb2NrIHRo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YWdlIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBVMjU2KGJsb2NrX251bWJlciAtIG9tbWVyLm51bWJlcikKICAgICAgICBvbW1lcl9taW5lcl9yZXdhcmQgPSAoKDggLSBvbW1lcl9hZ2UpICogQkxPQ0tfUkVXQVJEKSAvLyA4CiAgICAgICAgY3JlYXRlX2V0aGVyKHN0YXRlLCBvbW1lci5jb2luYmFzZSwgb21tZXJfbWluZXJfcmV3YXJkKQqUaAddlGg/WP4BAABkZWYgcGF5X3Jld2FyZHMoCiAgICBzdGF0ZTogU3RhdGUsCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAopIC0+IE5vbmU6CiAgICBtaW5lcl9yZXdhcmQgPSBCTE9DS19SRVdBUkQgKyAobGVuKG9tbWVycykgKiAoQkxPQ0tfUkVXQVJEIC8vIDMyKSkKICAgIGNyZWF0ZV9ldGhlcihzdGF0ZSwgY29pbmJhc2UsIG1pbmVyX3Jld2FyZCkKCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgICMgT21tZXIgYWdlIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBVMjU2KGJsb2NrX251bWJlciAtIG9tbWVyLm51bWJlcikKICAgICAgICBvbW1lcl9taW5lcl9yZXdhcmQgPSAoKDggLSBvbW1lcl9hZ2UpICogQkxPQ0tfUkVXQVJEKSAvLyA4CiAgICAgICAgY3JlYXRlX2V0aGVyKHN0YXRlLCBvbW1lci5jb2luYmFzZSwgb21tZXJfbWluZXJfcmV3YXJkKQqUhZSBlH2UKGgFaAZoIGo7IwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxYL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3Bl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bnRyYWN0cywKZGVwbG95aW5nIGNvZGUsIGFuZCBpbmNyZW1lbnRpbmcgbm9uY2VzIGFyZSBhbGwgZXhhbXBsZXMgb2YgYWN0aW9ucyB0aGF0CmhhcHBlbiB3aXRoaW4gdGhpcyBmdW5jdGlvbiBvciBmcm9tIGEgY2FsbCBtYWRlIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLpRoB12UaD9YXQEAAFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBhY3Rpb25zIG5lZWRlZCB0byBleGVjdXRlIGEgdHJhbnNhY3Rpb24uCkl0IGRlY3JlbWVudHMgdGhlIHNlbmRlcuKAmXMgYWNjb3VudCBhZnRlciBjYWxjdWxhdGluZyB0aGUgZ2FzIGZlZSBhbmQKcmVmdW5kcyB0aGVtIHRoZSBwcm9wZXIgYW1vdW50IGFmdGVyIGV4ZWN1dGlvbi4gQ2FsbGluZyBjb250cmFjdHMsCmRlcGxveWluZyBjb2RlLCBhbmQgaW5jcmVtZW50aW5nIG5vbmNlcyBhcmUgYWxsIGV4YW1wbGVzIG9mIGFjdGlvbnMgdGhhdApoYXBwZW4gd2l0aGluIHRoaXMgZnVuY3Rpb24gb3IgZnJvbSBhIGNhbGwgbWFkZSB3aXRoaW4gdGhpcyBmdW5jdGlvbi6UhZSBlH2UKGgFaAZoIGriIwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTcABaCBq0SMAAHViaGkpgZR9lChoBYxSQWNjb3VudHMgdGhhdCBhcmUgbWFya2VkIGZvciBkZWxldGlvbiBhcmUgcHJvY2Vzc2VkIGFuZCBkZXN0cm95ZWQgYWZ0ZXIKZXhlY3V0aW9uLpRoB12UaD+MUkFjY291bnRzIHRoYXQgYXJlIG1hcmtlZCBmb3IgZGVsZXRpb24gYXJlIHByb2Nlc3NlZCBhbmQgZGVzdHJveWVkIGFmdGVyCmV4ZWN1dGlvbi6UhZSBlH2UKGgFaAZoIGrwIwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTcYBaCBq0SMAAHViauESAAApgZR9lChoBWgGaAddlChq5hIAACmBlH2UKGgFaAZoB12U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Y2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4KQogICAgaW5jcmVtZW50X25vbmNlKGVudi5zdGF0ZSwgc2VuZGVyKQogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSA9IHNlbmRlcl9hY2NvdW50LmJhbGFuY2UgLSBnYXNfZmVlCiAgICBzZXRfYWNjb3VudF9iYWxhbmNlKGVudi5zdGF0ZSwgc2VuZGVyLCBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlKQoKICAgIG1lc3NhZ2UgPSBwcmVwYXJlX21lc3NhZ2UoCiAgICAgICAgc2VuZGVyLAogICAgICAgIHR4LnRvLAogICAgICAgIHR4LnZhbHVlLAogICAgICAgIHR4LmRhdGEsCiAgICAgICAgZ2FzLAogICAgICAgIGVudiwKICAgICkKCiAgICBvdXRwdXQgPSBwcm9jZXNzX21lc3NhZ2VfY2FsbChtZXNzYWdlLCBlbnYpCgogICAgZ2FzX3VzZWQgPSB0eC5nYXMgLSBvdXRwdXQuZ2FzX2xlZnQKICAgIGdhc19yZWZ1bmQgPSBtaW4oZ2FzX3VzZWQgLy8gMiwgb3V0cHV0LnJlZnVuZF9jb3VudGVyKQogICAgZ2FzX3JlZnVuZF9hbW91bnQgPSAob3V0cHV0Lmdhc19sZWZ0ICsgZ2FzX3JlZnVuZCkgKiB0eC5nYXNfcHJpY2UKICAgIHRyYW5zYWN0aW9uX2ZlZSA9ICh0eC5nYXMgLSBvdXRwdXQuZ2FzX2xlZnQgLSBnYXNfcmVmdW5kKSAqIHR4Lmdhc19wcmljZQogICAgdG90YWxfZ2FzX3VzZWQgPSBnYXNfdXNlZCAtIGdhc19yZWZ1bmQKCiAgICAjIHJlZnVuZCBnYXMKICAgIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIHNlbmRlcikuYmFsYW5jZSArIGdhc19yZWZ1bmRfYW1vdW50CiAgICApCiAgICBzZXRfYWNjb3VudF9iYWxhbmNlKGVudi5zdGF0ZSwgc2VuZGVyLCBzZW5kZXJfYmFsYW5jZV9hZnRlcl9yZWZ1bmQpCgogICAgIyB0cmFuc2ZlciBtaW5lciBmZWVzCiAgICBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUgPSAoCiAgICAgICAgZ2V0X2FjY291bnQoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpLmJhbGFuY2UgKyB0cmFuc2FjdGlvbl9mZWUKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoCiAgICAgICAgZW52LnN0YXRlLCBlbnYuY29pbmJhc2UsIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZQogICAgKQoKICAgIGZvciBhZGRyZXNzIGluIG91dHB1dC5hY2NvdW50c190b19kZWxldGU6CiAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgYWRkcmVzcykKCiAgICByZXR1cm4gdG90YWxfZ2FzX3VzZWQsIG91dHB1dC5sb2dzCpRoB12UKGg/WNoFAABkZWYgcHJvY2Vzc190cmFuc2FjdGlvbigKICAgIGVudjogdm0uRW52aXJvbm1lbnQsIHR4OiBUcmFuc2FjdGlvbgopIC0+IFR1cGxlW1UyNTYsIFR1cGxlW0xvZywgLi4uXV06CiAgICBlbnN1cmUodmFsaWRhdGVfdHJhbnNhY3Rpb24odHgpLCBJbnZhbGlkQmxvY2spCgogICAgc2VuZGVyID0gZW52Lm9yaWdpbgogICAgc2VuZGVyX2FjY291bnQgPSBnZXRfYWNjb3VudChlbnYuc3RhdGUsIHNlbmRlcikKICAgIGdhc19mZWUgPSB0eC5nYXMgKiB0eC5nYXNfcHJpY2UKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5ub25jZSA9PSB0eC5ub25jZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmJhbGFuY2UgPj0gZ2FzX2ZlZSArIHR4LnZhbHVlLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQuY29kZSA9PSBieXRlYXJyYXkoKSwgSW52YWxpZEJsb2NrKQoKICAgIGdhcyA9IHR4LmdhcyAtIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eCkKICAgIGluY3JlbWVudF9ub25jZShlbnYuc3RhdGUsIHNlbmRlcikKICAgIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUgPSBzZW5kZXJfYWNjb3VudC5iYWxhbmNlIC0gZ2FzX2ZlZQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSkKCiAgICBtZXNzYWdlID0gcHJlcGFyZV9tZXNzYWdlKAogICAgICAgIHNlbmRlciwKICAgICAgICB0eC50bywKICAgICAgICB0eC52YWx1ZSwKICAgICAgICB0eC5kYXRhLAogICAgICAgIGdhcywKICAgICAgICBlbnYsCiAgICApCgogICAgb3V0cHV0ID0gcHJvY2Vzc19tZXNzYWdlX2NhbGwobWVzc2FnZSwgZW52KQoKICAgIGdhc191c2VkID0gdHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0CiAgICBnYXNfcmVmdW5kID0gbWluKGdhc191c2VkIC8vIDIsIG91dHB1dC5yZWZ1bmRfY291bnRlcikKICAgIGdhc19yZWZ1bmRfYW1vdW50ID0gKG91dHB1dC5nYXNfbGVmdCArIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0cmFuc2FjdGlvbl9mZWUgPSAodHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0IC0gZ2FzX3JlZnVuZCkgKiB0eC5nYXNfcHJpY2UKICAgIHRvdGFsX2dhc191c2VkID0gZ2FzX3VzZWQgLSBnYXNfcmVmdW5kCgogICAgIyByZWZ1bmQgZ2FzCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9yZWZ1bmQgPSAoCiAgICAgICAgZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpLmJhbGFuY2UgKyBnYXNfcmVmdW5kX2Ftb3VudAogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kKQoKICAgICMgdHJhbnNmZXIgbWluZXIgZmVlcwogICAgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlID0gKAogICAgICAgIGdldF9h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Y2llbnQgZ2FzIHRoZW4gaXQgd291bGQgbm90CmJlIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhbmQgaXQgd2lsbCBiZSBkZWNsYXJlZCBpbnZhbGlkLpRoB12UaD+MzlRoZSBnYXMgaW4gYSB0cmFuc2FjdGlvbiBnZXRzIHVzZWQgdG8gcGF5IGZvciB0aGUgaW50cmluc2ljIGNvc3Qgb2YKb3BlcmF0aW9ucywgdGhlcmVmb3JlIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBnYXMgdGhlbiBpdCB3b3VsZCBub3QKYmUgcG9zc2libGUgdG8gZXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFuZCBpdCB3aWxsIGJlIGRlY2xhcmVkIGludmFsaWQulIWUgZR9lChoBWgGaCBq+CUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03fAWggauclAAB1YmhpKYGUfZQoaAVYoQEAAEFkZGl0aW9uYWxseSwgdGhlIG5vbmNlIG9mIGEgdHJhbnNhY3Rpb24gbXVzdCBub3QgZXF1YWwgb3IgZXhjZWVkIHRoZQpsaW1pdCBkZWZpbmVkIGluIGBFSVAtMjY4MSA8aHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxPmBfLgpJbiBwcmFjdGljZSwgZGVmaW5pbmcgdGhlIGxpbWl0IGFzIGBgMioqNjQtMWBgIGhhcyBubyBpbXBhY3QgYmVjYXVzZQpzZW5kaW5nIGBgMioqNjQtMWBgIHRyYW5zYWN0aW9ucyBpcyBpbXByb2JhYmxlLiBJdCdzIG5vdCBzdHJpY3RseQppbXBvc3NpYmxlIHRob3VnaCwgYGAyKio2NC0xYGAgdHJhbnNhY3Rpb25zIGlzIHRoZSBlbnRpcmUgY2FwYWNpdHkgb2YgdGhlCkV0aGVyZXVtIGJsb2NrY2hhaW4gYXQgMjAyMiBnYXMgbGltaXRzIGZvciBhIGxpdHRsZSBvdmVyIDIyIHllYXJzLpRoB12UKGg/jFdBZGRpdGlvbmFsbHksIHRoZSBub25jZSBvZiBhIHRyYW5zYWN0aW9uIG11c3Qgbm90IGVxdWFsIG9yIGV4Y2VlZCB0aGUKbGltaXQgZGVmaW5lZCBpbiCUhZSBlH2UKGgFaAZoIGoGJgAAaCFoA2gdaERoH0sAdWJobimBlH2UKGgFjDVgRUlQLTI2ODEgPGh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtMjY4MT5gX5RoB12UaD+MCEVJUC0yNjgxlIWUgZR9lChoBWgGaCBqDiYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBG5hbWWUjAhFSVAtMjY4MZSMBnJlZnVyaZSMJ2h0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtMjY4MZR1aBxobWgdTmgfTmggagYmAAB1YmgKKYGUfZQoaAWMKiA8aHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxPpRoB12UaA59lChoEF2UjAhlaXAtMjY4MZRhaBNdlGgVXZSMCGVpcC0yNjgxlGFoF12UaBldlIwGcmVmdXJplGofJgAAdWgcaAloHU5oH05oIGoGJgAAdWJoP4wlLgpJbiBwcmFjdGljZSwgZGVmaW5pbmcgdGhlIGxpbWl0IGFzIJSFlIGUfZQoaAVoBmggagYmAABoIWgDaB1oRGgfSwB1YmpNBQAAKYGUfZQoaAWMC2BgMioqNjQtMWBglGgHXZRoP4wHMioqNjQtMZSFlIGUfZQoaAVoBmggajEmAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGoGJgAAdWJoP4wfIGhhcyBubyBpbXBhY3QgYmVjYXVzZQpzZW5kaW5nIJSFlIGUfZQoaAVoBmggagYmAABoIWgDaB1oRGgfSwB1YmpNBQAAKYGUfZQoaAWMC2BgMioqNjQtMWBglGgHXZRoP4wHMioqNjQtMZSFlIGUfZQoaAVoBmggakMmAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakwFAABoHU5oH05oIGoGJgAAdWJoP4xEIHRyYW5zYWN0aW9ucyBpcyBpbXByb2JhYmxlLiBJdOKAmXMgbm90IHN0cmljdGx5CmltcG9zc2libGUgdGhvdWdoLCCUhZSBlH2UKGgFaAZoIGoGJgAAaCFoA2gdaERoH0sAdWJqTQUAACmBlH2UKGgFjAtgYDIqKjY0LTFgYJRoB12UaD+MBzIqKjY0LTGUhZSBlH2UKGgFaAZoIGpVJgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpMBQAAaB1OaB9OaCBqBiYAAHViaD+MbiB0cmFuc2FjdGlvbnMgaXMgdGhlIGVudGlyZSBjYXBhY2l0eSBvZiB0aGUKRXRoZXJldW0gYmxvY2tjaGFpbiBhdCAyMDIyIGdhcyBsaW1pdHMgZm9yIGEgbGl0dGxlIG92ZXIgMjIgeWVhcnMulIWUgZR9lChoBWgGaCBqBiYAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03jAWggauclAAB1YmrhEgAAKYGUfZQoaAVoBmgHXZQoauYSAAApgZR9lChoBWgGaAddlChq6xIAACmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoP4wKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmgganMmAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauoSAABoHWgeaB9LAGgganAmAAB1Ymr7EgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjB50eCAtLSBUcmFuc2FjdGlvbiB0byB2YWxpZGF0ZS6UaAddlChqBBMAACmBlH2UKGgFjAJ0eJRoB12UaD+MAnR4lIWUgZR9lChoBWgGaCBqiCYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMC3JlZnNwZWNpZmljlIiMCXB5Om1vZHVsZZRqjQ4AAIwIcHk6Y2xhc3OUTnVoHGoDEwAAaB1OaB9OaCBqhCYAAHViaD+MHSDigJMgVHJhbnNhY3Rpb24gdG8gdmFsaWRhdGUulIWUgZR9lChoBWgGaCBqhCYAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaoEmAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavoSAABoHU5oH05oIGpwJgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrlEgAAaB1OaB9OaCBqbSYAAHViauYSAAApgZR9lChoBWgGaAddlChq6xIAACmBlH2UKGgFjAdSZXR1cm5zlGgHXZRoP4wHUmV0dXJuc5SFlIGUfZQoaAVoBmggarImAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauoSAABoHWgeaB9LAGggaq8mAAB1Ymr7EgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjEh2ZXJpZmllZCAtLSBUcnVlIGlmIHRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgZXhlY3V0ZWQsIG9yIEZhbHNlIG90aGVyd2lzZS6UaAddlChqRRMAACmBlH2UKGgFjAwqKnZlcmlmaWVkKiqUaAddlGg/jAh2ZXJpZmllZJSFlIGUfZQoaAVoBmggascmAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcakQTAABoHU5oH05oIGrDJgAAdWJoP4xBIOKAkyBUcnVlIGlmIHRoZSB0cmFuc2FjdGlvbiBjYW4gYmUgZXhlY3V0ZWQsIG9yIEZhbHNlIG90aGVyd2lzZS6UhZSBlH2UKGgFaAZoIGrDJgAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqwCYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq+hIAAGgdTmgfTmggaq8mAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauUSAABoHU5oH05oIGptJgAAdWJq5hIAACmBlH2UKGgFaAZoB12UKGrrEgAAKYGUfZQoaAWMC1JldHVybiB0eXBllGgHXZRoP4wLUmV0dXJuIHR5cGWUhZSBlH2UKGgFaAZoIGruJgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrqEgAAaB1oHmgfSwBoIGrrJgAAdWJq+xIAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwEYm9vbJRoB12UajYGAAApgZR9lChoBYwGYGJvb2xglGgHXZRoP4wEYm9vbJSFlIGUfZQoaAVoBmggagMnAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcajUGAABoHU5oH05oIGr/JgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBq/CYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq+hIAAGgdTmgfTmggausmAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauUSAABoHU5oH05oIGptJgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrgEgAAaB1OaB9OaCBq5yUAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqkA4AAGgdaB5oH05oIGqjJQAAdWJlaA59lChoEF2UaBNdlChq4CUAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGrgJQAAjAdvYmp0eXBllGoyJwAAjAhkZXNjdHlwZZRqMicAAIwHbm9pbmRleJSJdWgcamIOAABoHU5oH05oIGqHJQAAdWJqpw4AACmBlH2UKGgFjH5kZWYgdmFsaWRhdGVfdHJhbnNhY3Rpb24odHg6IFRyYW5zYWN0aW9uKSAtPiBib29sOgogICAgcmV0dXJuIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eCkgPD0gdHguZ2FzIGFuZCB0eC5ub25jZSA8IDIqKjY0IC0gMQqUaAddlGg/jH5kZWYgdmFsaWRhdGVfdHJhbnNhY3Rpb24odHg6IFRyYW5zYWN0aW9uKSAtPiBib29sOgogICAgcmV0dXJuIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eCkgPD0gdHguZ2FzIGFuZCB0eC5ub25jZSA8IDIqKjY0IC0gMQqUhZSBlH2UKGgFaAZoIGo6JwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxYL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vdGFuZ2VyaW5lX3doaXN0bGUvc3BlYy5weZSMCXhtbDpzcGFjZZRq1wQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGq+DgAASwFzjAdsaW5lbm9zlIl1aBxqpg4AAGgdaB5oH03yAWggaoclAAB1YmVoDn2UKGgQXZRqcAMAAGFoE12UaBVdlIwUdmFsaWRhdGVfdHJhbnNhY3Rpb26UYWgXXZRoGV2UdWgcaDNoHWgeaB9N1wFoIGoxDgAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjBhjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUaAddlGg/jBhjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUhZSBlH2UKGgFaAZoIGpbJwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfTfcBaCBqWCcAAHViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJpZXOUXZR1aBxoI2gdTmgfTmggalgnAAB1YmpjDgAAKYGUfZQoaAVoBmgHXZQoamgOAAApgZR9lChoBYwcY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4KZRoB12UKGpuDgAAKYGUfZQoaAWMGGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJRoB12UaD+MGGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJSFlIGUfZQoaAVoBmggansnAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp5DgAAanoOAABqew4AAGp8DgAAZWgVXZRoF12UaBldlIwJeG1sOnNwYWNllGrXBAAAdWgcam0OAABoHWgeaB9OaCBqdycAAHVial0SAAApgZR9lChoBYwCdHiUaAddlGpjEgAAKYGUfZQoaAWMAnR4lGgHXZRqnwoAACmBlH2UKGgFaAZoB12UaD+MAnR4lIWUgZR9lChoBWgGaCBqkicAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqchIAAGFoFV2UaBddlGgZXZR1aBxqngoAAGgdTmgfTmggao4nAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUatcEAAB1aBxqYhIAAGgdTmgfTmggaoonAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUatcEAAB1aBxqXBIAAGgdaB5oH05oIGp3JwAAdWJlaA59lChoEF2UjDhldGhlcmV1bS50YW5nZXJpbmVfd2hpc3RsZS5zcGVjLmNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdJRhaBNdlChqhA4AAGqFDgAAjAJweZRqhw4AAGqIDgAAZWgVXZRoF12UaBldlIwGbW9kdWxllGqNDgAAjAVjbGFzc5RoBowIZnVsbG5hbWWUan0nAAB1aBxqZw4AAGgdaB5oH036AWgganQnAAB1YmqRDgAAKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBYw/Q2FsY3VsYXRlcyB0aGUgZ2FzIHRoYXQgaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGlzIHN0YXJ0ZWQulGgHXZRoP4w/Q2FsY3VsYXRlcyB0aGUgZ2FzIHRoYXQgaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGlzIHN0YXJ0ZWQulIWUgZR9lChoBWgGaCBquycAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH039AWggargnAAB1YmhpKYGUfZQoaAVYEQIAAFRoZSBpbnRyaW5zaWMgY29zdCBvZiB0aGUgdHJhbnNhY3Rpb24gaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGhhcwpiZWd1bi4gRnVuY3Rpb25zL29wZXJhdGlvbnMgaW4gdGhlIEVWTSBjb3N0IG1vbmV5IHRvIGV4ZWN1dGUgc28gdGhpcwppbnRyaW5zaWMgY29zdCBpcyBmb3IgdGhlIG9wZXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIHBhaWQgZm9yIGFzIHBhcnQgb2YKdGhlIHRyYW5zYWN0aW9uLiBEYXRhIHRyYW5zZmVyLCBmb3IgZXhhbXBsZSwgaXMgcGFydCBvZiB0aGlzIGludHJpbnNpYwpjb3N0LiBJdCBjb3N0cyBldGhlciB0byBzZW5kIGRhdGEgb3ZlciB0aGUgd2lyZSBhbmQgdGhhdCBldGhlciBpcwphY2NvdW50ZWQgZm9yIGluIHRoZSBpbnRyaW5zaWMgY29zdCBjYWxjdWxhdGVkIGluIHRoaXMgZnVuY3Rpb24uIFRoaXMKaW50cmluc2ljIGNvc3QgbXVzdCBiZSBjYWxjdWxhdGVkIGFuZCBwYWlkIGZvciBiZWZvcmUgZXhlY3V0aW9uIGluIG9yZGVyCmZvciBhbGwgb3BlcmF0aW9ucyB0byBiZSBpbXBsZW1lbnRlZC6UaAddlGg/WBECAABUaGUgaW50cmluc2ljIGNvc3Qgb2YgdGhlIHRyYW5zYWN0aW9uIGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBoYXMKYmVndW4uIEZ1bmN0aW9ucy9vcGVyYXRpb25zIGluIHRoZSBFVk0gY29zdCBtb25leSB0byBleGVjdXRlIHNvIHRoaXMKaW50cmluc2ljIGNvc3QgaXMgZm9yIHRoZSBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwYWlkIGZvciBhcyBwYXJ0IG9mCnRoZSB0cmFuc2FjdGlvbi4gRGF0YSB0cmFuc2ZlciwgZm9yIGV4YW1wbGUsIGlzIHBhcnQgb2YgdGhpcyBpbnRyaW5zaWMKY29zdC4gSXQgY29zdHMgZXRoZXIgdG8gc2VuZCBkYXRhIG92ZXIgdGhlIHdpcmUgYW5kIHRoYXQgZXRoZXIgaXMKYWNjb3VudGVkIGZvciBpbiB0aGUgaW50cmluc2ljIGNvc3QgY2FsY3VsYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLiBUaGlzCmludHJpbnNpYyBjb3N0IG11c3QgYmUgY2FsY3VsYXRlZCBhbmQgcGFpZCBmb3IgYmVmb3JlIGV4ZWN1dGlvbiBpbiBvcmRlcgpmb3IgYWxsIG9wZXJhdGlvbnMgdG8gYmUgaW1wbGVtZW50ZWQulIWUgZR9lChoBWgGaCBqyScAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03/AWggargnAAB1YmrhEgAAKYGUfZQoaAVoBmgHXZQoauYSAAApgZR9lChoBWgGaAddlChq6xIAACmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoP4wKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmggat0nAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauoSAABoHWgeaB9LAGggatonAAB1Ymr7EgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDN0eCAtLSBUcmFuc2FjdGlvbiB0byBjb21wdXRlIHRoZSBpbnRyaW5zaWMgY29zdCBvZi6UaAddlChqBBMAACmBlH2UKGgFjAJ0eJRoB12UaD+MAnR4lIWUgZR9lChoBWgGaCBq8icAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMC3JlZnNwZWNpZmljlIiMCXB5Om1vZHVsZZRqjQ4AAIwIcHk6Y2xhc3OUTnVoHGoDEwAAaB1OaB9OaCBq7icAAHViaD+MMiDigJMgVHJhbnNhY3Rpb24gdG8gY29tcHV0ZSB0aGUgaW50cmluc2ljIGNvc3Qgb2YulIWUgZR9lChoBWgGaCBq7icAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggausnAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavoSAABoHU5oH05oIGraJwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrlEgAAaB1OaB9OaCBq1ycAAHViauYSAAApgZR9lChoBWgGaAddlChq6xIAACmBlH2UKGgFjAdSZXR1cm5zlGgHXZRoP4wHUmV0dXJuc5SFlIGUfZQoaAVoBmggahwoAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauoSAABoHWgeaB9LAGggahkoAAB1Ymr7EgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDJ2ZXJpZmllZCAtLSBUaGUgaW50cmluc2ljIGNvc3Qgb2YgdGhlIHRyYW5zYWN0aW9uLpRoB12UKGpFEwAAKYGUfZQoaAWMDCoqdmVyaWZpZWQqKpRoB12UaD+MCHZlcmlmaWVklIWUgZR9lChoBWgGaCBqMSgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqRBMAAGgdTmgfTmggai0oAAB1Ymg/jCsg4oCTIFRoZSBpbnRyaW5zaWMgY29zdCBvZiB0aGUgdHJhbnNhY3Rpb24ulIWUgZR9lChoBWgGaCBqLSgAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaiooAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavoSAABoHU5oH05oIGoZKAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrlEgAAaB1OaB9OaCBq1ycAAHViauYSAAApgZR9lChoBWgGaAddlChq6xIAACmBlH2UKGgFjAtSZXR1cm4gdHlwZZRoB12UaD+MC1JldHVybiB0eXBllIWUgZR9lChoBWgGaCBqWCgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq6hIAAGgdaB5oH0sAaCBqVSgAAHViavsSAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMGGV0aGVyZXVtLmJhc2VfdHlwZXMuVWludJRoB12UajYGAAApgZR9lChoBYwaYGV0aGVyZXVtLmJhc2VfdHlwZXMuVWludGCUaAddlGg/jBhldGhlcmV1bS5iYXNlX3R5cGVzLlVpbnSUhZSBlH2UKGgFaAZoIGptKAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo1BgAAaB1OaB9OaCBqaSgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggamYoAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavoSAABoHU5oH05oIGpVKAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrlEgAAaB1OaB9OaCBq1ycAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq4BIAAGgdTmgfTmggargnAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcapAOAABoHWgeaB9OaCBqdCcAAHViZWgOfZQoaBBdlGgTXZQoarEnAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqsScAAIwHb2JqdHlwZZRqnCgAAIwIZGVzY3R5cGWUapwoAACMB25vaW5kZXiUiXVoHGpiDgAAaB1OaB9OaCBqWCcAAHViaqcOAAApgZR9lChoBViHAQAAZGVmIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eDogVHJhbnNhY3Rpb24pIC0+IFVpbnQ6CiAgICBkYXRhX2Nvc3QgPSAwCgogICAgZm9yIGJ5dGUgaW4gdHguZGF0YToKICAgICAgICBpZiBieXRlID09IDA6CiAgICAgICAgICAgIGRhdGFfY29zdCArPSBUWF9EQVRBX0NPU1RfUEVSX1pFUk8KICAgICAgICBlbHNlOgogICAgICAgICAgICBkYXRhX2Nvc3QgKz0gVFhfREFUQV9DT1NUX1BFUl9OT05fWkVSTwoKICAgIGlmIHR4LnRvID09IEJ5dGVzMChiIiIpOgogICAgICAgIGNyZWF0ZV9jb3N0ID0gVFhfQ1JFQVRFX0NPU1QKICAgIGVsc2U6CiAgICAgICAgY3JlYXRlX2Nvc3QgPSAwCgogICAgcmV0dXJuIFVpbnQoVFhfQkFTRV9DT1NUICsgZGF0YV9jb3N0ICsgY3JlYXRlX2Nvc3QpCpRoB12UaD9YhwEAAGRlZiBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHg6IFRyYW5zYWN0aW9uKSAtPiBVaW50OgogICAgZGF0YV9jb3N0ID0gMAoKICAgIGZvciBieXRlIGluIHR4LmRhdGE6CiAgICAgICAgaWYgYnl0ZSA9PSAwOgogICAgICAgICAgICBkYXRhX2Nvc3QgKz0gVFhfREFUQV9DT1NUX1BFUl9aRVJPCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZGF0YV9jb3N0ICs9IFRYX0RBVEFfQ09TVF9QRVJfTk9OX1pFUk8KCiAgICBpZiB0eC50byA9PSBCeXRlczAoYiIiKToKICAgICAgICBjcmVhdGVfY29zdCA9IFRYX0NSRUFURV9DT1NUCiAgICBlbHNlOgogICAgICAgIGNyZWF0ZV9jb3N0ID0gMAoKICAgIHJldHVybiBVaW50KFRYX0JBU0VfQ09TVCArIGRhdGFfY29zdCArIGNyZWF0ZV9jb3N0KQqUhZSBlH2UKGgFaAZoIGqkKAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxYL2hvbWUvcnVubmVy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B12UaD+MGWV0aGVyZXVtLmV0aF90eXBlcy5IYXNoMzKUhZSBlH2UKGgFaAZoIGrPLAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGo1BgAAaB1OaB9OaCBqyywAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggasgsAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavoSAABoHU5oH05oIGq3LAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrlEgAAaB1OaB9OaCBqOSwAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq4BIAAGgdTmgfTmggahosAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcapAOAABoHWgeaB9OaCBq1isAAHViZWgOfZQoaBBdlGgTXZQoahMsAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqEywAAIwHb2JqdHlwZZRq/iwAAIwIZGVzY3R5cGWUav4sAACMB25vaW5kZXiUiXVoHGpiDgAAaB1OaB9OaCBquisAAHViaqcOAAApgZR9lChoBVgdAQAAZGVmIHNpZ25pbmdfaGFzaCh0eDogVHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlGgHXZRoP1gdAQAAZGVmIHNpZ25pbmdfaGFzaCh0eDogVHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAg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YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcapAOAABoHWo2LQAAaB9OaCBqQi0AAHViZWgOfZQoaBBdlGgTXZQoaoMtAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqgy0AAIwHb2JqdHlwZZRqYC4AAIwIZGVzY3R5cGWUamAuAACMB25vaW5kZXiUiXVoHGpiDgAAaB1OaB9OaCBqJS0AAHViaqcOAAApgZR9lChoBVgkAQAAZGVmIHNpZ25pbmdfaGFzaF9wcmUxNTUodHg6IFRyYW5zYWN0aW9uKSAtPiBIYXNoMzI6CiAgICByZXR1cm4ga2VjY2FrMjU2KAogICAgICAgIHJscC5lbmNvZGUoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpRoB12UaD9YJAEAAGRlZiBzaWduaW5nX2hhc2hfcHJlMTU1KHR4OiBUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICApCiAgICAgICAgKQogICAgKQqUhZSBlH2UKGgFaAZoIGpoLgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxWL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1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ICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgICAgIFVpbnQoMSksCiAgICAgICAgICAgICAgICBVaW50KDApLAogICAgICAgICAgICAgICAgVWludCgwKSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlGgHXZRoP1hsAQAAZGVmIHNpZ25pbmdfaGFzaF8xNTUodHg6IFRyYW5zYWN0aW9uKSAtPiBIYXNoMzI6CiAgICByZXR1cm4ga2VjY2FrMjU2KAogICAgICAgIHJscC5lbmNvZGUoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICAgICBVaW50KDEpLAogICAgICAgICAgICAgICAgVWludCgwKSwKICAgICAgICAgICAgICAgIFVpbnQoMCksCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpSFlIGUfZQoaAVoBmggasYvAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vc3BlYy5weZSMCXhtbDpzcGFjZZRq1wQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGp+LgAASwFzjAdsaW5lbm9zlIl1aBxqpg4AAGgdajYtAABoH01YAmggaoguAAB1YmVoDn2UKGgQXZRqHAQAAGFoE12UjBJjaGFuZ2UtcmVwbGFjZW1lbnSUYWgVXZSMEHNpZ25pbmdfaGFzaF8xNTWUYWgXXZRoGV2UdWgcaDNoHWo2LQAAaB9NSAJoIGoxDgAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmB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KGgQXZRoE12UKGobMgAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UahsyAACMB29ianR5cGWUaqwzAACMCGRlc2N0eXBllGqsMwAAjAdub2luZGV4lIl1aBxqYg4AAGgdTmgfTmggaqoxAAB1YmqnDgAAKYGUfZQoaAVYgQEAAGRlZiBjaGVja19nYXNfbGltaXQoZ2FzX2xpbWl0OiBVaW50LCBwYXJlbnRfZ2FzX2xpbWl0OiBVaW50KSAtPiBib29sOgogICAgbWF4X2FkanVzdG1lbnRfZGVsdGEgPSBwYXJlbnRfZ2FzX2xpbWl0IC8vIEdBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUgogICAgaWYgZ2FzX2xpbWl0ID49IHBhcmVudF9nYXNfbGltaXQgKyBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8PSBwYXJlbnRfZ2FzX2xpbWl0IC0gbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPCBHQVNfTElNSVRfTUlOSU1VTToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICByZXR1cm4gVHJ1ZQqUaAddlGg/WIEBAABkZWYgY2hlY2tfZ2FzX2xpbWl0KGdhc19saW1pdDogVWludCwgcGFyZW50X2dhc19saW1pdDogVWludCkgLT4gYm9vbDoKICAgIG1heF9hZGp1c3RtZW50X2RlbHRhID0gcGFyZW50X2dhc19saW1pdCAvLyBHQVNfTElNSVRfQURKVVNUTUVOVF9GQUNUT1IKICAgIGlmIGdhc19saW1pdCA+PSBwYXJlbnRfZ2FzX2xpbWl0ICsgbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPD0gcGFyZW50X2dhc19saW1pdCAtIG1heF9hZGp1c3RtZW50X2RlbHRhOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgZ2FzX2xpbWl0IDwgR0FTX0xJTUlUX01JTklNVU06CiAgICAgICAgcmV0dXJuIEZhbHNl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OgogICAgb2Zmc2V0ID0gKAogICAgICAgIGludChwYXJlbnRfZGlmZmljdWx0eSkKICAgICAgICAvLyAyMDQ4CiAgICAgICAgKiBtYXgoMSAtIGludChibG9ja190aW1lc3RhbXAgLSBwYXJlbnRfdGltZXN0YW1wKSAvLyAxMCwgLTk5KQogICAgKQogICAgZGlmZmljdWx0eSA9IGludChwYXJlbnRfZGlmZmljdWx0eSkgKyBvZmZzZXQKICAgICMgSGlzdG9yaWNhbCBOb3RlOiBUaGUgZGlmZmljdWx0eSBib21iIHdhcyBub3QgcHJlc2VudCBpbiBFdGhlcmV1bSBhdCB0aGUKICAgICMgc3RhcnQgb2YgRnJvbnRpZXIsIGJ1dCB3YXMgYWRkZWQgc2hvcnRseSBhZnRlciBsYXVuY2guIEhvd2V2ZXIgc2luY2UgdGhlCiAgICAjIGJvbWIgaGFzIG5vIGVmZmVjdCBwcmlvciB0byBibG9jayAyMDAwMDAgd2UgcHJldGVuZCBpdCBleGlzdGVkIGZyb20KICAgICMgZ2VuZXNpcy4KICAgICMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9nby1ldGhlcmV1bS9wdWxsLzE1ODgKICAgIG51bV9ib21iX3BlcmlvZHMgPSAoaW50KGJsb2NrX251bWJlcikgLy8gMTAwMDAwKSAtIDIKICAgIGlmIG51bV9ib21iX3BlcmlvZHMgPj0gMDoKICAgICAgICBkaWZmaWN1bHR5ICs9IDIqKm51bV9ib21iX3BlcmlvZHMKCiAgICAjIFNvbWUgY2xpZW50cyByYWlzZSB0aGUgZGlmZmljdWx0eSB0byBgTUlOSU1VTV9ESUZGSUNVTFRZYCBwcmlvciB0byBhZGRpbmcKICAgICMgdGhlIGJvbWIuIFRoaXMgYnVnIGRvZXMgbm90IG1hdHRlciBiZWNhdXNlIHRoZSBkaWZmaWN1bHR5IGlzIGFsd2F5cyBtdWNoCiAgICAjIGdyZWF0ZXIgdGhhbiBgTUlOSU1VTV9ESUZGSUNVTFRZYCBvbiBNYWlubmV0LgogICAgcmV0dXJuIFVpbnQobWF4KGRpZmZpY3VsdHksIE1JTklNVU1fRElGRklDVUxUWSkpCpRoB12UaD9YDgQAAGRlZiBjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eSgKICAgIGJsb2NrX251bWJlcjogVWludCwKICAgIGJsb2NrX3RpbWVzdGFtcDogVTI1NiwKICAgIHBhcmVudF90aW1lc3RhbXA6IFUyNTYsCiAgICBwYXJlbnRfZGlmZmljdWx0eTogVWludCwKKSAtPiBVaW50OgogICAgb2Zmc2V0ID0gKAogICAgICAgIGludChwYXJlbnRfZGlmZmljdWx0eSkKICAgICAgICAvLyAyMDQ4CiAgICAgICAgKiBtYXgoMSAtIGludChibG9ja190aW1lc3RhbXAgLSBwYXJlbnRfdGltZXN0YW1wKSAvLyAxMCwgLTk5KQogICAgKQogICAgZGlmZmljdWx0eSA9IGludChwYXJlbnRfZGlmZmljdWx0eSkgKyBvZmZzZXQKICAgICMgSGlzdG9yaWNhbCBOb3RlOiBUaGUgZGlmZmljdWx0eSBib21iIHdhcyBub3QgcHJlc2VudCBpbiBFdGhlcmV1bSBhdCB0aGUKICAgICMgc3RhcnQgb2YgRnJvbnRpZXIsIGJ1dCB3YXMgYWRkZWQgc2hvcnRseSBhZnRlciBsYXVuY2guIEhvd2V2ZXIgc2luY2UgdGhlCiAgICAjIGJvbWIgaGFzIG5vIGVmZmVjdCBwcmlvciB0byBibG9jayAyMDAwMDAgd2UgcHJldGVuZCBpdCBleGlzdGVkIGZyb20KICAgICMgZ2VuZXNpcy4KICAgICMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9nby1ldGhlcmV1bS9wdWxsLzE1ODgKICAgIG51bV9ib21iX3BlcmlvZHMgPSAoaW50KGJsb2NrX251bWJlcikgLy8gMTAwMDAwKSAtIDIKICAgIGlmIG51bV9ib21iX3BlcmlvZHMgPj0gMDoKICAgICAgICBkaWZmaWN1bHR5ICs9IDIqKm51bV9ib21iX3BlcmlvZHMKCiAgICAjIFNvbWUgY2xpZW50cyByYWlzZSB0aGUgZGlmZmljdWx0eSB0byBgTUlOSU1VTV9ESUZGSUNVTFRZYCBwcmlvciB0byBhZGRpbmcKICAgICMgdGhlIGJvbWIuIFRoaXMgYnVnIGRvZXMgbm90IG1hdHRlciBiZWNhdXNlIHRoZSBkaWZmaWN1bHR5IGlzIGFsd2F5cyBtdWNoCiAgICAjIGdyZWF0ZXIgdGhhbiBgTUlOSU1VTV9ESUZGSUNVTFRZYCBvbiBNYWlubmV0LgogICAgcmV0dXJuIFVpbnQobWF4KGRpZmZpY3VsdHksIE1JTklNVU1fRElGRklDVUxUWSkpCpSFlIGUfZQoaAVoBmggamo2AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFgvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS90YW5nZXJpbmVfd2hpc3RsZS9zcGVjLnB5lIwJeG1sOnNwYWNllGrXBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2Uar4OAABLAXOMB2xpbmVub3OUiXVoHGqmDgAAaB1oHmgfTbUCaCBq0jMAAHViZWgOfZQoaBBdlGqDBAAAYWgTXZRoFV2UjBpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eZRhaBddlGgZXZR1aBxoM2gdaB5oH02RAmggajEOAABoIWgDdWJlaA59lChoEF2UajEBAABhaBNdlGgVXZSMDm1vZHVsZSBkZXRhaWxzlGFoF12UaBldlHVoHGgzaB1oHmgfS0VoIGg1aCFoA3ViZWgOfZQoaBBdlIwWZXRoZXJldW0tc3BlY2lmaWNhdGlvbpRhaBNdlGgVXZSMFmV0aGVyZXVtIHNwZWNpZmljYXRpb26UYWgXXZRoGV2UdWgcaDNoHWgeaB9LBGggaANoIWgDdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllGhEdWgcaAGMDmN1cnJlbnRfc291cmNllGhEjAxjdXJyZW50X2xpbmWUSwCMCHNldHRpbmdzlIwRZG9jdXRpbHMuZnJvbnRlbmSUjAZWYWx1ZXOUk5QpgZR9lCiMDHJlcG9ydF9sZXZlbJRLAowKaGFsdF9sZXZlbJRLBIwRZXhpdF9zdGF0dXNfbGV2ZWyUSwWMBWRlYnVnlE6MDndhcm5pbmdfc3RyZWFtlE6MCXRyYWNlYmFja5ROjA9vdXRwdXRfZW5jb2RpbmeUjAV1dGYtOJSMHW91dHB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwReG1sY2hhcnJlZnJlcGxhY2WUjA5lcnJvcl9lbmNvZGluZ5SMBXV0Zi04lIwcZXJyb3JfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcpSMEGJhY2tzbGFzaHJlcGxhY2WUjBNyZWNvcmRfZGVwZW5kZW5jaWVzlIwOZG9jdXRpbHMudXRpbHOUjA5EZXBlbmRlbmN5TGlzdJSTlCmBlH2UKIwEbGlzdJRdlIwEZmlsZZROdWKMBmNvbmZpZ5ROjA1kdW1wX3NldHRpbmdzlE6MDmR1bXBfaW50ZXJuYWxzlE6MD2R1bXBfdHJhbnNmb3Jtc5ROjA9kdW1wX3BzZXVkb194bWyUTowQZXhwb3NlX2ludGVybmFsc5ROjA5zdHJpY3RfdmlzaXRvcpROjA9fZGlzYWJsZV9jb25maWeUTowHX3NvdXJjZZROjAxfZGVzdGluYXRpb26UjD9kb2MvZGlmZnMvdGFuZ2VyaW5lX3doaXN0bGVfc3B1cmlvdXNfZHJhZ29uL3NwZWMvaW5kZXgucGlja2xlNjSUjA1fY29uZmlnX2ZpbGVzlF2UjBFsaW5lX2xlbmd0aF9saW1pdJRNECeMCXRhYl93aWR0aJRLCIwQc3ludGF4X2hpZ2hsaWdodJSMBGxvbmeUjAxzbWFydF9xdW90ZXOUiYwTc21hcnRxdW90ZXNfbG9jYWxlc5ROjB1jaGFyYWN0ZXJfbGV2ZWxfaW5saW5lX21hcmt1cJSJjAZ3cml0ZXKUjAN4bWyUjBljb21wYXJlX3NlY3Rpb25zX2J5X25hbWVzlEsBjAxkdW1wX3JzdGRpZmaUTowFX2JvdGiUfZQoaDhOjAlnZW5lcmF0b3KUTowJZGF0ZXN0YW1wlE6MC3NvdXJjZV9saW5rlE6MCnNvdXJjZV91cmyUTowNdG9jX2JhY2tsaW5rc5RqQAUAAIwSZm9vdG5vdGVfYmFja2xpbmtzlEsBjA1zZWN0bnVtX3hmb3JtlEsBjA5kb2N0aXRsZV94Zm9ybZRLAYwNZG9jaW5mb194Zm9ybZRLAYwSc2VjdHN1YnRpdGxlX3hmb3JtlEsAjA5zdHJpcF9jb21tZW50c5ROjA5pbnB1dF9lbmNvZGluZ5ROjBxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwGc3RyaWN0lIwNbGFuZ3VhZ2VfY29kZZSMAmVulIwOcGVwX3JlZmVyZW5jZXOUTowMcGVwX2Jhc2VfdXJslIwfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL5SMFXBlcF9maWxlX3VybF90ZW1wbGF0ZZSMCHBlcC0lMDRklIwOcmZjX3JlZmVyZW5jZXOUTowMcmZjX2Jhc2VfdXJslIwbaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvlIwddHJpbV9mb290bm90ZV9yZWZlcmVuY2Vfc3BhY2WUTowWZmlsZV9pbnNlcnRpb25fZW5hYmxlZJRLAYwLcmF3X2VuYWJsZWSUSwGMDmF1dG9faWRfcHJlZml4lIwCaWSUjAlpZF9wcmVmaXiUaAaMG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc5ROjA1zdHJpcF9jbGFzc2VzlE51jARib3RolH2UjApfb3B0aW9uc1RvlIwFX2JvdGiUjAtfb2xkX3NvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS+UjAtfbmV3X3NvdXJjZZSMCWRvYy9kaWZmc5Rq5TYAAGrmNgAAjBZpZ25vcmVfaW5fc2VjdGlvbl9uYW1llF2UKIwJdGFuZ2VyaW5llIwHd2hpc3RsZZSMCHNwdXJpb3VzlIwGZHJhZ29ulGV1YowIcmVwb3J0ZXKUTowQaW5kaXJlY3RfdGFyZ2V0c5RdlIwRc3Vic3RpdHV0aW9uX2RlZnOUfZSMEnN1YnN0aXR1dGlvbl9uYW1lc5R9lIwIcmVmbmFtZXOUfZSMBnJlZmlkc5R9lIwHbmFtZWlkc5R9lIwJbmFtZXR5cGVzlH2UaBB9lIwNZm9vdG5vdGVfcmVmc5R9lIwNY2l0YXRpb25fcmVmc5R9lIwNYXV0b2Zvb3Rub3Rlc5RdlIwRYXV0b2Zvb3Rub3RlX3JlZnOUXZSMEHN5bWJvbF9mb290bm90ZXOUXZSMFHN5bWJvbF9mb290bm90ZV9yZWZzlF2UjAlmb290bm90ZXOUXZSMCWNpdGF0aW9uc5RdlIwSYXV0b2Zvb3Rub3RlX3N0YXJ0lEsBjBVzeW1ib2xfZm9vdG5vdGVfc3RhcnSUSwCMCmlkX2NvdW50ZXKUjAtjb2xsZWN0aW9uc5SMB0NvdW50ZXKUk5R9lIWUUpSMDnBhcnNlX21lc3NhZ2VzlF2UjBJ0cmFuc2Zvcm1fbWVzc2FnZXOUXZSMC3RyYW5zZm9ybWVylE6MC2luY2x1ZGVfbG9nlF2UjApkZWNvcmF0aW9ulE5oIWgDdWIu