IwojICRYRnJlZTg2OiB4Yy9saWIvZm9udGNvbmZpZy9zcmMvTWFrZWZpbGUuaW4sdiAxLjMgMjAwMi8wNS8yMiAwNDoxMjozNSBrZWl0aHAgRXhwICQKIwojIENvcHlyaWdodCCpIDIwMDIgS2VpdGggUGFja2FyZCwgbWVtYmVyIG9mIFRoZSBYRnJlZTg2IFByb2plY3QsIEluYy4KIwojIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cwojIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0CiMgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0CiMgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZwojIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIEtlaXRoIFBhY2thcmQgbm90IGJlIHVzZWQgaW4KIyBhZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQKIyBzcGVjaWZpYywgd3JpdHRlbiBwcmlvciBwZXJtaXNzaW9uLiAgS2VpdGggUGFja2FyZCBtYWtlcyBubwojIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdAojIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCiMKIyBLRUlUSCBQQUNLQVJEIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAojIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUywgSU4gTk8KIyBFVkVOVCBTSEFMTCBLRUlUSCBQQUNLQVJEIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCiMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsCiMgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUgojIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKIyBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgojCgpUT1BESVI9Li4KCmluY2x1ZGUgJChUT1BESVIpL2NvbmZpZy9NYWtlZGVmcwoKTElCUz1ATElCU0AKClNSQ1M9ZmNhdG9taWMuYyBcCiAgICAgZmNibGFua3MuYyBcCiAgICAgZmNjYWNoZS5jIFwKICAgICBmY2NmZy5jIFwKICAgICBmY2NoYXJzZXQuYyBcCiAgICAgZmNkYmcuYyBcCiAgICAgZmNkZWZhdWx0LmMgXAogICAgIGZjZGlyLmMgXAogICAgIGZjZnJlZXR5cGUuYyBcCiAgICAgZmNmcy5jIFwKICAgICBmY2luaXQuYyBcCiAgICAgZmNsYW5nLmMgXAogICAgIGZjbGlzdC5jIFwKICAgICBmY21hdGNoLmMgXAogICAgIGZjbWF0cml4LmMgXAogICAgIGZjbmFtZS5jIFwKICAgICBmY3BhdC5jIFwKICAgICBmY3N0ci5jIFwKICAgICBmY3htbC5jCgpPQkpTPWZjYXRvbWljLkBPQkpFWFRAIFwKICAgICBmY2JsYW5rcy5AT0JKRVhUQCBcCiAgICAgZmNjYWNoZS5AT0JKRVhUQCBcCiAgICAgZmNjZmcuQE9CSkVYVEAgXAogICAgIGZjY2hhcnNldC5AT0JKRVhUQCBcCiAgICAgZmNkYmcuQE9CSkVYVEAgXAogICAgIGZjZGVmYXVsdC5AT0JKRVhUQCBcCiAgICAgZmNkaXIuQE9CSkVYVEAgXAogICAgIGZjZnJlZXR5cGUuQE9CSkVYVEAgXAogICAgIGZjZnMuQE9CSkVYVEAgXAogICAgIGZjaW5pdC5AT0JKRVhUQCBcCiAgICAgZmNsYW5nLkBPQkpFWFRAIFwKICAgICBmY2xpc3QuQE9CSkVYVEAgXAogICAgIGZjbWF0Y2guQE9CSkVYVEAgXAogICAgIGZjbWF0cml4LkBPQkpFWFRAIFwKICAgICBmY25hbWUuQE9CSkVYVEAgXAogICAgIGZjcGF0LkBPQkpFWFRAIFwKICAgICBmY3N0ci5AT0JKRVhUQCBcCiAgICAgZmN4bWwuQE9CSkVYVEAKCi5jLkBPQkpFWFRAOgoJJChDQykgJChDRkxBR1MpICQoRFNPX1BJQ19DRkxBR1MpIC1jICQ8IC1vICRACgkKYWxsOjogJChMSUJGSUxFKSAkKExJQk1BSk9SKSAkKExJQkJBU0UpCgojIAojIGJ1aWxkIHRoZSBsaWJyYXJ5IGFuZCB0aGUgdmFyaW91cyB2ZXJzaW9uIGxpbmtzCiMKJChMSUJGSUxFKTogJChPQkpTKQoJcm0gLWYgJEAKCSQoTUtTSExJQikgJChPQkpTKSAkKExJQlMpCgokKExJQk1BSk9SKTogJChMSUJGSUxFKQoJcm0gLWYgICRACgkkKExOX1MpICQoTElCRklMRSkgJChMSUJNQUpPUikKCiQoTElCQkFTRSk6ICQoTElCTUFKT1IpCglybSAtZiAkQAoJJChMTl9TKSAkKExJQk1BSk9SKSAkKExJQkJBU0UpCgokKE9CSlMpOiBmY2ludC5oICQoSEVBREVSUykKCiMKIyBpbnN0YWxsIGRpcmVjdG9yaWVzCiMKaW5zdGFsbDo6ICQoREVTVERJUikkKExJQkRJUikKCiQoREVTVERJUikkKExJQkRJUik6Cglta2RpciAtcCAkQAoKIyAKIyBpbnN0YWxsIGxpYnJhcnkKIwoKaW5zdGFsbDo6ICQoREVTVERJUikkKExJQkRJUikvJChMSUIpICQoREVTVERJUikkKExJQkRJUikvJChMSUJNQUpPUikKaW5zdGFsbDo6ICQoREVTVERJUikkKExJQkRJUikvJChMSUJCQVNFKQoKJChERVNURElSKSQoTElCRElSKS8kKExJQkZJTEUpOiAkKExJQkZJTEUpCgkkKElOU1RBTExfUFJPR1JBTSkgJDwgJChERVNURElSKSQoTElCRElSKS8kPAoKJChERVNURElSKSQoTElCRElSKS8kKExJQk1BSk9SKTogJChERVNURElSKSQoTElCRElSKS8kKExJQkZJTEUpCglybSAtZiAkKERFU1RESVIpJChMSUJESVIpLyQoTElCTUFKT1IpCgkkKExOX1MpICQoTElCRklMRSkgJChERVNURElSKSQoTElCRElSKS8kKExJQk1BSk9SKQoKJChERVNURElSKSQoTElCRElSKS8kKExJQkJBU0UpOiAkKERFU1RESVIpJChMSUJESVIpLyQoTElCTUFKT1IpCglybSAtZiAkKERFU1RESVIpJChMSUJESVIpLyQoTElCQkFTRSkKCSQoTE5fUykgJChMSUJNQUpPUikgJChERVNURElSKSQoTElCRElSKS8kKExJQkJBU0UpCgpjbGVhbjo6CglybSAtZiAkKExJQkZJTEUpICQoTElCTUFKT1IpICQoTElCQkFTRSkgJChPQkpTKQo=