dHJlZSAzNGI3NmRhNTY4YjYzODEzM2ZlYmMwOGQwZTM2NmJmMTFlMTIyNmY3CnBhcmVudCAwNGU1MGIzZDMyNWZhMzVjZTk1NTc3MDE1MTM3NzNhOGE4NGU5MjMwCmF1dGhvciBXaWxseSBUYXJyZWF1IDx3QDF3dC5ldT4gMTY2MjU1NjI4NSArMDIwMApjb21taXR0ZXIgV2lsbHkgVGFycmVhdSA8d0Axd3QuZXU+IDE2NjI2Mzk1NTUgKzAyMDAKZW5jb2RpbmcgbGF0aW4xCgpCVUcvTUlOT1I6IHNjaGVkOiBwcm9wZXJseSBhY2NvdW50IGZvciB0aGUgQ1BVIHRpbWUgb2YgZHlpbmcgdGFza3MKCldoZW4gdGFzayBwcm9maWxpbmcgaXMgZW5hYmxlZCwgdGhlIHNjaGVkdWxlciBjYW4gbWVhc3VyZSBhbmQgcmVwb3J0CnRoZSBjdW11bGF0ZWQgdGltZSBzcGVudCBpbiBlYWNoIHRhc2sgYW5kIHRoZWlyIHJlc3BlY3RpdmUgbGF0ZW5jaWVzLiBCdXQKdGhpcyB3YXMgd3JvbmcgZm9yIHRhc2tzIHdpdGggZmV3IHdha2V1cHMgYXMgd2VsbCBhcyBmb3Igc2VsZi13YWtpbmcgb25lcywKYmVjYXVzZSB0aGUgY2FsbCBkYXRlIG5lZWRlZCB0byBtZWFzdXJlIGhvdyBsb25nIGl0IHRha2VzIHRvIHByb2Nlc3MgdGhlCnRhc2sgaXMgcmV0cmlldmVkIGluIHRoZSB0YXNrIGl0c2VsZiAoLT53YWtlX2RhdGUgd2FzIHR1cm5lZCB0byB0aGUgY2FsbApkYXRlKSwgYW5kIHdlIGNvdWxkIGZhY2UgdHdvIGNvbmRpdGlvbnM6CiAgLSBhIG5ldyB3YWtldXAgd2hpbGUgdGhlIHRhc2sgaXMgZXhlY3V0aW5nIHdvdWxkIHJlc2V0IHRoZSAtPndha2VfZGF0ZQogICAgZmllbGQgYmVmb3JlIHJldHVybmluZyBhbmQgbWFrZSBhYm5vcm1hbGx5IGxvdyB2YWx1ZXMgYmVpbmcgcmVwb3J0ZWQ7CiAgICB0aGF0IHdhcyBsaWtlbHkgdGhlIGNhc2UgZm9yIHRhc2vocnVuX2FwcGxldCBmb3Igc2VsZi13YWtpbmcgYXBwbGV0czsKCiAgLSB3aGVuIHRoZSB0YXNrIGRpZXMsIE5VTEwgaXMgcmV0dXJuZWQgYW5kIHRoZSBjYWxsIGRhdGUgY291bGRuJ3QgYmUKICAgIHJldHJpZXZlZCwgc28gdGhhdCBDUFUgdGltZSB3YXMgbm90IGJlaW5nIGFjY291bnRlZCBmb3IuIFRoaXMgd2FzCiAgICBwYXJ0aWN1bGFybHkgdmlzaWJsZSB3aXRoIHByb2Nlc3Nfc3RyZWFtKCkgd2hpY2ggaXMgdXN1YWxseSBjYWxsZWQKICAgIG9ubHkgdHdpY2UgcGVyIHJlcXVlc3QsIGFuZCB3aG9zZSB0aW1lIHdhcyBzeXN0ZW1hdGljYWxseSBoYWx2ZWQuCgpUaGUgY2xlYW5lc3Qgc29sdXRpb24gaGVyZSBpcyB0byBrZWVwIGluIG1pbmQgdGhhdCB0aGUgc2NoZWR1bGVyIGFscmVhZHkKdXNlcyBxdWl0ZSBhIGJpdCBvZiBsb2NhbCBjb250ZXh0IGluIHRoX2N0eCwgYW5kIHBsYWNlIHRoZSBpbnRlcm1lZGlhcnkKdmFsdWVzIHRoZXJlIHNvIHRoYXQgdGhleSBjYW5ub3QgdmFuaXNoLiBUaGUgd2FrZV9kYXRlIGhhcyB0byBiZSByZXNldAppbW1lZGlhdGVseSBvbmNlIHJlYWQsIGFuZCBvbmx5IGl0cyBjb3B5IGlzIHVzZWQgYWxvbmcgdGhlIGZ1bmN0aW9uLiBOb3RlCnRoYXQgdGhpcyBtdXN0IGJlIGRvbmUgYm90aCBmb3IgdGFza3MgYW5kIHRhc2tsZXQsIGFuZCB0aGF0IHVudGlsIHJlY2VudGx5CnRhc2tsZXRzIHdlcmUgYWxzbyBhYmxlIHRvIHJlcG9ydCB3cm9uZyB2YWx1ZXMgZHVlIHRvIHRoZWlyIHNvbGUgZGVwZW5kZW5jeQpvbiBUSF9GTF9UQVNLX1BST0ZJTElORyBiZXR3ZWVuIHRlc3RzLgoKT25lIG5pY2UgYmVuZWZpdCBmb3IgZnV0dXJlIGltcHJvdmVtZW50cyBpcyB0aGF0IHN1Y2ggaW5mb3JtYXRpb24gd2lsbCBub3cKYmUgYXZhaWxhYmxlIGZyb20gdGhlIHRhc2sgd2l0aG91dCBoYXZpbmcgdG8gYmUgc3RvcmVkIGludG8gdGhlIHRhc2sgaXRzZWxmCmFueW1vcmUuCgpTaW5jZSB0aGUgdGFza2xldCBwYXJ0IHdhcyBjb21wdXRlZCBvbiB3cmFwcGluZyAzMi1iaXQgYXJpdGhtZXRpY3MgYW5kCnRoZSB0YXNrIG9uZSB3YXMgb24gNjQtYml0LCB0aGUgdmFsdWVzIHdlcmUgbm93IGNvbnNpc3RlbnRseSBtb3ZlZCB0bwozMi1iaXQgYXMgaXQncyBhbHJlYWR5IGxhcmdlbHkgc3VmZmljaWVudCAoNHMgc3BlbnQgaW4gYSB0YXNrIGlzIG1vcmUKdGhhbiB0d2ljZSB3aGF0IHRoZSB3YXRjaGRvZyB3b3VsZCB0b2xlcmF0ZSkuIFNvbWUgZnVydGhlciBjbGVhbnVwcyBtaWdodApiZSBuZWNlc3NhcnksIGJ1dCB0aGUgcGF0Y2ggYWltZWQgYXQgc3RheWluZyBtaW5pbWFsLgoKVGFzayBwcm9maWxpbmcgb3V0cHV0IGFmdGVyIDEgbWlsbGlvbiBIVFRQIHJlcXVlc3QgcHJldmlvdXNseSBsb29rZWQgbGlrZQp0aGlzOgoKICBUYXNrcyBhY3Rpdml0eToKICAgIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgIGNhbGxzICAgY3B1X3RvdCAgIGNwdV9hdmcgICBsYXRfdG90ICAgbGF0X2F2ZwogICAgaDFfaW9fY2IgICAgICAgICAgICAgICAgICAgIDIwMTIzMzggICA0Ljg1MHMgICAgMi40MTB1cyAgIDEyLjkxcyAgICA2LjQxN3VzCiAgICBwcm9jZXNzX3N0cmVhbSAgICAgICAgICAgICAgMjAwMDEzNiAgIDkuNTk0cyAgICA0Ljc5NnVzICAgMzQuMjZzICAgIDE3LjEzdXMKICAgIHNjX2Nvbm5faW9fY2IgICAgICAgICAgICAgICAyMDAwMTM1ICAgMS45NzNzICAgIDk4Ni4wbnMgICAzMC4yNHMgICAgMTUuMTJ1cwogICAgaDFfdGltZW91dF90YXNrICAgICAgICAgICAgICAgICAxMzcgICAgICAtICAgICAgICAgLSAgICAgIDIuNjQ5bXMgICAxOS4zNHVzCiAgICBhY2NlcHRfcXVldWVfcHJvY2VzcyAgICAgICAgICAgICA0OSAgIDE1Mi4zdXMgICAzLjEwN3VzICAgMzIxLjd5ciAgIDYuNTY0eXIKICAgIG1haW4rMHgxNDY0MzAgICAgICAgICAgICAgICAgICAgICA3ICAgNS4yNTB1cyAgIDc1MC4wbnMgICAyNS45MnVzICAgMy43MDJ1cwogICAgc3J2X2NsZWFudXBfaWRsZV9jb25ucyAgICAgICAgICAgIDEgICA1NTkuMG5zICAgNTU5LjBucyAgIDkxOC4wbnMgICA5MTguMG5zCiAgICB0YXNrX3J1bl9hcHBsZXQgICAgICAgICAgICAgICAgICAgMSAgICAgIC0gICAgICAgICAtICAgICAgMi4xNjJ1cyAgIDIuMTYydXMKCiAgTm93IGl0IGxvb2tzIGxpa2UgdGhpczoKICBUYXNrcyBhY3Rpdml0eToKICAgIGZ1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgIGNhbGxzICAgY3B1X3RvdCAgIGNwdV9hdmcgICBsYXRfdG90ICAgbGF0X2F2ZwogICAgaDFfaW9fY2IgICAgICAgICAgICAgICAgICAgIDIwMTQxOTQgICA0Ljc5NHMgICAgMi4zODB1cyAgIDEzLjc1cyAgICA2LjgyNnVzCiAgICBwcm9jZXNzX3N0cmVhbSAgICAgICAgICAgICAgMjAwMDE1MSAgIDIwLjAxcyAgICAxMC4wMHVzICAgMzYuMDRzICAgIDE4LjAydXMKICAgIHNjX2Nvbm5faW9fY2IgICAgICAgICAgICAgICAyMDAwMTQ4ICAgMi4xNjdzICAgIDEuMDgzdXMgICAzMi4yN3MgICAgMTYuMTN1cwogICAgaDFfdGltZW91dF90YXNrICAgICAgICAgICAgICAgICAxOTggICA1NC4yNHVzICAgMjczLjBucyAgIDMuNDg3bXMgICAxNy42MXVzCiAgICBhY2NlcHRfcXVldWVfcHJvY2VzcyAgICAgICAgICAgICA1MiAgIDE1OC4zdXMgICAzLjA0NHVzICAgNDA5Ljl1cyAgIDcuODgydXMKICAgIG1haW4rMHgxNDY2ZTAgICAgICAgICAgICAgICAgICAgIDE4ICAgMTYuNzd1cyAgIDkzMS4wbnMgICA2My45OHVzICAgMy41NTR1cwogICAgc3J2X2NsZWFudXBfdG9yZW1vdmVfY29ubnMgICAgICAgIDggICAyODIuMXVzICAgMzUuMjZ1cyAgIDU0Ni44dXMgICA2OC4zNXVzCiAgICBzcnZfY2xlYW51cF9pZGxlX2Nvbm5zICAgICAgICAgICAgMyAgIDE0OS4ydXMgICA0OS43M3VzICAgOC4xMzF1cyAgIDIuNzEwdXMKICAgIHRhc2tfcnVuX2FwcGxldCAgICAgICAgICAgICAgICAgICAzICAgMjY4LjF1cyAgIDg5LjM4dXMgICAxMS42MXVzICAgMy44NzF1cwoKTm90ZSB0aGUgdHdvLWZvbGQgZGlmZmVyZW5jZSBvbiBwcm9jZXNzX3N0cmVhbSgpLgoKVGhpcyBmZWF0dXJlIGlzIGVzc2VudGlhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZyBzbyBpdCBoYXMgZXh0cmVtZWx5IGxpbWl0ZWQKaW1wYWN0LiBIb3dldmVyIGl0J3MgdXNlZCBxdWl0ZSBhIGJpdCBtb3JlIGluIGJ1ZyByZXBvcnRzIGFuZCBpdCB3b3VsZCBiZQpkZXNpcmFibGUgdGhhdCBhdCBsZWFzdCAyLjYgZ2V0cyB0aGlzIGZpeCBiYWNrcG9ydGVkLiBJdCBkZXBlbmRzIG9uIGF0IGxlYXN0CnRoZXNlIHR3byBwcmV2aW91cyBwYXRjaGVzIHdoaWNoIHdpbGwgdGhlbiBhbHNvIGhhdmUgdG8gYmUgYmFja3BvcnRlZDoKCiAgICAgTUlOT1I6IHRhc2s6IHBlcm1hbmVudGx5IGVuYWJsZSBsYXRlbmN5IG1lYXN1cmVtZW50IG9uIHRhc2tsZXRzCiAgICAgQ0xFQU5VUDogdGFzazogcmVuYW1lIC0+Y2FsbF9kYXRlIHRvIC0+d2FrZV9kYXRlCg==