From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Date: Sun, 15 Jan 2017 21:10:44 +0000 Subject: [PATCH v7 01/14] generic-sections: add section core helpers Message-Id: <20170115211057.17167-2-mcgrof@kernel.org> List-Id: References: <20170109145833.11502-1-mcgrof@kernel.org> <20170115211057.17167-1-mcgrof@kernel.org> In-Reply-To: <20170115211057.17167-1-mcgrof@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1254" Content-Transfer-Encoding: base64 To: bp@alien8.de, bp@suse.de, hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel TGludXggbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBjdXN0b20gRUxGIGhlYWRlciBzZWN0aW9ucywK ZG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgYXJlIHdlbGwgc2NhdHRlcmVkLiBVbmlmeSB0aGlzCmRv Y3VtZW50YXRpb24gaW4gYSBjZW50cmFsIHBsYWNlIGFuZCBwcm92aWRlIGhlbHBlcnMgdG8KYnVp bGQgY3VzdG9tIExpbnV4IHNlY3Rpb25zLgoKVGhpcyBhbHNvIGdlbmVyYWxpemVzIHNlY3Rpb25z IGNvZGUgdG8gZW5hYmxlIGF2b2lkaW5nCm1vZGlmeWluZyB0aGUgbGlua2VyIHNjcmlwdHMgd2hl biB3ZSB3YW50IHRvIGFkZCBuZXcKY3VzdG9tIExpbnV4IHNlY3Rpb25zLiBJbiBvcmRlciB0byBt YWtlIHRoaXMgZ2VuZXJhbGx5CnVzZWZ1bCB3ZSBuZWVkIHRvIGVuc3VyZSBhbGwgYXJjaGl0ZWN0 dXJlcyBjYW4gbWFrZSB1c2Ugb2YKY29yZSBzZWN0aW9uIGhlbHBlcnMgYnV0IHRoYXQgdGhleSBj YW4gYWxzbyBvdmVycmlkZSBzaG91bGQKdGhpcyBiZSBuZWVkZWQuIEluc3RlYWQgb2YgcmVseWlu ZyBvbiBzZWN0aW9uLmggdGhpcyBhZGRzCmEgc2VjdGlvbnMtY29yZS5oIHNpbmNlIHRoaXMgd2ls bCBiZSB0YXJnZXRlZCB0byBiZSBzYWZlCnRvIGJlIHVzZWQgb24gYXNtIGNvZGUsIGxpbmtlciBz Y3JpcHRzIGFuZCBDIGNvZGUuCgp2NzogcmFuIGlzcGVsbCB0byBmaXggc3BlbGxpbmcgYXMgcmVx dWVzdGVkIGJ5IEJvcmlzCgp2NToKCm8gSHVnZSBkb2N1bWVudGF0aW9uIHJldmFtcCBiYXNlZCBv biBhIGNhcmVmdWwgcmV2aWV3IG9mIHRoZSBFTEYKICBzcGVjaWZpY2F0aW9ucy4gSW5jbHVkZXMg ZG9jdW1lbnRhdGlvbiBub3cgYWxzbyBhYm91dCB1c2FnZSBvZgogIHR3byBkb3RzICguLikgd2hl biBwcmVmaXhpbmcgRUxGIHByb2dyYW0gc3BlY2lmaWMgc2VjdGlvbnMuCgpvIFJlcGxhY2UgbWFj cm9zIGZvciBzZWN0aW9ucyBuYW1lcyBpbiBmYXZvciBvZiBqdXN0IHVzaW5nCiAgdGhlIHNlY3Rp b24gbmFtZXMgZXhwbGljaXRseSBpbiB0aGUgbGlua2VyIHNjcmlwdC4gVGhpcyBpcwogIHBlcmhh cHMgbW9yZSB3b3JrIHRvIGdyZXAgYnV0IHRoaXMgaXMgd2hhdCBmb2xrcyBzZWVtIHRvCiAgY3Vy cmVudGx5IHByZWZlci4KCm8gRml4IC50ZXh0IGFuZCAucm9kYXRhIGRvY3VtZW50YXRpb24gdG8g ZXhwbGFpbiBtZW1vcnkgcHJvdGVjdGlvbgogIHN0cmF0ZWdpZXMgd2hpY2ggYXJjaGl0ZWN0dXJl cyBjYW4gZW1icmFjZSB1cG9uIGluaXRpYWxpemF0aW9uCiAgKGRvY3VtZW50cyBDT05GSUdfREVC VUdfUk9EQVRBIGFuZCBtYXJrX3JvZGF0YV9ybygpKQoKbyBTa2lwIHRoZSAnTGludXggc2VjdGlv biBvcmRlcmluZycgZG9jdW1lbnRhdGlvbiBzZWN0aW9uLCB3ZSdsbCBpbnN0ZWFkCiAgYWRkIHRo aXMgb24gc3Vic2VxdWVudCBwYXRjaCB3aGljaCB3aWxsIGV4cGFuZCBvbiBpdCBjb25zaWRlcmFi bHkKCm8gRHJvcHBlZCB0cmVlIG9uIE1BSU5UQUlORVJTIC0tIGFzIHBlciBkaXNjdXNzaW9ucyB3 aXRoIEFybmQsIGhwYSBhbmQKICBKb3NoLCBpdHMgZWFzaWVyIHRvIGp1c3QgbGV0IGNoYW5nZXMg Zm9yIHNlY3Rpb25zIGdvIGluIHRocm91Z2ggdGhlCiAgcmVzcGVjdGl2ZSB0cmVlIHRoYXQgbmVl ZHMgdGhlIGNoYW5nZXMuCgpvIEZpeCB0eXBvcyBvbiBkb2N1bWVudGF0aW9uCgpvIERyb3BwZWQg U0VDVElPTl9BTEwoKSwgX19TRUNUSU9OX0NPUkUoKSwgU0VDVElPTl9DT1JFX0FMTCgpIG1hY3Jv cwogIHNpbmNlIHdlIGFyZSBmYXZvcmluZyB1c2luZyBleHBsaWNpdCBzZWN0aW9uIG5hbWVzLiBU aGVzZSBhcmUKICB1c2VsZXNzIGlmIHdlIGFyZSBiZWluZyBleHBsaWNpdC4KCm8gRHJvcCBMSU5V WF9TRUNUSU9OX1NJWkUoKSwgTElOVVhfU0VDVElPTl9FTVBUWSgpIGluIGZhdm9yIG9mIGhhdmlu ZwogIHNlY3Rpb24gcmFuZ2VzIGFuZCBsaW5rZXIgdGFibGVzIGRlZmluZSB0aGVpciBvd24sIHRv IGF2b2lkIGNvbmZ1c2lvbgogIGFuZCBtYWtlIGNvZGUgbW9yZSByZWFkYWJsZS4KCm8gQWRkIF9f ZGVmaW5lX2luaXRjYWxsKCkgZG9jdW1lbnRhdGlvbiBhbmQgYSBzbWFsbCBzZWN0aW9uIGRlc2Ny aWJpbmcKICBvdXIgY3VycmVudCBpbml0Y2FsbCBsZXZlbHMuIFRoaXMgc2hvdWxkIGhlbHAgYWxz byBjbGFyaWZ5IHdoYXQgd2FzCiAgbWVhbnQgYWJvdXQga2VlcGluZyBiYWNrd2FyZCBjb21wYXRp YmlsaXR5LgoKdjQ6CgpvIFBvcnQgdG8gc2hpbnkgbmV3IHNwaGlueCBkb2N1bWVudGF0aW9uIGZv cm1hdAoKbyBmaXggYSB1bmljb3JlMzIgYnVpbGQsIHR1cm5zIG91dCB0aGlzIGFjdHVhbGx5IGZp eGVzIHVuaWNvcmUzMgogIGRlZmNvbmZpZyBidWlsZHMgd2hpY2ggd2VyZSBmYWlsaW5nIGZvciBh IGxvbmcgd2hpbGUuIHVuaWNvcmUzMgogIGRvZXMgbm90IHNlZW0gdG8gZ3JvayB3ZWxsIHRoZSB0 eXBlIHBhc3NlZCBvbiBhIHNlY3Rpb24gZGVjbGFyYXRpb24sCiAgdGhpcyBpZ25vcmVzIGl0LgoK byBVc2UgVk1MSU5VWF9TWU1CT0woKSBpbiBtb3JlIHVzZXIgc3ltYm9scyAoZXh0ZXJuIEMgY29k ZSksIG5vdCBkb2luZwogIHRoaXMgd2FzIGNhdXNpbmcgZmluYWwgbGlua2VyIGlzc3VlcyB3aXRo IGJsYWNrZmluIC0tIHRoaXMgaXMKICBhIENPTkZJR19IQVZFX1VOREVSU0NPUkVfU1lNQk9MX1BS RUZJWD15IGFyY2hpdGVjdHVyZS4gVGhlIG90aGVyIG9uZQogIGJlaW5nIG1ldGF0YWcuIG1ldGF0 YWcgaXMgbm90IHN1cHBvcnRlZCBvbiAwLWRheSBzbyBJIGNhbm5vdCBjb25maXJtCiAgY29tcGls YXRpb24gdGhlcmUuCgpvIEFkZGVkIFNFQ1RJT05fQ09SRSgpIGZvciBDIGNvZGUsIHVzZWQgbGF0 ZXIgYnkgX19MSU5VWF9SQU5HRSgpCgpvIFNpbmNlIFNFQ1RJT05fQ09SRSgpIGlzIGRlZmluZWQg Zm9yIGxpbmtlciBzY3JpcHQgYW5kIEMgY29kZSwgc2hhcmUKICB0aGUgc2FtZSBoZWxwZXIgYW5k IGp1c3QgdXNlIGEgX19zdHJpbmdpZnkoKSBmb3IgdGhlIEMgY29kZSBhcyBpcyBkb25lCiAgZm9y IHRoZSBvdGhlciBDIGhlbHBlcnMuCgpvIG1vdmUgZ2VuZXJpYyBzZWN0aW9ucyB0byBhc20tZ2Vu ZXJpYy9zZWN0aW9uLWNvcmUuaCBpbnN0ZWFkLgogIFBvd2VyUEMgY29tcGlsYXRpb24gYmxvd3Mg dXAgaWYgYXNtL2p1bXBfbGFiZWxzLmggZ2V0cwogIHNlY3Rpb24uaCBpbmNsdWRlZCwgZml4aW5n IHRoaXMgaXMgbm90IGluIGFueSB3YXkgZWFzeS4KICBUaGUgbGlzdCBvZiBpc3N1ZXMgYXJlIGVu ZGxlc3MuIE1vdmluZyBuZXcgZGF0YSB0byBhIG5ldwogIHNpbXBsZSBmaWxlIHJlc29sdmVzIHRo aXMuCgpvIHNpbmNlIHRoaW5ncyBhcmUgbm93IGluIGFzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5o IHRoZQogIGd1YXJkIGNoYW5nZXMgb24gYXNtLWdlbmVyaWMvc2VjdGlvbnMuaCBhbmQgZWFjaCBh cmNoaXRlY3R1cmUKICBzZWN0aW9ucy5oIGFyZSBubyBsb25nZXIgbmVlZGVkCgpvIEdpdmUgZ2Vu ZXJpYyBzZWN0aW9ucyBzb21lIG1haW50YWluZXIgbG92ZSwgdGhhdCBjaGFuZ2UgaXMKICBBY2tl ZC1ieSBBcm5kIEJlcmdtYW5uLCBKb3NoIGFuZCBocGEuCgpvIEEgZmV3IGNoZWNrcGF0Y2gucGwg c3R5bGUgZml4ZXMKCm8gQXMgc3VnZ2VzdGVkIGJ5IEphbWVzIEhvZ2FuIHVzZSBnZW5lcmljLXkg dG8gY29weSBnZW5lcmljCiAgaGVhZGVyIGZpbGVzIG9uIGFyY2hpdGVjdHVyZXMgdGhhdCBkbyBu b3QgaGF2ZSBhIHNlY3Rpb25zLmgKICBpbnN0ZWFkIG9mIHdyaXRpbmcgYSBzaW1wbGUgZmlsZSBv bmx5IHRvIGluY2x1ZGUgdGhlIGdlbmVyaWMgb25lLgoKdjM6CgpvIGFkZCBtaXNzaW5nIHNlY3Rp b25zLmggZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBkaWQgbm90CiAgaGF2ZSBpdAoKbyBtb3ZlIGdl bmVyaWMgc2VjdGlvbnMgdG8gYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAoKbyBhZGQgZ2VuZXJpYyBh c20gaGVscGVycyBzZWN0aW9uX3R5cGUoKSwgc2VjdGlvbl90eXBlX2FzbXR5cGUoKSwKICBwdXNo X3NlY3Rpb25fdHlwZSgpIC0tIHRoZXNlIGhlbHBlcnMgZW5hYmxlIGVhc3kgdXNlIGZvcgogIGZv ciBsYXRlciBkZWNsYXJpbmcgYW5kIHVzaW5nIG9mIGN1c3RvbSBMaW51eCBzZWN0aW9ucyB1c2lu ZwogIG1vcmUgc3RhbmRhcmQgQVBJcyBpbiBib3RoIEMgY29kZSwgYXNtIGNvZGUgKEMgYXNtIGNh bGxzLCBvcgogIGFzbSBmaWxlcyksIGVuYWJsaW5nIGZ1dHVyZSBzdGFuZGFyZGl6ZWQgc2VjdGlv biB0eXBlcyB0bwogIGJlIG1vcmUgaW1tZWRpYXRlbHkgYWNjZXNzaWJsZSB0byBhc20gY29kZSwg bm90IGp1c3QgQyBjb2RlLgogIE5vdGUgZm9yIEFTTV9DTURfU0VQIHdlIHVzZSBieSBkZWZhdWx0 ICJcbiIsIGFyY2hpdGVjdHVyZXMgbmVlZGVkCiAgdG8gb3ZlcnJpZGUgY2FuIGRvIHNvIG9uIHRo ZWlyIG93biBzZWN0aW9ucy5oIHByaW9yIHRvIGluY2x1c2lvbgogIG9mIGFzbS1nZW5lcmljL3Nl Y3Rpb25zLmgKClNpZ25lZC1vZmYtYnk6IEx1aXMgUi4gUm9kcmlndWV6IDxtY2dyb2ZAa2VybmVs Lm9yZz4KLS0tCiBEb2N1bWVudGF0aW9uL2luZGV4LnJzdCAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2JhY2tncm91bmQucnN0ICAgICB8IDEwNSArKysr KysrKysrCiBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkgICAgICAgICAgICB8ICAgNCAr CiBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2luZGV4LnJzdCAgICAgICAgICB8ICAxNyArKwogRG9j dW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0ICAgfCAxNDggKysrKysrKysrKysr KysKIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsrCiBh cmNoL2FscGhhL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2Fy Yy9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2FybS9pbmNs dWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2F2cjMyL2luY2x1ZGUvYXNtL0ti dWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL0tidWls ZCAgICAgICAgICB8ICAgMSArCiBhcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBhcmNoL2NyaXMvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8 ICAgMSArCiBhcmNoL2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICB8ICAgMSAr CiBhcmNoL2g4MzAwL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNo L2hleGFnb24vaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICB8ICAgMSArCiBhcmNoL2lhNjQv aW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL20zMnIvaW5jbHVk ZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL202OGsvaW5jbHVkZS9hc20v S2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL21ldGFnL2luY2x1ZGUvYXNtL0tidWls ZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vS2J1aWxk ICAgICAgICB8ICAgMSArCiBhcmNoL21pcHMvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAg ICB8ICAgMSArCiBhcmNoL21uMTAzMDAvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICB8ICAg MSArCiBhcmNoL25pb3MyL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBh cmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICB8ICAgMSArCiBhcmNoL3Bh cmlzYy9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3Bvd2VycGMv aW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICB8ICAgMSArCiBhcmNoL3MzOTAvaW5jbHVkZS9h c20vS2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3Njb3JlL2luY2x1ZGUvYXNtL0ti dWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZCAgICAg ICAgICAgICAgICB8ICAgMSArCiBhcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAg ICAgICB8ICAgMSArCiBhcmNoL3RpbGUvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8 ICAgMSArCiBhcmNoL3VtL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgICB8ICAgMSAr CiBhcmNoL3VuaWNvcmUzMi9pbmNsdWRlL2FzbS9zZWN0aW9uLWNvcmUuaCB8ICAxOSArKwogYXJj aC94ODYvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC94dGVu c2EvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgfCAgIDEgKwogaW5jbHVkZS9hc20tZ2Vu ZXJpYy9zZWN0aW9uLWNvcmUuaCAgICAgICAgfCAzMDcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmggICAgICAgICAgICB8ICAgMiAr CiBpbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmggICAgICAgICB8ICAgMSArCiBpbmNs dWRlL2xpbnV4L2luaXQuaCAgICAgICAgICAgICAgICAgICAgICB8ICA4OSArKysrKysrLS0KIGlu Y2x1ZGUvbGludXgvc2VjdGlvbnMuaCAgICAgICAgICAgICAgICAgIHwgIDg3ICsrKysrKysrKwog NDIgZmlsZXMgY2hhbmdlZCwgODA5IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vc2VjdGlvbnMvYmFja2dyb3VuZC5yc3QKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2luZGV4LnJzdAogY3JlYXRlIG1vZGUg MTAwNjQ0IERvY3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGFyY2gvdW5pY29yZTMyL2luY2x1ZGUvYXNtL3NlY3Rpb24tY29yZS5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvc2VjdGlvbnMuaAoKZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9pbmRleC5yc3QKaW5kZXggY2I1ZDc3 Njk5YzYwLi43MWUwMzA1YzAzNmQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaW5kZXgucnN0 CisrKyBiL0RvY3VtZW50YXRpb24vaW5kZXgucnN0CkBAIC01Nyw2ICs1Nyw3IEBAIG5lZWRlZCku CiAgICBtZWRpYS9pbmRleAogICAgZ3B1L2luZGV4CiAgICBzZWN1cml0eS9pbmRleAorICAgc2Vj dGlvbnMvaW5kZXgKICAgIHNvdW5kL2luZGV4CiAgICBjcnlwdG8vaW5kZXgKIApkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9iYWNrZ3JvdW5kLnJzdCBiL0RvY3VtZW50YXRpb24v c2VjdGlvbnMvYmFja2dyb3VuZC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi40ZjA0YzA2ODJhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Nl Y3Rpb25zL2JhY2tncm91bmQucnN0CkBAIC0wLDAgKzEsMTA1IEBACis9PT09PT09PT09PQorRUxG IHNlY3Rpb24gYmFja2dyb3VuZAorPT09PT09PT09PT0KKworQWJvdXQKKz09KworVGhlIHB1cnBv c2Ugb2YgdGhpcyBjaGFwdGVyIGlzIHRvIGhlbHAgdGhvc2Ugbm90IGZhbWlsaWFyIHdpdGggRUxG IHRvIGJydXNoIHVwCit0aGUgbGF0ZXN0IEVMRiBzcGVjaWZpY2F0aW9ucyBpbiBvcmRlciB0byBo ZWxwIHVuZGVyc3RhbmQgaG93IExpbnV4IHVzZXMgYW5kCitkZWZpbmVzIGl0cyBvd24gRUxGIHNl Y3Rpb25zLgorCitTdGFuZGFyZGl6ZWQgRUxGCis9PT09PT09PQorCitUaGUgZmlyc3QgcHVibGlj YXRpb24gZG9jdW1lbnRpbmcgRUxGIHdhcyBVTklYIFN5c3RlbSBMYWJvcmF0b3JpZXMnIChVU0wp CisqU3lzdGVtIFYgUmVsZWFzZSA0IEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UqIChgU1JW NCBBQklgXykgc3BlY2lmaWNhdGlvbi4KK09yaWdpbmFsbHkgRUxGIHdhcyBvbmx5IGEgc21hbGwg cGFydCBvZiB0aGUgU1JWNCBBQkksIHdpdGggdGltZSBob3dldmVyIG5ldworc3BlY2lmaWNhdGlv bnMgb25seSBwdXQgZm9jdXMgb24gRUxGLCBzdWNoIHdhcyB0aGUgY2FzZSBvZiB0aGUgKlRJUyBQ b3J0YWJsZQorRm9ybWF0cyBTcGVjaWZpY2F0aW9uIHZlcnNpb24gMS4yKiAoYFRJUyAxLjJgXyku IEFzIG9mIFRJUyAxLjIsIEVMRiB3YXMKK3N1cHBsZW1lbnRlZCB3aXRoIHByb2Nlc3NvciBzcGVj aWZpYyBFTEYgYWRkZW5kdW1zLCBhdmFpbGFibGUgb24gdGhlICpMaW51eAorRm91bmRhdGlvbiBy ZWZlcmVuY2VkIHNwZWNpZmljYXRpb24gcGFnZSogKGBMRiByZWYgcGFnZWBfKS4gVGhlIGxhdGVz dCBFTEYKK3NwZWNpZmljYXRpb24gaXMgdGhlICpTeXN0ZW0gViBBcHBsaWNhdGlvbiBCaW5hcnkg SW50ZXJmYWNlIC0gRFJBRlQgLSAyNCBBcHJpbAorMjAwMSogKGBnYWJpNGBfKS4KKworLi4gX1NS VjQgQUJJOiBodHRwOi8vd3d3LnNjby5jb20vZGV2ZWxvcGVycy9kZXZzcGVjcy9nYWJpNDEucGRm CisuLiBfVElTIDEuMjogaHR0cHM6Ly9yZWZzcGVjcy5saW51eGJhc2Uub3JnL2VsZi9lbGYucGRm CisuLiBfTEYgcmVmIHBhZ2U6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy8KKy4uIF9n YWJpNDogaHR0cHM6Ly9yZWZzcGVjcy5saW51eGJhc2Uub3JnL2VsZi9nYWJpNCsvY29udGVudHMu aHRtbAorCitFTEYgdmlld3Mgb24gTGludXgKKz09PT09PT09PQorCitUaGVyZSBhcmUgdHdvIHZp ZXdzIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBpbnNwZWN0aW5nIGRhdGEgaW4gYW4gRUxGIGZpbGUs IGEKK0xpbmtpbmcgdmlldywgYW5kIGFuIEV4ZWN1dGlvbiB2aWV3LiBBIFNlY3Rpb24gSGVhZGVy IFRhYmxlIGVuYWJsZXMgb25lIHRvCitkZXNjcmliZSBhbiBvYmplY3QgdXNpbmcgdGhlIExpbmtp bmcgdmlldyB3aGlsZSBhIFByb2dyYW0gSGVhZGVyIFRhYmxlIGVuYWJsZXMKK29uZSB0byBkZXNj cmliZSBhbiBvYmplY3QgdXNpbmcgdGhlIEV4ZWN1dGlvbiB2aWV3LiBUaGUgdmlld3MgYXJlIG5v dCBtdXR1YWxseQorZXhjbHVzaXZlLiBGb3IgaW5zdGFuY2UsIHZtbGludXggY2FuIGJlIHZpZXdl ZCB1bmRlciBib3RoIHZpZXdzLCBgYHJlYWRlbGYgLVMKK3ZtbGludXhgYCBmb3IgdGhlIExpbmtp bmcgdmlldywgYW5kIGBgcmVhZGVsZiAtbCB2bWxpbnV4YGAgZm9yIHRoZSBFeGVjdXRpb24KK3Zp ZXcuICBJbiBMaW51eCBvbmx5IHRoZSB2bWxpbnV4IGZpbGUgd2lsbCBoYXZlIGFuIEV4ZWN1dGlv biB2aWV3LCBldmVuIG1vZHVsZXMKK2xhY2sgYW4gRXhlY3V0aW9uIHZpZXcgZ2l2ZW4gdGhhdCB2 bWxpbnV4IGlzIHRoZSBvbmx5IGZpbGUgdGhhdCBkZXNjcmliZXMgaG93Cit0aGUgdGhlIGtlcm5l bCBydW5zIGZyb20gdGhlIHN0YXJ0LiAgQWxsIG90aGVyIExpbnV4IGtlcm5lbCBvYmplY3QgZmls ZXMgaGF2ZQorYW4gYXZhaWxhYmxlIExpbmtpbmcgdmlldy4KKworVW5kZXIgdGhlIExpbmtpbmcg dmlldywgdGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGRlc2NyaWJlcyBhbGwgYXZhaWxhYmxlCitz ZWN0aW9ucy4gVGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGlzIGFuIGFycmF5IG9mIEVMRiBzZWN0 aW9uIGhlYWRlciBkYXRhCitzdHJ1Y3R1cmVzLiBJZiBvbiBhIDMyLWJpdCBzeXN0ZW0gdGhpcyBp cyBgYHN0cnVjdCBlbGYzMl9zaGRgYCwgaWYgb24gYSA2NC1iaXQKK3RoaXMgaXMgYGBzdHJ1Y3Qg ZWxmNjRfc2hkcmBgLiBTZWN0aW9ucyBhcmUgb25seSB2aXNpYmxlIG9uIG9iamVjdCBmaWxlcyB0 aGF0CitoYXZlIGEgTGlua2luZyB2aWV3LCBzaW5jZSBhbGwgTGludXgga2VybmVsIGZpbGVzIGhh dmUgTGlua2luZyB2aWV3LCBhbGwga2VybmVsCitvYmplY3RzIGhhdmUgRUxGIHNlY3Rpb25zLgor CitMaW1pdGF0aW9ucyBvbiBFTEYgc2VjdGlvbnMKKz09PT09PT09PT09PT0rCitXZSBwcm92aWRl IGEgc3VtbWFyeSBvbiB0aGUgbGltaXRhdGlvbnMgb2YgRUxGIHNlY3Rpb25zLiBSZWZlciB0byB0 aGUgcHVibGljCitFTEYgc3BlY2lmaWNhdGlvbnMgZm9yIGRldGFpbHMuIE5vdGUgdGhhdCA2NC1i aXQgbGltaXRhdGlvbnMgbWF5IGRlcGVuZAorb24gcHJvY2Vzc29yIHNwZWNpZmljIHNlY3Rpb24g YXR0cmlidXRlcyB0byBiZSB1c2VkLCByZWZlciB0byB5b3VyIHByb2Nlc3Nvcgorc3BlY2lmaWNh dGlvbiBpZiB1bnN1cmUuCisKK0l0cyB3b3J0aCBlbGFib3JhdGluZyBvbiB0aGUgbGltaXRhdGlv bnMgb24gdGhlIG5hbWUgb2YgYW4gRUxGIHNlY3Rpb246CitFTEYgc2VjdGlvbiBuYW1lcyBhcmUg c3RvcmVkIGFzIHN0cmluZ3MgYXMgcGVyIHRoZSBFTEYgc3BlY2lmaWNhdGlvbiwgYW5kCithcyBj YW4gYmUgZXhwZWN0ZWQsIHRoZXNlIGRvbid0IGhhdmUgZXhwbGljaXQgbGltaXRhdGlvbnMuIFRo ZSBpbXBsaWNpdAorbGltaXRhdGlvbiB0aGVuIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgYW4gRUxG IG9iamVjdCBmaWxlIGFuZCBFTEYgc2VjdGlvbi4KKworSWYgdXNpbmcgcmVhbGx5IGxhcmdlIGtl cm5lbHMgb3Igb2JqZWN0cyB3aXRoIGxhcmdlIGFtb3VudHMgb2Ygc2VjdGlvbnMgb25lCit3b3Vs ZCBzdGlsbCBuZWVkIHRvIGJlIHN1cmUgdGhhdCBFTEYgbG9hZGVyIGluIGNoYXJnZSBvZiBsb2Fk aW5nIHRoZSBMaW51eAora2VybmVsIGlzIHByb3Blcmx5IHVwZGF0ZWQgdG8gaGFuZGxlIGNvcGlu ZyB3aXRoIHRoZSBsYXRlc3QgRUxGIGV4dGVuc2lvbnMuCisKKyAgIC4uIGZsYXQtdGFibGU6OiBM aW1pdGF0aW9ucyBvbiBFTEYgU2VjdGlvbnMKKworICAgICAgKiAtIFNlY3Rpb24gYXR0cmlidXRl CisgICAgICAgIC0gMzItYml0CisgICAgICAgIC0gNjQtYml0CisKKyAgICAgICogLSBFTEYgc2Vj dGlvbiBuYW1lCisgICAgICAgIC0gU2l6ZSBvZiBhbiBFTEYgc2VjdGlvbgorICAgICAgICAtIFNp emUgb2YgYW4gRUxGIHNlY3Rpb24KKworICAgICAgKiAtIFNpemUgb2YgYW4gRUxGIHNlY3Rpb24K KyAgICAgICAgLSA0IEdpQgorICAgICAgICAtIDE2IEVpQgorCisgICAgICAqIC0gTWF4IG51bWJl ciBvZiBzZWN0aW9ucyBpbiBhbiBvYmplY3QgZmlsZQorICAgICAgICAtIDQgR2lFbnRyaWVzICg0 Mjk0OTY3Mjk2KQorICAgICAgICAtIDE2IEVpRW50cmllcyAoMTg0NDY3NDQwNzM3MDk1NTE2MTYp CisKK1Byb2dyYW0gc3BlY2lmaWMgRUxGIHNlY3Rpb25zCis9PT09PT09PT09PT09PSsKK1RoZSBF TEYgc3BlY2lmaWNhdGlvbiBhbGxvd3MgZm9yIGEgc2VjdGlvbiB0eXBlIHRvIGJlIHNwZWNpZmll ZCBhcworKlByb2dyYW0gc3BlY2lmaWMgc2VjdGlvbiosIGRlZmluZWQgYXMgYGBTSFRfUFJPR0JJ VFNgYC4gVGhpcyBzZWN0aW9ucyB0eXBlCitlbmFibGVzIHByb2dyYW1zIHRvIGN1c3RvbWl6ZSBz ZWN0aW9ucyBmb3IgdGhlaXIgb3duIHVzZS4gSW4gYXNzZW1ibHkgdGhpcworc3BlY2lmaWVkIGBg QHByb2diaXRzYGAgb24gbW9zdCBhcmNoaXRlY3R1cmVzLCBvbiBBUk0gdGhpcyBpcyBgYCVwcm9n Yml0c2BgLgorCitgYFNIVF9QUk9HQklUU2BgIGlzIHVzZWQgYnkgTGludXggZm9yIGRlZmluaW5n IGFuZCB1c2luZyBMaW51eCBFTEYgc2VjdGlvbnMuCisKK1NwZWNpYWwgRUxGIFNlY3Rpb25zCis9 PT09PT09PT09CisKK1RoZSBFTEYgc3BlY2lmaWNhdGlvbiBkZWZpbmVzICpTcGVjaWFsIEVMRiBT ZWN0aW9ucyogb24gY2hhcHRlciA0IChgZ2FiaTQKK2NoNGBfKS4gVGhlc2UgYXJlIGRlZmluZWQg YXMgc2VjdGlvbnMgd2hpY2ggaG9sZCBwcm9ncmFtIGFuZCBjb250cm9sCitpbmZvcm1hdGlvbi4g T2YgdGhlc2Ugc2VjdGlvbnMsIGEgZmV3IGhhdmUgdGhlIHNlY3Rpb24gdHlwZSBhcworYGBTSFRf UFJPR0JJVFNgYC4gVGhpcyBlbmFibGVzIExpbnV4IHRvICpmdXJ0aGVyIGN1c3RvbWl6ZSogdXNl IG9mIHRoZSBzZWN0aW9uCitiZXlvbmQgd2hhdCB0aGUgRUxGIHNwZWNpZmljYXRpb24gc3VnZ2Vz dHMuCisKKy4uIF9nYWJpNCBjaDQ6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy9lbGYv Z2FiaTQrL2NoNC5zaGVhZGVyLmh0bWwjc3BlY2lhbF9zZWN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5IGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25m LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmFhMWM1NzU5NWUx Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5CkBAIC0w LDAgKzEsNCBAQAorIyAtKi0gY29kaW5nOiB1dGYtODsgbW9kZTogcHl0aG9uIC0qLQorCitwcm9q ZWN0ID0gJ0xpbnV4IEtlcm5lbCBFTEYgc2VjdGlvbnMnCitodG1sX3NlYXJjaF9sYW5ndWFnZSA9 ICdlbicKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdGlvbnMvaW5kZXgucnN0IGIvRG9j dW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5mMzc1MTFlZjA1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0 aW9uL3NlY3Rpb25zL2luZGV4LnJzdApAQCAtMCwwICsxLDE3IEBACis9PT09PT09PT09PT0rTGlu dXggS2VybmVsIEVMRiBzZWN0aW9ucworPT09PT09PT09PT09KworVGhpcyBib29rIGRvY3VtZW50 cyB0aGUgZGlmZmVyZW50IEVMRiBzZWN0aW9ucyB1c2VkIG9uIHRoZSBMaW51eCBrZXJuZWwuCitX ZSBzdGFydCBvZmYgYnkgcHJvdmlkaW5nIHJlZmVyZW5jZXMgdG8gaG93IEVMRiB3YXMgc3RhbmRh cmRpemVkLCByZWZlcmVuY2VzCit0byB0aGUgc3RhbmRhcmRzIG9uIEVMRiBzZWN0aW9ucywgcmV2 aWV3IGxpbWl0YXRpb25zIG9mIEVMRiBzZWN0aW9ucywgYW5kCitmaW5hbGx5IGhvdyBMaW51eCB1 c2VzIEVMRiBzZWN0aW9ucyBpbiB0aGUgTGludXgga2VybmVsLiBDZXJ0YWluIGltcG9ydGFudAor TGludXggRUxGIHNlY3Rpb25zIGFyZSBkb2N1bWVudGVkIGNhcmVmdWxseTogd2UgZGVzY3JpYmUg dGhlIGdvYWwgb2YgdGhlCitFTEYgc2VjdGlvbiwgYW5kIGFkZHJlc3MgY29uY3VycmVuY3kgY29u c2lkZXJhdGlvbnMgd2hlbiBhcHBsaWNhYmxlLiBBIGZldworY29tbW9uIGEgc2V0IG9mIExpbnV4 IGhlbHBlcnMgZm9yIEVMRiBzZWN0aW9ucyBhcmUgYWxzbyBkb2N1bWVudGVkLgorCisuLiB0b2N0 cmVlOjoKKyAgIDptYXhkZXB0aDogNAorCisgICBiYWNrZ3JvdW5kCisgICBzZWN0aW9uLWNvcmUK ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdCBiL0Rv Y3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLmFjNTgxNWEwZDliMwotLS0gL2Rldi9udWxsCisrKyBiL0Rv Y3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdApAQCAtMCwwICsxLDE0OCBAQAor PT09PT09PT09PT09PT09PT0rTGludXggRUxGIHByb2dyYW0gc3BlY2lmaWMgc2VjdGlvbnMKKz09 PT09PT09PT09PT09PT09KworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2Vj dGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IEVMRiBwcm9ncmFtIHNwZWNpZmljIHNlY3Rpb25z CisKK0xpbnV4IGxpbmtlciBzY3JpcHQKKz09PT09PT09PSsKKy4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiBMaW51eCBsaW5rZXIgc2Ny aXB0CisKK01lbW9yeSBwcm90ZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVsLWRv Yzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IE1lbW9yeSBw cm90ZWN0aW9uCisKK21hcmtfcm9kYXRhX3JvCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLi4g a2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvaW5pdC5oCisgICA6ZnVuY3Rpb25zOiBtYXJrX3Jv ZGF0YV9ybworCisucm9kYXRhCistLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20t Z2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLnJvZGF0YQorCisudGV4dAorLS0tLS0K Ky4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6 ZG9jOiAudGV4dAorCisuZGF0YQorLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLmRhdGEKKworTGludXggLmlu aXRcKiBzZWN0aW9ucworPT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IGluaXQgc2VjdGlvbnMKKwor LmluaXQudGV4dAorLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVy aWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IC5pbml0LnRleHQKKworLmluaXQuZGF0YQorLS0t LS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3Jl LmgKKyAgIDpkb2M6IC5pbml0LmRhdGEKKworLmluaXQucm9kYXRhCistLS0tLS0tLS0tLS0KKy4u IGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9j OiAuaW5pdC5yb2RhdGEKKworSW5pdGNhbGwgbGV2ZWxzCistLS0tLS0tLS0tLS0tLS0KKy4uIGtl cm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L2luaXQuaAorICAgOmRvYzogSW5pdGNhbGwgbGV2ZWxz CisKKy5pbml0Y2FsbAorLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAuaW5pdGNhbGwKKworX19kZWZp bmVfaW5pdGNhbGwKKy0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9s aW51eC9pbml0LmgKKyAgIDpmdW5jdGlvbnM6IF9fZGVmaW5lX2luaXRjYWxsCisKK0xpbnV4IC5l eGl0XCogc2VjdGlvbnMKKz09PT09PT09PT09CisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2Fz bS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiBMaW51eCBleGl0IHNlY3Rpb25zCisK Ky5leGl0LnRleHQKKy0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5l cmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAuZXhpdC50ZXh0CisKKy5leGl0LmRhdGEKKy0t LS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29y ZS5oCisgICA6ZG9jOiAuZXhpdC5kYXRhCisKKy5leGl0Y2FsbC5leGl0CistLS0tLS0tLS0tLS0t LQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAg IDpkb2M6IC5leGl0Y2FsbC5leGl0CisKK0xpbnV4IC5yZWZcKiBzZWN0aW9ucworPT09PT09PT09 PSsKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisg ICA6ZG9jOiBMaW51eCByZWZlcmVuY2VzIHRvIGluaXQgc2VjdGlvbnMKKworLnJlZi50ZXh0Cist LS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29y ZS5oCisgICA6ZG9jOiAucmVmLnRleHQKKworLnJlZi5kYXRhCistLS0tLS0tLS0KKy4uIGtlcm5l bC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAucmVm LmRhdGEKKworLnJlZi5yb2RhdGEKKy0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLnJlZi5yb2RhdGEKKworR2Vu ZXJpYyBMaW51eCBrZXJuZWwgc2VjdGlvbiBoZWxwZXJzCis9PT09PT09PT09PT09PT09PT0KKwor SW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51 eC9zZWN0aW9ucy5oCisgICA6ZG9jOiBJbnRyb2R1Y3Rpb24KKworTElOVVhfU0VDVElPTl9BTElH Tk1FTlQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9s aW51eC9zZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBMSU5VWF9TRUNUSU9OX0FMSUdOTUVOVAor CitMSU5VWF9TRUNUSU9OX1NUQVJUCistLS0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9j OjogaW5jbHVkZS9saW51eC9zZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBMSU5VWF9TRUNUSU9O X1NUQVJUCisKK0xJTlVYX1NFQ1RJT05fRU5ECistLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVs LWRvYzo6IGluY2x1ZGUvbGludXgvc2VjdGlvbnMuaAorICAgOmZ1bmN0aW9uczogTElOVVhfU0VD VElPTl9FTkQKKworREVDTEFSRV9MSU5VWF9TRUNUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpmdW5jdGlvbnM6 IERFQ0xBUkVfTElOVVhfU0VDVElPTgorCitERUNMQVJFX0xJTlVYX1NFQ1RJT05fUk8KKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvc2VjdGlv bnMuaAorICAgOmZ1bmN0aW9uczogREVDTEFSRV9MSU5VWF9TRUNUSU9OX1JPCmRpZmYgLS1naXQg YS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGQyZGI3ZmVjZWYzMi4uNWU1ODBiMTI1 N2ZiIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtNTQzOCw2 ICs1NDM4LDE4IEBAIFM6CVN1cHBvcnRlZAogRjoJZHJpdmVycy9iYXNlL3Bvd2VyL2RvbWFpbiou YwogRjoJaW5jbHVkZS9saW51eC9wbV9kb21haW4uaAogCitHRU5FUklDIFNFQ1RJT05TCitNOgki THVpcyBSLiBSb2RyaWd1ZXoiIDxtY2dyb2ZAa2VybmVsLm9yZz4KK006CUpvc2ggUG9pbWJvZXVm IDxqcG9pbWJvZUByZWRoYXQuY29tPgorTToJIkguIFBldGVyIEFudmluIiA8aHBhQHp5dG9yLmNv bT4KK0w6CWxpbnV4LWFyY2hAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1j b3JlLmgKK0Y6CWluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAorRjoJaW5jbHVkZS9hc20t Z2VuZXJpYy92bWxpbnV4Lmxkcy5oCitGOglEb2N1bWVudGF0aW9uL3NlY3Rpb25zL3NlY3Rpb24t Y29yZS5yc3QKKwogR0VORVJJQyBVSU8gRFJJVkVSIEZPUiBQQ0kgREVWSUNFUwogTToJIk1pY2hh ZWwgUy4gVHNpcmtpbiIgPG1zdEByZWRoYXQuY29tPgogTDoJa3ZtQHZnZXIua2VybmVsLm9yZwpk aWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2FscGhhL2lu Y2x1ZGUvYXNtL0tidWlsZAppbmRleCBiZjg0NzVjZTg1ZWUuLjU0MjI4MjdmMTU4NSAxMDA2NDQK LS0tIGEvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hbHBoYS9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTEwLDMgKzEwLDQgQEAgZ2VuZXJpYy15ICs9IG1tLWFyY2gtaG9v a3MuaAogZ2VuZXJpYy15ICs9IHByZWVtcHQuaAogZ2VuZXJpYy15ICs9IHNlY3Rpb25zLmgKIGdl bmVyaWMteSArPSB0cmFjZV9jbG9jay5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlm ZiAtLWdpdCBhL2FyY2gvYXJjL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvYXJjL2luY2x1ZGUv YXNtL0tidWlsZAppbmRleCBjMzMyNjA0NjA2ZGQuLjdiMmNiM2RlYTVmYyAxMDA2NDQKLS0tIGEv YXJjaC9hcmMvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvYXJjL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtNTEsMyArNTEsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0g dmdhLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgK K2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVk ZS9hc20vS2J1aWxkIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IGVmYjIxNzU3 ZDQxZi4uOWI2OWEyMmE5YWUxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9LYnVp bGQKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vS2J1aWxkCkBAIC00MSwzICs0MSw0IEBAIGdl bmVyaWMteSArPSB1bmFsaWduZWQuaAogCiBnZW5lcmF0ZWQteSArPSBtYWNoLXR5cGVzLmgKIGdl bmVyYXRlZC15ICs9IHVuaXN0ZC1uci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9LYnVpbGQKaW5kZXggODM2NWE4NGMyNjQwLi4wMGFjZTVlODI2ZjEgMTAwNjQ0Ci0t LSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vS2J1aWxkCkBAIC00NSwzICs0NSw0IEBAIGdlbmVyaWMteSArPSB1bmFsaWduZWQuaAog Z2VuZXJpYy15ICs9IHVzZXIuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5lcmljLXkgKz0geG9y LmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9hdnIzMi9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2F2cjMyL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAy NDFiOWI5NzI5ZDguLmYyYzNiNjU2YTBlNyAxMDA2NDQKLS0tIGEvYXJjaC9hdnIzMi9pbmNsdWRl L2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hdnIzMi9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTIyLDMg KzIyLDQgQEAgZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB2Z2EuaAog Z2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJp Yy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2luY2x1ZGUv YXNtL0tidWlsZCBiL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDJmYjY3 YjU5ZDE4OC4uYmYyMDU0MWJjZjIxIDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL2luY2x1ZGUv YXNtL0tidWlsZAorKysgYi9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNDcs MyArNDcsNCBAQCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMteSArPSB1c2VyLmgK IGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVy aWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9jNngvaW5jbHVkZS9hc20v S2J1aWxkIGIvYXJjaC9jNngvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDY0NDY1ZTdlMjI0NS4u MzgxMjdjZTc0N2JlIDEwMDY0NAotLS0gYS9hcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQKKysr IGIvYXJjaC9jNngvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC02MiwzICs2Miw0IEBAIGdlbmVyaWMt eSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10 aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRp ZmYgLS1naXQgYS9hcmNoL2NyaXMvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9jcmlzL2luY2x1 ZGUvYXNtL0tidWlsZAppbmRleCAxNzc4ODA1ZjYzODAuLjM4NWNkODhhOWQ5ZSAxMDA2NDQKLS0t IGEvYXJjaC9jcmlzL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2NyaXMvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC00NSwzICs0NSw0IEBAIGdlbmVyaWMteSArPSB0eXBlcy5oCiBnZW5lcmlj LXkgKz0gdmdhLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0g eG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9mcnYv aW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDFm YTA4NGNmMWE0My4uNDZkN2M1OTlkOWI4IDEwMDY0NAotLS0gYS9hcmNoL2Zydi9pbmNsdWRlL2Fz bS9LYnVpbGQKKysrIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC04LDMgKzgsNCBA QCBnZW5lcmljLXkgKz0gbW0tYXJjaC1ob29rcy5oCiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBn ZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgK K2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9oODMwMC9pbmNs dWRlL2FzbS9LYnVpbGQgYi9hcmNoL2g4MzAwL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAzNzNj YjIzMzAxZTMuLjFlYzA0ZWMxYzgyYiAxMDA2NDQKLS0tIGEvYXJjaC9oODMwMC9pbmNsdWRlL2Fz bS9LYnVpbGQKKysrIGIvYXJjaC9oODMwMC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTc1LDMgKzc1 LDQgQEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25lZC5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdlbmVy aWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMteSAr PSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0ti dWlsZCBiL2FyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggZGI4ZGRhYmM2YmQy Li4zN2Q3YmZhZTc2MTkgMTAwNjQ0Ci0tLSBhL2FyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9LYnVp bGQKKysrIGIvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNjAsMyArNjAsNCBA QCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15 ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNl Y3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkIGIv YXJjaC9pYTY0L2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA1MDJhOTFkOGRiYmQuLjY3MmM2ZDVk YTE4YyAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNo L2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC05LDMgKzksNCBAQCBnZW5lcmljLXkgKz0gcHJl ZW1wdC5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9IHZ0aW1lLmgK IGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3Jl LmgKZGlmZiAtLWdpdCBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL20zMnIv aW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDZlNjlkMmM0MmVlZS4uOGNjZmI1ZWI5Njc4IDEwMDY0 NAotLS0gYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbTMyci9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTEyLDMgKzEyLDQgQEAgZ2VuZXJpYy15ICs9IHByZWVtcHQuaAog Z2VuZXJpYy15ICs9IHNlY3Rpb25zLmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5l cmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRp ZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9tNjhrL2luY2x1 ZGUvYXNtL0tidWlsZAppbmRleCAxZjJlNWQzMWNiMjQuLjEyNzdiNDViZjRmOSAxMDA2NDQKLS0t IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC0zNCwzICszNCw0IEBAIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBn ZW5lcmljLXkgKz0gdHlwZXMuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVy aWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9h cmNoL21ldGFnL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20vS2J1 aWxkCmluZGV4IDE2NzE1MGM3MDFkMS4uYjEwMTEzNzVjZDdhIDEwMDY0NAotLS0gYS9hcmNoL21l dGFnL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL0tidWls ZApAQCAtNTUsMyArNTUsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdh LmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dl bmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9taWNyb2JsYXplL2lu Y2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5k ZXggYjBhZTg4YzlmZWQ5Li5jNmMyY2Y2ZWRjOTggMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6 ZS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtMTEsMyArMTEsNCBAQCBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkg Kz0gc3lzY2FsbHMuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3 b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBh L2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vS2J1 aWxkCmluZGV4IGVkMDcxNzlmZTI2YS4uN2E5MzJiNGE1NTMxIDEwMDY0NAotLS0gYS9hcmNoL21p cHMvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9LYnVpbGQK QEAgLTIxLDMgKzIxLDQgQEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25lZC5oCiBnZW5lcmljLXkgKz0g dXNlci5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5o CitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvbW4xMDMwMC9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL21uMTAzMDAvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4 IDFjOGRkMGY1Y2Q1ZC4uZjgxNDViYzg1ODM1IDEwMDY0NAotLS0gYS9hcmNoL21uMTAzMDAvaW5j bHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAg LTEwLDMgKzEwLDQgQEAgZ2VuZXJpYy15ICs9IHByZWVtcHQuaAogZ2VuZXJpYy15ICs9IHNlY3Rp b25zLmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1h LXRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL25p b3MyL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbmlvczIvaW5jbHVkZS9hc20vS2J1aWxkCmlu ZGV4IGQ2MzMzMGU4ODM3OS4uYzljN2NiODJiMDBmIDEwMDY0NAotLS0gYS9hcmNoL25pb3MyL2lu Y2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL25pb3MyL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt NjMsMyArNjMsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdl bmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2Fz bS9LYnVpbGQgYi9hcmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAyODMyZjAz MWZiMTEuLjg2MTc1ZTcwMTg2OSAxMDA2NDQKLS0tIGEvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2Fz bS9LYnVpbGQKKysrIGIvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTcxLDMg KzcxLDQgQEAgZ2VuZXJpYy15ICs9IHVzZXIuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5lcmlj LXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkgKz0g c2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL0tidWls ZCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA5MWY1M2MwN2Y0MTAuLjE4 YTlkNGM1ZWFkNyAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCisr KyBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMjgsMyArMjgsNCBAQCBnZW5l cmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0 LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUu aApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvcG93 ZXJwYy9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggNWM0ZmJjODBkYzZjLi40MzIyZDk3NDZjZGIg MTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9w b3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtOCwzICs4LDQgQEAgZ2VuZXJpYy15ICs9IG1j c19zcGlubG9jay5oCiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0gcndzZW0u aAogZ2VuZXJpYy15ICs9IHZ0aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZm IC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvczM5MC9pbmNsdWRl L2FzbS9LYnVpbGQKaW5kZXggOGFlYTMyZmU4YmQyLi42M2ExYzI5MjRiOTEgMTAwNjQ0Ci0tLSBh L2FyY2gvczM5MC9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNt L0tidWlsZApAQCAtOCwzICs4LDQgQEAgZ2VuZXJpYy15ICs9IG1tLWFyY2gtaG9va3MuaAogZ2Vu ZXJpYy15ICs9IHByZWVtcHQuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMt eSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAt LWdpdCBhL2FyY2gvc2NvcmUvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9zY29yZS9pbmNsdWRl L2FzbS9LYnVpbGQKaW5kZXggYTA1MjE4ZmYzZmU0Li5mMDg5YTI2NGNkMzggMTAwNjQ0Ci0tLSBh L2FyY2gvc2NvcmUvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvc2NvcmUvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC0xNCwzICsxNCw0IEBAIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBn ZW5lcmljLXkgKz0geG9yLmgKIGdlbmVyaWMteSArPSBzZXJpYWwuaAogZ2VuZXJpYy15ICs9IHdv cmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEv YXJjaC9zaC9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZApp bmRleCA3NTFjMzM3M2E5MmMuLjdiMDM1NmRjYTU2MiAxMDA2NDQKLS0tIGEvYXJjaC9zaC9pbmNs dWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9zaC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTM5LDMg KzM5LDQgQEAgZ2VuZXJpYy15ICs9IHRlcm1pb3MuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2Nr LmgKIGdlbmVyaWMteSArPSB1Y29udGV4dC5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9L YnVpbGQgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAwNTY5YmZhYzRhZmIu LjQzOGY4NjU3M2RjNSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9LYnVpbGQK KysrIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTIxLDMgKzIxLDQgQEAgZ2Vu ZXJpYy15ICs9IHNlcmlhbC5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15 ICs9IHR5cGVzLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0g c2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQg Yi9hcmNoL3RpbGUvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDJkMWY1NjM4OTc0Yy4uZmI2Yjgz MWMxZmJhIDEwMDY0NAotLS0gYS9hcmNoL3RpbGUvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2Fy Y2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTQwLDMgKzQwLDQgQEAgZ2VuZXJpYy15ICs9 IHRlcm1pb3MuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB0eXBl cy5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZm IC0tZ2l0IGEvYXJjaC91bS9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3VtL2luY2x1ZGUvYXNt L0tidWlsZAppbmRleCAwNTJmN2Y2ZDA1NTEuLjU4MGJkNWZmODI4ZiAxMDA2NDQKLS0tIGEvYXJj aC91bS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC91bS9pbmNsdWRlL2FzbS9LYnVpbGQK QEAgLTI2LDMgKzI2LDQgQEAgZ2VuZXJpYy15ICs9IHRvcG9sb2d5LmgKIGdlbmVyaWMteSArPSB0 cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9 IHhvci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvdW5p Y29yZTMyL2luY2x1ZGUvYXNtL3NlY3Rpb24tY29yZS5oIGIvYXJjaC91bmljb3JlMzIvaW5jbHVk ZS9hc20vc2VjdGlvbi1jb3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4wYjljNjg0MjlhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3VuaWNvcmUzMi9pbmNs dWRlL2FzbS9zZWN0aW9uLWNvcmUuaApAQCAtMCwwICsxLDE5IEBACisjaWZuZGVmIF9fVU5JQ09S RV9TRUNUSU9OX0NPUkVfQVNNX0hfXworI2RlZmluZSBfX1VOSUNPUkVfU0VDVElPTl9DT1JFX0FT TV9IX18KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3Jv ZkBrZXJuZWwub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMg b2YgY29weWxlZnQtbmV4dCAodmVyc2lvbiAwLjMuMSBvciBsYXRlcikgYXMgcHVibGlzaGVkCisg KiBhdCBodHRwOi8vY29weWxlZnQtbmV4dC5vcmcvLgorICovCisKKy8qIFVuaWNvcmUzMiBoYXMg a25vd24gdG8gbm90IHdvcmsgcHJvcGVybHkgd2l0aCB0aGUgdHlwZSBzZXQsIHNvIGlnbm9yZSBp dCAqLworCisjZGVmaW5lIF9fc2V0X3NlY3Rpb25fY29yZV90eXBlKF9fX3NlY3Rpb24sIF9fX2Nv cmUsIF9fX25hbWUsCQlcCisJCQkJX19fbGV2ZWwsIF9fX2ZsYWdzLCBfX190eXBlKQkJXAorCS5z ZWN0aW9uIF9fX3NlY3Rpb24uLl9fX2NvcmUuX19fbmFtZS5fX19sZXZlbCwgX19fZmxhZ3MKKwor I2luY2x1ZGUgPGFzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oPgorCisjZW5kaWYgLyogX19VTklD T1JFX1NFQ1RJT05fQ09SRV9BU01fSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9LYnVpbGQgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggMmI4OTJlMjMx M2E5Li5hZjk3NWYyMWVlZWUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL0tidWls ZAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTEyLDMgKzEyLDQgQEAgZ2Vu ZXJpYy15ICs9IGRtYS1jb250aWd1b3VzLmgKIGdlbmVyaWMteSArPSBlYXJseV9pb3JlbWFwLmgK IGdlbmVyaWMteSArPSBtY3Nfc3BpbmxvY2suaAogZ2VuZXJpYy15ICs9IG1tLWFyY2gtaG9va3Mu aAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXgg YjdmYmFhNTZiNTFhLi43ODc5YzMxZTY2YTcgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTMy LDMgKzMyLDQgQEAgZ2VuZXJpYy15ICs9IHRvcG9sb2d5LmgKIGdlbmVyaWMteSArPSB0cmFjZV9j bG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5o CitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdl bmVyaWMvc2VjdGlvbi1jb3JlLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWZjNzUzZTgwZDc2Ci0t LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaApAQCAt MCwwICsxLDMwNyBAQAorI2lmbmRlZiBfQVNNX0dFTkVSSUNfU0VDVElPTl9DT1JFX0hfCisjZGVm aW5lIF9BU01fR0VORVJJQ19TRUNUSU9OX0NPUkVfSF8KKy8qCisgKiBMaW51eCBzZWN0aW9uIGNv cmUgZGVmaW5pdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTHVpcyBSLiBSb2RyaWd1 ZXogPG1jZ3JvZkBrZXJuZWwub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0 aGUgdGVybXMgb2YgY29weWxlZnQtbmV4dCAodmVyc2lvbiAwLjMuMSBvciBsYXRlcikgYXMgcHVi bGlzaGVkCisgKiBhdCBodHRwOi8vY29weWxlZnQtbmV4dC5vcmcvLgorICovCisKKy8qKgorICog RE9DOiBMaW51eCBFTEYgcHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9ucworICoKKyAqIExpbnV4IG1h a2VzIGV4dGVuc2l2ZSB1c2Ugb2YgYGBTSFRfUFJPR0JJVFNgYCB0byBib3RoIGV4dGVuZCB1c2Ug YW5kCisgKiBkZWZpbml0aW9uIG9mICpTcGVjaWFsIEVMRiBTZWN0aW9ucyogKGBnYWJpNCBjaDRg XykgYW5kIHRvIGRlZmluZSBpdHMgb3duCisgKiBzZWN0aW9ucy4gVGhpcyBjaGFwdGVyIGlzIGRl ZGljYXRlZCB0byBkb2N1bWVudGluZyBMaW51eCBwcm9ncmFtIHNwZWNpZmljCisgKiBzZWN0aW9u cyBhbmQgaGVscGVycyBhdmFpbGFibGUgdG8gbWFrZSB1c2Ugb2YgdGhlc2UgZWFzaWVyIHRvIGlt cGxlbWVudCBhbmQKKyAqIHVzZS4KKyAqCisgKiAuLiBfZ2FiaTQgY2g0OiBodHRwczovL3JlZnNw ZWNzLmxpbnV4YmFzZS5vcmcvZWxmL2dhYmk0Ky9jaDQuc2hlYWRlci5odG1sI3NwZWNpYWxfc2Vj dGlvbnMKKyAqLworCisvKioKKyAqIERPQzogTGludXggbGlua2VyIHNjcmlwdAorICoKKyAqIExp bnV4IHVzZXMgYSBjdXN0b20gbGlua2VyIHNjcmlwdCB0byBidWlsZCB0aGUgdm1saW51eCBiaW5h cnksIGl0IHVzZXMgaXQgdG8KKyAqIHN0cmF0ZWdpY2FsbHkgcGxhY2UgYW5kIGRlZmluZSBMaW51 eCBFTEYgc2VjdGlvbnMuICBFYWNoIGFyY2hpdGVjdHVyZSBuZWVkcworICogdG8gaW1wbGVtZW50 IGl0cyBvd24gbGlua2VyIHNjcmlwdCwgaXQgaXMgZXhwZWN0ZWQgdG8gcmVzaWRlIGluCisgKiBg YGFyY2gvJChBUkNIKS9rZXJuZWwvdm1saW51eC5sZHMuU2BgLiAgQXJjaGl0ZWN0dXJlIExpbnV4 IGxpbmtlciBzY3JpcHRzIGluCisgKiB0dXJuIGluY2x1ZGUgYW5kIHVzZSBkZWZpbml0aW9ucyBm cm9tIGBgaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oYGAsCisgKiBhcyB3ZWxsIGFz IHNvbWUgaGVscGVycyBkb2N1bWVudGVkIGluIHRoaXMgY2hhcHRlci4KKyAqCisgKiBJbiBhc3Nl bWJseSBpdCBpcyBjb21tb24gcHJhY3RpY2UgdG8gdXNlIGRvdHMgKGBgLmBgKSBpbiBsYWJlbHMg dG8gYXZvaWQKKyAqIGNsYXNoZXMgd2l0aCBDIHN5bWJvbHMuIFNpbWlsYXJseSwgYSBkb3QgKGBg LmBgKSBjYW4gYmUgcGFydCBvZiBhIHNlY3Rpb24KKyAqIG5hbWUgYnV0IG5vdCBhIEMgc3ltYm9s LiBIaXN0b3JpY2FsbHkgdGhlbiwgdHdvIGRvdHMgYXJlIHVzZWQgKGBgLi5gYCkKKyAqIGhhdmUg YmVlbiB1c2VkIGluIGxpbmtlciBzY3JpcHRzIHdoZW4gYWRkaW5nIHByb2dyYW0gc3BlY2lmaWMg c2VjdGlvbnMKKyAqIHdoZW4gdGhlcmUgYXJlIGNvbmNlcm5zIHRvIGF2b2lkIGNsYXNoZXMgd2l0 aCBjb21waWxlciBnZW5lcmF0ZWQgc2VjdGlvbnMuCisgKi8KKworLyoqCisgKiBET0M6IE1lbW9y eSBwcm90ZWN0aW9uCisgKgorICogTGludXggYWxsb3dzIGFyY2hpdGVjdHVyZXMgd2hpY2ggc3Vw cG9ydCBtZW1vcnkgcHJvdGVjdGlvbiBmZWF0dXJlcyB0bworICogdGFrZSBhZHZhbnRhZ2Ugb2Yg dGhlbSBieSBsZXR0aW5nIGFyY2hpdGVjdHVyZXMgZGVmaW5lIGFuZCBlbmFibGUKKyAqIGBgQ09O RklHX0RFQlVHX1JPREFUQWBgIGFuZCBpbXBsZW1lbnQgYSBtYXJrX3JvZGF0YV9ybygpIGNhbGwu CisgKiBtYXJrX3JvZGF0YV9ybygpIGNhbiBiZSB1c2VkIGZvciBpbnN0YW5jZSB0byBtYXJrIHNw ZWNpZmljIHNlY3Rpb25zIGFzCisgKiByZWFkLW9ubHkgb3Igbm9uLWV4ZWN1dGFibGUuCisgKgor ICogTGludXggdHlwaWNhbGx5IGZvbGxvd3MgYSBjb252ZW50aW9uIHRvIGhhdmUgdGhlIC5yb2Rh dGEgRUxGIHNlY3Rpb24gZm9sbG93CisgKiBhZnRlciB0aGUgLnRleHQgRUxGIHNlY3Rpb24sIGl0 IGRvZXMgdGhpcyB0byBoZWxwIGFyY2hpdGVjdHVyZXMgd2hpY2gKKyAqIHN1cHBvcnQgbWVtb3J5 IHByb3RlY3Rpb24gdG8gbWFyayBib3RoIC50ZXh0IGFuZCAucm9kYXRhIGFzIHJlYWQtb25seSBp bgorICogb25lIHNob3QuCisgKgorICogRm9yIG1vcmUgZGV0YWlscyByZWZlciB0byBtYXJrX3Jv ZGF0YV9ybygpLgorICovCisKKy8qKgorICogRE9DOiAucm9kYXRhCisgKgorICogRUxGIHNlY3Rp b24gdXNlZCBmb3IgZGF0YSB3aGljaCBtdXN0IGJlIHByb3RlY3RlZCBmcm9tIHdyaXRlIGFjY2Vz cy4KKyAqLworCisvKioKKyAqIERPQzogLnRleHQKKyAqCisgKiBFTEYgc2VjdGlvbiBuYW1lIHVz ZWQgZm9yIGNvZGUgKGZ1bmN0aW9ucykgdXNlZCBkdXJpbmcgcmVndWxhcgorICoga2VybmVsIHJ1 biB0aW1lLgorICovCisKKy8qKgorICogRE9DOiAuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVz ZWQgZm9yIHJlYWQtd3JpdGUgZGF0YS4KKyAqLworCisvKioKKyAqIERPQzogTGludXggaW5pdCBz ZWN0aW9ucworICoKKyAqIFRoZXNlIHNlY3Rpb25zIGFyZSB1c2VkIGZvciBjb2RlIGFuZCBkYXRh IHN0cnVjdHVyZXMgdXNlZCBkdXJpbmcgYm9vdCBvcgorICogbW9kdWxlIGluaXRpYWxpemF0aW9u LiBPbiBhcmNoaXRlY3R1cmVzIHRoYXQgc3VwcG9ydCBpdCAoeDg2LCB4ODZfNjQpLCBhbGwKKyAq IHRoaXMgY29kZSBpcyBmcmVlZCB1cCBieSB0aGUga2VybmVsIHJpZ2h0IGJlZm9yZSB0aGUgZmlz dCB1c2Vyc3BhY2UgaW5pdAorICogcHJvY2VzcyBpcyBjYWxsZWQgd2hlbiBidWlsdC1pbiB0byB0 aGUga2VybmVsLCBhbmQgaWYgbW9kdWxhciBpdCBpcyBmcmVlZAorICogYWZ0ZXIgbW9kdWxlIGlu aXRpYWxpemF0aW9uLiBTaW5jZSB0aGUgY29kZSBpcyBmcmVlZCBzbyBlYXJseSwgaW4gdGhlb3J5 CisgKiB0aGVyZSBzaG91bGQgYmUgbm8gcmFjZXMgYWdhaW5zdCBmcmVlaW5nIHRoaXMgY29kZSB3 aXRoIG90aGVyIENQVXMuIEluaXQKKyAqIHNlY3Rpb24gY29kZSBhbmQgZGF0YSBzdHJ1Y3R1cmVz IHNob3VsZCBuZXZlciBiZSBleHBvcnRlZCB3aXRoCisgKiBFWFBPUlRfU1lNQk9MKigpIGFzIHRo ZSBjb2RlIHdpbGwgcXVpY2tseSBiZWNvbWUgdW5hdmFpbGFibGUgdG8gdGhlIGtlcm5lbAorICog YWZ0ZXIgYm9vdHVwLgorICovCisKKy8qKgorICogRE9DOiAuaW5pdC50ZXh0CisgKgorICogRUxG IHNlY3Rpb24gZm9yIGNvZGUgKGZ1bmN0aW9ucykgdXNlZCBvbmx5IGR1cmluZyBib290IG9yIGRy aXZlcgorICogaW5pdGlhbGl6YXRpb24uCisgKgorICovCisKKy8qKgorICogRE9DOiAuaW5pdC5k YXRhCisgKgorICogRUxGIHNlY3Rpb24gdXNlZCBmb3IgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgb25s eSBkdXJpbmcgYm9vdCBvciBkcml2ZXIKKyAqIGluaXRpYWxpemF0aW9uLgorICovCisKKy8qKgor ICogRE9DOiAuaW5pdC5yb2RhdGEKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2VkIGZvciByZWFkLW9u bHkgY29kZSAoZnVuY3Rpb25zKSB1c2VkIG9ubHkgZHVyaW5nIGJvb3QKKyAqIG9yIGRyaXZlciBp bml0aWFsaXphdGlvbi4KKyAqLworCisvKioKKyAqIERPQzogLmluaXRjYWxsCisgKgorICogRUxG IHNlY3Rpb24gdXNlZCBmb3Igc3Vic3lzdGVtIGluaXQgY2FsbHMuIFRoZXJlIGFyZSBpbml0IGxl dmVscworICogcmVwcmVzZW50aW5nIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJu ZWwuIEZvciBtb3JlIGRldGFpbHMKKyAqIHJlZmVyIHRvIF9fZGVmaW5lX2luaXRjYWxsKCkuCisg Ki8KKworLyoqCisgKiBET0M6IExpbnV4IGV4aXQgc2VjdGlvbnMKKyAqCisgKiBUaGVzZSBzZWN0 aW9ucyBhcmUgdXNlZCB0byBkZWNsYXJlIGEgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMg d2hpY2gKKyAqIGFyZSBvbmx5IHJlcXVpcmVkIG9uIGV4aXQsIHRoZSBmdW5jdGlvbiBvciBkYXRh IHN0cnVjdHVyZSB3aWxsIGJlIGRyb3BwZWQKKyAqIGlmIHRoZSBjb2RlIGRlY2xhcmluZyB0aGlz IHNlY3Rpb24gaXMgbm90IGNvbXBpbGVkIGFzIGEgbW9kdWxlIG9uCisgKiBhcmNoaXRlY3R1cmVz IHRoYXQgc3VwcG9ydCB0aGlzICh4ODYsIHg4Nl82NCkuIFRoZXJlIGlzIG5vIHNwZWNpYWwgY2Fz ZQorICogaGFuZGxpbmcgZm9yIHRoaXMgY29kZSB3aGVuIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwu CisgKi8KKworLyoqCisgKiBET0M6IC5leGl0LnRleHQKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2Vk IHRvIGZvciBjb2RlIChmdW5jdGlvbnMpIHVzZWQgb25seSBkdXJpbmcgbW9kdWxlIHVubG9hZC4K KyAqLworCisvKioKKyAqIERPQzogLmV4aXQuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQg dG8gZm9yIGRhdGEgc3RydWN0dXJlcyB1c2VkIG9ubHkgZHVyaW5nIG1vZHVsZQorICogdW5sb2Fk LgorICovCisKKy8qKgorICogRE9DOiAuZXhpdGNhbGwuZXhpdAorICoKKyAqIEVMRiBzZWN0aW9u IHVzZWQgZm9yIGV4aXQgcm91dGluZXMsIG9yZGVyIGlzIGltcG9ydGFudCBhbmQgbWFpbnRhaW5l ZCBieQorICogbGluayBvcmRlci4KKyAqLworCisvKioKKyAqIERPQzogTGludXggcmVmZXJlbmNl cyB0byBpbml0IHNlY3Rpb25zCisgKgorICogVGhlc2Ugc2VjdGlvbnMgYXJlIHVzZWQgdG8gdGVh Y2ggbW9kcG9zdCB0byBub3Qgd2FybiBhYm91dCBwb3NzaWJsZQorICogbWlzdXNlcyBvZiBpbml0 IHNlY3Rpb24gY29kZSBmcm9tIG90aGVyIHNlY3Rpb25zLiBJZiB5b3UgdXNlIHRoaXMKKyAqIHlv dXIgdXNlIGNhc2Ugc2hvdWxkIGRvY3VtZW50IHdoeSB5b3UgYXJlIGNlcnRhaW4gc3VjaCB1c2Ug b2YgaW5pdAorICogc2VjdGlvbmVkIGNvZGUgaXMgdmFsaWQuIEZvciBtb3JlIGRldGFpbHMgcmVm ZXIgdG8gYGBpbmNsdWRlL2xpbnV4L2luaXQuaGBgCisgKiBgYF9fcmVmYGAsIGBgX19yZWZkYXRh YGAsIGFuZCBgYF9fcmVmY29uc3RgYCBkb2N1bWVudGF0aW9uLgorICovCisKKy8qKgorICogRE9D OiAucmVmLnRleHQKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2VkIHRvIGFubm90YXRlIGNvZGUgKGZ1 bmN0aW9ucykgd2hpY2ggaGFzIGJlZW4gdmV0dGVkIGFzCisgKiB2YWxpZCBmb3IgaXRzIHJlZmVy ZW5jZSBvciB1c2Ugb2Ygb3RoZXIgY29kZSAoZnVuY3Rpb25zKSBvciBkYXRhIHN0cnVjdHVyZXMK KyAqIHdoaWNoIGFyZSBwYXJ0IG9mIHRoZSBpbml0IHNlY3Rpb25zLgorICovCisKKy8qKgorICog RE9DOiAucmVmLmRhdGEKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2VkIGZvciBkYXRhIHN0cnVjdHVy ZXMgd2hpY2ggaGF2ZSBiZWVuIHZldHRlZCBmb3IgaXRzCisgKiByZWZlcmVuY2Ugb3IgdXNlIG9m IG90aGVyIGNvZGUgKGZ1bmN0aW9ucykgb3IgZGF0YSBzdHJ1Y3R1cmVzIHBhcnQgb2YgdGhlCisg KiBpbml0IHNlY3Rpb25zLgorICovCisKKy8qKgorICogRE9DOiAucmVmLnJvZGF0YQorICoKKyAq IEVMRiBzZWN0aW9uIHVzZWQgdG8gYW5ub3RhdGUgY29uc3QgY29kZSAoZnVuY3Rpb25zKSBjb25z dCBkYXRhIHN0cnVjdHVyZXMKKyAqIHdoaWNoIGhhcyBiZWVuIHZldHRlZCBmb3IgaXRzIHJlZmVy ZW5jZSBvciB1c2Ugb2Ygb3RoZXIgY29kZSAoZnVuY3Rpb25zKQorICogb3IgZGF0YSBzdHJ1Y3R1 cmVzIHBhcnQgb2YgdGhlIGluaXQgc2VjdGlvbnMuCisgKi8KKworLyogQ2FuIGJlIHVzZWQgb24g Zm9vLlMgZm9yIGluc3RhbmNlICovCisjaWZuZGVmIF9fc2V0X3NlY3Rpb25fY29yZV90eXBlCisj IGRlZmluZSBfX3NldF9zZWN0aW9uX2NvcmVfdHlwZShfX19zZWN0aW9uLCBfX19jb3JlLCBfX19u YW1lLAkJXAorCQkJCSBfX19sZXZlbCwgX19fZmxhZ3MsIF9fX3R5cGUpCQlcCisJLnNlY3Rpb24g X19fc2VjdGlvbi4uX19fY29yZS5fX19uYW1lLl9fX2xldmVsLCBfX19mbGFncywgX19fdHlwZQor I2VuZGlmCisKKyNpZm5kZWYgX19zZXRfc2VjdGlvbl9jb3JlCisjIGRlZmluZSBfX3NldF9zZWN0 aW9uX2NvcmUoX19fc2VjdGlvbiwgX19fY29yZSwgX19fbmFtZSwgX19fbGV2ZWwsIF9fX2ZsYWdz KSBcCisJLnNlY3Rpb24gX19fc2VjdGlvbi4uX19fY29yZS5fX19uYW1lLl9fX2xldmVsLCBfX19m bGFncworI2VuZGlmCisKKyNpZm5kZWYgX19wdXNoX3NlY3Rpb25fY29yZQorIyBkZWZpbmUgX19w dXNoX3NlY3Rpb25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLCBfX2xldmVsLCBfX2Zs YWdzKSBcCisJLnB1c2hzZWN0aW9uIF9fc2VjdGlvbi4uX19jb3JlLl9fbmFtZS5fX2xldmVsLCBf X2ZsYWdzCisjZW5kaWYKKworI2lmZGVmIF9fS0VSTkVMX18KKyNpbmNsdWRlIDxsaW51eC9zdHJp bmdpZnkuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0FTU0VNQkxFUl9fKSB8fCBkZWZpbmVk KF9fQVNTRU1CTFlfXykKKworIyBpZm5kZWYgTElOS0VSX1NDUklQVAorCisjICBpZm5kZWYgcHVz aF9zZWN0aW9uX2NvcmUKKyMgICBkZWZpbmUgcHVzaF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBf X2NvcmUsIF9fbmFtZSwgX19sZXZlbCwgX19mbGFncykgXAorCSBfX3B1c2hfc2VjdGlvbl9jb3Jl KF9fc2VjdGlvbiwgX19jb3JlLCBfX25hbWUsCQkJICBcCisJCQkgICAgIF9fbGV2ZWwsIF9fc3Ry aW5naWZ5KF9fZmxhZ3MpKQorIyAgZW5kaWYKKworIyAgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmUK KyMgICBkZWZpbmUgc2V0X3NlY3Rpb25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLAkJ CVwKKwkJCSAgICBfX2xldmVsLCBfX2ZsYWdzKQkJCQlcCisJX19zZXRfc2VjdGlvbl9jb3JlKF9f c2VjdGlvbiwgX19jb3JlLCBfX25hbWUsCQkJXAorCQkJICAgX19sZXZlbCwgX19zdHJpbmdpZnko X19mbGFncykpCisjICBlbmRpZgorCisjICBpZm5kZWYgc2V0X3NlY3Rpb25fY29yZV90eXBlCisj ICAgZGVmaW5lIHNldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1l LAkJXAorCQkJCSBfX2xldmVsLCBfX2ZsYWdzLCBfX3R5cGUpCQlcCisJX19zZXRfc2VjdGlvbl9j b3JlX3R5cGUoX19zZWN0aW9uLCBfX2NvcmUsIF9fbmFtZSwgX19sZXZlbCwJXAorCQkJCV9fc3Ry aW5naWZ5KF9fZmxhZ3MpLCBfX3R5cGUpCisjICBlbmRpZgorCisjIGVuZGlmIC8qIExJTktFUl9T Q1JJUFQgKi8KKyNlbHNlIC8qIGRlZmluZWQoX19BU1NFTUJMRVJfXykgfHwgZGVmaW5lZChfX0FT U0VNQkxZX18pICovCisKKy8qCisgKiBBcyBwZXIgZ2NjJ3MgZG9jdW1lbnRhdGlvbiBhIGNvbW1v biBhc20gc2VwYXJhdG9yIGlzIGEgbmV3IGxpbmUgZm9sbG93ZWQKKyAqIGJ5IHRhYiBbMF0sIGl0 IGhvd2V2ZXIgc2VlbXMgcG9zc2libGUgdG8gYWxzbyBqdXN0IHVzZSBhIG5ld2xpbmUgYXMgaXRz CisgKiB0aGUgbW9zdCBjb21tb25seSBlbXBpcmljYWxseSBvYnNlcnZlZCBzZW1hbnRpYyBhbmQg Zm9sa3Mgc2VlbSB0byBhZ3JlZQorICogdGhpcyBldmVuIHdvcmtzIG9uIFMzOTAuIEluIGNhc2Ug eW91ciBhcmNoaXRlY3R1cmUgZGlzYWdyZWVzIHlvdSBtYXkKKyAqIG92ZXJyaWRlIHRoaXMgYW5k IGRlZmluZSB5b3VyIG93biBhbmQga2VlcCB0aGUgcmVzdCBvZiB0aGUgbWFjcm9zLgorICoKKyAq IFswXSBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjL0Jhc2ljLUFzbS5odG1sI0Jh c2ljLUFzbQorICovCisjIGlmbmRlZiBBU01fQ01EX1NFUAorIyAgZGVmaW5lIEFTTV9DTURfU0VQ CSJcbiIKKyMgZW5kaWYKKworIyBpZm5kZWYgc2V0X3NlY3Rpb25fY29yZQorIyAgZGVmaW5lIHNl dF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBfX2NvcmUsIF9fbmFtZSwgX19sZXZlbCwgX19mbGFn cykJXAorCV9fc3RyaW5naWZ5KF9fc2V0X3NlY3Rpb25fY29yZV90eXBlKF9fc2VjdGlvbiwgX19j b3JlLCBfX25hbWUsCVwKKwkJCQkJICAgIF9fbGV2ZWwsIF9fc3RyaW5naWZ5KF9fZmxhZ3MpKSkg XAorCUFTTV9DTURfU0VQCisjIGVuZGlmCisKKy8qCisgKiBTb21lIGFyY2hpdGVjdHVyZXMgKGFy bSwgYW5kIGF2cjMyIGFyZSB0d28gZXhhbXBsZXMgb24ga3Byb2Jlcykgc2VlbQorICogY3VycmVu dGx5IGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgdHlwZSBbMF0gLS0gdGhpcyBjYW4gYmUgYW55IG9m IHRoZQorICogb3B0aW9uYWwgY29uc3RhbnRzIG9uIEVMRjoKKyAqCisgKiBAcHJvZ2JpdHMgLSBz ZWN0aW9uIGNvbnRhaW5zIGRhdGEKKyAqIEBub2JpdHMgLSBzZWN0aW9uIGRvZXMgbm90IGNvbnRh aW4gZGF0YSAoaS5lLiwgc2VjdGlvbiBvbmx5IG9jY3VwaWVzIHNwYWNlKQorICogQG5vdGUgLSBz ZWN0aW9uIGNvbnRhaW5zIGRhdGEgd2hpY2ggaXMgdXNlZCBieSB0aGluZ3Mgb3RoZXIgdGhhbiB0 aGUgcHJvZ3JhbQorICogQGluaXRfYXJyYXkgLSBzZWN0aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9m IHBvaW50ZXJzIHRvIGluaXQgZnVuY3Rpb25zCisgKiBAZmluaV9hcnJheSAtIHNlY3Rpb24gY29u dGFpbnMgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gZmluaXNoIGZ1bmN0aW9ucworICogQHByZWlu aXRfYXJyYXkgLSBzZWN0aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIHByZS1p bml0IGZ1bmN0aW9ucworICoKKyAqIEFSTSByZXF1aXJlcyAlIGluc3RlYWQgb2YgQC4KKyAqCisg KiBBdCBsZWFzdCBhcyBwZXIgbmFzbSAoeDg2L3g4Nl82NCBvbmx5KSwgaW4gdGhlIGFic2VuY2Ug b2YgcXVhbGlmaWVycyB0aGUKKyAqIGRlZmF1bHRzIGFyZSBhcyBmb2xsb3dzOgorICoKKyAqIHNl Y3Rpb24gLnRleHQgICAgcHJvZ2JpdHMgIGFsbG9jICAgZXhlYyAgICBub3dyaXRlICBhbGlnbhYK KyAqIHNlY3Rpb24gLnJvZGF0YSAgcHJvZ2JpdHMgIGFsbG9jICAgbm9leGVjICBub3dyaXRlICBh bGlnbj00CisgKiBzZWN0aW9uIC5scm9kYXRhIHByb2diaXRzICBhbGxvYyAgIG5vZXhlYyAgbm93 cml0ZSAgYWxpZ249NAorICogc2VjdGlvbiAuZGF0YSAgICBwcm9nYml0cyAgYWxsb2MgICBub2V4 ZWMgIHdyaXRlICAgIGFsaWduPTQKKyAqIHNlY3Rpb24gLmxkYXRhICAgcHJvZ2JpdHMgIGFsbG9j ICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00CisgKiBzZWN0aW9uIC5ic3MgICAgIG5vYml0cyAg ICBhbGxvYyAgIG5vZXhlYyAgd3JpdGUgICAgYWxpZ249NAorICogc2VjdGlvbiAubGJzcyAgICBu b2JpdHMgICAgYWxsb2MgICBub2V4ZWMgIHdyaXRlICAgIGFsaWduPTQKKyAqIHNlY3Rpb24gLnRk YXRhICAgcHJvZ2JpdHMgIGFsbG9jICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00ICAgIHRscwor ICogc2VjdGlvbiAudGJzcyAgICBub2JpdHMgICAgYWxsb2MgICBub2V4ZWMgIHdyaXRlICAgIGFs aWduPTQgICAgdGxzCisgKiBzZWN0aW9uIC5jb21tZW50IHByb2diaXRzICBub2FsbG9jIG5vZXhl YyAgbm93cml0ZSAgYWxpZ249MQorICogc2VjdGlvbiBvdGhlciAgICBwcm9nYml0cyAgYWxsb2Mg ICBub2V4ZWMgIG5vd3JpdGUgIGFsaWduPTEKKyAqCisgKiBnYXMgc2hvdWxkIGhhdmUgc2Vuc2li bGUgZGVmYXVsdHMgZm9yIGFyY2hpdGVjdHVyZXMuLi4KKyAqCisgKiBbMF0gaHR0cDovL3d3dy5u YXNtLnVzL2RvYy9uYXNtZG9jNy5odG1sCisgKi8KKyMgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmVf dHlwZQorIyAgZGVmaW5lIHNldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rpb24sIF9fY29yZSwg X19uYW1lLCBfX2xldmVsLAlcCisJCQkJX19mbGFncywgX190eXBlKQkJCVwKKwlfX3N0cmluZ2lm eShfX3NldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rpb24sIF9fY29yZSwJCVwKKwkJCQkJICAg IF9fbmFtZSwgX19sZXZlbCwJCVwKKwkJCQkJICAgIF9fc3RyaW5naWZ5KF9fZmxhZ3MpLAlcCisJ CQkJCSAgICBfX3R5cGUpKQkJCVwKKwlBU01fQ01EX1NFUAorIyBlbmRpZgorCisjIGlmbmRlZiBw dXNoX3NlY3Rpb25fY29yZQorIyAgZGVmaW5lIHB1c2hfc2VjdGlvbl9jb3JlKF9fc2VjdGlvbiwg X19jb3JlLCBfX25hbWUsCQkJXAorCQkJICAgIF9fbGV2ZWwsIF9fZmxhZ3MpCQkJCVwKKwlfX3N0 cmluZ2lmeShfX3B1c2hfc2VjdGlvbl9jb3JlKF9fc2VjdGlvbiwgX19jb3JlLAkJXAorCQkJCQlf X25hbWUsCV9fbGV2ZWwsCQlcCisJCQkJCV9fc3RyaW5naWZ5KF9fZmxhZ3MpKSkJCVwKKwlBU01f Q01EX1NFUAorIyBlbmRpZgorCisjZW5kaWYgLyogZGVmaW5lZChfX0FTU0VNQkxFUl9fKSB8fCBk ZWZpbmVkKF9fQVNTRU1CTFlfXykgKi8KKyNlbmRpZiAvKiBfQVNNX0dFTkVSSUNfU0VDVElPTl9D T1JFX0hfICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmggYi9p bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmgKaW5kZXggNGRmNjRhMWZjMDllLi5iMTQ1YWU4 ZDljYmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAorKysgYi9p bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmgKQEAgLTEsNiArMSw4IEBACiAjaWZuZGVmIF9B U01fR0VORVJJQ19TRUNUSU9OU19IXwogI2RlZmluZSBfQVNNX0dFTkVSSUNfU0VDVElPTlNfSF8K IAorI2luY2x1ZGUgPGFzbS9zZWN0aW9uLWNvcmUuaD4KKwogLyogUmVmZXJlbmNlcyB0byBzZWN0 aW9uIGJvdW5kYXJpZXMgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmggYi9pbmNsdWRlL2FzbS1nZW5l cmljL3ZtbGludXgubGRzLmgKaW5kZXggMDk2OGQxM2IzODg1Li40ODNmNjBjNDUxZjkgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaAorKysgYi9pbmNsdWRlL2Fz bS1nZW5lcmljL3ZtbGludXgubGRzLmgKQEAgLTU1LDYgKzU1LDcgQEAKICNlbmRpZgogCiAjaW5j bHVkZSA8bGludXgvZXhwb3J0Lmg+CisjaW5jbHVkZSA8YXNtL3NlY3Rpb24tY29yZS5oPgogCiAv KiBBbGlnbiAuIHRvIGEgOCBieXRlIGJvdW5kYXJ5IGVxdWFscyB0byBtYXhpbXVtIGZ1bmN0aW9u IGFsaWdubWVudC4gKi8KICNkZWZpbmUgQUxJR05fRlVOQ1RJT04oKSAgLiA9IEFMSUdOKDgpCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2luaXQuaCBiL2luY2x1ZGUvbGludXgvaW5pdC5oCmlu ZGV4IDg4NWMzZTZkMGY5ZC4uMjFjNmJlYzllM2QwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L2luaXQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2luaXQuaApAQCAtMTMwLDYgKzEzMCwyNCBAQCBp bnQgX19pbml0IGluaXRfcm9vdGZzKHZvaWQpOwogZXh0ZXJuIGJvb2wgcm9kYXRhX2VuYWJsZWQ7 CiAjZW5kaWYKICNpZmRlZiBDT05GSUdfREVCVUdfUk9EQVRBCisvKioKKyAqIG1hcmtfcm9kYXRh X3JvIC0gaW1wbGVtZW50IG1lbW9yeSBwcm90ZWN0aW9uIGZvciBFTEYgc2VjdGlvbnMKKyAqCisg KiBBcmNoaXRlY3R1cmVzIHdoaWNoIHN1cHBvcnQgbWVtb3J5IHByb3RlY3Rpb24gZGVmaW5lIGEg a2VybmVsIGNvbmZpZ3VyYXRpb24KKyAqIGVudHJ5IGZvciBDT05GSUdfREVCVUdfUk9EQVRBLCBl bmFibGUgaXQgaW4gYW5kIGltcGxlbWVudCBtYXJrX3JvZGF0YV9ybygpLgorICogbWFya19yb2Rh dGFfcm8oKSBzaG91bGQgc3RyaXZlIHRvIGFkanVzdCB0aGUgLnJvZGF0YSBhbmQgLnRleHQgRUxG IHNlY3Rpb25zCisgKiB3aXRoIHJlYWQtb25seSBtZW1vcnkgcHJvdGVjdGlvbiB0byBwcmV2ZW50 IG1vZGlmaWNhdGlvbnMgb2YgdGhlc2Ugc2VjdGlvbnMKKyAqIGFmdGVyIGJvb3R1cC4gSXQgY2Fu IGFsc28gdHJ5IHRvIHVzZSBtZW1vcnkgcHJvdGVjdGlvbiB0byBwcmV2ZW50IGV4ZWN1dGlvbgor ICogb24gdGhlIC5yb2RhdGEgRUxGIHNlY3Rpb24uCisgKgorICogSW4gb3JkZXIgdG8gaGVscCBh cmNoaXRlY3R1cmVzIHNldCBib3RoIC50ZXh0IGFuZCAucm9kYXRhIGFzIHJlYWQtb25seSB3aXRo CisgKiBtZW1vcnkgcHJvdGVjdGlvbnMgaW4gb25lIHNob3QgTGludXggaGFzIHR5cGljYWxseSBm b2xsb3dlZCB0aGUgY29udmVudGlvbgorICogdG8gaGF2ZSB0aGUgLnJvZGF0YSBFTEYgc2VjdGlv biBmb2xsb3cgdGhlIC50ZXh0IEVMRiBzZWN0aW9uIG9uIHRoZSB2bWxpbnV4CisgKiBsaW5rZXIg c2NyaXB0LgorICoKKyAqIExpbnV4IGNhbGxzIG1hcmtfcm9kYXRhX3JvKCkgYWZ0ZXIgZnJlZWlu ZyAuaW5pdCBjb2RlIGFuZCBwcmlvciB0byBjYWxsaW5nCisgKiB0aGUgZmlyc3QgaW5pdCB1c2Vy c3BhY2UgcHJvY2Vzcy4KKyAqLwogdm9pZCBtYXJrX3JvZGF0YV9ybyh2b2lkKTsKICNlbmRpZgog CkBAIC0xNDAsMjUgKzE1OCw3MCBAQCBleHRlcm4gYm9vbCBpbml0Y2FsbF9kZWJ1ZzsKICNlbmRp ZgogICAKICNpZm5kZWYgTU9EVUxFCisvKioKKyAqIERPQzogSW5pdGNhbGwgbGV2ZWxzCisgKgor ICogV2hlbiBMaW51eCBib290cyB0aGUga2VybmVsIGRvX2luaXRjYWxscygpIGl0ZXJhdGVzIG92 ZXIgZWFjaCBMaW51eAorICogaW5pdGlhbGl6YXRpb24gbGV2ZWwgSUQgYW5kIGNhbGxzIGFsbCBy b3V0aW5lcyBlbWJlZGRlZCBvbiBlYWNoIGxldmVsIElELgorICogUHJpb3IgdG8gdjIuNS4yLjMg TGludXggaGFkIG9ubHkgb25lIGluaXQgbGV2ZWwgb250byB3aGljaCBhbGwgaW5pdAorICogZnVu Y3Rpb25zIGZvbGRlZCBvbnRvIHVzaW5nIF9faW5pdGNhbGwoKS4gQWZ0ZXIgdjIuNS4yLjQgTGlu dXggc3BsaXQgdXAKKyAqIGluaXRjYWxscyBpbnRvIDcgc2VwYXJhdGUgaW5pdGNhbGwgc3Vic2Vj dGlvbiBsZXZlbHMsIGVhY2ggbGV2ZWwgZGVzY3JpYmluZworICogZGlmZmVyZW50IGZ1bmN0aW9u YWxpdHkgcGFydCBvZiB0aGUga2VybmVsIChjb21taXQgYDlkNmJhMTIxYjdlMTcwODVgXworICog KHYyLjUuMi4zIC0+IHYyLjUuMi40KSkuIEluIG9yZGVyIHRvIHJlbWFpbiBiYWNrd2FyZCBjb21w YXRpYmxlIF9faW5pdGNhbGwoKQorICogY2FsbHMgd2VyZSBsZWZ0IG1hcHBlZCB0byBkZXZpY2Vf aW5pdGNhbGwoKS4KKyAqCisgKiBFYWNoIGluaXQgbGV2ZWwgY29uc2lzdHMgb2YgYSBkZWRpY2F0 ZWQgRUxGIHNlY3Rpb24sIGluaXQgZnVuY3Rpb25zIGFyZQorICogYXNzb2NpYXRlZCB0byBhbiBp bml0IGxldmVsIGJ5IGxpbmtpbmcgaXQgaW50byB0aGUgcmVzcGVjdGl2ZSBsZXZlbCdzCisgKiBF TEYgc2VjdGlvbi4KKyAqCisgKiBMb3dlciBvcmRlciBpbml0IGxldmVscyBydW4gcHJpb3IgdG8g aGlnaGVyIG9yZGVyIGluaXQgbGV2ZWxzLiBPcmRlcmluZworICogaW5zaWRlIGVhY2ggaW5pdGNh bGwgbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSByZXNwZWN0aXZlIGxpbmsgb3JkZXIuCisgKgorICog Li4gXzlkNmJhMTIxYjdlMTcwODU6IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvY2dpdC9saW51eC9r ZXJuZWwvZ2l0L2hpc3RvcnkvaGlzdG9yeS5naXQvY29tbWl0Lz9pZJ02YmExMjFiN2UxNzA4NWM5 NTEzOTIzMzY4NmIyN2E0ZDRjNjUwZQorICovCiAKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAKLS8q Ci0gKiBpbml0Y2FsbHMgYXJlIG5vdyBncm91cGVkIGJ5IGZ1bmN0aW9uYWxpdHkgaW50byBzZXBh cmF0ZQotICogc3Vic2VjdGlvbnMuIE9yZGVyaW5nIGluc2lkZSB0aGUgc3Vic2VjdGlvbnMgaXMg ZGV0ZXJtaW5lZAotICogYnkgbGluayBvcmRlci4gCi0gKiBGb3IgYmFja3dhcmRzIGNvbXBhdGli aWxpdHksIGluaXRjYWxsKCkgcHV0cyB0aGUgY2FsbCBpbiAKLSAqIHRoZSBkZXZpY2UgaW5pdCBz dWJzZWN0aW9uLgorLyoqCisgKiBfX2RlZmluZV9pbml0Y2FsbCAtIHdyYXBwZXIgZm9yIGRlZmlu aW5nIGluaXQgbGV2ZWxzCiAgKgotICogVGhlIGBpZCcgYXJnIHRvIF9fZGVmaW5lX2luaXRjYWxs KCkgaXMgbmVlZGVkIHNvIHRoYXQgbXVsdGlwbGUgaW5pdGNhbGxzCi0gKiBjYW4gcG9pbnQgYXQg dGhlIHNhbWUgaGFuZGxlciB3aXRob3V0IGNhdXNpbmcgZHVwbGljYXRlLXN5bWJvbCBidWlsZCBl cnJvcnMuCisgKiBAZm46IGluaXQgcm91dGluZQorICogQGlkOiBpbml0IGxldmVsCiAgKgotICog SW5pdGNhbGxzIGFyZSBydW4gYnkgcGxhY2luZyBwb2ludGVycyBpbiBpbml0Y2FsbCBzZWN0aW9u cyB0aGF0IHRoZQotICoga2VybmVsIGl0ZXJhdGVzIGF0IHJ1bnRpbWUuIFRoZSBsaW5rZXIgY2Fu IGRvIGRlYWQgY29kZSAvIGRhdGEgZWxpbWluYXRpb24KLSAqIGFuZCByZW1vdmUgdGhhdCBjb21w bGV0ZWx5LCBzbyB0aGUgaW5pdGNhbGwgc2VjdGlvbnMgaGF2ZSB0byBiZSBtYXJrZWQKLSAqIGFz IEtFRVAoKSBpbiB0aGUgbGlua2VyIHNjcmlwdC4KKyAqIERlZmluZXMgYSBrZXJuZWwgaW5pdGlh bGl6YXRpb24gbGV2ZWwuIEEgcmVzcGVjdGl2ZSBsaW5rZXIgc2NyaXB0IGVudHJ5CisgKiBpcyBy ZXF1aXJlZCB0byBlbnN1cmUgdGhlIGluaXQgbGV2ZWwgaXMgYWNjb3VudGVkIGZvciBhbmQgdG8g ZW5zdXJlIHN5bWJvbHMKKyAqIGV4aXN0IGZvciBpdGVyYXRpbmcgb3ZlciBhbGwgZnVuY3Rpb25z IGluIHRoZSBpbml0IGxldmVsLiBBIGluaXQgbGV2ZWwKKyAqIHJlcHJlc2VudHMgYSBzZXJpZXMg b2YgZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsLgorICoKKyAqIE9yZGVyaW5nIHdpdGhpbiBh biBpbml0aWFsaXphdGlvbiBsZXZlbCBpcyBkZXRlcm1pbmVkIGJ5IGxpbmsgb3JkZXIsIHNvCisg KiBmb3IgaW5zdGFuY2UgaWYgYSBNYWtlZmlsZSBoYWQ6OgorICoKKyAqCW9iai15ICs9IGZvby5v CisgKglvYmoteSArPSBiYXIubworICoKKyAqIEFuZCBmb28uYzo6CisgKgorICoJc3Vic3lzX2lu aXRjYWxsKGZvb19pbml0KTsKKyAqCisgKiBBbmQgYmFyLmMgaGFkOjoKKyAqCisgKglzdWJzeXNf aW5pdGNhbGwoYmFyX2luaXQpOworICoKKyAqIGZvb19pbml0KCkgd291bGQgYmUgY2FsbGVkIHBy aW9yIHRvIGJhcl9pbml0KCkuCisgKgorICogTm90ZSB0aGF0IEBpZCBpbiBfX2RlZmluZV9pbml0 Y2FsbCgpIGFsc28gZW5hYmxlcyBtdWx0aXBsZSBpbml0Y2FsbHMKKyAqIHRvIGJlIGNyZWF0ZWQg dXNpbmcgdGhlIHNhbWUgaGFuZGxlciBmb3IgZGlmZmVyZW50IGluaXQgbGV2ZWxzIHdpdGhvdXQK KyAqIGNhdXNpbmcgZHVwbGljYXRlLXN5bWJvbCBidWlsZCBlcnJvcnMuCisgKgorICogSW5pdGNh bGxzIGFyZSBydW4gYnkgcGxhY2luZyBzdGFydCBzeW1ib2xzIHRvIGluaXRjYWxsIGxldmVscyBp bnNpZGUgRUxGCisgKiBzZWN0aW9ucywgdGhlIGtlcm5lbCBpbiB0dXJuIHVzZXMgdGhlc2Ugc3lt Ym9scyB0byBpdGVyYXRlIG92ZXIgZWFjaCBpbml0CisgKiBsZXZlbCBhdCBydW50aW1lIHdpdGgg ZG9faW5pdGNhbGxfbGV2ZWwoKS4gVGhlIGVuZCBvZiBlYWNoIGluaXQgbGV2ZWwgaXMKKyAqIG1h cmtlZCBieSB0aGUgc3Vic2VxdWVudCBzeW1ib2wncyBzdGFydCBhZGRyZXNzIHVudGlsIHdlIHJl YWNoIHRoZSBzeW1ib2wKKyAqIGBgX19pbml0Y2FsbF9lbmRgYC4gVGhlIGxpbmtlciBjYW4gZG8g ZGVhZCBjb2RlIC8gZGF0YSBlbGltaW5hdGlvbiBhbmQgZWFjaAorICogaW5pdCBsZXZlbCBzdGFy dCBzeW1ib2wgY291bGQgYmUgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIHRoaXMgcHJvY2VzcywgdG8K KyAqIGF2b2lkIHRoaXMgZWFjaCBpbml0IGxldmVsIHN0YXJ0IHN5bWJvbHMgbXVzdCBiZSBtYXJr ZWQgYXMgJ0tFRVAoKScgaW4gdGhlCisgKiBsaW5rZXIgc2NyaXB0IHRvIGF2b2lkIGFueSBsaW5r ZXIgb3B0aW1pemF0aW9uIGhldXJpc3RpYyBvbiBpbml0Y2FsbHMuCiAgKi8KLQogI2RlZmluZSBf X2RlZmluZV9pbml0Y2FsbChmbiwgaWQpIFwKIAlzdGF0aWMgaW5pdGNhbGxfdCBfX2luaXRjYWxs XyMjZm4jI2lkIF9fdXNlZCBcCiAJX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0Y2Fs bCIgI2lkICIuaW5pdCIpKSkgPSBmbjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2VjdGlv bnMuaCBiL2luY2x1ZGUvbGludXgvc2VjdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjY3NzFjNzI3YmNkMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUv bGludXgvc2VjdGlvbnMuaApAQCAtMCwwICsxLDg3IEBACisjaWZuZGVmIF9MSU5VWF9TRUNUSU9O U19ICisjZGVmaW5lIF9MSU5VWF9TRUNUSU9OU19ICisvKgorICogTGludXggZGUtZmFjdG8gc2Vj dGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3Jv ZkBrZXJuZWwub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMg b2YgY29weWxlZnQtbmV4dCAodmVyc2lvbiAwLjMuMSBvciBsYXRlcikgYXMgcHVibGlzaGVkCisg KiBhdCBodHRwOi8vY29weWxlZnQtbmV4dC5vcmcvLgorICovCisKKyNpbmNsdWRlIDxhc20vc2Vj dGlvbi1jb3JlLmg+CisjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CisKKyNpZm5kZWYgX19BU1NF TUJMWV9fCisKKy8qKgorICogRE9DOiBJbnRyb2R1Y3Rpb24KKyAqCisgKiBMaW51eCBkZWZpbmVz IGEgc2V0IG9mIGNvbW1vbiBoZWxwZXJzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFnYWluc3QgaXRz IHVzZQorICogb2Ygc3RhbmRhcmQgb3IgY3VzdG9tIExpbnV4IHNlY3Rpb25zLCB0aGlzIHNlY3Rp b24gaXMgZGVkaWNhdGVkIHRvIHRoZXNlCisgKiBoZWxwZXJzLgorICovCisKKy8qKgorICogTElO VVhfU0VDVElPTl9BTElHTk1FTlQgLSBnZXQgc2VjdGlvbiBhbGlnbm1lbnQKKyAqCisgKiBAbmFt ZTogc2VjdGlvbiBuYW1lCisgKgorICogR2l2ZXMgeW91IHRoZSBhbGlnbm1lbnQgZm9yIHRoZSBz ZWN0aW9uLgorICovCisjZGVmaW5lIExJTlVYX1NFQ1RJT05fQUxJR05NRU5UKG5hbWUpCV9fYWxp Z25vZl9fKCpWTUxJTlVYX1NZTUJPTChuYW1lKSkKKworLyoqCisgKiBMSU5VWF9TRUNUSU9OX1NU QVJUIC0gZ2V0IGFkZHJlc3Mgb2Ygc3RhcnQgb2Ygc2VjdGlvbgorICoKKyAqIEBuYW1lOiBzZWN0 aW9uIG5hbWUKKyAqCisgKiBUaGlzIGdpdmVzIHlvdSB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUg c2VjdGlvbi4KKyAqIFRoaXMgc2hvdWxkIGdpdmUgeW91IHRoZSBhZGRyZXNzIG9mIHRoZSBmaXJz dCBlbnRyeS4KKyAqCisgKi8KKyNkZWZpbmUgTElOVVhfU0VDVElPTl9TVEFSVChuYW1lKQlWTUxJ TlVYX1NZTUJPTChuYW1lKQorCisvKioKKyAqIExJTlVYX1NFQ1RJT05fRU5EIC0gZ2V0IGFkZHJl c3Mgb2YgZW5kIG9mIHRoZSBzZWN0aW9uCisgKgorICogQG5hbWU6IHNlY3Rpb24gbmFtZQorICoK KyAqIFRoaXMgZ2l2ZXMgeW91IHRoZSBlbmQgYWRkcmVzcyBvZiB0aGUgc2VjdGlvbi4KKyAqIFRo aXMgc2hvdWxkIGdpdmUgeW91IHRoZSBhZGRyZXNzIG9mIHRoZSBlbmQgb2YgdGhlCisgKiBzZWN0 aW9uLiBUaGlzIHdpbGwgbWF0Y2ggdGhlIHN0YXJ0IGFkZHJlc3MgaWYgdGhlCisgKiBzZWN0aW9u IGlzIGVtcHR5LgorICovCisjZGVmaW5lIExJTlVYX1NFQ1RJT05fRU5EKG5hbWUpCVZNTElOVVhf U1lNQk9MKG5hbWUjI19fZW5kKQorCisvKioKKyAqIERFQ0xBUkVfTElOVVhfU0VDVElPTiAtIERl Y2xhcmVzIGEgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqCisgKiBAdHlwZTogdHlwZSBvZiBjdXN0 b20gTGludXggc2VjdGlvbgorICogQG5hbWU6IGN1c3RvbSBzZWN0aW9uIG5hbWUKKyAqCisgKiBE ZWNsYXJlcyBhIHJlYWQtd3JpdGUgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqLworI2RlZmluZSBE RUNMQVJFX0xJTlVYX1NFQ1RJT04odHlwZSwgbmFtZSkJCQkJXAorCSBleHRlcm4gdHlwZSBWTUxJ TlVYX1NZTUJPTChuYW1lKVtdLCBcCisJCSAgICAgVk1MSU5VWF9TWU1CT0wobmFtZSMjX19lbmQp W10KKworLyoqCisgKiBERUNMQVJFX0xJTlVYX1NFQ1RJT05fUk8gLSBEZWNsYXJlcyBhIHJlYWQt b25seSBjdXN0b20gTGludXggc2VjdGlvbgorICoKKyAqIEB0eXBlOiB0eXBlIG9mIGN1c3RvbSBM aW51eCBzZWN0aW9uCisgKiBAbmFtZTogY3VzdG9tIHNlY3Rpb24gbmFtZQorICoKKyAqIERlY2xh cmVzIGEgcmVhZC1vbmx5IGN1c3RvbSBMaW51eCBzZWN0aW9uCisgKi8KKyNkZWZpbmUgREVDTEFS RV9MSU5VWF9TRUNUSU9OX1JPKHR5cGUsIG5hbWUpCQkJCVwKKwkgZXh0ZXJuIGNvbnN0IHR5cGUg Vk1MSU5VWF9TWU1CT0wobmFtZSlbXSwJCQlcCisJCQkgICBWTUxJTlVYX1NZTUJPTChuYW1lIyNf X2VuZClbXQorCisjZGVmaW5lIF9fU0VDVElPTl9DT1JFKHNlY3Rpb24sIGNvcmUsIG5hbWUsIGxl dmVsKQkJCVwKKwkjc2VjdGlvbiAiLi4iICNjb3JlICIuIiAjbmFtZSAiLiIgI2xldmVsCisKKyNl bmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KKworI2VuZGlmIC8qIF9MSU5VWF9TRUNUSU9OU19IICov Ci0tIAoyLjExLjAKCi0tClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBs aW5lICJ1bnN1YnNjcmliZSBsaW51eC1zaCIgaW4KdGhlIGJvZHkgb2YgYSBtZXNzYWdlIHRvIG1h am9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3Zn ZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1s From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Subject: [PATCH v7 01/14] generic-sections: add section core helpers Date: Sun, 15 Jan 2017 13:10:44 -0800 Message-ID: <20170115211057.17167-2-mcgrof@kernel.org> References: <20170109145833.11502-1-mcgrof@kernel.org> <20170115211057.17167-1-mcgrof@kernel.org> Return-path: In-Reply-To: <20170115211057.17167-1-mcgrof@kernel.org> Sender: linux-sh-owner@vger.kernel.org To: bp@alien8.de, bp@suse.de, hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel List-Id: platform-driver-x86.vger.kernel.org Linux makes extensive use of custom ELF header sections, documentation for these are well scattered. Unify this documentation in a central place and provide helpers to build custom Linux sections. This also generalizes sections code to enable avoiding modifying the linker scripts when we want to add new custom Linux sections. In order to make this generally useful we need to ensure all architectures can make use of core section helpers but that they can also override should this be needed. Instead of relying on section.h this adds a sections-core.h since this will be targeted to be safe to be used on asm code, linker scripts and C code. v7: ran ispell to fix spelling as requested by Boris v5: o Huge documentation revamp based on a careful review of the ELF specifications. Includes documentation now also about usage of two dots (..) when prefixing ELF program specific sections. o Replace macros for sections names in favor of just using the section names explicitly in the linker script. This is perhaps more work to grep but this is what folks seem to currently prefer. o Fix .text and .rodata documentation to explain memory protection strategies which architectures can embrace upon initialization (documents CONFIG_DEBUG_RODATA and mark_rodata_ro()) o Skip the 'Linux section ordering' documentation section, we'll instead add this on subsequent patch which will expand on it considerably o Dropped tree on MAINTAINERS -- as per discussions with Arnd, hpa and Josh, its easier to just let changes for sections go in through the respective tree that needs the changes. o Fix typos on documentation o Dropped SECTION_ALL(), __SECTION_CORE(), SECTION_CORE_ALL() macros since we are favoring using explicit section names. These are useless if we are being explicit. o Drop LINUX_SECTION_SIZE(), LINUX_SECTION_EMPTY() in favor of having section ranges and linker tables define their own, to avoid confusion and make code more readable. o Add __define_initcall() documentation and a small section describing our current initcall levels. This should help also clarify what was meant about keeping backward compatibility. v4: o Port to shiny new sphinx documentation format o fix a unicore32 build, turns out this actually fixes unicore32 defconfig builds which were failing for a long while. unicore32 does not seem to grok well the type passed on a section declaration, this ignores it. o Use VMLINUX_SYMBOL() in more user symbols (extern C code), not doing this was causing final linker issues with blackfin -- this is a CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX=y architecture. The other one being metatag. metatag is not supported on 0-day so I cannot confirm compilation there. o Added SECTION_CORE() for C code, used later by __LINUX_RANGE() o Since SECTION_CORE() is defined for linker script and C code, share the same helper and just use a __stringify() for the C code as is done for the other C helpers. o move generic sections to asm-generic/section-core.h instead. PowerPC compilation blows up if asm/jump_labels.h gets section.h included, fixing this is not in any way easy. The list of issues are endless. Moving new data to a new simple file resolves this. o since things are now in asm-generic/section-core.h the guard changes on asm-generic/sections.h and each architecture sections.h are no longer needed o Give generic sections some maintainer love, that change is Acked-by Arnd Bergmann, Josh and hpa. o A few checkpatch.pl style fixes o As suggested by James Hogan use generic-y to copy generic header files on architectures that do not have a sections.h instead of writing a simple file only to include the generic one. v3: o add missing sections.h for architectures that did not have it o move generic sections to asm-generic/sections.h o add generic asm helpers section_type(), section_type_asmtype(), push_section_type() -- these helpers enable easy use for for later declaring and using of custom Linux sections using more standard APIs in both C code, asm code (C asm calls, or asm files), enabling future standardized section types to be more immediately accessible to asm code, not just C code. Note for ASM_CMD_SEP we use by default "\n", architectures needed to override can do so on their own sections.h prior to inclusion of asm-generic/sections.h Signed-off-by: Luis R. Rodriguez --- Documentation/index.rst | 1 + Documentation/sections/background.rst | 105 ++++++++++ Documentation/sections/conf.py | 4 + Documentation/sections/index.rst | 17 ++ Documentation/sections/section-core.rst | 148 ++++++++++++++ MAINTAINERS | 12 ++ arch/alpha/include/asm/Kbuild | 1 + arch/arc/include/asm/Kbuild | 1 + arch/arm/include/asm/Kbuild | 1 + arch/arm64/include/asm/Kbuild | 1 + arch/avr32/include/asm/Kbuild | 1 + arch/blackfin/include/asm/Kbuild | 1 + arch/c6x/include/asm/Kbuild | 1 + arch/cris/include/asm/Kbuild | 1 + arch/frv/include/asm/Kbuild | 1 + arch/h8300/include/asm/Kbuild | 1 + arch/hexagon/include/asm/Kbuild | 1 + arch/ia64/include/asm/Kbuild | 1 + arch/m32r/include/asm/Kbuild | 1 + arch/m68k/include/asm/Kbuild | 1 + arch/metag/include/asm/Kbuild | 1 + arch/microblaze/include/asm/Kbuild | 1 + arch/mips/include/asm/Kbuild | 1 + arch/mn10300/include/asm/Kbuild | 1 + arch/nios2/include/asm/Kbuild | 1 + arch/openrisc/include/asm/Kbuild | 1 + arch/parisc/include/asm/Kbuild | 1 + arch/powerpc/include/asm/Kbuild | 1 + arch/s390/include/asm/Kbuild | 1 + arch/score/include/asm/Kbuild | 1 + arch/sh/include/asm/Kbuild | 1 + arch/sparc/include/asm/Kbuild | 1 + arch/tile/include/asm/Kbuild | 1 + arch/um/include/asm/Kbuild | 1 + arch/unicore32/include/asm/section-core.h | 19 ++ arch/x86/include/asm/Kbuild | 1 + arch/xtensa/include/asm/Kbuild | 1 + include/asm-generic/section-core.h | 307 ++++++++++++++++++++++++++++++ include/asm-generic/sections.h | 2 + include/asm-generic/vmlinux.lds.h | 1 + include/linux/init.h | 89 +++++++-- include/linux/sections.h | 87 +++++++++ 42 files changed, 809 insertions(+), 13 deletions(-) create mode 100644 Documentation/sections/background.rst create mode 100644 Documentation/sections/conf.py create mode 100644 Documentation/sections/index.rst create mode 100644 Documentation/sections/section-core.rst create mode 100644 arch/unicore32/include/asm/section-core.h create mode 100644 include/asm-generic/section-core.h create mode 100644 include/linux/sections.h diff --git a/Documentation/index.rst b/Documentation/index.rst index cb5d77699c60..71e0305c036d 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -57,6 +57,7 @@ needed). media/index gpu/index security/index + sections/index sound/index crypto/index diff --git a/Documentation/sections/background.rst b/Documentation/sections/background.rst new file mode 100644 index 000000000000..4f04c0682a6f --- /dev/null +++ b/Documentation/sections/background.rst @@ -0,0 +1,105 @@ +====================== +ELF section background +====================== + +About +===== + +The purpose of this chapter is to help those not familiar with ELF to brush up +the latest ELF specifications in order to help understand how Linux uses and +defines its own ELF sections. + +Standardized ELF +================ + +The first publication documenting ELF was UNIX System Laboratories' (USL) +*System V Release 4 Application Binary Interface* (`SRV4 ABI`_) specification. +Originally ELF was only a small part of the SRV4 ABI, with time however new +specifications only put focus on ELF, such was the case of the *TIS Portable +Formats Specification version 1.2* (`TIS 1.2`_). As of TIS 1.2, ELF was +supplemented with processor specific ELF addendums, available on the *Linux +Foundation referenced specification page* (`LF ref page`_). The latest ELF +specification is the *System V Application Binary Interface - DRAFT - 24 April +2001* (`gabi4`_). + +.. _SRV4 ABI: http://www.sco.com/developers/devspecs/gabi41.pdf +.. _TIS 1.2: https://refspecs.linuxbase.org/elf/elf.pdf +.. _LF ref page: https://refspecs.linuxbase.org/ +.. _gabi4: https://refspecs.linuxbase.org/elf/gabi4+/contents.html + +ELF views on Linux +================== + +There are two views which can be used for inspecting data in an ELF file, a +Linking view, and an Execution view. A Section Header Table enables one to +describe an object using the Linking view while a Program Header Table enables +one to describe an object using the Execution view. The views are not mutually +exclusive. For instance, vmlinux can be viewed under both views, ``readelf -S +vmlinux`` for the Linking view, and ``readelf -l vmlinux`` for the Execution +view. In Linux only the vmlinux file will have an Execution view, even modules +lack an Execution view given that vmlinux is the only file that describes how +the the kernel runs from the start. All other Linux kernel object files have +an available Linking view. + +Under the Linking view, the Section Header Table describes all available +sections. The Section Header Table is an array of ELF section header data +structures. If on a 32-bit system this is ``struct elf32_shd``, if on a 64-bit +this is ``struct elf64_shdr``. Sections are only visible on object files that +have a Linking view, since all Linux kernel files have Linking view, all kernel +objects have ELF sections. + +Limitations on ELF sections +=========================== + +We provide a summary on the limitations of ELF sections. Refer to the public +ELF specifications for details. Note that 64-bit limitations may depend +on processor specific section attributes to be used, refer to your processor +specification if unsure. + +Its worth elaborating on the limitations on the name of an ELF section: +ELF section names are stored as strings as per the ELF specification, and +as can be expected, these don't have explicit limitations. The implicit +limitation then depends on the size of an ELF object file and ELF section. + +If using really large kernels or objects with large amounts of sections one +would still need to be sure that ELF loader in charge of loading the Linux +kernel is properly updated to handle coping with the latest ELF extensions. + + .. flat-table:: Limitations on ELF Sections + + * - Section attribute + - 32-bit + - 64-bit + + * - ELF section name + - Size of an ELF section + - Size of an ELF section + + * - Size of an ELF section + - 4 GiB + - 16 EiB + + * - Max number of sections in an object file + - 4 GiEntries (4294967296) + - 16 EiEntries (18446744073709551616) + +Program specific ELF sections +============================= + +The ELF specification allows for a section type to be specified as +*Program specific section*, defined as ``SHT_PROGBITS``. This sections type +enables programs to customize sections for their own use. In assembly this +specified ``@progbits`` on most architectures, on ARM this is ``%progbits``. + +``SHT_PROGBITS`` is used by Linux for defining and using Linux ELF sections. + +Special ELF Sections +==================== + +The ELF specification defines *Special ELF Sections* on chapter 4 (`gabi4 +ch4`_). These are defined as sections which hold program and control +information. Of these sections, a few have the section type as +``SHT_PROGBITS``. This enables Linux to *further customize* use of the section +beyond what the ELF specification suggests. + +.. _gabi4 ch4: https://refspecs.linuxbase.org/elf/gabi4+/ch4.sheader.html#special_sections diff --git a/Documentation/sections/conf.py b/Documentation/sections/conf.py new file mode 100644 index 000000000000..faa1c57595e1 --- /dev/null +++ b/Documentation/sections/conf.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8; mode: python -*- + +project = 'Linux Kernel ELF sections' +html_search_language = 'en' diff --git a/Documentation/sections/index.rst b/Documentation/sections/index.rst new file mode 100644 index 000000000000..f37511ef05e7 --- /dev/null +++ b/Documentation/sections/index.rst @@ -0,0 +1,17 @@ +========================= +Linux Kernel ELF sections +========================= + +This book documents the different ELF sections used on the Linux kernel. +We start off by providing references to how ELF was standardized, references +to the standards on ELF sections, review limitations of ELF sections, and +finally how Linux uses ELF sections in the Linux kernel. Certain important +Linux ELF sections are documented carefully: we describe the goal of the +ELF section, and address concurrency considerations when applicable. A few +common a set of Linux helpers for ELF sections are also documented. + +.. toctree:: + :maxdepth: 4 + + background + section-core diff --git a/Documentation/sections/section-core.rst b/Documentation/sections/section-core.rst new file mode 100644 index 000000000000..ac5815a0d9b3 --- /dev/null +++ b/Documentation/sections/section-core.rst @@ -0,0 +1,148 @@ +=================================== +Linux ELF program specific sections +=================================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux ELF program specific sections + +Linux linker script +=================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux linker script + +Memory protection +----------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Memory protection + +mark_rodata_ro +----------------------- +.. kernel-doc:: include/linux/init.h + :functions: mark_rodata_ro + +.rodata +------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .rodata + +.text +----- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .text + +.data +------------ +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .data + +Linux .init\* sections +====================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux init sections + +.init.text +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.text + +.init.data +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.data + +.init.rodata +------------ +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.rodata + +Initcall levels +--------------- +.. kernel-doc:: include/linux/init.h + :doc: Initcall levels + +.initcall +----------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .initcall + +__define_initcall +----------------- +.. kernel-doc:: include/linux/init.h + :functions: __define_initcall + +Linux .exit\* sections +====================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux exit sections + +.exit.text +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exit.text + +.exit.data +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exit.data + +.exitcall.exit +-------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exitcall.exit + +Linux .ref\* sections +===================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux references to init sections + +.ref.text +--------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.text + +.ref.data +--------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.data + +.ref.rodata +----------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.rodata + +Generic Linux kernel section helpers +==================================== + +Introduction +------------- +.. kernel-doc:: include/linux/sections.h + :doc: Introduction + +LINUX_SECTION_ALIGNMENT +----------------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_ALIGNMENT + +LINUX_SECTION_START +------------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_START + +LINUX_SECTION_END +----------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_END + +DECLARE_LINUX_SECTION +--------------------- +.. kernel-doc:: include/linux/sections.h + :functions: DECLARE_LINUX_SECTION + +DECLARE_LINUX_SECTION_RO +------------------------ +.. kernel-doc:: include/linux/sections.h + :functions: DECLARE_LINUX_SECTION_RO diff --git a/MAINTAINERS b/MAINTAINERS index d2db7fecef32..5e580b1257fb 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -5438,6 +5438,18 @@ S: Supported F: drivers/base/power/domain*.c F: include/linux/pm_domain.h +GENERIC SECTIONS +M: "Luis R. Rodriguez" +M: Josh Poimboeuf +M: "H. Peter Anvin" +L: linux-arch@vger.kernel.org +L: linux-kernel@vger.kernel.org +S: Supported +F: include/asm-generic/section-core.h +F: include/asm-generic/sections.h +F: include/asm-generic/vmlinux.lds.h +F: Documentation/sections/section-core.rst + GENERIC UIO DRIVER FOR PCI DEVICES M: "Michael S. Tsirkin" L: kvm@vger.kernel.org diff --git a/arch/alpha/include/asm/Kbuild b/arch/alpha/include/asm/Kbuild index bf8475ce85ee..5422827f1585 100644 --- a/arch/alpha/include/asm/Kbuild +++ b/arch/alpha/include/asm/Kbuild @@ -10,3 +10,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h +generic-y += section-core.h diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild index c332604606dd..7b2cb3dea5fc 100644 --- a/arch/arc/include/asm/Kbuild +++ b/arch/arc/include/asm/Kbuild @@ -51,3 +51,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/arm/include/asm/Kbuild b/arch/arm/include/asm/Kbuild index efb21757d41f..9b69a22a9ae1 100644 --- a/arch/arm/include/asm/Kbuild +++ b/arch/arm/include/asm/Kbuild @@ -41,3 +41,4 @@ generic-y += unaligned.h generated-y += mach-types.h generated-y += unistd-nr.h +generic-y += section-core.h diff --git a/arch/arm64/include/asm/Kbuild b/arch/arm64/include/asm/Kbuild index 8365a84c2640..00ace5e826f1 100644 --- a/arch/arm64/include/asm/Kbuild +++ b/arch/arm64/include/asm/Kbuild @@ -45,3 +45,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += vga.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/avr32/include/asm/Kbuild b/arch/avr32/include/asm/Kbuild index 241b9b9729d8..f2c3b656a0e7 100644 --- a/arch/avr32/include/asm/Kbuild +++ b/arch/avr32/include/asm/Kbuild @@ -22,3 +22,4 @@ generic-y += trace_clock.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/blackfin/include/asm/Kbuild b/arch/blackfin/include/asm/Kbuild index 2fb67b59d188..bf20541bcf21 100644 --- a/arch/blackfin/include/asm/Kbuild +++ b/arch/blackfin/include/asm/Kbuild @@ -47,3 +47,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/c6x/include/asm/Kbuild b/arch/c6x/include/asm/Kbuild index 64465e7e2245..38127ce747be 100644 --- a/arch/c6x/include/asm/Kbuild +++ b/arch/c6x/include/asm/Kbuild @@ -62,3 +62,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/cris/include/asm/Kbuild b/arch/cris/include/asm/Kbuild index 1778805f6380..385cd88a9d9e 100644 --- a/arch/cris/include/asm/Kbuild +++ b/arch/cris/include/asm/Kbuild @@ -45,3 +45,4 @@ generic-y += types.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/frv/include/asm/Kbuild b/arch/frv/include/asm/Kbuild index 1fa084cf1a43..46d7c599d9b8 100644 --- a/arch/frv/include/asm/Kbuild +++ b/arch/frv/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/h8300/include/asm/Kbuild b/arch/h8300/include/asm/Kbuild index 373cb23301e3..1ec04ec1c82b 100644 --- a/arch/h8300/include/asm/Kbuild +++ b/arch/h8300/include/asm/Kbuild @@ -75,3 +75,4 @@ generic-y += unaligned.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/hexagon/include/asm/Kbuild b/arch/hexagon/include/asm/Kbuild index db8ddabc6bd2..37d7bfae7619 100644 --- a/arch/hexagon/include/asm/Kbuild +++ b/arch/hexagon/include/asm/Kbuild @@ -60,3 +60,4 @@ generic-y += unaligned.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/ia64/include/asm/Kbuild b/arch/ia64/include/asm/Kbuild index 502a91d8dbbd..672c6d5da18c 100644 --- a/arch/ia64/include/asm/Kbuild +++ b/arch/ia64/include/asm/Kbuild @@ -9,3 +9,4 @@ generic-y += preempt.h generic-y += trace_clock.h generic-y += vtime.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/m32r/include/asm/Kbuild b/arch/m32r/include/asm/Kbuild index 6e69d2c42eee..8ccfb5eb9678 100644 --- a/arch/m32r/include/asm/Kbuild +++ b/arch/m32r/include/asm/Kbuild @@ -12,3 +12,4 @@ generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/m68k/include/asm/Kbuild b/arch/m68k/include/asm/Kbuild index 1f2e5d31cb24..1277b45bf4f9 100644 --- a/arch/m68k/include/asm/Kbuild +++ b/arch/m68k/include/asm/Kbuild @@ -34,3 +34,4 @@ generic-y += trace_clock.h generic-y += types.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/metag/include/asm/Kbuild b/arch/metag/include/asm/Kbuild index 167150c701d1..b1011375cd7a 100644 --- a/arch/metag/include/asm/Kbuild +++ b/arch/metag/include/asm/Kbuild @@ -55,3 +55,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/microblaze/include/asm/Kbuild b/arch/microblaze/include/asm/Kbuild index b0ae88c9fed9..c6c2cf6edc98 100644 --- a/arch/microblaze/include/asm/Kbuild +++ b/arch/microblaze/include/asm/Kbuild @@ -11,3 +11,4 @@ generic-y += preempt.h generic-y += syscalls.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/mips/include/asm/Kbuild b/arch/mips/include/asm/Kbuild index ed07179fe26a..7a932b4a5531 100644 --- a/arch/mips/include/asm/Kbuild +++ b/arch/mips/include/asm/Kbuild @@ -21,3 +21,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/mn10300/include/asm/Kbuild b/arch/mn10300/include/asm/Kbuild index 1c8dd0f5cd5d..f8145bc85835 100644 --- a/arch/mn10300/include/asm/Kbuild +++ b/arch/mn10300/include/asm/Kbuild @@ -10,3 +10,4 @@ generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/nios2/include/asm/Kbuild b/arch/nios2/include/asm/Kbuild index d63330e88379..c9c7cb82b00f 100644 --- a/arch/nios2/include/asm/Kbuild +++ b/arch/nios2/include/asm/Kbuild @@ -63,3 +63,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/openrisc/include/asm/Kbuild b/arch/openrisc/include/asm/Kbuild index 2832f031fb11..86175e701869 100644 --- a/arch/openrisc/include/asm/Kbuild +++ b/arch/openrisc/include/asm/Kbuild @@ -71,3 +71,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/parisc/include/asm/Kbuild b/arch/parisc/include/asm/Kbuild index 91f53c07f410..18a9d4c5ead7 100644 --- a/arch/parisc/include/asm/Kbuild +++ b/arch/parisc/include/asm/Kbuild @@ -28,3 +28,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild index 5c4fbc80dc6c..4322d9746cdb 100644 --- a/arch/powerpc/include/asm/Kbuild +++ b/arch/powerpc/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mcs_spinlock.h generic-y += preempt.h generic-y += rwsem.h generic-y += vtime.h +generic-y += section-core.h diff --git a/arch/s390/include/asm/Kbuild b/arch/s390/include/asm/Kbuild index 8aea32fe8bd2..63a1c2924b91 100644 --- a/arch/s390/include/asm/Kbuild +++ b/arch/s390/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/score/include/asm/Kbuild b/arch/score/include/asm/Kbuild index a05218ff3fe4..f089a264cd38 100644 --- a/arch/score/include/asm/Kbuild +++ b/arch/score/include/asm/Kbuild @@ -14,3 +14,4 @@ generic-y += trace_clock.h generic-y += xor.h generic-y += serial.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/sh/include/asm/Kbuild b/arch/sh/include/asm/Kbuild index 751c3373a92c..7b0356dca562 100644 --- a/arch/sh/include/asm/Kbuild +++ b/arch/sh/include/asm/Kbuild @@ -39,3 +39,4 @@ generic-y += termios.h generic-y += trace_clock.h generic-y += ucontext.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/sparc/include/asm/Kbuild b/arch/sparc/include/asm/Kbuild index 0569bfac4afb..438f86573dc5 100644 --- a/arch/sparc/include/asm/Kbuild +++ b/arch/sparc/include/asm/Kbuild @@ -21,3 +21,4 @@ generic-y += serial.h generic-y += trace_clock.h generic-y += types.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/tile/include/asm/Kbuild b/arch/tile/include/asm/Kbuild index 2d1f5638974c..fb6b831c1fba 100644 --- a/arch/tile/include/asm/Kbuild +++ b/arch/tile/include/asm/Kbuild @@ -40,3 +40,4 @@ generic-y += termios.h generic-y += trace_clock.h generic-y += types.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/um/include/asm/Kbuild b/arch/um/include/asm/Kbuild index 052f7f6d0551..580bd5ff828f 100644 --- a/arch/um/include/asm/Kbuild +++ b/arch/um/include/asm/Kbuild @@ -26,3 +26,4 @@ generic-y += topology.h generic-y += trace_clock.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/unicore32/include/asm/section-core.h b/arch/unicore32/include/asm/section-core.h new file mode 100644 index 000000000000..0b9c68429a1a --- /dev/null +++ b/arch/unicore32/include/asm/section-core.h @@ -0,0 +1,19 @@ +#ifndef __UNICORE_SECTION_CORE_ASM_H__ +#define __UNICORE_SECTION_CORE_ASM_H__ +/* + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +/* Unicore32 has known to not work properly with the type set, so ignore it */ + +#define __set_section_core_type(___section, ___core, ___name, \ + ___level, ___flags, ___type) \ + .section ___section..___core.___name.___level, ___flags + +#include + +#endif /* __UNICORE_SECTION_CORE_ASM_H__ */ diff --git a/arch/x86/include/asm/Kbuild b/arch/x86/include/asm/Kbuild index 2b892e2313a9..af975f21eeee 100644 --- a/arch/x86/include/asm/Kbuild +++ b/arch/x86/include/asm/Kbuild @@ -12,3 +12,4 @@ generic-y += dma-contiguous.h generic-y += early_ioremap.h generic-y += mcs_spinlock.h generic-y += mm-arch-hooks.h +generic-y += section-core.h diff --git a/arch/xtensa/include/asm/Kbuild b/arch/xtensa/include/asm/Kbuild index b7fbaa56b51a..7879c31e66a7 100644 --- a/arch/xtensa/include/asm/Kbuild +++ b/arch/xtensa/include/asm/Kbuild @@ -32,3 +32,4 @@ generic-y += topology.h generic-y += trace_clock.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/include/asm-generic/section-core.h b/include/asm-generic/section-core.h new file mode 100644 index 000000000000..efc753e80d76 --- /dev/null +++ b/include/asm-generic/section-core.h @@ -0,0 +1,307 @@ +#ifndef _ASM_GENERIC_SECTION_CORE_H_ +#define _ASM_GENERIC_SECTION_CORE_H_ +/* + * Linux section core definitions + * + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +/** + * DOC: Linux ELF program specific sections + * + * Linux makes extensive use of ``SHT_PROGBITS`` to both extend use and + * definition of *Special ELF Sections* (`gabi4 ch4`_) and to define its own + * sections. This chapter is dedicated to documenting Linux program specific + * sections and helpers available to make use of these easier to implement and + * use. + * + * .. _gabi4 ch4: https://refspecs.linuxbase.org/elf/gabi4+/ch4.sheader.html#special_sections + */ + +/** + * DOC: Linux linker script + * + * Linux uses a custom linker script to build the vmlinux binary, it uses it to + * strategically place and define Linux ELF sections. Each architecture needs + * to implement its own linker script, it is expected to reside in + * ``arch/$(ARCH)/kernel/vmlinux.lds.S``. Architecture Linux linker scripts in + * turn include and use definitions from ``include/asm-generic/vmlinux.lds.h``, + * as well as some helpers documented in this chapter. + * + * In assembly it is common practice to use dots (``.``) in labels to avoid + * clashes with C symbols. Similarly, a dot (``.``) can be part of a section + * name but not a C symbol. Historically then, two dots are used (``..``) + * have been used in linker scripts when adding program specific sections + * when there are concerns to avoid clashes with compiler generated sections. + */ + +/** + * DOC: Memory protection + * + * Linux allows architectures which support memory protection features to + * take advantage of them by letting architectures define and enable + * ``CONFIG_DEBUG_RODATA`` and implement a mark_rodata_ro() call. + * mark_rodata_ro() can be used for instance to mark specific sections as + * read-only or non-executable. + * + * Linux typically follows a convention to have the .rodata ELF section follow + * after the .text ELF section, it does this to help architectures which + * support memory protection to mark both .text and .rodata as read-only in + * one shot. + * + * For more details refer to mark_rodata_ro(). + */ + +/** + * DOC: .rodata + * + * ELF section used for data which must be protected from write access. + */ + +/** + * DOC: .text + * + * ELF section name used for code (functions) used during regular + * kernel run time. + */ + +/** + * DOC: .data + * + * ELF section used for read-write data. + */ + +/** + * DOC: Linux init sections + * + * These sections are used for code and data structures used during boot or + * module initialization. On architectures that support it (x86, x86_64), all + * this code is freed up by the kernel right before the fist userspace init + * process is called when built-in to the kernel, and if modular it is freed + * after module initialization. Since the code is freed so early, in theory + * there should be no races against freeing this code with other CPUs. Init + * section code and data structures should never be exported with + * EXPORT_SYMBOL*() as the code will quickly become unavailable to the kernel + * after bootup. + */ + +/** + * DOC: .init.text + * + * ELF section for code (functions) used only during boot or driver + * initialization. + * + */ + +/** + * DOC: .init.data + * + * ELF section used for data structures used only during boot or driver + * initialization. + */ + +/** + * DOC: .init.rodata + * + * ELF section used for read-only code (functions) used only during boot + * or driver initialization. + */ + +/** + * DOC: .initcall + * + * ELF section used for subsystem init calls. There are init levels + * representing different functionality in the kernel. For more details + * refer to __define_initcall(). + */ + +/** + * DOC: Linux exit sections + * + * These sections are used to declare a functions and data structures which + * are only required on exit, the function or data structure will be dropped + * if the code declaring this section is not compiled as a module on + * architectures that support this (x86, x86_64). There is no special case + * handling for this code when built-in to the kernel. + */ + +/** + * DOC: .exit.text + * + * ELF section used to for code (functions) used only during module unload. + */ + +/** + * DOC: .exit.data + * + * ELF section used to for data structures used only during module + * unload. + */ + +/** + * DOC: .exitcall.exit + * + * ELF section used for exit routines, order is important and maintained by + * link order. + */ + +/** + * DOC: Linux references to init sections + * + * These sections are used to teach modpost to not warn about possible + * misuses of init section code from other sections. If you use this + * your use case should document why you are certain such use of init + * sectioned code is valid. For more details refer to ``include/linux/init.h`` + * ``__ref``, ``__refdata``, and ``__refconst`` documentation. + */ + +/** + * DOC: .ref.text + * + * ELF section used to annotate code (functions) which has been vetted as + * valid for its reference or use of other code (functions) or data structures + * which are part of the init sections. + */ + +/** + * DOC: .ref.data + * + * ELF section used for data structures which have been vetted for its + * reference or use of other code (functions) or data structures part of the + * init sections. + */ + +/** + * DOC: .ref.rodata + * + * ELF section used to annotate const code (functions) const data structures + * which has been vetted for its reference or use of other code (functions) + * or data structures part of the init sections. + */ + +/* Can be used on foo.S for instance */ +#ifndef __set_section_core_type +# define __set_section_core_type(___section, ___core, ___name, \ + ___level, ___flags, ___type) \ + .section ___section..___core.___name.___level, ___flags, ___type +#endif + +#ifndef __set_section_core +# define __set_section_core(___section, ___core, ___name, ___level, ___flags) \ + .section ___section..___core.___name.___level, ___flags +#endif + +#ifndef __push_section_core +# define __push_section_core(__section, __core, __name, __level, __flags) \ + .pushsection __section..__core.__name.__level, __flags +#endif + +#ifdef __KERNEL__ +#include +#endif + +#if defined(__ASSEMBLER__) || defined(__ASSEMBLY__) + +# ifndef LINKER_SCRIPT + +# ifndef push_section_core +# define push_section_core(__section, __core, __name, __level, __flags) \ + __push_section_core(__section, __core, __name, \ + __level, __stringify(__flags)) +# endif + +# ifndef set_section_core +# define set_section_core(__section, __core, __name, \ + __level, __flags) \ + __set_section_core(__section, __core, __name, \ + __level, __stringify(__flags)) +# endif + +# ifndef set_section_core_type +# define set_section_core_type(__section, __core, __name, \ + __level, __flags, __type) \ + __set_section_core_type(__section, __core, __name, __level, \ + __stringify(__flags), __type) +# endif + +# endif /* LINKER_SCRIPT */ +#else /* defined(__ASSEMBLER__) || defined(__ASSEMBLY__) */ + +/* + * As per gcc's documentation a common asm separator is a new line followed + * by tab [0], it however seems possible to also just use a newline as its + * the most commonly empirically observed semantic and folks seem to agree + * this even works on S390. In case your architecture disagrees you may + * override this and define your own and keep the rest of the macros. + * + * [0] https://gcc.gnu.org/onlinedocs/gcc/Basic-Asm.html#Basic-Asm + */ +# ifndef ASM_CMD_SEP +# define ASM_CMD_SEP "\n" +# endif + +# ifndef set_section_core +# define set_section_core(__section, __core, __name, __level, __flags) \ + __stringify(__set_section_core_type(__section, __core, __name, \ + __level, __stringify(__flags))) \ + ASM_CMD_SEP +# endif + +/* + * Some architectures (arm, and avr32 are two examples on kprobes) seem + * currently explicitly specify the type [0] -- this can be any of the + * optional constants on ELF: + * + * @progbits - section contains data + * @nobits - section does not contain data (i.e., section only occupies space) + * @note - section contains data which is used by things other than the program + * @init_array - section contains an array of pointers to init functions + * @fini_array - section contains an array of pointers to finish functions + * @preinit_array - section contains an array of pointers to pre-init functions + * + * ARM requires % instead of @. + * + * At least as per nasm (x86/x86_64 only), in the absence of qualifiers the + * defaults are as follows: + * + * section .text progbits alloc exec nowrite align=16 + * section .rodata progbits alloc noexec nowrite align=4 + * section .lrodata progbits alloc noexec nowrite align=4 + * section .data progbits alloc noexec write align=4 + * section .ldata progbits alloc noexec write align=4 + * section .bss nobits alloc noexec write align=4 + * section .lbss nobits alloc noexec write align=4 + * section .tdata progbits alloc noexec write align=4 tls + * section .tbss nobits alloc noexec write align=4 tls + * section .comment progbits noalloc noexec nowrite align=1 + * section other progbits alloc noexec nowrite align=1 + * + * gas should have sensible defaults for architectures... + * + * [0] http://www.nasm.us/doc/nasmdoc7.html + */ +# ifndef set_section_core_type +# define set_section_core_type(__section, __core, __name, __level, \ + __flags, __type) \ + __stringify(__set_section_core_type(__section, __core, \ + __name, __level, \ + __stringify(__flags), \ + __type)) \ + ASM_CMD_SEP +# endif + +# ifndef push_section_core +# define push_section_core(__section, __core, __name, \ + __level, __flags) \ + __stringify(__push_section_core(__section, __core, \ + __name, __level, \ + __stringify(__flags))) \ + ASM_CMD_SEP +# endif + +#endif /* defined(__ASSEMBLER__) || defined(__ASSEMBLY__) */ +#endif /* _ASM_GENERIC_SECTION_CORE_H_ */ diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h index 4df64a1fc09e..b145ae8d9cbe 100644 --- a/include/asm-generic/sections.h +++ b/include/asm-generic/sections.h @@ -1,6 +1,8 @@ #ifndef _ASM_GENERIC_SECTIONS_H_ #define _ASM_GENERIC_SECTIONS_H_ +#include + /* References to section boundaries */ #include diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 0968d13b3885..483f60c451f9 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -55,6 +55,7 @@ #endif #include +#include /* Align . to a 8 byte boundary equals to maximum function alignment. */ #define ALIGN_FUNCTION() . = ALIGN(8) diff --git a/include/linux/init.h b/include/linux/init.h index 885c3e6d0f9d..21c6bec9e3d0 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -130,6 +130,24 @@ int __init init_rootfs(void); extern bool rodata_enabled; #endif #ifdef CONFIG_DEBUG_RODATA +/** + * mark_rodata_ro - implement memory protection for ELF sections + * + * Architectures which support memory protection define a kernel configuration + * entry for CONFIG_DEBUG_RODATA, enable it in and implement mark_rodata_ro(). + * mark_rodata_ro() should strive to adjust the .rodata and .text ELF sections + * with read-only memory protection to prevent modifications of these sections + * after bootup. It can also try to use memory protection to prevent execution + * on the .rodata ELF section. + * + * In order to help architectures set both .text and .rodata as read-only with + * memory protections in one shot Linux has typically followed the convention + * to have the .rodata ELF section follow the .text ELF section on the vmlinux + * linker script. + * + * Linux calls mark_rodata_ro() after freeing .init code and prior to calling + * the first init userspace process. + */ void mark_rodata_ro(void); #endif @@ -140,25 +158,70 @@ extern bool initcall_debug; #endif #ifndef MODULE +/** + * DOC: Initcall levels + * + * When Linux boots the kernel do_initcalls() iterates over each Linux + * initialization level ID and calls all routines embedded on each level ID. + * Prior to v2.5.2.3 Linux had only one init level onto which all init + * functions folded onto using __initcall(). After v2.5.2.4 Linux split up + * initcalls into 7 separate initcall subsection levels, each level describing + * different functionality part of the kernel (commit `9d6ba121b7e17085`_ + * (v2.5.2.3 -> v2.5.2.4)). In order to remain backward compatible __initcall() + * calls were left mapped to device_initcall(). + * + * Each init level consists of a dedicated ELF section, init functions are + * associated to an init level by linking it into the respective level's + * ELF section. + * + * Lower order init levels run prior to higher order init levels. Ordering + * inside each initcall level is determined by respective link order. + * + * .. _9d6ba121b7e17085: https://git.kernel.org/cgit/linux/kernel/git/history/history.git/commit/?id=9d6ba121b7e17085c95139233686b27a4d4c650e + */ #ifndef __ASSEMBLY__ -/* - * initcalls are now grouped by functionality into separate - * subsections. Ordering inside the subsections is determined - * by link order. - * For backwards compatibility, initcall() puts the call in - * the device init subsection. +/** + * __define_initcall - wrapper for defining init levels * - * The `id' arg to __define_initcall() is needed so that multiple initcalls - * can point at the same handler without causing duplicate-symbol build errors. + * @fn: init routine + * @id: init level * - * Initcalls are run by placing pointers in initcall sections that the - * kernel iterates at runtime. The linker can do dead code / data elimination - * and remove that completely, so the initcall sections have to be marked - * as KEEP() in the linker script. + * Defines a kernel initialization level. A respective linker script entry + * is required to ensure the init level is accounted for and to ensure symbols + * exist for iterating over all functions in the init level. A init level + * represents a series of functionality in the kernel. + * + * Ordering within an initialization level is determined by link order, so + * for instance if a Makefile had:: + * + * obj-y += foo.o + * obj-y += bar.o + * + * And foo.c:: + * + * subsys_initcall(foo_init); + * + * And bar.c had:: + * + * subsys_initcall(bar_init); + * + * foo_init() would be called prior to bar_init(). + * + * Note that @id in __define_initcall() also enables multiple initcalls + * to be created using the same handler for different init levels without + * causing duplicate-symbol build errors. + * + * Initcalls are run by placing start symbols to initcall levels inside ELF + * sections, the kernel in turn uses these symbols to iterate over each init + * level at runtime with do_initcall_level(). The end of each init level is + * marked by the subsequent symbol's start address until we reach the symbol + * ``__initcall_end``. The linker can do dead code / data elimination and each + * init level start symbol could be removed completely in this process, to + * avoid this each init level start symbols must be marked as 'KEEP()' in the + * linker script to avoid any linker optimization heuristic on initcalls. */ - #define __define_initcall(fn, id) \ static initcall_t __initcall_##fn##id __used \ __attribute__((__section__(".initcall" #id ".init"))) = fn; diff --git a/include/linux/sections.h b/include/linux/sections.h new file mode 100644 index 000000000000..6771c727bcd1 --- /dev/null +++ b/include/linux/sections.h @@ -0,0 +1,87 @@ +#ifndef _LINUX_SECTIONS_H +#define _LINUX_SECTIONS_H +/* + * Linux de-facto sections + * + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +#include +#include + +#ifndef __ASSEMBLY__ + +/** + * DOC: Introduction + * + * Linux defines a set of common helpers which can be used to against its use + * of standard or custom Linux sections, this section is dedicated to these + * helpers. + */ + +/** + * LINUX_SECTION_ALIGNMENT - get section alignment + * + * @name: section name + * + * Gives you the alignment for the section. + */ +#define LINUX_SECTION_ALIGNMENT(name) __alignof__(*VMLINUX_SYMBOL(name)) + +/** + * LINUX_SECTION_START - get address of start of section + * + * @name: section name + * + * This gives you the start address of the section. + * This should give you the address of the first entry. + * + */ +#define LINUX_SECTION_START(name) VMLINUX_SYMBOL(name) + +/** + * LINUX_SECTION_END - get address of end of the section + * + * @name: section name + * + * This gives you the end address of the section. + * This should give you the address of the end of the + * section. This will match the start address if the + * section is empty. + */ +#define LINUX_SECTION_END(name) VMLINUX_SYMBOL(name##__end) + +/** + * DECLARE_LINUX_SECTION - Declares a custom Linux section + * + * @type: type of custom Linux section + * @name: custom section name + * + * Declares a read-write custom Linux section + */ +#define DECLARE_LINUX_SECTION(type, name) \ + extern type VMLINUX_SYMBOL(name)[], \ + VMLINUX_SYMBOL(name##__end)[] + +/** + * DECLARE_LINUX_SECTION_RO - Declares a read-only custom Linux section + * + * @type: type of custom Linux section + * @name: custom section name + * + * Declares a read-only custom Linux section + */ +#define DECLARE_LINUX_SECTION_RO(type, name) \ + extern const type VMLINUX_SYMBOL(name)[], \ + VMLINUX_SYMBOL(name##__end)[] + +#define __SECTION_CORE(section, core, name, level) \ + #section ".." #core "." #name "." #level + +#endif /* __ASSEMBLY__ */ + +#endif /* _LINUX_SECTIONS_H */ -- 2.11.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.kernel.org ([198.145.29.136]:51386 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751173AbdAOVLO (ORCPT ); Sun, 15 Jan 2017 16:11:14 -0500 From: "Luis R. Rodriguez" Subject: [PATCH v7 01/14] generic-sections: add section core helpers Date: Sun, 15 Jan 2017 13:10:44 -0800 Message-Id: <20170115211057.17167-2-mcgrof@kernel.org> In-Reply-To: <20170115211057.17167-1-mcgrof@kernel.org> References: <20170109145833.11502-1-mcgrof@kernel.org> <20170115211057.17167-1-mcgrof@kernel.org> Sender: linux-kbuild-owner@vger.kernel.org List-ID: To: bp@alien8.de, bp@suse.de, hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel.org, tony.luck@intel.com, akpm@linux-foundation.org, linux-ia64@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, catalin.marinas@arm.com, will.deacon@arm.com, rostedt@goodmis.org, jani.nikula@intel.com, mchehab@osg.samsung.com, markus.heiser@darmarit.de, jolsa@kernel.org, msalter@redhat.com, chris@zankel.net, jcmvbkbc@gmail.com, linux-xtensa@linux-xtensa.org, adrian.hunter@intel.com, dsahern@gmail.com, namhyung@kernel.org, wangnan0@huawei.com, dmitry.torokhov@gmail.com, joro@8bytes.org, paulus@samba.org, mpe@ellerman.id.au, James.Bottomley@HansenPartnership.com, "Luis R. Rodriguez" Linux makes extensive use of custom ELF header sections, documentation for these are well scattered. Unify this documentation in a central place and provide helpers to build custom Linux sections. This also generalizes sections code to enable avoiding modifying the linker scripts when we want to add new custom Linux sections. In order to make this generally useful we need to ensure all architectures can make use of core section helpers but that they can also override should this be needed. Instead of relying on section.h this adds a sections-core.h since this will be targeted to be safe to be used on asm code, linker scripts and C code. v7: ran ispell to fix spelling as requested by Boris v5: o Huge documentation revamp based on a careful review of the ELF specifications. Includes documentation now also about usage of two dots (..) when prefixing ELF program specific sections. o Replace macros for sections names in favor of just using the section names explicitly in the linker script. This is perhaps more work to grep but this is what folks seem to currently prefer. o Fix .text and .rodata documentation to explain memory protection strategies which architectures can embrace upon initialization (documents CONFIG_DEBUG_RODATA and mark_rodata_ro()) o Skip the 'Linux section ordering' documentation section, we'll instead add this on subsequent patch which will expand on it considerably o Dropped tree on MAINTAINERS -- as per discussions with Arnd, hpa and Josh, its easier to just let changes for sections go in through the respective tree that needs the changes. o Fix typos on documentation o Dropped SECTION_ALL(), __SECTION_CORE(), SECTION_CORE_ALL() macros since we are favoring using explicit section names. These are useless if we are being explicit. o Drop LINUX_SECTION_SIZE(), LINUX_SECTION_EMPTY() in favor of having section ranges and linker tables define their own, to avoid confusion and make code more readable. o Add __define_initcall() documentation and a small section describing our current initcall levels. This should help also clarify what was meant about keeping backward compatibility. v4: o Port to shiny new sphinx documentation format o fix a unicore32 build, turns out this actually fixes unicore32 defconfig builds which were failing for a long while. unicore32 does not seem to grok well the type passed on a section declaration, this ignores it. o Use VMLINUX_SYMBOL() in more user symbols (extern C code), not doing this was causing final linker issues with blackfin -- this is a CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX=y architecture. The other one being metatag. metatag is not supported on 0-day so I cannot confirm compilation there. o Added SECTION_CORE() for C code, used later by __LINUX_RANGE() o Since SECTION_CORE() is defined for linker script and C code, share the same helper and just use a __stringify() for the C code as is done for the other C helpers. o move generic sections to asm-generic/section-core.h instead. PowerPC compilation blows up if asm/jump_labels.h gets section.h included, fixing this is not in any way easy. The list of issues are endless. Moving new data to a new simple file resolves this. o since things are now in asm-generic/section-core.h the guard changes on asm-generic/sections.h and each architecture sections.h are no longer needed o Give generic sections some maintainer love, that change is Acked-by Arnd Bergmann, Josh and hpa. o A few checkpatch.pl style fixes o As suggested by James Hogan use generic-y to copy generic header files on architectures that do not have a sections.h instead of writing a simple file only to include the generic one. v3: o add missing sections.h for architectures that did not have it o move generic sections to asm-generic/sections.h o add generic asm helpers section_type(), section_type_asmtype(), push_section_type() -- these helpers enable easy use for for later declaring and using of custom Linux sections using more standard APIs in both C code, asm code (C asm calls, or asm files), enabling future standardized section types to be more immediately accessible to asm code, not just C code. Note for ASM_CMD_SEP we use by default "\n", architectures needed to override can do so on their own sections.h prior to inclusion of asm-generic/sections.h Signed-off-by: Luis R. Rodriguez --- Documentation/index.rst | 1 + Documentation/sections/background.rst | 105 ++++++++++ Documentation/sections/conf.py | 4 + Documentation/sections/index.rst | 17 ++ Documentation/sections/section-core.rst | 148 ++++++++++++++ MAINTAINERS | 12 ++ arch/alpha/include/asm/Kbuild | 1 + arch/arc/include/asm/Kbuild | 1 + arch/arm/include/asm/Kbuild | 1 + arch/arm64/include/asm/Kbuild | 1 + arch/avr32/include/asm/Kbuild | 1 + arch/blackfin/include/asm/Kbuild | 1 + arch/c6x/include/asm/Kbuild | 1 + arch/cris/include/asm/Kbuild | 1 + arch/frv/include/asm/Kbuild | 1 + arch/h8300/include/asm/Kbuild | 1 + arch/hexagon/include/asm/Kbuild | 1 + arch/ia64/include/asm/Kbuild | 1 + arch/m32r/include/asm/Kbuild | 1 + arch/m68k/include/asm/Kbuild | 1 + arch/metag/include/asm/Kbuild | 1 + arch/microblaze/include/asm/Kbuild | 1 + arch/mips/include/asm/Kbuild | 1 + arch/mn10300/include/asm/Kbuild | 1 + arch/nios2/include/asm/Kbuild | 1 + arch/openrisc/include/asm/Kbuild | 1 + arch/parisc/include/asm/Kbuild | 1 + arch/powerpc/include/asm/Kbuild | 1 + arch/s390/include/asm/Kbuild | 1 + arch/score/include/asm/Kbuild | 1 + arch/sh/include/asm/Kbuild | 1 + arch/sparc/include/asm/Kbuild | 1 + arch/tile/include/asm/Kbuild | 1 + arch/um/include/asm/Kbuild | 1 + arch/unicore32/include/asm/section-core.h | 19 ++ arch/x86/include/asm/Kbuild | 1 + arch/xtensa/include/asm/Kbuild | 1 + include/asm-generic/section-core.h | 307 ++++++++++++++++++++++++++++++ include/asm-generic/sections.h | 2 + include/asm-generic/vmlinux.lds.h | 1 + include/linux/init.h | 89 +++++++-- include/linux/sections.h | 87 +++++++++ 42 files changed, 809 insertions(+), 13 deletions(-) create mode 100644 Documentation/sections/background.rst create mode 100644 Documentation/sections/conf.py create mode 100644 Documentation/sections/index.rst create mode 100644 Documentation/sections/section-core.rst create mode 100644 arch/unicore32/include/asm/section-core.h create mode 100644 include/asm-generic/section-core.h create mode 100644 include/linux/sections.h diff --git a/Documentation/index.rst b/Documentation/index.rst index cb5d77699c60..71e0305c036d 100644 --- a/Documentation/index.rst +++ b/Documentation/index.rst @@ -57,6 +57,7 @@ needed). media/index gpu/index security/index + sections/index sound/index crypto/index diff --git a/Documentation/sections/background.rst b/Documentation/sections/background.rst new file mode 100644 index 000000000000..4f04c0682a6f --- /dev/null +++ b/Documentation/sections/background.rst @@ -0,0 +1,105 @@ +====================== +ELF section background +====================== + +About +===== + +The purpose of this chapter is to help those not familiar with ELF to brush up +the latest ELF specifications in order to help understand how Linux uses and +defines its own ELF sections. + +Standardized ELF +================ + +The first publication documenting ELF was UNIX System Laboratories' (USL) +*System V Release 4 Application Binary Interface* (`SRV4 ABI`_) specification. +Originally ELF was only a small part of the SRV4 ABI, with time however new +specifications only put focus on ELF, such was the case of the *TIS Portable +Formats Specification version 1.2* (`TIS 1.2`_). As of TIS 1.2, ELF was +supplemented with processor specific ELF addendums, available on the *Linux +Foundation referenced specification page* (`LF ref page`_). The latest ELF +specification is the *System V Application Binary Interface - DRAFT - 24 April +2001* (`gabi4`_). + +.. _SRV4 ABI: http://www.sco.com/developers/devspecs/gabi41.pdf +.. _TIS 1.2: https://refspecs.linuxbase.org/elf/elf.pdf +.. _LF ref page: https://refspecs.linuxbase.org/ +.. _gabi4: https://refspecs.linuxbase.org/elf/gabi4+/contents.html + +ELF views on Linux +================== + +There are two views which can be used for inspecting data in an ELF file, a +Linking view, and an Execution view. A Section Header Table enables one to +describe an object using the Linking view while a Program Header Table enables +one to describe an object using the Execution view. The views are not mutually +exclusive. For instance, vmlinux can be viewed under both views, ``readelf -S +vmlinux`` for the Linking view, and ``readelf -l vmlinux`` for the Execution +view. In Linux only the vmlinux file will have an Execution view, even modules +lack an Execution view given that vmlinux is the only file that describes how +the the kernel runs from the start. All other Linux kernel object files have +an available Linking view. + +Under the Linking view, the Section Header Table describes all available +sections. The Section Header Table is an array of ELF section header data +structures. If on a 32-bit system this is ``struct elf32_shd``, if on a 64-bit +this is ``struct elf64_shdr``. Sections are only visible on object files that +have a Linking view, since all Linux kernel files have Linking view, all kernel +objects have ELF sections. + +Limitations on ELF sections +=========================== + +We provide a summary on the limitations of ELF sections. Refer to the public +ELF specifications for details. Note that 64-bit limitations may depend +on processor specific section attributes to be used, refer to your processor +specification if unsure. + +Its worth elaborating on the limitations on the name of an ELF section: +ELF section names are stored as strings as per the ELF specification, and +as can be expected, these don't have explicit limitations. The implicit +limitation then depends on the size of an ELF object file and ELF section. + +If using really large kernels or objects with large amounts of sections one +would still need to be sure that ELF loader in charge of loading the Linux +kernel is properly updated to handle coping with the latest ELF extensions. + + .. flat-table:: Limitations on ELF Sections + + * - Section attribute + - 32-bit + - 64-bit + + * - ELF section name + - Size of an ELF section + - Size of an ELF section + + * - Size of an ELF section + - 4 GiB + - 16 EiB + + * - Max number of sections in an object file + - 4 GiEntries (4294967296) + - 16 EiEntries (18446744073709551616) + +Program specific ELF sections +============================= + +The ELF specification allows for a section type to be specified as +*Program specific section*, defined as ``SHT_PROGBITS``. This sections type +enables programs to customize sections for their own use. In assembly this +specified ``@progbits`` on most architectures, on ARM this is ``%progbits``. + +``SHT_PROGBITS`` is used by Linux for defining and using Linux ELF sections. + +Special ELF Sections +==================== + +The ELF specification defines *Special ELF Sections* on chapter 4 (`gabi4 +ch4`_). These are defined as sections which hold program and control +information. Of these sections, a few have the section type as +``SHT_PROGBITS``. This enables Linux to *further customize* use of the section +beyond what the ELF specification suggests. + +.. _gabi4 ch4: https://refspecs.linuxbase.org/elf/gabi4+/ch4.sheader.html#special_sections diff --git a/Documentation/sections/conf.py b/Documentation/sections/conf.py new file mode 100644 index 000000000000..faa1c57595e1 --- /dev/null +++ b/Documentation/sections/conf.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8; mode: python -*- + +project = 'Linux Kernel ELF sections' +html_search_language = 'en' diff --git a/Documentation/sections/index.rst b/Documentation/sections/index.rst new file mode 100644 index 000000000000..f37511ef05e7 --- /dev/null +++ b/Documentation/sections/index.rst @@ -0,0 +1,17 @@ +========================= +Linux Kernel ELF sections +========================= + +This book documents the different ELF sections used on the Linux kernel. +We start off by providing references to how ELF was standardized, references +to the standards on ELF sections, review limitations of ELF sections, and +finally how Linux uses ELF sections in the Linux kernel. Certain important +Linux ELF sections are documented carefully: we describe the goal of the +ELF section, and address concurrency considerations when applicable. A few +common a set of Linux helpers for ELF sections are also documented. + +.. toctree:: + :maxdepth: 4 + + background + section-core diff --git a/Documentation/sections/section-core.rst b/Documentation/sections/section-core.rst new file mode 100644 index 000000000000..ac5815a0d9b3 --- /dev/null +++ b/Documentation/sections/section-core.rst @@ -0,0 +1,148 @@ +=================================== +Linux ELF program specific sections +=================================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux ELF program specific sections + +Linux linker script +=================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux linker script + +Memory protection +----------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Memory protection + +mark_rodata_ro +----------------------- +.. kernel-doc:: include/linux/init.h + :functions: mark_rodata_ro + +.rodata +------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .rodata + +.text +----- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .text + +.data +------------ +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .data + +Linux .init\* sections +====================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux init sections + +.init.text +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.text + +.init.data +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.data + +.init.rodata +------------ +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .init.rodata + +Initcall levels +--------------- +.. kernel-doc:: include/linux/init.h + :doc: Initcall levels + +.initcall +----------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .initcall + +__define_initcall +----------------- +.. kernel-doc:: include/linux/init.h + :functions: __define_initcall + +Linux .exit\* sections +====================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux exit sections + +.exit.text +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exit.text + +.exit.data +---------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exit.data + +.exitcall.exit +-------------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .exitcall.exit + +Linux .ref\* sections +===================== + +.. kernel-doc:: include/asm-generic/section-core.h + :doc: Linux references to init sections + +.ref.text +--------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.text + +.ref.data +--------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.data + +.ref.rodata +----------- +.. kernel-doc:: include/asm-generic/section-core.h + :doc: .ref.rodata + +Generic Linux kernel section helpers +==================================== + +Introduction +------------- +.. kernel-doc:: include/linux/sections.h + :doc: Introduction + +LINUX_SECTION_ALIGNMENT +----------------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_ALIGNMENT + +LINUX_SECTION_START +------------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_START + +LINUX_SECTION_END +----------------- +.. kernel-doc:: include/linux/sections.h + :functions: LINUX_SECTION_END + +DECLARE_LINUX_SECTION +--------------------- +.. kernel-doc:: include/linux/sections.h + :functions: DECLARE_LINUX_SECTION + +DECLARE_LINUX_SECTION_RO +------------------------ +.. kernel-doc:: include/linux/sections.h + :functions: DECLARE_LINUX_SECTION_RO diff --git a/MAINTAINERS b/MAINTAINERS index d2db7fecef32..5e580b1257fb 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -5438,6 +5438,18 @@ S: Supported F: drivers/base/power/domain*.c F: include/linux/pm_domain.h +GENERIC SECTIONS +M: "Luis R. Rodriguez" +M: Josh Poimboeuf +M: "H. Peter Anvin" +L: linux-arch@vger.kernel.org +L: linux-kernel@vger.kernel.org +S: Supported +F: include/asm-generic/section-core.h +F: include/asm-generic/sections.h +F: include/asm-generic/vmlinux.lds.h +F: Documentation/sections/section-core.rst + GENERIC UIO DRIVER FOR PCI DEVICES M: "Michael S. Tsirkin" L: kvm@vger.kernel.org diff --git a/arch/alpha/include/asm/Kbuild b/arch/alpha/include/asm/Kbuild index bf8475ce85ee..5422827f1585 100644 --- a/arch/alpha/include/asm/Kbuild +++ b/arch/alpha/include/asm/Kbuild @@ -10,3 +10,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h +generic-y += section-core.h diff --git a/arch/arc/include/asm/Kbuild b/arch/arc/include/asm/Kbuild index c332604606dd..7b2cb3dea5fc 100644 --- a/arch/arc/include/asm/Kbuild +++ b/arch/arc/include/asm/Kbuild @@ -51,3 +51,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/arm/include/asm/Kbuild b/arch/arm/include/asm/Kbuild index efb21757d41f..9b69a22a9ae1 100644 --- a/arch/arm/include/asm/Kbuild +++ b/arch/arm/include/asm/Kbuild @@ -41,3 +41,4 @@ generic-y += unaligned.h generated-y += mach-types.h generated-y += unistd-nr.h +generic-y += section-core.h diff --git a/arch/arm64/include/asm/Kbuild b/arch/arm64/include/asm/Kbuild index 8365a84c2640..00ace5e826f1 100644 --- a/arch/arm64/include/asm/Kbuild +++ b/arch/arm64/include/asm/Kbuild @@ -45,3 +45,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += vga.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/avr32/include/asm/Kbuild b/arch/avr32/include/asm/Kbuild index 241b9b9729d8..f2c3b656a0e7 100644 --- a/arch/avr32/include/asm/Kbuild +++ b/arch/avr32/include/asm/Kbuild @@ -22,3 +22,4 @@ generic-y += trace_clock.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/blackfin/include/asm/Kbuild b/arch/blackfin/include/asm/Kbuild index 2fb67b59d188..bf20541bcf21 100644 --- a/arch/blackfin/include/asm/Kbuild +++ b/arch/blackfin/include/asm/Kbuild @@ -47,3 +47,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/c6x/include/asm/Kbuild b/arch/c6x/include/asm/Kbuild index 64465e7e2245..38127ce747be 100644 --- a/arch/c6x/include/asm/Kbuild +++ b/arch/c6x/include/asm/Kbuild @@ -62,3 +62,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/cris/include/asm/Kbuild b/arch/cris/include/asm/Kbuild index 1778805f6380..385cd88a9d9e 100644 --- a/arch/cris/include/asm/Kbuild +++ b/arch/cris/include/asm/Kbuild @@ -45,3 +45,4 @@ generic-y += types.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/frv/include/asm/Kbuild b/arch/frv/include/asm/Kbuild index 1fa084cf1a43..46d7c599d9b8 100644 --- a/arch/frv/include/asm/Kbuild +++ b/arch/frv/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/h8300/include/asm/Kbuild b/arch/h8300/include/asm/Kbuild index 373cb23301e3..1ec04ec1c82b 100644 --- a/arch/h8300/include/asm/Kbuild +++ b/arch/h8300/include/asm/Kbuild @@ -75,3 +75,4 @@ generic-y += unaligned.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/hexagon/include/asm/Kbuild b/arch/hexagon/include/asm/Kbuild index db8ddabc6bd2..37d7bfae7619 100644 --- a/arch/hexagon/include/asm/Kbuild +++ b/arch/hexagon/include/asm/Kbuild @@ -60,3 +60,4 @@ generic-y += unaligned.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/ia64/include/asm/Kbuild b/arch/ia64/include/asm/Kbuild index 502a91d8dbbd..672c6d5da18c 100644 --- a/arch/ia64/include/asm/Kbuild +++ b/arch/ia64/include/asm/Kbuild @@ -9,3 +9,4 @@ generic-y += preempt.h generic-y += trace_clock.h generic-y += vtime.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/m32r/include/asm/Kbuild b/arch/m32r/include/asm/Kbuild index 6e69d2c42eee..8ccfb5eb9678 100644 --- a/arch/m32r/include/asm/Kbuild +++ b/arch/m32r/include/asm/Kbuild @@ -12,3 +12,4 @@ generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/m68k/include/asm/Kbuild b/arch/m68k/include/asm/Kbuild index 1f2e5d31cb24..1277b45bf4f9 100644 --- a/arch/m68k/include/asm/Kbuild +++ b/arch/m68k/include/asm/Kbuild @@ -34,3 +34,4 @@ generic-y += trace_clock.h generic-y += types.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/metag/include/asm/Kbuild b/arch/metag/include/asm/Kbuild index 167150c701d1..b1011375cd7a 100644 --- a/arch/metag/include/asm/Kbuild +++ b/arch/metag/include/asm/Kbuild @@ -55,3 +55,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/microblaze/include/asm/Kbuild b/arch/microblaze/include/asm/Kbuild index b0ae88c9fed9..c6c2cf6edc98 100644 --- a/arch/microblaze/include/asm/Kbuild +++ b/arch/microblaze/include/asm/Kbuild @@ -11,3 +11,4 @@ generic-y += preempt.h generic-y += syscalls.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/mips/include/asm/Kbuild b/arch/mips/include/asm/Kbuild index ed07179fe26a..7a932b4a5531 100644 --- a/arch/mips/include/asm/Kbuild +++ b/arch/mips/include/asm/Kbuild @@ -21,3 +21,4 @@ generic-y += unaligned.h generic-y += user.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/mn10300/include/asm/Kbuild b/arch/mn10300/include/asm/Kbuild index 1c8dd0f5cd5d..f8145bc85835 100644 --- a/arch/mn10300/include/asm/Kbuild +++ b/arch/mn10300/include/asm/Kbuild @@ -10,3 +10,4 @@ generic-y += preempt.h generic-y += sections.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/nios2/include/asm/Kbuild b/arch/nios2/include/asm/Kbuild index d63330e88379..c9c7cb82b00f 100644 --- a/arch/nios2/include/asm/Kbuild +++ b/arch/nios2/include/asm/Kbuild @@ -63,3 +63,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/openrisc/include/asm/Kbuild b/arch/openrisc/include/asm/Kbuild index 2832f031fb11..86175e701869 100644 --- a/arch/openrisc/include/asm/Kbuild +++ b/arch/openrisc/include/asm/Kbuild @@ -71,3 +71,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/parisc/include/asm/Kbuild b/arch/parisc/include/asm/Kbuild index 91f53c07f410..18a9d4c5ead7 100644 --- a/arch/parisc/include/asm/Kbuild +++ b/arch/parisc/include/asm/Kbuild @@ -28,3 +28,4 @@ generic-y += user.h generic-y += vga.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/powerpc/include/asm/Kbuild b/arch/powerpc/include/asm/Kbuild index 5c4fbc80dc6c..4322d9746cdb 100644 --- a/arch/powerpc/include/asm/Kbuild +++ b/arch/powerpc/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mcs_spinlock.h generic-y += preempt.h generic-y += rwsem.h generic-y += vtime.h +generic-y += section-core.h diff --git a/arch/s390/include/asm/Kbuild b/arch/s390/include/asm/Kbuild index 8aea32fe8bd2..63a1c2924b91 100644 --- a/arch/s390/include/asm/Kbuild +++ b/arch/s390/include/asm/Kbuild @@ -8,3 +8,4 @@ generic-y += mm-arch-hooks.h generic-y += preempt.h generic-y += trace_clock.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/score/include/asm/Kbuild b/arch/score/include/asm/Kbuild index a05218ff3fe4..f089a264cd38 100644 --- a/arch/score/include/asm/Kbuild +++ b/arch/score/include/asm/Kbuild @@ -14,3 +14,4 @@ generic-y += trace_clock.h generic-y += xor.h generic-y += serial.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/sh/include/asm/Kbuild b/arch/sh/include/asm/Kbuild index 751c3373a92c..7b0356dca562 100644 --- a/arch/sh/include/asm/Kbuild +++ b/arch/sh/include/asm/Kbuild @@ -39,3 +39,4 @@ generic-y += termios.h generic-y += trace_clock.h generic-y += ucontext.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/sparc/include/asm/Kbuild b/arch/sparc/include/asm/Kbuild index 0569bfac4afb..438f86573dc5 100644 --- a/arch/sparc/include/asm/Kbuild +++ b/arch/sparc/include/asm/Kbuild @@ -21,3 +21,4 @@ generic-y += serial.h generic-y += trace_clock.h generic-y += types.h generic-y += word-at-a-time.h +generic-y += section-core.h diff --git a/arch/tile/include/asm/Kbuild b/arch/tile/include/asm/Kbuild index 2d1f5638974c..fb6b831c1fba 100644 --- a/arch/tile/include/asm/Kbuild +++ b/arch/tile/include/asm/Kbuild @@ -40,3 +40,4 @@ generic-y += termios.h generic-y += trace_clock.h generic-y += types.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/um/include/asm/Kbuild b/arch/um/include/asm/Kbuild index 052f7f6d0551..580bd5ff828f 100644 --- a/arch/um/include/asm/Kbuild +++ b/arch/um/include/asm/Kbuild @@ -26,3 +26,4 @@ generic-y += topology.h generic-y += trace_clock.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/arch/unicore32/include/asm/section-core.h b/arch/unicore32/include/asm/section-core.h new file mode 100644 index 000000000000..0b9c68429a1a --- /dev/null +++ b/arch/unicore32/include/asm/section-core.h @@ -0,0 +1,19 @@ +#ifndef __UNICORE_SECTION_CORE_ASM_H__ +#define __UNICORE_SECTION_CORE_ASM_H__ +/* + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +/* Unicore32 has known to not work properly with the type set, so ignore it */ + +#define __set_section_core_type(___section, ___core, ___name, \ + ___level, ___flags, ___type) \ + .section ___section..___core.___name.___level, ___flags + +#include + +#endif /* __UNICORE_SECTION_CORE_ASM_H__ */ diff --git a/arch/x86/include/asm/Kbuild b/arch/x86/include/asm/Kbuild index 2b892e2313a9..af975f21eeee 100644 --- a/arch/x86/include/asm/Kbuild +++ b/arch/x86/include/asm/Kbuild @@ -12,3 +12,4 @@ generic-y += dma-contiguous.h generic-y += early_ioremap.h generic-y += mcs_spinlock.h generic-y += mm-arch-hooks.h +generic-y += section-core.h diff --git a/arch/xtensa/include/asm/Kbuild b/arch/xtensa/include/asm/Kbuild index b7fbaa56b51a..7879c31e66a7 100644 --- a/arch/xtensa/include/asm/Kbuild +++ b/arch/xtensa/include/asm/Kbuild @@ -32,3 +32,4 @@ generic-y += topology.h generic-y += trace_clock.h generic-y += word-at-a-time.h generic-y += xor.h +generic-y += section-core.h diff --git a/include/asm-generic/section-core.h b/include/asm-generic/section-core.h new file mode 100644 index 000000000000..efc753e80d76 --- /dev/null +++ b/include/asm-generic/section-core.h @@ -0,0 +1,307 @@ +#ifndef _ASM_GENERIC_SECTION_CORE_H_ +#define _ASM_GENERIC_SECTION_CORE_H_ +/* + * Linux section core definitions + * + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +/** + * DOC: Linux ELF program specific sections + * + * Linux makes extensive use of ``SHT_PROGBITS`` to both extend use and + * definition of *Special ELF Sections* (`gabi4 ch4`_) and to define its own + * sections. This chapter is dedicated to documenting Linux program specific + * sections and helpers available to make use of these easier to implement and + * use. + * + * .. _gabi4 ch4: https://refspecs.linuxbase.org/elf/gabi4+/ch4.sheader.html#special_sections + */ + +/** + * DOC: Linux linker script + * + * Linux uses a custom linker script to build the vmlinux binary, it uses it to + * strategically place and define Linux ELF sections. Each architecture needs + * to implement its own linker script, it is expected to reside in + * ``arch/$(ARCH)/kernel/vmlinux.lds.S``. Architecture Linux linker scripts in + * turn include and use definitions from ``include/asm-generic/vmlinux.lds.h``, + * as well as some helpers documented in this chapter. + * + * In assembly it is common practice to use dots (``.``) in labels to avoid + * clashes with C symbols. Similarly, a dot (``.``) can be part of a section + * name but not a C symbol. Historically then, two dots are used (``..``) + * have been used in linker scripts when adding program specific sections + * when there are concerns to avoid clashes with compiler generated sections. + */ + +/** + * DOC: Memory protection + * + * Linux allows architectures which support memory protection features to + * take advantage of them by letting architectures define and enable + * ``CONFIG_DEBUG_RODATA`` and implement a mark_rodata_ro() call. + * mark_rodata_ro() can be used for instance to mark specific sections as + * read-only or non-executable. + * + * Linux typically follows a convention to have the .rodata ELF section follow + * after the .text ELF section, it does this to help architectures which + * support memory protection to mark both .text and .rodata as read-only in + * one shot. + * + * For more details refer to mark_rodata_ro(). + */ + +/** + * DOC: .rodata + * + * ELF section used for data which must be protected from write access. + */ + +/** + * DOC: .text + * + * ELF section name used for code (functions) used during regular + * kernel run time. + */ + +/** + * DOC: .data + * + * ELF section used for read-write data. + */ + +/** + * DOC: Linux init sections + * + * These sections are used for code and data structures used during boot or + * module initialization. On architectures that support it (x86, x86_64), all + * this code is freed up by the kernel right before the fist userspace init + * process is called when built-in to the kernel, and if modular it is freed + * after module initialization. Since the code is freed so early, in theory + * there should be no races against freeing this code with other CPUs. Init + * section code and data structures should never be exported with + * EXPORT_SYMBOL*() as the code will quickly become unavailable to the kernel + * after bootup. + */ + +/** + * DOC: .init.text + * + * ELF section for code (functions) used only during boot or driver + * initialization. + * + */ + +/** + * DOC: .init.data + * + * ELF section used for data structures used only during boot or driver + * initialization. + */ + +/** + * DOC: .init.rodata + * + * ELF section used for read-only code (functions) used only during boot + * or driver initialization. + */ + +/** + * DOC: .initcall + * + * ELF section used for subsystem init calls. There are init levels + * representing different functionality in the kernel. For more details + * refer to __define_initcall(). + */ + +/** + * DOC: Linux exit sections + * + * These sections are used to declare a functions and data structures which + * are only required on exit, the function or data structure will be dropped + * if the code declaring this section is not compiled as a module on + * architectures that support this (x86, x86_64). There is no special case + * handling for this code when built-in to the kernel. + */ + +/** + * DOC: .exit.text + * + * ELF section used to for code (functions) used only during module unload. + */ + +/** + * DOC: .exit.data + * + * ELF section used to for data structures used only during module + * unload. + */ + +/** + * DOC: .exitcall.exit + * + * ELF section used for exit routines, order is important and maintained by + * link order. + */ + +/** + * DOC: Linux references to init sections + * + * These sections are used to teach modpost to not warn about possible + * misuses of init section code from other sections. If you use this + * your use case should document why you are certain such use of init + * sectioned code is valid. For more details refer to ``include/linux/init.h`` + * ``__ref``, ``__refdata``, and ``__refconst`` documentation. + */ + +/** + * DOC: .ref.text + * + * ELF section used to annotate code (functions) which has been vetted as + * valid for its reference or use of other code (functions) or data structures + * which are part of the init sections. + */ + +/** + * DOC: .ref.data + * + * ELF section used for data structures which have been vetted for its + * reference or use of other code (functions) or data structures part of the + * init sections. + */ + +/** + * DOC: .ref.rodata + * + * ELF section used to annotate const code (functions) const data structures + * which has been vetted for its reference or use of other code (functions) + * or data structures part of the init sections. + */ + +/* Can be used on foo.S for instance */ +#ifndef __set_section_core_type +# define __set_section_core_type(___section, ___core, ___name, \ + ___level, ___flags, ___type) \ + .section ___section..___core.___name.___level, ___flags, ___type +#endif + +#ifndef __set_section_core +# define __set_section_core(___section, ___core, ___name, ___level, ___flags) \ + .section ___section..___core.___name.___level, ___flags +#endif + +#ifndef __push_section_core +# define __push_section_core(__section, __core, __name, __level, __flags) \ + .pushsection __section..__core.__name.__level, __flags +#endif + +#ifdef __KERNEL__ +#include +#endif + +#if defined(__ASSEMBLER__) || defined(__ASSEMBLY__) + +# ifndef LINKER_SCRIPT + +# ifndef push_section_core +# define push_section_core(__section, __core, __name, __level, __flags) \ + __push_section_core(__section, __core, __name, \ + __level, __stringify(__flags)) +# endif + +# ifndef set_section_core +# define set_section_core(__section, __core, __name, \ + __level, __flags) \ + __set_section_core(__section, __core, __name, \ + __level, __stringify(__flags)) +# endif + +# ifndef set_section_core_type +# define set_section_core_type(__section, __core, __name, \ + __level, __flags, __type) \ + __set_section_core_type(__section, __core, __name, __level, \ + __stringify(__flags), __type) +# endif + +# endif /* LINKER_SCRIPT */ +#else /* defined(__ASSEMBLER__) || defined(__ASSEMBLY__) */ + +/* + * As per gcc's documentation a common asm separator is a new line followed + * by tab [0], it however seems possible to also just use a newline as its + * the most commonly empirically observed semantic and folks seem to agree + * this even works on S390. In case your architecture disagrees you may + * override this and define your own and keep the rest of the macros. + * + * [0] https://gcc.gnu.org/onlinedocs/gcc/Basic-Asm.html#Basic-Asm + */ +# ifndef ASM_CMD_SEP +# define ASM_CMD_SEP "\n" +# endif + +# ifndef set_section_core +# define set_section_core(__section, __core, __name, __level, __flags) \ + __stringify(__set_section_core_type(__section, __core, __name, \ + __level, __stringify(__flags))) \ + ASM_CMD_SEP +# endif + +/* + * Some architectures (arm, and avr32 are two examples on kprobes) seem + * currently explicitly specify the type [0] -- this can be any of the + * optional constants on ELF: + * + * @progbits - section contains data + * @nobits - section does not contain data (i.e., section only occupies space) + * @note - section contains data which is used by things other than the program + * @init_array - section contains an array of pointers to init functions + * @fini_array - section contains an array of pointers to finish functions + * @preinit_array - section contains an array of pointers to pre-init functions + * + * ARM requires % instead of @. + * + * At least as per nasm (x86/x86_64 only), in the absence of qualifiers the + * defaults are as follows: + * + * section .text progbits alloc exec nowrite align=16 + * section .rodata progbits alloc noexec nowrite align=4 + * section .lrodata progbits alloc noexec nowrite align=4 + * section .data progbits alloc noexec write align=4 + * section .ldata progbits alloc noexec write align=4 + * section .bss nobits alloc noexec write align=4 + * section .lbss nobits alloc noexec write align=4 + * section .tdata progbits alloc noexec write align=4 tls + * section .tbss nobits alloc noexec write align=4 tls + * section .comment progbits noalloc noexec nowrite align=1 + * section other progbits alloc noexec nowrite align=1 + * + * gas should have sensible defaults for architectures... + * + * [0] http://www.nasm.us/doc/nasmdoc7.html + */ +# ifndef set_section_core_type +# define set_section_core_type(__section, __core, __name, __level, \ + __flags, __type) \ + __stringify(__set_section_core_type(__section, __core, \ + __name, __level, \ + __stringify(__flags), \ + __type)) \ + ASM_CMD_SEP +# endif + +# ifndef push_section_core +# define push_section_core(__section, __core, __name, \ + __level, __flags) \ + __stringify(__push_section_core(__section, __core, \ + __name, __level, \ + __stringify(__flags))) \ + ASM_CMD_SEP +# endif + +#endif /* defined(__ASSEMBLER__) || defined(__ASSEMBLY__) */ +#endif /* _ASM_GENERIC_SECTION_CORE_H_ */ diff --git a/include/asm-generic/sections.h b/include/asm-generic/sections.h index 4df64a1fc09e..b145ae8d9cbe 100644 --- a/include/asm-generic/sections.h +++ b/include/asm-generic/sections.h @@ -1,6 +1,8 @@ #ifndef _ASM_GENERIC_SECTIONS_H_ #define _ASM_GENERIC_SECTIONS_H_ +#include + /* References to section boundaries */ #include diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 0968d13b3885..483f60c451f9 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -55,6 +55,7 @@ #endif #include +#include /* Align . to a 8 byte boundary equals to maximum function alignment. */ #define ALIGN_FUNCTION() . = ALIGN(8) diff --git a/include/linux/init.h b/include/linux/init.h index 885c3e6d0f9d..21c6bec9e3d0 100644 --- a/include/linux/init.h +++ b/include/linux/init.h @@ -130,6 +130,24 @@ int __init init_rootfs(void); extern bool rodata_enabled; #endif #ifdef CONFIG_DEBUG_RODATA +/** + * mark_rodata_ro - implement memory protection for ELF sections + * + * Architectures which support memory protection define a kernel configuration + * entry for CONFIG_DEBUG_RODATA, enable it in and implement mark_rodata_ro(). + * mark_rodata_ro() should strive to adjust the .rodata and .text ELF sections + * with read-only memory protection to prevent modifications of these sections + * after bootup. It can also try to use memory protection to prevent execution + * on the .rodata ELF section. + * + * In order to help architectures set both .text and .rodata as read-only with + * memory protections in one shot Linux has typically followed the convention + * to have the .rodata ELF section follow the .text ELF section on the vmlinux + * linker script. + * + * Linux calls mark_rodata_ro() after freeing .init code and prior to calling + * the first init userspace process. + */ void mark_rodata_ro(void); #endif @@ -140,25 +158,70 @@ extern bool initcall_debug; #endif #ifndef MODULE +/** + * DOC: Initcall levels + * + * When Linux boots the kernel do_initcalls() iterates over each Linux + * initialization level ID and calls all routines embedded on each level ID. + * Prior to v2.5.2.3 Linux had only one init level onto which all init + * functions folded onto using __initcall(). After v2.5.2.4 Linux split up + * initcalls into 7 separate initcall subsection levels, each level describing + * different functionality part of the kernel (commit `9d6ba121b7e17085`_ + * (v2.5.2.3 -> v2.5.2.4)). In order to remain backward compatible __initcall() + * calls were left mapped to device_initcall(). + * + * Each init level consists of a dedicated ELF section, init functions are + * associated to an init level by linking it into the respective level's + * ELF section. + * + * Lower order init levels run prior to higher order init levels. Ordering + * inside each initcall level is determined by respective link order. + * + * .. _9d6ba121b7e17085: https://git.kernel.org/cgit/linux/kernel/git/history/history.git/commit/?id=9d6ba121b7e17085c95139233686b27a4d4c650e + */ #ifndef __ASSEMBLY__ -/* - * initcalls are now grouped by functionality into separate - * subsections. Ordering inside the subsections is determined - * by link order. - * For backwards compatibility, initcall() puts the call in - * the device init subsection. +/** + * __define_initcall - wrapper for defining init levels * - * The `id' arg to __define_initcall() is needed so that multiple initcalls - * can point at the same handler without causing duplicate-symbol build errors. + * @fn: init routine + * @id: init level * - * Initcalls are run by placing pointers in initcall sections that the - * kernel iterates at runtime. The linker can do dead code / data elimination - * and remove that completely, so the initcall sections have to be marked - * as KEEP() in the linker script. + * Defines a kernel initialization level. A respective linker script entry + * is required to ensure the init level is accounted for and to ensure symbols + * exist for iterating over all functions in the init level. A init level + * represents a series of functionality in the kernel. + * + * Ordering within an initialization level is determined by link order, so + * for instance if a Makefile had:: + * + * obj-y += foo.o + * obj-y += bar.o + * + * And foo.c:: + * + * subsys_initcall(foo_init); + * + * And bar.c had:: + * + * subsys_initcall(bar_init); + * + * foo_init() would be called prior to bar_init(). + * + * Note that @id in __define_initcall() also enables multiple initcalls + * to be created using the same handler for different init levels without + * causing duplicate-symbol build errors. + * + * Initcalls are run by placing start symbols to initcall levels inside ELF + * sections, the kernel in turn uses these symbols to iterate over each init + * level at runtime with do_initcall_level(). The end of each init level is + * marked by the subsequent symbol's start address until we reach the symbol + * ``__initcall_end``. The linker can do dead code / data elimination and each + * init level start symbol could be removed completely in this process, to + * avoid this each init level start symbols must be marked as 'KEEP()' in the + * linker script to avoid any linker optimization heuristic on initcalls. */ - #define __define_initcall(fn, id) \ static initcall_t __initcall_##fn##id __used \ __attribute__((__section__(".initcall" #id ".init"))) = fn; diff --git a/include/linux/sections.h b/include/linux/sections.h new file mode 100644 index 000000000000..6771c727bcd1 --- /dev/null +++ b/include/linux/sections.h @@ -0,0 +1,87 @@ +#ifndef _LINUX_SECTIONS_H +#define _LINUX_SECTIONS_H +/* + * Linux de-facto sections + * + * Copyright (C) 2016 Luis R. Rodriguez + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of copyleft-next (version 0.3.1 or later) as published + * at http://copyleft-next.org/. + */ + +#include +#include + +#ifndef __ASSEMBLY__ + +/** + * DOC: Introduction + * + * Linux defines a set of common helpers which can be used to against its use + * of standard or custom Linux sections, this section is dedicated to these + * helpers. + */ + +/** + * LINUX_SECTION_ALIGNMENT - get section alignment + * + * @name: section name + * + * Gives you the alignment for the section. + */ +#define LINUX_SECTION_ALIGNMENT(name) __alignof__(*VMLINUX_SYMBOL(name)) + +/** + * LINUX_SECTION_START - get address of start of section + * + * @name: section name + * + * This gives you the start address of the section. + * This should give you the address of the first entry. + * + */ +#define LINUX_SECTION_START(name) VMLINUX_SYMBOL(name) + +/** + * LINUX_SECTION_END - get address of end of the section + * + * @name: section name + * + * This gives you the end address of the section. + * This should give you the address of the end of the + * section. This will match the start address if the + * section is empty. + */ +#define LINUX_SECTION_END(name) VMLINUX_SYMBOL(name##__end) + +/** + * DECLARE_LINUX_SECTION - Declares a custom Linux section + * + * @type: type of custom Linux section + * @name: custom section name + * + * Declares a read-write custom Linux section + */ +#define DECLARE_LINUX_SECTION(type, name) \ + extern type VMLINUX_SYMBOL(name)[], \ + VMLINUX_SYMBOL(name##__end)[] + +/** + * DECLARE_LINUX_SECTION_RO - Declares a read-only custom Linux section + * + * @type: type of custom Linux section + * @name: custom section name + * + * Declares a read-only custom Linux section + */ +#define DECLARE_LINUX_SECTION_RO(type, name) \ + extern const type VMLINUX_SYMBOL(name)[], \ + VMLINUX_SYMBOL(name##__end)[] + +#define __SECTION_CORE(section, core, name, level) \ + #section ".." #core "." #name "." #level + +#endif /* __ASSEMBLY__ */ + +#endif /* _LINUX_SECTIONS_H */ -- 2.11.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Date: Sun, 15 Jan 2017 21:10:44 +0000 Subject: [PATCH v7 01/14] generic-sections: add section core helpers Message-Id: <20170115211057.17167-2-mcgrof@kernel.org> List-Id: References: <20170109145833.11502-1-mcgrof@kernel.org> <20170115211057.17167-1-mcgrof@kernel.org> In-Reply-To: <20170115211057.17167-1-mcgrof@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="windows-1254" Content-Transfer-Encoding: base64 To: bp@alien8.de, bp@suse.de, hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel TGludXggbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBjdXN0b20gRUxGIGhlYWRlciBzZWN0aW9ucywK ZG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgYXJlIHdlbGwgc2NhdHRlcmVkLiBVbmlmeSB0aGlzCmRv Y3VtZW50YXRpb24gaW4gYSBjZW50cmFsIHBsYWNlIGFuZCBwcm92aWRlIGhlbHBlcnMgdG8KYnVp bGQgY3VzdG9tIExpbnV4IHNlY3Rpb25zLgoKVGhpcyBhbHNvIGdlbmVyYWxpemVzIHNlY3Rpb25z IGNvZGUgdG8gZW5hYmxlIGF2b2lkaW5nCm1vZGlmeWluZyB0aGUgbGlua2VyIHNjcmlwdHMgd2hl biB3ZSB3YW50IHRvIGFkZCBuZXcKY3VzdG9tIExpbnV4IHNlY3Rpb25zLiBJbiBvcmRlciB0byBt YWtlIHRoaXMgZ2VuZXJhbGx5CnVzZWZ1bCB3ZSBuZWVkIHRvIGVuc3VyZSBhbGwgYXJjaGl0ZWN0 dXJlcyBjYW4gbWFrZSB1c2Ugb2YKY29yZSBzZWN0aW9uIGhlbHBlcnMgYnV0IHRoYXQgdGhleSBj YW4gYWxzbyBvdmVycmlkZSBzaG91bGQKdGhpcyBiZSBuZWVkZWQuIEluc3RlYWQgb2YgcmVseWlu ZyBvbiBzZWN0aW9uLmggdGhpcyBhZGRzCmEgc2VjdGlvbnMtY29yZS5oIHNpbmNlIHRoaXMgd2ls bCBiZSB0YXJnZXRlZCB0byBiZSBzYWZlCnRvIGJlIHVzZWQgb24gYXNtIGNvZGUsIGxpbmtlciBz Y3JpcHRzIGFuZCBDIGNvZGUuCgp2NzogcmFuIGlzcGVsbCB0byBmaXggc3BlbGxpbmcgYXMgcmVx dWVzdGVkIGJ5IEJvcmlzCgp2NToKCm8gSHVnZSBkb2N1bWVudGF0aW9uIHJldmFtcCBiYXNlZCBv biBhIGNhcmVmdWwgcmV2aWV3IG9mIHRoZSBFTEYKICBzcGVjaWZpY2F0aW9ucy4gSW5jbHVkZXMg ZG9jdW1lbnRhdGlvbiBub3cgYWxzbyBhYm91dCB1c2FnZSBvZgogIHR3byBkb3RzICguLikgd2hl biBwcmVmaXhpbmcgRUxGIHByb2dyYW0gc3BlY2lmaWMgc2VjdGlvbnMuCgpvIFJlcGxhY2UgbWFj cm9zIGZvciBzZWN0aW9ucyBuYW1lcyBpbiBmYXZvciBvZiBqdXN0IHVzaW5nCiAgdGhlIHNlY3Rp b24gbmFtZXMgZXhwbGljaXRseSBpbiB0aGUgbGlua2VyIHNjcmlwdC4gVGhpcyBpcwogIHBlcmhh cHMgbW9yZSB3b3JrIHRvIGdyZXAgYnV0IHRoaXMgaXMgd2hhdCBmb2xrcyBzZWVtIHRvCiAgY3Vy cmVudGx5IHByZWZlci4KCm8gRml4IC50ZXh0IGFuZCAucm9kYXRhIGRvY3VtZW50YXRpb24gdG8g ZXhwbGFpbiBtZW1vcnkgcHJvdGVjdGlvbgogIHN0cmF0ZWdpZXMgd2hpY2ggYXJjaGl0ZWN0dXJl cyBjYW4gZW1icmFjZSB1cG9uIGluaXRpYWxpemF0aW9uCiAgKGRvY3VtZW50cyBDT05GSUdfREVC VUdfUk9EQVRBIGFuZCBtYXJrX3JvZGF0YV9ybygpKQoKbyBTa2lwIHRoZSAnTGludXggc2VjdGlv biBvcmRlcmluZycgZG9jdW1lbnRhdGlvbiBzZWN0aW9uLCB3ZSdsbCBpbnN0ZWFkCiAgYWRkIHRo aXMgb24gc3Vic2VxdWVudCBwYXRjaCB3aGljaCB3aWxsIGV4cGFuZCBvbiBpdCBjb25zaWRlcmFi bHkKCm8gRHJvcHBlZCB0cmVlIG9uIE1BSU5UQUlORVJTIC0tIGFzIHBlciBkaXNjdXNzaW9ucyB3 aXRoIEFybmQsIGhwYSBhbmQKICBKb3NoLCBpdHMgZWFzaWVyIHRvIGp1c3QgbGV0IGNoYW5nZXMg Zm9yIHNlY3Rpb25zIGdvIGluIHRocm91Z2ggdGhlCiAgcmVzcGVjdGl2ZSB0cmVlIHRoYXQgbmVl ZHMgdGhlIGNoYW5nZXMuCgpvIEZpeCB0eXBvcyBvbiBkb2N1bWVudGF0aW9uCgpvIERyb3BwZWQg U0VDVElPTl9BTEwoKSwgX19TRUNUSU9OX0NPUkUoKSwgU0VDVElPTl9DT1JFX0FMTCgpIG1hY3Jv cwogIHNpbmNlIHdlIGFyZSBmYXZvcmluZyB1c2luZyBleHBsaWNpdCBzZWN0aW9uIG5hbWVzLiBU aGVzZSBhcmUKICB1c2VsZXNzIGlmIHdlIGFyZSBiZWluZyBleHBsaWNpdC4KCm8gRHJvcCBMSU5V WF9TRUNUSU9OX1NJWkUoKSwgTElOVVhfU0VDVElPTl9FTVBUWSgpIGluIGZhdm9yIG9mIGhhdmlu ZwogIHNlY3Rpb24gcmFuZ2VzIGFuZCBsaW5rZXIgdGFibGVzIGRlZmluZSB0aGVpciBvd24sIHRv IGF2b2lkIGNvbmZ1c2lvbgogIGFuZCBtYWtlIGNvZGUgbW9yZSByZWFkYWJsZS4KCm8gQWRkIF9f ZGVmaW5lX2luaXRjYWxsKCkgZG9jdW1lbnRhdGlvbiBhbmQgYSBzbWFsbCBzZWN0aW9uIGRlc2Ny aWJpbmcKICBvdXIgY3VycmVudCBpbml0Y2FsbCBsZXZlbHMuIFRoaXMgc2hvdWxkIGhlbHAgYWxz byBjbGFyaWZ5IHdoYXQgd2FzCiAgbWVhbnQgYWJvdXQga2VlcGluZyBiYWNrd2FyZCBjb21wYXRp YmlsaXR5LgoKdjQ6CgpvIFBvcnQgdG8gc2hpbnkgbmV3IHNwaGlueCBkb2N1bWVudGF0aW9uIGZv cm1hdAoKbyBmaXggYSB1bmljb3JlMzIgYnVpbGQsIHR1cm5zIG91dCB0aGlzIGFjdHVhbGx5IGZp eGVzIHVuaWNvcmUzMgogIGRlZmNvbmZpZyBidWlsZHMgd2hpY2ggd2VyZSBmYWlsaW5nIGZvciBh IGxvbmcgd2hpbGUuIHVuaWNvcmUzMgogIGRvZXMgbm90IHNlZW0gdG8gZ3JvayB3ZWxsIHRoZSB0 eXBlIHBhc3NlZCBvbiBhIHNlY3Rpb24gZGVjbGFyYXRpb24sCiAgdGhpcyBpZ25vcmVzIGl0LgoK byBVc2UgVk1MSU5VWF9TWU1CT0woKSBpbiBtb3JlIHVzZXIgc3ltYm9scyAoZXh0ZXJuIEMgY29k ZSksIG5vdCBkb2luZwogIHRoaXMgd2FzIGNhdXNpbmcgZmluYWwgbGlua2VyIGlzc3VlcyB3aXRo IGJsYWNrZmluIC0tIHRoaXMgaXMKICBhIENPTkZJR19IQVZFX1VOREVSU0NPUkVfU1lNQk9MX1BS RUZJWD15IGFyY2hpdGVjdHVyZS4gVGhlIG90aGVyIG9uZQogIGJlaW5nIG1ldGF0YWcuIG1ldGF0 YWcgaXMgbm90IHN1cHBvcnRlZCBvbiAwLWRheSBzbyBJIGNhbm5vdCBjb25maXJtCiAgY29tcGls YXRpb24gdGhlcmUuCgpvIEFkZGVkIFNFQ1RJT05fQ09SRSgpIGZvciBDIGNvZGUsIHVzZWQgbGF0 ZXIgYnkgX19MSU5VWF9SQU5HRSgpCgpvIFNpbmNlIFNFQ1RJT05fQ09SRSgpIGlzIGRlZmluZWQg Zm9yIGxpbmtlciBzY3JpcHQgYW5kIEMgY29kZSwgc2hhcmUKICB0aGUgc2FtZSBoZWxwZXIgYW5k IGp1c3QgdXNlIGEgX19zdHJpbmdpZnkoKSBmb3IgdGhlIEMgY29kZSBhcyBpcyBkb25lCiAgZm9y IHRoZSBvdGhlciBDIGhlbHBlcnMuCgpvIG1vdmUgZ2VuZXJpYyBzZWN0aW9ucyB0byBhc20tZ2Vu ZXJpYy9zZWN0aW9uLWNvcmUuaCBpbnN0ZWFkLgogIFBvd2VyUEMgY29tcGlsYXRpb24gYmxvd3Mg dXAgaWYgYXNtL2p1bXBfbGFiZWxzLmggZ2V0cwogIHNlY3Rpb24uaCBpbmNsdWRlZCwgZml4aW5n IHRoaXMgaXMgbm90IGluIGFueSB3YXkgZWFzeS4KICBUaGUgbGlzdCBvZiBpc3N1ZXMgYXJlIGVu ZGxlc3MuIE1vdmluZyBuZXcgZGF0YSB0byBhIG5ldwogIHNpbXBsZSBmaWxlIHJlc29sdmVzIHRo aXMuCgpvIHNpbmNlIHRoaW5ncyBhcmUgbm93IGluIGFzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5o IHRoZQogIGd1YXJkIGNoYW5nZXMgb24gYXNtLWdlbmVyaWMvc2VjdGlvbnMuaCBhbmQgZWFjaCBh cmNoaXRlY3R1cmUKICBzZWN0aW9ucy5oIGFyZSBubyBsb25nZXIgbmVlZGVkCgpvIEdpdmUgZ2Vu ZXJpYyBzZWN0aW9ucyBzb21lIG1haW50YWluZXIgbG92ZSwgdGhhdCBjaGFuZ2UgaXMKICBBY2tl ZC1ieSBBcm5kIEJlcmdtYW5uLCBKb3NoIGFuZCBocGEuCgpvIEEgZmV3IGNoZWNrcGF0Y2gucGwg c3R5bGUgZml4ZXMKCm8gQXMgc3VnZ2VzdGVkIGJ5IEphbWVzIEhvZ2FuIHVzZSBnZW5lcmljLXkg dG8gY29weSBnZW5lcmljCiAgaGVhZGVyIGZpbGVzIG9uIGFyY2hpdGVjdHVyZXMgdGhhdCBkbyBu b3QgaGF2ZSBhIHNlY3Rpb25zLmgKICBpbnN0ZWFkIG9mIHdyaXRpbmcgYSBzaW1wbGUgZmlsZSBv bmx5IHRvIGluY2x1ZGUgdGhlIGdlbmVyaWMgb25lLgoKdjM6CgpvIGFkZCBtaXNzaW5nIHNlY3Rp b25zLmggZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBkaWQgbm90CiAgaGF2ZSBpdAoKbyBtb3ZlIGdl bmVyaWMgc2VjdGlvbnMgdG8gYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAoKbyBhZGQgZ2VuZXJpYyBh c20gaGVscGVycyBzZWN0aW9uX3R5cGUoKSwgc2VjdGlvbl90eXBlX2FzbXR5cGUoKSwKICBwdXNo X3NlY3Rpb25fdHlwZSgpIC0tIHRoZXNlIGhlbHBlcnMgZW5hYmxlIGVhc3kgdXNlIGZvcgogIGZv ciBsYXRlciBkZWNsYXJpbmcgYW5kIHVzaW5nIG9mIGN1c3RvbSBMaW51eCBzZWN0aW9ucyB1c2lu ZwogIG1vcmUgc3RhbmRhcmQgQVBJcyBpbiBib3RoIEMgY29kZSwgYXNtIGNvZGUgKEMgYXNtIGNh bGxzLCBvcgogIGFzbSBmaWxlcyksIGVuYWJsaW5nIGZ1dHVyZSBzdGFuZGFyZGl6ZWQgc2VjdGlv biB0eXBlcyB0bwogIGJlIG1vcmUgaW1tZWRpYXRlbHkgYWNjZXNzaWJsZSB0byBhc20gY29kZSwg bm90IGp1c3QgQyBjb2RlLgogIE5vdGUgZm9yIEFTTV9DTURfU0VQIHdlIHVzZSBieSBkZWZhdWx0 ICJcbiIsIGFyY2hpdGVjdHVyZXMgbmVlZGVkCiAgdG8gb3ZlcnJpZGUgY2FuIGRvIHNvIG9uIHRo ZWlyIG93biBzZWN0aW9ucy5oIHByaW9yIHRvIGluY2x1c2lvbgogIG9mIGFzbS1nZW5lcmljL3Nl Y3Rpb25zLmgKClNpZ25lZC1vZmYtYnk6IEx1aXMgUi4gUm9kcmlndWV6IDxtY2dyb2ZAa2VybmVs Lm9yZz4KLS0tCiBEb2N1bWVudGF0aW9uL2luZGV4LnJzdCAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2JhY2tncm91bmQucnN0ICAgICB8IDEwNSArKysr KysrKysrCiBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkgICAgICAgICAgICB8ICAgNCAr CiBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2luZGV4LnJzdCAgICAgICAgICB8ICAxNyArKwogRG9j dW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0ICAgfCAxNDggKysrKysrKysrKysr KysKIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsrCiBh cmNoL2FscGhhL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2Fy Yy9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2FybS9pbmNs dWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2F2cjMyL2luY2x1ZGUvYXNtL0ti dWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL0tidWls ZCAgICAgICAgICB8ICAgMSArCiBhcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBhcmNoL2NyaXMvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8 ICAgMSArCiBhcmNoL2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICB8ICAgMSAr CiBhcmNoL2g4MzAwL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNo L2hleGFnb24vaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICB8ICAgMSArCiBhcmNoL2lhNjQv aW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL20zMnIvaW5jbHVk ZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL202OGsvaW5jbHVkZS9hc20v S2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL21ldGFnL2luY2x1ZGUvYXNtL0tidWls ZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vS2J1aWxk ICAgICAgICB8ICAgMSArCiBhcmNoL21pcHMvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAg ICB8ICAgMSArCiBhcmNoL21uMTAzMDAvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICB8ICAg MSArCiBhcmNoL25pb3MyL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBh cmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICB8ICAgMSArCiBhcmNoL3Bh cmlzYy9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3Bvd2VycGMv aW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICB8ICAgMSArCiBhcmNoL3MzOTAvaW5jbHVkZS9h c20vS2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3Njb3JlL2luY2x1ZGUvYXNtL0ti dWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZCAgICAg ICAgICAgICAgICB8ICAgMSArCiBhcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAg ICAgICB8ICAgMSArCiBhcmNoL3RpbGUvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8 ICAgMSArCiBhcmNoL3VtL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgICB8ICAgMSAr CiBhcmNoL3VuaWNvcmUzMi9pbmNsdWRlL2FzbS9zZWN0aW9uLWNvcmUuaCB8ICAxOSArKwogYXJj aC94ODYvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC94dGVu c2EvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgfCAgIDEgKwogaW5jbHVkZS9hc20tZ2Vu ZXJpYy9zZWN0aW9uLWNvcmUuaCAgICAgICAgfCAzMDcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmggICAgICAgICAgICB8ICAgMiAr CiBpbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmggICAgICAgICB8ICAgMSArCiBpbmNs dWRlL2xpbnV4L2luaXQuaCAgICAgICAgICAgICAgICAgICAgICB8ICA4OSArKysrKysrLS0KIGlu Y2x1ZGUvbGludXgvc2VjdGlvbnMuaCAgICAgICAgICAgICAgICAgIHwgIDg3ICsrKysrKysrKwog NDIgZmlsZXMgY2hhbmdlZCwgODA5IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vc2VjdGlvbnMvYmFja2dyb3VuZC5yc3QKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2luZGV4LnJzdAogY3JlYXRlIG1vZGUg MTAwNjQ0IERvY3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGFyY2gvdW5pY29yZTMyL2luY2x1ZGUvYXNtL3NlY3Rpb24tY29yZS5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvc2VjdGlvbnMuaAoKZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9pbmRleC5yc3QKaW5kZXggY2I1ZDc3 Njk5YzYwLi43MWUwMzA1YzAzNmQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaW5kZXgucnN0 CisrKyBiL0RvY3VtZW50YXRpb24vaW5kZXgucnN0CkBAIC01Nyw2ICs1Nyw3IEBAIG5lZWRlZCku CiAgICBtZWRpYS9pbmRleAogICAgZ3B1L2luZGV4CiAgICBzZWN1cml0eS9pbmRleAorICAgc2Vj dGlvbnMvaW5kZXgKICAgIHNvdW5kL2luZGV4CiAgICBjcnlwdG8vaW5kZXgKIApkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9iYWNrZ3JvdW5kLnJzdCBiL0RvY3VtZW50YXRpb24v c2VjdGlvbnMvYmFja2dyb3VuZC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi40ZjA0YzA2ODJhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Nl Y3Rpb25zL2JhY2tncm91bmQucnN0CkBAIC0wLDAgKzEsMTA1IEBACis9PT09PT09PT09PQorRUxG IHNlY3Rpb24gYmFja2dyb3VuZAorPT09PT09PT09PT0KKworQWJvdXQKKz09KworVGhlIHB1cnBv c2Ugb2YgdGhpcyBjaGFwdGVyIGlzIHRvIGhlbHAgdGhvc2Ugbm90IGZhbWlsaWFyIHdpdGggRUxG IHRvIGJydXNoIHVwCit0aGUgbGF0ZXN0IEVMRiBzcGVjaWZpY2F0aW9ucyBpbiBvcmRlciB0byBo ZWxwIHVuZGVyc3RhbmQgaG93IExpbnV4IHVzZXMgYW5kCitkZWZpbmVzIGl0cyBvd24gRUxGIHNl Y3Rpb25zLgorCitTdGFuZGFyZGl6ZWQgRUxGCis9PT09PT09PQorCitUaGUgZmlyc3QgcHVibGlj YXRpb24gZG9jdW1lbnRpbmcgRUxGIHdhcyBVTklYIFN5c3RlbSBMYWJvcmF0b3JpZXMnIChVU0wp CisqU3lzdGVtIFYgUmVsZWFzZSA0IEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UqIChgU1JW NCBBQklgXykgc3BlY2lmaWNhdGlvbi4KK09yaWdpbmFsbHkgRUxGIHdhcyBvbmx5IGEgc21hbGwg cGFydCBvZiB0aGUgU1JWNCBBQkksIHdpdGggdGltZSBob3dldmVyIG5ldworc3BlY2lmaWNhdGlv bnMgb25seSBwdXQgZm9jdXMgb24gRUxGLCBzdWNoIHdhcyB0aGUgY2FzZSBvZiB0aGUgKlRJUyBQ b3J0YWJsZQorRm9ybWF0cyBTcGVjaWZpY2F0aW9uIHZlcnNpb24gMS4yKiAoYFRJUyAxLjJgXyku IEFzIG9mIFRJUyAxLjIsIEVMRiB3YXMKK3N1cHBsZW1lbnRlZCB3aXRoIHByb2Nlc3NvciBzcGVj aWZpYyBFTEYgYWRkZW5kdW1zLCBhdmFpbGFibGUgb24gdGhlICpMaW51eAorRm91bmRhdGlvbiBy ZWZlcmVuY2VkIHNwZWNpZmljYXRpb24gcGFnZSogKGBMRiByZWYgcGFnZWBfKS4gVGhlIGxhdGVz dCBFTEYKK3NwZWNpZmljYXRpb24gaXMgdGhlICpTeXN0ZW0gViBBcHBsaWNhdGlvbiBCaW5hcnkg SW50ZXJmYWNlIC0gRFJBRlQgLSAyNCBBcHJpbAorMjAwMSogKGBnYWJpNGBfKS4KKworLi4gX1NS VjQgQUJJOiBodHRwOi8vd3d3LnNjby5jb20vZGV2ZWxvcGVycy9kZXZzcGVjcy9nYWJpNDEucGRm CisuLiBfVElTIDEuMjogaHR0cHM6Ly9yZWZzcGVjcy5saW51eGJhc2Uub3JnL2VsZi9lbGYucGRm CisuLiBfTEYgcmVmIHBhZ2U6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy8KKy4uIF9n YWJpNDogaHR0cHM6Ly9yZWZzcGVjcy5saW51eGJhc2Uub3JnL2VsZi9nYWJpNCsvY29udGVudHMu aHRtbAorCitFTEYgdmlld3Mgb24gTGludXgKKz09PT09PT09PQorCitUaGVyZSBhcmUgdHdvIHZp ZXdzIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBpbnNwZWN0aW5nIGRhdGEgaW4gYW4gRUxGIGZpbGUs IGEKK0xpbmtpbmcgdmlldywgYW5kIGFuIEV4ZWN1dGlvbiB2aWV3LiBBIFNlY3Rpb24gSGVhZGVy IFRhYmxlIGVuYWJsZXMgb25lIHRvCitkZXNjcmliZSBhbiBvYmplY3QgdXNpbmcgdGhlIExpbmtp bmcgdmlldyB3aGlsZSBhIFByb2dyYW0gSGVhZGVyIFRhYmxlIGVuYWJsZXMKK29uZSB0byBkZXNj cmliZSBhbiBvYmplY3QgdXNpbmcgdGhlIEV4ZWN1dGlvbiB2aWV3LiBUaGUgdmlld3MgYXJlIG5v dCBtdXR1YWxseQorZXhjbHVzaXZlLiBGb3IgaW5zdGFuY2UsIHZtbGludXggY2FuIGJlIHZpZXdl ZCB1bmRlciBib3RoIHZpZXdzLCBgYHJlYWRlbGYgLVMKK3ZtbGludXhgYCBmb3IgdGhlIExpbmtp bmcgdmlldywgYW5kIGBgcmVhZGVsZiAtbCB2bWxpbnV4YGAgZm9yIHRoZSBFeGVjdXRpb24KK3Zp ZXcuICBJbiBMaW51eCBvbmx5IHRoZSB2bWxpbnV4IGZpbGUgd2lsbCBoYXZlIGFuIEV4ZWN1dGlv biB2aWV3LCBldmVuIG1vZHVsZXMKK2xhY2sgYW4gRXhlY3V0aW9uIHZpZXcgZ2l2ZW4gdGhhdCB2 bWxpbnV4IGlzIHRoZSBvbmx5IGZpbGUgdGhhdCBkZXNjcmliZXMgaG93Cit0aGUgdGhlIGtlcm5l bCBydW5zIGZyb20gdGhlIHN0YXJ0LiAgQWxsIG90aGVyIExpbnV4IGtlcm5lbCBvYmplY3QgZmls ZXMgaGF2ZQorYW4gYXZhaWxhYmxlIExpbmtpbmcgdmlldy4KKworVW5kZXIgdGhlIExpbmtpbmcg dmlldywgdGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGRlc2NyaWJlcyBhbGwgYXZhaWxhYmxlCitz ZWN0aW9ucy4gVGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGlzIGFuIGFycmF5IG9mIEVMRiBzZWN0 aW9uIGhlYWRlciBkYXRhCitzdHJ1Y3R1cmVzLiBJZiBvbiBhIDMyLWJpdCBzeXN0ZW0gdGhpcyBp cyBgYHN0cnVjdCBlbGYzMl9zaGRgYCwgaWYgb24gYSA2NC1iaXQKK3RoaXMgaXMgYGBzdHJ1Y3Qg ZWxmNjRfc2hkcmBgLiBTZWN0aW9ucyBhcmUgb25seSB2aXNpYmxlIG9uIG9iamVjdCBmaWxlcyB0 aGF0CitoYXZlIGEgTGlua2luZyB2aWV3LCBzaW5jZSBhbGwgTGludXgga2VybmVsIGZpbGVzIGhh dmUgTGlua2luZyB2aWV3LCBhbGwga2VybmVsCitvYmplY3RzIGhhdmUgRUxGIHNlY3Rpb25zLgor CitMaW1pdGF0aW9ucyBvbiBFTEYgc2VjdGlvbnMKKz09PT09PT09PT09PT0rCitXZSBwcm92aWRl IGEgc3VtbWFyeSBvbiB0aGUgbGltaXRhdGlvbnMgb2YgRUxGIHNlY3Rpb25zLiBSZWZlciB0byB0 aGUgcHVibGljCitFTEYgc3BlY2lmaWNhdGlvbnMgZm9yIGRldGFpbHMuIE5vdGUgdGhhdCA2NC1i aXQgbGltaXRhdGlvbnMgbWF5IGRlcGVuZAorb24gcHJvY2Vzc29yIHNwZWNpZmljIHNlY3Rpb24g YXR0cmlidXRlcyB0byBiZSB1c2VkLCByZWZlciB0byB5b3VyIHByb2Nlc3Nvcgorc3BlY2lmaWNh dGlvbiBpZiB1bnN1cmUuCisKK0l0cyB3b3J0aCBlbGFib3JhdGluZyBvbiB0aGUgbGltaXRhdGlv bnMgb24gdGhlIG5hbWUgb2YgYW4gRUxGIHNlY3Rpb246CitFTEYgc2VjdGlvbiBuYW1lcyBhcmUg c3RvcmVkIGFzIHN0cmluZ3MgYXMgcGVyIHRoZSBFTEYgc3BlY2lmaWNhdGlvbiwgYW5kCithcyBj YW4gYmUgZXhwZWN0ZWQsIHRoZXNlIGRvbid0IGhhdmUgZXhwbGljaXQgbGltaXRhdGlvbnMuIFRo ZSBpbXBsaWNpdAorbGltaXRhdGlvbiB0aGVuIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgYW4gRUxG IG9iamVjdCBmaWxlIGFuZCBFTEYgc2VjdGlvbi4KKworSWYgdXNpbmcgcmVhbGx5IGxhcmdlIGtl cm5lbHMgb3Igb2JqZWN0cyB3aXRoIGxhcmdlIGFtb3VudHMgb2Ygc2VjdGlvbnMgb25lCit3b3Vs ZCBzdGlsbCBuZWVkIHRvIGJlIHN1cmUgdGhhdCBFTEYgbG9hZGVyIGluIGNoYXJnZSBvZiBsb2Fk aW5nIHRoZSBMaW51eAora2VybmVsIGlzIHByb3Blcmx5IHVwZGF0ZWQgdG8gaGFuZGxlIGNvcGlu ZyB3aXRoIHRoZSBsYXRlc3QgRUxGIGV4dGVuc2lvbnMuCisKKyAgIC4uIGZsYXQtdGFibGU6OiBM aW1pdGF0aW9ucyBvbiBFTEYgU2VjdGlvbnMKKworICAgICAgKiAtIFNlY3Rpb24gYXR0cmlidXRl CisgICAgICAgIC0gMzItYml0CisgICAgICAgIC0gNjQtYml0CisKKyAgICAgICogLSBFTEYgc2Vj dGlvbiBuYW1lCisgICAgICAgIC0gU2l6ZSBvZiBhbiBFTEYgc2VjdGlvbgorICAgICAgICAtIFNp emUgb2YgYW4gRUxGIHNlY3Rpb24KKworICAgICAgKiAtIFNpemUgb2YgYW4gRUxGIHNlY3Rpb24K KyAgICAgICAgLSA0IEdpQgorICAgICAgICAtIDE2IEVpQgorCisgICAgICAqIC0gTWF4IG51bWJl ciBvZiBzZWN0aW9ucyBpbiBhbiBvYmplY3QgZmlsZQorICAgICAgICAtIDQgR2lFbnRyaWVzICg0 Mjk0OTY3Mjk2KQorICAgICAgICAtIDE2IEVpRW50cmllcyAoMTg0NDY3NDQwNzM3MDk1NTE2MTYp CisKK1Byb2dyYW0gc3BlY2lmaWMgRUxGIHNlY3Rpb25zCis9PT09PT09PT09PT09PSsKK1RoZSBF TEYgc3BlY2lmaWNhdGlvbiBhbGxvd3MgZm9yIGEgc2VjdGlvbiB0eXBlIHRvIGJlIHNwZWNpZmll ZCBhcworKlByb2dyYW0gc3BlY2lmaWMgc2VjdGlvbiosIGRlZmluZWQgYXMgYGBTSFRfUFJPR0JJ VFNgYC4gVGhpcyBzZWN0aW9ucyB0eXBlCitlbmFibGVzIHByb2dyYW1zIHRvIGN1c3RvbWl6ZSBz ZWN0aW9ucyBmb3IgdGhlaXIgb3duIHVzZS4gSW4gYXNzZW1ibHkgdGhpcworc3BlY2lmaWVkIGBg QHByb2diaXRzYGAgb24gbW9zdCBhcmNoaXRlY3R1cmVzLCBvbiBBUk0gdGhpcyBpcyBgYCVwcm9n Yml0c2BgLgorCitgYFNIVF9QUk9HQklUU2BgIGlzIHVzZWQgYnkgTGludXggZm9yIGRlZmluaW5n IGFuZCB1c2luZyBMaW51eCBFTEYgc2VjdGlvbnMuCisKK1NwZWNpYWwgRUxGIFNlY3Rpb25zCis9 PT09PT09PT09CisKK1RoZSBFTEYgc3BlY2lmaWNhdGlvbiBkZWZpbmVzICpTcGVjaWFsIEVMRiBT ZWN0aW9ucyogb24gY2hhcHRlciA0IChgZ2FiaTQKK2NoNGBfKS4gVGhlc2UgYXJlIGRlZmluZWQg YXMgc2VjdGlvbnMgd2hpY2ggaG9sZCBwcm9ncmFtIGFuZCBjb250cm9sCitpbmZvcm1hdGlvbi4g T2YgdGhlc2Ugc2VjdGlvbnMsIGEgZmV3IGhhdmUgdGhlIHNlY3Rpb24gdHlwZSBhcworYGBTSFRf UFJPR0JJVFNgYC4gVGhpcyBlbmFibGVzIExpbnV4IHRvICpmdXJ0aGVyIGN1c3RvbWl6ZSogdXNl IG9mIHRoZSBzZWN0aW9uCitiZXlvbmQgd2hhdCB0aGUgRUxGIHNwZWNpZmljYXRpb24gc3VnZ2Vz dHMuCisKKy4uIF9nYWJpNCBjaDQ6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy9lbGYv Z2FiaTQrL2NoNC5zaGVhZGVyLmh0bWwjc3BlY2lhbF9zZWN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5IGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25m LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmFhMWM1NzU5NWUx Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5CkBAIC0w LDAgKzEsNCBAQAorIyAtKi0gY29kaW5nOiB1dGYtODsgbW9kZTogcHl0aG9uIC0qLQorCitwcm9q ZWN0ID0gJ0xpbnV4IEtlcm5lbCBFTEYgc2VjdGlvbnMnCitodG1sX3NlYXJjaF9sYW5ndWFnZSA9 ICdlbicKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdGlvbnMvaW5kZXgucnN0IGIvRG9j dW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5mMzc1MTFlZjA1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0 aW9uL3NlY3Rpb25zL2luZGV4LnJzdApAQCAtMCwwICsxLDE3IEBACis9PT09PT09PT09PT0rTGlu dXggS2VybmVsIEVMRiBzZWN0aW9ucworPT09PT09PT09PT09KworVGhpcyBib29rIGRvY3VtZW50 cyB0aGUgZGlmZmVyZW50IEVMRiBzZWN0aW9ucyB1c2VkIG9uIHRoZSBMaW51eCBrZXJuZWwuCitX ZSBzdGFydCBvZmYgYnkgcHJvdmlkaW5nIHJlZmVyZW5jZXMgdG8gaG93IEVMRiB3YXMgc3RhbmRh cmRpemVkLCByZWZlcmVuY2VzCit0byB0aGUgc3RhbmRhcmRzIG9uIEVMRiBzZWN0aW9ucywgcmV2 aWV3IGxpbWl0YXRpb25zIG9mIEVMRiBzZWN0aW9ucywgYW5kCitmaW5hbGx5IGhvdyBMaW51eCB1 c2VzIEVMRiBzZWN0aW9ucyBpbiB0aGUgTGludXgga2VybmVsLiBDZXJ0YWluIGltcG9ydGFudAor TGludXggRUxGIHNlY3Rpb25zIGFyZSBkb2N1bWVudGVkIGNhcmVmdWxseTogd2UgZGVzY3JpYmUg dGhlIGdvYWwgb2YgdGhlCitFTEYgc2VjdGlvbiwgYW5kIGFkZHJlc3MgY29uY3VycmVuY3kgY29u c2lkZXJhdGlvbnMgd2hlbiBhcHBsaWNhYmxlLiBBIGZldworY29tbW9uIGEgc2V0IG9mIExpbnV4 IGhlbHBlcnMgZm9yIEVMRiBzZWN0aW9ucyBhcmUgYWxzbyBkb2N1bWVudGVkLgorCisuLiB0b2N0 cmVlOjoKKyAgIDptYXhkZXB0aDogNAorCisgICBiYWNrZ3JvdW5kCisgICBzZWN0aW9uLWNvcmUK ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdCBiL0Rv Y3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLmFjNTgxNWEwZDliMwotLS0gL2Rldi9udWxsCisrKyBiL0Rv Y3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdApAQCAtMCwwICsxLDE0OCBAQAor PT09PT09PT09PT09PT09PT0rTGludXggRUxGIHByb2dyYW0gc3BlY2lmaWMgc2VjdGlvbnMKKz09 PT09PT09PT09PT09PT09KworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2Vj dGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IEVMRiBwcm9ncmFtIHNwZWNpZmljIHNlY3Rpb25z CisKK0xpbnV4IGxpbmtlciBzY3JpcHQKKz09PT09PT09PSsKKy4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiBMaW51eCBsaW5rZXIgc2Ny aXB0CisKK01lbW9yeSBwcm90ZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVsLWRv Yzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IE1lbW9yeSBw cm90ZWN0aW9uCisKK21hcmtfcm9kYXRhX3JvCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLi4g a2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvaW5pdC5oCisgICA6ZnVuY3Rpb25zOiBtYXJrX3Jv ZGF0YV9ybworCisucm9kYXRhCistLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20t Z2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLnJvZGF0YQorCisudGV4dAorLS0tLS0K Ky4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6 ZG9jOiAudGV4dAorCisuZGF0YQorLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLmRhdGEKKworTGludXggLmlu aXRcKiBzZWN0aW9ucworPT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IGluaXQgc2VjdGlvbnMKKwor LmluaXQudGV4dAorLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVy aWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IC5pbml0LnRleHQKKworLmluaXQuZGF0YQorLS0t LS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3Jl LmgKKyAgIDpkb2M6IC5pbml0LmRhdGEKKworLmluaXQucm9kYXRhCistLS0tLS0tLS0tLS0KKy4u IGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9j OiAuaW5pdC5yb2RhdGEKKworSW5pdGNhbGwgbGV2ZWxzCistLS0tLS0tLS0tLS0tLS0KKy4uIGtl cm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L2luaXQuaAorICAgOmRvYzogSW5pdGNhbGwgbGV2ZWxz CisKKy5pbml0Y2FsbAorLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAuaW5pdGNhbGwKKworX19kZWZp bmVfaW5pdGNhbGwKKy0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9s aW51eC9pbml0LmgKKyAgIDpmdW5jdGlvbnM6IF9fZGVmaW5lX2luaXRjYWxsCisKK0xpbnV4IC5l eGl0XCogc2VjdGlvbnMKKz09PT09PT09PT09CisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2Fz bS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiBMaW51eCBleGl0IHNlY3Rpb25zCisK Ky5leGl0LnRleHQKKy0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5l cmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAuZXhpdC50ZXh0CisKKy5leGl0LmRhdGEKKy0t LS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29y ZS5oCisgICA6ZG9jOiAuZXhpdC5kYXRhCisKKy5leGl0Y2FsbC5leGl0CistLS0tLS0tLS0tLS0t LQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAg IDpkb2M6IC5leGl0Y2FsbC5leGl0CisKK0xpbnV4IC5yZWZcKiBzZWN0aW9ucworPT09PT09PT09 PSsKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisg ICA6ZG9jOiBMaW51eCByZWZlcmVuY2VzIHRvIGluaXQgc2VjdGlvbnMKKworLnJlZi50ZXh0Cist LS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29y ZS5oCisgICA6ZG9jOiAucmVmLnRleHQKKworLnJlZi5kYXRhCistLS0tLS0tLS0KKy4uIGtlcm5l bC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAucmVm LmRhdGEKKworLnJlZi5yb2RhdGEKKy0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLnJlZi5yb2RhdGEKKworR2Vu ZXJpYyBMaW51eCBrZXJuZWwgc2VjdGlvbiBoZWxwZXJzCis9PT09PT09PT09PT09PT09PT0KKwor SW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51 eC9zZWN0aW9ucy5oCisgICA6ZG9jOiBJbnRyb2R1Y3Rpb24KKworTElOVVhfU0VDVElPTl9BTElH Tk1FTlQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9s aW51eC9zZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBMSU5VWF9TRUNUSU9OX0FMSUdOTUVOVAor CitMSU5VWF9TRUNUSU9OX1NUQVJUCistLS0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9j OjogaW5jbHVkZS9saW51eC9zZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBMSU5VWF9TRUNUSU9O X1NUQVJUCisKK0xJTlVYX1NFQ1RJT05fRU5ECistLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVs LWRvYzo6IGluY2x1ZGUvbGludXgvc2VjdGlvbnMuaAorICAgOmZ1bmN0aW9uczogTElOVVhfU0VD VElPTl9FTkQKKworREVDTEFSRV9MSU5VWF9TRUNUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpmdW5jdGlvbnM6 IERFQ0xBUkVfTElOVVhfU0VDVElPTgorCitERUNMQVJFX0xJTlVYX1NFQ1RJT05fUk8KKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvc2VjdGlv bnMuaAorICAgOmZ1bmN0aW9uczogREVDTEFSRV9MSU5VWF9TRUNUSU9OX1JPCmRpZmYgLS1naXQg YS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGQyZGI3ZmVjZWYzMi4uNWU1ODBiMTI1 N2ZiIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtNTQzOCw2 ICs1NDM4LDE4IEBAIFM6CVN1cHBvcnRlZAogRjoJZHJpdmVycy9iYXNlL3Bvd2VyL2RvbWFpbiou YwogRjoJaW5jbHVkZS9saW51eC9wbV9kb21haW4uaAogCitHRU5FUklDIFNFQ1RJT05TCitNOgki THVpcyBSLiBSb2RyaWd1ZXoiIDxtY2dyb2ZAa2VybmVsLm9yZz4KK006CUpvc2ggUG9pbWJvZXVm IDxqcG9pbWJvZUByZWRoYXQuY29tPgorTToJIkguIFBldGVyIEFudmluIiA8aHBhQHp5dG9yLmNv bT4KK0w6CWxpbnV4LWFyY2hAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1j b3JlLmgKK0Y6CWluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAorRjoJaW5jbHVkZS9hc20t Z2VuZXJpYy92bWxpbnV4Lmxkcy5oCitGOglEb2N1bWVudGF0aW9uL3NlY3Rpb25zL3NlY3Rpb24t Y29yZS5yc3QKKwogR0VORVJJQyBVSU8gRFJJVkVSIEZPUiBQQ0kgREVWSUNFUwogTToJIk1pY2hh ZWwgUy4gVHNpcmtpbiIgPG1zdEByZWRoYXQuY29tPgogTDoJa3ZtQHZnZXIua2VybmVsLm9yZwpk aWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2FscGhhL2lu Y2x1ZGUvYXNtL0tidWlsZAppbmRleCBiZjg0NzVjZTg1ZWUuLjU0MjI4MjdmMTU4NSAxMDA2NDQK LS0tIGEvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hbHBoYS9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTEwLDMgKzEwLDQgQEAgZ2VuZXJpYy15ICs9IG1tLWFyY2gtaG9v a3MuaAogZ2VuZXJpYy15ICs9IHByZWVtcHQuaAogZ2VuZXJpYy15ICs9IHNlY3Rpb25zLmgKIGdl bmVyaWMteSArPSB0cmFjZV9jbG9jay5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlm ZiAtLWdpdCBhL2FyY2gvYXJjL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvYXJjL2luY2x1ZGUv YXNtL0tidWlsZAppbmRleCBjMzMyNjA0NjA2ZGQuLjdiMmNiM2RlYTVmYyAxMDA2NDQKLS0tIGEv YXJjaC9hcmMvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvYXJjL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtNTEsMyArNTEsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0g dmdhLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgK K2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVk ZS9hc20vS2J1aWxkIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IGVmYjIxNzU3 ZDQxZi4uOWI2OWEyMmE5YWUxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9LYnVp bGQKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vS2J1aWxkCkBAIC00MSwzICs0MSw0IEBAIGdl bmVyaWMteSArPSB1bmFsaWduZWQuaAogCiBnZW5lcmF0ZWQteSArPSBtYWNoLXR5cGVzLmgKIGdl bmVyYXRlZC15ICs9IHVuaXN0ZC1uci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9LYnVpbGQKaW5kZXggODM2NWE4NGMyNjQwLi4wMGFjZTVlODI2ZjEgMTAwNjQ0Ci0t LSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vS2J1aWxkCkBAIC00NSwzICs0NSw0IEBAIGdlbmVyaWMteSArPSB1bmFsaWduZWQuaAog Z2VuZXJpYy15ICs9IHVzZXIuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5lcmljLXkgKz0geG9y LmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9hdnIzMi9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2F2cjMyL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAy NDFiOWI5NzI5ZDguLmYyYzNiNjU2YTBlNyAxMDA2NDQKLS0tIGEvYXJjaC9hdnIzMi9pbmNsdWRl L2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hdnIzMi9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTIyLDMg KzIyLDQgQEAgZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB2Z2EuaAog Z2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJp Yy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2luY2x1ZGUv YXNtL0tidWlsZCBiL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDJmYjY3 YjU5ZDE4OC4uYmYyMDU0MWJjZjIxIDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL2luY2x1ZGUv YXNtL0tidWlsZAorKysgYi9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNDcs MyArNDcsNCBAQCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMteSArPSB1c2VyLmgK IGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVy aWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9jNngvaW5jbHVkZS9hc20v S2J1aWxkIGIvYXJjaC9jNngvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDY0NDY1ZTdlMjI0NS4u MzgxMjdjZTc0N2JlIDEwMDY0NAotLS0gYS9hcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQKKysr IGIvYXJjaC9jNngvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC02MiwzICs2Miw0IEBAIGdlbmVyaWMt eSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10 aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRp ZmYgLS1naXQgYS9hcmNoL2NyaXMvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9jcmlzL2luY2x1 ZGUvYXNtL0tidWlsZAppbmRleCAxNzc4ODA1ZjYzODAuLjM4NWNkODhhOWQ5ZSAxMDA2NDQKLS0t IGEvYXJjaC9jcmlzL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2NyaXMvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC00NSwzICs0NSw0IEBAIGdlbmVyaWMteSArPSB0eXBlcy5oCiBnZW5lcmlj LXkgKz0gdmdhLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0g eG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9mcnYv aW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDFm YTA4NGNmMWE0My4uNDZkN2M1OTlkOWI4IDEwMDY0NAotLS0gYS9hcmNoL2Zydi9pbmNsdWRlL2Fz bS9LYnVpbGQKKysrIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC04LDMgKzgsNCBA QCBnZW5lcmljLXkgKz0gbW0tYXJjaC1ob29rcy5oCiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBn ZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgK K2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9oODMwMC9pbmNs dWRlL2FzbS9LYnVpbGQgYi9hcmNoL2g4MzAwL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAzNzNj YjIzMzAxZTMuLjFlYzA0ZWMxYzgyYiAxMDA2NDQKLS0tIGEvYXJjaC9oODMwMC9pbmNsdWRlL2Fz bS9LYnVpbGQKKysrIGIvYXJjaC9oODMwMC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTc1LDMgKzc1 LDQgQEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25lZC5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdlbmVy aWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMteSAr PSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0ti dWlsZCBiL2FyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggZGI4ZGRhYmM2YmQy Li4zN2Q3YmZhZTc2MTkgMTAwNjQ0Ci0tLSBhL2FyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9LYnVp bGQKKysrIGIvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNjAsMyArNjAsNCBA QCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15 ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNl Y3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkIGIv YXJjaC9pYTY0L2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA1MDJhOTFkOGRiYmQuLjY3MmM2ZDVk YTE4YyAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNo L2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC05LDMgKzksNCBAQCBnZW5lcmljLXkgKz0gcHJl ZW1wdC5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9IHZ0aW1lLmgK IGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3Jl LmgKZGlmZiAtLWdpdCBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL20zMnIv aW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDZlNjlkMmM0MmVlZS4uOGNjZmI1ZWI5Njc4IDEwMDY0 NAotLS0gYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbTMyci9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTEyLDMgKzEyLDQgQEAgZ2VuZXJpYy15ICs9IHByZWVtcHQuaAog Z2VuZXJpYy15ICs9IHNlY3Rpb25zLmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5l cmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRp ZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9tNjhrL2luY2x1 ZGUvYXNtL0tidWlsZAppbmRleCAxZjJlNWQzMWNiMjQuLjEyNzdiNDViZjRmOSAxMDA2NDQKLS0t IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC0zNCwzICszNCw0IEBAIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBn ZW5lcmljLXkgKz0gdHlwZXMuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVy aWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9h cmNoL21ldGFnL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20vS2J1 aWxkCmluZGV4IDE2NzE1MGM3MDFkMS4uYjEwMTEzNzVjZDdhIDEwMDY0NAotLS0gYS9hcmNoL21l dGFnL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL0tidWls ZApAQCAtNTUsMyArNTUsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdh LmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dl bmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9taWNyb2JsYXplL2lu Y2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5k ZXggYjBhZTg4YzlmZWQ5Li5jNmMyY2Y2ZWRjOTggMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6 ZS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtMTEsMyArMTEsNCBAQCBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkg Kz0gc3lzY2FsbHMuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3 b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBh L2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vS2J1 aWxkCmluZGV4IGVkMDcxNzlmZTI2YS4uN2E5MzJiNGE1NTMxIDEwMDY0NAotLS0gYS9hcmNoL21p cHMvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9LYnVpbGQK QEAgLTIxLDMgKzIxLDQgQEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25lZC5oCiBnZW5lcmljLXkgKz0g dXNlci5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5o CitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvbW4xMDMwMC9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL21uMTAzMDAvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4 IDFjOGRkMGY1Y2Q1ZC4uZjgxNDViYzg1ODM1IDEwMDY0NAotLS0gYS9hcmNoL21uMTAzMDAvaW5j bHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAg LTEwLDMgKzEwLDQgQEAgZ2VuZXJpYy15ICs9IHByZWVtcHQuaAogZ2VuZXJpYy15ICs9IHNlY3Rp b25zLmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1h LXRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL25p b3MyL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbmlvczIvaW5jbHVkZS9hc20vS2J1aWxkCmlu ZGV4IGQ2MzMzMGU4ODM3OS4uYzljN2NiODJiMDBmIDEwMDY0NAotLS0gYS9hcmNoL25pb3MyL2lu Y2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL25pb3MyL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt NjMsMyArNjMsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdl bmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2Fz bS9LYnVpbGQgYi9hcmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAyODMyZjAz MWZiMTEuLjg2MTc1ZTcwMTg2OSAxMDA2NDQKLS0tIGEvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2Fz bS9LYnVpbGQKKysrIGIvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTcxLDMg KzcxLDQgQEAgZ2VuZXJpYy15ICs9IHVzZXIuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5lcmlj LXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkgKz0g c2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL0tidWls ZCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA5MWY1M2MwN2Y0MTAuLjE4 YTlkNGM1ZWFkNyAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCisr KyBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMjgsMyArMjgsNCBAQCBnZW5l cmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0 LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUu aApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvcG93 ZXJwYy9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggNWM0ZmJjODBkYzZjLi40MzIyZDk3NDZjZGIg MTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9w b3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtOCwzICs4LDQgQEAgZ2VuZXJpYy15ICs9IG1j c19zcGlubG9jay5oCiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0gcndzZW0u aAogZ2VuZXJpYy15ICs9IHZ0aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZm IC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvczM5MC9pbmNsdWRl L2FzbS9LYnVpbGQKaW5kZXggOGFlYTMyZmU4YmQyLi42M2ExYzI5MjRiOTEgMTAwNjQ0Ci0tLSBh L2FyY2gvczM5MC9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNt L0tidWlsZApAQCAtOCwzICs4LDQgQEAgZ2VuZXJpYy15ICs9IG1tLWFyY2gtaG9va3MuaAogZ2Vu ZXJpYy15ICs9IHByZWVtcHQuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMt eSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAt LWdpdCBhL2FyY2gvc2NvcmUvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9zY29yZS9pbmNsdWRl L2FzbS9LYnVpbGQKaW5kZXggYTA1MjE4ZmYzZmU0Li5mMDg5YTI2NGNkMzggMTAwNjQ0Ci0tLSBh L2FyY2gvc2NvcmUvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvc2NvcmUvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC0xNCwzICsxNCw0IEBAIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBn ZW5lcmljLXkgKz0geG9yLmgKIGdlbmVyaWMteSArPSBzZXJpYWwuaAogZ2VuZXJpYy15ICs9IHdv cmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEv YXJjaC9zaC9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZApp bmRleCA3NTFjMzM3M2E5MmMuLjdiMDM1NmRjYTU2MiAxMDA2NDQKLS0tIGEvYXJjaC9zaC9pbmNs dWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9zaC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTM5LDMg KzM5LDQgQEAgZ2VuZXJpYy15ICs9IHRlcm1pb3MuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2Nr LmgKIGdlbmVyaWMteSArPSB1Y29udGV4dC5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9L YnVpbGQgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAwNTY5YmZhYzRhZmIu LjQzOGY4NjU3M2RjNSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9LYnVpbGQK KysrIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTIxLDMgKzIxLDQgQEAgZ2Vu ZXJpYy15ICs9IHNlcmlhbC5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15 ICs9IHR5cGVzLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0g c2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQg Yi9hcmNoL3RpbGUvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDJkMWY1NjM4OTc0Yy4uZmI2Yjgz MWMxZmJhIDEwMDY0NAotLS0gYS9hcmNoL3RpbGUvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2Fy Y2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTQwLDMgKzQwLDQgQEAgZ2VuZXJpYy15ICs9 IHRlcm1pb3MuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB0eXBl cy5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZm IC0tZ2l0IGEvYXJjaC91bS9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3VtL2luY2x1ZGUvYXNt L0tidWlsZAppbmRleCAwNTJmN2Y2ZDA1NTEuLjU4MGJkNWZmODI4ZiAxMDA2NDQKLS0tIGEvYXJj aC91bS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC91bS9pbmNsdWRlL2FzbS9LYnVpbGQK QEAgLTI2LDMgKzI2LDQgQEAgZ2VuZXJpYy15ICs9IHRvcG9sb2d5LmgKIGdlbmVyaWMteSArPSB0 cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9 IHhvci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvdW5p Y29yZTMyL2luY2x1ZGUvYXNtL3NlY3Rpb24tY29yZS5oIGIvYXJjaC91bmljb3JlMzIvaW5jbHVk ZS9hc20vc2VjdGlvbi1jb3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4wYjljNjg0MjlhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3VuaWNvcmUzMi9pbmNs dWRlL2FzbS9zZWN0aW9uLWNvcmUuaApAQCAtMCwwICsxLDE5IEBACisjaWZuZGVmIF9fVU5JQ09S RV9TRUNUSU9OX0NPUkVfQVNNX0hfXworI2RlZmluZSBfX1VOSUNPUkVfU0VDVElPTl9DT1JFX0FT TV9IX18KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3Jv ZkBrZXJuZWwub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMg b2YgY29weWxlZnQtbmV4dCAodmVyc2lvbiAwLjMuMSBvciBsYXRlcikgYXMgcHVibGlzaGVkCisg KiBhdCBodHRwOi8vY29weWxlZnQtbmV4dC5vcmcvLgorICovCisKKy8qIFVuaWNvcmUzMiBoYXMg a25vd24gdG8gbm90IHdvcmsgcHJvcGVybHkgd2l0aCB0aGUgdHlwZSBzZXQsIHNvIGlnbm9yZSBp dCAqLworCisjZGVmaW5lIF9fc2V0X3NlY3Rpb25fY29yZV90eXBlKF9fX3NlY3Rpb24sIF9fX2Nv cmUsIF9fX25hbWUsCQlcCisJCQkJX19fbGV2ZWwsIF9fX2ZsYWdzLCBfX190eXBlKQkJXAorCS5z ZWN0aW9uIF9fX3NlY3Rpb24uLl9fX2NvcmUuX19fbmFtZS5fX19sZXZlbCwgX19fZmxhZ3MKKwor I2luY2x1ZGUgPGFzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oPgorCisjZW5kaWYgLyogX19VTklD T1JFX1NFQ1RJT05fQ09SRV9BU01fSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9LYnVpbGQgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggMmI4OTJlMjMx M2E5Li5hZjk3NWYyMWVlZWUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL0tidWls ZAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTEyLDMgKzEyLDQgQEAgZ2Vu ZXJpYy15ICs9IGRtYS1jb250aWd1b3VzLmgKIGdlbmVyaWMteSArPSBlYXJseV9pb3JlbWFwLmgK IGdlbmVyaWMteSArPSBtY3Nfc3BpbmxvY2suaAogZ2VuZXJpYy15ICs9IG1tLWFyY2gtaG9va3Mu aAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXgg YjdmYmFhNTZiNTFhLi43ODc5YzMxZTY2YTcgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTMy LDMgKzMyLDQgQEAgZ2VuZXJpYy15ICs9IHRvcG9sb2d5LmgKIGdlbmVyaWMteSArPSB0cmFjZV9j bG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5o CitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdl bmVyaWMvc2VjdGlvbi1jb3JlLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWZjNzUzZTgwZDc2Ci0t LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaApAQCAt MCwwICsxLDMwNyBAQAorI2lmbmRlZiBfQVNNX0dFTkVSSUNfU0VDVElPTl9DT1JFX0hfCisjZGVm aW5lIF9BU01fR0VORVJJQ19TRUNUSU9OX0NPUkVfSF8KKy8qCisgKiBMaW51eCBzZWN0aW9uIGNv cmUgZGVmaW5pdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTHVpcyBSLiBSb2RyaWd1 ZXogPG1jZ3JvZkBrZXJuZWwub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0 aGUgdGVybXMgb2YgY29weWxlZnQtbmV4dCAodmVyc2lvbiAwLjMuMSBvciBsYXRlcikgYXMgcHVi bGlzaGVkCisgKiBhdCBodHRwOi8vY29weWxlZnQtbmV4dC5vcmcvLgorICovCisKKy8qKgorICog RE9DOiBMaW51eCBFTEYgcHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9ucworICoKKyAqIExpbnV4IG1h a2VzIGV4dGVuc2l2ZSB1c2Ugb2YgYGBTSFRfUFJPR0JJVFNgYCB0byBib3RoIGV4dGVuZCB1c2Ug YW5kCisgKiBkZWZpbml0aW9uIG9mICpTcGVjaWFsIEVMRiBTZWN0aW9ucyogKGBnYWJpNCBjaDRg XykgYW5kIHRvIGRlZmluZSBpdHMgb3duCisgKiBzZWN0aW9ucy4gVGhpcyBjaGFwdGVyIGlzIGRl ZGljYXRlZCB0byBkb2N1bWVudGluZyBMaW51eCBwcm9ncmFtIHNwZWNpZmljCisgKiBzZWN0aW9u cyBhbmQgaGVscGVycyBhdmFpbGFibGUgdG8gbWFrZSB1c2Ugb2YgdGhlc2UgZWFzaWVyIHRvIGlt cGxlbWVudCBhbmQKKyAqIHVzZS4KKyAqCisgKiAuLiBfZ2FiaTQgY2g0OiBodHRwczovL3JlZnNw ZWNzLmxpbnV4YmFzZS5vcmcvZWxmL2dhYmk0Ky9jaDQuc2hlYWRlci5odG1sI3NwZWNpYWxfc2Vj dGlvbnMKKyAqLworCisvKioKKyAqIERPQzogTGludXggbGlua2VyIHNjcmlwdAorICoKKyAqIExp bnV4IHVzZXMgYSBjdXN0b20gbGlua2VyIHNjcmlwdCB0byBidWlsZCB0aGUgdm1saW51eCBiaW5h cnksIGl0IHVzZXMgaXQgdG8KKyAqIHN0cmF0ZWdpY2FsbHkgcGxhY2UgYW5kIGRlZmluZSBMaW51 eCBFTEYgc2VjdGlvbnMuICBFYWNoIGFyY2hpdGVjdHVyZSBuZWVkcworICogdG8gaW1wbGVtZW50 IGl0cyBvd24gbGlua2VyIHNjcmlwdCwgaXQgaXMgZXhwZWN0ZWQgdG8gcmVzaWRlIGluCisgKiBg YGFyY2gvJChBUkNIKS9rZXJuZWwvdm1saW51eC5sZHMuU2BgLiAgQXJjaGl0ZWN0dXJlIExpbnV4 IGxpbmtlciBzY3JpcHRzIGluCisgKiB0dXJuIGluY2x1ZGUgYW5kIHVzZSBkZWZpbml0aW9ucyBm cm9tIGBgaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oYGAsCisgKiBhcyB3ZWxsIGFz IHNvbWUgaGVscGVycyBkb2N1bWVudGVkIGluIHRoaXMgY2hhcHRlci4KKyAqCisgKiBJbiBhc3Nl bWJseSBpdCBpcyBjb21tb24gcHJhY3RpY2UgdG8gdXNlIGRvdHMgKGBgLmBgKSBpbiBsYWJlbHMg dG8gYXZvaWQKKyAqIGNsYXNoZXMgd2l0aCBDIHN5bWJvbHMuIFNpbWlsYXJseSwgYSBkb3QgKGBg LmBgKSBjYW4gYmUgcGFydCBvZiBhIHNlY3Rpb24KKyAqIG5hbWUgYnV0IG5vdCBhIEMgc3ltYm9s LiBIaXN0b3JpY2FsbHkgdGhlbiwgdHdvIGRvdHMgYXJlIHVzZWQgKGBgLi5gYCkKKyAqIGhhdmUg YmVlbiB1c2VkIGluIGxpbmtlciBzY3JpcHRzIHdoZW4gYWRkaW5nIHByb2dyYW0gc3BlY2lmaWMg c2VjdGlvbnMKKyAqIHdoZW4gdGhlcmUgYXJlIGNvbmNlcm5zIHRvIGF2b2lkIGNsYXNoZXMgd2l0 aCBjb21waWxlciBnZW5lcmF0ZWQgc2VjdGlvbnMuCisgKi8KKworLyoqCisgKiBET0M6IE1lbW9y eSBwcm90ZWN0aW9uCisgKgorICogTGludXggYWxsb3dzIGFyY2hpdGVjdHVyZXMgd2hpY2ggc3Vw cG9ydCBtZW1vcnkgcHJvdGVjdGlvbiBmZWF0dXJlcyB0bworICogdGFrZSBhZHZhbnRhZ2Ugb2Yg dGhlbSBieSBsZXR0aW5nIGFyY2hpdGVjdHVyZXMgZGVmaW5lIGFuZCBlbmFibGUKKyAqIGBgQ09O RklHX0RFQlVHX1JPREFUQWBgIGFuZCBpbXBsZW1lbnQgYSBtYXJrX3JvZGF0YV9ybygpIGNhbGwu CisgKiBtYXJrX3JvZGF0YV9ybygpIGNhbiBiZSB1c2VkIGZvciBpbnN0YW5jZSB0byBtYXJrIHNw ZWNpZmljIHNlY3Rpb25zIGFzCisgKiByZWFkLW9ubHkgb3Igbm9uLWV4ZWN1dGFibGUuCisgKgor ICogTGludXggdHlwaWNhbGx5IGZvbGxvd3MgYSBjb252ZW50aW9uIHRvIGhhdmUgdGhlIC5yb2Rh dGEgRUxGIHNlY3Rpb24gZm9sbG93CisgKiBhZnRlciB0aGUgLnRleHQgRUxGIHNlY3Rpb24sIGl0 IGRvZXMgdGhpcyB0byBoZWxwIGFyY2hpdGVjdHVyZXMgd2hpY2gKKyAqIHN1cHBvcnQgbWVtb3J5 IHByb3RlY3Rpb24gdG8gbWFyayBib3RoIC50ZXh0IGFuZCAucm9kYXRhIGFzIHJlYWQtb25seSBp bgorICogb25lIHNob3QuCisgKgorICogRm9yIG1vcmUgZGV0YWlscyByZWZlciB0byBtYXJrX3Jv ZGF0YV9ybygpLgorICovCisKKy8qKgorICogRE9DOiAucm9kYXRhCisgKgorICogRUxGIHNlY3Rp b24gdXNlZCBmb3IgZGF0YSB3aGljaCBtdXN0IGJlIHByb3RlY3RlZCBmcm9tIHdyaXRlIGFjY2Vz cy4KKyAqLworCisvKioKKyAqIERPQzogLnRleHQKKyAqCisgKiBFTEYgc2VjdGlvbiBuYW1lIHVz ZWQgZm9yIGNvZGUgKGZ1bmN0aW9ucykgdXNlZCBkdXJpbmcgcmVndWxhcgorICoga2VybmVsIHJ1 biB0aW1lLgorICovCisKKy8qKgorICogRE9DOiAuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVz ZWQgZm9yIHJlYWQtd3JpdGUgZGF0YS4KKyAqLworCisvKioKKyAqIERPQzogTGludXggaW5pdCBz ZWN0aW9ucworICoKKyAqIFRoZXNlIHNlY3Rpb25zIGFyZSB1c2VkIGZvciBjb2RlIGFuZCBkYXRh IHN0cnVjdHVyZXMgdXNlZCBkdXJpbmcgYm9vdCBvcgorICogbW9kdWxlIGluaXRpYWxpemF0aW9u LiBPbiBhcmNoaXRlY3R1cmVzIHRoYXQgc3VwcG9ydCBpdCAoeDg2LCB4ODZfNjQpLCBhbGwKKyAq IHRoaXMgY29kZSBpcyBmcmVlZCB1cCBieSB0aGUga2VybmVsIHJpZ2h0IGJlZm9yZSB0aGUgZmlz dCB1c2Vyc3BhY2UgaW5pdAorICogcHJvY2VzcyBpcyBjYWxsZWQgd2hlbiBidWlsdC1pbiB0byB0 aGUga2VybmVsLCBhbmQgaWYgbW9kdWxhciBpdCBpcyBmcmVlZAorICogYWZ0ZXIgbW9kdWxlIGlu aXRpYWxpemF0aW9uLiBTaW5jZSB0aGUgY29kZSBpcyBmcmVlZCBzbyBlYXJseSwgaW4gdGhlb3J5 CisgKiB0aGVyZSBzaG91bGQgYmUgbm8gcmFjZXMgYWdhaW5zdCBmcmVlaW5nIHRoaXMgY29kZSB3 aXRoIG90aGVyIENQVXMuIEluaXQKKyAqIHNlY3Rpb24gY29kZSBhbmQgZGF0YSBzdHJ1Y3R1cmVz IHNob3VsZCBuZXZlciBiZSBleHBvcnRlZCB3aXRoCisgKiBFWFBPUlRfU1lNQk9MKigpIGFzIHRo ZSBjb2RlIHdpbGwgcXVpY2tseSBiZWNvbWUgdW5hdmFpbGFibGUgdG8gdGhlIGtlcm5lbAorICog YWZ0ZXIgYm9vdHVwLgorICovCisKKy8qKgorICogRE9DOiAuaW5pdC50ZXh0CisgKgorICogRUxG IHNlY3Rpb24gZm9yIGNvZGUgKGZ1bmN0aW9ucykgdXNlZCBvbmx5IGR1cmluZyBib290IG9yIGRy aXZlcgorICogaW5pdGlhbGl6YXRpb24uCisgKgorICovCisKKy8qKgorICogRE9DOiAuaW5pdC5k YXRhCisgKgorICogRUxGIHNlY3Rpb24gdXNlZCBmb3IgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgb25s eSBkdXJpbmcgYm9vdCBvciBkcml2ZXIKKyAqIGluaXRpYWxpemF0aW9uLgorICovCisKKy8qKgor ICogRE9DOiAuaW5pdC5yb2RhdGEKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2VkIGZvciByZWFkLW9u bHkgY29kZSAoZnVuY3Rpb25zKSB1c2VkIG9ubHkgZHVyaW5nIGJvb3QKKyAqIG9yIGRyaXZlciBp bml0aWFsaXphdGlvbi4KKyAqLworCisvKioKKyAqIERPQzogLmluaXRjYWxsCisgKgorICogRUxG IHNlY3Rpb24gdXNlZCBmb3Igc3Vic3lzdGVtIGluaXQgY2FsbHMuIFRoZXJlIGFyZSBpbml0IGxl dmVscworICogcmVwcmVzZW50aW5nIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJu ZWwuIEZvciBtb3JlIGRldGFpbHMKKyAqIHJlZmVyIHRvIF9fZGVmaW5lX2luaXRjYWxsKCkuCisg Ki8KKworLyoqCisgKiBET0M6IExpbnV4IGV4aXQgc2VjdGlvbnMKKyAqCisgKiBUaGVzZSBzZWN0 aW9ucyBhcmUgdXNlZCB0byBkZWNsYXJlIGEgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMg d2hpY2gKKyAqIGFyZSBvbmx5IHJlcXVpcmVkIG9uIGV4aXQsIHRoZSBmdW5jdGlvbiBvciBkYXRh IHN0cnVjdHVyZSB3aWxsIGJlIGRyb3BwZWQKKyAqIGlmIHRoZSBjb2RlIGRlY2xhcmluZyB0aGlz IHNlY3Rpb24gaXMgbm90IGNvbXBpbGVkIGFzIGEgbW9kdWxlIG9uCisgKiBhcmNoaXRlY3R1cmVz IHRoYXQgc3VwcG9ydCB0aGlzICh4ODYsIHg4Nl82NCkuIFRoZXJlIGlzIG5vIHNwZWNpYWwgY2Fz ZQorICogaGFuZGxpbmcgZm9yIHRoaXMgY29kZSB3aGVuIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwu CisgKi8KKworLyoqCisgKiBET0M6IC5leGl0LnRleHQKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2Vk IHRvIGZvciBjb2RlIChmdW5jdGlvbnMpIHVzZWQgb25seSBkdXJpbmcgbW9kdWxlIHVubG9hZC4K KyAqLworCisvKioKKyAqIERPQzogLmV4aXQuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQg dG8gZm9yIGRhdGEgc3RydWN0dXJlcyB1c2VkIG9ubHkgZHVyaW5nIG1vZHVsZQorICogdW5sb2Fk LgorICovCisKKy8qKgorICogRE9DOiAuZXhpdGNhbGwuZXhpdAorICoKKyAqIEVMRiBzZWN0aW9u IHVzZWQgZm9yIGV4aXQgcm91dGluZXMsIG9yZGVyIGlzIGltcG9ydGFudCBhbmQgbWFpbnRhaW5l ZCBieQorICogbGluayBvcmRlci4KKyAqLworCisvKioKKyAqIERPQzogTGludXggcmVmZXJlbmNl cyB0byBpbml0IHNlY3Rpb25zCisgKgorICogVGhlc2Ugc2VjdGlvbnMgYXJlIHVzZWQgdG8gdGVh Y2ggbW9kcG9zdCB0byBub3Qgd2FybiBhYm91dCBwb3NzaWJsZQorICogbWlzdXNlcyBvZiBpbml0 IHNlY3Rpb24gY29kZSBmcm9tIG90aGVyIHNlY3Rpb25zLiBJZiB5b3UgdXNlIHRoaXMKKyAqIHlv dXIgdXNlIGNhc2Ugc2hvdWxkIGRvY3VtZW50IHdoeSB5b3UgYXJlIGNlcnRhaW4gc3VjaCB1c2Ug b2YgaW5pdAorICogc2VjdGlvbmVkIGNvZGUgaXMgdmFsaWQuIEZvciBtb3JlIGRldGFpbHMgcmVm ZXIgdG8gYGBpbmNsdWRlL2xpbnV4L2luaXQuaGBgCisgKiBgYF9fcmVmYGAsIGBgX19yZWZkYXRh YGAsIGFuZCBgYF9fcmVmY29uc3RgYCBkb2N1bWVudGF0aW9uLgorICovCisKKy8qKgorICogRE9D OiAucmVmLnRleHQKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2VkIHRvIGFubm90YXRlIGNvZGUgKGZ1 bmN0aW9ucykgd2hpY2ggaGFzIGJlZW4gdmV0dGVkIGFzCisgKiB2YWxpZCBmb3IgaXRzIHJlZmVy ZW5jZSBvciB1c2Ugb2Ygb3RoZXIgY29kZSAoZnVuY3Rpb25zKSBvciBkYXRhIHN0cnVjdHVyZXMK KyAqIHdoaWNoIGFyZSBwYXJ0IG9mIHRoZSBpbml0IHNlY3Rpb25zLgorICovCisKKy8qKgorICog RE9DOiAucmVmLmRhdGEKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2VkIGZvciBkYXRhIHN0cnVjdHVy ZXMgd2hpY2ggaGF2ZSBiZWVuIHZldHRlZCBmb3IgaXRzCisgKiByZWZlcmVuY2Ugb3IgdXNlIG9m IG90aGVyIGNvZGUgKGZ1bmN0aW9ucykgb3IgZGF0YSBzdHJ1Y3R1cmVzIHBhcnQgb2YgdGhlCisg KiBpbml0IHNlY3Rpb25zLgorICovCisKKy8qKgorICogRE9DOiAucmVmLnJvZGF0YQorICoKKyAq IEVMRiBzZWN0aW9uIHVzZWQgdG8gYW5ub3RhdGUgY29uc3QgY29kZSAoZnVuY3Rpb25zKSBjb25z dCBkYXRhIHN0cnVjdHVyZXMKKyAqIHdoaWNoIGhhcyBiZWVuIHZldHRlZCBmb3IgaXRzIHJlZmVy ZW5jZSBvciB1c2Ugb2Ygb3RoZXIgY29kZSAoZnVuY3Rpb25zKQorICogb3IgZGF0YSBzdHJ1Y3R1 cmVzIHBhcnQgb2YgdGhlIGluaXQgc2VjdGlvbnMuCisgKi8KKworLyogQ2FuIGJlIHVzZWQgb24g Zm9vLlMgZm9yIGluc3RhbmNlICovCisjaWZuZGVmIF9fc2V0X3NlY3Rpb25fY29yZV90eXBlCisj IGRlZmluZSBfX3NldF9zZWN0aW9uX2NvcmVfdHlwZShfX19zZWN0aW9uLCBfX19jb3JlLCBfX19u YW1lLAkJXAorCQkJCSBfX19sZXZlbCwgX19fZmxhZ3MsIF9fX3R5cGUpCQlcCisJLnNlY3Rpb24g X19fc2VjdGlvbi4uX19fY29yZS5fX19uYW1lLl9fX2xldmVsLCBfX19mbGFncywgX19fdHlwZQor I2VuZGlmCisKKyNpZm5kZWYgX19zZXRfc2VjdGlvbl9jb3JlCisjIGRlZmluZSBfX3NldF9zZWN0 aW9uX2NvcmUoX19fc2VjdGlvbiwgX19fY29yZSwgX19fbmFtZSwgX19fbGV2ZWwsIF9fX2ZsYWdz KSBcCisJLnNlY3Rpb24gX19fc2VjdGlvbi4uX19fY29yZS5fX19uYW1lLl9fX2xldmVsLCBfX19m bGFncworI2VuZGlmCisKKyNpZm5kZWYgX19wdXNoX3NlY3Rpb25fY29yZQorIyBkZWZpbmUgX19w dXNoX3NlY3Rpb25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLCBfX2xldmVsLCBfX2Zs YWdzKSBcCisJLnB1c2hzZWN0aW9uIF9fc2VjdGlvbi4uX19jb3JlLl9fbmFtZS5fX2xldmVsLCBf X2ZsYWdzCisjZW5kaWYKKworI2lmZGVmIF9fS0VSTkVMX18KKyNpbmNsdWRlIDxsaW51eC9zdHJp bmdpZnkuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0FTU0VNQkxFUl9fKSB8fCBkZWZpbmVk KF9fQVNTRU1CTFlfXykKKworIyBpZm5kZWYgTElOS0VSX1NDUklQVAorCisjICBpZm5kZWYgcHVz aF9zZWN0aW9uX2NvcmUKKyMgICBkZWZpbmUgcHVzaF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBf X2NvcmUsIF9fbmFtZSwgX19sZXZlbCwgX19mbGFncykgXAorCSBfX3B1c2hfc2VjdGlvbl9jb3Jl KF9fc2VjdGlvbiwgX19jb3JlLCBfX25hbWUsCQkJICBcCisJCQkgICAgIF9fbGV2ZWwsIF9fc3Ry aW5naWZ5KF9fZmxhZ3MpKQorIyAgZW5kaWYKKworIyAgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmUK KyMgICBkZWZpbmUgc2V0X3NlY3Rpb25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLAkJ CVwKKwkJCSAgICBfX2xldmVsLCBfX2ZsYWdzKQkJCQlcCisJX19zZXRfc2VjdGlvbl9jb3JlKF9f c2VjdGlvbiwgX19jb3JlLCBfX25hbWUsCQkJXAorCQkJICAgX19sZXZlbCwgX19zdHJpbmdpZnko X19mbGFncykpCisjICBlbmRpZgorCisjICBpZm5kZWYgc2V0X3NlY3Rpb25fY29yZV90eXBlCisj ICAgZGVmaW5lIHNldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1l LAkJXAorCQkJCSBfX2xldmVsLCBfX2ZsYWdzLCBfX3R5cGUpCQlcCisJX19zZXRfc2VjdGlvbl9j b3JlX3R5cGUoX19zZWN0aW9uLCBfX2NvcmUsIF9fbmFtZSwgX19sZXZlbCwJXAorCQkJCV9fc3Ry aW5naWZ5KF9fZmxhZ3MpLCBfX3R5cGUpCisjICBlbmRpZgorCisjIGVuZGlmIC8qIExJTktFUl9T Q1JJUFQgKi8KKyNlbHNlIC8qIGRlZmluZWQoX19BU1NFTUJMRVJfXykgfHwgZGVmaW5lZChfX0FT U0VNQkxZX18pICovCisKKy8qCisgKiBBcyBwZXIgZ2NjJ3MgZG9jdW1lbnRhdGlvbiBhIGNvbW1v biBhc20gc2VwYXJhdG9yIGlzIGEgbmV3IGxpbmUgZm9sbG93ZWQKKyAqIGJ5IHRhYiBbMF0sIGl0 IGhvd2V2ZXIgc2VlbXMgcG9zc2libGUgdG8gYWxzbyBqdXN0IHVzZSBhIG5ld2xpbmUgYXMgaXRz CisgKiB0aGUgbW9zdCBjb21tb25seSBlbXBpcmljYWxseSBvYnNlcnZlZCBzZW1hbnRpYyBhbmQg Zm9sa3Mgc2VlbSB0byBhZ3JlZQorICogdGhpcyBldmVuIHdvcmtzIG9uIFMzOTAuIEluIGNhc2Ug eW91ciBhcmNoaXRlY3R1cmUgZGlzYWdyZWVzIHlvdSBtYXkKKyAqIG92ZXJyaWRlIHRoaXMgYW5k IGRlZmluZSB5b3VyIG93biBhbmQga2VlcCB0aGUgcmVzdCBvZiB0aGUgbWFjcm9zLgorICoKKyAq IFswXSBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjL0Jhc2ljLUFzbS5odG1sI0Jh c2ljLUFzbQorICovCisjIGlmbmRlZiBBU01fQ01EX1NFUAorIyAgZGVmaW5lIEFTTV9DTURfU0VQ CSJcbiIKKyMgZW5kaWYKKworIyBpZm5kZWYgc2V0X3NlY3Rpb25fY29yZQorIyAgZGVmaW5lIHNl dF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBfX2NvcmUsIF9fbmFtZSwgX19sZXZlbCwgX19mbGFn cykJXAorCV9fc3RyaW5naWZ5KF9fc2V0X3NlY3Rpb25fY29yZV90eXBlKF9fc2VjdGlvbiwgX19j b3JlLCBfX25hbWUsCVwKKwkJCQkJICAgIF9fbGV2ZWwsIF9fc3RyaW5naWZ5KF9fZmxhZ3MpKSkg XAorCUFTTV9DTURfU0VQCisjIGVuZGlmCisKKy8qCisgKiBTb21lIGFyY2hpdGVjdHVyZXMgKGFy bSwgYW5kIGF2cjMyIGFyZSB0d28gZXhhbXBsZXMgb24ga3Byb2Jlcykgc2VlbQorICogY3VycmVu dGx5IGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgdHlwZSBbMF0gLS0gdGhpcyBjYW4gYmUgYW55IG9m IHRoZQorICogb3B0aW9uYWwgY29uc3RhbnRzIG9uIEVMRjoKKyAqCisgKiBAcHJvZ2JpdHMgLSBz ZWN0aW9uIGNvbnRhaW5zIGRhdGEKKyAqIEBub2JpdHMgLSBzZWN0aW9uIGRvZXMgbm90IGNvbnRh aW4gZGF0YSAoaS5lLiwgc2VjdGlvbiBvbmx5IG9jY3VwaWVzIHNwYWNlKQorICogQG5vdGUgLSBz ZWN0aW9uIGNvbnRhaW5zIGRhdGEgd2hpY2ggaXMgdXNlZCBieSB0aGluZ3Mgb3RoZXIgdGhhbiB0 aGUgcHJvZ3JhbQorICogQGluaXRfYXJyYXkgLSBzZWN0aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9m IHBvaW50ZXJzIHRvIGluaXQgZnVuY3Rpb25zCisgKiBAZmluaV9hcnJheSAtIHNlY3Rpb24gY29u dGFpbnMgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gZmluaXNoIGZ1bmN0aW9ucworICogQHByZWlu aXRfYXJyYXkgLSBzZWN0aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIHByZS1p bml0IGZ1bmN0aW9ucworICoKKyAqIEFSTSByZXF1aXJlcyAlIGluc3RlYWQgb2YgQC4KKyAqCisg KiBBdCBsZWFzdCBhcyBwZXIgbmFzbSAoeDg2L3g4Nl82NCBvbmx5KSwgaW4gdGhlIGFic2VuY2Ug b2YgcXVhbGlmaWVycyB0aGUKKyAqIGRlZmF1bHRzIGFyZSBhcyBmb2xsb3dzOgorICoKKyAqIHNl Y3Rpb24gLnRleHQgICAgcHJvZ2JpdHMgIGFsbG9jICAgZXhlYyAgICBub3dyaXRlICBhbGlnbhYK KyAqIHNlY3Rpb24gLnJvZGF0YSAgcHJvZ2JpdHMgIGFsbG9jICAgbm9leGVjICBub3dyaXRlICBh bGlnbj00CisgKiBzZWN0aW9uIC5scm9kYXRhIHByb2diaXRzICBhbGxvYyAgIG5vZXhlYyAgbm93 cml0ZSAgYWxpZ249NAorICogc2VjdGlvbiAuZGF0YSAgICBwcm9nYml0cyAgYWxsb2MgICBub2V4 ZWMgIHdyaXRlICAgIGFsaWduPTQKKyAqIHNlY3Rpb24gLmxkYXRhICAgcHJvZ2JpdHMgIGFsbG9j ICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00CisgKiBzZWN0aW9uIC5ic3MgICAgIG5vYml0cyAg ICBhbGxvYyAgIG5vZXhlYyAgd3JpdGUgICAgYWxpZ249NAorICogc2VjdGlvbiAubGJzcyAgICBu b2JpdHMgICAgYWxsb2MgICBub2V4ZWMgIHdyaXRlICAgIGFsaWduPTQKKyAqIHNlY3Rpb24gLnRk YXRhICAgcHJvZ2JpdHMgIGFsbG9jICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00ICAgIHRscwor ICogc2VjdGlvbiAudGJzcyAgICBub2JpdHMgICAgYWxsb2MgICBub2V4ZWMgIHdyaXRlICAgIGFs aWduPTQgICAgdGxzCisgKiBzZWN0aW9uIC5jb21tZW50IHByb2diaXRzICBub2FsbG9jIG5vZXhl YyAgbm93cml0ZSAgYWxpZ249MQorICogc2VjdGlvbiBvdGhlciAgICBwcm9nYml0cyAgYWxsb2Mg ICBub2V4ZWMgIG5vd3JpdGUgIGFsaWduPTEKKyAqCisgKiBnYXMgc2hvdWxkIGhhdmUgc2Vuc2li bGUgZGVmYXVsdHMgZm9yIGFyY2hpdGVjdHVyZXMuLi4KKyAqCisgKiBbMF0gaHR0cDovL3d3dy5u YXNtLnVzL2RvYy9uYXNtZG9jNy5odG1sCisgKi8KKyMgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmVf dHlwZQorIyAgZGVmaW5lIHNldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rpb24sIF9fY29yZSwg X19uYW1lLCBfX2xldmVsLAlcCisJCQkJX19mbGFncywgX190eXBlKQkJCVwKKwlfX3N0cmluZ2lm eShfX3NldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rpb24sIF9fY29yZSwJCVwKKwkJCQkJICAg IF9fbmFtZSwgX19sZXZlbCwJCVwKKwkJCQkJICAgIF9fc3RyaW5naWZ5KF9fZmxhZ3MpLAlcCisJ CQkJCSAgICBfX3R5cGUpKQkJCVwKKwlBU01fQ01EX1NFUAorIyBlbmRpZgorCisjIGlmbmRlZiBw dXNoX3NlY3Rpb25fY29yZQorIyAgZGVmaW5lIHB1c2hfc2VjdGlvbl9jb3JlKF9fc2VjdGlvbiwg X19jb3JlLCBfX25hbWUsCQkJXAorCQkJICAgIF9fbGV2ZWwsIF9fZmxhZ3MpCQkJCVwKKwlfX3N0 cmluZ2lmeShfX3B1c2hfc2VjdGlvbl9jb3JlKF9fc2VjdGlvbiwgX19jb3JlLAkJXAorCQkJCQlf X25hbWUsCV9fbGV2ZWwsCQlcCisJCQkJCV9fc3RyaW5naWZ5KF9fZmxhZ3MpKSkJCVwKKwlBU01f Q01EX1NFUAorIyBlbmRpZgorCisjZW5kaWYgLyogZGVmaW5lZChfX0FTU0VNQkxFUl9fKSB8fCBk ZWZpbmVkKF9fQVNTRU1CTFlfXykgKi8KKyNlbmRpZiAvKiBfQVNNX0dFTkVSSUNfU0VDVElPTl9D T1JFX0hfICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmggYi9p bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmgKaW5kZXggNGRmNjRhMWZjMDllLi5iMTQ1YWU4 ZDljYmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAorKysgYi9p bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmgKQEAgLTEsNiArMSw4IEBACiAjaWZuZGVmIF9B U01fR0VORVJJQ19TRUNUSU9OU19IXwogI2RlZmluZSBfQVNNX0dFTkVSSUNfU0VDVElPTlNfSF8K IAorI2luY2x1ZGUgPGFzbS9zZWN0aW9uLWNvcmUuaD4KKwogLyogUmVmZXJlbmNlcyB0byBzZWN0 aW9uIGJvdW5kYXJpZXMgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmggYi9pbmNsdWRlL2FzbS1nZW5l cmljL3ZtbGludXgubGRzLmgKaW5kZXggMDk2OGQxM2IzODg1Li40ODNmNjBjNDUxZjkgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaAorKysgYi9pbmNsdWRlL2Fz bS1nZW5lcmljL3ZtbGludXgubGRzLmgKQEAgLTU1LDYgKzU1LDcgQEAKICNlbmRpZgogCiAjaW5j bHVkZSA8bGludXgvZXhwb3J0Lmg+CisjaW5jbHVkZSA8YXNtL3NlY3Rpb24tY29yZS5oPgogCiAv KiBBbGlnbiAuIHRvIGEgOCBieXRlIGJvdW5kYXJ5IGVxdWFscyB0byBtYXhpbXVtIGZ1bmN0aW9u IGFsaWdubWVudC4gKi8KICNkZWZpbmUgQUxJR05fRlVOQ1RJT04oKSAgLiA9IEFMSUdOKDgpCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2luaXQuaCBiL2luY2x1ZGUvbGludXgvaW5pdC5oCmlu ZGV4IDg4NWMzZTZkMGY5ZC4uMjFjNmJlYzllM2QwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L2luaXQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2luaXQuaApAQCAtMTMwLDYgKzEzMCwyNCBAQCBp bnQgX19pbml0IGluaXRfcm9vdGZzKHZvaWQpOwogZXh0ZXJuIGJvb2wgcm9kYXRhX2VuYWJsZWQ7 CiAjZW5kaWYKICNpZmRlZiBDT05GSUdfREVCVUdfUk9EQVRBCisvKioKKyAqIG1hcmtfcm9kYXRh X3JvIC0gaW1wbGVtZW50IG1lbW9yeSBwcm90ZWN0aW9uIGZvciBFTEYgc2VjdGlvbnMKKyAqCisg KiBBcmNoaXRlY3R1cmVzIHdoaWNoIHN1cHBvcnQgbWVtb3J5IHByb3RlY3Rpb24gZGVmaW5lIGEg a2VybmVsIGNvbmZpZ3VyYXRpb24KKyAqIGVudHJ5IGZvciBDT05GSUdfREVCVUdfUk9EQVRBLCBl bmFibGUgaXQgaW4gYW5kIGltcGxlbWVudCBtYXJrX3JvZGF0YV9ybygpLgorICogbWFya19yb2Rh dGFfcm8oKSBzaG91bGQgc3RyaXZlIHRvIGFkanVzdCB0aGUgLnJvZGF0YSBhbmQgLnRleHQgRUxG IHNlY3Rpb25zCisgKiB3aXRoIHJlYWQtb25seSBtZW1vcnkgcHJvdGVjdGlvbiB0byBwcmV2ZW50 IG1vZGlmaWNhdGlvbnMgb2YgdGhlc2Ugc2VjdGlvbnMKKyAqIGFmdGVyIGJvb3R1cC4gSXQgY2Fu IGFsc28gdHJ5IHRvIHVzZSBtZW1vcnkgcHJvdGVjdGlvbiB0byBwcmV2ZW50IGV4ZWN1dGlvbgor ICogb24gdGhlIC5yb2RhdGEgRUxGIHNlY3Rpb24uCisgKgorICogSW4gb3JkZXIgdG8gaGVscCBh cmNoaXRlY3R1cmVzIHNldCBib3RoIC50ZXh0IGFuZCAucm9kYXRhIGFzIHJlYWQtb25seSB3aXRo CisgKiBtZW1vcnkgcHJvdGVjdGlvbnMgaW4gb25lIHNob3QgTGludXggaGFzIHR5cGljYWxseSBm b2xsb3dlZCB0aGUgY29udmVudGlvbgorICogdG8gaGF2ZSB0aGUgLnJvZGF0YSBFTEYgc2VjdGlv biBmb2xsb3cgdGhlIC50ZXh0IEVMRiBzZWN0aW9uIG9uIHRoZSB2bWxpbnV4CisgKiBsaW5rZXIg c2NyaXB0LgorICoKKyAqIExpbnV4IGNhbGxzIG1hcmtfcm9kYXRhX3JvKCkgYWZ0ZXIgZnJlZWlu ZyAuaW5pdCBjb2RlIGFuZCBwcmlvciB0byBjYWxsaW5nCisgKiB0aGUgZmlyc3QgaW5pdCB1c2Vy c3BhY2UgcHJvY2Vzcy4KKyAqLwogdm9pZCBtYXJrX3JvZGF0YV9ybyh2b2lkKTsKICNlbmRpZgog CkBAIC0xNDAsMjUgKzE1OCw3MCBAQCBleHRlcm4gYm9vbCBpbml0Y2FsbF9kZWJ1ZzsKICNlbmRp ZgogICAKICNpZm5kZWYgTU9EVUxFCisvKioKKyAqIERPQzogSW5pdGNhbGwgbGV2ZWxzCisgKgor ICogV2hlbiBMaW51eCBib290cyB0aGUga2VybmVsIGRvX2luaXRjYWxscygpIGl0ZXJhdGVzIG92 ZXIgZWFjaCBMaW51eAorICogaW5pdGlhbGl6YXRpb24gbGV2ZWwgSUQgYW5kIGNhbGxzIGFsbCBy b3V0aW5lcyBlbWJlZGRlZCBvbiBlYWNoIGxldmVsIElELgorICogUHJpb3IgdG8gdjIuNS4yLjMg TGludXggaGFkIG9ubHkgb25lIGluaXQgbGV2ZWwgb250byB3aGljaCBhbGwgaW5pdAorICogZnVu Y3Rpb25zIGZvbGRlZCBvbnRvIHVzaW5nIF9faW5pdGNhbGwoKS4gQWZ0ZXIgdjIuNS4yLjQgTGlu dXggc3BsaXQgdXAKKyAqIGluaXRjYWxscyBpbnRvIDcgc2VwYXJhdGUgaW5pdGNhbGwgc3Vic2Vj dGlvbiBsZXZlbHMsIGVhY2ggbGV2ZWwgZGVzY3JpYmluZworICogZGlmZmVyZW50IGZ1bmN0aW9u YWxpdHkgcGFydCBvZiB0aGUga2VybmVsIChjb21taXQgYDlkNmJhMTIxYjdlMTcwODVgXworICog KHYyLjUuMi4zIC0+IHYyLjUuMi40KSkuIEluIG9yZGVyIHRvIHJlbWFpbiBiYWNrd2FyZCBjb21w YXRpYmxlIF9faW5pdGNhbGwoKQorICogY2FsbHMgd2VyZSBsZWZ0IG1hcHBlZCB0byBkZXZpY2Vf aW5pdGNhbGwoKS4KKyAqCisgKiBFYWNoIGluaXQgbGV2ZWwgY29uc2lzdHMgb2YgYSBkZWRpY2F0 ZWQgRUxGIHNlY3Rpb24sIGluaXQgZnVuY3Rpb25zIGFyZQorICogYXNzb2NpYXRlZCB0byBhbiBp bml0IGxldmVsIGJ5IGxpbmtpbmcgaXQgaW50byB0aGUgcmVzcGVjdGl2ZSBsZXZlbCdzCisgKiBF TEYgc2VjdGlvbi4KKyAqCisgKiBMb3dlciBvcmRlciBpbml0IGxldmVscyBydW4gcHJpb3IgdG8g aGlnaGVyIG9yZGVyIGluaXQgbGV2ZWxzLiBPcmRlcmluZworICogaW5zaWRlIGVhY2ggaW5pdGNh bGwgbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSByZXNwZWN0aXZlIGxpbmsgb3JkZXIuCisgKgorICog Li4gXzlkNmJhMTIxYjdlMTcwODU6IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvY2dpdC9saW51eC9r ZXJuZWwvZ2l0L2hpc3RvcnkvaGlzdG9yeS5naXQvY29tbWl0Lz9pZJ02YmExMjFiN2UxNzA4NWM5 NTEzOTIzMzY4NmIyN2E0ZDRjNjUwZQorICovCiAKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAKLS8q Ci0gKiBpbml0Y2FsbHMgYXJlIG5vdyBncm91cGVkIGJ5IGZ1bmN0aW9uYWxpdHkgaW50byBzZXBh cmF0ZQotICogc3Vic2VjdGlvbnMuIE9yZGVyaW5nIGluc2lkZSB0aGUgc3Vic2VjdGlvbnMgaXMg ZGV0ZXJtaW5lZAotICogYnkgbGluayBvcmRlci4gCi0gKiBGb3IgYmFja3dhcmRzIGNvbXBhdGli aWxpdHksIGluaXRjYWxsKCkgcHV0cyB0aGUgY2FsbCBpbiAKLSAqIHRoZSBkZXZpY2UgaW5pdCBz dWJzZWN0aW9uLgorLyoqCisgKiBfX2RlZmluZV9pbml0Y2FsbCAtIHdyYXBwZXIgZm9yIGRlZmlu aW5nIGluaXQgbGV2ZWxzCiAgKgotICogVGhlIGBpZCcgYXJnIHRvIF9fZGVmaW5lX2luaXRjYWxs KCkgaXMgbmVlZGVkIHNvIHRoYXQgbXVsdGlwbGUgaW5pdGNhbGxzCi0gKiBjYW4gcG9pbnQgYXQg dGhlIHNhbWUgaGFuZGxlciB3aXRob3V0IGNhdXNpbmcgZHVwbGljYXRlLXN5bWJvbCBidWlsZCBl cnJvcnMuCisgKiBAZm46IGluaXQgcm91dGluZQorICogQGlkOiBpbml0IGxldmVsCiAgKgotICog SW5pdGNhbGxzIGFyZSBydW4gYnkgcGxhY2luZyBwb2ludGVycyBpbiBpbml0Y2FsbCBzZWN0aW9u cyB0aGF0IHRoZQotICoga2VybmVsIGl0ZXJhdGVzIGF0IHJ1bnRpbWUuIFRoZSBsaW5rZXIgY2Fu IGRvIGRlYWQgY29kZSAvIGRhdGEgZWxpbWluYXRpb24KLSAqIGFuZCByZW1vdmUgdGhhdCBjb21w bGV0ZWx5LCBzbyB0aGUgaW5pdGNhbGwgc2VjdGlvbnMgaGF2ZSB0byBiZSBtYXJrZWQKLSAqIGFz IEtFRVAoKSBpbiB0aGUgbGlua2VyIHNjcmlwdC4KKyAqIERlZmluZXMgYSBrZXJuZWwgaW5pdGlh bGl6YXRpb24gbGV2ZWwuIEEgcmVzcGVjdGl2ZSBsaW5rZXIgc2NyaXB0IGVudHJ5CisgKiBpcyBy ZXF1aXJlZCB0byBlbnN1cmUgdGhlIGluaXQgbGV2ZWwgaXMgYWNjb3VudGVkIGZvciBhbmQgdG8g ZW5zdXJlIHN5bWJvbHMKKyAqIGV4aXN0IGZvciBpdGVyYXRpbmcgb3ZlciBhbGwgZnVuY3Rpb25z IGluIHRoZSBpbml0IGxldmVsLiBBIGluaXQgbGV2ZWwKKyAqIHJlcHJlc2VudHMgYSBzZXJpZXMg b2YgZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsLgorICoKKyAqIE9yZGVyaW5nIHdpdGhpbiBh biBpbml0aWFsaXphdGlvbiBsZXZlbCBpcyBkZXRlcm1pbmVkIGJ5IGxpbmsgb3JkZXIsIHNvCisg KiBmb3IgaW5zdGFuY2UgaWYgYSBNYWtlZmlsZSBoYWQ6OgorICoKKyAqCW9iai15ICs9IGZvby5v CisgKglvYmoteSArPSBiYXIubworICoKKyAqIEFuZCBmb28uYzo6CisgKgorICoJc3Vic3lzX2lu aXRjYWxsKGZvb19pbml0KTsKKyAqCisgKiBBbmQgYmFyLmMgaGFkOjoKKyAqCisgKglzdWJzeXNf aW5pdGNhbGwoYmFyX2luaXQpOworICoKKyAqIGZvb19pbml0KCkgd291bGQgYmUgY2FsbGVkIHBy aW9yIHRvIGJhcl9pbml0KCkuCisgKgorICogTm90ZSB0aGF0IEBpZCBpbiBfX2RlZmluZV9pbml0 Y2FsbCgpIGFsc28gZW5hYmxlcyBtdWx0aXBsZSBpbml0Y2FsbHMKKyAqIHRvIGJlIGNyZWF0ZWQg dXNpbmcgdGhlIHNhbWUgaGFuZGxlciBmb3IgZGlmZmVyZW50IGluaXQgbGV2ZWxzIHdpdGhvdXQK KyAqIGNhdXNpbmcgZHVwbGljYXRlLXN5bWJvbCBidWlsZCBlcnJvcnMuCisgKgorICogSW5pdGNh bGxzIGFyZSBydW4gYnkgcGxhY2luZyBzdGFydCBzeW1ib2xzIHRvIGluaXRjYWxsIGxldmVscyBp bnNpZGUgRUxGCisgKiBzZWN0aW9ucywgdGhlIGtlcm5lbCBpbiB0dXJuIHVzZXMgdGhlc2Ugc3lt Ym9scyB0byBpdGVyYXRlIG92ZXIgZWFjaCBpbml0CisgKiBsZXZlbCBhdCBydW50aW1lIHdpdGgg ZG9faW5pdGNhbGxfbGV2ZWwoKS4gVGhlIGVuZCBvZiBlYWNoIGluaXQgbGV2ZWwgaXMKKyAqIG1h cmtlZCBieSB0aGUgc3Vic2VxdWVudCBzeW1ib2wncyBzdGFydCBhZGRyZXNzIHVudGlsIHdlIHJl YWNoIHRoZSBzeW1ib2wKKyAqIGBgX19pbml0Y2FsbF9lbmRgYC4gVGhlIGxpbmtlciBjYW4gZG8g ZGVhZCBjb2RlIC8gZGF0YSBlbGltaW5hdGlvbiBhbmQgZWFjaAorICogaW5pdCBsZXZlbCBzdGFy dCBzeW1ib2wgY291bGQgYmUgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIHRoaXMgcHJvY2VzcywgdG8K KyAqIGF2b2lkIHRoaXMgZWFjaCBpbml0IGxldmVsIHN0YXJ0IHN5bWJvbHMgbXVzdCBiZSBtYXJr ZWQgYXMgJ0tFRVAoKScgaW4gdGhlCisgKiBsaW5rZXIgc2NyaXB0IHRvIGF2b2lkIGFueSBsaW5r ZXIgb3B0aW1pemF0aW9uIGhldXJpc3RpYyBvbiBpbml0Y2FsbHMuCiAgKi8KLQogI2RlZmluZSBf X2RlZmluZV9pbml0Y2FsbChmbiwgaWQpIFwKIAlzdGF0aWMgaW5pdGNhbGxfdCBfX2luaXRjYWxs XyMjZm4jI2lkIF9fdXNlZCBcCiAJX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0Y2Fs bCIgI2lkICIuaW5pdCIpKSkgPSBmbjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2VjdGlv bnMuaCBiL2luY2x1ZGUvbGludXgvc2VjdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjY3NzFjNzI3YmNkMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUv bGludXgvc2VjdGlvbnMuaApAQCAtMCwwICsxLDg3IEBACisjaWZuZGVmIF9MSU5VWF9TRUNUSU9O U19ICisjZGVmaW5lIF9MSU5VWF9TRUNUSU9OU19ICisvKgorICogTGludXggZGUtZmFjdG8gc2Vj dGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3Jv ZkBrZXJuZWwub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMg b2YgY29weWxlZnQtbmV4dCAodmVyc2lvbiAwLjMuMSBvciBsYXRlcikgYXMgcHVibGlzaGVkCisg KiBhdCBodHRwOi8vY29weWxlZnQtbmV4dC5vcmcvLgorICovCisKKyNpbmNsdWRlIDxhc20vc2Vj dGlvbi1jb3JlLmg+CisjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CisKKyNpZm5kZWYgX19BU1NF TUJMWV9fCisKKy8qKgorICogRE9DOiBJbnRyb2R1Y3Rpb24KKyAqCisgKiBMaW51eCBkZWZpbmVz IGEgc2V0IG9mIGNvbW1vbiBoZWxwZXJzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFnYWluc3QgaXRz IHVzZQorICogb2Ygc3RhbmRhcmQgb3IgY3VzdG9tIExpbnV4IHNlY3Rpb25zLCB0aGlzIHNlY3Rp b24gaXMgZGVkaWNhdGVkIHRvIHRoZXNlCisgKiBoZWxwZXJzLgorICovCisKKy8qKgorICogTElO VVhfU0VDVElPTl9BTElHTk1FTlQgLSBnZXQgc2VjdGlvbiBhbGlnbm1lbnQKKyAqCisgKiBAbmFt ZTogc2VjdGlvbiBuYW1lCisgKgorICogR2l2ZXMgeW91IHRoZSBhbGlnbm1lbnQgZm9yIHRoZSBz ZWN0aW9uLgorICovCisjZGVmaW5lIExJTlVYX1NFQ1RJT05fQUxJR05NRU5UKG5hbWUpCV9fYWxp Z25vZl9fKCpWTUxJTlVYX1NZTUJPTChuYW1lKSkKKworLyoqCisgKiBMSU5VWF9TRUNUSU9OX1NU QVJUIC0gZ2V0IGFkZHJlc3Mgb2Ygc3RhcnQgb2Ygc2VjdGlvbgorICoKKyAqIEBuYW1lOiBzZWN0 aW9uIG5hbWUKKyAqCisgKiBUaGlzIGdpdmVzIHlvdSB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUg c2VjdGlvbi4KKyAqIFRoaXMgc2hvdWxkIGdpdmUgeW91IHRoZSBhZGRyZXNzIG9mIHRoZSBmaXJz dCBlbnRyeS4KKyAqCisgKi8KKyNkZWZpbmUgTElOVVhfU0VDVElPTl9TVEFSVChuYW1lKQlWTUxJ TlVYX1NZTUJPTChuYW1lKQorCisvKioKKyAqIExJTlVYX1NFQ1RJT05fRU5EIC0gZ2V0IGFkZHJl c3Mgb2YgZW5kIG9mIHRoZSBzZWN0aW9uCisgKgorICogQG5hbWU6IHNlY3Rpb24gbmFtZQorICoK KyAqIFRoaXMgZ2l2ZXMgeW91IHRoZSBlbmQgYWRkcmVzcyBvZiB0aGUgc2VjdGlvbi4KKyAqIFRo aXMgc2hvdWxkIGdpdmUgeW91IHRoZSBhZGRyZXNzIG9mIHRoZSBlbmQgb2YgdGhlCisgKiBzZWN0 aW9uLiBUaGlzIHdpbGwgbWF0Y2ggdGhlIHN0YXJ0IGFkZHJlc3MgaWYgdGhlCisgKiBzZWN0aW9u IGlzIGVtcHR5LgorICovCisjZGVmaW5lIExJTlVYX1NFQ1RJT05fRU5EKG5hbWUpCVZNTElOVVhf U1lNQk9MKG5hbWUjI19fZW5kKQorCisvKioKKyAqIERFQ0xBUkVfTElOVVhfU0VDVElPTiAtIERl Y2xhcmVzIGEgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqCisgKiBAdHlwZTogdHlwZSBvZiBjdXN0 b20gTGludXggc2VjdGlvbgorICogQG5hbWU6IGN1c3RvbSBzZWN0aW9uIG5hbWUKKyAqCisgKiBE ZWNsYXJlcyBhIHJlYWQtd3JpdGUgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqLworI2RlZmluZSBE RUNMQVJFX0xJTlVYX1NFQ1RJT04odHlwZSwgbmFtZSkJCQkJXAorCSBleHRlcm4gdHlwZSBWTUxJ TlVYX1NZTUJPTChuYW1lKVtdLCBcCisJCSAgICAgVk1MSU5VWF9TWU1CT0wobmFtZSMjX19lbmQp W10KKworLyoqCisgKiBERUNMQVJFX0xJTlVYX1NFQ1RJT05fUk8gLSBEZWNsYXJlcyBhIHJlYWQt b25seSBjdXN0b20gTGludXggc2VjdGlvbgorICoKKyAqIEB0eXBlOiB0eXBlIG9mIGN1c3RvbSBM aW51eCBzZWN0aW9uCisgKiBAbmFtZTogY3VzdG9tIHNlY3Rpb24gbmFtZQorICoKKyAqIERlY2xh cmVzIGEgcmVhZC1vbmx5IGN1c3RvbSBMaW51eCBzZWN0aW9uCisgKi8KKyNkZWZpbmUgREVDTEFS RV9MSU5VWF9TRUNUSU9OX1JPKHR5cGUsIG5hbWUpCQkJCVwKKwkgZXh0ZXJuIGNvbnN0IHR5cGUg Vk1MSU5VWF9TWU1CT0wobmFtZSlbXSwJCQlcCisJCQkgICBWTUxJTlVYX1NZTUJPTChuYW1lIyNf X2VuZClbXQorCisjZGVmaW5lIF9fU0VDVElPTl9DT1JFKHNlY3Rpb24sIGNvcmUsIG5hbWUsIGxl dmVsKQkJCVwKKwkjc2VjdGlvbiAiLi4iICNjb3JlICIuIiAjbmFtZSAiLiIgI2xldmVsCisKKyNl bmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KKworI2VuZGlmIC8qIF9MSU5VWF9TRUNUSU9OU19IICov Ci0tIAoyLjExLjAKCi0tClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBs aW5lICJ1bnN1YnNjcmliZSBzcGFyY2xpbnV4IiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8g bWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8v dmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWw= From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luis R. Rodriguez" Date: Sun, 15 Jan 2017 21:10:44 +0000 Subject: [PATCH v7 01/14] generic-sections: add section core helpers Message-Id: <20170115211057.17167-2-mcgrof@kernel.org> List-Id: References: <20170109145833.11502-1-mcgrof@kernel.org> <20170115211057.17167-1-mcgrof@kernel.org> In-Reply-To: <20170115211057.17167-1-mcgrof@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="macroman" Content-Transfer-Encoding: base64 To: bp@alien8.de, bp@suse.de, hpa@zytor.com, acme@redhat.com, tglx@linutronix.de, mingo@redhat.com, jpoimboe@redhat.com, npiggin@gmail.com, mhiramat@kernel.org, masami.hiramatsu.pt@hitachi.com, jbaron@akamai.com, heiko.carstens@de.ibm.com, ananth@linux.vnet.ibm.com, anil.s.keshavamurthy@intel.com, davem@davemloft.net, realmz6@gmail.com, dalias@libc.org, linux@arm.linux.org.uk Cc: x86@kernel.org, luto@amacapital.net, keescook@chromium.org, linux@roeck-us.net, torvalds@linux-foundation.org, gregkh@linuxfoundation.org, rusty@rustcorp.com.au, gnomes@lxorguk.ukuu.org.uk, alan@linux.intel.com, dwmw2@infradead.org, arnd@arndb.de, ming.lei@canonical.com, linux-arch@vger.kernel.org, benh@kernel.crashing.org, pebolle@tiscali.nl, fontana@sharpeleven.org, david.vrabel@citrix.com, konrad.wilk@oracle.com, mcb30@ipxe.org, jgross@suse.com, andrew.cooper3@citrix.com, andriy.shevchenko@linux.intel.com, paul.gortmaker@windriver.com, xen-devel@lists.xensource.com, ak@linux.intel.com, pali.rohar@gmail.com, dvhart@infradead.org, platform-driver-x86@vger.kernel.org, mmarek@suse.com, linux@rasmusvillemoes.dk, jkosina@suse.cz, korea.drzix@gmail.com, linux-kbuild@vger.kernel TGludXggbWFrZXMgZXh0ZW5zaXZlIHVzZSBvZiBjdXN0b20gRUxGIGhlYWRlciBzZWN0aW9ucywK ZG9jdW1lbnRhdGlvbiBmb3IgdGhlc2UgYXJlIHdlbGwgc2NhdHRlcmVkLiBVbmlmeSB0aGlzCmRv Y3VtZW50YXRpb24gaW4gYSBjZW50cmFsIHBsYWNlIGFuZCBwcm92aWRlIGhlbHBlcnMgdG8KYnVp bGQgY3VzdG9tIExpbnV4IHNlY3Rpb25zLgoKVGhpcyBhbHNvIGdlbmVyYWxpemVzIHNlY3Rpb25z IGNvZGUgdG8gZW5hYmxlIGF2b2lkaW5nCm1vZGlmeWluZyB0aGUgbGlua2VyIHNjcmlwdHMgd2hl biB3ZSB3YW50IHRvIGFkZCBuZXcKY3VzdG9tIExpbnV4IHNlY3Rpb25zLiBJbiBvcmRlciB0byBt YWtlIHRoaXMgZ2VuZXJhbGx5CnVzZWZ1bCB3ZSBuZWVkIHRvIGVuc3VyZSBhbGwgYXJjaGl0ZWN0 dXJlcyBjYW4gbWFrZSB1c2Ugb2YKY29yZSBzZWN0aW9uIGhlbHBlcnMgYnV0IHRoYXQgdGhleSBj YW4gYWxzbyBvdmVycmlkZSBzaG91bGQKdGhpcyBiZSBuZWVkZWQuIEluc3RlYWQgb2YgcmVseWlu ZyBvbiBzZWN0aW9uLmggdGhpcyBhZGRzCmEgc2VjdGlvbnMtY29yZS5oIHNpbmNlIHRoaXMgd2ls bCBiZSB0YXJnZXRlZCB0byBiZSBzYWZlCnRvIGJlIHVzZWQgb24gYXNtIGNvZGUsIGxpbmtlciBz Y3JpcHRzIGFuZCBDIGNvZGUuCgp2NzogcmFuIGlzcGVsbCB0byBmaXggc3BlbGxpbmcgYXMgcmVx dWVzdGVkIGJ5IEJvcmlzCgp2NToKCm8gSHVnZSBkb2N1bWVudGF0aW9uIHJldmFtcCBiYXNlZCBv biBhIGNhcmVmdWwgcmV2aWV3IG9mIHRoZSBFTEYKICBzcGVjaWZpY2F0aW9ucy4gSW5jbHVkZXMg ZG9jdW1lbnRhdGlvbiBub3cgYWxzbyBhYm91dCB1c2FnZSBvZgogIHR3byBkb3RzICguLikgd2hl biBwcmVmaXhpbmcgRUxGIHByb2dyYW0gc3BlY2lmaWMgc2VjdGlvbnMuCgpvIFJlcGxhY2UgbWFj cm9zIGZvciBzZWN0aW9ucyBuYW1lcyBpbiBmYXZvciBvZiBqdXN0IHVzaW5nCiAgdGhlIHNlY3Rp b24gbmFtZXMgZXhwbGljaXRseSBpbiB0aGUgbGlua2VyIHNjcmlwdC4gVGhpcyBpcwogIHBlcmhh cHMgbW9yZSB3b3JrIHRvIGdyZXAgYnV0IHRoaXMgaXMgd2hhdCBmb2xrcyBzZWVtIHRvCiAgY3Vy cmVudGx5IHByZWZlci4KCm8gRml4IC50ZXh0IGFuZCAucm9kYXRhIGRvY3VtZW50YXRpb24gdG8g ZXhwbGFpbiBtZW1vcnkgcHJvdGVjdGlvbgogIHN0cmF0ZWdpZXMgd2hpY2ggYXJjaGl0ZWN0dXJl cyBjYW4gZW1icmFjZSB1cG9uIGluaXRpYWxpemF0aW9uCiAgKGRvY3VtZW50cyBDT05GSUdfREVC VUdfUk9EQVRBIGFuZCBtYXJrX3JvZGF0YV9ybygpKQoKbyBTa2lwIHRoZSAnTGludXggc2VjdGlv biBvcmRlcmluZycgZG9jdW1lbnRhdGlvbiBzZWN0aW9uLCB3ZSdsbCBpbnN0ZWFkCiAgYWRkIHRo aXMgb24gc3Vic2VxdWVudCBwYXRjaCB3aGljaCB3aWxsIGV4cGFuZCBvbiBpdCBjb25zaWRlcmFi bHkKCm8gRHJvcHBlZCB0cmVlIG9uIE1BSU5UQUlORVJTIC0tIGFzIHBlciBkaXNjdXNzaW9ucyB3 aXRoIEFybmQsIGhwYSBhbmQKICBKb3NoLCBpdHMgZWFzaWVyIHRvIGp1c3QgbGV0IGNoYW5nZXMg Zm9yIHNlY3Rpb25zIGdvIGluIHRocm91Z2ggdGhlCiAgcmVzcGVjdGl2ZSB0cmVlIHRoYXQgbmVl ZHMgdGhlIGNoYW5nZXMuCgpvIEZpeCB0eXBvcyBvbiBkb2N1bWVudGF0aW9uCgpvIERyb3BwZWQg U0VDVElPTl9BTEwoKSwgX19TRUNUSU9OX0NPUkUoKSwgU0VDVElPTl9DT1JFX0FMTCgpIG1hY3Jv cwogIHNpbmNlIHdlIGFyZSBmYXZvcmluZyB1c2luZyBleHBsaWNpdCBzZWN0aW9uIG5hbWVzLiBU aGVzZSBhcmUKICB1c2VsZXNzIGlmIHdlIGFyZSBiZWluZyBleHBsaWNpdC4KCm8gRHJvcCBMSU5V WF9TRUNUSU9OX1NJWkUoKSwgTElOVVhfU0VDVElPTl9FTVBUWSgpIGluIGZhdm9yIG9mIGhhdmlu ZwogIHNlY3Rpb24gcmFuZ2VzIGFuZCBsaW5rZXIgdGFibGVzIGRlZmluZSB0aGVpciBvd24sIHRv IGF2b2lkIGNvbmZ1c2lvbgogIGFuZCBtYWtlIGNvZGUgbW9yZSByZWFkYWJsZS4KCm8gQWRkIF9f ZGVmaW5lX2luaXRjYWxsKCkgZG9jdW1lbnRhdGlvbiBhbmQgYSBzbWFsbCBzZWN0aW9uIGRlc2Ny aWJpbmcKICBvdXIgY3VycmVudCBpbml0Y2FsbCBsZXZlbHMuIFRoaXMgc2hvdWxkIGhlbHAgYWxz byBjbGFyaWZ5IHdoYXQgd2FzCiAgbWVhbnQgYWJvdXQga2VlcGluZyBiYWNrd2FyZCBjb21wYXRp YmlsaXR5LgoKdjQ6CgpvIFBvcnQgdG8gc2hpbnkgbmV3IHNwaGlueCBkb2N1bWVudGF0aW9uIGZv cm1hdAoKbyBmaXggYSB1bmljb3JlMzIgYnVpbGQsIHR1cm5zIG91dCB0aGlzIGFjdHVhbGx5IGZp eGVzIHVuaWNvcmUzMgogIGRlZmNvbmZpZyBidWlsZHMgd2hpY2ggd2VyZSBmYWlsaW5nIGZvciBh IGxvbmcgd2hpbGUuIHVuaWNvcmUzMgogIGRvZXMgbm90IHNlZW0gdG8gZ3JvayB3ZWxsIHRoZSB0 eXBlIHBhc3NlZCBvbiBhIHNlY3Rpb24gZGVjbGFyYXRpb24sCiAgdGhpcyBpZ25vcmVzIGl0LgoK byBVc2UgVk1MSU5VWF9TWU1CT0woKSBpbiBtb3JlIHVzZXIgc3ltYm9scyAoZXh0ZXJuIEMgY29k ZSksIG5vdCBkb2luZwogIHRoaXMgd2FzIGNhdXNpbmcgZmluYWwgbGlua2VyIGlzc3VlcyB3aXRo IGJsYWNrZmluIC0tIHRoaXMgaXMKICBhIENPTkZJR19IQVZFX1VOREVSU0NPUkVfU1lNQk9MX1BS RUZJWD15IGFyY2hpdGVjdHVyZS4gVGhlIG90aGVyIG9uZQogIGJlaW5nIG1ldGF0YWcuIG1ldGF0 YWcgaXMgbm90IHN1cHBvcnRlZCBvbiAwLWRheSBzbyBJIGNhbm5vdCBjb25maXJtCiAgY29tcGls YXRpb24gdGhlcmUuCgpvIEFkZGVkIFNFQ1RJT05fQ09SRSgpIGZvciBDIGNvZGUsIHVzZWQgbGF0 ZXIgYnkgX19MSU5VWF9SQU5HRSgpCgpvIFNpbmNlIFNFQ1RJT05fQ09SRSgpIGlzIGRlZmluZWQg Zm9yIGxpbmtlciBzY3JpcHQgYW5kIEMgY29kZSwgc2hhcmUKICB0aGUgc2FtZSBoZWxwZXIgYW5k IGp1c3QgdXNlIGEgX19zdHJpbmdpZnkoKSBmb3IgdGhlIEMgY29kZSBhcyBpcyBkb25lCiAgZm9y IHRoZSBvdGhlciBDIGhlbHBlcnMuCgpvIG1vdmUgZ2VuZXJpYyBzZWN0aW9ucyB0byBhc20tZ2Vu ZXJpYy9zZWN0aW9uLWNvcmUuaCBpbnN0ZWFkLgogIFBvd2VyUEMgY29tcGlsYXRpb24gYmxvd3Mg dXAgaWYgYXNtL2p1bXBfbGFiZWxzLmggZ2V0cwogIHNlY3Rpb24uaCBpbmNsdWRlZCwgZml4aW5n IHRoaXMgaXMgbm90IGluIGFueSB3YXkgZWFzeS4KICBUaGUgbGlzdCBvZiBpc3N1ZXMgYXJlIGVu ZGxlc3MuIE1vdmluZyBuZXcgZGF0YSB0byBhIG5ldwogIHNpbXBsZSBmaWxlIHJlc29sdmVzIHRo aXMuCgpvIHNpbmNlIHRoaW5ncyBhcmUgbm93IGluIGFzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5o IHRoZQogIGd1YXJkIGNoYW5nZXMgb24gYXNtLWdlbmVyaWMvc2VjdGlvbnMuaCBhbmQgZWFjaCBh cmNoaXRlY3R1cmUKICBzZWN0aW9ucy5oIGFyZSBubyBsb25nZXIgbmVlZGVkCgpvIEdpdmUgZ2Vu ZXJpYyBzZWN0aW9ucyBzb21lIG1haW50YWluZXIgbG92ZSwgdGhhdCBjaGFuZ2UgaXMKICBBY2tl ZC1ieSBBcm5kIEJlcmdtYW5uLCBKb3NoIGFuZCBocGEuCgpvIEEgZmV3IGNoZWNrcGF0Y2gucGwg c3R5bGUgZml4ZXMKCm8gQXMgc3VnZ2VzdGVkIGJ5IEphbWVzIEhvZ2FuIHVzZSBnZW5lcmljLXkg dG8gY29weSBnZW5lcmljCiAgaGVhZGVyIGZpbGVzIG9uIGFyY2hpdGVjdHVyZXMgdGhhdCBkbyBu b3QgaGF2ZSBhIHNlY3Rpb25zLmgKICBpbnN0ZWFkIG9mIHdyaXRpbmcgYSBzaW1wbGUgZmlsZSBv bmx5IHRvIGluY2x1ZGUgdGhlIGdlbmVyaWMgb25lLgoKdjM6CgpvIGFkZCBtaXNzaW5nIHNlY3Rp b25zLmggZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBkaWQgbm90CiAgaGF2ZSBpdAoKbyBtb3ZlIGdl bmVyaWMgc2VjdGlvbnMgdG8gYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAoKbyBhZGQgZ2VuZXJpYyBh c20gaGVscGVycyBzZWN0aW9uX3R5cGUoKSwgc2VjdGlvbl90eXBlX2FzbXR5cGUoKSwKICBwdXNo X3NlY3Rpb25fdHlwZSgpIC0tIHRoZXNlIGhlbHBlcnMgZW5hYmxlIGVhc3kgdXNlIGZvcgogIGZv ciBsYXRlciBkZWNsYXJpbmcgYW5kIHVzaW5nIG9mIGN1c3RvbSBMaW51eCBzZWN0aW9ucyB1c2lu ZwogIG1vcmUgc3RhbmRhcmQgQVBJcyBpbiBib3RoIEMgY29kZSwgYXNtIGNvZGUgKEMgYXNtIGNh bGxzLCBvcgogIGFzbSBmaWxlcyksIGVuYWJsaW5nIGZ1dHVyZSBzdGFuZGFyZGl6ZWQgc2VjdGlv biB0eXBlcyB0bwogIGJlIG1vcmUgaW1tZWRpYXRlbHkgYWNjZXNzaWJsZSB0byBhc20gY29kZSwg bm90IGp1c3QgQyBjb2RlLgogIE5vdGUgZm9yIEFTTV9DTURfU0VQIHdlIHVzZSBieSBkZWZhdWx0 ICJcbiIsIGFyY2hpdGVjdHVyZXMgbmVlZGVkCiAgdG8gb3ZlcnJpZGUgY2FuIGRvIHNvIG9uIHRo ZWlyIG93biBzZWN0aW9ucy5oIHByaW9yIHRvIGluY2x1c2lvbgogIG9mIGFzbS1nZW5lcmljL3Nl Y3Rpb25zLmgKClNpZ25lZC1vZmYtYnk6IEx1aXMgUi4gUm9kcmlndWV6IDxtY2dyb2ZAa2VybmVs Lm9yZz4KLS0tCiBEb2N1bWVudGF0aW9uL2luZGV4LnJzdCAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2JhY2tncm91bmQucnN0ICAgICB8IDEwNSArKysr KysrKysrCiBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkgICAgICAgICAgICB8ICAgNCAr CiBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2luZGV4LnJzdCAgICAgICAgICB8ICAxNyArKwogRG9j dW1lbnRhdGlvbi9zZWN0aW9ucy9zZWN0aW9uLWNvcmUucnN0ICAgfCAxNDggKysrKysrKysrKysr KysKIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsrCiBh cmNoL2FscGhhL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2Fy Yy9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2FybS9pbmNs dWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2FybTY0L2luY2x1ZGUv YXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2F2cjMyL2luY2x1ZGUvYXNtL0ti dWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL0tidWls ZCAgICAgICAgICB8ICAgMSArCiBhcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBhcmNoL2NyaXMvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8 ICAgMSArCiBhcmNoL2Zydi9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICAgICB8ICAgMSAr CiBhcmNoL2g4MzAwL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNo L2hleGFnb24vaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICB8ICAgMSArCiBhcmNoL2lhNjQv aW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL20zMnIvaW5jbHVk ZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL202OGsvaW5jbHVkZS9hc20v S2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL21ldGFnL2luY2x1ZGUvYXNtL0tidWls ZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vS2J1aWxk ICAgICAgICB8ICAgMSArCiBhcmNoL21pcHMvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAg ICB8ICAgMSArCiBhcmNoL21uMTAzMDAvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICB8ICAg MSArCiBhcmNoL25pb3MyL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICB8ICAgMSArCiBh cmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICB8ICAgMSArCiBhcmNoL3Bh cmlzYy9pbmNsdWRlL2FzbS9LYnVpbGQgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3Bvd2VycGMv aW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICB8ICAgMSArCiBhcmNoL3MzOTAvaW5jbHVkZS9h c20vS2J1aWxkICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3Njb3JlL2luY2x1ZGUvYXNtL0ti dWlsZCAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZCAgICAg ICAgICAgICAgICB8ICAgMSArCiBhcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAg ICAgICB8ICAgMSArCiBhcmNoL3RpbGUvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICB8 ICAgMSArCiBhcmNoL3VtL2luY2x1ZGUvYXNtL0tidWlsZCAgICAgICAgICAgICAgICB8ICAgMSAr CiBhcmNoL3VuaWNvcmUzMi9pbmNsdWRlL2FzbS9zZWN0aW9uLWNvcmUuaCB8ICAxOSArKwogYXJj aC94ODYvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgICAgfCAgIDEgKwogYXJjaC94dGVu c2EvaW5jbHVkZS9hc20vS2J1aWxkICAgICAgICAgICAgfCAgIDEgKwogaW5jbHVkZS9hc20tZ2Vu ZXJpYy9zZWN0aW9uLWNvcmUuaCAgICAgICAgfCAzMDcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmggICAgICAgICAgICB8ICAgMiAr CiBpbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmggICAgICAgICB8ICAgMSArCiBpbmNs dWRlL2xpbnV4L2luaXQuaCAgICAgICAgICAgICAgICAgICAgICB8ICA4OSArKysrKysrLS0KIGlu Y2x1ZGUvbGludXgvc2VjdGlvbnMuaCAgICAgICAgICAgICAgICAgIHwgIDg3ICsrKysrKysrKwog NDIgZmlsZXMgY2hhbmdlZCwgODA5IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vc2VjdGlvbnMvYmFja2dyb3VuZC5yc3QKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2NvbmYucHkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL3NlY3Rpb25zL2luZGV4LnJzdAogY3JlYXRlIG1vZGUg MTAwNjQ0IERvY3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdAogY3JlYXRlIG1v ZGUgMTAwNjQ0IGFyY2gvdW5pY29yZTMyL2luY2x1ZGUvYXNtL3NlY3Rpb24tY29yZS5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvc2VjdGlvbnMuaAoKZGlmZiAtLWdpdCBhL0RvY3Vt ZW50YXRpb24vaW5kZXgucnN0IGIvRG9jdW1lbnRhdGlvbi9pbmRleC5yc3QKaW5kZXggY2I1ZDc3 Njk5YzYwLi43MWUwMzA1YzAzNmQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaW5kZXgucnN0 CisrKyBiL0RvY3VtZW50YXRpb24vaW5kZXgucnN0CkBAIC01Nyw2ICs1Nyw3IEBAIG5lZWRlZCku CiAgICBtZWRpYS9pbmRleAogICAgZ3B1L2luZGV4CiAgICBzZWN1cml0eS9pbmRleAorICAgc2Vj dGlvbnMvaW5kZXgKICAgIHNvdW5kL2luZGV4CiAgICBjcnlwdG8vaW5kZXgKIApkaWZmIC0tZ2l0 IGEvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9iYWNrZ3JvdW5kLnJzdCBiL0RvY3VtZW50YXRpb24v c2VjdGlvbnMvYmFja2dyb3VuZC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi40ZjA0YzA2ODJhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL3Nl Y3Rpb25zL2JhY2tncm91bmQucnN0CkBAIC0wLDAgKzEsMTA1IEBACis9PT09PT09PT09PQorRUxG IHNlY3Rpb24gYmFja2dyb3VuZAorPT09PT09PT09PT0KKworQWJvdXQKKz09KworVGhlIHB1cnBv c2Ugb2YgdGhpcyBjaGFwdGVyIGlzIHRvIGhlbHAgdGhvc2Ugbm90IGZhbWlsaWFyIHdpdGggRUxG IHRvIGJydXNoIHVwCit0aGUgbGF0ZXN0IEVMRiBzcGVjaWZpY2F0aW9ucyBpbiBvcmRlciB0byBo ZWxwIHVuZGVyc3RhbmQgaG93IExpbnV4IHVzZXMgYW5kCitkZWZpbmVzIGl0cyBvd24gRUxGIHNl Y3Rpb25zLgorCitTdGFuZGFyZGl6ZWQgRUxGCis9PT09PT09PQorCitUaGUgZmlyc3QgcHVibGlj YXRpb24gZG9jdW1lbnRpbmcgRUxGIHdhcyBVTklYIFN5c3RlbSBMYWJvcmF0b3JpZXMnIChVU0wp CisqU3lzdGVtIFYgUmVsZWFzZSA0IEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UqIChgU1JW NCBBQklgXykgc3BlY2lmaWNhdGlvbi4KK09yaWdpbmFsbHkgRUxGIHdhcyBvbmx5IGEgc21hbGwg cGFydCBvZiB0aGUgU1JWNCBBQkksIHdpdGggdGltZSBob3dldmVyIG5ldworc3BlY2lmaWNhdGlv bnMgb25seSBwdXQgZm9jdXMgb24gRUxGLCBzdWNoIHdhcyB0aGUgY2FzZSBvZiB0aGUgKlRJUyBQ b3J0YWJsZQorRm9ybWF0cyBTcGVjaWZpY2F0aW9uIHZlcnNpb24gMS4yKiAoYFRJUyAxLjJgXyku IEFzIG9mIFRJUyAxLjIsIEVMRiB3YXMKK3N1cHBsZW1lbnRlZCB3aXRoIHByb2Nlc3NvciBzcGVj aWZpYyBFTEYgYWRkZW5kdW1zLCBhdmFpbGFibGUgb24gdGhlICpMaW51eAorRm91bmRhdGlvbiBy ZWZlcmVuY2VkIHNwZWNpZmljYXRpb24gcGFnZSogKGBMRiByZWYgcGFnZWBfKS4gVGhlIGxhdGVz dCBFTEYKK3NwZWNpZmljYXRpb24gaXMgdGhlICpTeXN0ZW0gViBBcHBsaWNhdGlvbiBCaW5hcnkg SW50ZXJmYWNlIC0gRFJBRlQgLSAyNCBBcHJpbAorMjAwMSogKGBnYWJpNGBfKS4KKworLi4gX1NS VjQgQUJJOiBodHRwOi8vd3d3LnNjby5jb20vZGV2ZWxvcGVycy9kZXZzcGVjcy9nYWJpNDEucGRm CisuLiBfVElTIDEuMjogaHR0cHM6Ly9yZWZzcGVjcy5saW51eGJhc2Uub3JnL2VsZi9lbGYucGRm CisuLiBfTEYgcmVmIHBhZ2U6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy8KKy4uIF9n YWJpNDogaHR0cHM6Ly9yZWZzcGVjcy5saW51eGJhc2Uub3JnL2VsZi9nYWJpNCsvY29udGVudHMu aHRtbAorCitFTEYgdmlld3Mgb24gTGludXgKKz09PT09PT09PQorCitUaGVyZSBhcmUgdHdvIHZp ZXdzIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBpbnNwZWN0aW5nIGRhdGEgaW4gYW4gRUxGIGZpbGUs IGEKK0xpbmtpbmcgdmlldywgYW5kIGFuIEV4ZWN1dGlvbiB2aWV3LiBBIFNlY3Rpb24gSGVhZGVy IFRhYmxlIGVuYWJsZXMgb25lIHRvCitkZXNjcmliZSBhbiBvYmplY3QgdXNpbmcgdGhlIExpbmtp bmcgdmlldyB3aGlsZSBhIFByb2dyYW0gSGVhZGVyIFRhYmxlIGVuYWJsZXMKK29uZSB0byBkZXNj cmliZSBhbiBvYmplY3QgdXNpbmcgdGhlIEV4ZWN1dGlvbiB2aWV3LiBUaGUgdmlld3MgYXJlIG5v dCBtdXR1YWxseQorZXhjbHVzaXZlLiBGb3IgaW5zdGFuY2UsIHZtbGludXggY2FuIGJlIHZpZXdl ZCB1bmRlciBib3RoIHZpZXdzLCBgYHJlYWRlbGYgLVMKK3ZtbGludXhgYCBmb3IgdGhlIExpbmtp bmcgdmlldywgYW5kIGBgcmVhZGVsZiAtbCB2bWxpbnV4YGAgZm9yIHRoZSBFeGVjdXRpb24KK3Zp ZXcuICBJbiBMaW51eCBvbmx5IHRoZSB2bWxpbnV4IGZpbGUgd2lsbCBoYXZlIGFuIEV4ZWN1dGlv biB2aWV3LCBldmVuIG1vZHVsZXMKK2xhY2sgYW4gRXhlY3V0aW9uIHZpZXcgZ2l2ZW4gdGhhdCB2 bWxpbnV4IGlzIHRoZSBvbmx5IGZpbGUgdGhhdCBkZXNjcmliZXMgaG93Cit0aGUgdGhlIGtlcm5l bCBydW5zIGZyb20gdGhlIHN0YXJ0LiAgQWxsIG90aGVyIExpbnV4IGtlcm5lbCBvYmplY3QgZmls ZXMgaGF2ZQorYW4gYXZhaWxhYmxlIExpbmtpbmcgdmlldy4KKworVW5kZXIgdGhlIExpbmtpbmcg dmlldywgdGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGRlc2NyaWJlcyBhbGwgYXZhaWxhYmxlCitz ZWN0aW9ucy4gVGhlIFNlY3Rpb24gSGVhZGVyIFRhYmxlIGlzIGFuIGFycmF5IG9mIEVMRiBzZWN0 aW9uIGhlYWRlciBkYXRhCitzdHJ1Y3R1cmVzLiBJZiBvbiBhIDMyLWJpdCBzeXN0ZW0gdGhpcyBp cyBgYHN0cnVjdCBlbGYzMl9zaGRgYCwgaWYgb24gYSA2NC1iaXQKK3RoaXMgaXMgYGBzdHJ1Y3Qg ZWxmNjRfc2hkcmBgLiBTZWN0aW9ucyBhcmUgb25seSB2aXNpYmxlIG9uIG9iamVjdCBmaWxlcyB0 aGF0CitoYXZlIGEgTGlua2luZyB2aWV3LCBzaW5jZSBhbGwgTGludXgga2VybmVsIGZpbGVzIGhh dmUgTGlua2luZyB2aWV3LCBhbGwga2VybmVsCitvYmplY3RzIGhhdmUgRUxGIHNlY3Rpb25zLgor CitMaW1pdGF0aW9ucyBvbiBFTEYgc2VjdGlvbnMKKz09PT09PT09PT09PT0rCitXZSBwcm92aWRl IGEgc3VtbWFyeSBvbiB0aGUgbGltaXRhdGlvbnMgb2YgRUxGIHNlY3Rpb25zLiBSZWZlciB0byB0 aGUgcHVibGljCitFTEYgc3BlY2lmaWNhdGlvbnMgZm9yIGRldGFpbHMuIE5vdGUgdGhhdCA2NC1i aXQgbGltaXRhdGlvbnMgbWF5IGRlcGVuZAorb24gcHJvY2Vzc29yIHNwZWNpZmljIHNlY3Rpb24g YXR0cmlidXRlcyB0byBiZSB1c2VkLCByZWZlciB0byB5b3VyIHByb2Nlc3Nvcgorc3BlY2lmaWNh dGlvbiBpZiB1bnN1cmUuCisKK0l0cyB3b3J0aCBlbGFib3JhdGluZyBvbiB0aGUgbGltaXRhdGlv bnMgb24gdGhlIG5hbWUgb2YgYW4gRUxGIHNlY3Rpb246CitFTEYgc2VjdGlvbiBuYW1lcyBhcmUg c3RvcmVkIGFzIHN0cmluZ3MgYXMgcGVyIHRoZSBFTEYgc3BlY2lmaWNhdGlvbiwgYW5kCithcyBj YW4gYmUgZXhwZWN0ZWQsIHRoZXNlIGRvbid0IGhhdmUgZXhwbGljaXQgbGltaXRhdGlvbnMuIFRo ZSBpbXBsaWNpdAorbGltaXRhdGlvbiB0aGVuIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgYW4gRUxG IG9iamVjdCBmaWxlIGFuZCBFTEYgc2VjdGlvbi4KKworSWYgdXNpbmcgcmVhbGx5IGxhcmdlIGtl cm5lbHMgb3Igb2JqZWN0cyB3aXRoIGxhcmdlIGFtb3VudHMgb2Ygc2VjdGlvbnMgb25lCit3b3Vs ZCBzdGlsbCBuZWVkIHRvIGJlIHN1cmUgdGhhdCBFTEYgbG9hZGVyIGluIGNoYXJnZSBvZiBsb2Fk aW5nIHRoZSBMaW51eAora2VybmVsIGlzIHByb3Blcmx5IHVwZGF0ZWQgdG8gaGFuZGxlIGNvcGlu ZyB3aXRoIHRoZSBsYXRlc3QgRUxGIGV4dGVuc2lvbnMuCisKKyAgIC4uIGZsYXQtdGFibGU6OiBM aW1pdGF0aW9ucyBvbiBFTEYgU2VjdGlvbnMKKworICAgICAgKiAtIFNlY3Rpb24gYXR0cmlidXRl CisgICAgICAgIC0gMzItYml0CisgICAgICAgIC0gNjQtYml0CisKKyAgICAgICogLSBFTEYgc2Vj dGlvbiBuYW1lCisgICAgICAgIC0gU2l6ZSBvZiBhbiBFTEYgc2VjdGlvbgorICAgICAgICAtIFNp emUgb2YgYW4gRUxGIHNlY3Rpb24KKworICAgICAgKiAtIFNpemUgb2YgYW4gRUxGIHNlY3Rpb24K KyAgICAgICAgLSA0IEdpQgorICAgICAgICAtIDE2IEVpQgorCisgICAgICAqIC0gTWF4IG51bWJl ciBvZiBzZWN0aW9ucyBpbiBhbiBvYmplY3QgZmlsZQorICAgICAgICAtIDQgR2lFbnRyaWVzICg0 Mjk0OTY3Mjk2KQorICAgICAgICAtIDE2IEVpRW50cmllcyAoMTg0NDY3NDQwNzM3MDk1NTE2MTYp CisKK1Byb2dyYW0gc3BlY2lmaWMgRUxGIHNlY3Rpb25zCis9PT09PT09PT09PT09PSsKK1RoZSBF TEYgc3BlY2lmaWNhdGlvbiBhbGxvd3MgZm9yIGEgc2VjdGlvbiB0eXBlIHRvIGJlIHNwZWNpZmll ZCBhcworKlByb2dyYW0gc3BlY2lmaWMgc2VjdGlvbiosIGRlZmluZWQgYXMgYGBTSFRfUFJPR0JJ VFNgYC4gVGhpcyBzZWN0aW9ucyB0eXBlCitlbmFibGVzIHByb2dyYW1zIHRvIGN1c3RvbWl6ZSBz ZWN0aW9ucyBmb3IgdGhlaXIgb3duIHVzZS4gSW4gYXNzZW1ibHkgdGhpcworc3BlY2lmaWVkIGBg QHByb2diaXRzYGAgb24gbW9zdCBhcmNoaXRlY3R1cmVzLCBvbiBBUk0gdGhpcyBpcyBgYCVwcm9n Yml0c2BgLgorCitgYFNIVF9QUk9HQklUU2BgIGlzIHVzZWQgYnkgTGludXggZm9yIGRlZmluaW5n IGFuZCB1c2luZyBMaW51eCBFTEYgc2VjdGlvbnMuCisKK1NwZWNpYWwgRUxGIFNlY3Rpb25zCis9 PT09PT09PT09CisKK1RoZSBFTEYgc3BlY2lmaWNhdGlvbiBkZWZpbmVzICpTcGVjaWFsIEVMRiBT ZWN0aW9ucyogb24gY2hhcHRlciA0IChgZ2FiaTQKK2NoNGBfKS4gVGhlc2UgYXJlIGRlZmluZWQg YXMgc2VjdGlvbnMgd2hpY2ggaG9sZCBwcm9ncmFtIGFuZCBjb250cm9sCitpbmZvcm1hdGlvbi4g T2YgdGhlc2Ugc2VjdGlvbnMsIGEgZmV3IGhhdmUgdGhlIHNlY3Rpb24gdHlwZSBhcworYGBTSFRf UFJPR0JJVFNgYC4gVGhpcyBlbmFibGVzIExpbnV4IHRvICpmdXJ0aGVyIGN1c3RvbWl6ZSogdXNl IG9mIHRoZSBzZWN0aW9uCitiZXlvbmQgd2hhdCB0aGUgRUxGIHNwZWNpZmljYXRpb24gc3VnZ2Vz dHMuCisKKy4uIF9nYWJpNCBjaDQ6IGh0dHBzOi8vcmVmc3BlY3MubGludXhiYXNlLm9yZy9lbGYv Z2FiaTQrL2NoNC5zaGVhZGVyLmh0bWwjc3BlY2lhbF9zZWN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9j dW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5IGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25m LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmFhMWM1NzU5NWUx Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9zZWN0aW9ucy9jb25mLnB5CkBAIC0w LDAgKzEsNCBAQAorIyAtKi0gY29kaW5nOiB1dGYtODsgbW9kZTogcHl0aG9uIC0qLQorCitwcm9q ZWN0ID0gJ0xpbnV4IEtlcm5lbCBFTEYgc2VjdGlvbnMnCitodG1sX3NlYXJjaF9sYW5ndWFnZSA9 ICdlbicKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdGlvbnMvaW5kZXgucnN0IGIvRG9j dW1lbnRhdGlvbi9zZWN0aW9ucy9pbmRleC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi5mMzc1MTFlZjA1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0 aW9uL3NlY3Rpb25zL2luZGV4LnJzdApAQCAtMCwwICsxLDE3IEBACis9PT09PT09PT09PT0rTGlu dXggS2VybmVsIEVMRiBzZWN0aW9ucworPT09PT09PT09PT09KworVGhpcyBib29rIGRvY3VtZW50 cyB0aGUgZGlmZmVyZW50IEVMRiBzZWN0aW9ucyB1c2VkIG9uIHRoZSBMaW51eCBrZXJuZWwuCitX ZSBzdGFydCBvZmYgYnkgcHJvdmlkaW5nIHJlZmVyZW5jZXMgdG8gaG93IEVMRiB3YXMgc3RhbmRh cmRpemVkLCByZWZlcmVuY2VzCit0byB0aGUgc3RhbmRhcmRzIG9uIEVMRiBzZWN0aW9ucywgcmV2 aWV3IGxpbWl0YXRpb25zIG9mIEVMRiBzZWN0aW9ucywgYW5kCitmaW5hbGx5IGhvdyBMaW51eCB1 c2VzIEVMRiBzZWN0aW9ucyBpbiB0aGUgTGludXgga2VybmVsLiBDZXJ0YWluIGltcG9ydGFudAor TGludXggRUxGIHNlY3Rpb25zIGFyZSBkb2N1bWVudGVkIGNhcmVmdWxseTogd2UgZGVzY3JpYmUg dGhlIGdvYWwgb2YgdGhlCitFTEYgc2VjdGlvbiwgYW5kIGFkZHJlc3MgY29uY3VycmVuY3kgY29u c2lkZXJhdGlvbnMgd2hlbiBhcHBsaWNhYmxlLiBBIGZldworY29tbW9uIGEgc2V0IG9mIExpbnV4 IGhlbHBlcnMgZm9yIEVMRiBzZWN0aW9ucyBhcmUgYWxzbyBkb2N1bWVudGVkLgorCisuLiB0b2N0 cmVlOjoKKyAgIDptYXhkZXB0aDogNAorCisgICBiYWNrZ3JvdW5kCisgICBzZWN0aW9uLWNvcmUK ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdCBiL0Rv Y3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLmFjNTgxNWEwZDliMwotLS0gL2Rldi9udWxsCisrKyBiL0Rv Y3VtZW50YXRpb24vc2VjdGlvbnMvc2VjdGlvbi1jb3JlLnJzdApAQCAtMCwwICsxLDE0OCBAQAor PT09PT09PT09PT09PT09PT0rTGludXggRUxGIHByb2dyYW0gc3BlY2lmaWMgc2VjdGlvbnMKKz09 PT09PT09PT09PT09PT09KworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2Vj dGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IEVMRiBwcm9ncmFtIHNwZWNpZmljIHNlY3Rpb25z CisKK0xpbnV4IGxpbmtlciBzY3JpcHQKKz09PT09PT09PSsKKy4uIGtlcm5lbC1kb2M6OiBpbmNs dWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiBMaW51eCBsaW5rZXIgc2Ny aXB0CisKK01lbW9yeSBwcm90ZWN0aW9uCistLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVsLWRv Yzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IE1lbW9yeSBw cm90ZWN0aW9uCisKK21hcmtfcm9kYXRhX3JvCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLi4g a2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvaW5pdC5oCisgICA6ZnVuY3Rpb25zOiBtYXJrX3Jv ZGF0YV9ybworCisucm9kYXRhCistLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9hc20t Z2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLnJvZGF0YQorCisudGV4dAorLS0tLS0K Ky4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6 ZG9jOiAudGV4dAorCisuZGF0YQorLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLmRhdGEKKworTGludXggLmlu aXRcKiBzZWN0aW9ucworPT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNt LWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IExpbnV4IGluaXQgc2VjdGlvbnMKKwor LmluaXQudGV4dAorLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVy aWMvc2VjdGlvbi1jb3JlLmgKKyAgIDpkb2M6IC5pbml0LnRleHQKKworLmluaXQuZGF0YQorLS0t LS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3Jl LmgKKyAgIDpkb2M6IC5pbml0LmRhdGEKKworLmluaXQucm9kYXRhCistLS0tLS0tLS0tLS0KKy4u IGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9j OiAuaW5pdC5yb2RhdGEKKworSW5pdGNhbGwgbGV2ZWxzCistLS0tLS0tLS0tLS0tLS0KKy4uIGtl cm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L2luaXQuaAorICAgOmRvYzogSW5pdGNhbGwgbGV2ZWxz CisKKy5pbml0Y2FsbAorLS0tLS0tLS0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRl L2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAuaW5pdGNhbGwKKworX19kZWZp bmVfaW5pdGNhbGwKKy0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9s aW51eC9pbml0LmgKKyAgIDpmdW5jdGlvbnM6IF9fZGVmaW5lX2luaXRjYWxsCisKK0xpbnV4IC5l eGl0XCogc2VjdGlvbnMKKz09PT09PT09PT09CisKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2Fz bS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiBMaW51eCBleGl0IHNlY3Rpb25zCisK Ky5leGl0LnRleHQKKy0tLS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5l cmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAuZXhpdC50ZXh0CisKKy5leGl0LmRhdGEKKy0t LS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29y ZS5oCisgICA6ZG9jOiAuZXhpdC5kYXRhCisKKy5leGl0Y2FsbC5leGl0CistLS0tLS0tLS0tLS0t LQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1jb3JlLmgKKyAg IDpkb2M6IC5leGl0Y2FsbC5leGl0CisKK0xpbnV4IC5yZWZcKiBzZWN0aW9ucworPT09PT09PT09 PSsKKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisg ICA6ZG9jOiBMaW51eCByZWZlcmVuY2VzIHRvIGluaXQgc2VjdGlvbnMKKworLnJlZi50ZXh0Cist LS0tLS0tLS0KKy4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29y ZS5oCisgICA6ZG9jOiAucmVmLnRleHQKKworLnJlZi5kYXRhCistLS0tLS0tLS0KKy4uIGtlcm5l bC1kb2M6OiBpbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oCisgICA6ZG9jOiAucmVm LmRhdGEKKworLnJlZi5yb2RhdGEKKy0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVk ZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaAorICAgOmRvYzogLnJlZi5yb2RhdGEKKworR2Vu ZXJpYyBMaW51eCBrZXJuZWwgc2VjdGlvbiBoZWxwZXJzCis9PT09PT09PT09PT09PT09PT0KKwor SW50cm9kdWN0aW9uCistLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51 eC9zZWN0aW9ucy5oCisgICA6ZG9jOiBJbnRyb2R1Y3Rpb24KKworTElOVVhfU0VDVElPTl9BTElH Tk1FTlQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9s aW51eC9zZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBMSU5VWF9TRUNUSU9OX0FMSUdOTUVOVAor CitMSU5VWF9TRUNUSU9OX1NUQVJUCistLS0tLS0tLS0tLS0tLS0tLS0tCisuLiBrZXJuZWwtZG9j OjogaW5jbHVkZS9saW51eC9zZWN0aW9ucy5oCisgICA6ZnVuY3Rpb25zOiBMSU5VWF9TRUNUSU9O X1NUQVJUCisKK0xJTlVYX1NFQ1RJT05fRU5ECistLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVs LWRvYzo6IGluY2x1ZGUvbGludXgvc2VjdGlvbnMuaAorICAgOmZ1bmN0aW9uczogTElOVVhfU0VD VElPTl9FTkQKKworREVDTEFSRV9MSU5VWF9TRUNUSU9OCistLS0tLS0tLS0tLS0tLS0tLS0tLS0K Ky4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L3NlY3Rpb25zLmgKKyAgIDpmdW5jdGlvbnM6 IERFQ0xBUkVfTElOVVhfU0VDVElPTgorCitERUNMQVJFX0xJTlVYX1NFQ1RJT05fUk8KKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvbGludXgvc2VjdGlv bnMuaAorICAgOmZ1bmN0aW9uczogREVDTEFSRV9MSU5VWF9TRUNUSU9OX1JPCmRpZmYgLS1naXQg YS9NQUlOVEFJTkVSUyBiL01BSU5UQUlORVJTCmluZGV4IGQyZGI3ZmVjZWYzMi4uNWU1ODBiMTI1 N2ZiIDEwMDY0NAotLS0gYS9NQUlOVEFJTkVSUworKysgYi9NQUlOVEFJTkVSUwpAQCAtNTQzOCw2 ICs1NDM4LDE4IEBAIFM6CVN1cHBvcnRlZAogRjoJZHJpdmVycy9iYXNlL3Bvd2VyL2RvbWFpbiou YwogRjoJaW5jbHVkZS9saW51eC9wbV9kb21haW4uaAogCitHRU5FUklDIFNFQ1RJT05TCitNOgki THVpcyBSLiBSb2RyaWd1ZXoiIDxtY2dyb2ZAa2VybmVsLm9yZz4KK006CUpvc2ggUG9pbWJvZXVm IDxqcG9pbWJvZUByZWRoYXQuY29tPgorTToJIkguIFBldGVyIEFudmluIiA8aHBhQHp5dG9yLmNv bT4KK0w6CWxpbnV4LWFyY2hAdmdlci5rZXJuZWwub3JnCitMOglsaW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnCitTOglTdXBwb3J0ZWQKK0Y6CWluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbi1j b3JlLmgKK0Y6CWluY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAorRjoJaW5jbHVkZS9hc20t Z2VuZXJpYy92bWxpbnV4Lmxkcy5oCitGOglEb2N1bWVudGF0aW9uL3NlY3Rpb25zL3NlY3Rpb24t Y29yZS5yc3QKKwogR0VORVJJQyBVSU8gRFJJVkVSIEZPUiBQQ0kgREVWSUNFUwogTToJIk1pY2hh ZWwgUy4gVHNpcmtpbiIgPG1zdEByZWRoYXQuY29tPgogTDoJa3ZtQHZnZXIua2VybmVsLm9yZwpk aWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2FscGhhL2lu Y2x1ZGUvYXNtL0tidWlsZAppbmRleCBiZjg0NzVjZTg1ZWUuLjU0MjI4MjdmMTU4NSAxMDA2NDQK LS0tIGEvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hbHBoYS9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTEwLDMgKzEwLDQgQEAgZ2VuZXJpYy15ICs9IG1tLWFyY2gtaG9v a3MuaAogZ2VuZXJpYy15ICs9IHByZWVtcHQuaAogZ2VuZXJpYy15ICs9IHNlY3Rpb25zLmgKIGdl bmVyaWMteSArPSB0cmFjZV9jbG9jay5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlm ZiAtLWdpdCBhL2FyY2gvYXJjL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvYXJjL2luY2x1ZGUv YXNtL0tidWlsZAppbmRleCBjMzMyNjA0NjA2ZGQuLjdiMmNiM2RlYTVmYyAxMDA2NDQKLS0tIGEv YXJjaC9hcmMvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvYXJjL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtNTEsMyArNTEsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0g dmdhLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgK K2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVk ZS9hc20vS2J1aWxkIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IGVmYjIxNzU3 ZDQxZi4uOWI2OWEyMmE5YWUxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9LYnVp bGQKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vS2J1aWxkCkBAIC00MSwzICs0MSw0IEBAIGdl bmVyaWMteSArPSB1bmFsaWduZWQuaAogCiBnZW5lcmF0ZWQteSArPSBtYWNoLXR5cGVzLmgKIGdl bmVyYXRlZC15ICs9IHVuaXN0ZC1uci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlm ZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9hcm02NC9pbmNs dWRlL2FzbS9LYnVpbGQKaW5kZXggODM2NWE4NGMyNjQwLi4wMGFjZTVlODI2ZjEgMTAwNjQ0Ci0t LSBhL2FyY2gvYXJtNjQvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvYXJtNjQvaW5jbHVk ZS9hc20vS2J1aWxkCkBAIC00NSwzICs0NSw0IEBAIGdlbmVyaWMteSArPSB1bmFsaWduZWQuaAog Z2VuZXJpYy15ICs9IHVzZXIuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5lcmljLXkgKz0geG9y LmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9hdnIzMi9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL2F2cjMyL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAy NDFiOWI5NzI5ZDguLmYyYzNiNjU2YTBlNyAxMDA2NDQKLS0tIGEvYXJjaC9hdnIzMi9pbmNsdWRl L2FzbS9LYnVpbGQKKysrIGIvYXJjaC9hdnIzMi9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTIyLDMg KzIyLDQgQEAgZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB2Z2EuaAog Z2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJp Yy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2luY2x1ZGUv YXNtL0tidWlsZCBiL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDJmYjY3 YjU5ZDE4OC4uYmYyMDU0MWJjZjIxIDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL2luY2x1ZGUv YXNtL0tidWlsZAorKysgYi9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNDcs MyArNDcsNCBAQCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMteSArPSB1c2VyLmgK IGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVy aWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9jNngvaW5jbHVkZS9hc20v S2J1aWxkIGIvYXJjaC9jNngvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDY0NDY1ZTdlMjI0NS4u MzgxMjdjZTc0N2JlIDEwMDY0NAotLS0gYS9hcmNoL2M2eC9pbmNsdWRlL2FzbS9LYnVpbGQKKysr IGIvYXJjaC9jNngvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC02MiwzICs2Miw0IEBAIGdlbmVyaWMt eSArPSB1c2VyLmgKIGdlbmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10 aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRp ZmYgLS1naXQgYS9hcmNoL2NyaXMvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9jcmlzL2luY2x1 ZGUvYXNtL0tidWlsZAppbmRleCAxNzc4ODA1ZjYzODAuLjM4NWNkODhhOWQ5ZSAxMDA2NDQKLS0t IGEvYXJjaC9jcmlzL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL2NyaXMvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC00NSwzICs0NSw0IEBAIGdlbmVyaWMteSArPSB0eXBlcy5oCiBnZW5lcmlj LXkgKz0gdmdhLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0g eG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9mcnYv aW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDFm YTA4NGNmMWE0My4uNDZkN2M1OTlkOWI4IDEwMDY0NAotLS0gYS9hcmNoL2Zydi9pbmNsdWRlL2Fz bS9LYnVpbGQKKysrIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC04LDMgKzgsNCBA QCBnZW5lcmljLXkgKz0gbW0tYXJjaC1ob29rcy5oCiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBn ZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgK K2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9oODMwMC9pbmNs dWRlL2FzbS9LYnVpbGQgYi9hcmNoL2g4MzAwL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAzNzNj YjIzMzAxZTMuLjFlYzA0ZWMxYzgyYiAxMDA2NDQKLS0tIGEvYXJjaC9oODMwMC9pbmNsdWRlL2Fz bS9LYnVpbGQKKysrIGIvYXJjaC9oODMwMC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTc1LDMgKzc1 LDQgQEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25lZC5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdlbmVy aWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMteSAr PSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0ti dWlsZCBiL2FyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggZGI4ZGRhYmM2YmQy Li4zN2Q3YmZhZTc2MTkgMTAwNjQ0Ci0tLSBhL2FyY2gvaGV4YWdvbi9pbmNsdWRlL2FzbS9LYnVp bGQKKysrIGIvYXJjaC9oZXhhZ29uL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtNjAsMyArNjAsNCBA QCBnZW5lcmljLXkgKz0gdW5hbGlnbmVkLmgKIGdlbmVyaWMteSArPSB2Z2EuaAogZ2VuZXJpYy15 ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVyaWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNl Y3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkIGIv YXJjaC9pYTY0L2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA1MDJhOTFkOGRiYmQuLjY3MmM2ZDVk YTE4YyAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNo L2lhNjQvaW5jbHVkZS9hc20vS2J1aWxkCkBAIC05LDMgKzksNCBAQCBnZW5lcmljLXkgKz0gcHJl ZW1wdC5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15ICs9IHZ0aW1lLmgK IGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3Jl LmgKZGlmZiAtLWdpdCBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL20zMnIv aW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDZlNjlkMmM0MmVlZS4uOGNjZmI1ZWI5Njc4IDEwMDY0 NAotLS0gYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbTMyci9pbmNs dWRlL2FzbS9LYnVpbGQKQEAgLTEyLDMgKzEyLDQgQEAgZ2VuZXJpYy15ICs9IHByZWVtcHQuaAog Z2VuZXJpYy15ICs9IHNlY3Rpb25zLmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5l cmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRp ZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9tNjhrL2luY2x1 ZGUvYXNtL0tidWlsZAppbmRleCAxZjJlNWQzMWNiMjQuLjEyNzdiNDViZjRmOSAxMDA2NDQKLS0t IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC0zNCwzICszNCw0IEBAIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBn ZW5lcmljLXkgKz0gdHlwZXMuaAogZ2VuZXJpYy15ICs9IHdvcmQtYXQtYS10aW1lLmgKIGdlbmVy aWMteSArPSB4b3IuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9h cmNoL21ldGFnL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbWV0YWcvaW5jbHVkZS9hc20vS2J1 aWxkCmluZGV4IDE2NzE1MGM3MDFkMS4uYjEwMTEzNzVjZDdhIDEwMDY0NAotLS0gYS9hcmNoL21l dGFnL2luY2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL21ldGFnL2luY2x1ZGUvYXNtL0tidWls ZApAQCAtNTUsMyArNTUsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdh LmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dl bmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9taWNyb2JsYXplL2lu Y2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5k ZXggYjBhZTg4YzlmZWQ5Li5jNmMyY2Y2ZWRjOTggMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6 ZS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL0ti dWlsZApAQCAtMTEsMyArMTEsNCBAQCBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkg Kz0gc3lzY2FsbHMuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB3 b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBh L2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vS2J1 aWxkCmluZGV4IGVkMDcxNzlmZTI2YS4uN2E5MzJiNGE1NTMxIDEwMDY0NAotLS0gYS9hcmNoL21p cHMvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9LYnVpbGQK QEAgLTIxLDMgKzIxLDQgQEAgZ2VuZXJpYy15ICs9IHVuYWxpZ25lZC5oCiBnZW5lcmljLXkgKz0g dXNlci5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5o CitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvbW4xMDMwMC9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL21uMTAzMDAvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4 IDFjOGRkMGY1Y2Q1ZC4uZjgxNDViYzg1ODM1IDEwMDY0NAotLS0gYS9hcmNoL21uMTAzMDAvaW5j bHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAg LTEwLDMgKzEwLDQgQEAgZ2VuZXJpYy15ICs9IHByZWVtcHQuaAogZ2VuZXJpYy15ICs9IHNlY3Rp b25zLmgKIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1h LXRpbWUuaAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL25p b3MyL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvbmlvczIvaW5jbHVkZS9hc20vS2J1aWxkCmlu ZGV4IGQ2MzMzMGU4ODM3OS4uYzljN2NiODJiMDBmIDEwMDY0NAotLS0gYS9hcmNoL25pb3MyL2lu Y2x1ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL25pb3MyL2luY2x1ZGUvYXNtL0tidWlsZApAQCAt NjMsMyArNjMsNCBAQCBnZW5lcmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdl bmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2Fz bS9LYnVpbGQgYi9hcmNoL29wZW5yaXNjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAyODMyZjAz MWZiMTEuLjg2MTc1ZTcwMTg2OSAxMDA2NDQKLS0tIGEvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2Fz bS9LYnVpbGQKKysrIGIvYXJjaC9vcGVucmlzYy9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTcxLDMg KzcxLDQgQEAgZ2VuZXJpYy15ICs9IHVzZXIuaAogZ2VuZXJpYy15ICs9IHZnYS5oCiBnZW5lcmlj LXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5oCitnZW5lcmljLXkgKz0g c2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL0tidWls ZCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCA5MWY1M2MwN2Y0MTAuLjE4 YTlkNGM1ZWFkNyAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vS2J1aWxkCisr KyBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtMjgsMyArMjgsNCBAQCBnZW5l cmljLXkgKz0gdXNlci5oCiBnZW5lcmljLXkgKz0gdmdhLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0 LWEtdGltZS5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUu aApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvcG93 ZXJwYy9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggNWM0ZmJjODBkYzZjLi40MzIyZDk3NDZjZGIg MTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9w b3dlcnBjL2luY2x1ZGUvYXNtL0tidWlsZApAQCAtOCwzICs4LDQgQEAgZ2VuZXJpYy15ICs9IG1j c19zcGlubG9jay5oCiBnZW5lcmljLXkgKz0gcHJlZW1wdC5oCiBnZW5lcmljLXkgKz0gcndzZW0u aAogZ2VuZXJpYy15ICs9IHZ0aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZm IC0tZ2l0IGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL0tidWlsZCBiL2FyY2gvczM5MC9pbmNsdWRl L2FzbS9LYnVpbGQKaW5kZXggOGFlYTMyZmU4YmQyLi42M2ExYzI5MjRiOTEgMTAwNjQ0Ci0tLSBh L2FyY2gvczM5MC9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9zMzkwL2luY2x1ZGUvYXNt L0tidWlsZApAQCAtOCwzICs4LDQgQEAgZ2VuZXJpYy15ICs9IG1tLWFyY2gtaG9va3MuaAogZ2Vu ZXJpYy15ICs9IHByZWVtcHQuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMt eSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAt LWdpdCBhL2FyY2gvc2NvcmUvaW5jbHVkZS9hc20vS2J1aWxkIGIvYXJjaC9zY29yZS9pbmNsdWRl L2FzbS9LYnVpbGQKaW5kZXggYTA1MjE4ZmYzZmU0Li5mMDg5YTI2NGNkMzggMTAwNjQ0Ci0tLSBh L2FyY2gvc2NvcmUvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2FyY2gvc2NvcmUvaW5jbHVkZS9h c20vS2J1aWxkCkBAIC0xNCwzICsxNCw0IEBAIGdlbmVyaWMteSArPSB0cmFjZV9jbG9jay5oCiBn ZW5lcmljLXkgKz0geG9yLmgKIGdlbmVyaWMteSArPSBzZXJpYWwuaAogZ2VuZXJpYy15ICs9IHdv cmQtYXQtYS10aW1lLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEv YXJjaC9zaC9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL0tidWlsZApp bmRleCA3NTFjMzM3M2E5MmMuLjdiMDM1NmRjYTU2MiAxMDA2NDQKLS0tIGEvYXJjaC9zaC9pbmNs dWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC9zaC9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTM5LDMg KzM5LDQgQEAgZ2VuZXJpYy15ICs9IHRlcm1pb3MuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2Nr LmgKIGdlbmVyaWMteSArPSB1Y29udGV4dC5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMt eSArPSBzZWN0aW9uLWNvcmUuaApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9L YnVpbGQgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL0tidWlsZAppbmRleCAwNTY5YmZhYzRhZmIu LjQzOGY4NjU3M2RjNSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9LYnVpbGQK KysrIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTIxLDMgKzIxLDQgQEAgZ2Vu ZXJpYy15ICs9IHNlcmlhbC5oCiBnZW5lcmljLXkgKz0gdHJhY2VfY2xvY2suaAogZ2VuZXJpYy15 ICs9IHR5cGVzLmgKIGdlbmVyaWMteSArPSB3b3JkLWF0LWEtdGltZS5oCitnZW5lcmljLXkgKz0g c2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQg Yi9hcmNoL3RpbGUvaW5jbHVkZS9hc20vS2J1aWxkCmluZGV4IDJkMWY1NjM4OTc0Yy4uZmI2Yjgz MWMxZmJhIDEwMDY0NAotLS0gYS9hcmNoL3RpbGUvaW5jbHVkZS9hc20vS2J1aWxkCisrKyBiL2Fy Y2gvdGlsZS9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTQwLDMgKzQwLDQgQEAgZ2VuZXJpYy15ICs9 IHRlcm1pb3MuaAogZ2VuZXJpYy15ICs9IHRyYWNlX2Nsb2NrLmgKIGdlbmVyaWMteSArPSB0eXBl cy5oCiBnZW5lcmljLXkgKz0geG9yLmgKK2dlbmVyaWMteSArPSBzZWN0aW9uLWNvcmUuaApkaWZm IC0tZ2l0IGEvYXJjaC91bS9pbmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3VtL2luY2x1ZGUvYXNt L0tidWlsZAppbmRleCAwNTJmN2Y2ZDA1NTEuLjU4MGJkNWZmODI4ZiAxMDA2NDQKLS0tIGEvYXJj aC91bS9pbmNsdWRlL2FzbS9LYnVpbGQKKysrIGIvYXJjaC91bS9pbmNsdWRlL2FzbS9LYnVpbGQK QEAgLTI2LDMgKzI2LDQgQEAgZ2VuZXJpYy15ICs9IHRvcG9sb2d5LmgKIGdlbmVyaWMteSArPSB0 cmFjZV9jbG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9 IHhvci5oCitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2FyY2gvdW5p Y29yZTMyL2luY2x1ZGUvYXNtL3NlY3Rpb24tY29yZS5oIGIvYXJjaC91bmljb3JlMzIvaW5jbHVk ZS9hc20vc2VjdGlvbi1jb3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi4wYjljNjg0MjlhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL3VuaWNvcmUzMi9pbmNs dWRlL2FzbS9zZWN0aW9uLWNvcmUuaApAQCAtMCwwICsxLDE5IEBACisjaWZuZGVmIF9fVU5JQ09S RV9TRUNUSU9OX0NPUkVfQVNNX0hfXworI2RlZmluZSBfX1VOSUNPUkVfU0VDVElPTl9DT1JFX0FT TV9IX18KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3Jv ZkBrZXJuZWwub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMg b2YgY29weWxlZnQtbmV4dCAodmVyc2lvbiAwLjMuMSBvciBsYXRlcikgYXMgcHVibGlzaGVkCisg KiBhdCBodHRwOi8vY29weWxlZnQtbmV4dC5vcmcvLgorICovCisKKy8qIFVuaWNvcmUzMiBoYXMg a25vd24gdG8gbm90IHdvcmsgcHJvcGVybHkgd2l0aCB0aGUgdHlwZSBzZXQsIHNvIGlnbm9yZSBp dCAqLworCisjZGVmaW5lIF9fc2V0X3NlY3Rpb25fY29yZV90eXBlKF9fX3NlY3Rpb24sIF9fX2Nv cmUsIF9fX25hbWUsCQlcCisJCQkJX19fbGV2ZWwsIF9fX2ZsYWdzLCBfX190eXBlKQkJXAorCS5z ZWN0aW9uIF9fX3NlY3Rpb24uLl9fX2NvcmUuX19fbmFtZS5fX19sZXZlbCwgX19fZmxhZ3MKKwor I2luY2x1ZGUgPGFzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5oPgorCisjZW5kaWYgLyogX19VTklD T1JFX1NFQ1RJT05fQ09SRV9BU01fSF9fICovCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRl L2FzbS9LYnVpbGQgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXggMmI4OTJlMjMx M2E5Li5hZjk3NWYyMWVlZWUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL0tidWls ZAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTEyLDMgKzEyLDQgQEAgZ2Vu ZXJpYy15ICs9IGRtYS1jb250aWd1b3VzLmgKIGdlbmVyaWMteSArPSBlYXJseV9pb3JlbWFwLmgK IGdlbmVyaWMteSArPSBtY3Nfc3BpbmxvY2suaAogZ2VuZXJpYy15ICs9IG1tLWFyY2gtaG9va3Mu aAorZ2VuZXJpYy15ICs9IHNlY3Rpb24tY29yZS5oCmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9p bmNsdWRlL2FzbS9LYnVpbGQgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9LYnVpbGQKaW5kZXgg YjdmYmFhNTZiNTFhLi43ODc5YzMxZTY2YTcgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2luY2x1 ZGUvYXNtL0tidWlsZAorKysgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9LYnVpbGQKQEAgLTMy LDMgKzMyLDQgQEAgZ2VuZXJpYy15ICs9IHRvcG9sb2d5LmgKIGdlbmVyaWMteSArPSB0cmFjZV9j bG9jay5oCiBnZW5lcmljLXkgKz0gd29yZC1hdC1hLXRpbWUuaAogZ2VuZXJpYy15ICs9IHhvci5o CitnZW5lcmljLXkgKz0gc2VjdGlvbi1jb3JlLmgKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdl bmVyaWMvc2VjdGlvbi1jb3JlLmggYi9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb24tY29yZS5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWZjNzUzZTgwZDc2Ci0t LSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zZWN0aW9uLWNvcmUuaApAQCAt MCwwICsxLDMwNyBAQAorI2lmbmRlZiBfQVNNX0dFTkVSSUNfU0VDVElPTl9DT1JFX0hfCisjZGVm aW5lIF9BU01fR0VORVJJQ19TRUNUSU9OX0NPUkVfSF8KKy8qCisgKiBMaW51eCBzZWN0aW9uIGNv cmUgZGVmaW5pdGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTHVpcyBSLiBSb2RyaWd1 ZXogPG1jZ3JvZkBrZXJuZWwub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0 aGUgdGVybXMgb2YgY29weWxlZnQtbmV4dCAodmVyc2lvbiAwLjMuMSBvciBsYXRlcikgYXMgcHVi bGlzaGVkCisgKiBhdCBodHRwOi8vY29weWxlZnQtbmV4dC5vcmcvLgorICovCisKKy8qKgorICog RE9DOiBMaW51eCBFTEYgcHJvZ3JhbSBzcGVjaWZpYyBzZWN0aW9ucworICoKKyAqIExpbnV4IG1h a2VzIGV4dGVuc2l2ZSB1c2Ugb2YgYGBTSFRfUFJPR0JJVFNgYCB0byBib3RoIGV4dGVuZCB1c2Ug YW5kCisgKiBkZWZpbml0aW9uIG9mICpTcGVjaWFsIEVMRiBTZWN0aW9ucyogKGBnYWJpNCBjaDRg XykgYW5kIHRvIGRlZmluZSBpdHMgb3duCisgKiBzZWN0aW9ucy4gVGhpcyBjaGFwdGVyIGlzIGRl ZGljYXRlZCB0byBkb2N1bWVudGluZyBMaW51eCBwcm9ncmFtIHNwZWNpZmljCisgKiBzZWN0aW9u cyBhbmQgaGVscGVycyBhdmFpbGFibGUgdG8gbWFrZSB1c2Ugb2YgdGhlc2UgZWFzaWVyIHRvIGlt cGxlbWVudCBhbmQKKyAqIHVzZS4KKyAqCisgKiAuLiBfZ2FiaTQgY2g0OiBodHRwczovL3JlZnNw ZWNzLmxpbnV4YmFzZS5vcmcvZWxmL2dhYmk0Ky9jaDQuc2hlYWRlci5odG1sI3NwZWNpYWxfc2Vj dGlvbnMKKyAqLworCisvKioKKyAqIERPQzogTGludXggbGlua2VyIHNjcmlwdAorICoKKyAqIExp bnV4IHVzZXMgYSBjdXN0b20gbGlua2VyIHNjcmlwdCB0byBidWlsZCB0aGUgdm1saW51eCBiaW5h cnksIGl0IHVzZXMgaXQgdG8KKyAqIHN0cmF0ZWdpY2FsbHkgcGxhY2UgYW5kIGRlZmluZSBMaW51 eCBFTEYgc2VjdGlvbnMuICBFYWNoIGFyY2hpdGVjdHVyZSBuZWVkcworICogdG8gaW1wbGVtZW50 IGl0cyBvd24gbGlua2VyIHNjcmlwdCwgaXQgaXMgZXhwZWN0ZWQgdG8gcmVzaWRlIGluCisgKiBg YGFyY2gvJChBUkNIKS9rZXJuZWwvdm1saW51eC5sZHMuU2BgLiAgQXJjaGl0ZWN0dXJlIExpbnV4 IGxpbmtlciBzY3JpcHRzIGluCisgKiB0dXJuIGluY2x1ZGUgYW5kIHVzZSBkZWZpbml0aW9ucyBm cm9tIGBgaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oYGAsCisgKiBhcyB3ZWxsIGFz IHNvbWUgaGVscGVycyBkb2N1bWVudGVkIGluIHRoaXMgY2hhcHRlci4KKyAqCisgKiBJbiBhc3Nl bWJseSBpdCBpcyBjb21tb24gcHJhY3RpY2UgdG8gdXNlIGRvdHMgKGBgLmBgKSBpbiBsYWJlbHMg dG8gYXZvaWQKKyAqIGNsYXNoZXMgd2l0aCBDIHN5bWJvbHMuIFNpbWlsYXJseSwgYSBkb3QgKGBg LmBgKSBjYW4gYmUgcGFydCBvZiBhIHNlY3Rpb24KKyAqIG5hbWUgYnV0IG5vdCBhIEMgc3ltYm9s LiBIaXN0b3JpY2FsbHkgdGhlbiwgdHdvIGRvdHMgYXJlIHVzZWQgKGBgLi5gYCkKKyAqIGhhdmUg YmVlbiB1c2VkIGluIGxpbmtlciBzY3JpcHRzIHdoZW4gYWRkaW5nIHByb2dyYW0gc3BlY2lmaWMg c2VjdGlvbnMKKyAqIHdoZW4gdGhlcmUgYXJlIGNvbmNlcm5zIHRvIGF2b2lkIGNsYXNoZXMgd2l0 aCBjb21waWxlciBnZW5lcmF0ZWQgc2VjdGlvbnMuCisgKi8KKworLyoqCisgKiBET0M6IE1lbW9y eSBwcm90ZWN0aW9uCisgKgorICogTGludXggYWxsb3dzIGFyY2hpdGVjdHVyZXMgd2hpY2ggc3Vw cG9ydCBtZW1vcnkgcHJvdGVjdGlvbiBmZWF0dXJlcyB0bworICogdGFrZSBhZHZhbnRhZ2Ugb2Yg dGhlbSBieSBsZXR0aW5nIGFyY2hpdGVjdHVyZXMgZGVmaW5lIGFuZCBlbmFibGUKKyAqIGBgQ09O RklHX0RFQlVHX1JPREFUQWBgIGFuZCBpbXBsZW1lbnQgYSBtYXJrX3JvZGF0YV9ybygpIGNhbGwu CisgKiBtYXJrX3JvZGF0YV9ybygpIGNhbiBiZSB1c2VkIGZvciBpbnN0YW5jZSB0byBtYXJrIHNw ZWNpZmljIHNlY3Rpb25zIGFzCisgKiByZWFkLW9ubHkgb3Igbm9uLWV4ZWN1dGFibGUuCisgKgor ICogTGludXggdHlwaWNhbGx5IGZvbGxvd3MgYSBjb252ZW50aW9uIHRvIGhhdmUgdGhlIC5yb2Rh dGEgRUxGIHNlY3Rpb24gZm9sbG93CisgKiBhZnRlciB0aGUgLnRleHQgRUxGIHNlY3Rpb24sIGl0 IGRvZXMgdGhpcyB0byBoZWxwIGFyY2hpdGVjdHVyZXMgd2hpY2gKKyAqIHN1cHBvcnQgbWVtb3J5 IHByb3RlY3Rpb24gdG8gbWFyayBib3RoIC50ZXh0IGFuZCAucm9kYXRhIGFzIHJlYWQtb25seSBp bgorICogb25lIHNob3QuCisgKgorICogRm9yIG1vcmUgZGV0YWlscyByZWZlciB0byBtYXJrX3Jv ZGF0YV9ybygpLgorICovCisKKy8qKgorICogRE9DOiAucm9kYXRhCisgKgorICogRUxGIHNlY3Rp b24gdXNlZCBmb3IgZGF0YSB3aGljaCBtdXN0IGJlIHByb3RlY3RlZCBmcm9tIHdyaXRlIGFjY2Vz cy4KKyAqLworCisvKioKKyAqIERPQzogLnRleHQKKyAqCisgKiBFTEYgc2VjdGlvbiBuYW1lIHVz ZWQgZm9yIGNvZGUgKGZ1bmN0aW9ucykgdXNlZCBkdXJpbmcgcmVndWxhcgorICoga2VybmVsIHJ1 biB0aW1lLgorICovCisKKy8qKgorICogRE9DOiAuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVz ZWQgZm9yIHJlYWQtd3JpdGUgZGF0YS4KKyAqLworCisvKioKKyAqIERPQzogTGludXggaW5pdCBz ZWN0aW9ucworICoKKyAqIFRoZXNlIHNlY3Rpb25zIGFyZSB1c2VkIGZvciBjb2RlIGFuZCBkYXRh IHN0cnVjdHVyZXMgdXNlZCBkdXJpbmcgYm9vdCBvcgorICogbW9kdWxlIGluaXRpYWxpemF0aW9u LiBPbiBhcmNoaXRlY3R1cmVzIHRoYXQgc3VwcG9ydCBpdCAoeDg2LCB4ODZfNjQpLCBhbGwKKyAq IHRoaXMgY29kZSBpcyBmcmVlZCB1cCBieSB0aGUga2VybmVsIHJpZ2h0IGJlZm9yZSB0aGUgZmlz dCB1c2Vyc3BhY2UgaW5pdAorICogcHJvY2VzcyBpcyBjYWxsZWQgd2hlbiBidWlsdC1pbiB0byB0 aGUga2VybmVsLCBhbmQgaWYgbW9kdWxhciBpdCBpcyBmcmVlZAorICogYWZ0ZXIgbW9kdWxlIGlu aXRpYWxpemF0aW9uLiBTaW5jZSB0aGUgY29kZSBpcyBmcmVlZCBzbyBlYXJseSwgaW4gdGhlb3J5 CisgKiB0aGVyZSBzaG91bGQgYmUgbm8gcmFjZXMgYWdhaW5zdCBmcmVlaW5nIHRoaXMgY29kZSB3 aXRoIG90aGVyIENQVXMuIEluaXQKKyAqIHNlY3Rpb24gY29kZSBhbmQgZGF0YSBzdHJ1Y3R1cmVz IHNob3VsZCBuZXZlciBiZSBleHBvcnRlZCB3aXRoCisgKiBFWFBPUlRfU1lNQk9MKigpIGFzIHRo ZSBjb2RlIHdpbGwgcXVpY2tseSBiZWNvbWUgdW5hdmFpbGFibGUgdG8gdGhlIGtlcm5lbAorICog YWZ0ZXIgYm9vdHVwLgorICovCisKKy8qKgorICogRE9DOiAuaW5pdC50ZXh0CisgKgorICogRUxG IHNlY3Rpb24gZm9yIGNvZGUgKGZ1bmN0aW9ucykgdXNlZCBvbmx5IGR1cmluZyBib290IG9yIGRy aXZlcgorICogaW5pdGlhbGl6YXRpb24uCisgKgorICovCisKKy8qKgorICogRE9DOiAuaW5pdC5k YXRhCisgKgorICogRUxGIHNlY3Rpb24gdXNlZCBmb3IgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgb25s eSBkdXJpbmcgYm9vdCBvciBkcml2ZXIKKyAqIGluaXRpYWxpemF0aW9uLgorICovCisKKy8qKgor ICogRE9DOiAuaW5pdC5yb2RhdGEKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2VkIGZvciByZWFkLW9u bHkgY29kZSAoZnVuY3Rpb25zKSB1c2VkIG9ubHkgZHVyaW5nIGJvb3QKKyAqIG9yIGRyaXZlciBp bml0aWFsaXphdGlvbi4KKyAqLworCisvKioKKyAqIERPQzogLmluaXRjYWxsCisgKgorICogRUxG IHNlY3Rpb24gdXNlZCBmb3Igc3Vic3lzdGVtIGluaXQgY2FsbHMuIFRoZXJlIGFyZSBpbml0IGxl dmVscworICogcmVwcmVzZW50aW5nIGRpZmZlcmVudCBmdW5jdGlvbmFsaXR5IGluIHRoZSBrZXJu ZWwuIEZvciBtb3JlIGRldGFpbHMKKyAqIHJlZmVyIHRvIF9fZGVmaW5lX2luaXRjYWxsKCkuCisg Ki8KKworLyoqCisgKiBET0M6IExpbnV4IGV4aXQgc2VjdGlvbnMKKyAqCisgKiBUaGVzZSBzZWN0 aW9ucyBhcmUgdXNlZCB0byBkZWNsYXJlIGEgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMg d2hpY2gKKyAqIGFyZSBvbmx5IHJlcXVpcmVkIG9uIGV4aXQsIHRoZSBmdW5jdGlvbiBvciBkYXRh IHN0cnVjdHVyZSB3aWxsIGJlIGRyb3BwZWQKKyAqIGlmIHRoZSBjb2RlIGRlY2xhcmluZyB0aGlz IHNlY3Rpb24gaXMgbm90IGNvbXBpbGVkIGFzIGEgbW9kdWxlIG9uCisgKiBhcmNoaXRlY3R1cmVz IHRoYXQgc3VwcG9ydCB0aGlzICh4ODYsIHg4Nl82NCkuIFRoZXJlIGlzIG5vIHNwZWNpYWwgY2Fz ZQorICogaGFuZGxpbmcgZm9yIHRoaXMgY29kZSB3aGVuIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwu CisgKi8KKworLyoqCisgKiBET0M6IC5leGl0LnRleHQKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2Vk IHRvIGZvciBjb2RlIChmdW5jdGlvbnMpIHVzZWQgb25seSBkdXJpbmcgbW9kdWxlIHVubG9hZC4K KyAqLworCisvKioKKyAqIERPQzogLmV4aXQuZGF0YQorICoKKyAqIEVMRiBzZWN0aW9uIHVzZWQg dG8gZm9yIGRhdGEgc3RydWN0dXJlcyB1c2VkIG9ubHkgZHVyaW5nIG1vZHVsZQorICogdW5sb2Fk LgorICovCisKKy8qKgorICogRE9DOiAuZXhpdGNhbGwuZXhpdAorICoKKyAqIEVMRiBzZWN0aW9u IHVzZWQgZm9yIGV4aXQgcm91dGluZXMsIG9yZGVyIGlzIGltcG9ydGFudCBhbmQgbWFpbnRhaW5l ZCBieQorICogbGluayBvcmRlci4KKyAqLworCisvKioKKyAqIERPQzogTGludXggcmVmZXJlbmNl cyB0byBpbml0IHNlY3Rpb25zCisgKgorICogVGhlc2Ugc2VjdGlvbnMgYXJlIHVzZWQgdG8gdGVh Y2ggbW9kcG9zdCB0byBub3Qgd2FybiBhYm91dCBwb3NzaWJsZQorICogbWlzdXNlcyBvZiBpbml0 IHNlY3Rpb24gY29kZSBmcm9tIG90aGVyIHNlY3Rpb25zLiBJZiB5b3UgdXNlIHRoaXMKKyAqIHlv dXIgdXNlIGNhc2Ugc2hvdWxkIGRvY3VtZW50IHdoeSB5b3UgYXJlIGNlcnRhaW4gc3VjaCB1c2Ug b2YgaW5pdAorICogc2VjdGlvbmVkIGNvZGUgaXMgdmFsaWQuIEZvciBtb3JlIGRldGFpbHMgcmVm ZXIgdG8gYGBpbmNsdWRlL2xpbnV4L2luaXQuaGBgCisgKiBgYF9fcmVmYGAsIGBgX19yZWZkYXRh YGAsIGFuZCBgYF9fcmVmY29uc3RgYCBkb2N1bWVudGF0aW9uLgorICovCisKKy8qKgorICogRE9D OiAucmVmLnRleHQKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2VkIHRvIGFubm90YXRlIGNvZGUgKGZ1 bmN0aW9ucykgd2hpY2ggaGFzIGJlZW4gdmV0dGVkIGFzCisgKiB2YWxpZCBmb3IgaXRzIHJlZmVy ZW5jZSBvciB1c2Ugb2Ygb3RoZXIgY29kZSAoZnVuY3Rpb25zKSBvciBkYXRhIHN0cnVjdHVyZXMK KyAqIHdoaWNoIGFyZSBwYXJ0IG9mIHRoZSBpbml0IHNlY3Rpb25zLgorICovCisKKy8qKgorICog RE9DOiAucmVmLmRhdGEKKyAqCisgKiBFTEYgc2VjdGlvbiB1c2VkIGZvciBkYXRhIHN0cnVjdHVy ZXMgd2hpY2ggaGF2ZSBiZWVuIHZldHRlZCBmb3IgaXRzCisgKiByZWZlcmVuY2Ugb3IgdXNlIG9m IG90aGVyIGNvZGUgKGZ1bmN0aW9ucykgb3IgZGF0YSBzdHJ1Y3R1cmVzIHBhcnQgb2YgdGhlCisg KiBpbml0IHNlY3Rpb25zLgorICovCisKKy8qKgorICogRE9DOiAucmVmLnJvZGF0YQorICoKKyAq IEVMRiBzZWN0aW9uIHVzZWQgdG8gYW5ub3RhdGUgY29uc3QgY29kZSAoZnVuY3Rpb25zKSBjb25z dCBkYXRhIHN0cnVjdHVyZXMKKyAqIHdoaWNoIGhhcyBiZWVuIHZldHRlZCBmb3IgaXRzIHJlZmVy ZW5jZSBvciB1c2Ugb2Ygb3RoZXIgY29kZSAoZnVuY3Rpb25zKQorICogb3IgZGF0YSBzdHJ1Y3R1 cmVzIHBhcnQgb2YgdGhlIGluaXQgc2VjdGlvbnMuCisgKi8KKworLyogQ2FuIGJlIHVzZWQgb24g Zm9vLlMgZm9yIGluc3RhbmNlICovCisjaWZuZGVmIF9fc2V0X3NlY3Rpb25fY29yZV90eXBlCisj IGRlZmluZSBfX3NldF9zZWN0aW9uX2NvcmVfdHlwZShfX19zZWN0aW9uLCBfX19jb3JlLCBfX19u YW1lLAkJXAorCQkJCSBfX19sZXZlbCwgX19fZmxhZ3MsIF9fX3R5cGUpCQlcCisJLnNlY3Rpb24g X19fc2VjdGlvbi4uX19fY29yZS5fX19uYW1lLl9fX2xldmVsLCBfX19mbGFncywgX19fdHlwZQor I2VuZGlmCisKKyNpZm5kZWYgX19zZXRfc2VjdGlvbl9jb3JlCisjIGRlZmluZSBfX3NldF9zZWN0 aW9uX2NvcmUoX19fc2VjdGlvbiwgX19fY29yZSwgX19fbmFtZSwgX19fbGV2ZWwsIF9fX2ZsYWdz KSBcCisJLnNlY3Rpb24gX19fc2VjdGlvbi4uX19fY29yZS5fX19uYW1lLl9fX2xldmVsLCBfX19m bGFncworI2VuZGlmCisKKyNpZm5kZWYgX19wdXNoX3NlY3Rpb25fY29yZQorIyBkZWZpbmUgX19w dXNoX3NlY3Rpb25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLCBfX2xldmVsLCBfX2Zs YWdzKSBcCisJLnB1c2hzZWN0aW9uIF9fc2VjdGlvbi4uX19jb3JlLl9fbmFtZS5fX2xldmVsLCBf X2ZsYWdzCisjZW5kaWYKKworI2lmZGVmIF9fS0VSTkVMX18KKyNpbmNsdWRlIDxsaW51eC9zdHJp bmdpZnkuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChfX0FTU0VNQkxFUl9fKSB8fCBkZWZpbmVk KF9fQVNTRU1CTFlfXykKKworIyBpZm5kZWYgTElOS0VSX1NDUklQVAorCisjICBpZm5kZWYgcHVz aF9zZWN0aW9uX2NvcmUKKyMgICBkZWZpbmUgcHVzaF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBf X2NvcmUsIF9fbmFtZSwgX19sZXZlbCwgX19mbGFncykgXAorCSBfX3B1c2hfc2VjdGlvbl9jb3Jl KF9fc2VjdGlvbiwgX19jb3JlLCBfX25hbWUsCQkJICBcCisJCQkgICAgIF9fbGV2ZWwsIF9fc3Ry aW5naWZ5KF9fZmxhZ3MpKQorIyAgZW5kaWYKKworIyAgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmUK KyMgICBkZWZpbmUgc2V0X3NlY3Rpb25fY29yZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1lLAkJ CVwKKwkJCSAgICBfX2xldmVsLCBfX2ZsYWdzKQkJCQlcCisJX19zZXRfc2VjdGlvbl9jb3JlKF9f c2VjdGlvbiwgX19jb3JlLCBfX25hbWUsCQkJXAorCQkJICAgX19sZXZlbCwgX19zdHJpbmdpZnko X19mbGFncykpCisjICBlbmRpZgorCisjICBpZm5kZWYgc2V0X3NlY3Rpb25fY29yZV90eXBlCisj ICAgZGVmaW5lIHNldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rpb24sIF9fY29yZSwgX19uYW1l LAkJXAorCQkJCSBfX2xldmVsLCBfX2ZsYWdzLCBfX3R5cGUpCQlcCisJX19zZXRfc2VjdGlvbl9j b3JlX3R5cGUoX19zZWN0aW9uLCBfX2NvcmUsIF9fbmFtZSwgX19sZXZlbCwJXAorCQkJCV9fc3Ry aW5naWZ5KF9fZmxhZ3MpLCBfX3R5cGUpCisjICBlbmRpZgorCisjIGVuZGlmIC8qIExJTktFUl9T Q1JJUFQgKi8KKyNlbHNlIC8qIGRlZmluZWQoX19BU1NFTUJMRVJfXykgfHwgZGVmaW5lZChfX0FT U0VNQkxZX18pICovCisKKy8qCisgKiBBcyBwZXIgZ2NjJ3MgZG9jdW1lbnRhdGlvbiBhIGNvbW1v biBhc20gc2VwYXJhdG9yIGlzIGEgbmV3IGxpbmUgZm9sbG93ZWQKKyAqIGJ5IHRhYiBbMF0sIGl0 IGhvd2V2ZXIgc2VlbXMgcG9zc2libGUgdG8gYWxzbyBqdXN0IHVzZSBhIG5ld2xpbmUgYXMgaXRz CisgKiB0aGUgbW9zdCBjb21tb25seSBlbXBpcmljYWxseSBvYnNlcnZlZCBzZW1hbnRpYyBhbmQg Zm9sa3Mgc2VlbSB0byBhZ3JlZQorICogdGhpcyBldmVuIHdvcmtzIG9uIFMzOTAuIEluIGNhc2Ug eW91ciBhcmNoaXRlY3R1cmUgZGlzYWdyZWVzIHlvdSBtYXkKKyAqIG92ZXJyaWRlIHRoaXMgYW5k IGRlZmluZSB5b3VyIG93biBhbmQga2VlcCB0aGUgcmVzdCBvZiB0aGUgbWFjcm9zLgorICoKKyAq IFswXSBodHRwczovL2djYy5nbnUub3JnL29ubGluZWRvY3MvZ2NjL0Jhc2ljLUFzbS5odG1sI0Jh c2ljLUFzbQorICovCisjIGlmbmRlZiBBU01fQ01EX1NFUAorIyAgZGVmaW5lIEFTTV9DTURfU0VQ CSJcbiIKKyMgZW5kaWYKKworIyBpZm5kZWYgc2V0X3NlY3Rpb25fY29yZQorIyAgZGVmaW5lIHNl dF9zZWN0aW9uX2NvcmUoX19zZWN0aW9uLCBfX2NvcmUsIF9fbmFtZSwgX19sZXZlbCwgX19mbGFn cykJXAorCV9fc3RyaW5naWZ5KF9fc2V0X3NlY3Rpb25fY29yZV90eXBlKF9fc2VjdGlvbiwgX19j b3JlLCBfX25hbWUsCVwKKwkJCQkJICAgIF9fbGV2ZWwsIF9fc3RyaW5naWZ5KF9fZmxhZ3MpKSkg XAorCUFTTV9DTURfU0VQCisjIGVuZGlmCisKKy8qCisgKiBTb21lIGFyY2hpdGVjdHVyZXMgKGFy bSwgYW5kIGF2cjMyIGFyZSB0d28gZXhhbXBsZXMgb24ga3Byb2Jlcykgc2VlbQorICogY3VycmVu dGx5IGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgdHlwZSBbMF0gLS0gdGhpcyBjYW4gYmUgYW55IG9m IHRoZQorICogb3B0aW9uYWwgY29uc3RhbnRzIG9uIEVMRjoKKyAqCisgKiBAcHJvZ2JpdHMgLSBz ZWN0aW9uIGNvbnRhaW5zIGRhdGEKKyAqIEBub2JpdHMgLSBzZWN0aW9uIGRvZXMgbm90IGNvbnRh aW4gZGF0YSAoaS5lLiwgc2VjdGlvbiBvbmx5IG9jY3VwaWVzIHNwYWNlKQorICogQG5vdGUgLSBz ZWN0aW9uIGNvbnRhaW5zIGRhdGEgd2hpY2ggaXMgdXNlZCBieSB0aGluZ3Mgb3RoZXIgdGhhbiB0 aGUgcHJvZ3JhbQorICogQGluaXRfYXJyYXkgLSBzZWN0aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9m IHBvaW50ZXJzIHRvIGluaXQgZnVuY3Rpb25zCisgKiBAZmluaV9hcnJheSAtIHNlY3Rpb24gY29u dGFpbnMgYW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gZmluaXNoIGZ1bmN0aW9ucworICogQHByZWlu aXRfYXJyYXkgLSBzZWN0aW9uIGNvbnRhaW5zIGFuIGFycmF5IG9mIHBvaW50ZXJzIHRvIHByZS1p bml0IGZ1bmN0aW9ucworICoKKyAqIEFSTSByZXF1aXJlcyAlIGluc3RlYWQgb2YgQC4KKyAqCisg KiBBdCBsZWFzdCBhcyBwZXIgbmFzbSAoeDg2L3g4Nl82NCBvbmx5KSwgaW4gdGhlIGFic2VuY2Ug b2YgcXVhbGlmaWVycyB0aGUKKyAqIGRlZmF1bHRzIGFyZSBhcyBmb2xsb3dzOgorICoKKyAqIHNl Y3Rpb24gLnRleHQgICAgcHJvZ2JpdHMgIGFsbG9jICAgZXhlYyAgICBub3dyaXRlICBhbGlnbhYK KyAqIHNlY3Rpb24gLnJvZGF0YSAgcHJvZ2JpdHMgIGFsbG9jICAgbm9leGVjICBub3dyaXRlICBh bGlnbj00CisgKiBzZWN0aW9uIC5scm9kYXRhIHByb2diaXRzICBhbGxvYyAgIG5vZXhlYyAgbm93 cml0ZSAgYWxpZ249NAorICogc2VjdGlvbiAuZGF0YSAgICBwcm9nYml0cyAgYWxsb2MgICBub2V4 ZWMgIHdyaXRlICAgIGFsaWduPTQKKyAqIHNlY3Rpb24gLmxkYXRhICAgcHJvZ2JpdHMgIGFsbG9j ICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00CisgKiBzZWN0aW9uIC5ic3MgICAgIG5vYml0cyAg ICBhbGxvYyAgIG5vZXhlYyAgd3JpdGUgICAgYWxpZ249NAorICogc2VjdGlvbiAubGJzcyAgICBu b2JpdHMgICAgYWxsb2MgICBub2V4ZWMgIHdyaXRlICAgIGFsaWduPTQKKyAqIHNlY3Rpb24gLnRk YXRhICAgcHJvZ2JpdHMgIGFsbG9jICAgbm9leGVjICB3cml0ZSAgICBhbGlnbj00ICAgIHRscwor ICogc2VjdGlvbiAudGJzcyAgICBub2JpdHMgICAgYWxsb2MgICBub2V4ZWMgIHdyaXRlICAgIGFs aWduPTQgICAgdGxzCisgKiBzZWN0aW9uIC5jb21tZW50IHByb2diaXRzICBub2FsbG9jIG5vZXhl YyAgbm93cml0ZSAgYWxpZ249MQorICogc2VjdGlvbiBvdGhlciAgICBwcm9nYml0cyAgYWxsb2Mg ICBub2V4ZWMgIG5vd3JpdGUgIGFsaWduPTEKKyAqCisgKiBnYXMgc2hvdWxkIGhhdmUgc2Vuc2li bGUgZGVmYXVsdHMgZm9yIGFyY2hpdGVjdHVyZXMuLi4KKyAqCisgKiBbMF0gaHR0cDovL3d3dy5u YXNtLnVzL2RvYy9uYXNtZG9jNy5odG1sCisgKi8KKyMgaWZuZGVmIHNldF9zZWN0aW9uX2NvcmVf dHlwZQorIyAgZGVmaW5lIHNldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rpb24sIF9fY29yZSwg X19uYW1lLCBfX2xldmVsLAlcCisJCQkJX19mbGFncywgX190eXBlKQkJCVwKKwlfX3N0cmluZ2lm eShfX3NldF9zZWN0aW9uX2NvcmVfdHlwZShfX3NlY3Rpb24sIF9fY29yZSwJCVwKKwkJCQkJICAg IF9fbmFtZSwgX19sZXZlbCwJCVwKKwkJCQkJICAgIF9fc3RyaW5naWZ5KF9fZmxhZ3MpLAlcCisJ CQkJCSAgICBfX3R5cGUpKQkJCVwKKwlBU01fQ01EX1NFUAorIyBlbmRpZgorCisjIGlmbmRlZiBw dXNoX3NlY3Rpb25fY29yZQorIyAgZGVmaW5lIHB1c2hfc2VjdGlvbl9jb3JlKF9fc2VjdGlvbiwg X19jb3JlLCBfX25hbWUsCQkJXAorCQkJICAgIF9fbGV2ZWwsIF9fZmxhZ3MpCQkJCVwKKwlfX3N0 cmluZ2lmeShfX3B1c2hfc2VjdGlvbl9jb3JlKF9fc2VjdGlvbiwgX19jb3JlLAkJXAorCQkJCQlf X25hbWUsCV9fbGV2ZWwsCQlcCisJCQkJCV9fc3RyaW5naWZ5KF9fZmxhZ3MpKSkJCVwKKwlBU01f Q01EX1NFUAorIyBlbmRpZgorCisjZW5kaWYgLyogZGVmaW5lZChfX0FTU0VNQkxFUl9fKSB8fCBk ZWZpbmVkKF9fQVNTRU1CTFlfXykgKi8KKyNlbmRpZiAvKiBfQVNNX0dFTkVSSUNfU0VDVElPTl9D T1JFX0hfICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmggYi9p bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmgKaW5kZXggNGRmNjRhMWZjMDllLi5iMTQ1YWU4 ZDljYmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2VjdGlvbnMuaAorKysgYi9p bmNsdWRlL2FzbS1nZW5lcmljL3NlY3Rpb25zLmgKQEAgLTEsNiArMSw4IEBACiAjaWZuZGVmIF9B U01fR0VORVJJQ19TRUNUSU9OU19IXwogI2RlZmluZSBfQVNNX0dFTkVSSUNfU0VDVElPTlNfSF8K IAorI2luY2x1ZGUgPGFzbS9zZWN0aW9uLWNvcmUuaD4KKwogLyogUmVmZXJlbmNlcyB0byBzZWN0 aW9uIGJvdW5kYXJpZXMgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2NvbXBpbGVyLmg+CmRpZmYgLS1n aXQgYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmggYi9pbmNsdWRlL2FzbS1nZW5l cmljL3ZtbGludXgubGRzLmgKaW5kZXggMDk2OGQxM2IzODg1Li40ODNmNjBjNDUxZjkgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaAorKysgYi9pbmNsdWRlL2Fz bS1nZW5lcmljL3ZtbGludXgubGRzLmgKQEAgLTU1LDYgKzU1LDcgQEAKICNlbmRpZgogCiAjaW5j bHVkZSA8bGludXgvZXhwb3J0Lmg+CisjaW5jbHVkZSA8YXNtL3NlY3Rpb24tY29yZS5oPgogCiAv KiBBbGlnbiAuIHRvIGEgOCBieXRlIGJvdW5kYXJ5IGVxdWFscyB0byBtYXhpbXVtIGZ1bmN0aW9u IGFsaWdubWVudC4gKi8KICNkZWZpbmUgQUxJR05fRlVOQ1RJT04oKSAgLiA9IEFMSUdOKDgpCmRp ZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2luaXQuaCBiL2luY2x1ZGUvbGludXgvaW5pdC5oCmlu ZGV4IDg4NWMzZTZkMGY5ZC4uMjFjNmJlYzllM2QwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4 L2luaXQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2luaXQuaApAQCAtMTMwLDYgKzEzMCwyNCBAQCBp bnQgX19pbml0IGluaXRfcm9vdGZzKHZvaWQpOwogZXh0ZXJuIGJvb2wgcm9kYXRhX2VuYWJsZWQ7 CiAjZW5kaWYKICNpZmRlZiBDT05GSUdfREVCVUdfUk9EQVRBCisvKioKKyAqIG1hcmtfcm9kYXRh X3JvIC0gaW1wbGVtZW50IG1lbW9yeSBwcm90ZWN0aW9uIGZvciBFTEYgc2VjdGlvbnMKKyAqCisg KiBBcmNoaXRlY3R1cmVzIHdoaWNoIHN1cHBvcnQgbWVtb3J5IHByb3RlY3Rpb24gZGVmaW5lIGEg a2VybmVsIGNvbmZpZ3VyYXRpb24KKyAqIGVudHJ5IGZvciBDT05GSUdfREVCVUdfUk9EQVRBLCBl bmFibGUgaXQgaW4gYW5kIGltcGxlbWVudCBtYXJrX3JvZGF0YV9ybygpLgorICogbWFya19yb2Rh dGFfcm8oKSBzaG91bGQgc3RyaXZlIHRvIGFkanVzdCB0aGUgLnJvZGF0YSBhbmQgLnRleHQgRUxG IHNlY3Rpb25zCisgKiB3aXRoIHJlYWQtb25seSBtZW1vcnkgcHJvdGVjdGlvbiB0byBwcmV2ZW50 IG1vZGlmaWNhdGlvbnMgb2YgdGhlc2Ugc2VjdGlvbnMKKyAqIGFmdGVyIGJvb3R1cC4gSXQgY2Fu IGFsc28gdHJ5IHRvIHVzZSBtZW1vcnkgcHJvdGVjdGlvbiB0byBwcmV2ZW50IGV4ZWN1dGlvbgor ICogb24gdGhlIC5yb2RhdGEgRUxGIHNlY3Rpb24uCisgKgorICogSW4gb3JkZXIgdG8gaGVscCBh cmNoaXRlY3R1cmVzIHNldCBib3RoIC50ZXh0IGFuZCAucm9kYXRhIGFzIHJlYWQtb25seSB3aXRo CisgKiBtZW1vcnkgcHJvdGVjdGlvbnMgaW4gb25lIHNob3QgTGludXggaGFzIHR5cGljYWxseSBm b2xsb3dlZCB0aGUgY29udmVudGlvbgorICogdG8gaGF2ZSB0aGUgLnJvZGF0YSBFTEYgc2VjdGlv biBmb2xsb3cgdGhlIC50ZXh0IEVMRiBzZWN0aW9uIG9uIHRoZSB2bWxpbnV4CisgKiBsaW5rZXIg c2NyaXB0LgorICoKKyAqIExpbnV4IGNhbGxzIG1hcmtfcm9kYXRhX3JvKCkgYWZ0ZXIgZnJlZWlu ZyAuaW5pdCBjb2RlIGFuZCBwcmlvciB0byBjYWxsaW5nCisgKiB0aGUgZmlyc3QgaW5pdCB1c2Vy c3BhY2UgcHJvY2Vzcy4KKyAqLwogdm9pZCBtYXJrX3JvZGF0YV9ybyh2b2lkKTsKICNlbmRpZgog CkBAIC0xNDAsMjUgKzE1OCw3MCBAQCBleHRlcm4gYm9vbCBpbml0Y2FsbF9kZWJ1ZzsKICNlbmRp ZgogICAKICNpZm5kZWYgTU9EVUxFCisvKioKKyAqIERPQzogSW5pdGNhbGwgbGV2ZWxzCisgKgor ICogV2hlbiBMaW51eCBib290cyB0aGUga2VybmVsIGRvX2luaXRjYWxscygpIGl0ZXJhdGVzIG92 ZXIgZWFjaCBMaW51eAorICogaW5pdGlhbGl6YXRpb24gbGV2ZWwgSUQgYW5kIGNhbGxzIGFsbCBy b3V0aW5lcyBlbWJlZGRlZCBvbiBlYWNoIGxldmVsIElELgorICogUHJpb3IgdG8gdjIuNS4yLjMg TGludXggaGFkIG9ubHkgb25lIGluaXQgbGV2ZWwgb250byB3aGljaCBhbGwgaW5pdAorICogZnVu Y3Rpb25zIGZvbGRlZCBvbnRvIHVzaW5nIF9faW5pdGNhbGwoKS4gQWZ0ZXIgdjIuNS4yLjQgTGlu dXggc3BsaXQgdXAKKyAqIGluaXRjYWxscyBpbnRvIDcgc2VwYXJhdGUgaW5pdGNhbGwgc3Vic2Vj dGlvbiBsZXZlbHMsIGVhY2ggbGV2ZWwgZGVzY3JpYmluZworICogZGlmZmVyZW50IGZ1bmN0aW9u YWxpdHkgcGFydCBvZiB0aGUga2VybmVsIChjb21taXQgYDlkNmJhMTIxYjdlMTcwODVgXworICog KHYyLjUuMi4zIC0+IHYyLjUuMi40KSkuIEluIG9yZGVyIHRvIHJlbWFpbiBiYWNrd2FyZCBjb21w YXRpYmxlIF9faW5pdGNhbGwoKQorICogY2FsbHMgd2VyZSBsZWZ0IG1hcHBlZCB0byBkZXZpY2Vf aW5pdGNhbGwoKS4KKyAqCisgKiBFYWNoIGluaXQgbGV2ZWwgY29uc2lzdHMgb2YgYSBkZWRpY2F0 ZWQgRUxGIHNlY3Rpb24sIGluaXQgZnVuY3Rpb25zIGFyZQorICogYXNzb2NpYXRlZCB0byBhbiBp bml0IGxldmVsIGJ5IGxpbmtpbmcgaXQgaW50byB0aGUgcmVzcGVjdGl2ZSBsZXZlbCdzCisgKiBF TEYgc2VjdGlvbi4KKyAqCisgKiBMb3dlciBvcmRlciBpbml0IGxldmVscyBydW4gcHJpb3IgdG8g aGlnaGVyIG9yZGVyIGluaXQgbGV2ZWxzLiBPcmRlcmluZworICogaW5zaWRlIGVhY2ggaW5pdGNh bGwgbGV2ZWwgaXMgZGV0ZXJtaW5lZCBieSByZXNwZWN0aXZlIGxpbmsgb3JkZXIuCisgKgorICog Li4gXzlkNmJhMTIxYjdlMTcwODU6IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvY2dpdC9saW51eC9r ZXJuZWwvZ2l0L2hpc3RvcnkvaGlzdG9yeS5naXQvY29tbWl0Lz9pZJ02YmExMjFiN2UxNzA4NWM5 NTEzOTIzMzY4NmIyN2E0ZDRjNjUwZQorICovCiAKICNpZm5kZWYgX19BU1NFTUJMWV9fCiAKLS8q Ci0gKiBpbml0Y2FsbHMgYXJlIG5vdyBncm91cGVkIGJ5IGZ1bmN0aW9uYWxpdHkgaW50byBzZXBh cmF0ZQotICogc3Vic2VjdGlvbnMuIE9yZGVyaW5nIGluc2lkZSB0aGUgc3Vic2VjdGlvbnMgaXMg ZGV0ZXJtaW5lZAotICogYnkgbGluayBvcmRlci4gCi0gKiBGb3IgYmFja3dhcmRzIGNvbXBhdGli aWxpdHksIGluaXRjYWxsKCkgcHV0cyB0aGUgY2FsbCBpbiAKLSAqIHRoZSBkZXZpY2UgaW5pdCBz dWJzZWN0aW9uLgorLyoqCisgKiBfX2RlZmluZV9pbml0Y2FsbCAtIHdyYXBwZXIgZm9yIGRlZmlu aW5nIGluaXQgbGV2ZWxzCiAgKgotICogVGhlIGBpZCcgYXJnIHRvIF9fZGVmaW5lX2luaXRjYWxs KCkgaXMgbmVlZGVkIHNvIHRoYXQgbXVsdGlwbGUgaW5pdGNhbGxzCi0gKiBjYW4gcG9pbnQgYXQg dGhlIHNhbWUgaGFuZGxlciB3aXRob3V0IGNhdXNpbmcgZHVwbGljYXRlLXN5bWJvbCBidWlsZCBl cnJvcnMuCisgKiBAZm46IGluaXQgcm91dGluZQorICogQGlkOiBpbml0IGxldmVsCiAgKgotICog SW5pdGNhbGxzIGFyZSBydW4gYnkgcGxhY2luZyBwb2ludGVycyBpbiBpbml0Y2FsbCBzZWN0aW9u cyB0aGF0IHRoZQotICoga2VybmVsIGl0ZXJhdGVzIGF0IHJ1bnRpbWUuIFRoZSBsaW5rZXIgY2Fu IGRvIGRlYWQgY29kZSAvIGRhdGEgZWxpbWluYXRpb24KLSAqIGFuZCByZW1vdmUgdGhhdCBjb21w bGV0ZWx5LCBzbyB0aGUgaW5pdGNhbGwgc2VjdGlvbnMgaGF2ZSB0byBiZSBtYXJrZWQKLSAqIGFz IEtFRVAoKSBpbiB0aGUgbGlua2VyIHNjcmlwdC4KKyAqIERlZmluZXMgYSBrZXJuZWwgaW5pdGlh bGl6YXRpb24gbGV2ZWwuIEEgcmVzcGVjdGl2ZSBsaW5rZXIgc2NyaXB0IGVudHJ5CisgKiBpcyBy ZXF1aXJlZCB0byBlbnN1cmUgdGhlIGluaXQgbGV2ZWwgaXMgYWNjb3VudGVkIGZvciBhbmQgdG8g ZW5zdXJlIHN5bWJvbHMKKyAqIGV4aXN0IGZvciBpdGVyYXRpbmcgb3ZlciBhbGwgZnVuY3Rpb25z IGluIHRoZSBpbml0IGxldmVsLiBBIGluaXQgbGV2ZWwKKyAqIHJlcHJlc2VudHMgYSBzZXJpZXMg b2YgZnVuY3Rpb25hbGl0eSBpbiB0aGUga2VybmVsLgorICoKKyAqIE9yZGVyaW5nIHdpdGhpbiBh biBpbml0aWFsaXphdGlvbiBsZXZlbCBpcyBkZXRlcm1pbmVkIGJ5IGxpbmsgb3JkZXIsIHNvCisg KiBmb3IgaW5zdGFuY2UgaWYgYSBNYWtlZmlsZSBoYWQ6OgorICoKKyAqCW9iai15ICs9IGZvby5v CisgKglvYmoteSArPSBiYXIubworICoKKyAqIEFuZCBmb28uYzo6CisgKgorICoJc3Vic3lzX2lu aXRjYWxsKGZvb19pbml0KTsKKyAqCisgKiBBbmQgYmFyLmMgaGFkOjoKKyAqCisgKglzdWJzeXNf aW5pdGNhbGwoYmFyX2luaXQpOworICoKKyAqIGZvb19pbml0KCkgd291bGQgYmUgY2FsbGVkIHBy aW9yIHRvIGJhcl9pbml0KCkuCisgKgorICogTm90ZSB0aGF0IEBpZCBpbiBfX2RlZmluZV9pbml0 Y2FsbCgpIGFsc28gZW5hYmxlcyBtdWx0aXBsZSBpbml0Y2FsbHMKKyAqIHRvIGJlIGNyZWF0ZWQg dXNpbmcgdGhlIHNhbWUgaGFuZGxlciBmb3IgZGlmZmVyZW50IGluaXQgbGV2ZWxzIHdpdGhvdXQK KyAqIGNhdXNpbmcgZHVwbGljYXRlLXN5bWJvbCBidWlsZCBlcnJvcnMuCisgKgorICogSW5pdGNh bGxzIGFyZSBydW4gYnkgcGxhY2luZyBzdGFydCBzeW1ib2xzIHRvIGluaXRjYWxsIGxldmVscyBp bnNpZGUgRUxGCisgKiBzZWN0aW9ucywgdGhlIGtlcm5lbCBpbiB0dXJuIHVzZXMgdGhlc2Ugc3lt Ym9scyB0byBpdGVyYXRlIG92ZXIgZWFjaCBpbml0CisgKiBsZXZlbCBhdCBydW50aW1lIHdpdGgg ZG9faW5pdGNhbGxfbGV2ZWwoKS4gVGhlIGVuZCBvZiBlYWNoIGluaXQgbGV2ZWwgaXMKKyAqIG1h cmtlZCBieSB0aGUgc3Vic2VxdWVudCBzeW1ib2wncyBzdGFydCBhZGRyZXNzIHVudGlsIHdlIHJl YWNoIHRoZSBzeW1ib2wKKyAqIGBgX19pbml0Y2FsbF9lbmRgYC4gVGhlIGxpbmtlciBjYW4gZG8g ZGVhZCBjb2RlIC8gZGF0YSBlbGltaW5hdGlvbiBhbmQgZWFjaAorICogaW5pdCBsZXZlbCBzdGFy dCBzeW1ib2wgY291bGQgYmUgcmVtb3ZlZCBjb21wbGV0ZWx5IGluIHRoaXMgcHJvY2VzcywgdG8K KyAqIGF2b2lkIHRoaXMgZWFjaCBpbml0IGxldmVsIHN0YXJ0IHN5bWJvbHMgbXVzdCBiZSBtYXJr ZWQgYXMgJ0tFRVAoKScgaW4gdGhlCisgKiBsaW5rZXIgc2NyaXB0IHRvIGF2b2lkIGFueSBsaW5r ZXIgb3B0aW1pemF0aW9uIGhldXJpc3RpYyBvbiBpbml0Y2FsbHMuCiAgKi8KLQogI2RlZmluZSBf X2RlZmluZV9pbml0Y2FsbChmbiwgaWQpIFwKIAlzdGF0aWMgaW5pdGNhbGxfdCBfX2luaXRjYWxs XyMjZm4jI2lkIF9fdXNlZCBcCiAJX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oIi5pbml0Y2Fs bCIgI2lkICIuaW5pdCIpKSkgPSBmbjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2VjdGlv bnMuaCBiL2luY2x1ZGUvbGludXgvc2VjdGlvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjY3NzFjNzI3YmNkMQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUv bGludXgvc2VjdGlvbnMuaApAQCAtMCwwICsxLDg3IEBACisjaWZuZGVmIF9MSU5VWF9TRUNUSU9O U19ICisjZGVmaW5lIF9MSU5VWF9TRUNUSU9OU19ICisvKgorICogTGludXggZGUtZmFjdG8gc2Vj dGlvbnMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTHVpcyBSLiBSb2RyaWd1ZXogPG1jZ3Jv ZkBrZXJuZWwub3JnPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMg b2YgY29weWxlZnQtbmV4dCAodmVyc2lvbiAwLjMuMSBvciBsYXRlcikgYXMgcHVibGlzaGVkCisg KiBhdCBodHRwOi8vY29weWxlZnQtbmV4dC5vcmcvLgorICovCisKKyNpbmNsdWRlIDxhc20vc2Vj dGlvbi1jb3JlLmg+CisjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CisKKyNpZm5kZWYgX19BU1NF TUJMWV9fCisKKy8qKgorICogRE9DOiBJbnRyb2R1Y3Rpb24KKyAqCisgKiBMaW51eCBkZWZpbmVz IGEgc2V0IG9mIGNvbW1vbiBoZWxwZXJzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGFnYWluc3QgaXRz IHVzZQorICogb2Ygc3RhbmRhcmQgb3IgY3VzdG9tIExpbnV4IHNlY3Rpb25zLCB0aGlzIHNlY3Rp b24gaXMgZGVkaWNhdGVkIHRvIHRoZXNlCisgKiBoZWxwZXJzLgorICovCisKKy8qKgorICogTElO VVhfU0VDVElPTl9BTElHTk1FTlQgLSBnZXQgc2VjdGlvbiBhbGlnbm1lbnQKKyAqCisgKiBAbmFt ZTogc2VjdGlvbiBuYW1lCisgKgorICogR2l2ZXMgeW91IHRoZSBhbGlnbm1lbnQgZm9yIHRoZSBz ZWN0aW9uLgorICovCisjZGVmaW5lIExJTlVYX1NFQ1RJT05fQUxJR05NRU5UKG5hbWUpCV9fYWxp Z25vZl9fKCpWTUxJTlVYX1NZTUJPTChuYW1lKSkKKworLyoqCisgKiBMSU5VWF9TRUNUSU9OX1NU QVJUIC0gZ2V0IGFkZHJlc3Mgb2Ygc3RhcnQgb2Ygc2VjdGlvbgorICoKKyAqIEBuYW1lOiBzZWN0 aW9uIG5hbWUKKyAqCisgKiBUaGlzIGdpdmVzIHlvdSB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUg c2VjdGlvbi4KKyAqIFRoaXMgc2hvdWxkIGdpdmUgeW91IHRoZSBhZGRyZXNzIG9mIHRoZSBmaXJz dCBlbnRyeS4KKyAqCisgKi8KKyNkZWZpbmUgTElOVVhfU0VDVElPTl9TVEFSVChuYW1lKQlWTUxJ TlVYX1NZTUJPTChuYW1lKQorCisvKioKKyAqIExJTlVYX1NFQ1RJT05fRU5EIC0gZ2V0IGFkZHJl c3Mgb2YgZW5kIG9mIHRoZSBzZWN0aW9uCisgKgorICogQG5hbWU6IHNlY3Rpb24gbmFtZQorICoK KyAqIFRoaXMgZ2l2ZXMgeW91IHRoZSBlbmQgYWRkcmVzcyBvZiB0aGUgc2VjdGlvbi4KKyAqIFRo aXMgc2hvdWxkIGdpdmUgeW91IHRoZSBhZGRyZXNzIG9mIHRoZSBlbmQgb2YgdGhlCisgKiBzZWN0 aW9uLiBUaGlzIHdpbGwgbWF0Y2ggdGhlIHN0YXJ0IGFkZHJlc3MgaWYgdGhlCisgKiBzZWN0aW9u IGlzIGVtcHR5LgorICovCisjZGVmaW5lIExJTlVYX1NFQ1RJT05fRU5EKG5hbWUpCVZNTElOVVhf U1lNQk9MKG5hbWUjI19fZW5kKQorCisvKioKKyAqIERFQ0xBUkVfTElOVVhfU0VDVElPTiAtIERl Y2xhcmVzIGEgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqCisgKiBAdHlwZTogdHlwZSBvZiBjdXN0 b20gTGludXggc2VjdGlvbgorICogQG5hbWU6IGN1c3RvbSBzZWN0aW9uIG5hbWUKKyAqCisgKiBE ZWNsYXJlcyBhIHJlYWQtd3JpdGUgY3VzdG9tIExpbnV4IHNlY3Rpb24KKyAqLworI2RlZmluZSBE RUNMQVJFX0xJTlVYX1NFQ1RJT04odHlwZSwgbmFtZSkJCQkJXAorCSBleHRlcm4gdHlwZSBWTUxJ TlVYX1NZTUJPTChuYW1lKVtdLCBcCisJCSAgICAgVk1MSU5VWF9TWU1CT0wobmFtZSMjX19lbmQp W10KKworLyoqCisgKiBERUNMQVJFX0xJTlVYX1NFQ1RJT05fUk8gLSBEZWNsYXJlcyBhIHJlYWQt b25seSBjdXN0b20gTGludXggc2VjdGlvbgorICoKKyAqIEB0eXBlOiB0eXBlIG9mIGN1c3RvbSBM aW51eCBzZWN0aW9uCisgKiBAbmFtZTogY3VzdG9tIHNlY3Rpb24gbmFtZQorICoKKyAqIERlY2xh cmVzIGEgcmVhZC1vbmx5IGN1c3RvbSBMaW51eCBzZWN0aW9uCisgKi8KKyNkZWZpbmUgREVDTEFS RV9MSU5VWF9TRUNUSU9OX1JPKHR5cGUsIG5hbWUpCQkJCVwKKwkgZXh0ZXJuIGNvbnN0IHR5cGUg Vk1MSU5VWF9TWU1CT0wobmFtZSlbXSwJCQlcCisJCQkgICBWTUxJTlVYX1NZTUJPTChuYW1lIyNf X2VuZClbXQorCisjZGVmaW5lIF9fU0VDVElPTl9DT1JFKHNlY3Rpb24sIGNvcmUsIG5hbWUsIGxl dmVsKQkJCVwKKwkjc2VjdGlvbiAiLi4iICNjb3JlICIuIiAjbmFtZSAiLiIgI2xldmVsCisKKyNl bmRpZiAvKiBfX0FTU0VNQkxZX18gKi8KKworI2VuZGlmIC8qIF9MSU5VWF9TRUNUSU9OU19IICov Ci0tIAoyLjExLjAKCi0tClRvIHVuc3Vic2NyaWJlIGZyb20gdGhpcyBsaXN0OiBzZW5kIHRoZSBs aW5lICJ1bnN1YnNjcmliZSBsaW51eC1pYTY0IiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8g bWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8v dmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWw=