From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v14] This is the ABI for the two halves of a para-virtualized sound driver to communicate with each to other. Date: Tue, 29 Nov 2016 17:24:55 +0200 Message-ID: <1480433095-25292-2-git-send-email-andr2000@gmail.com> References: <1480433095-25292-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1480433095-25292-1-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: embedded-pv-devel@lists.xenproject.org, lars.kurth@citrix.com, vlad.babchuk@gmail.com, ian.jackson@eu.citrix.com, dario.faggioli@citrix.com, tim@xen.org, iurii.konovalenko@globallogic.com, andrii.anisov@gmail.com, olekstysh@gmail.com, andr2000@gmail.com, al1img@gmail.com, david.vrabel@citrix.com, JBeulich@suse.com, julien.grall@arm.com, oleksandr.dmytryshyn@globallogic.com, joculator@gmail.com List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPE9sZWtzYW5kcl9BbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPE9sZWtzYW5k cl9BbmRydXNoY2hlbmtvQGVwYW0uY29tPgpTaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgR3J5dHNv diA8T2xla3NhbmRyX0dyeXRzb3ZAZXBhbS5jb20+ClNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBE bXl0cnlzaHluIDxvbGVrc2FuZHIuZG15dHJ5c2h5bkBnbG9iYWxsb2dpYy5jb20+ClNpZ25lZC1v ZmYtYnk6IEl1cmlpIEtvbm92YWxlbmtvIDxpdXJpaS5rb25vdmFsZW5rb0BnbG9iYWxsb2dpYy5j b20+CgotLS0KQ2hhbmdlcyBzaW5jZSB2MToKICogcmVtb3ZlZCBfX2F0dHJpYnV0ZV9fKChfX3Bh Y2tlZF9fKSkgZnJvbSBhbGwgc3RydWN0dXJlcyBkZWZpbml0aW9ucwoKQ2hhbmdlcyBzaW5jZSB2 MjoKICogcmVtb3ZlZCBhbGwgQyBzdHJ1Y3R1cmVzCiAqIGFkZGVkIHByb3RvY29sIGRlc2NyaXB0 aW9uIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVycwoKQ2hhbmdlcyBzaW5jZSB2 MzoKICogZml4ZWQgc29tZSB0eXBvcwogKiByZW5hbWVkIFhFTlNORF9QQ01fRk9STUFUX0ZMT0FU XyoqIHRvIFhFTlNORF9QQ01fRk9STUFUX0YzMl8qKgogKiByZW5hbWVkIFhFTlNORF9QQ01fRk9S TUFUX0ZMT0FUNjRfKiogdG8gWEVOU05EX1BDTV9GT1JNQVRfRjY0XyoqCiAqIGFkZGVkICdpZCcg ZmllbGQgdG8gdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIHBhY2tldHMKICogcmVuYW1lZCAnc3Ry ZWFtX2lkJyB0byAnc3RyZWFtJyBpbiB0aGUgcGFja2V0cyBkZXNjcmlwdGlvbgogKiByZW5hbWVk ICdwY21fZGF0YV9yYXRlJyB0byAncGNtX3JhdGUnIGluIHRoZSBwYWNrZXRzIGRlc2NyaXB0aW9u CiAqIHJlbmFtZWQgJ3BjbV9zdHJlYW1fdHlwZScgdG8gJ3BjbV90eXBlJyBpbiB0aGUgcGFja2V0 cyBkZXNjcmlwdGlvbgogKiByZW1vdmVkICdzdHJlYW1faWQnIGZpZWxkIGZyb20gdGhlIHJlc3Bv bnNlIHBhY2tldHMKCkNoYW5nZXMgc2luY2UgdjQ6CiAqIHJlbmFtZWQgJ3N0cmVhbV9pZCcgYmFj ayB0byB0aGUgdG8gJ3N0cmVhbScgaW4gdGhlIHBhY2tldHMgZGVzY3JpcHRpb24KICogbW92ZWQg J2lkJyBmaWVsZCB0byB0aGUgdXBwZXIgcG9zaXRpb24gaW4gdGhlIHJlc3BvbnNlIHBhY2tldHMK CkNoYW5nZXMgc2luY2UgdjU6CiAqIFNsaWdodGx5IHJld29ya2VkIHJlcXVlc3QvcmVzcG9uc2Ug cGFja2V0cwogKiBTaXplIG9mIHRoZSByZXF1ZXN0L3Jlc3BvbnNlIHBhY2tldCBpcyBjaGFuZ2Vk IHRvIHRoZSA2NCBieXRlcwogKiBOb3cgcGFyYW1ldGVycyBmb3IgdGhlIFhFTlNORF9PUF9TRVRf Vk9MVU1FL1hFTlNORF9PUF9HRVRfVk9MVU1FIGFyZQogICBwYXNzZWQgdmlhIHNoYXJlZCBwYWdl CiAqIEFkZGVkIHBhcmFtZXRlcnMgZm9yIHRoZSBYZW5CdXMgbm9kZXMgKG5vdyBlYWNoIHN0cmVh bSBjYW4gYmUgbWFwcGVkCiAgIHRvIHRoZSBkZWZpbmVkIHNvdW5kIGRldmljZSBpbiB0aGUgYmFj a2VuZCB1c2luZyB0aG9zZSBwYXJhbWV0ZXJzKQogKiBBZGRlZCBYZW5CdXMgc3RhdGUgZGlhZ3Jh bXMgZGVzY3JpcHRpb24KCkNoYW5nZXMgc2luY2UgdjY6CiAqIFJld29ya2VkIHN0cmVhbXMgZGVz Y3JpcHRpb24gIGluIHRoZSBCYWNrZW5kIFhlbkJ1cyBOb2RlcwoKQ2hhbmdlcyBzaW5jZSB2NzoK ICogcmUtd29ya2VkIGJhY2tlbmQgZGV2aWNlIHBhcmFtZXRlcnMgdG8gYmUgbW9yZSBnZW5lcmlj IGFuZCBmbGV4aWJsZQogKiBleHRlbmRlZCBmcm9udGVuZCBkZXZpY2UgcGFyYW1ldGVycwogKiBz bGlnaHRseSB1cGRhdGVkIHN0YXRlIG1hY2hpbmUgZGVzY3JpcHRpb24gYWRkZWQgbXV0ZS91bm11 dGUgY29tbWFuZHMKICogYWRkZWQgY29uc3RhbnRzIGZvciBYZW5TdG9yZSBjb25maWd1cmF0aW9u IHN0cmluZ3MKICAgKGZpZWxkcywgUENNIGZvcm1hdHMgZXRjLikKICogY2hhbmdlZCByZXF1ZXN0 L3Jlc3BvbnNlIHN0cnVjdHVyZSBzaXplIGZyb20gNjQgb2N0ZXRzIHRvIDE2CiAqIGludHJvZHVj ZWQgZHluYW1pYyBidWZmZXIgYWxsb2NhdGlvbiBpbnN0ZWFkIG9mCiAgIHN0YXRpYyBYRU5TTkRf TUFYX1BBR0VTX1BFUl9SRVFVRVNUCiAqIHJlLXdvcmtlZCBvcGVuIHJlcXVlc3QgdG8gYWxsb3cg ZHluYW1pYyBidWZmZXIgYWxsb2NhdGlvbgogKiByZS13b3JrZWQgcmVhZC93cml0ZS92b2x1bWUg cmVxdWVzdHMsIHNvIHRoZXkgZG9uJ3QgcGFzcyBncmVmczoKICAgYnVmZmVyIGZyb20gdGhlIG9w ZW4gcmVxdWVzdCBpcyB1c2VkIGZvciB0aGVzZSBvcGVyYXRpb25zIHRvIHBhc3MgZGF0YQogKiBz cGVjaWZpZWQgdHlwZSBvZiB0aGUgdm9sdW1lIHZhbHVlIHRvIGJlIGEgc2lnbmVkIHZhbHVlIGlu IHN0ZXBzCiAgIG9mIDAuMDAxIGRCbSwgd2hpbGUgMCBiZWluZyAwZEJtLgogKiBhZGRlZCBMaW51 eCBpbmNsdWRlIGZpbGUgd2l0aCBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMKCkNoYW5nZXMgc2luY2Ug djg6CiAqIGNoYW5nZWQgZnJvbnRlbmQtaWQgdG8gZnJvbnRlbmRfaWQKICogc2luZ2xlIHNvdW5k IGNhcmQgc3VwcG9ydCwgY29uZmlndXJlZCB3aXRoIGJ1bmNoIG9mCiAgIGRldmljZXMvc3RyZWFt cwogKiBjbGFyaWZ1Y2F0aW9uIG1hZGUgb24gc2FtcGxlIHJhdGVzIGFuZCBmb3JtYXRzIGV4cHJl c3NlZCBhcwogICBkZWNpbWFscyB3L28gYW55IHBhcnRpY3VsYXIgb3JkZXJpbmcKICogcHV0IGRl c2NyaXB0aW9uIG9mIG1pZ3JhdGlvbi9kaXNjb25uZWN0aW9uIHN0YXRlCiAqIHJlcGxhY2VkIF9f YXR0cmlidXRlX18oKHBhY2tlZCkpIHRvIF9fcGFja2VkCiAqIGNoYW5nZWQgcGFkZGluZyBvZiBy aW5nIHN0cnVjdHVyZXMgdG8gNjQgdG8gZml0IGNhY2hlIGxpbmUKICogcmVtb3ZlZWQgI2lmZGVm IF9fS0VSTkVMCiAqIGV4cGxpY2l0bHkgc3RhdGVkIHdoaWNoIGluZGljZXMgaW4gWGVuU3RvcmUg Y29uZmlndXJhdGlvbgogICBhcmUgY29udGlndW91cwogKiBhZGRlZCBkZXNjcmlwdGlvbiB0byB3 aGF0IGZyb250ZW5kJ3MgZGVmYXVsdHMgYXJlCiAqIG1hZGUgbmFtZXMgb2YgdmlydHVhbCBjYXJk L2RldmljZXMgb3B0aW9uYWwKICogcmVtb3ZlZCBQQ01fRk9STUFUX1NQRUNJQUwKICogY2hhbmdl ZCB2b2x1bWUgdW5pdHMgZnJvbSBkQm0gdG8gZEIKCkNoYW5nZXMgc2luY2Ugdjk6CiAqIHJlbW92 ZWQgc25kaWZfbGludXguaAogKiBtb3ZlZCBhbGwgc3RydWN0dXJlcyBmcm9tIHNuZGlmX2xpbnV4 LmggdG8gc25kaWYuaAogKiBzdHJ1Y3R1cmVzIHBhZGRlZCB3aGVyZSBuZWVkZWQKICogZml4ZWQg SHogY29tbWVudAoKQ2hhbmdlcyBzaW5jZSB2MTA6CiAqIGZpeGVkIHRhYnMgdG8gNCBzcGFjZXMg dG8gY29tcGx5IHdpdGggWGVuIGNvZGluZyBzdHlsZQogKiBhZGRlZCBwbGFjZWhvbGRlcnMgdG8g ZW1wdHkgc3RydWN0dXJlcyAoQzg5IGNvbmNlcm4pCiAqIGFkZGVkIG1pc3NpbmcgaGVhZGVyIGlu Y2x1ZGVzCgpDaGFuZ2VzIHNpbmNlIHYxMToKICogYWRkZWQgWEVOU05EX1JTUF9OT1RTVVBQIGVy cm9yIGNvZGUKICogY2hhbmdlZCBncmVmWzBdIHRvIGdyZWZbMV0gd2l0aCBjb21tZW50CiAqIG1v ZGlmaWVkIGNvbW1lbnRzIG9uIGVtcHR5IHN0cnVjdHVyZXMKICogcmVtb3ZlZCAiX18iIGZyb20g bWVtYmVyIG5hbWVzCiAqIGZpeGVkIGluZGVudGF0aW9uCiAqIGFkZGVkIHBhZGRpbmcgaW4gdW5p b24geGVuc25kX3Jlc3AKICogY2hhbmdlZCBfX1hFTl9QVUJMSUNfSU9fWEVOU05EX0hfXyB0byBf X1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fCgpDaGFuZ2VzIHNpbmNlIHYxMjoKICogY2hhbmdlZCBp bmRlbnRhdGlvbiBmb3IgZGVmaW5lcwogKiBtaXNzZWQgIjsiIGFmdGVyIGdyZWZbMV0KICogZG9j dW1lbnRhdGlvbiBjaGFuZ2VzCiAqIGNoYW5nZWQgcmVxL3Jlc3Agc3RydWN0dXJlcwogKiBjaGFu Z2VkIHhlbnNuZF9wYWdlX2RpcmVjdG9yeSBzdHJ1Y3R1cmUKICogcGFzcyBidWZmZXIgc2l6ZSBp biBvcGVuIHJlcXVlc3QKCkNoYW5nZXMgc2luY2UgdjEzOgogKiBub3RlIG9uIHVzYWdlIG9mIGdy YW50IHJlZiAwCiAqIGFsbCBwYWdlIHNpemVzIGFyZSBYRU5fUEFHRV9TSVpFCiAqIHBhZGRpbmcv cmVzZXJ2ZWQgY2xlYW51cC9maXhlcwogKiByZW1vdmVkIGVtcHR5IHN0cnVjdHVyZXMKLS0tCi0t LQogeGVuL2luY2x1ZGUvcHVibGljL2lvL3NuZGlmLmggfCA2NzEgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgNjcxIGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMvaW8vc25kaWYuaAoKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9zbmRpZi5oIGIveGVuL2luY2x1ZGUvcHVi bGljL2lvL3NuZGlmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE5ODBl MAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9zbmRpZi5oCkBAIC0w LDAgKzEsNjcxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBzbmRpZi5oCisgKgorICog VW5pZmllZCBzb3VuZC1kZXZpY2UgSS9PIGludGVyZmFjZSBmb3IgWGVuIGd1ZXN0IE9TZXMuCisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEgY29weQorICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisgKiBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uIHRoZQorICogcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yCisgKiBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwor ICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlh bCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisgKiBBVVRIT1JTIE9SIENP UFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVS CisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgorICogREVBTElOR1MgSU4gVEhFIFNP RlRXQVJFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEdsb2JhbExvZ2ljIEluYy4K KyAqIENvcHlyaWdodCAoQykgMjAxNiBFUEFNIFN5c3RlbXMgSW5jLgorICoKKyAqIEF1dGhvcnM6 IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxPbGVrc2FuZHJfQW5kcnVzaGNoZW5rb0BlcGFtLmNv bT4KKyAqICAgICAgICAgIE9sZWtzYW5kciBHcnl0c292IDxPbGVrc2FuZHJfR3J5dHNvdkBlcGFt LmNvbT4KKyAqICAgICAgICAgIE9sZWtzYW5kciBEbXl0cnlzaHluIDxvbGVrc2FuZHIuZG15dHJ5 c2h5bkBnbG9iYWxsb2dpYy5jb20+CisgKiAgICAgICAgICBJdXJpaSBLb25vdmFsZW5rbyA8aXVy aWkua29ub3ZhbGVua29AZ2xvYmFsbG9naWMuY29tPgorICovCisKKyNpZm5kZWYgX19YRU5fUFVC TElDX0lPX1NORElGX0hfXworI2RlZmluZSBfX1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fCisKKyNp bmNsdWRlICJyaW5nLmgiCisjaW5jbHVkZSAiLi4vZ3JhbnRfdGFibGUuaCIKKworLyoKKyAqIEZy b250LT5iYWNrIG5vdGlmaWNhdGlvbnM6IFdoZW4gZW5xdWV1aW5nIGEgbmV3IHJlcXVlc3QsIHNl bmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHJlcV9l dmVudCAoaS5lLiwgdGhlIGdlbmVyaWMKKyAqIGhvbGQtb2ZmIG1lY2hhbmlzbSBwcm92aWRlZCBi eSB0aGUgcmluZyBtYWNyb3MpLiBCYWNrZW5kcyBtdXN0IHNldAorICogcmVxX2V2ZW50IGFwcHJv cHJpYXRlbHkgKGUuZy4sIHVzaW5nIFJJTkdfRklOQUxfQ0hFQ0tfRk9SX1JFUVVFU1RTKCkpLgor ICoKKyAqIEJhY2stPmZyb250IG5vdGlmaWNhdGlvbnM6IFdoZW4gZW5xdWV1aW5nIGEgbmV3IHJl c3BvbnNlLCBzZW5kaW5nIGEKKyAqIG5vdGlmaWNhdGlvbiBjYW4gYmUgbWFkZSBjb25kaXRpb25h bCBvbiByc3BfZXZlbnQgKGkuZS4sIHRoZSBnZW5lcmljCisgKiBob2xkLW9mZiBtZWNoYW5pc20g cHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gRnJvbnRlbmRzIG11c3Qgc2V0CisgKiByc3Bf ZXZlbnQgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVT UE9OU0VTKCkpLgorICovCisKKy8qCisgKiBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVnb3RpYXRp b24KKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogVGhlIHR3byBoYWx2 ZXMgb2YgYSBQYXJhLXZpcnR1YWwgc291bmQgY2FyZCBkcml2ZXIgdXRpbGl6ZSBub2RlcyB3aXRo aW4gdGhlCisgKiBYZW5TdG9yZSB0byBjb21tdW5pY2F0ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5l Z290aWF0ZSBvcGVyYXRpbmcgcGFyYW1ldGVycy4KKyAqIFRoaXMgc2VjdGlvbiBlbnVtZXJhdGVz IHRoZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKKyAq IGJhY2tlbmQgcG9ydGlvbnMgb2YgdGhlIFhlblN0b3JlLCBmb2xsb3dpbmcgdGhlIFhlbkJ1cyBj b252ZW50aW9uLgorICoKKyAqIEFsbCBkYXRhIGluIHRoZSBYZW5TdG9yZSBpcyBzdG9yZWQgYXMg c3RyaW5ncy4gIE5vZGVzIHNwZWNpZnlpbmcgbnVtZXJpYworICogdmFsdWVzIGFyZSBlbmNvZGVk IGluIGRlY2ltYWwuICBJbnRlZ2VyIHZhbHVlIHJhbmdlcyBsaXN0ZWQgYmVsb3cgYXJlCisgKiBl eHByZXNzZWQgYXMgZml4ZWQgc2l6ZWQgaW50ZWdlciB0eXBlcyBjYXBhYmxlIG9mIHN0b3Jpbmcg dGhlIGNvbnZlcnNpb24KKyAqIG9mIGEgcHJvcGVybHkgZm9ybWF0ZWQgbm9kZSBzdHJpbmcsIHdp dGhvdXQgbG9zcyBvZiBpbmZvcm1hdGlvbi4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tlbmQgWGVuQnVzIE5vZGVzCisgKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEFk ZHJlc3NpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogSW5kaWNl cyB1c2VkIHRvIGFkZHJlc3MgZnJvbnRlbmRzLCBkcml2ZXIgaW5zdGFuY2VzLCBjYXJkcywKKyAq IGRldmljZXMgYW5kIHN0cmVhbXMuCisgKgorICogZnJvbnRlbmRfaWQKKyAqICAgICAgVmFsdWVz OiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgRG9tYWluIElEIG9mIHRoZSBzb3VuZCBmcm9u dGVuZC4KKyAqCisgKiBkcnZfaWR4CisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludD4KKyAq CisgKiAgICAgIFplcm8gYmFzZWQgY29udGlndW91cyBpbmRleCBvZiB0aGUgdmlydHVhbGl6ZWQg c291bmQgZHJpdmVyIGluc3RhbmNlIGluCisgKiAgICAgIHRoaXMgZG9tYWluLiBNdWx0aXBsZSBQ ViBkcml2ZXJzIGFyZSBhbGxvd2VkIGluIHRoZSBkb21haW4KKyAqICAgICAgYXQgdGhlIHNhbWUg dGltZS4KKyAqCisgKiBkZXZfaWQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoK KyAqICAgICAgVW5pcXVlIGRldmljZSBJRC4KKyAqICAgICAgRG9lc24ndCBoYXZlIHRvIGJlIHpl cm8gYmFzZWQgYW5kL29yIHRvIGJlIGNvbnRpZ3VvdXMuCisgKgorICogc3RyZWFtX2lkeAorICog ICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBaZXJvIGJhc2VkIGNvbnRp Z3VvdXMgaW5kZXggb2YgdGhlIHN0cmVhbSBvZiB0aGUgZGV2aWNlLgorICoKKyAqIEV4YW1wbGUg Zm9yIHRoZSBmcm9udGVuZCBydW5uaW5nIGluIGRvbWFpbiA1LCBpbnN0YW5jZSBvZiB0aGUgZHJp dmVyCisgKiBpbiB0aGUgZnJvbnQgaXMgMCAoc2luZ2xlIG9yIGZpcnN0IFBWIGRyaXZlciksIGRl dmljZSBpZCAyLAorICogZmlyc3Qgc3RyZWFtICgwKToKKyAqIC9sb2NhbC9kb21haW4vPGZyb250 ZW5kX2lkPi9kZXZpY2UvdnNuZC88ZHJ2X2lkeD4vCisgKiAgICAgICAgIGRldmljZS88ZGV2X2lk Pi9zdHJlYW0vPHN0cmVhbV9pZHg+L3R5cGUgPSAicCIKKyAqIC9sb2NhbC9kb21haW4vNS9kZXZp Y2UvdnNuZC8wL2RldmljZS8yL3N0cmVhbS8wL3R5cGUgPSAicCIKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gUENNIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogRXZlcnkgdmlydHVhbGl6ZWQgc291bmQgZnJvbnRlbmQgaGFzIHNl dCBvZiBkZXZpY2VzIGFuZCBzdHJlYW1zLCBlYWNoCisgKiBpcyBpbmRpdmlkdWFsbHkgY29uZmln dXJlZC4gUGFydCBvZiB0aGUgUENNIGNvbmZpZ3VyYXRpb24gY2FuIGJlIGRlZmluZWQgYXQKKyAq IGhpZ2hlciBsZXZlbCBhbmQgYmUgZnVsbHkgb3IgcGFydGlhbGx5IHJlLXVzZWQgYnkgdGhlIHVu ZGVybHlpbmcgbGF5ZXJzLgorICogVGhlc2UgY29uZmlndXJhdGlvbiB2YWx1ZXMgYXJlOgorICog IG8gbnVtYmVyIG9mIGNoYW5uZWxzIChtaW4vbWF4KQorICogIG8gc3VwcG9ydGVkIHNhbXBsZSBy YXRlcworICogIG8gc3VwcG9ydGVkIHNhbXBsZSBmb3JtYXRzLgorICogRS5nLiBvbmUgY2FuIGRl ZmluZSB0aGVzZSB2YWx1ZXMgZm9yIHRoZSB3aG9sZSBkcml2ZXIsIGRldmljZSBvciBzdHJlYW0u CisgKiBFdmVyeSB1bmRlcmx5aW5nIGxheWVyIGluIHR1cm4gY2FuIHJlLWRlZmluZSBzb21lIG9y IGFsbCBvZiB0aGVtIHRvIGJldHRlcgorICogZml0IGl0cyBuZWVkcy4gRm9yIGV4YW1wbGUsIGRy aXZlciBtYXkgZGVmaW5lIG51bWJlciBvZiBjaGFubmVscyB0byBiZQorICogaW4gWzE7IDhdIHJh bmdlLCBhbmQgc29tZSBwYXJ0aWN1bGFyIHN0cmVhbSBtYXkgYmUgbGltaXRlZCB0byBbMTsgMl0g b25seS4KKyAqIFRoZSBydWxlIGlzIHRoYXQgdGhlIHVuZGVybHlpbmcgbGF5ZXIgbXVzdCBiZSBh IHN1YnNldCBvZiB0aGUgdXBwZXIgbGF5ZXIKKyAqIHJhbmdlLgorICoKKyAqIE5vdGU6IGlmIGFu eSBvZiB0aGUgdmFsdWVzIGFyZSBub3QgZGVmaW5lZCB0aGVuIFBWIGRyaXZlciBzaG91bGQgdXNl CisgKiBpdHMgZGVmYXVsdCB2YWx1ZXMgaW5zdGVhZC4KKyAqCisgKiBjaGFubmVscy1taW4KKyAq ICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAgICAgVGhlIG1pbmltdW0gYW1v dW50IG9mIGNoYW5uZWxzIHRoYXQgaXMgc3VwcG9ydGVkLgorICogICAgICBNdXN0IGJlIGF0IGxl YXN0IDEuIElmIG5vdCBkZWZpbmVkIHRoZW4gdXNlIGZyb250ZW5kJ3MgZGVmYXVsdC4KKyAqCisg KiBjaGFubmVscy1tYXgKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAqICAg ICAgVGhlIG1heGltdW0gYW1vdW50IG9mIGNoYW5uZWxzIHRoYXQgaXMgc3VwcG9ydGVkLgorICog ICAgICBNdXN0IGJlIGF0IGxlYXN0IDxjaGFubmVscy1taW4+LiBJZiBub3QgZGVmaW5lZCB0aGVu IHVzZSBmcm9udGVuZCdzCisgKiAgICAgIGRlZmF1bHQuCisgKgorICogc2FtcGxlLXJhdGVzCisg KiAgICAgIFZhbHVlczogICAgICAgICA8bGlzdCBvZiB1aW50cz4KKyAqCisgKiAgICAgIExpc3Qg b2Ygc3VwcG9ydGVkIHNhbXBsZSByYXRlcyBzZXBhcmF0ZWQgYnkgWEVOU05EX0xJU1RfU0VQQVJB VE9SLgorICogICAgICBJZiBub3QgZGVmaW5lZCB0aGVuIHVzZSBmcm9udGVuZCdzIGRlZmF1bHQu IFNhbXBsZSByYXRlcyBhcmUgZXhwcmVzc2VkCisgKiAgICAgIGFzIGEgbGlzdCBvZiBkZWNpbWFs IHZhbHVlcyB3L28gYW55IG9yZGVyaW5nIHJlcXVpcmVtZW50LgorICoKKyAqIHNhbXBsZS1mb3Jt YXRzCisgKiAgICAgIFZhbHVlczogICAgICAgICA8bGlzdCBvZiBYRU5TTkRfUENNX0ZPUk1BVF9Y WFhfU1RSPgorICoKKyAqICAgICAgTGlzdCBvZiBzdXBwb3J0ZWQgc2FtcGxlIGZvcm1hdHMgc2Vw YXJhdGVkIGJ5IFhFTlNORF9MSVNUX1NFUEFSQVRPUi4KKyAqICAgICAgSWYgbm90IGRlZmluZWQg dGhlbiB1c2UgZnJvbnRlbmQncyBkZWZhdWx0LgorICoKKyAqIGJ1ZmZlci1zaXplCisgKiAgICAg IFZhbHVlczogICAgICAgICA8dWludD4KKyAqCisgKiAgICAgIFRoZSBtYXhpbXVtIHNpemUgaW4g b2N0ZXRzIG9mIHRoZSBidWZmZXIgdG8gYWxsb2NhdGUgcGVyIHN0cmVhbS4KKyAqCisgKiBFeGFt cGxlIGNvbmZpZ3VyYXRpb246CisgKgorICogRHJpdmVyIGNvbmZpZ3VyYXRpb24gdXNlZCBieSBh bGwgc3RyZWFtczoKKyAqIC9sb2NhbC9kb21haW4vNS9kZXZpY2UvdnNuZC8wL3NhbXBsZS1mb3Jt YXRzID0gInM4O3U4O3MxNl9sZTtzMTZfYmUiCisgKiBTdHJlYW0gb3ZlcnJpZGVzIHNhbXBsZSBy YXRlcyBzdXBwb3J0ZWQ6CisgKiAvbG9jYWwvZG9tYWluLzUvZGV2aWNlL3ZzbmQvMC9kZXZpY2Uv Mi9zdHJlYW0vMC9zYW1wbGUtcmF0ZXMgPQorICogICAgICAgICI4MDAwOzIyMDUwOzQ0MTAwOzQ4 MDAwIgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVmlydHVhbCBzb3VuZCBjYXJkIHNl dHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBzaG9ydC1uYW1lCisgKiAgICAg IFZhbHVlczogICAgICAgICA8Y2hhclszMl0+CisgKgorICogICAgICBTaG9ydCBuYW1lIG9mIHRo ZSB2aXJ0dWFsIHNvdW5kIGNhcmQuIE9wdGlvbmFsLgorICoKKyAqIGxvbmctbmFtZQorICogICAg ICBWYWx1ZXM6ICAgICAgICAgPGNoYXJbODBdPgorICoKKyAqICAgICAgTG9uZyBuYW1lIG9mIHRo ZSB2aXJ0dWFsIHNvdW5kIGNhcmQuIE9wdGlvbmFsLgorICoKKyAqIEZvciBleGFtcGxlLAorICog L2xvY2FsL2RvbWFpbi81L2RldmljZS92c25kLzAvc2hvcnQtbmFtZSA9ICJWaXJ0dWFsIGF1ZGlv IgorICogL2xvY2FsL2RvbWFpbi81L2RldmljZS92c25kLzAvbG9uZy1uYW1lID0KKyAqICAgICAg ICAgIlZpcnR1YWwgYXVkaW8gYXQgY2VudGVyIHN0YWNrIgorICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0gRGV2aWNlIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgKiBuYW1lCisgKiAgICAgIFZhbHVlczogICAgICAgICA8Y2hhcls4MF0+CisgKgor ICogICAgICBOYW1lIG9mIHRoZSBzb3VuZCBkZXZpY2Ugd2l0aGluIHRoZSB2aXJ0dWFsIHNvdW5k IGNhcmQuIE9wdGlvbmFsLgorICoKKyAqIEZvciBleGFtcGxlLAorICogL2xvY2FsL2RvbWFpbi81 L2RldmljZS92c25kLzAvZGV2aWNlLzAvbmFtZSA9ICJHZW5lcmFsIGFuYWxvZyIKKyAqCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmVhbSBzZXR0aW5ncyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdHlwZQorICogICAgICBWYWx1ZXM6ICAgICAgICAg InAiLCAiYyIKKyAqCisgKiAgICAgIFN0cmVhbSB0eXBlOiAicCIgLSBwbGF5YmFjayBzdHJlYW0s ICJjIiAtIGNhcHR1cmUgc3RyZWFtCisgKgorICogICAgICBJZiBib3RoIGNhcHR1cmUgYW5kIHBs YXliYWNrIGFyZSBuZWVkZWQgdGhlbiB0d28gc3RyZWFtcyBuZWVkIHRvIGJlCisgKiAgICAgIGRl ZmluZWQgdW5kZXIgdGhlIHNhbWUgZGV2aWNlLiBGb3IgZXhhbXBsZSwKKyAqICAgICAgL2xvY2Fs L2RvbWFpbi81L2RldmljZS92c25kLzAvZGV2aWNlLzAvc3RyZWFtLzAvdHlwZSA9ICJwIgorICog ICAgICAvbG9jYWwvZG9tYWluLzUvZGV2aWNlL3ZzbmQvMC9kZXZpY2UvMC9zdHJlYW0vMS90eXBl ID0gImMiCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGcm9udGVuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVxdWVzdCBUcmFuc3BvcnQgUGFyYW1ldGVycyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFRoZXNlIGFyZSBwZXIgc3RyZWFtLgorICoK KyAqIGV2ZW50LWNoYW5uZWwKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50PgorICoKKyAq ICAgICAgVGhlIGlkZW50aWZpZXIgb2YgdGhlIFhlbiBldmVudCBjaGFubmVsIHVzZWQgdG8gc2ln bmFsIGFjdGl2aXR5CisgKiAgICAgIGluIHRoZSByaW5nIGJ1ZmZlci4KKyAqCisgKiByaW5nLXJl ZgorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAgICBUaGUgWGVuIGdy YW50IHJlZmVyZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZvciB0aGUgYmFja2VuZCB0byBtYXAK KyAqICAgICAgYSBzb2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFnZSBzaXplZCByaW5nIGJ1ZmZlci4K KyAqCisgKiBpbmRleAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ+CisgKgorICogICAg ICBBZnRlciBzdHJlYW0gaW5pdGlhbGl6YXRpb24gaXQgaXMgYXNzaWduZWQgYSB1bmlxdWUgSUQg KHdpdGhpbiB0aGUgZnJvbnQKKyAqICAgICAgZHJpdmVyKSwgc28gZXZlcnkgc3RyZWFtIG9mIHRo ZSBmcm9udGVuZCBjYW4gYmUgaWRlbnRpZmllZCBieSB0aGUKKyAqICAgICAgYmFja2VuZCBieSB0 aGlzIElELiBUaGlzIGlzIG5vdCBlcXVhbCB0byBzdHJlYW1faWR4IGFzIHRoZSBsYXRlciBpcwor ICogICAgICB6ZXJvIGJhc2VkIHdpdGhpbiBhIGRldmljZSwgYnV0IHRoaXMgaW5kZXggaXMgY29u dGlndW91cyB3aXRoaW4gdGhlCisgKiAgICAgIGRyaXZlci4KKyAqLworCisvKgorICogU1RBVEUg RElBR1JBTVMKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTdGFydHVwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogVG9vbCBzdGFjayBjcmVhdGVzIGZyb250 IGFuZCBiYWNrIHN0YXRlIG5vZGVzIHdpdGggaW5pdGlhbCBzdGF0ZQorICogWGVuYnVzU3RhdGVJ bml0aWFsaXNpbmcuCisgKiBUb29sIHN0YWNrIGNyZWF0ZXMgYW5kIHNldHMgdXAgZnJvbnRlbmQg c291bmQgY29uZmlndXJhdGlvbiBub2RlcyBwZXIgZG9tYWluLgorICoKKyAqIEZyb250ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBCYWNrCisgKiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICog WGVuYnVzU3RhdGVJbml0aWFsaXNpbmcgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdGlhbGlz aW5nCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gUXVlcnkgYmFj a2VuZCBkZXZpY2UgaWRlbnRpZmljYXRpb24KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvIE9wZW4gYW5kIHZhbGlkYXRlIGJhY2tlbmQgZGV2aWNlLgorICogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVgorICogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhlbmJ1c1N0YXRlSW5pdFdhaXQKKyAqCisg KiBvIFF1ZXJ5IGZyb250ZW5kIGNvbmZpZ3VyYXRpb24KKyAqIG8gQWxsb2NhdGUgYW5kIGluaXRp YWxpemUKKyAqICAgZXZlbnQgY2hhbm5lbHMgcGVyIGNvbmZpZ3VyZWQKKyAqICAgcGxheWJhY2sv Y2FwdHVyZSBzdHJlYW0uCisgKiBvIFB1Ymxpc2ggdHJhbnNwb3J0IHBhcmFtZXRlcnMKKyAqICAg dGhhdCB3aWxsIGJlIGluIGVmZmVjdCBkdXJpbmcKKyAqICAgdGhpcyBjb25uZWN0aW9uLgorICog ICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgVgorICog WGVuYnVzU3RhdGVJbml0aWFsaXNlZAorICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbyBRdWVyeSBmcm9udGVuZCB0cmFuc3BvcnQgcGFyYW1ldGVycy4KKyAqICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBDb25uZWN0IHRvIHRoZSBldmVu dCBjaGFubmVscy4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFYKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBYZW5idXNTdGF0ZUNvbm5lY3RlZAorICoKKyAqICBvIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSBP UworICogIHZpcnR1YWwgc291bmQgZGV2aWNlIGluc3RhbmNlcworICogIGFzIHBlciBjb25maWd1 cmF0aW9uLgorICogICAgICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICB8CisgKiAgICAgICAg ICAgICAgVgorICogWGVuYnVzU3RhdGVDb25uZWN0ZWQKKyAqCisgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVVbmtub3duCisgKiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDbG9zZWQKKyAqICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBYZW5idXNTdGF0ZUNsb3NpbmcKKyAqIG8gUmVtb3Zl IHZpcnR1YWwgc291bmQgZGV2aWNlCisgKiBvIFJlbW92ZSBldmVudCBjaGFubmVscworICogICAg ICAgICAgICAgIHwKKyAqICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgVgorICogWGVu YnVzU3RhdGVDbG9zZWQKKyAqCisgKi8KKworLyoKKyAqIFBDTSBGT1JNQVRTCisgKgorICogWEVO U05EX1BDTV9GT1JNQVRfPGZvcm1hdD5bXzxlbmRpYW4+XQorICoKKyAqIGZvcm1hdDogPFMvVS9G PjxiaXRzPiBvciA8bmFtZT4KKyAqICAgICBTIC0gc2lnbmVkLCBVIC0gdW5zaWduZWQsIEYgLSBm bG9hdAorICogICAgIGJpdHMgLSA4LCAxNiwgMjQsIDMyCisgKiAgICAgbmFtZSAtIE1VX0xBVywg R1NNLCBldGMuCisgKgorICogZW5kaWFuOiA8TEUvQkU+LCBtYXkgYmUgYWJzZW50CisgKiAgICAg TEUgLSBMaXR0bGUgZW5kaWFuLCBCRSAtIEJpZyBlbmRpYW4KKyAqLworI2RlZmluZSBYRU5TTkRf UENNX0ZPUk1BVF9TOCAgICAgICAgICAgIDAKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTgg ICAgICAgICAgICAxCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9MRSAgICAgICAgMgor I2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMTZfQkUgICAgICAgIDMKKyNkZWZpbmUgWEVOU05E X1BDTV9GT1JNQVRfVTE2X0xFICAgICAgICA0CisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1Ux Nl9CRSAgICAgICAgNQorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMjRfTEUgICAgICAgIDYK KyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzI0X0JFICAgICAgICA3CisjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX1UyNF9MRSAgICAgICAgOAorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9V MjRfQkUgICAgICAgIDkKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzMyX0xFICAgICAgICAx MAorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfQkUgICAgICAgIDExCisjZGVmaW5lIFhF TlNORF9QQ01fRk9STUFUX1UzMl9MRSAgICAgICAgMTIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JN QVRfVTMyX0JFICAgICAgICAxMworI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9GMzJfTEUgICAg ICAgIDE0IC8qIDQtYnl0ZSBmbG9hdCwgSUVFRS03NTQgMzItYml0LCAqLworI2RlZmluZSBYRU5T TkRfUENNX0ZPUk1BVF9GMzJfQkUgICAgICAgIDE1IC8qIHJhbmdlIC0xLjAgdG8gMS4wICAgICAg ICAgICAgICAqLworI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9GNjRfTEUgICAgICAgIDE2IC8q IDgtYnl0ZSBmbG9hdCwgSUVFRS03NTQgNjQtYml0LCAqLworI2RlZmluZSBYRU5TTkRfUENNX0ZP Uk1BVF9GNjRfQkUgICAgICAgIDE3IC8qIHJhbmdlIC0xLjAgdG8gMS4wICAgICAgICAgICAgICAq LworI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfTEUgMTgKKyNkZWZp bmUgWEVOU05EX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFIDE5CisjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX01VX0xBVyAgICAgICAgMjAKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRf QV9MQVcgICAgICAgICAyMQorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9JTUFfQURQQ00gICAg IDIyCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX01QRUcgICAgICAgICAgMjMKKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfR1NNICAgICAgICAgICAyNAorCisvKgorICogUkVRVUVTVCBDT0RF Uy4KKyAqLworI2RlZmluZSBYRU5TTkRfT1BfT1BFTiAgICAgICAgICAgICAgICAgIDAKKyNkZWZp bmUgWEVOU05EX09QX0NMT1NFICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFhFTlNORF9PUF9S RUFEICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBYRU5TTkRfT1BfV1JJVEUgICAgICAgICAg ICAgICAgIDMKKyNkZWZpbmUgWEVOU05EX09QX1NFVF9WT0xVTUUgICAgICAgICAgICA0CisjZGVm aW5lIFhFTlNORF9PUF9HRVRfVk9MVU1FICAgICAgICAgICAgNQorI2RlZmluZSBYRU5TTkRfT1Bf TVVURSAgICAgICAgICAgICAgICAgIDYKKyNkZWZpbmUgWEVOU05EX09QX1VOTVVURSAgICAgICAg ICAgICAgICA3CisKKy8qCisgKiBYRU5TVE9SRSBGSUVMRCBBTkQgUEFUSCBOQU1FIFNUUklOR1Ms IEhFTFBFUlMuCisgKi8KKyNkZWZpbmUgWEVOU05EX0RSSVZFUl9OQU1FICAgICAgICAgICAgICAi dnNuZCIKKworI2RlZmluZSBYRU5TTkRfTElTVF9TRVBBUkFUT1IgICAgICAgICAgICI7IgorLyog UGF0aCBlbnRyaWVzICovCisjZGVmaW5lIFhFTlNORF9QQVRIX0RFVklDRSAgICAgICAgICAgICAg ImRldmljZSIKKyNkZWZpbmUgWEVOU05EX1BBVEhfU1RSRUFNICAgICAgICAgICAgICAic3RyZWFt IgorLyogRmllbGQgbmFtZXMgKi8KKyNkZWZpbmUgWEVOU05EX0ZJRUxEX1ZDQVJEX1NIT1JUX05B TUUgICAic2hvcnQtbmFtZSIKKyNkZWZpbmUgWEVOU05EX0ZJRUxEX1ZDQVJEX0xPTkdfTkFNRSAg ICAibG9uZy1uYW1lIgorI2RlZmluZSBYRU5TTkRfRklFTERfUklOR19SRUYgICAgICAgICAgICJy aW5nLXJlZiIKKyNkZWZpbmUgWEVOU05EX0ZJRUxEX0VWVF9DSE5MICAgICAgICAgICAiZXZlbnQt Y2hhbm5lbCIKKyNkZWZpbmUgWEVOU05EX0ZJRUxEX0RFVklDRV9OQU1FICAgICAgICAibmFtZSIK KyNkZWZpbmUgWEVOU05EX0ZJRUxEX1RZUEUgICAgICAgICAgICAgICAidHlwZSIKKyNkZWZpbmUg WEVOU05EX0ZJRUxEX1NUUkVBTV9JTkRFWCAgICAgICAiaW5kZXgiCisjZGVmaW5lIFhFTlNORF9G SUVMRF9DSEFOTkVMU19NSU4gICAgICAgImNoYW5uZWxzLW1pbiIKKyNkZWZpbmUgWEVOU05EX0ZJ RUxEX0NIQU5ORUxTX01BWCAgICAgICAiY2hhbm5lbHMtbWF4IgorI2RlZmluZSBYRU5TTkRfRklF TERfU0FNUExFX1JBVEVTICAgICAgICJzYW1wbGUtcmF0ZXMiCisjZGVmaW5lIFhFTlNORF9GSUVM RF9TQU1QTEVfRk9STUFUUyAgICAgInNhbXBsZS1mb3JtYXRzIgorI2RlZmluZSBYRU5TTkRfRklF TERfQlVGRkVSX1NJWkUgICAgICAgICJidWZmZXItc2l6ZSIKKworLyogU3RyZWFtIHR5cGUgZmll bGQgdmFsdWVzLiAqLworI2RlZmluZSBYRU5TTkRfU1RSRUFNX1RZUEVfUExBWUJBQ0sgICAgICJw IgorI2RlZmluZSBYRU5TTkRfU1RSRUFNX1RZUEVfQ0FQVFVSRSAgICAgICJjIgorLyogU2FtcGxl IHJhdGUgbWF4IHN0cmluZyBsZW5ndGggKi8KKyNkZWZpbmUgWEVOU05EX1NBTVBMRV9SQVRFX01B WF9MRU4gICAgICA2CisvKiBTYW1wbGUgZm9ybWF0IGZpZWxkIHZhbHVlcyAqLworI2RlZmluZSBY RU5TTkRfU0FNUExFX0ZPUk1BVF9NQVhfTEVOICAgIDI0CisKKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfUzhfU1RSICAgICAgICAiczgiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1U4X1NU UiAgICAgICAgInU4IgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMTZfTEVfU1RSICAgICJz MTZfbGUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9CRV9TVFIgICAgInMxNl9iZSIK KyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTE2X0xFX1NUUiAgICAidTE2X2xlIgorI2RlZmlu ZSBYRU5TTkRfUENNX0ZPUk1BVF9VMTZfQkVfU1RSICAgICJ1MTZfYmUiCisjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX1MyNF9MRV9TVFIgICAgInMyNF9sZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9G T1JNQVRfUzI0X0JFX1NUUiAgICAiczI0X2JlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9V MjRfTEVfU1RSICAgICJ1MjRfbGUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UyNF9CRV9T VFIgICAgInUyNF9iZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzMyX0xFX1NUUiAgICAi czMyX2xlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfQkVfU1RSICAgICJzMzJfYmUi CisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UzMl9MRV9TVFIgICAgInUzMl9sZSIKKyNkZWZp bmUgWEVOU05EX1BDTV9GT1JNQVRfVTMyX0JFX1NUUiAgICAidTMyX2JlIgorI2RlZmluZSBYRU5T TkRfUENNX0ZPUk1BVF9GMzJfTEVfU1RSICAgICJmbG9hdF9sZSIKKyNkZWZpbmUgWEVOU05EX1BD TV9GT1JNQVRfRjMyX0JFX1NUUiAgICAiZmxvYXRfYmUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9S TUFUX0Y2NF9MRV9TVFIgICAgImZsb2F0NjRfbGUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFU X0Y2NF9CRV9TVFIgICAgImZsb2F0NjRfYmUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0lF Qzk1OF9TVUJGUkFNRV9MRV9TVFIgImllYzk1OF9zdWJmcmFtZV9sZSIKKyNkZWZpbmUgWEVOU05E X1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFX1NUUiAiaWVjOTU4X3N1YmZyYW1lX2JlIgor I2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9NVV9MQVdfU1RSICAgICJtdV9sYXciCisjZGVmaW5l IFhFTlNORF9QQ01fRk9STUFUX0FfTEFXX1NUUiAgICAgImFfbGF3IgorI2RlZmluZSBYRU5TTkRf UENNX0ZPUk1BVF9JTUFfQURQQ01fU1RSICJpbWFfYWRwY20iCisjZGVmaW5lIFhFTlNORF9QQ01f Rk9STUFUX01QRUdfU1RSICAgICAgIm1wZWciCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0dT TV9TVFIgICAgICAgImdzbSIKKworLyoKKyAqIFNUQVRVUyBSRVRVUk4gQ09ERVMuCisgKi8KKy8q IE9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkLiAqLworI2RlZmluZSBYRU5TTkRfUlNQX05PVFNVUFAg ICAgICAgICAgICAgICgtMikKKy8qIE9wZXJhdGlvbiBmYWlsZWQgZm9yIHNvbWUgdW5zcGVjaWZp ZWQgcmVhc29uIChlLiBnLiAtRUlPKS4gKi8KKyNkZWZpbmUgWEVOU05EX1JTUF9FUlJPUiAgICAg ICAgICAgICAgICAoLTEpCisvKiBPcGVyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gKi8K KyNkZWZpbmUgWEVOU05EX1JTUF9PS0FZICAgICAgICAgICAgICAgICAwCisKKy8qCisgKiBBc3N1 bXB0aW9uczoKKyAqICAgbyB1c2FnZSBvZiBncmFudCByZWZlcmVuY2UgMCBhcyBpbnZhbGlkIGdy YW50IHJlZmVyZW5jZToKKyAqICAgICBncmFudCByZWZlcmVuY2UgMCBpcyB2YWxpZCwgYnV0IG5l dmVyIGV4cG9zZWQgdG8gYSBQViBkcml2ZXIsCisgKiAgICAgYmVjYXVzZSBvZiB0aGUgZmFjdCBp dCBpcyBhbHJlYWR5IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29sZS4KKyAqICAgbyBh bGwgcmVmZXJlbmNlcyBpbiB0aGlzIGRvY3VtZW50IHRvIHBhZ2Ugc2l6ZXMgbXVzdCBiZSB0cmVh dGVkCisgKiAgICAgYXMgcGFnZXMgb2Ygc2l6ZSBYRU5fUEFHRV9TSVpFIHVubGVzcyAgb3RoZXJ3 aXNlIG5vdGVkLgorICoKKyAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm90b2NvbCBiZXR3ZWVuIGZy b250ZW5kIGFuZCBiYWNrZW5kIGRyaXZlci4KKyAqCisgKiBUaGUgdHdvIGhhbHZlcyBvZiBhIFBh cmEtdmlydHVhbCBzb3VuZCBkcml2ZXIgY29tbXVuaWNhdGUgd2l0aAorICogZWFjaCBvdGhlciB1 c2luZyBhIHNoYXJlZCBwYWdlIGFuZCBhbiBldmVudCBjaGFubmVsLgorICogU2hhcmVkIHBhZ2Ug Y29udGFpbnMgYSByaW5nIHdpdGggcmVxdWVzdC9yZXNwb25zZSBwYWNrZXRzLgorICoKKyAqIEFs bCByZXNlcnZlZCBhbmQgcGFkZGluZyBmaWVsZHMgaW4gdGhlIHN0cnVjdHVyZXMgYmVsb3cgbXVz dCBiZSAwLgorICoKKyAqIEFsbCByZXF1ZXN0IHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGgg KDMyIG9jdGV0cykKKyAqIEFsbCByZXF1ZXN0IHBhY2tldHMgaGF2ZSBjb21tb24gaGVhZGVyOgor ICogICAgICAgICAgMCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgIDIgICAgICAg ICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgIHwgICAgIHN0cmVh bV9pZHggIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSsKKyAqICAgaWQgLSB1aW50MTZfdCwgcHJpdmF0ZSBndWVzdCB2YWx1ZSwg ZWNob2VkIGluIHJlc3BvbnNlCisgKiAgIG9wZXJhdGlvbiAtIHVpbnQ4X3QsIG9wZXJhdGlvbiBj b2RlCisgKiAgIHN0cmVhbV9pZHggLSB1aW50OF90LCBpbmRleCBvZiB0aGUgc3RyZWFtICgic3Ry ZWFtc19pZHgiIFhlblN0b3JlIGVudHJ5CisgKiAgICAgb2YgdGhlIHN0cmVhbSkKKyAqCisgKgor ICogUmVxdWVzdCBvcGVuIC0gb3BlbiBhIFBDTSBzdHJlYW0gZm9yIHBsYXliYWNrIG9yIGNhcHR1 cmU6CisgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgMiAg ICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBYRU5TTkRfT1BfT1BFTiAgfCAgICAg c3RyZWFtX2lkeCAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor ICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGNtX3JhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKworICogfCAgcGNtX2Zvcm1hdCAgICAgfCAgcGNtX2NoYW5uZWxzICAgfCAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3ogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAg ICAgICBncmVmX2RpcmVjdG9yeV9zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICog Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNl cnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t KworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIHBjbV9yYXRlIC0gdWludDMyX3Qs IHN0cmVhbSBkYXRhIHJhdGUsIEh6CisgKiBwY21fZm9ybWF0IC0gdWludDhfdCwgWEVOU05EX1BD TV9GT1JNQVRfWFhYIHZhbHVlCisgKiBwY21fY2hhbm5lbHMgLSB1aW50OF90LCBudW1iZXIgb2Yg Y2hhbm5lbHMgb2YgdGhpcyBzdHJlYW0KKyAqIGJ1ZmZlcl9zeiAtIHVpbnQzMl90LCBidWZmZXIg c2l6ZSB0byBiZSBhbGxvY2F0ZWQgaW4gb2N0ZXRzCisgKiBncmVmX2RpcmVjdG9yeV9zdGFydCAt IGdyYW50X3JlZl90LCBhIHJlZmVyZW5jZSB0byB0aGUgZmlyc3Qgc2hhcmVkIHBhZ2UKKyAqICAg ZGVzY3JpYmluZyBzaGFyZWQgYnVmZmVyIHJlZmVyZW5jZXMuIEF0IGxlYXN0IG9uZSBwYWdlIGV4 aXN0cy4gSWYgc2hhcmVkCisgKiAgIGJ1ZmZlciBzaXplIGV4Y2VlZHMgd2hhdCBjYW4gYmUgYWRk cmVzc2VkIGJ5IHRoaXMgc2luZ2xlIHBhZ2UsIHRoZW4KKyAqICAgcmVmZXJlbmNlIHRvIHRoZSBu ZXh0IHBhZ2UgbXVzdCBiZSBzdXBwbGllZCAoc2VlIGdyZWZfZGlyX25leHRfcGFnZSBiZWxvdykK KyAqLworCitzdHJ1Y3QgeGVuc25kX29wZW5fcmVxIHsKKyAgICB1aW50MzJfdCBwY21fcmF0ZTsg LyogaW4gSHogKi8KKyAgICB1aW50OF90IHBjbV9mb3JtYXQ7CisgICAgdWludDhfdCBwY21fY2hh bm5lbHM7CisgICAgdWludDE2X3QgcmVzZXJ2ZWQ7CisgICAgdWludDMyX3QgYnVmZmVyX3N6Owor ICAgIGdyYW50X3JlZl90IGdyZWZfZGlyZWN0b3J5X3N0YXJ0OworfTsKKworLyoKKyAqIFNoYXJl ZCBwYWdlIGZvciBYRU5TTkRfT1BfT1BFTiBidWZmZXIgZGVzY3JpcHRvciAoZ3JlZl9kaXJlY3Rv cnkgaW4gdGhlCisgKiAgIHJlcXVlc3QpIGVtcGxveXMgYSBsaXN0IG9mIHBhZ2VzLCBkZXNjcmli aW5nIGFsbCBwYWdlcyBvZiB0aGUgc2hhcmVkIGRhdGEKKyAqICAgYnVmZmVyOgorICogICAgICAg ICAgMCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAg MyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAg ICAgICAgICAgIGdyZWZfZGlyX25leHRfcGFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK KyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdyZWZbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbaV0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAq ICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdy ZWZbTiAtMV0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSsKKyAqCisgKiBncmVmX2Rpcl9uZXh0X3BhZ2UgLSBncmFudF9yZWZfdCwgcmVmZXJlbmNlIHRv IHRoZSBuZXh0IHBhZ2UgZGVzY3JpYmluZworICogICBwYWdlIGRpcmVjdG9yeS4gTXVzdCBiZSAw IGlmIG5vIG1vcmUgcGFnZXMgaW4gdGhlIGxpc3QuCisgKiBncmVmW2ldIC0gZ3JhbnRfcmVmX3Qs IHJlZmVyZW5jZSB0byBhIHNoYXJlZCBwYWdlIG9mIHRoZSBidWZmZXIKKyAqICAgYWxsb2NhdGVk IGF0IFhFTlNORF9PUF9PUEVOCisgKgorICogTnVtYmVyIG9mIGdyYW50X3JlZl90IGVudHJpZXMg aW4gdGhlIHdob2xlIHBhZ2UgZGlyZWN0b3J5IGlzIG5vdAorICogcGFzc2VkLCBidXQgaW5zdGVh ZCBjYW4gYmUgY2FsY3VsYXRlZCBhczoKKyAqICAgbnVtX2dyZWZzX3RvdGFsID0gKFhFTlNORF9P UF9PUEVOLmJ1ZmZlcl9zeiArIFhFTl9QQUdFX1NJWkUgLSAxKSAvCisgKiAgICAgICBYRU5fUEFH RV9TSVpFCisgKi8KKworc3RydWN0IHhlbnNuZF9wYWdlX2RpcmVjdG9yeSB7CisgICAgZ3JhbnRf cmVmX3QgZ3JlZl9kaXJfbmV4dF9wYWdlOworICAgIGdyYW50X3JlZl90IGdyZWZbMV07IC8qIFZh cmlhYmxlIGxlbmd0aCAqLworfTsKKworLyoKKyAqICBSZXF1ZXN0IGNsb3NlIC0gY2xvc2UgYW4g b3BlbmVkIHBjbSBzdHJlYW06CisgKiAgICAgICAgICAwICAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBYRU5TTkRf T1BfQ0xPU0UgfCAgICAgc3RyZWFtX2lkeCAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAor ICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKworICovCisKKy8qCisgKiBSZXF1ZXN0IHJlYWQvd3JpdGUgLSB1c2VkIGZvciByZWFkIChm b3IgY2FwdHVyZSkgb3Igd3JpdGUgKGZvciBwbGF5YmFjayk6CisgKiAgICAgICAgICAwICAgICAg ICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgMiAgICAgICAgICAgICAgICAzICAgICAgICBv Y3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgaWQgICAgICAg ICAgICAgICAgfCAgICBvcGVyYXRpb24gICAgfCAgICAgc3RyZWFtX2lkeCAgfAorICogKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICog fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGVuZ3RoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogKy0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAorICogKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIG9wZXJhdGlvbiAtIFhF TlNORF9PUF9SRUFEIGZvciByZWFkIG9yIFhFTlNORF9PUF9XUklURSBmb3Igd3JpdGUKKyAqIG9m ZnNldCAtIHVpbnQzMl90LCByZWFkIG9yIHdyaXRlIGRhdGEgb2Zmc2V0IHdpdGhpbiB0aGUgc2hh cmVkIGJ1ZmZlcgorICogICBwYXNzZWQgd2l0aCBYRU5TTkRfT1BfT1BFTiByZXF1ZXN0CisgKiBs ZW5ndGggLSB1aW50MzJfdCwgcmVhZCBvciB3cml0ZSBkYXRhIGxlbmd0aAorICovCisKK3N0cnVj dCB4ZW5zbmRfcndfcmVxIHsKKyAgICB1aW50MzJfdCBvZmZzZXQ7CisgICAgdWludDMyX3QgbGVu OworfTsKKworLyoKKyAqIFJlcXVlc3Qgc2V0L2dldCB2b2x1bWUgLSBzZXQvZ2V0IGNoYW5uZWxz JyB2b2x1bWUgb2YgdGhlIHN0cmVhbSBnaXZlbjoKKyAqICAgICAgICAgIDAgICAgICAgICAgICAg ICAgIDEgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0Cisg KiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICBpZCAgICAgICAgICAgICAg ICB8ICAgIG9wZXJhdGlvbiAgICB8ICAgICBzdHJlYW1faWR4ICB8CisgKiArLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAr LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rCisgKgorICogb3BlcmF0aW9uIC0gWEVOU05EX09QX1NFVF9WT0xVTUUg Zm9yIHZvbHVtZSBzZXQKKyAqICAgb3IgWEVOU05EX09QX0dFVF9WT0xVTUUgZm9yIHZvbHVtZSBn ZXQKKyAqIEJ1ZmZlciBwYXNzZWQgd2l0aCBYRU5TTkRfT1BfT1BFTiBpcyB1c2VkIHRvIGV4Y2hh bmdlIHZvbHVtZQorICogdmFsdWVzOgorICoKKyAqICAgICAgICAgIDAgICAgICAgICAgICAgICAg IDEgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiAr LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5u ZWxbMF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0r CisgKiArL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxbaV0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisgKiArL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgIGNoYW5uZWxbWEVOU05EX09QX09QRU4u cGNtX2NoYW5uZWxzIC0gMV0gICAgICAgICAgICAgICB8CisgKiArLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rCisg KgorICogY2hhbm5lbFtpXSAtIHNpbnQzMl90LCB2b2x1bWUgb2YgaS10aCBjaGFubmVsCisgKiBW b2x1bWUgaXMgZXhwcmVzc2VkIGFzIGEgc2lnbmVkIHZhbHVlIGluIHN0ZXBzIG9mIDAuMDAxIGRC LAorICogd2hpbGUgMCBiZWluZyAwIGRCLgorICovCisKKy8qCisgKiBSZXF1ZXN0IG11dGUvdW5t dXRlIC0gbXV0ZS91bm11dGUgc3RyZWFtOgorICogICAgICAgICAgMCAgICAgICAgICAgICAgICAg MSAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwg ICAgb3BlcmF0aW9uICAgIHwgICAgIHN0cmVhbV9pZHggIHwKKyAqICstLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsK KyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSsKKyAqCisgKiBvcGVyYXRpb24gLSBYRU5TTkRfT1BfTVVURSBmb3IgbXV0ZSBv ciBYRU5TTkRfT1BfVU5NVVRFIGZvciB1bm11dGUKKyAqIEJ1ZmZlciBwYXNzZWQgd2l0aCBYRU5T TkRfT1BfT1BFTiBpcyB1c2VkIHRvIGV4Y2hhbmdlIG11dGUvdW5tdXRlCisgKiB2YWx1ZXM6Cisg KgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbFswXSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqICsvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAq ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh bm5lbFtpXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSsKKyAqICsvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAg ICAgICAgICAgY2hhbm5lbFtYRU5TTkRfT1BfT1BFTi5wY21fY2hhbm5lbHMgLSAxXSAgICAgICAg ICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBjaGFubmVsW2ldIC0gdWludDhf dCwgbm9uLXplcm8gaWYgaS10aCBjaGFubmVsIG5lZWRzIHRvIGJlIG11dGVkL3VubXV0ZWQKKyAq LworCisvKgorICogQWxsIHJlc3BvbnNlIHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDMy IG9jdGV0cykKKyAqCisgKiBSZXNwb25zZSBmb3IgYWxsIHJlcXVlc3RzOgorICogICAgICAgICAg MCAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAgMyAg ICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgIGlk ICAgICAgICAgICAgICAgIHwgICAgb3BlcmF0aW9uICAgIHwgICAgIHN0cmVhbV9pZHggIHwKKyAq ICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICBzdGF0dXMgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICst LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLSsKKyAqCisgKiBpZCAtIHVpbnQxNl90LCBjb3BpZWQgZnJvbSB0aGUgcmVx dWVzdAorICogc3RyZWFtX2lkeCAtIHVpbnQ4X3QsIGNvcGllZCBmcm9tIHJlcXVlc3QKKyAqIG9w ZXJhdGlvbiAtIHVpbnQ4X3QsIFhFTlNORF9PUF8qIC0gY29waWVkIGZyb20gcmVxdWVzdAorICog c3RhdHVzIC0gaW50OF90LCByZXNwb25zZSBzdGF0dXMgKFhFTlNORF9SU1BfKikKKyAqLworCitz dHJ1Y3QgeGVuc25kX3JlcSB7CisgICAgdWludDE2X3QgaWQ7CisgICAgdWludDhfdCBvcGVyYXRp b247CisgICAgdWludDhfdCBzdHJlYW1faWR4OworICAgIHVpbnQzMl90IHJlc2VydmVkOworICAg IHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHhlbnNuZF9vcGVuX3JlcSBvcGVuOworICAgICAgICBz dHJ1Y3QgeGVuc25kX3J3X3JlcSBydzsKKyAgICAgICAgdWludDhfdCBwYWRkaW5nWzI0XTsKKyAg ICB9IG9wOworfTsKKworc3RydWN0IHhlbnNuZF9yZXNwIHsKKyAgICB1aW50MTZfdCBpZDsKKyAg ICB1aW50OF90IG9wZXJhdGlvbjsKKyAgICB1aW50OF90IHN0cmVhbV9pZHg7CisgICAgaW50OF90 IHN0YXR1czsKKyAgICB1aW50OF90IHBhZGRpbmdbMjddOworfTsKKworREVGSU5FX1JJTkdfVFlQ RVMoeGVuX3NuZGlmLCBzdHJ1Y3QgeGVuc25kX3JlcSwgc3RydWN0IHhlbnNuZF9yZXNwKTsKKwor I2VuZGlmIC8qIF9fWEVOX1BVQkxJQ19JT19TTkRJRl9IX18gKi8KLS0gCjIuNy40CgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==