Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vICAgICAgX19fXyAgICAgICAgICAgICAgICAgICAgICAgIF8gICAgICBfCi8vICAgICAvIF9fX3xfX19fIF8gICBfIF9fX18gICBfX19ffCB8X18gIHwgfAovLyAgICB8IHwgICAvIF9fX3wgfCB8IHwgIF8gIFwvIF9fX3wgIF8gIFx8IHwKLy8gICAgfCB8X19ffCB8ICB8IHxffCB8IHwgfCB8IHxfX198IHwgfCB8fF98Ci8vICAgICBcX19fX3xffCAgXF9fX19ffF98IHxffFxfX19ffF98IHxffChfKSBNZWRpYSBiZW5jaG1hcmtzCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgCi8vCSCpIDIwMDYsIEludGVsIENvcnBvcmF0aW9uLCBsaWNlbnNlZCB1bmRlciBBcGFjaGUgMi4wIAovLwovLyAgZmlsZSA6IENvdmFyaWFuY2VNYXRyaXguaAovLyAgYXV0aG9yIDogSmVhbi1ZdmVzIEJvdWd1ZXQgLSBqZWFuLXl2ZXMuYm91Z3VldEBpbnRlbC5jb20KLy8gIGRlc2NyaXB0aW9uIDogQ29tcHV0ZXMgdGhlIHNldCBvZiBzdGFuZGFyZCBkZXZpYXRpb24gbWF0cmljZXMuCi8vICBtb2RpZmllZCA6IAovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKI2lmbmRlZiBDT1ZBUklBTkNFTUFUUklYX0gKI2RlZmluZSBDT1ZBUklBTkNFTUFUUklYX0gKCiNpZiBkZWZpbmVkKEhBVkVfQ09ORklHX0gpCiMgaW5jbHVkZSAiY29uZmlnLmgiCiNlbmRpZgoKI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgIkJvZHlQb3NlLmgiCgovLyBQYXJ0aWNsZSBzdXJ2aXZhbCByYXRlCiNkZWZpbmUgQUxQSEFfTSAuNQoKLy9Db21wdXRlcyB0aGUgc2V0IG9mIHN0YW5kYXJkIGRldmlhdGlvbiBtYXRyaWNlcyBmb3IgYSBnaXZlbiBudW1iZXIgb2YgYW5uZWFsaW5nIGxheWVycyBhbmQgc2V0IG9mIHBvc2UgcGFyYW1ldGVycwp2b2lkIEdlbmVyYXRlU3REZXZNYXRyaWNlcyhpbnQgbGF5ZXJzLFBvc2VQYXJhbXMgJnBhcmFtcywgc3RkOjp2ZWN0b3I8c3RkOjp2ZWN0b3I8ZmxvYXQ+ID4gJnN0ZERldnMpOwoKLy9Db21wdXRlcyB0aGUgc2V0IG9mIHN0YW5kYXJkIGRldmlhdGlvbiBtYXRyaWNlcyBmb3IgYSBnaXZlbiBudW1iZXIgb2YgYW5uZWFsaW5nIGxheWVycyAodXNpbmcgcG9zZSBwYXJhbWV0ZXJzIGxvYWRlZCBmcm9tIGEgZmlsZSkKdm9pZCBHZW5lcmF0ZVN0RGV2TWF0cmljZXMoaW50IGxheWVycywgY29uc3QgY2hhciogZm5hbWUsIHN0ZDo6dmVjdG9yPHN0ZDo6dmVjdG9yPGZsb2F0PiA+ICZzdGREZXZzKTsKCiNlbmRpZgo=