gASVAAABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIwhbW9kdWxlLWV0aGVyZXVtLmdyYXlfZ2xhY2llci5zcGVjlGGMB2NsYXNzZXOUXZSMBW5hbWVzlF2UjAhkdXBuYW1lc5RdlIwIYmFja3JlZnOUXZSMBWlzbW9klIh1jAd0YWduYW1llGgJjAZzb3VyY2WUjGIvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2dyYXlfZ2xhY2llci9zcGVjL2luZGV4LnJzdJSMBGxpbmWUSwGMBnBhcmVudJRoA4wJX2RvY3VtZW50lGgDdWKMD3NwaGlueC5hZGRub2Rlc5SMBWluZGV4lJOUKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UKIwEcGFpcpSMIm1vZHVsZTsgZXRoZXJldW0uZ3JheV9nbGFjaWVyLnNwZWOUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgAjAdzZWN0aW9ulJOUKYGUfZQoaAVoBmgHXZQoaACMBXRpdGxllJOUKYGUfZQoaAWMFkV0aGVyZXVtIFNwZWNpZmljYXRpb26UaAddlGgAjARUZXh0lJOUjBZFdGhlcmV1bSBTcGVjaWZpY2F0aW9ulIWUgZR9lChoBWgGaCBoOmghaANoHYxcL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy8udG94L2RvY3Mvc3RhZ2UwX291dC9hdXRvYXBpLyA9PiBkb2MvZGlmZnOUaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0sEaCBoNWghaAN1YmgAjAV0b3BpY5STlCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMEVRhYmxlIG9mIENvbnRlbnRzlGgHXZRoP4wRVGFibGUgb2YgQ29udGVu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aF9mb3JfcG93CgpHZW5lcmF0ZSBybHAgaGFzaCBvZiB0aGUgaGVhZGVyIHdoaWNoIGlzIHRvIGJlIHVzZWQgZm9yIFByb29mLW9mLVdvcmsKCnZhbGlkYXRlX3Byb29mX29mX3dvcmsKClZhbGlkYXRlcyB0aGUgUHJvb2Ygb2YgV29yayBjb25zdHJhaW50cy4KCmFwcGx5X2JvZHkKCkV4ZWN1dGVzIGEgYmxvY2suCgp2YWxpZGF0ZV9vbW1lcnMKClZhbGlkYXRlcyB0aGUgb21tZXJzIG1lbnRpb25lZCBpbiB0aGUgYmxvY2suCgpwYXlfcmV3YXJkcwoKUGF5IHJld2FyZHMgdG8gdGhlIGJsb2NrIG1pbmVyIGFzIHdlbGwgYXMgdGhlIG9tbWVycyBtaW5lcnMuCgpwcm9jZXNzX3RyYW5zYWN0aW9uCgpFeGVjdXRlIGEgdHJhbnNhY3Rpb24gYWdhaW5zdCB0aGUgcHJvdmlkZWQgZW52aXJvbm1lbnQuCgp2YWxpZGF0ZV90cmFuc2FjdGlvbgoKVmVyaWZpZXMgYSB0cmFuc2FjdGlvbi4KCmNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdAoKQ2FsY3VsYXRlcyB0aGUgZ2FzIHRoYXQgaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGlzIHN0YXJ0ZWQuCgpyZWNvdmVyX3NlbmRlcgoKRXh0cmFjdHMgdGhlIHNlbmRlciBhZGRyZXNzIGZyb20gYSB0cmFuc2FjdGlvbi4KCnNpZ25pbmdfaGFzaF9wcmUxNTUKCkNvbXB1dGUgdGhlIGhhc2ggb2YgYSB0cmFuc2FjdGlvbiB1c2VkIGluIGEgbGVnYWN5IChwcmUgRUlQIDE1NSkgc2lnbmF0dXJlLgoKc2lnbmluZ19oYXNoXzE1NQoKQ29tcHV0ZSB0aGUgaGFzaCBvZiBhIHRyYW5zYWN0aW9uIHVzZWQgaW4gYSBFSVAgMTU1IHNpZ25hdHVyZS4KCnNpZ25pbmdfaGFzaF8yOTMwCgpDb21wdXRlIHRoZSBoYXNoIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCBpbiBhIEVJUCAyOTMwIHNpZ25hdHVyZS4KCnNpZ25pbmdfaGFzaF8xNTU5CgpDb21wdXRlIHRoZSBoYXNoIG9m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lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqHwYAAGgdTmgfTmggai8IAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMN2V0aGVyZXVtLmdyYXlfZ2xhY2llci5zcGVjLmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUjAhyZWZ0aXRsZZSMN2V0aGVyZXVtLmdyYXlfZ2xhY2llci5zcGVjLmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUdWgcaG1oHU5oH05oIGorCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mcy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vZ3JheV9nbGFjaWVyL3NwZWMvaW5kZXgucnN0OjU4OjxhdXRvc3VtbWFyeT6UaB9LAWggaigIAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahMGAABoHU5oH05oIGolCAAAdWJqFAYAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxFR2VuZXJhdGUgcmxwIGhhc2ggb2YgdGhlIGhlYWRlciB3aGljaCBpcyB0byBiZSB1c2VkIGZvciBQcm9vZi1vZi1Xb3JrlGgHXZRoP4xFR2VuZXJhdGUgcmxwIGhhc2ggb2YgdGhlIGhlYWRlciB3aGljaCBpcyB0byBiZSB1c2VkIGZvciBQcm9vZi1vZi1Xb3JrlIWUgZR9lChoBWgGaCBqXAgAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHMvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2dyYXlfZ2xhY2llci9zcGVjL2luZGV4LnJzdDo1ODo8YXV0b3N1bW1hcnk+lGgfSwFoIGpZCAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoTBgAAaB1OaB9OaCBqJQgAAHViZWgOfZQoaBBdlGgTXZSMDmNoYW5nZS1y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c2FjdGlvbiA8ZXRoZXJldW0uZ3JheV9nbGFjaWVyLnNwZWMucHJvY2Vzc190cmFuc2FjdGlvbj5glGgHXZRobimBlH2UKGgFaAZoB12UaiAGAAApgZR9lChoBWrLCQAAaAddlGg/jBNwcm9jZXNzX3RyYW5zYWN0aW9ulIWUgZR9lChoBWgGaCBq0AkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoaiwGAACMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqHwYAAGgdTmgfTmggas0JAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMLmV0aGVyZXVtLmdyYXlfZ2xhY2llci5zcGVjLnByb2Nlc3NfdHJhbnNhY3Rpb26UjAhyZWZ0aXRsZZSMLmV0aGVyZXVtLmdyYXlfZ2xhY2llci5zcGVjLnByb2Nlc3NfdHJhbnNhY3Rpb26UdWgcaG1oHU5oH05oIGrJCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mcy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vZ3JheV9nbGFjaWVyL3NwZWMvaW5kZXgucnN0OjU4OjxhdXRvc3VtbWFyeT6UaB9LAWggasYJAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcahMGAABoHU5oH05oIGrDCQAAdWJqFAYAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw3RXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGVudmlyb25tZW50LpRoB12UaD+MN0V4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBlbnZpcm9ubWVudC6UhZSBlH2UKGgFaAZoIGr6CQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mcy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJl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aSmBlH2UKGgFjGQ6b2JqOmBCQVNFX0ZFRV9NQVhfQ0hBTkdFX0RFTk9NSU5BVE9SIDxldGhlcmV1bS5ncmF5X2dsYWNpZXIuc3BlYy5CQVNFX0ZFRV9NQVhfQ0hBTkdFX0RFTk9NSU5BVE9SPmBclGgHXZQoaG4pgZR9lChoBWgGaAddlGogBgAAKYGUfZQoaAWMYzpvYmo6YEJBU0VfRkVFX01BWF9DSEFOR0VfREVOT01JTkFUT1IgPGV0aGVyZXVtLmdyYXlfZ2xhY2llci5zcGVjLkJBU0VfRkVFX01BWF9DSEFOR0VfREVOT01JTkFUT1I+YJRoB12UaD+MH0JBU0VfRkVFX01BWF9DSEFOR0VfREVOT01JTkFUT1KUhZSBlH2UKGgFaAZoIGoFDgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqLAYAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGofBgAAaB1OaB9OaCBqAg4AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIw6ZXRoZXJldW0uZ3JheV9nbGFjaWVyLnNwZWMuQkFTRV9GRUVfTUFYX0NIQU5HRV9ERU5PTUlOQVRPUpSMCHJlZnRpdGxllIw6ZXRoZXJldW0uZ3JheV9nbGFjaWVyLnNwZWMuQkFTRV9GRUVfTUFYX0NIQU5HRV9ERU5PTUlOQVRPUpR1aBxobWgdTmgfTmggav4NAAB1Ymg/aAaFlIGUfZQoaAVoBmggav4NAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYxzL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9ncmF5X2dsYWNpZXIvc3BlYy9pbmRleC5yc3Q6NzU6PGF1dG9zdW1tYXJ5PpRoH0sBaCBq+w0AAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqEwYAAGgdTmgfTmggavgNAAB1YmoUBgAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVo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b21haW6UaioZAACMB29ianR5cGWUajUaAACMCGRlc2N0eXBllGo1GgAAjAdub2luZGV4lIl1aBxqJREAAGgdTmgfTmggatEYAAB1YmpqEQAAKYGUfZQoaAVY3wIAAGRlZiBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluOiBCbG9ja0NoYWluKSAtPiBMaXN0W0hhc2gzMl06CiAgICByZWNlbnRfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQogICAgIyBUT0RPOiBUaGlzIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiB0ZXN0ZWQgcmlnb3JvdXNseQogICAgaWYgbGVuKHJlY2VudF9ibG9ja3MpID09IDA6CiAgICAgICAgcmV0dXJuIFtdCgogICAgcmVjZW50X2Jsb2NrX2hhc2hlcyA9IFtdCgogICAgZm9yIGJsb2NrIGluIHJlY2VudF9ibG9ja3M6CiAgICAgICAgcHJldl9ibG9ja19oYXNoID0gYmxvY2suaGVhZGVyLnBhcmVudF9oYXNoCiAgICAgICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQocHJldl9ibG9ja19oYXNoKQoKICAgICMgV2UgYXJlIGNvbXB1dGluZyB0aGUgaGFzaCBvbmx5IGZvciB0aGUgbW9zdCByZWNlbnQgYmxvY2sgYW5kIG5vdCBmb3IKICAgICMgdGhlIHJlc3Qgb2YgdGhlIGJsb2NrcyBhcyB0aGV5IGhhdmUgc3VjY2Vzc29ycyB3aGljaCBoYXZlIHRoZSBoYXNoIG9mCiAgICAjIHRoZSBjdXJyZW50IGJsb2NrIGFzIHBhcmVudCBoYXNoLgogICAgbW9zdF9yZWNlbnRfYmxvY2tfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHJlY2VudF9ibG9ja3NbLTFdLmhlYWRlcikpCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChtb3N0X3JlY2VudF9ibG9ja19oYXNoKQoKICAgIHJldHVybiByZWNlbnRfYmxvY2tfaGFzaGVzCpRoB12UaD9Y3wIAAGRlZiBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluOiBCbG9ja0NoYWluKSAtPiBMaXN0W0hhc2gzMl06CiAgICByZWNlbnRfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQogICAgIyBUT0RPOiBUaGlzIGZ1bmN0aW9uIGhhcyBub3QgYmVlbiB0ZXN0ZWQgcmlnb3JvdXNseQogICAgaWYgbGVuKHJlY2VudF9ibG9ja3MpID09IDA6CiAgICAgICAgcmV0dXJuIFtdCgogICAgcmVjZW50X2Jsb2NrX2hhc2hlcyA9IFtdCgogICAgZm9yIGJsb2NrIGluIHJlY2VudF9ibG9ja3M6CiAgICAgICAgcHJldl9ibG9ja19oYXNoID0gYmxvY2suaGVhZGVyLnBhcmVudF9oYXNoCiAgICAgICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQocHJldl9ibG9ja19oYXNoKQoKICAgICMgV2UgYXJlIGNvbXB1dGluZyB0aGUgaGFzaCBvbmx5IGZvciB0aGUgbW9zdCByZWNlbnQgYmxvY2sgYW5kIG5vdCBmb3IKICAgICMgdGhlIHJlc3Qgb2YgdGhlIGJsb2NrcyBhcyB0aGV5IGhhdmUgc3VjY2Vzc29ycyB3aGljaCBoYXZlIHRoZSBoYXNoIG9mCiAgICAjIHRoZSBjdXJyZW50IGJsb2NrIGFzIHBhcmVudCBoYXNoLgogICAgbW9zdF9yZWNlbnRfYmxvY2tfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHJlY2VudF9ibG9ja3NbLTFdLmhlYWRlcikpCiAgICByZWNlbnRfYmxvY2tfaGFzaGVzLmFwcGVuZChtb3N0X3JlY2VudF9ibG9ja19oYXNoKQoKICAgIHJldHVybiByZWNlbnRfYmxvY2tfaGFzaGVzCpSFlIGUfZQoaAVoBmggaj0aAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFMvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9ncmF5X2dsYWNpZXIvc3BlYy5weZSMCXhtbDpzcGFjZZRqqgUAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGqBEQAA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ZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UaAddlGg/WDUBAABBbGwgcGFydHMgb2YgdGhlIGJsb2Nr4oCZcyBjb250ZW50cyBuZWVkIHRvIGJlIHZlcmlmaWVkIGJlZm9yZSBiZWluZyBhZGRlZAp0byB0aGUgY2hhaW4uIEJsb2NrcyBhcmUgdmVyaWZpZWQgYnkgZW5zdXJpbmcgdGhhdCB0aGUgY29udGVudHMgb2YgdGhlCmJsb2NrIG1ha2UgbG9naWNhbCBzZW5zZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IGJsb2NrLiBUaGUKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2Nr4oCZcyBoZWFkZXIgbXVzdCBhbHNvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCmluZm9ybWF0aW9uIGluIHRoZSBibG9jay6UhZSBlH2UKGgFaAZoIGrkGgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTTkBaCBq0xoAAHViaGkpgZR9lChoBYz8VG8gaW1wbGVtZW50IEV0aGVyZXVtLCBpbiB0aGVvcnkgY2xpZW50cyBhcmUgb25seSByZXF1aXJlZCB0byBzdG9yZSB0aGUKbW9zdCByZWNlbnQgMjU1IGJsb2NrcyBvZiB0aGUgY2hhaW4gc2luY2UgYXMgZmFyIGFzIGV4ZWN1dGlvbiBpcwpjb25jZXJuZWQsIG9ubHkgdGhvc2UgYmxvY2tzIGFyZSBhY2Nlc3NlZC4gUHJhY3RpY2FsbHksIGhvd2V2ZXIsIGNsaWVudHMKc2hvdWxkIHN0b3JlIG1vcmUgYmxvY2tzIHRvIGhhbmRsZSByZW9yZ3MulGgHXZRoP4z8VG8gaW1wbGVtZW50IEV0aGVyZXVtLCBpbiB0aGVvcnkgY2xpZW50cyBhcmUgb25seSByZXF1aXJlZCB0byBzdG9yZSB0aGUKbW9zdCByZWNlbnQgMjU1IGJsb2NrcyBvZiB0aGUgY2hhaW4gc2luY2UgYXMgZmFyIGFzIGV4ZWN1dGlvbiBpcwpjb25jZXJuZWQsIG9ubHkgdGhvc2UgYmxvY2tzIGFyZSBhY2Nlc3NlZC4gUHJh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LmhlYWRlciwgcGFyZW50X2hlYWRlcikKICAgIHZhbGlkYXRlX29tbWVycyhibG9jay5vbW1lcnMsIGJsb2NrLmhlYWRlciwgY2hhaW4pCiAgICAoCiAgICAgICAgZ2FzX3VzZWQsCiAgICAgICAgdHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgcmVjZWlwdF9yb290LAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApID0gYXBwbHlfYm9keSgKICAgICAgICBjaGFpbi5zdGF0ZSwKICAgICAgICBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluKSwKICAgICAgICBibG9jay5oZWFkZXIuY29pbmJhc2UsCiAgICAgICAgYmxvY2suaGVhZGVyLm51bWJlciwKICAgICAgICBibG9jay5oZWFkZXIuYmFzZV9mZWVfcGVyX2dhcywKICAgICAgICBibG9jay5oZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGJsb2NrLmhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgYmxvY2suaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgYmxvY2sudHJhbnNhY3Rpb25zLAogICAgICAgIGJsb2NrLm9tbWVycywKICAgICAgICBjaGFpbi5jaGFpbl9pZCwKICAgICkKICAgIGVuc3VyZShnYXNfdXNlZCA9PSBibG9jay5oZWFkZXIuZ2FzX3VzZWQsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSh0cmFuc2FjdGlvbnNfcm9vdCA9PSBibG9jay5oZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzdGF0ZV9yb290KHN0YXRlKSA9PSBibG9jay5oZWFkZXIuc3RhdGVfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHJlY2VpcHRfcm9vdCA9PSBibG9jay5oZWFkZXIucmVjZWlwdF9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoYmxvY2tfbG9nc19ibG9vbSA9PSBibG9jay5oZWFkZXIuYmxvb20sIEludmFsaWRCbG9jaykKCiAgICBj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LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUodHJhbnNhY3Rpb25zX3Jvb3QgPT0gYmxvY2suaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc3RhdGVfcm9vdChzdGF0ZSkgPT0gYmxvY2suaGVhZGVyLnN0YXRlX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShyZWNlaXB0X3Jvb3QgPT0gYmxvY2suaGVhZGVyLnJlY2VpcHRfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGJsb2NrX2xvZ3NfYmxvb20gPT0gYmxvY2suaGVhZGVyLmJsb29tLCBJbnZhbGlkQmxvY2spCgogICAgY2hhaW4uYmxvY2tzLmFwcGVuZChibG9jaykKICAgIGlmIGxlbihjaGFpbi5ibG9ja3MpID4gMjU1OgogICAgICAgICMgUmVhbCBjbGllbnRzIGhhdmUgdG8gc3RvcmUgbW9yZSBibG9ja3MgdG8gZGVhbCB3aXRoIHJlb3JncywgYnV0IHRoZQogICAgICAgICMgcHJvdG9jb2wgb25seSByZXF1aXJlcyB0aGUgbGFzdCAyNTUKICAgICAgICBjaGFpbi5ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLTI1NTpdCpSFlIGUfZQoaAVoBmggaqUbAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFMvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9ncmF5X2dsYWNpZXIvc3BlYy5weZSMCXhtbDpzcGFjZZRqqgUAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGqBEQAASwFzjAdsaW5lbm9zlIl1aBxqaREAAGgdaB5oH01KAWggalsaAABoIWgDdWJlaA59lChoEF2Uag8DAABhaBNdlGgVXZSMEHN0YXRlX3RyYW5zaXRpb26UYWgXXZRoGV2UdWgcaDNoHWgeaB9NMQFoIGr0EAAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2U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E12UaBVdlGgXXZRoGV2UdWgcat8XAABoHU5oH05oIGrAHAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGraFwAAaB1OaB9OaCBqjRwAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqUxEAAGgdaB5oH05oIGoxHAAAdWJlaA59lChoEF2UaBNdlChqhhwAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGqGHAAAjAdvYmp0eXBllGpLHQAAjAhkZXNjdHlwZZRqSx0AAIwHbm9pbmRleJSJdWgcaiURAABoHWhEaB9LAGggahUcAABoIWgDdWJqahEAACmBlH2UKGgFWC0KAABkZWYgdmFsaWRhdGVfaGVhZGVyKGhlYWRlcjogSGVhZGVyLCBwYXJlbnRfaGVhZGVyOiBIZWFkZXIpIC0+IE5vbmU6CiAgICBpZiBoZWFkZXIubnVtYmVyID09IE1BSU5ORVRfRk9SS19CTE9DSzoKICAgICAgICBwYXJlbnRfZ2FzX2xpbWl0ID0gcGFyZW50X2hlYWRlci5nYXNfbGltaXQgKiBFTEFTVElDSVRZX01VTFRJUExJRVIKICAgICAgICBwYXJlbnRfZ2FzX3RhcmdldCA9IHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0CiAgICBlbHNlOgogICAgICAgIHBhcmVudF9nYXNfbGltaXQgPSBwYXJlbnRfaGVhZGVyLmdhc19saW1pdAogICAgICAgIHBhcmVudF9nYXNfdGFyZ2V0ID0gcGFyZW50X2hlYWRlci5nYXNfbGltaXQgLy8gRUxBU1RJQ0lUWV9NVUxUSVBMSUVSCiAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgPSBwYXJlbnRfaGVhZGVyLmJhc2VfZmVlX3Blcl9nYXMKCiAgICBwYXJlbnRfZ2FzX3VzZWQgPSBwYXJlbnRfaGVhZGVyLmdhc191c2VkCgogICAgZW5zdXJlKGhlYWRlci5nYXNfdXNlZCA8PSBoZWFkZXIuZ2FzX2xpbWl0LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgY2hlY2tfZ2FzX2xpbWl0KGhlYWRlci5nYXNfbGltaXQsIHBhcmVudF9nYXNfbGltaXQpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKCiAgICAjIGNoZWNrIGlmIHRoZSBiYXNlIGZlZSBpcyBjb3JyZWN0CiAgICBpZiBoZWFkZXIubnVtYmVyID09IE1BSU5ORVRfRk9SS19CTE9DSzoKICAgICAgICBleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID0gSU5JVElBTF9CQVNFX0ZFRQogICAgZWxpZiBwYXJlbnRfZ2FzX3VzZWQgPT0gcGFyZW50X2dhc190YXJnZXQ6CiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9IHBhcmVudF9iYXNlX2ZlZV9wZXJfZ2FzCiAgICBlbGlmIHBhcmVudF9nYXNfdXNlZCA+IHBhcmVudF9nYXNfdGFyZ2V0OgogICAgICAgIGdhc191c2VkX2RlbHRhID0gcGFyZW50X2dhc191c2VkIC0gcGFyZW50X2dhc190YXJnZXQKCiAgICAgICAgcGFyZW50X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfYmFzZV9mZWVfcGVyX2dhcyAqIGdhc191c2VkX2RlbHRhCiAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfZmVlX2dhc19kZWx0YSAvLyBwYXJlbnRfZ2FzX3RhcmdldAoKICAgICAgICBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhID0gbWF4KAogICAgICAgICAgICB0YXJnZXRfZmVlX2dhc19kZWx0YSAvLyBCQVNFX0ZFRV9NQVhfQ0hBTkdFX0RFTk9NSU5BVE9SLAogICAgICAgICAgICAxLAogICAgICAgICkKCiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9ICgKICAgICAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgKyBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhCiAgICAgICAgKQogICAgZWxzZToKICAgICAgICBnYXNfdXNlZF9kZWx0YSA9IHBhcmVudF9nYXNfdGFyZ2V0IC0gcGFyZW50X2dhc191c2VkCgogICAgICAgIHBhcmVudF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgKiBnYXNfdXNlZF9kZWx0YQogICAgICAgIHRhcmdldF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2ZlZV9nYXNfZGVsdGEgLy8gcGFyZW50X2dhc190YXJnZXQKCiAgICAgICAgYmFzZV9mZWVfcGVyX2dhc19kZWx0YSA9ICgKICAgICAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgLy8gQkFTRV9GRUVfTUFYX0NIQU5HRV9ERU5PTUlOQVRPUgogICAgICAgICkKCiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9ICgKICAgICAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgLSBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhCiAgICAgICAgKQoKICAgIGVuc3VyZShleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID09IGhlYWRlci5iYXNlX2ZlZV9wZXJfZ2FzLCBJbnZhbGlkQmxvY2spCgogICAgcGFyZW50X2hhc19vbW1lcnMgPSBwYXJlbnRfaGVhZGVyLm9tbWVyc19oYXNoICE9IEVNUFRZX09NTUVSX0hBU0gKICAgIGVuc3VyZShoZWFkZXIudGltZXN0YW1wID4gcGFyZW50X2hlYWRlci50aW1lc3RhbXAsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShoZWFkZXIubnVtYmVyID09IHBhcmVudF9oZWFkZXIubnVtYmVyICsgMSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGxlbihoZWFkZXIuZXh0cmFfZGF0YSkgPD0gMzIsIEludmFsaWRCbG9jaykKCiAgICBibG9ja19kaWZmaWN1bHR5ID0gY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkoCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIudGltZXN0YW1wLAogICAgICAgIHBhcmVudF9oZWFkZXIudGltZXN0YW1wLAogICAgICAgIHBhcmVudF9oZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBwYXJlbnRfaGFzX29tbWVycywKICAgICkKICAgIGVuc3VyZShoZWFkZXIuZGlmZmljdWx0eSA9PSBibG9ja19kaWZmaWN1bHR5LCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfcGFyZW50X2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShwYXJlbnRfaGVhZGVyKSkKICAgIGVuc3VyZShoZWFkZXIucGFyZW50X2hhc2ggPT0gYmxvY2tfcGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKCiAgICB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcikKlGgHXZQoaD+MSGRlZiB2YWxpZGF0ZV9oZWFkZXIoaGVhZGVyOiBIZWFkZXIsIHBhcmVudF9oZWFkZXI6IEhlYWRlcikgLT4gTm9uZToKICAgIJSFlIGUfZQoaAVoBmggalMdAABoIWgDaB1oRGgfSwB1YmoLFgAAKYGUfZQoaAVoBmgHXZRoP1iQAQAAcGFyZW50X2dhc19saW1pdCA9IHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0CiAgICBwYXJlbnRfZ2FzX3RhcmdldCA9IHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0IC8vIEVMQVNUSUNJVFlfTVVMVElQTElFUgogICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgPSBwYXJlbnRfaGVhZGVyLmJhc2VfZmVlX3Blcl9nYXMKCiAgICBwYXJlbnRfZ2FzX3VzZWQgPSBwYXJlbnRfaGVhZGVyLmdhc191c2VkCgogICAgZW5zdXJlKGhlYWRlci5nYXNfdXNlZCA8PSBoZWFkZXIuZ2FzX2xpbWl0LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgY2hlY2tfZ2FzX2xpbWl0KGhlYWRlci5nYXNfbGltaXQsIHBhcmVudF9nYXNfbGltaXQpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKCiAgICAjIGNoZWNrIJSFlIGUfZQoaAVoBmggalsdAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjAxjaGFuZ2UtYWRkZWSUYWgVXZRoF12UaBldlHVoHGoKFgAAaCBqUx0AAGghaANoHWhEaB9LAHViaD+MA2lmIJSFlIGUfZQoaAVoBmggalMdAABoIWgDaB1oRGgfSwB1YmoLFgAAKYGUfZQoaAVoBmgHXZRoP4wNaGVh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ZWFkZXIudGltZXN0YW1wID4gcGFyZW50X2hlYWRlci50aW1lc3RhbXAsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShoZWFkZXIubnVtYmVyID09IHBhcmVudF9oZWFkZXIubnVtYmVyICsgMSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGxlbihoZWFkZXIuZXh0cmFfZGF0YSmUhZSBlH2UKGgFaAZoIGqxHgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlIwSY2hhbmdlLXJlcGxhY2VtZW50lGFoFV2UaBddlGgZXZR1aBxqChYAAGggalMdAABoIWgDaB1oRGgfSwB1Ymg/jAQgPD0glIWUgZR9lChoBWgGaCBqUx0AAGghaANoHWhEaB9LAHViagsWAAApgZR9lChoBWgGaAddlGg/WGcGAABoZWFkZXIuZ2FzX2xpbWl0LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgY2hlY2tfZ2FzX2xpbWl0KGhlYWRlci5nYXNfbGltaXQsIHBhcmVudF9nYXNfbGltaXQpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKCiAgICAjIGNoZWNrIGlmIHRoZSBiYXNlIGZlZSBpcyBjb3JyZWN0CiAgICBpZiBoZWFkZXIubnVtYmVyID09IE1BSU5ORVRfRk9SS19CTE9DSzoKICAgICAgICBleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID0gSU5JVElBTF9CQVNFX0ZFRQogICAgZWxpZiBwYXJlbnRfZ2FzX3VzZWQgPT0gcGFyZW50X2dhc190YXJnZXQ6CiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9IHBhcmVudF9iYXNlX2ZlZV9wZXJfZ2FzCiAgICBlbGlmIHBhcmVudF9nYXNfdXNlZCA+IHBhcmVudF9nYXNfdGFyZ2V0OgogICAgICAgIGdhc191c2VkX2RlbHRhID0gcGFyZW50X2dhc191c2VkIC0gcGFyZW50X2dhc190YXJnZXQKCiAgICAgICAgcGFyZW50X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfYmFzZV9mZWVfcGVyX2dhcyAqIGdhc191c2VkX2RlbHRhCiAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgPSBwYXJlbnRfZmVlX2dhc19kZWx0YSAvLyBwYXJlbnRfZ2FzX3RhcmdldAoKICAgICAgICBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhID0gbWF4KAogICAgICAgICAgICB0YXJnZXRfZmVlX2dhc19kZWx0YSAvLyBCQVNFX0ZFRV9NQVhfQ0hBTkdFX0RFTk9NSU5BVE9SLAogICAgICAgICAgICAxLAogICAgICAgICkKCiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9ICgKICAgICAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgKyBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhCiAgICAgICAgKQogICAgZWxzZToKICAgICAgICBnYXNfdXNlZF9kZWx0YSA9IHBhcmVudF9nYXNfdGFyZ2V0IC0gcGFyZW50X2dhc191c2VkCgogICAgICAgIHBhcmVudF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgKiBnYXNfdXNlZF9kZWx0YQogICAgICAgIHRhcmdldF9mZWVfZ2FzX2RlbHRhID0gcGFyZW50X2ZlZV9nYXNfZGVsdGEgLy8gcGFyZW50X2dhc190YXJnZXQKCiAgICAgICAgYmFzZV9mZWVfcGVyX2dhc19kZWx0YSA9ICgKICAgICAgICAgICAgdGFyZ2V0X2ZlZV9nYXNfZGVsdGEgLy8gQkFTRV9GRUVfTUFYX0NIQU5HRV9ERU5PTUlOQVRPUgogICAgICAgICkKCiAgICAgICAgZXhwZWN0ZWRfYmFzZV9mZWVfcGVyX2dhcyA9ICgKICAgICAgICAgICAgcGFyZW50X2Jhc2VfZmVlX3Blcl9nYXMgLSBiYXNlX2ZlZV9wZXJfZ2FzX2RlbHRhCiAgICAgICAgKQoKICAgIGVuc3VyZShleHBlY3RlZF9iYXNlX2ZlZV9wZXJfZ2FzID09IGhlYWRlci5iYXNlX2ZlZV9wZXJfZ2FzLCBJbnZhbGlkQmxvY2spCgogICAgcGFyZW50X2hhc19vbW1lcnMgPSBwYXJlbnRfaGVhZGVyLm9tbWVyc19oYXNoICE9IEVNUFRZX09NTUVSX0hBU0gK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LmJhc2VfZmVlX3Blcl9nYXMsCiAgICBdCgogICAgcmV0dXJuIHJscC5ybHBfaGFzaChoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMpCpRoB12UaD9YJAIAAGRlZiBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcjogSGVhZGVyKSAtPiBIYXNoMzI6CiAgICBoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMgPSBbCiAgICAgICAgaGVhZGVyLnBhcmVudF9oYXNoLAogICAgICAgIGhlYWRlci5vbW1lcnNfaGFzaCwKICAgICAgICBoZWFkZXIuY29pbmJhc2UsCiAgICAgICAgaGVhZGVyLnN0YXRlX3Jvb3QsCiAgICAgICAgaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LAogICAgICAgIGhlYWRlci5yZWNlaXB0X3Jvb3QsCiAgICAgICAgaGVhZGVyLmJsb29tLAogICAgICAgIGhlYWRlci5kaWZmaWN1bHR5LAogICAgICAgIGhlYWRlci5udW1iZXIsCiAgICAgICAgaGVhZGVyLmdhc19saW1pdCwKICAgICAgICBoZWFkZXIuZ2FzX3VzZWQsCiAgICAgICAgaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBoZWFkZXIuZXh0cmFfZGF0YSwKICAgICAgICBoZWFkZXIuYmFzZV9mZWVfcGVyX2dhcywKICAgIF0KCiAgICByZXR1cm4gcmxwLnJscF9oYXNoKGhlYWRlcl9kYXRhX3dpdGhvdXRfcG93X2FydGVmYWN0cykKlIWUgZR9lChoBWgGaCBq4yAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2dyYXlfZ2xhY2llci9zcGVjLnB5lIwJeG1sOnNwYWNllGqqBQAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UaoERAABLAXOMB2xpbmVub3OUiXVoHGppEQAAaB1oHmgfTYIBaCBqQR8AAHViZWgOfZQoaBBdlGpTAwAAYWgTXZSMDmNoYW5nZS1yZW1vdmVklGFoFV2UjBxnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lGFoF12UaBldlHVoHGgzaB1oHmgfTWkBaCBq9BAAAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwWdmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5RoB12UaD+MFnZhbGlkYXRlX3Byb29mX29mX3dvcmuUhZSBlH2UKGgFaAZoIGoFIQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfTYcBaCBqAiEAAHViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJpZXOUXZR1aBxoI2gdTmgfTmggagIhAAB1YmomEQAAKYGUfZQoaAVoBmgHXZQoaisRAAApgZR9lChoBYwedmFsaWRhdGVfcHJvb2Zfb2Zfd29yayhoZWFkZXIplGgHXZQoajERAAApgZR9lChoBYwWdmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5RoB12UaD+MFnZhbGlkYXRlX3Byb29mX29mX3dvcmuUhZSBlH2UKGgFaAZoIGolIQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqPBEAAGo9EQAAaj4RAABqPxEAAGVoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqqgUAAHVoHGowEQAAaB1oHmgfTmggaiEhAAB1YmpXFwAAKYGUfZQoaAWMBmhlYWRlcpRoB12Ual0XAAApgZR9lChoBYwGaGVhZGVylGgHXZRqCxYAACmBlH2UKGgFaAZoB12UaD+MBmhlYWRlcpSFlIGUfZQoaAVoBmggajwhAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UamwXAABhaBVdlGgXXZRoGV2UdWgcagoWAABoHU5oH05oIGo4IQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqqBQAAdWgcalwXAABoHU5oH05oIGo0IQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqqBQAAdWgcalYXAABoHWgeaB9OaCBqISEAAHViZWgOfZQoaBBdlIwxZXRoZXJldW0uZ3JheV9nbGFjaWVyLnNwZWMudmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5RhaBNdlChqRxEAAGpIEQAAjAJweZRqShEAAGpLEQAAZWgVXZRoF12UaBldlIwGbW9kdWxllGpQEQAAjAVjbGFzc5RoBowIZnVsbG5hbWWUaichAAB1aBxqKhEAAGgdaB5oH02KAWggah4hAAB1YmpUEQAAKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBYwoVmFsaWRhdGVzIHRoZSBQcm9vZiBvZiBXb3JrIGNvbnN0cmFpbnRzLpRoB12UaD+MKFZhbGlkYXRlcyB0aGUgUHJvb2Ygb2YgV29yayBjb25zdHJhaW50cy6UhZSBlH2UKGgFaAZoIGplIQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTY0BaCBqYiEAAHViaGkpgZR9lChoBVhrAQAASW4gb3JkZXIgdG8gdmVyaWZ5IHRoYXQgYSBtaW5lcidzIHByb29mLW9mLXdvcmsgaXMgdmFsaWQgZm9yIGEgYmxvY2ssIGEKYGBtaXgtZGlnZXN0YGAgYW5kIGBgcmVzdWx0YGAgYXJlIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIGBgaGFzaGltb3RvX2xpZ2h0YGAKaGFzaCBmdW5jdGlvbi4gVGhlIG1peCBkaWdlc3QgaXMgYSBoYXNoIG9mIHRoZSBoZWFkZXIgYW5kIHRoZSBub25jZSB0aGF0CmlzIHBhc3NlZCB0aHJvdWdoIGFuZCBpdCBjb25maXJtcyB3aGV0aGVyIG9yIG5vdCBwcm9vZi1vZi13b3JrIHdhcyBkb25lCm9uIHRoZSBjb3JyZWN0IGJsb2NrLiBUaGUgcmVzdWx0IGlzIHRoZSBhY3R1YWwgaGFzaCB2YWx1ZSBvZiB0aGUgYmxvY2sulGgHXZQoaD+MSkluIG9yZGVyIHRvIHZlcmlmeSB0aGF0IGEgbWluZXLigJlzIHByb29mLW9mLXdvcmsgaXMgdmFsaWQgZm9yIGEgYmxvY2ssIGEKlIWUgZR9lChoBWgGaCBqcyEAAGghaANoHWhEaB9LAHViaiAGAAApgZR9lChoBYwOYGBtaXgtZGlnZXN0YGCUaAddlGg/jAptaXgtZGlnZXN0lIWUgZR9lChoBWgGaCBqeyEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqHwYAAGgdTmgfTmgganMhAAB1Ymg/jAUgYW5kIJSFlIGUfZQoaAVoBmgganMhAABoIWgDaB1oRGgfSwB1YmogBgAAKYGUfZQoaAWMCmBgcmVzdWx0YGCUaAddlGg/jAZyZXN1bHSUhZSBlH2UKGgFaAZoIGqNIQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGofBgAAaB1OaB9OaCBqcyEAAHViaD+MGiBhcmUgY2FsY3VsYXRlZCB1c2luZyB0aGUglIWUgZR9lChoBWgGaCBqcyEAAGghaANoHWhEaB9LAHViaiAGAAApgZR9lChoBYwTYGBoYXNoaW1vdG9fbGlnaHRgYJRoB12UaD+MD2hhc2hpbW90b19saWdodJSFlIGUfZQoaAVoBmggap8hAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcah8GAABoHU5oH05oIGpzIQAAdWJoP4zZCmhhc2ggZnVuY3Rpb24uIFRoZSBtaXggZGlnZXN0IGlzIGEgaGFzaCBvZiB0aGUgaGVhZGVyIGFuZCB0aGUgbm9uY2UgdGhhdAppcyBwYXNzZWQgdGhyb3VnaCBhbmQgaXQgY29uZmlybXMgd2hldGhlciBvciBub3QgcHJvb2Ytb2Ytd29yayB3YXMgZG9uZQpvbiB0aGUgY29ycmVjdCBibG9jay4gVGhlIHJlc3VsdCBpcyB0aGUgYWN0dWFsIGhhc2ggdmFsdWUgb2YgdGhlIGJsb2NrLpSFlIGUfZQoaAVoBmgganMhAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NjwFoIGpiIQAAdWJq2xcAACmBlH2UKGgFaAZoB12UauAXAAApgZR9lChoBWgGaAddlChq5RcAACmBlH2UKGgFjApQYXJhbWV0ZXJzlGgHXZRoP4wKUGFyYW1ldGVyc5SFlIGUfZQoaAVoBmggar0hAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcauQXAABoHWgeaB9LAGggarohAAB1Ymr1FwAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjB1oZWFkZXIgLS0gSGVhZGVyIG9mIGludGVyZXN0LpRoB12UKGr+FwAAKYGUfZQoaAWMBmhlYWRlcpRoB12UaD+MBmhlYWRlcpSFlIGUfZQoaAVoBmggatIhAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAtyZWZzcGVjaWZpY5SIjAlweTptb2R1bGWUalARAACMCHB5OmNsYXNzlE51aBxq/RcAAGgdTmgfTmggas4hAAB1Ymg/jBgg4oCTIEhlYWRlciBvZiBpbnRlcmVzdC6UhZSBlH2UKGgFaAZoIGrOIQAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqyyEAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq9BcAAGgdTmgfTmggarohAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcat8XAABoHU5oH05oIGq3IQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGraFwAAaB1OaB9OaCBqYiEAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqUxEAAGgdaB5oH05oIGoeIQAAdWJlaA59lChoEF2UaBNdlChqWyEAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGpbIQAAjAdvYmp0eXBllGoIIgAAjAhkZXNjdHlwZZRqCCIAAIwHbm9pbmRleJSJdWgcaiURAABoHU5oH05oIGoCIQAAdWJqahEAACmBlH2UKGgFWDYCAABkZWYgdmFsaWRhdGVfcHJvb2Zfb2Zfd29yayhoZWFkZXI6IEhlYWRlcikgLT4gTm9uZToKICAgIGhlYWRlcl9oYXNoID0gZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdyhoZWFkZXIpCiAgICAjIFRPRE86IE1lbW9pemUgdGhpcyBzb21ld2hlcmUgYW5kIHJlYWQgZnJvbSB0aGF0IGRhdGEgaW5zdGVhZCBvZgogICAgIyBjYWxjdWxhdGluZyBjYWNoZSBmb3IgZXZlcnkgYmxvY2sgdmFsaWRhdGlvbi4KICAgIGNhY2hlID0gZ2VuZXJhdGVfY2FjaGUoaGVhZGVyLm51bWJlcikKICAgIG1peF9kaWdlc3QsIHJlc3VsdCA9IGhhc2hpbW90b19saWdodCgKICAgICAgICBoZWFkZXJfaGFzaCwgaGVhZGVyLm5vbmNlLCBjYWNoZSwgZGF0YXNldF9zaXplKGhlYWRlci5udW1iZXIpCiAgICApCgogICAgZW5zdXJlKG1peF9kaWdlc3QgPT0gaGVhZGVyLm1peF9kaWdlc3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSgKICAgICAgICBVaW50LmZyb21fYmVfYnl0ZXMocmVzdWx0KSA8PSAoVTI1Nl9DRUlMX1ZBTFVFIC8vIGhlYWRlci5kaWZmaWN1bHR5KSwKICAgICAgICBJbnZhbGlkQmxvY2ssCiAgICApCpRoB12UaD9YNgIAAGRlZiB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgaGVhZGVyX2hhc2ggPSBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcikKICAgICMgVE9ETzogTWVtb2l6ZSB0aGlzIHNvbWV3aGVyZSBhbmQgcmVhZCBmcm9tIHRoYXQgZGF0YSBpbnN0ZWFkIG9mCiAgICAjIGNhbGN1bGF0aW5nIGNhY2hlIGZvciBldmVyeSBibG9jayB2YWxpZGF0aW9uLgogICAgY2FjaGUgPSBnZW5lcmF0ZV9jYWNoZShoZWFkZXIubnVtYmVyKQogICAgbWl4X2RpZ2VzdCwgcmVzdWx0ID0gaGFzaGltb3RvX2xpZ2h0KAogICAgICAgIGhlYWRlcl9oYXNoLCBoZWFkZXIubm9uY2UsIGNhY2hlLCBkYXRhc2V0X3NpemUoaGVhZGVyLm51bWJlcikKICAgICkKCiAgICBlbnN1cmUobWl4X2RpZ2VzdCA9PSBoZWFkZXIubWl4X2RpZ2VzdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIFVpbnQuZnJvbV9iZV9ieXRlcyhyZXN1bHQp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YWN5VHJhbnNhY3Rpb24sIEJ5dGVzXSwgLi4uXSwKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAogICAgY2hhaW5faWQ6IFVpbnQ2NCwKKSAtPiBUdXBsZVtVaW50LCBSb290LCBSb290LCBCbG9vbSwgU3RhdGVdOgogICAgZ2FzX2F2YWlsYWJsZSA9IGJsb2NrX2dhc19saW1pdAogICAgdHJhbnNhY3Rpb25zX3RyaWU6IFRyaWVbCiAgICAgICAgQnl0ZXMsIE9wdGlvbmFsW1VuaW9uW0J5dGVzLCBMZWdhY3lUcmFuc2FjdGlvbl1dCiAgICBdID0gVHJpZShzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUpCiAgICByZWNlaXB0c190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtVbmlvbltCeXRlcywgUmVjZWlwdF1dXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICBibG9ja19sb2dzOiBUdXBsZVtMb2csIC4uLl0gPSAoKQoKICAgIGZvciBpLCB0eCBpbiBlbnVtZXJhdGUobWFwKGRlY29kZV90cmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25zKSk6CiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHRyYW5zYWN0aW9uc190cmllLCBybHAuZW5jb2RlKFVpbnQoaSkpLCBlbmNvZGVfdHJhbnNhY3Rpb24odHgpCiAgICAgICAgKQoKICAgICAgICBlbnN1cmUodHguZ2FzIDw9IGdhc19hdmFpbGFibGUsIEludmFsaWRCbG9jaykKICAgICAgICBzZW5kZXJfYWRkcmVzcyA9IHJlY292ZXJfc2VuZGVyKGNoYWluX2lkLCB0eCkKCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgRmVlTWFya2V0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgICAgICB0eC5tYXhfZmVlX3Blcl9nYXMgPj0gdHgubWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzLCBJbnZhbGlkQmxvY2sKICAgICAgICAgICAgKQoKICAgICAgICAgICAgcHJpb3JpdHlfZmVlX3Blcl9nYXMgPSBtaW4oCiAgICAgICAgICAgICAgICB0eC5tYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXMsCiAgICAgICAgICAgICAgICB0eC5tYXhfZmVlX3Blcl9nYXMgLSBiYXNlX2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICApCiAgICAgICAgICAgIGVmZmVjdGl2ZV9nYXNfcHJpY2UgPSBwcmlvcml0eV9mZWVfcGVyX2dhcyArIGJhc2VfZmVlX3Blcl9nYXMKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbnN1cmUodHguZ2FzX3ByaWNlID49IGJhc2VfZmVlX3Blcl9nYXMsIEludmFsaWRCbG9jaykKICAgICAgICAgICAgZWZmZWN0aXZlX2dhc19wcmljZSA9IHR4Lmdhc19wcmljZQoKICAgICAgICBlbnYgPSB2bS5FbnZpcm9ubWVudCgKICAgICAgICAgICAgY2FsbGVyPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBvcmlnaW49c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIGJsb2NrX2hhc2hlcz1ibG9ja19oYXNoZXMsCiAgICAgICAgICAgIGNvaW5iYXNlPWNvaW5iYXNlLAogICAgICAgICAgICBudW1iZXI9YmxvY2tfbnVtYmVyLAogICAgICAgICAgICBnYXNfbGltaXQ9YmxvY2tfZ2FzX2xpbWl0LAogICAgICAgICAgICBiYXNlX2ZlZV9wZXJfZ2FzPWJhc2VfZmVlX3Blcl9nYXMsCiAgICAgICAgICAgIGdhc19wcmljZT1lZmZlY3RpdmVfZ2FzX3ByaWNlLAogICAgICAgICAgICB0aW1lPWJsb2NrX3RpbWUsCiAgICAgICAgICAgIGRpZmZpY3VsdHk9YmxvY2tfZGlmZmljdWx0eSwKICAgICAgICAgICAgc3RhdGU9c3RhdGUsCiAgICAgICAgICAgIGNoYWluX2lkPWNoYWluX2lkLAogICAgICAgICkKCiAgICAgICAgZ2FzX3VzZWQsIGxvZ3MsIGhhc19lcnJlZCA9IHByb2Nlc3NfdHJhbnNhY3Rpb24oZW52LCB0eCkKICAgICAgICBnYXNfYXZhaWxhYmxlIC09IGdhc191c2VkCgogICAgICAgIHJlY2VpcHQ6IFVuaW9uW0J5dGVzLCBSZWNlaXB0XSA9IFJlY2VpcHQoCiAgICAgICAgICAgIHN1Y2NlZWRlZD1ub3QgaGFzX2VycmVkLAogICAgICAgICAgICBjdW11bGF0aXZlX2dhc191c2VkPShibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlKSwKICAgICAgICAgICAgYmxvb209bG9nc19ibG9vbShsb2dzKSwKICAgICAgICAgICAgbG9ncz1sb2dzLAogICAgICAgICkKCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgQWNjZXNzTGlzdFRyYW5zYWN0aW9uKToKICAgICAgICAgICAgcmVjZWlwdCA9IGIiXHgwMSIgKyBybHAuZW5jb2RlKHJlY2VpcHQpCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgRmVlTWFya2V0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICByZWNlaXB0ID0gYiJceDAyIiArIHJscC5lbmNvZGUocmVjZWlwdCkKCiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHJlY2VpcHRzX3RyaWUsCiAgICAgICAgICAgIHJscC5lbmNvZGUoVWludChpKSksCiAgICAgICAgICAgIHJlY2VpcHQsCiAgICAgICAgKQoKICAgICAgICBibG9ja19sb2dzICs9IGxvZ3MKCiAgICBwYXlfcmV3YXJkcyhzdGF0ZSwgYmxvY2tfbnVtYmVyLCBjb2luYmFzZSwgb21tZXJzKQoKICAgIGdhc19yZW1haW5pbmcgPSBibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlCgogICAgYmxvY2tfbG9nc19ibG9vbSA9IGxvZ3NfYmxvb20oYmxvY2tfbG9ncykKCiAgICByZXR1cm4gKAogICAgICAgIGdhc19yZW1haW5pbmcsCiAgICAgICAgcm9vdCh0cmFuc2FjdGlvbnNfdHJpZSksCiAgICAgICAgcm9vdChyZWNlaXB0c190cmllKSwKICAgICAgICBibG9ja19sb2dzX2Jsb29tLAogICAgICAgIHN0YXRlLAogICAgKQqUlQ8AAQAAAAAAaAddlChoP4zCZGVmIGFwcGx5X2JvZHkoCiAgICBzdGF0ZTogU3RhdGUsCiAgICBibG9ja19oYXNoZXM6IExpc3RbSGFzaDMyXSwKICAgIGNvaW5iYXNlOiBBZGRyZXNzLAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgYmFzZV9mZWVfcGVyX2dhczogVWludCwKICAgIGJsb2NrX2dhc19saW1pdDogVWludCwKICAgIGJsb2NrX3RpbWU6IFUyNTYsCiAgICCUhZSBlH2UKGgFaAZoIGpNJwAAaCFoA2gdaERoH0sAdWJqCxYAACmBlH2UKGgFaAZoB12UaD+MF2Jsb2NrX2RpZmZpY3VsdHk6IFVpbnQslIWUgZR9lChoBWgGaCBqVScAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMD2NoYW5nZS1yZXBsYWNlZJRhaBVdlGgXXZRoGV2UdWgcagoWAABoIGpNJwAAaCFoA2gdaERoH0sAdWJqCxYAACmBlH2UKGgFaAZoB12UaD+MFXByZXZfcmFuZGFvOiBCeXRlczMyLJSFlIGUfZQoaAVoBmggamMnAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjBJjaGFuZ2UtcmVwbGFjZW1lbnSUYWgVXZRoF12UaBldlHVoHGoKFgAAaCBqTScAAGghaANoHWhEaB9LAHViaD+MRAogICAgdHJhbnNhY3Rpb25zOiBUdXBsZVtVbmlvbltMZWdhY3lUcmFuc2FjdGlvbiwgQnl0ZXNdLCAuLi5dLAogICAglIWUgZR9lChoBWgGaCBqTScAAGghaANoHWhEaB9LAHViagsWAAApgZR9lChoBWgGaAddlGg/jCBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwKICAgIJSFlIGUfZQoaAVoBmgganUnAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjA5jaGFuZ2UtcmVtb3ZlZJRhaBVdlGgXXZRoGV2UdWgcagoWAABoIGpNJwAAaCFoA2gdaERoH0sAdWJoP1gQBgAAY2hhaW5faWQ6IFVpbnQ2NCwKKSAtPiBUdXBsZVtVaW50LCBSb290LCBSb290LCBCbG9vbSwgU3RhdGVdOgogICAgZ2FzX2F2YWlsYWJsZSA9IGJsb2NrX2dhc19saW1pdAogICAgdHJhbnNhY3Rpb25zX3RyaWU6IFRyaWVbCiAgICAgICAgQnl0ZXMsIE9wdGlvbmFsW1VuaW9uW0J5dGVzLCBMZWdhY3lUcmFuc2FjdGlvbl1dCiAgICBdID0gVHJpZShzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUpCiAgICByZWNlaXB0c190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtVbmlvbltCeXRlcywgUmVjZWlwdF1dXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICBibG9ja19sb2dzOiBUdXBsZVtMb2csIC4uLl0gPSAoKQoKICAgIGZvciBpLCB0eCBpbiBlbnVtZXJhdGUobWFwKGRlY29kZV90cmFuc2FjdGlvbiwgdHJhbnNhY3Rpb25zKSk6CiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHRyYW5zYWN0aW9uc190cmllLCBybHAuZW5jb2RlKFVpbnQoaSkpLCBlbmNvZGVfdHJhbnNhY3Rpb24odHgpCiAgICAgICAgKQoKICAgICAgICBlbnN1cmUodHguZ2FzIDw9IGdhc19hdmFpbGFibGUsIEludmFsaWRCbG9jaykKICAgICAgICBzZW5kZXJfYWRkcmVzcyA9IHJlY292ZXJfc2VuZGVyKGNoYWluX2lkLCB0eCkKCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgRmVlTWFya2V0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgICAgICB0eC5tYXhfZmVlX3Blcl9nYXMgPj0gdHgubWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzLCBJbnZhbGlkQmxvY2sKICAgICAgICAgICAgKQoKICAgICAgICAgICAgcHJpb3JpdHlfZmVlX3Blcl9nYXMgPSBtaW4oCiAgICAgICAgICAgICAgICB0eC5tYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXMsCiAgICAgICAgICAgICAgICB0eC5tYXhfZmVlX3Blcl9nYXMgLSBiYXNlX2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICApCiAgICAgICAgICAgIGVmZmVjdGl2ZV9nYXNfcHJpY2UgPSBwcmlvcml0eV9mZWVfcGVyX2dhcyArIGJhc2VfZmVlX3Blcl9nYXMKICAgICAgICBlbHNlOgogICAgICAgICAgICBlbnN1cmUodHguZ2FzX3ByaWNlID49IGJhc2VfZmVlX3Blcl9nYXMsIEludmFsaWRCbG9jaykKICAgICAgICAgICAgZWZmZWN0aXZlX2dhc19wcmljZSA9IHR4Lmdhc19wcmljZQoKICAgICAgICBlbnYgPSB2bS5FbnZpcm9ubWVudCgKICAgICAgICAgICAgY2FsbGVyPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBvcmlnaW49c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIGJsb2NrX2hhc2hlcz1ibG9ja19oYXNoZXMsCiAgICAgICAgICAgIGNvaW5iYXNlPWNvaW5iYXNlLAogICAgICAgICAgICBudW1iZXI9YmxvY2tfbnVtYmVyLAogICAgICAgICAgICBnYXNfbGltaXQ9YmxvY2tfZ2FzX2xpbWl0LAogICAgICAgICAgICBiYXNlX2ZlZV9wZXJfZ2FzPWJhc2VfZmVlX3Blcl9nYXMsCiAgICAgICAgICAgIGdhc19wcmljZT1lZmZlY3RpdmVfZ2FzX3ByaWNlLAogICAgICAgICAgICB0aW1lPWJsb2NrX3RpbWUsCiAgICAgICAgICAgIJSFlIGUfZQoaAVoBmggak0nAABoIWgDaB1oRGgfSwB1YmoLFgAAKYGUfZQoaAVoBmgHXZRoP4wcZGlmZmljdWx0eT1ibG9ja19kaWZmaWN1bHR5LJSFlIGUfZQoaAVoBmggaocnAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjA9jaGFuZ2UtcmVwbGFjZWSUYWgVXZRoF12UaBldlHVoHGoKFgAAaCBqTScAAGghaANoHWhEaB9LAHViagsWAAApgZR9lChoBWgGaAddlGg/jBhwcmV2X3JhbmRhbz1wcmV2X3JhbmRhbyyUhZSBlH2UKGgFaAZoIGqVJwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlIwSY2hhbmdlLXJlcGxhY2VtZW50lGFoFV2UaBddlGgZXZR1aBxqChYAAGggak0nAABoIWgDaB1oRGgfSwB1Ymg/WOICAAAKICAgICAgICAgICAgc3RhdGU9c3RhdGUsCiAgICAgICAgICAgIGNoYWluX2lkPWNoYWluX2lkLAogICAgICAgICkKCiAgICAgICAgZ2FzX3VzZWQsIGxvZ3MsIGhhc19lcnJlZCA9IHByb2Nlc3NfdHJhbnNhY3Rpb24oZW52LCB0eCkKICAgICAgICBnYXNfYXZhaWxhYmxlIC09IGdhc191c2VkCgogICAgICAgIHJlY2VpcHQ6IFVuaW9uW0J5dGVzLCBSZWNlaXB0XSA9IFJlY2VpcHQoCiAgICAgICAgICAgIHN1Y2NlZWRlZD1ub3QgaGFzX2VycmVkLAogICAgICAgICAgICBjdW11bGF0aXZlX2dhc191c2VkPShibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlKSwKICAgICAgICAgICAgYmxvb209bG9nc19ibG9vbShsb2dzKSwKICAgICAgICAgICAgbG9ncz1sb2dzLAogICAgICAgICkKCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgQWNjZXNzTGlzdFRyYW5zYWN0aW9uKToKICAgICAgICAgICAgcmVjZWlwdCA9IGIiXHgwMSIgKyBybHAuZW5jb2RlKHJlY2VpcHQpCiAgICAgICAgaWYgaXNpbnN0YW5jZSh0eCwgRmVlTWFya2V0VHJhbnNhY3Rpb24pOgogICAgICAgICAgICByZWNlaXB0ID0gYiJceDAyIiArIHJscC5lbmNvZGUocmVjZWlwdCkKCiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHJlY2VpcHRzX3RyaWUsCiAgICAgICAgICAgIHJscC5lbmNvZGUoVWludChpKSksCiAgICAgICAgICAgIHJlY2VpcHQsCiAgICAgICAgKQoKICAgICAgICBibG9ja19sb2dzICs9IGxvZ3MKCiAgICCUhZSBlH2UKGgFaAZoIGpNJwAAaCFoA2gdaERoH0sAdWJqCxYAACmBlH2UKGgFaAZoB12UaD+MOHBheV9yZXdhcmRzKHN0YXRlLCBibG9ja19udW1iZXIsIGNvaW5iYXNlLCBvbW1lcnMpCgogICAglIWUgZR9lChoBWgGaCBqpycAAGghaANoHWhEaB9LAHViYWgO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bG9jaykKCiAgICBpZiBsZW4ob21tZXJzKSA9PSAwOgogICAgICAgICMgTm90aGluZyB0byB2YWxpZGF0ZQogICAgICAgIHJldHVybgoKICAgICMgQ2hlY2sgdGhhdCBlYWNoIG9tbWVyIHNhdGlzZmllcyB0aGUgY29uc3RyYWludHMgb2YgYSBoZWFkZXIKICAgIGZvciBvbW1lciBpbiBvbW1lcnM6CiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXIubnVtYmVyIDwgYmxvY2tfaGVhZGVyLm51bWJlciwgSW52YWxpZEJsb2NrKQogICAgICAgIG9tbWVyX3BhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbCiAgICAgICAgICAgIC0oYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcikgLSAxCiAgICAgICAgXS5oZWFkZXIKICAgICAgICB2YWxpZGF0ZV9oZWFkZXIob21tZXIsIG9tbWVyX3BhcmVudF9oZWFkZXIpCgogICAgIyBDaGVjayB0aGF0IHRoZXJlIGNhbiBiZSBvbmx5IGF0IG1vc3QgMiBvbW1lcnMgZm9yIGEgYmxvY2suCiAgICBlbnN1cmUobGVuKG9tbWVycykgPD0gMiwgSW52YWxpZEJsb2NrKQoKICAgIG9tbWVyc19oYXNoZXMgPSBbcmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gb21tZXJzXQogICAgIyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzIGluIHRoZSBvbW1lcnMgb2YgY3VycmVudCBibG9jawogICAgZW5zdXJlKGxlbihvbW1lcnNfaGFzaGVzKSA9PSBsZW4oc2V0KG9tbWVyc19oYXNoZXMpKSwgSW52YWxpZEJsb2NrKQoKICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0oTUFYX09NTUVSX0RFUFRIICsgMSkgOl0KICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzID0gewogICAgICAgIHJscC5ybHBfaGFzaChibG9jay5oZWFkZXIpIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcwogICAgfQogICAgcmVjZW50X29tbWVyc19oYXNoZXM6IFNldFtIYXNoMzJdID0gc2V0KCkKICAgIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrczoKICAgICAgICByZWNlbnRfb21tZXJzX2hhc2hlcyA9IHJlY2VudF9vbW1lcnNfaGFzaGVzLnVuaW9uKAogICAgICAgICAgICB7cmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gYmxvY2sub21tZXJzfQogICAgICAgICkKCiAgICBmb3Igb21tZXJfaW5kZXgsIG9tbWVyIGluIGVudW1lcmF0ZShvbW1lcnMpOgogICAgICAgIG9tbWVyX2hhc2ggPSBvbW1lcnNfaGFzaGVzW29tbWVyX2luZGV4XQogICAgICAgICMgVGhlIGN1cnJlbnQgYmxvY2sgc2hvdWxkbid0IGJlIHRoZSBvbW1lcgogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoICE9IGJsb2NrX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSByZWNlbnQgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHVuY2xlcyBtZW50aW9uZWQgaW4gdGhlIHJlY2VudAogICAgICAgICMgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfb21tZXJzX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suIEZvciBleGFtcGxlLCBhbiBhZ2Ugb2YKICAgICAgICAjIDEgaW5kaWNhdGVzIHRoYXQgdGhlIG9tbWVyIGlzIGEgc2libGluZyBvZiBwcmV2aW91cyBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyCiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXJfYWdlIDw9IE1BWF9PTU1FUl9ERVBUSCwgSW52YWxpZEJsb2NrKQoKICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgIG9tbWVyLnBhcmVudF9oYXNoIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2sKICAgICAgICApCiAgICAgICAgZW5zdXJlKG9tbWVyLnBhcmVudF9oYXNoICE9IGJsb2NrX2hlYWRlci5wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQqUaAddlGg/WAEJAABkZWYgdmFsaWRhdGVfb21tZXJzKAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sIGJsb2NrX2hlYWRlcjogSGVhZGVyLCBjaGFpbjogQmxvY2tDaGFpbgopIC0+IE5vbmU6CiAgICBibG9ja19oYXNoID0gcmxwLnJscF9oYXNoKGJsb2NrX2hlYWRlcikKCiAgICBlbnN1cmUocmxwLnJscF9oYXNoKG9tbWVycykgPT0gYmxvY2tfaGVhZGVyLm9tbWVyc19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgaWYgbGVuKG9tbWVycykgPT0gMDoKICAgICAgICAjIE5vdGhpbmcgdG8gdmFsaWRhdGUKICAgICAgICByZXR1cm4KCiAgICAjIENoZWNrIHRoYXQgZWFjaCBvbW1lciBzYXRpc2ZpZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgaGVhZGVyCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyLm51bWJlciA8IGJsb2NrX2hlYWRlci5udW1iZXIsIEludmFsaWRCbG9jaykKICAgICAgICBvbW1lcl9wYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWwogICAgICAgICAgICAtKGJsb2NrX2hlYWRlci5udW1iZXIgLSBvbW1lci5udW1iZXIpIC0gMQogICAgICAgIF0uaGVhZGVyCiAgICAgICAgdmFsaWRhdGVfaGVhZGVyKG9tbWVyLCBvbW1lcl9wYXJlbnRfaGVhZGVyKQoKICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBjYW4gYmUgb25seSBhdCBtb3N0IDIgb21tZXJzIGZvciBhIGJsb2NrLgogICAgZW5zdXJlKGxlbihvbW1lcnMpIDw9IDIsIEludmFsaWRCbG9jaykKCiAgICBvbW1lcnNfaGFzaGVzID0gW3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIG9tbWVyc10KICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gZHVwbGljYXRlcyBpbiB0aGUgb21tZXJzIG9mIGN1cnJlbnQgYmxvY2sKICAgIGVuc3VyZShsZW4ob21tZXJzX2hhc2hlcykgPT0gbGVuKHNldChvbW1lcnNfaGFzaGVzKSksIEludmFsaWRCbG9jaykKCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stKE1BWF9PTU1FUl9ERVBUSCArIDEpIDpdCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcyA9IHsKICAgICAgICBybHAucmxwX2hhc2goYmxvY2suaGVhZGVyKSBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3MKICAgIH0KICAgIHJlY2VudF9vbW1lcnNfaGFzaGVzOiBTZXRbSGFzaDMyXSA9IHNldCgpCiAgICBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3M6CiAgICAgICAgcmVjZW50X29tbWVyc19oYXNoZXMgPSByZWNlbnRfb21tZXJzX2hhc2hlcy51bmlvbigKICAgICAgICAgICAge3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIGJsb2NrLm9tbWVyc30KICAgICAgICApCgogICAgZm9yIG9tbWVyX2luZGV4LCBvbW1lciBpbiBlbnVtZXJhdGUob21tZXJzKToKICAgICAgICBvbW1lcl9oYXNoID0gb21tZXJzX2hhc2hlc1tvbW1lcl9pbmRleF0KICAgICAgICAjIFRoZSBjdXJyZW50IGJsb2NrIHNob3VsZG4ndCBiZSB0aGUgb21tZXIKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCAhPSBibG9ja19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgc2hvdWxkbid0IGJlIG9uZSBvZiB0aGUgcmVjZW50IGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSB1bmNsZXMgbWVudGlvbmVkIGluIHRoZSByZWNlbnQKICAgICAgICAjIGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X29tbWVyc19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLiBGb3IgZXhhbXBsZSwgYW4gYWdlIG9mCiAgICAgICAgIyAxIGluZGljYXRlcyB0aGF0IHRoZSBvbW1lciBpcyBhIHNpYmxpbmcgb2YgcHJldmlvdXMgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyX2FnZSA8PSBNQVhfT01NRVJfREVQVEgsIEludmFsaWRCbG9jaykKCiAgICAgICAgZW5zdXJlKAogICAgICAgICAgICBvbW1lci5wYXJlbnRfaGFzaCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrCiAgICAgICAgKQogICAgICAgIGVuc3VyZShvbW1lci5wYXJlbnRfaGFzaCAhPSBibG9ja19oZWFkZXIucGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKlIWUgZR9lChoBWgGaCBqRykAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlv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aBddlGgZXZSMBm1vZHVsZZRqUBEAAIwFY2xhc3OUaAaMCGZ1bGxuYW1llGqLKQAAdWgcaioRAABoHWgeaB9N6wFoIGqCKQAAdWJqVBEAACmBlH2UKGgFaAZoB12UKGhpKYGUfZQoaAWMPFBheSByZXdhcmRzIHRvIHRoZSBibG9jayBtaW5lciBhcyB3ZWxsIGFzIHRoZSBvbW1lcnMgbWluZXJzLpRoB12UaD+MPFBheSByZXdhcmRzIHRvIHRoZSBibG9jayBtaW5lciBhcyB3ZWxsIGFzIHRoZSBvbW1lcnMgbWluZXJzLpSFlIGUfZQoaAVoBmggahEqAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9N7gFoIGoOKgAAdWJoaSmBlH2UKGgFWI8CAABUaGUgbWluZXIgb2YgdGhlIGNhbm9uaWNhbCBibG9jayBpcyByZXdhcmRlZCB3aXRoIHRoZSBwcmVkZXRlcm1pbmVkCmJsb2NrIHJld2FyZCwgYGBCTE9DS19SRVdBUkRgYCwgcGx1cyBhIHZhcmlhYmxlIGF3YXJkIGJhc2VkIG9mZiBvZiB0aGUKbnVtYmVyIG9mIG9tbWVyIGJsb2NrcyB0aGF0IHdlcmUgbWluZWQgYXJvdW5kIHRoZSBzYW1lIHRpbWUsIGFuZCBpbmNsdWRlZAppbiB0aGUgY2Fub25pY2FsIGJsb2NrJ3MgaGVhZGVyLiBBbiBvbW1lciBibG9jayBpcyBhIGJsb2NrIHRoYXQgd2Fzbid0CmFkZGVkIHRvIHRoZSBjYW5vbmljYWwgYmxvY2tjaGFpbiBiZWNhdXNlIGl0IHdhc24ndCB2YWxpZGF0ZWQgYXMgZmFzdCBhcwp0aGUgYWNjZXB0ZWQgYmxvY2sgYnV0IHdhcyBtaW5lZCBhdCB0aGUgc2FtZSB0aW1lLiBBbHRob3VnaCBub3QgYWxsIGJsb2Nrcwp0aGF0IGFyZSBtaW5lZCBhcmUgYWRkZWQgdG8gdGhlIGNhbm9uaWNhbCBjaGFpbiwgbWluZXJzIGFyZSBzdGlsbCBwYWlkIGEKcmV3YXJkIGZvciB0aGVpciBlZmZvcnRzLiBUaGlzIHJld2FyZCBpcyBjYWxsZWQgYW4gb21tZXIgcmV3YXJkIGFuZCBpcwpjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBvbW1lciBibG9jayB0aGF0IHRoZXkKbWluZWQulGgHXZQoaD+MUlRoZSBtaW5lciBvZiB0aGUgY2Fub25pY2FsIGJsb2NrIGlzIHJld2FyZGVkIHdpdGggdGhlIHByZWRldGVybWluZWQKYmxvY2sgcmV3YXJkLCCUhZSBlH2UKGgFaAZoIGofKgAAaCFoA2gdaERoH0sAdWJqIAYAACmBlH2UKGgFjBBgYEJMT0NLX1JFV0FSRGBglGgHXZRoP4wMQkxPQ0tfUkVXQVJElIWUgZR9lChoBWgGaCBqJyoAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqHwYAAGgdTmgfTmggah8qAAB1Ymg/WDMCAAAsIHBsdXMgYSB2YXJpYWJsZSBhd2FyZCBiYXNlZCBvZmYgb2YgdGhlCm51bWJlciBvZiBvbW1lciBibG9ja3MgdGhhdCB3ZXJlIG1pbmVkIGFyb3VuZCB0aGUgc2FtZSB0aW1lLCBhbmQgaW5jbHVkZWQKaW4gdGhlIGNhbm9uaWNhbCBibG9ja+KAmXMgaGVhZGVyLiBBbiBvbW1lciBibG9jayBpcyBhIGJsb2NrIHRoYXQgd2FzbuKAmXQKYWRkZWQgdG8gdGhlIGNhbm9uaWNhbCBibG9ja2NoYWluIGJlY2F1c2UgaXQgd2FzbuKAmXQgdmFsaWRhdGVkIGFzIGZhc3QgYXMKdGhlIGFjY2VwdGVkIGJsb2NrIGJ1dCB3YXMgbWluZWQgYXQgdGhlIHNhbWUgdGltZS4gQWx0aG91Z2ggbm90IGFsbCBibG9ja3MKdGhhdCBhcmUgbWluZWQgYXJlIGFkZGVkIHRvIHRoZSBjYW5vbmljYWwgY2hhaW4sIG1pbmVycyBhcmUgc3RpbGwgcGFpZCBhCnJld2FyZCBmb3IgdGhlaXIgZWZmb3J0cy4gVGhpcyByZXdhcmQgaXMgY2FsbGVkIGFuIG9tbWVyIHJld2FyZCBhbmQgaXMKY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgb21tZXIgYmxvY2sg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ciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLgogICAgICAgIG9tbWVyX2FnZSA9IFUyNTYoYmxvY2tfbnVtYmVyIC0gb21tZXIubnVtYmVyKQogICAgICAgIG9tbWVyX21pbmVyX3Jld2FyZCA9ICgoOCAtIG9tbWVyX2FnZSkgKiBCTE9DS19SRVdBUkQpIC8vIDgKICAgICAgICBjcmVhdGVfZXRoZXIoc3RhdGUsIG9tbWVyLmNvaW5iYXNlLCBvbW1lcl9taW5lcl9yZXdhcmQpCpRoB12UaD9Y/gEAAGRlZiBwYXlfcmV3YXJkcygKICAgIHN0YXRlOiBTdGF0ZSwKICAgIGJsb2NrX251bWJlcjogVWludCwKICAgIGNvaW5iYXNlOiBBZGRyZXNzLAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sCikgLT4gTm9uZToKICAgIG1pbmVyX3Jld2FyZCA9IEJMT0NLX1JFV0FSRCArIChsZW4ob21tZXJzKSAqIChCTE9DS19SRVdBUkQgLy8gMzIpKQogICAgY3JlYXRlX2V0aGVyKHN0YXRlLCBjb2luYmFzZSwgbWluZXJfcmV3YXJkKQoKICAgIGZvciBvbW1lciBpbiBvbW1lcnM6CiAgICAgICAgIyBPbW1lciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLgogICAgICAgIG9tbWVyX2FnZSA9IFUyNTYoYmxvY2tfbnVtYmVyIC0gb21tZXIubnVtYmVyKQogICAgICAgIG9tbWVyX21pbmVyX3Jld2FyZCA9ICgoOCAtIG9tbWVyX2FnZSkgKiBCTE9DS19SRVdBUkQpIC8vIDgKICAgICAgICBjcmVhdGVfZXRoZXIoc3RhdGUsIG9tbWVyLmNvaW5iYXNlLCBvbW1lcl9taW5lcl9yZXdhcmQpCpSFlIGUfZQoaAVoBmggaiIrAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFMvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9ncmF5X2dsYWNpZXIvc3BlYy5w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bnRyYWN0cywKZGVwbG95aW5nIGNvZGUsIGFuZCBpbmNyZW1lbnRpbmcgbm9uY2VzIGFyZSBhbGwgZXhhbXBsZXMgb2YgYWN0aW9ucyB0aGF0CmhhcHBlbiB3aXRoaW4gdGhpcyBmdW5jdGlvbiBvciBmcm9tIGEgY2FsbCBtYWRlIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLpRoB12UaD9YXQEAAFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBhY3Rpb25zIG5lZWRlZCB0byBleGVjdXRlIGEgdHJhbnNhY3Rpb24uCkl0IGRlY3JlbWVudHMgdGhlIHNlbmRlcuKAmXMgYWNjb3VudCBhZnRlciBjYWxjdWxhdGluZyB0aGUgZ2FzIGZlZSBhbmQKcmVmdW5kcyB0aGVtIHRoZSBwcm9wZXIgYW1vdW50IGFmdGVyIGV4ZWN1dGlvbi4gQ2FsbGluZyBjb250cmFjdHMsCmRlcGxveWluZyBjb2RlLCBhbmQgaW5jcmVtZW50aW5nIG5vbmNlcyBhcmUgYWxsIGV4YW1wbGVzIG9mIGFjdGlvbnMgdGhhdApoYXBwZW4gd2l0aGluIHRoaXMgZnVuY3Rpb24gb3IgZnJvbSBhIGNhbGwgbWFkZSB3aXRoaW4gdGhpcyBmdW5jdGlvbi6UhZSBlH2UKGgFaAZoIGrKKwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTRACaCBquSsAAHViaGkpgZR9lChoBYxSQWNjb3VudHMgdGhhdCBhcmUgbWFya2VkIGZvciBkZWxldGlvbiBhcmUgcHJvY2Vzc2VkIGFuZCBkZXN0cm95ZWQgYWZ0ZXIKZXhlY3V0aW9uLpRoB12UaD+MUkFjY291bnRzIHRoYXQgYXJlIG1hcmtlZCBmb3IgZGVsZXRpb24gYXJlIHByb2Nlc3NlZCBhbmQgZGVzdHJveWVkIGFmdGVyCmV4ZWN1dGlvbi6UhZSBlH2UKGgFaAZoIGrYKwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTRYCaCBquSsAAHViatsXAAApgZR9lChoBWgGaAddlChq4BcAACmBlH2UKGgFaAZoB12U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KyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBlZmZlY3RpdmVfZ2FzX2ZlZSA9IHR4LmdhcyAqIGVudi5nYXNfcHJpY2UKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCgogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSA9IHNlbmRlcl9hY2NvdW50LmJhbGFuY2UgLSBlZmZlY3RpdmVfZ2FzX2ZlZQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSkKCiAgICBwcmVhY2Nlc3NlZF9hZGRyZXNzZXMgPSBzZXQoKQogICAgcHJlYWNjZXNzZWRfc3RvcmFnZV9rZXlzID0gc2V0KCkKICAgIGlmIGlzaW5zdGFuY2UodHgsIChBY2Nlc3NMaXN0VHJhbnNhY3Rpb24sIEZlZU1hcmtldFRyYW5zYWN0aW9uKSk6CiAgICAgICAgZm9yIChhZGRyZXNzLCBrZXlzKSBpbiB0eC5hY2Nlc3NfbGlzdDoKICAgICAgICAgICAgcHJlYWNjZXNzZWRfYWRkcmVzc2VzLmFkZChhZGRyZXNzKQogICAgICAgICAgICBmb3Iga2V5IGluIGtleXM6CiAgICAgICAgICAgICAgICBwcmVhY2Nlc3NlZF9zdG9yYWdlX2tleXMuYWRkKChhZGRyZXNzLCBrZXkpKQoKICAgIG1lc3NhZ2UgPSBwcmVwYXJlX21lc3NhZ2UoCiAgICAgICAgc2VuZGVyLAogICAgICAgIHR4LnRvLAogICAgICAgIHR4LnZhbHVlLAogICAgICAgIHR4LmRhdGEsCiAgICAgICAgZ2FzLAogICAgICAgIGVudiwKICAgICAgICBwcmVhY2Nlc3NlZF9hZGRyZXNzZXM9ZnJvemVuc2V0KHByZWFjY2Vzc2VkX2FkZHJlc3NlcyksCiAgICAgICAgcHJlYWNjZXNzZWRfc3RvcmFnZV9rZXlzPWZyb3plbnNldChwcmVhY2Nlc3NlZF9zdG9yYWdlX2tleXMpLAogICAgKQoKICAgIG91dHB1dCA9IHByb2Nlc3NfbWVzc2FnZV9jYWxsKG1lc3NhZ2UsIGVudikKCiAgICBnYXNfdXNlZCA9IHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdAogICAgZ2FzX3JlZnVuZCA9IG1pbihnYXNfdXNlZCAvLyA1LCBvdXRwdXQucmVmdW5kX2NvdW50ZXIpCiAgICBnYXNfcmVmdW5kX2Ftb3VudCA9IChvdXRwdXQuZ2FzX2xlZnQgKyBnYXNfcmVmdW5kKSAqIGVudi5nYXNfcHJpY2UKCiAgICAjIEZvciBub24tMTU1OSB0cmFuc2FjdGlvbnMgZW52Lmdhc19wcmljZSA9PSB0eC5nYXNfcHJpY2UKICAgIHByaW9yaXR5X2ZlZV9wZXJfZ2FzID0gZW52Lmdhc19wcmljZSAtIGVudi5iYXNlX2ZlZV9wZXJfZ2FzCiAgICB0cmFuc2FjdGlvbl9mZWUgPSAoCiAgICAgICAgdHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0IC0gZ2FzX3JlZnVuZAogICAgKSAqIHByaW9yaXR5X2ZlZV9wZXJfZ2FzCgogICAgdG90YWxfZ2FzX3VzZWQgPSBnYXNfdXNlZCAtIGdhc19yZWZ1bmQKCiAgICAjIHJlZnVuZCBnYXMKICAgIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIHNlbmRlcikuYmFsYW5jZSArIGdhc19yZWZ1bmRfYW1vdW50CiAgICApCiAgICBzZXRfYWNjb3VudF9iYWxhbmNlKGVudi5zdGF0ZSwgc2VuZGVyLCBzZW5kZXJfYmFsYW5jZV9hZnRlcl9yZWZ1bmQpCgogICAgIyB0cmFuc2ZlciBtaW5lciBmZWVzCiAgICBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUgPSAoCiAgICAgICAgZ2V0X2FjY291bnQoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpLmJhbGFuY2UgKyB0cmFuc2FjdGlvbl9mZWUKICAgICkKICAgIGlmIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSAhPSAwOgogICAgICAgIHNldF9hY2NvdW50X2JhbGFuY2UoCiAgICAgICAgICAgIGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlLCBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUKICAgICAgICApCiAgICBlbGlmIGFjY291bnRfZXhpc3RzX2FuZF9pc19lbXB0eShlbnYuc3RhdGUsIGVudi5jb2luYmFzZSk6CiAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKQoKICAgIGZvciBhZGRyZXNzIGluIG91dHB1dC5hY2NvdW50c190b19kZWxldGU6CiAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgYWRkcmVzcykKCiAgICBmb3IgYWRkcmVzcyBpbiBvdXRwdXQudG91Y2hlZF9hY2NvdW50czoKICAgICAgICBpZiBhY2NvdW50X2V4aXN0c19hbmRfaXNfZW1wdHkoZW52LnN0YXRlLCBhZGRyZXNzKToKICAgICAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgYWRkcmVzcykKCiAgICByZXR1cm4gdG90YWxfZ2FzX3VzZWQsIG91dHB1dC5sb2dzLCBvdXRwdXQuaGFzX2VycmVkCpRoB12UaD9YJQsAAGRlZiBwcm9jZXNzX3RyYW5zYWN0aW9uKAogICAgZW52OiB2bS5FbnZpcm9ubWVudCwgdHg6IFRyYW5zYWN0aW9uCikgLT4gVHVwbGVbVTI1NiwgVHVwbGVbTG9nLCAuLi5dLCBib29sXToKICAgIGVuc3VyZSh2YWxpZGF0ZV90cmFuc2FjdGlvbih0eCksIEludmFsaWRCbG9jaykKCiAgICBzZW5kZXIgPSBlbnYub3JpZ2luCiAgICBzZW5kZXJfYWNjb3VudCA9IGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKQoKICAgIGlmIGlzaW5zdGFuY2UodHgsIEZlZU1hcmtldFRyYW5zYWN0aW9uKToKICAgICAgICBnYXNfZmVlID0gdHguZ2FzICogdHgubWF4X2ZlZV9wZXJfZ2FzCiAgICBlbHNlOgogICAgICAgIGdhc19mZWUgPSB0eC5nYXMgKiB0eC5nYXNfcHJpY2UKCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQubm9uY2UgPT0gdHgubm9uY2UsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5iYWxhbmNlID49IGdhc19mZWUgKyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBlZmZlY3RpdmVfZ2FzX2ZlZSA9IHR4LmdhcyAqIGVudi5nYXNfcHJpY2UKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCgogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSA9IHNlbmRlcl9hY2NvdW50LmJhbGFuY2UgLSBlZmZlY3RpdmVfZ2FzX2ZlZQogICAgc2V0X2FjY291bnRfYmFsYW5jZShlbnYuc3RhdGUsIHNlbmRlciwgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSkKCiAgICBwcmVhY2Nlc3NlZF9hZGRyZXNzZXMgPSBzZXQoKQogICAgcHJlYWNjZXNzZWRfc3RvcmFnZV9rZXlzID0gc2V0KCkKICAgIGlmIGlzaW5zdGFuY2UodHgsIChBY2Nlc3NMaXN0VHJhbnNhY3Rpb24sIEZlZU1hcmtldFRyYW5zYWN0aW9uKSk6CiAgICAgICAgZm9yIChhZGRyZXNzLCBrZXlzKSBpbiB0eC5hY2Nlc3NfbGlzdDoKICAgICAgICAgICAgcHJlYWNjZXNzZWRfYWRkcmVzc2VzLmFkZChhZGRyZXNzKQogICAgICAgICAgICBmb3Iga2V5IGluIGtleXM6CiAgICAgICAgICAgICAgICBwcmVhY2Nlc3NlZF9zdG9yYWdlX2tleXMuYWRkKChhZGRyZXNzLCBrZXkpKQoKICAgIG1lc3NhZ2UgPSBwcmVwYXJlX21lc3NhZ2UoCiAgICAgICAgc2VuZGVyLAogICAgICAgIHR4LnRvLAogICAgICAgIHR4LnZhbHVlLAogICAgICAgIHR4LmRhdGEsCiAgICAgICAgZ2FzLAogICAgICAgIGVudiwKICAgICAgICBwcmVhY2Nlc3NlZF9hZGRyZXNzZXM9ZnJvemVuc2V0KHByZWFjY2Vzc2VkX2FkZHJlc3NlcyksCiAgICAgICAgcHJlYWNjZXNzZWRfc3RvcmFnZV9rZXlzPWZyb3plbnNldChwcmVhY2Nlc3NlZF9zdG9yYWdlX2tleXMpLAogICAgKQoKICAgIG91dHB1dCA9IHByb2Nlc3NfbWVzc2FnZV9jYWxsKG1lc3NhZ2UsIGVudikKCiAgICBnYXNfdXNlZCA9IHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdAogICAgZ2FzX3JlZnVuZCA9IG1pbihnYXNfdXNlZCAvLyA1LCBvdXRwdXQucmVmdW5kX2NvdW50ZXIpCiAgICBnYXNfcmVmdW5kX2Ftb3VudCA9IChvdXRwdXQuZ2FzX2xlZnQgKyBnYXNfcmVmdW5kKSAqIGVudi5nYXNfcHJpY2UKCiAgICAjIEZvciBub24tMTU1OSB0cmFuc2FjdGlvbnMgZW52Lmdhc19wcmljZSA9PSB0eC5nYXNfcHJpY2UKICAgIHByaW9yaXR5X2ZlZV9wZXJfZ2FzID0gZW52Lmdhc19wcmljZSAtIGVudi5iYXNlX2ZlZV9wZXJfZ2FzCiAgICB0cmFuc2FjdGlvbl9mZWUgPSAoCiAgICAgICAgdHguZ2FzIC0gb3V0cHV0Lmdhc19sZWZ0IC0gZ2FzX3JlZnVuZAogICAgKSAqIHByaW9yaXR5X2ZlZV9wZXJfZ2FzCgogICAgdG90YWxfZ2FzX3VzZWQgPSBnYXNfdXNlZCAtIGdhc19yZWZ1bmQKCiAgICAjIHJlZnVuZCBnYXMKICAgIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIHNlbmRlcikuYmFsYW5jZSArIGdhc19yZWZ1bmRfYW1vdW50CiAgICApCiAgICBzZXRfYWNjb3VudF9iYWxhbmNlKGVudi5zdGF0ZSwgc2VuZGVyLCBzZW5kZXJfYmFsYW5jZV9hZnRlcl9yZWZ1bmQpCgogICAgIyB0cmFuc2ZlciBtaW5lciBmZWVzCiAgICBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUgPSAoCiAgICAgICAgZ2V0X2FjY291bnQoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpLmJhbGFuY2UgKyB0cmFuc2FjdGlvbl9mZWUKICAgICkKICAgIGlmIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSAhPSAwOgogICAgICAgIHNldF9hY2NvdW50X2JhbGFuY2UoCiAgICAgICAgICAgIGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlLCBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUKICAgICAgICApCiAgICBlbGlmIGFjY291bnRfZXhpc3RzX2FuZF9pc19lbXB0eShlbnYuc3RhdGUsIGVudi5jb2luYmFzZSk6CiAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKQoKICAgIGZvciBhZGRyZXNzIGluIG91dHB1dC5hY2NvdW50c190b19kZWxldGU6CiAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgYWRkcmVzcykKCiAgICBmb3IgYWRkcmVzcyBpbiBvdXRwdXQudG91Y2hlZF9hY2NvdW50czoKICAgICAgICBpZiBhY2NvdW50X2V4aXN0c19hbmRfaXNfZW1wdHkoZW52LnN0YXRlLCBhZGRyZXNzKToKICAgICAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgYWRkcmVzcykKCiAgICByZXR1cm4gdG90YWxfZ2FzX3VzZWQsIG91dHB1dC5sb2dzLCBvdXRwdXQuaGFzX2VycmVkCpSFlIGUfZQoaAVoBmggahstAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFMvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9ncmF5X2dsYWNpZXIvc3BlYy5weZSMCXhtbDpzcGFj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AmggapktAAB1YmhpKYGUfZQoaAVYoQEAAEFkZGl0aW9uYWxseSwgdGhlIG5vbmNlIG9mIGEgdHJhbnNhY3Rpb24gbXVzdCBub3QgZXF1YWwgb3IgZXhjZWVkIHRoZQpsaW1pdCBkZWZpbmVkIGluIGBFSVAtMjY4MSA8aHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxPmBfLgpJbiBwcmFjdGljZSwgZGVmaW5pbmcgdGhlIGxpbWl0IGFzIGBgMioqNjQtMWBgIGhhcyBubyBpbXBhY3QgYmVjYXVzZQpzZW5kaW5nIGBgMioqNjQtMWBgIHRyYW5zYWN0aW9ucyBpcyBpbXByb2JhYmxlLiBJdCdzIG5vdCBzdHJpY3RseQppbXBvc3NpYmxlIHRob3VnaCwgYGAyKio2NC0xYGAgdHJhbnNhY3Rpb25zIGlzIHRoZSBlbnRpcmUgY2FwYWNpdHkgb2YgdGhlCkV0aGVyZXVtIGJsb2NrY2hhaW4gYXQgMjAyMiBnYXMgbGltaXRzIGZvciBhIGxpdHRsZSBvdmVyIDIyIHllYXJzLpRoB12UKGg/jFdBZGRpdGlvbmFsbHksIHRoZSBub25jZSBvZiBhIHRyYW5zYWN0aW9uIG11c3Qgbm90IGVxdWFsIG9yIGV4Y2VlZCB0aGUKbGltaXQgZGVmaW5lZCBpbiCUhZSBlH2UKGgFaAZoIGq4LQAAaCFoA2gdaERoH0sAdWJobimBlH2UKGgFjDVgRUlQLTI2ODEgPGh0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtMjY4MT5gX5RoB12UaD+MCEVJUC0yNjgxlIWUgZR9lChoBWgGaCBqwC0AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBG5hbWWUjAhFSVAtMjY4MZSMBnJlZnVyaZSMJ2h0dHBzOi8vZWlwcy5ldGhlcmV1bS5vcmcvRUlQUy9laXAtMjY4MZR1aBxobWgdTmgfTmggargtAAB1YmgKKYGUfZQoaAWMKiA8aHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxPpRoB12UaA59lChoEF2UjAhlaXAtMjY4MZRhaBNdlGgVXZSMCGVpcC0yNjgx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aXMgc3RhcnRlZC6UhZSBlH2UKGgFaAZoIGptLwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTU0CaCBqai8AAHViaGkpgZR9lChoBVgRAgAAVGhlIGludHJpbnNpYyBjb3N0IG9mIHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaGFzCmJlZ3VuLiBGdW5jdGlvbnMvb3BlcmF0aW9ucyBpbiB0aGUgRVZNIGNvc3QgbW9uZXkgdG8gZXhlY3V0ZSBzbyB0aGlzCmludHJpbnNpYyBjb3N0IGlzIGZvciB0aGUgb3BlcmF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgcGFpZCBmb3IgYXMgcGFydCBvZgp0aGUgdHJhbnNhY3Rpb24uIERhdGEgdHJhbnNmZXIsIGZvciBleGFtcGxlLCBpcyBwYXJ0IG9mIHRoaXMgaW50cmluc2ljCmNvc3QuIEl0IGNvc3RzIGV0aGVyIHRvIHNlbmQgZGF0YSBvdmVyIHRoZSB3aXJlIGFuZCB0aGF0IGV0aGVyIGlzCmFjY291bnRlZCBmb3IgaW4gdGhlIGludHJpbnNpYyBjb3N0IGNhbGN1bGF0ZWQgaW4gdGhpcyBmdW5jdGlvbi4gVGhpcwppbnRyaW5zaWMgY29zdCBtdXN0IGJlIGNhbGN1bGF0ZWQgYW5kIHBhaWQgZm9yIGJlZm9yZSBleGVjdXRpb24gaW4gb3JkZXIKZm9yIGFsbCBvcGVyYXRpb25zIHRvIGJlIGltcGxlbWVudGVkLpRoB12UaD9YEQIAAFRoZSBpbnRyaW5zaWMgY29zdCBvZiB0aGUgdHJhbnNhY3Rpb24gaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGhhcwpiZWd1bi4gRnVuY3Rpb25zL29wZXJhdGlvbnMgaW4gdGhlIEVWTSBjb3N0IG1vbmV5IHRvIGV4ZWN1dGUgc28gdGhpcwppbnRyaW5zaWMgY29zdCBpcyBmb3IgdGhlIG9wZXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIHBhaWQgZm9yIGFzIHBhcnQgb2YKdGhlIHRyYW5zYWN0aW9uLiBEYXRhIHRyYW5zZmVyLCBmb3IgZXhh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bnN0YW5jZSh0eCwgKEFjY2Vzc0xpc3RUcmFuc2FjdGlvbiwgRmVlTWFya2V0VHJhbnNhY3Rpb24pKToKICAgICAgICBmb3IgKF9hZGRyZXNzLCBrZXlzKSBpbiB0eC5hY2Nlc3NfbGlzdDoKICAgICAgICAgICAgYWNjZXNzX2xpc3RfY29zdCArPSBUWF9BQ0NFU1NfTElTVF9BRERSRVNTX0NPU1QKICAgICAgICAgICAgYWNjZXNzX2xpc3RfY29zdCArPSBsZW4oa2V5cykgKiBUWF9BQ0NFU1NfTElTVF9TVE9SQUdFX0tFWV9DT1NUCgogICAgcmV0dXJuIFVpbnQoVFhfQkFTRV9DT1NUICsgZGF0YV9jb3N0ICsgY3JlYXRlX2Nvc3QgKyBhY2Nlc3NfbGlzdF9jb3N0KQqUaAddlGg/WLICAABkZWYgY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4OiBUcmFuc2FjdGlvbikgLT4gVWludDoKICAgIGRhdGFfY29zdCA9IDAKCiAgICBmb3IgYnl0ZSBpbiB0eC5kYXRhOgogICAgICAgIGlmIGJ5dGUgPT0gMDoKICAgICAgICAgICAgZGF0YV9jb3N0ICs9IFRYX0RBVEFfQ09TVF9QRVJfWkVSTwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRhdGFfY29zdCArPSBUWF9EQVRBX0NPU1RfUEVSX05PTl9aRVJPCgogICAgaWYgdHgudG8gPT0gQnl0ZXMwKGIiIik6CiAgICAgICAgY3JlYXRlX2Nvc3QgPSBUWF9DUkVBVEVfQ09TVAogICAgZWxzZToKICAgICAgICBjcmVhdGVfY29zdCA9IDAKCiAgICBhY2Nlc3NfbGlzdF9jb3N0ID0gMAogICAgaWYgaXNpbnN0YW5jZSh0eCwgKEFjY2Vzc0xpc3RUcmFuc2FjdGlvbiwgRmVlTWFya2V0VHJhbnNhY3Rpb24pKToKICAgICAgICBmb3IgKF9hZGRyZXNzLCBrZXlzKSBpbiB0eC5hY2Nlc3NfbGlzdDoKICAgICAgICAgICAgYWNjZXNzX2xpc3RfY29zdCArPSBUWF9BQ0NFU1NfTElTVF9BRERSRVNTX0NPU1QKICAgICAgICAgICAgYWNjZXNzX2xpc3RfY29zdCAr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Y292ZXIociwgcywgdiwgc2lnbmluZ19oYXNoXzI5MzAodHgpKQogICAgZWxpZiBpc2luc3RhbmNlKHR4LCBGZWVNYXJrZXRUcmFuc2FjdGlvbik6CiAgICAgICAgcHVibGljX2tleSA9IHNlY3AyNTZrMV9yZWNvdmVyKHIsIHMsIHYsIHNpZ25pbmdfaGFzaF8xNTU5KHR4KSkKCiAgICByZXR1cm4gQWRkcmVzcyhrZWNjYWsyNTYocHVibGljX2tleSlbMTI6MzJdKQqUaAddlGg/WKIDAABkZWYgcmVjb3Zlcl9zZW5kZXIoY2hhaW5faWQ6IFVpbnQ2NCwgdHg6IFRyYW5zYWN0aW9uKSAtPiBBZGRyZXNzOgogICAgdiwgciwgcyA9IHR4LnYsIHR4LnIsIHR4LnMKCiAgICBlbnN1cmUoMCA8IHIgYW5kIHIgPCBTRUNQMjU2SzFOLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoMCA8IHMgYW5kIHMgPD0gU0VDUDI1NksxTiAvLyAyLCBJbnZhbGlkQmxvY2spCgogICAgaWYgaXNpbnN0YW5jZSh0eCwgTGVnYWN5VHJhbnNhY3Rpb24pOgogICAgICAgIGlmIHYgPT0gMjcgb3IgdiA9PSAyODoKICAgICAgICAgICAgcHVibGljX2tleSA9IHNlY3AyNTZrMV9yZWNvdmVyKAogICAgICAgICAgICAgICAgciwgcywgdiAtIDI3LCBzaWduaW5nX2hhc2hfcHJlMTU1KHR4KQogICAgICAgICAgICApCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW5zdXJlKAogICAgICAgICAgICAgICAgdiA9PSAzNSArIGNoYWluX2lkICogMiBvciB2ID09IDM2ICsgY2hhaW5faWQgKiAyLCBJbnZhbGlkQmxvY2sKICAgICAgICAgICAgKQogICAgICAgICAgICBwdWJsaWNfa2V5ID0gc2VjcDI1NmsxX3JlY292ZXIoCiAgICAgICAgICAgICAgICByLCBzLCB2IC0gMzUgLSBjaGFpbl9pZCAqIDIsIHNpZ25pbmdfaGFzaF8xNTUodHgpCiAgICAgICAgICAgICkKICAgIGVsaWYgaXNpbnN0YW5jZSh0eCwgQWNjZXNzTGlzdFRyYW5z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aW6Uar8yAACMB29ianR5cGWUapwzAACMCGRlc2N0eXBllGqcMwAAjAdub2luZGV4lIl1aBxqJREAAGgdTmgfTmggamYyAAB1YmpqEQAAKYGUfZQoaAVYKgEAAGRlZiBzaWduaW5nX2hhc2hfcHJlMTU1KHR4OiBMZWdhY3lUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICApCiAgICAgICAgKQogICAgKQqUaAddlGg/WCoBAABkZWYgc2lnbmluZ19oYXNoX3ByZTE1NSh0eDogTGVnYWN5VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlIWUgZR9lChoBWgGaCBqpDMAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2dyYXlfZ2xhY2llci9zcGVjLnB5lIwJeG1sOnNwYWNllGqqBQAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSM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MzJglGgHXZRoP4wZZXRoZXJldW0uZXRoX3R5cGVzLkhhc2gzMpSFlIGUfZQoaAVoBmggask0AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaggHAABoHU5oH05oIGrFNAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqwjQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq9BcAAGgdTmgfTmggarE0AAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcat8XAABoHU5oH05oIGozNAAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGraFwAAaB1OaB9OaCBqIjQAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqUxEAAGgdaB5oH05oIGreMwAAdWJlaA59lChoEF2UaBNdlChqGzQAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGobNAAAjAdvYmp0eXBllGr4NAAAjAhkZXNjdHlwZZRq+DQAAIwHbm9pbmRleJSJdWgcaiURAABoHU5oH05oIGrCMwAAdWJqahEAACmBlH2UKGgFWHIBAABkZWYgc2lnbmluZ19oYXNoXzE1NSh0eDogTGVnYWN5VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgICAgIFVpbnQoMSksCiAgICAgICAgICAgICAgICBVaW50KDApLAogICAgICAgICAgICAgICAgVWludCgwKSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlGgHXZRoP1hyAQAAZGVmIHNpZ25pbmdfaGFzaF8xNTUodHg6IExlZ2FjeVRyYW5zYWN0aW9uKSAtPiBIYXNoMzI6CiAgICByZXR1cm4ga2VjY2FrMjU2KAogICAgICAgIHJscC5lbmNvZGUoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICAgICBVaW50KDEpLAogICAgICAgICAgICAgICAgVWludCgwKSwKICAgICAgICAgICAgICAgIFVpbnQoMCksCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpSFlIGUfZQoaAVoBmggagA1AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFMvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9ncmF5X2dsYWNpZXIvc3BlYy5weZSMCXhtbDpzcGFjZZRqqgUAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGqBEQAASwFzjAdsaW5lbm9zlIl1aBxqaREAAGgdaB5oH02mAmggasIzAAB1YmVoDn2UKGgQXZRqqwQAAGFoE12UaBVdlIwQc2lnbmluZ19oYXNoXzE1NZRhaBddlGgZXZR1aBxoM2gdaB5oH02WAmggavQQAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMEXNpZ25pbmdfaGFzaF8yOTMwlGgHXZRoP4wRc2lnbmluZ19oYXNoXzI5MzCUhZSBlH2UKGgFaAZoIGohNQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfTasCaCBqHjUAAHViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJp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aBxqUxEAAGgdaB5oH05oIGo6NQAAdWJlaA59lChoEF2UaBNdlChqdzUAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGp3NQAAjAdvYmp0eXBllGpUNgAAjAhkZXNjdHlwZZRqVDYAAIwHbm9pbmRleJSJdWgcaiURAABoHU5oH05oIGoeNQAAdWJqahEAACmBlH2UKGgFWHsBAABkZWYgc2lnbmluZ19oYXNoXzI5MzAodHg6IEFjY2Vzc0xpc3RUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBiIlx4MDEiCiAgICAgICAgKyBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5jaGFpbl9pZCwKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICAgICB0eC5hY2Nlc3NfbGlzdCwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlGgHXZRoP1h7AQAAZGVmIHNpZ25pbmdfaGFzaF8yOTMwKHR4OiBBY2Nlc3NMaXN0VHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgYiJceDAxIgogICAgICAgICsgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHguY2hhaW5faWQsCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICAgICAgdHguYWNjZXNzX2xp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ICB0eC5jaGFpbl9pZCwKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHgubWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICAgICAgdHgubWF4X2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICAgICB0eC5hY2Nlc3NfbGlzdCwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlGgHXZRoP1itAQAAZGVmIHNpZ25pbmdfaGFzaF8xNTU5KHR4OiBGZWVNYXJrZXRUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBiIlx4MDIiCiAgICAgICAgKyBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5jaGFpbl9pZCwKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHgubWF4X3ByaW9yaXR5X2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICAgICAgdHgubWF4X2ZlZV9wZXJfZ2FzLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICAgICB0eC5hY2Nlc3NfbGlzdCwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlIWUgZR9lChoBWgGaCBquDcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2dyYXlfZ2xhY2llci9zcGVjLnB5lIwJeG1sOnNwYWNllGqqBQAAjAVmb3Jj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avQXAABoHU5oH05oIGpWOwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGrfFwAAaB1OaB9OaCBqnjoAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq2hcAAGgdTmgfTmggahM6AAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalMRAABoHWgeaB9OaCBqtzkAAHViZWgOfZQoaBBdlGgTXZQoagw6AACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqDDoAAIwHb2JqdHlwZZRqnTsAAIwIZGVzY3R5cGWUap07AACMB25vaW5kZXiUiXVoHGolEQAAaB1OaB9OaCBqmzkAAHViamoRAAApgZR9lChoBViBAQAAZGVmIGNoZWNrX2dhc19saW1pdChnYXNfbGltaXQ6IFVpbnQsIHBhcmVudF9nYXNfbGltaXQ6IFVpbnQpIC0+IGJvb2w6CiAgICBtYXhfYWRqdXN0bWVudF9kZWx0YSA9IHBhcmVudF9nYXNfbGltaXQgLy8gR0FTX0xJTUlUX0FESlVTVE1FTlRfRkFDVE9SCiAgICBpZiBnYXNfbGltaXQgPj0gcGFyZW50X2dhc19saW1pdCArIG1heF9hZGp1c3RtZW50X2RlbHRhOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgZ2FzX2xpbWl0IDw9IHBhcmVudF9nYXNfbGltaXQgLSBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8IEdBU19MSU1JVF9NSU5JTVVNOgogICAgICAgIHJldHVybiBGYWxzZQoKICAgIHJldHVybiBUcnVlCpRoB12UaD9YgQEAAGRlZiBjaGVja19nYXNfbGltaXQoZ2FzX2xpbWl0OiBVaW50LCBwYXJlbnRfZ2FzX2xpbWl0OiBVaW50KSAtPiBib29sOgogICAgbWF4X2FkanVzdG1lbnRfZGVsdGEgPSBwYXJlbnRfZ2FzX2xpbWl0IC8vIEdBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUgogICAgaWYgZ2FzX2xpbWl0ID49IHBhcmVudF9nYXNfbGltaXQgKyBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8PSBwYXJlbnRfZ2FzX2xpbWl0IC0gbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPCBHQVNfTElNSVRfTUlOSU1VTToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICByZXR1cm4gVHJ1ZQqUhZSBlH2UKGgFaAZoIGqlOwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxTL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vZ3JheV9nbGFjaWVyL3NwZWMucHmUjAl4bWw6c3BhY2WUaqoFAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqgREAAEsBc4wHbGluZW5vc5SJdWgcamkRAABoHWgeaB9NGANoIGqbOQAAdWJlaA59lChoEF2UajMFAABhaBNdlGgVXZSMD2NoZWNrX2dhc19saW1pdJRhaBddlGgZXZR1aBxoM2gdaB5oH038AmggavQQAABoIWgDdWJoNCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMGmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5lGgHXZRoP4waY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHmUhZSBlH2UKGgFaAZoIGrGOwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfTR0DaCBqwzsAAHViaCQpgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMB2VudHJpZXOUXZR1aBxoI2gdTmgfTmggasM7AAB1YmomEQAAKYGUfZQoaAVoBmgHXZQoaisRAAApgZR9lChoBYxxY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkoYmxvY2tfbnVtYmVyLCBibG9ja190aW1lc3RhbXAsIHBhcmVudF90aW1lc3RhbXAsIHBhcmVudF9kaWZmaWN1bHR5LCBwYXJlbnRfaGFzX29tbWVycymUaAddlChqMREAACmBlH2UKGgFjBpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eZRoB12UaD+MGmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5lIWUgZR9lChoBWgGaCBq5jsAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZQoajwRAABqPREAAGo+EQAAaj8RAABlaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaqoFAAB1aBxqMBEAAGgdaB5oH05oIGriOwAAdWJqVxcAACmBlH2UKGgFjFVibG9ja19udW1iZXIsIGJsb2NrX3RpbWVzdGFtcCwgcGFyZW50X3RpbWVzdGFtcCwgcGFyZW50X2RpZmZpY3VsdHksIHBhcmVudF9oYXNfb21tZXJzlGgHXZQoal0XAAApgZR9lChoBYwMYmxvY2tfbnVtYmVylGgHXZRqCxYAACmBlH2UKGgFaAZoB12UaD+MDGJsb2NrX251bWJlcpSFlIGUfZQoaAVoBmggav07AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UamwXAABhaBVdlGgXXZRoGV2UdWgcagoWAABoHU5oH05oIGr5OwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqqBQAAdWgcalwXAABoHU5oH05oIGr1OwAAdWJqXRcAACmBlH2UKGgFjA9ibG9ja190aW1lc3RhbXCUaAddlGoLFgAAKYGUfZQoaAVoBmgHXZRoP4wPYmxvY2tfdGltZXN0YW1wlIWUgZR9lChoBWgGaCBqFTwAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqbBcAAGFoFV2UaBddlGgZXZR1aBxqChYAAGgdTmgfTmggahE8AAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUaqoFAAB1aBxqXBcAAGgdTmgfTmggavU7AAB1YmpdFwAAKYGUfZQoaAWMEHBhcmVudF90aW1lc3RhbXCUaAddlGoLFgAAKYGUfZQoaAVoBmgHXZRoP4wQcGFyZW50X3RpbWVzdGFtcJSFlIGUfZQoaAVoBmggai08AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UamwXAABhaBVdlGgXXZRoGV2UdWgcagoWAABoHU5oH05oIGopPAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqqBQAAdWgcalwXAABoHU5oH05oIGr1OwAAdWJqXRcAACmBlH2UKGgFjBFwYXJlbnRfZGlmZmljdWx0eZRoB12UagsWAAApgZR9lChoBWgGaAddlGg/jBFwYXJlbnRfZGlmZmljdWx0eZSFlIGUfZQoaAVoBmggakU8AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UamwXAABhaBVdlGgXXZRoGV2UdWgcagoWAABoHU5oH05oIGpBPAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqqBQAAdWgcalwXAABoHU5oH05oIGr1OwAAdWJqXRcAACmBlH2UKGgFjBFwYXJlbnRfaGFzX29tbWVyc5RoB12UagsWAAApgZR9lChoBWgGaAddlGg/jBFwYXJlbnRfaGFzX29tbWVyc5SFlIGUfZQoaAVoBmggal08AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UamwXAABhaBVdlGgXXZRoGV2UdWgcagoWAABoHU5oH05oIGpZPAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqqBQAAdWgcalwXAABoHU5oH05oIGr1OwAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwJeG1sOnNwYWNllGqqBQAAdWgcalYXAABoHWgeaB9OaCBq4jsAAHViZWgOfZQoaBBdlIw1ZXRoZXJldW0uZ3JheV9nbGFjaWVyLnNwZWMuY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHmUYWgTXZQoakcRAABqSBEAAIwCcHmUakoRAABqSxEAAGVoFV2UaBddlGgZXZSMBm1vZHVsZZRqUBEAAIwFY2xhc3OUaAaMCGZ1bGxuYW1llGroOwAAdWgcaioRAABoHWgeaB9NIANoIGrfOwAAdWJqVBEAACmBlH2UKGgFaAZoB12UKGhpKYGUfZQoaAWMQkNvbXB1dGVzIGRpZmZpY3VsdHkgb2YgYSBibG9jayB1c2luZyBpdHMgaGVhZGVyIGFuZCBwYXJlbnQgaGVhZGVyLpRoB12UaD+MQkNvbXB1dGVzIGRpZmZpY3VsdHkgb2YgYSBibG9jayB1c2luZyBpdHMgaGVhZGVyIGFuZCBwYXJlbnQgaGVhZGVyLpSFlIGUfZQoaAVoBmggaoY8AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NIwNoIGqDPAAAdWJoaSmBlH2UKGgFWIMCAABUaGUgZGlmZmljdWx0eSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB0aW1lIHRoZSBibG9jayB3YXMgY3JlYXRlZCBhZnRlciBpdHMKcGFyZW50LiBUaGUgYGBvZmZzZXRgYCBpcyBjYWxjdWxhdGVkIHVzaW5nIHRoZSBwYXJlbnQgYmxvY2sncyBkaWZmaWN1bHR5LApgYHBhcmVudF9kaWZmaWN1bHR5YGAsIGFuZCB0aGUgdGltZXN0YW1wIGJldHdlZW4gYmxvY2tzLiBUaGlzIG9mZnNldCBpcwp0aGVuIGFkZGVkIHRvIHRoZSBwYXJlbnQgZGlmZmljdWx0eSBhbmQgaXMgc3RvcmVkIGFzIHRoZSBgYGRpZmZpY3VsdHlgYAp2YXJpYWJsZS4gSWYgdGhlIHRpbWUgYmV0d2VlbiB0aGUgYmxvY2sgYW5kIGl0cyBwYXJlbnQgaXMgdG9vIHNob3J0LCB0aGUKb2Zmc2V0IHdpbGwgcmVzdWx0IGluIGEgcG9zaXRpdmUgbnVtYmVyIHRodXMgbWFraW5nIHRoZSBzdW0gb2YKYGBwYXJlbnRfZGlmZmljdWx0eWBgIGFuZCBgYG9mZnNldGBgIHRvIGJlIGEgZ3JlYXRlciB2YWx1ZSBpbiBvcmRlciB0bwphdm9pZCBtYXNzIGZvcmtpbmcuIEJ1dCwgaWYgdGhlIHRpbWUgaXMgbG9uZyBlbm91Z2gsIHRoZW4gdGhlIG9mZnNldApyZXN1bHRzIGluIGEgbmVnYXRpdmUgdmFsdWUgbWFraW5nIHRoZSBibG9jayBsZXNzIGRpZmZpY3VsdCB0aGFuCml0cyBwYXJlbnQulGgHXZQoaD+MVVRoZSBkaWZmaWN1bHR5IGlzIGRldGVybWluZWQgYnkgdGhlIHRpbWUgdGhlIGJsb2NrIHdhcyBjcmVh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ZXQgPSAoCiAgICAgICAgaW50KHBhcmVudF9kaWZmaWN1bHR5KQogICAgICAgIC8vIDIwNDgKICAgICAgICAqIG1heCgKICAgICAgICAgICAgKDIgaWYgcGFyZW50X2hhc19vbW1lcnMgZWxzZSAxKQogICAgICAgICAgICAtIGludChibG9ja190aW1lc3RhbXAgLSBwYXJlbnRfdGltZXN0YW1wKSAvLyA5LAogICAgICAgICAgICAtOTksCiAgICAgICAgKQogICAgKQogICAgZGlmZmljdWx0eSA9IGludChwYXJlbnRfZGlmZmljdWx0eSkgKyBvZmZzZXQKICAgICMgSGlzdG9yaWNhbCBOb3RlOiBUaGUgZGlmZmljdWx0eSBib21iIHdhcyBub3QgcHJlc2VudCBpbiBFdGhlcmV1bSBhdCB0aGUKICAgICMgc3RhcnQgb2YgRnJvbnRpZXIsIGJ1dCB3YXMgYWRkZWQgc2hvcnRseSBhZnRlciBsYXVuY2guIEhvd2V2ZXIgc2luY2UgdGhlCiAgICAjIGJvbWIgaGFzIG5vIGVmZmVjdCBwcmlvciB0byBibG9jayAyMDAwMDAgd2UgcHJldGVuZCBpdCBleGlzdGVkIGZyb20KICAgICMgZ2VuZXNpcy4KICAgICMgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ldGhlcmV1bS9nby1ldGhlcmV1bS9wdWxsLzE1ODgKICAgIG51bV9ib21iX3BlcmlvZHMgPSAoKGludChibG9ja19udW1iZXIpIC0gQk9NQl9ERUxBWV9CTE9DS1MpIC8vIDEwMDAwMCkgLSAyCiAgICBpZiBudW1fYm9tYl9wZXJpb2RzID49IDA6CiAgICAgICAgZGlmZmljdWx0eSArPSAyKipudW1fYm9tYl9wZXJpb2RzCgogICAgIyBTb21lIGNsaWVudHMgcmFpc2UgdGhlIGRpZmZpY3VsdHkgdG8gYE1JTklNVU1fRElGRklDVUxUWWAgcHJpb3IgdG8gYWRkaW5nCiAgICAjIHRoZSBib21iLiBUaGlzIGJ1ZyBkb2VzIG5vdCBtYXR0ZXIgYmVjYXVzZSB0aGUgZGlmZmljdWx0eSBpcyBhbHdheXMgbXVjaAogICAgIyBncmVhdGVyIHRoYW4gYE1JTklNVU1fRElGRklDVUxUWWAgb24gTWFpbm5ldC4KICAgIHJldHVybiBVaW50KG1heChkaWZmaWN1bHR5LCBNSU5JTVVNX0RJRkZJQ1VMVFkpKQqUaAddlGg/WI0EAABkZWYgY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkoCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBibG9ja190aW1lc3RhbXA6IFUyNTYsCiAgICBwYXJlbnRfdGltZXN0YW1wOiBVMjU2LAogICAgcGFyZW50X2RpZmZpY3VsdHk6IFVpbnQsCiAgICBwYXJlbnRfaGFzX29tbWVyczogYm9vbCwKKSAtPiBVaW50OgogICAgb2Zmc2V0ID0gKAogICAgICAgIGludChwYXJlbnRfZGlmZmljdWx0eSkKICAgICAgICAvLyAyMDQ4CiAgICAgICAgKiBtYXgoCiAgICAgICAgICAgICgyIGlmIHBhcmVudF9oYXNfb21tZXJzIGVsc2UgMSkKICAgICAgICAgICAgLSBpbnQoYmxvY2tfdGltZXN0YW1wIC0gcGFyZW50X3RpbWVzdGFtcCkgLy8gOSwKICAgICAgICAgICAgLTk5LAogICAgICAgICkKICAgICkKICAgIGRpZmZpY3VsdHkgPSBpbnQocGFyZW50X2RpZmZpY3VsdHkpICsgb2Zmc2V0CiAgICAjIEhpc3RvcmljYWwgTm90ZTogVGhlIGRpZmZpY3VsdHkgYm9tYiB3YXMgbm90IHByZXNlbnQgaW4gRXRoZXJldW0gYXQgdGhlCiAgICAjIHN0YXJ0IG9mIEZyb250aWVyLCBidXQgd2FzIGFkZGVkIHNob3J0bHkgYWZ0ZXIgbGF1bmNoLiBIb3dldmVyIHNpbmNlIHRoZQogICAgIyBib21iIGhhcyBubyBlZmZlY3QgcHJpb3IgdG8gYmxvY2sgMjAwMDAwIHdlIHByZXRlbmQgaXQgZXhpc3RlZCBmcm9tCiAgICAjIGdlbmVzaXMuCiAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vZ28tZXRoZXJldW0vcHVsbC8xNTg4CiAgICBudW1fYm9tYl9wZXJpb2RzID0gKChpbnQoYmxvY2tfbnVtYmVyKSAtIEJPTUJfREVMQVlfQkxPQ0tTKSAvLyAxMDAwMDApIC0gMgogICAgaWYgbnVtX2JvbWJfcGVyaW9kcyA+PSAwOgogICAgICAgIGRpZmZpY3VsdHkgKz0gMioqbnVtX2JvbWJfcGVyaW9kcwoKICAgICMgU29tZSBjbGllbnRzIHJhaXNlIHRoZSBkaWZmaWN1bHR5IHRvIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIHByaW9yIHRvIGFkZGluZwogICAgIyB0aGUgYm9tYi4gVGhpcyBidWcgZG9lcyBub3QgbWF0dGVyIGJlY2F1c2UgdGhlIGRpZmZpY3VsdHkgaXMgYWx3YXlzIG11Y2gKICAgICMgZ3JlYXRlciB0aGFuIGBNSU5JTVVNX0RJRkZJQ1VMVFlgIG9uIE1haW5uZXQuCiAgICByZXR1cm4gVWludChtYXgoZGlmZmljdWx0eSwgTUlOSU1VTV9ESUZGSUNVTFRZKSkKlIWUgZR9lChoBWgGaCBqmz4AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMUy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2dyYXlfZ2xhY2llci9zcGVjLnB5lIwJeG1sOnNwYWNllGqqBQAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UaoERAABLAXOMB2xpbmVub3OUiXVoHGppEQAAaB1oHmgfTUIDaCBqwzsAAHViZWgOfZQoaBBdlGpVBQAAYWgTXZSMDmNoYW5nZS1yZW1vdmVklGFoFV2UjBpjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eZRhaBddlGgZXZR1aBxoM2gdaB5oH00dA2ggavQQAABoIWgDdWJlaA59lChoEF2UajEBAABhaBNdlGgVXZSMDm1vZHVsZSBkZXRhaWxzlGFoF12UaBldlHVoHGgzaB1oHmgfS01oIGg1aCFoA3ViZWgOfZQoaBBdlIwWZXRoZXJldW0tc3BlY2lmaWNhdGlvbpRhaBNdlGgVXZSMFmV0aGVyZXVtIHNwZWNpZmljYXRpb26UYWgXXZRoGV2UdWgcaDNoHWgeaB9LBGggaANoIWgDdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllGhEdWgcaAGMDmN1cnJlbnRfc291cmNllGhEjAxjdXJyZW50X2xpbmWUSwCMCHNldHRpbmdzlIwRZG9jdXRpbHMuZnJvbnRlbmSUjAZWYWx1ZXOUk5QpgZR9lCiMDHJlcG9ydF9sZXZlbJRLAowKaGFsdF9sZXZlbJRLBIwRZXhpdF9zdGF0dXNfbGV2ZWyUSwWMBWRlYnVnlE6MDndhcm5pbmdfc3RyZWFtlE6MCXRyYWNlYmFja5ROjA9vdXRwdXRfZW5jb2RpbmeUjAV1dGYtOJSMHW91dHB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwReG1sY2hhcnJlZnJlcGxhY2WUjA5lcnJvcl9lbmNvZGluZ5SMBXV0Zi04lIwcZXJyb3JfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcpSMEGJhY2tzbGFzaHJlcGxhY2WUjBNyZWNvcmRfZGVwZW5kZW5jaWVzlIwOZG9jdXRpbHMudXRpbHOUjA5EZXBlbmRlbmN5TGlzdJSTlCmBlH2UKIwEbGlzdJRdlIwEZmlsZZROdWKMBmNvbmZpZ5ROjA1kdW1wX3NldHRpbmdzlE6MDmR1bXBfaW50ZXJuYWxzlE6MD2R1bXBfdHJhbnNmb3Jtc5ROjA9kdW1wX3BzZXVkb194bWyUTowQZXhwb3NlX2ludGVybmFsc5ROjA5zdHJpY3RfdmlzaXRvcpROjA9fZGlzYWJsZV9jb25maWeUTowHX3NvdXJjZZROjAxfZGVzdGluYXRpb26UjDBkb2MvZGlmZnMvZ3JheV9nbGFjaWVyX3BhcmlzL3NwZWMvaW5kZXgucGlja2xlNjSUjA1fY29uZmlnX2ZpbGVzlF2UjBFsaW5lX2xlbmd0aF9saW1pdJRNECeMCXRhYl93aWR0aJRLCIwQc3ludGF4X2hpZ2hsaWdodJSMBGxvbmeUjAxzbWFydF9xdW90ZXOUiYwTc21hcnRxdW90ZXNfbG9jYWxlc5ROjB1jaGFyYWN0ZXJfbGV2ZWxfaW5saW5lX21hcmt1cJSJjAZ3cml0ZXKUjAN4bWyUjBljb21wYXJlX3NlY3Rpb25zX2J5X25hbWVzlEsBjAxkdW1wX3JzdGRpZmaUTowFX2JvdGiUfZQoaDhOjAlnZW5lcmF0b3KUTowJZGF0ZXN0YW1wlE6MC3NvdXJjZV9saW5rlE6MCnNvdXJjZV91cmyUTowNdG9jX2JhY2tsaW5rc5RqEwYAAIwSZm9vdG5vdGVfYmFja2xpbmtzlEsBjA1zZWN0bnVtX3hmb3JtlEsBjA5kb2N0aXRsZV94Zm9ybZRLAYwNZG9jaW5mb194Zm9ybZRLAYwSc2VjdHN1YnRpdGxlX3hmb3JtlEsAjA5zdHJpcF9jb21tZW50c5ROjA5pbnB1dF9lbmNvZGluZ5ROjBxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwGc3RyaWN0lIwNbGFuZ3VhZ2VfY29kZZSMAmVulIwOcGVwX3JlZmVyZW5jZXOUTowMcGVwX2Jhc2VfdXJslIwfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL5SMFXBlcF9maWxlX3VybF90ZW1wbGF0ZZSMCHBlcC0lMDRklIwOcmZjX3JlZmVyZW5jZXOUTowMcmZjX2Jhc2VfdXJslIwbaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvlIwddHJpbV9mb290bm90ZV9yZWZlcmVuY2Vfc3BhY2WUTowWZmlsZV9pbnNlcnRpb25fZW5hYmxlZJRLAYwLcmF3X2VuYWJsZWSUSwGMDmF1dG9faWRfcHJlZml4lIwCaWSUjAlpZF9wcmVmaXiUaAaMG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc5ROjA1zdHJpcF9jbGFzc2VzlE51jARib3RolH2UjApfb3B0aW9uc1RvlIwFX2JvdGiUjAtfb2xkX3NvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS+UjAtfbmV3X3NvdXJjZZSMCWRvYy9kaWZmc5RqFz8AAGoYPwAAjBZpZ25vcmVfaW5fc2VjdGlvbl9uYW1llF2UKIwEZ3JheZSMB2dsYWNpZXKUjAVwYXJpc5RldWKMCHJlcG9ydGVylE6MEGluZGlyZWN0X3RhcmdldHOUXZSMEXN1YnN0aXR1dGlvbl9kZWZzlH2UjBJzdWJzdGl0dXRpb25fbmFtZXOUfZSMCHJlZm5hbWVzlH2UjAZyZWZpZHOUfZSMB25hbWVpZHOUfZSMCW5hbWV0eXBlc5R9lGgQfZSMDWZvb3Rub3RlX3JlZnOUfZSMDWNpdGF0aW9uX3JlZnOUfZSMDWF1dG9mb290bm90ZXOUXZSMEWF1dG9mb290bm90ZV9yZWZzlF2UjBBzeW1ib2xfZm9vdG5vdGVzlF2UjBRzeW1ib2xfZm9vdG5vdGVfcmVmc5RdlIwJZm9vdG5vdGVzlF2UjAljaXRhdGlvbnOUXZSMEmF1dG9mb290bm90ZV9zdGFydJRLAYwVc3ltYm9sX2Zvb3Rub3RlX3N0YXJ0lEsAjAppZF9jb3VudGVylIwLY29sbGVjdGlvbnOUjAdDb3VudGVylJOUfZSFlFKUjA5wYXJzZV9tZXNzYWdlc5RdlIwSdHJhbnNmb3JtX21lc3NhZ2VzlF2UjAt0cmFuc2Zvcm1lcpROjAtpbmNsdWRlX2xvZ5RdlIwKZGVjb3JhdGlvbpROaCFoA3ViLg==