From: Bjorn Munch Date: March 11 2011 10:01am Subject: bzr push into mysql-5.1-mtr branch (bjorn.munch:2985 to 2986) List-Archive: http://lists.mysql.com/commits/132802 Message-Id: <201103111001.p2BA1iaX009226@khepri15.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDI5ODYgQmpvcm4gTXVuY2gJMjAxMS0wMy0xMSBbbWVyZ2VdCiAgICAgIG1lcmdlIGZyb20gNS4x IG1haW4KCiAgICBtb2RpZmllZDoKICAgICAgbXlzcWwtdGVzdC9yL2dyYW50LnJlc3VsdAogICAg ICBteXNxbC10ZXN0L3IvcGFydGl0aW9uLnJlc3VsdAogICAgICBteXNxbC10ZXN0L3N1aXRlL2Z1 bmNzXzEvci9pbm5vZGJfc3RvcmVkcHJvY18wNi5yZXN1bHQKICAgICAgbXlzcWwtdGVzdC9zdWl0 ZS9mdW5jc18xL3IvbWVtb3J5X3N0b3JlZHByb2NfMDYucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qv c3VpdGUvZnVuY3NfMS9yL215aXNhbV9zdG9yZWRwcm9jXzA2LnJlc3VsdAogICAgICBteXNxbC10 ZXN0L3N1aXRlL2Z1bmNzXzEvc3RvcmVkcHJvYy9zdG9yZWRwcm9jXzA2LmluYwogICAgICBteXNx bC10ZXN0L3QvZ3JhbnQudGVzdAogICAgICBteXNxbC10ZXN0L3QvcGFydGl0aW9uLnRlc3QKICAg ICAgc3FsL2hhX3BhcnRpdGlvbi5jYwogICAgICBzcWwvc3FsX2FjbC5jYwogMjk4NSBCam9ybiBN dW5jaAkyMDExLTAzLTA4IFttZXJnZV0KICAgICAgbWVyZ2UgZnJvbSA1LjEgbWFpbgoKICAgIGFk ZGVkOgogICAgICBteXNxbC10ZXN0L3IvZnVuY19lbmNyeXB0X3VjczIucmVzdWx0CiAgICAgIG15 c3FsLXRlc3QvdC9mdW5jX2VuY3J5cHRfdWNzMi50ZXN0CiAgICBtb2RpZmllZDoKICAgICAgbXlz cWwtdGVzdC9yL2N0eXBlX3NqaXMucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci9jdHlwZV91Y3Mu cmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvci94bWwucmVzdWx0CiAgICAgIG15c3FsLXRlc3Qvc3Vp dGUvZW5naW5lcy9pdWRzL3IvaW5zZXJ0X3llYXIucmVzdWx0CiAgICAgIG15c3FsLXRlc3QvdC9j dHlwZV9zamlzLnRlc3QKICAgICAgbXlzcWwtdGVzdC90L2N0eXBlX3Vjcy50ZXN0CiAgICAgIG15 c3FsLXRlc3QvdC94bWwudGVzdAogICAgICBzcWwvaXRlbV9mdW5jLmNjCiAgICAgIHNxbC9pdGVt X3N0cmZ1bmMuY2MKICAgICAgc3FsL2l0ZW1fc3RyZnVuYy5oCiAgICAgIHNxbC9zcWxfcGFyc2Uu Y2MKICAgICAgc3RyaW5ncy94bWwuYwo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9yL2dy YW50LnJlc3VsdCcKLS0tIGEvbXlzcWwtdGVzdC9yL2dyYW50LnJlc3VsdAkyMDEwLTEyLTE1IDE2 OjA4OjIxICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9ncmFudC5yZXN1bHQJMjAxMS0wMi0wNyAx MjowNjoyMiArMDAwMApAQCAtMTMyNiw2ICsxMzI2LDE5OSBAQCBEUk9QIERBVEFCQVNFIG15c3Fs dGVzdDI7CiBEUk9QIFVTRVIgdGVzdHVzZXJAbG9jYWxob3N0OwogdXNlIHRlc3Q7CiAKKyMKKyMg VGVzdCBmb3IgYnVnICMzNjU0NCAiRFJPUCBVU0VSIGRvZXMgbm90IHJlbW92ZSBzdG9yZWQgZnVu Y3Rpb24KKyMgICAgICAgICAgICAgICAgICAgICAgcHJpdmlsZWdlcyIuCisjCitjcmVhdGUgZGF0 YWJhc2UgbXlzcWx0ZXN0MTsKK2NyZWF0ZSBmdW5jdGlvbiBteXNxbHRlc3QxLmYxKCkgcmV0dXJu cyBpbnQgcmV0dXJuIDA7CitjcmVhdGUgcHJvY2VkdXJlIG15c3FsdGVzdDEucDEoKSBiZWdpbiBl bmQ7CisjCisjIDEpIENoZWNrIHRoYXQgRFJPUCBVU0VSIHByb3Blcmx5IHJlbW92ZXMgcHJpdmls ZWdlcyBvbiBib3RoCisjICAgIHN0b3JlZCBwcm9jZWR1cmVzIGFuZCBmdW5jdGlvbnMuCisjCitj cmVhdGUgdXNlciBteXNxbHVzZXIxQGxvY2FsaG9zdDsKK2dyYW50IGV4ZWN1dGUgb24gZnVuY3Rp b24gbXlzcWx0ZXN0MS5mMSB0byBteXNxbHVzZXIxQGxvY2FsaG9zdDsKK2dyYW50IGV4ZWN1dGUg b24gcHJvY2VkdXJlIG15c3FsdGVzdDEucDEgdG8gbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CisjIFF1 aWNrIHRlc3QgdGhhdCBncmFudGVkIHByaXZpbGVnZXMgYXJlIHByb3Blcmx5IHJlZmxlY3RlZAor IyBpbiBwcml2aWxlZ2UgdGFibGVzIGFuZCBpbiBpbi1tZW1vcnkgc3RydWN0dXJlcy4KK3Nob3cg Z3JhbnRzIGZvciBteXNxbHVzZXIxQGxvY2FsaG9zdDsKK0dyYW50cyBmb3IgbXlzcWx1c2VyMUBs b2NhbGhvc3QKK0dSQU5UIFVTQUdFIE9OICouKiBUTyAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcK K0dSQU5UIEVYRUNVVEUgT04gUFJPQ0VEVVJFIGBteXNxbHRlc3QxYC5gcDFgIFRPICdteXNxbHVz ZXIxJ0AnbG9jYWxob3N0JworR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBgbXlzcWx0ZXN0MWAu YGYxYCBUTyAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcKK3NlbGVjdCBkYiwgcm91dGluZV9uYW1l LCByb3V0aW5lX3R5cGUsIHByb2NfcHJpdiBmcm9tIG15c3FsLnByb2NzX3ByaXYgd2hlcmUgdXNl cj0nbXlzcWx1c2VyMScgYW5kIGhvc3Q9J2xvY2FsaG9zdCc7CitkYglyb3V0aW5lX25hbWUJcm91 dGluZV90eXBlCXByb2NfcHJpdgorbXlzcWx0ZXN0MQlmMQlGVU5DVElPTglFeGVjdXRlCitteXNx bHRlc3QxCXAxCVBST0NFRFVSRQlFeGVjdXRlCisjCisjIENyZWF0ZSBjb25uZWN0aW9uICdidWdf MzY1NDRfY29uMScgYXMgJ215c3FsdXNlcjFAbG9jYWxob3N0Jy4KK2NhbGwgbXlzcWx0ZXN0MS5w MSgpOworc2VsZWN0IG15c3FsdGVzdDEuZjEoKTsKK215c3FsdGVzdDEuZjEoKQorMAorIworIyBT d2l0Y2ggdG8gY29ubmVjdGlvbiAnZGVmYXVsdCcuCitkcm9wIHVzZXIgbXlzcWx1c2VyMUBsb2Nh bGhvc3Q7CisjCisjIFRlc3QgdGhhdCBkcm9wcGluZyBvZiB1c2VyIGlzIHByb3Blcmx5IHJlZmxl Y3RlZCBpbgorIyBib3RoIHByaXZpbGVnZSB0YWJsZXMgYW5kIGluIGluLW1lbW9yeSBzdHJ1Y3R1 cmVzLgorIworIyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAnYnVnMzY1NDRfY29uMScuCisjIFRoZSBj b25uZWN0aW9uIGNvbGQgYmUgYWxpdmUgYnV0IHNob3VsZCBub3QgYmUgYWJsZSB0bworIyBhY2Nl c3MgdG8gYW55IG9mIHRoZSBzdG9yZWQgcm91dGluZXMuCitjYWxsIG15c3FsdGVzdDEucDEoKTsK K0VSUk9SIDQyMDAwOiBleGVjdXRlIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJ215c3FsdXNlcjEn QCdsb2NhbGhvc3QnIGZvciByb3V0aW5lICdteXNxbHRlc3QxLnAxJworc2VsZWN0IG15c3FsdGVz dDEuZjEoKTsKK0VSUk9SIDQyMDAwOiBleGVjdXRlIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJ215 c3FsdXNlcjEnQCdsb2NhbGhvc3QnIGZvciByb3V0aW5lICdteXNxbHRlc3QxLmYxJworIworIyBT d2l0Y2ggdG8gY29ubmVjdGlvbiAnZGVmYXVsdCcuCisjCisjIE5vdyBjcmVhdGUgdXNlciB3aXRo IHRoZSBzYW1lIG5hbWUgYW5kIGNoZWNrIHRoYXQgaGUKKyMgaGFzIG5vdCBpbmhlcml0ZWQgcHJp dmlsZWdlcy4KK2NyZWF0ZSB1c2VyIG15c3FsdXNlcjFAbG9jYWxob3N0Oworc2hvdyBncmFudHMg Zm9yIG15c3FsdXNlcjFAbG9jYWxob3N0OworR3JhbnRzIGZvciBteXNxbHVzZXIxQGxvY2FsaG9z dAorR1JBTlQgVVNBR0UgT04gKi4qIFRPICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0Jworc2VsZWN0 IGRiLCByb3V0aW5lX25hbWUsIHJvdXRpbmVfdHlwZSwgcHJvY19wcml2IGZyb20gbXlzcWwucHJv Y3NfcHJpdiB3aGVyZSB1c2VyPSdteXNxbHVzZXIxJyBhbmQgaG9zdD0nbG9jYWxob3N0JzsKK2Ri CXJvdXRpbmVfbmFtZQlyb3V0aW5lX3R5cGUJcHJvY19wcml2CisjCisjIENyZWF0ZSBjb25uZWN0 aW9uICdidWdfMzY1NDRfY29uMicgYXMgJ215c3FsdXNlcjFAbG9jYWxob3N0Jy4KKyMgTmV3bHkg Y3JlYXRlZCB1c2VyIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgYW55IG9mIHRoZSByb3V0 aW5lcy4KK2NhbGwgbXlzcWx0ZXN0MS5wMSgpOworRVJST1IgNDIwMDA6IGV4ZWN1dGUgY29tbWFu ZCBkZW5pZWQgdG8gdXNlciAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcgZm9yIHJvdXRpbmUgJ215 c3FsdGVzdDEucDEnCitzZWxlY3QgbXlzcWx0ZXN0MS5mMSgpOworRVJST1IgNDIwMDA6IGV4ZWN1 dGUgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcgZm9yIHJv dXRpbmUgJ215c3FsdGVzdDEuZjEnCisjCisjIFN3aXRjaCB0byBjb25uZWN0aW9uICdkZWZhdWx0 Jy4KKyMKKyMgMikgQ2hlY2sgdGhhdCBSRU5BTUUgVVNFUiBwcm9wZXJseSB1cGRhdGVzIHByaXZp bGVnZXMgb24gYm90aAorIyAgICBzdG9yZWQgcHJvY2VkdXJlcyBhbmQgZnVuY3Rpb25zLgorIwor Z3JhbnQgZXhlY3V0ZSBvbiBmdW5jdGlvbiBteXNxbHRlc3QxLmYxIHRvIG15c3FsdXNlcjFAbG9j YWxob3N0OworZ3JhbnQgZXhlY3V0ZSBvbiBwcm9jZWR1cmUgbXlzcWx0ZXN0MS5wMSB0byBteXNx bHVzZXIxQGxvY2FsaG9zdDsKKyMKKyMgQ3JlYXRlIG9uZSBtb3JlIHVzZXIgdG8gbWFrZSBpbi1t ZW1vcnkgaGFzaGVzIG5vbi10cml2aWFsLgorIyBVc2VyIG5hbWVzICdteXNxbHVzZXIxMScgYW5k ICdteXNxbHVzZXIxMCcgd2VyZSBzZWxlY3RlZAorIyB0byB0cmlnZ2VyIGJ1ZyBkaXNjb3ZlcmVk IGR1cmluZyBjb2RlIGluc3BlY3Rpb24uCitjcmVhdGUgdXNlciBteXNxbHVzZXIxMUBsb2NhbGhv c3Q7CitncmFudCBleGVjdXRlIG9uIGZ1bmN0aW9uIG15c3FsdGVzdDEuZjEgdG8gbXlzcWx1c2Vy MTFAbG9jYWxob3N0OworZ3JhbnQgZXhlY3V0ZSBvbiBwcm9jZWR1cmUgbXlzcWx0ZXN0MS5wMSB0 byBteXNxbHVzZXIxMUBsb2NhbGhvc3Q7CisjIEFsc28gY3JlYXRlIGEgY291cGxlIG9mIHRhYmxl cyB0byB0ZXN0IGZvciBhbm90aGVyIGJ1ZworIyBkaXNjb3ZlcmVkIGR1cmluZyBjb2RlIGluc3Bl Y3Rpb24gKGFnYWluIHRhYmxlIG5hbWVzIHdlcmUKKyMgY2hvc2VuIGVzcGVjaWFsbHkgdG8gdHJp Z2dlciB0aGUgYnVnKS4KK2NyZWF0ZSB0YWJsZSBteXNxbHRlc3QxLnQxMSAoaSBpbnQpOworY3Jl YXRlIHRhYmxlIG15c3FsdGVzdDEudDIyIChpIGludCk7CitncmFudCBzZWxlY3Qgb24gbXlzcWx0 ZXN0MS50MjIgdG8gbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitncmFudCBzZWxlY3Qgb24gbXlzcWx0 ZXN0MS50MTEgdG8gbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CisjIFF1aWNrIHRlc3QgdGhhdCBncmFu dGVkIHByaXZpbGVnZXMgYXJlIHByb3Blcmx5IHJlZmxlY3RlZAorIyBpbiBwcml2aWxlZ2UgdGFi bGVzIGFuZCBpbiBpbi1tZW1vcnkgc3RydWN0dXJlcy4KK3Nob3cgZ3JhbnRzIGZvciBteXNxbHVz ZXIxQGxvY2FsaG9zdDsKK0dyYW50cyBmb3IgbXlzcWx1c2VyMUBsb2NhbGhvc3QKK0dSQU5UIFVT QUdFIE9OICouKiBUTyAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcKK0dSQU5UIFNFTEVDVCBPTiBg bXlzcWx0ZXN0MWAuYHQxMWAgVE8gJ215c3FsdXNlcjEnQCdsb2NhbGhvc3QnCitHUkFOVCBTRUxF Q1QgT04gYG15c3FsdGVzdDFgLmB0MjJgIFRPICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0JworR1JB TlQgRVhFQ1VURSBPTiBQUk9DRURVUkUgYG15c3FsdGVzdDFgLmBwMWAgVE8gJ215c3FsdXNlcjEn QCdsb2NhbGhvc3QnCitHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIGBteXNxbHRlc3QxYC5gZjFg IFRPICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0Jworc2VsZWN0IGRiLCByb3V0aW5lX25hbWUsIHJv dXRpbmVfdHlwZSwgcHJvY19wcml2IGZyb20gbXlzcWwucHJvY3NfcHJpdiB3aGVyZSB1c2VyPSdt eXNxbHVzZXIxJyBhbmQgaG9zdD0nbG9jYWxob3N0JzsKK2RiCXJvdXRpbmVfbmFtZQlyb3V0aW5l X3R5cGUJcHJvY19wcml2CitteXNxbHRlc3QxCWYxCUZVTkNUSU9OCUV4ZWN1dGUKK215c3FsdGVz dDEJcDEJUFJPQ0VEVVJFCUV4ZWN1dGUKK3NlbGVjdCBkYiwgdGFibGVfbmFtZSwgdGFibGVfcHJp diBmcm9tIG15c3FsLnRhYmxlc19wcml2IHdoZXJlIHVzZXI9J215c3FsdXNlcjEnIGFuZCBob3N0 PSdsb2NhbGhvc3QnOworZGIJdGFibGVfbmFtZQl0YWJsZV9wcml2CitteXNxbHRlc3QxCXQxMQlT ZWxlY3QKK215c3FsdGVzdDEJdDIyCVNlbGVjdAorIworIyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAn YnVnMzY1NDRfY29uMicuCitjYWxsIG15c3FsdGVzdDEucDEoKTsKK3NlbGVjdCBteXNxbHRlc3Qx LmYxKCk7CitteXNxbHRlc3QxLmYxKCkKKzAKK3NlbGVjdCAqIGZyb20gbXlzcWx0ZXN0MS50MTE7 CitpCitzZWxlY3QgKiBmcm9tIG15c3FsdGVzdDEudDIyOworaQorIworIyBTd2l0Y2ggdG8gY29u bmVjdGlvbiAnZGVmYXVsdCcuCityZW5hbWUgdXNlciBteXNxbHVzZXIxQGxvY2FsaG9zdCB0byBt eXNxbHVzZXIxMEBsb2NhbGhvc3Q7CisjCisjIFRlc3QgdGhhdCB0aGVyZSBhcmUgbm8gcHJpdmls ZWdlcyBsZWZ0IGZvciBteXNxbHVzZXIxLgorIworIyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAnYnVn MzY1NDRfY29uMicuCisjIFRoZSBjb25uZWN0aW9uIGNvbGQgYmUgYWxpdmUgYnV0IHNob3VsZCBu b3QgYmUgYWJsZSB0bworIyBhY2Nlc3MgdG8gYW55IG9mIHRoZSBzdG9yZWQgcm91dGluZXMgb3Ig dGFibGVzLgorY2FsbCBteXNxbHRlc3QxLnAxKCk7CitFUlJPUiA0MjAwMDogZXhlY3V0ZSBjb21t YW5kIGRlbmllZCB0byB1c2VyICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0JyBmb3Igcm91dGluZSAn bXlzcWx0ZXN0MS5wMScKK3NlbGVjdCBteXNxbHRlc3QxLmYxKCk7CitFUlJPUiA0MjAwMDogZXhl Y3V0ZSBjb21tYW5kIGRlbmllZCB0byB1c2VyICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0JyBmb3Ig cm91dGluZSAnbXlzcWx0ZXN0MS5mMScKK3NlbGVjdCAqIGZyb20gbXlzcWx0ZXN0MS50MTE7CitF UlJPUiA0MjAwMDogU0VMRUNUIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJ215c3FsdXNlcjEnQCds b2NhbGhvc3QnIGZvciB0YWJsZSAndDExJworc2VsZWN0ICogZnJvbSBteXNxbHRlc3QxLnQyMjsK K0VSUk9SIDQyMDAwOiBTRUxFQ1QgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAnbXlzcWx1c2VyMSdA J2xvY2FsaG9zdCcgZm9yIHRhYmxlICd0MjInCisjCisjIFN3aXRjaCB0byBjb25uZWN0aW9uICdk ZWZhdWx0Jy4KKyMKKyMgTm93IGNyZWF0ZSB1c2VyIHdpdGggdGhlIG9sZCBuYW1lIGFuZCBjaGVj ayB0aGF0IGhlCisjIGhhcyBub3QgaW5oZXJpdGVkIHByaXZpbGVnZXMuCitjcmVhdGUgdXNlciBt eXNxbHVzZXIxQGxvY2FsaG9zdDsKK3Nob3cgZ3JhbnRzIGZvciBteXNxbHVzZXIxQGxvY2FsaG9z dDsKK0dyYW50cyBmb3IgbXlzcWx1c2VyMUBsb2NhbGhvc3QKK0dSQU5UIFVTQUdFIE9OICouKiBU TyAnbXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcKK3NlbGVjdCBkYiwgcm91dGluZV9uYW1lLCByb3V0 aW5lX3R5cGUsIHByb2NfcHJpdiBmcm9tIG15c3FsLnByb2NzX3ByaXYgd2hlcmUgdXNlcj0nbXlz cWx1c2VyMScgYW5kIGhvc3Q9J2xvY2FsaG9zdCc7CitkYglyb3V0aW5lX25hbWUJcm91dGluZV90 eXBlCXByb2NfcHJpdgorc2VsZWN0IGRiLCB0YWJsZV9uYW1lLCB0YWJsZV9wcml2IGZyb20gbXlz cWwudGFibGVzX3ByaXYgd2hlcmUgdXNlcj0nbXlzcWx1c2VyMScgYW5kIGhvc3Q9J2xvY2FsaG9z dCc7CitkYgl0YWJsZV9uYW1lCXRhYmxlX3ByaXYKKyMKKyMgQ3JlYXRlIGNvbm5lY3Rpb24gJ2J1 Z18zNjU0NF9jb24zJyBhcyAnbXlzcWx1c2VyMUBsb2NhbGhvc3QnLgorIyBOZXdseSBjcmVhdGVk IHVzZXIgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGFjY2VzcyB0byBhbnkgb2YgdGhlCisjIHN0b3Jl ZCByb3V0aW5lcyBvciB0YWJsZXMuCitjYWxsIG15c3FsdGVzdDEucDEoKTsKK0VSUk9SIDQyMDAw OiBleGVjdXRlIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJ215c3FsdXNlcjEnQCdsb2NhbGhvc3Qn IGZvciByb3V0aW5lICdteXNxbHRlc3QxLnAxJworc2VsZWN0IG15c3FsdGVzdDEuZjEoKTsKK0VS Uk9SIDQyMDAwOiBleGVjdXRlIGNvbW1hbmQgZGVuaWVkIHRvIHVzZXIgJ215c3FsdXNlcjEnQCds b2NhbGhvc3QnIGZvciByb3V0aW5lICdteXNxbHRlc3QxLmYxJworc2VsZWN0ICogZnJvbSBteXNx bHRlc3QxLnQxMTsKK0VSUk9SIDQyMDAwOiBTRUxFQ1QgY29tbWFuZCBkZW5pZWQgdG8gdXNlciAn bXlzcWx1c2VyMSdAJ2xvY2FsaG9zdCcgZm9yIHRhYmxlICd0MTEnCitzZWxlY3QgKiBmcm9tIG15 c3FsdGVzdDEudDIyOworRVJST1IgNDIwMDA6IFNFTEVDVCBjb21tYW5kIGRlbmllZCB0byB1c2Vy ICdteXNxbHVzZXIxJ0AnbG9jYWxob3N0JyBmb3IgdGFibGUgJ3QyMicKKyMKKyMgU3dpdGNoIHRv IGNvbm5lY3Rpb24gJ2RlZmF1bHQnLgorIworIyBOb3cgY2hlY2sgdGhhdCBwcml2aWxlZ2VzIGJl Y2FtZSBhc3NvY2lhdGVkIHdpdGggYSBuZXcgdXNlcgorIyBuYW1lIC0gbXlzcWx1c2VyMTAuCisj CitzaG93IGdyYW50cyBmb3IgbXlzcWx1c2VyMTBAbG9jYWxob3N0OworR3JhbnRzIGZvciBteXNx bHVzZXIxMEBsb2NhbGhvc3QKK0dSQU5UIFVTQUdFIE9OICouKiBUTyAnbXlzcWx1c2VyMTAnQCds b2NhbGhvc3QnCitHUkFOVCBTRUxFQ1QgT04gYG15c3FsdGVzdDFgLmB0MjJgIFRPICdteXNxbHVz ZXIxMCdAJ2xvY2FsaG9zdCcKK0dSQU5UIFNFTEVDVCBPTiBgbXlzcWx0ZXN0MWAuYHQxMWAgVE8g J215c3FsdXNlcjEwJ0AnbG9jYWxob3N0JworR1JBTlQgRVhFQ1VURSBPTiBQUk9DRURVUkUgYG15 c3FsdGVzdDFgLmBwMWAgVE8gJ215c3FsdXNlcjEwJ0AnbG9jYWxob3N0JworR1JBTlQgRVhFQ1VU RSBPTiBGVU5DVElPTiBgbXlzcWx0ZXN0MWAuYGYxYCBUTyAnbXlzcWx1c2VyMTAnQCdsb2NhbGhv c3QnCitzZWxlY3QgZGIsIHJvdXRpbmVfbmFtZSwgcm91dGluZV90eXBlLCBwcm9jX3ByaXYgZnJv bSBteXNxbC5wcm9jc19wcml2IHdoZXJlIHVzZXI9J215c3FsdXNlcjEwJyBhbmQgaG9zdD0nbG9j YWxob3N0JzsKK2RiCXJvdXRpbmVfbmFtZQlyb3V0aW5lX3R5cGUJcHJvY19wcml2CitteXNxbHRl c3QxCWYxCUZVTkNUSU9OCUV4ZWN1dGUKK215c3FsdGVzdDEJcDEJUFJPQ0VEVVJFCUV4ZWN1dGUK K3NlbGVjdCBkYiwgdGFibGVfbmFtZSwgdGFibGVfcHJpdiBmcm9tIG15c3FsLnRhYmxlc19wcml2 IHdoZXJlIHVzZXI9J215c3FsdXNlcjEwJyBhbmQgaG9zdD0nbG9jYWxob3N0JzsKK2RiCXRhYmxl X25hbWUJdGFibGVfcHJpdgorbXlzcWx0ZXN0MQl0MTEJU2VsZWN0CitteXNxbHRlc3QxCXQyMglT ZWxlY3QKKyMKKyMgQ3JlYXRlIGNvbm5lY3Rpb24gJ2J1Z18zNjU0NF9jb240JyBhcyAnbXlzcWx1 c2VyMTBAbG9jYWxob3N0Jy4KK2NhbGwgbXlzcWx0ZXN0MS5wMSgpOworc2VsZWN0IG15c3FsdGVz dDEuZjEoKTsKK215c3FsdGVzdDEuZjEoKQorMAorc2VsZWN0ICogZnJvbSBteXNxbHRlc3QxLnQx MTsKK2kKK3NlbGVjdCAqIGZyb20gbXlzcWx0ZXN0MS50MjI7CitpCisjCisjIFN3aXRjaCB0byBj b25uZWN0aW9uICdkZWZhdWx0Jy4KKyMKKyMgQ2xlYW4tdXAuCitkcm9wIHVzZXIgbXlzcWx1c2Vy MUBsb2NhbGhvc3Q7Citkcm9wIHVzZXIgbXlzcWx1c2VyMTBAbG9jYWxob3N0OworZHJvcCB1c2Vy IG15c3FsdXNlcjExQGxvY2FsaG9zdDsKK2Ryb3AgZGF0YWJhc2UgbXlzcWx0ZXN0MTsKIEVuZCBv ZiA1LjAgdGVzdHMKIHNldCBuYW1lcyB1dGY4OwogZ3JhbnQgc2VsZWN0IG9uIHRlc3QuKiB0byDv v73vv73vv73vv73vv73vv73vv73vv71f77+977+977+977+977+977+977+977+9QGxvY2FsaG9z dDsKQEAgLTE0MjIsMTEgKzE2MTUsNyBAQCBmbjIoKQogMgogRFJPUCBVU0VSICd1c2VyYnVnMzM0 NjQnQCdsb2NhbGhvc3QnOwogRFJPUCBGVU5DVElPTiBmbjE7Ci1XYXJuaW5nczoKLVdhcm5pbmcJ MTQwMwlUaGVyZSBpcyBubyBzdWNoIGdyYW50IGRlZmluZWQgZm9yIHVzZXIgJ3VzZXJidWczMzQ2 NCcgb24gaG9zdCAnbG9jYWxob3N0JyBvbiByb3V0aW5lICdmbjEnCiBEUk9QIEZVTkNUSU9OIGZu MjsKLVdhcm5pbmdzOgotV2FybmluZwkxNDAzCVRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQgZGVmaW5l ZCBmb3IgdXNlciAndXNlcmJ1ZzMzNDY0JyBvbiBob3N0ICdsb2NhbGhvc3QnIG9uIHJvdXRpbmUg J2ZuMicKIERST1AgUFJPQ0VEVVJFIHNwMzsKIERST1AgVVNFUiAndXNlcmJ1ZzMzNDY0J0AnbG9j YWxob3N0JzsKIFVTRSB0ZXN0OwoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRlc3Qvci9wYXJ0 aXRpb24ucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3IvcGFydGl0aW9uLnJlc3VsdAkyMDExLTAy LTIyIDIxOjAzOjMyICswMDAwCisrKyBiL215c3FsLXRlc3Qvci9wYXJ0aXRpb24ucmVzdWx0CTIw MTEtMDMtMDkgMTc6MTI6MjMgKzAwMDAKQEAgLTEsNSArMSw0MyBAQAogZHJvcCB0YWJsZSBpZiBl eGlzdHMgdDEsIHQyOwogIworIyBCdWcjNTkyOTc6IENhbid0IGZpbmQgcmVjb3JkIGluICd0YWJs ZW5hbWUnIG9uIHVwZGF0ZSBpbm5lciBqb2luCisjCitDUkVBVEUgVEFCTEUgdDEgKAorYSBjaGFy KDIpIE5PVCBOVUxMLAorYiBjaGFyKDIpIE5PVCBOVUxMLAorYyBpbnQoMTApIHVuc2lnbmVkIE5P VCBOVUxMLAorZCB2YXJjaGFyKDI1NSkgREVGQVVMVCBOVUxMLAorZSB2YXJjaGFyKDEwMDApIERF RkFVTFQgTlVMTCwKK1BSSU1BUlkgS0VZIChhLCBiLCBjKSwKK0tFWSAoYSksCitLRVkgKGEsIGIp CispCisvKiE1MDEwMCBQQVJUSVRJT04gQlkgS0VZIChhKQorUEFSVElUSU9OUyAyMCAqLzsKK0lO U0VSVCBJTlRPIHQxIChhLCBiLCBjLCBkLCBlKSBWQUxVRVMKKygnMDcnLCAnMDMnLCAzNDMsICcx JywgJzA3XzAzXzM0MycpLAorKCcwMScsICcwNCcsIDM0MywgJzInLCAnMDFfMDRfMzQzJyksCiso JzAxJywgJzA2JywgMzQzLCAnMycsICcwMV8wNl8zNDMnKSwKKygnMDEnLCAnMDcnLCAzNDMsICc0 JywgJzAxXzA3XzM0MycpLAorKCcwMScsICcwOCcsIDM0MywgJzUnLCAnMDFfMDhfMzQzJyksCiso JzAxJywgJzA5JywgMzQzLCAnNicsICcwMV8wOV8zNDMnKSwKKygnMDMnLCAnMDMnLCAzNDMsICc3 JywgJzAzXzAzXzM0MycpLAorKCcwMycsICcwNicsIDM0MywgJzgnLCAnMDNfMDZfMzQzJyksCiso JzAzJywgJzA3JywgMzQzLCAnOScsICcwM18wN18zNDMnKSwKKygnMDQnLCAnMDMnLCAzNDMsICcx MCcsICcwNF8wM18zNDMnKSwKKygnMDQnLCAnMDYnLCAzNDMsICcxMScsICcwNF8wNl8zNDMnKSwK KygnMDUnLCAnMDMnLCAzNDMsICcxMicsICcwNV8wM18zNDMnKSwKKygnMTEnLCAnMDMnLCAzNDMs ICcxMycsICcxMV8wM18zNDMnKSwKKygnMTEnLCAnMDQnLCAzNDMsICcxNCcsICcxMV8wNF8zNDMn KQorOworVVBEQVRFIHQxIEFTIEEsCisoU0VMRUNUICcwMycgQVMgYSwgJzA2JyBBUyBiLCAzNDMg QVMgYywgJ2xhc3QnIEFTIGQpIEFTIEIKK1NFVCBBLmUgPSBCLmQgIAorV0hFUkUgQS5hID0gJzAz JyAgCitBTkQgQS5iID0gJzA2JyAKK0FORCBBLmMgPSAzNDM7CitEUk9QIFRBQkxFIHQxOworIwog IyBCdWcjNTcxMTM6IGhhX3BhcnRpdGlvbjo6ZXh0cmEoaGFfZXh0cmFfZnVuY3Rpb24pOgogIyAg ICAgICAgICAgIEFzc2VydGlvbiBgbV9leHRyYV9jYWNoZScgZmFpbGVkCiBDUkVBVEUgVEFCTEUg dDEKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3N1aXRlL2Z1bmNzXzEvci9pbm5vZGJf c3RvcmVkcHJvY18wNi5yZXN1bHQnCi0tLSBhL215c3FsLXRlc3Qvc3VpdGUvZnVuY3NfMS9yL2lu bm9kYl9zdG9yZWRwcm9jXzA2LnJlc3VsdAkyMDEwLTAzLTE5IDA4OjU2OjI2ICswMDAwCisrKyBi L215c3FsLXRlc3Qvc3VpdGUvZnVuY3NfMS9yL2lubm9kYl9zdG9yZWRwcm9jXzA2LnJlc3VsdAky MDExLTAyLTA3IDEyOjA2OjIyICswMDAwCkBAIC0xMjgsOCArMTI4LDYgQEAgcm9vdEBsb2NhbGhv c3QJZGJfc3RvcmVkcHJvY18xCiBkcm9wIHVzZXIgJ3VzZXJfMSdAJ2xvY2FsaG9zdCc7CiBEUk9Q IFBST0NFRFVSRSBzcDM7CiBEUk9QIEZVTkNUSU9OIGZuMTsKLVdhcm5pbmdzOgotV2FybmluZwkx NDAzCVRoZXJlIGlzIG5vIHN1Y2ggZ3JhbnQgZGVmaW5lZCBmb3IgdXNlciAndXNlcl8xJyBvbiBo b3N0ICdsb2NhbGhvc3QnIG9uIHJvdXRpbmUgJ2ZuMScKIAogVGVzdGNhc2UgMy4xLjYuNDoKIC0t LS0tLS0tLS0tLS0tLS0tCgo9PT0gbW9kaWZpZWQgZmlsZSAnbXlzcWwtdGVzdC9zdWl0ZS9mdW5j c18xL3IvbWVtb3J5X3N0b3JlZHByb2NfMDYucmVzdWx0JwotLS0gYS9teXNxbC10ZXN0L3N1aXRl L2Z1bmNzXzEvci9tZW1vcnlfc3RvcmVkcHJvY18wNi5yZXN1bHQJMjAxMC0wMy0xOSAwODo1Njoy NiArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2Z1bmNzXzEvci9tZW1vcnlfc3RvcmVkcHJv Y18wNi5yZXN1bHQJMjAxMS0wMi0wNyAxMjowNjoyMiArMDAwMApAQCAtMTI5LDggKzEyOSw2IEBA IHJvb3RAbG9jYWxob3N0CWRiX3N0b3JlZHByb2NfMQogZHJvcCB1c2VyICd1c2VyXzEnQCdsb2Nh bGhvc3QnOwogRFJPUCBQUk9DRURVUkUgc3AzOwogRFJPUCBGVU5DVElPTiBmbjE7Ci1XYXJuaW5n czoKLVdhcm5pbmcJMTQwMwlUaGVyZSBpcyBubyBzdWNoIGdyYW50IGRlZmluZWQgZm9yIHVzZXIg J3VzZXJfMScgb24gaG9zdCAnbG9jYWxob3N0JyBvbiByb3V0aW5lICdmbjEnCiAKIFRlc3RjYXNl IDMuMS42LjQ6CiAtLS0tLS0tLS0tLS0tLS0tLQoKPT09IG1vZGlmaWVkIGZpbGUgJ215c3FsLXRl c3Qvc3VpdGUvZnVuY3NfMS9yL215aXNhbV9zdG9yZWRwcm9jXzA2LnJlc3VsdCcKLS0tIGEvbXlz cWwtdGVzdC9zdWl0ZS9mdW5jc18xL3IvbXlpc2FtX3N0b3JlZHByb2NfMDYucmVzdWx0CTIwMTAt MDMtMTkgMDg6NTY6MjYgKzAwMDAKKysrIGIvbXlzcWwtdGVzdC9zdWl0ZS9mdW5jc18xL3IvbXlp c2FtX3N0b3JlZHByb2NfMDYucmVzdWx0CTIwMTEtMDItMDcgMTI6MDY6MjIgKzAwMDAKQEAgLTEy OSw4ICsxMjksNiBAQCByb290QGxvY2FsaG9zdAlkYl9zdG9yZWRwcm9jXzEKIGRyb3AgdXNlciAn dXNlcl8xJ0AnbG9jYWxob3N0JzsKIERST1AgUFJPQ0VEVVJFIHNwMzsKIERST1AgRlVOQ1RJT04g Zm4xOwotV2FybmluZ3M6Ci1XYXJuaW5nCTE0MDMJVGhlcmUgaXMgbm8gc3VjaCBncmFudCBkZWZp bmVkIGZvciB1c2VyICd1c2VyXzEnIG9uIGhvc3QgJ2xvY2FsaG9zdCcgb24gcm91dGluZSAnZm4x JwogCiBUZXN0Y2FzZSAzLjEuNi40OgogLS0tLS0tLS0tLS0tLS0tLS0KCj09PSBtb2RpZmllZCBm aWxlICdteXNxbC10ZXN0L3N1aXRlL2Z1bmNzXzEvc3RvcmVkcHJvYy9zdG9yZWRwcm9jXzA2Lmlu YycKLS0tIGEvbXlzcWwtdGVzdC9zdWl0ZS9mdW5jc18xL3N0b3JlZHByb2Mvc3RvcmVkcHJvY18w Ni5pbmMJMjAxMC0wMy0xOSAwODo1NjoyNiArMDAwMAorKysgYi9teXNxbC10ZXN0L3N1aXRlL2Z1 bmNzXzEvc3RvcmVkcHJvYy9zdG9yZWRwcm9jXzA2LmluYwkyMDExLTAyLTA3IDEyOjA2OjIyICsw MDAwCkBAIC0xNDksMTAgKzE0OSw2IEBAIFVTRSBkYl9zdG9yZWRwcm9jXzE7CiAKIGRyb3AgdXNl ciAndXNlcl8xJ0AnbG9jYWxob3N0JzsKIERST1AgUFJPQ0VEVVJFIHNwMzsKLSMgVGhpcyBkcm9w IGZ1bmN0aW9uIHNob3VsZG4ndCBnZW5lcmF0ZWQgYSB3YXJuaW5nIGFzIHRoZQotIyBwcml2aWxl Z2VzIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCB3aGVuIHRoZSB1c2VyIHdhcwotIyBkcm9wcGVk LiBSZXBvcnRlZCBhcyBCdWcjMzY1NDQgRFJPUCBVU0VSIGRvZXMgbm90IHJlbW92ZQotIyBzdG9y ZWQgZnVuY3Rpb24gcHJpdmlsZWdlcwogRFJPUCBGVU5DVElPTiBmbjE7CiAKIAoKPT09IG1vZGlm aWVkIGZpbGUgJ215c3FsLXRlc3QvdC9ncmFudC50ZXN0JwotLS0gYS9teXNxbC10ZXN0L3QvZ3Jh bnQudGVzdAkyMDEwLTEyLTE1IDE2OjA4OjIxICswMDAwCisrKyBiL215c3FsLXRlc3QvdC9ncmFu dC50ZXN0CTIwMTEtMDItMDcgMTI6MDY6MjIgKzAwMDAKQEAgLTEzOTYsNiArMTM5NiwxODMgQEAg RFJPUCBVU0VSIHRlc3R1c2VyQGxvY2FsaG9zdDsKIHVzZSB0ZXN0OwogLS1lY2hvCiAKKworLS1l Y2hvICMKKy0tZWNobyAjIFRlc3QgZm9yIGJ1ZyAjMzY1NDQgIkRST1AgVVNFUiBkb2VzIG5vdCBy ZW1vdmUgc3RvcmVkIGZ1bmN0aW9uCistLWVjaG8gIyAgICAgICAgICAgICAgICAgICAgICBwcml2 aWxlZ2VzIi4KKy0tZWNobyAjCitjcmVhdGUgZGF0YWJhc2UgbXlzcWx0ZXN0MTsKK2NyZWF0ZSBm dW5jdGlvbiBteXNxbHRlc3QxLmYxKCkgcmV0dXJucyBpbnQgcmV0dXJuIDA7CitjcmVhdGUgcHJv Y2VkdXJlIG15c3FsdGVzdDEucDEoKSBiZWdpbiBlbmQ7CistLWVjaG8gIworLS1lY2hvICMgMSkg Q2hlY2sgdGhhdCBEUk9QIFVTRVIgcHJvcGVybHkgcmVtb3ZlcyBwcml2aWxlZ2VzIG9uIGJvdGgK Ky0tZWNobyAjICAgIHN0b3JlZCBwcm9jZWR1cmVzIGFuZCBmdW5jdGlvbnMuCistLWVjaG8gIwor Y3JlYXRlIHVzZXIgbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitncmFudCBleGVjdXRlIG9uIGZ1bmN0 aW9uIG15c3FsdGVzdDEuZjEgdG8gbXlzcWx1c2VyMUBsb2NhbGhvc3Q7CitncmFudCBleGVjdXRl IG9uIHByb2NlZHVyZSBteXNxbHRlc3QxLnAxIHRvIG15c3FsdXNlcjFAbG9jYWxob3N0OworCist LWVjaG8gIyBRdWljayB0ZXN0IHRoYXQgZ3JhbnRlZCBwcml2aWxlZ2VzIGFyZSBwcm9wZXJseSBy ZWZsZWN0ZWQKKy0tZWNobyAjIGluIHByaXZpbGVnZSB0YWJsZXMgYW5kIGluIGluLW1lbW9yeSBz dHJ1Y3R1cmVzLgorc2hvdyBncmFudHMgZm9yIG15c3FsdXNlcjFAbG9jYWxob3N0Oworc2VsZWN0 IGRiLCByb3V0aW5lX25hbWUsIHJvdXRpbmVfdHlwZSwgcHJvY19wcml2IGZyb20gbXlzcWwucHJv Y3NfcHJpdiB3aGVyZSB1c2VyPSdteXNxbHVzZXIxJyBhbmQgaG9zdD0nbG9jYWxob3N0JzsKKy0t ZWNobyAjCistLWVjaG8gIyBDcmVhdGUgY29ubmVjdGlvbiAnYnVnXzM2NTQ0X2NvbjEnIGFzICdt eXNxbHVzZXIxQGxvY2FsaG9zdCcuCistLWNvbm5lY3QgKGJ1ZzM2NTQ0X2NvbjEsbG9jYWxob3N0 LG15c3FsdXNlcjEsLCkKK2NhbGwgbXlzcWx0ZXN0MS5wMSgpOworc2VsZWN0IG15c3FsdGVzdDEu ZjEoKTsKKworLS1lY2hvICMKKy0tZWNobyAjIFN3aXRjaCB0byBjb25uZWN0aW9uICdkZWZhdWx0 Jy4KKy0tY29ubmVjdGlvbiBkZWZhdWx0Citkcm9wIHVzZXIgbXlzcWx1c2VyMUBsb2NhbGhvc3Q7 CisKKy0tZWNobyAjCistLWVjaG8gIyBUZXN0IHRoYXQgZHJvcHBpbmcgb2YgdXNlciBpcyBwcm9w ZXJseSByZWZsZWN0ZWQgaW4KKy0tZWNobyAjIGJvdGggcHJpdmlsZWdlIHRhYmxlcyBhbmQgaW4g aW4tbWVtb3J5IHN0cnVjdHVyZXMuCistLWVjaG8gIworLS1lY2hvICMgU3dpdGNoIHRvIGNvbm5l Y3Rpb24gJ2J1ZzM2NTQ0X2NvbjEnLgorLS1jb25uZWN0aW9uIGJ1ZzM2NTQ0X2NvbjEKKy0tZWNo byAjIFRoZSBjb25uZWN0aW9uIGNvbGQgYmUgYWxpdmUgYnV0IHNob3VsZCBub3QgYmUgYWJsZSB0 bworLS1lY2hvICMgYWNjZXNzIHRvIGFueSBvZiB0aGUgc3RvcmVkIHJvdXRpbmVzLgorLS1lcnJv ciBFUl9QUk9DQUNDRVNTX0RFTklFRF9FUlJPUgorY2FsbCBteXNxbHRlc3QxLnAxKCk7CistLWVy cm9yIEVSX1BST0NBQ0NFU1NfREVOSUVEX0VSUk9SCitzZWxlY3QgbXlzcWx0ZXN0MS5mMSgpOwor LS1kaXNjb25uZWN0IGJ1ZzM2NTQ0X2NvbjEKKworLS1lY2hvICMKKy0tZWNobyAjIFN3aXRjaCB0 byBjb25uZWN0aW9uICdkZWZhdWx0Jy4KKy0tY29ubmVjdGlvbiBkZWZhdWx0CistLWVjaG8gIwor LS1lY2hvICMgTm93IGNyZWF0ZSB1c2VyIHdpdGggdGhlIHNhbWUgbmFtZSBhbmQgY2hlY2sgdGhh dCBoZQorLS1lY2hvICMgaGFzIG5vdCBpbmhlcml0ZWQgcHJpdmlsZWdlcy4KK2NyZWF0ZSB1c2Vy IG15c3FsdXNlcjFAbG9jYWxob3N0Oworc2hvdyBncmFudHMgZm9yIG15c3FsdXNlcjFAbG9jYWxo b3N0Oworc2VsZWN0IGRiLCByb3V0aW5lX25hbWUsIHJvdXRpbmVfdHlwZSwgcHJvY19wcml2IGZy b20gbXlzcWwucHJvY3NfcHJpdiB3aGVyZSB1c2VyPSdteXNxbHVzZXIxJyBhbmQgaG9zdD0nbG9j YWxob3N0JzsKKy0tZWNobyAjCistLWVjaG8gIyBDcmVhdGUgY29ubmVjdGlvbiAnYnVnXzM2NTQ0 X2NvbjInIGFzICdteXNxbHVzZXIxQGxvY2FsaG9zdCcuCistLWNvbm5lY3QgKGJ1ZzM2NTQ0X2Nv bjIsbG9jYWxob3N0LG15c3FsdXNlcjEsLCkKKy0tZWNobyAjIE5ld2x5IGNyZWF0ZWQgdXNlciBz aG91bGQgbm90IGJlIGFibGUgdG8gYWNjZXNzIGFueSBvZiB0aGUgcm91dGluZXMuCistLWVycm9y IEVSX1BST0NBQ0NFU1NfREVOSUVEX0VSUk9SCitjYWxsIG15c3FsdGVzdDEucDEoKTsKKy0tZXJy b3IgRVJfUFJPQ0FDQ0VTU19ERU5JRURfRVJST1IKK3NlbGVjdCBteXNxbHRlc3QxLmYxKCk7Cist LWVjaG8gIworLS1lY2hvICMgU3dpdGNoIHRvIGNvbm5lY3Rpb24gJ2RlZmF1bHQnLgorLS1jb25u ZWN0aW9uIGRlZmF1bHQKKworLS1lY2hvICMKKy0tZWNobyAjIDIpIENoZWNrIHRoYXQgUkVOQU1F IFVTRVIgcHJvcGVybHkgdXBkYXRlcyBwcml2aWxlZ2VzIG9uIGJvdGgKKy0tZWNobyAjICAgIHN0 b3JlZCBwcm9jZWR1cmVzIGFuZCBmdW5jdGlvbnMuCistLWVjaG8gIworZ3JhbnQgZXhlY3V0ZSBv biBmdW5jdGlvbiBteXNxbHRlc3QxLmYxIHRvIG15c3FsdXNlcjFAbG9jYWxob3N0OworZ3JhbnQg ZXhlY3V0ZSBvbiBwcm9jZWR1cmUgbXlzcWx0ZXN0MS5wMSB0byBteXNxbHVzZXIxQGxvY2FsaG9z dDsKKy0tZWNobyAjCistLWVjaG8gIyBDcmVhdGUgb25lIG1vcmUgdXNlciB0byBtYWtlIGluLW1l bW9yeSBoYXNoZXMgbm9uLXRyaXZpYWwuCistLWVjaG8gIyBVc2VyIG5hbWVzICdteXNxbHVzZXIx MScgYW5kICdteXNxbHVzZXIxMCcgd2VyZSBzZWxlY3RlZAorLS1lY2hvICMgdG8gdHJpZ2dlciBi dWcgZGlzY292ZXJlZCBkdXJpbmcgY29kZSBpbnNwZWN0aW9uLgorY3JlYXRlIHVzZXIgbXlzcWx1 c2VyMTFAbG9jYWxob3N0OworZ3JhbnQgZXhlY3V0ZSBvbiBmdW5jdGlvbiBteXNxbHRlc3QxLmYx IHRvIG15c3FsdXNlcjExQGxvY2FsaG9zdDsKK2dyYW50IGV4ZWN1dGUgb24gcHJvY2VkdXJlIG15 c3FsdGVzdDEucDEgdG8gbXlzcWx1c2VyMTFAbG9jYWxob3N0OworLS1lY2hvICMgQWxzbyBjcmVh dGUgYSBjb3VwbGUgb2YgdGFibGVzIHRvIHRlc3QgZm9yIGFub3RoZXIgYnVnCistLWVjaG8gIyBk aXNjb3ZlcmVkIGR1cmluZyBjb2RlIGluc3BlY3Rpb24gKGFnYWluIHRhYmxlIG5hbWVzIHdlcmUK Ky0tZWNobyAjIGNob3NlbiBlc3BlY2lhbGx5IHRvIHRyaWdnZXIgdGhlIGJ1ZykuCitjcmVhdGUg dGFibGUgbXlzcWx0ZXN0MS50MTEgKGkgaW50KTsKK2NyZWF0ZSB0YWJsZSBteXNxbHRlc3QxLnQy MiAoaSBpbnQpOworZ3JhbnQgc2VsZWN0IG9uIG15c3FsdGVzdDEudDIyIHRvIG15c3FsdXNlcjFA bG9jYWxob3N0OworZ3JhbnQgc2VsZWN0IG9uIG15c3FsdGVzdDEudDExIHRvIG15c3FsdXNlcjFA bG9jYWxob3N0OworCistLWVjaG8gIyBRdWljayB0ZXN0IHRoYXQgZ3JhbnRlZCBwcml2aWxlZ2Vz IGFyZSBwcm9wZXJseSByZWZsZWN0ZWQKKy0tZWNobyAjIGluIHByaXZpbGVnZSB0YWJsZXMgYW5k IGluIGluLW1lbW9yeSBzdHJ1Y3R1cmVzLgorc2hvdyBncmFudHMgZm9yIG15c3FsdXNlcjFAbG9j YWxob3N0Oworc2VsZWN0IGRiLCByb3V0aW5lX25hbWUsIHJvdXRpbmVfdHlwZSwgcHJvY19wcml2 IGZyb20gbXlzcWwucHJvY3NfcHJpdiB3aGVyZSB1c2VyPSdteXNxbHVzZXIxJyBhbmQgaG9zdD0n bG9jYWxob3N0JzsKK3NlbGVjdCBkYiwgdGFibGVfbmFtZSwgdGFibGVfcHJpdiBmcm9tIG15c3Fs LnRhYmxlc19wcml2IHdoZXJlIHVzZXI9J215c3FsdXNlcjEnIGFuZCBob3N0PSdsb2NhbGhvc3Qn OworLS1lY2hvICMKKy0tZWNobyAjIFN3aXRjaCB0byBjb25uZWN0aW9uICdidWczNjU0NF9jb24y Jy4KKy0tY29ubmVjdGlvbiBidWczNjU0NF9jb24yCitjYWxsIG15c3FsdGVzdDEucDEoKTsKK3Nl bGVjdCBteXNxbHRlc3QxLmYxKCk7CitzZWxlY3QgKiBmcm9tIG15c3FsdGVzdDEudDExOworc2Vs ZWN0ICogZnJvbSBteXNxbHRlc3QxLnQyMjsKKworLS1lY2hvICMKKy0tZWNobyAjIFN3aXRjaCB0 byBjb25uZWN0aW9uICdkZWZhdWx0Jy4KKy0tY29ubmVjdGlvbiBkZWZhdWx0CityZW5hbWUgdXNl ciBteXNxbHVzZXIxQGxvY2FsaG9zdCB0byBteXNxbHVzZXIxMEBsb2NhbGhvc3Q7CisKKy0tZWNo byAjCistLWVjaG8gIyBUZXN0IHRoYXQgdGhlcmUgYXJlIG5vIHByaXZpbGVnZXMgbGVmdCBmb3Ig bXlzcWx1c2VyMS4KKy0tZWNobyAjCistLWVjaG8gIyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAnYnVn MzY1NDRfY29uMicuCistLWNvbm5lY3Rpb24gYnVnMzY1NDRfY29uMgorLS1lY2hvICMgVGhlIGNv bm5lY3Rpb24gY29sZCBiZSBhbGl2ZSBidXQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvCistLWVjaG8g IyBhY2Nlc3MgdG8gYW55IG9mIHRoZSBzdG9yZWQgcm91dGluZXMgb3IgdGFibGVzLgorLS1lcnJv ciBFUl9QUk9DQUNDRVNTX0RFTklFRF9FUlJPUgorY2FsbCBteXNxbHRlc3QxLnAxKCk7CistLWVy cm9yIEVSX1BST0NBQ0NFU1NfREVOSUVEX0VSUk9SCitzZWxlY3QgbXlzcWx0ZXN0MS5mMSgpOwor LS1lcnJvciBFUl9UQUJMRUFDQ0VTU19ERU5JRURfRVJST1IKK3NlbGVjdCAqIGZyb20gbXlzcWx0 ZXN0MS50MTE7CistLWVycm9yIEVSX1RBQkxFQUNDRVNTX0RFTklFRF9FUlJPUgorc2VsZWN0ICog ZnJvbSBteXNxbHRlc3QxLnQyMjsKKy0tZGlzY29ubmVjdCBidWczNjU0NF9jb24yCisKKy0tZWNo byAjCistLWVjaG8gIyBTd2l0Y2ggdG8gY29ubmVjdGlvbiAnZGVmYXVsdCcuCistLWNvbm5lY3Rp b24gZGVmYXVsdAorLS1lY2hvICMKKy0tZWNobyAjIE5vdyBjcmVhdGUgdXNlciB3aXRoIHRoZSBv bGQgbmFtZSBhbmQgY2hlY2sgdGhhdCBoZQorLS1lY2hvICMgaGFzIG5vdCBpbmhlcml0ZWQgcHJp dmlsZWdlcy4KK2NyZWF0ZSB1c2VyIG15c3FsdXNlcjFAbG9jYWxob3N0Oworc2hvdyBncmFudHMg Zm9yIG15c3FsdXNlcjFAbG9jYWxob3N0Oworc2VsZWN0IGRiLCByb3V0aW5lX25hbWUsIHJvdXRp bmVfdHlwZSwgcHJvY19wcml2IGZyb20gbXlzcWwucHJvY3NfcHJpdiB3aGVyZSB1c2VyPSdteXNx bHVzZXIxJyBhbmQgaG9zdD0nbG9jYWxob3N0JzsKK3NlbGVjdCBkYiwgdGFibGVfbmFtZSwgdGFi bGVfcHJpdiBmcm9tIG15c3FsLnRhYmxlc19wcml2IHdoZXJlIHVzZXI9J215c3FsdXNlcjEnIGFu ZCBob3N0PSdsb2NhbGhvc3QnOworLS1lY2hvICMKKy0tZWNobyAjIENyZWF0ZSBjb25uZWN0aW9u ICdidWdfMzY1NDRfY29uMycgYXMgJ215c3FsdXNlcjFAbG9jYWxob3N0Jy4KKy0tY29ubmVjdCAo YnVnMzY1NDRfY29uMyxsb2NhbGhvc3QsbXlzcWx1c2VyMSwsKQorLS1lY2hvICMgTmV3bHkgY3Jl YXRlZCB1c2VyIHNob3VsZCBub3QgYmUgYWJsZSB0byBhY2Nlc3MgdG8gYW55IG9mIHRoZQorLS1l Y2hvICMgc3RvcmVkIHJvdXRpbmVzIG9yIHRhYmxlcy4KKy0tZXJyb3IgRVJfUFJPQ0FDQ0VTU19E RU5JRURfRVJST1IKK2NhbGwgbXlzcWx0ZXN0MS5wMSgpOworLS1lcnJvciBFUl9QUk9DQUNDRVNT X0RFTklFRF9FUlJPUgorc2VsZWN0IG15c3FsdGVzdDEuZjEoKTsKKy0tZXJyb3IgRVJfVEFCTEVB Q0NFU1NfREVOSUVEX0VSUk9SCitzZWxlY3QgKiBmcm9tIG15c3FsdGVzdDEudDExOworLS1lcnJv ciBFUl9UQUJMRUFDQ0VTU19ERU5JRURfRVJST1IKK3NlbGVjdCAqIGZyb20gbXlzcWx0ZXN0MS50 MjI7CistLWRpc2Nvbm5lY3QgYnVnMzY1NDRfY29uMworCistLWVjaG8gIworLS1lY2hvICMgU3dp dGNoIHRvIGNvbm5lY3Rpb24gJ2RlZmF1bHQnLgorLS1jb25uZWN0aW9uIGRlZmF1bHQKKy0tZWNo byAjCistLWVjaG8gIyBOb3cgY2hlY2sgdGhhdCBwcml2aWxlZ2VzIGJlY2FtZSBhc3NvY2lhdGVk IHdpdGggYSBuZXcgdXNlcgorLS1lY2hvICMgbmFtZSAtIG15c3FsdXNlcjEwLgorLS1lY2hvICMK K3Nob3cgZ3JhbnRzIGZvciBteXNxbHVzZXIxMEBsb2NhbGhvc3Q7CitzZWxlY3QgZGIsIHJvdXRp bmVfbmFtZSwgcm91dGluZV90eXBlLCBwcm9jX3ByaXYgZnJvbSBteXNxbC5wcm9jc19wcml2IHdo ZXJlIHVzZXI9J215c3FsdXNlcjEwJyBhbmQgaG9zdD0nbG9jYWxob3N0JzsKK3NlbGVjdCBkYiwg dGFibGVfbmFtZSwgdGFibGVfcHJpdiBmcm9tIG15c3FsLnRhYmxlc19wcml2IHdoZXJlIHVzZXI9 J215c3FsdXNlcjEwJyBhbmQgaG9zdD0nbG9jYWxob3N0JzsKKy0tZWNobyAjCistLWVjaG8gIyBD cmVhdGUgY29ubmVjdGlvbiAnYnVnXzM2NTQ0X2NvbjQnIGFzICdteXNxbHVzZXIxMEBsb2NhbGhv c3QnLgorLS1jb25uZWN0IChidWczNjU0NF9jb240LGxvY2FsaG9zdCxteXNxbHVzZXIxMCwsKQor Y2FsbCBteXNxbHRlc3QxLnAxKCk7CitzZWxlY3QgbXlzcWx0ZXN0MS5mMSgpOworc2VsZWN0ICog ZnJvbSBteXNxbHRlc3QxLnQxMTsKK3NlbGVjdCAqIGZyb20gbXlzcWx0ZXN0MS50MjI7CistLWRp c2Nvbm5lY3QgYnVnMzY1NDRfY29uNAorCistLWVjaG8gIworLS1lY2hvICMgU3dpdGNoIHRvIGNv bm5lY3Rpb24gJ2RlZmF1bHQnLgorLS1jb25uZWN0aW9uIGRlZmF1bHQKKy0tZWNobyAjCistLWVj aG8gIyBDbGVhbi11cC4KK2Ryb3AgdXNlciBteXNxbHVzZXIxQGxvY2FsaG9zdDsKK2Ryb3AgdXNl ciBteXNxbHVzZXIxMEBsb2NhbGhvc3Q7Citkcm9wIHVzZXIgbXlzcWx1c2VyMTFAbG9jYWxob3N0 OworZHJvcCBkYXRhYmFzZSBteXNxbHRlc3QxOworCisKIC0tZWNobyBFbmQgb2YgNS4wIHRlc3Rz CiAKICMKCj09PSBtb2RpZmllZCBmaWxlICdteXNxbC10ZXN0L3QvcGFydGl0aW9uLnRlc3QnCi0t LSBhL215c3FsLXRlc3QvdC9wYXJ0aXRpb24udGVzdAkyMDExLTAyLTIyIDIxOjAzOjMyICswMDAw CisrKyBiL215c3FsLXRlc3QvdC9wYXJ0aXRpb24udGVzdAkyMDExLTAzLTA5IDE3OjEyOjIzICsw MDAwCkBAIC0xNSw2ICsxNSw0OSBAQCBkcm9wIHRhYmxlIGlmIGV4aXN0cyB0MSwgdDI7CiAtLWVu YWJsZV93YXJuaW5ncwogCiAtLWVjaG8gIworLS1lY2hvICMgQnVnIzU5Mjk3OiBDYW4ndCBmaW5k IHJlY29yZCBpbiAndGFibGVuYW1lJyBvbiB1cGRhdGUgaW5uZXIgam9pbgorLS1lY2hvICMKKwor Q1JFQVRFIFRBQkxFIHQxICgKK2EgY2hhcigyKSBOT1QgTlVMTCwKK2IgY2hhcigyKSBOT1QgTlVM TCwKK2MgaW50KDEwKSB1bnNpZ25lZCBOT1QgTlVMTCwKK2QgdmFyY2hhcigyNTUpIERFRkFVTFQg TlVMTCwKK2UgdmFyY2hhcigxMDAwKSBERUZBVUxUIE5VTEwsCitQUklNQVJZIEtFWSAoYSwgYiwg YyksCitLRVkgKGEpLAorS0VZIChhLCBiKQorKQorLyohNTAxMDAgUEFSVElUSU9OIEJZIEtFWSAo YSkKK1BBUlRJVElPTlMgMjAgKi87CisKK0lOU0VSVCBJTlRPIHQxIChhLCBiLCBjLCBkLCBlKSBW QUxVRVMKKygnMDcnLCAnMDMnLCAzNDMsICcxJywgJzA3XzAzXzM0MycpLAorKCcwMScsICcwNCcs IDM0MywgJzInLCAnMDFfMDRfMzQzJyksCisoJzAxJywgJzA2JywgMzQzLCAnMycsICcwMV8wNl8z NDMnKSwKKygnMDEnLCAnMDcnLCAzNDMsICc0JywgJzAxXzA3XzM0MycpLAorKCcwMScsICcwOCcs IDM0MywgJzUnLCAnMDFfMDhfMzQzJyksCisoJzAxJywgJzA5JywgMzQzLCAnNicsICcwMV8wOV8z NDMnKSwKKygnMDMnLCAnMDMnLCAzNDMsICc3JywgJzAzXzAzXzM0MycpLAorKCcwMycsICcwNics IDM0MywgJzgnLCAnMDNfMDZfMzQzJyksCisoJzAzJywgJzA3JywgMzQzLCAnOScsICcwM18wN18z NDMnKSwKKygnMDQnLCAnMDMnLCAzNDMsICcxMCcsICcwNF8wM18zNDMnKSwKKygnMDQnLCAnMDYn LCAzNDMsICcxMScsICcwNF8wNl8zNDMnKSwKKygnMDUnLCAnMDMnLCAzNDMsICcxMicsICcwNV8w M18zNDMnKSwKKygnMTEnLCAnMDMnLCAzNDMsICcxMycsICcxMV8wM18zNDMnKSwKKygnMTEnLCAn MDQnLCAzNDMsICcxNCcsICcxMV8wNF8zNDMnKQorOworCitVUERBVEUgdDEgQVMgQSwKKyhTRUxF Q1QgJzAzJyBBUyBhLCAnMDYnIEFTIGIsIDM0MyBBUyBjLCAnbGFzdCcgQVMgZCkgQVMgQgorU0VU IEEuZSA9IEIuZCAgCitXSEVSRSBBLmEgPSAnMDMnICAKK0FORCBBLmIgPSAnMDYnIAorQU5EIEEu YyA9IDM0MzsKKworRFJPUCBUQUJMRSB0MTsKKworLS1lY2hvICMKIC0tZWNobyAjIEJ1ZyM1NzEx MzogaGFfcGFydGl0aW9uOjpleHRyYShoYV9leHRyYV9mdW5jdGlvbik6CiAtLWVjaG8gIyAgICAg ICAgICAgIEFzc2VydGlvbiBgbV9leHRyYV9jYWNoZScgZmFpbGVkCiBDUkVBVEUgVEFCTEUgdDEK Cj09PSBtb2RpZmllZCBmaWxlICdzcWwvaGFfcGFydGl0aW9uLmNjJwotLS0gYS9zcWwvaGFfcGFy dGl0aW9uLmNjCTIwMTAtMTItMTYgMTQ6NDA6NTIgKzAwMDAKKysrIGIvc3FsL2hhX3BhcnRpdGlv bi5jYwkyMDExLTAxLTI0IDEyOjQxOjQ0ICswMDAwCkBAIC00MzE3LDYgKzQzMTcsNyBAQCBpbnQg aGFfcGFydGl0aW9uOjppbmRleF9yZWFkX2lkeF9tYXAodWNoCiAgICAgICAgICAgYnJlYWs7CiAg ICAgICB9CiAgICAgfQorICAgIG1fbGFzdF9wYXJ0PSBwYXJ0OwogICB9CiAgIGVsc2UKICAgewoK PT09IG1vZGlmaWVkIGZpbGUgJ3NxbC9zcWxfYWNsLmNjJwotLS0gYS9zcWwvc3FsX2FjbC5jYwky MDEwLTEwLTIwIDE4OjIxOjQwICswMDAwCisrKyBiL3NxbC9zcWxfYWNsLmNjCTIwMTEtMDItMDcg MTI6MDY6MjIgKzAwMDAKQEAgLTEsNCArMSw0IEBACi0vKiBDb3B5cmlnaHQgKEMpIDIwMDAtMjAw MyBNeVNRTCBBQgorLyogQ29weXJpZ2h0IChjKSAyMDAwLCAyMDExLCBPcmFjbGUgYW5kL29yIGl0 cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKQEAgLTUzNzcsMTggKzUzNzcsMTUgQEAgc3RhdGljIGludCBoYW5kbGVfZ3Jh bnRfdGFibGUoVEFCTEVfTElTVAogfQogCiAKLS8qCisvKioKICAgSGFuZGxlIGFuIGluLW1lbW9y eSBwcml2aWxlZ2Ugc3RydWN0dXJlLgogCi0gIFNZTk9QU0lTCi0gICAgaGFuZGxlX2dyYW50X3N0 cnVjdCgpCi0gICAgc3RydWN0X25vICAgICAgICAgICAgICAgICAgIFRoZSBudW1iZXIgb2YgdGhl IHN0cnVjdHVyZSB0byBoYW5kbGUgKDAuLjMpLgotICAgIGRyb3AgICAgICAgICAgICAgICAgICAg ICAgICBJZiB1c2VyX2Zyb20gaXMgdG8gYmUgZHJvcHBlZC4KLSAgICB1c2VyX2Zyb20gICAgICAg ICAgICAgICAgICAgVGhlIHRoZSB1c2VyIHRvIGJlIHNlYXJjaGVkL2Ryb3BwZWQvcmVuYW1lZC4K LSAgICB1c2VyX3RvICAgICAgICAgICAgICAgICAgICAgVGhlIG5ldyBuYW1lIGZvciB0aGUgdXNl ciBpZiB0byBiZSByZW5hbWVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxM IG90aGVyd2lzZS4KKyAgQHBhcmFtIHN0cnVjdF9ubyAgVGhlIG51bWJlciBvZiB0aGUgc3RydWN0 dXJlIHRvIGhhbmRsZSAoMC4uNCkuCisgIEBwYXJhbSBkcm9wICAgICAgIElmIHVzZXJfZnJvbSBp cyB0byBiZSBkcm9wcGVkLgorICBAcGFyYW0gdXNlcl9mcm9tICBUaGUgdGhlIHVzZXIgdG8gYmUg c2VhcmNoZWQvZHJvcHBlZC9yZW5hbWVkLgorICBAcGFyYW0gdXNlcl90byAgICBUaGUgbmV3IG5h bWUgZm9yIHRoZSB1c2VyIGlmIHRvIGJlIHJlbmFtZWQsIE5VTEwgb3RoZXJ3aXNlLgogCi0gIERF U0NSSVBUSU9OCisgIEBub3RlCiAgICAgU2NhbiB0aHJvdWdoIGFsbCBlbGVtZW50cyBpbiBhbiBp bi1tZW1vcnkgZ3JhbnQgc3RydWN0dXJlIGFuZCBhcHBseQogICAgIHRoZSByZXF1ZXN0ZWQgb3Bl cmF0aW9uLgogICAgIERlbGV0ZSBmcm9tIGdyYW50IHN0cnVjdHVyZSBpZiBkcm9wIGlzIHRydWUu CkBAIC01Mzk4LDEyICs1Mzk1LDEyIEBAIHN0YXRpYyBpbnQgaGFuZGxlX2dyYW50X3RhYmxlKFRB QkxFX0xJU1QKICAgICAwIGFjbF91c2VycwogICAgIDEgYWNsX2RicwogICAgIDIgY29sdW1uX3By aXZfaGFzaAotICAgIDMgcHJvY3NfcHJpdl9oYXNoCisgICAgMyBwcm9jX3ByaXZfaGFzaAorICAg IDQgZnVuY19wcml2X2hhc2gKIAotICBSRVRVUk4KLSAgICA+IDAgICAgICAgICBBdCBsZWFzdCBv bmUgZWxlbWVudCBtYXRjaGVkLgotICAgIDAgICAgICAgICAgIE9LLCBidXQgbm8gZWxlbWVudCBt YXRjaGVkLgotICAgIC0xCQlXcm9uZyBhcmd1bWVudHMgdG8gZnVuY3Rpb24KKyAgQHJldHZhbCA+ IDAgIEF0IGxlYXN0IG9uZSBlbGVtZW50IG1hdGNoZWQuCisgIEByZXR2YWwgMCAgICBPSywgYnV0 IG5vIGVsZW1lbnQgbWF0Y2hlZC4KKyAgQHJldHZhbCAtMSAgIFdyb25nIGFyZ3VtZW50cyB0byBm dW5jdGlvbi4KICovCiAKIHN0YXRpYyBpbnQgaGFuZGxlX2dyYW50X3N0cnVjdCh1aW50IHN0cnVj dF9ubywgYm9vbCBkcm9wLApAQCAtNTQxNyw2ICs1NDE0LDcgQEAgc3RhdGljIGludCBoYW5kbGVf Z3JhbnRfc3RydWN0KHVpbnQgc3RydQogICBBQ0xfVVNFUiAqYWNsX3VzZXI9IE5VTEw7CiAgIEFD TF9EQiAqYWNsX2RiPSBOVUxMOwogICBHUkFOVF9OQU1FICpncmFudF9uYW1lPSBOVUxMOworICBI QVNIICpncmFudF9uYW1lX2hhc2g9IE5VTEw7CiAgIERCVUdfRU5URVIoImhhbmRsZV9ncmFudF9z dHJ1Y3QiKTsKICAgREJVR19QUklOVCgiaW5mbyIsKCJzY2FuIHN0cnVjdDogJXUgIHNlYXJjaDog JyVzJ0AnJXMnIiwKICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdF9ubywgdXNlcl9mcm9tLT51 c2VyLnN0ciwgdXNlcl9mcm9tLT5ob3N0LnN0cikpOwpAQCAtNTQzNiw5ICs1NDM0LDE1IEBAIHN0 YXRpYyBpbnQgaGFuZGxlX2dyYW50X3N0cnVjdCh1aW50IHN0cnUKICAgICBicmVhazsKICAgY2Fz ZSAyOgogICAgIGVsZW1lbnRzPSBjb2x1bW5fcHJpdl9oYXNoLnJlY29yZHM7CisgICAgZ3JhbnRf bmFtZV9oYXNoPSAmY29sdW1uX3ByaXZfaGFzaDsKICAgICBicmVhazsKICAgY2FzZSAzOgogICAg IGVsZW1lbnRzPSBwcm9jX3ByaXZfaGFzaC5yZWNvcmRzOworICAgIGdyYW50X25hbWVfaGFzaD0g JnByb2NfcHJpdl9oYXNoOworICAgIGJyZWFrOworICBjYXNlIDQ6CisgICAgZWxlbWVudHM9IGZ1 bmNfcHJpdl9oYXNoLnJlY29yZHM7CisgICAgZ3JhbnRfbmFtZV9oYXNoPSAmZnVuY19wcml2X2hh c2g7CiAgICAgYnJlYWs7CiAgIGRlZmF1bHQ6CiAgICAgcmV0dXJuIC0xOwpAQCAtNTQ2OCwxNiAr NTQ3MiwxMyBAQCBzdGF0aWMgaW50IGhhbmRsZV9ncmFudF9zdHJ1Y3QodWludCBzdHJ1CiAgICAg ICBicmVhazsKIAogICAgIGNhc2UgMjoKLSAgICAgIGdyYW50X25hbWU9IChHUkFOVF9OQU1FKikg aGFzaF9lbGVtZW50KCZjb2x1bW5fcHJpdl9oYXNoLCBpZHgpOwotICAgICAgdXNlcj0gZ3JhbnRf bmFtZS0+dXNlcjsKLSAgICAgIGhvc3Q9IGdyYW50X25hbWUtPmhvc3QuaG9zdG5hbWU7Ci0gICAg ICBicmVhazsKLQogICAgIGNhc2UgMzoKLSAgICAgIGdyYW50X25hbWU9IChHUkFOVF9OQU1FKikg aGFzaF9lbGVtZW50KCZwcm9jX3ByaXZfaGFzaCwgaWR4KTsKKyAgICBjYXNlIDQ6CisgICAgICBn cmFudF9uYW1lPSAoR1JBTlRfTkFNRSopIGhhc2hfZWxlbWVudChncmFudF9uYW1lX2hhc2gsIGlk eCk7CiAgICAgICB1c2VyPSBncmFudF9uYW1lLT51c2VyOwogICAgICAgaG9zdD0gZ3JhbnRfbmFt ZS0+aG9zdC5ob3N0bmFtZTsKICAgICAgIGJyZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgIE1Z X0FTU0VSVF9VTlJFQUNIQUJMRSgpOwogICAgIH0KQEAgLTU1MDcsMTQgKzU1MDgsMjUgQEAgc3Rh dGljIGludCBoYW5kbGVfZ3JhbnRfc3RydWN0KHVpbnQgc3RydQogICAgICAgICBicmVhazsKIAog ICAgICAgY2FzZSAyOgotICAgICAgICBoYXNoX2RlbGV0ZSgmY29sdW1uX3ByaXZfaGFzaCwgKHVj aGFyKikgZ3JhbnRfbmFtZSk7Ci0JYnJlYWs7Ci0KICAgICAgIGNhc2UgMzoKLSAgICAgICAgaGFz aF9kZWxldGUoJnByb2NfcHJpdl9oYXNoLCAodWNoYXIqKSBncmFudF9uYW1lKTsKKyAgICAgIGNh c2UgNDoKKyAgICAgICAgaGFzaF9kZWxldGUoZ3JhbnRfbmFtZV9oYXNoLCAodWNoYXIqKSBncmFu dF9uYW1lKTsKIAlicmVhazsKICAgICAgIH0KICAgICAgIGVsZW1lbnRzLS07CisgICAgICAvKgor ICAgICAgICAtIElmIHdlIGFyZSBpdGVyYXRpbmcgdGhyb3VnaCBhbiBhcnJheSB0aGVuIHdlIGp1 c3QgaGF2ZSBtb3ZlZCBhbGwKKyAgICAgICAgICBlbGVtZW50cyBhZnRlciB0aGUgY3VycmVudCBl bGVtZW50IG9uZSBwb3NpdGlvbiBjbG9zZXIgdG8gaXRzIGhlYWQuCisgICAgICAgICAgVGhpcyBt ZWFucyB0aGF0IHdlIGhhdmUgdG8gdGFrZSBhbm90aGVyIGxvb2sgYXQgdGhlIGVsZW1lbnQgYXQK KyAgICAgICAgICBjdXJyZW50IHBvc2l0aW9uIGFzIGl0IGlzIGEgbmV3IGVsZW1lbnQgZnJvbSB0 aGUgYXJyYXkncyB0YWlsLgorICAgICAgICAtIElmIHdlIGFyZSBpdGVyYXRpbmcgdGhyb3VnaCBh IGhhc2ggdGhlIGN1cnJlbnQgZWxlbWVudCB3YXMgcmVwbGFjZWQKKyAgICAgICAgICB3aXRoIG9u ZSBvZiBlbGVtZW50cyBmcm9tIHRoZSB0YWlsLiBTbyB3ZSBhbHNvIGhhdmUgdG8gdGFrZSBhIGxv b2sKKyAgICAgICAgICBhdCB0aGUgbmV3IGVsZW1lbnQgaW4gY3VycmVudCBwb3NpdGlvbi4KKyAg ICAgICAgICBOb3RlIHRoYXQgaW4gb3VyIEhBU0ggaW1wbGVtZW50YXRpb24gaGFzaF9kZWxldGUo KSB3b24ndCBtb3ZlIGFueQorICAgICAgICAgIGVsZW1lbnRzIHdpdGggcG9zaXRpb24gYWZ0ZXIg Y3VycmVudCBvbmUgdG8gcG9zaXRpb24gYmVmb3JlIHRoZQorICAgICAgICAgIGN1cnJlbnQgKGku ZS4gZnJvbSB0aGUgdGFpbCB0byB0aGUgaGVhZCksIHNvIGl0IGlzIHNhZmUgdG8gY29udGludWUK KyAgICAgICAgICBpdGVyYXRpb24gd2l0aG91dCByZS1zdGFydGluZy4KKyAgICAgICovCiAgICAg ICBpZHgtLTsKICAgICB9CiAgICAgZWxzZSBpZiAoIHVzZXJfdG8gKQpAQCAtNTUzMiwyMiArNTU0 NCw0MSBAQCBzdGF0aWMgaW50IGhhbmRsZV9ncmFudF9zdHJ1Y3QodWludCBzdHJ1CiAKICAgICAg IGNhc2UgMjoKICAgICAgIGNhc2UgMzoKLSAgICAgICAgLyogCi0gICAgICAgICAgVXBkYXRlIHRo ZSBncmFudCBzdHJ1Y3R1cmUgd2l0aCB0aGUgbmV3IHVzZXIgbmFtZSBhbmQKLSAgICAgICAgICBo b3N0IG5hbWUKLSAgICAgICAgKi8KLSAgICAgICAgZ3JhbnRfbmFtZS0+c2V0X3VzZXJfZGV0YWls cyh1c2VyX3RvLT5ob3N0LnN0ciwgZ3JhbnRfbmFtZS0+ZGIsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdXNlcl90by0+dXNlci5zdHIsIGdyYW50X25hbWUtPnRuYW1lLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOwotCi0gICAgICAgIC8q Ci0gICAgICAgICAgU2luY2UgdXNlcm5hbWUgaXMgcGFydCBvZiB0aGUgaGFzaCBrZXksIHdoZW4g dGhlIHVzZXIgbmFtZQotICAgICAgICAgIGlzIHJlbmFtZWQsIHRoZSBoYXNoIGtleSBpcyBjaGFu Z2VkLiBVcGRhdGUgdGhlIGhhc2ggdG8KLSAgICAgICAgICBlbnN1cmUgdGhhdCB0aGUgcG9zaXRp b24gbWF0Y2hlcyB0aGUgbmV3IGhhc2gga2V5IHZhbHVlCi0gICAgICAgICovCi0gICAgICAgIGhh c2hfdXBkYXRlKCZjb2x1bW5fcHJpdl9oYXNoLCAodWNoYXIqKSBncmFudF9uYW1lLAotICAgICAg ICAgICAgICAgICAgICAodWNoYXIqKSBncmFudF9uYW1lLT5oYXNoX2tleSwgZ3JhbnRfbmFtZS0+ a2V5X2xlbmd0aCk7Ci0JYnJlYWs7CisgICAgICBjYXNlIDQ6CisgICAgICAgIHsKKyAgICAgICAg ICAvKgorICAgICAgICAgICAgU2F2ZSBvbGQgaGFzaCBrZXkgYW5kIGl0cyBsZW5ndGggdG8gYmUg YWJsZSBwcm9wZXJseSB1cGRhdGUKKyAgICAgICAgICAgIGVsZW1lbnQgcG9zaXRpb24gaW4gaGFz aC4KKyAgICAgICAgICAqLworICAgICAgICAgIGNoYXIgKm9sZF9rZXk9IGdyYW50X25hbWUtPmhh c2hfa2V5OworICAgICAgICAgIHNpemVfdCBvbGRfa2V5X2xlbmd0aD0gZ3JhbnRfbmFtZS0+a2V5 X2xlbmd0aDsKKworICAgICAgICAgIC8qCisgICAgICAgICAgICBVcGRhdGUgdGhlIGdyYW50IHN0 cnVjdHVyZSB3aXRoIHRoZSBuZXcgdXNlciBuYW1lIGFuZCBob3N0IG5hbWUuCisgICAgICAgICAg Ki8KKyAgICAgICAgICBncmFudF9uYW1lLT5zZXRfdXNlcl9kZXRhaWxzKHVzZXJfdG8tPmhvc3Qu c3RyLCBncmFudF9uYW1lLT5kYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVzZXJfdG8tPnVzZXIuc3RyLCBncmFudF9uYW1lLT50bmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOworCisgICAgICAgICAgLyoKKyAgICAgICAg ICAgIFNpbmNlIHVzZXJuYW1lIGlzIHBhcnQgb2YgdGhlIGhhc2gga2V5LCB3aGVuIHRoZSB1c2Vy IG5hbWUKKyAgICAgICAgICAgIGlzIHJlbmFtZWQsIHRoZSBoYXNoIGtleSBpcyBjaGFuZ2VkLiBV cGRhdGUgdGhlIGhhc2ggdG8KKyAgICAgICAgICAgIGVuc3VyZSB0aGF0IHRoZSBwb3NpdGlvbiBt YXRjaGVzIHRoZSBuZXcgaGFzaCBrZXkgdmFsdWUKKyAgICAgICAgICAqLworICAgICAgICAgIGhh c2hfdXBkYXRlKGdyYW50X25hbWVfaGFzaCwgKHVjaGFyKikgZ3JhbnRfbmFtZSwgKHVjaGFyKikg b2xkX2tleSwKKyAgICAgICAgICAgICAgICAgICAgICBvbGRfa2V5X2xlbmd0aCk7CisgICAgICAg ICAgLyoKKyAgICAgICAgICAgIGhhc2hfdXBkYXRlKCkgb3BlcmF0aW9uIGNvdWxkIGhhdmUgbW92 ZWQgZWxlbWVudCBmcm9tIHRoZSB0YWlsCisgICAgICAgICAgICBvZiB0aGUgaGFzaCB0byB0aGUg Y3VycmVudCBwb3NpdGlvbi4gU28gd2UgbmVlZCB0byB0YWtlIGEgbG9vaworICAgICAgICAgICAg YXQgdGhlIGVsZW1lbnQgaW4gY3VycmVudCBwb3NpdGlvbiBvbmNlIGFnYWluLgorICAgICAgICAg ICAgVGhhbmtzIHRvIHRoZSBmYWN0IHRoYXQgaGFzaF91cGRhdGUoKSBmb3Igb3VyIEhBU0ggaW1w bGVtZW50YXRpb24KKyAgICAgICAgICAgIHdvbid0IG1vdmUgYW55IGVsZW1lbnRzIGZyb20gdGhl IHRhaWwgb2YgdGhlIGhhc2ggdG8gdGhlIHBvc2l0aW9ucworICAgICAgICAgICAgYmVmb3JlIHRo ZSBjdXJyZW50IG9uZSAoYS5rLmEuIGhlYWQpIGl0IGlzIHNhZmUgdG8gY29udGludWUKKyAgICAg ICAgICAgIGl0ZXJhdGlvbiB3aXRob3V0IHJlc3RhcnRpbmcuCisgICAgICAgICAgKi8KKyAgICAg ICAgICBpZHgtLTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgfQogICAgIH0K ICAgICBlbHNlCkBAIC01NjMzLDcgKzU2NjQsNyBAQCBzdGF0aWMgaW50IGhhbmRsZV9ncmFudF9k YXRhKFRBQkxFX0xJU1QKICAgICB9CiAgIH0KIAotICAvKiBIYW5kbGUgcHJvY2VkdXJlcyB0YWJs ZS4gKi8KKyAgLyogSGFuZGxlIHN0b3JlZCByb3V0aW5lcyB0YWJsZS4gKi8KICAgaWYgKChmb3Vu ZD0gaGFuZGxlX2dyYW50X3RhYmxlKHRhYmxlcywgNCwgZHJvcCwgdXNlcl9mcm9tLCB1c2VyX3Rv KSkgPCAwKQogICB7CiAgICAgLyogSGFuZGxlIG9mIHRhYmxlIGZhaWxlZCwgZG9uJ3QgdG91Y2gg aW4tbWVtb3J5IGFycmF5LiAqLwpAQCAtNTY0Niw2ICs1Njc3LDE1IEBAIHN0YXRpYyBpbnQgaGFu ZGxlX2dyYW50X2RhdGEoVEFCTEVfTElTVAogICAgICAgICAgZm91bmQpICYmICEgcmVzdWx0KQog ICAgIHsKICAgICAgIHJlc3VsdD0gMTsgLyogQXQgbGVhc3Qgb25lIHJlY29yZC9lbGVtZW50IGZv dW5kLiAqLworICAgICAgLyogSWYgc2VhcmNoIGlzIHJlcXVlc3RlZCwgd2UgZG8gbm90IG5lZWQg dG8gc2VhcmNoIGZ1cnRoZXIuICovCisgICAgICBpZiAoISBkcm9wICYmICEgdXNlcl90bykKKyAg ICAgICAgZ290byBlbmQ7CisgICAgfQorICAgIC8qIEhhbmRsZSBmdW5jcyBhcnJheS4gKi8KKyAg ICBpZiAoKChoYW5kbGVfZ3JhbnRfc3RydWN0KDQsIGRyb3AsIHVzZXJfZnJvbSwgdXNlcl90bykg JiYgISByZXN1bHQpIHx8CisgICAgICAgICBmb3VuZCkgJiYgISByZXN1bHQpCisgICAgeworICAg ICAgcmVzdWx0PSAxOyAvKiBBdCBsZWFzdCBvbmUgcmVjb3JkL2VsZW1lbnQgZm91bmQuICovCiAg ICAgICAvKiBJZiBzZWFyY2ggaXMgcmVxdWVzdGVkLCB3ZSBkbyBub3QgbmVlZCB0byBzZWFyY2gg ZnVydGhlci4gKi8KICAgICAgIGlmICghIGRyb3AgJiYgISB1c2VyX3RvKQogICAgICAgICBnb3Rv IGVuZDsKCk5vIGJ1bmRsZSAocmVhc29uOiB1c2VsZXNzIGZvciBwdXNoIGVtYWlscyku