From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH RESEND v17] xen/sndif: Add sound-device ABI Date: Wed, 8 Feb 2017 10:48:45 +0200 Message-ID: <1486543725-3357-2-git-send-email-andr2000@gmail.com> References: <1486543725-3357-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cbNvt-0002yi-5Z for xen-devel@lists.xenproject.org; Wed, 08 Feb 2017 08:48:57 +0000 Received: by mail-wm0-f68.google.com with SMTP id c85so32040323wmi.1 for ; Wed, 08 Feb 2017 00:48:54 -0800 (PST) In-Reply-To: <1486543725-3357-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: Iurii Konovalenko , vlad.babchuk@gmail.com, Oleksandr Dmytryshyn , Oleksandr Andrushchenko , andrii.anisov@gmail.com, olekstysh@gmail.com, andr2000@gmail.com, al1img@gmail.com, Oleksandr Grytsov , joculator@gmail.com List-Id: xen-devel@lists.xenproject.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKQWRkIEFCSSBmb3IgdGhlIHR3byBoYWx2ZXMgb2YgYSBwYXJhLXZpcnR1YWxpemVk CnNvdW5kIGRyaXZlciB0byBjb21tdW5pY2F0ZSB3aXRoIGVhY2ggb3RoZXIuCgpUaGUgQUJJIGFs bG93cyBpbXBsZW1lbnRpbmcgYXVkaW8gcGxheWJhY2sgYW5kIGNhcHR1cmUgYXMKd2VsbCBhcyB2 b2x1bWUgY29udHJvbCBhbmQgcG9zc2liaWxpdHkgdG8gbXV0ZS91bm11dGUKYXVkaW8gc291cmNl cy4KCk5vdGU6IGRlcGVuZGluZyBvbiB0aGUgdXNlLWNhc2UgYmFja2VuZCBjYW4gZXhwb3NlIG1v cmUgc291bmQKY2FyZHMgYW5kIFBDTSBkZXZpY2VzL3N0cmVhbXMgdGhhbiB0aGUgdW5kZXJseWlu ZyBIVyBwaHlzaWNhbGx5CmhhcyBieSBlbXBsb3lpbmcgU1cgbWl4ZXJzLCBjb25maWd1cmluZyB2 aXJ0dWFsIHNvdW5kIHN0cmVhbXMsCmNoYW5uZWxzIGV0Yy4gVGh1cywgYWxsb3dpbmcgZmluZSB0 dW5uZWQgY29uZmlndXJhdGlvbnMgcGVyCmZyb250ZW5kLgoKU2lnbmVkLW9mZi1ieTogT2xla3Nh bmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgpTaWdu ZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgR3J5dHNvdiA8b2xla3NhbmRyX2dyeXRzb3ZAZXBhbS5jb20+ ClNpZ25lZC1vZmYtYnk6IE9sZWtzYW5kciBEbXl0cnlzaHluIDxvbGVrc2FuZHIuZG15dHJ5c2h5 bkBnbG9iYWxsb2dpYy5jb20+ClNpZ25lZC1vZmYtYnk6IEl1cmlpIEtvbm92YWxlbmtvIDxpdXJp aS5rb25vdmFsZW5rb0BnbG9iYWxsb2dpYy5jb20+CgotLS0KQ2hhbmdlcyBzaW5jZSB2MToKICog cmVtb3ZlZCBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkgZnJvbSBhbGwgc3RydWN0dXJlcyBk ZWZpbml0aW9ucwoKQ2hhbmdlcyBzaW5jZSB2MjoKICogcmVtb3ZlZCBhbGwgQyBzdHJ1Y3R1cmVz CiAqIGFkZGVkIHByb3RvY29sIGRlc2NyaXB0aW9uIGJldHdlZW4gZnJvbnRlbmQgYW5kIGJhY2tl bmQgZHJpdmVycwoKQ2hhbmdlcyBzaW5jZSB2MzoKICogZml4ZWQgc29tZSB0eXBvcwogKiByZW5h bWVkIFhFTlNORF9QQ01fRk9STUFUX0ZMT0FUXyoqIHRvIFhFTlNORF9QQ01fRk9STUFUX0YzMl8q KgogKiByZW5hbWVkIFhFTlNORF9QQ01fRk9STUFUX0ZMT0FUNjRfKiogdG8gWEVOU05EX1BDTV9G T1JNQVRfRjY0XyoqCiAqIGFkZGVkICdpZCcgZmllbGQgdG8gdGhlIHJlcXVlc3QgYW5kIHJlc3Bv bnNlIHBhY2tldHMKICogcmVuYW1lZCAnc3RyZWFtX2lkJyB0byAnc3RyZWFtJyBpbiB0aGUgcGFj a2V0cyBkZXNjcmlwdGlvbgogKiByZW5hbWVkICdwY21fZGF0YV9yYXRlJyB0byAncGNtX3JhdGUn IGluIHRoZSBwYWNrZXRzIGRlc2NyaXB0aW9uCiAqIHJlbmFtZWQgJ3BjbV9zdHJlYW1fdHlwZScg dG8gJ3BjbV90eXBlJyBpbiB0aGUgcGFja2V0cyBkZXNjcmlwdGlvbgogKiByZW1vdmVkICdzdHJl YW1faWQnIGZpZWxkIGZyb20gdGhlIHJlc3BvbnNlIHBhY2tldHMKCkNoYW5nZXMgc2luY2UgdjQ6 CiAqIHJlbmFtZWQgJ3N0cmVhbV9pZCcgYmFjayB0byB0aGUgdG8gJ3N0cmVhbScgaW4gdGhlIHBh Y2tldHMgZGVzY3JpcHRpb24KICogbW92ZWQgJ2lkJyBmaWVsZCB0byB0aGUgdXBwZXIgcG9zaXRp b24gaW4gdGhlIHJlc3BvbnNlIHBhY2tldHMKCkNoYW5nZXMgc2luY2UgdjU6CiAqIFNsaWdodGx5 IHJld29ya2VkIHJlcXVlc3QvcmVzcG9uc2UgcGFja2V0cwogKiBTaXplIG9mIHRoZSByZXF1ZXN0 L3Jlc3BvbnNlIHBhY2tldCBpcyBjaGFuZ2VkIHRvIHRoZSA2NCBieXRlcwogKiBOb3cgcGFyYW1l dGVycyBmb3IgdGhlIFhFTlNORF9PUF9TRVRfVk9MVU1FL1hFTlNORF9PUF9HRVRfVk9MVU1FIGFy ZQogICBwYXNzZWQgdmlhIHNoYXJlZCBwYWdlCiAqIEFkZGVkIHBhcmFtZXRlcnMgZm9yIHRoZSBY ZW5CdXMgbm9kZXMgKG5vdyBlYWNoIHN0cmVhbSBjYW4gYmUgbWFwcGVkCiAgIHRvIHRoZSBkZWZp bmVkIHNvdW5kIGRldmljZSBpbiB0aGUgYmFja2VuZCB1c2luZyB0aG9zZSBwYXJhbWV0ZXJzKQog KiBBZGRlZCBYZW5CdXMgc3RhdGUgZGlhZ3JhbXMgZGVzY3JpcHRpb24KCkNoYW5nZXMgc2luY2Ug djY6CiAqIFJld29ya2VkIHN0cmVhbXMgZGVzY3JpcHRpb24gIGluIHRoZSBCYWNrZW5kIFhlbkJ1 cyBOb2RlcwoKQ2hhbmdlcyBzaW5jZSB2NzoKICogcmUtd29ya2VkIGJhY2tlbmQgZGV2aWNlIHBh cmFtZXRlcnMgdG8gYmUgbW9yZSBnZW5lcmljIGFuZCBmbGV4aWJsZQogKiBleHRlbmRlZCBmcm9u dGVuZCBkZXZpY2UgcGFyYW1ldGVycwogKiBzbGlnaHRseSB1cGRhdGVkIHN0YXRlIG1hY2hpbmUg ZGVzY3JpcHRpb24gYWRkZWQgbXV0ZS91bm11dGUgY29tbWFuZHMKICogYWRkZWQgY29uc3RhbnRz IGZvciBYZW5TdG9yZSBjb25maWd1cmF0aW9uIHN0cmluZ3MKICAgKGZpZWxkcywgUENNIGZvcm1h dHMgZXRjLikKICogY2hhbmdlZCByZXF1ZXN0L3Jlc3BvbnNlIHN0cnVjdHVyZSBzaXplIGZyb20g NjQgb2N0ZXRzIHRvIDE2CiAqIGludHJvZHVjZWQgZHluYW1pYyBidWZmZXIgYWxsb2NhdGlvbiBp bnN0ZWFkIG9mCiAgIHN0YXRpYyBYRU5TTkRfTUFYX1BBR0VTX1BFUl9SRVFVRVNUCiAqIHJlLXdv cmtlZCBvcGVuIHJlcXVlc3QgdG8gYWxsb3cgZHluYW1pYyBidWZmZXIgYWxsb2NhdGlvbgogKiBy ZS13b3JrZWQgcmVhZC93cml0ZS92b2x1bWUgcmVxdWVzdHMsIHNvIHRoZXkgZG9uJ3QgcGFzcyBn cmVmczoKICAgYnVmZmVyIGZyb20gdGhlIG9wZW4gcmVxdWVzdCBpcyB1c2VkIGZvciB0aGVzZSBv cGVyYXRpb25zIHRvIHBhc3MgZGF0YQogKiBzcGVjaWZpZWQgdHlwZSBvZiB0aGUgdm9sdW1lIHZh bHVlIHRvIGJlIGEgc2lnbmVkIHZhbHVlIGluIHN0ZXBzCiAgIG9mIDAuMDAxIGRCbSwgd2hpbGUg MCBiZWluZyAwZEJtLgogKiBhZGRlZCBMaW51eCBpbmNsdWRlIGZpbGUgd2l0aCBzdHJ1Y3R1cmUg ZGVmaW5pdGlvbnMKCkNoYW5nZXMgc2luY2Ugdjg6CiAqIGNoYW5nZWQgZnJvbnRlbmQtaWQgdG8g ZnJvbnRlbmRfaWQKICogc2luZ2xlIHNvdW5kIGNhcmQgc3VwcG9ydCwgY29uZmlndXJlZCB3aXRo IGJ1bmNoIG9mCiAgIGRldmljZXMvc3RyZWFtcwogKiBjbGFyaWZ1Y2F0aW9uIG1hZGUgb24gc2Ft cGxlIHJhdGVzIGFuZCBmb3JtYXRzIGV4cHJlc3NlZCBhcwogICBkZWNpbWFscyB3L28gYW55IHBh cnRpY3VsYXIgb3JkZXJpbmcKICogcHV0IGRlc2NyaXB0aW9uIG9mIG1pZ3JhdGlvbi9kaXNjb25u ZWN0aW9uIHN0YXRlCiAqIHJlcGxhY2VkIF9fYXR0cmlidXRlX18oKHBhY2tlZCkpIHRvIF9fcGFj a2VkCiAqIGNoYW5nZWQgcGFkZGluZyBvZiByaW5nIHN0cnVjdHVyZXMgdG8gNjQgdG8gZml0IGNh Y2hlIGxpbmUKICogcmVtb3ZlZWQgI2lmZGVmIF9fS0VSTkVMCiAqIGV4cGxpY2l0bHkgc3RhdGVk IHdoaWNoIGluZGljZXMgaW4gWGVuU3RvcmUgY29uZmlndXJhdGlvbgogICBhcmUgY29udGlndW91 cwogKiBhZGRlZCBkZXNjcmlwdGlvbiB0byB3aGF0IGZyb250ZW5kJ3MgZGVmYXVsdHMgYXJlCiAq IG1hZGUgbmFtZXMgb2YgdmlydHVhbCBjYXJkL2RldmljZXMgb3B0aW9uYWwKICogcmVtb3ZlZCBQ Q01fRk9STUFUX1NQRUNJQUwKICogY2hhbmdlZCB2b2x1bWUgdW5pdHMgZnJvbSBkQm0gdG8gZEIK CkNoYW5nZXMgc2luY2Ugdjk6CiAqIHJlbW92ZWQgc25kaWZfbGludXguaAogKiBtb3ZlZCBhbGwg c3RydWN0dXJlcyBmcm9tIHNuZGlmX2xpbnV4LmggdG8gc25kaWYuaAogKiBzdHJ1Y3R1cmVzIHBh ZGRlZCB3aGVyZSBuZWVkZWQKICogZml4ZWQgSHogY29tbWVudAoKQ2hhbmdlcyBzaW5jZSB2MTA6 CiAqIGZpeGVkIHRhYnMgdG8gNCBzcGFjZXMgdG8gY29tcGx5IHdpdGggWGVuIGNvZGluZyBzdHls ZQogKiBhZGRlZCBwbGFjZWhvbGRlcnMgdG8gZW1wdHkgc3RydWN0dXJlcyAoQzg5IGNvbmNlcm4p CiAqIGFkZGVkIG1pc3NpbmcgaGVhZGVyIGluY2x1ZGVzCgpDaGFuZ2VzIHNpbmNlIHYxMToKICog YWRkZWQgWEVOU05EX1JTUF9OT1RTVVBQIGVycm9yIGNvZGUKICogY2hhbmdlZCBncmVmWzBdIHRv IGdyZWZbMV0gd2l0aCBjb21tZW50CiAqIG1vZGlmaWVkIGNvbW1lbnRzIG9uIGVtcHR5IHN0cnVj dHVyZXMKICogcmVtb3ZlZCAiX18iIGZyb20gbWVtYmVyIG5hbWVzCiAqIGZpeGVkIGluZGVudGF0 aW9uCiAqIGFkZGVkIHBhZGRpbmcgaW4gdW5pb24geGVuc25kX3Jlc3AKICogY2hhbmdlZCBfX1hF Tl9QVUJMSUNfSU9fWEVOU05EX0hfXyB0byBfX1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fCgpDaGFu Z2VzIHNpbmNlIHYxMjoKICogY2hhbmdlZCBpbmRlbnRhdGlvbiBmb3IgZGVmaW5lcwogKiBtaXNz ZWQgIjsiIGFmdGVyIGdyZWZbMV0KICogZG9jdW1lbnRhdGlvbiBjaGFuZ2VzCiAqIGNoYW5nZWQg cmVxL3Jlc3Agc3RydWN0dXJlcwogKiBjaGFuZ2VkIHhlbnNuZF9wYWdlX2RpcmVjdG9yeSBzdHJ1 Y3R1cmUKICogcGFzcyBidWZmZXIgc2l6ZSBpbiBvcGVuIHJlcXVlc3QKCkNoYW5nZXMgc2luY2Ug djEzOgogKiBub3RlIG9uIHVzYWdlIG9mIGdyYW50IHJlZiAwCiAqIGFsbCBwYWdlIHNpemVzIGFy ZSBYRU5fUEFHRV9TSVpFCiAqIHBhZGRpbmcvcmVzZXJ2ZWQgY2xlYW51cC9maXhlcwogKiByZW1v dmVkIGVtcHR5IHN0cnVjdHVyZXMKCkNoYW5nZXMgc2luY2UgdjE0OgogKiB0dXJuIHBhZGRpbmcg aW50byByZXNlcnZlZAoKQ2hhbmdlcyBzaW5jZSB2MTU6CiAqIHByb3RvY29sIGRlc2NyaXB0aW9u IHJld29ya2VkCiAqIGFkZGVkIG9mZnNldCB0byBibG9jayBub3RhdGlvbnMKICogdXNlZCAtWEVO X0VYWCBmb3Igc3RhdHVzIHJlcG9ydGluZwogKiBhZGRlZCBwcm90b2NvbCB2ZXJzaW9uaW5nCiAq IHJlbW92ZWQgc3RyZWFtX2lkeCBmcm9tIHRoZSBwYWNrZXQgc3RydWN0dXJlCiAqIGNoYW5nZWQg eGVuc3RvcmUgcGF0aHMKCkNoYW5nZXMgc2luY2UgdjE2OgogKiB1cGRhdGVkIFhlblN0b3JlIHBh dGggcGF0dGVybgogKiByZW1vdmVkIHVudXNlZCBYZW5TdG9yZSBoZWxwZXIgc3RyaW5nIGNvbnN0 YW50cwogKiByZW5hbWVkIGdyZWZfZGlyZWN0b3J5X3N0YXJ0IHRvIGdyZWZfZGlyZWN0b3J5CiAq IGFkZGVkIG9mZnNldC9sZW5ndGggdG8gdm9sdW1lLCBtdXRlLCB1bm11dGUKICogYWRkZWQgbm90 ZSBvbiBhc3luYyB1c2UtY2FzZXMKICogc3RydWN0IHhlbnNuZF9yd19yZXEgaXMgbm93IHVzZWQg Zm9yIHJlYWQvd3JpdGUsCiAgIHZvbHVtZSBzZXQvZ2V0LCBtdXRlLCB1bm11dGUKLS0tCgpTaWdu ZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVu a29AZXBhbS5jb20+Ci0tLQogeGVuL2luY2x1ZGUvcHVibGljL2lvL3NuZGlmLmggfCA3NDkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwg NzQ5IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vaW5jbHVkZS9wdWJsaWMv aW8vc25kaWYuaAoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9pby9zbmRpZi5oIGIv eGVuL2luY2x1ZGUvcHVibGljL2lvL3NuZGlmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi40MzM1ODI5YThlM2IKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVk ZS9wdWJsaWMvaW8vc25kaWYuaApAQCAtMCwwICsxLDc0OSBAQAorLyoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICogc25kaWYuaAorICoKKyAqIFVuaWZpZWQgc291bmQtZGV2aWNlIEkvTyBpbnRlcmZh Y2UgZm9yIFhlbiBndWVzdCBPU2VzLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqIG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLCB0bworICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUKKyAqIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9v cgorICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKKyAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAq IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoK KyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9G IEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNI QUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFO WSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFD VElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIw MTMtMjAxNSBHbG9iYWxMb2dpYyBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBFUEFN IFN5c3RlbXMgSW5jLgorICoKKyAqIEF1dGhvcnM6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxv bGVrc2FuZHJfYW5kcnVzaGNoZW5rb0BlcGFtLmNvbT4KKyAqICAgICAgICAgIE9sZWtzYW5kciBH cnl0c292IDxvbGVrc2FuZHJfZ3J5dHNvdkBlcGFtLmNvbT4KKyAqICAgICAgICAgIE9sZWtzYW5k ciBEbXl0cnlzaHluIDxvbGVrc2FuZHIuZG15dHJ5c2h5bkBnbG9iYWxsb2dpYy5jb20+CisgKiAg ICAgICAgICBJdXJpaSBLb25vdmFsZW5rbyA8aXVyaWkua29ub3ZhbGVua29AZ2xvYmFsbG9naWMu Y29tPgorICovCisKKyNpZm5kZWYgX19YRU5fUFVCTElDX0lPX1NORElGX0hfXworI2RlZmluZSBf X1hFTl9QVUJMSUNfSU9fU05ESUZfSF9fCisKKyNpbmNsdWRlICJyaW5nLmgiCisjaW5jbHVkZSAi Li4vZ3JhbnRfdGFibGUuaCIKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAg ICAgICAgICAgICBGZWF0dXJlIGFuZCBQYXJhbWV0ZXIgTmVnb3RpYXRpb24KKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgorICoKKyAqIEZyb250LT5iYWNrIG5vdGlmaWNhdGlvbnM6IHdoZW4gZW5xdWV1 aW5nIGEgbmV3IHJlcXVlc3QsIHNlbmRpbmcgYQorICogbm90aWZpY2F0aW9uIGNhbiBiZSBtYWRl IGNvbmRpdGlvbmFsIG9uIHhlbnNuZF9yZXEgKGkuZS4sIHRoZSBnZW5lcmljCisgKiBob2xkLW9m ZiBtZWNoYW5pc20gcHJvdmlkZWQgYnkgdGhlIHJpbmcgbWFjcm9zKS4gQmFja2VuZHMgbXVzdCBz ZXQKKyAqIHhlbnNuZF9yZXEgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNpbmcgUklOR19GSU5BTF9D SEVDS19GT1JfUkVRVUVTVFMoKSkuCisgKgorICogQmFjay0+ZnJvbnQgbm90aWZpY2F0aW9uczog d2hlbiBlbnF1ZXVpbmcgYSBuZXcgcmVzcG9uc2UsIHNlbmRpbmcgYQorICogbm90aWZpY2F0aW9u IGNhbiBiZSBtYWRlIGNvbmRpdGlvbmFsIG9uIHhlbnNuZF9yZXNwIChpLmUuLCB0aGUgZ2VuZXJp YworICogaG9sZC1vZmYgbWVjaGFuaXNtIHByb3ZpZGVkIGJ5IHRoZSByaW5nIG1hY3JvcykuIEZy b250ZW5kcyBtdXN0IHNldAorICogeGVuc25kX3Jlc3AgYXBwcm9wcmlhdGVseSAoZS5nLiwgdXNp bmcgUklOR19GSU5BTF9DSEVDS19GT1JfUkVTUE9OU0VTKCkpLgorICoKKyAqIFRoZSB0d28gaGFs dmVzIG9mIGEgcGFyYS12aXJ0dWFsIHNvdW5kIGNhcmQgZHJpdmVyIHV0aWxpemUgbm9kZXMgd2l0 aGluCisgKiBYZW5TdG9yZSB0byBjb21tdW5pY2F0ZSBjYXBhYmlsaXRpZXMgYW5kIHRvIG5lZ290 aWF0ZSBvcGVyYXRpbmcgcGFyYW1ldGVycy4KKyAqIFRoaXMgc2VjdGlvbiBlbnVtZXJhdGVzIHRo ZXNlIG5vZGVzIHdoaWNoIHJlc2lkZSBpbiB0aGUgcmVzcGVjdGl2ZSBmcm9udCBhbmQKKyAqIGJh Y2tlbmQgcG9ydGlvbnMgb2YgWGVuU3RvcmUsIGZvbGxvd2luZyB0aGUgWGVuQnVzIGNvbnZlbnRp b24uCisgKgorICogQWxsIGRhdGEgaW4gWGVuU3RvcmUgaXMgc3RvcmVkIGFzIHN0cmluZ3MuIE5v ZGVzIHNwZWNpZnlpbmcgbnVtZXJpYworICogdmFsdWVzIGFyZSBlbmNvZGVkIGluIGRlY2ltYWwu IEludGVnZXIgdmFsdWUgcmFuZ2VzIGxpc3RlZCBiZWxvdyBhcmUKKyAqIGV4cHJlc3NlZCBhcyBm aXhlZCBzaXplZCBpbnRlZ2VyIHR5cGVzIGNhcGFibGUgb2Ygc3RvcmluZyB0aGUgY29udmVyc2lv bgorICogb2YgYSBwcm9wZXJseSBmb3JtYXRlZCBub2RlIHN0cmluZywgd2l0aG91dCBsb3NzIG9m IGluZm9ybWF0aW9uLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAg ICAgICAgICAgICAgRXhhbXBsZSBjb25maWd1cmF0aW9uCisgKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq CisgKgorICogTm90ZTogZGVwZW5kaW5nIG9uIHRoZSB1c2UtY2FzZSBiYWNrZW5kIGNhbiBleHBv c2UgbW9yZSBzb3VuZCBjYXJkcyBhbmQKKyAqIFBDTSBkZXZpY2VzL3N0cmVhbXMgdGhhbiB0aGUg dW5kZXJseWluZyBIVyBwaHlzaWNhbGx5IGhhcyBieSBlbXBsb3lpbmcKKyAqIFNXIG1peGVycywg Y29uZmlndXJpbmcgdmlydHVhbCBzb3VuZCBzdHJlYW1zLCBjaGFubmVscyBldGMuCisgKgorICog VGhpcyBpcyBhbiBleGFtcGxlIG9mIGJhY2tlbmQgYW5kIGZyb250ZW5kIGNvbmZpZ3VyYXRpb246 CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQmFja2VuZCAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMC9iYWNr ZW5kL3ZzbmQvMS8wL2Zyb250ZW5kLWlkID0gIjEiCisgKiAvbG9jYWwvZG9tYWluLzAvYmFja2Vu ZC92c25kLzEvMC9mcm9udGVuZCA9ICIvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMCIKKyAq IC9sb2NhbC9kb21haW4vMC9iYWNrZW5kL3ZzbmQvMS8wL3N0YXRlID0gIjQiCisgKiAvbG9jYWwv ZG9tYWluLzAvYmFja2VuZC92c25kLzEvMC92ZXJzaW9ucyA9ICIxLDIiCisgKgorICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnJvbnRlbmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wL2JhY2tl bmQtaWQgPSAiMCIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wL2JhY2tlbmQgPSAi L2xvY2FsL2RvbWFpbi8wL2JhY2tlbmQvdnNuZC8xLzAiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2 aWNlL3ZzbmQvMC9zdGF0ZSA9ICI0IgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gQ2FyZCBjb25maWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg KiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC92ZXJzaW9uID0gIjEiCisgKgorICogL2xv Y2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvc2hvcnQtbmFtZSA9ICJDYXJkIHNob3J0IG5hbWUi CisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC9sb25nLW5hbWUgPSAiQ2FyZCBsb25n IG5hbWUiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC9zYW1wbGUtcmF0ZXMgPSAi ODAwMCwzMjAwMCw0NDEwMCw0ODAwMCw5NjAwMCIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2Uv dnNuZC8wL3NhbXBsZS1mb3JtYXRzID0gInM4LHU4LHMxNl9sZSxzMTZfYmUiCisgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC9idWZmZXItc2l6ZSA9ICIyNjIxNDQiCisgKgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBDTSBkZXZpY2UgMCAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzAv bmFtZSA9ICJHZW5lcmFsIGFuYWxvZyIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8w LzAvY2hhbm5lbHMtbWF4ID0gIjUiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSBTdHJlYW0gMCwgcGxheWJhY2sgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzAvMC90eXBlID0gInAiCisgKiAvbG9jYWwv ZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8wLzAvc2FtcGxlLWZvcm1hdHMgPSAiczgsdTgiCisgKiAv bG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8wLzAvdW5pcXVlLWlkID0gIjAiCisgKgorICog L2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMC8wL3JpbmctcmVmID0gIjM4NiIKKyAqIC9s b2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzAvMC9ldmVudC1jaGFubmVsID0gIjE1IgorICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmVhbSAxLCBjYXB0dXJlIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3Zz bmQvMC8wLzEvdHlwZSA9ICJjIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMC8x L2NoYW5uZWxzLW1heCA9ICIyIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMC8x L3VuaXF1ZS1pZCA9ICIxIgorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzAv MS9yaW5nLXJlZiA9ICIzODQiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8wLzEv ZXZlbnQtY2hhbm5lbCA9ICIxMyIKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0gUENNIGRldmljZSAxIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog L2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMS9uYW1lID0gIkhETUktMCIKKyAqIC9sb2Nh bC9kb21haW4vMS9kZXZpY2UvdnNuZC8wLzEvc2FtcGxlLXJhdGVzID0gIjgwMDAsMzIwMDAsNDQx MDAiCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RyZWFtIDAsIGNhcHR1 cmUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIC9sb2NhbC9kb21haW4vMS9k ZXZpY2UvdnNuZC8wLzEvMC90eXBlID0gImMiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3Zz bmQvMC8xLzAvdW5pcXVlLWlkID0gIjIiCisgKgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92 c25kLzAvMS8wL3JpbmctcmVmID0gIjM4NyIKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNu ZC8wLzEvMC9ldmVudC1jaGFubmVsID0gIjE1MSIKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0gUENNIGRldmljZSAyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgKgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAvMi9uYW1lID0gIlNQRElGIgor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RyZWFtIDAsIHBsYXliYWNrIC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNl L3ZzbmQvMC8yLzAvdHlwZSA9ICJwIgorICogL2xvY2FsL2RvbWFpbi8xL2RldmljZS92c25kLzAv Mi8wL3VuaXF1ZS1pZCA9ICIzIgorICoKKyAqIC9sb2NhbC9kb21haW4vMS9kZXZpY2UvdnNuZC8w LzIvMC9yaW5nLXJlZiA9ICIzODkiCisgKiAvbG9jYWwvZG9tYWluLzEvZGV2aWNlL3ZzbmQvMC8y LzAvZXZlbnQtY2hhbm5lbCA9ICIxNTIiCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICog ICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFja2VuZCBYZW5CdXMgTm9kZXMKKyAqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb3Rv Y29sIHZlcnNpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdmVyc2lv bnMKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxzdHJpbmc+CisgKgorICogICAgICBMaXN0IG9m IFhFTlNORF9MSVNUX1NFUEFSQVRPUiBzZXBhcmF0ZWQgcHJvdG9jb2wgdmVyc2lvbnMgc3VwcG9y dGVkCisgKiAgICAgIGJ5IHRoZSBiYWNrZW5kLiBGb3IgZXhhbXBsZSAiMSwyLDMiLgorICoKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyb250 ZW5kIFhlbkJ1cyBOb2RlcworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQWRkcmVzc2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBkb20taWQKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50 MTZfdD4KKyAqCisgKiAgICAgIERvbWFpbiBpZGVudGlmaWVyLgorICoKKyAqIGRldi1pZAorICog ICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQxNl90PgorICoKKyAqICAgICAgRGV2aWNlIGlkZW50 aWZpZXIuCisgKgorICogcGNtLWRldi1pZHgKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50 OF90PgorICoKKyAqICAgICAgWmVybyBiYXNlZCBjb250aWdvdXMgaW5kZXggb2YgdGhlIFBDTSBk ZXZpY2UuCisgKgorICogc3RyZWFtLWlkeAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQ4 X3Q+CisgKgorICogICAgICBaZXJvIGJhc2VkIGNvbnRpZ291cyBpbmRleCBvZiB0aGUgc3RyZWFt IG9mIHRoZSBQQ00gZGV2aWNlLgorICoKKyAqIFRoZSBmb2xsb3dpbmcgcGF0dGVybiBpcyB1c2Vk IGZvciBhZGRyZXNzaW5nOgorICogICAvbG9jYWwvZG9tYWluLzxkb20taWQ+L2RldmljZS92c25k LzxkZXYtaWQ+LzxwY20tZGV2LWlkeD4vPHN0cmVhbS1pZHg+Ly4uLgorICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvdG9jb2wgdmVyc2lvbiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiB2ZXJzaW9uCisgKiAgICAgIFZhbHVlczogICAgICAgICA8c3Ry aW5nPgorICoKKyAqICAgICAgUHJvdG9jb2wgdmVyc2lvbiwgY2hvc2VuIGFtb25nIHRoZSBvbmVz IHN1cHBvcnRlZCBieSB0aGUgYmFja2VuZC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0gUENNIHNldHRpbmdzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg KgorICogRXZlcnkgdmlydHVhbGl6ZWQgc291bmQgZnJvbnRlbmQgaGFzIGEgc2V0IG9mIFBDTSBk ZXZpY2VzIGFuZCBzdHJlYW1zLCBlYWNoCisgKiBjb3VsZCBiZSBpbmRpdmlkdWFsbHkgY29uZmln dXJlZC4gUGFydCBvZiB0aGUgUENNIGNvbmZpZ3VyYXRpb24gY2FuIGJlCisgKiBkZWZpbmVkIGF0 IGhpZ2hlciBsZXZlbCBvZiB0aGUgaGllcmFyY2h5IGFuZCBiZSBmdWxseSBvciBwYXJ0aWFsbHkg cmUtdXNlZAorICogYnkgdGhlIHVuZGVybHlpbmcgbGF5ZXJzLiBUaGVzZSBjb25maWd1cmF0aW9u IHZhbHVlcyBhcmU6CisgKiAgbyBudW1iZXIgb2YgY2hhbm5lbHMgKG1pbi9tYXgpCisgKiAgbyBz dXBwb3J0ZWQgc2FtcGxlIHJhdGVzCisgKiAgbyBzdXBwb3J0ZWQgc2FtcGxlIGZvcm1hdHMuCisg KiBFLmcuIG9uZSBjYW4gZGVmaW5lIHRoZXNlIHZhbHVlcyBmb3IgdGhlIHdob2xlIGNhcmQsIGRl dmljZSBvciBzdHJlYW0uCisgKiBFdmVyeSB1bmRlcmx5aW5nIGxheWVyIGluIHR1cm4gY2FuIHJl LWRlZmluZSBzb21lIG9yIGFsbCBvZiB0aGVtIHRvIGJldHRlcgorICogZml0IGl0cyBuZWVkcy4g Rm9yIGV4YW1wbGUsIGNhcmQgbWF5IGRlZmluZSBudW1iZXIgb2YgY2hhbm5lbHMgdG8gYmUKKyAq IGluIFsxOyA4XSByYW5nZSwgYW5kIHNvbWUgcGFydGljdWxhciBzdHJlYW0gbWF5IGJlIGxpbWl0 ZWQgdG8gWzE7IDJdIG9ubHkuCisgKiBUaGUgcnVsZSBpcyB0aGF0IHRoZSB1bmRlcmx5aW5nIGxh eWVyIG11c3QgYmUgYSBzdWJzZXQgb2YgdGhlIHVwcGVyIGxheWVyCisgKiByYW5nZS4KKyAqCisg KiBjaGFubmVscy1taW4KKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50OF90PgorICoKKyAq ICAgICAgVGhlIG1pbmltdW0gYW1vdW50IG9mIGNoYW5uZWxzIHRoYXQgaXMgc3VwcG9ydGVkLCBb MTsgY2hhbm5lbHMtbWF4XS4KKyAqICAgICAgT3B0aW9uYWwsIGlmIG5vdCBzZXQgb3Igb21pdHRl ZCBhIHZhbHVlIG9mIDEgaXMgdXNlZC4KKyAqCisgKiBjaGFubmVscy1tYXgKKyAqICAgICAgVmFs dWVzOiAgICAgICAgIDx1aW50OF90PgorICoKKyAqICAgICAgVGhlIG1heGltdW0gYW1vdW50IG9m IGNoYW5uZWxzIHRoYXQgaXMgc3VwcG9ydGVkLgorICogICAgICBNdXN0IGJlIGF0IGxlYXN0IDxj aGFubmVscy1taW4+LgorICoKKyAqIHNhbXBsZS1yYXRlcworICogICAgICBWYWx1ZXM6ICAgICAg ICAgPGxpc3Qgb2YgdWludDMyX3Q+CisgKgorICogICAgICBMaXN0IG9mIHN1cHBvcnRlZCBzYW1w bGUgcmF0ZXMgc2VwYXJhdGVkIGJ5IFhFTlNORF9MSVNUX1NFUEFSQVRPUi4KKyAqICAgICAgU2Ft cGxlIHJhdGVzIGFyZSBleHByZXNzZWQgYXMgYSBsaXN0IG9mIGRlY2ltYWwgdmFsdWVzIHcvbyBh bnkKKyAqICAgICAgb3JkZXJpbmcgcmVxdWlyZW1lbnQuCisgKgorICogc2FtcGxlLWZvcm1hdHMK KyAqICAgICAgVmFsdWVzOiAgICAgICAgIDxsaXN0IG9mIFhFTlNORF9QQ01fRk9STUFUX1hYWF9T VFI+CisgKgorICogICAgICBMaXN0IG9mIHN1cHBvcnRlZCBzYW1wbGUgZm9ybWF0cyBzZXBhcmF0 ZWQgYnkgWEVOU05EX0xJU1RfU0VQQVJBVE9SLgorICogICAgICBJdGVtcyBtdXN0IG5vdCBleGNl ZWQgWEVOU05EX1NBTVBMRV9GT1JNQVRfTUFYX0xFTiBsZW5ndGguCisgKgorICogYnVmZmVyLXNp emUKKyAqICAgICAgVmFsdWVzOiAgICAgICAgIDx1aW50MzJfdD4KKyAqCisgKiAgICAgIFRoZSBt YXhpbXVtIHNpemUgaW4gb2N0ZXRzIG9mIHRoZSBidWZmZXIgdG8gYWxsb2NhdGUgcGVyIHN0cmVh bS4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFZpcnR1YWwgc291bmQgY2FyZCBzZXR0 aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogc2hvcnQtbmFtZQorICogICAgICBW YWx1ZXM6ICAgICAgICAgPGNoYXJbMzJdPgorICoKKyAqICAgICAgU2hvcnQgbmFtZSBvZiB0aGUg dmlydHVhbCBzb3VuZCBjYXJkLiBPcHRpb25hbC4KKyAqCisgKiBsb25nLW5hbWUKKyAqICAgICAg VmFsdWVzOiAgICAgICAgIDxjaGFyWzgwXT4KKyAqCisgKiAgICAgIExvbmcgbmFtZSBvZiB0aGUg dmlydHVhbCBzb3VuZCBjYXJkLiBPcHRpb25hbC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tIERldmljZSBzZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICogbmFtZQorICogICAgICBWYWx1ZXM6ICAgICAgICAgPGNoYXJbODBdPgorICoKKyAqICAg ICAgTmFtZSBvZiB0aGUgc291bmQgZGV2aWNlIHdpdGhpbiB0aGUgdmlydHVhbCBzb3VuZCBjYXJk LiBPcHRpb25hbC4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0cmVhbSBz ZXR0aW5ncyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogdHlwZQorICog ICAgICBWYWx1ZXM6ICAgICAgICAgInAiLCAiYyIKKyAqCisgKiAgICAgIFN0cmVhbSB0eXBlOiAi cCIgLSBwbGF5YmFjayBzdHJlYW0sICJjIiAtIGNhcHR1cmUgc3RyZWFtCisgKgorICogICAgICBJ ZiBib3RoIGNhcHR1cmUgYW5kIHBsYXliYWNrIGFyZSBuZWVkZWQgdGhlbiB0d28gc3RyZWFtcyBu ZWVkIHRvIGJlCisgKiAgICAgIGRlZmluZWQgdW5kZXIgdGhlIHNhbWUgZGV2aWNlLgorICoKKyAq IHVuaXF1ZS1pZAorICogICAgICBWYWx1ZXM6ICAgICAgICAgPHVpbnQzMl90PgorICoKKyAqICAg ICAgQWZ0ZXIgc3RyZWFtIGluaXRpYWxpemF0aW9uIGl0IGlzIGFzc2lnbmVkIGEgdW5pcXVlIElE ICh3aXRoaW4gdGhlIGZyb250CisgKiAgICAgIGRyaXZlciksIHNvIGV2ZXJ5IHN0cmVhbSBvZiB0 aGUgZnJvbnRlbmQgY2FuIGJlIGlkZW50aWZpZWQgYnkgdGhlCisgKiAgICAgIGJhY2tlbmQgYnkg dGhpcyBJRC4gVGhpcyBpcyBub3QgZXF1YWwgdG8gc3RyZWFtLWlkeCBhcyB0aGUgbGF0ZXIgaXMK KyAqICAgICAgemVybyBiYXNlZCB3aXRoaW4gdGhlIGRldmljZSwgYnV0IHRoaXMgaW5kZXggaXMg Y29udGlnb3VzIHdpdGhpbiB0aGUKKyAqICAgICAgZHJpdmVyLgorICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0gU3RyZWFtIFJlcXVlc3QgVHJhbnNwb3J0IFBhcmFtZXRlcnMgLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBldmVudC1jaGFubmVsCisgKiAgICAgIFZhbHVlczogICAgICAgICA8 dWludDMyX3Q+CisgKgorICogICAgICBUaGUgaWRlbnRpZmllciBvZiB0aGUgWGVuIGV2ZW50IGNo YW5uZWwgdXNlZCB0byBzaWduYWwgYWN0aXZpdHkKKyAqICAgICAgaW4gdGhlIHJpbmcgYnVmZmVy LgorICoKKyAqIHJpbmctcmVmCisgKiAgICAgIFZhbHVlczogICAgICAgICA8dWludDMyX3Q+Cisg KgorICogICAgICBUaGUgWGVuIGdyYW50IHJlZmVyZW5jZSBncmFudGluZyBwZXJtaXNzaW9uIGZv ciB0aGUgYmFja2VuZCB0byBtYXAKKyAqICAgICAgYSBzb2xlIHBhZ2UgaW4gYSBzaW5nbGUgcGFn ZSBzaXplZCByaW5nIGJ1ZmZlci4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFURSBESUFHUkFNUworICoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgorICoKKyAqIFRvb2wgc3RhY2sgY3JlYXRlcyBmcm9udCBhbmQgYmFjayBzdGF0ZSBu b2RlcyB3aXRoIGluaXRpYWwgc3RhdGUKKyAqIFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5nLgorICog VG9vbCBzdGFjayBjcmVhdGVzIGFuZCBzZXRzIHVwIGZyb250ZW5kIHNvdW5kIGNvbmZpZ3VyYXRp b24gbm9kZXMgcGVyIGRvbWFpbi4KKyAqCisgKiBGcm9udCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQmFjaworICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICAgID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFhlbmJ1c1N0YXRlSW5pdGlh bGlzaW5nICAgICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRpYWxpc2luZworICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvIFF1ZXJ5IGJhY2tlbmQgZGV2aWNlIGlkZW50 aWZpY2F0aW9uCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YS4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyBPcGVuIGFuZCB2 YWxpZGF0ZSBiYWNrZW5kIGRldmljZS4KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFYKKyAqICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBYZW5idXNTdGF0ZUluaXRXYWl0CisgKgorICogbyBRdWVyeSBmcm9udGVu ZCBjb25maWd1cmF0aW9uCisgKiBvIEFsbG9jYXRlIGFuZCBpbml0aWFsaXplCisgKiAgIGV2ZW50 IGNoYW5uZWxzIHBlciBjb25maWd1cmVkCisgKiAgIHBsYXliYWNrL2NhcHR1cmUgc3RyZWFtLgor ICogbyBQdWJsaXNoIHRyYW5zcG9ydCBwYXJhbWV0ZXJzCisgKiAgIHRoYXQgd2lsbCBiZSBpbiBl ZmZlY3QgZHVyaW5nCisgKiAgIHRoaXMgY29ubmVjdGlvbi4KKyAqICAgICAgICAgICAgICB8Cisg KiAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgIFYKKyAqIFhlbmJ1c1N0YXRlSW5pdGlh bGlzZWQKKyAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gUXVl cnkgZnJvbnRlbmQgdHJhbnNwb3J0IHBhcmFtZXRlcnMuCisgKiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG8gQ29ubmVjdCB0byB0aGUgZXZlbnQgY2hhbm5lbHMuCisgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAq ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBW CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWGVuYnVzU3RhdGVDb25u ZWN0ZWQKKyAqCisgKiAgbyBDcmVhdGUgYW5kIGluaXRpYWxpemUgT1MKKyAqICB2aXJ0dWFsIHNv dW5kIGRldmljZSBpbnN0YW5jZXMKKyAqICBhcyBwZXIgY29uZmlndXJhdGlvbi4KKyAqICAgICAg ICAgICAgICB8CisgKiAgICAgICAgICAgICAgfAorICogICAgICAgICAgICAgIFYKKyAqIFhlbmJ1 c1N0YXRlQ29ubmVjdGVkCisgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFhlbmJ1c1N0YXRlVW5rbm93bgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFhlbmJ1c1N0YXRlQ2xvc2VkCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgWGVuYnVzU3RhdGVDbG9zaW5nCisgKiBvIFJlbW92ZSB2aXJ0dWFsIHNvdW5kIGRl dmljZQorICogbyBSZW1vdmUgZXZlbnQgY2hhbm5lbHMKKyAqICAgICAgICAgICAgICB8CisgKiAg ICAgICAgICAgICAgfAorICogICAgICAgICAgICAgIFYKKyAqIFhlbmJ1c1N0YXRlQ2xvc2VkCisg KgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAg IFBDTSBGT1JNQVRTCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogWEVOU05EX1BDTV9G T1JNQVRfPGZvcm1hdD5bXzxlbmRpYW4+XQorICoKKyAqIGZvcm1hdDogPFMvVS9GPjxiaXRzPiBv ciA8bmFtZT4KKyAqICAgICBTIC0gc2lnbmVkLCBVIC0gdW5zaWduZWQsIEYgLSBmbG9hdAorICog ICAgIGJpdHMgLSA4LCAxNiwgMjQsIDMyCisgKiAgICAgbmFtZSAtIE1VX0xBVywgR1NNLCBldGMu CisgKgorICogZW5kaWFuOiA8TEUvQkU+LCBtYXkgYmUgYWJzZW50CisgKiAgICAgTEUgLSBMaXR0 bGUgZW5kaWFuLCBCRSAtIEJpZyBlbmRpYW4KKyAqLworI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1B VF9TOCAgICAgICAgICAgIDAKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTggICAgICAgICAg ICAxCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9MRSAgICAgICAgMgorI2RlZmluZSBY RU5TTkRfUENNX0ZPUk1BVF9TMTZfQkUgICAgICAgIDMKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JN QVRfVTE2X0xFICAgICAgICA0CisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UxNl9CRSAgICAg ICAgNQorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMjRfTEUgICAgICAgIDYKKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfUzI0X0JFICAgICAgICA3CisjZGVmaW5lIFhFTlNORF9QQ01fRk9S TUFUX1UyNF9MRSAgICAgICAgOAorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMjRfQkUgICAg ICAgIDkKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzMyX0xFICAgICAgICAxMAorI2RlZmlu ZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfQkUgICAgICAgIDExCisjZGVmaW5lIFhFTlNORF9QQ01f Rk9STUFUX1UzMl9MRSAgICAgICAgMTIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTMyX0JF ICAgICAgICAxMworI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9GMzJfTEUgICAgICAgIDE0IC8q IDQtYnl0ZSBmbG9hdCwgSUVFRS03NTQgMzItYml0LCAqLworI2RlZmluZSBYRU5TTkRfUENNX0ZP Uk1BVF9GMzJfQkUgICAgICAgIDE1IC8qIHJhbmdlIC0xLjAgdG8gMS4wICAgICAgICAgICAgICAq LworI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9GNjRfTEUgICAgICAgIDE2IC8qIDgtYnl0ZSBm bG9hdCwgSUVFRS03NTQgNjQtYml0LCAqLworI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9GNjRf QkUgICAgICAgIDE3IC8qIHJhbmdlIC0xLjAgdG8gMS4wICAgICAgICAgICAgICAqLworI2RlZmlu ZSBYRU5TTkRfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfTEUgMTgKKyNkZWZpbmUgWEVOU05E X1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFIDE5CisjZGVmaW5lIFhFTlNORF9QQ01fRk9S TUFUX01VX0xBVyAgICAgICAgMjAKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfQV9MQVcgICAg ICAgICAyMQorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9JTUFfQURQQ00gICAgIDIyCisjZGVm aW5lIFhFTlNORF9QQ01fRk9STUFUX01QRUcgICAgICAgICAgMjMKKyNkZWZpbmUgWEVOU05EX1BD TV9GT1JNQVRfR1NNICAgICAgICAgICAyNAorCisvKgorICoqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgor ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVFU1QgQ09ERVMKKyAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKKyAqLworI2RlZmluZSBYRU5TTkRfT1BfT1BFTiAgICAgICAgICAgICAgICAg IDAKKyNkZWZpbmUgWEVOU05EX09QX0NMT1NFICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIFhF TlNORF9PUF9SRUFEICAgICAgICAgICAgICAgICAgMgorI2RlZmluZSBYRU5TTkRfT1BfV1JJVEUg ICAgICAgICAgICAgICAgIDMKKyNkZWZpbmUgWEVOU05EX09QX1NFVF9WT0xVTUUgICAgICAgICAg ICA0CisjZGVmaW5lIFhFTlNORF9PUF9HRVRfVk9MVU1FICAgICAgICAgICAgNQorI2RlZmluZSBY RU5TTkRfT1BfTVVURSAgICAgICAgICAgICAgICAgIDYKKyNkZWZpbmUgWEVOU05EX09QX1VOTVVU RSAgICAgICAgICAgICAgICA3CisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAg ICAgICAgICAgIFhFTlNUT1JFIEZJRUxEIEFORCBQQVRIIE5BTUUgU1RSSU5HUywgSEVMUEVSUwor ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKgorICovCisjZGVmaW5lIFhFTlNORF9EUklWRVJfTkFNRSAg ICAgICAgICAgICAgInZzbmQiCisKKyNkZWZpbmUgWEVOU05EX0xJU1RfU0VQQVJBVE9SICAgICAg ICAgICAiLCIKKy8qIEZpZWxkIG5hbWVzICovCisjZGVmaW5lIFhFTlNORF9GSUVMRF9WQ0FSRF9T SE9SVF9OQU1FICAgInNob3J0LW5hbWUiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9WQ0FSRF9MT05H X05BTUUgICAgImxvbmctbmFtZSIKKyNkZWZpbmUgWEVOU05EX0ZJRUxEX1JJTkdfUkVGICAgICAg ICAgICAicmluZy1yZWYiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9FVlRfQ0hOTCAgICAgICAgICAg ImV2ZW50LWNoYW5uZWwiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9ERVZJQ0VfTkFNRSAgICAgICAg Im5hbWUiCisjZGVmaW5lIFhFTlNORF9GSUVMRF9UWVBFICAgICAgICAgICAgICAgInR5cGUiCisj ZGVmaW5lIFhFTlNORF9GSUVMRF9TVFJFQU1fVU5JUVVFX0lEICAgInVuaXF1ZS1pZCIKKyNkZWZp bmUgWEVOU05EX0ZJRUxEX0NIQU5ORUxTX01JTiAgICAgICAiY2hhbm5lbHMtbWluIgorI2RlZmlu ZSBYRU5TTkRfRklFTERfQ0hBTk5FTFNfTUFYICAgICAgICJjaGFubmVscy1tYXgiCisjZGVmaW5l IFhFTlNORF9GSUVMRF9TQU1QTEVfUkFURVMgICAgICAgInNhbXBsZS1yYXRlcyIKKyNkZWZpbmUg WEVOU05EX0ZJRUxEX1NBTVBMRV9GT1JNQVRTICAgICAic2FtcGxlLWZvcm1hdHMiCisjZGVmaW5l IFhFTlNORF9GSUVMRF9CVUZGRVJfU0laRSAgICAgICAgImJ1ZmZlci1zaXplIgorCisvKiBTdHJl YW0gdHlwZSBmaWVsZCB2YWx1ZXMuICovCisjZGVmaW5lIFhFTlNORF9TVFJFQU1fVFlQRV9QTEFZ QkFDSyAgICAgInAiCisjZGVmaW5lIFhFTlNORF9TVFJFQU1fVFlQRV9DQVBUVVJFICAgICAgImMi CisvKiBTYW1wbGUgcmF0ZSBtYXggc3RyaW5nIGxlbmd0aCAqLworI2RlZmluZSBYRU5TTkRfU0FN UExFX1JBVEVfTUFYX0xFTiAgICAgIDExCisvKiBTYW1wbGUgZm9ybWF0IGZpZWxkIHZhbHVlcyAq LworI2RlZmluZSBYRU5TTkRfU0FNUExFX0ZPUk1BVF9NQVhfTEVOICAgIDI0CisKKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfUzhfU1RSICAgICAgICAiczgiCisjZGVmaW5lIFhFTlNORF9QQ01f Rk9STUFUX1U4X1NUUiAgICAgICAgInU4IgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMTZf TEVfU1RSICAgICJzMTZfbGUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MxNl9CRV9TVFIg ICAgInMxNl9iZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTE2X0xFX1NUUiAgICAidTE2 X2xlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9VMTZfQkVfU1RSICAgICJ1MTZfYmUiCisj ZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1MyNF9MRV9TVFIgICAgInMyNF9sZSIKKyNkZWZpbmUg WEVOU05EX1BDTV9GT1JNQVRfUzI0X0JFX1NUUiAgICAiczI0X2JlIgorI2RlZmluZSBYRU5TTkRf UENNX0ZPUk1BVF9VMjRfTEVfU1RSICAgICJ1MjRfbGUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9S TUFUX1UyNF9CRV9TVFIgICAgInUyNF9iZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfUzMy X0xFX1NUUiAgICAiczMyX2xlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9TMzJfQkVfU1RS ICAgICJzMzJfYmUiCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX1UzMl9MRV9TVFIgICAgInUz Ml9sZSIKKyNkZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfVTMyX0JFX1NUUiAgICAidTMyX2JlIgor I2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9GMzJfTEVfU1RSICAgICJmbG9hdF9sZSIKKyNkZWZp bmUgWEVOU05EX1BDTV9GT1JNQVRfRjMyX0JFX1NUUiAgICAiZmxvYXRfYmUiCisjZGVmaW5lIFhF TlNORF9QQ01fRk9STUFUX0Y2NF9MRV9TVFIgICAgImZsb2F0NjRfbGUiCisjZGVmaW5lIFhFTlNO RF9QQ01fRk9STUFUX0Y2NF9CRV9TVFIgICAgImZsb2F0NjRfYmUiCisjZGVmaW5lIFhFTlNORF9Q Q01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRV9TVFIgImllYzk1OF9zdWJmcmFtZV9sZSIKKyNk ZWZpbmUgWEVOU05EX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFX1NUUiAiaWVjOTU4X3N1 YmZyYW1lX2JlIgorI2RlZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9NVV9MQVdfU1RSICAgICJtdV9s YXciCisjZGVmaW5lIFhFTlNORF9QQ01fRk9STUFUX0FfTEFXX1NUUiAgICAgImFfbGF3IgorI2Rl ZmluZSBYRU5TTkRfUENNX0ZPUk1BVF9JTUFfQURQQ01fU1RSICJpbWFfYWRwY20iCisjZGVmaW5l IFhFTlNORF9QQ01fRk9STUFUX01QRUdfU1RSICAgICAgIm1wZWciCisjZGVmaW5lIFhFTlNORF9Q Q01fRk9STUFUX0dTTV9TVFIgICAgICAgImdzbSIKKworCisvKgorICoqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgIFNUQVRVUyBSRVRVUk4gQ09ERVMKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBTdGF0dXMgcmV0dXJuIGNvZGUgaXMgemVybyBv biBzdWNjZXNzIGFuZCAtWEVOX0VYWCBvbiBmYWlsdXJlLgorICoKKyAqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXNzdW1wdGlvbnMKKyAqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqIG8gdXNhZ2Ugb2YgZ3JhbnQgcmVmZXJlbmNlIDAgYXMgaW52 YWxpZCBncmFudCByZWZlcmVuY2U6CisgKiAgIGdyYW50IHJlZmVyZW5jZSAwIGlzIHZhbGlkLCBi dXQgbmV2ZXIgZXhwb3NlZCB0byBhIFBWIGRyaXZlciwKKyAqICAgYmVjYXVzZSBvZiB0aGUgZmFj dCBpdCBpcyBhbHJlYWR5IGluIHVzZS9yZXNlcnZlZCBieSB0aGUgUFYgY29uc29sZS4KKyAqIG8g YWxsIHJlZmVyZW5jZXMgaW4gdGhpcyBkb2N1bWVudCB0byBwYWdlIHNpemVzIG11c3QgYmUgdHJl YXRlZAorICogICBhcyBwYWdlcyBvZiBzaXplIFhFTl9QQUdFX1NJWkUgdW5sZXNzIG90aGVyd2lz ZSBub3RlZC4KKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICBEZXNjcmlwdGlv biBvZiB0aGUgcHJvdG9jb2wgYmV0d2VlbiBmcm9udGVuZCBhbmQgYmFja2VuZCBkcml2ZXIKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBUaGUgdHdvIGhhbHZlcyBvZiBhIFBhcmEtdmly dHVhbCBzb3VuZCBkcml2ZXIgY29tbXVuaWNhdGUgd2l0aAorICogZWFjaCBvdGhlciB1c2luZyBz aGFyZWQgcGFnZXMgYW5kIGV2ZW50IGNoYW5uZWxzLgorICogU2hhcmVkIHBhZ2UgY29udGFpbnMg YSByaW5nIHdpdGggcmVxdWVzdC9yZXNwb25zZSBwYWNrZXRzLgorICoKKyAqIFBhY2tldHMsIHVz ZWQgZm9yIGlucHV0L291dHB1dCBvcGVyYXRpb25zLCBlLmcuIHJlYWQvd3JpdGUsIHNldC9nZXQg dm9sdW1lLAorICogZXRjLiwgcHJvdmlkZSBvZmZzZXQvbGVuZ3RoIGZpZWxkcyBpbiBvcmRlciB0 byBhbGxvdyBhc3luY2hyb25vdXMgcHJvdG9jb2wKKyAqIG9wZXJhdGlvbiB3aXRoIGJ1ZmZlciBz cGFjZSBzaGFyaW5nOiBwYXJ0IG9mIHRoZSBidWZmZXIgYWxsb2NhdGVkIGF0CisgKiBYRU5TTkRf T1BfT1BFTiBjYW4gYmUgdXNlZCBmb3IgYXVkaW8gc2FtcGxlcyBhbmQgcGFydCwgZm9yIGV4YW1w bGUsCisgKiBmb3Igdm9sdW1lIGNvbnRyb2wuCisgKgorICogQWxsIHJlc2VydmVkIGZpZWxkcyBp biB0aGUgc3RydWN0dXJlcyBiZWxvdyBtdXN0IGJlIDAuCisgKgorICotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tIFJlcXVlc3RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICoKKyAqIEFsbCByZXF1ZXN0IHBhY2tldHMgaGF2ZSB0aGUgc2FtZSBsZW5ndGggKDMy IG9jdGV0cykKKyAqIEFsbCByZXF1ZXN0IHBhY2tldHMgaGF2ZSBjb21tb24gaGVhZGVyOgorICog ICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAg ICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgaWQg ICAgICAgICAgICAgICAgfCAgICBvcGVyYXRpb24gICB8ICAgIHJlc2VydmVkICAgIHwgNAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiAgIGlk IC0gdWludDE2X3QsIHByaXZhdGUgZ3Vlc3QgdmFsdWUsIGVjaG9lZCBpbiByZXNwb25zZQorICog ICBvcGVyYXRpb24gLSB1aW50OF90LCBvcGVyYXRpb24gY29kZSwgWEVOU05EX09QXz8/PworICoK KyAqIEZvciBhbGwgcGFja2V0cyB3aGljaCB1c2Ugb2Zmc2V0IGFuZCBsZW5ndGg6CisgKiAgIG9m ZnNldCAtIHVpbnQzMl90LCByZWFkIG9yIHdyaXRlIGRhdGEgb2Zmc2V0IHdpdGhpbiB0aGUgc2hh cmVkIGJ1ZmZlciwKKyAqICAgICBwYXNzZWQgd2l0aCBYRU5TTkRfT1BfT1BFTiByZXF1ZXN0LCBv Y3RldHMsCisgKiAgICAgWzA7IFhFTlNORF9PUF9PUEVOLmJ1ZmZlcl9zeiAtIDFdLgorICogICBs ZW5ndGggLSB1aW50MzJfdCwgcmVhZCBvciB3cml0ZSBkYXRhIGxlbmd0aCwgb2N0ZXRzCisgKgor ICogUmVxdWVzdCBvcGVuIC0gb3BlbiBhIFBDTSBzdHJlYW0gZm9yIHBsYXliYWNrIG9yIGNhcHR1 cmU6CisgKgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIg ICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAg ICAgICAgICAgaWQgICAgICAgICAgICAgICAgfCBYRU5TTkRfT1BfT1BFTiB8ICAgIHJlc2VydmVk ICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwY21fcmF0ZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgcGNtX2Zvcm1h dCAgICB8ICBwY21fY2hhbm5lbHMgIHwgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICB8 IDE2CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1 ZmZlcl9zeiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZl9kaXJlY3RvcnkgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI4 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMzIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIHBjbV9yYXRlIC0gdWludDMy X3QsIHN0cmVhbSBkYXRhIHJhdGUsIEh6CisgKiBwY21fZm9ybWF0IC0gdWludDhfdCwgWEVOU05E X1BDTV9GT1JNQVRfWFhYIHZhbHVlCisgKiBwY21fY2hhbm5lbHMgLSB1aW50OF90LCBudW1iZXIg b2YgY2hhbm5lbHMgb2YgdGhpcyBzdHJlYW0sCisgKiAgIFtjaGFubmVscy1taW47IGNoYW5uZWxz LW1heF0KKyAqIGJ1ZmZlcl9zeiAtIHVpbnQzMl90LCBidWZmZXIgc2l6ZSB0byBiZSBhbGxvY2F0 ZWQsIG9jdGV0cworICogZ3JlZl9kaXJlY3RvcnkgLSBncmFudF9yZWZfdCwgYSByZWZlcmVuY2Ug dG8gdGhlIGZpcnN0IHNoYXJlZCBwYWdlCisgKiAgIGRlc2NyaWJpbmcgc2hhcmVkIGJ1ZmZlciBy ZWZlcmVuY2VzLiBBdCBsZWFzdCBvbmUgcGFnZSBleGlzdHMuIElmIHNoYXJlZAorICogICBidWZm ZXIgc2l6ZSAgKGJ1ZmZlcl9zeikgZXhjZWVkcyB3aGF0IGNhbiBiZSBhZGRyZXNzZWQgYnkgdGhp cyBzaW5nbGUgcGFnZSwKKyAqICAgdGhlbiByZWZlcmVuY2UgdG8gdGhlIG5leHQgcGFnZSBtdXN0 IGJlIHN1cHBsaWVkIChzZWUgZ3JlZl9kaXJfbmV4dF9wYWdlCisgKiAgIGJlbG93KQorICovCisK K3N0cnVjdCB4ZW5zbmRfb3Blbl9yZXEgeworICAgIHVpbnQzMl90IHBjbV9yYXRlOworICAgIHVp bnQ4X3QgcGNtX2Zvcm1hdDsKKyAgICB1aW50OF90IHBjbV9jaGFubmVsczsKKyAgICB1aW50MTZf dCByZXNlcnZlZDsKKyAgICB1aW50MzJfdCBidWZmZXJfc3o7CisgICAgZ3JhbnRfcmVmX3QgZ3Jl Zl9kaXJlY3Rvcnk7Cit9OworCisvKgorICogU2hhcmVkIHBhZ2UgZm9yIFhFTlNORF9PUF9PUEVO IGJ1ZmZlciBkZXNjcmlwdG9yIChncmVmX2RpcmVjdG9yeSBpbiB0aGUKKyAqICAgcmVxdWVzdCkg ZW1wbG95cyBhIGxpc3Qgb2YgcGFnZXMsIGRlc2NyaWJpbmcgYWxsIHBhZ2VzIG9mIHRoZSBzaGFy ZWQgZGF0YQorICogICBidWZmZXI6CisgKiAgICAgICAgIDAgICAgICAgICAgICAgICAgMSAgICAg ICAgICAgICAgICAgMiAgICAgICAgICAgICAgIDMgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICBncmVmX2Rpcl9uZXh0X3BhZ2UgICAgICAg ICAgICAgICAgICAgICAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBncmVmWzBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA4 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlZltpXSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgaSo0KzgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWZbTiAtIDFd ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOKjQrOAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgor ICogZ3JlZl9kaXJfbmV4dF9wYWdlIC0gZ3JhbnRfcmVmX3QsIHJlZmVyZW5jZSB0byB0aGUgbmV4 dCBwYWdlIGRlc2NyaWJpbmcKKyAqICAgcGFnZSBkaXJlY3RvcnkuIE11c3QgYmUgMCBpZiB0aGVy ZSBhcmUgbm8gbW9yZSBwYWdlcyBpbiB0aGUgbGlzdC4KKyAqIGdyZWZbaV0gLSBncmFudF9yZWZf dCwgcmVmZXJlbmNlIHRvIGEgc2hhcmVkIHBhZ2Ugb2YgdGhlIGJ1ZmZlcgorICogICBhbGxvY2F0 ZWQgYXQgWEVOU05EX09QX09QRU4KKyAqCisgKiBOdW1iZXIgb2YgZ3JhbnRfcmVmX3QgZW50cmll cyBpbiB0aGUgd2hvbGUgcGFnZSBkaXJlY3RvcnkgaXMgbm90CisgKiBwYXNzZWQsIGJ1dCBpbnN0 ZWFkIGNhbiBiZSBjYWxjdWxhdGVkIGFzOgorICogICBudW1fZ3JlZnNfdG90YWwgPSAoWEVOU05E X09QX09QRU4uYnVmZmVyX3N6ICsgWEVOX1BBR0VfU0laRSAtIDEpIC8KKyAqICAgICAgIFhFTl9Q QUdFX1NJWkUKKyAqLworCitzdHJ1Y3QgeGVuc25kX3BhZ2VfZGlyZWN0b3J5IHsKKyAgICBncmFu dF9yZWZfdCBncmVmX2Rpcl9uZXh0X3BhZ2U7CisgICAgZ3JhbnRfcmVmX3QgZ3JlZlsxXTsgLyog VmFyaWFibGUgbGVuZ3RoICovCit9OworCisvKgorICogIFJlcXVlc3QgY2xvc2UgLSBjbG9zZSBh biBvcGVuZWQgcGNtIHN0cmVhbToKKyAqICAgICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAg ICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t KworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgWEVOU05EX09QX0NMT1NF fCAgICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgK KyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKworICogfC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC98CisgKiArLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAzMgorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKgorICogUmVxdWVzdCByZWFkL3dyaXRl IC0gdXNlZCBmb3IgcmVhZCAoZm9yIGNhcHR1cmUpIG9yIHdyaXRlIChmb3IgcGxheWJhY2spOgor ICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAg ICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAg aWQgICAgICAgICAgICAgICAgfCAgIG9wZXJhdGlvbiAgICB8ICAgIHJlc2VydmVkICAgIHwgNAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZl ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2CisgKiAr LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc2VydmVkICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMyCisgKiArLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSsKKyAqCisgKiBvcGVyYXRpb24gLSBYRU5TTkRfT1BfUkVBRCBmb3IgcmVhZCBvciBYRU5T TkRfT1BfV1JJVEUgZm9yIHdyaXRlCisgKi8KKworLyoKKyAqIFJlcXVlc3Qgc2V0L2dldCB2b2x1 bWUgLSBzZXQvZ2V0IGNoYW5uZWxzJyB2b2x1bWUgb2YgdGhlIHN0cmVhbSBnaXZlbjoKKyAqICAg ICAgICAgMCAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAg MyAgICAgICAgb2N0ZXQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAg ICAgICAgICAgICAgIHwgICBvcGVyYXRpb24gICAgfCAgICByZXNlcnZlZCAgICB8IDQKKyAqICst LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8IDEyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsZW5ndGggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDMyCisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqCisgKiBvcGVyYXRpb24gLSBYRU5TTkRfT1BfU0VUX1ZP TFVNRSBmb3Igdm9sdW1lIHNldAorICogICBvciBYRU5TTkRfT1BfR0VUX1ZPTFVNRSBmb3Igdm9s dW1lIGdldAorICogQnVmZmVyIHBhc3NlZCB3aXRoIFhFTlNORF9PUF9PUEVOIGlzIHVzZWQgdG8g ZXhjaGFuZ2Ugdm9sdW1lCisgKiB2YWx1ZXM6CisgKgorICogICAgICAgICAwICAgICAgICAgICAg ICAgIDEgICAgICAgICAgICAgICAgIDIgICAgICAgICAgICAgICAzICAgICAgICBvY3RldAorICog Ky0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsWzBd ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8L1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2hhbm5lbFtpXSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGkqNAorICogKy0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rCisgKiB8L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL3wKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNoYW5uZWxbTiAtIDFdICAgICAgICAgICAgICAgICAgICAgICAgICB8 IChOLTEpKjQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIE4gPSBYRU5TTkRfT1BfT1BFTi5wY21f Y2hhbm5lbHMKKyAqIGkgLSB1aW50OF90LCBpbmRleCBvZiBhIGNoYW5uZWwKKyAqIGNoYW5uZWxb aV0gLSBzaW50MzJfdCwgdm9sdW1lIG9mIGktdGggY2hhbm5lbAorICogVm9sdW1lIGlzIGV4cHJl c3NlZCBhcyBhIHNpZ25lZCB2YWx1ZSBpbiBzdGVwcyBvZiAwLjAwMSBkQiwKKyAqIHdoaWxlIDAg YmVpbmcgMCBkQi4KKyAqCisgKiBSZXF1ZXN0IG11dGUvdW5tdXRlIC0gbXV0ZS91bm11dGUgc3Ry ZWFtOgorICogICAgICAgICAwICAgICAgICAgICAgICAgIDEgICAgICAgICAgICAgICAgIDIgICAg ICAgICAgICAgICAzICAgICAgICBvY3RldAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgaWQgICAgICAgICAgICAgICAgfCAgIG9wZXJhdGlvbiAgICB8ICAgIHJlc2VydmVkICAg IHwgNAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy ZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgOAorICogKy0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r CisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMTIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE2 CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9c L1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgMzIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIG9wZXJhdGlvbiAtIFhFTlNO RF9PUF9NVVRFIGZvciBtdXRlIG9yIFhFTlNORF9PUF9VTk1VVEUgZm9yIHVubXV0ZQorICogQnVm ZmVyIHBhc3NlZCB3aXRoIFhFTlNORF9PUF9PUEVOIGlzIHVzZWQgdG8gZXhjaGFuZ2UgbXV0ZS91 bm11dGUKKyAqIHZhbHVlczoKKyAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jdGV0CisgKiArLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LSsKKyAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxbMF0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCA0CisgKiArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAqICsvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVs W2ldICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaSo0CisgKiArLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq ICsvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2hhbm5lbFtOIC0gMV0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgKE4tMSkqNAor ICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rCisgKgorICogTiA9IFhFTlNORF9PUF9PUEVOLnBjbV9jaGFubmVscwor ICogaSAtIHVpbnQ4X3QsIGluZGV4IG9mIGEgY2hhbm5lbAorICogY2hhbm5lbFtpXSAtIHVpbnQ4 X3QsIG5vbi16ZXJvIGlmIGktdGggY2hhbm5lbCBuZWVkcyB0byBiZSBtdXRlZC91bm11dGVkCisg Ki8KKworc3RydWN0IHhlbnNuZF9yd19yZXEgeworICAgIHVpbnQzMl90IG9mZnNldDsKKyAgICB1 aW50MzJfdCBsZW5ndGg7Cit9OworCisvKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tIFJlc3BvbnNlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IEFsbCByZXNwb25zZSBwYWNrZXRzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICgzMiBvY3RldHMpCisg KgorICogUmVzcG9uc2UgZm9yIGFsbCByZXF1ZXN0czoKKyAqICAgICAgICAgMCAgICAgICAgICAg ICAgICAxICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgMyAgICAgICAgb2N0ZXQKKyAq ICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgIGlkICAgICAgICAgICAgICAgIHwgICAg b3BlcmF0aW9uICAgfCAgICByZXNlcnZlZCAgICB8IDQKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8IDgKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcmVzZXJ2ZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCisgKiArLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSsKKyAqIHwvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wv XC9cL1wvXC9cL1wvXC9cL1wvXC9cL1wvfAorICogKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rCisgKiB8ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByZXNlcnZlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgMzIKKyAqICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tKworICoKKyAqIGlkIC0gdWludDE2X3QsIGNvcGllZCBmcm9t IHRoZSByZXF1ZXN0CisgKiBvcGVyYXRpb24gLSB1aW50OF90LCBYRU5TTkRfT1BfKiAtIGNvcGll ZCBmcm9tIHJlcXVlc3QKKyAqIHN0YXR1cyAtIGludDMyX3QsIHJlc3BvbnNlIHN0YXR1cywgemVy byBvbiBzdWNjZXNzIGFuZCAtWEVOX0VYWCBvbiBmYWlsdXJlCisgKi8KKworc3RydWN0IHhlbnNu ZF9yZXEgeworICAgIHVpbnQxNl90IGlkOworICAgIHVpbnQ4X3Qgb3BlcmF0aW9uOworICAgIHVp bnQ4X3QgcmVzZXJ2ZWRbNV07CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeGVuc25kX29w ZW5fcmVxIG9wZW47CisgICAgICAgIHN0cnVjdCB4ZW5zbmRfcndfcmVxIHJ3OworICAgICAgICB1 aW50OF90IHJlc2VydmVkWzI0XTsKKyAgICB9IG9wOworfTsKKworc3RydWN0IHhlbnNuZF9yZXNw IHsKKyAgICB1aW50MTZfdCBpZDsKKyAgICB1aW50OF90IG9wZXJhdGlvbjsKKyAgICB1aW50OF90 IHJlc2VydmVkOworICAgIGludDMyX3Qgc3RhdHVzOworICAgIHVpbnQ4X3QgcmVzZXJ2ZWQxWzI0 XTsKK307CisKK0RFRklORV9SSU5HX1RZUEVTKHhlbl9zbmRpZiwgc3RydWN0IHhlbnNuZF9yZXEs IHN0cnVjdCB4ZW5zbmRfcmVzcCk7CisKKyNlbmRpZiAvKiBfX1hFTl9QVUJMSUNfSU9fU05ESUZf SF9fICovCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=