QGMgQ29weXJpZ2h0IDIwMDgKQGMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBjIFRoaXMgaXMgcGFydCBvZiB0aGUgR0FTIG1hbnVhbC4KQGMgRm9yIGNvcHlpbmcgY29uZGl0aW9ucywgc2VlIHRoZSBmaWxlIGFzLnRleGluZm8uCgpAaWZzZXQgR0VORVJJQwpAcGFnZQpAbm9kZSBMTTMyLURlcGVuZGVudApAY2hhcHRlciBMTTMyIERlcGVuZGVudCBGZWF0dXJlcwpAZW5kIGlmc2V0CgpAaWZjbGVhciBHRU5FUklDCkBub2RlIE1hY2hpbmUgRGVwZW5kZW5jaWVzCkBjaGFwdGVyIExNoyIgRGVwZW5kZW50IEZlYXR1cmVzCkBlbmQgaWZjbGVhcgoKQGNpbmRleCBMTTMyIHN1cHBvcnQKQG1lbnUKKiBMTTMyIE9wdGlvbnM6OiAgICAgICAgICAgICAgT3B0aW9ucwoqIExNMzIgU3ludGF4OjogICAgICAgICAgICAgICBTeW50YXgKKiBMTTMyIE9wY29kZXM6OiAgICAgICAgICAgICAgT3Bjb2RlcwpAZW5kIG1lbnUKCkBub2RlIExNMzIgT3B0aW9ucwpAc2VjdGlvbiBPcHRpb25zCkBjaW5kZXggTE0zMiBvcHRpb25zIChub25lKQpAY2luZGV4IG9wdGlvbnMgZm9yIExNMzIgKG5vbmUpCgpAdGFibGUgQGNvZGUKCkBjaW5kZXggQGNvZGV7LW1tdWx0aXBseS1lbmFibGVkfSBjb21tYW5kIGxpbmUgb3B0aW9uLCBMTTMyCkBpdGVtIC1tbXVsdGlwbHktZW5hYmxlZApFbmFibGUgbXVsdGlwbHkgaW5zdHJ1Y3Rpb25zLgoKQGNpbmRleCBAY29kZXstbWRpdmlkZS1lbmFibGVkfSBjb21tYW5kIGxpbmUgb3B0aW9uLCBMTTMyCkBpdGVtIC1tZGl2aWRlLWVuYWJsZWQKRW5hYmxlIGRpdmlkZSBpbnN0cnVjdGlvbnMuCgpAY2luZGV4IEBjb2Rley1tYmFycmVsLXNoaWZ0LWVuYWJsZWR9IGNvbW1hbmQgbGluZSBvcHRpb24sIExNMzIKQGl0ZW0gLW1iYXJyZWwtc2hpZnQtZW5hYmxlZApFbmFibGUgYmFycmVsLXNoaWZ0IGluc3RydWN0aW9ucy4KCkBjaW5kZXggQGNvZGV7LW1zaWduLWV4dGVuZC1lbmFibGVkfSBjb21tYW5kIGxpbmUgb3B0aW9uLCBMTTMyCkBpdGVtIC1tc2lnbi1leHRlbmQtZW5hYmxlZApFbmFibGUgc2lnbiBleHRlbmQgaW5zdHJ1Y3Rpb25zLgoKQGNpbmRleCBAY29kZXstbXVzZXItZW5hYmxlZH0gY29tbWFuZCBsaW5lIG9wdGlvbiwgTE0zMgpAaXRlbSAtbXVzZXItZW5hYmxlZApFbmFibGUgdXNlciBkZWZpbmVkIGluc3RydWN0aW9ucy4KCkBjaW5kZXggQGNvZGV7LW1pY2FjaGUtZW5hYmxlZH0gY29tbWFuZCBsaW5lIG9wdGlvbiwgTE0zMgpAaXRlbSAtbWljYWNoZS1lbmFibGVkCkVuYWJsZSBpbnN0cnVjdGlvbiBjYWNoZSByZWxhdGVkIENTUnMuCgpAY2luZGV4IEBjb2Rley1tZGNhY2hlLWVuYWJsZWR9IGNvbW1hbmQgbGluZSBvcHRpb24sIExNMzIKQGl0ZW0gLW1kY2FjaGUtZW5hYmxlZApFbmFibGUgZGF0YSBjYWNoZSByZWxhdGVkIENTUnMuCgpAY2luZGV4IEBjb2Rley1tYnJlYWstZW5hYmxlZH0gY29tbWFuZCBsaW5lIG9wdGlvbiwgTE0zMgpAaXRlbSAtbWJyZWFrLWVuYWJsZWQKRW5hYmxlIGJyZWFrIGluc3RydWN0aW9ucy4KCkBjaW5kZXggQGNvZGV7LW1hbGwtZW5hYmxlZH0gY29tbWFuZCBsaW5lIG9wdGlvbiwgTE0zMgpAaXRlbSAtbWFsbC1lbmFibGVkCkVuYWJsZSBhbGwgaW5zdHJ1Y3Rpb25zIGFuZCBDU1JzLgoKQGVuZCB0YWJsZQoKCkBub2RlIExNMzIgU3ludGF4CkBzZWN0aW9uIFN5bnRheApAbWVudQoqIExNMzItUmVnczo6ICAgICAgICAgICAgICAgICBSZWdpc3RlciBOYW1lcwoqIExNMzItTW9kaWZpZXJzOjogICAgICAgICAgICBSZWxvY2F0YWJsZSBFeHByZXNzaW9uIE1vZGlmaWVycwpAZW5kIG1lbnUKCkBub2RlIExNMzItUmVncwpAc3Vic2VjdGlvbiBSZWdpc3RlciBOYW1lcwoKQGNpbmRleCBMTTMyIHJlZ2lzdGVyIG5hbWVzCkBjaW5kZXggcmVnaXN0ZXIgbmFtZXMsIExNMzIKCkxNMzIgaGFzIDMyIHggMzItYml0IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMgQHNhbXB7cjB9LApAc2FtcHtyMX0sIC4uLiBAc2FtcHtyMzF9LgoKVGhlIGZvbGxvd2luZyBhbGlhc2VzIGFyZSBkZWZpbmVkOiBAc2FtcHtncH0gLSBAc2FtcHtyMjZ9LApAc2FtcHtmcH0gLSBAc2FtcHtyMjd9LCBAc2FtcHtzcH0gLSBAc2FtcHtyMjh9LApAc2FtcHtyYX0gLSBAc2FtcHtyMjl9LCBAc2FtcHtlYX0gLSBAc2FtcHtyMzB9LApAc2FtcHtiYX0gLSBAc2FtcHtyMzF9LgoKTE0zMiBoYXMgdGhlIGZvbGxvd2luZyBDb250cm9sIGFuZCBTdGF0dXMgUmVnaXN0ZXJzIChDU1JzKS4KCkB0YWJsZSBAY29kZQpAaXRlbSBJRQpJbnRlcnJ1cHQgZW5hYmxlLgpAaXRlbSBJTQpJbnRlcnJ1cHQgbWFzay4KQGl0ZW0gSVAKSW50ZXJydXB0IHBlbmRpbmcuCkBpdGVtIElDQwpJbnN0cnVjdGlvbiBjYWNoZSBjb250cm9sLgpAaXRlbSBEQ0MKRGF0YSBjYWNoZSBjb250cm9sLgpAaXRlbSBDQwpDeWNsZSBjb3VudGVyLgpAaXRlbSBDRkcKQ29uZmlndXJhdGlvbi4KQGl0ZW0gRUJBCkV4Y2VwdGlvbiBiYXNlIGFkZHJlc3MuCkBpdGVtIERDCkRlYnVnIGNvbnRyb2wuCkBpdGVtIERFQkEKRGVidWcgZXhjZXB0aW9uIGJhc2UgYWRkcmVzcy4KQGl0ZW0gSlRYCkpUQUcgdHJhbnNtaXQuCkBpdGVtIEpSWApKVEFHIHJlY2VpdmUuCkBpdGVtIEJQMApCcmVha3BvaW50IDAuCkBpdGVtIEJQMQpCcmVha3BvaW50IDEuCkBpdGVtIEJQMgpCcmVha3BvaW50IDIuCkBpdGVtIEJQMwpCcmVha3BvaW50IDMuCkBpdGVtIFdQMApXYXRjaHBvaW50IDAuCkBpdGVtIFdQMQpXYXRjaHBvaW50IDEuCkBpdGVtIFdQMgpXYXRjaHBvaW50IDIuCkBpdGVtIFdQMwpXYXRjaHBvaW50IDMuCkBlbmQgdGFibGUKCkBub2RlIExNMzItTW9kaWZpZXJzCkBzdWJzZWN0aW9uIFJlbG9jYXRhYmxlIEV4cHJlc3Npb24gTW9kaWZpZXJzCgpAY2luZGV4IExNMzIgbW9kaWZpZXJzCkBjaW5kZXggc3ludGF4LCBMTTMyCgpUaGUgYXNzZW1ibGVyIHN1cHBvcnRzIHNldmVyYWwgbW9kaWZpZXJzIHdoZW4gdXNpbmcgcmVsb2NhdGFibGUgYWRkcmVzc2VzCmluIExNMzIgaW5zdHJ1Y3Rpb24gb3BlcmFuZHMuICBUaGUgZ2VuZXJhbCBzeW50YXggaXMgdGhlIGZvbGxvd2luZzoKCkBzbWFsbGV4YW1wbGUKbW9kaWZpZXIocmVsb2NhdGFibGUtZXhwcmVzc2lvbikKQGVuZCBzbWFsbGV4YW1wbGUKCkB0YWJsZSBAY29kZQpAY2luZGV4IHN5bWJvbCBtb2RpZmllcnMKCkBpdGVtIGxvCgpUaGlzIG1vZGlmaWVyIGFsbG93cyB5b3UgdG8gdXNlIGJpdHMgMCB0aHJvdWdoIDE1IG9mCmFuIGFkZHJlc3MgZXhwcmVzc2lvbiBhcyAxNiBiaXQgcmVsb2NhdGFibGUgZXhwcmVzc2lvbi4KCkBpdGVtIGhpCgpUaGlzIG1vZGlmaWVyIGFsbG93cyB5b3UgdG8gdXNlIGJpdHMgMTYgdGhyb3VnaCAyMyBvZiBhbiBhZGRyZXNzIGV4cHJlc3Npb24KYXMgMTYgYml0IHJlbG9jYXRhYmxlIGV4cHJlc3Npb24uCgpGb3IgZXhhbXBsZQoKQHNtYWxsZXhhbXBsZQpvcmkgIHI0LCByNCwgbG8oc3ltKzEwKQpvcmhpIHI0LCByNCwgaGkoc3ltKzEwKQpAZW5kIHNtYWxsZXhhbXBsZQoKQGl0ZW0gZ3AKClRoaXMgbW9kaWZpZWQgY3JlYXRlcyBhIDE2LWJpdCByZWxvY2F0YWJsZSBleHByZXNzaW9uIHRoYXQgaXMKdGhlIG9mZnNldCBvZiB0aGUgc3ltYm9sIGZyb20gdGhlIGdsb2JhbCBwb2ludGVyLgoKQHNtYWxsZXhhbXBsZQptdmEgcjQsIGdwKHN5bSkKQGVuZCBzbWFsbGV4YW1wbGUKCkBpdGVtIGdvdAoKVGhpcyBtb2RpZmllciBwbGFjZXMgYSBzeW1ib2wgaW4gdGhlIEdPVCBhbmQgY3JlYXRlcyBhIDE2LWJpdApyZWxvY2F0YWJsZSBleHByZXNzaW9uIHRoYXQgaXMgdGhlIG9mZnNldCBpbnRvIHRoZSBHT1Qgb2YgdGhpcwpzeW1ib2wuCgpAc21hbGxleGFtcGxlCmx3IHI0LCAoZ3ArZ290KHN5bSkpCkBlbmQgc21hbGxleGFtcGxlCgpAaXRlbSBnb3RvZmZsbzE2CgpUaGlzIG1vZGlmaWVyIGFsbG93cyB5b3UgdG8gdXNlIHRoZSBiaXRzIDAgdGhyb3VnaCAxNSBvZiBhbgphZGRyZXNzIHdoaWNoIGlzIGFuIG9mZnNldCBmcm9tIHRoZSBHT1QuCgpAaXRlbSBnb3RvZmZoaTE2CgpUaGlzIG1vZGlmaWVyIGFsbG93cyB5b3UgdG8gdXNlIHRoZSBiaXRzIDE2IHRocm91Z2ggMzEgb2YgYW4KYWRkcmVzcyB3aGljaCBpcyBhbiBvZmZzZXQgZnJvbSB0aGUgR09ULgoKQHNtYWxsZXhhbXBsZQpvcmhpIHI0LCByNCwgZ290b2ZmaGkxNihsc3ltKQphZGRpIHI0LCByNCwgZ290b2ZmbG8xNihsc3ltKQpAZW5kIHNtYWxsZXhhbXBsZQoKQGVuZCB0YWJsZQoKQG5vZGUgTE0zMiBPcGNvZGVzCkBzZWN0aW9uIE9wY29kZXMKCkBjaW5kZXggTE0zMiBvcGNvZGUgc3VtbWFyeQpAY2luZGV4IG9wY29kZSBzdW1tYXJ5LCBMTTMyCkBjaW5kZXggbW5lbW9uaWNzLCBMTTMyCkBjaW5kZXggaW5zdHJ1Y3Rpb24gc3VtbWFyeSwgTE0zMgpGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdGhlIExNMzIgbWFjaGluZSBpbnN0cnVjdGlvbiBzZXQsIHNlZQpAdXJse2h0dHA6Ly93d3cubGF0dGljZXNlbWkuY29tL3Byb2R1Y3RzL2ludGVsbGVjdHVhbHByb3BlcnR5L2lwY29yZXMvbWljbzMyL30uCgpAY29kZXtAdmFsdWV7QVN9fSBpbXBsZW1lbnRzIGFsbCB0aGUgc3RhbmRhcmQgTE0zMiBvcGNvZGVzLgo=